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

Analysis Run

9e8b9e72-45c4-4568-9bc5-55a35670600e

complete
Chain ID
1
Address
Block Number
Created
Sat, Jan 3, 2026 10:06 PM
Review Summary

What survived the funnel

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

Confirmed
0
Validated
0
Source
Verified
Review Backing
Present
Best current signal
Dividend distribution multiplies payouts when listed token sum is zero
crit 0 high 0 direct contract
Review Checklist
1. Read the findings table first. Ignore raw jobs until the result looks real.
2. Confirm attacker control, not just the existence of a sink.
3. Confirm money or privilege impact.
4. Keep it if the behavior is real. Kill it if this is normal proxy, admin, or upgrade plumbing.

Processing Jobs

Status & attempts
ID Type Status Attempts Heartbeat
31468 report.consolidate complete 1 / 1 3 months ago
77434 artifact.fetch complete 1 / 3 1 week ago
77435 tool.cast_disasm complete 1 / 3 1 week ago
77436 analysis.bundle complete 1 / 3 1 week ago
77437 capability.graph complete 1 / 3 1 week ago
77438 detector.run complete 1 / 3 1 week ago
77439 validation.fork complete 1 / 3 1 week ago

Artifact

Runtime bytecode: available
Creation TX:
Deployer:
Proxy: no
Implementation:
Verified Source: yes

Slither

tool.slither

No slither job recorded yet.

Codex

