019c0ea9-09bb-708b-a5eb-c7330d8c9ab3
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 |
|---|---|---|---|---|
| 42159 | artifact.fetch | complete | 1 / 3 | 2 months ago |
| 42160 | proxy.resolve | complete | 1 / 3 | 2 months ago |
| 42161 | tool.cast_disasm | complete | 1 / 3 | 2 months ago |
| 42162 | analysis.bundle | complete | 1 / 3 | 2 months ago |
| 42163 | capability.graph | complete | 1 / 3 | 2 months ago |
| 42164 | detector.run | complete | 1 / 3 | 2 months ago |
| 42165 | validation.fork | complete | 1 / 3 | 2 months ago |
| 42475 | report.consolidate | complete | 1 / 6 | 2 months ago |
| 42476 | tool.slither | complete | 1 / 2 | 2 months ago |
{
"status": "not_proxy"
}
'forge clean' running (wd: /tmp/slither-knh0njyg) 'forge config --json' running 'forge build --build-info --skip ./test/** ./script/** --force' running (wd: /tmp/slither-knh0njyg) RobTheBank._bigLottery(address) (contracts/Contract.sol#257-298) sends eth to arbitrary user Dangerous calls: - RTB1.increaseProfit.value(_shareFee.mul(3).div(10))() (contracts/Contract.sol#280-282) - RTB2.increaseProfit.value(_shareFee.mul(7).div(10))() (contracts/Contract.sol#283) - _winner.transfer(_winnerProfit) (contracts/Contract.sol#288-289) Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#functions-that-send-ether-to-arbitrary-destinations Reentrancy in RobTheBank._bigLottery(address) (contracts/Contract.sol#257-298): External calls: - RTB1.increaseProfit.value(_shareFee.mul(3).div(10))() (contracts/Contract.sol#280-282) - RTB2.increaseProfit.value(_shareFee.mul(7).div(10))() (contracts/Contract.sol#283) External calls sending eth: - RTB1.increaseProfit.value(_shareFee.mul(3).div(10))() (contracts/Contract.sol#280-282) - RTB2.increaseProfit.value(_shareFee.mul(7).div(10))() (contracts/Contract.sol#283) - _winner.transfer(_winnerProfit) (contracts/Contract.sol#288-289) State variables written after the call(s): - bigId ++ (contracts/Contract.sol#294) RobTheBank.bigId (contracts/Contract.sol#112) can be used in cross function reentrancies: - RobTheBank._bigLottery(address) (contracts/Contract.sol#257-298) - RobTheBank._buy(uint256,uint256) (contracts/Contract.sol#193-232) - RobTheBank.bigId (contracts/Contract.sol#112) - RobTheBank.buy(uint256,address) (contracts/Contract.sol#166-180) - RobTheBank.buyAgain(uint256) (contracts/Contract.sol#180-193) - RobTheBank.constructor(address,address) (contracts/Contract.sol#142-151) - RobTheBank.createWinner() (contracts/Contract.sol#232-242) - RobTheBank.fallback() (contracts/Contract.sol#152-159) - RobTheBank.lottery(address,uint256) (contracts/Contract.sol#242-257) - RobTheBank.startGame() (contracts/Contract.sol#160-165) - bigRound[bigId].winnerProfit = _winnerProfit (contracts/Contract.sol#291-292) RobTheBank.bigRound (contracts/Contract.sol#97-99) can be used in cross function reentrancies: - RobTheBank._bigLottery(address) (contracts/Contract.sol#257-298) - RobTheBank._buy(uint256,uint256) (contracts/Contract.sol#193-232) - RobTheBank.bigRound (contracts/Contract.sol#97-99) - RobTheBank.buyAgain(uint256) (contracts/Contract.sol#180-193) - RobTheBank.fallback() (contracts/Contract.sol#152-159) - RobTheBank.getMyProfit(uint256) (contracts/Contract.sol#316-321) - RobTheBank.withdraw(uint256) (contracts/Contract.sol#298-313) - bigRound[bigId].jackpotBalance = _jackpotFee (contracts/Contract.sol#294-295) RobTheBank.bigRound (contracts/Contract.sol#97-99) can be used in cross function reentrancies: - RobTheBank._bigLottery(address) (contracts/Contract.sol#257-298) - RobTheBank._buy(uint256,uint256) (contracts/Contract.sol#193-232) - RobTheBank.bigRound (contracts/Contract.sol#97-99) - RobTheBank.buyAgain(uint256) (contracts/Contract.sol#180-193) - RobTheBank.fallback() (contracts/Contract.sol#152-159) - RobTheBank.getMyProfit(uint256) (contracts/Contract.sol#316-321) - RobTheBank.withdraw(uint256) (contracts/Contract.sol#298-313) - smallId = 1 (contracts/Contract.sol#294) RobTheBank.smallId (contracts/Contract.sol#111-112) can be used in cross function reentrancies: - RobTheBank._bigLottery(address) (contracts/Contract.sol#257-298) - RobTheBank._buy(uint256,uint256) (contracts/Contract.sol#193-232) - RobTheBank.buy(uint256,address) (contracts/Contract.sol#166-180) - RobTheBank.buyAgain(uint256) (contracts/Contract.sol#180-193) - RobTheBank.constructor(address,address) (contracts/Contract.sol#142-151) - RobTheBank.createWinner() (contracts/Contract.sol#232-242) - RobTheBank.getPrice() (contracts/Contract.sol#321-328) - RobTheBank.lottery(address,uint256) (contracts/Contract.sol#242-257) - RobTheBank.smallId (contracts/Contract.sol#111-112) - RobTheBank.startGame() (contracts/Contract.sol#160-165) Reentrancy in RobTheBank._buy(uint256,uint256) (contracts/Contract.sol#193-232): External calls: - RTB1.increaseProfit.value(_shareFee.mul(3).div(10))() (contracts/Contract.sol#223-224) - RTB2.increaseProfit.value(_shareFee.mul(7).div(10))() (contracts/Contract.sol#224-226) State variables written after the call(s): - bigRound[bigId].totalKey = bigRound[bigId].totalKey.add(_amount) (contracts/Contract.sol#229) RobTheBank.bigRound (contracts/Contract.sol#97-99) can be used in cross function reentrancies: - RobTheBank._bigLottery(address) (contracts/Contract.sol#257-298) - RobTheBank._buy(uint256,uint256) (contracts/Contract.sol#193-232) - RobTheBank.bigRound (contracts/Contract.sol#97-99) - RobTheBank.buyAgain(uint256) (contracts/Contract.sol#180-193) - RobTheBank.fallback() (contracts/Contract.sol#152-159) - RobTheBank.getMyProfit(uint256) (contracts/Contract.sol#316-321) - RobTheBank.withdraw(uint256) (contracts/Contract.sol#298-313) Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#reentrancy-vulnerabilities RobTheBank._buy(uint256,uint256) (contracts/Contract.sol#193-232) performs a multiplication on the result of a division: - _shareFee = _money.mul(15).div(100) (contracts/Contract.sol#220-222) - RTB1.increaseProfit.value(_shareFee.mul(3).div(10))() (contracts/Contract.sol#223-224) RobTheBank._buy(uint256,uint256) (contracts/Contract.sol#193-232) performs a multiplication on the result of a division: - _shareFee = _money.mul(15).div(100) (contracts/Contract.sol#220-222) - RTB2.increaseProfit.value(_shareFee.mul(7).div(10))() (contracts/Contract.sol#224-226) RobTheBank._bigLottery(address) (contracts/Contract.sol#257-298) performs a multiplication on the result of a division: - _shareFee = bigRound[bigId].jackpotBalance.mul(10).div(100) (contracts/Contract.sol#280) - RTB1.increaseProfit.value(_shareFee.mul(3).div(10))() (contracts/Contract.sol#280-282) RobTheBank._bigLottery(address) (contracts/Contract.sol#257-298) performs a multiplication on the result of a division: - _shareFee = bigRound[bigId].jackpotBalance.mul(10).div(100) (contracts/Contract.sol#280) - RTB2.increaseProfit.value(_shareFee.mul(7).div(10))() (contracts/Contract.sol#283) Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#divide-before-multiply RobTheBank._bigLottery(address) (contracts/Contract.sol#257-298) uses a dangerous strict equality: - number == 0 (contracts/Contract.sol#265-266) Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#dangerous-strict-equalities RobTheBank._buy(uint256,uint256) (contracts/Contract.sol#193-232) ignores return value by RTB1.increaseProfit.value(_shareFee.mul(3).div(10))() (contracts/Contract.sol#223-224) RobTheBank._buy(uint256,uint256) (contracts/Contract.sol#193-232) ignores return value by RTB2.increaseProfit.value(_shareFee.mul(7).div(10))() (contracts/Contract.sol#224-226) RobTheBank._bigLottery(address) (contracts/Contract.sol#257-298) ignores return value by RTB1.increaseProfit.value(_shareFee.mul(3).div(10))() (contracts/Contract.sol#280-282) RobTheBank._bigLottery(address) (contracts/Contract.sol#257-298) ignores return value by RTB2.increaseProfit.value(_shareFee.mul(7).div(10))() (contracts/Contract.sol#283) Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#unused-return RobTheBank.setService(address) (contracts/Contract.sol#355-357) should emit an event for: - service = _addr (contracts/Contract.sol#356-357) Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#missing-events-access-control RobTheBank.setAllowPrice(uint256) (contracts/Contract.sol#339-342) should emit an event for: - allowPrice = _price (contracts/Contract.sol#341-342) Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#missing-events-arithmetic RobTheBank.setService(address)._addr (contracts/Contract.sol#355-356) lacks a zero-check on : - service = _addr (contracts/Contract.sol#356-357) Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#missing-zero-address-validation Reentrancy in RobTheBank._bigLottery(address) (contracts/Contract.sol#257-298): External calls: - RTB1.increaseProfit.value(_shareFee.mul(3).div(10))() (contracts/Contract.sol#280-282) - RTB2.increaseProfit.value(_shareFee.mul(7).div(10))() (contracts/Contract.sol#283) State variables written after the call(s): - devFee = bigRound[bigId].jackpotBalance.mul(8).div(100).add(devFee) (contracts/Contract.sol#286-287) Reentrancy in RobTheBank._bigLottery(address) (contracts/Contract.sol#257-298): External calls: - RTB1.increaseProfit.value(_shareFee.mul(3).div(10))() (contracts/Contract.sol#280-282) - RTB2.increaseProfit.value(_shareFee.mul(7).div(10))() (contracts/Contract.sol#283) External calls sending eth: - RTB1.increaseProfit.value(_shareFee.mul(3).div(10))() (contracts/Contract.sol#280-282) - RTB2.increaseProfit.value(_shareFee.mul(7).div(10))() (contracts/Contract.sol#283) - _winner.transfer(_winnerProfit) (contracts/Contract.sol#288-289) State variables written after the call(s): - keysBought = 0 (contracts/Contract.sol#297) Reentrancy in RobTheBank._buy(uint256,uint256) (contracts/Contract.sol#193-232): External calls: - RTB1.increaseProfit.value(_shareFee.mul(3).div(10))() (contracts/Contract.sol#223-224) - RTB2.increaseProfit.value(_shareFee.mul(7).div(10))() (contracts/Contract.sol#224-226) State variables written after the call(s): - smallRound[bigId][smallId].winnerProfit = _money.mul(10).div(100).add(smallRound[bigId][smallId].winnerProfit) (contracts/Contract.sol#227-229) - smallRound[bigId][smallId].totalKey = smallRound[bigId][smallId].totalKey.add(_amount) (contracts/Contract.sol#230-232) Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#reentrancy-vulnerabilities-2 Reentrancy in RobTheBank._bigLottery(address) (contracts/Contract.sol#257-298): External calls: - RTB1.increaseProfit.value(_shareFee.mul(3).div(10))() (contracts/Contract.sol#280-282) - RTB2.increaseProfit.value(_shareFee.mul(7).div(10))() (contracts/Contract.sol#283) External calls sending eth: - RTB1.increaseProfit.value(_shareFee.mul(3).div(10))() (contracts/Contract.sol#280-282) - RTB2.increaseProfit.value(_shareFee.mul(7).div(10))() (contracts/Contract.sol#283) - _winner.transfer(_winnerProfit) (contracts/Contract.sol#288-289) Event emitted after the call(s): - lotteryEvent(_winner,bigId,smallId,_winnerProfit,2) (contracts/Contract.sol#290-291) Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#reentrancy-vulnerabilities-3 RobTheBank.buy(uint256,address) (contracts/Contract.sol#166-180) uses timestamp for comparisons Dangerous comparisons: - require(bool,string)(smallRound[bigId][smallId].startTime < block.timestamp,The game has not started yet) (contracts/Contract.sol#168-172) - require(bool,string)(smallRound[bigId][smallId].endTime > block.timestamp,The game is over) (contracts/Contract.sol#172-173) RobTheBank.buyAgain(uint256) (contracts/Contract.sol#180-193) uses timestamp for comparisons Dangerous comparisons: - require(bool,string)(smallRound[bigId][smallId].startTime < block.timestamp,The game has not started yet) (contracts/Contract.sol#181-187) - require(bool,string)(smallRound[bigId][smallId].endTime > block.timestamp,The game is over) (contracts/Contract.sol#187-189) RobTheBank.createWinner() (contracts/Contract.sol#232-242) uses timestamp for comparisons Dangerous comparisons: - require(bool)(smallRound[bigId][smallId].endTime < block.timestamp) (contracts/Contract.sol#234-235) RobTheBank._bigLottery(address) (contracts/Contract.sol#257-298) uses timestamp for comparisons Dangerous comparisons: - number == 0 (contracts/Contract.sol#265-266) Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#block-timestamp RobTheBank.buy(uint256,address) (contracts/Contract.sol#166-180) compares to a boolean constant: -_invite != address(0) && _invite != msg.sender && recommenderAllow[_invite] == true (contracts/Contract.sol#174-176) RobTheBank.setRecommenderAllow() (contracts/Contract.sol#342-351) compares to a boolean constant: -require(bool)(recommenderAllow[msg.sender] == false) (contracts/Contract.sol#344) Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#boolean-equality Version constraint ^0.4.23 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 - ExpExponentCleanup - EventStructWrongData. It is used by: - ^0.4.23 (contracts/Contract.sol#1) solc-0.4.23 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 Contract shareProfit (contracts/Contract.sol#62-69) is not in CapWords Event RobTheBank.buyEvent(address,uint256,uint256,uint256,uint256,uint256,uint256,uint256) (contracts/Contract.sol#114-119) is not in CapWords Event RobTheBank.lotteryEvent(address,uint256,uint256,uint256,uint256) (contracts/Contract.sol#119-120) is not in CapWords Event RobTheBank.withdrawEvent(address,uint256,uint256) (contracts/Contract.sol#120) is not in CapWords Event RobTheBank.createKey(uint256,uint256,uint256) (contracts/Contract.sol#121-122) is not in CapWords Parameter RobTheBank.buy(uint256,address)._amount (contracts/Contract.sol#166-167) is not in mixedCase Parameter RobTheBank.buy(uint256,address)._invite (contracts/Contract.sol#167) is not in mixedCase Parameter RobTheBank.buyAgain(uint256)._amount (contracts/Contract.sol#180) is not in mixedCase Parameter RobTheBank.lottery(address,uint256)._winner (contracts/Contract.sol#243) is not in mixedCase Parameter RobTheBank.lottery(address,uint256)._checkIndex (contracts/Contract.sol#243) is not in mixedCase Parameter RobTheBank.withdraw(uint256)._round (contracts/Contract.sol#299) is not in mixedCase Parameter RobTheBank.getMyProfit(uint256)._round (contracts/Contract.sol#316) is not in mixedCase Parameter RobTheBank.setAllowPrice(uint256)._price (contracts/Contract.sol#340-341) is not in mixedCase Parameter RobTheBank.setGame(bool)._bool (contracts/Contract.sol#352) is not in mixedCase Parameter RobTheBank.setService(address)._addr (contracts/Contract.sol#355-356) is not in mixedCase Variable RobTheBank.RTB1 (contracts/Contract.sol#103) is not in mixedCase Variable RobTheBank.RTB2 (contracts/Contract.sol#103-104) is not in mixedCase Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#conformance-to-solidity-naming-conventions Reentrancy in RobTheBank._bigLottery(address) (contracts/Contract.sol#257-298): External calls: - _winner.transfer(_winnerProfit) (contracts/Contract.sol#288-289) External calls sending eth: - RTB1.increaseProfit.value(_shareFee.mul(3).div(10))() (contracts/Contract.sol#280-282) - RTB2.increaseProfit.value(_shareFee.mul(7).div(10))() (contracts/Contract.sol#283) - _winner.transfer(_winnerProfit) (contracts/Contract.sol#288-289) State variables written after the call(s): - bigId ++ (contracts/Contract.sol#294) - bigRound[bigId].winnerProfit = _winnerProfit (contracts/Contract.sol#291-292) - bigRound[bigId].jackpotBalance = _jackpotFee (contracts/Contract.sol#294-295) - keysBought = 0 (contracts/Contract.sol#297) - smallId = 1 (contracts/Contract.sol#294) Event emitted after the call(s): - lotteryEvent(_winner,bigId,smallId,_winnerProfit,2) (contracts/Contract.sol#290-291) Reentrancy in RobTheBank.devWithdraw() (contracts/Contract.sol#313-316): External calls: - owner.transfer(devFee) (contracts/Contract.sol#314) State variables written after the call(s): - devFee = 0 (contracts/Contract.sol#316) Event emitted after the call(s): - withdrawEvent(owner,devFee,0) (contracts/Contract.sol#315-316) Reentrancy in RobTheBank.lottery(address,uint256) (contracts/Contract.sol#242-257): External calls: - _winner.transfer(smallRound[bigId][smallId].winnerProfit) (contracts/Contract.sol#254-255) Event emitted after the call(s): - lotteryEvent(_winner,bigId,smallId,smallRound[bigId][smallId].winnerProfit,1) (contracts/Contract.sol#255) Reentrancy in RobTheBank.lottery(address,uint256) (contracts/Contract.sol#242-257): External calls: - _winner.transfer(smallRound[bigId][smallId].winnerProfit) (contracts/Contract.sol#254-255) - _bigLottery(_winner) (contracts/Contract.sol#256) - _winner.transfer(_winnerProfit) (contracts/Contract.sol#288-289) External calls sending eth: - _winner.transfer(smallRound[bigId][smallId].winnerProfit) (contracts/Contract.sol#254-255) - _bigLottery(_winner) (contracts/Contract.sol#256) - RTB1.increaseProfit.value(_shareFee.mul(3).div(10))() (contracts/Contract.sol#280-282) - RTB2.increaseProfit.value(_shareFee.mul(7).div(10))() (contracts/Contract.sol#283) - _winner.transfer(_winnerProfit) (contracts/Contract.sol#288-289) State variables written after the call(s): - _bigLottery(_winner) (contracts/Contract.sol#256) - bigId ++ (contracts/Contract.sol#294) - _bigLottery(_winner) (contracts/Contract.sol#256) - bigRound[bigId].KeyProfit = _playerFee.div(bigRound[bigId].totalKey).add(bigRound[bigId].KeyProfit) (contracts/Contract.sol#274-276) - bigRound[bigId].winnerProfit = _winnerProfit (contracts/Contract.sol#291-292) - bigRound[bigId].jackpotBalance = _jackpotFee (contracts/Contract.sol#294-295) - _bigLottery(_winner) (contracts/Contract.sol#256) - devFee = bigRound[bigId].jackpotBalance.mul(8).div(100).add(devFee) (contracts/Contract.sol#286-287) - _bigLottery(_winner) (contracts/Contract.sol#256) - keysBought = 0 (contracts/Contract.sol#297) - _bigLottery(_winner) (contracts/Contract.sol#256) - smallId = 1 (contracts/Contract.sol#294) - smallId ++ (contracts/Contract.sol#297) Event emitted after the call(s): - lotteryEvent(_winner,bigId,smallId,_winnerProfit,2) (contracts/Contract.sol#290-291) - _bigLottery(_winner) (contracts/Contract.sol#256) Reentrancy in RobTheBank.withdraw(uint256) (contracts/Contract.sol#298-313): External calls: - msg.sender.transfer(money) (contracts/Contract.sol#311) Event emitted after the call(s): - withdrawEvent(msg.sender,money,_round) (contracts/Contract.sol#312-313) Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#reentrancy-vulnerabilities-4 RobTheBank.getPrice() (contracts/Contract.sol#321-328) uses literals with too many digits: - _round.mul(_round).mul(1200000000000000).div(25).add(BASE_PRICE) (contracts/Contract.sol#327-328) Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#too-many-digits . analyzed (3 contracts with 100 detectors), 50 result(s) found
{
"solc": {
"status": "ok",
"use_rc": 0,
"version": "0.4.23",
"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.23",
"install_stderr": null,
"install_stdout": "Installing solc '0.4.23'...\nVersion '0.4.23' installed."
},
"solc_args": "--base-path /tmp/slither-knh0njyg --allow-paths /tmp/slither-knh0njyg,/tmp/slither-knh0njyg/lib,/tmp/slither-knh0njyg/src",
"remappings": [],
"source_files": [
"contracts/Contract.sol"
],
"contract_count": 0,
"contract_names": [],
"detector_count": 50,
"workspace_hash": "2a84d67007b8b34bcbe4dc6a26cc47c7523b9fe87ebe9124fed178bdcf61c4ef",
"duration_seconds": 1.719655990600586,
"solc_version_requested": "0.4.23"
}
{"no_findings":false,"summary":"Found issues in winner selection and lottery flow that allow manipulation or premature payout.","findings":[{"severity":"high","category":"oracle","title":"Predictable/manipulable randomness for winner and jackpot selection","exploit_scenario":"The service (or a miner) can influence the outcome by choosing when to call `createWinner`/`lottery` and by manipulating block attributes used in `_random()`. This allows a privileged party to bias or predict `winKey` and the jackpot roll, increasing their chance to win or to force/avoid jackpot payout.","recommendation":"Replace `_random()` with a verifiable randomness source (e.g., Chainlink VRF) or a commit-reveal scheme that uses future blockhashes so no single party can bias the result.","evidence":"`_random()` derives entropy from `block.timestamp`, `block.difficulty`, `block.coinbase`, `block.gaslimit`, `block.number`, and `msg.sender`; `createWinner` and `_bigLottery` mix this with `blockhash(block.number-1)` to compute `winKey`/jackpot roll.","locations":["contracts/Contract.sol:_random","contracts/Contract.sol:createWinner","contracts/Contract.sol:_bigLottery"]},{"severity":"medium","category":"access_control","title":"Service can call lottery before round end and without winKey set","exploit_scenario":"`lottery()` lacks checks that the round has ended or that `winKey` was generated. Because `winKey` defaults to 0, the service can call `lottery` immediately after a first purchase where key ID 0 exists, awarding `winnerProfit` early to a colluding address and potentially triggering `_bigLottery` outside the intended game flow.","recommendation":"Require `smallRound[bigId][smallId].endTime < block.timestamp` and `winKey != 0` (or a separate `winnerChosen` flag) in `lottery()`, and only allow it after `createWinner()` succeeds.","evidence":"`lottery()` only checks `_winner != address(0)` and balance > winnerProfit; it does not check endTime or `winKey` initialization, while `winKey` starts at 0.","locations":["contracts/Contract.sol:lottery"]}]}
OpenAI Codex v0.77.0 (research preview)
--------
workdir: /tmp/codex-h_0kfac0
model: gpt-5.2-codex
provider: openai
approval: never
sandbox: read-only
reasoning effort: high
reasoning summaries: auto
session id: 019c0f94-1b32-7b81-b556-23515f3d29aa
--------
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-h_0kfac0 succeeded in 6ms:
AUDIT_BUNDLE.txt
codex-output-schema.json
contracts
exec
/bin/bash -lc 'cat AUDIT_BUNDLE.txt' in /tmp/codex-h_0kfac0 succeeded in 7ms:
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.23;
/**
* @title SafeMath
* @dev Math operations with safety checks that throw on error
*/
library SafeMath {
/**
* @dev Multiplies two numbers, throws on overflow.
*/
function mul(uint256 a, uint256 b) internal pure returns(uint256) {
if (a == 0) {
return 0;
}
codex
{"no_findings":false,"summary":"Found issues in winner selection and lottery flow that allow manipulation or premature payout.","findings":[{"severity":"high","category":"oracle","title":"Predictable/manipulable randomness for winner and jackpot selection","exploit_scenario":"The service (or a miner) can influence the outcome by choosing when to call `createWinner`/`lottery` and by manipulating block attributes used in `_random()`. This allows a privileged party to bias or predict `winKey` and the jackpot roll, increasing their chance to win or to force/avoid jackpot payout.","recommendation":"Replace `_random()` with a verifiable randomness source (e.g., Chainlink VRF) or a commit-reveal scheme that uses future blockhashes so no single party can bias the result.","evidence":"`_random()` derives entropy from `block.timestamp`, `block.difficulty`, `block.coinbase`, `block.gaslimit`, `block.number`, and `msg.sender`; `createWinner` and `_bigLottery` mix this with `blockhash(block.number-1)` to compute `winKey`/jackpot roll.","locations":["contracts/Contract.sol:_random","contracts/Contract.sol:createWinner","contracts/Contract.sol:_bigLottery"]},{"severity":"medium","category":"access_control","title":"Service can call lottery before round end and without winKey set","exploit_scenario":"`lottery()` lacks checks that the round has ended or that `winKey` was generated. Because `winKey` defaults to 0, the service can call `lottery` immediately after a first purchase where key ID 0 exists, awarding `winnerProfit` early to a colluding address and potentially triggering `_bigLottery` outside the intended game flow.","recommendation":"Require `smallRound[bigId][smallId].endTime < block.timestamp` and `winKey != 0` (or a separate `winnerChosen` flag) in `lottery()`, and only allow it after `createWinner()` succeeds.","evidence":"`lottery()` only checks `_winner != address(0)` and balance > winnerProfit; it does not check endTime or `winKey` initialization, while `winKey` starts at 0.","locations":["contracts/Contract.sol:lottery"]}]}
tokens used
9,730
{
"codex": {
"ran_at": "2026-01-30T15:46:22.509023+00:00",
"returncode": 0
},
"project": {
"mode": "source",
"file_count": 1,
"import_count": 0,
"first_party_contracts_count": 1
},
"summary": "Found issues in winner selection and lottery flow that allow manipulation or premature payout.",
"raw_final": {
"summary": "Found issues in winner selection and lottery flow that allow manipulation or premature payout.",
"findings": [
{
"title": "Predictable/manipulable randomness for winner and jackpot selection",
"category": "oracle",
"evidence": "`_random()` derives entropy from `block.timestamp`, `block.difficulty`, `block.coinbase`, `block.gaslimit`, `block.number`, and `msg.sender`; `createWinner` and `_bigLottery` mix this with `blockhash(block.number-1)` to compute `winKey`/jackpot roll.",
"severity": "high",
"locations": [
"contracts/Contract.sol:_random",
"contracts/Contract.sol:createWinner",
"contracts/Contract.sol:_bigLottery"
],
"recommendation": "Replace `_random()` with a verifiable randomness source (e.g., Chainlink VRF) or a commit-reveal scheme that uses future blockhashes so no single party can bias the result.",
"exploit_scenario": "The service (or a miner) can influence the outcome by choosing when to call `createWinner`/`lottery` and by manipulating block attributes used in `_random()`. This allows a privileged party to bias or predict `winKey` and the jackpot roll, increasing their chance to win or to force/avoid jackpot payout."
},
{
"title": "Service can call lottery before round end and without winKey set",
"category": "access_control",
"evidence": "`lottery()` only checks `_winner != address(0)` and balance > winnerProfit; it does not check endTime or `winKey` initialization, while `winKey` starts at 0.",
"severity": "medium",
"locations": [
"contracts/Contract.sol:lottery"
],
"recommendation": "Require `smallRound[bigId][smallId].endTime < block.timestamp` and `winKey != 0` (or a separate `winnerChosen` flag) in `lottery()`, and only allow it after `createWinner()` succeeds.",
"exploit_scenario": "`lottery()` lacks checks that the round has ended or that `winKey` was generated. Because `winKey` defaults to 0, the service can call `lottery` immediately after a first purchase where key ID 0 exists, awarding `winnerProfit` early to a colluding address and potentially triggering `_bigLottery` outside the intended game flow."
}
],
"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 0x0806506e 00000021: DUP2 00000022: EQ 00000023: PUSH2 0x01a4 00000026: JUMPI 00000027: DUP1 00000028: PUSH4 0x080b3713 0000002d: EQ 0000002e: PUSH2 0x01cb 00000031: JUMPI 00000032: DUP1 00000033: PUSH4 0x112b2b07 00000038: EQ 00000039: PUSH2 0x01e2 0000003c: JUMPI 0000003d: DUP1 0000003e: PUSH4 0x2e1a7d4d 00000043: EQ 00000044: PUSH2 0x01fc 00000047: JUMPI 00000048: DUP1 00000049: PUSH4 0x57386c2a 0000004e: EQ 0000004f: PUSH2 0x0214 00000052: JUMPI 00000053: DUP1 00000054: PUSH4 0x5af42b93 00000059: EQ 0000005a: PUSH2 0x0229 0000005d: JUMPI 0000005e: DUP1 0000005f: PUSH4 0x6a343df3 00000064: EQ 00000065: PUSH2 0x0241 00000068: JUMPI 00000069: DUP1 0000006a: PUSH4 0x73ec9479 0000006f: EQ 00000070: PUSH2 0x0256 00000073: JUMPI 00000074: DUP1 00000075: PUSH4 0x7deb6025 0000007a: EQ 0000007b: PUSH2 0x02ac 0000007e: JUMPI 0000007f: DUP1 00000080: PUSH4 0x87164064 00000085: EQ 00000086: PUSH2 0x02c3 00000089: JUMPI 0000008a: DUP1 0000008b: PUSH4 0x8da5cb5b 00000090: EQ 00000091: PUSH2 0x030f 00000094: JUMPI 00000095: DUP1 00000096: PUSH4 0x976138c1 0000009b: EQ 0000009c: PUSH2 0x0340 0000009f: JUMPI 000000a0: DUP1 000000a1: PUSH4 0x98d5fdca 000000a6: EQ 000000a7: PUSH2 0x0361 000000aa: JUMPI 000000ab: DUP1 000000ac: PUSH4 0x993ca7e3 000000b1: EQ 000000b2: PUSH2 0x0376 000000b5: JUMPI 000000b6: DUP1 000000b7: PUSH4 0xab351270 000000bc: EQ 000000bd: PUSH2 0x038b 000000c0: JUMPI 000000c1: DUP1 000000c2: PUSH4 0xad606c72 000000c7: EQ 000000c8: PUSH2 0x03af 000000cb: JUMPI 000000cc: DUP1 000000cd: PUSH4 0xb187bd26 000000d2: EQ 000000d3: PUSH2 0x03c4 000000d6: JUMPI 000000d7: DUP1 000000d8: PUSH4 0xbdf99016 000000dd: EQ 000000de: PUSH2 0x03ed 000000e1: JUMPI 000000e2: DUP1 000000e3: PUSH4 0xbf8bdac1 000000e8: EQ 000000e9: PUSH2 0x0405 000000ec: JUMPI 000000ed: DUP1 000000ee: PUSH4 0xc8ab6017 000000f3: EQ 000000f4: PUSH2 0x0426 000000f7: JUMPI 000000f8: DUP1 000000f9: PUSH4 0xc93e05a9 000000fe: EQ 000000ff: PUSH2 0x044d 00000102: JUMPI 00000103: DUP1 00000104: PUSH4 0xcd094fb1 00000109: EQ 0000010a: PUSH2 0x0471 0000010d: JUMPI 0000010e: DUP1 0000010f: PUSH4 0xd598d4c9 00000114: EQ 00000115: PUSH2 0x0489 00000118: JUMPI 00000119: DUP1 0000011a: PUSH4 0xd65ab5f2 0000011f: EQ 00000120: PUSH2 0x049e 00000123: JUMPI 00000124: DUP1 00000125: PUSH4 0xe87ed8b5 0000012a: EQ 0000012b: PUSH2 0x04b3 0000012e: JUMPI 0000012f: DUP1 00000130: PUSH4 0xe9dd9030 00000135: EQ 00000136: PUSH2 0x04c8 00000139: JUMPI 0000013a: DUP1 0000013b: PUSH4 0xeb40a9c8 00000140: EQ 00000141: PUSH2 0x04e9 00000144: JUMPI 00000145: DUP1 00000146: PUSH4 0xf86325ed 0000014b: EQ 0000014c: PUSH2 0x04f1 0000014f: JUMPI 00000150: DUP1 00000151: PUSH4 0xfac6c826 00000156: EQ 00000157: PUSH2 0x0506 0000015a: JUMPI 0000015b: JUMPDEST 0000015c: PUSH1 0x00 0000015e: CALLVALUE 0000015f: GT 00000160: PUSH2 0x0168 00000163: JUMPI 00000164: PUSH1 0x00 00000166: DUP1 00000167: REVERT 00000168: JUMPDEST 00000169: PUSH1 0x0f 0000016b: SLOAD 0000016c: PUSH1 0x00 0000016e: SWAP1 0000016f: DUP2 00000170: MSTORE 00000171: PUSH1 0x02 00000173: PUSH1 0x20 00000175: MSTORE 00000176: PUSH1 0x40 00000178: SWAP1 00000179: KECCAK256 0000017a: PUSH1 0x01 0000017c: ADD 0000017d: SLOAD 0000017e: PUSH2 0x018d 00000181: SWAP1 00000182: CALLVALUE 00000183: PUSH4 0xffffffff 00000188: PUSH2 0x052d 0000018b: AND 0000018c: JUMP 0000018d: JUMPDEST 0000018e: PUSH1 0x0f 00000190: SLOAD 00000191: PUSH1 0x00 00000193: SWAP1 00000194: DUP2 00000195: MSTORE 00000196: PUSH1 0x02 00000198: PUSH1 0x20 0000019a: MSTORE 0000019b: PUSH1 0x40 0000019d: SWAP1 0000019e: KECCAK256 0000019f: PUSH1 0x01 000001a1: ADD 000001a2: SSTORE 000001a3: STOP 000001a4: JUMPDEST 000001a5: CALLVALUE 000001a6: DUP1 000001a7: ISZERO 000001a8: PUSH2 0x01b0 000001ab: JUMPI 000001ac: PUSH1 0x00 000001ae: DUP1 000001af: REVERT 000001b0: JUMPDEST 000001b1: POP 000001b2: PUSH2 0x01b9 000001b5: PUSH2 0x0547 000001b8: JUMP 000001b9: JUMPDEST 000001ba: PUSH1 0x40 000001bc: DUP1 000001bd: MLOAD 000001be: SWAP2 000001bf: DUP3 000001c0: MSTORE 000001c1: MLOAD 000001c2: SWAP1 000001c3: DUP2 000001c4: SWAP1 000001c5: SUB 000001c6: PUSH1 0x20 000001c8: ADD 000001c9: SWAP1 000001ca: RETURN 000001cb: JUMPDEST 000001cc: CALLVALUE 000001cd: DUP1 000001ce: ISZERO 000001cf: PUSH2 0x01d7 000001d2: JUMPI 000001d3: PUSH1 0x00 000001d5: DUP1 000001d6: REVERT 000001d7: JUMPDEST 000001d8: POP 000001d9: PUSH2 0x01e0 000001dc: PUSH2 0x054d 000001df: JUMP 000001e0: JUMPDEST 000001e1: STOP 000001e2: JUMPDEST 000001e3: CALLVALUE 000001e4: DUP1 000001e5: ISZERO 000001e6: PUSH2 0x01ee 000001e9: JUMPI 000001ea: PUSH1 0x00 000001ec: DUP1 000001ed: REVERT 000001ee: JUMPDEST 000001ef: POP 000001f0: PUSH2 0x01e0 000001f3: PUSH1 0x04 000001f5: CALLDATALOAD 000001f6: ISZERO 000001f7: ISZERO 000001f8: PUSH2 0x0715 000001fb: JUMP 000001fc: JUMPDEST 000001fd: CALLVALUE 000001fe: DUP1 000001ff: ISZERO 00000200: PUSH2 0x0208 00000203: JUMPI 00000204: PUSH1 0x00 00000206: DUP1 00000207: REVERT 00000208: JUMPDEST 00000209: POP 0000020a: PUSH2 0x01e0 0000020d: PUSH1 0x04 0000020f: CALLDATALOAD 00000210: PUSH2 0x077c 00000213: JUMP 00000214: JUMPDEST 00000215: CALLVALUE 00000216: DUP1 00000217: ISZERO 00000218: PUSH2 0x0220 0000021b: JUMPI 0000021c: PUSH1 0x00 0000021e: DUP1 0000021f: REVERT 00000220: JUMPDEST 00000221: POP 00000222: PUSH2 0x01b9 00000225: PUSH2 0x08f1 00000228: JUMP 00000229: JUMPDEST 0000022a: CALLVALUE 0000022b: DUP1 0000022c: ISZERO 0000022d: PUSH2 0x0235 00000230: JUMPI 00000231: PUSH1 0x00 00000233: DUP1 00000234: REVERT 00000235: JUMPDEST 00000236: POP 00000237: PUSH2 0x01e0 0000023a: PUSH1 0x04 0000023c: CALLDATALOAD 0000023d: PUSH2 0x08f7 00000240: JUMP 00000241: JUMPDEST 00000242: CALLVALUE 00000243: DUP1 00000244: ISZERO 00000245: PUSH2 0x024d 00000248: JUMPI 00000249: PUSH1 0x00 0000024b: DUP1 0000024c: REVERT 0000024d: JUMPDEST 0000024e: POP 0000024f: PUSH2 0x01b9 00000252: PUSH2 0x0b4e 00000255: JUMP 00000256: JUMPDEST 00000257: CALLVALUE 00000258: DUP1 00000259: ISZERO 0000025a: PUSH2 0x0262 0000025d: JUMPI 0000025e: PUSH1 0x00 00000260: DUP1 00000261: REVERT 00000262: JUMPDEST 00000263: POP 00000264: PUSH2 0x0271 00000267: PUSH1 0x04 00000269: CALLDATALOAD 0000026a: PUSH1 0x24 0000026c: CALLDATALOAD 0000026d: PUSH2 0x0b54 00000270: JUMP 00000271: JUMPDEST 00000272: PUSH1 0x40 00000274: DUP1 00000275: MLOAD 00000276: SWAP7 00000277: DUP8 00000278: MSTORE 00000279: PUSH1 0x01 0000027b: PUSH1 0xa0 0000027d: PUSH1 0x02 0000027f: EXP 00000280: SUB 00000281: SWAP1 00000282: SWAP6 00000283: AND 00000284: PUSH1 0x20 00000286: DUP8 00000287: ADD 00000288: MSTORE 00000289: DUP6 0000028a: DUP6 0000028b: ADD 0000028c: SWAP4 0000028d: SWAP1 0000028e: SWAP4 0000028f: MSTORE 00000290: PUSH1 0x60 00000292: DUP6 00000293: ADD 00000294: SWAP2 00000295: SWAP1 00000296: SWAP2 00000297: MSTORE 00000298: PUSH1 0x80 0000029a: DUP5 0000029b: ADD 0000029c: MSTORE 0000029d: PUSH1 0xa0 0000029f: DUP4 000002a0: ADD 000002a1: MSTORE 000002a2: MLOAD 000002a3: SWAP1 000002a4: DUP2 000002a5: SWAP1 000002a6: SUB 000002a7: PUSH1 0xc0 000002a9: ADD 000002aa: SWAP1 000002ab: RETURN 000002ac: JUMPDEST 000002ad: PUSH2 0x01e0 000002b0: PUSH1 0x04 000002b2: CALLDATALOAD 000002b3: PUSH1 0x01 000002b5: PUSH1 0xa0 000002b7: PUSH1 0x02 000002b9: EXP 000002ba: SUB 000002bb: PUSH1 0x24 000002bd: CALLDATALOAD 000002be: AND 000002bf: PUSH2 0x0b9e 000002c2: JUMP 000002c3: JUMPDEST 000002c4: CALLVALUE 000002c5: DUP1 000002c6: ISZERO 000002c7: PUSH2 0x02cf 000002ca: JUMPI 000002cb: PUSH1 0x00 000002cd: DUP1 000002ce: REVERT 000002cf: JUMPDEST 000002d0: POP 000002d1: PUSH2 0x02db 000002d4: PUSH1 0x04 000002d6: CALLDATALOAD 000002d7: PUSH2 0x0e94 000002da: JUMP 000002db: JUMPDEST 000002dc: PUSH1 0x40 000002de: DUP1 000002df: MLOAD 000002e0: SWAP6 000002e1: DUP7 000002e2: MSTORE 000002e3: PUSH1 0x20 000002e5: DUP7 000002e6: ADD 000002e7: SWAP5 000002e8: SWAP1 000002e9: SWAP5 000002ea: MSTORE 000002eb: DUP5 000002ec: DUP5 000002ed: ADD 000002ee: SWAP3 000002ef: SWAP1 000002f0: SWAP3 000002f1: MSTORE 000002f2: PUSH1 0x01 000002f4: PUSH1 0xa0 000002f6: PUSH1 0x02 000002f8: EXP 000002f9: SUB 000002fa: AND 000002fb: PUSH1 0x60 000002fd: DUP5 000002fe: ADD 000002ff: MSTORE 00000300: PUSH1 0x80 00000302: DUP4 00000303: ADD 00000304: MSTORE 00000305: MLOAD 00000306: SWAP1 00000307: DUP2 00000308: SWAP1 00000309: SUB 0000030a: PUSH1 0xa0 0000030c: ADD 0000030d: SWAP1 0000030e: RETURN 0000030f: JUMPDEST 00000310: CALLVALUE 00000311: DUP1 00000312: ISZERO 00000313: PUSH2 0x031b 00000316: JUMPI 00000317: PUSH1 0x00 00000319: DUP1 0000031a: REVERT 0000031b: JUMPDEST 0000031c: POP 0000031d: PUSH2 0x0324 00000320: PUSH2 0x0ecf 00000323: JUMP 00000324: JUMPDEST 00000325: PUSH1 0x40 00000327: DUP1 00000328: MLOAD 00000329: PUSH1 0x01 0000032b: PUSH1 0xa0 0000032d: PUSH1 0x02 0000032f: EXP 00000330: SUB 00000331: SWAP1 00000332: SWAP3 00000333: AND 00000334: DUP3 00000335: MSTORE 00000336: MLOAD 00000337: SWAP1 00000338: DUP2 00000339: SWAP1 0000033a: SUB 0000033b: PUSH1 0x20 0000033d: ADD 0000033e: SWAP1 0000033f: RETURN 00000340: JUMPDEST 00000341: CALLVALUE 00000342: DUP1 00000343: ISZERO 00000344: PUSH2 0x034c 00000347: JUMPI 00000348: PUSH1 0x00 0000034a: DUP1 0000034b: REVERT 0000034c: JUMPDEST 0000034d: POP 0000034e: PUSH2 0x01b9 00000351: PUSH1 0x01 00000353: PUSH1 0xa0 00000355: PUSH1 0x02 00000357: EXP 00000358: SUB 00000359: PUSH1 0x04 0000035b: CALLDATALOAD 0000035c: AND 0000035d: PUSH2 0x0ede 00000360: JUMP 00000361: JUMPDEST 00000362: CALLVALUE 00000363: DUP1 00000364: ISZERO 00000365: PUSH2 0x036d 00000368: JUMPI 00000369: PUSH1 0x00 0000036b: DUP1 0000036c: REVERT 0000036d: JUMPDEST 0000036e: POP 0000036f: PUSH2 0x01b9 00000372: PUSH2 0x0ef0 00000375: JUMP 00000376: JUMPDEST 00000377: CALLVALUE 00000378: DUP1 00000379: ISZERO 0000037a: PUSH2 0x0382 0000037d: JUMPI 0000037e: PUSH1 0x00 00000380: DUP1 00000381: REVERT 00000382: JUMPDEST 00000383: POP 00000384: PUSH2 0x0324 00000387: PUSH2 0x0f68 0000038a: JUMP 0000038b: JUMPDEST 0000038c: CALLVALUE 0000038d: DUP1 0000038e: ISZERO 0000038f: PUSH2 0x0397 00000392: JUMPI 00000393: PUSH1 0x00 00000395: DUP1 00000396: REVERT 00000397: JUMPDEST 00000398: POP 00000399: PUSH2 0x01e0 0000039c: PUSH1 0x01 0000039e: PUSH1 0xa0 000003a0: PUSH1 0x02 000003a2: EXP 000003a3: SUB 000003a4: PUSH1 0x04 000003a6: CALLDATALOAD 000003a7: AND 000003a8: PUSH1 0x24 000003aa: CALLDATALOAD 000003ab: PUSH2 0x0f77 000003ae: JUMP 000003af: JUMPDEST 000003b0: CALLVALUE 000003b1: DUP1 000003b2: ISZERO 000003b3: PUSH2 0x03bb 000003b6: JUMPI 000003b7: PUSH1 0x00 000003b9: DUP1 000003ba: REVERT 000003bb: JUMPDEST 000003bc: POP 000003bd: PUSH2 0x01e0 000003c0: PUSH2 0x124e 000003c3: JUMP 000003c4: JUMPDEST 000003c5: CALLVALUE 000003c6: DUP1 000003c7: ISZERO 000003c8: PUSH2 0x03d0 000003cb: JUMPI 000003cc: PUSH1 0x00 000003ce: DUP1 000003cf: REVERT 000003d0: JUMPDEST 000003d1: POP 000003d2: PUSH2 0x03d9 000003d5: PUSH2 0x1332 000003d8: JUMP 000003d9: JUMPDEST 000003da: PUSH1 0x40 000003dc: DUP1 000003dd: MLOAD 000003de: SWAP2 000003df: ISZERO 000003e0: ISZERO 000003e1: DUP3 000003e2: MSTORE 000003e3: MLOAD 000003e4: SWAP1 000003e5: DUP2 000003e6: SWAP1 000003e7: SUB 000003e8: PUSH1 0x20 000003ea: ADD 000003eb: SWAP1 000003ec: RETURN 000003ed: JUMPDEST 000003ee: CALLVALUE 000003ef: DUP1 000003f0: ISZERO 000003f1: PUSH2 0x03f9 000003f4: JUMPI 000003f5: PUSH1 0x00 000003f7: DUP1 000003f8: REVERT 000003f9: JUMPDEST 000003fa: POP 000003fb: PUSH2 0x01b9 000003fe: PUSH1 0x04 00000400: CALLDATALOAD 00000401: PUSH2 0x133b 00000404: JUMP 00000405: JUMPDEST 00000406: CALLVALUE 00000407: DUP1 00000408: ISZERO 00000409: PUSH2 0x0411 0000040c: JUMPI 0000040d: PUSH1 0x00 0000040f: DUP1 00000410: REVERT 00000411: JUMPDEST 00000412: POP 00000413: PUSH2 0x01e0 00000416: PUSH1 0x01 00000418: PUSH1 0xa0 0000041a: PUSH1 0x02 0000041c: EXP 0000041d: SUB 0000041e: PUSH1 0x04 00000420: CALLDATALOAD 00000421: AND 00000422: PUSH2 0x13a9 00000425: JUMP 00000426: JUMPDEST 00000427: CALLVALUE 00000428: DUP1 00000429: ISZERO 0000042a: PUSH2 0x0432 0000042d: JUMPI 0000042e: PUSH1 0x00 00000430: DUP1 00000431: REVERT 00000432: JUMPDEST 00000433: POP 00000434: PUSH2 0x01b9 00000437: PUSH1 0x04 00000439: CALLDATALOAD 0000043a: PUSH1 0x24 0000043c: CALLDATALOAD 0000043d: PUSH1 0x01 0000043f: PUSH1 0xa0 00000441: PUSH1 0x02 00000443: EXP 00000444: SUB 00000445: PUSH1 0x44 00000447: CALLDATALOAD 00000448: AND 00000449: PUSH2 0x142c 0000044c: JUMP 0000044d: JUMPDEST 0000044e: CALLVALUE 0000044f: DUP1 00000450: ISZERO 00000451: PUSH2 0x0459 00000454: JUMPI 00000455: PUSH1 0x00 00000457: DUP1 00000458: REVERT 00000459: JUMPDEST 0000045a: POP 0000045b: PUSH2 0x01b9 0000045e: PUSH1 0x04 00000460: CALLDATALOAD 00000461: PUSH1 0x01 00000463: PUSH1 0xa0 00000465: PUSH1 0x02 00000467: EXP 00000468: SUB 00000469: PUSH1 0x24 0000046b: CALLDATALOAD 0000046c: AND 0000046d: PUSH2 0x144f 00000470: JUMP 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 0x01e0 00000482: PUSH1 0x04 00000484: CALLDATALOAD 00000485: PUSH2 0x146c 00000488: JUMP 00000489: JUMPDEST 0000048a: CALLVALUE 0000048b: DUP1 0000048c: ISZERO 0000048d: PUSH2 0x0495 00000490: JUMPI 00000491: PUSH1 0x00 00000493: DUP1 00000494: REVERT 00000495: JUMPDEST 00000496: POP 00000497: PUSH2 0x0324 0000049a: PUSH2 0x14c5 0000049d: JUMP 0000049e: JUMPDEST 0000049f: CALLVALUE 000004a0: DUP1 000004a1: ISZERO 000004a2: PUSH2 0x04aa 000004a5: JUMPI 000004a6: PUSH1 0x00 000004a8: DUP1 000004a9: REVERT 000004aa: JUMPDEST 000004ab: POP 000004ac: PUSH2 0x01e0 000004af: PUSH2 0x14d4 000004b2: JUMP 000004b3: JUMPDEST 000004b4: CALLVALUE 000004b5: DUP1 000004b6: ISZERO 000004b7: PUSH2 0x04bf 000004ba: JUMPI 000004bb: PUSH1 0x00 000004bd: DUP1 000004be: REVERT 000004bf: JUMPDEST 000004c0: POP 000004c1: PUSH2 0x0324 000004c4: PUSH2 0x1573 000004c7: JUMP 000004c8: JUMPDEST 000004c9: CALLVALUE 000004ca: DUP1 000004cb: ISZERO 000004cc: PUSH2 0x04d4 000004cf: JUMPI 000004d0: PUSH1 0x00 000004d2: DUP1 000004d3: REVERT 000004d4: JUMPDEST 000004d5: POP 000004d6: PUSH2 0x03d9 000004d9: PUSH1 0x01 000004db: PUSH1 0xa0 000004dd: PUSH1 0x02 000004df: EXP 000004e0: SUB 000004e1: PUSH1 0x04 000004e3: CALLDATALOAD 000004e4: AND 000004e5: PUSH2 0x1582 000004e8: JUMP 000004e9: JUMPDEST 000004ea: PUSH2 0x01e0 000004ed: PUSH2 0x1597 000004f0: JUMP 000004f1: JUMPDEST 000004f2: CALLVALUE 000004f3: DUP1 000004f4: ISZERO 000004f5: PUSH2 0x04fd 000004f8: JUMPI 000004f9: PUSH1 0x00 000004fb: DUP1 000004fc: REVERT 000004fd: JUMPDEST 000004fe: POP 000004ff: PUSH2 0x01b9 00000502: PUSH2 0x1646 00000505: JUMP 00000506: JUMPDEST 00000507: CALLVALUE 00000508: DUP1 00000509: ISZERO 0000050a: PUSH2 0x0512 0000050d: JUMPI 0000050e: PUSH1 0x00 00000510: DUP1 00000511: REVERT 00000512: JUMPDEST 00000513: POP 00000514: PUSH2 0x01b9 00000517: PUSH1 0x04 00000519: CALLDATALOAD 0000051a: PUSH1 0x24 0000051c: CALLDATALOAD 0000051d: PUSH1 0x01 0000051f: PUSH1 0xa0 00000521: PUSH1 0x02 00000523: EXP 00000524: SUB 00000525: PUSH1 0x44 00000527: CALLDATALOAD 00000528: AND 00000529: PUSH2 0x1651 0000052c: JUMP 0000052d: JUMPDEST 0000052e: PUSH1 0x00 00000530: DUP3 00000531: DUP3 00000532: ADD 00000533: DUP4 00000534: DUP2 00000535: LT 00000536: ISZERO 00000537: PUSH2 0x053c 0000053a: JUMPI 0000053b: INVALID 0000053c: JUMPDEST 0000053d: DUP1 0000053e: SWAP2 0000053f: POP 00000540: JUMPDEST 00000541: POP 00000542: SWAP3 00000543: SWAP2 00000544: POP 00000545: POP 00000546: JUMP 00000547: JUMPDEST 00000548: PUSH1 0x0f 0000054a: SLOAD 0000054b: DUP2 0000054c: JUMP 0000054d: JUMPDEST 0000054e: PUSH1 0x01 00000550: SLOAD 00000551: PUSH1 0x00 00000553: SWAP1 00000554: CALLER 00000555: PUSH1 0x01 00000557: PUSH1 0xa0 00000559: PUSH1 0x02 0000055b: EXP 0000055c: SUB 0000055d: SWAP1 0000055e: DUP2 0000055f: AND 00000560: SWAP2 00000561: AND 00000562: EQ 00000563: PUSH2 0x05b6 00000566: JUMPI 00000567: PUSH1 0x40 00000569: DUP1 0000056a: MLOAD 0000056b: PUSH1 0xe5 0000056d: PUSH1 0x02 0000056f: EXP 00000570: PUSH3 0x461bcd 00000574: MUL 00000575: DUP2 00000576: MSTORE 00000577: PUSH1 0x20 00000579: PUSH1 0x04 0000057b: DUP3 0000057c: ADD 0000057d: MSTORE 0000057e: PUSH1 0x0c 00000580: PUSH1 0x24 00000582: DUP3 00000583: ADD 00000584: MSTORE 00000585: PUSH32 0x6f6e6c7920736572766963650000000000000000000000000000000000000000 000005a6: PUSH1 0x44 000005a8: DUP3 000005a9: ADD 000005aa: MSTORE 000005ab: SWAP1 000005ac: MLOAD 000005ad: SWAP1 000005ae: DUP2 000005af: SWAP1 000005b0: SUB 000005b1: PUSH1 0x64 000005b3: ADD 000005b4: SWAP1 000005b5: REVERT 000005b6: JUMPDEST 000005b7: PUSH1 0x10 000005b9: SLOAD 000005ba: PUSH1 0xff 000005bc: AND 000005bd: ISZERO 000005be: PUSH2 0x05ff 000005c1: JUMPI 000005c2: PUSH1 0x40 000005c4: DUP1 000005c5: MLOAD 000005c6: PUSH1 0xe5 000005c8: PUSH1 0x02 000005ca: EXP 000005cb: PUSH3 0x461bcd 000005cf: MUL 000005d0: DUP2 000005d1: MSTORE 000005d2: PUSH1 0x20 000005d4: PUSH1 0x04 000005d6: DUP3 000005d7: ADD 000005d8: MSTORE 000005d9: PUSH1 0x09 000005db: PUSH1 0x24 000005dd: DUP3 000005de: ADD 000005df: MSTORE 000005e0: PUSH1 0x00 000005e2: DUP1 000005e3: MLOAD 000005e4: PUSH1 0x20 000005e6: PUSH2 0x2233 000005e9: DUP4 000005ea: CODECOPY 000005eb: DUP2 000005ec: MLOAD 000005ed: SWAP2 000005ee: MSTORE 000005ef: PUSH1 0x44 000005f1: DUP3 000005f2: ADD 000005f3: MSTORE 000005f4: SWAP1 000005f5: MLOAD 000005f6: SWAP1 000005f7: DUP2 000005f8: SWAP1 000005f9: SUB 000005fa: PUSH1 0x64 000005fc: ADD 000005fd: SWAP1 000005fe: REVERT 000005ff: JUMPDEST 00000600: PUSH1 0x0f 00000602: SLOAD 00000603: PUSH1 0x00 00000605: SWAP1 00000606: DUP2 00000607: MSTORE 00000608: PUSH1 0x03 0000060a: PUSH1 0x20 0000060c: DUP2 0000060d: DUP2 0000060e: MSTORE 0000060f: PUSH1 0x40 00000611: DUP1 00000612: DUP5 00000613: KECCAK256 00000614: PUSH1 0x0e 00000616: SLOAD 00000617: DUP6 00000618: MSTORE 00000619: SWAP1 0000061a: SWAP2 0000061b: MSTORE 0000061c: SWAP1 0000061d: SWAP2 0000061e: KECCAK256 0000061f: ADD 00000620: SLOAD 00000621: TIMESTAMP 00000622: GT 00000623: PUSH2 0x062b 00000626: JUMPI 00000627: PUSH1 0x00 00000629: DUP1 0000062a: REVERT 0000062b: JUMPDEST 0000062c: PUSH1 0x0f 0000062e: SLOAD 0000062f: PUSH1 0x00 00000631: SWAP1 00000632: DUP2 00000633: MSTORE 00000634: PUSH1 0x03 00000636: PUSH1 0x20 00000638: SWAP1 00000639: DUP2 0000063a: MSTORE 0000063b: PUSH1 0x40 0000063d: DUP1 0000063e: DUP4 0000063f: KECCAK256 00000640: PUSH1 0x0e 00000642: SLOAD 00000643: DUP5 00000644: MSTORE 00000645: SWAP1 00000646: SWAP2 00000647: MSTORE 00000648: SWAP1 00000649: KECCAK256 0000064a: PUSH1 0x04 0000064c: ADD 0000064d: SLOAD 0000064e: ISZERO 0000064f: PUSH2 0x0657 00000652: JUMPI 00000653: PUSH1 0x00 00000655: DUP1 00000656: REVERT 00000657: JUMPDEST 00000658: PUSH2 0x065f 0000065b: PUSH2 0x1677 0000065e: JUMP 0000065f: JUMPDEST 00000660: PUSH1 0x0f 00000662: SLOAD 00000663: PUSH1 0x00 00000665: SWAP1 00000666: DUP2 00000667: MSTORE 00000668: PUSH1 0x03 0000066a: PUSH1 0x20 0000066c: SWAP1 0000066d: DUP2 0000066e: MSTORE 0000066f: PUSH1 0x40 00000671: DUP1 00000672: DUP4 00000673: KECCAK256 00000674: PUSH1 0x0e 00000676: SLOAD 00000677: DUP5 00000678: MSTORE 00000679: SWAP1 0000067a: SWAP2 0000067b: MSTORE 0000067c: SWAP1 0000067d: KECCAK256 0000067e: SLOAD 0000067f: SWAP1 00000680: SWAP2 00000681: POP 00000682: DUP1 00000683: ISZERO 00000684: ISZERO 00000685: PUSH2 0x068a 00000688: JUMPI 00000689: INVALID 0000068a: JUMPDEST 0000068b: DUP2 0000068c: PUSH1 0x00 0000068e: NOT 0000068f: NUMBER 00000690: ADD 00000691: BLOCKHASH 00000692: ADDMOD 00000693: PUSH1 0x0f 00000695: DUP1 00000696: SLOAD 00000697: PUSH1 0x00 00000699: SWAP1 0000069a: DUP2 0000069b: MSTORE 0000069c: PUSH1 0x03 0000069e: PUSH1 0x20 000006a0: DUP2 000006a1: DUP2 000006a2: MSTORE 000006a3: PUSH1 0x40 000006a5: DUP1 000006a6: DUP5 000006a7: KECCAK256 000006a8: PUSH1 0x0e 000006aa: DUP1 000006ab: SLOAD 000006ac: DUP7 000006ad: MSTORE 000006ae: SWAP1 000006af: DUP4 000006b0: MSTORE 000006b1: DUP2 000006b2: DUP6 000006b3: KECCAK256 000006b4: PUSH1 0x04 000006b6: SWAP1 000006b7: DUP2 000006b8: ADD 000006b9: SWAP8 000006ba: SWAP1 000006bb: SWAP8 000006bc: SSTORE 000006bd: SWAP5 000006be: SLOAD 000006bf: DUP1 000006c0: DUP6 000006c1: MSTORE 000006c2: SWAP3 000006c3: DUP3 000006c4: MSTORE 000006c5: DUP1 000006c6: DUP5 000006c7: KECCAK256 000006c8: SWAP5 000006c9: SLOAD 000006ca: DUP1 000006cb: DUP6 000006cc: MSTORE 000006cd: SWAP5 000006ce: DUP3 000006cf: MSTORE 000006d0: SWAP3 000006d1: DUP4 000006d2: SWAP1 000006d3: KECCAK256 000006d4: SWAP1 000006d5: SWAP5 000006d6: ADD 000006d7: SLOAD 000006d8: DUP3 000006d9: MLOAD 000006da: SWAP1 000006db: DUP2 000006dc: MSTORE 000006dd: SWAP4 000006de: DUP5 000006df: ADD 000006e0: MSTORE 000006e1: DUP3 000006e2: DUP2 000006e3: ADD 000006e4: SWAP2 000006e5: SWAP1 000006e6: SWAP2 000006e7: MSTORE 000006e8: MLOAD 000006e9: PUSH32 0xbedcee3c4a7b1afaa7da586cd10b7e8f7ade1613731fc9c58b4805cc9e6878d3 0000070a: SWAP2 0000070b: DUP2 0000070c: SWAP1 0000070d: SUB 0000070e: PUSH1 0x60 00000710: ADD 00000711: SWAP1 00000712: LOG1 00000713: POP 00000714: JUMP 00000715: JUMPDEST 00000716: PUSH1 0x00 00000718: SLOAD 00000719: CALLER 0000071a: PUSH1 0x01 0000071c: PUSH1 0xa0 0000071e: PUSH1 0x02 00000720: EXP 00000721: SUB 00000722: SWAP1 00000723: DUP2 00000724: AND 00000725: SWAP2 00000726: AND 00000727: EQ 00000728: PUSH2 0x0769 0000072b: JUMPI 0000072c: PUSH1 0x40 0000072e: DUP1 0000072f: MLOAD 00000730: PUSH1 0xe5 00000732: PUSH1 0x02 00000734: EXP 00000735: PUSH3 0x461bcd 00000739: MUL 0000073a: DUP2 0000073b: MSTORE 0000073c: PUSH1 0x20 0000073e: PUSH1 0x04 00000740: DUP3 00000741: ADD 00000742: MSTORE 00000743: PUSH1 0x0a 00000745: PUSH1 0x24 00000747: DUP3 00000748: ADD 00000749: MSTORE 0000074a: PUSH1 0x00 0000074c: DUP1 0000074d: MLOAD 0000074e: PUSH1 0x20 00000750: PUSH2 0x2253 00000753: DUP4 00000754: CODECOPY 00000755: DUP2 00000756: MLOAD 00000757: SWAP2 00000758: MSTORE 00000759: PUSH1 0x44 0000075b: DUP3 0000075c: ADD 0000075d: MSTORE 0000075e: SWAP1 0000075f: MLOAD 00000760: SWAP1 00000761: DUP2 00000762: SWAP1 00000763: SUB 00000764: PUSH1 0x64 00000766: ADD 00000767: SWAP1 00000768: REVERT 00000769: JUMPDEST 0000076a: PUSH1 0x10 0000076c: DUP1 0000076d: SLOAD 0000076e: PUSH1 0xff 00000770: NOT 00000771: AND 00000772: SWAP2 00000773: ISZERO 00000774: ISZERO 00000775: SWAP2 00000776: SWAP1 00000777: SWAP2 00000778: OR 00000779: SWAP1 0000077a: SSTORE 0000077b: JUMP 0000077c: JUMPDEST 0000077d: PUSH1 0x10 0000077f: SLOAD 00000780: PUSH1 0x00 00000782: SWAP1 00000783: DUP2 00000784: SWAP1 00000785: PUSH1 0xff 00000787: AND 00000788: ISZERO 00000789: PUSH2 0x07ca 0000078c: JUMPI 0000078d: PUSH1 0x40 0000078f: DUP1 00000790: MLOAD 00000791: PUSH1 0xe5 00000793: PUSH1 0x02 00000795: EXP 00000796: PUSH3 0x461bcd 0000079a: MUL 0000079b: DUP2 0000079c: MSTORE 0000079d: PUSH1 0x20 0000079f: PUSH1 0x04 000007a1: DUP3 000007a2: ADD 000007a3: MSTORE 000007a4: PUSH1 0x09 000007a6: PUSH1 0x24 000007a8: DUP3 000007a9: ADD 000007aa: MSTORE 000007ab: PUSH1 0x00 000007ad: DUP1 000007ae: MLOAD 000007af: PUSH1 0x20 000007b1: PUSH2 0x2233 000007b4: DUP4 000007b5: CODECOPY 000007b6: DUP2 000007b7: MLOAD 000007b8: SWAP2 000007b9: MSTORE 000007ba: PUSH1 0x44 000007bc: DUP3 000007bd: ADD 000007be: MSTORE 000007bf: SWAP1 000007c0: MLOAD 000007c1: SWAP1 000007c2: DUP2 000007c3: SWAP1 000007c4: SUB 000007c5: PUSH1 0x64 000007c7: ADD 000007c8: SWAP1 000007c9: REVERT 000007ca: JUMPDEST 000007cb: PUSH2 0x07d3 000007ce: DUP4 000007cf: PUSH2 0x133b 000007d2: JUMP 000007d3: JUMPDEST 000007d4: PUSH1 0x01 000007d6: PUSH1 0xa0 000007d8: PUSH1 0x02 000007da: EXP 000007db: SUB 000007dc: CALLER 000007dd: AND 000007de: PUSH1 0x00 000007e0: SWAP1 000007e1: DUP2 000007e2: MSTORE 000007e3: PUSH1 0x0a 000007e5: PUSH1 0x20 000007e7: MSTORE 000007e8: PUSH1 0x40 000007ea: SWAP1 000007eb: KECCAK256 000007ec: SLOAD 000007ed: SWAP1 000007ee: SWAP3 000007ef: POP 000007f0: PUSH2 0x07ff 000007f3: SWAP1 000007f4: DUP4 000007f5: PUSH4 0xffffffff 000007fa: PUSH2 0x052d 000007fd: AND 000007fe: JUMP 000007ff: JUMPDEST 00000800: SWAP1 00000801: POP 00000802: PUSH1 0x00 00000804: DUP2 00000805: GT 00000806: PUSH2 0x080e 00000809: JUMPI 0000080a: PUSH1 0x00 0000080c: DUP1 0000080d: REVERT 0000080e: JUMPDEST 0000080f: PUSH1 0x01 00000811: PUSH1 0xa0 00000813: PUSH1 0x02 00000815: EXP 00000816: SUB 00000817: CALLER 00000818: AND 00000819: PUSH1 0x00 0000081b: DUP2 0000081c: DUP2 0000081d: MSTORE 0000081e: PUSH1 0x0a 00000820: PUSH1 0x20 00000822: SWAP1 00000823: DUP2 00000824: MSTORE 00000825: PUSH1 0x40 00000827: DUP1 00000828: DUP4 00000829: KECCAK256 0000082a: DUP4 0000082b: SWAP1 0000082c: SSTORE 0000082d: DUP7 0000082e: DUP4 0000082f: MSTORE 00000830: PUSH1 0x02 00000832: DUP3 00000833: MSTORE 00000834: DUP1 00000835: DUP4 00000836: KECCAK256 00000837: SWAP4 00000838: DUP4 00000839: MSTORE 0000083a: PUSH1 0x03 0000083c: SWAP1 0000083d: SWAP4 0000083e: ADD 0000083f: SWAP1 00000840: MSTORE 00000841: KECCAK256 00000842: SLOAD 00000843: PUSH2 0x0852 00000846: SWAP1 00000847: DUP4 00000848: PUSH4 0xffffffff 0000084d: PUSH2 0x052d 00000850: AND 00000851: JUMP 00000852: JUMPDEST 00000853: PUSH1 0x00 00000855: DUP5 00000856: DUP2 00000857: MSTORE 00000858: PUSH1 0x02 0000085a: PUSH1 0x20 0000085c: SWAP1 0000085d: DUP2 0000085e: MSTORE 0000085f: PUSH1 0x40 00000861: DUP1 00000862: DUP4 00000863: KECCAK256 00000864: PUSH1 0x01 00000866: PUSH1 0xa0 00000868: PUSH1 0x02 0000086a: EXP 0000086b: SUB 0000086c: CALLER 0000086d: AND 0000086e: DUP1 0000086f: DUP6 00000870: MSTORE 00000871: PUSH1 0x03 00000873: SWAP1 00000874: SWAP2 00000875: ADD 00000876: SWAP1 00000877: SWAP3 00000878: MSTORE 00000879: DUP1 0000087a: DUP4 0000087b: KECCAK256 0000087c: SWAP4 0000087d: SWAP1 0000087e: SWAP4 0000087f: SSTORE 00000880: SWAP2 00000881: MLOAD 00000882: DUP4 00000883: ISZERO 00000884: PUSH2 0x08fc 00000887: MUL 00000888: SWAP2 00000889: DUP5 0000088a: SWAP2 0000088b: SWAP1 0000088c: DUP2 0000088d: DUP2 0000088e: DUP2 0000088f: DUP6 00000890: DUP9 00000891: DUP9 00000892: CALL 00000893: SWAP4 00000894: POP 00000895: POP 00000896: POP 00000897: POP 00000898: ISZERO 00000899: DUP1 0000089a: ISZERO 0000089b: PUSH2 0x08a8 0000089e: JUMPI 0000089f: RETURNDATASIZE 000008a0: PUSH1 0x00 000008a2: DUP1 000008a3: RETURNDATACOPY 000008a4: RETURNDATASIZE 000008a5: PUSH1 0x00 000008a7: REVERT 000008a8: JUMPDEST 000008a9: POP 000008aa: PUSH1 0x40 000008ac: DUP1 000008ad: MLOAD 000008ae: DUP3 000008af: DUP2 000008b0: MSTORE 000008b1: PUSH1 0x20 000008b3: DUP2 000008b4: ADD 000008b5: DUP6 000008b6: SWAP1 000008b7: MSTORE 000008b8: DUP2 000008b9: MLOAD 000008ba: PUSH1 0x01 000008bc: PUSH1 0xa0 000008be: PUSH1 0x02 000008c0: EXP 000008c1: SUB 000008c2: CALLER 000008c3: AND 000008c4: SWAP3 000008c5: PUSH32 0x3f5274d9edd3b530545223adc84dcf865f2433783bc200984750bd356af57253 000008e6: SWAP3 000008e7: DUP3 000008e8: SWAP1 000008e9: SUB 000008ea: ADD 000008eb: SWAP1 000008ec: LOG2 000008ed: POP 000008ee: POP 000008ef: POP 000008f0: JUMP 000008f1: JUMPDEST 000008f2: PUSH1 0x0e 000008f4: SLOAD 000008f5: DUP2 000008f6: JUMP 000008f7: JUMPDEST 000008f8: PUSH1 0x00 000008fa: DUP1 000008fb: CALLER 000008fc: DUP1 000008fd: EXTCODESIZE 000008fe: DUP1 000008ff: ISZERO 00000900: PUSH2 0x0953 00000903: JUMPI 00000904: PUSH1 0x40 00000906: DUP1 00000907: MLOAD 00000908: PUSH1 0xe5 0000090a: PUSH1 0x02 0000090c: EXP 0000090d: PUSH3 0x461bcd 00000911: MUL 00000912: DUP2 00000913: MSTORE 00000914: PUSH1 0x20 00000916: PUSH1 0x04 00000918: DUP3 00000919: ADD 0000091a: MSTORE 0000091b: PUSH1 0x11 0000091d: PUSH1 0x24 0000091f: DUP3 00000920: ADD 00000921: MSTORE 00000922: PUSH32 0x736f7272792068756d616e73206f6e6c79000000000000000000000000000000 00000943: PUSH1 0x44 00000945: DUP3 00000946: ADD 00000947: MSTORE 00000948: SWAP1 00000949: MLOAD 0000094a: SWAP1 0000094b: DUP2 0000094c: SWAP1 0000094d: SUB 0000094e: PUSH1 0x64 00000950: ADD 00000951: SWAP1 00000952: REVERT 00000953: JUMPDEST 00000954: PUSH1 0x10 00000956: SLOAD 00000957: PUSH1 0xff 00000959: AND 0000095a: ISZERO 0000095b: PUSH2 0x099c 0000095e: JUMPI 0000095f: PUSH1 0x40 00000961: DUP1 00000962: MLOAD 00000963: PUSH1 0xe5 00000965: PUSH1 0x02 00000967: EXP 00000968: PUSH3 0x461bcd 0000096c: MUL 0000096d: DUP2 0000096e: MSTORE 0000096f: PUSH1 0x20 00000971: PUSH1 0x04 00000973: DUP3 00000974: ADD 00000975: MSTORE 00000976: PUSH1 0x09 00000978: PUSH1 0x24 0000097a: DUP3 0000097b: ADD 0000097c: MSTORE 0000097d: PUSH1 0x00 0000097f: DUP1 00000980: MLOAD 00000981: PUSH1 0x20 00000983: PUSH2 0x2233 00000986: DUP4 00000987: CODECOPY 00000988: DUP2 00000989: MLOAD 0000098a: SWAP2 0000098b: MSTORE 0000098c: PUSH1 0x44 0000098e: DUP3 0000098f: ADD 00000990: MSTORE 00000991: SWAP1 00000992: MLOAD 00000993: SWAP1 00000994: DUP2 00000995: SWAP1 00000996: SUB 00000997: PUSH1 0x64 00000999: ADD 0000099a: SWAP1 0000099b: REVERT 0000099c: JUMPDEST 0000099d: PUSH1 0x0f 0000099f: SLOAD 000009a0: PUSH1 0x00 000009a2: SWAP1 000009a3: DUP2 000009a4: MSTORE 000009a5: PUSH1 0x03 000009a7: PUSH1 0x20 000009a9: SWAP1 000009aa: DUP2 000009ab: MSTORE 000009ac: PUSH1 0x40 000009ae: DUP1 000009af: DUP4 000009b0: KECCAK256 000009b1: PUSH1 0x0e 000009b3: SLOAD 000009b4: DUP5 000009b5: MSTORE 000009b6: SWAP1 000009b7: SWAP2 000009b8: MSTORE 000009b9: SWAP1 000009ba: KECCAK256 000009bb: PUSH1 0x02 000009bd: ADD 000009be: SLOAD 000009bf: TIMESTAMP 000009c0: GT 000009c1: PUSH2 0x0a14 000009c4: JUMPI 000009c5: PUSH1 0x40 000009c7: DUP1 000009c8: MLOAD 000009c9: PUSH1 0xe5 000009cb: PUSH1 0x02 000009cd: EXP 000009ce: PUSH3 0x461bcd 000009d2: MUL 000009d3: DUP2 000009d4: MSTORE 000009d5: PUSH1 0x20 000009d7: PUSH1 0x04 000009d9: DUP3 000009da: ADD 000009db: MSTORE 000009dc: PUSH1 0x1c 000009de: PUSH1 0x24 000009e0: DUP3 000009e1: ADD 000009e2: MSTORE 000009e3: PUSH32 0x5468652067616d6520686173206e6f7420737461727465642079657400000000 00000a04: PUSH1 0x44 00000a06: DUP3 00000a07: ADD 00000a08: MSTORE 00000a09: SWAP1 00000a0a: MLOAD 00000a0b: SWAP1 00000a0c: DUP2 00000a0d: SWAP1 00000a0e: SUB 00000a0f: PUSH1 0x64 00000a11: ADD 00000a12: SWAP1 00000a13: REVERT 00000a14: JUMPDEST 00000a15: PUSH1 0x0f 00000a17: SLOAD 00000a18: PUSH1 0x00 00000a1a: SWAP1 00000a1b: DUP2 00000a1c: MSTORE 00000a1d: PUSH1 0x03 00000a1f: PUSH1 0x20 00000a21: DUP2 00000a22: DUP2 00000a23: MSTORE 00000a24: PUSH1 0x40 00000a26: DUP1 00000a27: DUP5 00000a28: KECCAK256 00000a29: PUSH1 0x0e 00000a2b: SLOAD 00000a2c: DUP6 00000a2d: MSTORE 00000a2e: SWAP1 00000a2f: SWAP2 00000a30: MSTORE 00000a31: SWAP1 00000a32: SWAP2 00000a33: KECCAK256 00000a34: ADD 00000a35: SLOAD 00000a36: TIMESTAMP 00000a37: LT 00000a38: PUSH2 0x0a8b 00000a3b: JUMPI 00000a3c: PUSH1 0x40 00000a3e: DUP1 00000a3f: MLOAD 00000a40: PUSH1 0xe5 00000a42: PUSH1 0x02 00000a44: EXP 00000a45: PUSH3 0x461bcd 00000a49: MUL 00000a4a: DUP2 00000a4b: MSTORE 00000a4c: PUSH1 0x20 00000a4e: PUSH1 0x04 00000a50: DUP3 00000a51: ADD 00000a52: MSTORE 00000a53: PUSH1 0x10 00000a55: PUSH1 0x24 00000a57: DUP3 00000a58: ADD 00000a59: MSTORE 00000a5a: PUSH32 0x5468652067616d65206973206f76657200000000000000000000000000000000 00000a7b: PUSH1 0x44 00000a7d: DUP3 00000a7e: ADD 00000a7f: MSTORE 00000a80: SWAP1 00000a81: MLOAD 00000a82: SWAP1 00000a83: DUP2 00000a84: SWAP1 00000a85: SUB 00000a86: PUSH1 0x64 00000a88: ADD 00000a89: SWAP1 00000a8a: REVERT 00000a8b: JUMPDEST 00000a8c: PUSH2 0x0aa3 00000a8f: PUSH2 0x0a96 00000a92: PUSH2 0x0ef0 00000a95: JUMP 00000a96: JUMPDEST 00000a97: DUP7 00000a98: SWAP1 00000a99: PUSH4 0xffffffff 00000a9e: PUSH2 0x1802 00000aa1: AND 00000aa2: JUMP 00000aa3: JUMPDEST 00000aa4: SWAP4 00000aa5: POP 00000aa6: PUSH2 0x0ab0 00000aa9: PUSH1 0x0f 00000aab: SLOAD 00000aac: PUSH2 0x133b 00000aaf: JUMP 00000ab0: JUMPDEST 00000ab1: SWAP3 00000ab2: POP 00000ab3: PUSH1 0x00 00000ab5: DUP6 00000ab6: GT 00000ab7: DUP1 00000ab8: ISZERO 00000ab9: PUSH2 0x0ac2 00000abc: JUMPI 00000abd: POP 00000abe: PUSH1 0x00 00000ac0: DUP5 00000ac1: GT 00000ac2: JUMPDEST 00000ac3: ISZERO 00000ac4: ISZERO 00000ac5: PUSH2 0x0acd 00000ac8: JUMPI 00000ac9: PUSH1 0x00 00000acb: DUP1 00000acc: REVERT 00000acd: JUMPDEST 00000ace: DUP4 00000acf: DUP4 00000ad0: LT 00000ad1: ISZERO 00000ad2: PUSH2 0x0ada 00000ad5: JUMPI 00000ad6: PUSH1 0x00 00000ad8: DUP1 00000ad9: REVERT 00000ada: JUMPDEST 00000adb: PUSH1 0x0f 00000add: SLOAD 00000ade: PUSH1 0x00 00000ae0: SWAP1 00000ae1: DUP2 00000ae2: MSTORE 00000ae3: PUSH1 0x02 00000ae5: PUSH1 0x20 00000ae7: SWAP1 00000ae8: DUP2 00000ae9: MSTORE 00000aea: PUSH1 0x40 00000aec: DUP1 00000aed: DUP4 00000aee: KECCAK256 00000aef: PUSH1 0x01 00000af1: PUSH1 0xa0 00000af3: PUSH1 0x02 00000af5: EXP 00000af6: SUB 00000af7: CALLER 00000af8: AND 00000af9: DUP5 00000afa: MSTORE 00000afb: PUSH1 0x03 00000afd: ADD 00000afe: SWAP1 00000aff: SWAP2 00000b00: MSTORE 00000b01: SWAP1 00000b02: KECCAK256 00000b03: SLOAD 00000b04: PUSH2 0x0b14 00000b07: SWAP1 00000b08: DUP6 00000b09: SWAP1 00000b0a: PUSH4 0xffffffff 00000b0f: PUSH2 0x052d 00000b12: AND 00000b13: JUMP 00000b14: JUMPDEST 00000b15: PUSH1 0x0f 00000b17: SLOAD 00000b18: PUSH1 0x00 00000b1a: SWAP1 00000b1b: DUP2 00000b1c: MSTORE 00000b1d: PUSH1 0x02 00000b1f: PUSH1 0x20 00000b21: SWAP1 00000b22: DUP2 00000b23: MSTORE 00000b24: PUSH1 0x40 00000b26: DUP1 00000b27: DUP4 00000b28: KECCAK256 00000b29: PUSH1 0x01 00000b2b: PUSH1 0xa0 00000b2d: PUSH1 0x02 00000b2f: EXP 00000b30: SUB 00000b31: CALLER 00000b32: AND 00000b33: DUP5 00000b34: MSTORE 00000b35: PUSH1 0x03 00000b37: ADD 00000b38: SWAP1 00000b39: SWAP2 00000b3a: MSTORE 00000b3b: SWAP1 00000b3c: KECCAK256 00000b3d: SSTORE 00000b3e: PUSH2 0x0b47 00000b41: DUP6 00000b42: DUP6 00000b43: PUSH2 0x182d 00000b46: JUMP 00000b47: JUMPDEST 00000b48: POP 00000b49: POP 00000b4a: POP 00000b4b: POP 00000b4c: POP 00000b4d: JUMP 00000b4e: JUMPDEST 00000b4f: PUSH1 0x0c 00000b51: SLOAD 00000b52: DUP2 00000b53: JUMP 00000b54: JUMPDEST 00000b55: PUSH1 0x03 00000b57: PUSH1 0x20 00000b59: DUP2 00000b5a: DUP2 00000b5b: MSTORE 00000b5c: PUSH1 0x00 00000b5e: SWAP4 00000b5f: DUP5 00000b60: MSTORE 00000b61: PUSH1 0x40 00000b63: DUP1 00000b64: DUP6 00000b65: KECCAK256 00000b66: SWAP1 00000b67: SWAP2 00000b68: MSTORE 00000b69: SWAP2 00000b6a: DUP4 00000b6b: MSTORE 00000b6c: SWAP2 00000b6d: KECCAK256 00000b6e: DUP1 00000b6f: SLOAD 00000b70: PUSH1 0x01 00000b72: DUP3 00000b73: ADD 00000b74: SLOAD 00000b75: PUSH1 0x02 00000b77: DUP4 00000b78: ADD 00000b79: SLOAD 00000b7a: SWAP4 00000b7b: DUP4 00000b7c: ADD 00000b7d: SLOAD 00000b7e: PUSH1 0x04 00000b80: DUP5 00000b81: ADD 00000b82: SLOAD 00000b83: PUSH1 0x05 00000b85: SWAP1 00000b86: SWAP5 00000b87: ADD 00000b88: SLOAD 00000b89: SWAP3 00000b8a: SWAP5 00000b8b: PUSH1 0x01 00000b8d: PUSH1 0xa0 00000b8f: PUSH1 0x02 00000b91: EXP 00000b92: SUB 00000b93: SWAP1 00000b94: SWAP3 00000b95: AND 00000b96: SWAP4 00000b97: SWAP2 00000b98: SWAP3 00000b99: SWAP1 00000b9a: SWAP2 00000b9b: SWAP1 00000b9c: DUP7 00000b9d: JUMP 00000b9e: JUMPDEST 00000b9f: PUSH1 0x00 00000ba1: CALLER 00000ba2: DUP1 00000ba3: EXTCODESIZE 00000ba4: DUP1 00000ba5: ISZERO 00000ba6: PUSH2 0x0bf9 00000ba9: JUMPI 00000baa: PUSH1 0x40 00000bac: DUP1 00000bad: MLOAD 00000bae: PUSH1 0xe5 00000bb0: PUSH1 0x02 00000bb2: EXP 00000bb3: PUSH3 0x461bcd 00000bb7: MUL 00000bb8: DUP2 00000bb9: MSTORE 00000bba: PUSH1 0x20 00000bbc: PUSH1 0x04 00000bbe: DUP3 00000bbf: ADD 00000bc0: MSTORE 00000bc1: PUSH1 0x11 00000bc3: PUSH1 0x24 00000bc5: DUP3 00000bc6: ADD 00000bc7: MSTORE 00000bc8: PUSH32 0x736f7272792068756d616e73206f6e6c79000000000000000000000000000000 00000be9: PUSH1 0x44 00000beb: DUP3 00000bec: ADD 00000bed: MSTORE 00000bee: SWAP1 00000bef: MLOAD 00000bf0: SWAP1 00000bf1: DUP2 00000bf2: SWAP1 00000bf3: SUB 00000bf4: PUSH1 0x64 00000bf6: ADD 00000bf7: SWAP1 00000bf8: REVERT 00000bf9: JUMPDEST 00000bfa: PUSH1 0x10 00000bfc: SLOAD 00000bfd: PUSH1 0xff 00000bff: AND 00000c00: ISZERO 00000c01: PUSH2 0x0c42 00000c04: JUMPI 00000c05: PUSH1 0x40 00000c07: DUP1 00000c08: MLOAD 00000c09: PUSH1 0xe5 00000c0b: PUSH1 0x02 00000c0d: EXP 00000c0e: PUSH3 0x461bcd 00000c12: MUL 00000c13: DUP2 00000c14: MSTORE 00000c15: PUSH1 0x20 00000c17: PUSH1 0x04 00000c19: DUP3 00000c1a: ADD 00000c1b: MSTORE 00000c1c: PUSH1 0x09 00000c1e: PUSH1 0x24 00000c20: DUP3 00000c21: ADD 00000c22: MSTORE 00000c23: PUSH1 0x00 00000c25: DUP1 00000c26: MLOAD 00000c27: PUSH1 0x20 00000c29: PUSH2 0x2233 00000c2c: DUP4 00000c2d: CODECOPY 00000c2e: DUP2 00000c2f: MLOAD 00000c30: SWAP2 00000c31: MSTORE 00000c32: PUSH1 0x44 00000c34: DUP3 00000c35: ADD 00000c36: MSTORE 00000c37: SWAP1 00000c38: MLOAD 00000c39: SWAP1 00000c3a: DUP2 00000c3b: SWAP1 00000c3c: SUB 00000c3d: PUSH1 0x64 00000c3f: ADD 00000c40: SWAP1 00000c41: REVERT 00000c42: JUMPDEST 00000c43: PUSH1 0x0f 00000c45: SLOAD 00000c46: PUSH1 0x00 00000c48: SWAP1 00000c49: DUP2 00000c4a: MSTORE 00000c4b: PUSH1 0x03 00000c4d: PUSH1 0x20 00000c4f: SWAP1 00000c50: DUP2 00000c51: MSTORE 00000c52: PUSH1 0x40 00000c54: DUP1 00000c55: DUP4 00000c56: KECCAK256 00000c57: PUSH1 0x0e 00000c59: SLOAD 00000c5a: DUP5 00000c5b: MSTORE 00000c5c: SWAP1 00000c5d: SWAP2 00000c5e: MSTORE 00000c5f: SWAP1 00000c60: KECCAK256 00000c61: PUSH1 0x02 00000c63: ADD 00000c64: SLOAD 00000c65: TIMESTAMP 00000c66: GT 00000c67: PUSH2 0x0cba 00000c6a: JUMPI 00000c6b: PUSH1 0x40 00000c6d: DUP1 00000c6e: MLOAD 00000c6f: PUSH1 0xe5 00000c71: PUSH1 0x02 00000c73: EXP 00000c74: PUSH3 0x461bcd 00000c78: MUL 00000c79: DUP2 00000c7a: MSTORE 00000c7b: PUSH1 0x20 00000c7d: PUSH1 0x04 00000c7f: DUP3 00000c80: ADD 00000c81: MSTORE 00000c82: PUSH1 0x1c 00000c84: PUSH1 0x24 00000c86: DUP3 00000c87: ADD 00000c88: MSTORE 00000c89: PUSH32 0x5468652067616d6520686173206e6f7420737461727465642079657400000000 00000caa: PUSH1 0x44 00000cac: DUP3 00000cad: ADD 00000cae: MSTORE 00000caf: SWAP1 00000cb0: MLOAD 00000cb1: SWAP1 00000cb2: DUP2 00000cb3: SWAP1 00000cb4: SUB 00000cb5: PUSH1 0x64 00000cb7: ADD 00000cb8: SWAP1 00000cb9: REVERT 00000cba: JUMPDEST 00000cbb: PUSH1 0x0f 00000cbd: SLOAD 00000cbe: PUSH1 0x00 00000cc0: SWAP1 00000cc1: DUP2 00000cc2: MSTORE 00000cc3: PUSH1 0x03 00000cc5: PUSH1 0x20 00000cc7: DUP2 00000cc8: DUP2 00000cc9: MSTORE 00000cca: PUSH1 0x40 00000ccc: DUP1 00000ccd: DUP5 00000cce: KECCAK256 00000ccf: PUSH1 0x0e 00000cd1: SLOAD 00000cd2: DUP6 00000cd3: MSTORE 00000cd4: SWAP1 00000cd5: SWAP2 00000cd6: MSTORE 00000cd7: SWAP1 00000cd8: SWAP2 00000cd9: KECCAK256 00000cda: ADD 00000cdb: SLOAD 00000cdc: TIMESTAMP 00000cdd: LT 00000cde: PUSH2 0x0d31 00000ce1: JUMPI 00000ce2: PUSH1 0x40 00000ce4: DUP1 00000ce5: MLOAD 00000ce6: PUSH1 0xe5 00000ce8: PUSH1 0x02 00000cea: EXP 00000ceb: PUSH3 0x461bcd 00000cef: MUL 00000cf0: DUP2 00000cf1: MSTORE 00000cf2: PUSH1 0x20 00000cf4: PUSH1 0x04 00000cf6: DUP3 00000cf7: ADD 00000cf8: MSTORE 00000cf9: PUSH1 0x10 00000cfb: PUSH1 0x24 00000cfd: DUP3 00000cfe: ADD 00000cff: MSTORE 00000d00: PUSH32 0x5468652067616d65206973206f76657200000000000000000000000000000000 00000d21: PUSH1 0x44 00000d23: DUP3 00000d24: ADD 00000d25: MSTORE 00000d26: SWAP1 00000d27: MLOAD 00000d28: SWAP1 00000d29: DUP2 00000d2a: SWAP1 00000d2b: SUB 00000d2c: PUSH1 0x64 00000d2e: ADD 00000d2f: SWAP1 00000d30: REVERT 00000d31: JUMPDEST 00000d32: PUSH2 0x0d3c 00000d35: PUSH2 0x0a96 00000d38: PUSH2 0x0ef0 00000d3b: JUMP 00000d3c: JUMPDEST 00000d3d: SWAP3 00000d3e: POP 00000d3f: PUSH1 0x00 00000d41: DUP6 00000d42: GT 00000d43: DUP1 00000d44: ISZERO 00000d45: PUSH2 0x0d4e 00000d48: JUMPI 00000d49: POP 00000d4a: PUSH1 0x00 00000d4c: DUP4 00000d4d: GT 00000d4e: JUMPDEST 00000d4f: ISZERO 00000d50: ISZERO 00000d51: PUSH2 0x0d59 00000d54: JUMPI 00000d55: PUSH1 0x00 00000d57: DUP1 00000d58: REVERT 00000d59: JUMPDEST 00000d5a: CALLVALUE 00000d5b: DUP4 00000d5c: EQ 00000d5d: PUSH2 0x0db0 00000d60: JUMPI 00000d61: PUSH1 0x40 00000d63: DUP1 00000d64: MLOAD 00000d65: PUSH1 0xe5 00000d67: PUSH1 0x02 00000d69: EXP 00000d6a: PUSH3 0x461bcd 00000d6e: MUL 00000d6f: DUP2 00000d70: MSTORE 00000d71: PUSH1 0x20 00000d73: PUSH1 0x04 00000d75: DUP3 00000d76: ADD 00000d77: MSTORE 00000d78: PUSH1 0x17 00000d7a: PUSH1 0x24 00000d7c: DUP3 00000d7d: ADD 00000d7e: MSTORE 00000d7f: PUSH32 0x54686520616d6f756e7420697320696e636f7272656374000000000000000000 00000da0: PUSH1 0x44 00000da2: DUP3 00000da3: ADD 00000da4: MSTORE 00000da5: SWAP1 00000da6: MLOAD 00000da7: SWAP1 00000da8: DUP2 00000da9: SWAP1 00000daa: SUB 00000dab: PUSH1 0x64 00000dad: ADD 00000dae: SWAP1 00000daf: REVERT 00000db0: JUMPDEST 00000db1: PUSH1 0x01 00000db3: PUSH1 0xa0 00000db5: PUSH1 0x02 00000db7: EXP 00000db8: SUB 00000db9: DUP5 00000dba: AND 00000dbb: ISZERO 00000dbc: DUP1 00000dbd: ISZERO 00000dbe: SWAP1 00000dbf: PUSH2 0x0dda 00000dc2: JUMPI 00000dc3: POP 00000dc4: CALLER 00000dc5: PUSH1 0x01 00000dc7: PUSH1 0xa0 00000dc9: PUSH1 0x02 00000dcb: EXP 00000dcc: SUB 00000dcd: AND 00000dce: DUP5 00000dcf: PUSH1 0x01 00000dd1: PUSH1 0xa0 00000dd3: PUSH1 0x02 00000dd5: EXP 00000dd6: SUB 00000dd7: AND 00000dd8: EQ 00000dd9: ISZERO 00000dda: JUMPDEST 00000ddb: DUP1 00000ddc: ISZERO 00000ddd: PUSH2 0x0e03 00000de0: JUMPI 00000de1: POP 00000de2: PUSH1 0x01 00000de4: PUSH1 0xa0 00000de6: PUSH1 0x02 00000de8: EXP 00000de9: SUB 00000dea: DUP5 00000deb: AND 00000dec: PUSH1 0x00 00000dee: SWAP1 00000def: DUP2 00000df0: MSTORE 00000df1: PUSH1 0x0b 00000df3: PUSH1 0x20 00000df5: MSTORE 00000df6: PUSH1 0x40 00000df8: SWAP1 00000df9: KECCAK256 00000dfa: SLOAD 00000dfb: PUSH1 0xff 00000dfd: AND 00000dfe: ISZERO 00000dff: ISZERO 00000e00: PUSH1 0x01 00000e02: EQ 00000e03: JUMPDEST 00000e04: ISZERO 00000e05: PUSH2 0x0e8a 00000e08: JUMPI 00000e09: PUSH1 0x01 00000e0b: PUSH1 0xa0 00000e0d: PUSH1 0x02 00000e0f: EXP 00000e10: SUB 00000e11: DUP5 00000e12: AND 00000e13: PUSH1 0x00 00000e15: SWAP1 00000e16: DUP2 00000e17: MSTORE 00000e18: PUSH1 0x0a 00000e1a: PUSH1 0x20 00000e1c: DUP2 00000e1d: SWAP1 00000e1e: MSTORE 00000e1f: PUSH1 0x40 00000e21: SWAP1 00000e22: SWAP2 00000e23: KECCAK256 00000e24: SLOAD 00000e25: PUSH2 0x0e58 00000e28: SWAP2 00000e29: PUSH2 0x0e4c 00000e2c: SWAP1 00000e2d: PUSH1 0x64 00000e2f: SWAP1 00000e30: PUSH2 0x0e40 00000e33: SWAP1 00000e34: DUP9 00000e35: SWAP1 00000e36: PUSH4 0xffffffff 00000e3b: PUSH2 0x1802 00000e3e: AND 00000e3f: JUMP 00000e40: JUMPDEST 00000e41: SWAP1 00000e42: PUSH4 0xffffffff 00000e47: PUSH2 0x1db2 00000e4a: AND 00000e4b: JUMP 00000e4c: JUMPDEST 00000e4d: SWAP1 00000e4e: PUSH4 0xffffffff 00000e53: PUSH2 0x052d 00000e56: AND 00000e57: JUMP 00000e58: JUMPDEST 00000e59: PUSH1 0x01 00000e5b: PUSH1 0xa0 00000e5d: PUSH1 0x02 00000e5f: EXP 00000e60: SUB 00000e61: DUP6 00000e62: AND 00000e63: PUSH1 0x00 00000e65: SWAP1 00000e66: DUP2 00000e67: MSTORE 00000e68: PUSH1 0x0a 00000e6a: PUSH1 0x20 00000e6c: MSTORE 00000e6d: PUSH1 0x40 00000e6f: SWAP1 00000e70: KECCAK256 00000e71: SSTORE 00000e72: PUSH2 0x0e87 00000e75: PUSH1 0x64 00000e77: PUSH2 0x0e40 00000e7a: DUP6 00000e7b: PUSH1 0x5a 00000e7d: PUSH4 0xffffffff 00000e82: PUSH2 0x1802 00000e85: AND 00000e86: JUMP 00000e87: JUMPDEST 00000e88: SWAP3 00000e89: POP 00000e8a: JUMPDEST 00000e8b: PUSH2 0x0b47 00000e8e: DUP6 00000e8f: DUP5 00000e90: PUSH2 0x182d 00000e93: JUMP 00000e94: JUMPDEST 00000e95: PUSH1 0x02 00000e97: PUSH1 0x20 00000e99: DUP2 00000e9a: SWAP1 00000e9b: MSTORE 00000e9c: PUSH1 0x00 00000e9e: SWAP2 00000e9f: DUP3 00000ea0: MSTORE 00000ea1: PUSH1 0x40 00000ea3: SWAP1 00000ea4: SWAP2 00000ea5: KECCAK256 00000ea6: DUP1 00000ea7: SLOAD 00000ea8: PUSH1 0x01 00000eaa: DUP3 00000eab: ADD 00000eac: SLOAD 00000ead: SWAP3 00000eae: DUP3 00000eaf: ADD 00000eb0: SLOAD 00000eb1: PUSH1 0x04 00000eb3: DUP4 00000eb4: ADD 00000eb5: SLOAD 00000eb6: PUSH1 0x05 00000eb8: SWAP1 00000eb9: SWAP4 00000eba: ADD 00000ebb: SLOAD 00000ebc: SWAP2 00000ebd: SWAP4 00000ebe: SWAP3 00000ebf: SWAP1 00000ec0: SWAP2 00000ec1: PUSH1 0x01 00000ec3: PUSH1 0xa0 00000ec5: PUSH1 0x02 00000ec7: EXP 00000ec8: SUB 00000ec9: SWAP1 00000eca: SWAP2 00000ecb: AND 00000ecc: SWAP1 00000ecd: DUP6 00000ece: JUMP 00000ecf: JUMPDEST 00000ed0: PUSH1 0x00 00000ed2: SLOAD 00000ed3: PUSH1 0x01 00000ed5: PUSH1 0xa0 00000ed7: PUSH1 0x02 00000ed9: EXP 00000eda: SUB 00000edb: AND 00000edc: DUP2 00000edd: JUMP 00000ede: JUMPDEST 00000edf: PUSH1 0x0a 00000ee1: PUSH1 0x20 00000ee3: MSTORE 00000ee4: PUSH1 0x00 00000ee6: SWAP1 00000ee7: DUP2 00000ee8: MSTORE 00000ee9: PUSH1 0x40 00000eeb: SWAP1 00000eec: KECCAK256 00000eed: SLOAD 00000eee: DUP2 00000eef: JUMP 00000ef0: JUMPDEST 00000ef1: PUSH1 0x00 00000ef3: DUP1 00000ef4: PUSH1 0x01 00000ef6: PUSH1 0x0e 00000ef8: SLOAD 00000ef9: LT 00000efa: ISZERO 00000efb: DUP1 00000efc: ISZERO 00000efd: PUSH2 0x0f09 00000f00: JUMPI 00000f01: POP 00000f02: PUSH1 0x32 00000f04: PUSH1 0x0e 00000f06: SLOAD 00000f07: GT 00000f08: ISZERO 00000f09: JUMPDEST 00000f0a: ISZERO 00000f0b: ISZERO 00000f0c: PUSH2 0x0f14 00000f0f: JUMPI 00000f10: PUSH1 0x00 00000f12: DUP1 00000f13: REVERT 00000f14: JUMPDEST 00000f15: PUSH1 0x0e 00000f17: SLOAD 00000f18: PUSH2 0x0f28 00000f1b: SWAP1 00000f1c: PUSH1 0x01 00000f1e: PUSH4 0xffffffff 00000f23: PUSH2 0x1de6 00000f26: AND 00000f27: JUMP 00000f28: JUMPDEST 00000f29: SWAP1 00000f2a: POP 00000f2b: PUSH2 0x0f61 00000f2e: PUSH7 0x0aa87bee538000 00000f36: PUSH2 0x0e4c 00000f39: PUSH1 0x19 00000f3b: PUSH2 0x0e40 00000f3e: PUSH7 0x044364c5bb0000 00000f46: PUSH2 0x0f55 00000f49: DUP8 00000f4a: DUP1 00000f4b: PUSH4 0xffffffff 00000f50: PUSH2 0x1802 00000f53: AND 00000f54: JUMP 00000f55: JUMPDEST 00000f56: SWAP1 00000f57: PUSH4 0xffffffff 00000f5c: PUSH2 0x1802 00000f5f: AND 00000f60: JUMP 00000f61: JUMPDEST 00000f62: SWAP2 00000f63: POP 00000f64: JUMPDEST 00000f65: POP 00000f66: SWAP1 00000f67: JUMP 00000f68: JUMPDEST 00000f69: PUSH1 0x04 00000f6b: SLOAD 00000f6c: PUSH1 0x01 00000f6e: PUSH1 0xa0 00000f70: PUSH1 0x02 00000f72: EXP 00000f73: SUB 00000f74: AND 00000f75: DUP2 00000f76: JUMP 00000f77: JUMPDEST 00000f78: PUSH1 0x01 00000f7a: SLOAD 00000f7b: PUSH1 0x00 00000f7d: SWAP1 00000f7e: DUP2 00000f7f: SWAP1 00000f80: CALLER 00000f81: PUSH1 0x01 00000f83: PUSH1 0xa0 00000f85: PUSH1 0x02 00000f87: EXP 00000f88: SUB 00000f89: SWAP1 00000f8a: DUP2 00000f8b: AND 00000f8c: SWAP2 00000f8d: AND 00000f8e: EQ 00000f8f: PUSH2 0x0fe2 00000f92: JUMPI 00000f93: PUSH1 0x40 00000f95: DUP1 00000f96: MLOAD 00000f97: PUSH1 0xe5 00000f99: PUSH1 0x02 00000f9b: EXP 00000f9c: PUSH3 0x461bcd 00000fa0: MUL 00000fa1: DUP2 00000fa2: MSTORE 00000fa3: PUSH1 0x20 00000fa5: PUSH1 0x04 00000fa7: DUP3 00000fa8: ADD 00000fa9: MSTORE 00000faa: PUSH1 0x0c 00000fac: PUSH1 0x24 00000fae: DUP3 00000faf: ADD 00000fb0: MSTORE 00000fb1: PUSH32 0x6f6e6c7920736572766963650000000000000000000000000000000000000000 00000fd2: PUSH1 0x44 00000fd4: DUP3 00000fd5: ADD 00000fd6: MSTORE 00000fd7: SWAP1 00000fd8: MLOAD 00000fd9: SWAP1 00000fda: DUP2 00000fdb: SWAP1 00000fdc: SUB 00000fdd: PUSH1 0x64 00000fdf: ADD 00000fe0: SWAP1 00000fe1: REVERT 00000fe2: JUMPDEST 00000fe3: PUSH1 0x10 00000fe5: SLOAD 00000fe6: PUSH1 0xff 00000fe8: AND 00000fe9: ISZERO 00000fea: PUSH2 0x102b 00000fed: JUMPI 00000fee: PUSH1 0x40 00000ff0: DUP1 00000ff1: MLOAD 00000ff2: PUSH1 0xe5 00000ff4: PUSH1 0x02 00000ff6: EXP 00000ff7: PUSH3 0x461bcd 00000ffb: MUL 00000ffc: DUP2 00000ffd: MSTORE 00000ffe: PUSH1 0x20 00001000: PUSH1 0x04 00001002: DUP3 00001003: ADD 00001004: MSTORE 00001005: PUSH1 0x09 00001007: PUSH1 0x24 00001009: DUP3 0000100a: ADD 0000100b: MSTORE 0000100c: PUSH1 0x00 0000100e: DUP1 0000100f: MLOAD 00001010: PUSH1 0x20 00001012: PUSH2 0x2233 00001015: DUP4 00001016: CODECOPY 00001017: DUP2 00001018: MLOAD 00001019: SWAP2 0000101a: MSTORE 0000101b: PUSH1 0x44 0000101d: DUP3 0000101e: ADD 0000101f: MSTORE 00001020: SWAP1 00001021: MLOAD 00001022: SWAP1 00001023: DUP2 00001024: SWAP1 00001025: SUB 00001026: PUSH1 0x64 00001028: ADD 00001029: SWAP1 0000102a: REVERT 0000102b: JUMPDEST 0000102c: PUSH1 0x01 0000102e: PUSH1 0xa0 00001030: PUSH1 0x02 00001032: EXP 00001033: SUB 00001034: DUP5 00001035: AND 00001036: ISZERO 00001037: ISZERO 00001038: PUSH2 0x1040 0000103b: JUMPI 0000103c: PUSH1 0x00 0000103e: DUP1 0000103f: REVERT 00001040: JUMPDEST 00001041: PUSH1 0x0f 00001043: SLOAD 00001044: PUSH1 0x00 00001046: SWAP1 00001047: DUP2 00001048: MSTORE 00001049: PUSH1 0x03 0000104b: PUSH1 0x20 0000104d: SWAP1 0000104e: DUP2 0000104f: MSTORE 00001050: PUSH1 0x40 00001052: DUP1 00001053: DUP4 00001054: KECCAK256 00001055: PUSH1 0x0e 00001057: SLOAD 00001058: DUP5 00001059: MSTORE 0000105a: SWAP1 0000105b: SWAP2 0000105c: MSTORE 0000105d: SWAP1 0000105e: KECCAK256 0000105f: PUSH1 0x05 00001061: ADD 00001062: SLOAD 00001063: PUSH1 0x01 00001065: PUSH1 0xa0 00001067: PUSH1 0x02 00001069: EXP 0000106a: SUB 0000106b: ADDRESS 0000106c: AND 0000106d: BALANCE 0000106e: GT 0000106f: PUSH2 0x1077 00001072: JUMPI 00001073: PUSH1 0x00 00001075: DUP1 00001076: REVERT 00001077: JUMPDEST 00001078: PUSH1 0x0f 0000107a: SLOAD 0000107b: PUSH1 0x00 0000107d: SWAP1 0000107e: DUP2 0000107f: MSTORE 00001080: PUSH1 0x08 00001082: PUSH1 0x20 00001084: SWAP1 00001085: DUP2 00001086: MSTORE 00001087: PUSH1 0x40 00001089: DUP1 0000108a: DUP4 0000108b: KECCAK256 0000108c: PUSH1 0x0e 0000108e: SLOAD 0000108f: DUP5 00001090: MSTORE 00001091: DUP3 00001092: MSTORE 00001093: DUP1 00001094: DUP4 00001095: KECCAK256 00001096: PUSH1 0x01 00001098: PUSH1 0xa0 0000109a: PUSH1 0x02 0000109c: EXP 0000109d: SUB 0000109e: DUP9 0000109f: AND 000010a0: DUP5 000010a1: MSTORE 000010a2: SWAP1 000010a3: SWAP2 000010a4: MSTORE 000010a5: DUP2 000010a6: KECCAK256 000010a7: PUSH1 0x01 000010a9: DUP2 000010aa: ADD 000010ab: SLOAD 000010ac: SWAP1 000010ad: SWAP4 000010ae: POP 000010af: GT 000010b0: DUP1 000010b1: ISZERO 000010b2: PUSH2 0x10be 000010b5: JUMPI 000010b6: POP 000010b7: DUP2 000010b8: PUSH1 0x01 000010ba: ADD 000010bb: SLOAD 000010bc: DUP4 000010bd: LT 000010be: JUMPDEST 000010bf: ISZERO 000010c0: PUSH2 0x1248 000010c3: JUMPI 000010c4: DUP2 000010c5: SLOAD 000010c6: DUP3 000010c7: SWAP1 000010c8: DUP5 000010c9: SWAP1 000010ca: DUP2 000010cb: LT 000010cc: PUSH2 0x10d1 000010cf: JUMPI 000010d0: INVALID 000010d1: JUMPDEST 000010d2: PUSH1 0x00 000010d4: SWAP2 000010d5: DUP3 000010d6: MSTORE 000010d7: PUSH1 0x20 000010d9: DUP1 000010da: DUP4 000010db: KECCAK256 000010dc: PUSH1 0x02 000010de: SWAP1 000010df: SWAP3 000010e0: MUL 000010e1: SWAP1 000010e2: SWAP2 000010e3: ADD 000010e4: DUP1 000010e5: SLOAD 000010e6: PUSH1 0x0f 000010e8: SLOAD 000010e9: DUP5 000010ea: MSTORE 000010eb: PUSH1 0x03 000010ed: DUP4 000010ee: MSTORE 000010ef: PUSH1 0x40 000010f1: DUP1 000010f2: DUP6 000010f3: KECCAK256 000010f4: PUSH1 0x0e 000010f6: SLOAD 000010f7: DUP7 000010f8: MSTORE 000010f9: SWAP1 000010fa: SWAP4 000010fb: MSTORE 000010fc: SWAP2 000010fd: SWAP1 000010fe: SWAP3 000010ff: KECCAK256 00001100: PUSH1 0x04 00001102: ADD 00001103: SLOAD 00001104: SWAP2 00001105: SWAP3 00001106: POP 00001107: GT 00001108: DUP1 00001109: ISZERO 0000110a: SWAP1 0000110b: PUSH2 0x1139 0000110e: JUMPI 0000110f: POP 00001110: PUSH1 0x01 00001112: DUP2 00001113: ADD 00001114: SLOAD 00001115: PUSH1 0x0f 00001117: SLOAD 00001118: PUSH1 0x00 0000111a: SWAP1 0000111b: DUP2 0000111c: MSTORE 0000111d: PUSH1 0x03 0000111f: PUSH1 0x20 00001121: SWAP1 00001122: DUP2 00001123: MSTORE 00001124: PUSH1 0x40 00001126: DUP1 00001127: DUP4 00001128: KECCAK256 00001129: PUSH1 0x0e 0000112b: SLOAD 0000112c: DUP5 0000112d: MSTORE 0000112e: SWAP1 0000112f: SWAP2 00001130: MSTORE 00001131: SWAP1 00001132: KECCAK256 00001133: PUSH1 0x04 00001135: ADD 00001136: SLOAD 00001137: GT 00001138: ISZERO 00001139: JUMPDEST 0000113a: ISZERO 0000113b: PUSH2 0x1248 0000113e: JUMPI 0000113f: PUSH1 0x0f 00001141: DUP1 00001142: SLOAD 00001143: PUSH1 0x00 00001145: SWAP1 00001146: DUP2 00001147: MSTORE 00001148: PUSH1 0x03 0000114a: PUSH1 0x20 0000114c: DUP2 0000114d: DUP2 0000114e: MSTORE 0000114f: PUSH1 0x40 00001151: DUP1 00001152: DUP5 00001153: KECCAK256 00001154: PUSH1 0x0e 00001156: DUP1 00001157: SLOAD 00001158: DUP7 00001159: MSTORE 0000115a: SWAP1 0000115b: DUP4 0000115c: MSTORE 0000115d: DUP2 0000115e: DUP6 0000115f: KECCAK256 00001160: PUSH1 0x01 00001162: ADD 00001163: DUP1 00001164: SLOAD 00001165: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 0000117a: NOT 0000117b: AND 0000117c: PUSH1 0x01 0000117e: PUSH1 0xa0 00001180: PUSH1 0x02 00001182: EXP 00001183: SUB 00001184: DUP13 00001185: AND 00001186: SWAP1 00001187: DUP2 00001188: OR 00001189: SWAP1 0000118a: SWAP2 0000118b: SSTORE 0000118c: SWAP6 0000118d: SLOAD 0000118e: DUP6 0000118f: MSTORE 00001190: SWAP3 00001191: DUP3 00001192: MSTORE 00001193: DUP1 00001194: DUP5 00001195: KECCAK256 00001196: SWAP3 00001197: SLOAD 00001198: DUP5 00001199: MSTORE 0000119a: SWAP2 0000119b: SWAP1 0000119c: MSTORE 0000119d: DUP1 0000119e: DUP3 0000119f: KECCAK256 000011a0: PUSH1 0x05 000011a2: ADD 000011a3: SLOAD 000011a4: SWAP1 000011a5: MLOAD 000011a6: PUSH2 0x08fc 000011a9: DUP3 000011aa: ISZERO 000011ab: MUL 000011ac: SWAP3 000011ad: DUP2 000011ae: DUP2 000011af: DUP2 000011b0: DUP6 000011b1: DUP9 000011b2: DUP9 000011b3: CALL 000011b4: SWAP4 000011b5: POP 000011b6: POP 000011b7: POP 000011b8: POP 000011b9: ISZERO 000011ba: DUP1 000011bb: ISZERO 000011bc: PUSH2 0x11c9 000011bf: JUMPI 000011c0: RETURNDATASIZE 000011c1: PUSH1 0x00 000011c3: DUP1 000011c4: RETURNDATACOPY 000011c5: RETURNDATASIZE 000011c6: PUSH1 0x00 000011c8: REVERT 000011c9: JUMPDEST 000011ca: POP 000011cb: PUSH1 0x0f 000011cd: SLOAD 000011ce: PUSH1 0x0e 000011d0: SLOAD 000011d1: PUSH1 0x00 000011d3: DUP3 000011d4: DUP2 000011d5: MSTORE 000011d6: PUSH1 0x03 000011d8: PUSH1 0x20 000011da: SWAP1 000011db: DUP2 000011dc: MSTORE 000011dd: PUSH1 0x40 000011df: DUP1 000011e0: DUP4 000011e1: KECCAK256 000011e2: DUP5 000011e3: DUP5 000011e4: MSTORE 000011e5: DUP3 000011e6: MSTORE 000011e7: SWAP2 000011e8: DUP3 000011e9: SWAP1 000011ea: KECCAK256 000011eb: PUSH1 0x05 000011ed: ADD 000011ee: SLOAD 000011ef: DUP3 000011f0: MLOAD 000011f1: SWAP5 000011f2: DUP6 000011f3: MSTORE 000011f4: SWAP1 000011f5: DUP5 000011f6: ADD 000011f7: SWAP3 000011f8: SWAP1 000011f9: SWAP3 000011fa: MSTORE 000011fb: DUP3 000011fc: DUP2 000011fd: ADD 000011fe: SWAP2 000011ff: SWAP1 00001200: SWAP2 00001201: MSTORE 00001202: PUSH1 0x01 00001204: PUSH1 0x60 00001206: DUP4 00001207: ADD 00001208: MSTORE 00001209: MLOAD 0000120a: PUSH1 0x01 0000120c: PUSH1 0xa0 0000120e: PUSH1 0x02 00001210: EXP 00001211: SUB 00001212: DUP7 00001213: AND 00001214: SWAP2 00001215: PUSH32 0xe6147ff2b2d6ab20543fbed039f6682a2a55b0555979bd7ca5979b41f4141cf7 00001236: SWAP2 00001237: SWAP1 00001238: DUP2 00001239: SWAP1 0000123a: SUB 0000123b: PUSH1 0x80 0000123d: ADD 0000123e: SWAP1 0000123f: LOG2 00001240: PUSH2 0x1248 00001243: DUP5 00001244: PUSH2 0x1df8 00001247: JUMP 00001248: JUMPDEST 00001249: POP 0000124a: POP 0000124b: POP 0000124c: POP 0000124d: JUMP 0000124e: JUMPDEST 0000124f: PUSH1 0x00 00001251: SLOAD 00001252: CALLER 00001253: PUSH1 0x01 00001255: PUSH1 0xa0 00001257: PUSH1 0x02 00001259: EXP 0000125a: SUB 0000125b: SWAP1 0000125c: DUP2 0000125d: AND 0000125e: SWAP2 0000125f: AND 00001260: EQ 00001261: PUSH2 0x12a2 00001264: JUMPI 00001265: PUSH1 0x40 00001267: DUP1 00001268: MLOAD 00001269: PUSH1 0xe5 0000126b: PUSH1 0x02 0000126d: EXP 0000126e: PUSH3 0x461bcd 00001272: MUL 00001273: DUP2 00001274: MSTORE 00001275: PUSH1 0x20 00001277: PUSH1 0x04 00001279: DUP3 0000127a: ADD 0000127b: MSTORE 0000127c: PUSH1 0x0a 0000127e: PUSH1 0x24 00001280: DUP3 00001281: ADD 00001282: MSTORE 00001283: PUSH1 0x00 00001285: DUP1 00001286: MLOAD 00001287: PUSH1 0x20 00001289: PUSH2 0x2253 0000128c: DUP4 0000128d: CODECOPY 0000128e: DUP2 0000128f: MLOAD 00001290: SWAP2 00001291: MSTORE 00001292: PUSH1 0x44 00001294: DUP3 00001295: ADD 00001296: MSTORE 00001297: SWAP1 00001298: MLOAD 00001299: SWAP1 0000129a: DUP2 0000129b: SWAP1 0000129c: SUB 0000129d: PUSH1 0x64 0000129f: ADD 000012a0: SWAP1 000012a1: REVERT 000012a2: JUMPDEST 000012a3: PUSH1 0x00 000012a5: DUP1 000012a6: SLOAD 000012a7: PUSH1 0x0d 000012a9: SLOAD 000012aa: PUSH1 0x40 000012ac: MLOAD 000012ad: PUSH1 0x01 000012af: PUSH1 0xa0 000012b1: PUSH1 0x02 000012b3: EXP 000012b4: SUB 000012b5: SWAP1 000012b6: SWAP3 000012b7: AND 000012b8: SWAP3 000012b9: DUP2 000012ba: ISZERO 000012bb: PUSH2 0x08fc 000012be: MUL 000012bf: SWAP3 000012c0: SWAP1 000012c1: DUP2 000012c2: DUP2 000012c3: DUP2 000012c4: DUP6 000012c5: DUP9 000012c6: DUP9 000012c7: CALL 000012c8: SWAP4 000012c9: POP 000012ca: POP 000012cb: POP 000012cc: POP 000012cd: ISZERO 000012ce: DUP1 000012cf: ISZERO 000012d0: PUSH2 0x12dd 000012d3: JUMPI 000012d4: RETURNDATASIZE 000012d5: PUSH1 0x00 000012d7: DUP1 000012d8: RETURNDATACOPY 000012d9: RETURNDATASIZE 000012da: PUSH1 0x00 000012dc: REVERT 000012dd: JUMPDEST 000012de: POP 000012df: PUSH1 0x00 000012e1: DUP1 000012e2: SLOAD 000012e3: PUSH1 0x0d 000012e5: SLOAD 000012e6: PUSH1 0x40 000012e8: DUP1 000012e9: MLOAD 000012ea: SWAP2 000012eb: DUP3 000012ec: MSTORE 000012ed: PUSH1 0x20 000012ef: DUP3 000012f0: ADD 000012f1: SWAP4 000012f2: SWAP1 000012f3: SWAP4 000012f4: MSTORE 000012f5: DUP3 000012f6: MLOAD 000012f7: PUSH1 0x01 000012f9: PUSH1 0xa0 000012fb: PUSH1 0x02 000012fd: EXP 000012fe: SUB 000012ff: SWAP1 00001300: SWAP3 00001301: AND 00001302: SWAP3 00001303: PUSH32 0x3f5274d9edd3b530545223adc84dcf865f2433783bc200984750bd356af57253 00001324: SWAP3 00001325: SWAP2 00001326: DUP3 00001327: SWAP1 00001328: SUB 00001329: ADD 0000132a: SWAP1 0000132b: LOG2 0000132c: PUSH1 0x00 0000132e: PUSH1 0x0d 00001330: SSTORE 00001331: JUMP 00001332: JUMPDEST 00001333: PUSH1 0x10 00001335: SLOAD 00001336: PUSH1 0xff 00001338: AND 00001339: DUP2 0000133a: JUMP 0000133b: JUMPDEST 0000133c: PUSH1 0x00 0000133e: DUP2 0000133f: DUP2 00001340: MSTORE 00001341: PUSH1 0x02 00001343: PUSH1 0x20 00001345: DUP2 00001346: DUP2 00001347: MSTORE 00001348: PUSH1 0x40 0000134a: DUP1 0000134b: DUP5 0000134c: KECCAK256 0000134d: PUSH1 0x01 0000134f: PUSH1 0xa0 00001351: PUSH1 0x02 00001353: EXP 00001354: SUB 00001355: CALLER 00001356: AND 00001357: DUP1 00001358: DUP7 00001359: MSTORE 0000135a: PUSH1 0x03 0000135c: DUP3 0000135d: ADD 0000135e: DUP5 0000135f: MSTORE 00001360: DUP3 00001361: DUP7 00001362: KECCAK256 00001363: SLOAD 00001364: DUP8 00001365: DUP8 00001366: MSTORE 00001367: PUSH1 0x07 00001369: DUP6 0000136a: MSTORE 0000136b: DUP4 0000136c: DUP8 0000136d: KECCAK256 0000136e: SWAP2 0000136f: DUP8 00001370: MSTORE 00001371: SWAP1 00001372: DUP5 00001373: MSTORE 00001374: SWAP2 00001375: DUP6 00001376: KECCAK256 00001377: SLOAD 00001378: DUP7 00001379: DUP7 0000137a: MSTORE 0000137b: SWAP3 0000137c: DUP5 0000137d: SWAP1 0000137e: MSTORE 0000137f: SWAP1 00001380: SWAP3 00001381: ADD 00001382: SLOAD 00001383: PUSH2 0x13a3 00001386: SWAP3 00001387: SWAP2 00001388: PUSH2 0x1397 0000138b: SWAP2 0000138c: SWAP1 0000138d: PUSH4 0xffffffff 00001392: PUSH2 0x1802 00001395: AND 00001396: JUMP 00001397: JUMPDEST 00001398: SWAP1 00001399: PUSH4 0xffffffff 0000139e: PUSH2 0x1de6 000013a1: AND 000013a2: JUMP 000013a3: JUMPDEST 000013a4: SWAP3 000013a5: SWAP2 000013a6: POP 000013a7: POP 000013a8: JUMP 000013a9: JUMPDEST 000013aa: PUSH1 0x00 000013ac: SLOAD 000013ad: CALLER 000013ae: PUSH1 0x01 000013b0: PUSH1 0xa0 000013b2: PUSH1 0x02 000013b4: EXP 000013b5: SUB 000013b6: SWAP1 000013b7: DUP2 000013b8: AND 000013b9: SWAP2 000013ba: AND 000013bb: EQ 000013bc: PUSH2 0x13fd 000013bf: JUMPI 000013c0: PUSH1 0x40 000013c2: DUP1 000013c3: MLOAD 000013c4: PUSH1 0xe5 000013c6: PUSH1 0x02 000013c8: EXP 000013c9: PUSH3 0x461bcd 000013cd: MUL 000013ce: DUP2 000013cf: MSTORE 000013d0: PUSH1 0x20 000013d2: PUSH1 0x04 000013d4: DUP3 000013d5: ADD 000013d6: MSTORE 000013d7: PUSH1 0x0a 000013d9: PUSH1 0x24 000013db: DUP3 000013dc: ADD 000013dd: MSTORE 000013de: PUSH1 0x00 000013e0: DUP1 000013e1: MLOAD 000013e2: PUSH1 0x20 000013e4: PUSH2 0x2253 000013e7: DUP4 000013e8: CODECOPY 000013e9: DUP2 000013ea: MLOAD 000013eb: SWAP2 000013ec: MSTORE 000013ed: PUSH1 0x44 000013ef: DUP3 000013f0: ADD 000013f1: MSTORE 000013f2: SWAP1 000013f3: MLOAD 000013f4: SWAP1 000013f5: DUP2 000013f6: SWAP1 000013f7: SUB 000013f8: PUSH1 0x64 000013fa: ADD 000013fb: SWAP1 000013fc: REVERT 000013fd: JUMPDEST 000013fe: PUSH1 0x01 00001400: DUP1 00001401: SLOAD 00001402: PUSH20 0xffffffffffffffffffffffffffffffffffffffff 00001417: NOT 00001418: AND 00001419: PUSH1 0x01 0000141b: PUSH1 0xa0 0000141d: PUSH1 0x02 0000141f: EXP 00001420: SUB 00001421: SWAP3 00001422: SWAP1 00001423: SWAP3 00001424: AND 00001425: SWAP2 00001426: SWAP1 00001427: SWAP2 00001428: OR 00001429: SWAP1 0000142a: SSTORE 0000142b: JUMP 0000142c: JUMPDEST 0000142d: PUSH1 0x06 0000142f: PUSH1 0x20 00001431: SWAP1 00001432: DUP2 00001433: MSTORE 00001434: PUSH1 0x00 00001436: SWAP4 00001437: DUP5 00001438: MSTORE 00001439: PUSH1 0x40 0000143b: DUP1 0000143c: DUP6 0000143d: KECCAK256 0000143e: DUP3 0000143f: MSTORE 00001440: SWAP3 00001441: DUP5 00001442: MSTORE 00001443: DUP3 00001444: DUP5 00001445: KECCAK256 00001446: SWAP1 00001447: MSTORE 00001448: DUP3 00001449: MSTORE 0000144a: SWAP1 0000144b: KECCAK256 0000144c: SLOAD 0000144d: DUP2 0000144e: JUMP 0000144f: JUMPDEST 00001450: PUSH1 0x07 00001452: PUSH1 0x20 00001454: SWAP1 00001455: DUP2 00001456: MSTORE 00001457: PUSH1 0x00 00001459: SWAP3 0000145a: DUP4 0000145b: MSTORE 0000145c: PUSH1 0x40 0000145e: DUP1 0000145f: DUP5 00001460: KECCAK256 00001461: SWAP1 00001462: SWAP2 00001463: MSTORE 00001464: SWAP1 00001465: DUP3 00001466: MSTORE 00001467: SWAP1 00001468: KECCAK256 00001469: SLOAD 0000146a: DUP2 0000146b: JUMP 0000146c: JUMPDEST 0000146d: PUSH1 0x00 0000146f: SLOAD 00001470: CALLER 00001471: PUSH1 0x01 00001473: PUSH1 0xa0 00001475: PUSH1 0x02 00001477: EXP 00001478: SUB 00001479: SWAP1 0000147a: DUP2 0000147b: AND 0000147c: SWAP2 0000147d: AND 0000147e: EQ 0000147f: PUSH2 0x14c0 00001482: JUMPI 00001483: PUSH1 0x40 00001485: DUP1 00001486: MLOAD 00001487: PUSH1 0xe5 00001489: PUSH1 0x02 0000148b: EXP 0000148c: PUSH3 0x461bcd 00001490: MUL 00001491: DUP2 00001492: MSTORE 00001493: PUSH1 0x20 00001495: PUSH1 0x04 00001497: DUP3 00001498: ADD 00001499: MSTORE 0000149a: PUSH1 0x0a 0000149c: PUSH1 0x24 0000149e: DUP3 0000149f: ADD 000014a0: MSTORE 000014a1: PUSH1 0x00 000014a3: DUP1 000014a4: MLOAD 000014a5: PUSH1 0x20 000014a7: PUSH2 0x2253 000014aa: DUP4 000014ab: CODECOPY 000014ac: DUP2 000014ad: MLOAD 000014ae: SWAP2 000014af: MSTORE 000014b0: PUSH1 0x44 000014b2: DUP3 000014b3: ADD 000014b4: MSTORE 000014b5: SWAP1 000014b6: MLOAD 000014b7: SWAP1 000014b8: DUP2 000014b9: SWAP1 000014ba: SUB 000014bb: PUSH1 0x64 000014bd: ADD 000014be: SWAP1 000014bf: REVERT 000014c0: JUMPDEST 000014c1: PUSH1 0x0c 000014c3: SSTORE 000014c4: JUMP 000014c5: JUMPDEST 000014c6: PUSH1 0x01 000014c8: SLOAD 000014c9: PUSH1 0x01 000014cb: PUSH1 0xa0 000014cd: PUSH1 0x02 000014cf: EXP 000014d0: SUB 000014d1: AND 000014d2: DUP2 000014d3: JUMP 000014d4: JUMPDEST 000014d5: PUSH1 0x00 000014d7: DUP1 000014d8: SLOAD 000014d9: CALLER 000014da: PUSH1 0x01 000014dc: PUSH1 0xa0 000014de: PUSH1 0x02 000014e0: EXP 000014e1: SUB 000014e2: SWAP1 000014e3: DUP2 000014e4: AND 000014e5: SWAP2 000014e6: AND 000014e7: EQ 000014e8: PUSH2 0x1529 000014eb: JUMPI 000014ec: PUSH1 0x40 000014ee: DUP1 000014ef: MLOAD 000014f0: PUSH1 0xe5 000014f2: PUSH1 0x02 000014f4: EXP 000014f5: PUSH3 0x461bcd 000014f9: MUL 000014fa: DUP2 000014fb: MSTORE 000014fc: PUSH1 0x20 000014fe: PUSH1 0x04 00001500: DUP3 00001501: ADD 00001502: MSTORE 00001503: PUSH1 0x0a 00001505: PUSH1 0x24 00001507: DUP3 00001508: ADD 00001509: MSTORE 0000150a: PUSH1 0x00 0000150c: DUP1 0000150d: MLOAD 0000150e: PUSH1 0x20 00001510: PUSH2 0x2253 00001513: DUP4 00001514: CODECOPY 00001515: DUP2 00001516: MLOAD 00001517: SWAP2 00001518: MSTORE 00001519: PUSH1 0x44 0000151b: DUP3 0000151c: ADD 0000151d: MSTORE 0000151e: SWAP1 0000151f: MLOAD 00001520: SWAP1 00001521: DUP2 00001522: SWAP1 00001523: SUB 00001524: PUSH1 0x64 00001526: ADD 00001527: SWAP1 00001528: REVERT 00001529: JUMPDEST 0000152a: POP 0000152b: PUSH1 0x0f 0000152d: DUP1 0000152e: SLOAD 0000152f: PUSH1 0x00 00001531: SWAP1 00001532: DUP2 00001533: MSTORE 00001534: PUSH1 0x03 00001536: PUSH1 0x20 00001538: DUP2 00001539: DUP2 0000153a: MSTORE 0000153b: PUSH1 0x40 0000153d: DUP1 0000153e: DUP5 0000153f: KECCAK256 00001540: PUSH1 0x0e 00001542: DUP1 00001543: SLOAD 00001544: DUP7 00001545: MSTORE 00001546: SWAP1 00001547: DUP4 00001548: MSTORE 00001549: DUP2 0000154a: DUP6 0000154b: KECCAK256 0000154c: TIMESTAMP 0000154d: PUSH1 0x02 0000154f: SWAP1 00001550: SWAP2 00001551: ADD 00001552: DUP2 00001553: SWAP1 00001554: SSTORE 00001555: SWAP6 00001556: SLOAD 00001557: DUP6 00001558: MSTORE 00001559: DUP4 0000155a: DUP4 0000155b: MSTORE 0000155c: DUP2 0000155d: DUP6 0000155e: KECCAK256 0000155f: SWAP1 00001560: SLOAD 00001561: DUP6 00001562: MSTORE 00001563: SWAP1 00001564: SWAP2 00001565: MSTORE 00001566: SWAP1 00001567: SWAP2 00001568: KECCAK256 00001569: PUSH2 0xa1b8 0000156c: SWAP1 0000156d: SWAP3 0000156e: ADD 0000156f: SWAP2 00001570: ADD 00001571: SSTORE 00001572: JUMP 00001573: JUMPDEST 00001574: PUSH1 0x05 00001576: SLOAD 00001577: PUSH1 0x01 00001579: PUSH1 0xa0 0000157b: PUSH1 0x02 0000157d: EXP 0000157e: SUB 0000157f: AND 00001580: DUP2 00001581: JUMP 00001582: JUMPDEST 00001583: PUSH1 0x0b 00001585: PUSH1 0x20 00001587: MSTORE 00001588: PUSH1 0x00 0000158a: SWAP1 0000158b: DUP2 0000158c: MSTORE 0000158d: PUSH1 0x40 0000158f: SWAP1 00001590: KECCAK256 00001591: SLOAD 00001592: PUSH1 0xff 00001594: AND 00001595: DUP2 00001596: JUMP 00001597: JUMPDEST 00001598: PUSH1 0x0c 0000159a: SLOAD 0000159b: CALLVALUE 0000159c: EQ 0000159d: PUSH2 0x15a5 000015a0: JUMPI 000015a1: PUSH1 0x00 000015a3: DUP1 000015a4: REVERT 000015a5: JUMPDEST 000015a6: PUSH1 0x01 000015a8: PUSH1 0xa0 000015aa: PUSH1 0x02 000015ac: EXP 000015ad: SUB 000015ae: CALLER 000015af: AND 000015b0: PUSH1 0x00 000015b2: SWAP1 000015b3: DUP2 000015b4: MSTORE 000015b5: PUSH1 0x0b 000015b7: PUSH1 0x20 000015b9: MSTORE 000015ba: PUSH1 0x40 000015bc: SWAP1 000015bd: KECCAK256 000015be: SLOAD 000015bf: PUSH1 0xff 000015c1: AND 000015c2: ISZERO 000015c3: PUSH2 0x15cb 000015c6: JUMPI 000015c7: PUSH1 0x00 000015c9: DUP1 000015ca: REVERT 000015cb: JUMPDEST 000015cc: PUSH1 0x0d 000015ce: SLOAD 000015cf: PUSH2 0x15de 000015d2: SWAP1 000015d3: CALLVALUE 000015d4: PUSH4 0xffffffff 000015d9: PUSH2 0x052d 000015dc: AND 000015dd: JUMP 000015de: JUMPDEST 000015df: PUSH1 0x0d 000015e1: SSTORE 000015e2: PUSH1 0x40 000015e4: DUP1 000015e5: MLOAD 000015e6: PUSH1 0x01 000015e8: DUP2 000015e9: MSTORE 000015ea: SWAP1 000015eb: MLOAD 000015ec: PUSH1 0x01 000015ee: PUSH1 0xa0 000015f0: PUSH1 0x02 000015f2: EXP 000015f3: SUB 000015f4: CALLER 000015f5: AND 000015f6: SWAP2 000015f7: PUSH32 0xef1b08add0ca68a93a9ed0bdfed3d06b0079476ff4f202079009af1489c8929f 00001618: SWAP2 00001619: SWAP1 0000161a: DUP2 0000161b: SWAP1 0000161c: SUB 0000161d: PUSH1 0x20 0000161f: ADD 00001620: SWAP1 00001621: LOG2 00001622: PUSH1 0x01 00001624: PUSH1 0xa0 00001626: PUSH1 0x02 00001628: EXP 00001629: SUB 0000162a: CALLER 0000162b: AND 0000162c: PUSH1 0x00 0000162e: SWAP1 0000162f: DUP2 00001630: MSTORE 00001631: PUSH1 0x0b 00001633: PUSH1 0x20 00001635: MSTORE 00001636: PUSH1 0x40 00001638: SWAP1 00001639: KECCAK256 0000163a: DUP1 0000163b: SLOAD 0000163c: PUSH1 0xff 0000163e: NOT 0000163f: AND 00001640: PUSH1 0x01 00001642: OR 00001643: SWAP1 00001644: SSTORE 00001645: JUMP 00001646: JUMPDEST 00001647: PUSH7 0x0aa87bee538000 0000164f: DUP2 00001650: JUMP 00001651: JUMPDEST 00001652: PUSH1 0x08 00001654: PUSH1 0x20 00001656: SWAP1 00001657: DUP2 00001658: MSTORE 00001659: PUSH1 0x00 0000165b: SWAP4 0000165c: DUP5 0000165d: MSTORE 0000165e: PUSH1 0x40 00001660: DUP1 00001661: DUP6 00001662: KECCAK256 00001663: DUP3 00001664: MSTORE 00001665: SWAP3 00001666: DUP5 00001667: MSTORE 00001668: DUP3 00001669: DUP5 0000166a: KECCAK256 0000166b: SWAP1 0000166c: MSTORE 0000166d: DUP3 0000166e: MSTORE 0000166f: SWAP1 00001670: KECCAK256 00001671: PUSH1 0x01 00001673: ADD 00001674: SLOAD 00001675: DUP2 00001676: JUMP 00001677: JUMPDEST 00001678: PUSH1 0x00 0000167a: DUP1 0000167b: PUSH2 0x17e8 0000167e: NUMBER 0000167f: PUSH2 0x0e4c 00001682: TIMESTAMP 00001683: CALLER 00001684: PUSH1 0x40 00001686: MLOAD 00001687: PUSH1 0x20 00001689: ADD 0000168a: DUP1 0000168b: DUP3 0000168c: PUSH1 0x01 0000168e: PUSH1 0xa0 00001690: PUSH1 0x02 00001692: EXP 00001693: SUB 00001694: AND 00001695: PUSH1 0x01 00001697: PUSH1 0xa0 00001699: PUSH1 0x02 0000169b: EXP 0000169c: SUB 0000169d: AND 0000169e: PUSH13 0x01000000000000000000000000 000016ac: MUL 000016ad: DUP2 000016ae: MSTORE 000016af: PUSH1 0x14 000016b1: ADD 000016b2: SWAP2 000016b3: POP 000016b4: POP 000016b5: PUSH1 0x40 000016b7: MLOAD 000016b8: PUSH1 0x20 000016ba: DUP2 000016bb: DUP4 000016bc: SUB 000016bd: SUB 000016be: DUP2 000016bf: MSTORE 000016c0: SWAP1 000016c1: PUSH1 0x40 000016c3: MSTORE 000016c4: PUSH1 0x40 000016c6: MLOAD 000016c7: DUP1 000016c8: DUP3 000016c9: DUP1 000016ca: MLOAD 000016cb: SWAP1 000016cc: PUSH1 0x20 000016ce: ADD 000016cf: SWAP1 000016d0: DUP1 000016d1: DUP4 000016d2: DUP4 000016d3: JUMPDEST 000016d4: PUSH1 0x20 000016d6: DUP4 000016d7: LT 000016d8: PUSH2 0x16f2 000016db: JUMPI 000016dc: DUP1 000016dd: MLOAD 000016de: DUP3 000016df: MSTORE 000016e0: PUSH1 0x1f 000016e2: NOT 000016e3: SWAP1 000016e4: SWAP3 000016e5: ADD 000016e6: SWAP2 000016e7: PUSH1 0x20 000016e9: SWAP2 000016ea: DUP3 000016eb: ADD 000016ec: SWAP2 000016ed: ADD 000016ee: PUSH2 0x16d3 000016f1: JUMP 000016f2: JUMPDEST 000016f3: MLOAD 000016f4: DUP2 000016f5: MLOAD 000016f6: PUSH1 0x20 000016f8: SWAP4 000016f9: SWAP1 000016fa: SWAP4 000016fb: SUB 000016fc: PUSH2 0x0100 000016ff: EXP 00001700: PUSH1 0x00 00001702: NOT 00001703: ADD 00001704: DUP1 00001705: NOT 00001706: SWAP1 00001707: SWAP2 00001708: AND 00001709: SWAP3 0000170a: AND 0000170b: SWAP2 0000170c: SWAP1 0000170d: SWAP2 0000170e: OR 0000170f: SWAP1 00001710: MSTORE 00001711: PUSH1 0x40 00001713: MLOAD 00001714: SWAP3 00001715: ADD 00001716: DUP3 00001717: SWAP1 00001718: SUB 00001719: SWAP1 0000171a: SWAP2 0000171b: KECCAK256 0000171c: SWAP3 0000171d: POP 0000171e: POP 0000171f: POP 00001720: DUP2 00001721: ISZERO 00001722: ISZERO 00001723: PUSH2 0x1728 00001726: JUMPI 00001727: INVALID 00001728: JUMPDEST 00001729: DIV 0000172a: PUSH2 0x0e4c 0000172d: GASLIMIT 0000172e: PUSH2 0x0e4c 00001731: TIMESTAMP 00001732: COINBASE 00001733: PUSH1 0x40 00001735: MLOAD 00001736: PUSH1 0x20 00001738: ADD 00001739: DUP1 0000173a: DUP3 0000173b: PUSH1 0x01 0000173d: PUSH1 0xa0 0000173f: PUSH1 0x02 00001741: EXP 00001742: SUB 00001743: AND 00001744: PUSH1 0x01 00001746: PUSH1 0xa0 00001748: PUSH1 0x02 0000174a: EXP 0000174b: SUB 0000174c: AND 0000174d: PUSH13 0x01000000000000000000000000 0000175b: MUL 0000175c: DUP2 0000175d: MSTORE 0000175e: PUSH1 0x14 00001760: ADD 00001761: SWAP2 00001762: POP 00001763: POP 00001764: PUSH1 0x40 00001766: MLOAD 00001767: PUSH1 0x20 00001769: DUP2 0000176a: DUP4 0000176b: SUB 0000176c: SUB 0000176d: DUP2 0000176e: MSTORE 0000176f: SWAP1 00001770: PUSH1 0x40 00001772: MSTORE 00001773: PUSH1 0x40 00001775: MLOAD 00001776: DUP1 00001777: DUP3 00001778: DUP1 00001779: MLOAD 0000177a: SWAP1 0000177b: PUSH1 0x20 0000177d: ADD 0000177e: SWAP1 0000177f: DUP1 00001780: DUP4 00001781: DUP4 00001782: JUMPDEST 00001783: PUSH1 0x20 00001785: DUP4 00001786: LT 00001787: PUSH2 0x17a1 0000178a: JUMPI 0000178b: DUP1 0000178c: MLOAD 0000178d: DUP3 0000178e: MSTORE 0000178f: PUSH1 0x1f 00001791: NOT 00001792: SWAP1 00001793: SWAP3 00001794: ADD 00001795: SWAP2 00001796: PUSH1 0x20 00001798: SWAP2 00001799: DUP3 0000179a: ADD 0000179b: SWAP2 0000179c: ADD 0000179d: PUSH2 0x1782 000017a0: JUMP 000017a1: JUMPDEST 000017a2: MLOAD 000017a3: DUP2 000017a4: MLOAD 000017a5: PUSH1 0x20 000017a7: SWAP4 000017a8: SWAP1 000017a9: SWAP4 000017aa: SUB 000017ab: PUSH2 0x0100 000017ae: EXP 000017af: PUSH1 0x00 000017b1: NOT 000017b2: ADD 000017b3: DUP1 000017b4: NOT 000017b5: SWAP1 000017b6: SWAP2 000017b7: AND 000017b8: SWAP3 000017b9: AND 000017ba: SWAP2 000017bb: SWAP1 000017bc: SWAP2 000017bd: OR 000017be: SWAP1 000017bf: MSTORE 000017c0: PUSH1 0x40 000017c2: MLOAD 000017c3: SWAP3 000017c4: ADD 000017c5: DUP3 000017c6: SWAP1 000017c7: SUB 000017c8: SWAP1 000017c9: SWAP2 000017ca: KECCAK256 000017cb: SWAP3 000017cc: POP 000017cd: POP 000017ce: POP 000017cf: DUP2 000017d0: ISZERO 000017d1: ISZERO 000017d2: PUSH2 0x17d7 000017d5: JUMPI 000017d6: INVALID 000017d7: JUMPDEST 000017d8: DIV 000017d9: PUSH2 0x0e4c 000017dc: TIMESTAMP 000017dd: DIFFICULTY 000017de: PUSH4 0xffffffff 000017e3: PUSH2 0x052d 000017e6: AND 000017e7: JUMP 000017e8: JUMPDEST 000017e9: PUSH1 0x40 000017eb: DUP1 000017ec: MLOAD 000017ed: SWAP2 000017ee: DUP3 000017ef: MSTORE 000017f0: MLOAD 000017f1: SWAP1 000017f2: DUP2 000017f3: SWAP1 000017f4: SUB 000017f5: PUSH1 0x20 000017f7: ADD 000017f8: SWAP1 000017f9: KECCAK256 000017fa: SWAP2 000017fb: POP 000017fc: DUP2 000017fd: SWAP1 000017fe: POP 000017ff: POP 00001800: SWAP1 00001801: JUMP 00001802: JUMPDEST 00001803: PUSH1 0x00 00001805: DUP1 00001806: DUP4 00001807: ISZERO 00001808: ISZERO 00001809: PUSH2 0x1815 0000180c: JUMPI 0000180d: PUSH1 0x00 0000180f: SWAP2 00001810: POP 00001811: PUSH2 0x0540 00001814: JUMP 00001815: JUMPDEST 00001816: POP 00001817: DUP3 00001818: DUP3 00001819: MUL 0000181a: DUP3 0000181b: DUP5 0000181c: DUP3 0000181d: DUP2 0000181e: ISZERO 0000181f: ISZERO 00001820: PUSH2 0x1825 00001823: JUMPI 00001824: INVALID 00001825: JUMPDEST 00001826: DIV 00001827: EQ 00001828: PUSH2 0x053c 0000182b: JUMPI 0000182c: INVALID 0000182d: JUMPDEST 0000182e: PUSH1 0x10 00001830: SLOAD 00001831: PUSH1 0x00 00001833: SWAP1 00001834: DUP2 00001835: SWAP1 00001836: DUP2 00001837: SWAP1 00001838: PUSH1 0xff 0000183a: AND 0000183b: ISZERO 0000183c: PUSH2 0x187d 0000183f: JUMPI 00001840: PUSH1 0x40 00001842: DUP1 00001843: MLOAD 00001844: PUSH1 0xe5 00001846: PUSH1 0x02 00001848: EXP 00001849: PUSH3 0x461bcd 0000184d: MUL 0000184e: DUP2 0000184f: MSTORE 00001850: PUSH1 0x20 00001852: PUSH1 0x04 00001854: DUP3 00001855: ADD 00001856: MSTORE 00001857: PUSH1 0x09 00001859: PUSH1 0x24 0000185b: DUP3 0000185c: ADD 0000185d: MSTORE 0000185e: PUSH1 0x00 00001860: DUP1 00001861: MLOAD 00001862: PUSH1 0x20 00001864: PUSH2 0x2233 00001867: DUP4 00001868: CODECOPY 00001869: DUP2 0000186a: MLOAD 0000186b: SWAP2 0000186c: MSTORE 0000186d: PUSH1 0x44 0000186f: DUP3 00001870: ADD 00001871: MSTORE 00001872: SWAP1 00001873: MLOAD 00001874: SWAP1 00001875: DUP2 00001876: SWAP1 00001877: SUB 00001878: PUSH1 0x64 0000187a: ADD 0000187b: SWAP1 0000187c: REVERT 0000187d: JUMPDEST 0000187e: PUSH1 0x0f 00001880: SLOAD 00001881: PUSH1 0x00 00001883: SWAP1 00001884: DUP2 00001885: MSTORE 00001886: PUSH1 0x07 00001888: PUSH1 0x20 0000188a: SWAP1 0000188b: DUP2 0000188c: MSTORE 0000188d: PUSH1 0x40 0000188f: DUP1 00001890: DUP4 00001891: KECCAK256 00001892: PUSH1 0x01 00001894: PUSH1 0xa0 00001896: PUSH1 0x02 00001898: EXP 00001899: SUB 0000189a: CALLER 0000189b: AND 0000189c: DUP5 0000189d: MSTORE 0000189e: SWAP1 0000189f: SWAP2 000018a0: MSTORE 000018a1: SWAP1 000018a2: KECCAK256 000018a3: SLOAD 000018a4: PUSH2 0x18b3 000018a7: SWAP1 000018a8: DUP7 000018a9: PUSH4 0xffffffff 000018ae: PUSH2 0x052d 000018b1: AND 000018b2: JUMP 000018b3: JUMPDEST 000018b4: PUSH1 0x0f 000018b6: DUP1 000018b7: SLOAD 000018b8: PUSH1 0x00 000018ba: SWAP1 000018bb: DUP2 000018bc: MSTORE 000018bd: PUSH1 0x07 000018bf: PUSH1 0x20 000018c1: SWAP1 000018c2: DUP2 000018c3: MSTORE 000018c4: PUSH1 0x40 000018c6: DUP1 000018c7: DUP4 000018c8: KECCAK256 000018c9: PUSH1 0x01 000018cb: PUSH1 0xa0 000018cd: PUSH1 0x02 000018cf: EXP 000018d0: SUB 000018d1: CALLER 000018d2: AND 000018d3: DUP1 000018d4: DUP6 000018d5: MSTORE 000018d6: SWAP1 000018d7: DUP4 000018d8: MSTORE 000018d9: DUP2 000018da: DUP5 000018db: KECCAK256 000018dc: SWAP6 000018dd: SWAP1 000018de: SWAP6 000018df: SSTORE 000018e0: SWAP3 000018e1: SLOAD 000018e2: DUP3 000018e3: MSTORE 000018e4: PUSH1 0x06 000018e6: DUP2 000018e7: MSTORE 000018e8: DUP3 000018e9: DUP3 000018ea: KECCAK256 000018eb: PUSH1 0x0e 000018ed: SLOAD 000018ee: DUP4 000018ef: MSTORE 000018f0: DUP2 000018f1: MSTORE 000018f2: DUP3 000018f3: DUP3 000018f4: KECCAK256 000018f5: SWAP4 000018f6: DUP3 000018f7: MSTORE 000018f8: SWAP3 000018f9: SWAP1 000018fa: SWAP3 000018fb: MSTORE 000018fc: SWAP1 000018fd: KECCAK256 000018fe: SLOAD 000018ff: PUSH2 0x190e 00001902: SWAP1 00001903: DUP7 00001904: PUSH4 0xffffffff 00001909: PUSH2 0x052d 0000190c: AND 0000190d: JUMP 0000190e: JUMPDEST 0000190f: PUSH1 0x0f 00001911: DUP1 00001912: SLOAD 00001913: PUSH1 0x00 00001915: SWAP1 00001916: DUP2 00001917: MSTORE 00001918: PUSH1 0x06 0000191a: PUSH1 0x20 0000191c: SWAP1 0000191d: DUP2 0000191e: MSTORE 0000191f: PUSH1 0x40 00001921: DUP1 00001922: DUP4 00001923: KECCAK256 00001924: PUSH1 0x0e 00001926: DUP1 00001927: SLOAD 00001928: DUP6 00001929: MSTORE 0000192a: SWAP1 0000192b: DUP4 0000192c: MSTORE 0000192d: DUP2 0000192e: DUP5 0000192f: KECCAK256 00001930: PUSH1 0x01 00001932: PUSH1 0xa0 00001934: PUSH1 0x02 00001936: EXP 00001937: SUB 00001938: CALLER 00001939: AND 0000193a: DUP1 0000193b: DUP7 0000193c: MSTORE 0000193d: SWAP1 0000193e: DUP5 0000193f: MSTORE 00001940: DUP3 00001941: DUP6 00001942: KECCAK256 00001943: SWAP7 00001944: SWAP1 00001945: SWAP7 00001946: SSTORE 00001947: SWAP4 00001948: SLOAD 00001949: DUP4 0000194a: MSTORE 0000194b: PUSH1 0x08 0000194d: DUP3 0000194e: MSTORE 0000194f: DUP1 00001950: DUP4 00001951: KECCAK256 00001952: SWAP4 00001953: SLOAD 00001954: DUP4 00001955: MSTORE 00001956: SWAP3 00001957: DUP2 00001958: MSTORE 00001959: DUP3 0000195a: DUP3 0000195b: KECCAK256 0000195c: SWAP4 0000195d: DUP3 0000195e: MSTORE 0000195f: SWAP3 00001960: SWAP1 00001961: SWAP3 00001962: MSTORE 00001963: SWAP1 00001964: KECCAK256 00001965: DUP1 00001966: SLOAD 00001967: PUSH1 0x01 00001969: DUP3 0000196a: ADD 0000196b: SLOAD 0000196c: SWAP2 0000196d: SWAP5 0000196e: POP 0000196f: EQ 00001970: ISZERO 00001971: PUSH2 0x1985 00001974: JUMPI 00001975: DUP3 00001976: SLOAD 00001977: PUSH1 0x01 00001979: ADD 0000197a: PUSH2 0x1983 0000197d: DUP5 0000197e: DUP3 0000197f: PUSH2 0x21de 00001982: JUMP 00001983: JUMPDEST 00001984: POP 00001985: JUMPDEST 00001986: PUSH1 0x40 00001988: DUP1 00001989: MLOAD 0000198a: DUP1 0000198b: DUP3 0000198c: ADD 0000198d: SWAP1 0000198e: SWAP2 0000198f: MSTORE 00001990: PUSH1 0x09 00001992: SLOAD 00001993: DUP1 00001994: DUP3 00001995: MSTORE 00001996: DUP7 00001997: ADD 00001998: PUSH1 0x00 0000199a: NOT 0000199b: ADD 0000199c: PUSH1 0x20 0000199e: DUP3 0000199f: ADD 000019a0: MSTORE 000019a1: PUSH1 0x01 000019a3: DUP5 000019a4: ADD 000019a5: SLOAD 000019a6: DUP5 000019a7: SLOAD 000019a8: DUP6 000019a9: SWAP2 000019aa: SWAP1 000019ab: DUP2 000019ac: LT 000019ad: PUSH2 0x19b2 000019b0: JUMPI 000019b1: INVALID 000019b2: JUMPDEST 000019b3: PUSH1 0x00 000019b5: SWAP2 000019b6: DUP3 000019b7: MSTORE 000019b8: PUSH1 0x20 000019ba: SWAP2 000019bb: DUP3 000019bc: SWAP1 000019bd: KECCAK256 000019be: DUP4 000019bf: MLOAD 000019c0: PUSH1 0x02 000019c2: SWAP1 000019c3: SWAP3 000019c4: MUL 000019c5: ADD 000019c6: SWAP1 000019c7: DUP2 000019c8: SSTORE 000019c9: SWAP2 000019ca: DUP2 000019cb: ADD 000019cc: MLOAD 000019cd: PUSH1 0x01 000019cf: SWAP3 000019d0: DUP4 000019d1: ADD 000019d2: SSTORE 000019d3: DUP5 000019d4: DUP3 000019d5: ADD 000019d6: DUP1 000019d7: SLOAD 000019d8: SWAP1 000019d9: SWAP3 000019da: ADD 000019db: SWAP2 000019dc: DUP3 000019dd: SWAP1 000019de: SSTORE 000019df: PUSH1 0x0f 000019e1: SLOAD 000019e2: PUSH1 0x0e 000019e4: SLOAD 000019e5: PUSH1 0x09 000019e7: SLOAD 000019e8: PUSH1 0x40 000019ea: DUP1 000019eb: MLOAD 000019ec: DUP12 000019ed: DUP2 000019ee: MSTORE 000019ef: CALLVALUE 000019f0: SWAP6 000019f1: DUP2 000019f2: ADD 000019f3: SWAP6 000019f4: SWAP1 000019f5: SWAP6 000019f6: MSTORE 000019f7: DUP5 000019f8: DUP2 000019f9: ADD 000019fa: SWAP4 000019fb: SWAP1 000019fc: SWAP4 000019fd: MSTORE 000019fe: PUSH1 0x60 00001a00: DUP5 00001a01: ADD 00001a02: SWAP2 00001a03: SWAP1 00001a04: SWAP2 00001a05: MSTORE 00001a06: PUSH1 0x80 00001a08: DUP4 00001a09: ADD 00001a0a: DUP2 00001a0b: SWAP1 00001a0c: MSTORE 00001a0d: DUP9 00001a0e: ADD 00001a0f: PUSH1 0x00 00001a11: NOT 00001a12: ADD 00001a13: PUSH1 0xa0 00001a15: DUP4 00001a16: ADD 00001a17: MSTORE 00001a18: PUSH1 0xc0 00001a1a: DUP3 00001a1b: ADD 00001a1c: SWAP3 00001a1d: SWAP1 00001a1e: SWAP3 00001a1f: MSTORE 00001a20: SWAP1 00001a21: MLOAD 00001a22: PUSH1 0x01 00001a24: PUSH1 0xa0 00001a26: PUSH1 0x02 00001a28: EXP 00001a29: SUB 00001a2a: CALLER 00001a2b: AND 00001a2c: SWAP2 00001a2d: PUSH32 0x7ce6d920f1a28c7a278713a904453cd148edc5503b74275fcba433a52bc3bc51 00001a4e: SWAP2 00001a4f: SWAP1 00001a50: DUP2 00001a51: SWAP1 00001a52: SUB 00001a53: PUSH1 0xe0 00001a55: ADD 00001a56: SWAP1 00001a57: LOG2 00001a58: PUSH1 0x09 00001a5a: SLOAD 00001a5b: PUSH2 0x1a6a 00001a5e: SWAP1 00001a5f: DUP7 00001a60: PUSH4 0xffffffff 00001a65: PUSH2 0x052d 00001a68: AND 00001a69: JUMP 00001a6a: JUMPDEST 00001a6b: PUSH1 0x09 00001a6d: SSTORE 00001a6e: PUSH2 0x1a83 00001a71: PUSH1 0x64 00001a73: PUSH2 0x0e40 00001a76: DUP7 00001a77: PUSH1 0x28 00001a79: PUSH4 0xffffffff 00001a7e: PUSH2 0x1802 00001a81: AND 00001a82: JUMP 00001a83: JUMPDEST 00001a84: PUSH1 0x0f 00001a86: SLOAD 00001a87: PUSH1 0x00 00001a89: SWAP1 00001a8a: DUP2 00001a8b: MSTORE 00001a8c: PUSH1 0x02 00001a8e: PUSH1 0x20 00001a90: MSTORE 00001a91: PUSH1 0x40 00001a93: DUP2 00001a94: KECCAK256 00001a95: SLOAD 00001a96: SWAP2 00001a97: SWAP4 00001a98: POP 00001a99: LT 00001a9a: ISZERO 00001a9b: PUSH2 0x1b53 00001a9e: JUMPI 00001a9f: PUSH1 0x0f 00001aa1: SLOAD 00001aa2: PUSH1 0x00 00001aa4: SWAP1 00001aa5: DUP2 00001aa6: MSTORE 00001aa7: PUSH1 0x02 00001aa9: PUSH1 0x20 00001aab: DUP2 00001aac: SWAP1 00001aad: MSTORE 00001aae: PUSH1 0x40 00001ab0: SWAP1 00001ab1: SWAP2 00001ab2: KECCAK256 00001ab3: SWAP1 00001ab4: DUP2 00001ab5: ADD 00001ab6: SLOAD 00001ab7: SWAP1 00001ab8: SLOAD 00001ab9: PUSH2 0x1ace 00001abc: SWAP2 00001abd: SWAP1 00001abe: PUSH2 0x0e4c 00001ac1: SWAP1 00001ac2: DUP6 00001ac3: SWAP1 00001ac4: PUSH4 0xffffffff 00001ac9: PUSH2 0x1db2 00001acc: AND 00001acd: JUMP 00001ace: JUMPDEST 00001acf: PUSH1 0x0f 00001ad1: DUP1 00001ad2: SLOAD 00001ad3: PUSH1 0x00 00001ad5: SWAP1 00001ad6: DUP2 00001ad7: MSTORE 00001ad8: PUSH1 0x02 00001ada: PUSH1 0x20 00001adc: DUP2 00001add: DUP2 00001ade: MSTORE 00001adf: PUSH1 0x40 00001ae1: DUP1 00001ae2: DUP5 00001ae3: KECCAK256 00001ae4: DUP4 00001ae5: ADD 00001ae6: SWAP6 00001ae7: SWAP1 00001ae8: SWAP6 00001ae9: SSTORE 00001aea: SWAP3 00001aeb: SLOAD 00001aec: DUP1 00001aed: DUP4 00001aee: MSTORE 00001aef: DUP5 00001af0: DUP4 00001af1: KECCAK256 00001af2: PUSH1 0x01 00001af4: PUSH1 0xa0 00001af6: PUSH1 0x02 00001af8: EXP 00001af9: SUB 00001afa: CALLER 00001afb: AND 00001afc: DUP5 00001afd: MSTORE 00001afe: PUSH1 0x03 00001b00: DUP2 00001b01: ADD 00001b02: DUP6 00001b03: MSTORE 00001b04: SWAP5 00001b05: DUP4 00001b06: KECCAK256 00001b07: SLOAD 00001b08: SWAP3 00001b09: MSTORE 00001b0a: SWAP2 00001b0b: DUP3 00001b0c: SWAP1 00001b0d: MSTORE 00001b0e: SWAP2 00001b0f: ADD 00001b10: SLOAD 00001b11: PUSH2 0x1b25 00001b14: SWAP2 00001b15: SWAP1 00001b16: PUSH2 0x0e4c 00001b19: SWAP1 00001b1a: DUP9 00001b1b: PUSH4 0xffffffff 00001b20: PUSH2 0x1802 00001b23: AND 00001b24: JUMP 00001b25: JUMPDEST 00001b26: PUSH1 0x0f 00001b28: SLOAD 00001b29: PUSH1 0x00 00001b2b: SWAP1 00001b2c: DUP2 00001b2d: MSTORE 00001b2e: PUSH1 0x02 00001b30: PUSH1 0x20 00001b32: SWAP1 00001b33: DUP2 00001b34: MSTORE 00001b35: PUSH1 0x40 00001b37: DUP1 00001b38: DUP4 00001b39: KECCAK256 00001b3a: PUSH1 0x01 00001b3c: PUSH1 0xa0 00001b3e: PUSH1 0x02 00001b40: EXP 00001b41: SUB 00001b42: CALLER 00001b43: AND 00001b44: DUP5 00001b45: MSTORE 00001b46: PUSH1 0x03 00001b48: ADD 00001b49: SWAP1 00001b4a: SWAP2 00001b4b: MSTORE 00001b4c: SWAP1 00001b4d: KECCAK256 00001b4e: SSTORE 00001b4f: PUSH2 0x1b6a 00001b52: JUMP 00001b53: JUMPDEST 00001b54: PUSH1 0x0d 00001b56: SLOAD 00001b57: PUSH2 0x1b66 00001b5a: SWAP1 00001b5b: DUP4 00001b5c: PUSH4 0xffffffff 00001b61: PUSH2 0x052d 00001b64: AND 00001b65: JUMP 00001b66: JUMPDEST 00001b67: PUSH1 0x0d 00001b69: SSTORE 00001b6a: JUMPDEST 00001b6b: PUSH1 0x0f 00001b6d: SLOAD 00001b6e: PUSH1 0x00 00001b70: SWAP1 00001b71: DUP2 00001b72: MSTORE 00001b73: PUSH1 0x02 00001b75: PUSH1 0x20 00001b77: MSTORE 00001b78: PUSH1 0x40 00001b7a: SWAP1 00001b7b: KECCAK256 00001b7c: PUSH1 0x01 00001b7e: ADD 00001b7f: SLOAD 00001b80: PUSH2 0x1b99 00001b83: SWAP1 00001b84: PUSH2 0x0e4c 00001b87: PUSH1 0x64 00001b89: PUSH2 0x0e40 00001b8c: DUP9 00001b8d: PUSH1 0x23 00001b8f: PUSH4 0xffffffff 00001b94: PUSH2 0x1802 00001b97: AND 00001b98: JUMP 00001b99: JUMPDEST 00001b9a: PUSH1 0x0f 00001b9c: DUP1 00001b9d: SLOAD 00001b9e: PUSH1 0x00 00001ba0: SWAP1 00001ba1: DUP2 00001ba2: MSTORE 00001ba3: PUSH1 0x02 00001ba5: PUSH1 0x20 00001ba7: MSTORE 00001ba8: PUSH1 0x40 00001baa: SWAP1 00001bab: KECCAK256 00001bac: PUSH1 0x01 00001bae: ADD 00001baf: SWAP2 00001bb0: SWAP1 00001bb1: SWAP2 00001bb2: SSTORE 00001bb3: PUSH2 0x1bca 00001bb6: SWAP1 00001bb7: PUSH1 0x64 00001bb9: SWAP1 00001bba: PUSH2 0x0e40 00001bbd: SWAP1 00001bbe: DUP8 00001bbf: SWAP1 00001bc0: PUSH4 0xffffffff 00001bc5: PUSH2 0x1802 00001bc8: AND 00001bc9: JUMP 00001bca: JUMPDEST 00001bcb: PUSH1 0x04 00001bcd: SLOAD 00001bce: SWAP1 00001bcf: SWAP2 00001bd0: POP 00001bd1: PUSH1 0x01 00001bd3: PUSH1 0xa0 00001bd5: PUSH1 0x02 00001bd7: EXP 00001bd8: SUB 00001bd9: AND 00001bda: PUSH4 0x30cc248e 00001bdf: PUSH2 0x1bf4 00001be2: PUSH1 0x0a 00001be4: PUSH2 0x0e40 00001be7: DUP6 00001be8: PUSH1 0x03 00001bea: PUSH4 0xffffffff 00001bef: PUSH2 0x1802 00001bf2: AND 00001bf3: JUMP 00001bf4: JUMPDEST 00001bf5: PUSH1 0x40 00001bf7: MLOAD 00001bf8: DUP3 00001bf9: PUSH4 0xffffffff 00001bfe: AND 00001bff: PUSH1 0xe0 00001c01: PUSH1 0x02 00001c03: EXP 00001c04: MUL 00001c05: DUP2 00001c06: MSTORE 00001c07: PUSH1 0x04 00001c09: ADD 00001c0a: PUSH1 0x20 00001c0c: PUSH1 0x40 00001c0e: MLOAD 00001c0f: DUP1 00001c10: DUP4 00001c11: SUB 00001c12: DUP2 00001c13: DUP6 00001c14: DUP9 00001c15: DUP1 00001c16: EXTCODESIZE 00001c17: ISZERO 00001c18: DUP1 00001c19: ISZERO 00001c1a: PUSH2 0x1c22 00001c1d: JUMPI 00001c1e: PUSH1 0x00 00001c20: DUP1 00001c21: REVERT 00001c22: JUMPDEST 00001c23: POP 00001c24: GAS 00001c25: CALL 00001c26: ISZERO 00001c27: DUP1 00001c28: ISZERO 00001c29: PUSH2 0x1c36 00001c2c: JUMPI 00001c2d: RETURNDATASIZE 00001c2e: PUSH1 0x00 00001c30: DUP1 00001c31: RETURNDATACOPY 00001c32: RETURNDATASIZE 00001c33: PUSH1 0x00 00001c35: REVERT 00001c36: JUMPDEST 00001c37: POP 00001c38: POP 00001c39: POP 00001c3a: POP 00001c3b: POP 00001c3c: PUSH1 0x40 00001c3e: MLOAD 00001c3f: RETURNDATASIZE 00001c40: PUSH1 0x20 00001c42: DUP2 00001c43: LT 00001c44: ISZERO 00001c45: PUSH2 0x1c4d 00001c48: JUMPI 00001c49: PUSH1 0x00 00001c4b: DUP1 00001c4c: REVERT 00001c4d: JUMPDEST 00001c4e: POP 00001c4f: POP 00001c50: PUSH1 0x05 00001c52: SLOAD 00001c53: PUSH1 0x01 00001c55: PUSH1 0xa0 00001c57: PUSH1 0x02 00001c59: EXP 00001c5a: SUB 00001c5b: AND 00001c5c: PUSH4 0x30cc248e 00001c61: PUSH2 0x1c76 00001c64: PUSH1 0x0a 00001c66: PUSH2 0x0e40 00001c69: DUP6 00001c6a: PUSH1 0x07 00001c6c: PUSH4 0xffffffff 00001c71: PUSH2 0x1802 00001c74: AND 00001c75: JUMP 00001c76: JUMPDEST 00001c77: PUSH1 0x40 00001c79: MLOAD 00001c7a: DUP3 00001c7b: PUSH4 0xffffffff 00001c80: AND 00001c81: PUSH1 0xe0 00001c83: PUSH1 0x02 00001c85: EXP 00001c86: MUL 00001c87: DUP2 00001c88: MSTORE 00001c89: PUSH1 0x04 00001c8b: ADD 00001c8c: PUSH1 0x20 00001c8e: PUSH1 0x40 00001c90: MLOAD 00001c91: DUP1 00001c92: DUP4 00001c93: SUB 00001c94: DUP2 00001c95: DUP6 00001c96: DUP9 00001c97: DUP1 00001c98: EXTCODESIZE 00001c99: ISZERO 00001c9a: DUP1 00001c9b: ISZERO 00001c9c: PUSH2 0x1ca4 00001c9f: JUMPI 00001ca0: PUSH1 0x00 00001ca2: DUP1 00001ca3: REVERT 00001ca4: JUMPDEST 00001ca5: POP 00001ca6: GAS 00001ca7: CALL 00001ca8: ISZERO 00001ca9: DUP1 00001caa: ISZERO 00001cab: PUSH2 0x1cb8 00001cae: JUMPI 00001caf: RETURNDATASIZE 00001cb0: PUSH1 0x00 00001cb2: DUP1 00001cb3: RETURNDATACOPY 00001cb4: RETURNDATASIZE 00001cb5: PUSH1 0x00 00001cb7: REVERT 00001cb8: JUMPDEST 00001cb9: POP 00001cba: POP 00001cbb: POP 00001cbc: POP 00001cbd: POP 00001cbe: PUSH1 0x40 00001cc0: MLOAD 00001cc1: RETURNDATASIZE 00001cc2: PUSH1 0x20 00001cc4: DUP2 00001cc5: LT 00001cc6: ISZERO 00001cc7: PUSH2 0x1ccf 00001cca: JUMPI 00001ccb: PUSH1 0x00 00001ccd: DUP1 00001cce: REVERT 00001ccf: JUMPDEST 00001cd0: POP 00001cd1: POP 00001cd2: PUSH1 0x0f 00001cd4: SLOAD 00001cd5: PUSH1 0x00 00001cd7: SWAP1 00001cd8: DUP2 00001cd9: MSTORE 00001cda: PUSH1 0x03 00001cdc: PUSH1 0x20 00001cde: SWAP1 00001cdf: DUP2 00001ce0: MSTORE 00001ce1: PUSH1 0x40 00001ce3: DUP1 00001ce4: DUP4 00001ce5: KECCAK256 00001ce6: PUSH1 0x0e 00001ce8: SLOAD 00001ce9: DUP5 00001cea: MSTORE 00001ceb: SWAP1 00001cec: SWAP2 00001ced: MSTORE 00001cee: SWAP1 00001cef: KECCAK256 00001cf0: PUSH1 0x05 00001cf2: ADD 00001cf3: SLOAD 00001cf4: PUSH2 0x1d0d 00001cf7: SWAP1 00001cf8: PUSH2 0x0e4c 00001cfb: PUSH1 0x64 00001cfd: PUSH2 0x0e40 00001d00: DUP9 00001d01: PUSH1 0x0a 00001d03: PUSH4 0xffffffff 00001d08: PUSH2 0x1802 00001d0b: AND 00001d0c: JUMP 00001d0d: JUMPDEST 00001d0e: PUSH1 0x0f 00001d10: DUP1 00001d11: SLOAD 00001d12: PUSH1 0x00 00001d14: SWAP1 00001d15: DUP2 00001d16: MSTORE 00001d17: PUSH1 0x03 00001d19: PUSH1 0x20 00001d1b: SWAP1 00001d1c: DUP2 00001d1d: MSTORE 00001d1e: PUSH1 0x40 00001d20: DUP1 00001d21: DUP4 00001d22: KECCAK256 00001d23: PUSH1 0x0e 00001d25: SLOAD 00001d26: DUP5 00001d27: MSTORE 00001d28: DUP3 00001d29: MSTORE 00001d2a: DUP1 00001d2b: DUP4 00001d2c: KECCAK256 00001d2d: PUSH1 0x05 00001d2f: ADD 00001d30: SWAP5 00001d31: SWAP1 00001d32: SWAP5 00001d33: SSTORE 00001d34: SWAP2 00001d35: SLOAD 00001d36: DUP2 00001d37: MSTORE 00001d38: PUSH1 0x02 00001d3a: SWAP1 00001d3b: SWAP2 00001d3c: MSTORE 00001d3d: KECCAK256 00001d3e: SLOAD 00001d3f: PUSH2 0x1d4e 00001d42: SWAP1 00001d43: DUP7 00001d44: PUSH4 0xffffffff 00001d49: PUSH2 0x052d 00001d4c: AND 00001d4d: JUMP 00001d4e: JUMPDEST 00001d4f: PUSH1 0x0f 00001d51: DUP1 00001d52: SLOAD 00001d53: PUSH1 0x00 00001d55: SWAP1 00001d56: DUP2 00001d57: MSTORE 00001d58: PUSH1 0x02 00001d5a: PUSH1 0x20 00001d5c: SWAP1 00001d5d: DUP2 00001d5e: MSTORE 00001d5f: PUSH1 0x40 00001d61: DUP1 00001d62: DUP4 00001d63: KECCAK256 00001d64: SWAP5 00001d65: SWAP1 00001d66: SWAP5 00001d67: SSTORE 00001d68: SWAP2 00001d69: SLOAD 00001d6a: DUP2 00001d6b: MSTORE 00001d6c: PUSH1 0x03 00001d6e: DUP3 00001d6f: MSTORE 00001d70: DUP3 00001d71: DUP2 00001d72: KECCAK256 00001d73: PUSH1 0x0e 00001d75: SLOAD 00001d76: DUP3 00001d77: MSTORE 00001d78: SWAP1 00001d79: SWAP2 00001d7a: MSTORE 00001d7b: KECCAK256 00001d7c: SLOAD 00001d7d: PUSH2 0x1d8c 00001d80: SWAP1 00001d81: DUP7 00001d82: PUSH4 0xffffffff 00001d87: PUSH2 0x052d 00001d8a: AND 00001d8b: JUMP 00001d8c: JUMPDEST 00001d8d: PUSH1 0x0f 00001d8f: SLOAD 00001d90: PUSH1 0x00 00001d92: SWAP1 00001d93: DUP2 00001d94: MSTORE 00001d95: PUSH1 0x03 00001d97: PUSH1 0x20 00001d99: SWAP1 00001d9a: DUP2 00001d9b: MSTORE 00001d9c: PUSH1 0x40 00001d9e: DUP1 00001d9f: DUP4 00001da0: KECCAK256 00001da1: PUSH1 0x0e 00001da3: SLOAD 00001da4: DUP5 00001da5: MSTORE 00001da6: SWAP1 00001da7: SWAP2 00001da8: MSTORE 00001da9: SWAP1 00001daa: KECCAK256 00001dab: SSTORE 00001dac: POP 00001dad: POP 00001dae: POP 00001daf: POP 00001db0: POP 00001db1: JUMP 00001db2: JUMPDEST 00001db3: PUSH1 0x00 00001db5: DUP1 00001db6: DUP1 00001db7: DUP4 00001db8: GT 00001db9: PUSH2 0x1dbe 00001dbc: JUMPI 00001dbd: INVALID 00001dbe: JUMPDEST 00001dbf: DUP3 00001dc0: DUP5 00001dc1: DUP2 00001dc2: ISZERO 00001dc3: ISZERO 00001dc4: PUSH2 0x1dc9 00001dc7: JUMPI 00001dc8: INVALID 00001dc9: JUMPDEST 00001dca: DIV 00001dcb: SWAP1 00001dcc: POP 00001dcd: DUP3 00001dce: DUP5 00001dcf: DUP2 00001dd0: ISZERO 00001dd1: ISZERO 00001dd2: PUSH2 0x1dd7 00001dd5: JUMPI 00001dd6: INVALID 00001dd7: JUMPDEST 00001dd8: MOD 00001dd9: DUP2 00001dda: DUP5 00001ddb: MUL 00001ddc: ADD 00001ddd: DUP5 00001dde: EQ 00001ddf: ISZERO 00001de0: ISZERO 00001de1: PUSH2 0x053c 00001de4: JUMPI 00001de5: INVALID 00001de6: JUMPDEST 00001de7: PUSH1 0x00 00001de9: DUP3 00001dea: DUP3 00001deb: GT 00001dec: ISZERO 00001ded: PUSH2 0x1df2 00001df0: JUMPI 00001df1: INVALID 00001df2: JUMPDEST 00001df3: POP 00001df4: SWAP1 00001df5: SUB 00001df6: SWAP1 00001df7: JUMP 00001df8: JUMPDEST 00001df9: PUSH1 0x10 00001dfb: SLOAD 00001dfc: PUSH1 0x00 00001dfe: SWAP1 00001dff: DUP2 00001e00: SWAP1 00001e01: DUP2 00001e02: SWAP1 00001e03: DUP2 00001e04: SWAP1 00001e05: DUP2 00001e06: SWAP1 00001e07: DUP2 00001e08: SWAP1 00001e09: DUP2 00001e0a: SWAP1 00001e0b: PUSH1 0xff 00001e0d: AND 00001e0e: ISZERO 00001e0f: PUSH2 0x1e50 00001e12: JUMPI 00001e13: PUSH1 0x40 00001e15: DUP1 00001e16: MLOAD 00001e17: PUSH1 0xe5 00001e19: PUSH1 0x02 00001e1b: EXP 00001e1c: PUSH3 0x461bcd 00001e20: MUL 00001e21: DUP2 00001e22: MSTORE 00001e23: PUSH1 0x20 00001e25: PUSH1 0x04 00001e27: DUP3 00001e28: ADD 00001e29: MSTORE 00001e2a: PUSH1 0x09 00001e2c: PUSH1 0x24 00001e2e: DUP3 00001e2f: ADD 00001e30: MSTORE 00001e31: PUSH1 0x00 00001e33: DUP1 00001e34: MLOAD 00001e35: PUSH1 0x20 00001e37: PUSH2 0x2233 00001e3a: DUP4 00001e3b: CODECOPY 00001e3c: DUP2 00001e3d: MLOAD 00001e3e: SWAP2 00001e3f: MSTORE 00001e40: PUSH1 0x44 00001e42: DUP3 00001e43: ADD 00001e44: MSTORE 00001e45: SWAP1 00001e46: MLOAD 00001e47: SWAP1 00001e48: DUP2 00001e49: SWAP1 00001e4a: SUB 00001e4b: PUSH1 0x64 00001e4d: ADD 00001e4e: SWAP1 00001e4f: REVERT 00001e50: JUMPDEST 00001e51: PUSH2 0x1e58 00001e54: PUSH2 0x1677 00001e57: JUMP 00001e58: JUMPDEST 00001e59: SWAP7 00001e5a: POP 00001e5b: PUSH1 0x32 00001e5d: PUSH1 0x0e 00001e5f: SLOAD 00001e60: LT 00001e61: ISZERO 00001e62: PUSH2 0x1e78 00001e65: JUMPI 00001e66: PUSH1 0x04 00001e68: PUSH1 0x0e 00001e6a: SLOAD 00001e6b: PUSH1 0x33 00001e6d: SUB 00001e6e: PUSH1 0x03 00001e70: MUL 00001e71: SUB 00001e72: SWAP6 00001e73: POP 00001e74: PUSH2 0x1e7d 00001e77: JUMP 00001e78: JUMPDEST 00001e79: PUSH1 0x01 00001e7b: SWAP6 00001e7c: POP 00001e7d: JUMPDEST 00001e7e: DUP6 00001e7f: DUP1 00001e80: ISZERO 00001e81: ISZERO 00001e82: PUSH2 0x1e87 00001e85: JUMPI 00001e86: INVALID 00001e87: JUMPDEST 00001e88: DUP8 00001e89: PUSH1 0x00 00001e8b: NOT 00001e8c: NUMBER 00001e8d: ADD 00001e8e: BLOCKHASH 00001e8f: ADDMOD 00001e90: SWAP5 00001e91: POP 00001e92: DUP5 00001e93: ISZERO 00001e94: ISZERO 00001e95: PUSH2 0x21c5 00001e98: JUMPI 00001e99: PUSH1 0x0f 00001e9b: SLOAD 00001e9c: PUSH1 0x00 00001e9e: SWAP1 00001e9f: DUP2 00001ea0: MSTORE 00001ea1: PUSH1 0x02 00001ea3: PUSH1 0x20 00001ea5: MSTORE 00001ea6: PUSH1 0x40 00001ea8: SWAP1 00001ea9: KECCAK256 00001eaa: PUSH1 0x01 00001eac: ADD 00001ead: SLOAD 00001eae: PUSH1 0x01 00001eb0: PUSH1 0xa0 00001eb2: PUSH1 0x02 00001eb4: EXP 00001eb5: SUB 00001eb6: ADDRESS 00001eb7: AND 00001eb8: BALANCE 00001eb9: LT 00001eba: ISZERO 00001ebb: PUSH2 0x1ec3 00001ebe: JUMPI 00001ebf: PUSH1 0x00 00001ec1: DUP1 00001ec2: REVERT 00001ec3: JUMPDEST 00001ec4: PUSH1 0x0f 00001ec6: SLOAD 00001ec7: PUSH1 0x00 00001ec9: SWAP1 00001eca: DUP2 00001ecb: MSTORE 00001ecc: PUSH1 0x02 00001ece: PUSH1 0x20 00001ed0: MSTORE 00001ed1: PUSH1 0x40 00001ed3: SWAP1 00001ed4: KECCAK256 00001ed5: PUSH1 0x01 00001ed7: ADD 00001ed8: SLOAD 00001ed9: PUSH2 0x1ef0 00001edc: SWAP1 00001edd: PUSH1 0x64 00001edf: SWAP1 00001ee0: PUSH2 0x0e40 00001ee3: SWAP1 00001ee4: PUSH1 0x0a 00001ee6: PUSH4 0xffffffff 00001eeb: PUSH2 0x1802 00001eee: AND 00001eef: JUMP 00001ef0: JUMPDEST 00001ef1: PUSH1 0x0f 00001ef3: SLOAD 00001ef4: PUSH1 0x00 00001ef6: SWAP1 00001ef7: DUP2 00001ef8: MSTORE 00001ef9: PUSH1 0x02 00001efb: PUSH1 0x20 00001efd: DUP2 00001efe: SWAP1 00001eff: MSTORE 00001f00: PUSH1 0x40 00001f02: SWAP1 00001f03: SWAP2 00001f04: KECCAK256 00001f05: SWAP1 00001f06: DUP2 00001f07: ADD 00001f08: SLOAD 00001f09: SWAP1 00001f0a: SLOAD 00001f0b: SWAP2 00001f0c: SWAP6 00001f0d: POP 00001f0e: PUSH2 0x1f22 00001f11: SWAP2 00001f12: PUSH2 0x0e4c 00001f15: SWAP1 00001f16: DUP8 00001f17: SWAP1 00001f18: PUSH4 0xffffffff 00001f1d: PUSH2 0x1db2 00001f20: AND 00001f21: JUMP 00001f22: JUMPDEST 00001f23: PUSH1 0x0f 00001f25: DUP1 00001f26: SLOAD 00001f27: PUSH1 0x00 00001f29: SWAP1 00001f2a: DUP2 00001f2b: MSTORE 00001f2c: PUSH1 0x02 00001f2e: PUSH1 0x20 00001f30: DUP2 00001f31: SWAP1 00001f32: MSTORE 00001f33: PUSH1 0x40 00001f35: DUP1 00001f36: DUP4 00001f37: KECCAK256 00001f38: SWAP1 00001f39: SWAP2 00001f3a: ADD 00001f3b: SWAP4 00001f3c: SWAP1 00001f3d: SWAP4 00001f3e: SSTORE 00001f3f: SWAP1 00001f40: SLOAD 00001f41: DUP2 00001f42: MSTORE 00001f43: KECCAK256 00001f44: PUSH1 0x01 00001f46: ADD 00001f47: SLOAD 00001f48: PUSH2 0x1f5f 00001f4b: SWAP1 00001f4c: PUSH1 0x64 00001f4e: SWAP1 00001f4f: PUSH2 0x0e40 00001f52: SWAP1 00001f53: PUSH1 0x0a 00001f55: PUSH4 0xffffffff 00001f5a: PUSH2 0x1802 00001f5d: AND 00001f5e: JUMP 00001f5f: JUMPDEST 00001f60: PUSH1 0x0f 00001f62: SLOAD 00001f63: PUSH1 0x00 00001f65: SWAP1 00001f66: DUP2 00001f67: MSTORE 00001f68: PUSH1 0x02 00001f6a: PUSH1 0x20 00001f6c: MSTORE 00001f6d: PUSH1 0x40 00001f6f: SWAP1 00001f70: KECCAK256 00001f71: PUSH1 0x01 00001f73: ADD 00001f74: SLOAD 00001f75: SWAP1 00001f76: SWAP4 00001f77: POP 00001f78: PUSH2 0x1f8f 00001f7b: SWAP1 00001f7c: PUSH1 0x64 00001f7e: SWAP1 00001f7f: PUSH2 0x0e40 00001f82: SWAP1 00001f83: PUSH1 0x0a 00001f85: PUSH4 0xffffffff 00001f8a: PUSH2 0x1802 00001f8d: AND 00001f8e: JUMP 00001f8f: JUMPDEST 00001f90: PUSH1 0x04 00001f92: SLOAD 00001f93: SWAP1 00001f94: SWAP3 00001f95: POP 00001f96: PUSH1 0x01 00001f98: PUSH1 0xa0 00001f9a: PUSH1 0x02 00001f9c: EXP 00001f9d: SUB 00001f9e: AND 00001f9f: PUSH4 0x30cc248e 00001fa4: PUSH2 0x1fb9 00001fa7: PUSH1 0x0a 00001fa9: PUSH2 0x0e40 00001fac: DUP7 00001fad: PUSH1 0x03 00001faf: PUSH4 0xffffffff 00001fb4: PUSH2 0x1802 00001fb7: AND 00001fb8: JUMP 00001fb9: JUMPDEST 00001fba: PUSH1 0x40 00001fbc: MLOAD 00001fbd: DUP3 00001fbe: PUSH4 0xffffffff 00001fc3: AND 00001fc4: PUSH1 0xe0 00001fc6: PUSH1 0x02 00001fc8: EXP 00001fc9: MUL 00001fca: DUP2 00001fcb: MSTORE 00001fcc: PUSH1 0x04 00001fce: ADD 00001fcf: PUSH1 0x20 00001fd1: PUSH1 0x40 00001fd3: MLOAD 00001fd4: DUP1 00001fd5: DUP4 00001fd6: SUB 00001fd7: DUP2 00001fd8: DUP6 00001fd9: DUP9 00001fda: DUP1 00001fdb: EXTCODESIZE 00001fdc: ISZERO 00001fdd: DUP1 00001fde: ISZERO 00001fdf: PUSH2 0x1fe7 00001fe2: JUMPI 00001fe3: PUSH1 0x00 00001fe5: DUP1 00001fe6: REVERT 00001fe7: JUMPDEST 00001fe8: POP 00001fe9: GAS 00001fea: CALL 00001feb: ISZERO 00001fec: DUP1 00001fed: ISZERO 00001fee: PUSH2 0x1ffb 00001ff1: JUMPI 00001ff2: RETURNDATASIZE 00001ff3: PUSH1 0x00 00001ff5: DUP1 00001ff6: RETURNDATACOPY 00001ff7: RETURNDATASIZE 00001ff8: PUSH1 0x00 00001ffa: REVERT 00001ffb: JUMPDEST 00001ffc: POP 00001ffd: POP 00001ffe: POP 00001fff: POP 00002000: POP 00002001: PUSH1 0x40 00002003: MLOAD 00002004: RETURNDATASIZE 00002005: PUSH1 0x20 00002007: DUP2 00002008: LT 00002009: ISZERO 0000200a: PUSH2 0x2012 0000200d: JUMPI 0000200e: PUSH1 0x00 00002010: DUP1 00002011: REVERT 00002012: JUMPDEST 00002013: POP 00002014: POP 00002015: PUSH1 0x05 00002017: SLOAD 00002018: PUSH1 0x01 0000201a: PUSH1 0xa0 0000201c: PUSH1 0x02 0000201e: EXP 0000201f: SUB 00002020: AND 00002021: PUSH4 0x30cc248e 00002026: PUSH2 0x203b 00002029: PUSH1 0x0a 0000202b: PUSH2 0x0e40 0000202e: DUP7 0000202f: PUSH1 0x07 00002031: PUSH4 0xffffffff 00002036: PUSH2 0x1802 00002039: AND 0000203a: JUMP 0000203b: JUMPDEST 0000203c: PUSH1 0x40 0000203e: MLOAD 0000203f: DUP3 00002040: PUSH4 0xffffffff 00002045: AND 00002046: PUSH1 0xe0 00002048: PUSH1 0x02 0000204a: EXP 0000204b: MUL 0000204c: DUP2 0000204d: MSTORE 0000204e: PUSH1 0x04 00002050: ADD 00002051: PUSH1 0x20 00002053: PUSH1 0x40 00002055: MLOAD 00002056: DUP1 00002057: DUP4 00002058: SUB 00002059: DUP2 0000205a: DUP6 0000205b: DUP9 0000205c: DUP1 0000205d: EXTCODESIZE 0000205e: ISZERO 0000205f: DUP1 00002060: ISZERO 00002061: PUSH2 0x2069 00002064: JUMPI 00002065: PUSH1 0x00 00002067: DUP1 00002068: REVERT 00002069: JUMPDEST 0000206a: POP 0000206b: GAS 0000206c: CALL 0000206d: ISZERO 0000206e: DUP1 0000206f: ISZERO 00002070: PUSH2 0x207d 00002073: JUMPI 00002074: RETURNDATASIZE 00002075: PUSH1 0x00 00002077: DUP1 00002078: RETURNDATACOPY 00002079: RETURNDATASIZE 0000207a: PUSH1 0x00 0000207c: REVERT 0000207d: JUMPDEST 0000207e: POP 0000207f: POP 00002080: POP 00002081: POP 00002082: POP 00002083: PUSH1 0x40 00002085: MLOAD 00002086: RETURNDATASIZE 00002087: PUSH1 0x20 00002089: DUP2 0000208a: LT 0000208b: ISZERO 0000208c: PUSH2 0x2094 0000208f: JUMPI 00002090: PUSH1 0x00 00002092: DUP1 00002093: REVERT 00002094: JUMPDEST 00002095: POP 00002096: POP 00002097: PUSH1 0x0d 00002099: SLOAD 0000209a: PUSH1 0x0f 0000209c: SLOAD 0000209d: PUSH1 0x00 0000209f: SWAP1 000020a0: DUP2 000020a1: MSTORE 000020a2: PUSH1 0x02 000020a4: PUSH1 0x20 000020a6: MSTORE 000020a7: PUSH1 0x40 000020a9: SWAP1 000020aa: KECCAK256 000020ab: PUSH1 0x01 000020ad: ADD 000020ae: SLOAD 000020af: PUSH2 0x20cb 000020b2: SWAP2 000020b3: SWAP1 000020b4: PUSH2 0x0e4c 000020b7: SWAP1 000020b8: PUSH1 0x64 000020ba: SWAP1 000020bb: PUSH2 0x0e40 000020be: SWAP1 000020bf: PUSH1 0x08 000020c1: PUSH4 0xffffffff 000020c6: PUSH2 0x1802 000020c9: AND 000020ca: JUMP 000020cb: JUMPDEST 000020cc: PUSH1 0x0d 000020ce: SSTORE 000020cf: PUSH1 0x0f 000020d1: SLOAD 000020d2: PUSH1 0x00 000020d4: SWAP1 000020d5: DUP2 000020d6: MSTORE 000020d7: PUSH1 0x02 000020d9: PUSH1 0x20 000020db: MSTORE 000020dc: PUSH1 0x40 000020de: SWAP1 000020df: KECCAK256 000020e0: PUSH1 0x01 000020e2: ADD 000020e3: SLOAD 000020e4: PUSH2 0x20fb 000020e7: SWAP1 000020e8: PUSH1 0x64 000020ea: SWAP1 000020eb: PUSH2 0x0e40 000020ee: SWAP1 000020ef: PUSH1 0x3e 000020f1: PUSH4 0xffffffff 000020f6: PUSH2 0x1802 000020f9: AND 000020fa: JUMP 000020fb: JUMPDEST 000020fc: PUSH1 0x40 000020fe: MLOAD 000020ff: SWAP1 00002100: SWAP2 00002101: POP 00002102: PUSH1 0x01 00002104: PUSH1 0xa0 00002106: PUSH1 0x02 00002108: EXP 00002109: SUB 0000210a: DUP10 0000210b: AND 0000210c: SWAP1 0000210d: DUP3 0000210e: ISZERO 0000210f: PUSH2 0x08fc 00002112: MUL 00002113: SWAP1 00002114: DUP4 00002115: SWAP1 00002116: PUSH1 0x00 00002118: DUP2 00002119: DUP2 0000211a: DUP2 0000211b: DUP6 0000211c: DUP9 0000211d: DUP9 0000211e: CALL 0000211f: SWAP4 00002120: POP 00002121: POP 00002122: POP 00002123: POP 00002124: ISZERO 00002125: DUP1 00002126: ISZERO 00002127: PUSH2 0x2134 0000212a: JUMPI 0000212b: RETURNDATASIZE 0000212c: PUSH1 0x00 0000212e: DUP1 0000212f: RETURNDATACOPY 00002130: RETURNDATASIZE 00002131: PUSH1 0x00 00002133: REVERT 00002134: JUMPDEST 00002135: POP 00002136: PUSH1 0x0f 00002138: SLOAD 00002139: PUSH1 0x0e 0000213b: SLOAD 0000213c: PUSH1 0x40 0000213e: DUP1 0000213f: MLOAD 00002140: SWAP3 00002141: DUP4 00002142: MSTORE 00002143: PUSH1 0x20 00002145: DUP4 00002146: ADD 00002147: SWAP2 00002148: SWAP1 00002149: SWAP2 0000214a: MSTORE 0000214b: DUP2 0000214c: DUP2 0000214d: ADD 0000214e: DUP4 0000214f: SWAP1 00002150: MSTORE 00002151: PUSH1 0x02 00002153: PUSH1 0x60 00002155: DUP4 00002156: ADD 00002157: MSTORE 00002158: MLOAD 00002159: PUSH1 0x01 0000215b: PUSH1 0xa0 0000215d: PUSH1 0x02 0000215f: EXP 00002160: SUB 00002161: DUP11 00002162: AND 00002163: SWAP2 00002164: PUSH32 0xe6147ff2b2d6ab20543fbed039f6682a2a55b0555979bd7ca5979b41f4141cf7 00002185: SWAP2 00002186: SWAP1 00002187: DUP2 00002188: SWAP1 00002189: SUB 0000218a: PUSH1 0x80 0000218c: ADD 0000218d: SWAP1 0000218e: LOG2 0000218f: PUSH1 0x0f 00002191: DUP1 00002192: SLOAD 00002193: PUSH1 0x00 00002195: SWAP1 00002196: DUP2 00002197: MSTORE 00002198: PUSH1 0x02 0000219a: PUSH1 0x20 0000219c: MSTORE 0000219d: PUSH1 0x40 0000219f: DUP1 000021a0: DUP3 000021a1: KECCAK256 000021a2: PUSH1 0x05 000021a4: ADD 000021a5: DUP5 000021a6: SWAP1 000021a7: SSTORE 000021a8: DUP3 000021a9: SLOAD 000021aa: PUSH1 0x01 000021ac: SWAP1 000021ad: DUP2 000021ae: ADD 000021af: SWAP4 000021b0: DUP5 000021b1: SWAP1 000021b2: SSTORE 000021b3: PUSH1 0x0e 000021b5: DUP2 000021b6: SWAP1 000021b7: SSTORE 000021b8: SWAP3 000021b9: DUP3 000021ba: MSTORE 000021bb: SWAP1 000021bc: KECCAK256 000021bd: ADD 000021be: DUP4 000021bf: SWAP1 000021c0: SSTORE 000021c1: PUSH2 0x21cf 000021c4: JUMP 000021c5: JUMPDEST 000021c6: PUSH1 0x0e 000021c8: DUP1 000021c9: SLOAD 000021ca: PUSH1 0x01 000021cc: ADD 000021cd: SWAP1 000021ce: SSTORE 000021cf: JUMPDEST 000021d0: POP 000021d1: POP 000021d2: PUSH1 0x00 000021d4: PUSH1 0x09 000021d6: SSTORE 000021d7: POP 000021d8: POP 000021d9: POP 000021da: POP 000021db: POP 000021dc: POP 000021dd: JUMP 000021de: JUMPDEST 000021df: DUP2 000021e0: SLOAD 000021e1: DUP2 000021e2: DUP4 000021e3: SSTORE 000021e4: DUP2 000021e5: DUP2 000021e6: GT 000021e7: ISZERO 000021e8: PUSH2 0x220a 000021eb: JUMPI 000021ec: PUSH1 0x02 000021ee: MUL 000021ef: DUP2 000021f0: PUSH1 0x02 000021f2: MUL 000021f3: DUP4 000021f4: PUSH1 0x00 000021f6: MSTORE 000021f7: PUSH1 0x20 000021f9: PUSH1 0x00 000021fb: KECCAK256 000021fc: SWAP2 000021fd: DUP3 000021fe: ADD 000021ff: SWAP2 00002200: ADD 00002201: PUSH2 0x220a 00002204: SWAP2 00002205: SWAP1 00002206: PUSH2 0x220f 00002209: JUMP 0000220a: JUMPDEST 0000220b: POP 0000220c: POP 0000220d: POP 0000220e: JUMP 0000220f: JUMPDEST 00002210: PUSH2 0x222f 00002213: SWAP2 00002214: SWAP1 00002215: JUMPDEST 00002216: DUP1 00002217: DUP3 00002218: GT 00002219: ISZERO 0000221a: PUSH2 0x0f64 0000221d: JUMPI 0000221e: PUSH1 0x00 00002220: DUP1 00002221: DUP3 00002222: SSTORE 00002223: PUSH1 0x01 00002225: DUP3 00002226: ADD 00002227: SSTORE 00002228: PUSH1 0x02 0000222a: ADD 0000222b: PUSH2 0x2215 0000222e: JUMP 0000222f: JUMPDEST 00002230: SWAP1 00002231: JUMP 00002232: STOP 00002233: PUSH10 0x73205061757365640000 0000223e: STOP 0000223f: STOP 00002240: STOP 00002241: STOP 00002242: STOP 00002243: STOP 00002244: STOP 00002245: STOP 00002246: STOP 00002247: STOP 00002248: STOP 00002249: STOP 0000224a: STOP 0000224b: STOP 0000224c: STOP 0000224d: STOP 0000224e: STOP 0000224f: STOP 00002250: STOP 00002251: STOP 00002252: STOP 00002253: PUSH16 0x6e6c79206f776e657200000000000000 00002264: STOP 00002265: STOP 00002266: STOP 00002267: STOP 00002268: STOP 00002269: STOP 0000226a: STOP 0000226b: STOP 0000226c: STOP 0000226d: STOP 0000226e: STOP 0000226f: STOP 00002270: STOP 00002271: STOP 00002272: STOP 00002273: LOG1 00002274: PUSH6 0x627a7a723058 0000227b: KECCAK256 0000227c: PUSH13 0xa4a3b565d22a80f8d51ab51ac9 0000228a: MSTORE 0000228b: PUSH18 0x049875e57c81f055d378a5ab146741c20029
| Severity | Category | Tool | Title | Confidence | Validated | Confirmed | Details |
|---|---|---|---|---|---|---|---|
| high | oracle | codex | Predictable/manipulable randomness for winner and jackpot selection | 85 | no | — |
viewevidence_json{
"evidence": "`_random()` derives entropy from `block.timestamp`, `block.difficulty`, `block.coinbase`, `block.gaslimit`, `block.number`, and `msg.sender`; `createWinner` and `_bigLottery` mix this with `blockhash(block.number-1)` to compute `winKey`/jackpot roll.",
"locations": [
"contracts/Contract.sol:_random",
"contracts/Contract.sol:createWinner",
"contracts/Contract.sol:_bigLottery"
],
"recommendation": "Replace `_random()` with a verifiable randomness source (e.g., Chainlink VRF) or a commit-reveal scheme that uses future blockhashes so no single party can bias the result.",
"exploit_scenario": "The service (or a miner) can influence the outcome by choosing when to call `createWinner`/`lottery` and by manipulating block attributes used in `_random()`. This allows a privileged party to bias or predict `winKey` and the jackpot roll, increasing their chance to win or to force/avoid jackpot payout."
}
|
| high | other | detector | Untrusted CALL target/value reachable | 60 | no | no |
viewtrace_id: 0x0dd634ad11d292d67b76c119768d4e43c39eff2cdbafd06ee6746b430e354c10
call_targets:
0x51e9244bae3fca7473fe48651dfd7db53aa55856
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0x0dd634ad11d292d67b76c119768d4e43c39eff2cdbafd06ee6746b430e354c10",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0x51e9244bae3fca7473fe48651dfd7db53aa55856"
],
"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": "0x0806506e",
"selector": "0x0806506e",
"calldata_variants": [
"0x0806506e",
"0x0806506e0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x080b3713",
"selector": "0x080b3713",
"calldata_variants": [
"0x080b3713",
"0x080b37130000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x112b2b07",
"selector": "0x112b2b07",
"calldata_variants": [
"0x112b2b07",
"0x112b2b070000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x2e1a7d4d",
"selector": "0x2e1a7d4d",
"calldata_variants": [
"0x2e1a7d4d",
"0x2e1a7d4d0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x57386c2a",
"selector": "0x57386c2a",
"calldata_variants": [
"0x57386c2a",
"0x57386c2a0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x5af42b93",
"selector": "0x5af42b93",
"calldata_variants": [
"0x5af42b93",
"0x5af42b930000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x6a343df3",
"selector": "0x6a343df3",
"calldata_variants": [
"0x6a343df3",
"0x6a343df30000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x73ec9479",
"selector": "0x73ec9479",
"calldata_variants": [
"0x73ec9479",
"0x73ec94790000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 2194,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 4531,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 4807,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"call_count": 8,
"guards_detected": [],
"untrusted_call_count": 8
}
|
| high | other | detector | ETH value transfer possible | 55 | no | no |
viewtrace_id: 0x0dd634ad11d292d67b76c119768d4e43c39eff2cdbafd06ee6746b430e354c10
call_targets:
0x51e9244bae3fca7473fe48651dfd7db53aa55856
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0x0dd634ad11d292d67b76c119768d4e43c39eff2cdbafd06ee6746b430e354c10",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0x51e9244bae3fca7473fe48651dfd7db53aa55856"
],
"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": "0x0806506e",
"selector": "0x0806506e",
"calldata_variants": [
"0x0806506e",
"0x0806506e0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x080b3713",
"selector": "0x080b3713",
"calldata_variants": [
"0x080b3713",
"0x080b37130000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x112b2b07",
"selector": "0x112b2b07",
"calldata_variants": [
"0x112b2b07",
"0x112b2b070000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x2e1a7d4d",
"selector": "0x2e1a7d4d",
"calldata_variants": [
"0x2e1a7d4d",
"0x2e1a7d4d0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x57386c2a",
"selector": "0x57386c2a",
"calldata_variants": [
"0x57386c2a",
"0x57386c2a0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x5af42b93",
"selector": "0x5af42b93",
"calldata_variants": [
"0x5af42b93",
"0x5af42b930000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x6a343df3",
"selector": "0x6a343df3",
"calldata_variants": [
"0x6a343df3",
"0x6a343df30000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0x73ec9479",
"selector": "0x73ec9479",
"calldata_variants": [
"0x73ec9479",
"0x73ec94790000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 2194,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 4531,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 4807,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"eth_value_calls": 8,
"guards_detected": []
}
|
| high | reentrancy | slither | Reentrancy in RobTheBank._bigLottery(address) (contracts/Contract.sol#257-298): | 85 | no | — |
viewevidence_json{
"impact": "High",
"detector": "reentrancy-eth",
"elements": [
{
"name": "_bigLottery",
"type": "function",
"source_mapping": {
"lines": [
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
],
"start": 9689,
"length": 1851,
"ending_column": 5,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 18,
"filename_absolute": "/tmp/slither-knh0njyg/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"type_specific_fields": {
"parent": {
"name": "RobTheBank",
"type": "contract",
"source_mapping": {
"lines": [
69,
70,
71,
72,
73,
74,
75,
76,
77,
78,
79,
80,
81,
82,
83,
84,
85,
86,
87,
88,
89,
90,
91,
92,
93,
94,
95,
96,
97,
98,
99,
100,
101,
102,
103,
104,
105,
106,
107,
108,
109,
110,
111,
112,
113,
114,
115,
116,
117,
118,
119,
120,
121,
122,
123,
124,
125,
126,
127,
128,
129,
130,
131,
132,
133,
134,
135,
136,
137,
138,
139,
140,
141,
142,
143,
144,
145,
146,
147,
148,
149,
150,
151,
152,
153,
154,
155,
156,
157,
158,
159,
160,
161,
162,
163,
164,
165,
166,
167,
168,
169,
170,
171,
172,
173,
174,
175,
176,
177,
178,
179,
180,
181,
182,
183,
184,
185,
186,
187,
188,
189,
190,
191,
192,
193,
194,
195,
196,
197,
198,
199,
200,
201,
202,
203,
204,
205,
206,
207,
208,
209,
210,
211,
212,
213,
214,
215,
216,
217,
218,
219,
220,
221,
222,
223,
224,
225,
226,
227,
228,
229,
230,
231,
232,
233,
234,
235,
236,
237,
238,
239,
240,
241,
242,
243,
244,
245,
246,
247,
248,
249,
250,
251,
252,
253,
254,
255,
256,
257,
258,
259,
260,
261,
262,
263,
264,
265,
266,
267,
268,
269,
270,
271,
272,
273,
274,
275,
276,
277,
278,
279,
280,
281,
282,
283,
284,
285,
286,
287,
288,
289,
290,
291,
292,
293,
294,
295,
296,
297,
298,
299,
300,
301,
302,
303,
304,
305,
306,
307,
308,
309,
310,
311,
312,
313,
314,
315,
316,
317,
318,
319,
320,
321,
322,
323,
324,
325,
326,
327,
328,
329,
330,
331,
332,
333,
334,
335,
336,
337,
338,
339,
340,
341,
342,
343,
344,
345,
346,
347,
348,
349,
350,
351,
352,
353,
354,
355,
356,
357
],
"start": 1727,
"length": 11850,
"ending_column": 19,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 22,
"filename_absolute": "/tmp/slither-knh0njyg/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
}
},
"signature": "_bigLottery(address)"
}
},
{
"name": "RTB1.increaseProfit.value(_shareFee.mul(3).div(10))()",
"type": "node",
"source_mapping": {
"lines": [
280,
281,
282
],
"start": 10658,
"length": 53,
"ending_column": 34,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 109,
"filename_absolute": "/tmp/slither-knh0njyg/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"additional_fields": {
"underlying_type": "external_calls"
},
"type_specific_fields": {
"parent": {
"name": "_bigLottery",
"type": "function",
"source_mapping": {
"lines": [
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
],
"start": 9689,
"length": 1851,
"ending_column": 5,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 18,
"filename_absolute": "/tmp/slither-knh0njyg/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"type_specific_fields": {
"parent": {
"name": "RobTheBank",
"type": "contract",
"source_mapping": {
"lines": [
69,
70,
71,
72,
73,
74,
75,
76,
77,
78,
79,
80,
81,
82,
83,
84,
85,
86,
87,
88,
89,
90,
91,
92,
93,
94,
95,
96,
97,
98,
99,
100,
101,
102,
103,
104,
105,
106,
107,
108,
109,
110,
111,
112,
113,
114,
115,
116,
117,
118,
119,
120,
121,
122,
123,
124,
125,
126,
127,
128,
129,
130,
131,
132,
133,
134,
135,
136,
137,
138,
139,
140,
141,
142,
143,
144,
145,
146,
147,
148,
149,
150,
151,
152,
153,
154,
155,
156,
157,
158,
159,
160,
161,
162,
163,
164,
165,
166,
167,
168,
169,
170,
171,
172,
173,
174,
175,
176,
177,
178,
179,
180,
181,
182,
183,
184,
185,
186,
187,
188,
189,
190,
191,
192,
193,
194,
195,
196,
197,
198,
199,
200,
201,
202,
203,
204,
205,
206,
207,
208,
209,
210,
211,
212,
213,
214,
215,
216,
217,
218,
219,
220,
221,
222,
223,
224,
225,
226,
227,
228,
229,
230,
231,
232,
233,
234,
235,
236,
237,
238,
239,
240,
241,
242,
243,
244,
245,
246,
247,
248,
249,
250,
251,
252,
253,
254,
255,
256,
257,
258,
259,
260,
261,
262,
263,
264,
265,
266,
267,
268,
269,
270,
271,
272,
273,
274,
275,
276,
277,
278,
279,
280,
281,
282,
283,
284,
285,
286,
287,
288,
289,
290,
291,
292,
293,
294,
295,
296,
297,
298,
299,
300,
301,
302,
303,
304,
305,
306,
307,
308,
309,
310,
311,
312,
313,
314,
315,
316,
317,
318,
319,
320,
321,
322,
323,
324,
325,
326,
327,
328,
329,
330,
331,
332,
333,
334,
335,
336,
337,
338,
339,
340,
341,
342,
343,
344,
345,
346,
347,
348,
349,
350,
351,
352,
353,
354,
355,
356,
357
],
"start": 1727,
"length": 11850,
"ending_column": 19,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 22,
"filename_absolute": "/tmp/slither-knh0njyg/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
}
},
"signature": "_bigLottery(address)"
}
}
}
},
{
"name": "RTB2.increaseProfit.value(_shareFee.mul(7).div(10))()",
"type": "node",
"source_mapping": {
"lines": [
283
],
"start": 10743,
"length": 53,
"ending_column": 83,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 30,
"filename_absolute": "/tmp/slither-knh0njyg/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"additional_fields": {
"underlying_type": "external_calls"
},
"type_specific_fields": {
"parent": {
"name": "_bigLottery",
"type": "function",
"source_mapping": {
"lines": [
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
],
"start": 9689,
"length": 1851,
"ending_column": 5,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 18,
"filename_absolute": "/tmp/slither-knh0njyg/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"type_specific_fields": {
"parent": {
"name": "RobTheBank",
"type": "contract",
"source_mapping": {
"lines": [
69,
70,
71,
72,
73,
74,
75,
76,
77,
78,
79,
80,
81,
82,
83,
84,
85,
86,
87,
88,
89,
90,
91,
92,
93,
94,
95,
96,
97,
98,
99,
100,
101,
102,
103,
104,
105,
106,
107,
108,
109,
110,
111,
112,
113,
114,
115,
116,
117,
118,
119,
120,
121,
122,
123,
124,
125,
126,
127,
128,
129,
130,
131,
132,
133,
134,
135,
136,
137,
138,
139,
140,
141,
142,
143,
144,
145,
146,
147,
148,
149,
150,
151,
152,
153,
154,
155,
156,
157,
158,
159,
160,
161,
162,
163,
164,
165,
166,
167,
168,
169,
170,
171,
172,
173,
174,
175,
176,
177,
178,
179,
180,
181,
182,
183,
184,
185,
186,
187,
188,
189,
190,
191,
192,
193,
194,
195,
196,
197,
198,
199,
200,
201,
202,
203,
204,
205,
206,
207,
208,
209,
210,
211,
212,
213,
214,
215,
216,
217,
218,
219,
220,
221,
222,
223,
224,
225,
226,
227,
228,
229,
230,
231,
232,
233,
234,
235,
236,
237,
238,
239,
240,
241,
242,
243,
244,
245,
246,
247,
248,
249,
250,
251,
252,
253,
254,
255,
256,
257,
258,
259,
260,
261,
262,
263,
264,
265,
266,
267,
268,
269,
270,
271,
272,
273,
274,
275,
276,
277,
278,
279,
280,
281,
282,
283,
284,
285,
286,
287,
288,
289,
290,
291,
292,
293,
294,
295,
296,
297,
298,
299,
300,
301,
302,
303,
304,
305,
306,
307,
308,
309,
310,
311,
312,
313,
314,
315,
316,
317,
318,
319,
320,
321,
322,
323,
324,
325,
326,
327,
328,
329,
330,
331,
332,
333,
334,
335,
336,
337,
338,
339,
340,
341,
342,
343,
344,
345,
346,
347,
348,
349,
350,
351,
352,
353,
354,
355,
356,
357
],
"start": 1727,
"length": 11850,
"ending_column": 19,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 22,
"filename_absolute": "/tmp/slither-knh0njyg/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
}
},
"signature": "_bigLottery(address)"
}
}
}
},
{
"name": "RTB1.increaseProfit.value(_shareFee.mul(3).div(10))()",
"type": "node",
"source_mapping": {
"lines": [
280,
281,
282
],
"start": 10658,
"length": 53,
"ending_column": 34,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 109,
"filename_absolute": "/tmp/slither-knh0njyg/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"additional_fields": {
"underlying_type": "external_calls_sending_eth"
},
"type_specific_fields": {
"parent": {
"name": "_bigLottery",
"type": "function",
"source_mapping": {
"lines": [
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
],
"start": 9689,
"length": 1851,
"ending_column": 5,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 18,
"filename_absolute": "/tmp/slither-knh0njyg/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"type_specific_fields": {
"parent": {
"name": "RobTheBank",
"type": "contract",
"source_mapping": {
"lines": [
69,
70,
71,
72,
73,
74,
75,
76,
77,
78,
79,
80,
81,
82,
83,
84,
85,
86,
87,
88,
89,
90,
91,
92,
93,
94,
95,
96,
97,
98,
99,
100,
101,
102,
103,
104,
105,
106,
107,
108,
109,
110,
111,
112,
113,
114,
115,
116,
117,
118,
119,
120,
121,
122,
123,
124,
125,
126,
127,
128,
129,
130,
131,
132,
133,
134,
135,
136,
137,
138,
139,
140,
141,
142,
143,
144,
145,
146,
147,
148,
149,
150,
151,
152,
153,
154,
155,
156,
157,
158,
159,
160,
161,
162,
163,
164,
165,
166,
167,
168,
169,
170,
171,
172,
173,
174,
175,
176,
177,
178,
179,
180,
181,
182,
183,
184,
185,
186,
187,
188,
189,
190,
191,
192,
193,
194,
195,
196,
197,
198,
199,
200,
201,
202,
203,
204,
205,
206,
207,
208,
209,
210,
211,
212,
213,
214,
215,
216,
217,
218,
219,
220,
221,
222,
223,
224,
225,
226,
227,
228,
229,
230,
231,
232,
233,
234,
235,
236,
237,
238,
239,
240,
241,
242,
243,
244,
245,
246,
247,
248,
249,
250,
251,
252,
253,
254,
255,
256,
257,
258,
259,
260,
261,
262,
263,
264,
265,
266,
267,
268,
269,
270,
271,
272,
273,
274,
275,
276,
277,
278,
279,
280,
281,
282,
283,
284,
285,
286,
287,
288,
289,
290,
291,
292,
293,
294,
295,
296,
297,
298,
299,
300,
301,
302,
303,
304,
305,
306,
307,
308,
309,
310,
311,
312,
313,
314,
315,
316,
317,
318,
319,
320,
321,
322,
323,
324,
325,
326,
327,
328,
329,
330,
331,
332,
333,
334,
335,
336,
337,
338,
339,
340,
341,
342,
343,
344,
345,
346,
347,
348,
349,
350,
351,
352,
353,
354,
355,
356,
357
],
"start": 1727,
"length": 11850,
"ending_column": 19,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 22,
"filename_absolute": "/tmp/slither-knh0njyg/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
}
},
"signature": "_bigLottery(address)"
}
}
}
},
{
"name": "RTB2.increaseProfit.value(_shareFee.mul(7).div(10))()",
"type": "node",
"source_mapping": {
"lines": [
283
],
"start": 10743,
"length": 53,
"ending_column": 83,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 30,
"filename_absolute": "/tmp/slither-knh0njyg/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"additional_fields": {
"underlying_type": "external_calls_sending_eth"
},
"type_specific_fields": {
"parent": {
"name": "_bigLottery",
"type": "function",
"source_mapping": {
"lines": [
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
],
"start": 9689,
"length": 1851,
"ending_column": 5,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 18,
"filename_absolute": "/tmp/slither-knh0njyg/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"type_specific_fields": {
"parent": {
"name": "RobTheBank",
"type": "contract",
"source_mapping": {
"lines": [
69,
70,
71,
72,
73,
74,
75,
76,
77,
78,
79,
80,
81,
82,
83,
84,
85,
86,
87,
88,
89,
90,
91,
92,
93,
94,
95,
96,
97,
98,
99,
100,
101,
102,
103,
104,
105,
106,
107,
108,
109,
110,
111,
112,
113,
114,
115,
116,
117,
118,
119,
120,
121,
122,
123,
124,
125,
126,
127,
128,
129,
130,
131,
132,
133,
134,
135,
136,
137,
138,
139,
140,
141,
142,
143,
144,
145,
146,
147,
148,
149,
150,
151,
152,
153,
154,
155,
156,
157,
158,
159,
160,
161,
162,
163,
164,
165,
166,
167,
168,
169,
170,
171,
172,
173,
174,
175,
176,
177,
178,
179,
180,
181,
182,
183,
184,
185,
186,
187,
188,
189,
190,
191,
192,
193,
194,
195,
196,
197,
198,
199,
200,
201,
202,
203,
204,
205,
206,
207,
208,
209,
210,
211,
212,
213,
214,
215,
216,
217,
218,
219,
220,
221,
222,
223,
224,
225,
226,
227,
228,
229,
230,
231,
232,
233,
234,
235,
236,
237,
238,
239,
240,
241,
242,
243,
244,
245,
246,
247,
248,
249,
250,
251,
252,
253,
254,
255,
256,
257,
258,
259,
260,
261,
262,
263,
264,
265,
266,
267,
268,
269,
270,
271,
272,
273,
274,
275,
276,
277,
278,
279,
280,
281,
282,
283,
284,
285,
286,
287,
288,
289,
290,
291,
292,
293,
294,
295,
296,
297,
298,
299,
300,
301,
302,
303,
304,
305,
306,
307,
308,
309,
310,
311,
312,
313,
314,
315,
316,
317,
318,
319,
320,
321,
322,
323,
324,
325,
326,
327,
328,
329,
330,
331,
332,
333,
334,
335,
336,
337,
338,
339,
340,
341,
342,
343,
344,
345,
346,
347,
348,
349,
350,
351,
352,
353,
354,
355,
356,
357
],
"start": 1727,
"length": 11850,
"ending_column": 19,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 22,
"filename_absolute": "/tmp/slither-knh0njyg/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
}
},
"signature": "_bigLottery(address)"
}
}
}
}
],
"locations": [
{
"file": "contracts/Contract.sol",
"name": "_bigLottery",
"type": "function",
"lines": [
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
]
},
{
"file": "contracts/Contract.sol",
"name": "RTB1.increaseProfit.value(_shareFee.mul(3).div(10))()",
"type": "node",
"lines": [
280,
281,
282
]
},
{
"file": "contracts/Contract.sol",
"name": "RTB2.increaseProfit.value(_shareFee.mul(7).div(10))()",
"type": "node",
"lines": [
283
]
},
{
"file": "contracts/Contract.sol",
"name": "RTB1.increaseProfit.value(_shareFee.mul(3).div(10))()",
"type": "node",
"lines": [
280,
281,
282
]
},
{
"file": "contracts/Contract.sol",
"name": "RTB2.increaseProfit.value(_shareFee.mul(7).div(10))()",
"type": "node",
"lines": [
283
]
},
{
"file": "contracts/Contract.sol",
"name": "_winner.transfer(_winnerProfit)",
"type": "node",
"lines": [
288,
289
]
},
{
"file": "contracts/Contract.sol",
"name": "bigId ++",
"type": "node",
"lines": [
294
]
},
{
"file": "contracts/Contract.sol",
"name": "bigRound[bigId].winnerProfit = _winnerProfit",
"type": "node",
"lines": [
291,
292
]
},
{
"file": "contracts/Contract.sol",
"name": "bigRound[bigId].jackpotBalance = _jackpotFee",
"type": "node",
"lines": [
294,
295
]
},
{
"file": "contracts/Contract.sol",
"name": "smallId = 1",
"type": "node",
"lines": [
294
]
}
],
"description": "Reentrancy in RobTheBank._bigLottery(address) (contracts/Contract.sol#257-298):\n\tExternal calls:\n\t- RTB1.increaseProfit.value(_shareFee.mul(3).div(10))() (contracts/Contract.sol#280-282)\n\t- RTB2.increaseProfit.value(_shareFee.mul(7).div(10))() (contracts/Contract.sol#283)\n\tExternal calls sending eth:\n\t- RTB1.increaseProfit.value(_shareFee.mul(3).div(10))() (contracts/Contract.sol#280-282)\n\t- RTB2.increaseProfit.value(_shareFee.mul(7).div(10))() (contracts/Contract.sol#283)\n\t- _winner.transfer(_winnerProfit) (contracts/Contract.sol#288-289)\n\tState variables written after the call(s):\n\t- bigId ++ (contracts/Contract.sol#294)\n\tRobTheBank.bigId (contracts/Contract.sol#112) can be used in cross function reentrancies:\n\t- RobTheBank._bigLottery(address) (contracts/Contract.sol#257-298)\n\t- RobTheBank._buy(uint256,uint256) (contracts/Contract.sol#193-232)\n\t- RobTheBank.bigId (contracts/Contract.sol#112)\n\t- RobTheBank.buy(uint256,address) (contracts/Contract.sol#166-180)\n\t- RobTheBank.buyAgain(uint256) (contracts/Contract.sol#180-193)\n\t- RobTheBank.constructor(address,address) (contracts/Contract.sol#142-151)\n\t- RobTheBank.createWinner() (contracts/Contract.sol#232-242)\n\t- RobTheBank.fallback() (contracts/Contract.sol#152-159)\n\t- RobTheBank.lottery(address,uint256) (contracts/Contract.sol#242-257)\n\t- RobTheBank.startGame() (contracts/Contract.sol#160-165)\n\t- bigRound[bigId].winnerProfit = _winnerProfit (contracts/Contract.sol#291-292)\n\tRobTheBank.bigRound (contracts/Contract.sol#97-99) can be used in cross function reentrancies:\n\t- RobTheBank._bigLottery(address) (contracts/Contract.sol#257-298)\n\t- RobTheBank._buy(uint256,uint256) (contracts/Contract.sol#193-232)\n\t- RobTheBank.bigRound (contracts/Contract.sol#97-99)\n\t- RobTheBank.buyAgain(uint256) (contracts/Contract.sol#180-193)\n\t- RobTheBank.fallback() (contracts/Contract.sol#152-159)\n\t- RobTheBank.getMyProfit(uint256) (contracts/Contract.sol#316-321)\n\t- RobTheBank.withdraw(uint256) (contracts/Contract.sol#298-313)\n\t- bigRound[bigId].jackpotBalance = _jackpotFee (contracts/Contract.sol#294-295)\n\tRobTheBank.bigRound (contracts/Contract.sol#97-99) can be used in cross function reentrancies:\n\t- RobTheBank._bigLottery(address) (contracts/Contract.sol#257-298)\n\t- RobTheBank._buy(uint256,uint256) (contracts/Contract.sol#193-232)\n\t- RobTheBank.bigRound (contracts/Contract.sol#97-99)\n\t- RobTheBank.buyAgain(uint256) (contracts/Contract.sol#180-193)\n\t- RobTheBank.fallback() (contracts/Contract.sol#152-159)\n\t- RobTheBank.getMyProfit(uint256) (contracts/Contract.sol#316-321)\n\t- RobTheBank.withdraw(uint256) (contracts/Contract.sol#298-313)\n\t- smallId = 1 (contracts/Contract.sol#294)\n\tRobTheBank.smallId (contracts/Contract.sol#111-112) can be used in cross function reentrancies:\n\t- RobTheBank._bigLottery(address) (contracts/Contract.sol#257-298)\n\t- RobTheBank._buy(uint256,uint256) (contracts/Contract.sol#193-232)\n\t- RobTheBank.buy(uint256,address) (contracts/Contract.sol#166-180)\n\t- RobTheBank.buyAgain(uint256) (contracts/Contract.sol#180-193)\n\t- RobTheBank.constructor(address,address) (contracts/Contract.sol#142-151)\n\t- RobTheBank.createWinner() (contracts/Contract.sol#232-242)\n\t- RobTheBank.getPrice() (contracts/Contract.sol#321-328)\n\t- RobTheBank.lottery(address,uint256) (contracts/Contract.sol#242-257)\n\t- RobTheBank.smallId (contracts/Contract.sol#111-112)\n\t- RobTheBank.startGame() (contracts/Contract.sol#160-165)"
}
|
| high | reentrancy | slither | Reentrancy in RobTheBank._buy(uint256,uint256) (contracts/Contract.sol#193-232): | 85 | no | — |
viewevidence_json{
"impact": "High",
"detector": "reentrancy-eth",
"elements": [
{
"name": "_buy",
"type": "function",
"source_mapping": {
"lines": [
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
],
"start": 6210,
"length": 2076,
"ending_column": 66,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 31,
"filename_absolute": "/tmp/slither-knh0njyg/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"type_specific_fields": {
"parent": {
"name": "RobTheBank",
"type": "contract",
"source_mapping": {
"lines": [
69,
70,
71,
72,
73,
74,
75,
76,
77,
78,
79,
80,
81,
82,
83,
84,
85,
86,
87,
88,
89,
90,
91,
92,
93,
94,
95,
96,
97,
98,
99,
100,
101,
102,
103,
104,
105,
106,
107,
108,
109,
110,
111,
112,
113,
114,
115,
116,
117,
118,
119,
120,
121,
122,
123,
124,
125,
126,
127,
128,
129,
130,
131,
132,
133,
134,
135,
136,
137,
138,
139,
140,
141,
142,
143,
144,
145,
146,
147,
148,
149,
150,
151,
152,
153,
154,
155,
156,
157,
158,
159,
160,
161,
162,
163,
164,
165,
166,
167,
168,
169,
170,
171,
172,
173,
174,
175,
176,
177,
178,
179,
180,
181,
182,
183,
184,
185,
186,
187,
188,
189,
190,
191,
192,
193,
194,
195,
196,
197,
198,
199,
200,
201,
202,
203,
204,
205,
206,
207,
208,
209,
210,
211,
212,
213,
214,
215,
216,
217,
218,
219,
220,
221,
222,
223,
224,
225,
226,
227,
228,
229,
230,
231,
232,
233,
234,
235,
236,
237,
238,
239,
240,
241,
242,
243,
244,
245,
246,
247,
248,
249,
250,
251,
252,
253,
254,
255,
256,
257,
258,
259,
260,
261,
262,
263,
264,
265,
266,
267,
268,
269,
270,
271,
272,
273,
274,
275,
276,
277,
278,
279,
280,
281,
282,
283,
284,
285,
286,
287,
288,
289,
290,
291,
292,
293,
294,
295,
296,
297,
298,
299,
300,
301,
302,
303,
304,
305,
306,
307,
308,
309,
310,
311,
312,
313,
314,
315,
316,
317,
318,
319,
320,
321,
322,
323,
324,
325,
326,
327,
328,
329,
330,
331,
332,
333,
334,
335,
336,
337,
338,
339,
340,
341,
342,
343,
344,
345,
346,
347,
348,
349,
350,
351,
352,
353,
354,
355,
356,
357
],
"start": 1727,
"length": 11850,
"ending_column": 19,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 22,
"filename_absolute": "/tmp/slither-knh0njyg/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
}
},
"signature": "_buy(uint256,uint256)"
}
},
{
"name": "RTB1.increaseProfit.value(_shareFee.mul(3).div(10))()",
"type": "node",
"source_mapping": {
"lines": [
223,
224
],
"start": 7802,
"length": 53,
"ending_column": 35,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 9,
"filename_absolute": "/tmp/slither-knh0njyg/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"additional_fields": {
"underlying_type": "external_calls"
},
"type_specific_fields": {
"parent": {
"name": "_buy",
"type": "function",
"source_mapping": {
"lines": [
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
],
"start": 6210,
"length": 2076,
"ending_column": 66,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 31,
"filename_absolute": "/tmp/slither-knh0njyg/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"type_specific_fields": {
"parent": {
"name": "RobTheBank",
"type": "contract",
"source_mapping": {
"lines": [
69,
70,
71,
72,
73,
74,
75,
76,
77,
78,
79,
80,
81,
82,
83,
84,
85,
86,
87,
88,
89,
90,
91,
92,
93,
94,
95,
96,
97,
98,
99,
100,
101,
102,
103,
104,
105,
106,
107,
108,
109,
110,
111,
112,
113,
114,
115,
116,
117,
118,
119,
120,
121,
122,
123,
124,
125,
126,
127,
128,
129,
130,
131,
132,
133,
134,
135,
136,
137,
138,
139,
140,
141,
142,
143,
144,
145,
146,
147,
148,
149,
150,
151,
152,
153,
154,
155,
156,
157,
158,
159,
160,
161,
162,
163,
164,
165,
166,
167,
168,
169,
170,
171,
172,
173,
174,
175,
176,
177,
178,
179,
180,
181,
182,
183,
184,
185,
186,
187,
188,
189,
190,
191,
192,
193,
194,
195,
196,
197,
198,
199,
200,
201,
202,
203,
204,
205,
206,
207,
208,
209,
210,
211,
212,
213,
214,
215,
216,
217,
218,
219,
220,
221,
222,
223,
224,
225,
226,
227,
228,
229,
230,
231,
232,
233,
234,
235,
236,
237,
238,
239,
240,
241,
242,
243,
244,
245,
246,
247,
248,
249,
250,
251,
252,
253,
254,
255,
256,
257,
258,
259,
260,
261,
262,
263,
264,
265,
266,
267,
268,
269,
270,
271,
272,
273,
274,
275,
276,
277,
278,
279,
280,
281,
282,
283,
284,
285,
286,
287,
288,
289,
290,
291,
292,
293,
294,
295,
296,
297,
298,
299,
300,
301,
302,
303,
304,
305,
306,
307,
308,
309,
310,
311,
312,
313,
314,
315,
316,
317,
318,
319,
320,
321,
322,
323,
324,
325,
326,
327,
328,
329,
330,
331,
332,
333,
334,
335,
336,
337,
338,
339,
340,
341,
342,
343,
344,
345,
346,
347,
348,
349,
350,
351,
352,
353,
354,
355,
356,
357
],
"start": 1727,
"length": 11850,
"ending_column": 19,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 22,
"filename_absolute": "/tmp/slither-knh0njyg/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
}
},
"signature": "_buy(uint256,uint256)"
}
}
}
},
{
"name": "RTB2.increaseProfit.value(_shareFee.mul(7).div(10))()",
"type": "node",
"source_mapping": {
"lines": [
224,
225,
226
],
"start": 7883,
"length": 53,
"ending_column": 3,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 63,
"filename_absolute": "/tmp/slither-knh0njyg/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"additional_fields": {
"underlying_type": "external_calls"
},
"type_specific_fields": {
"parent": {
"name": "_buy",
"type": "function",
"source_mapping": {
"lines": [
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
],
"start": 6210,
"length": 2076,
"ending_column": 66,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 31,
"filename_absolute": "/tmp/slither-knh0njyg/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"type_specific_fields": {
"parent": {
"name": "RobTheBank",
"type": "contract",
"source_mapping": {
"lines": [
69,
70,
71,
72,
73,
74,
75,
76,
77,
78,
79,
80,
81,
82,
83,
84,
85,
86,
87,
88,
89,
90,
91,
92,
93,
94,
95,
96,
97,
98,
99,
100,
101,
102,
103,
104,
105,
106,
107,
108,
109,
110,
111,
112,
113,
114,
115,
116,
117,
118,
119,
120,
121,
122,
123,
124,
125,
126,
127,
128,
129,
130,
131,
132,
133,
134,
135,
136,
137,
138,
139,
140,
141,
142,
143,
144,
145,
146,
147,
148,
149,
150,
151,
152,
153,
154,
155,
156,
157,
158,
159,
160,
161,
162,
163,
164,
165,
166,
167,
168,
169,
170,
171,
172,
173,
174,
175,
176,
177,
178,
179,
180,
181,
182,
183,
184,
185,
186,
187,
188,
189,
190,
191,
192,
193,
194,
195,
196,
197,
198,
199,
200,
201,
202,
203,
204,
205,
206,
207,
208,
209,
210,
211,
212,
213,
214,
215,
216,
217,
218,
219,
220,
221,
222,
223,
224,
225,
226,
227,
228,
229,
230,
231,
232,
233,
234,
235,
236,
237,
238,
239,
240,
241,
242,
243,
244,
245,
246,
247,
248,
249,
250,
251,
252,
253,
254,
255,
256,
257,
258,
259,
260,
261,
262,
263,
264,
265,
266,
267,
268,
269,
270,
271,
272,
273,
274,
275,
276,
277,
278,
279,
280,
281,
282,
283,
284,
285,
286,
287,
288,
289,
290,
291,
292,
293,
294,
295,
296,
297,
298,
299,
300,
301,
302,
303,
304,
305,
306,
307,
308,
309,
310,
311,
312,
313,
314,
315,
316,
317,
318,
319,
320,
321,
322,
323,
324,
325,
326,
327,
328,
329,
330,
331,
332,
333,
334,
335,
336,
337,
338,
339,
340,
341,
342,
343,
344,
345,
346,
347,
348,
349,
350,
351,
352,
353,
354,
355,
356,
357
],
"start": 1727,
"length": 11850,
"ending_column": 19,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 22,
"filename_absolute": "/tmp/slither-knh0njyg/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
}
},
"signature": "_buy(uint256,uint256)"
}
}
}
},
{
"name": "bigRound[bigId].totalKey = bigRound[bigId].totalKey.add(_amount)",
"type": "node",
"source_mapping": {
"lines": [
229
],
"start": 8119,
"length": 64,
"ending_column": 81,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 17,
"filename_absolute": "/tmp/slither-knh0njyg/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"additional_fields": {
"variable_name": "bigRound",
"underlying_type": "variables_written"
},
"type_specific_fields": {
"parent": {
"name": "_buy",
"type": "function",
"source_mapping": {
"lines": [
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
],
"start": 6210,
"length": 2076,
"ending_column": 66,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 31,
"filename_absolute": "/tmp/slither-knh0njyg/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"type_specific_fields": {
"parent": {
"name": "RobTheBank",
"type": "contract",
"source_mapping": {
"lines": [
69,
70,
71,
72,
73,
74,
75,
76,
77,
78,
79,
80,
81,
82,
83,
84,
85,
86,
87,
88,
89,
90,
91,
92,
93,
94,
95,
96,
97,
98,
99,
100,
101,
102,
103,
104,
105,
106,
107,
108,
109,
110,
111,
112,
113,
114,
115,
116,
117,
118,
119,
120,
121,
122,
123,
124,
125,
126,
127,
128,
129,
130,
131,
132,
133,
134,
135,
136,
137,
138,
139,
140,
141,
142,
143,
144,
145,
146,
147,
148,
149,
150,
151,
152,
153,
154,
155,
156,
157,
158,
159,
160,
161,
162,
163,
164,
165,
166,
167,
168,
169,
170,
171,
172,
173,
174,
175,
176,
177,
178,
179,
180,
181,
182,
183,
184,
185,
186,
187,
188,
189,
190,
191,
192,
193,
194,
195,
196,
197,
198,
199,
200,
201,
202,
203,
204,
205,
206,
207,
208,
209,
210,
211,
212,
213,
214,
215,
216,
217,
218,
219,
220,
221,
222,
223,
224,
225,
226,
227,
228,
229,
230,
231,
232,
233,
234,
235,
236,
237,
238,
239,
240,
241,
242,
243,
244,
245,
246,
247,
248,
249,
250,
251,
252,
253,
254,
255,
256,
257,
258,
259,
260,
261,
262,
263,
264,
265,
266,
267,
268,
269,
270,
271,
272,
273,
274,
275,
276,
277,
278,
279,
280,
281,
282,
283,
284,
285,
286,
287,
288,
289,
290,
291,
292,
293,
294,
295,
296,
297,
298,
299,
300,
301,
302,
303,
304,
305,
306,
307,
308,
309,
310,
311,
312,
313,
314,
315,
316,
317,
318,
319,
320,
321,
322,
323,
324,
325,
326,
327,
328,
329,
330,
331,
332,
333,
334,
335,
336,
337,
338,
339,
340,
341,
342,
343,
344,
345,
346,
347,
348,
349,
350,
351,
352,
353,
354,
355,
356,
357
],
"start": 1727,
"length": 11850,
"ending_column": 19,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 22,
"filename_absolute": "/tmp/slither-knh0njyg/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
}
},
"signature": "_buy(uint256,uint256)"
}
}
}
}
],
"locations": [
{
"file": "contracts/Contract.sol",
"name": "_buy",
"type": "function",
"lines": [
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
]
},
{
"file": "contracts/Contract.sol",
"name": "RTB1.increaseProfit.value(_shareFee.mul(3).div(10))()",
"type": "node",
"lines": [
223,
224
]
},
{
"file": "contracts/Contract.sol",
"name": "RTB2.increaseProfit.value(_shareFee.mul(7).div(10))()",
"type": "node",
"lines": [
224,
225,
226
]
},
{
"file": "contracts/Contract.sol",
"name": "bigRound[bigId].totalKey = bigRound[bigId].totalKey.add(_amount)",
"type": "node",
"lines": [
229
]
}
],
"description": "Reentrancy in RobTheBank._buy(uint256,uint256) (contracts/Contract.sol#193-232):\n\tExternal calls:\n\t- RTB1.increaseProfit.value(_shareFee.mul(3).div(10))() (contracts/Contract.sol#223-224)\n\t- RTB2.increaseProfit.value(_shareFee.mul(7).div(10))() (contracts/Contract.sol#224-226)\n\tState variables written after the call(s):\n\t- bigRound[bigId].totalKey = bigRound[bigId].totalKey.add(_amount) (contracts/Contract.sol#229)\n\tRobTheBank.bigRound (contracts/Contract.sol#97-99) can be used in cross function reentrancies:\n\t- RobTheBank._bigLottery(address) (contracts/Contract.sol#257-298)\n\t- RobTheBank._buy(uint256,uint256) (contracts/Contract.sol#193-232)\n\t- RobTheBank.bigRound (contracts/Contract.sol#97-99)\n\t- RobTheBank.buyAgain(uint256) (contracts/Contract.sol#180-193)\n\t- RobTheBank.fallback() (contracts/Contract.sol#152-159)\n\t- RobTheBank.getMyProfit(uint256) (contracts/Contract.sol#316-321)\n\t- RobTheBank.withdraw(uint256) (contracts/Contract.sol#298-313)"
}
|
| high | other | slither | RobTheBank._bigLottery(address) (contracts/Contract.sol#257-298) sends eth to arbitrary user | 85 | no | — |
viewevidence_json{
"impact": "High",
"detector": "arbitrary-send-eth",
"elements": [
{
"name": "_bigLottery",
"type": "function",
"source_mapping": {
"lines": [
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
],
"start": 9689,
"length": 1851,
"ending_column": 5,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 18,
"filename_absolute": "/tmp/slither-knh0njyg/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"type_specific_fields": {
"parent": {
"name": "RobTheBank",
"type": "contract",
"source_mapping": {
"lines": [
69,
70,
71,
72,
73,
74,
75,
76,
77,
78,
79,
80,
81,
82,
83,
84,
85,
86,
87,
88,
89,
90,
91,
92,
93,
94,
95,
96,
97,
98,
99,
100,
101,
102,
103,
104,
105,
106,
107,
108,
109,
110,
111,
112,
113,
114,
115,
116,
117,
118,
119,
120,
121,
122,
123,
124,
125,
126,
127,
128,
129,
130,
131,
132,
133,
134,
135,
136,
137,
138,
139,
140,
141,
142,
143,
144,
145,
146,
147,
148,
149,
150,
151,
152,
153,
154,
155,
156,
157,
158,
159,
160,
161,
162,
163,
164,
165,
166,
167,
168,
169,
170,
171,
172,
173,
174,
175,
176,
177,
178,
179,
180,
181,
182,
183,
184,
185,
186,
187,
188,
189,
190,
191,
192,
193,
194,
195,
196,
197,
198,
199,
200,
201,
202,
203,
204,
205,
206,
207,
208,
209,
210,
211,
212,
213,
214,
215,
216,
217,
218,
219,
220,
221,
222,
223,
224,
225,
226,
227,
228,
229,
230,
231,
232,
233,
234,
235,
236,
237,
238,
239,
240,
241,
242,
243,
244,
245,
246,
247,
248,
249,
250,
251,
252,
253,
254,
255,
256,
257,
258,
259,
260,
261,
262,
263,
264,
265,
266,
267,
268,
269,
270,
271,
272,
273,
274,
275,
276,
277,
278,
279,
280,
281,
282,
283,
284,
285,
286,
287,
288,
289,
290,
291,
292,
293,
294,
295,
296,
297,
298,
299,
300,
301,
302,
303,
304,
305,
306,
307,
308,
309,
310,
311,
312,
313,
314,
315,
316,
317,
318,
319,
320,
321,
322,
323,
324,
325,
326,
327,
328,
329,
330,
331,
332,
333,
334,
335,
336,
337,
338,
339,
340,
341,
342,
343,
344,
345,
346,
347,
348,
349,
350,
351,
352,
353,
354,
355,
356,
357
],
"start": 1727,
"length": 11850,
"ending_column": 19,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 22,
"filename_absolute": "/tmp/slither-knh0njyg/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
}
},
"signature": "_bigLottery(address)"
}
},
{
"name": "RTB1.increaseProfit.value(_shareFee.mul(3).div(10))()",
"type": "node",
"source_mapping": {
"lines": [
280,
281,
282
],
"start": 10658,
"length": 53,
"ending_column": 34,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 109,
"filename_absolute": "/tmp/slither-knh0njyg/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"type_specific_fields": {
"parent": {
"name": "_bigLottery",
"type": "function",
"source_mapping": {
"lines": [
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
],
"start": 9689,
"length": 1851,
"ending_column": 5,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 18,
"filename_absolute": "/tmp/slither-knh0njyg/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"type_specific_fields": {
"parent": {
"name": "RobTheBank",
"type": "contract",
"source_mapping": {
"lines": [
69,
70,
71,
72,
73,
74,
75,
76,
77,
78,
79,
80,
81,
82,
83,
84,
85,
86,
87,
88,
89,
90,
91,
92,
93,
94,
95,
96,
97,
98,
99,
100,
101,
102,
103,
104,
105,
106,
107,
108,
109,
110,
111,
112,
113,
114,
115,
116,
117,
118,
119,
120,
121,
122,
123,
124,
125,
126,
127,
128,
129,
130,
131,
132,
133,
134,
135,
136,
137,
138,
139,
140,
141,
142,
143,
144,
145,
146,
147,
148,
149,
150,
151,
152,
153,
154,
155,
156,
157,
158,
159,
160,
161,
162,
163,
164,
165,
166,
167,
168,
169,
170,
171,
172,
173,
174,
175,
176,
177,
178,
179,
180,
181,
182,
183,
184,
185,
186,
187,
188,
189,
190,
191,
192,
193,
194,
195,
196,
197,
198,
199,
200,
201,
202,
203,
204,
205,
206,
207,
208,
209,
210,
211,
212,
213,
214,
215,
216,
217,
218,
219,
220,
221,
222,
223,
224,
225,
226,
227,
228,
229,
230,
231,
232,
233,
234,
235,
236,
237,
238,
239,
240,
241,
242,
243,
244,
245,
246,
247,
248,
249,
250,
251,
252,
253,
254,
255,
256,
257,
258,
259,
260,
261,
262,
263,
264,
265,
266,
267,
268,
269,
270,
271,
272,
273,
274,
275,
276,
277,
278,
279,
280,
281,
282,
283,
284,
285,
286,
287,
288,
289,
290,
291,
292,
293,
294,
295,
296,
297,
298,
299,
300,
301,
302,
303,
304,
305,
306,
307,
308,
309,
310,
311,
312,
313,
314,
315,
316,
317,
318,
319,
320,
321,
322,
323,
324,
325,
326,
327,
328,
329,
330,
331,
332,
333,
334,
335,
336,
337,
338,
339,
340,
341,
342,
343,
344,
345,
346,
347,
348,
349,
350,
351,
352,
353,
354,
355,
356,
357
],
"start": 1727,
"length": 11850,
"ending_column": 19,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 22,
"filename_absolute": "/tmp/slither-knh0njyg/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
}
},
"signature": "_bigLottery(address)"
}
}
}
},
{
"name": "RTB2.increaseProfit.value(_shareFee.mul(7).div(10))()",
"type": "node",
"source_mapping": {
"lines": [
283
],
"start": 10743,
"length": 53,
"ending_column": 83,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 30,
"filename_absolute": "/tmp/slither-knh0njyg/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"type_specific_fields": {
"parent": {
"name": "_bigLottery",
"type": "function",
"source_mapping": {
"lines": [
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
],
"start": 9689,
"length": 1851,
"ending_column": 5,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 18,
"filename_absolute": "/tmp/slither-knh0njyg/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"type_specific_fields": {
"parent": {
"name": "RobTheBank",
"type": "contract",
"source_mapping": {
"lines": [
69,
70,
71,
72,
73,
74,
75,
76,
77,
78,
79,
80,
81,
82,
83,
84,
85,
86,
87,
88,
89,
90,
91,
92,
93,
94,
95,
96,
97,
98,
99,
100,
101,
102,
103,
104,
105,
106,
107,
108,
109,
110,
111,
112,
113,
114,
115,
116,
117,
118,
119,
120,
121,
122,
123,
124,
125,
126,
127,
128,
129,
130,
131,
132,
133,
134,
135,
136,
137,
138,
139,
140,
141,
142,
143,
144,
145,
146,
147,
148,
149,
150,
151,
152,
153,
154,
155,
156,
157,
158,
159,
160,
161,
162,
163,
164,
165,
166,
167,
168,
169,
170,
171,
172,
173,
174,
175,
176,
177,
178,
179,
180,
181,
182,
183,
184,
185,
186,
187,
188,
189,
190,
191,
192,
193,
194,
195,
196,
197,
198,
199,
200,
201,
202,
203,
204,
205,
206,
207,
208,
209,
210,
211,
212,
213,
214,
215,
216,
217,
218,
219,
220,
221,
222,
223,
224,
225,
226,
227,
228,
229,
230,
231,
232,
233,
234,
235,
236,
237,
238,
239,
240,
241,
242,
243,
244,
245,
246,
247,
248,
249,
250,
251,
252,
253,
254,
255,
256,
257,
258,
259,
260,
261,
262,
263,
264,
265,
266,
267,
268,
269,
270,
271,
272,
273,
274,
275,
276,
277,
278,
279,
280,
281,
282,
283,
284,
285,
286,
287,
288,
289,
290,
291,
292,
293,
294,
295,
296,
297,
298,
299,
300,
301,
302,
303,
304,
305,
306,
307,
308,
309,
310,
311,
312,
313,
314,
315,
316,
317,
318,
319,
320,
321,
322,
323,
324,
325,
326,
327,
328,
329,
330,
331,
332,
333,
334,
335,
336,
337,
338,
339,
340,
341,
342,
343,
344,
345,
346,
347,
348,
349,
350,
351,
352,
353,
354,
355,
356,
357
],
"start": 1727,
"length": 11850,
"ending_column": 19,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 22,
"filename_absolute": "/tmp/slither-knh0njyg/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
}
},
"signature": "_bigLottery(address)"
}
}
}
},
{
"name": "_winner.transfer(_winnerProfit)",
"type": "node",
"source_mapping": {
"lines": [
288,
289
],
"start": 11074,
"length": 31,
"ending_column": 2,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 57,
"filename_absolute": "/tmp/slither-knh0njyg/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"type_specific_fields": {
"parent": {
"name": "_bigLottery",
"type": "function",
"source_mapping": {
"lines": [
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
],
"start": 9689,
"length": 1851,
"ending_column": 5,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 18,
"filename_absolute": "/tmp/slither-knh0njyg/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
},
"type_specific_fields": {
"parent": {
"name": "RobTheBank",
"type": "contract",
"source_mapping": {
"lines": [
69,
70,
71,
72,
73,
74,
75,
76,
77,
78,
79,
80,
81,
82,
83,
84,
85,
86,
87,
88,
89,
90,
91,
92,
93,
94,
95,
96,
97,
98,
99,
100,
101,
102,
103,
104,
105,
106,
107,
108,
109,
110,
111,
112,
113,
114,
115,
116,
117,
118,
119,
120,
121,
122,
123,
124,
125,
126,
127,
128,
129,
130,
131,
132,
133,
134,
135,
136,
137,
138,
139,
140,
141,
142,
143,
144,
145,
146,
147,
148,
149,
150,
151,
152,
153,
154,
155,
156,
157,
158,
159,
160,
161,
162,
163,
164,
165,
166,
167,
168,
169,
170,
171,
172,
173,
174,
175,
176,
177,
178,
179,
180,
181,
182,
183,
184,
185,
186,
187,
188,
189,
190,
191,
192,
193,
194,
195,
196,
197,
198,
199,
200,
201,
202,
203,
204,
205,
206,
207,
208,
209,
210,
211,
212,
213,
214,
215,
216,
217,
218,
219,
220,
221,
222,
223,
224,
225,
226,
227,
228,
229,
230,
231,
232,
233,
234,
235,
236,
237,
238,
239,
240,
241,
242,
243,
244,
245,
246,
247,
248,
249,
250,
251,
252,
253,
254,
255,
256,
257,
258,
259,
260,
261,
262,
263,
264,
265,
266,
267,
268,
269,
270,
271,
272,
273,
274,
275,
276,
277,
278,
279,
280,
281,
282,
283,
284,
285,
286,
287,
288,
289,
290,
291,
292,
293,
294,
295,
296,
297,
298,
299,
300,
301,
302,
303,
304,
305,
306,
307,
308,
309,
310,
311,
312,
313,
314,
315,
316,
317,
318,
319,
320,
321,
322,
323,
324,
325,
326,
327,
328,
329,
330,
331,
332,
333,
334,
335,
336,
337,
338,
339,
340,
341,
342,
343,
344,
345,
346,
347,
348,
349,
350,
351,
352,
353,
354,
355,
356,
357
],
"start": 1727,
"length": 11850,
"ending_column": 19,
"is_dependency": false,
"filename_short": "contracts/Contract.sol",
"starting_column": 22,
"filename_absolute": "/tmp/slither-knh0njyg/contracts/Contract.sol",
"filename_relative": "contracts/Contract.sol"
}
},
"signature": "_bigLottery(address)"
}
}
}
}
],
"locations": [
{
"file": "contracts/Contract.sol",
"name": "_bigLottery",
"type": "function",
"lines": [
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
]
},
{
"file": "contracts/Contract.sol",
"name": "RTB1.increaseProfit.value(_shareFee.mul(3).div(10))()",
"type": "node",
"lines": [
280,
281,
282
]
},
{
"file": "contracts/Contract.sol",
"name": "RTB2.increaseProfit.value(_shareFee.mul(7).div(10))()",
"type": "node",
"lines": [
283
]
},
{
"file": "contracts/Contract.sol",
"name": "_winner.transfer(_winnerProfit)",
"type": "node",
"lines": [
288,
289
]
}
],
"description": "RobTheBank._bigLottery(address) (contracts/Contract.sol#257-298) sends eth to arbitrary user\n\tDangerous calls:\n\t- RTB1.increaseProfit.value(_shareFee.mul(3).div(10))() (contracts/Contract.sol#280-282)\n\t- RTB2.increaseProfit.value(_shareFee.mul(7).div(10))() (contracts/Contract.sol#283)\n\t- _winner.transfer(_winnerProfit) (contracts/Contract.sol#288-289)"
}
|
| medium | access_control | codex | Service can call lottery before round end and without winKey set | 75 | no | — |
viewevidence_json{
"evidence": "`lottery()` only checks `_winner != address(0)` and balance > winnerProfit; it does not check endTime or `winKey` initialization, while `winKey` starts at 0.",
"locations": [
"contracts/Contract.sol:lottery"
],
"recommendation": "Require `smallRound[bigId][smallId].endTime < block.timestamp` and `winKey != 0` (or a separate `winnerChosen` flag) in `lottery()`, and only allow it after `createWinner()` succeeds.",
"exploit_scenario": "`lottery()` lacks checks that the round has ended or that `winKey` was generated. Because `winKey` defaults to 0, the service can call `lottery` immediately after a first purchase where key ID 0 exists, awarding `winnerProfit` early to a colluding address and potentially triggering `_bigLottery` outside the intended game flow."
}
|
| 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": 8
}
|