report.consolidate
Job Status
complete
Attempts
1 / 1
Findings
1
No findings?
no
Summary
Dividend distribution over-credits when no listed holder has tokens, enabling a multi-address drain on sells.
View stderr
[codex:358591] OpenAI Codex v0.77.0 (research preview)
[codex:358591] --------
[codex:358591] workdir: /tmp/codex-multi-m_u_yhs4
[codex:358591] model: gpt-5.2-codex
[codex:358591] provider: openai
[codex:358591] approval: never
[codex:358591] sandbox: read-only
[codex:358591] reasoning effort: xhigh
[codex:358591] reasoning summaries: auto
[codex:358591] session id: 019b85e2-4ed1-7aa0-b63a-1f850a0c5100
[codex:358591] --------
[codex:358591] user
[codex:358591] You are a profit-focused exploit hunter. Your ONLY goal is finding ways to extract value (ETH, tokens, NFTs) from this contract.
[codex:358591] 
[codex:358591] Read `AUDIT_BUNDLE.txt` completely before concluding. Treat `lib/` and `@openzeppelin/` as trusted unless misused.
[codex:358591] 
[codex:358591] ONLY REPORT if you find a CONCRETE, EXPLOITABLE path to profit. We do NOT care about:
[codex:358591] - Gas inefficiency, code quality, naming, or best practices
[codex:358591] - Theoretical vulnerabilities without a clear extraction path
[codex:358591] - Centralization risks (admin can rug) - assume admin keys are secure
[codex:358591] - Front-running unless it enables theft beyond MEV
[codex:358591] - DoS, griefing, or issues that don't result in attacker profit
[codex:358591] - Missing events, view function issues, or informational findings
[codex:358591] 
[codex:358591] HIGH-VALUE PATTERNS TO HUNT:
[codex:358591] - Reentrancy: external calls before state updates that allow double-withdrawal
[codex:358591] - Access control: missing/bypassable auth on withdraw, transfer, or mint functions
[codex:358591] - Flash loan attacks: borrow -> manipulate -> profit in single tx
[codex:358591] - Price oracle manipulation: TWAP with short window, spot price reads, stale prices
[codex:358591] - Signature replay: missing nonce, chainId, or deadline in permit/meta-tx
[codex:358591] - Proxy hijacking: unprotected initialize(), storage collision, UUPS without auth
[codex:358591] - Accounting errors: rounding that favors attacker, share inflation, first depositor attacks
[codex:358591] - Unchecked external calls: return value ignored on token transfers enabling fake tokens
[codex:358591] - Cross-function reentrancy: state read in function A, modified via reentrant call, used stale in A
[codex:358591] 
[codex:358591] For each finding, you MUST provide:
[codex:358591] 1. Exact file and line numbers of vulnerable code
[codex:358591] 2. Step-by-step exploit transaction sequence
[codex:358591] 3. Estimated profit potential (order of magnitude: contract balance, LP reserves, etc.)
[codex:358591] 
[codex:358591] If no concrete profit path exists: set no_findings=true. Do NOT pad with low-severity noise.
[codex:358591] 
[codex:358591] Output MUST be valid JSON matching the provided schema.
[codex:358591] - severity: info, low, medium, high, critical (use high/critical ONLY for clear extraction paths)
[codex:358591] - category: access_control, reentrancy, math, oracle, upgradeability, auth, other
[codex:358591] mcp startup: no servers
[codex:358591] 
[codex:358591] thinking
[codex:358591] **Preparing to locate audit instructions**
[codex:358591] exec
[codex:358591] /bin/bash -lc ls in /tmp/codex-multi-m_u_yhs4 succeeded in 5ms:
[codex:358591] AUDIT_BUNDLE.txt
[codex:358591] codex-output-schema.json
[codex:358591] contracts
[codex:358591] 
[codex:358591] thinking
[codex:358591] **Reading AUDIT_BUNDLE.txt**
[codex:358591] exec
[codex:358591] /bin/bash -lc 'cat AUDIT_BUNDLE.txt' in /tmp/codex-multi-m_u_yhs4 succeeded in 5ms:
[codex:358591] This file concatenates first-party Solidity sources only (lib/@openzeppelin excluded).
[codex:358591] 
[codex:358591] ================================================================================
[codex:358591] FILE: contracts/Contract.sol
[codex:358591] ================================================================================
[codex:358591] pragma solidity ^0.4.20;
[codex:358591] 
[codex:358591] /*
[codex:358591] 
[codex:358591] 
[codex:358591]                                                                                                                                                             
[codex:358591]                                                                                                                                                             
[codex:358591] TTTTTTTTTTTTTTTTTTTTTTT                                                                                                                                     
[codex:358591] T:::::::::::::::::::::T                                                                                                                                     
[codex:358591] T:::::::::::::::::::::T                                                                                                                                     
[codex:358591] T:::::TT:::::::TT:::::T                                                                                                                                     
[codex:358591] TTTTTT  T:::::T  TTTTTTrrrrr   rrrrrrrrr       eeeeeeeeeeee      aaaaaaaaaaaaa       ssssssssss   uuuuuu    uuuuuu  rrrrr   rrrrrrrrr       eeeeeeeeeeee    
[codex:358591]         T:::::T        r::::rrr:::::::::r    ee::::::::::::ee    a::::::::::::a    ss::::::::::s  u::::u    u::::u  r::::rrr:::::::::r    ee::::::::::::ee  
[codex:358591]         T:::::T        r:::::::::::::::::r  e::::::eeeee:::::ee  aaaaaaaaa:::::a ss:::::::::::::s u::::u    u::::u  r:::::::::::::::::r  e::::::eeeee:::::ee
[codex:358591]         T:::::T        rr::::::rrrrr::::::re::::::e     e:::::e           a::::a s::::::ssss:::::su::::u    u::::u  rr::::::rrrrr::::::re::::::e     e:::::e
[codex:358591] 
[codex:358591] thinking
[codex:358591] **Analyzing contract for exploit potential**
[codex:358591] exec
[codex:358591] /bin/bash -lc 'nl -ba contracts/Contract.sol' in /tmp/codex-multi-m_u_yhs4 succeeded in 6ms:
[codex:358591]      1	pragma solidity ^0.4.20;
[codex:358591]      2	
[codex:358591]      3	/*
[codex:358591]      4	
[codex:358591]      5	
[codex:358591]      6	                                                                                                                                                            
[codex:358591]      7	                                                                                                                                                            
[codex:358591]      8	TTTTTTTTTTTTTTTTTTTTTTT                                                                                                                                     
[codex:358591]      9	T:::::::::::::::::::::T                                                                                                                                     
[codex:358591]     10	T:::::::::::::::::::::T                                                                                                                                     
[codex:358591]     11	T:::::TT:::::::TT:::::T                                                                                                                                     
[codex:358591]     12	TTTTTT  T:::::T  TTTTTTrrrrr   rrrrrrrrr       eeeeeeeeeeee      aaaaaaaaaaaaa       ssssssssss   uuuuuu    uuuuuu  rrrrr   rrrrrrrrr       eeeeeeeeeeee    
[codex:358591]     13	        T:::::T        r::::rrr:::::::::r    ee::::::::::::ee    a::::::::::::a    ss::::::::::s  u::::u    u::::u  r::::rrr:::::::::r    ee::::::::::::ee  
[codex:358591]     14	        T:::::T        r:::::::::::::::::r  e::::::eeeee:::::ee  aaaaaaaaa:::::a ss:::::::::::::s u::::u    u::::u  r:::::::::::::::::r  e::::::eeeee:::::ee
[codex:358591]     15	        T:::::T        rr::::::rrrrr::::::re::::::e     e:::::e           a::::a s::::::ssss:::::su::::u    u::::u  rr::::::rrrrr::::::re::::::e     e:::::e
[codex:358591]     16	        T:::::T         r:::::r     r:::::re:::::::eeeee::::::e    aaaaaaa:::::a  s:::::s  ssssss u::::u    u::::u   r:::::r     r:::::re:::::::eeeee::::::e
[codex:358591]     17	        T:::::T         r:::::r     rrrrrrre:::::::::::::::::e   aa::::::::::::a    s::::::s      u::::u    u::::u   r:::::r     rrrrrrre:::::::::::::::::e 
[codex:358591]     18	        T:::::T         r:::::r            e::::::eeeeeeeeeee   a::::aaaa::::::a       s::::::s   u::::u    u::::u   r:::::r            e::::::eeeeeeeeeee  
[codex:358591]     19	        T:::::T         r:::::r            e:::::::e           a::::a    a:::::a ssssss   s:::::s u:::::uuuu:::::u   r:::::r            e:::::::e           
[codex:358591]     20	      TT:::::::TT       r:::::r            e::::::::e          a::::a    a:::::a s:::::ssss::::::su:::::::::::::::uu r:::::r            e::::::::e          
[codex:358591] 
[codex:358591] 
[codex:358591] 
[codex:358591] thinking
[codex:358591] **Analyzing dividend distribution logic and potential exploits**
[codex:358591] thinking
[codex:358591] **Identifying overflow of dividends with zero token supply**
[codex:358591] 
[codex:358591] This thought explores a bug where distributing dividends when the total token balances are zero floods each address in the holder list with a full dividend share, multiplying the owed payouts far beyond what the contract should pay. I’m thinking through how selling the last tokens triggers this and what exploit path lets an attacker profit by creating many addresses to inflate this dividend credit.
[codex:358591] thinking
[codex:358591] **Uncovering repeated dividend over-credit via unlisted holders**
[codex:358591] 
[codex:358591] I’m parsing how profits multiply when tokens reside in unlisted addresses while listed holders hold zero, letting sells trigger full dividend credits to all listed addresses each time. This deepens the exploit by showing repeated large withdrawals are possible with coordinated token transfers and sells, and I’m tracking relevant code locations for clarity.
[codex:358591] exec
[codex:358591] /bin/bash -lc "nl -ba contracts/Contract.sol | sed -n '420,480p'" in /tmp/codex-multi-m_u_yhs4 succeeded in 6ms:
[codex:358591]    420	
[codex:358591]    421	     
[codex:358591]    422	        // delivery service
[codex:358591]    423	        _customerAddress.transfer(_sellingWithdraw);
[codex:358591]    424	        
[codex:358591]    425	        // fire event
[codex:358591]    426	        onSellingWithdraw(_customerAddress, _sellingWithdraw);
[codex:358591]    427	    }
[codex:358591]    428	    
[codex:358591]    429	    
[codex:358591]    430	    
[codex:358591]    431	     /**
[codex:358591]    432	     * Sell tokens.
[codex:358591]    433	     * Remember, there's a 10% fee here as well.
[codex:358591]    434	     */
[codex:358591]    435	    function sell(uint256 _amountOfTokens)
[codex:358591]    436	        onlybelievers ()
[codex:358591]    437	        public
[codex:358591]    438	    {
[codex:358591]    439	      
[codex:358591] 
[codex:358591] thinking
[codex:358591] **Adding line numbers with sed**
[codex:358591] exec
[codex:358591] /bin/bash -lc "nl -ba contracts/Contract.sol | sed -n '924,972p'" in /tmp/codex-multi-m_u_yhs4 succeeded in 6ms:
[codex:358591]    924	                    )*(tokens_ - 1e18)
[codex:358591]    925	                ),(tokenPriceIncremental_*((tokens_**2-tokens_)/1e18))/2
[codex:358591]    926	            )
[codex:358591]    927	        /1e18);
[codex:358591]    928	        return _etherReceived;
[codex:358591]    929	    }
[codex:358591]    930	    
[codex:358591]    931	    //calculate profitPerShare as per holdings
[codex:358591]    932	    function profitPerShareAsPerHoldings(uint256 calculatedDividend)  internal {
[codex:358591]    933	    
[codex:358591]    934	       //calculate number of token 
[codex:358591]    935	       uint256 noOfTokens_;
[codex:358591]    936	        tempCalculatedDividends=calculatedDividend;
[codex:358591]    937	
[codex:358591]    938	       for(uint i=0;i<contractTokenHolderAddresses_.length;i++){
[codex:358591]    939	         
[codex:358591]    940	         noOfTokens_+= tokenBalanceLedger_[contractTokenHolderAddresses_[i]];
[codex:358591]    941	
[codex:358591]    942	        }
[codex:358591]    943	        
[codex:358591] 
[codex:358591] thinking
[codex:358591] **Analyzing dividend distribution exploit scenario**
[codex:358591] exec
[codex:358591] /bin/bash -lc "nl -ba contracts/Contract.sol | sed -n '760,810p'" in /tmp/codex-multi-m_u_yhs4 succeeded in 6ms:
[codex:358591]    760	    {
[codex:358591]    761	        // data setup
[codex:358591]    762	        address _customerAddress = msg.sender;
[codex:358591]    763	        
[codex:358591]    764	        //check if address 
[codex:358591]    765	        tempIncomingEther=_incomingEthereum;
[codex:358591]    766	        
[codex:358591]    767	                bool isFound=false;
[codex:358591]    768	                
[codex:358591]    769	                for(uint k=0;k<contractTokenHolderAddresses_.length;k++){
[codex:358591]    770	                    
[codex:358591]    771	                    if(contractTokenHolderAddresses_[k] ==_customerAddress){
[codex:358591]    772	                        
[codex:358591]    773	                     isFound=true;
[codex:358591]    774	                    break;
[codex:358591]    775	                        
[codex:358591]    776	                    }
[codex:358591]    777	                }
[codex:358591]    778	    
[codex:358591]    779	    
[codex:358591] 
[codex:358591] thinking
[codex:358591] **Generating detailed JSON report**
[codex:358591] 
[codex:358591] I'm carefully assembling the JSON output describing the critical dividend over-credit vulnerability, including exact file-line references, a clear step-by-step exploit scenario, and profit potential—all following the prescribed schema and formatting rules.
[codex:358591] codex
[codex:358591] {"no_findings":false,"summary":"Dividend distribution over-credits when no listed holder has tokens, enabling a multi-address drain on sells.","findings":[{"severity":"critical","category":"math","title":"Dividend distribution multiplies payouts when listed token sum is zero","exploit_scenario":"1) Attacker creates N addresses A1..AN, each calls `buy` with minimal ETH so they are appended to `contractTokenHolderAddresses_`, then transfers all tokens to a fresh address B that has never bought (so B is not in the list). Now all listed addresses have zero balance while B holds all tokens. 2) B calls `sell` for some or all tokens. The sell burns tokens and then calls `profitPerShareAsPerHoldings`. Because `noOfTokens_` is computed only from listed addresses and is now 0, the `noOfTokens_==0` branch credits the full `calculatedDividend` (10% of the sale value) to every listed address, multiplying dividends by N. 3) Each Ai calls `withdraw` to receive 80% of that full dividend, while B calls `sellingWithdraw` to collect the 90% sale proceeds. This can be repeated with multiple sells. Profit potential: up to the entire contract ETH balance, scaling linearly with the number of list addresses (≈0.08 * N * sale value + 0.90 * sale value per sell).","recommendation":"In `profitPerShareAsPerHoldings`, do not distribute dividends when `noOfTokens_ == 0`; instead skip distribution or revert. Also track holders in a way that includes transfer recipients or compute totals from `tokenSupply_` rather than a sparse address list.","evidence":"`profitPerShareAsPerHoldings` sums balances only from `contractTokenHolderAddresses_` and, when that sum is zero, credits the full `calculatedDividend` to each listed address. `sell` burns tokens before calling the distribution, and the holder list only grows on purchases, so tokens can be moved to unlisted addresses via transfer, leaving listed balances at zero and triggering the over-credit branch.","locations":["contracts/Contract.sol:435","contracts/Contract.sol:455","contracts/Contract.sol:465","contracts/Contract.sol:780","contracts/Contract.sol:938","contracts/Contract.sol:960"]}]}
[codex:358591] tokens used
[codex:358591] 73,008
[codex:358591] {"no_findings":false,"summary":"Dividend distribution over-credits when no listed holder has tokens, enabling a multi-address drain on sells.","findings":[{"severity":"critical","category":"math","title":"Dividend distribution multiplies payouts when listed token sum is zero","exploit_scenario":"1) Attacker creates N addresses A1..AN, each calls `buy` with minimal ETH so they are appended to `contractTokenHolderAddresses_`, then transfers all tokens to a fresh address B that has never bought (so B is not in the list). Now all listed addresses have zero balance while B holds all tokens. 2) B calls `sell` for some or all tokens. The sell burns tokens and then calls `profitPerShareAsPerHoldings`. Because `noOfTokens_` is computed only from listed addresses and is now 0, the `noOfTokens_==0` branch credits the full `calculatedDividend` (10% of the sale value) to every listed address, multiplying dividends by N. 3) Each Ai calls `withdraw` to receive 80% of that full dividend, while B calls `sellingWithdraw` to collect the 90% sale proceeds. This can be repeated with multiple sells. Profit potential: up to the entire contract ETH balance, scaling linearly with the number of list addresses (≈0.08 * N * sale value + 0.90 * sale value per sell).","recommendation":"In `profitPerShareAsPerHoldings`, do not distribute dividends when `noOfTokens_ == 0`; instead skip distribution or revert. Also track holders in a way that includes transfer recipients or compute totals from `tokenSupply_` rather than a sparse address list.","evidence":"`profitPerShareAsPerHoldings` sums balances only from `contractTokenHolderAddresses_` and, when that sum is zero, credits the full `calculatedDividend` to each listed address. `sell` burns tokens before calling the distribution, and the holder list only grows on purchases, so tokens can be moved to unlisted addresses via transfer, leaving listed balances at zero and triggering the over-credit branch.","locations":["contracts/Contract.sol:435","contracts/Contract.sol:455","contracts/Contract.sol:465","contracts/Contract.sol:780","contracts/Contract.sol:938","contracts/Contract.sol:960"]}]}
Metadata
{
    "codex": {
        "ran_at": "2026-01-03T22:06:37.146683+00:00",
        "returncode": 0
    },
    "summary": "Dividend distribution over-credits when no listed holder has tokens, enabling a multi-address drain on sells.",
    "raw_final": {
        "summary": "Dividend distribution over-credits when no listed holder has tokens, enabling a multi-address drain on sells.",
        "findings": [
            {
                "title": "Dividend distribution multiplies payouts when listed token sum is zero",
                "category": "math",
                "evidence": "`profitPerShareAsPerHoldings` sums balances only from `contractTokenHolderAddresses_` and, when that sum is zero, credits the full `calculatedDividend` to each listed address. `sell` burns tokens before calling the distribution, and the holder list only grows on purchases, so tokens can be moved to unlisted addresses via transfer, leaving listed balances at zero and triggering the over-credit branch.",
                "severity": "critical",
                "locations": [
                    "contracts/Contract.sol:435",
                    "contracts/Contract.sol:455",
                    "contracts/Contract.sol:465",
                    "contracts/Contract.sol:780",
                    "contracts/Contract.sol:938",
                    "contracts/Contract.sol:960"
                ],
                "recommendation": "In `profitPerShareAsPerHoldings`, do not distribute dividends when `noOfTokens_ == 0`; instead skip distribution or revert. Also track holders in a way that includes transfer recipients or compute totals from `tokenSupply_` rather than a sparse address list.",
                "exploit_scenario": "1) Attacker creates N addresses A1..AN, each calls `buy` with minimal ETH so they are appended to `contractTokenHolderAddresses_`, then transfers all tokens to a fresh address B that has never bought (so B is not in the list). Now all listed addresses have zero balance while B holds all tokens. 2) B calls `sell` for some or all tokens. The sell burns tokens and then calls `profitPerShareAsPerHoldings`. Because `noOfTokens_` is computed only from listed addresses and is now 0, the `noOfTokens_==0` branch credits the full `calculatedDividend` (10% of the sale value) to every listed address, multiplying dividends by N. 3) Each Ai calls `withdraw` to receive 80% of that full dividend, while B calls `sellingWithdraw` to collect the 90% sale proceeds. This can be repeated with multiple sells. Profit potential: up to the entire contract ETH balance, scaling linearly with the number of list addresses (\u22480.08 * N * sale value + 0.90 * sale value per sell)."
            }
        ],
        "no_findings": false
    },
    "no_findings": false,
    "schema_version": 1
}

Opcode Heuristics

tool.cast_disasm
Delegatecall
0
Selfdestruct
1
CREATE2
0
CALL-family (heavy)
4
EXT*/BALANCE
2
Total opcodes
3876
Flags
selfdestruct_present
View cast disassembly output
00000000: PUSH1 0x60
00000002: PUSH1 0x40
00000004: MSTORE
00000005: PUSH1 0x04
00000007: CALLDATASIZE
00000008: LT
00000009: PUSH2 0x017e
0000000c: JUMPI
0000000d: PUSH4 0xffffffff
00000012: PUSH29 0x0100000000000000000000000000000000000000000000000000000000
00000030: PUSH1 0x00
00000032: CALLDATALOAD
00000033: DIV
00000034: AND
00000035: PUSH3 0x65318b
00000039: DUP2
0000003a: EQ
0000003b: PUSH2 0x018c
0000003e: JUMPI
0000003f: DUP1
00000040: PUSH4 0x06fdde03
00000045: EQ
00000046: PUSH2 0x01bd
00000049: JUMPI
0000004a: DUP1
0000004b: PUSH4 0x10d0ffdd
00000050: EQ
00000051: PUSH2 0x0247
00000054: JUMPI
00000055: DUP1
00000056: PUSH4 0x18160ddd
0000005b: EQ
0000005c: PUSH2 0x025d
0000005f: JUMPI
00000060: DUP1
00000061: PUSH4 0x22609373
00000066: EQ
00000067: PUSH2 0x0270
0000006a: JUMPI
0000006b: DUP1
0000006c: PUSH4 0x27defa1f
00000071: EQ
00000072: PUSH2 0x0286
00000075: JUMPI
00000076: DUP1
00000077: PUSH4 0x313ce567
0000007c: EQ
0000007d: PUSH2 0x02ad
00000080: JUMPI
00000081: DUP1
00000082: PUSH4 0x392efb52
00000087: EQ
00000088: PUSH2 0x02d6
0000008b: JUMPI
0000008c: DUP1
0000008d: PUSH4 0x3ccfd60b
00000092: EQ
00000093: PUSH2 0x02ec
00000096: JUMPI
00000097: DUP1
00000098: PUSH4 0x4b750334
0000009d: EQ
0000009e: PUSH2 0x0301
000000a1: JUMPI
000000a2: DUP1
000000a3: PUSH4 0x56d399e8
000000a8: EQ
000000a9: PUSH2 0x0314
000000ac: JUMPI
000000ad: DUP1
000000ae: PUSH4 0x5ed9ebfc
000000b3: EQ
000000b4: PUSH2 0x0327
000000b7: JUMPI
000000b8: DUP1
000000b9: PUSH4 0x688abbf7
000000be: EQ
000000bf: PUSH2 0x033a
000000c2: JUMPI
000000c3: DUP1
000000c4: PUSH4 0x6b2f4632
000000c9: EQ
000000ca: PUSH2 0x0352
000000cd: JUMPI
000000ce: DUP1
000000cf: PUSH4 0x70a08231
000000d4: EQ
000000d5: PUSH2 0x0365
000000d8: JUMPI
000000d9: DUP1
000000da: PUSH4 0x8328b610
000000df: EQ
000000e0: PUSH2 0x0384
000000e3: JUMPI
000000e4: DUP1
000000e5: PUSH4 0x8620410b
000000ea: EQ
000000eb: PUSH2 0x039a
000000ee: JUMPI
000000ef: DUP1
000000f0: PUSH4 0x89135ae9
000000f5: EQ
000000f6: PUSH2 0x03ad
000000f9: JUMPI
000000fa: DUP1
000000fb: PUSH4 0x949e8acd
00000100: EQ
00000101: PUSH2 0x03c8
00000104: JUMPI
00000105: DUP1
00000106: PUSH4 0x95d89b41
0000010b: EQ
0000010c: PUSH2 0x03db
0000010f: JUMPI
00000110: DUP1
00000111: PUSH4 0xa8e04f34
00000116: EQ
00000117: PUSH2 0x03ee
0000011a: JUMPI
0000011b: DUP1
0000011c: PUSH4 0xa9059cbb
00000121: EQ
00000122: PUSH2 0x0401
00000125: JUMPI
00000126: DUP1
00000127: PUSH4 0xb84c8246
0000012c: EQ
0000012d: PUSH2 0x0423
00000130: JUMPI
00000131: DUP1
00000132: PUSH4 0xc47f0027
00000137: EQ
00000138: PUSH2 0x0474
0000013b: JUMPI
0000013c: DUP1
0000013d: PUSH4 0xcb4f6758
00000142: EQ
00000143: PUSH2 0x04c5
00000146: JUMPI
00000147: DUP1
00000148: PUSH4 0xe4849b32
0000014d: EQ
0000014e: PUSH2 0x04d8
00000151: JUMPI
00000152: DUP1
00000153: PUSH4 0xe9fad8ee
00000158: EQ
00000159: PUSH2 0x04ee
0000015c: JUMPI
0000015d: DUP1
0000015e: PUSH4 0xeba9f92d
00000163: EQ
00000164: PUSH2 0x0501
00000167: JUMPI
00000168: DUP1
00000169: PUSH4 0xf088d547
0000016e: EQ
0000016f: PUSH2 0x0514
00000172: JUMPI
00000173: DUP1
00000174: PUSH4 0xfdb5a03e
00000179: EQ
0000017a: PUSH2 0x0528
0000017d: JUMPI
0000017e: JUMPDEST
0000017f: PUSH2 0x0189
00000182: CALLVALUE
00000183: PUSH1 0x00
00000185: PUSH2 0x053b
00000188: JUMP
00000189: JUMPDEST
0000018a: POP
0000018b: STOP
0000018c: JUMPDEST
0000018d: CALLVALUE
0000018e: ISZERO
0000018f: PUSH2 0x0197
00000192: JUMPI
00000193: PUSH1 0x00
00000195: DUP1
00000196: REVERT
00000197: JUMPDEST
00000198: PUSH2 0x01ab
0000019b: PUSH1 0x01
0000019d: PUSH1 0xa0
0000019f: PUSH1 0x02
000001a1: EXP
000001a2: SUB
000001a3: PUSH1 0x04
000001a5: CALLDATALOAD
000001a6: AND
000001a7: PUSH2 0x07e3
000001aa: JUMP
000001ab: JUMPDEST
000001ac: PUSH1 0x40
000001ae: MLOAD
000001af: SWAP1
000001b0: DUP2
000001b1: MSTORE
000001b2: PUSH1 0x20
000001b4: ADD
000001b5: PUSH1 0x40
000001b7: MLOAD
000001b8: DUP1
000001b9: SWAP2
000001ba: SUB
000001bb: SWAP1
000001bc: RETURN
000001bd: JUMPDEST
000001be: CALLVALUE
000001bf: ISZERO
000001c0: PUSH2 0x01c8
000001c3: JUMPI
000001c4: PUSH1 0x00
000001c6: DUP1
000001c7: REVERT
000001c8: JUMPDEST
000001c9: PUSH2 0x01d0
000001cc: PUSH2 0x07fe
000001cf: JUMP
000001d0: JUMPDEST
000001d1: PUSH1 0x40
000001d3: MLOAD
000001d4: PUSH1 0x20
000001d6: DUP1
000001d7: DUP3
000001d8: MSTORE
000001d9: DUP2
000001da: SWAP1
000001db: DUP2
000001dc: ADD
000001dd: DUP4
000001de: DUP2
000001df: DUP2
000001e0: MLOAD
000001e1: DUP2
000001e2: MSTORE
000001e3: PUSH1 0x20
000001e5: ADD
000001e6: SWAP2
000001e7: POP
000001e8: DUP1
000001e9: MLOAD
000001ea: SWAP1
000001eb: PUSH1 0x20
000001ed: ADD
000001ee: SWAP1
000001ef: DUP1
000001f0: DUP4
000001f1: DUP4
000001f2: PUSH1 0x00
000001f4: JUMPDEST
000001f5: DUP4
000001f6: DUP2
000001f7: LT
000001f8: ISZERO
000001f9: PUSH2 0x020c
000001fc: JUMPI
000001fd: DUP1
000001fe: DUP3
000001ff: ADD
00000200: MLOAD
00000201: DUP4
00000202: DUP3
00000203: ADD
00000204: MSTORE
00000205: PUSH1 0x20
00000207: ADD
00000208: PUSH2 0x01f4
0000020b: JUMP
0000020c: JUMPDEST
0000020d: POP
0000020e: POP
0000020f: POP
00000210: POP
00000211: SWAP1
00000212: POP
00000213: SWAP1
00000214: DUP2
00000215: ADD
00000216: SWAP1
00000217: PUSH1 0x1f
00000219: AND
0000021a: DUP1
0000021b: ISZERO
0000021c: PUSH2 0x0239
0000021f: JUMPI
00000220: DUP1
00000221: DUP3
00000222: SUB
00000223: DUP1
00000224: MLOAD
00000225: PUSH1 0x01
00000227: DUP4
00000228: PUSH1 0x20
0000022a: SUB
0000022b: PUSH2 0x0100
0000022e: EXP
0000022f: SUB
00000230: NOT
00000231: AND
00000232: DUP2
00000233: MSTORE
00000234: PUSH1 0x20
00000236: ADD
00000237: SWAP2
00000238: POP
00000239: JUMPDEST
0000023a: POP
0000023b: SWAP3
0000023c: POP
0000023d: POP
0000023e: POP
0000023f: PUSH1 0x40
00000241: MLOAD
00000242: DUP1
00000243: SWAP2
00000244: SUB
00000245: SWAP1
00000246: RETURN
00000247: JUMPDEST
00000248: CALLVALUE
00000249: ISZERO
0000024a: PUSH2 0x0252
0000024d: JUMPI
0000024e: PUSH1 0x00
00000250: DUP1
00000251: REVERT
00000252: JUMPDEST
00000253: PUSH2 0x01ab
00000256: PUSH1 0x04
00000258: CALLDATALOAD
00000259: PUSH2 0x089c
0000025c: JUMP
0000025d: JUMPDEST
0000025e: CALLVALUE
0000025f: ISZERO
00000260: PUSH2 0x0268
00000263: JUMPI
00000264: PUSH1 0x00
00000266: DUP1
00000267: REVERT
00000268: JUMPDEST
00000269: PUSH2 0x01ab
0000026c: PUSH2 0x08d1
0000026f: JUMP
00000270: JUMPDEST
00000271: CALLVALUE
00000272: ISZERO
00000273: PUSH2 0x027b
00000276: JUMPI
00000277: PUSH1 0x00
00000279: DUP1
0000027a: REVERT
0000027b: JUMPDEST
0000027c: PUSH2 0x01ab
0000027f: PUSH1 0x04
00000281: CALLDATALOAD
00000282: PUSH2 0x08d8
00000285: JUMP
00000286: JUMPDEST
00000287: CALLVALUE
00000288: ISZERO
00000289: PUSH2 0x0291
0000028c: JUMPI
0000028d: PUSH1 0x00
0000028f: DUP1
00000290: REVERT
00000291: JUMPDEST
00000292: PUSH2 0x0299
00000295: PUSH2 0x0915
00000298: JUMP
00000299: JUMPDEST
0000029a: PUSH1 0x40
0000029c: MLOAD
0000029d: SWAP1
0000029e: ISZERO
0000029f: ISZERO
000002a0: DUP2
000002a1: MSTORE
000002a2: PUSH1 0x20
000002a4: ADD
000002a5: PUSH1 0x40
000002a7: MLOAD
000002a8: DUP1
000002a9: SWAP2
000002aa: SUB
000002ab: SWAP1
000002ac: RETURN
000002ad: JUMPDEST
000002ae: CALLVALUE
000002af: ISZERO
000002b0: PUSH2 0x02b8
000002b3: JUMPI
000002b4: PUSH1 0x00
000002b6: DUP1
000002b7: REVERT
000002b8: JUMPDEST
000002b9: PUSH2 0x02c0
000002bc: PUSH2 0x091e
000002bf: JUMP
000002c0: JUMPDEST
000002c1: PUSH1 0x40
000002c3: MLOAD
000002c4: PUSH1 0xff
000002c6: SWAP1
000002c7: SWAP2
000002c8: AND
000002c9: DUP2
000002ca: MSTORE
000002cb: PUSH1 0x20
000002cd: ADD
000002ce: PUSH1 0x40
000002d0: MLOAD
000002d1: DUP1
000002d2: SWAP2
000002d3: SUB
000002d4: SWAP1
000002d5: RETURN
000002d6: JUMPDEST
000002d7: CALLVALUE
000002d8: ISZERO
000002d9: PUSH2 0x02e1
000002dc: JUMPI
000002dd: PUSH1 0x00
000002df: DUP1
000002e0: REVERT
000002e1: JUMPDEST
000002e2: PUSH2 0x0299
000002e5: PUSH1 0x04
000002e7: CALLDATALOAD
000002e8: PUSH2 0x0923
000002eb: JUMP
000002ec: JUMPDEST
000002ed: CALLVALUE
000002ee: ISZERO
000002ef: PUSH2 0x02f7
000002f2: JUMPI
000002f3: PUSH1 0x00
000002f5: DUP1
000002f6: REVERT
000002f7: JUMPDEST
000002f8: PUSH2 0x02ff
000002fb: PUSH2 0x0938
000002fe: JUMP
000002ff: JUMPDEST
00000300: STOP
00000301: JUMPDEST
00000302: CALLVALUE
00000303: ISZERO
00000304: PUSH2 0x030c
00000307: JUMPI
00000308: PUSH1 0x00
0000030a: DUP1
0000030b: REVERT
0000030c: JUMPDEST
0000030d: PUSH2 0x01ab
00000310: PUSH2 0x0ab0
00000313: JUMP
00000314: JUMPDEST
00000315: CALLVALUE
00000316: ISZERO
00000317: PUSH2 0x031f
0000031a: JUMPI
0000031b: PUSH1 0x00
0000031d: DUP1
0000031e: REVERT
0000031f: JUMPDEST
00000320: PUSH2 0x01ab
00000323: PUSH2 0x0af2
00000326: JUMP
00000327: JUMPDEST
00000328: CALLVALUE
00000329: ISZERO
0000032a: PUSH2 0x0332
0000032d: JUMPI
0000032e: PUSH1 0x00
00000330: DUP1
00000331: REVERT
00000332: JUMPDEST
00000333: PUSH2 0x01ab
00000336: PUSH2 0x0af8
00000339: JUMP
0000033a: JUMPDEST
0000033b: CALLVALUE
0000033c: ISZERO
0000033d: PUSH2 0x0345
00000340: JUMPI
00000341: PUSH1 0x00
00000343: DUP1
00000344: REVERT
00000345: JUMPDEST
00000346: PUSH2 0x01ab
00000349: PUSH1 0x04
0000034b: CALLDATALOAD
0000034c: ISZERO
0000034d: ISZERO
0000034e: PUSH2 0x0afe
00000351: JUMP
00000352: JUMPDEST
00000353: CALLVALUE
00000354: ISZERO
00000355: PUSH2 0x035d
00000358: JUMPI
00000359: PUSH1 0x00
0000035b: DUP1
0000035c: REVERT
0000035d: JUMPDEST
0000035e: PUSH2 0x01ab
00000361: PUSH2 0x0b41
00000364: JUMP
00000365: JUMPDEST
00000366: CALLVALUE
00000367: ISZERO
00000368: PUSH2 0x0370
0000036b: JUMPI
0000036c: PUSH1 0x00
0000036e: DUP1
0000036f: REVERT
00000370: JUMPDEST
00000371: PUSH2 0x01ab
00000374: PUSH1 0x01
00000376: PUSH1 0xa0
00000378: PUSH1 0x02
0000037a: EXP
0000037b: SUB
0000037c: PUSH1 0x04
0000037e: CALLDATALOAD
0000037f: AND
00000380: PUSH2 0x0b4f
00000383: JUMP
00000384: JUMPDEST
00000385: CALLVALUE
00000386: ISZERO
00000387: PUSH2 0x038f
0000038a: JUMPI
0000038b: PUSH1 0x00
0000038d: DUP1
0000038e: REVERT
0000038f: JUMPDEST
00000390: PUSH2 0x02ff
00000393: PUSH1 0x04
00000395: CALLDATALOAD
00000396: PUSH2 0x0b6a
00000399: JUMP
0000039a: JUMPDEST
0000039b: CALLVALUE
0000039c: ISZERO
0000039d: PUSH2 0x03a5
000003a0: JUMPI
000003a1: PUSH1 0x00
000003a3: DUP1
000003a4: REVERT
000003a5: JUMPDEST
000003a6: PUSH2 0x01ab
000003a9: PUSH2 0x0bc1
000003ac: JUMP
000003ad: JUMPDEST
000003ae: CALLVALUE
000003af: ISZERO
000003b0: PUSH2 0x03b8
000003b3: JUMPI
000003b4: PUSH1 0x00
000003b6: DUP1
000003b7: REVERT
000003b8: JUMPDEST
000003b9: PUSH2 0x02ff
000003bc: PUSH1 0x04
000003be: CALLDATALOAD
000003bf: PUSH1 0x24
000003c1: CALLDATALOAD
000003c2: ISZERO
000003c3: ISZERO
000003c4: PUSH2 0x0bf6
000003c7: JUMP
000003c8: JUMPDEST
000003c9: CALLVALUE
000003ca: ISZERO
000003cb: PUSH2 0x03d3
000003ce: JUMPI
000003cf: PUSH1 0x00
000003d1: DUP1
000003d2: REVERT
000003d3: JUMPDEST
000003d4: PUSH2 0x01ab
000003d7: PUSH2 0x0c68
000003da: JUMP
000003db: JUMPDEST
000003dc: CALLVALUE
000003dd: ISZERO
000003de: PUSH2 0x03e6
000003e1: JUMPI
000003e2: PUSH1 0x00
000003e4: DUP1
000003e5: REVERT
000003e6: JUMPDEST
000003e7: PUSH2 0x01d0
000003ea: PUSH2 0x0c7a
000003ed: JUMP
000003ee: JUMPDEST
000003ef: CALLVALUE
000003f0: ISZERO
000003f1: PUSH2 0x03f9
000003f4: JUMPI
000003f5: PUSH1 0x00
000003f7: DUP1
000003f8: REVERT
000003f9: JUMPDEST
000003fa: PUSH2 0x02ff
000003fd: PUSH2 0x0ce5
00000400: JUMP
00000401: JUMPDEST
00000402: CALLVALUE
00000403: ISZERO
00000404: PUSH2 0x040c
00000407: JUMPI
00000408: PUSH1 0x00
0000040a: DUP1
0000040b: REVERT
0000040c: JUMPDEST
0000040d: PUSH2 0x0299
00000410: PUSH1 0x01
00000412: PUSH1 0xa0
00000414: PUSH1 0x02
00000416: EXP
00000417: SUB
00000418: PUSH1 0x04
0000041a: CALLDATALOAD
0000041b: AND
0000041c: PUSH1 0x24
0000041e: CALLDATALOAD
0000041f: PUSH2 0x0d43
00000422: JUMP
00000423: JUMPDEST
00000424: CALLVALUE
00000425: ISZERO
00000426: PUSH2 0x042e
00000429: JUMPI
0000042a: PUSH1 0x00
0000042c: DUP1
0000042d: REVERT
0000042e: JUMPDEST
0000042f: PUSH2 0x02ff
00000432: PUSH1 0x04
00000434: PUSH1 0x24
00000436: DUP2
00000437: CALLDATALOAD
00000438: DUP2
00000439: DUP2
0000043a: ADD
0000043b: SWAP1
0000043c: DUP4
0000043d: ADD
0000043e: CALLDATALOAD
0000043f: DUP1
00000440: PUSH1 0x20
00000442: PUSH1 0x1f
00000444: DUP3
00000445: ADD
00000446: DUP2
00000447: SWAP1
00000448: DIV
00000449: DUP2
0000044a: MUL
0000044b: ADD
0000044c: PUSH1 0x40
0000044e: MLOAD
0000044f: SWAP1
00000450: DUP2
00000451: ADD
00000452: PUSH1 0x40
00000454: MSTORE
00000455: DUP2
00000456: DUP2
00000457: MSTORE
00000458: SWAP3
00000459: SWAP2
0000045a: SWAP1
0000045b: PUSH1 0x20
0000045d: DUP5
0000045e: ADD
0000045f: DUP4
00000460: DUP4
00000461: DUP1
00000462: DUP3
00000463: DUP5
00000464: CALLDATACOPY
00000465: POP
00000466: SWAP5
00000467: SWAP7
00000468: POP
00000469: PUSH2 0x0eab
0000046c: SWAP6
0000046d: POP
0000046e: POP
0000046f: POP
00000470: POP
00000471: POP
00000472: POP
00000473: JUMP
00000474: JUMPDEST
00000475: CALLVALUE
00000476: ISZERO
00000477: PUSH2 0x047f
0000047a: JUMPI
0000047b: PUSH1 0x00
0000047d: DUP1
0000047e: REVERT
0000047f: JUMPDEST
00000480: PUSH2 0x02ff
00000483: PUSH1 0x04
00000485: PUSH1 0x24
00000487: DUP2
00000488: CALLDATALOAD
00000489: DUP2
0000048a: DUP2
0000048b: ADD
0000048c: SWAP1
0000048d: DUP4
0000048e: ADD
0000048f: CALLDATALOAD
00000490: DUP1
00000491: PUSH1 0x20
00000493: PUSH1 0x1f
00000495: DUP3
00000496: ADD
00000497: DUP2
00000498: SWAP1
00000499: DIV
0000049a: DUP2
0000049b: MUL
0000049c: ADD
0000049d: PUSH1 0x40
0000049f: MLOAD
000004a0: SWAP1
000004a1: DUP2
000004a2: ADD
000004a3: PUSH1 0x40
000004a5: MSTORE
000004a6: DUP2
000004a7: DUP2
000004a8: MSTORE
000004a9: SWAP3
000004aa: SWAP2
000004ab: SWAP1
000004ac: PUSH1 0x20
000004ae: DUP5
000004af: ADD
000004b0: DUP4
000004b1: DUP4
000004b2: DUP1
000004b3: DUP3
000004b4: DUP5
000004b5: CALLDATACOPY
000004b6: POP
000004b7: SWAP5
000004b8: SWAP7
000004b9: POP
000004ba: PUSH2 0x0f14
000004bd: SWAP6
000004be: POP
000004bf: POP
000004c0: POP
000004c1: POP
000004c2: POP
000004c3: POP
000004c4: JUMP
000004c5: JUMPDEST
000004c6: CALLVALUE
000004c7: ISZERO
000004c8: PUSH2 0x04d0
000004cb: JUMPI
000004cc: PUSH1 0x00
000004ce: DUP1
000004cf: REVERT
000004d0: JUMPDEST
000004d1: PUSH2 0x02ff
000004d4: PUSH2 0x0f78
000004d7: JUMP
000004d8: JUMPDEST
000004d9: CALLVALUE
000004da: ISZERO
000004db: PUSH2 0x04e3
000004de: JUMPI
000004df: PUSH1 0x00
000004e1: DUP1
000004e2: REVERT
000004e3: JUMPDEST
000004e4: PUSH2 0x02ff
000004e7: PUSH1 0x04
000004e9: CALLDATALOAD
000004ea: PUSH2 0x102b
000004ed: JUMP
000004ee: JUMPDEST
000004ef: CALLVALUE
000004f0: ISZERO
000004f1: PUSH2 0x04f9
000004f4: JUMPI
000004f5: PUSH1 0x00
000004f7: DUP1
000004f8: REVERT
000004f9: JUMPDEST
000004fa: PUSH2 0x02ff
000004fd: PUSH2 0x1166
00000500: JUMP
00000501: JUMPDEST
00000502: CALLVALUE
00000503: ISZERO
00000504: PUSH2 0x050c
00000507: JUMPI
00000508: PUSH1 0x00
0000050a: DUP1
0000050b: REVERT
0000050c: JUMPDEST
0000050d: PUSH2 0x01ab
00000510: PUSH2 0x119d
00000513: JUMP
00000514: JUMPDEST
00000515: PUSH2 0x01ab
00000518: PUSH1 0x01
0000051a: PUSH1 0xa0
0000051c: PUSH1 0x02
0000051e: EXP
0000051f: SUB
00000520: PUSH1 0x04
00000522: CALLDATALOAD
00000523: AND
00000524: PUSH2 0x11b9
00000527: JUMP
00000528: JUMPDEST
00000529: CALLVALUE
0000052a: ISZERO
0000052b: PUSH2 0x0533
0000052e: JUMPI
0000052f: PUSH1 0x00
00000531: DUP1
00000532: REVERT
00000533: JUMPDEST
00000534: PUSH2 0x02ff
00000537: PUSH2 0x11c5
0000053a: JUMP
0000053b: JUMPDEST
0000053c: PUSH1 0x0d
0000053e: DUP3
0000053f: SWAP1
00000540: SSTORE
00000541: PUSH1 0x00
00000543: CALLER
00000544: DUP2
00000545: DUP1
00000546: DUP1
00000547: JUMPDEST
00000548: PUSH1 0x08
0000054a: SLOAD
0000054b: DUP3
0000054c: LT
0000054d: ISZERO
0000054e: PUSH2 0x0599
00000551: JUMPI
00000552: DUP4
00000553: PUSH1 0x01
00000555: PUSH1 0xa0
00000557: PUSH1 0x02
00000559: EXP
0000055a: SUB
0000055b: AND
0000055c: PUSH1 0x08
0000055e: DUP4
0000055f: DUP2
00000560: SLOAD
00000561: DUP2
00000562: LT
00000563: ISZERO
00000564: ISZERO
00000565: PUSH2 0x056a
00000568: JUMPI
00000569: INVALID
0000056a: JUMPDEST
0000056b: PUSH1 0x00
0000056d: SWAP2
0000056e: DUP3
0000056f: MSTORE
00000570: PUSH1 0x20
00000572: SWAP1
00000573: SWAP2
00000574: KECCAK256
00000575: ADD
00000576: SLOAD
00000577: PUSH1 0x01
00000579: PUSH1 0xa0
0000057b: PUSH1 0x02
0000057d: EXP
0000057e: SUB
0000057f: AND
00000580: EQ
00000581: ISZERO
00000582: PUSH2 0x058e
00000585: JUMPI
00000586: PUSH1 0x01
00000588: SWAP3
00000589: POP
0000058a: PUSH2 0x0599
0000058d: JUMP
0000058e: JUMPDEST
0000058f: PUSH1 0x01
00000591: SWAP1
00000592: SWAP2
00000593: ADD
00000594: SWAP1
00000595: PUSH2 0x0547
00000598: JUMP
00000599: JUMPDEST
0000059a: DUP3
0000059b: ISZERO
0000059c: ISZERO
0000059d: PUSH2 0x05f1
000005a0: JUMPI
000005a1: PUSH1 0x0c
000005a3: DUP1
000005a4: SLOAD
000005a5: PUSH1 0x01
000005a7: SWAP1
000005a8: DUP2
000005a9: ADD
000005aa: SWAP1
000005ab: SWAP2
000005ac: SSTORE
000005ad: PUSH1 0x08
000005af: DUP1
000005b0: SLOAD
000005b1: SWAP1
000005b2: SWAP2
000005b3: DUP2
000005b4: ADD
000005b5: PUSH2 0x05be
000005b8: DUP4
000005b9: DUP3
000005ba: PUSH2 0x1621
000005bd: JUMP
000005be: JUMPDEST
000005bf: POP
000005c0: PUSH1 0x00
000005c2: SWAP2
000005c3: DUP3
000005c4: MSTORE
000005c5: PUSH1 0x20
000005c7: SWAP1
000005c8: SWAP2
000005c9: KECCAK256
000005ca: ADD
000005cb: DUP1
000005cc: SLOAD
000005cd: PUSH20 0xffffffffffffffffffffffffffffffffffffffff
000005e2: NOT
000005e3: AND
000005e4: PUSH1 0x01
000005e6: PUSH1 0xa0
000005e8: PUSH1 0x02
000005ea: EXP
000005eb: SUB
000005ec: DUP7
000005ed: AND
000005ee: OR
000005ef: SWAP1
000005f0: SSTORE
000005f1: JUMPDEST
000005f2: PUSH2 0x0600
000005f5: DUP8
000005f6: PUSH1 0x55
000005f8: PUSH1 0x64
000005fa: PUSH1 0x12
000005fc: PUSH2 0x129a
000005ff: JUMP
00000600: JUMPDEST
00000601: PUSH1 0x0e
00000603: SSTORE
00000604: PUSH2 0x061a
00000607: PUSH2 0x0615
0000060a: DUP9
0000060b: PUSH1 0x55
0000060d: PUSH1 0x64
0000060f: PUSH1 0x12
00000611: PUSH2 0x129a
00000614: JUMP
00000615: JUMPDEST
00000616: PUSH2 0x12df
00000619: JUMP
0000061a: JUMPDEST
0000061b: SWAP1
0000061c: POP
0000061d: PUSH1 0x00
0000061f: PUSH1 0x09
00000621: SLOAD
00000622: GT
00000623: ISZERO
00000624: PUSH2 0x063b
00000627: JUMPI
00000628: PUSH2 0x0633
0000062b: PUSH1 0x09
0000062d: SLOAD
0000062e: DUP3
0000062f: PUSH2 0x1370
00000632: JUMP
00000633: JUMPDEST
00000634: PUSH1 0x09
00000636: SSTORE
00000637: PUSH2 0x0641
0000063a: JUMP
0000063b: JUMPDEST
0000063c: PUSH1 0x09
0000063e: DUP2
0000063f: SWAP1
00000640: SSTORE
00000641: JUMPDEST
00000642: PUSH1 0x01
00000644: PUSH1 0xa0
00000646: PUSH1 0x02
00000648: EXP
00000649: SUB
0000064a: DUP5
0000064b: AND
0000064c: PUSH1 0x00
0000064e: SWAP1
0000064f: DUP2
00000650: MSTORE
00000651: PUSH1 0x03
00000653: PUSH1 0x20
00000655: MSTORE
00000656: PUSH1 0x40
00000658: SWAP1
00000659: KECCAK256
0000065a: SLOAD
0000065b: PUSH2 0x0664
0000065e: SWAP1
0000065f: DUP3
00000660: PUSH2 0x1370
00000663: JUMP
00000664: JUMPDEST
00000665: PUSH1 0x01
00000667: PUSH1 0xa0
00000669: PUSH1 0x02
0000066b: EXP
0000066c: SUB
0000066d: DUP6
0000066e: AND
0000066f: PUSH1 0x00
00000671: SWAP1
00000672: DUP2
00000673: MSTORE
00000674: PUSH1 0x03
00000676: PUSH1 0x20
00000678: MSTORE
00000679: PUSH1 0x40
0000067b: DUP2
0000067c: KECCAK256
0000067d: SWAP2
0000067e: SWAP1
0000067f: SWAP2
00000680: SSTORE
00000681: DUP2
00000682: GT
00000683: DUP1
00000684: ISZERO
00000685: PUSH2 0x0698
00000688: JUMPI
00000689: POP
0000068a: PUSH1 0x09
0000068c: SLOAD
0000068d: PUSH2 0x0696
00000690: DUP3
00000691: DUP3
00000692: PUSH2 0x1370
00000695: JUMP
00000696: JUMPDEST
00000697: GT
00000698: JUMPDEST
00000699: ISZERO
0000069a: ISZERO
0000069b: PUSH2 0x06a3
0000069e: JUMPI
0000069f: PUSH1 0x00
000006a1: DUP1
000006a2: REVERT
000006a3: JUMPDEST
000006a4: PUSH1 0x01
000006a6: PUSH1 0xa0
000006a8: PUSH1 0x02
000006aa: EXP
000006ab: SUB
000006ac: DUP7
000006ad: AND
000006ae: ISZERO
000006af: DUP1
000006b0: ISZERO
000006b1: SWAP1
000006b2: PUSH2 0x06cd
000006b5: JUMPI
000006b6: POP
000006b7: DUP4
000006b8: PUSH1 0x01
000006ba: PUSH1 0xa0
000006bc: PUSH1 0x02
000006be: EXP
000006bf: SUB
000006c0: AND
000006c1: DUP7
000006c2: PUSH1 0x01
000006c4: PUSH1 0xa0
000006c6: PUSH1 0x02
000006c8: EXP
000006c9: SUB
000006ca: AND
000006cb: EQ
000006cc: ISZERO
000006cd: JUMPDEST
000006ce: DUP1
000006cf: ISZERO
000006d0: PUSH2 0x06f3
000006d3: JUMPI
000006d4: POP
000006d5: PUSH1 0x02
000006d7: SLOAD
000006d8: PUSH1 0x01
000006da: PUSH1 0xa0
000006dc: PUSH1 0x02
000006de: EXP
000006df: SUB
000006e0: DUP8
000006e1: AND
000006e2: PUSH1 0x00
000006e4: SWAP1
000006e5: DUP2
000006e6: MSTORE
000006e7: PUSH1 0x03
000006e9: PUSH1 0x20
000006eb: MSTORE
000006ec: PUSH1 0x40
000006ee: SWAP1
000006ef: KECCAK256
000006f0: SLOAD
000006f1: LT
000006f2: ISZERO
000006f3: JUMPDEST
000006f4: ISZERO
000006f5: PUSH2 0x0766
000006f8: JUMPI
000006f9: PUSH2 0x0707
000006fc: DUP8
000006fd: PUSH1 0x05
000006ff: PUSH1 0x64
00000701: PUSH1 0x12
00000703: PUSH2 0x129a
00000706: JUMP
00000707: JUMPDEST
00000708: PUSH1 0x01
0000070a: PUSH1 0xa0
0000070c: PUSH1 0x02
0000070e: EXP
0000070f: SUB
00000710: DUP8
00000711: AND
00000712: PUSH1 0x00
00000714: SWAP1
00000715: DUP2
00000716: MSTORE
00000717: PUSH1 0x04
00000719: PUSH1 0x20
0000071b: MSTORE
0000071c: PUSH1 0x40
0000071e: SWAP1
0000071f: KECCAK256
00000720: DUP1
00000721: SLOAD
00000722: SWAP1
00000723: SWAP2
00000724: ADD
00000725: SWAP1
00000726: SSTORE
00000727: PUSH2 0x0735
0000072a: DUP8
0000072b: PUSH1 0x05
0000072d: PUSH1 0x64
0000072f: PUSH1 0x12
00000731: PUSH2 0x129a
00000734: JUMP
00000735: JUMPDEST
00000736: PUSH1 0x12
00000738: DUP1
00000739: SLOAD
0000073a: SWAP1
0000073b: SWAP2
0000073c: ADD
0000073d: SWAP1
0000073e: SSTORE
0000073f: PUSH1 0x0c
00000741: SLOAD
00000742: PUSH1 0x00
00000744: SWAP1
00000745: GT
00000746: ISZERO
00000747: PUSH2 0x0761
0000074a: JUMPI
0000074b: PUSH2 0x0761
0000074e: PUSH2 0x075c
00000751: DUP9
00000752: PUSH1 0x0a
00000754: PUSH1 0x64
00000756: PUSH1 0x12
00000758: PUSH2 0x129a
0000075b: JUMP
0000075c: JUMPDEST
0000075d: PUSH2 0x1386
00000760: JUMP
00000761: JUMPDEST
00000762: PUSH2 0x0783
00000765: JUMP
00000766: JUMPDEST
00000767: PUSH1 0x00
00000769: PUSH1 0x0c
0000076b: SLOAD
0000076c: GT
0000076d: ISZERO
0000076e: PUSH2 0x0783
00000771: JUMPI
00000772: PUSH2 0x0783
00000775: PUSH2 0x075c
00000778: DUP9
00000779: PUSH1 0x0f
0000077b: PUSH1 0x64
0000077d: PUSH1 0x12
0000077f: PUSH2 0x129a
00000782: JUMP
00000783: JUMPDEST
00000784: DUP6
00000785: PUSH1 0x01
00000787: PUSH1 0xa0
00000789: PUSH1 0x02
0000078b: EXP
0000078c: SUB
0000078d: AND
0000078e: DUP5
0000078f: PUSH1 0x01
00000791: PUSH1 0xa0
00000793: PUSH1 0x02
00000795: EXP
00000796: SUB
00000797: AND
00000798: PUSH32 0x022c0d992e4d873a3748436d960d5140c1f9721cf73f7ca5ec679d3d9f4fe2d5
000007b9: DUP10
000007ba: DUP5
000007bb: PUSH1 0x40
000007bd: MLOAD
000007be: SWAP2
000007bf: DUP3
000007c0: MSTORE
000007c1: PUSH1 0x20
000007c3: DUP3
000007c4: ADD
000007c5: MSTORE
000007c6: PUSH1 0x40
000007c8: SWAP1
000007c9: DUP2
000007ca: ADD
000007cb: SWAP1
000007cc: MLOAD
000007cd: DUP1
000007ce: SWAP2
000007cf: SUB
000007d0: SWAP1
000007d1: LOG3
000007d2: PUSH1 0x0b
000007d4: DUP1
000007d5: SLOAD
000007d6: DUP3
000007d7: ADD
000007d8: SWAP1
000007d9: SSTORE
000007da: SWAP7
000007db: SWAP6
000007dc: POP
000007dd: POP
000007de: POP
000007df: POP
000007e0: POP
000007e1: POP
000007e2: JUMP
000007e3: JUMPDEST
000007e4: PUSH1 0x01
000007e6: PUSH1 0xa0
000007e8: PUSH1 0x02
000007ea: EXP
000007eb: SUB
000007ec: AND
000007ed: PUSH1 0x00
000007ef: SWAP1
000007f0: DUP2
000007f1: MSTORE
000007f2: PUSH1 0x05
000007f4: PUSH1 0x20
000007f6: MSTORE
000007f7: PUSH1 0x40
000007f9: SWAP1
000007fa: KECCAK256
000007fb: SLOAD
000007fc: SWAP1
000007fd: JUMP
000007fe: JUMPDEST
000007ff: PUSH1 0x00
00000801: DUP1
00000802: SLOAD
00000803: PUSH1 0x01
00000805: DUP2
00000806: PUSH1 0x01
00000808: AND
00000809: ISZERO
0000080a: PUSH2 0x0100
0000080d: MUL
0000080e: SUB
0000080f: AND
00000810: PUSH1 0x02
00000812: SWAP1
00000813: DIV
00000814: DUP1
00000815: PUSH1 0x1f
00000817: ADD
00000818: PUSH1 0x20
0000081a: DUP1
0000081b: SWAP2
0000081c: DIV
0000081d: MUL
0000081e: PUSH1 0x20
00000820: ADD
00000821: PUSH1 0x40
00000823: MLOAD
00000824: SWAP1
00000825: DUP2
00000826: ADD
00000827: PUSH1 0x40
00000829: MSTORE
0000082a: DUP1
0000082b: SWAP3
0000082c: SWAP2
0000082d: SWAP1
0000082e: DUP2
0000082f: DUP2
00000830: MSTORE
00000831: PUSH1 0x20
00000833: ADD
00000834: DUP3
00000835: DUP1
00000836: SLOAD
00000837: PUSH1 0x01
00000839: DUP2
0000083a: PUSH1 0x01
0000083c: AND
0000083d: ISZERO
0000083e: PUSH2 0x0100
00000841: MUL
00000842: SUB
00000843: AND
00000844: PUSH1 0x02
00000846: SWAP1
00000847: DIV
00000848: DUP1
00000849: ISZERO
0000084a: PUSH2 0x0894
0000084d: JUMPI
0000084e: DUP1
0000084f: PUSH1 0x1f
00000851: LT
00000852: PUSH2 0x0869
00000855: JUMPI
00000856: PUSH2 0x0100
00000859: DUP1
0000085a: DUP4
0000085b: SLOAD
0000085c: DIV
0000085d: MUL
0000085e: DUP4
0000085f: MSTORE
00000860: SWAP2
00000861: PUSH1 0x20
00000863: ADD
00000864: SWAP2
00000865: PUSH2 0x0894
00000868: JUMP
00000869: JUMPDEST
0000086a: DUP3
0000086b: ADD
0000086c: SWAP2
0000086d: SWAP1
0000086e: PUSH1 0x00
00000870: MSTORE
00000871: PUSH1 0x20
00000873: PUSH1 0x00
00000875: KECCAK256
00000876: SWAP1
00000877: JUMPDEST
00000878: DUP2
00000879: SLOAD
0000087a: DUP2
0000087b: MSTORE
0000087c: SWAP1
0000087d: PUSH1 0x01
0000087f: ADD
00000880: SWAP1
00000881: PUSH1 0x20
00000883: ADD
00000884: DUP1
00000885: DUP4
00000886: GT
00000887: PUSH2 0x0877
0000088a: JUMPI
0000088b: DUP3
0000088c: SWAP1
0000088d: SUB
0000088e: PUSH1 0x1f
00000890: AND
00000891: DUP3
00000892: ADD
00000893: SWAP2
00000894: JUMPDEST
00000895: POP
00000896: POP
00000897: POP
00000898: POP
00000899: POP
0000089a: DUP2
0000089b: JUMP
0000089c: JUMPDEST
0000089d: PUSH1 0x00
0000089f: DUP1
000008a0: PUSH1 0x00
000008a2: DUP1
000008a3: PUSH2 0x08b1
000008a6: DUP6
000008a7: PUSH1 0x0f
000008a9: PUSH1 0x64
000008ab: PUSH1 0x12
000008ad: PUSH2 0x129a
000008b0: JUMP
000008b1: JUMPDEST
000008b2: SWAP3
000008b3: POP
000008b4: PUSH2 0x08bd
000008b7: DUP6
000008b8: DUP5
000008b9: PUSH2 0x1577
000008bc: JUMP
000008bd: JUMPDEST
000008be: SWAP2
000008bf: POP
000008c0: PUSH2 0x08c8
000008c3: DUP3
000008c4: PUSH2 0x12df
000008c7: JUMP
000008c8: JUMPDEST
000008c9: SWAP6
000008ca: SWAP5
000008cb: POP
000008cc: POP
000008cd: POP
000008ce: POP
000008cf: POP
000008d0: JUMP
000008d1: JUMPDEST
000008d2: PUSH1 0x09
000008d4: SLOAD
000008d5: JUMPDEST
000008d6: SWAP1
000008d7: JUMP
000008d8: JUMPDEST
000008d9: PUSH1 0x00
000008db: DUP1
000008dc: PUSH1 0x00
000008de: DUP1
000008df: PUSH1 0x09
000008e1: SLOAD
000008e2: DUP6
000008e3: GT
000008e4: ISZERO
000008e5: ISZERO
000008e6: ISZERO
000008e7: PUSH2 0x08ef
000008ea: JUMPI
000008eb: PUSH1 0x00
000008ed: DUP1
000008ee: REVERT
000008ef: JUMPDEST
000008f0: PUSH2 0x08f8
000008f3: DUP6
000008f4: PUSH2 0x1589
000008f7: JUMP
000008f8: JUMPDEST
000008f9: SWAP3
000008fa: POP
000008fb: PUSH2 0x0909
000008fe: DUP4
000008ff: PUSH1 0x0a
00000901: PUSH1 0x64
00000903: PUSH1 0x12
00000905: PUSH2 0x129a
00000908: JUMP
00000909: JUMPDEST
0000090a: SWAP2
0000090b: POP
0000090c: PUSH2 0x08c8
0000090f: DUP4
00000910: DUP4
00000911: PUSH2 0x1577
00000914: JUMP
00000915: JUMPDEST
00000916: PUSH1 0x15
00000918: SLOAD
00000919: PUSH1 0xff
0000091b: AND
0000091c: DUP2
0000091d: JUMP
0000091e: JUMPDEST
0000091f: PUSH1 0x12
00000921: DUP2
00000922: JUMP
00000923: JUMPDEST
00000924: PUSH1 0x14
00000926: PUSH1 0x20
00000928: MSTORE
00000929: PUSH1 0x00
0000092b: SWAP1
0000092c: DUP2
0000092d: MSTORE
0000092e: PUSH1 0x40
00000930: SWAP1
00000931: KECCAK256
00000932: SLOAD
00000933: PUSH1 0xff
00000935: AND
00000936: DUP2
00000937: JUMP
00000938: JUMPDEST
00000939: PUSH1 0x00
0000093b: DUP1
0000093c: PUSH1 0x00
0000093e: DUP1
0000093f: PUSH1 0x00
00000941: DUP1
00000942: PUSH2 0x094b
00000945: PUSH1 0x01
00000947: PUSH2 0x0afe
0000094a: JUMP
0000094b: JUMPDEST
0000094c: GT
0000094d: PUSH2 0x0955
00000950: JUMPI
00000951: PUSH1 0x00
00000953: DUP1
00000954: REVERT
00000955: JUMPDEST
00000956: CALLER
00000957: SWAP5
00000958: POP
00000959: PUSH2 0x0962
0000095c: PUSH1 0x01
0000095e: PUSH2 0x0afe
00000961: JUMP
00000962: JUMPDEST
00000963: SWAP4
00000964: POP
00000965: PUSH2 0x0973
00000968: DUP5
00000969: PUSH1 0x0a
0000096b: PUSH1 0x64
0000096d: PUSH1 0x12
0000096f: PUSH2 0x129a
00000972: JUMP
00000973: JUMPDEST
00000974: SWAP3
00000975: POP
00000976: PUSH2 0x0984
00000979: DUP5
0000097a: PUSH1 0x0a
0000097c: PUSH1 0x64
0000097e: PUSH1 0x12
00000980: PUSH2 0x129a
00000983: JUMP
00000984: JUMPDEST
00000985: PUSH1 0x01
00000987: PUSH1 0xa0
00000989: PUSH1 0x02
0000098b: EXP
0000098c: SUB
0000098d: DUP7
0000098e: AND
0000098f: PUSH1 0x00
00000991: SWAP1
00000992: DUP2
00000993: MSTORE
00000994: PUSH1 0x05
00000996: PUSH1 0x20
00000998: SWAP1
00000999: DUP2
0000099a: MSTORE
0000099b: PUSH1 0x40
0000099d: DUP1
0000099e: DUP4
0000099f: KECCAK256
000009a0: DUP4
000009a1: SWAP1
000009a2: SSTORE
000009a3: PUSH1 0x04
000009a5: SWAP1
000009a6: SWAP2
000009a7: MSTORE
000009a8: DUP1
000009a9: DUP3
000009aa: KECCAK256
000009ab: SWAP2
000009ac: SWAP1
000009ad: SWAP2
000009ae: SSTORE
000009af: SWAP1
000009b0: SWAP3
000009b1: POP
000009b2: PUSH20 0x9e4f01bf4d6aa5c583bcb84462e32e8a5ce6195f
000009c7: SWAP1
000009c8: DUP4
000009c9: ISZERO
000009ca: PUSH2 0x08fc
000009cd: MUL
000009ce: SWAP1
000009cf: DUP5
000009d0: SWAP1
000009d1: MLOAD
000009d2: PUSH1 0x00
000009d4: PUSH1 0x40
000009d6: MLOAD
000009d7: DUP1
000009d8: DUP4
000009d9: SUB
000009da: DUP2
000009db: DUP6
000009dc: DUP9
000009dd: DUP9
000009de: CALL
000009df: SWAP4
000009e0: POP
000009e1: POP
000009e2: POP
000009e3: POP
000009e4: ISZERO
000009e5: ISZERO
000009e6: PUSH2 0x09ee
000009e9: JUMPI
000009ea: PUSH1 0x00
000009ec: DUP1
000009ed: REVERT
000009ee: JUMPDEST
000009ef: PUSH20 0xb0e9ff0c19b7147bfdeb81f0e1d3089efec4fbcd
00000a04: DUP4
00000a05: ISZERO
00000a06: PUSH2 0x08fc
00000a09: MUL
00000a0a: DUP5
00000a0b: PUSH1 0x40
00000a0d: MLOAD
00000a0e: PUSH1 0x00
00000a10: PUSH1 0x40
00000a12: MLOAD
00000a13: DUP1
00000a14: DUP4
00000a15: SUB
00000a16: DUP2
00000a17: DUP6
00000a18: DUP9
00000a19: DUP9
00000a1a: CALL
00000a1b: SWAP4
00000a1c: POP
00000a1d: POP
00000a1e: POP
00000a1f: POP
00000a20: ISZERO
00000a21: ISZERO
00000a22: PUSH2 0x0a2a
00000a25: JUMPI
00000a26: PUSH1 0x00
00000a28: DUP1
00000a29: REVERT
00000a2a: JUMPDEST
00000a2b: PUSH2 0x0a39
00000a2e: DUP5
00000a2f: PUSH1 0x50
00000a31: PUSH1 0x64
00000a33: PUSH1 0x12
00000a35: PUSH2 0x129a
00000a38: JUMP
00000a39: JUMPDEST
00000a3a: SWAP1
00000a3b: POP
00000a3c: PUSH1 0x01
00000a3e: PUSH1 0xa0
00000a40: PUSH1 0x02
00000a42: EXP
00000a43: SUB
00000a44: DUP6
00000a45: AND
00000a46: DUP2
00000a47: ISZERO
00000a48: PUSH2 0x08fc
00000a4b: MUL
00000a4c: DUP3
00000a4d: PUSH1 0x40
00000a4f: MLOAD
00000a50: PUSH1 0x00
00000a52: PUSH1 0x40
00000a54: MLOAD
00000a55: DUP1
00000a56: DUP4
00000a57: SUB
00000a58: DUP2
00000a59: DUP6
00000a5a: DUP9
00000a5b: DUP9
00000a5c: CALL
00000a5d: SWAP4
00000a5e: POP
00000a5f: POP
00000a60: POP
00000a61: POP
00000a62: ISZERO
00000a63: ISZERO
00000a64: PUSH2 0x0a6c
00000a67: JUMPI
00000a68: PUSH1 0x00
00000a6a: DUP1
00000a6b: REVERT
00000a6c: JUMPDEST
00000a6d: DUP5
00000a6e: PUSH1 0x01
00000a70: PUSH1 0xa0
00000a72: PUSH1 0x02
00000a74: EXP
00000a75: SUB
00000a76: AND
00000a77: PUSH32 0xccad973dcd043c7d680389db4378bd6b9775db7124092e9e0422c9e46d7985dc
00000a98: DUP6
00000a99: PUSH1 0x40
00000a9b: MLOAD
00000a9c: SWAP1
00000a9d: DUP2
00000a9e: MSTORE
00000a9f: PUSH1 0x20
00000aa1: ADD
00000aa2: PUSH1 0x40
00000aa4: MLOAD
00000aa5: DUP1
00000aa6: SWAP2
00000aa7: SUB
00000aa8: SWAP1
00000aa9: LOG2
00000aaa: POP
00000aab: POP
00000aac: POP
00000aad: POP
00000aae: POP
00000aaf: JUMP
00000ab0: JUMPDEST
00000ab1: PUSH1 0x00
00000ab3: DUP1
00000ab4: PUSH1 0x09
00000ab6: SLOAD
00000ab7: PUSH1 0x00
00000ab9: EQ
00000aba: ISZERO
00000abb: PUSH2 0x0ac7
00000abe: JUMPI
00000abf: PUSH1 0x00
00000ac1: SWAP2
00000ac2: POP
00000ac3: PUSH2 0x0aee
00000ac6: JUMP
00000ac7: JUMPDEST
00000ac8: PUSH2 0x0ad8
00000acb: PUSH8 0x0de0b6b3a7640000
00000ad4: PUSH2 0x1589
00000ad7: JUMP
00000ad8: JUMPDEST
00000ad9: SWAP1
00000ada: POP
00000adb: PUSH2 0x0ae9
00000ade: DUP2
00000adf: PUSH1 0x0f
00000ae1: PUSH1 0x64
00000ae3: PUSH1 0x12
00000ae5: PUSH2 0x129a
00000ae8: JUMP
00000ae9: JUMPDEST
00000aea: DUP2
00000aeb: SUB
00000aec: SWAP2
00000aed: POP
00000aee: JUMPDEST
00000aef: POP
00000af0: SWAP1
00000af1: JUMP
00000af2: JUMPDEST
00000af3: PUSH1 0x02
00000af5: SLOAD
00000af6: DUP2
00000af7: JUMP
00000af8: JUMPDEST
00000af9: PUSH1 0x0b
00000afb: SLOAD
00000afc: SWAP1
00000afd: JUMP
00000afe: JUMPDEST
00000aff: PUSH1 0x00
00000b01: CALLER
00000b02: DUP3
00000b03: PUSH2 0x0b14
00000b06: JUMPI
00000b07: PUSH2 0x0b0f
00000b0a: DUP2
00000b0b: PUSH2 0x07e3
00000b0e: JUMP
00000b0f: JUMPDEST
00000b10: PUSH2 0x0b38
00000b13: JUMP
00000b14: JUMPDEST
00000b15: PUSH1 0x01
00000b17: PUSH1 0xa0
00000b19: PUSH1 0x02
00000b1b: EXP
00000b1c: SUB
00000b1d: DUP2
00000b1e: AND
00000b1f: PUSH1 0x00
00000b21: SWAP1
00000b22: DUP2
00000b23: MSTORE
00000b24: PUSH1 0x04
00000b26: PUSH1 0x20
00000b28: MSTORE
00000b29: PUSH1 0x40
00000b2b: SWAP1
00000b2c: KECCAK256
00000b2d: SLOAD
00000b2e: PUSH2 0x0b36
00000b31: DUP3
00000b32: PUSH2 0x07e3
00000b35: JUMP
00000b36: JUMPDEST
00000b37: ADD
00000b38: JUMPDEST
00000b39: SWAP2
00000b3a: POP
00000b3b: JUMPDEST
00000b3c: POP
00000b3d: SWAP2
00000b3e: SWAP1
00000b3f: POP
00000b40: JUMP
00000b41: JUMPDEST
00000b42: PUSH1 0x01
00000b44: PUSH1 0xa0
00000b46: PUSH1 0x02
00000b48: EXP
00000b49: SUB
00000b4a: ADDRESS
00000b4b: AND
00000b4c: BALANCE
00000b4d: SWAP1
00000b4e: JUMP
00000b4f: JUMPDEST
00000b50: PUSH1 0x01
00000b52: PUSH1 0xa0
00000b54: PUSH1 0x02
00000b56: EXP
00000b57: SUB
00000b58: AND
00000b59: PUSH1 0x00
00000b5b: SWAP1
00000b5c: DUP2
00000b5d: MSTORE
00000b5e: PUSH1 0x03
00000b60: PUSH1 0x20
00000b62: MSTORE
00000b63: PUSH1 0x40
00000b65: SWAP1
00000b66: KECCAK256
00000b67: SLOAD
00000b68: SWAP1
00000b69: JUMP
00000b6a: JUMPDEST
00000b6b: CALLER
00000b6c: PUSH1 0x14
00000b6e: PUSH1 0x00
00000b70: DUP3
00000b71: PUSH1 0x40
00000b73: MLOAD
00000b74: PUSH1 0x01
00000b76: PUSH1 0xa0
00000b78: PUSH1 0x02
00000b7a: EXP
00000b7b: SUB
00000b7c: SWAP2
00000b7d: SWAP1
00000b7e: SWAP2
00000b7f: AND
00000b80: PUSH13 0x01000000000000000000000000
00000b8e: MUL
00000b8f: DUP2
00000b90: MSTORE
00000b91: PUSH1 0x14
00000b93: ADD
00000b94: PUSH1 0x40
00000b96: MLOAD
00000b97: SWAP1
00000b98: DUP2
00000b99: SWAP1
00000b9a: SUB
00000b9b: SWAP1
00000b9c: KECCAK256
00000b9d: DUP2
00000b9e: MSTORE
00000b9f: PUSH1 0x20
00000ba1: DUP2
00000ba2: ADD
00000ba3: SWAP2
00000ba4: SWAP1
00000ba5: SWAP2
00000ba6: MSTORE
00000ba7: PUSH1 0x40
00000ba9: ADD
00000baa: PUSH1 0x00
00000bac: KECCAK256
00000bad: SLOAD
00000bae: PUSH1 0xff
00000bb0: AND
00000bb1: ISZERO
00000bb2: ISZERO
00000bb3: PUSH2 0x0bbb
00000bb6: JUMPI
00000bb7: PUSH1 0x00
00000bb9: DUP1
00000bba: REVERT
00000bbb: JUMPDEST
00000bbc: POP
00000bbd: PUSH1 0x02
00000bbf: SSTORE
00000bc0: JUMP
00000bc1: JUMPDEST
00000bc2: PUSH1 0x00
00000bc4: DUP1
00000bc5: PUSH1 0x09
00000bc7: SLOAD
00000bc8: PUSH1 0x00
00000bca: EQ
00000bcb: ISZERO
00000bcc: PUSH2 0x0bdb
00000bcf: JUMPI
00000bd0: PUSH4 0x3b9aca00
00000bd5: SWAP2
00000bd6: POP
00000bd7: PUSH2 0x0aee
00000bda: JUMP
00000bdb: JUMPDEST
00000bdc: PUSH2 0x0bec
00000bdf: PUSH8 0x0de0b6b3a7640000
00000be8: PUSH2 0x1589
00000beb: JUMP
00000bec: JUMPDEST
00000bed: SWAP1
00000bee: POP
00000bef: DUP1
00000bf0: SWAP2
00000bf1: POP
00000bf2: PUSH2 0x0aee
00000bf5: JUMP
00000bf6: JUMPDEST
00000bf7: CALLER
00000bf8: PUSH1 0x14
00000bfa: PUSH1 0x00
00000bfc: DUP3
00000bfd: PUSH1 0x40
00000bff: MLOAD
00000c00: PUSH1 0x01
00000c02: PUSH1 0xa0
00000c04: PUSH1 0x02
00000c06: EXP
00000c07: SUB
00000c08: SWAP2
00000c09: SWAP1
00000c0a: SWAP2
00000c0b: AND
00000c0c: PUSH13 0x01000000000000000000000000
00000c1a: MUL
00000c1b: DUP2
00000c1c: MSTORE
00000c1d: PUSH1 0x14
00000c1f: ADD
00000c20: PUSH1 0x40
00000c22: MLOAD
00000c23: SWAP1
00000c24: DUP2
00000c25: SWAP1
00000c26: SUB
00000c27: SWAP1
00000c28: KECCAK256
00000c29: DUP2
00000c2a: MSTORE
00000c2b: PUSH1 0x20
00000c2d: DUP2
00000c2e: ADD
00000c2f: SWAP2
00000c30: SWAP1
00000c31: SWAP2
00000c32: MSTORE
00000c33: PUSH1 0x40
00000c35: ADD
00000c36: PUSH1 0x00
00000c38: KECCAK256
00000c39: SLOAD
00000c3a: PUSH1 0xff
00000c3c: AND
00000c3d: ISZERO
00000c3e: ISZERO
00000c3f: PUSH2 0x0c47
00000c42: JUMPI
00000c43: PUSH1 0x00
00000c45: DUP1
00000c46: REVERT
00000c47: JUMPDEST
00000c48: POP
00000c49: PUSH1 0x00
00000c4b: SWAP2
00000c4c: DUP3
00000c4d: MSTORE
00000c4e: PUSH1 0x14
00000c50: PUSH1 0x20
00000c52: MSTORE
00000c53: PUSH1 0x40
00000c55: SWAP1
00000c56: SWAP2
00000c57: KECCAK256
00000c58: DUP1
00000c59: SLOAD
00000c5a: PUSH1 0xff
00000c5c: NOT
00000c5d: AND
00000c5e: SWAP2
00000c5f: ISZERO
00000c60: ISZERO
00000c61: SWAP2
00000c62: SWAP1
00000c63: SWAP2
00000c64: OR
00000c65: SWAP1
00000c66: SSTORE
00000c67: JUMP
00000c68: JUMPDEST
00000c69: PUSH1 0x00
00000c6b: CALLER
00000c6c: PUSH2 0x0c74
00000c6f: DUP2
00000c70: PUSH2 0x0b4f
00000c73: JUMP
00000c74: JUMPDEST
00000c75: SWAP2
00000c76: POP
00000c77: POP
00000c78: SWAP1
00000c79: JUMP
00000c7a: JUMPDEST
00000c7b: PUSH1 0x01
00000c7d: DUP1
00000c7e: SLOAD
00000c7f: PUSH1 0x01
00000c81: DUP2
00000c82: PUSH1 0x01
00000c84: AND
00000c85: ISZERO
00000c86: PUSH2 0x0100
00000c89: MUL
00000c8a: SUB
00000c8b: AND
00000c8c: PUSH1 0x02
00000c8e: SWAP1
00000c8f: DIV
00000c90: DUP1
00000c91: PUSH1 0x1f
00000c93: ADD
00000c94: PUSH1 0x20
00000c96: DUP1
00000c97: SWAP2
00000c98: DIV
00000c99: MUL
00000c9a: PUSH1 0x20
00000c9c: ADD
00000c9d: PUSH1 0x40
00000c9f: MLOAD
00000ca0: SWAP1
00000ca1: DUP2
00000ca2: ADD
00000ca3: PUSH1 0x40
00000ca5: MSTORE
00000ca6: DUP1
00000ca7: SWAP3
00000ca8: SWAP2
00000ca9: SWAP1
00000caa: DUP2
00000cab: DUP2
00000cac: MSTORE
00000cad: PUSH1 0x20
00000caf: ADD
00000cb0: DUP3
00000cb1: DUP1
00000cb2: SLOAD
00000cb3: PUSH1 0x01
00000cb5: DUP2
00000cb6: PUSH1 0x01
00000cb8: AND
00000cb9: ISZERO
00000cba: PUSH2 0x0100
00000cbd: MUL
00000cbe: SUB
00000cbf: AND
00000cc0: PUSH1 0x02
00000cc2: SWAP1
00000cc3: DIV
00000cc4: DUP1
00000cc5: ISZERO
00000cc6: PUSH2 0x0894
00000cc9: JUMPI
00000cca: DUP1
00000ccb: PUSH1 0x1f
00000ccd: LT
00000cce: PUSH2 0x0869
00000cd1: JUMPI
00000cd2: PUSH2 0x0100
00000cd5: DUP1
00000cd6: DUP4
00000cd7: SLOAD
00000cd8: DIV
00000cd9: MUL
00000cda: DUP4
00000cdb: MSTORE
00000cdc: SWAP2
00000cdd: PUSH1 0x20
00000cdf: ADD
00000ce0: SWAP2
00000ce1: PUSH2 0x0894
00000ce4: JUMP
00000ce5: JUMPDEST
00000ce6: CALLER
00000ce7: PUSH1 0x14
00000ce9: PUSH1 0x00
00000ceb: DUP3
00000cec: PUSH1 0x40
00000cee: MLOAD
00000cef: PUSH1 0x01
00000cf1: PUSH1 0xa0
00000cf3: PUSH1 0x02
00000cf5: EXP
00000cf6: SUB
00000cf7: SWAP2
00000cf8: SWAP1
00000cf9: SWAP2
00000cfa: AND
00000cfb: PUSH13 0x01000000000000000000000000
00000d09: MUL
00000d0a: DUP2
00000d0b: MSTORE
00000d0c: PUSH1 0x14
00000d0e: ADD
00000d0f: PUSH1 0x40
00000d11: MLOAD
00000d12: SWAP1
00000d13: DUP2
00000d14: SWAP1
00000d15: SUB
00000d16: SWAP1
00000d17: KECCAK256
00000d18: DUP2
00000d19: MSTORE
00000d1a: PUSH1 0x20
00000d1c: DUP2
00000d1d: ADD
00000d1e: SWAP2
00000d1f: SWAP1
00000d20: SWAP2
00000d21: MSTORE
00000d22: PUSH1 0x40
00000d24: ADD
00000d25: PUSH1 0x00
00000d27: KECCAK256
00000d28: SLOAD
00000d29: PUSH1 0xff
00000d2b: AND
00000d2c: ISZERO
00000d2d: ISZERO
00000d2e: PUSH2 0x0d36
00000d31: JUMPI
00000d32: PUSH1 0x00
00000d34: DUP1
00000d35: REVERT
00000d36: JUMPDEST
00000d37: POP
00000d38: PUSH1 0x15
00000d3a: DUP1
00000d3b: SLOAD
00000d3c: PUSH1 0xff
00000d3e: NOT
00000d3f: AND
00000d40: SWAP1
00000d41: SSTORE
00000d42: JUMP
00000d43: JUMPDEST
00000d44: PUSH1 0x00
00000d46: DUP1
00000d47: PUSH1 0x00
00000d49: DUP1
00000d4a: PUSH1 0x00
00000d4c: DUP1
00000d4d: PUSH2 0x0d54
00000d50: PUSH2 0x0c68
00000d53: JUMP
00000d54: JUMPDEST
00000d55: GT
00000d56: PUSH2 0x0d5e
00000d59: JUMPI
00000d5a: PUSH1 0x00
00000d5c: DUP1
00000d5d: REVERT
00000d5e: JUMPDEST
00000d5f: PUSH1 0x15
00000d61: SLOAD
00000d62: CALLER
00000d63: SWAP5
00000d64: POP
00000d65: PUSH1 0xff
00000d67: AND
00000d68: ISZERO
00000d69: DUP1
00000d6a: ISZERO
00000d6b: PUSH2 0x0d8c
00000d6e: JUMPI
00000d6f: POP
00000d70: PUSH1 0x01
00000d72: PUSH1 0xa0
00000d74: PUSH1 0x02
00000d76: EXP
00000d77: SUB
00000d78: DUP5
00000d79: AND
00000d7a: PUSH1 0x00
00000d7c: SWAP1
00000d7d: DUP2
00000d7e: MSTORE
00000d7f: PUSH1 0x03
00000d81: PUSH1 0x20
00000d83: MSTORE
00000d84: PUSH1 0x40
00000d86: SWAP1
00000d87: KECCAK256
00000d88: SLOAD
00000d89: DUP7
00000d8a: GT
00000d8b: ISZERO
00000d8c: JUMPDEST
00000d8d: ISZERO
00000d8e: ISZERO
00000d8f: PUSH2 0x0d97
00000d92: JUMPI
00000d93: PUSH1 0x00
00000d95: DUP1
00000d96: REVERT
00000d97: JUMPDEST
00000d98: PUSH2 0x0da6
00000d9b: DUP7
00000d9c: PUSH1 0x05
00000d9e: PUSH1 0x64
00000da0: PUSH1 0x12
00000da2: PUSH2 0x129a
00000da5: JUMP
00000da6: JUMPDEST
00000da7: SWAP3
00000da8: POP
00000da9: PUSH2 0x0db7
00000dac: DUP7
00000dad: PUSH1 0x5f
00000daf: PUSH1 0x64
00000db1: PUSH1 0x12
00000db3: PUSH2 0x129a
00000db6: JUMP
00000db7: JUMPDEST
00000db8: SWAP2
00000db9: POP
00000dba: PUSH2 0x0dc5
00000dbd: PUSH1 0x09
00000dbf: SLOAD
00000dc0: DUP5
00000dc1: PUSH2 0x1577
00000dc4: JUMP
00000dc5: JUMPDEST
00000dc6: PUSH1 0x09
00000dc8: SSTORE
00000dc9: PUSH1 0x0b
00000dcb: SLOAD
00000dcc: PUSH2 0x0dd5
00000dcf: SWAP1
00000dd0: DUP5
00000dd1: PUSH2 0x1577
00000dd4: JUMP
00000dd5: JUMPDEST
00000dd6: PUSH1 0x0b
00000dd8: SSTORE
00000dd9: PUSH1 0x01
00000ddb: PUSH1 0xa0
00000ddd: PUSH1 0x02
00000ddf: EXP
00000de0: SUB
00000de1: DUP5
00000de2: AND
00000de3: PUSH1 0x00
00000de5: SWAP1
00000de6: DUP2
00000de7: MSTORE
00000de8: PUSH1 0x03
00000dea: PUSH1 0x20
00000dec: MSTORE
00000ded: PUSH1 0x40
00000def: SWAP1
00000df0: KECCAK256
00000df1: SLOAD
00000df2: PUSH2 0x0dfb
00000df5: SWAP1
00000df6: DUP8
00000df7: PUSH2 0x1577
00000dfa: JUMP
00000dfb: JUMPDEST
00000dfc: PUSH1 0x01
00000dfe: PUSH1 0xa0
00000e00: PUSH1 0x02
00000e02: EXP
00000e03: SUB
00000e04: DUP1
00000e05: DUP7
00000e06: AND
00000e07: PUSH1 0x00
00000e09: SWAP1
00000e0a: DUP2
00000e0b: MSTORE
00000e0c: PUSH1 0x03
00000e0e: PUSH1 0x20
00000e10: MSTORE
00000e11: PUSH1 0x40
00000e13: DUP1
00000e14: DUP3
00000e15: KECCAK256
00000e16: SWAP4
00000e17: SWAP1
00000e18: SWAP4
00000e19: SSTORE
00000e1a: SWAP1
00000e1b: DUP10
00000e1c: AND
00000e1d: DUP2
00000e1e: MSTORE
00000e1f: KECCAK256
00000e20: SLOAD
00000e21: PUSH2 0x0e2a
00000e24: SWAP1
00000e25: DUP4
00000e26: PUSH2 0x1370
00000e29: JUMP
00000e2a: JUMPDEST
00000e2b: PUSH1 0x01
00000e2d: PUSH1 0xa0
00000e2f: PUSH1 0x02
00000e31: EXP
00000e32: SUB
00000e33: DUP9
00000e34: AND
00000e35: PUSH1 0x00
00000e37: SWAP1
00000e38: DUP2
00000e39: MSTORE
00000e3a: PUSH1 0x03
00000e3c: PUSH1 0x20
00000e3e: MSTORE
00000e3f: PUSH1 0x40
00000e41: SWAP1
00000e42: KECCAK256
00000e43: SSTORE
00000e44: PUSH2 0x0e4c
00000e47: DUP4
00000e48: PUSH2 0x1589
00000e4b: JUMP
00000e4c: JUMPDEST
00000e4d: SWAP1
00000e4e: POP
00000e4f: PUSH2 0x0e57
00000e52: DUP2
00000e53: PUSH2 0x1386
00000e56: JUMP
00000e57: JUMPDEST
00000e58: DUP7
00000e59: PUSH1 0x01
00000e5b: PUSH1 0xa0
00000e5d: PUSH1 0x02
00000e5f: EXP
00000e60: SUB
00000e61: AND
00000e62: DUP5
00000e63: PUSH1 0x01
00000e65: PUSH1 0xa0
00000e67: PUSH1 0x02
00000e69: EXP
00000e6a: SUB
00000e6b: AND
00000e6c: PUSH32 0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef
00000e8d: DUP5
00000e8e: PUSH1 0x40
00000e90: MLOAD
00000e91: SWAP1
00000e92: DUP2
00000e93: MSTORE
00000e94: PUSH1 0x20
00000e96: ADD
00000e97: PUSH1 0x40
00000e99: MLOAD
00000e9a: DUP1
00000e9b: SWAP2
00000e9c: SUB
00000e9d: SWAP1
00000e9e: LOG3
00000e9f: POP
00000ea0: PUSH1 0x01
00000ea2: SWAP7
00000ea3: SWAP6
00000ea4: POP
00000ea5: POP
00000ea6: POP
00000ea7: POP
00000ea8: POP
00000ea9: POP
00000eaa: JUMP
00000eab: JUMPDEST
00000eac: CALLER
00000ead: PUSH1 0x14
00000eaf: PUSH1 0x00
00000eb1: DUP3
00000eb2: PUSH1 0x40
00000eb4: MLOAD
00000eb5: PUSH1 0x01
00000eb7: PUSH1 0xa0
00000eb9: PUSH1 0x02
00000ebb: EXP
00000ebc: SUB
00000ebd: SWAP2
00000ebe: SWAP1
00000ebf: SWAP2
00000ec0: AND
00000ec1: PUSH13 0x01000000000000000000000000
00000ecf: MUL
00000ed0: DUP2
00000ed1: MSTORE
00000ed2: PUSH1 0x14
00000ed4: ADD
00000ed5: PUSH1 0x40
00000ed7: MLOAD
00000ed8: SWAP1
00000ed9: DUP2
00000eda: SWAP1
00000edb: SUB
00000edc: SWAP1
00000edd: KECCAK256
00000ede: DUP2
00000edf: MSTORE
00000ee0: PUSH1 0x20
00000ee2: DUP2
00000ee3: ADD
00000ee4: SWAP2
00000ee5: SWAP1
00000ee6: SWAP2
00000ee7: MSTORE
00000ee8: PUSH1 0x40
00000eea: ADD
00000eeb: PUSH1 0x00
00000eed: KECCAK256
00000eee: SLOAD
00000eef: PUSH1 0xff
00000ef1: AND
00000ef2: ISZERO
00000ef3: ISZERO
00000ef4: PUSH2 0x0efc
00000ef7: JUMPI
00000ef8: PUSH1 0x00
00000efa: DUP1
00000efb: REVERT
00000efc: JUMPDEST
00000efd: PUSH1 0x01
00000eff: DUP3
00000f00: DUP1
00000f01: MLOAD
00000f02: PUSH2 0x0f0f
00000f05: SWAP3
00000f06: SWAP2
00000f07: PUSH1 0x20
00000f09: ADD
00000f0a: SWAP1
00000f0b: PUSH2 0x1645
00000f0e: JUMP
00000f0f: JUMPDEST
00000f10: POP
00000f11: POP
00000f12: POP
00000f13: JUMP
00000f14: JUMPDEST
00000f15: CALLER
00000f16: PUSH1 0x14
00000f18: PUSH1 0x00
00000f1a: DUP3
00000f1b: PUSH1 0x40
00000f1d: MLOAD
00000f1e: PUSH1 0x01
00000f20: PUSH1 0xa0
00000f22: PUSH1 0x02
00000f24: EXP
00000f25: SUB
00000f26: SWAP2
00000f27: SWAP1
00000f28: SWAP2
00000f29: AND
00000f2a: PUSH13 0x01000000000000000000000000
00000f38: MUL
00000f39: DUP2
00000f3a: MSTORE
00000f3b: PUSH1 0x14
00000f3d: ADD
00000f3e: PUSH1 0x40
00000f40: MLOAD
00000f41: SWAP1
00000f42: DUP2
00000f43: SWAP1
00000f44: SUB
00000f45: SWAP1
00000f46: KECCAK256
00000f47: DUP2
00000f48: MSTORE
00000f49: PUSH1 0x20
00000f4b: DUP2
00000f4c: ADD
00000f4d: SWAP2
00000f4e: SWAP1
00000f4f: SWAP2
00000f50: MSTORE
00000f51: PUSH1 0x40
00000f53: ADD
00000f54: PUSH1 0x00
00000f56: KECCAK256
00000f57: SLOAD
00000f58: PUSH1 0xff
00000f5a: AND
00000f5b: ISZERO
00000f5c: ISZERO
00000f5d: PUSH2 0x0f65
00000f60: JUMPI
00000f61: PUSH1 0x00
00000f63: DUP1
00000f64: REVERT
00000f65: JUMPDEST
00000f66: PUSH1 0x00
00000f68: DUP3
00000f69: DUP1
00000f6a: MLOAD
00000f6b: PUSH2 0x0f0f
00000f6e: SWAP3
00000f6f: SWAP2
00000f70: PUSH1 0x20
00000f72: ADD
00000f73: SWAP1
00000f74: PUSH2 0x1645
00000f77: JUMP
00000f78: JUMPDEST
00000f79: PUSH1 0x01
00000f7b: PUSH1 0xa0
00000f7d: PUSH1 0x02
00000f7f: EXP
00000f80: SUB
00000f81: CALLER
00000f82: AND
00000f83: PUSH1 0x00
00000f85: SWAP1
00000f86: DUP2
00000f87: MSTORE
00000f88: PUSH1 0x06
00000f8a: PUSH1 0x20
00000f8c: MSTORE
00000f8d: PUSH1 0x40
00000f8f: DUP2
00000f90: KECCAK256
00000f91: SLOAD
00000f92: DUP2
00000f93: SWAP1
00000f94: DUP2
00000f95: SWAP1
00000f96: GT
00000f97: PUSH2 0x0f9f
00000f9a: JUMPI
00000f9b: PUSH1 0x00
00000f9d: DUP1
00000f9e: REVERT
00000f9f: JUMPDEST
00000fa0: POP
00000fa1: POP
00000fa2: CALLER
00000fa3: PUSH1 0x01
00000fa5: PUSH1 0xa0
00000fa7: PUSH1 0x02
00000fa9: EXP
00000faa: SUB
00000fab: DUP2
00000fac: AND
00000fad: PUSH1 0x00
00000faf: DUP2
00000fb0: DUP2
00000fb1: MSTORE
00000fb2: PUSH1 0x06
00000fb4: PUSH1 0x20
00000fb6: MSTORE
00000fb7: PUSH1 0x40
00000fb9: DUP1
00000fba: DUP3
00000fbb: KECCAK256
00000fbc: DUP1
00000fbd: SLOAD
00000fbe: SWAP3
00000fbf: SWAP1
00000fc0: SSTORE
00000fc1: SWAP1
00000fc2: SWAP2
00000fc3: SWAP1
00000fc4: PUSH2 0x08fc
00000fc7: DUP4
00000fc8: ISZERO
00000fc9: MUL
00000fca: SWAP1
00000fcb: DUP4
00000fcc: SWAP1
00000fcd: MLOAD
00000fce: PUSH1 0x00
00000fd0: PUSH1 0x40
00000fd2: MLOAD
00000fd3: DUP1
00000fd4: DUP4
00000fd5: SUB
00000fd6: DUP2
00000fd7: DUP6
00000fd8: DUP9
00000fd9: DUP9
00000fda: CALL
00000fdb: SWAP4
00000fdc: POP
00000fdd: POP
00000fde: POP
00000fdf: POP
00000fe0: ISZERO
00000fe1: ISZERO
00000fe2: PUSH2 0x0fea
00000fe5: JUMPI
00000fe6: PUSH1 0x00
00000fe8: DUP1
00000fe9: REVERT
00000fea: JUMPDEST
00000feb: DUP2
00000fec: PUSH1 0x01
00000fee: PUSH1 0xa0
00000ff0: PUSH1 0x02
00000ff2: EXP
00000ff3: SUB
00000ff4: AND
00000ff5: PUSH32 0xf3687a31e3dd517203a2f34cfa1e3630fff426375e7a8fe84237609ebff4644f
00001016: DUP3
00001017: PUSH1 0x40
00001019: MLOAD
0000101a: SWAP1
0000101b: DUP2
0000101c: MSTORE
0000101d: PUSH1 0x20
0000101f: ADD
00001020: PUSH1 0x40
00001022: MLOAD
00001023: DUP1
00001024: SWAP2
00001025: SUB
00001026: SWAP1
00001027: LOG2
00001028: POP
00001029: POP
0000102a: JUMP
0000102b: JUMPDEST
0000102c: PUSH1 0x00
0000102e: DUP1
0000102f: PUSH1 0x00
00001031: DUP1
00001032: PUSH1 0x00
00001034: DUP1
00001035: PUSH2 0x103c
00001038: PUSH2 0x0c68
0000103b: JUMP
0000103c: JUMPDEST
0000103d: GT
0000103e: PUSH2 0x1046
00001041: JUMPI
00001042: PUSH1 0x00
00001044: DUP1
00001045: REVERT
00001046: JUMPDEST
00001047: CALLER
00001048: PUSH1 0x01
0000104a: PUSH1 0xa0
0000104c: PUSH1 0x02
0000104e: EXP
0000104f: SUB
00001050: DUP2
00001051: AND
00001052: PUSH1 0x00
00001054: SWAP1
00001055: DUP2
00001056: MSTORE
00001057: PUSH1 0x03
00001059: PUSH1 0x20
0000105b: MSTORE
0000105c: PUSH1 0x40
0000105e: SWAP1
0000105f: KECCAK256
00001060: SLOAD
00001061: SWAP1
00001062: SWAP6
00001063: POP
00001064: DUP7
00001065: GT
00001066: ISZERO
00001067: PUSH2 0x106f
0000106a: JUMPI
0000106b: PUSH1 0x00
0000106d: DUP1
0000106e: REVERT
0000106f: JUMPDEST
00001070: DUP6
00001071: SWAP4
00001072: POP
00001073: PUSH2 0x107b
00001076: DUP5
00001077: PUSH2 0x1589
0000107a: JUMP
0000107b: JUMPDEST
0000107c: SWAP3
0000107d: POP
0000107e: PUSH2 0x108c
00001081: DUP4
00001082: PUSH1 0x0a
00001084: PUSH1 0x64
00001086: PUSH1 0x12
00001088: PUSH2 0x129a
0000108b: JUMP
0000108c: JUMPDEST
0000108d: SWAP2
0000108e: POP
0000108f: PUSH2 0x109d
00001092: DUP4
00001093: PUSH1 0x5a
00001095: PUSH1 0x64
00001097: PUSH1 0x12
00001099: PUSH2 0x129a
0000109c: JUMP
0000109d: JUMPDEST
0000109e: SWAP1
0000109f: POP
000010a0: PUSH2 0x10ab
000010a3: PUSH1 0x09
000010a5: SLOAD
000010a6: DUP6
000010a7: PUSH2 0x1577
000010aa: JUMP
000010ab: JUMPDEST
000010ac: PUSH1 0x09
000010ae: SSTORE
000010af: PUSH1 0x01
000010b1: PUSH1 0xa0
000010b3: PUSH1 0x02
000010b5: EXP
000010b6: SUB
000010b7: DUP6
000010b8: AND
000010b9: PUSH1 0x00
000010bb: SWAP1
000010bc: DUP2
000010bd: MSTORE
000010be: PUSH1 0x03
000010c0: PUSH1 0x20
000010c2: MSTORE
000010c3: PUSH1 0x40
000010c5: SWAP1
000010c6: KECCAK256
000010c7: SLOAD
000010c8: PUSH2 0x10d1
000010cb: SWAP1
000010cc: DUP6
000010cd: PUSH2 0x1577
000010d0: JUMP
000010d1: JUMPDEST
000010d2: PUSH1 0x01
000010d4: PUSH1 0xa0
000010d6: PUSH1 0x02
000010d8: EXP
000010d9: SUB
000010da: DUP7
000010db: AND
000010dc: PUSH1 0x00
000010de: SWAP1
000010df: DUP2
000010e0: MSTORE
000010e1: PUSH1 0x03
000010e3: PUSH1 0x20
000010e5: MSTORE
000010e6: PUSH1 0x40
000010e8: SWAP1
000010e9: KECCAK256
000010ea: SSTORE
000010eb: PUSH1 0x0b
000010ed: SLOAD
000010ee: PUSH2 0x10f7
000010f1: SWAP1
000010f2: DUP6
000010f3: PUSH2 0x1577
000010f6: JUMP
000010f7: JUMPDEST
000010f8: PUSH1 0x0b
000010fa: SSTORE
000010fb: PUSH1 0x01
000010fd: PUSH1 0xa0
000010ff: PUSH1 0x02
00001101: EXP
00001102: SUB
00001103: DUP6
00001104: AND
00001105: PUSH1 0x00
00001107: SWAP1
00001108: DUP2
00001109: MSTORE
0000110a: PUSH1 0x06
0000110c: PUSH1 0x20
0000110e: MSTORE
0000110f: PUSH1 0x40
00001111: SWAP1
00001112: KECCAK256
00001113: DUP1
00001114: SLOAD
00001115: DUP3
00001116: ADD
00001117: SWAP1
00001118: SSTORE
00001119: PUSH2 0x1121
0000111c: DUP3
0000111d: PUSH2 0x1386
00001120: JUMP
00001121: JUMPDEST
00001122: DUP5
00001123: PUSH1 0x01
00001125: PUSH1 0xa0
00001127: PUSH1 0x02
00001129: EXP
0000112a: SUB
0000112b: AND
0000112c: PUSH32 0x545da4840f0f793a8d9b1e1ec11ac88a847ba019e03570358e58ed56601a5e72
0000114d: DUP6
0000114e: PUSH1 0x40
00001150: MLOAD
00001151: SWAP1
00001152: DUP2
00001153: MSTORE
00001154: PUSH1 0x20
00001156: ADD
00001157: PUSH1 0x40
00001159: MLOAD
0000115a: DUP1
0000115b: SWAP2
0000115c: SUB
0000115d: SWAP1
0000115e: LOG2
0000115f: POP
00001160: POP
00001161: POP
00001162: POP
00001163: POP
00001164: POP
00001165: JUMP
00001166: JUMPDEST
00001167: CALLER
00001168: PUSH1 0x01
0000116a: PUSH1 0xa0
0000116c: PUSH1 0x02
0000116e: EXP
0000116f: SUB
00001170: DUP2
00001171: AND
00001172: PUSH1 0x00
00001174: SWAP1
00001175: DUP2
00001176: MSTORE
00001177: PUSH1 0x03
00001179: PUSH1 0x20
0000117b: MSTORE
0000117c: PUSH1 0x40
0000117e: DUP2
0000117f: KECCAK256
00001180: SLOAD
00001181: SWAP1
00001182: DUP2
00001183: GT
00001184: ISZERO
00001185: PUSH2 0x1191
00001188: JUMPI
00001189: PUSH2 0x1191
0000118c: DUP2
0000118d: PUSH2 0x102b
00001190: JUMP
00001191: JUMPDEST
00001192: PUSH2 0x1199
00001195: PUSH2 0x0938
00001198: JUMP
00001199: JUMPDEST
0000119a: POP
0000119b: POP
0000119c: JUMP
0000119d: JUMPDEST
0000119e: CALLER
0000119f: PUSH1 0x01
000011a1: PUSH1 0xa0
000011a3: PUSH1 0x02
000011a5: EXP
000011a6: SUB
000011a7: AND
000011a8: PUSH1 0x00
000011aa: SWAP1
000011ab: DUP2
000011ac: MSTORE
000011ad: PUSH1 0x06
000011af: PUSH1 0x20
000011b1: MSTORE
000011b2: PUSH1 0x40
000011b4: SWAP1
000011b5: KECCAK256
000011b6: SLOAD
000011b7: SWAP1
000011b8: JUMP
000011b9: JUMPDEST
000011ba: PUSH1 0x00
000011bc: PUSH2 0x0b3b
000011bf: CALLVALUE
000011c0: DUP4
000011c1: PUSH2 0x053b
000011c4: JUMP
000011c5: JUMPDEST
000011c6: PUSH1 0x00
000011c8: DUP1
000011c9: PUSH1 0x00
000011cb: DUP1
000011cc: PUSH1 0x00
000011ce: DUP1
000011cf: PUSH2 0x11d8
000011d2: PUSH1 0x01
000011d4: PUSH2 0x0afe
000011d7: JUMP
000011d8: JUMPDEST
000011d9: GT
000011da: PUSH2 0x11e2
000011dd: JUMPI
000011de: PUSH1 0x00
000011e0: DUP1
000011e1: REVERT
000011e2: JUMPDEST
000011e3: CALLER
000011e4: SWAP5
000011e5: POP
000011e6: PUSH2 0x11ef
000011e9: PUSH1 0x01
000011eb: PUSH2 0x0afe
000011ee: JUMP
000011ef: JUMPDEST
000011f0: SWAP4
000011f1: POP
000011f2: PUSH2 0x1200
000011f5: DUP5
000011f6: PUSH1 0x0a
000011f8: PUSH1 0x64
000011fa: PUSH1 0x12
000011fc: PUSH2 0x129a
000011ff: JUMP
00001200: JUMPDEST
00001201: SWAP3
00001202: POP
00001203: PUSH2 0x1211
00001206: DUP5
00001207: PUSH1 0x5a
00001209: PUSH1 0x64
0000120b: PUSH1 0x12
0000120d: PUSH2 0x129a
00001210: JUMP
00001211: JUMPDEST
00001212: SWAP2
00001213: POP
00001214: PUSH2 0x121e
00001217: DUP3
00001218: PUSH1 0x00
0000121a: PUSH2 0x053b
0000121d: JUMP
0000121e: JUMPDEST
0000121f: PUSH1 0x01
00001221: PUSH1 0xa0
00001223: PUSH1 0x02
00001225: EXP
00001226: SUB
00001227: DUP7
00001228: AND
00001229: PUSH1 0x00
0000122b: SWAP1
0000122c: DUP2
0000122d: MSTORE
0000122e: PUSH1 0x05
00001230: PUSH1 0x20
00001232: SWAP1
00001233: DUP2
00001234: MSTORE
00001235: PUSH1 0x40
00001237: DUP1
00001238: DUP4
00001239: KECCAK256
0000123a: DUP4
0000123b: SWAP1
0000123c: SSTORE
0000123d: PUSH1 0x04
0000123f: SWAP1
00001240: SWAP2
00001241: MSTORE
00001242: DUP2
00001243: KECCAK256
00001244: SSTORE
00001245: SWAP1
00001246: POP
00001247: PUSH2 0x124f
0000124a: DUP4
0000124b: PUSH2 0x1386
0000124e: JUMP
0000124f: JUMPDEST
00001250: DUP5
00001251: PUSH1 0x01
00001253: PUSH1 0xa0
00001255: PUSH1 0x02
00001257: EXP
00001258: SUB
00001259: AND
0000125a: PUSH32 0xbe339fc14b041c2b0e0f3dd2cd325d0c3668b78378001e53160eab3615326458
0000127b: DUP6
0000127c: DUP4
0000127d: PUSH1 0x40
0000127f: MLOAD
00001280: SWAP2
00001281: DUP3
00001282: MSTORE
00001283: PUSH1 0x20
00001285: DUP3
00001286: ADD
00001287: MSTORE
00001288: PUSH1 0x40
0000128a: SWAP1
0000128b: DUP2
0000128c: ADD
0000128d: SWAP1
0000128e: MLOAD
0000128f: DUP1
00001290: SWAP2
00001291: SUB
00001292: SWAP1
00001293: LOG2
00001294: POP
00001295: POP
00001296: POP
00001297: POP
00001298: POP
00001299: JUMP
0000129a: JUMPDEST
0000129b: PUSH1 0x00
0000129d: DUP1
0000129e: PUSH1 0x00
000012a0: DUP4
000012a1: PUSH1 0x01
000012a3: ADD
000012a4: PUSH1 0x0a
000012a6: EXP
000012a7: DUP7
000012a8: MUL
000012a9: SWAP2
000012aa: POP
000012ab: PUSH1 0x0a
000012ad: DUP6
000012ae: DUP4
000012af: DUP2
000012b0: ISZERO
000012b1: ISZERO
000012b2: PUSH2 0x12b7
000012b5: JUMPI
000012b6: INVALID
000012b7: JUMPDEST
000012b8: DIV
000012b9: PUSH1 0x05
000012bb: ADD
000012bc: DUP2
000012bd: ISZERO
000012be: ISZERO
000012bf: PUSH2 0x12c4
000012c2: JUMPI
000012c3: INVALID
000012c4: JUMPDEST
000012c5: DIV
000012c6: SWAP1
000012c7: POP
000012c8: PUSH8 0x0de0b6b3a7640000
000012d1: DUP8
000012d2: DUP3
000012d3: MUL
000012d4: DIV
000012d5: SWAP8
000012d6: SWAP7
000012d7: POP
000012d8: POP
000012d9: POP
000012da: POP
000012db: POP
000012dc: POP
000012dd: POP
000012de: JUMP
000012df: JUMPDEST
000012e0: PUSH1 0x09
000012e2: SLOAD
000012e3: PUSH1 0x00
000012e5: SWAP1
000012e6: PUSH12 0x033b2e3c9fd0803ce8000000
000012f3: SWAP1
000012f4: DUP3
000012f5: SWAP1
000012f6: PUSH4 0x3b9aca00
000012fb: PUSH2 0x135d
000012fe: PUSH2 0x1357
00001301: PUSH19 0x59aedfc10d7279c5eed1401645400000000000
00001315: DUP9
00001316: MUL
00001317: PUSH1 0x02
00001319: DUP6
0000131a: EXP
0000131b: PUSH8 0x0de0b6b3a7640000
00001324: MUL
00001325: ADD
00001326: PUSH16 0x01812f9cf7920e2b66973e2000000000
00001337: DUP6
00001338: MUL
00001339: ADD
0000133a: PUSH23 0x0a70c3c40a64e6c51999090b65f67d9240000000000000
00001352: ADD
00001353: PUSH2 0x15ec
00001356: JUMP
00001357: JUMPDEST
00001358: DUP6
00001359: PUSH2 0x1577
0000135c: JUMP
0000135d: JUMPDEST
0000135e: DUP2
0000135f: ISZERO
00001360: ISZERO
00001361: PUSH2 0x1366
00001364: JUMPI
00001365: INVALID
00001366: JUMPDEST
00001367: DIV
00001368: SUB
00001369: SWAP5
0000136a: SWAP4
0000136b: POP
0000136c: POP
0000136d: POP
0000136e: POP
0000136f: JUMP
00001370: JUMPDEST
00001371: PUSH1 0x00
00001373: DUP3
00001374: DUP3
00001375: ADD
00001376: DUP4
00001377: DUP2
00001378: LT
00001379: ISZERO
0000137a: PUSH2 0x137f
0000137d: JUMPI
0000137e: INVALID
0000137f: JUMPDEST
00001380: SWAP4
00001381: SWAP3
00001382: POP
00001383: POP
00001384: POP
00001385: JUMP
00001386: JUMPDEST
00001387: PUSH1 0x11
00001389: DUP2
0000138a: SWAP1
0000138b: SSTORE
0000138c: PUSH1 0x00
0000138e: DUP1
0000138f: DUP1
00001390: JUMPDEST
00001391: PUSH1 0x08
00001393: SLOAD
00001394: DUP3
00001395: LT
00001396: ISZERO
00001397: PUSH2 0x13e3
0000139a: JUMPI
0000139b: PUSH1 0x03
0000139d: PUSH1 0x00
0000139f: PUSH1 0x08
000013a1: DUP5
000013a2: DUP2
000013a3: SLOAD
000013a4: DUP2
000013a5: LT
000013a6: ISZERO
000013a7: ISZERO
000013a8: PUSH2 0x13ad
000013ab: JUMPI
000013ac: INVALID
000013ad: JUMPDEST
000013ae: PUSH1 0x00
000013b0: SWAP2
000013b1: DUP3
000013b2: MSTORE
000013b3: PUSH1 0x20
000013b5: DUP1
000013b6: DUP4
000013b7: KECCAK256
000013b8: SWAP1
000013b9: SWAP2
000013ba: ADD
000013bb: SLOAD
000013bc: PUSH1 0x01
000013be: PUSH1 0xa0
000013c0: PUSH1 0x02
000013c2: EXP
000013c3: SUB
000013c4: AND
000013c5: DUP4
000013c6: MSTORE
000013c7: DUP3
000013c8: ADD
000013c9: SWAP3
000013ca: SWAP1
000013cb: SWAP3
000013cc: MSTORE
000013cd: PUSH1 0x40
000013cf: ADD
000013d0: SWAP1
000013d1: KECCAK256
000013d2: SLOAD
000013d3: SWAP3
000013d4: SWAP1
000013d5: SWAP3
000013d6: ADD
000013d7: SWAP2
000013d8: PUSH1 0x01
000013da: SWAP2
000013db: SWAP1
000013dc: SWAP2
000013dd: ADD
000013de: SWAP1
000013df: PUSH2 0x1390
000013e2: JUMP
000013e3: JUMPDEST
000013e4: POP
000013e5: PUSH1 0x00
000013e7: JUMPDEST
000013e8: PUSH1 0x08
000013ea: SLOAD
000013eb: DUP2
000013ec: LT
000013ed: ISZERO
000013ee: PUSH2 0x1571
000013f1: JUMPI
000013f2: PUSH1 0x00
000013f4: DUP4
000013f5: GT
000013f6: DUP1
000013f7: ISZERO
000013f8: PUSH2 0x1437
000013fb: JUMPI
000013fc: POP
000013fd: PUSH1 0x03
000013ff: PUSH1 0x00
00001401: PUSH1 0x08
00001403: DUP4
00001404: DUP2
00001405: SLOAD
00001406: DUP2
00001407: LT
00001408: ISZERO
00001409: ISZERO
0000140a: PUSH2 0x140f
0000140d: JUMPI
0000140e: INVALID
0000140f: JUMPDEST
00001410: PUSH1 0x00
00001412: SWAP2
00001413: DUP3
00001414: MSTORE
00001415: PUSH1 0x20
00001417: DUP1
00001418: DUP4
00001419: KECCAK256
0000141a: SWAP1
0000141b: SWAP2
0000141c: ADD
0000141d: SLOAD
0000141e: PUSH1 0x01
00001420: PUSH1 0xa0
00001422: PUSH1 0x02
00001424: EXP
00001425: SUB
00001426: AND
00001427: DUP4
00001428: MSTORE
00001429: DUP3
0000142a: ADD
0000142b: SWAP3
0000142c: SWAP1
0000142d: SWAP3
0000142e: MSTORE
0000142f: PUSH1 0x40
00001431: ADD
00001432: SWAP1
00001433: KECCAK256
00001434: SLOAD
00001435: ISZERO
00001436: ISZERO
00001437: JUMPDEST
00001438: ISZERO
00001439: PUSH2 0x14d3
0000143c: JUMPI
0000143d: PUSH2 0x1480
00001440: DUP5
00001441: PUSH1 0x03
00001443: PUSH1 0x00
00001445: PUSH1 0x08
00001447: DUP6
00001448: DUP2
00001449: SLOAD
0000144a: DUP2
0000144b: LT
0000144c: ISZERO
0000144d: ISZERO
0000144e: PUSH2 0x1453
00001451: JUMPI
00001452: INVALID
00001453: JUMPDEST
00001454: PUSH1 0x00
00001456: SWAP2
00001457: DUP3
00001458: MSTORE
00001459: PUSH1 0x20
0000145b: DUP1
0000145c: DUP4
0000145d: KECCAK256
0000145e: SWAP1
0000145f: SWAP2
00001460: ADD
00001461: SLOAD
00001462: PUSH1 0x01
00001464: PUSH1 0xa0
00001466: PUSH1 0x02
00001468: EXP
00001469: SUB
0000146a: AND
0000146b: DUP4
0000146c: MSTORE
0000146d: DUP3
0000146e: ADD
0000146f: SWAP3
00001470: SWAP1
00001471: SWAP3
00001472: MSTORE
00001473: PUSH1 0x40
00001475: ADD
00001476: SWAP1
00001477: KECCAK256
00001478: SLOAD
00001479: DUP6
0000147a: PUSH1 0x12
0000147c: PUSH2 0x129a
0000147f: JUMP
00001480: JUMPDEST
00001481: PUSH1 0x0a
00001483: DUP2
00001484: SWAP1
00001485: SSTORE
00001486: PUSH1 0x0f
00001488: DUP2
00001489: SWAP1
0000148a: SSTORE
0000148b: PUSH1 0x08
0000148d: DUP1
0000148e: SLOAD
0000148f: PUSH1 0x05
00001491: SWAP2
00001492: PUSH1 0x00
00001494: SWAP2
00001495: DUP6
00001496: SWAP1
00001497: DUP2
00001498: LT
00001499: PUSH2 0x149e
0000149c: JUMPI
0000149d: INVALID
0000149e: JUMPDEST
0000149f: PUSH1 0x00
000014a1: SWAP2
000014a2: DUP3
000014a3: MSTORE
000014a4: PUSH1 0x20
000014a6: DUP1
000014a7: DUP4
000014a8: KECCAK256
000014a9: SWAP1
000014aa: SWAP2
000014ab: ADD
000014ac: SLOAD
000014ad: PUSH1 0x01
000014af: PUSH1 0xa0
000014b1: PUSH1 0x02
000014b3: EXP
000014b4: SUB
000014b5: AND
000014b6: DUP4
000014b7: MSTORE
000014b8: DUP3
000014b9: ADD
000014ba: SWAP3
000014bb: SWAP1
000014bc: SWAP3
000014bd: MSTORE
000014be: PUSH1 0x40
000014c0: ADD
000014c1: SWAP1
000014c2: KECCAK256
000014c3: DUP1
000014c4: SLOAD
000014c5: SWAP1
000014c6: SWAP2
000014c7: ADD
000014c8: SWAP1
000014c9: SSTORE
000014ca: PUSH1 0x01
000014cc: PUSH1 0x10
000014ce: SSTORE
000014cf: PUSH2 0x1569
000014d2: JUMP
000014d3: JUMPDEST
000014d4: DUP3
000014d5: ISZERO
000014d6: DUP1
000014d7: ISZERO
000014d8: PUSH2 0x1516
000014db: JUMPI
000014dc: POP
000014dd: PUSH1 0x03
000014df: PUSH1 0x00
000014e1: PUSH1 0x08
000014e3: DUP4
000014e4: DUP2
000014e5: SLOAD
000014e6: DUP2
000014e7: LT
000014e8: ISZERO
000014e9: ISZERO
000014ea: PUSH2 0x14ef
000014ed: JUMPI
000014ee: INVALID
000014ef: JUMPDEST
000014f0: PUSH1 0x00
000014f2: SWAP2
000014f3: DUP3
000014f4: MSTORE
000014f5: PUSH1 0x20
000014f7: DUP1
000014f8: DUP4
000014f9: KECCAK256
000014fa: SWAP1
000014fb: SWAP2
000014fc: ADD
000014fd: SLOAD
000014fe: PUSH1 0x01
00001500: PUSH1 0xa0
00001502: PUSH1 0x02
00001504: EXP
00001505: SUB
00001506: AND
00001507: DUP4
00001508: MSTORE
00001509: DUP3
0000150a: ADD
0000150b: SWAP3
0000150c: SWAP1
0000150d: SWAP3
0000150e: MSTORE
0000150f: PUSH1 0x40
00001511: ADD
00001512: SWAP1
00001513: KECCAK256
00001514: SLOAD
00001515: ISZERO
00001516: JUMPDEST
00001517: ISZERO
00001518: PUSH2 0x1569
0000151b: JUMPI
0000151c: PUSH1 0x02
0000151e: PUSH1 0x10
00001520: SSTORE
00001521: PUSH1 0x0a
00001523: SLOAD
00001524: PUSH1 0x0f
00001526: SSTORE
00001527: PUSH1 0x08
00001529: DUP1
0000152a: SLOAD
0000152b: DUP6
0000152c: SWAP2
0000152d: PUSH1 0x05
0000152f: SWAP2
00001530: PUSH1 0x00
00001532: SWAP2
00001533: SWAP1
00001534: DUP6
00001535: SWAP1
00001536: DUP2
00001537: LT
00001538: PUSH2 0x153d
0000153b: JUMPI
0000153c: INVALID
0000153d: JUMPDEST
0000153e: PUSH1 0x00
00001540: SWAP2
00001541: DUP3
00001542: MSTORE
00001543: PUSH1 0x20
00001545: DUP1
00001546: DUP4
00001547: KECCAK256
00001548: SWAP1
00001549: SWAP2
0000154a: ADD
0000154b: SLOAD
0000154c: PUSH1 0x01
0000154e: PUSH1 0xa0
00001550: PUSH1 0x02
00001552: EXP
00001553: SUB
00001554: AND
00001555: DUP4
00001556: MSTORE
00001557: DUP3
00001558: ADD
00001559: SWAP3
0000155a: SWAP1
0000155b: SWAP3
0000155c: MSTORE
0000155d: PUSH1 0x40
0000155f: ADD
00001560: SWAP1
00001561: KECCAK256
00001562: DUP1
00001563: SLOAD
00001564: SWAP1
00001565: SWAP2
00001566: ADD
00001567: SWAP1
00001568: SSTORE
00001569: JUMPDEST
0000156a: PUSH1 0x01
0000156c: ADD
0000156d: PUSH2 0x13e7
00001570: JUMP
00001571: JUMPDEST
00001572: POP
00001573: POP
00001574: POP
00001575: POP
00001576: JUMP
00001577: JUMPDEST
00001578: PUSH1 0x00
0000157a: DUP3
0000157b: DUP3
0000157c: GT
0000157d: ISZERO
0000157e: PUSH2 0x1583
00001581: JUMPI
00001582: INVALID
00001583: JUMPDEST
00001584: POP
00001585: SWAP1
00001586: SUB
00001587: SWAP1
00001588: JUMP
00001589: JUMPDEST
0000158a: PUSH1 0x09
0000158c: SLOAD
0000158d: PUSH1 0x00
0000158f: SWAP1
00001590: PUSH8 0x0de0b6b3a7640000
00001599: DUP4
0000159a: DUP2
0000159b: ADD
0000159c: SWAP2
0000159d: DUP2
0000159e: ADD
0000159f: SWAP1
000015a0: DUP4
000015a1: SWAP1
000015a2: PUSH2 0x15d9
000015a5: DUP2
000015a6: DUP5
000015a7: DIV
000015a8: DUP8
000015a9: MUL
000015aa: PUSH4 0x3b9aca00
000015af: MUL
000015b0: PUSH1 0x02
000015b2: DUP4
000015b3: PUSH8 0x0de0b6b3a763ffff
000015bc: NOT
000015bd: DUP3
000015be: DUP10
000015bf: EXP
000015c0: DUP12
000015c1: SWAP1
000015c2: SUB
000015c3: ADD
000015c4: DIV
000015c5: PUSH4 0x3b9aca00
000015ca: MUL
000015cb: DUP2
000015cc: ISZERO
000015cd: ISZERO
000015ce: PUSH2 0x15d3
000015d1: JUMPI
000015d2: INVALID
000015d3: JUMPDEST
000015d4: DIV
000015d5: PUSH2 0x1577
000015d8: JUMP
000015d9: JUMPDEST
000015da: DUP2
000015db: ISZERO
000015dc: ISZERO
000015dd: PUSH2 0x15e2
000015e0: JUMPI
000015e1: INVALID
000015e2: JUMPDEST
000015e3: DIV
000015e4: SWAP6
000015e5: SWAP5
000015e6: POP
000015e7: POP
000015e8: POP
000015e9: POP
000015ea: POP
000015eb: JUMP
000015ec: JUMPDEST
000015ed: DUP1
000015ee: PUSH1 0x02
000015f0: PUSH1 0x01
000015f2: DUP3
000015f3: ADD
000015f4: DIV
000015f5: JUMPDEST
000015f6: DUP2
000015f7: DUP2
000015f8: LT
000015f9: ISZERO
000015fa: PUSH2 0x0b3b
000015fd: JUMPI
000015fe: DUP1
000015ff: SWAP2
00001600: POP
00001601: PUSH1 0x02
00001603: DUP2
00001604: DUP3
00001605: DUP6
00001606: DUP2
00001607: ISZERO
00001608: ISZERO
00001609: PUSH2 0x160e
0000160c: JUMPI
0000160d: INVALID
0000160e: JUMPDEST
0000160f: DIV
00001610: ADD
00001611: DUP2
00001612: ISZERO
00001613: ISZERO
00001614: PUSH2 0x1619
00001617: JUMPI
00001618: INVALID
00001619: JUMPDEST
0000161a: DIV
0000161b: SWAP1
0000161c: POP
0000161d: PUSH2 0x15f5
00001620: JUMP
00001621: JUMPDEST
00001622: DUP2
00001623: SLOAD
00001624: DUP2
00001625: DUP4
00001626: SSTORE
00001627: DUP2
00001628: DUP2
00001629: ISZERO
0000162a: GT
0000162b: PUSH2 0x0f0f
0000162e: JUMPI
0000162f: PUSH1 0x00
00001631: DUP4
00001632: DUP2
00001633: MSTORE
00001634: PUSH1 0x20
00001636: SWAP1
00001637: KECCAK256
00001638: PUSH2 0x0f0f
0000163b: SWAP2
0000163c: DUP2
0000163d: ADD
0000163e: SWAP1
0000163f: DUP4
00001640: ADD
00001641: PUSH2 0x16bb
00001644: JUMP
00001645: JUMPDEST
00001646: DUP3
00001647: DUP1
00001648: SLOAD
00001649: PUSH1 0x01
0000164b: DUP2
0000164c: PUSH1 0x01
0000164e: AND
0000164f: ISZERO
00001650: PUSH2 0x0100
00001653: MUL
00001654: SUB
00001655: AND
00001656: PUSH1 0x02
00001658: SWAP1
00001659: DIV
0000165a: SWAP1
0000165b: PUSH1 0x00
0000165d: MSTORE
0000165e: PUSH1 0x20
00001660: PUSH1 0x00
00001662: KECCAK256
00001663: SWAP1
00001664: PUSH1 0x1f
00001666: ADD
00001667: PUSH1 0x20
00001669: SWAP1
0000166a: DIV
0000166b: DUP2
0000166c: ADD
0000166d: SWAP3
0000166e: DUP3
0000166f: PUSH1 0x1f
00001671: LT
00001672: PUSH2 0x1686
00001675: JUMPI
00001676: DUP1
00001677: MLOAD
00001678: PUSH1 0xff
0000167a: NOT
0000167b: AND
0000167c: DUP4
0000167d: DUP1
0000167e: ADD
0000167f: OR
00001680: DUP6
00001681: SSTORE
00001682: PUSH2 0x16b3
00001685: JUMP
00001686: JUMPDEST
00001687: DUP3
00001688: DUP1
00001689: ADD
0000168a: PUSH1 0x01
0000168c: ADD
0000168d: DUP6
0000168e: SSTORE
0000168f: DUP3
00001690: ISZERO
00001691: PUSH2 0x16b3
00001694: JUMPI
00001695: SWAP2
00001696: DUP3
00001697: ADD
00001698: JUMPDEST
00001699: DUP3
0000169a: DUP2
0000169b: GT
0000169c: ISZERO
0000169d: PUSH2 0x16b3
000016a0: JUMPI
000016a1: DUP3
000016a2: MLOAD
000016a3: DUP3
000016a4: SSTORE
000016a5: SWAP2
000016a6: PUSH1 0x20
000016a8: ADD
000016a9: SWAP2
000016aa: SWAP1
000016ab: PUSH1 0x01
000016ad: ADD
000016ae: SWAP1
000016af: PUSH2 0x1698
000016b2: JUMP
000016b3: JUMPDEST
000016b4: POP
000016b5: PUSH2 0x0aee
000016b8: SWAP3
000016b9: SWAP2
000016ba: POP
000016bb: JUMPDEST
000016bc: PUSH2 0x08d5
000016bf: SWAP2
000016c0: SWAP1
000016c1: JUMPDEST
000016c2: DUP1
000016c3: DUP3
000016c4: GT
000016c5: ISZERO
000016c6: PUSH2 0x0aee
000016c9: JUMPI
000016ca: PUSH1 0x00
000016cc: DUP2
000016cd: SSTORE
000016ce: PUSH1 0x01
000016d0: ADD
000016d1: PUSH2 0x16c1
000016d4: JUMP
000016d5: STOP
000016d6: LOG1
000016d7: PUSH6 0x627a7a723058
000016de: KECCAK256
000016df: EXTCODESIZE
000016e0: LOG3
000016e1: UNKNOWN(0xB3)
000016e2: LOG1
000016e3: MSTORE
000016e4: SELFDESTRUCT
000016e5: PUSH25 0x12a96d9f8b69fe855a021e6863e8e846ef3aec9cd908ae1854
000016ff: STOP
00001700: UNKNOWN(0x29)

Findings

validated = confirmed for call sinks; sink observed for others
Severity Category Tool Title Confidence Validated Confirmed Details
critical math codex Dividend distribution multiplies payouts when listed token sum is zero 90 no
view
evidence_json
{
    "evidence": "`profitPerShareAsPerHoldings` sums balances only from `contractTokenHolderAddresses_` and, when that sum is zero, credits the full `calculatedDividend` to each listed address. `sell` burns tokens before calling the distribution, and the holder list only grows on purchases, so tokens can be moved to unlisted addresses via transfer, leaving listed balances at zero and triggering the over-credit branch.",
    "locations": [
        "contracts/Contract.sol:435",
        "contracts/Contract.sol:455",
        "contracts/Contract.sol:465",
        "contracts/Contract.sol:780",
        "contracts/Contract.sol:938",
        "contracts/Contract.sol:960"
    ],
    "recommendation": "In `profitPerShareAsPerHoldings`, do not distribute dividends when `noOfTokens_ == 0`; instead skip distribution or revert. Also track holders in a way that includes transfer recipients or compute totals from `tokenSupply_` rather than a sparse address list.",
    "exploit_scenario": "1) Attacker creates N addresses A1..AN, each calls `buy` with minimal ETH so they are appended to `contractTokenHolderAddresses_`, then transfers all tokens to a fresh address B that has never bought (so B is not in the list). Now all listed addresses have zero balance while B holds all tokens. 2) B calls `sell` for some or all tokens. The sell burns tokens and then calls `profitPerShareAsPerHoldings`. Because `noOfTokens_` is computed only from listed addresses and is now 0, the `noOfTokens_==0` branch credits the full `calculatedDividend` (10% of the sale value) to every listed address, multiplying dividends by N. 3) Each Ai calls `withdraw` to receive 80% of that full dividend, while B calls `sellingWithdraw` to collect the 90% sale proceeds. This can be repeated with multiple sells. Profit potential: up to the entire contract ETH balance, scaling linearly with the number of list addresses (\u22480.08 * N * sale value + 0.90 * sale value per sell)."
}
high other cast SELFDESTRUCT present 85 no
view
evidence_json
{
    "notes": "selfdestruct can remove contract code and send funds; review reachability",
    "selfdestruct_count": 1
}
high other detector Untrusted CALL target/value reachable 60 no no
view
trace_id: 0xc7eec69802293dc351e046992a0b73af0078e7c14f409c0439d1f74cd1adf43e
call_targets: 0x25a06d4e1f804ce62cf11b091180a5c84980d93a
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0xc7eec69802293dc351e046992a0b73af0078e7c14f409c0439d1f74cd1adf43e",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0x25a06d4e1f804ce62cf11b091180a5c84980d93a"
    ],
    "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": "0x06fdde03",
            "selector": "0x06fdde03",
            "calldata_variants": [
                "0x06fdde03",
                "0x06fdde030000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x10d0ffdd",
            "selector": "0x10d0ffdd",
            "calldata_variants": [
                "0x10d0ffdd",
                "0x10d0ffdd0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x18160ddd",
            "selector": "0x18160ddd",
            "calldata_variants": [
                "0x18160ddd",
                "0x18160ddd0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x22609373",
            "selector": "0x22609373",
            "calldata_variants": [
                "0x22609373",
                "0x226093730000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x27defa1f",
            "selector": "0x27defa1f",
            "calldata_variants": [
                "0x27defa1f",
                "0x27defa1f0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x313ce567",
            "selector": "0x313ce567",
            "calldata_variants": [
                "0x313ce567",
                "0x313ce5670000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x392efb52",
            "selector": "0x392efb52",
            "calldata_variants": [
                "0x392efb52",
                "0x392efb520000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x3ccfd60b",
            "selector": "0x3ccfd60b",
            "calldata_variants": [
                "0x3ccfd60b",
                "0x3ccfd60b0000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 2526,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 2586,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 2652,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "call_count": 4,
    "guards_detected": [],
    "untrusted_call_count": 4
}
high other detector ETH value transfer possible 55 no no
view
trace_id: 0xc7eec69802293dc351e046992a0b73af0078e7c14f409c0439d1f74cd1adf43e
call_targets: 0x25a06d4e1f804ce62cf11b091180a5c84980d93a
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0xc7eec69802293dc351e046992a0b73af0078e7c14f409c0439d1f74cd1adf43e",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0x25a06d4e1f804ce62cf11b091180a5c84980d93a"
    ],
    "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": "0x06fdde03",
            "selector": "0x06fdde03",
            "calldata_variants": [
                "0x06fdde03",
                "0x06fdde030000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x10d0ffdd",
            "selector": "0x10d0ffdd",
            "calldata_variants": [
                "0x10d0ffdd",
                "0x10d0ffdd0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x18160ddd",
            "selector": "0x18160ddd",
            "calldata_variants": [
                "0x18160ddd",
                "0x18160ddd0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x22609373",
            "selector": "0x22609373",
            "calldata_variants": [
                "0x22609373",
                "0x226093730000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x27defa1f",
            "selector": "0x27defa1f",
            "calldata_variants": [
                "0x27defa1f",
                "0x27defa1f0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x313ce567",
            "selector": "0x313ce567",
            "calldata_variants": [
                "0x313ce567",
                "0x313ce5670000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x392efb52",
            "selector": "0x392efb52",
            "calldata_variants": [
                "0x392efb52",
                "0x392efb520000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x3ccfd60b",
            "selector": "0x3ccfd60b",
            "calldata_variants": [
                "0x3ccfd60b",
                "0x3ccfd60b0000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 2526,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 2586,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 2652,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "eth_value_calls": 4,
    "guards_detected": []
}
high other detector SELFDESTRUCT reachable 65 no no
view
trace_id: 0x12a5ae3137df03269882de83333ca8fb7e5d334178c5eb2bc05686d3eb5d80d9
validation_json
{
    "sink": "SELFDESTRUCT",
    "errors": 0,
    "status": "unknown",
    "attempts": 32,
    "trace_id": "0x12a5ae3137df03269882de83333ca8fb7e5d334178c5eb2bc05686d3eb5d80d9",
    "confirmed": false,
    "trace_mode": "structLogs",
    "call_targets": null,
    "matched_probe": null,
    "target_varies": null,
    "classification": "no_sink"
}
witness_json
{
    "notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
    "constraints": [],
    "entrypoints": [
        {
            "calldata": "0x06fdde03",
            "selector": "0x06fdde03",
            "calldata_variants": [
                "0x06fdde03",
                "0x06fdde030000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x10d0ffdd",
            "selector": "0x10d0ffdd",
            "calldata_variants": [
                "0x10d0ffdd",
                "0x10d0ffdd0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x18160ddd",
            "selector": "0x18160ddd",
            "calldata_variants": [
                "0x18160ddd",
                "0x18160ddd0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x22609373",
            "selector": "0x22609373",
            "calldata_variants": [
                "0x22609373",
                "0x226093730000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x27defa1f",
            "selector": "0x27defa1f",
            "calldata_variants": [
                "0x27defa1f",
                "0x27defa1f0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x313ce567",
            "selector": "0x313ce567",
            "calldata_variants": [
                "0x313ce567",
                "0x313ce5670000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x392efb52",
            "selector": "0x392efb52",
            "calldata_variants": [
                "0x392efb52",
                "0x392efb520000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x3ccfd60b",
            "selector": "0x3ccfd60b",
            "calldata_variants": [
                "0x3ccfd60b",
                "0x3ccfd60b0000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "guards_detected": [],
    "selfdestruct_count": 1
}