b84cc237-c90a-4d2a-a39b-3b8b6f7bf892
Open this run to answer one question: is this real attacker-relevant behavior with real impact, or just normal contract plumbing?
| ID | Type | Status | Attempts | Heartbeat |
|---|---|---|---|---|
| 31486 | report.consolidate | complete | 1 / 1 | 3 months ago |
| 77542 | artifact.fetch | complete | 1 / 3 | 1 week ago |
| 77543 | tool.cast_disasm | complete | 1 / 3 | 1 week ago |
| 77544 | analysis.bundle | complete | 1 / 3 | 1 week ago |
| 77545 | capability.graph | complete | 1 / 3 | 1 week ago |
| 77546 | detector.run | complete | 1 / 3 | 1 week ago |
| 77547 | validation.fork | complete | 1 / 3 | 1 week ago |
No slither job recorded yet.
[codex:528440] OpenAI Codex v0.77.0 (research preview)
[codex:528440] --------
[codex:528440] workdir: /tmp/codex-multi-o6na9o4h
[codex:528440] model: gpt-5.2-codex
[codex:528440] provider: openai
[codex:528440] approval: never
[codex:528440] sandbox: read-only
[codex:528440] reasoning effort: xhigh
[codex:528440] reasoning summaries: auto
[codex:528440] session id: 019b8644-1273-77d3-acea-79925bdc1fc3
[codex:528440] --------
[codex:528440] user
[codex:528440] You are a profit-focused exploit hunter. Your ONLY goal is finding ways to extract value (ETH, tokens, NFTs) from this contract.
[codex:528440]
[codex:528440] Read `AUDIT_BUNDLE.txt` completely before concluding. Treat `lib/` and `@openzeppelin/` as trusted unless misused.
[codex:528440]
[codex:528440] ONLY REPORT if you find a CONCRETE, EXPLOITABLE path to profit. We do NOT care about:
[codex:528440] - Gas inefficiency, code quality, naming, or best practices
[codex:528440] - Theoretical vulnerabilities without a clear extraction path
[codex:528440] - Centralization risks (admin can rug) - assume admin keys are secure
[codex:528440] - Front-running unless it enables theft beyond MEV
[codex:528440] - DoS, griefing, or issues that don't result in attacker profit
[codex:528440] - Missing events, view function issues, or informational findings
[codex:528440]
[codex:528440] HIGH-VALUE PATTERNS TO HUNT:
[codex:528440] - Reentrancy: external calls before state updates that allow double-withdrawal
[codex:528440] - Access control: missing/bypassable auth on withdraw, transfer, or mint functions
[codex:528440] - Flash loan attacks: borrow -> manipulate -> profit in single tx
[codex:528440] - Price oracle manipulation: TWAP with short window, spot price reads, stale prices
[codex:528440] - Signature replay: missing nonce, chainId, or deadline in permit/meta-tx
[codex:528440] - Proxy hijacking: unprotected initialize(), storage collision, UUPS without auth
[codex:528440] - Accounting errors: rounding that favors attacker, share inflation, first depositor attacks
[codex:528440] - Unchecked external calls: return value ignored on token transfers enabling fake tokens
[codex:528440] - Cross-function reentrancy: state read in function A, modified via reentrant call, used stale in A
[codex:528440]
[codex:528440] For each finding, you MUST provide:
[codex:528440] 1. Exact file and line numbers of vulnerable code
[codex:528440] 2. Step-by-step exploit transaction sequence
[codex:528440] 3. Estimated profit potential (order of magnitude: contract balance, LP reserves, etc.)
[codex:528440]
[codex:528440] If no concrete profit path exists: set no_findings=true. Do NOT pad with low-severity noise.
[codex:528440]
[codex:528440] Output MUST be valid JSON matching the provided schema.
[codex:528440] - severity: info, low, medium, high, critical (use high/critical ONLY for clear extraction paths)
[codex:528440] - category: access_control, reentrancy, math, oracle, upgradeability, auth, other
[codex:528440] mcp startup: no servers
[codex:528440]
[codex:528440] thinking
[codex:528440] **Preparing to read AUDIT_BUNDLE.txt**
[codex:528440] exec
[codex:528440] /bin/bash -lc ls in /tmp/codex-multi-o6na9o4h succeeded in 5ms:
[codex:528440] AUDIT_BUNDLE.txt
[codex:528440] codex-output-schema.json
[codex:528440] contracts
[codex:528440]
[codex:528440] thinking
[codex:528440] **Reading AUDIT_BUNDLE.txt**
[codex:528440] exec
[codex:528440] /bin/bash -lc 'cat AUDIT_BUNDLE.txt' in /tmp/codex-multi-o6na9o4h succeeded in 5ms:
[codex:528440] This file concatenates first-party Solidity sources only (lib/@openzeppelin excluded).
[codex:528440]
[codex:528440] ================================================================================
[codex:528440] FILE: contracts/Contract.sol
[codex:528440] ================================================================================
[codex:528440] // _ _ _ _ __ _
[codex:528440] // | | (_) | | | / _(_)
[codex:528440] // | | ___| |_| |_ ___ _ __ | |_ _ _ __ __ _ _ __ ___ ___
[codex:528440] // | |/ / | __| __/ _ \ '_ \ | _| | '_ \ / _` | '_ \ / __/ _ \
[codex:528440] // | <| | |_| || __/ | | |_| | | | | | | (_| | | | | (_| __/
[codex:528440] // |_|\_\_|\__|\__\___|_| |_(_)_| |_|_| |_|\__,_|_| |_|\___\___|
[codex:528440] //
[codex:528440] // LIQUID : a token with deep floor liquidity & ever-rising floor price
[codex:528440] //
[codex:528440] // https://www.KittenSwap.org
[codex:528440] //
[codex:528440] // https://www.Kitten.finance
[codex:528440] //
[codex:528440] pragma solidity ^0.5.17;
[codex:528440]
[codex:528440]
[codex:528440]
[codex:528440] thinking
[codex:528440] **Analyzing bonding curve for exploits**
[codex:528440] thinking
[codex:528440] **Evaluating bonding curve invariants**
[codex:528440]
[codex:528440] I’m unpacking the formulas for buy and sell operations on the bonding curve, trying to identify if the asymmetric "+ half reserve" terms create an exploitable spread or rounding arbitrage. Looks like the invariant isn’t constant across trades, so I’m planning to simulate buys and sells with Python to spot any profit opportunities.
[codex:528440] exec
[codex:528440] /bin/bash -lc "python3 - <<'PY'
[codex:528440] from decimal import Decimal, getcontext
[codex:528440] getcontext().prec=50
[codex:528440]
[codex:528440] def buy(R_e,R_t,delta_e):
[codex:528440] newE=R_e+delta_e
[codex:528440] newT=(R_e*R_t + newE/2)/newE
[codex:528440] outT=R_t-newT
[codex:528440] return newE,newT,outT
[codex:528440]
[codex:528440] def sell(R_e,R_t,delta_t):
[codex:528440] newT=R_t+delta_t
[codex:528440] newE=(R_e*R_t + newT/2)/newT
[codex:528440] outE=R_e-newE
[codex:528440] return newE,newT,outE
[codex:528440]
[codex:528440] R_e=Decimal(2100)
[codex:528440] R_t=Decimal(21000)
[codex:528440] for d in [Decimal('1'),Decimal('0.1'),Decimal('10')]:
[codex:528440] newE,newT,outT=buy(R_e,R_t,d)
[codex:528440] # sell back outT (no burn)
[codex:528440] newE2,newT2,outE=sell(newE,newT,outT)
[codex:528440] print('delta_e',d,'outT',outT,'outE',outE,'profit',outE-d)
[codex:528440] PY" in /tmp/codex-multi-o6na9o4h succeeded in 22ms:
[codex:528440] delta_e 1 outT 9.495240361732508329366968110423607805806758686 outE 0.4499761904761904761904761904761904761904761904 profit -0.5500238095238095238095238095238095238095238096
[codex:528440] delta_e 0.1 outT 0.499952383219846673967906290176658254368839579 outE -0.4500023809523809523809523809523809523809523810 profit -0.5500023809523809523809523809523809523809523810
[codex:528440] delta_e 10 outT 99.026066350710900473933649289099526066350710900 outE 9.4497619047619047619047619047619047619047619047 profit -0.5502380952380952380952380952380952380952380953
[codex:528440]
[codex:528440] thinking
[codex:528440] **Analyzing token reserve and burn mechanisms**
[codex:528440] exec
[codex:528440] /bin/bash -lc "python3 - <<'PY'
[codex:528440] from decimal import Decimal, getcontext
[codex:528440] getcontext().prec=60
[codex:528440]
[codex:528440] def buy(R_e,R_t,delta_e):
[codex:528440] newE=R_e+delta_e
[codex:528440] newT=(R_e*R_t + newE/2)/newE
[codex:528440] outT=R_t-newT
[codex:528440] return newE,newT,outT
[codex:528440]
[codex:528440] def sell(R_e,R_t,delta_t):
[codex:528440] newT=R_t+delta_t
[codex:528440] newE=(R_e*R_t + newT/2)/newT
[codex:528440] outE=R_e-newE
[codex:528440] return newE,newT,outE
[codex:528440]
[codex:528440] R_e=Decimal(2100)
[codex:528440] R_t=Decimal(21000)
[codex:528440] for d in [Decimal('100'),Decimal('1000'),Decimal('10')]:
[codex:528440] # sell tokens d, then buy back with outE
[codex:528440] newE,newT,outE=sell(R_e,R_t,d)
[codex:528440] newE2,newT2,outT=buy(newE,newT,outE)
[codex:528440] print('sell tokens',d,'outE',outE,'buy back tokens',outT,'net tokens',outT-d)
[codex:528440] PY" in /tmp/codex-multi-o6na9o4h succeeded in 19ms:
[codex:528440] sell tokens 100 outE 9.45260663507109004739336492890995260663507109004739336493 buy back tokens 94.4761904761904761904761904761904761904761904761904761905 net tokens -5.5238095238095238095238095238095238095238095238095238095
[codex:528440] sell tokens 1000 outE 94.95454545454545454545454545454545454545454545454545454545 buy back tokens 994.2619047619047619047619047619047619047619047619047619047 net tokens -5.7380952380952380952380952380952380952380952380952380953
[codex:528440] sell tokens 10 outE 0.49952403617325083293669681104236078058067586863398381723 buy back tokens 4.4976190476190476190476190476190476190476190476190476190 net tokens -5.5023809523809523809523809523809523809523809523809523810
[codex:528440]
[codex:528440]
[codex:528440] thinking
[codex:528440] **Analyzing token mechanics and potential exploits**
[codex:528440]
[codex:528440] I'm carefully checking the contract’s buy and sell logic, focusing on burn mechanics, treasury accounting, whitelist checks, reentrancy risks, and reserve adjustments. There’s a deep dive into how burning tokens affects the token reserve and total supply, considering scenarios where a high reserve-to-circulating ratio might allow sellers to manipulate prices or gain profit, especially via strategies like flashloans or exploiting early-stage circulating supply. I want to understand if the complex burn and extraBurn calculations could unintentionally enable a profit beyond the intended tokenomics.
[codex:528440] thinking
[codex:528440] **Modeling buy-sell cycle with burns and reserves**
[codex:528440]
[codex:528440] I'm setting up a detailed simulation of token buy and sell operations including burn and extraBurn effects on token reserves and total supply. I want to test whether executing a buy followed by a sell—accounting for the complex burn mechanics and auto-boost adjustments—could yield a net profit by exploiting how tokenReserve and totalSupply change during these transactions. This should clarify if any subtle exploit or unintended profit emerges from the tokenomics.
[codex:528440] exec
[codex:528440] /bin/bash -lc "python3 - <<'PY'
[codex:528440] from decimal import Decimal, getcontext
[codex:528440] getcontext().prec=80
[codex:528440]
[codex:528440] BP=Decimal(10000)
[codex:528440] SELL_BURN_BP=Decimal(60) # 0.6%
[codex:528440]
[codex:528440]
[codex:528440] def buy(R_e, R_t, delta_e):
[codex:528440] newE = R_e + delta_e
[codex:528440] newT = (R_e * R_t + newE/2) / newE
[codex:528440] outT = R_t - newT
[codex:528440] # update reserves: tokenReserve decreases by outT; totalSupply unchanged
[codex:528440] return newE, newT, outT
[codex:528440]
[codex:528440] def burn(totalSupply, tokenReserve, burnAmt):
[codex:528440] if burnAmt==0:
[codex:528440] return totalSupply, tokenReserve
[codex:528440] if totalSupply > tokenReserve:
[codex:528440] extraBurn = tokenReserve * burnAmt / (totalSupply - tokenReserve)
[codex:528440] # simulate revert if extraBurn > tokenReserve (shouldn't here)
[codex:528440] tokenReserve -= extraBurn
[codex:528440] totalSupply -= (burnAmt + extraBurn)
[codex:528440] else:
[codex:528440] totalSupply -= burnAmt
[codex:528440] return totalSupply, tokenReserve
[codex:528440]
[codex:528440] def sell(R_e, R_t, totalSupply, tokenAmt):
[codex:528440] burnAmt = tokenAmt * SELL_BURN_BP / BP
[codex:528440] tokenAmtAfterBurn = tokenAmt - burnAmt
[codex:528440] # burn reduces totalSupply and tokenReserve by extraBurn
[codex:528440] totalSupply, R_t = burn(totalSupply, R_t, burnAmt)
[codex:528440] # now oldTokenReserve = R_t
[codex:528440] newT = R_t + tokenAmtAfterBurn
[codex:528440] newE = (R_e * R_t + newT/2) / newT
[codex:528440] outE = R_e - newE
[codex:528440] # update reserves: tokenReserve becomes newT, ethReserve becomes newE
[codex:528440] return newE, newT, totalSupply, outE
[codex:528440]
[codex:528440] # simulate buy then sell
[codex:528440] R_e=Decimal(2100)
[codex:528440] R_t=Decimal(21000)
[codex:528440] Total=Decimal(21000)
[codex:528440]
[codex:528440] for d in [Decimal('1'), Decimal('10'), Decimal('100')]:
[codex:528440] e1,t1,outT=buy(R_e,R_t,d)
[codex:528440] # update state after buy
[codex:528440] R_e1=e1; R_t1=t1; Total1=Total
[codex:528440] # sell outT
[codex:528440] e2,t2,Total2,outE=sell(R_e1,R_t1,Total1,outT)
[codex:528440] print('buy ETH',d,'got tokens',outT,'sell ETH out',outE,'profit',outE-d)
[codex:528440] PY" in /tmp/codex-multi-o6na9o4h succeeded in 20ms:
[codex:528440] buy ETH 1 got tokens 9.495240361732508329366968110423607805806758686339838172298905283198476915754 sell ETH out 0.4499761904761904761904761904761904761904761904761904761904761904761904761904 profit -0.5500238095238095238095238095238095238095238095238095238095238095238095238096
[codex:528440] buy ETH 10 got tokens 99.026066350710900473933649289099526066350710900473933649289099526066350710900 sell ETH out 9.4497619047619047619047619047619047619047619047619047619047619047619047619048 profit -0.5502380952380952380952380952380952380952380952380952380952380952380952380952
[codex:528440] buy ETH 100 got tokens 954.045454545454545454545454545454545454545454545454545454545454545454545454545 sell ETH out 99.4476190476190476190476190476190476190476190476190476190476190476190476190476 profit -0.5523809523809523809523809523809523809523809523809523809523809523809523809524
[codex:528440]
[codex:528440] thinking
[codex:528440] **Analyzing potential reentrancy and rounding exploits**
[codex:528440] exec
[codex:528440] /bin/bash -lc "python3 - <<'PY'
[codex:528440] from decimal import Decimal
[codex:528440]
[codex:528440] WAD=10**18
[codex:528440] INIT_E=2100*WAD
[codex:528440] INIT_T=21000*WAD
[codex:528440] SELL_BURN_BP=60
[codex:528440] BP=10000
[codex:528440]
[codex:528440] # integer math functions
[codex:528440]
[codex:528440] def buy(R_e,R_t,delta_e):
[codex:528440] newE=R_e+delta_e
[codex:528440] newT=(R_e*R_t + newE//2)//newE
[codex:528440] outT=R_t-newT
[codex:528440] return newE,newT,outT
[codex:528440]
[codex:528440] def burn(totalSupply, tokenReserve, burnAmt):
[codex:528440] if burnAmt==0:
[codex:528440] return totalSupply, tokenReserve
[codex:528440] if totalSupply > tokenReserve:
[codex:528440] extraBurn = tokenReserve * burnAmt // (totalSupply - tokenReserve)
[codex:528440] if extraBurn > tokenReserve:
[codex:528440] raise Exception('extraBurn > tokenReserve')
[codex:528440] tokenReserve -= extraBurn
[codex:528440] totalSupply -= (burnAmt + extraBurn)
[codex:528440] else:
[codex:528440] totalSupply -= burnAmt
[codex:528440] return totalSupply, tokenReserve
[codex:528440]
[codex:528440]
[codex:528440] def sell(R_e,R_t,totalSupply,tokenAmt):
[codex:528440] burnAmt = tokenAmt * SELL_BURN_BP // BP
[codex:528440] tokenAmtAfterBurn = tokenAmt - burnAmt
[codex:528440] totalSupply, R_t = burn(totalSupply, R_t, burnAmt)
[codex:528440] newT = R_t + tokenAmtAfterBurn
[codex:528440] newE = (R_e*R_t + newT//2)//newT
[codex:528440] outE = R_e - newE
[codex:528440] return newE,newT,totalSupply,outE
[codex:528440]
[codex:528440] # simulate small trades
[codex:528440] R_e=INIT_E
[codex:528440] R_t=INIT_T
[codex:528440] Total=INIT_T
[codex:528440]
[codex:528440] for delta_e in [1,10,10**6,10**12,10**15,10**18]:
[codex:528440] e1,t1,outT=buy(R_e,R_t,delta_e)
[codex:528440] e2,t2,Total2,outE=sell(e1,t1,Total,outT)
[codex:528440] print('delta_e',delta_e,'outT',outT,'outE',outE,'profit',outE-delta_e)
[codex:528440] PY" in /tmp/codex-multi-o6na9o4h succeeded in 20ms:
[codex:528440] delta_e 1 outT 10 outE 1 profit 0
[codex:528440] delta_e 10 outT 100 outE 10 profit 0
[codex:528440] delta_e 1000000 outT 10000000 outE 1000000 profit 0
[codex:528440] delta_e 1000000000000 outT 9999999995238 outE 1000000000000 profit 0
[codex:528440] delta_e 1000000000000000 outT 9999995238097506 outE 1000000000000000 profit 0
[codex:528440] delta_e 1000000000000000000 outT 9995240361732508329 outE 1000000000000000000 profit 0
[codex:528440]
[codex:528440] thinking
[codex:528440] **Analyzing rounding and burn effects in integer math**
[codex:528440] exec
[codex:528440] /bin/bash -lc "python3 - <<'PY'
[codex:528440] WAD=10**18
[codex:528440] INIT_E=2100*WAD
[codex:528440] INIT_T=21000*WAD
[codex:528440] SELL_BURN_BP=60
[codex:528440] BP=10000
[codex:528440]
[codex:528440] def buy(R_e,R_t,delta_e):
[codex:528440] newE=R_e+delta_e
[codex:528440] newT=(R_e*R_t + newE//2)//newE
[codex:528440] outT=R_t-newT
[codex:528440] return newE,newT,outT
[codex:528440]
[codex:528440] def burn(totalSupply, tokenReserve, burnAmt):
[codex:528440] if burnAmt==0:
[codex:528440] return totalSupply, tokenReserve
[codex:528440] if totalSupply > tokenReserve:
[codex:528440] extraBurn = tokenReserve * burnAmt // (totalSupply - tokenReserve)
[codex:528440] tokenReserve -= extraBurn
[codex:528440] totalSupply -= (burnAmt + extraBurn)
[codex:528440] else:
[codex:528440] totalSupply -= burnAmt
[codex:528440] return totalSupply, tokenReserve
[codex:528440]
[codex:528440]
[codex:528440] def sell(R_e,R_t,totalSupply,tokenAmt):
[codex:528440] burnAmt = tokenAmt * SELL_BURN_BP // BP
[codex:528440] tokenAmtAfterBurn = tokenAmt - burnAmt
[codex:528440] totalSupply, R_t = burn(totalSupply, R_t, burnAmt)
[codex:528440] newT = R_t + tokenAmtAfterBurn
[codex:528440] newE = (R_e*R_t + newT//2)//newT
[codex:528440] outE = R_e - newE
[codex:528440] return newE,newT,totalSupply,outE,burnAmt,tokenAmtAfterBurn
[codex:528440]
[codex:528440] R_e=INIT_E; R_t=INIT_T; Total=INIT_T
[codex:528440]
[codex:528440] delta_e=10**18
[codex:528440] R_e1,R_t1,outT=buy(R_e,R_t,delta_e)
[codex:528440] print('outT',outT)
[codex:528440] R_e2,R_t2,Total2,outE,burnAmt,tokenAfter=sell(R_e1,R_t1,Total,outT)
[codex:528440] print('burnAmt',burnAmt,'tokenAfter',tokenAfter)
[codex:528440] print('outE',outE,'profit',outE-delta_e)
[codex:528440] print('R_e1',R_e1,'R_t1',R_t1)
[codex:528440] print('R_e2',R_e2,'R_t2',R_t2)
[codex:528440] print('Total2',Total2)
[codex:528440] PY" in /tmp/codex-multi-o6na9o4h succeeded in 17ms:
[codex:528440] outT 9995240361732508329
[codex:528440] burnAmt 59971442170395049 tokenAfter 9935268919562113280
[codex:528440] outE 1000000000000000000 profit 0
[codex:528440] R_e1 2101000000000000000000 R_t1 20990004759638267491671
[codex:528440] R_e2 2100000000000000000000 R_t2 20874000000000000002047
[codex:528440] Total2 20874000000000000002047
[codex:528440]
[codex:528440] thinking
[codex:528440] **Analyzing token burn and price pump cycle**
[codex:528440]
[codex:528440] I’m exploring how a buy-sell cycle burns tokens from the reserve without net ETH loss, effectively removing tokens while returning the user’s ETH. This could let someone repeatedly burn reserve tokens for free (aside from gas), potentially pumping the token price and profiting if they hold tokens beforehand. I want to test multiple cycles to see how much the price increases and if infinite pumping is possible.
[codex:528440] exec
[codex:528440] /bin/bash -lc "python3 - <<'PY'
[codex:528440] WAD=10**18
[codex:528440] INIT_E=2100*WAD
[codex:528440] INIT_T=21000*WAD
[codex:528440] SELL_BURN_BP=60
[codex:528440] BP=10000
[codex:528440]
[codex:528440] def buy(R_e,R_t,delta_e):
[codex:528440] newE=R_e+delta_e
[codex:528440] newT=(R_e*R_t + newE//2)//newE
[codex:528440] outT=R_t-newT
[codex:528440] return newE,newT,outT
[codex:528440]
[codex:528440] def burn(totalSupply, tokenReserve, burnAmt):
[codex:528440] if burnAmt==0:
[codex:528440] return totalSupply, tokenReserve
[codex:528440] if totalSupply > tokenReserve:
[codex:528440] extraBurn = tokenReserve * burnAmt // (totalSupply - tokenReserve)
[codex:528440] tokenReserve -= extraBurn
[codex:528440] totalSupply -= (burnAmt + extraBurn)
[codex:528440] else:
[codex:528440] totalSupply -= burnAmt
[codex:528440] return totalSupply, tokenReserve
[codex:528440]
[codex:528440]
[codex:528440] def sell(R_e,R_t,totalSupply,tokenAmt):
[codex:528440] burnAmt = tokenAmt * SELL_BURN_BP // BP
[codex:528440] tokenAmtAfterBurn = tokenAmt - burnAmt
[codex:528440] totalSupply, R_t = burn(totalSupply, R_t, burnAmt)
[codex:528440] newT = R_t + tokenAmtAfterBurn
[codex:528440] newE = (R_e*R_t + newT//2)//newT
[codex:528440] outE = R_e - newE
[codex:528440] return newE,newT,totalSupply,outE
[codex:528440]
[codex:528440]
[codex:528440] def price_per_token(R_e,R_t):
[codex:528440] # approximate marginal price: ETH out for selling 1 token (1e18 units)
[codex:528440] tokenAmt = 1*WAD
[codex:528440] # compute outE using sell formula without burn? Actually selling 1 token includes burn 0.6%.
[codex:528440] totalSupply = R_t # not accurate; need totalSupply? We'll track separately.
[codex:528440]
[codex:528440] # simulate cycles
[codex:528440] R_e=INIT_E
[codex:528440] R_t=INIT_T
[codex:528440] Total=INIT_T
[codex:528440]
[codex:528440] # function to compute ETH out for selling 1 token given state
[codex:528440]
[codex:528440] def eth_out_for_sell(R_e,R_t,Total,tokenAmt):
[codex:528440] burnAmt = tokenAmt * SELL_BURN_BP // BP
[codex:528440] tokenAmtAfterBurn = tokenAmt - burnAmt
[codex:528440] Total2, R_t2 = burn(Total, R_t, burnAmt)
[codex:528440] newT = R_t2 + tokenAmtAfterBurn
[codex:528440] newE = (R_e*R_t2 + newT//2)//newT
[codex:528440] outE = R_e - newE
[codex:528440] return outE
[codex:528440]
[codex:528440] print('initial price (ETH for 1 token):', eth_out_for_sell(R_e,R_t,Total,WAD)/WAD)
[codex:528440]
[codex:528440] # perform 10 pump cycles with delta_e = 1 ETH
[codex:528440] for i in range(1,6):
[codex:528440] # buy and sell with 1 ETH
[codex:528440] R_e1,R_t1,outT=buy(R_e,R_t,1*WAD)
[codex:528440] R_e2,R_t2,Total2,outE=sell(R_e1,R_t1,Total,outT)
[codex:528440] # update state to post-cycle
[codex:528440] R_e,R_t,Total = R_e2,R_t2,Total2
[codex:528440] price = eth_out_for_sell(R_e,R_t,Total,WAD)
[codex:528440] print('cycle',i,'R_e',R_e/WAD,'R_t',R_t/WAD,'Total',Total/WAD,'price',price/WAD)
[codex:528440] PY" in /tmp/codex-multi-o6na9o4h succeeded in 17ms:
[codex:528440] initial price (ETH for 1 token): 0.0993952952893563
[codex:528440] cycle 1 R_e 2100.0 R_t 20874.0 Total 20874.0 price 0.09999523832198466
[codex:528440] cycle 2 R_e 2100.0 R_t 20748.756 Total 20748.756 price 0.10059880239520957
[codex:528440] cycle 3 R_e 2100.0 R_t 20624.263464 Total 20624.263464 price 0.10120600936223058
[codex:528440] cycle 4 R_e 2100.0 R_t 20500.517883216 Total 20500.517883216 price 0.10181688120810713
[codex:528440] cycle 5 R_e 2100.0 R_t 20377.514775916705 Total 20377.514775916705 price 0.10243144005055398
[codex:528440]
[codex:528440] thinking
[codex:528440] **Analyzing pump cycle tokenomics**
[codex:528440] exec
[codex:528440] /bin/bash -lc "python3 - <<'PY'
[codex:528440] WAD=10**18
[codex:528440] INIT_E=2100*WAD
[codex:528440] INIT_T=21000*WAD
[codex:528440] SELL_BURN_BP=60
[codex:528440] BP=10000
[codex:528440]
[codex:528440]
[codex:528440] def buy(R_e,R_t,delta_e):
[codex:528440] newE=R_e+delta_e
[codex:528440] newT=(R_e*R_t + newE//2)//newE
[codex:528440] outT=R_t-newT
[codex:528440] return newE,newT,outT
[codex:528440]
[codex:528440] def burn(totalSupply, tokenReserve, burnAmt):
[codex:528440] if burnAmt==0:
[codex:528440] return totalSupply, tokenReserve
[codex:528440] if totalSupply > tokenReserve:
[codex:528440] extraBurn = tokenReserve * burnAmt // (totalSupply - tokenReserve)
[codex:528440] tokenReserve -= extraBurn
[codex:528440] totalSupply -= (burnAmt + extraBurn)
[codex:528440] else:
[codex:528440] totalSupply -= burnAmt
[codex:528440] return totalSupply, tokenReserve
[codex:528440]
[codex:528440]
[codex:528440] def sell(R_e,R_t,totalSupply,tokenAmt):
[codex:528440] burnAmt = tokenAmt * SELL_BURN_BP // BP
[codex:528440] tokenAmtAfterBurn = tokenAmt - burnAmt
[codex:528440] totalSupply, R_t = burn(totalSupply, R_t, burnAmt)
[codex:528440] newT = R_t + tokenAmtAfterBurn
[codex:528440] newE = (R_e*R_t + newT//2)//newT
[codex:528440] outE = R_e - newE
[codex:528440] return newE,newT,totalSupply,outE
[codex:528440]
[codex:528440] # simulate attack
[codex:528440] R_e=INIT_E
[codex:528440] R_t=INIT_T
[codex:528440] Total=INIT_T
[codex:528440]
[codex:528440] # attacker buys tokens with buy_eth
[codex:528440] buy_eth=100*WAD
[codex:528440] R_e, R_t, tokens = buy(R_e, R_t, buy_eth)
[codex:528440] # tokens acquired
[codex:528440]
[codex:528440] # pump cycles
[codex:528440] cycle_eth=1*WAD
[codex:528440] cycles=50
[codex:528440] for i in range(cycles):
[codex:528440] R_e1,R_t1,outT=buy(R_e,R_t,cycle_eth)
[codex:528440] R_e2,R_t2,Total,outE=sell(R_e1,R_t1,Total,outT)
[codex:528440] R_e,R_t = R_e2,R_t2
[codex:528440]
[codex:528440] # attacker sells his tokens
[codex:528440] R_e, R_t, Total, outE = sell(R_e, R_t, Total, tokens)
[codex:528440] profit = outE - buy_eth
[codex:528440]
[codex:528440] print('tokens acquired',tokens/WAD)
[codex:528440] print('profit ETH',profit/WAD)
[codex:528440] PY" in /tmp/codex-multi-o6na9o4h succeeded in 18ms:
[codex:528440] tokens acquired 954.5454545454545
[codex:528440] profit ETH 0.29705159652352586
[codex:528440]
[codex:528440] thinking
[codex:528440] **Analyzing profit impact of pump cycles**
[codex:528440] exec
[codex:528440] /bin/bash -lc "python3 - <<'PY'
[codex:528440] WAD=10**18
[codex:528440] INIT_E=2100*WAD
[codex:528440] INIT_T=21000*WAD
[codex:528440] SELL_BURN_BP=60
[codex:528440] BP=10000
[codex:528440]
[codex:528440] def buy(R_e,R_t,delta_e):
[codex:528440] newE=R_e+delta_e
[codex:528440] newT=(R_e*R_t + newE//2)//newE
[codex:528440] outT=R_t-newT
[codex:528440] return newE,newT,outT
[codex:528440]
[codex:528440] def burn(totalSupply, tokenReserve, burnAmt):
[codex:528440] if burnAmt==0:
[codex:528440] return totalSupply, tokenReserve
[codex:528440] if totalSupply > tokenReserve:
[codex:528440] extraBurn = tokenReserve * burnAmt // (totalSupply - tokenReserve)
[codex:528440] tokenReserve -= extraBurn
[codex:528440] totalSupply -= (burnAmt + extraBurn)
[codex:528440] else:
[codex:528440] totalSupply -= burnAmt
[codex:528440] return totalSupply, tokenReserve
[codex:528440]
[codex:528440]
[codex:528440] def sell(R_e,R_t,totalSupply,tokenAmt):
[codex:528440] burnAmt = tokenAmt * SELL_BURN_BP // BP
[codex:528440] tokenAmtAfterBurn = tokenAmt - burnAmt
[codex:528440] totalSupply, R_t = burn(totalSupply, R_t, burnAmt)
[codex:528440] newT = R_t + tokenAmtAfterBurn
[codex:528440] newE = (R_e*R_t + newT//2)//newT
[codex:528440] outE = R_e - newE
[codex:528440] return newE,newT,totalSupply,outE
[codex:528440]
[codex:528440]
[codex:528440] def simulate(buy_eth, cycles, cycle_eth):
[codex:528440] R_e=INIT_E; R_t=INIT_T; Total=INIT_T
[codex:528440] R_e, R_t, tokens = buy(R_e,R_t,buy_eth)
[codex:528440] for _ in range(cycles):
[codex:528440] R_e1,R_t1,outT=buy(R_e,R_t,cycle_eth)
[codex:528440] R_e2,R_t2,Total,_=sell(R_e1,R_t1,Total,outT)
[codex:528440] R_e,R_t = R_e2,R_t2
[codex:528440] R_e,R_t,Total,outE = sell(R_e,R_t,Total,tokens)
[codex:528440] return (outE - buy_eth)
[codex:528440]
[codex:528440] buy_eth = 100*WAD
[codex:528440] cycle_eth = 1*WAD
[codex:528440] for cycles in [0,1,5,10,20,50,100,200,500]:
[codex:528440] profit = simulate(buy_eth, cycles, cycle_eth)
[codex:528440] print('cycles',cycles,'profit',profit/WAD)
[codex:528440] PY" in /tmp/codex-multi-o6na9o4h succeeded in 18ms:
[codex:528440] cycles 0 profit 0.0
[codex:528440] cycles 1 profit 0.00594094698694972
[codex:528440] cycles 5 profit 0.029704769666428155
[codex:528440] cycles 10 profit 0.05940962613157461
[codex:528440] cycles 20 profit 0.11881959925498727
[codex:528440] cycles 50 profit 0.29705159652352586
[codex:528440] cycles 100 profit 0.5941118274216024
[codex:528440] cycles 200 profit 1.1882579920733205
[codex:528440] cycles 500 profit 2.9708985810425794
[codex:528440]
[codex:528440] thinking
[codex:528440] **Analyzing pump cycle profits**
[codex:528440] exec
[codex:528440] /bin/bash -lc "python3 - <<'PY'
[codex:528440] import random
[codex:528440] WAD=10**18
[codex:528440] INIT_E=2100*WAD
[codex:528440] INIT_T=21000*WAD
[codex:528440] SELL_BURN_BP=60
[codex:528440] BP=10000
[codex:528440]
[codex:528440]
[codex:528440] def buy(R_e,R_t,delta_e):
[codex:528440] newE=R_e+delta_e
[codex:528440] newT=(R_e*R_t + newE//2)//newE
[codex:528440] outT=R_t-newT
[codex:528440] return newE,newT,outT
[codex:528440]
[codex:528440] def burn(totalSupply, tokenReserve, burnAmt):
[codex:528440] if burnAmt==0:
[codex:528440] return totalSupply, tokenReserve
[codex:528440] if totalSupply > tokenReserve:
[codex:528440] extraBurn = tokenReserve * burnAmt // (totalSupply - tokenReserve)
[codex:528440] tokenReserve -= extraBurn
[codex:528440] totalSupply -= (burnAmt + extraBurn)
[codex:528440] else:
[codex:528440] totalSupply -= burnAmt
[codex:528440] return totalSupply, tokenReserve
[codex:528440]
[codex:528440]
[codex:528440] def sell(R_e,R_t,totalSupply,tokenAmt):
[codex:528440] burnAmt = tokenAmt * SELL_BURN_BP // BP
[codex:528440] tokenAmtAfterBurn = tokenAmt - burnAmt
[codex:528440] totalSupply, R_t = burn(totalSupply, R_t, burnAmt)
[codex:528440] newT = R_t + tokenAmtAfterBurn
[codex:528440] newE = (R_e*R_t + newT//2)//newT
[codex:528440] outE = R_e - newE
[codex:528440] return newE,newT,totalSupply,outE
[codex:528440]
[codex:528440] R_e=INIT_E; R_t=INIT_T; Total=INIT_T
[codex:528440]
[codex:528440] for delta_e in [1,2,3,5,7,11,123,1000,10**6,10**12,10**15,10**17,10**18,5*10**18,17*10**18]:
[codex:528440] e1,t1,outT=buy(R_e,R_t,delta_e)
[codex:528440] e2,t2,Total2,outE=sell(e1,t1,Total,outT)
[codex:528440] diff=outE-delta_e
[codex:528440] print(delta_e, diff)
[codex:528440] PY" in /tmp/codex-multi-o6na9o4h succeeded in 19ms:
[codex:528440] 1 0
[codex:528440] 2 0
[codex:528440] 3 0
[codex:528440] 5 0
[codex:528440] 7 0
[codex:528440] 11 0
[codex:528440] 123 0
[codex:528440] 1000 0
[codex:528440] 1000000 0
[codex:528440] 1000000000000 0
[codex:528440] 1000000000000000 0
[codex:528440] 100000000000000000 0
[codex:528440] 1000000000000000000 0
[codex:528440] 5000000000000000000 0
[codex:528440] 17000000000000000000 0
[codex:528440]
[codex:528440] thinking
[codex:528440] **Analyzing buy-sell token exploit and limits**
[codex:528440] exec
[codex:528440] /bin/bash -lc "nl -ba contracts/Contract.sol | sed -n '120,260p'" in /tmp/codex-multi-o6na9o4h succeeded in 6ms:
[codex:528440] 120 // This method relies in extcodesize, which returns 0 for contracts in
[codex:528440] 121 // construction, since the code is only stored at the end of the
[codex:528440] 122 // constructor execution.
[codex:528440] 123
[codex:528440] 124 // According to EIP-1052, 0x0 is the value returned for not-yet created accounts
[codex:528440] 125 // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned
[codex:528440] 126 // for accounts without code, i.e. `keccak256('')`
[codex:528440] 127 bytes32 codehash;
[codex:528440] 128 bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
[codex:528440] 129 // solhint-disable-next-line no-inline-assembly
[codex:528440] 130 assembly { codehash := extcodehash(account) }
[codex:528440] 131 return (codehash != 0x0 && codehash != accountHash);
[codex:528440] 132 }
[codex:528440] 133
[codex:528440] 134 ////////////////////////////////////////////////////////////////////////////////
[codex:528440] 135
[codex:528440] 136 address constant tokenFactoryAddr = 0x1111111111111111111111111111111111111111;
[codex:528440] 137
[codex:528440] 138 address public govAddr;
[codex:528440] 139
[codex:528440] exec
[codex:528440] /bin/bash -lc "nl -ba contracts/Contract.sol | sed -n '260,360p'" in /tmp/codex-multi-o6na9o4h succeeded in 6ms:
[codex:528440] 260
[codex:528440] 261 if (_totalSupply > TokenReserve) { // shall always satisfy
[codex:528440] 262 uint extraBurn = TokenReserve.mul(amount).div(_totalSupply.sub(TokenReserve));
[codex:528440] 263 _balances[tokenFactoryAddr] = TokenReserve.sub(extraBurn);
[codex:528440] 264 emit Transfer(tokenFactoryAddr, address(0), extraBurn);
[codex:528440] 265
[codex:528440] 266 _totalSupply = _totalSupply.sub(amount).sub(extraBurn);
[codex:528440] 267 } else {
[codex:528440] 268 _totalSupply = _totalSupply.sub(amount);
[codex:528440] 269 }
[codex:528440] 270 }
[codex:528440] 271 }
[codex:528440] 272 function _approve(address owner, address spender, uint amount) internal {
[codex:528440] 273 require(owner != address(0), "ERC20: approve from the zero address");
[codex:528440] 274 require(spender != address(0), "ERC20: approve to the zero address");
[codex:528440] 275
[codex:528440] 276 _allowances[owner][spender] = amount;
[codex:528440] 277 emit Approval(owner, spender, amount);
[codex:528440] 278 }
[codex:528440] 279
[codex:528440] exec
[codex:528440] /bin/bash -lc "nl -ba contracts/Contract.sol | sed -n '360,460p'" in /tmp/codex-multi-o6na9o4h succeeded in 6ms:
[codex:528440] 360
[codex:528440] 361 uint newTokenReserve = oldTokenReserve.add(tokenAmtAfterBurn);
[codex:528440] 362 uint newEthReserve = (oldEthReserve.mul(oldTokenReserve).add(newTokenReserve / 2)).div(newTokenReserve);
[codex:528440] 363
[codex:528440] 364 uint outEthAmt = oldEthReserve.sub(newEthReserve);
[codex:528440] 365 require (outEthAmt > 0, '!outEth');
[codex:528440] 366 require (outEthAmt >= minEthAmt, "KittenSwap: INSUFFICIENT_OUTPUT_AMOUNT");
[codex:528440] 367
[codex:528440] 368 _transferRawNoBurn(user, tokenFactoryAddr, tokenAmtAfterBurn);
[codex:528440] 369
[codex:528440] 370 //------------------------------------------------------------------------------
[codex:528440] 371
[codex:528440] 372 if (gSellTreasuryBP > 0)
[codex:528440] 373 {
[codex:528440] 374 uint treasuryAmt = outEthAmt.mul(gSellTreasuryBP).div(10000);
[codex:528440] 375 treasuryAmtTotal = treasuryAmtTotal.add(treasuryAmt);
[codex:528440] 376 user.transfer(outEthAmt.sub(treasuryAmt));
[codex:528440] 377 }
[codex:528440] 378 else
[codex:528440] 379 {
[codex:528440]
[codex:528440] thinking
[codex:528440] **Summarizing vulnerability and exploit scenario**
[codex:528440]
[codex:528440] I'll lay out how the auto-burn on sells combined with the price formula lets an attacker do a buy-sell loop that returns their ETH but burns token reserves, boosting price for free. Then I'll outline the step-by-step exploit, profit potential, severity, and provide exact code line references to create a detailed, clear JSON report.
[codex:528440] codex
[codex:528440] {"no_findings":false,"summary":"Found a zero-cost price‑pump loop: the AutoBoost burn reduces token reserves during sells while the pricing math returns the same ETH on a buy→sell round trip, letting an attacker ratchet price upward for free and dump holdings for profit.","findings":[{"severity":"high","category":"math","title":"AutoBoost reserve burn enables ETH‑neutral buy/sell loops that ratchet price upward","exploit_scenario":"1) Buy LIQUID to establish a position (buyToken). 2) Repeatedly call buyToken with the max allowed ETH per tx (default 0.001 ETH), then immediately sellToken the exact amount received. Because _burn() reduces the tokenFactoryAddr reserve (extraBurn) before sellToken reads oldTokenReserve, each loop returns essentially the same ETH you put in but permanently shrinks token reserves, increasing the price. 3) After enough loops, sell your held LIQUID to extract more ETH than you originally paid. Profit potential: scales with loop count and token holdings; upper bound is on the order of the contract’s ETH reserve (initial 2100 ETH + current balance − treasury).","recommendation":"Do not let sell‑side burns reduce reserves used for pricing without compensating ETH loss. Options: (a) move reserve‑burning logic to after pricing and ETH payout, (b) incorporate extraBurn into the pricing formula (so buy→sell is ETH‑lossy), or (c) apply a fee or reduce sell payout so round‑trips cannot be ETH‑neutral.","evidence":"sellToken burns before pricing and _burn() auto‑burns tokenFactoryAddr reserve (extraBurn), then pricing uses the reduced oldTokenReserve. buyToken’s formula is symmetric, so buy→sell of the same tokens returns the same ETH while extraBurn permanently shrinks reserves.","locations":["contracts/Contract.sol:243","contracts/Contract.sol:261","contracts/Contract.sol:352","contracts/Contract.sol:358","contracts/Contract.sol:310","contracts/Contract.sol:361"]}]}
[codex:528440] tokens used
[codex:528440] 55,259
[codex:528440] {"no_findings":false,"summary":"Found a zero-cost price‑pump loop: the AutoBoost burn reduces token reserves during sells while the pricing math returns the same ETH on a buy→sell round trip, letting an attacker ratchet price upward for free and dump holdings for profit.","findings":[{"severity":"high","category":"math","title":"AutoBoost reserve burn enables ETH‑neutral buy/sell loops that ratchet price upward","exploit_scenario":"1) Buy LIQUID to establish a position (buyToken). 2) Repeatedly call buyToken with the max allowed ETH per tx (default 0.001 ETH), then immediately sellToken the exact amount received. Because _burn() reduces the tokenFactoryAddr reserve (extraBurn) before sellToken reads oldTokenReserve, each loop returns essentially the same ETH you put in but permanently shrinks token reserves, increasing the price. 3) After enough loops, sell your held LIQUID to extract more ETH than you originally paid. Profit potential: scales with loop count and token holdings; upper bound is on the order of the contract’s ETH reserve (initial 2100 ETH + current balance − treasury).","recommendation":"Do not let sell‑side burns reduce reserves used for pricing without compensating ETH loss. Options: (a) move reserve‑burning logic to after pricing and ETH payout, (b) incorporate extraBurn into the pricing formula (so buy→sell is ETH‑lossy), or (c) apply a fee or reduce sell payout so round‑trips cannot be ETH‑neutral.","evidence":"sellToken burns before pricing and _burn() auto‑burns tokenFactoryAddr reserve (extraBurn), then pricing uses the reduced oldTokenReserve. buyToken’s formula is symmetric, so buy→sell of the same tokens returns the same ETH while extraBurn permanently shrinks reserves.","locations":["contracts/Contract.sol:243","contracts/Contract.sol:261","contracts/Contract.sol:352","contracts/Contract.sol:358","contracts/Contract.sol:310","contracts/Contract.sol:361"]}]}
{
"codex": {
"ran_at": "2026-01-03T23:58:22.392857+00:00",
"returncode": 0
},
"summary": "Found a zero-cost price\u2011pump loop: the AutoBoost burn reduces token reserves during sells while the pricing math returns the same ETH on a buy\u2192sell round trip, letting an attacker ratchet price upward for free and dump holdings for profit.",
"raw_final": {
"summary": "Found a zero-cost price\u2011pump loop: the AutoBoost burn reduces token reserves during sells while the pricing math returns the same ETH on a buy\u2192sell round trip, letting an attacker ratchet price upward for free and dump holdings for profit.",
"findings": [
{
"title": "AutoBoost reserve burn enables ETH\u2011neutral buy/sell loops that ratchet price upward",
"category": "math",
"evidence": "sellToken burns before pricing and _burn() auto\u2011burns tokenFactoryAddr reserve (extraBurn), then pricing uses the reduced oldTokenReserve. buyToken\u2019s formula is symmetric, so buy\u2192sell of the same tokens returns the same ETH while extraBurn permanently shrinks reserves.",
"severity": "high",
"locations": [
"contracts/Contract.sol:243",
"contracts/Contract.sol:261",
"contracts/Contract.sol:352",
"contracts/Contract.sol:358",
"contracts/Contract.sol:310",
"contracts/Contract.sol:361"
],
"recommendation": "Do not let sell\u2011side burns reduce reserves used for pricing without compensating ETH loss. Options: (a) move reserve\u2011burning logic to after pricing and ETH payout, (b) incorporate extraBurn into the pricing formula (so buy\u2192sell is ETH\u2011lossy), or (c) apply a fee or reduce sell payout so round\u2011trips cannot be ETH\u2011neutral.",
"exploit_scenario": "1) Buy LIQUID to establish a position (buyToken). 2) Repeatedly call buyToken with the max allowed ETH per tx (default 0.001 ETH), then immediately sellToken the exact amount received. Because _burn() reduces the tokenFactoryAddr reserve (extraBurn) before sellToken reads oldTokenReserve, each loop returns essentially the same ETH you put in but permanently shrinks token reserves, increasing the price. 3) After enough loops, sell your held LIQUID to extract more ETH than you originally paid. Profit potential: scales with loop count and token holdings; upper bound is on the order of the contract\u2019s ETH reserve (initial 2100 ETH + current balance \u2212 treasury)."
}
],
"no_findings": false
},
"no_findings": false,
"schema_version": 1
}
00000000: PUSH1 0x80 00000002: PUSH1 0x40 00000004: MSTORE 00000005: PUSH1 0x04 00000007: CALLDATASIZE 00000008: LT 00000009: PUSH2 0x0272 0000000c: JUMPI 0000000d: PUSH1 0x00 0000000f: CALLDATALOAD 00000010: PUSH1 0xe0 00000012: SHR 00000013: DUP1 00000014: PUSH4 0x683f9287 00000019: GT 0000001a: PUSH2 0x014f 0000001d: JUMPI 0000001e: DUP1 0000001f: PUSH4 0xc21d74fe 00000024: GT 00000025: PUSH2 0x00c1 00000028: JUMPI 00000029: DUP1 0000002a: PUSH4 0xd9b69774 0000002f: GT 00000030: PUSH2 0x007a 00000033: JUMPI 00000034: DUP1 00000035: PUSH4 0xd9b69774 0000003a: EQ 0000003b: PUSH2 0x0907 0000003e: JUMPI 0000003f: DUP1 00000040: PUSH4 0xdd62ed3e 00000045: EQ 00000046: PUSH2 0x091c 00000049: JUMPI 0000004a: DUP1 0000004b: PUSH4 0xeb0ee934 00000050: EQ 00000051: PUSH2 0x0957 00000054: JUMPI 00000055: DUP1 00000056: PUSH4 0xf1d9f88b 0000005b: EQ 0000005c: PUSH2 0x096c 0000005f: JUMPI 00000060: DUP1 00000061: PUSH4 0xfa59e6d4 00000066: EQ 00000067: PUSH2 0x0981 0000006a: JUMPI 0000006b: DUP1 0000006c: PUSH4 0xff71b4e5 00000071: EQ 00000072: PUSH2 0x0996 00000075: JUMPI 00000076: PUSH2 0x0272 00000079: JUMP 0000007a: JUMPDEST 0000007b: DUP1 0000007c: PUSH4 0xc21d74fe 00000081: EQ 00000082: PUSH2 0x0814 00000085: JUMPI 00000086: DUP1 00000087: PUSH4 0xc83ce00a 0000008c: EQ 0000008d: PUSH2 0x0847 00000090: JUMPI 00000091: DUP1 00000092: PUSH4 0xca392e0e 00000097: EQ 00000098: PUSH2 0x0871 0000009b: JUMPI 0000009c: DUP1 0000009d: PUSH4 0xcac65b1d 000000a2: EQ 000000a3: PUSH2 0x08aa 000000a6: JUMPI 000000a7: DUP1 000000a8: PUSH4 0xcb85ce67 000000ad: EQ 000000ae: PUSH2 0x08dd 000000b1: JUMPI 000000b2: DUP1 000000b3: PUSH4 0xd222f1bc 000000b8: EQ 000000b9: PUSH2 0x08f2 000000bc: JUMPI 000000bd: PUSH2 0x0272 000000c0: JUMP 000000c1: JUMPDEST 000000c2: DUP1 000000c3: PUSH4 0x8a9118c0 000000c8: GT 000000c9: PUSH2 0x0113 000000cc: JUMPI 000000cd: DUP1 000000ce: PUSH4 0x8a9118c0 000000d3: EQ 000000d4: PUSH2 0x074e 000000d7: JUMPI 000000d8: DUP1 000000d9: PUSH4 0x95d89b41 000000de: EQ 000000df: PUSH2 0x0763 000000e2: JUMPI 000000e3: DUP1 000000e4: PUSH4 0xa457c2d7 000000e9: EQ 000000ea: PUSH2 0x0778 000000ed: JUMPI 000000ee: DUP1 000000ef: PUSH4 0xa9059cbb 000000f4: EQ 000000f5: PUSH2 0x07b1 000000f8: JUMPI 000000f9: DUP1 000000fa: PUSH4 0xbf47f715 000000ff: EQ 00000100: PUSH2 0x07ea 00000103: JUMPI 00000104: DUP1 00000105: PUSH4 0xc1b8411a 0000010a: EQ 0000010b: PUSH2 0x07ff 0000010e: JUMPI 0000010f: PUSH2 0x0272 00000112: JUMP 00000113: JUMPDEST 00000114: DUP1 00000115: PUSH4 0x683f9287 0000011a: EQ 0000011b: PUSH2 0x0643 0000011e: JUMPI 0000011f: DUP1 00000120: PUSH4 0x70a08231 00000125: EQ 00000126: PUSH2 0x0673 00000129: JUMPI 0000012a: DUP1 0000012b: PUSH4 0x72223c6c 00000130: EQ 00000131: PUSH2 0x06a6 00000134: JUMPI 00000135: DUP1 00000136: PUSH4 0x7cfd312d 0000013b: EQ 0000013c: PUSH2 0x06e5 0000013f: JUMPI 00000140: DUP1 00000141: PUSH4 0x80abb055 00000146: EQ 00000147: PUSH2 0x0718 0000014a: JUMPI 0000014b: PUSH2 0x0272 0000014e: JUMP 0000014f: JUMPDEST 00000150: DUP1 00000151: PUSH4 0x30d9a62a 00000156: GT 00000157: PUSH2 0x01e8 0000015a: JUMPI 0000015b: DUP1 0000015c: PUSH4 0x3ad6bd34 00000161: GT 00000162: PUSH2 0x01ac 00000165: JUMPI 00000166: DUP1 00000167: PUSH4 0x3ad6bd34 0000016c: EQ 0000016d: PUSH2 0x0574 00000170: JUMPI 00000171: DUP1 00000172: PUSH4 0x3dae21aa 00000177: EQ 00000178: PUSH2 0x0589 0000017b: JUMPI 0000017c: DUP1 0000017d: PUSH4 0x42edd8e0 00000182: EQ 00000183: PUSH2 0x059e 00000186: JUMPI 00000187: DUP1 00000188: PUSH4 0x4a427c0c 0000018d: EQ 0000018e: PUSH2 0x05d1 00000191: JUMPI 00000192: DUP1 00000193: PUSH4 0x52c06865 00000198: EQ 00000199: PUSH2 0x0604 0000019c: JUMPI 0000019d: DUP1 0000019e: PUSH4 0x580c8544 000001a3: EQ 000001a4: PUSH2 0x062e 000001a7: JUMPI 000001a8: PUSH2 0x0272 000001ab: JUMP 000001ac: JUMPDEST 000001ad: DUP1 000001ae: PUSH4 0x30d9a62a 000001b3: EQ 000001b4: PUSH2 0x04b5 000001b7: JUMPI 000001b8: DUP1 000001b9: PUSH4 0x313ce567 000001be: EQ 000001bf: PUSH2 0x04e6 000001c2: JUMPI 000001c3: DUP1 000001c4: PUSH4 0x327ba06c 000001c9: EQ 000001ca: PUSH2 0x0511 000001cd: JUMPI 000001ce: DUP1 000001cf: PUSH4 0x37e2cde9 000001d4: EQ 000001d5: PUSH2 0x0526 000001d8: JUMPI 000001d9: DUP1 000001da: PUSH4 0x39509351 000001df: EQ 000001e0: PUSH2 0x053b 000001e3: JUMPI 000001e4: PUSH2 0x0272 000001e7: JUMP 000001e8: JUMPDEST 000001e9: DUP1 000001ea: PUSH4 0x18160ddd 000001ef: GT 000001f0: PUSH2 0x023a 000001f3: JUMPI 000001f4: DUP1 000001f5: PUSH4 0x18160ddd 000001fa: EQ 000001fb: PUSH2 0x03d6 000001fe: JUMPI 000001ff: DUP1 00000200: PUSH4 0x1efbe895 00000205: EQ 00000206: PUSH2 0x03fd 00000209: JUMPI 0000020a: DUP1 0000020b: PUSH4 0x1f181d57 00000210: EQ 00000211: PUSH2 0x0412 00000214: JUMPI 00000215: DUP1 00000216: PUSH4 0x23b872dd 0000021b: EQ 0000021c: PUSH2 0x0448 0000021f: JUMPI 00000220: DUP1 00000221: PUSH4 0x24c0fb00 00000226: EQ 00000227: PUSH2 0x048b 0000022a: JUMPI 0000022b: DUP1 0000022c: PUSH4 0x25653eca 00000231: EQ 00000232: PUSH2 0x04a0 00000235: JUMPI 00000236: PUSH2 0x0272 00000239: JUMP 0000023a: JUMPDEST 0000023b: DUP1 0000023c: PUSH4 0x057466ea 00000241: EQ 00000242: PUSH2 0x0277 00000245: JUMPI 00000246: DUP1 00000247: PUSH4 0x06fdde03 0000024c: EQ 0000024d: PUSH2 0x029c 00000250: JUMPI 00000251: DUP1 00000252: PUSH4 0x095ea7b3 00000257: EQ 00000258: PUSH2 0x0326 0000025b: JUMPI 0000025c: DUP1 0000025d: PUSH4 0x0c278a8d 00000262: EQ 00000263: PUSH2 0x0373 00000266: JUMPI 00000267: DUP1 00000268: PUSH4 0x1073b375 0000026d: EQ 0000026e: PUSH2 0x039d 00000271: JUMPI 00000272: JUMPDEST 00000273: PUSH1 0x00 00000275: DUP1 00000276: REVERT 00000277: JUMPDEST 00000278: PUSH2 0x029a 0000027b: PUSH1 0x04 0000027d: DUP1 0000027e: CALLDATASIZE 0000027f: SUB 00000280: PUSH1 0x40 00000282: DUP2 00000283: LT 00000284: ISZERO 00000285: PUSH2 0x028d 00000288: JUMPI 00000289: PUSH1 0x00 0000028b: DUP1 0000028c: REVERT 0000028d: JUMPDEST 0000028e: POP 0000028f: DUP1 00000290: CALLDATALOAD 00000291: SWAP1 00000292: PUSH1 0x20 00000294: ADD 00000295: CALLDATALOAD 00000296: PUSH2 0x09ab 00000299: JUMP 0000029a: JUMPDEST 0000029b: STOP 0000029c: JUMPDEST 0000029d: CALLVALUE 0000029e: DUP1 0000029f: ISZERO 000002a0: PUSH2 0x02a8 000002a3: JUMPI 000002a4: PUSH1 0x00 000002a6: DUP1 000002a7: REVERT 000002a8: JUMPDEST 000002a9: POP 000002aa: PUSH2 0x02b1 000002ad: PUSH2 0x0ed5 000002b0: JUMP 000002b1: JUMPDEST 000002b2: PUSH1 0x40 000002b4: DUP1 000002b5: MLOAD 000002b6: PUSH1 0x20 000002b8: DUP1 000002b9: DUP3 000002ba: MSTORE 000002bb: DUP4 000002bc: MLOAD 000002bd: DUP2 000002be: DUP4 000002bf: ADD 000002c0: MSTORE 000002c1: DUP4 000002c2: MLOAD 000002c3: SWAP2 000002c4: SWAP3 000002c5: DUP4 000002c6: SWAP3 000002c7: SWAP1 000002c8: DUP4 000002c9: ADD 000002ca: SWAP2 000002cb: DUP6 000002cc: ADD 000002cd: SWAP1 000002ce: DUP1 000002cf: DUP4 000002d0: DUP4 000002d1: PUSH1 0x00 000002d3: JUMPDEST 000002d4: DUP4 000002d5: DUP2 000002d6: LT 000002d7: ISZERO 000002d8: PUSH2 0x02eb 000002db: JUMPI 000002dc: DUP2 000002dd: DUP2 000002de: ADD 000002df: MLOAD 000002e0: DUP4 000002e1: DUP3 000002e2: ADD 000002e3: MSTORE 000002e4: PUSH1 0x20 000002e6: ADD 000002e7: PUSH2 0x02d3 000002ea: JUMP 000002eb: JUMPDEST 000002ec: POP 000002ed: POP 000002ee: POP 000002ef: POP 000002f0: SWAP1 000002f1: POP 000002f2: SWAP1 000002f3: DUP2 000002f4: ADD 000002f5: SWAP1 000002f6: PUSH1 0x1f 000002f8: AND 000002f9: DUP1 000002fa: ISZERO 000002fb: PUSH2 0x0318 000002fe: JUMPI 000002ff: DUP1 00000300: DUP3 00000301: SUB 00000302: DUP1 00000303: MLOAD 00000304: PUSH1 0x01 00000306: DUP4 00000307: PUSH1 0x20 00000309: SUB 0000030a: PUSH2 0x0100 0000030d: EXP 0000030e: SUB 0000030f: NOT 00000310: AND 00000311: DUP2 00000312: MSTORE 00000313: PUSH1 0x20 00000315: ADD 00000316: SWAP2 00000317: POP 00000318: JUMPDEST 00000319: POP 0000031a: SWAP3 0000031b: POP 0000031c: POP 0000031d: POP 0000031e: PUSH1 0x40 00000320: MLOAD 00000321: DUP1 00000322: SWAP2 00000323: SUB 00000324: SWAP1 00000325: RETURN 00000326: JUMPDEST 00000327: CALLVALUE 00000328: DUP1 00000329: ISZERO 0000032a: PUSH2 0x0332 0000032d: JUMPI 0000032e: PUSH1 0x00 00000330: DUP1 00000331: REVERT 00000332: JUMPDEST 00000333: POP 00000334: PUSH2 0x035f 00000337: PUSH1 0x04 00000339: DUP1 0000033a: CALLDATASIZE 0000033b: SUB 0000033c: PUSH1 0x40 0000033e: DUP2 0000033f: LT 00000340: ISZERO 00000341: PUSH2 0x0349 00000344: JUMPI 00000345: PUSH1 0x00 00000347: DUP1 00000348: REVERT 00000349: JUMPDEST 0000034a: POP 0000034b: PUSH1 0x01 0000034d: PUSH1 0x01 0000034f: PUSH1 0xa0 00000351: SHL 00000352: SUB 00000353: DUP2 00000354: CALLDATALOAD 00000355: AND 00000356: SWAP1 00000357: PUSH1 0x20 00000359: ADD 0000035a: CALLDATALOAD 0000035b: PUSH2 0x0f6b 0000035e: JUMP 0000035f: JUMPDEST 00000360: PUSH1 0x40 00000362: DUP1 00000363: MLOAD 00000364: SWAP2 00000365: ISZERO 00000366: ISZERO 00000367: DUP3 00000368: MSTORE 00000369: MLOAD 0000036a: SWAP1 0000036b: DUP2 0000036c: SWAP1 0000036d: SUB 0000036e: PUSH1 0x20 00000370: ADD 00000371: SWAP1 00000372: RETURN 00000373: JUMPDEST 00000374: CALLVALUE 00000375: DUP1 00000376: ISZERO 00000377: PUSH2 0x037f 0000037a: JUMPI 0000037b: PUSH1 0x00 0000037d: DUP1 0000037e: REVERT 0000037f: JUMPDEST 00000380: POP 00000381: PUSH2 0x029a 00000384: PUSH1 0x04 00000386: DUP1 00000387: CALLDATASIZE 00000388: SUB 00000389: PUSH1 0x20 0000038b: DUP2 0000038c: LT 0000038d: ISZERO 0000038e: PUSH2 0x0396 00000391: JUMPI 00000392: PUSH1 0x00 00000394: DUP1 00000395: REVERT 00000396: JUMPDEST 00000397: POP 00000398: CALLDATALOAD 00000399: PUSH2 0x0f89 0000039c: JUMP 0000039d: JUMPDEST 0000039e: CALLVALUE 0000039f: DUP1 000003a0: ISZERO 000003a1: PUSH2 0x03a9 000003a4: JUMPI 000003a5: PUSH1 0x00 000003a7: DUP1 000003a8: REVERT 000003a9: JUMPDEST 000003aa: POP 000003ab: PUSH2 0x029a 000003ae: PUSH1 0x04 000003b0: DUP1 000003b1: CALLDATASIZE 000003b2: SUB 000003b3: PUSH1 0x40 000003b5: DUP2 000003b6: LT 000003b7: ISZERO 000003b8: PUSH2 0x03c0 000003bb: JUMPI 000003bc: PUSH1 0x00 000003be: DUP1 000003bf: REVERT 000003c0: JUMPDEST 000003c1: POP 000003c2: PUSH1 0x01 000003c4: PUSH1 0x01 000003c6: PUSH1 0xa0 000003c8: SHL 000003c9: SUB 000003ca: DUP2 000003cb: CALLDATALOAD 000003cc: AND 000003cd: SWAP1 000003ce: PUSH1 0x20 000003d0: ADD 000003d1: CALLDATALOAD 000003d2: PUSH2 0x0fd6 000003d5: JUMP 000003d6: JUMPDEST 000003d7: CALLVALUE 000003d8: DUP1 000003d9: ISZERO 000003da: PUSH2 0x03e2 000003dd: JUMPI 000003de: PUSH1 0x00 000003e0: DUP1 000003e1: REVERT 000003e2: JUMPDEST 000003e3: POP 000003e4: PUSH2 0x03eb 000003e7: PUSH2 0x1044 000003ea: JUMP 000003eb: JUMPDEST 000003ec: PUSH1 0x40 000003ee: DUP1 000003ef: MLOAD 000003f0: SWAP2 000003f1: DUP3 000003f2: MSTORE 000003f3: MLOAD 000003f4: SWAP1 000003f5: DUP2 000003f6: SWAP1 000003f7: SUB 000003f8: PUSH1 0x20 000003fa: ADD 000003fb: SWAP1 000003fc: RETURN 000003fd: JUMPDEST 000003fe: CALLVALUE 000003ff: DUP1 00000400: ISZERO 00000401: PUSH2 0x0409 00000404: JUMPI 00000405: PUSH1 0x00 00000407: DUP1 00000408: REVERT 00000409: JUMPDEST 0000040a: POP 0000040b: PUSH2 0x03eb 0000040e: PUSH2 0x104a 00000411: JUMP 00000412: JUMPDEST 00000413: CALLVALUE 00000414: DUP1 00000415: ISZERO 00000416: PUSH2 0x041e 00000419: JUMPI 0000041a: PUSH1 0x00 0000041c: DUP1 0000041d: REVERT 0000041e: JUMPDEST 0000041f: POP 00000420: PUSH2 0x029a 00000423: PUSH1 0x04 00000425: DUP1 00000426: CALLDATASIZE 00000427: SUB 00000428: PUSH1 0x60 0000042a: DUP2 0000042b: LT 0000042c: ISZERO 0000042d: PUSH2 0x0435 00000430: JUMPI 00000431: PUSH1 0x00 00000433: DUP1 00000434: REVERT 00000435: JUMPDEST 00000436: POP 00000437: DUP1 00000438: CALLDATALOAD 00000439: SWAP1 0000043a: PUSH1 0x20 0000043c: DUP2 0000043d: ADD 0000043e: CALLDATALOAD 0000043f: SWAP1 00000440: PUSH1 0x40 00000442: ADD 00000443: CALLDATALOAD 00000444: PUSH2 0x1050 00000447: JUMP 00000448: JUMPDEST 00000449: CALLVALUE 0000044a: DUP1 0000044b: ISZERO 0000044c: PUSH2 0x0454 0000044f: JUMPI 00000450: PUSH1 0x00 00000452: DUP1 00000453: REVERT 00000454: JUMPDEST 00000455: POP 00000456: PUSH2 0x035f 00000459: PUSH1 0x04 0000045b: DUP1 0000045c: CALLDATASIZE 0000045d: SUB 0000045e: PUSH1 0x60 00000460: DUP2 00000461: LT 00000462: ISZERO 00000463: PUSH2 0x046b 00000466: JUMPI 00000467: PUSH1 0x00 00000469: DUP1 0000046a: REVERT 0000046b: JUMPDEST 0000046c: POP 0000046d: PUSH1 0x01 0000046f: PUSH1 0x01 00000471: PUSH1 0xa0 00000473: SHL 00000474: SUB 00000475: DUP2 00000476: CALLDATALOAD 00000477: DUP2 00000478: AND 00000479: SWAP2 0000047a: PUSH1 0x20 0000047c: DUP2 0000047d: ADD 0000047e: CALLDATALOAD 0000047f: SWAP1 00000480: SWAP2 00000481: AND 00000482: SWAP1 00000483: PUSH1 0x40 00000485: ADD 00000486: CALLDATALOAD 00000487: PUSH2 0x145c 0000048a: JUMP 0000048b: JUMPDEST 0000048c: CALLVALUE 0000048d: DUP1 0000048e: ISZERO 0000048f: PUSH2 0x0497 00000492: JUMPI 00000493: PUSH1 0x00 00000495: DUP1 00000496: REVERT 00000497: JUMPDEST 00000498: POP 00000499: PUSH2 0x03eb 0000049c: PUSH2 0x14e9 0000049f: JUMP 000004a0: JUMPDEST 000004a1: CALLVALUE 000004a2: DUP1 000004a3: ISZERO 000004a4: PUSH2 0x04ac 000004a7: JUMPI 000004a8: PUSH1 0x00 000004aa: DUP1 000004ab: REVERT 000004ac: JUMPDEST 000004ad: POP 000004ae: PUSH2 0x03eb 000004b1: PUSH2 0x14f7 000004b4: JUMP 000004b5: JUMPDEST 000004b6: CALLVALUE 000004b7: DUP1 000004b8: ISZERO 000004b9: PUSH2 0x04c1 000004bc: JUMPI 000004bd: PUSH1 0x00 000004bf: DUP1 000004c0: REVERT 000004c1: JUMPDEST 000004c2: POP 000004c3: PUSH2 0x04ca 000004c6: PUSH2 0x14fd 000004c9: JUMP 000004ca: JUMPDEST 000004cb: PUSH1 0x40 000004cd: DUP1 000004ce: MLOAD 000004cf: PUSH1 0x01 000004d1: PUSH1 0x01 000004d3: PUSH1 0xa0 000004d5: SHL 000004d6: SUB 000004d7: SWAP1 000004d8: SWAP3 000004d9: AND 000004da: DUP3 000004db: MSTORE 000004dc: MLOAD 000004dd: SWAP1 000004de: DUP2 000004df: SWAP1 000004e0: SUB 000004e1: PUSH1 0x20 000004e3: ADD 000004e4: SWAP1 000004e5: RETURN 000004e6: JUMPDEST 000004e7: CALLVALUE 000004e8: DUP1 000004e9: ISZERO 000004ea: PUSH2 0x04f2 000004ed: JUMPI 000004ee: PUSH1 0x00 000004f0: DUP1 000004f1: REVERT 000004f2: JUMPDEST 000004f3: POP 000004f4: PUSH2 0x04fb 000004f7: PUSH2 0x150c 000004fa: JUMP 000004fb: JUMPDEST 000004fc: PUSH1 0x40 000004fe: DUP1 000004ff: MLOAD 00000500: PUSH1 0xff 00000502: SWAP1 00000503: SWAP3 00000504: AND 00000505: DUP3 00000506: MSTORE 00000507: MLOAD 00000508: SWAP1 00000509: DUP2 0000050a: SWAP1 0000050b: SUB 0000050c: PUSH1 0x20 0000050e: ADD 0000050f: SWAP1 00000510: RETURN 00000511: JUMPDEST 00000512: CALLVALUE 00000513: DUP1 00000514: ISZERO 00000515: PUSH2 0x051d 00000518: JUMPI 00000519: PUSH1 0x00 0000051b: DUP1 0000051c: REVERT 0000051d: JUMPDEST 0000051e: POP 0000051f: PUSH2 0x03eb 00000522: PUSH2 0x1515 00000525: JUMP 00000526: JUMPDEST 00000527: CALLVALUE 00000528: DUP1 00000529: ISZERO 0000052a: PUSH2 0x0532 0000052d: JUMPI 0000052e: PUSH1 0x00 00000530: DUP1 00000531: REVERT 00000532: JUMPDEST 00000533: POP 00000534: PUSH2 0x03eb 00000537: PUSH2 0x151b 0000053a: JUMP 0000053b: JUMPDEST 0000053c: CALLVALUE 0000053d: DUP1 0000053e: ISZERO 0000053f: PUSH2 0x0547 00000542: JUMPI 00000543: PUSH1 0x00 00000545: DUP1 00000546: REVERT 00000547: JUMPDEST 00000548: POP 00000549: PUSH2 0x035f 0000054c: PUSH1 0x04 0000054e: DUP1 0000054f: CALLDATASIZE 00000550: SUB 00000551: PUSH1 0x40 00000553: DUP2 00000554: LT 00000555: ISZERO 00000556: PUSH2 0x055e 00000559: JUMPI 0000055a: PUSH1 0x00 0000055c: DUP1 0000055d: REVERT 0000055e: JUMPDEST 0000055f: POP 00000560: PUSH1 0x01 00000562: PUSH1 0x01 00000564: PUSH1 0xa0 00000566: SHL 00000567: SUB 00000568: DUP2 00000569: CALLDATALOAD 0000056a: AND 0000056b: SWAP1 0000056c: PUSH1 0x20 0000056e: ADD 0000056f: CALLDATALOAD 00000570: PUSH2 0x1521 00000573: JUMP 00000574: JUMPDEST 00000575: CALLVALUE 00000576: DUP1 00000577: ISZERO 00000578: PUSH2 0x0580 0000057b: JUMPI 0000057c: PUSH1 0x00 0000057e: DUP1 0000057f: REVERT 00000580: JUMPDEST 00000581: POP 00000582: PUSH2 0x029a 00000585: PUSH2 0x1575 00000588: JUMP 00000589: JUMPDEST 0000058a: CALLVALUE 0000058b: DUP1 0000058c: ISZERO 0000058d: PUSH2 0x0595 00000590: JUMPI 00000591: PUSH1 0x00 00000593: DUP1 00000594: REVERT 00000595: JUMPDEST 00000596: POP 00000597: PUSH2 0x03eb 0000059a: PUSH2 0x15c4 0000059d: JUMP 0000059e: JUMPDEST 0000059f: CALLVALUE 000005a0: DUP1 000005a1: ISZERO 000005a2: PUSH2 0x05aa 000005a5: JUMPI 000005a6: PUSH1 0x00 000005a8: DUP1 000005a9: REVERT 000005aa: JUMPDEST 000005ab: POP 000005ac: PUSH2 0x029a 000005af: PUSH1 0x04 000005b1: DUP1 000005b2: CALLDATASIZE 000005b3: SUB 000005b4: PUSH1 0x20 000005b6: DUP2 000005b7: LT 000005b8: ISZERO 000005b9: PUSH2 0x05c1 000005bc: JUMPI 000005bd: PUSH1 0x00 000005bf: DUP1 000005c0: REVERT 000005c1: JUMPDEST 000005c2: POP 000005c3: CALLDATALOAD 000005c4: PUSH1 0x01 000005c6: PUSH1 0x01 000005c8: PUSH1 0xa0 000005ca: SHL 000005cb: SUB 000005cc: AND 000005cd: PUSH2 0x15ca 000005d0: JUMP 000005d1: JUMPDEST 000005d2: CALLVALUE 000005d3: DUP1 000005d4: ISZERO 000005d5: PUSH2 0x05dd 000005d8: JUMPI 000005d9: PUSH1 0x00 000005db: DUP1 000005dc: REVERT 000005dd: JUMPDEST 000005de: POP 000005df: PUSH2 0x03eb 000005e2: PUSH1 0x04 000005e4: DUP1 000005e5: CALLDATASIZE 000005e6: SUB 000005e7: PUSH1 0x20 000005e9: DUP2 000005ea: LT 000005eb: ISZERO 000005ec: PUSH2 0x05f4 000005ef: JUMPI 000005f0: PUSH1 0x00 000005f2: DUP1 000005f3: REVERT 000005f4: JUMPDEST 000005f5: POP 000005f6: CALLDATALOAD 000005f7: PUSH1 0x01 000005f9: PUSH1 0x01 000005fb: PUSH1 0xa0 000005fd: SHL 000005fe: SUB 000005ff: AND 00000600: PUSH2 0x1677 00000603: JUMP 00000604: JUMPDEST 00000605: CALLVALUE 00000606: DUP1 00000607: ISZERO 00000608: PUSH2 0x0610 0000060b: JUMPI 0000060c: PUSH1 0x00 0000060e: DUP1 0000060f: REVERT 00000610: JUMPDEST 00000611: POP 00000612: PUSH2 0x029a 00000615: PUSH1 0x04 00000617: DUP1 00000618: CALLDATASIZE 00000619: SUB 0000061a: PUSH1 0x20 0000061c: DUP2 0000061d: LT 0000061e: ISZERO 0000061f: PUSH2 0x0627 00000622: JUMPI 00000623: PUSH1 0x00 00000625: DUP1 00000626: REVERT 00000627: JUMPDEST 00000628: POP 00000629: CALLDATALOAD 0000062a: PUSH2 0x1689 0000062d: JUMP 0000062e: JUMPDEST 0000062f: CALLVALUE 00000630: DUP1 00000631: ISZERO 00000632: PUSH2 0x063a 00000635: JUMPI 00000636: PUSH1 0x00 00000638: DUP1 00000639: REVERT 0000063a: JUMPDEST 0000063b: POP 0000063c: PUSH2 0x03eb 0000063f: PUSH2 0x16d6 00000642: JUMP 00000643: JUMPDEST 00000644: CALLVALUE 00000645: DUP1 00000646: ISZERO 00000647: PUSH2 0x064f 0000064a: JUMPI 0000064b: PUSH1 0x00 0000064d: DUP1 0000064e: REVERT 0000064f: JUMPDEST 00000650: POP 00000651: PUSH2 0x029a 00000654: PUSH1 0x04 00000656: DUP1 00000657: CALLDATASIZE 00000658: SUB 00000659: PUSH1 0x40 0000065b: DUP2 0000065c: LT 0000065d: ISZERO 0000065e: PUSH2 0x0666 00000661: JUMPI 00000662: PUSH1 0x00 00000664: DUP1 00000665: REVERT 00000666: JUMPDEST 00000667: POP 00000668: DUP1 00000669: CALLDATALOAD 0000066a: SWAP1 0000066b: PUSH1 0x20 0000066d: ADD 0000066e: CALLDATALOAD 0000066f: PUSH2 0x16dc 00000672: JUMP 00000673: JUMPDEST 00000674: CALLVALUE 00000675: DUP1 00000676: ISZERO 00000677: PUSH2 0x067f 0000067a: JUMPI 0000067b: PUSH1 0x00 0000067d: DUP1 0000067e: REVERT 0000067f: JUMPDEST 00000680: POP 00000681: PUSH2 0x03eb 00000684: PUSH1 0x04 00000686: DUP1 00000687: CALLDATASIZE 00000688: SUB 00000689: PUSH1 0x20 0000068b: DUP2 0000068c: LT 0000068d: ISZERO 0000068e: PUSH2 0x0696 00000691: JUMPI 00000692: PUSH1 0x00 00000694: DUP1 00000695: REVERT 00000696: JUMPDEST 00000697: POP 00000698: CALLDATALOAD 00000699: PUSH1 0x01 0000069b: PUSH1 0x01 0000069d: PUSH1 0xa0 0000069f: SHL 000006a0: SUB 000006a1: AND 000006a2: PUSH2 0x172f 000006a5: JUMP 000006a6: JUMPDEST 000006a7: CALLVALUE 000006a8: DUP1 000006a9: ISZERO 000006aa: PUSH2 0x06b2 000006ad: JUMPI 000006ae: PUSH1 0x00 000006b0: DUP1 000006b1: REVERT 000006b2: JUMPDEST 000006b3: POP 000006b4: PUSH2 0x029a 000006b7: PUSH1 0x04 000006b9: DUP1 000006ba: CALLDATASIZE 000006bb: SUB 000006bc: PUSH1 0x60 000006be: DUP2 000006bf: LT 000006c0: ISZERO 000006c1: PUSH2 0x06c9 000006c4: JUMPI 000006c5: PUSH1 0x00 000006c7: DUP1 000006c8: REVERT 000006c9: JUMPDEST 000006ca: POP 000006cb: PUSH1 0x01 000006cd: PUSH1 0x01 000006cf: PUSH1 0xa0 000006d1: SHL 000006d2: SUB 000006d3: DUP2 000006d4: CALLDATALOAD 000006d5: AND 000006d6: SWAP1 000006d7: PUSH1 0x20 000006d9: DUP2 000006da: ADD 000006db: CALLDATALOAD 000006dc: SWAP1 000006dd: PUSH1 0x40 000006df: ADD 000006e0: CALLDATALOAD 000006e1: PUSH2 0x174a 000006e4: JUMP 000006e5: JUMPDEST 000006e6: CALLVALUE 000006e7: DUP1 000006e8: ISZERO 000006e9: PUSH2 0x06f1 000006ec: JUMPI 000006ed: PUSH1 0x00 000006ef: DUP1 000006f0: REVERT 000006f1: JUMPDEST 000006f2: POP 000006f3: PUSH2 0x029a 000006f6: PUSH1 0x04 000006f8: DUP1 000006f9: CALLDATASIZE 000006fa: SUB 000006fb: PUSH1 0x20 000006fd: DUP2 000006fe: LT 000006ff: ISZERO 00000700: PUSH2 0x0708 00000703: JUMPI 00000704: PUSH1 0x00 00000706: DUP1 00000707: REVERT 00000708: JUMPDEST 00000709: POP 0000070a: CALLDATALOAD 0000070b: PUSH1 0x01 0000070d: PUSH1 0x01 0000070f: PUSH1 0xa0 00000711: SHL 00000712: SUB 00000713: AND 00000714: PUSH2 0x17d8 00000717: JUMP 00000718: JUMPDEST 00000719: CALLVALUE 0000071a: DUP1 0000071b: ISZERO 0000071c: PUSH2 0x0724 0000071f: JUMPI 00000720: PUSH1 0x00 00000722: DUP1 00000723: REVERT 00000724: JUMPDEST 00000725: POP 00000726: PUSH2 0x029a 00000729: PUSH1 0x04 0000072b: DUP1 0000072c: CALLDATASIZE 0000072d: SUB 0000072e: PUSH1 0x60 00000730: DUP2 00000731: LT 00000732: ISZERO 00000733: PUSH2 0x073b 00000736: JUMPI 00000737: PUSH1 0x00 00000739: DUP1 0000073a: REVERT 0000073b: JUMPDEST 0000073c: POP 0000073d: DUP1 0000073e: CALLDATALOAD 0000073f: SWAP1 00000740: PUSH1 0x20 00000742: DUP2 00000743: ADD 00000744: CALLDATALOAD 00000745: SWAP1 00000746: PUSH1 0x40 00000748: ADD 00000749: CALLDATALOAD 0000074a: PUSH2 0x1885 0000074d: JUMP 0000074e: JUMPDEST 0000074f: CALLVALUE 00000750: DUP1 00000751: ISZERO 00000752: PUSH2 0x075a 00000755: JUMPI 00000756: PUSH1 0x00 00000758: DUP1 00000759: REVERT 0000075a: JUMPDEST 0000075b: POP 0000075c: PUSH2 0x03eb 0000075f: PUSH2 0x192f 00000762: JUMP 00000763: JUMPDEST 00000764: CALLVALUE 00000765: DUP1 00000766: ISZERO 00000767: PUSH2 0x076f 0000076a: JUMPI 0000076b: PUSH1 0x00 0000076d: DUP1 0000076e: REVERT 0000076f: JUMPDEST 00000770: POP 00000771: PUSH2 0x02b1 00000774: PUSH2 0x1957 00000777: JUMP 00000778: JUMPDEST 00000779: CALLVALUE 0000077a: DUP1 0000077b: ISZERO 0000077c: PUSH2 0x0784 0000077f: JUMPI 00000780: PUSH1 0x00 00000782: DUP1 00000783: REVERT 00000784: JUMPDEST 00000785: POP 00000786: PUSH2 0x035f 00000789: PUSH1 0x04 0000078b: DUP1 0000078c: CALLDATASIZE 0000078d: SUB 0000078e: PUSH1 0x40 00000790: DUP2 00000791: LT 00000792: ISZERO 00000793: PUSH2 0x079b 00000796: JUMPI 00000797: PUSH1 0x00 00000799: DUP1 0000079a: REVERT 0000079b: JUMPDEST 0000079c: POP 0000079d: PUSH1 0x01 0000079f: PUSH1 0x01 000007a1: PUSH1 0xa0 000007a3: SHL 000007a4: SUB 000007a5: DUP2 000007a6: CALLDATALOAD 000007a7: AND 000007a8: SWAP1 000007a9: PUSH1 0x20 000007ab: ADD 000007ac: CALLDATALOAD 000007ad: PUSH2 0x19b7 000007b0: JUMP 000007b1: JUMPDEST 000007b2: CALLVALUE 000007b3: DUP1 000007b4: ISZERO 000007b5: PUSH2 0x07bd 000007b8: JUMPI 000007b9: PUSH1 0x00 000007bb: DUP1 000007bc: REVERT 000007bd: JUMPDEST 000007be: POP 000007bf: PUSH2 0x035f 000007c2: PUSH1 0x04 000007c4: DUP1 000007c5: CALLDATASIZE 000007c6: SUB 000007c7: PUSH1 0x40 000007c9: DUP2 000007ca: LT 000007cb: ISZERO 000007cc: PUSH2 0x07d4 000007cf: JUMPI 000007d0: PUSH1 0x00 000007d2: DUP1 000007d3: REVERT 000007d4: JUMPDEST 000007d5: POP 000007d6: PUSH1 0x01 000007d8: PUSH1 0x01 000007da: PUSH1 0xa0 000007dc: SHL 000007dd: SUB 000007de: DUP2 000007df: CALLDATALOAD 000007e0: AND 000007e1: SWAP1 000007e2: PUSH1 0x20 000007e4: ADD 000007e5: CALLDATALOAD 000007e6: PUSH2 0x1a25 000007e9: JUMP 000007ea: JUMPDEST 000007eb: CALLVALUE 000007ec: DUP1 000007ed: ISZERO 000007ee: PUSH2 0x07f6 000007f1: JUMPI 000007f2: PUSH1 0x00 000007f4: DUP1 000007f5: REVERT 000007f6: JUMPDEST 000007f7: POP 000007f8: PUSH2 0x03eb 000007fb: PUSH2 0x1a39 000007fe: JUMP 000007ff: JUMPDEST 00000800: CALLVALUE 00000801: DUP1 00000802: ISZERO 00000803: PUSH2 0x080b 00000806: JUMPI 00000807: PUSH1 0x00 00000809: DUP1 0000080a: REVERT 0000080b: JUMPDEST 0000080c: POP 0000080d: PUSH2 0x04ca 00000810: PUSH2 0x1a3f 00000813: JUMP 00000814: JUMPDEST 00000815: CALLVALUE 00000816: DUP1 00000817: ISZERO 00000818: PUSH2 0x0820 0000081b: JUMPI 0000081c: PUSH1 0x00 0000081e: DUP1 0000081f: REVERT 00000820: JUMPDEST 00000821: POP 00000822: PUSH2 0x03eb 00000825: PUSH1 0x04 00000827: DUP1 00000828: CALLDATASIZE 00000829: SUB 0000082a: PUSH1 0x20 0000082c: DUP2 0000082d: LT 0000082e: ISZERO 0000082f: PUSH2 0x0837 00000832: JUMPI 00000833: PUSH1 0x00 00000835: DUP1 00000836: REVERT 00000837: JUMPDEST 00000838: POP 00000839: CALLDATALOAD 0000083a: PUSH1 0x01 0000083c: PUSH1 0x01 0000083e: PUSH1 0xa0 00000840: SHL 00000841: SUB 00000842: AND 00000843: PUSH2 0x1a53 00000846: JUMP 00000847: JUMPDEST 00000848: CALLVALUE 00000849: DUP1 0000084a: ISZERO 0000084b: PUSH2 0x0853 0000084e: JUMPI 0000084f: PUSH1 0x00 00000851: DUP1 00000852: REVERT 00000853: JUMPDEST 00000854: POP 00000855: PUSH2 0x029a 00000858: PUSH1 0x04 0000085a: DUP1 0000085b: CALLDATASIZE 0000085c: SUB 0000085d: PUSH1 0x20 0000085f: DUP2 00000860: LT 00000861: ISZERO 00000862: PUSH2 0x086a 00000865: JUMPI 00000866: PUSH1 0x00 00000868: DUP1 00000869: REVERT 0000086a: JUMPDEST 0000086b: POP 0000086c: CALLDATALOAD 0000086d: PUSH2 0x1a65 00000870: JUMP 00000871: JUMPDEST 00000872: CALLVALUE 00000873: DUP1 00000874: ISZERO 00000875: PUSH2 0x087d 00000878: JUMPI 00000879: PUSH1 0x00 0000087b: DUP1 0000087c: REVERT 0000087d: JUMPDEST 0000087e: POP 0000087f: PUSH2 0x029a 00000882: PUSH1 0x04 00000884: DUP1 00000885: CALLDATASIZE 00000886: SUB 00000887: PUSH1 0x40 00000889: DUP2 0000088a: LT 0000088b: ISZERO 0000088c: PUSH2 0x0894 0000088f: JUMPI 00000890: PUSH1 0x00 00000892: DUP1 00000893: REVERT 00000894: JUMPDEST 00000895: POP 00000896: PUSH1 0x01 00000898: PUSH1 0x01 0000089a: PUSH1 0xa0 0000089c: SHL 0000089d: SUB 0000089e: DUP2 0000089f: CALLDATALOAD 000008a0: AND 000008a1: SWAP1 000008a2: PUSH1 0x20 000008a4: ADD 000008a5: CALLDATALOAD 000008a6: PUSH2 0x1b16 000008a9: JUMP 000008aa: JUMPDEST 000008ab: CALLVALUE 000008ac: DUP1 000008ad: ISZERO 000008ae: PUSH2 0x08b6 000008b1: JUMPI 000008b2: PUSH1 0x00 000008b4: DUP1 000008b5: REVERT 000008b6: JUMPDEST 000008b7: POP 000008b8: PUSH2 0x03eb 000008bb: PUSH1 0x04 000008bd: DUP1 000008be: CALLDATASIZE 000008bf: SUB 000008c0: PUSH1 0x20 000008c2: DUP2 000008c3: LT 000008c4: ISZERO 000008c5: PUSH2 0x08cd 000008c8: JUMPI 000008c9: PUSH1 0x00 000008cb: DUP1 000008cc: REVERT 000008cd: JUMPDEST 000008ce: POP 000008cf: CALLDATALOAD 000008d0: PUSH1 0x01 000008d2: PUSH1 0x01 000008d4: PUSH1 0xa0 000008d6: SHL 000008d7: SUB 000008d8: AND 000008d9: PUSH2 0x1b7a 000008dc: JUMP 000008dd: JUMPDEST 000008de: CALLVALUE 000008df: DUP1 000008e0: ISZERO 000008e1: PUSH2 0x08e9 000008e4: JUMPI 000008e5: PUSH1 0x00 000008e7: DUP1 000008e8: REVERT 000008e9: JUMPDEST 000008ea: POP 000008eb: PUSH2 0x04ca 000008ee: PUSH2 0x1b8c 000008f1: JUMP 000008f2: JUMPDEST 000008f3: CALLVALUE 000008f4: DUP1 000008f5: ISZERO 000008f6: PUSH2 0x08fe 000008f9: JUMPI 000008fa: PUSH1 0x00 000008fc: DUP1 000008fd: REVERT 000008fe: JUMPDEST 000008ff: POP 00000900: PUSH2 0x03eb 00000903: PUSH2 0x1b9b 00000906: JUMP 00000907: JUMPDEST 00000908: CALLVALUE 00000909: DUP1 0000090a: ISZERO 0000090b: PUSH2 0x0913 0000090e: JUMPI 0000090f: PUSH1 0x00 00000911: DUP1 00000912: REVERT 00000913: JUMPDEST 00000914: POP 00000915: PUSH2 0x03eb 00000918: PUSH2 0x1ba1 0000091b: JUMP 0000091c: JUMPDEST 0000091d: CALLVALUE 0000091e: DUP1 0000091f: ISZERO 00000920: PUSH2 0x0928 00000923: JUMPI 00000924: PUSH1 0x00 00000926: DUP1 00000927: REVERT 00000928: JUMPDEST 00000929: POP 0000092a: PUSH2 0x03eb 0000092d: PUSH1 0x04 0000092f: DUP1 00000930: CALLDATASIZE 00000931: SUB 00000932: PUSH1 0x40 00000934: DUP2 00000935: LT 00000936: ISZERO 00000937: PUSH2 0x093f 0000093a: JUMPI 0000093b: PUSH1 0x00 0000093d: DUP1 0000093e: REVERT 0000093f: JUMPDEST 00000940: POP 00000941: PUSH1 0x01 00000943: PUSH1 0x01 00000945: PUSH1 0xa0 00000947: SHL 00000948: SUB 00000949: DUP2 0000094a: CALLDATALOAD 0000094b: DUP2 0000094c: AND 0000094d: SWAP2 0000094e: PUSH1 0x20 00000950: ADD 00000951: CALLDATALOAD 00000952: AND 00000953: PUSH2 0x1ba7 00000956: JUMP 00000957: JUMPDEST 00000958: CALLVALUE 00000959: DUP1 0000095a: ISZERO 0000095b: PUSH2 0x0963 0000095e: JUMPI 0000095f: PUSH1 0x00 00000961: DUP1 00000962: REVERT 00000963: JUMPDEST 00000964: POP 00000965: PUSH2 0x04ca 00000968: PUSH2 0x1bd2 0000096b: JUMP 0000096c: JUMPDEST 0000096d: CALLVALUE 0000096e: DUP1 0000096f: ISZERO 00000970: PUSH2 0x0978 00000973: JUMPI 00000974: PUSH1 0x00 00000976: DUP1 00000977: REVERT 00000978: JUMPDEST 00000979: POP 0000097a: PUSH2 0x03eb 0000097d: PUSH2 0x1be1 00000980: JUMP 00000981: JUMPDEST 00000982: CALLVALUE 00000983: DUP1 00000984: ISZERO 00000985: PUSH2 0x098d 00000988: JUMPI 00000989: PUSH1 0x00 0000098b: DUP1 0000098c: REVERT 0000098d: JUMPDEST 0000098e: POP 0000098f: PUSH2 0x03eb 00000992: PUSH2 0x1c11 00000995: JUMP 00000996: JUMPDEST 00000997: CALLVALUE 00000998: DUP1 00000999: ISZERO 0000099a: PUSH2 0x09a2 0000099d: JUMPI 0000099e: PUSH1 0x00 000009a0: DUP1 000009a1: REVERT 000009a2: JUMPDEST 000009a3: POP 000009a4: PUSH2 0x03eb 000009a7: PUSH2 0x1c1e 000009aa: JUMP 000009ab: JUMPDEST 000009ac: CALLER 000009ad: PUSH1 0x00 000009af: DUP2 000009b0: DUP2 000009b1: MSTORE 000009b2: PUSH1 0x0f 000009b4: PUSH1 0x20 000009b6: MSTORE 000009b7: PUSH1 0x40 000009b9: SWAP1 000009ba: KECCAK256 000009bb: SLOAD 000009bc: PUSH1 0x02 000009be: GT 000009bf: ISZERO 000009c0: PUSH2 0x0a6c 000009c3: JUMPI 000009c4: PUSH1 0x02 000009c6: PUSH1 0x0d 000009c8: SLOAD 000009c9: DUP2 000009ca: PUSH2 0x09cf 000009cd: JUMPI 000009ce: INVALID 000009cf: JUMPDEST 000009d0: MOD 000009d1: PUSH1 0x01 000009d3: EQ 000009d4: ISZERO 000009d5: PUSH2 0x0a1c 000009d8: JUMPI 000009d9: PUSH2 0x09e1 000009dc: DUP2 000009dd: PUSH2 0x1c24 000009e0: JUMP 000009e1: JUMPDEST 000009e2: ISZERO 000009e3: PUSH2 0x0a1c 000009e6: JUMPI 000009e7: PUSH1 0x40 000009e9: DUP1 000009ea: MLOAD 000009eb: PUSH3 0x461bcd 000009ef: PUSH1 0xe5 000009f1: SHL 000009f2: DUP2 000009f3: MSTORE 000009f4: PUSH1 0x20 000009f6: PUSH1 0x04 000009f8: DUP3 000009f9: ADD 000009fa: MSTORE 000009fb: PUSH1 0x06 000009fd: PUSH1 0x24 000009ff: DUP3 00000a00: ADD 00000a01: MSTORE 00000a02: PUSH6 0x10b43ab6b0b7 00000a09: PUSH1 0xd1 00000a0b: SHL 00000a0c: PUSH1 0x44 00000a0e: DUP3 00000a0f: ADD 00000a10: MSTORE 00000a11: SWAP1 00000a12: MLOAD 00000a13: SWAP1 00000a14: DUP2 00000a15: SWAP1 00000a16: SUB 00000a17: PUSH1 0x64 00000a19: ADD 00000a1a: SWAP1 00000a1b: REVERT 00000a1c: JUMPDEST 00000a1d: PUSH1 0x02 00000a1f: PUSH1 0x0d 00000a21: SLOAD 00000a22: LT 00000a23: PUSH2 0x0a6c 00000a26: JUMPI 00000a27: PUSH1 0x01 00000a29: PUSH1 0x01 00000a2b: PUSH1 0xa0 00000a2d: SHL 00000a2e: SUB 00000a2f: DUP2 00000a30: AND 00000a31: ORIGIN 00000a32: EQ 00000a33: PUSH2 0x0a6c 00000a36: JUMPI 00000a37: PUSH1 0x40 00000a39: DUP1 00000a3a: MLOAD 00000a3b: PUSH3 0x461bcd 00000a3f: PUSH1 0xe5 00000a41: SHL 00000a42: DUP2 00000a43: MSTORE 00000a44: PUSH1 0x20 00000a46: PUSH1 0x04 00000a48: DUP3 00000a49: ADD 00000a4a: MSTORE 00000a4b: PUSH1 0x06 00000a4d: PUSH1 0x24 00000a4f: DUP3 00000a50: ADD 00000a51: MSTORE 00000a52: PUSH6 0x10b43ab6b0b7 00000a59: PUSH1 0xd1 00000a5b: SHL 00000a5c: PUSH1 0x44 00000a5e: DUP3 00000a5f: ADD 00000a60: MSTORE 00000a61: SWAP1 00000a62: MLOAD 00000a63: SWAP1 00000a64: DUP2 00000a65: SWAP1 00000a66: SUB 00000a67: PUSH1 0x64 00000a69: ADD 00000a6a: SWAP1 00000a6b: REVERT 00000a6c: JUMPDEST 00000a6d: PUSH1 0x00 00000a6f: PUSH1 0x03 00000a71: SLOAD 00000a72: GT 00000a73: DUP1 00000a74: PUSH2 0x0a8a 00000a77: JUMPI 00000a78: POP 00000a79: PUSH1 0x10 00000a7b: SLOAD 00000a7c: PUSH1 0x01 00000a7e: PUSH1 0x01 00000a80: PUSH1 0xa0 00000a82: SHL 00000a83: SUB 00000a84: DUP3 00000a85: DUP2 00000a86: AND 00000a87: SWAP2 00000a88: AND 00000a89: EQ 00000a8a: JUMPDEST 00000a8b: PUSH2 0x0ac5 00000a8e: JUMPI 00000a8f: PUSH1 0x40 00000a91: DUP1 00000a92: MLOAD 00000a93: PUSH3 0x461bcd 00000a97: PUSH1 0xe5 00000a99: SHL 00000a9a: DUP2 00000a9b: MSTORE 00000a9c: PUSH1 0x20 00000a9e: PUSH1 0x04 00000aa0: DUP3 00000aa1: ADD 00000aa2: MSTORE 00000aa3: PUSH1 0x07 00000aa5: PUSH1 0x24 00000aa7: DUP3 00000aa8: ADD 00000aa9: MSTORE 00000aaa: PUSH7 0x085b585c9ad95d 00000ab2: PUSH1 0xca 00000ab4: SHL 00000ab5: PUSH1 0x44 00000ab7: DUP3 00000ab8: ADD 00000ab9: MSTORE 00000aba: SWAP1 00000abb: MLOAD 00000abc: SWAP1 00000abd: DUP2 00000abe: SWAP1 00000abf: SUB 00000ac0: PUSH1 0x64 00000ac2: ADD 00000ac3: SWAP1 00000ac4: REVERT 00000ac5: JUMPDEST 00000ac6: PUSH1 0x00 00000ac8: CALLVALUE 00000ac9: GT 00000aca: PUSH2 0x0b03 00000acd: JUMPI 00000ace: PUSH1 0x40 00000ad0: DUP1 00000ad1: MLOAD 00000ad2: PUSH3 0x461bcd 00000ad6: PUSH1 0xe5 00000ad8: SHL 00000ad9: DUP2 00000ada: MSTORE 00000adb: PUSH1 0x20 00000add: PUSH1 0x04 00000adf: DUP1 00000ae0: DUP4 00000ae1: ADD 00000ae2: SWAP2 00000ae3: SWAP1 00000ae4: SWAP2 00000ae5: MSTORE 00000ae6: PUSH1 0x24 00000ae8: DUP3 00000ae9: ADD 00000aea: MSTORE 00000aeb: PUSH4 0x042cae8d 00000af0: PUSH1 0xe3 00000af2: SHL 00000af3: PUSH1 0x44 00000af5: DUP3 00000af6: ADD 00000af7: MSTORE 00000af8: SWAP1 00000af9: MLOAD 00000afa: SWAP1 00000afb: DUP2 00000afc: SWAP1 00000afd: SUB 00000afe: PUSH1 0x64 00000b00: ADD 00000b01: SWAP1 00000b02: REVERT 00000b03: JUMPDEST 00000b04: PUSH1 0x00 00000b06: DUP4 00000b07: GT 00000b08: PUSH2 0x0b44 00000b0b: JUMPI 00000b0c: PUSH1 0x40 00000b0e: DUP1 00000b0f: MLOAD 00000b10: PUSH3 0x461bcd 00000b14: PUSH1 0xe5 00000b16: SHL 00000b17: DUP2 00000b18: MSTORE 00000b19: PUSH1 0x20 00000b1b: PUSH1 0x04 00000b1d: DUP3 00000b1e: ADD 00000b1f: MSTORE 00000b20: PUSH1 0x09 00000b22: PUSH1 0x24 00000b24: DUP3 00000b25: ADD 00000b26: MSTORE 00000b27: PUSH9 0x10b6b4b72a37b5b2b7 00000b31: PUSH1 0xb9 00000b33: SHL 00000b34: PUSH1 0x44 00000b36: DUP3 00000b37: ADD 00000b38: MSTORE 00000b39: SWAP1 00000b3a: MLOAD 00000b3b: SWAP1 00000b3c: DUP2 00000b3d: SWAP1 00000b3e: SUB 00000b3f: PUSH1 0x64 00000b41: ADD 00000b42: SWAP1 00000b43: REVERT 00000b44: JUMPDEST 00000b45: DUP2 00000b46: ISZERO 00000b47: DUP1 00000b48: PUSH2 0x0b51 00000b4b: JUMPI 00000b4c: POP 00000b4d: DUP2 00000b4e: TIMESTAMP 00000b4f: GT 00000b50: ISZERO 00000b51: JUMPDEST 00000b52: PUSH2 0x0b8c 00000b55: JUMPI 00000b56: PUSH1 0x40 00000b58: DUP1 00000b59: MLOAD 00000b5a: PUSH3 0x461bcd 00000b5e: PUSH1 0xe5 00000b60: SHL 00000b61: DUP2 00000b62: MSTORE 00000b63: PUSH1 0x20 00000b65: PUSH1 0x04 00000b67: DUP3 00000b68: ADD 00000b69: MSTORE 00000b6a: PUSH1 0x07 00000b6c: PUSH1 0x24 00000b6e: DUP3 00000b6f: ADD 00000b70: MSTORE 00000b71: PUSH7 0x21657870697265 00000b79: PUSH1 0xc8 00000b7b: SHL 00000b7c: PUSH1 0x44 00000b7e: DUP3 00000b7f: ADD 00000b80: MSTORE 00000b81: SWAP1 00000b82: MLOAD 00000b83: SWAP1 00000b84: DUP2 00000b85: SWAP1 00000b86: SUB 00000b87: PUSH1 0x64 00000b89: ADD 00000b8a: SWAP1 00000b8b: REVERT 00000b8c: JUMPDEST 00000b8d: PUSH1 0x04 00000b8f: SLOAD 00000b90: ISZERO 00000b91: DUP1 00000b92: PUSH2 0x0b9d 00000b95: JUMPI 00000b96: POP 00000b97: PUSH1 0x04 00000b99: SLOAD 00000b9a: CALLVALUE 00000b9b: GT 00000b9c: ISZERO 00000b9d: JUMPDEST 00000b9e: PUSH2 0x0bda 00000ba1: JUMPI 00000ba2: PUSH1 0x40 00000ba4: DUP1 00000ba5: MLOAD 00000ba6: PUSH3 0x461bcd 00000baa: PUSH1 0xe5 00000bac: SHL 00000bad: DUP2 00000bae: MSTORE 00000baf: PUSH1 0x20 00000bb1: PUSH1 0x04 00000bb3: DUP3 00000bb4: ADD 00000bb5: MSTORE 00000bb6: PUSH1 0x09 00000bb8: PUSH1 0x24 00000bba: DUP3 00000bbb: ADD 00000bbc: MSTORE 00000bbd: PUSH9 0x08595d1a131a5b5a5d 00000bc7: PUSH1 0xba 00000bc9: SHL 00000bca: PUSH1 0x44 00000bcc: DUP3 00000bcd: ADD 00000bce: MSTORE 00000bcf: SWAP1 00000bd0: MLOAD 00000bd1: SWAP1 00000bd2: DUP2 00000bd3: SWAP1 00000bd4: SUB 00000bd5: PUSH1 0x64 00000bd7: ADD 00000bd8: SWAP1 00000bd9: REVERT 00000bda: JUMPDEST 00000bdb: PUSH1 0x12 00000bdd: SLOAD 00000bde: PUSH1 0x00 00000be0: SWAP1 00000be1: PUSH2 0x0c09 00000be4: SWAP1 00000be5: PUSH2 0x0bfd 00000be8: PUSH9 0x71d75ab9b920500000 00000bf2: SELFBALANCE 00000bf3: PUSH4 0xffffffff 00000bf8: PUSH2 0x1c60 00000bfb: AND 00000bfc: JUMP 00000bfd: JUMPDEST 00000bfe: SWAP1 00000bff: PUSH4 0xffffffff 00000c04: PUSH2 0x1cc1 00000c07: AND 00000c08: JUMP 00000c09: JUMPDEST 00000c0a: SWAP1 00000c0b: POP 00000c0c: PUSH1 0x00 00000c0e: PUSH2 0x0c1d 00000c11: DUP3 00000c12: CALLVALUE 00000c13: PUSH4 0xffffffff 00000c18: PUSH2 0x1cc1 00000c1b: AND 00000c1c: JUMP 00000c1d: JUMPDEST 00000c1e: PUSH20 0x1111111111111111111111111111111111111111 00000c33: PUSH1 0x00 00000c35: SWAP1 00000c36: DUP2 00000c37: MSTORE 00000c38: PUSH1 0x13 00000c3a: PUSH1 0x20 00000c3c: MSTORE 00000c3d: PUSH1 0x00 00000c3f: DUP1 00000c40: MLOAD 00000c41: PUSH1 0x20 00000c43: PUSH2 0x25be 00000c46: DUP4 00000c47: CODECOPY 00000c48: DUP2 00000c49: MLOAD 00000c4a: SWAP2 00000c4b: MSTORE 00000c4c: SLOAD 00000c4d: SWAP2 00000c4e: SWAP3 00000c4f: POP 00000c50: PUSH2 0x0c82 00000c53: DUP5 00000c54: PUSH2 0x0c76 00000c57: PUSH1 0x02 00000c59: DUP3 00000c5a: DIV 00000c5b: PUSH2 0x0c6a 00000c5e: DUP8 00000c5f: DUP8 00000c60: PUSH4 0xffffffff 00000c65: PUSH2 0x1d03 00000c68: AND 00000c69: JUMP 00000c6a: JUMPDEST 00000c6b: SWAP1 00000c6c: PUSH4 0xffffffff 00000c71: PUSH2 0x1c60 00000c74: AND 00000c75: JUMP 00000c76: JUMPDEST 00000c77: SWAP1 00000c78: PUSH4 0xffffffff 00000c7d: PUSH2 0x1d5c 00000c80: AND 00000c81: JUMP 00000c82: JUMPDEST 00000c83: SWAP1 00000c84: POP 00000c85: PUSH1 0x00 00000c87: PUSH2 0x0c96 00000c8a: DUP4 00000c8b: DUP4 00000c8c: PUSH4 0xffffffff 00000c91: PUSH2 0x1cc1 00000c94: AND 00000c95: JUMP 00000c96: JUMPDEST 00000c97: SWAP1 00000c98: POP 00000c99: PUSH1 0x00 00000c9b: DUP2 00000c9c: GT 00000c9d: PUSH2 0x0cd9 00000ca0: JUMPI 00000ca1: PUSH1 0x40 00000ca3: DUP1 00000ca4: MLOAD 00000ca5: PUSH3 0x461bcd 00000ca9: PUSH1 0xe5 00000cab: SHL 00000cac: DUP2 00000cad: MSTORE 00000cae: PUSH1 0x20 00000cb0: PUSH1 0x04 00000cb2: DUP3 00000cb3: ADD 00000cb4: MSTORE 00000cb5: PUSH1 0x09 00000cb7: PUSH1 0x24 00000cb9: DUP3 00000cba: ADD 00000cbb: MSTORE 00000cbc: PUSH9 0x10b7baba2a37b5b2b7 00000cc6: PUSH1 0xb9 00000cc8: SHL 00000cc9: PUSH1 0x44 00000ccb: DUP3 00000ccc: ADD 00000ccd: MSTORE 00000cce: SWAP1 00000ccf: MLOAD 00000cd0: SWAP1 00000cd1: DUP2 00000cd2: SWAP1 00000cd3: SUB 00000cd4: PUSH1 0x64 00000cd6: ADD 00000cd7: SWAP1 00000cd8: REVERT 00000cd9: JUMPDEST 00000cda: DUP8 00000cdb: DUP2 00000cdc: LT 00000cdd: ISZERO 00000cde: PUSH2 0x0d18 00000ce1: JUMPI 00000ce2: PUSH1 0x40 00000ce4: MLOAD 00000ce5: PUSH3 0x461bcd 00000ce9: PUSH1 0xe5 00000ceb: SHL 00000cec: DUP2 00000ced: MSTORE 00000cee: PUSH1 0x04 00000cf0: ADD 00000cf1: DUP1 00000cf2: DUP1 00000cf3: PUSH1 0x20 00000cf5: ADD 00000cf6: DUP3 00000cf7: DUP2 00000cf8: SUB 00000cf9: DUP3 00000cfa: MSTORE 00000cfb: PUSH1 0x26 00000cfd: DUP2 00000cfe: MSTORE 00000cff: PUSH1 0x20 00000d01: ADD 00000d02: DUP1 00000d03: PUSH2 0x25de 00000d06: PUSH1 0x26 00000d08: SWAP2 00000d09: CODECOPY 00000d0a: PUSH1 0x40 00000d0c: ADD 00000d0d: SWAP2 00000d0e: POP 00000d0f: POP 00000d10: PUSH1 0x40 00000d12: MLOAD 00000d13: DUP1 00000d14: SWAP2 00000d15: SUB 00000d16: SWAP1 00000d17: REVERT 00000d18: JUMPDEST 00000d19: PUSH1 0x00 00000d1b: PUSH1 0x06 00000d1d: SLOAD 00000d1e: GT 00000d1f: DUP1 00000d20: ISZERO 00000d21: PUSH2 0x0d34 00000d24: JUMPI 00000d25: POP 00000d26: PUSH1 0x05 00000d28: SLOAD 00000d29: PUSH1 0x01 00000d2b: PUSH1 0x01 00000d2d: PUSH1 0xa0 00000d2f: SHL 00000d30: SUB 00000d31: AND 00000d32: ISZERO 00000d33: ISZERO 00000d34: JUMPDEST 00000d35: ISZERO 00000d36: PUSH2 0x0e6a 00000d39: JUMPI 00000d3a: PUSH1 0x05 00000d3c: SLOAD 00000d3d: PUSH1 0x40 00000d3f: DUP1 00000d40: MLOAD 00000d41: PUSH4 0x70a08231 00000d46: PUSH1 0xe0 00000d48: SHL 00000d49: DUP2 00000d4a: MSTORE 00000d4b: PUSH1 0x01 00000d4d: PUSH1 0x01 00000d4f: PUSH1 0xa0 00000d51: SHL 00000d52: SUB 00000d53: DUP10 00000d54: DUP2 00000d55: AND 00000d56: PUSH1 0x04 00000d58: DUP4 00000d59: ADD 00000d5a: MSTORE 00000d5b: SWAP2 00000d5c: MLOAD 00000d5d: PUSH1 0x00 00000d5f: SWAP4 00000d60: SWAP3 00000d61: SWAP1 00000d62: SWAP3 00000d63: AND 00000d64: SWAP2 00000d65: PUSH4 0x70a08231 00000d6a: SWAP2 00000d6b: PUSH1 0x24 00000d6d: DUP1 00000d6e: DUP3 00000d6f: ADD 00000d70: SWAP3 00000d71: PUSH1 0x20 00000d73: SWAP3 00000d74: SWAP1 00000d75: SWAP2 00000d76: SWAP1 00000d77: DUP3 00000d78: SWAP1 00000d79: SUB 00000d7a: ADD 00000d7b: DUP2 00000d7c: DUP7 00000d7d: DUP1 00000d7e: EXTCODESIZE 00000d7f: ISZERO 00000d80: DUP1 00000d81: ISZERO 00000d82: PUSH2 0x0d8a 00000d85: JUMPI 00000d86: PUSH1 0x00 00000d88: DUP1 00000d89: REVERT 00000d8a: JUMPDEST 00000d8b: POP 00000d8c: GAS 00000d8d: STATICCALL 00000d8e: ISZERO 00000d8f: DUP1 00000d90: ISZERO 00000d91: PUSH2 0x0d9e 00000d94: JUMPI 00000d95: RETURNDATASIZE 00000d96: PUSH1 0x00 00000d98: DUP1 00000d99: RETURNDATACOPY 00000d9a: RETURNDATASIZE 00000d9b: PUSH1 0x00 00000d9d: REVERT 00000d9e: JUMPDEST 00000d9f: POP 00000da0: POP 00000da1: POP 00000da2: POP 00000da3: PUSH1 0x40 00000da5: MLOAD 00000da6: RETURNDATASIZE 00000da7: PUSH1 0x20 00000da9: DUP2 00000daa: LT 00000dab: ISZERO 00000dac: PUSH2 0x0db4 00000daf: JUMPI 00000db0: PUSH1 0x00 00000db2: DUP1 00000db3: REVERT 00000db4: JUMPDEST 00000db5: POP 00000db6: MLOAD 00000db7: PUSH1 0x06 00000db9: SLOAD 00000dba: SWAP1 00000dbb: SWAP2 00000dbc: POP 00000dbd: PUSH1 0x00 00000dbf: SWAP1 00000dc0: PUSH2 0x0dd8 00000dc3: SWAP1 00000dc4: PUSH2 0x2710 00000dc7: SWAP1 00000dc8: PUSH2 0x0c76 00000dcb: SWAP1 00000dcc: DUP6 00000dcd: SWAP1 00000dce: PUSH4 0xffffffff 00000dd3: PUSH2 0x1d03 00000dd6: AND 00000dd7: JUMP 00000dd8: JUMPDEST 00000dd9: SWAP1 00000dda: POP 00000ddb: PUSH1 0x07 00000ddd: SLOAD 00000dde: DUP2 00000ddf: LT 00000de0: ISZERO 00000de1: PUSH2 0x0de9 00000de4: JUMPI 00000de5: POP 00000de6: PUSH1 0x07 00000de8: SLOAD 00000de9: JUMPDEST 00000dea: PUSH1 0x01 00000dec: PUSH1 0x01 00000dee: PUSH1 0xa0 00000df0: SHL 00000df1: SUB 00000df2: DUP9 00000df3: AND 00000df4: PUSH1 0x00 00000df6: SWAP1 00000df7: DUP2 00000df8: MSTORE 00000df9: PUSH1 0x13 00000dfb: PUSH1 0x20 00000dfd: MSTORE 00000dfe: PUSH1 0x40 00000e00: SWAP1 00000e01: KECCAK256 00000e02: SLOAD 00000e03: DUP2 00000e04: SWAP1 00000e05: PUSH2 0x0e14 00000e08: SWAP1 00000e09: DUP6 00000e0a: PUSH4 0xffffffff 00000e0f: PUSH2 0x1c60 00000e12: AND 00000e13: JUMP 00000e14: JUMPDEST 00000e15: GT 00000e16: ISZERO 00000e17: PUSH2 0x0e67 00000e1a: JUMPI 00000e1b: PUSH1 0x40 00000e1d: DUP1 00000e1e: MLOAD 00000e1f: PUSH3 0x461bcd 00000e23: PUSH1 0xe5 00000e25: SHL 00000e26: DUP2 00000e27: MSTORE 00000e28: PUSH1 0x20 00000e2a: PUSH1 0x04 00000e2c: DUP3 00000e2d: ADD 00000e2e: MSTORE 00000e2f: PUSH1 0x1a 00000e31: PUSH1 0x24 00000e33: DUP3 00000e34: ADD 00000e35: MSTORE 00000e36: PUSH32 0x216e6565642d6d6f72652d77686974656c6973742d746f6b656e000000000000 00000e57: PUSH1 0x44 00000e59: DUP3 00000e5a: ADD 00000e5b: MSTORE 00000e5c: SWAP1 00000e5d: MLOAD 00000e5e: SWAP1 00000e5f: DUP2 00000e60: SWAP1 00000e61: SUB 00000e62: PUSH1 0x64 00000e64: ADD 00000e65: SWAP1 00000e66: REVERT 00000e67: JUMPDEST 00000e68: POP 00000e69: POP 00000e6a: JUMPDEST 00000e6b: PUSH2 0x0e89 00000e6e: PUSH20 0x1111111111111111111111111111111111111111 00000e83: DUP8 00000e84: DUP4 00000e85: PUSH2 0x1d9e 00000e88: JUMP 00000e89: JUMPDEST 00000e8a: PUSH1 0x40 00000e8c: DUP1 00000e8d: MLOAD 00000e8e: DUP3 00000e8f: DUP2 00000e90: MSTORE 00000e91: CALLVALUE 00000e92: PUSH1 0x20 00000e94: DUP3 00000e95: ADD 00000e96: MSTORE 00000e97: DUP2 00000e98: MLOAD 00000e99: PUSH1 0x01 00000e9b: PUSH1 0x01 00000e9d: PUSH1 0xa0 00000e9f: SHL 00000ea0: SUB 00000ea1: DUP10 00000ea2: AND 00000ea3: SWAP3 00000ea4: PUSH32 0xf6f342132c7de5e5a1e99c8efae544c94731f3ff093f5c3c97c6973d9415cdfb 00000ec5: SWAP3 00000ec6: DUP3 00000ec7: SWAP1 00000ec8: SUB 00000ec9: ADD 00000eca: SWAP1 00000ecb: LOG2 00000ecc: POP 00000ecd: POP 00000ece: POP 00000ecf: POP 00000ed0: POP 00000ed1: POP 00000ed2: POP 00000ed3: POP 00000ed4: JUMP 00000ed5: JUMPDEST 00000ed6: PUSH1 0x00 00000ed8: DUP1 00000ed9: SLOAD 00000eda: PUSH1 0x40 00000edc: DUP1 00000edd: MLOAD 00000ede: PUSH1 0x20 00000ee0: PUSH1 0x1f 00000ee2: PUSH1 0x02 00000ee4: PUSH1 0x00 00000ee6: NOT 00000ee7: PUSH2 0x0100 00000eea: PUSH1 0x01 00000eec: DUP9 00000eed: AND 00000eee: ISZERO 00000eef: MUL 00000ef0: ADD 00000ef1: SWAP1 00000ef2: SWAP6 00000ef3: AND 00000ef4: SWAP5 00000ef5: SWAP1 00000ef6: SWAP5 00000ef7: DIV 00000ef8: SWAP4 00000ef9: DUP5 00000efa: ADD 00000efb: DUP2 00000efc: SWAP1 00000efd: DIV 00000efe: DUP2 00000eff: MUL 00000f00: DUP3 00000f01: ADD 00000f02: DUP2 00000f03: ADD 00000f04: SWAP1 00000f05: SWAP3 00000f06: MSTORE 00000f07: DUP3 00000f08: DUP2 00000f09: MSTORE 00000f0a: PUSH1 0x60 00000f0c: SWAP4 00000f0d: SWAP1 00000f0e: SWAP3 00000f0f: SWAP1 00000f10: SWAP2 00000f11: DUP4 00000f12: ADD 00000f13: DUP3 00000f14: DUP3 00000f15: DUP1 00000f16: ISZERO 00000f17: PUSH2 0x0f61 00000f1a: JUMPI 00000f1b: DUP1 00000f1c: PUSH1 0x1f 00000f1e: LT 00000f1f: PUSH2 0x0f36 00000f22: JUMPI 00000f23: PUSH2 0x0100 00000f26: DUP1 00000f27: DUP4 00000f28: SLOAD 00000f29: DIV 00000f2a: MUL 00000f2b: DUP4 00000f2c: MSTORE 00000f2d: SWAP2 00000f2e: PUSH1 0x20 00000f30: ADD 00000f31: SWAP2 00000f32: PUSH2 0x0f61 00000f35: JUMP 00000f36: JUMPDEST 00000f37: DUP3 00000f38: ADD 00000f39: SWAP2 00000f3a: SWAP1 00000f3b: PUSH1 0x00 00000f3d: MSTORE 00000f3e: PUSH1 0x20 00000f40: PUSH1 0x00 00000f42: KECCAK256 00000f43: SWAP1 00000f44: JUMPDEST 00000f45: DUP2 00000f46: SLOAD 00000f47: DUP2 00000f48: MSTORE 00000f49: SWAP1 00000f4a: PUSH1 0x01 00000f4c: ADD 00000f4d: SWAP1 00000f4e: PUSH1 0x20 00000f50: ADD 00000f51: DUP1 00000f52: DUP4 00000f53: GT 00000f54: PUSH2 0x0f44 00000f57: JUMPI 00000f58: DUP3 00000f59: SWAP1 00000f5a: SUB 00000f5b: PUSH1 0x1f 00000f5d: AND 00000f5e: DUP3 00000f5f: ADD 00000f60: SWAP2 00000f61: JUMPDEST 00000f62: POP 00000f63: POP 00000f64: POP 00000f65: POP 00000f66: POP 00000f67: SWAP1 00000f68: POP 00000f69: SWAP1 00000f6a: JUMP 00000f6b: JUMPDEST 00000f6c: PUSH1 0x00 00000f6e: PUSH2 0x0f7f 00000f71: PUSH2 0x0f78 00000f74: PUSH2 0x1e60 00000f77: JUMP 00000f78: JUMPDEST 00000f79: DUP5 00000f7a: DUP5 00000f7b: PUSH2 0x1e64 00000f7e: JUMP 00000f7f: JUMPDEST 00000f80: POP 00000f81: PUSH1 0x01 00000f83: JUMPDEST 00000f84: SWAP3 00000f85: SWAP2 00000f86: POP 00000f87: POP 00000f88: JUMP 00000f89: JUMPDEST 00000f8a: PUSH1 0x10 00000f8c: SLOAD 00000f8d: PUSH1 0x01 00000f8f: PUSH1 0x01 00000f91: PUSH1 0xa0 00000f93: SHL 00000f94: SUB 00000f95: AND 00000f96: CALLER 00000f97: EQ 00000f98: PUSH2 0x0fd1 00000f9b: JUMPI 00000f9c: PUSH1 0x40 00000f9e: DUP1 00000f9f: MLOAD 00000fa0: PUSH3 0x461bcd 00000fa4: PUSH1 0xe5 00000fa6: SHL 00000fa7: DUP2 00000fa8: MSTORE 00000fa9: PUSH1 0x20 00000fab: PUSH1 0x04 00000fad: DUP1 00000fae: DUP4 00000faf: ADD 00000fb0: SWAP2 00000fb1: SWAP1 00000fb2: SWAP2 00000fb3: MSTORE 00000fb4: PUSH1 0x24 00000fb6: DUP3 00000fb7: ADD 00000fb8: MSTORE 00000fb9: PUSH4 0x10b3b7bb 00000fbe: PUSH1 0xe1 00000fc0: SHL 00000fc1: PUSH1 0x44 00000fc3: DUP3 00000fc4: ADD 00000fc5: MSTORE 00000fc6: SWAP1 00000fc7: MLOAD 00000fc8: SWAP1 00000fc9: DUP2 00000fca: SWAP1 00000fcb: SUB 00000fcc: PUSH1 0x64 00000fce: ADD 00000fcf: SWAP1 00000fd0: REVERT 00000fd1: JUMPDEST 00000fd2: PUSH1 0x07 00000fd4: SSTORE 00000fd5: JUMP 00000fd6: JUMPDEST 00000fd7: PUSH1 0x10 00000fd9: SLOAD 00000fda: PUSH1 0x01 00000fdc: PUSH1 0x01 00000fde: PUSH1 0xa0 00000fe0: SHL 00000fe1: SUB 00000fe2: AND 00000fe3: CALLER 00000fe4: EQ 00000fe5: PUSH2 0x101e 00000fe8: JUMPI 00000fe9: PUSH1 0x40 00000feb: DUP1 00000fec: MLOAD 00000fed: PUSH3 0x461bcd 00000ff1: PUSH1 0xe5 00000ff3: SHL 00000ff4: DUP2 00000ff5: MSTORE 00000ff6: PUSH1 0x20 00000ff8: PUSH1 0x04 00000ffa: DUP1 00000ffb: DUP4 00000ffc: ADD 00000ffd: SWAP2 00000ffe: SWAP1 00000fff: SWAP2 00001000: MSTORE 00001001: PUSH1 0x24 00001003: DUP3 00001004: ADD 00001005: MSTORE 00001006: PUSH4 0x10b3b7bb 0000100b: PUSH1 0xe1 0000100d: SHL 0000100e: PUSH1 0x44 00001010: DUP3 00001011: ADD 00001012: MSTORE 00001013: SWAP1 00001014: MLOAD 00001015: SWAP1 00001016: DUP2 00001017: SWAP1 00001018: SUB 00001019: PUSH1 0x64 0000101b: ADD 0000101c: SWAP1 0000101d: REVERT 0000101e: JUMPDEST 0000101f: PUSH1 0x05 00001021: DUP1 00001022: SLOAD 00001023: PUSH1 0x01 00001025: PUSH1 0x01 00001027: PUSH1 0xa0 00001029: SHL 0000102a: SUB 0000102b: NOT 0000102c: AND 0000102d: PUSH1 0x01 0000102f: PUSH1 0x01 00001031: PUSH1 0xa0 00001033: SHL 00001034: SUB 00001035: SWAP4 00001036: SWAP1 00001037: SWAP4 00001038: AND 00001039: SWAP3 0000103a: SWAP1 0000103b: SWAP3 0000103c: OR 0000103d: SWAP1 0000103e: SWAP2 0000103f: SSTORE 00001040: PUSH1 0x06 00001042: SSTORE 00001043: JUMP 00001044: JUMPDEST 00001045: PUSH1 0x15 00001047: SLOAD 00001048: SWAP1 00001049: JUMP 0000104a: JUMPDEST 0000104b: PUSH1 0x07 0000104d: SLOAD 0000104e: DUP2 0000104f: JUMP 00001050: JUMPDEST 00001051: CALLER 00001052: PUSH1 0x00 00001054: DUP2 00001055: DUP2 00001056: MSTORE 00001057: PUSH1 0x0f 00001059: PUSH1 0x20 0000105b: MSTORE 0000105c: PUSH1 0x40 0000105e: SWAP1 0000105f: KECCAK256 00001060: SLOAD 00001061: PUSH1 0x01 00001063: AND 00001064: PUSH2 0x1110 00001067: JUMPI 00001068: PUSH1 0x02 0000106a: PUSH1 0x0e 0000106c: SLOAD 0000106d: DUP2 0000106e: PUSH2 0x1073 00001071: JUMPI 00001072: INVALID 00001073: JUMPDEST 00001074: MOD 00001075: PUSH1 0x01 00001077: EQ 00001078: ISZERO 00001079: PUSH2 0x10c0 0000107c: JUMPI 0000107d: PUSH2 0x1085 00001080: DUP2 00001081: PUSH2 0x1c24 00001084: JUMP 00001085: JUMPDEST 00001086: ISZERO 00001087: PUSH2 0x10c0 0000108a: JUMPI 0000108b: PUSH1 0x40 0000108d: DUP1 0000108e: MLOAD 0000108f: PUSH3 0x461bcd 00001093: PUSH1 0xe5 00001095: SHL 00001096: DUP2 00001097: MSTORE 00001098: PUSH1 0x20 0000109a: PUSH1 0x04 0000109c: DUP3 0000109d: ADD 0000109e: MSTORE 0000109f: PUSH1 0x06 000010a1: PUSH1 0x24 000010a3: DUP3 000010a4: ADD 000010a5: MSTORE 000010a6: PUSH6 0x10b43ab6b0b7 000010ad: PUSH1 0xd1 000010af: SHL 000010b0: PUSH1 0x44 000010b2: DUP3 000010b3: ADD 000010b4: MSTORE 000010b5: SWAP1 000010b6: MLOAD 000010b7: SWAP1 000010b8: DUP2 000010b9: SWAP1 000010ba: SUB 000010bb: PUSH1 0x64 000010bd: ADD 000010be: SWAP1 000010bf: REVERT 000010c0: JUMPDEST 000010c1: PUSH1 0x02 000010c3: PUSH1 0x0e 000010c5: SLOAD 000010c6: LT 000010c7: PUSH2 0x1110 000010ca: JUMPI 000010cb: PUSH1 0x01 000010cd: PUSH1 0x01 000010cf: PUSH1 0xa0 000010d1: SHL 000010d2: SUB 000010d3: DUP2 000010d4: AND 000010d5: ORIGIN 000010d6: EQ 000010d7: PUSH2 0x1110 000010da: JUMPI 000010db: PUSH1 0x40 000010dd: DUP1 000010de: MLOAD 000010df: PUSH3 0x461bcd 000010e3: PUSH1 0xe5 000010e5: SHL 000010e6: DUP2 000010e7: MSTORE 000010e8: PUSH1 0x20 000010ea: PUSH1 0x04 000010ec: DUP3 000010ed: ADD 000010ee: MSTORE 000010ef: PUSH1 0x06 000010f1: PUSH1 0x24 000010f3: DUP3 000010f4: ADD 000010f5: MSTORE 000010f6: PUSH6 0x10b43ab6b0b7 000010fd: PUSH1 0xd1 000010ff: SHL 00001100: PUSH1 0x44 00001102: DUP3 00001103: ADD 00001104: MSTORE 00001105: SWAP1 00001106: MLOAD 00001107: SWAP1 00001108: DUP2 00001109: SWAP1 0000110a: SUB 0000110b: PUSH1 0x64 0000110d: ADD 0000110e: SWAP1 0000110f: REVERT 00001110: JUMPDEST 00001111: PUSH1 0x00 00001113: DUP5 00001114: GT 00001115: PUSH2 0x114e 00001118: JUMPI 00001119: PUSH1 0x40 0000111b: DUP1 0000111c: MLOAD 0000111d: PUSH3 0x461bcd 00001121: PUSH1 0xe5 00001123: SHL 00001124: DUP2 00001125: MSTORE 00001126: PUSH1 0x20 00001128: PUSH1 0x04 0000112a: DUP3 0000112b: ADD 0000112c: MSTORE 0000112d: PUSH1 0x06 0000112f: PUSH1 0x24 00001131: DUP3 00001132: ADD 00001133: MSTORE 00001134: PUSH6 0x10ba37b5b2b7 0000113b: PUSH1 0xd1 0000113d: SHL 0000113e: PUSH1 0x44 00001140: DUP3 00001141: ADD 00001142: MSTORE 00001143: SWAP1 00001144: MLOAD 00001145: SWAP1 00001146: DUP2 00001147: SWAP1 00001148: SUB 00001149: PUSH1 0x64 0000114b: ADD 0000114c: SWAP1 0000114d: REVERT 0000114e: JUMPDEST 0000114f: PUSH1 0x00 00001151: DUP4 00001152: GT 00001153: PUSH2 0x118d 00001156: JUMPI 00001157: PUSH1 0x40 00001159: DUP1 0000115a: MLOAD 0000115b: PUSH3 0x461bcd 0000115f: PUSH1 0xe5 00001161: SHL 00001162: DUP2 00001163: MSTORE 00001164: PUSH1 0x20 00001166: PUSH1 0x04 00001168: DUP3 00001169: ADD 0000116a: MSTORE 0000116b: PUSH1 0x07 0000116d: PUSH1 0x24 0000116f: DUP3 00001170: ADD 00001171: MSTORE 00001172: PUSH7 0x042dad2dc8ae8d 0000117a: PUSH1 0xcb 0000117c: SHL 0000117d: PUSH1 0x44 0000117f: DUP3 00001180: ADD 00001181: MSTORE 00001182: SWAP1 00001183: MLOAD 00001184: SWAP1 00001185: DUP2 00001186: SWAP1 00001187: SUB 00001188: PUSH1 0x64 0000118a: ADD 0000118b: SWAP1 0000118c: REVERT 0000118d: JUMPDEST 0000118e: DUP2 0000118f: ISZERO 00001190: DUP1 00001191: PUSH2 0x119a 00001194: JUMPI 00001195: POP 00001196: DUP2 00001197: TIMESTAMP 00001198: GT 00001199: ISZERO 0000119a: JUMPDEST 0000119b: PUSH2 0x11d5 0000119e: JUMPI 0000119f: PUSH1 0x40 000011a1: DUP1 000011a2: MLOAD 000011a3: PUSH3 0x461bcd 000011a7: PUSH1 0xe5 000011a9: SHL 000011aa: DUP2 000011ab: MSTORE 000011ac: PUSH1 0x20 000011ae: PUSH1 0x04 000011b0: DUP3 000011b1: ADD 000011b2: MSTORE 000011b3: PUSH1 0x07 000011b5: PUSH1 0x24 000011b7: DUP3 000011b8: ADD 000011b9: MSTORE 000011ba: PUSH7 0x21657870697265 000011c2: PUSH1 0xc8 000011c4: SHL 000011c5: PUSH1 0x44 000011c7: DUP3 000011c8: ADD 000011c9: MSTORE 000011ca: SWAP1 000011cb: MLOAD 000011cc: SWAP1 000011cd: DUP2 000011ce: SWAP1 000011cf: SUB 000011d0: PUSH1 0x64 000011d2: ADD 000011d3: SWAP1 000011d4: REVERT 000011d5: JUMPDEST 000011d6: PUSH1 0x00 000011d8: PUSH2 0x11f2 000011db: PUSH2 0x2710 000011de: PUSH2 0x0c76 000011e1: PUSH1 0x09 000011e3: SLOAD 000011e4: DUP9 000011e5: PUSH2 0x1d03 000011e8: SWAP1 000011e9: SWAP2 000011ea: SWAP1 000011eb: PUSH4 0xffffffff 000011f0: AND 000011f1: JUMP 000011f2: JUMPDEST 000011f3: SWAP1 000011f4: POP 000011f5: PUSH2 0x11fe 000011f8: DUP3 000011f9: DUP3 000011fa: PUSH2 0x1f50 000011fd: JUMP 000011fe: JUMPDEST 000011ff: PUSH1 0x00 00001201: PUSH2 0x1210 00001204: DUP7 00001205: DUP4 00001206: PUSH4 0xffffffff 0000120b: PUSH2 0x1cc1 0000120e: AND 0000120f: JUMP 00001210: JUMPDEST 00001211: SWAP1 00001212: POP 00001213: PUSH1 0x00 00001215: PUSH2 0x1236 00001218: PUSH1 0x12 0000121a: SLOAD 0000121b: PUSH2 0x0bfd 0000121e: SELFBALANCE 0000121f: PUSH9 0x71d75ab9b920500000 00001229: PUSH2 0x1c60 0000122c: SWAP1 0000122d: SWAP2 0000122e: SWAP1 0000122f: PUSH4 0xffffffff 00001234: AND 00001235: JUMP 00001236: JUMPDEST 00001237: PUSH20 0x1111111111111111111111111111111111111111 0000124c: PUSH1 0x00 0000124e: SWAP1 0000124f: DUP2 00001250: MSTORE 00001251: PUSH1 0x13 00001253: PUSH1 0x20 00001255: MSTORE 00001256: PUSH1 0x00 00001258: DUP1 00001259: MLOAD 0000125a: PUSH1 0x20 0000125c: PUSH2 0x25be 0000125f: DUP4 00001260: CODECOPY 00001261: DUP2 00001262: MLOAD 00001263: SWAP2 00001264: MSTORE 00001265: SLOAD 00001266: SWAP2 00001267: SWAP3 00001268: POP 00001269: PUSH2 0x1278 0000126c: DUP3 0000126d: DUP6 0000126e: PUSH4 0xffffffff 00001273: PUSH2 0x1c60 00001276: AND 00001277: JUMP 00001278: JUMPDEST 00001279: SWAP1 0000127a: POP 0000127b: PUSH1 0x00 0000127d: PUSH2 0x1297 00001280: DUP3 00001281: PUSH2 0x0c76 00001284: PUSH1 0x02 00001286: DUP3 00001287: DIV 00001288: PUSH2 0x0c6a 0000128b: DUP9 0000128c: DUP9 0000128d: PUSH4 0xffffffff 00001292: PUSH2 0x1d03 00001295: AND 00001296: JUMP 00001297: JUMPDEST 00001298: SWAP1 00001299: POP 0000129a: PUSH1 0x00 0000129c: PUSH2 0x12ab 0000129f: DUP6 000012a0: DUP4 000012a1: PUSH4 0xffffffff 000012a6: PUSH2 0x1cc1 000012a9: AND 000012aa: JUMP 000012ab: JUMPDEST 000012ac: SWAP1 000012ad: POP 000012ae: PUSH1 0x00 000012b0: DUP2 000012b1: GT 000012b2: PUSH2 0x12ec 000012b5: JUMPI 000012b6: PUSH1 0x40 000012b8: DUP1 000012b9: MLOAD 000012ba: PUSH3 0x461bcd 000012be: PUSH1 0xe5 000012c0: SHL 000012c1: DUP2 000012c2: MSTORE 000012c3: PUSH1 0x20 000012c5: PUSH1 0x04 000012c7: DUP3 000012c8: ADD 000012c9: MSTORE 000012ca: PUSH1 0x07 000012cc: PUSH1 0x24 000012ce: DUP3 000012cf: ADD 000012d0: MSTORE 000012d1: PUSH7 0x042deeae88ae8d 000012d9: PUSH1 0xcb 000012db: SHL 000012dc: PUSH1 0x44 000012de: DUP3 000012df: ADD 000012e0: MSTORE 000012e1: SWAP1 000012e2: MLOAD 000012e3: SWAP1 000012e4: DUP2 000012e5: SWAP1 000012e6: SUB 000012e7: PUSH1 0x64 000012e9: ADD 000012ea: SWAP1 000012eb: REVERT 000012ec: JUMPDEST 000012ed: DUP10 000012ee: DUP2 000012ef: LT 000012f0: ISZERO 000012f1: PUSH2 0x132b 000012f4: JUMPI 000012f5: PUSH1 0x40 000012f7: MLOAD 000012f8: PUSH3 0x461bcd 000012fc: PUSH1 0xe5 000012fe: SHL 000012ff: DUP2 00001300: MSTORE 00001301: PUSH1 0x04 00001303: ADD 00001304: DUP1 00001305: DUP1 00001306: PUSH1 0x20 00001308: ADD 00001309: DUP3 0000130a: DUP2 0000130b: SUB 0000130c: DUP3 0000130d: MSTORE 0000130e: PUSH1 0x26 00001310: DUP2 00001311: MSTORE 00001312: PUSH1 0x20 00001314: ADD 00001315: DUP1 00001316: PUSH2 0x25de 00001319: PUSH1 0x26 0000131b: SWAP2 0000131c: CODECOPY 0000131d: PUSH1 0x40 0000131f: ADD 00001320: SWAP2 00001321: POP 00001322: POP 00001323: PUSH1 0x40 00001325: MLOAD 00001326: DUP1 00001327: SWAP2 00001328: SUB 00001329: SWAP1 0000132a: REVERT 0000132b: JUMPDEST 0000132c: PUSH2 0x134a 0000132f: DUP9 00001330: PUSH20 0x1111111111111111111111111111111111111111 00001345: DUP9 00001346: PUSH2 0x1d9e 00001349: JUMP 0000134a: JUMPDEST 0000134b: PUSH1 0x0a 0000134d: SLOAD 0000134e: ISZERO 0000134f: PUSH2 0x13d4 00001352: JUMPI 00001353: PUSH1 0x00 00001355: PUSH2 0x136f 00001358: PUSH2 0x2710 0000135b: PUSH2 0x0c76 0000135e: PUSH1 0x0a 00001360: SLOAD 00001361: DUP6 00001362: PUSH2 0x1d03 00001365: SWAP1 00001366: SWAP2 00001367: SWAP1 00001368: PUSH4 0xffffffff 0000136d: AND 0000136e: JUMP 0000136f: JUMPDEST 00001370: PUSH1 0x12 00001372: SLOAD 00001373: SWAP1 00001374: SWAP2 00001375: POP 00001376: PUSH2 0x1385 00001379: SWAP1 0000137a: DUP3 0000137b: PUSH4 0xffffffff 00001380: PUSH2 0x1c60 00001383: AND 00001384: JUMP 00001385: JUMPDEST 00001386: PUSH1 0x12 00001388: SSTORE 00001389: PUSH1 0x01 0000138b: PUSH1 0x01 0000138d: PUSH1 0xa0 0000138f: SHL 00001390: SUB 00001391: DUP10 00001392: AND 00001393: PUSH2 0x08fc 00001396: PUSH2 0x13a5 00001399: DUP5 0000139a: DUP5 0000139b: PUSH4 0xffffffff 000013a0: PUSH2 0x1cc1 000013a3: AND 000013a4: JUMP 000013a5: JUMPDEST 000013a6: PUSH1 0x40 000013a8: MLOAD 000013a9: DUP2 000013aa: ISZERO 000013ab: SWAP1 000013ac: SWAP3 000013ad: MUL 000013ae: SWAP2 000013af: PUSH1 0x00 000013b1: DUP2 000013b2: DUP2 000013b3: DUP2 000013b4: DUP6 000013b5: DUP9 000013b6: DUP9 000013b7: CALL 000013b8: SWAP4 000013b9: POP 000013ba: POP 000013bb: POP 000013bc: POP 000013bd: ISZERO 000013be: DUP1 000013bf: ISZERO 000013c0: PUSH2 0x13cd 000013c3: JUMPI 000013c4: RETURNDATASIZE 000013c5: PUSH1 0x00 000013c7: DUP1 000013c8: RETURNDATACOPY 000013c9: RETURNDATASIZE 000013ca: PUSH1 0x00 000013cc: REVERT 000013cd: JUMPDEST 000013ce: POP 000013cf: POP 000013d0: PUSH2 0x140c 000013d3: JUMP 000013d4: JUMPDEST 000013d5: PUSH1 0x40 000013d7: MLOAD 000013d8: PUSH1 0x01 000013da: PUSH1 0x01 000013dc: PUSH1 0xa0 000013de: SHL 000013df: SUB 000013e0: DUP10 000013e1: AND 000013e2: SWAP1 000013e3: DUP3 000013e4: ISZERO 000013e5: PUSH2 0x08fc 000013e8: MUL 000013e9: SWAP1 000013ea: DUP4 000013eb: SWAP1 000013ec: PUSH1 0x00 000013ee: DUP2 000013ef: DUP2 000013f0: DUP2 000013f1: DUP6 000013f2: DUP9 000013f3: DUP9 000013f4: CALL 000013f5: SWAP4 000013f6: POP 000013f7: POP 000013f8: POP 000013f9: POP 000013fa: ISZERO 000013fb: DUP1 000013fc: ISZERO 000013fd: PUSH2 0x140a 00001400: JUMPI 00001401: RETURNDATASIZE 00001402: PUSH1 0x00 00001404: DUP1 00001405: RETURNDATACOPY 00001406: RETURNDATASIZE 00001407: PUSH1 0x00 00001409: REVERT 0000140a: JUMPDEST 0000140b: POP 0000140c: JUMPDEST 0000140d: PUSH1 0x40 0000140f: DUP1 00001410: MLOAD 00001411: DUP13 00001412: DUP2 00001413: MSTORE 00001414: PUSH1 0x20 00001416: DUP2 00001417: ADD 00001418: DUP4 00001419: SWAP1 0000141a: MSTORE 0000141b: DUP2 0000141c: MLOAD 0000141d: PUSH1 0x01 0000141f: PUSH1 0x01 00001421: PUSH1 0xa0 00001423: SHL 00001424: SUB 00001425: DUP12 00001426: AND 00001427: SWAP3 00001428: PUSH32 0xa8ff15eb642b39da3ab82bb74a87b76cc3e1aef2b82b70bc2a35458386db29aa 00001449: SWAP3 0000144a: DUP3 0000144b: SWAP1 0000144c: SUB 0000144d: ADD 0000144e: SWAP1 0000144f: LOG2 00001450: POP 00001451: POP 00001452: POP 00001453: POP 00001454: POP 00001455: POP 00001456: POP 00001457: POP 00001458: POP 00001459: POP 0000145a: POP 0000145b: JUMP 0000145c: JUMPDEST 0000145d: PUSH1 0x00 0000145f: PUSH2 0x1469 00001462: DUP5 00001463: DUP5 00001464: DUP5 00001465: PUSH2 0x2170 00001468: JUMP 00001469: JUMPDEST 0000146a: PUSH2 0x14df 0000146d: DUP5 0000146e: PUSH2 0x1475 00001471: PUSH2 0x1e60 00001474: JUMP 00001475: JUMPDEST 00001476: PUSH2 0x14da 00001479: DUP6 0000147a: PUSH1 0x40 0000147c: MLOAD 0000147d: DUP1 0000147e: PUSH1 0x60 00001480: ADD 00001481: PUSH1 0x40 00001483: MSTORE 00001484: DUP1 00001485: PUSH1 0x28 00001487: DUP2 00001488: MSTORE 00001489: PUSH1 0x20 0000148b: ADD 0000148c: PUSH2 0x250c 0000148f: PUSH1 0x28 00001491: SWAP2 00001492: CODECOPY 00001493: PUSH1 0x01 00001495: PUSH1 0x01 00001497: PUSH1 0xa0 00001499: SHL 0000149a: SUB 0000149b: DUP11 0000149c: AND 0000149d: PUSH1 0x00 0000149f: SWAP1 000014a0: DUP2 000014a1: MSTORE 000014a2: PUSH1 0x14 000014a4: PUSH1 0x20 000014a6: MSTORE 000014a7: PUSH1 0x40 000014a9: DUP2 000014aa: KECCAK256 000014ab: SWAP1 000014ac: PUSH2 0x14b3 000014af: PUSH2 0x1e60 000014b2: JUMP 000014b3: JUMPDEST 000014b4: PUSH1 0x01 000014b6: PUSH1 0x01 000014b8: PUSH1 0xa0 000014ba: SHL 000014bb: SUB 000014bc: AND 000014bd: DUP2 000014be: MSTORE 000014bf: PUSH1 0x20 000014c1: DUP2 000014c2: ADD 000014c3: SWAP2 000014c4: SWAP1 000014c5: SWAP2 000014c6: MSTORE 000014c7: PUSH1 0x40 000014c9: ADD 000014ca: PUSH1 0x00 000014cc: KECCAK256 000014cd: SLOAD 000014ce: SWAP2 000014cf: SWAP1 000014d0: PUSH4 0xffffffff 000014d5: PUSH2 0x2361 000014d8: AND 000014d9: JUMP 000014da: JUMPDEST 000014db: PUSH2 0x1e64 000014de: JUMP 000014df: JUMPDEST 000014e0: POP 000014e1: PUSH1 0x01 000014e3: SWAP4 000014e4: SWAP3 000014e5: POP 000014e6: POP 000014e7: POP 000014e8: JUMP 000014e9: JUMPDEST 000014ea: PUSH10 0x0472698b413b43200000 000014f5: DUP2 000014f6: JUMP 000014f7: JUMPDEST 000014f8: PUSH1 0x06 000014fa: SLOAD 000014fb: DUP2 000014fc: JUMP 000014fd: JUMPDEST 000014fe: PUSH1 0x11 00001500: SLOAD 00001501: PUSH1 0x01 00001503: PUSH1 0x01 00001505: PUSH1 0xa0 00001507: SHL 00001508: SUB 00001509: AND 0000150a: DUP2 0000150b: JUMP 0000150c: JUMPDEST 0000150d: PUSH1 0x02 0000150f: SLOAD 00001510: PUSH1 0xff 00001512: AND 00001513: SWAP1 00001514: JUMP 00001515: JUMPDEST 00001516: PUSH1 0x04 00001518: SLOAD 00001519: DUP2 0000151a: JUMP 0000151b: JUMPDEST 0000151c: PUSH1 0x0a 0000151e: SLOAD 0000151f: DUP2 00001520: JUMP 00001521: JUMPDEST 00001522: PUSH1 0x00 00001524: PUSH2 0x0f7f 00001527: PUSH2 0x152e 0000152a: PUSH2 0x1e60 0000152d: JUMP 0000152e: JUMPDEST 0000152f: DUP5 00001530: PUSH2 0x14da 00001533: DUP6 00001534: PUSH1 0x14 00001536: PUSH1 0x00 00001538: PUSH2 0x153f 0000153b: PUSH2 0x1e60 0000153e: JUMP 0000153f: JUMPDEST 00001540: PUSH1 0x01 00001542: PUSH1 0x01 00001544: PUSH1 0xa0 00001546: SHL 00001547: SUB 00001548: SWAP1 00001549: DUP2 0000154a: AND 0000154b: DUP3 0000154c: MSTORE 0000154d: PUSH1 0x20 0000154f: DUP1 00001550: DUP4 00001551: ADD 00001552: SWAP4 00001553: SWAP1 00001554: SWAP4 00001555: MSTORE 00001556: PUSH1 0x40 00001558: SWAP2 00001559: DUP3 0000155a: ADD 0000155b: PUSH1 0x00 0000155d: SWAP1 0000155e: DUP2 0000155f: KECCAK256 00001560: SWAP2 00001561: DUP13 00001562: AND 00001563: DUP2 00001564: MSTORE 00001565: SWAP3 00001566: MSTORE 00001567: SWAP1 00001568: KECCAK256 00001569: SLOAD 0000156a: SWAP1 0000156b: PUSH4 0xffffffff 00001570: PUSH2 0x1c60 00001573: AND 00001574: JUMP 00001575: JUMPDEST 00001576: PUSH1 0x10 00001578: SLOAD 00001579: PUSH1 0x01 0000157b: PUSH1 0x01 0000157d: PUSH1 0xa0 0000157f: SHL 00001580: SUB 00001581: AND 00001582: CALLER 00001583: EQ 00001584: PUSH2 0x15bd 00001587: JUMPI 00001588: PUSH1 0x40 0000158a: DUP1 0000158b: MLOAD 0000158c: PUSH3 0x461bcd 00001590: PUSH1 0xe5 00001592: SHL 00001593: DUP2 00001594: MSTORE 00001595: PUSH1 0x20 00001597: PUSH1 0x04 00001599: DUP1 0000159a: DUP4 0000159b: ADD 0000159c: SWAP2 0000159d: SWAP1 0000159e: SWAP2 0000159f: MSTORE 000015a0: PUSH1 0x24 000015a2: DUP3 000015a3: ADD 000015a4: MSTORE 000015a5: PUSH4 0x10b3b7bb 000015aa: PUSH1 0xe1 000015ac: SHL 000015ad: PUSH1 0x44 000015af: DUP3 000015b0: ADD 000015b1: MSTORE 000015b2: SWAP1 000015b3: MLOAD 000015b4: SWAP1 000015b5: DUP2 000015b6: SWAP1 000015b7: SUB 000015b8: PUSH1 0x64 000015ba: ADD 000015bb: SWAP1 000015bc: REVERT 000015bd: JUMPDEST 000015be: PUSH1 0x01 000015c0: PUSH1 0x03 000015c2: SSTORE 000015c3: JUMP 000015c4: JUMPDEST 000015c5: PUSH1 0x03 000015c7: SLOAD 000015c8: DUP2 000015c9: JUMP 000015ca: JUMPDEST 000015cb: PUSH1 0x10 000015cd: SLOAD 000015ce: PUSH1 0x01 000015d0: PUSH1 0x01 000015d2: PUSH1 0xa0 000015d4: SHL 000015d5: SUB 000015d6: AND 000015d7: CALLER 000015d8: EQ 000015d9: PUSH2 0x1612 000015dc: JUMPI 000015dd: PUSH1 0x40 000015df: DUP1 000015e0: MLOAD 000015e1: PUSH3 0x461bcd 000015e5: PUSH1 0xe5 000015e7: SHL 000015e8: DUP2 000015e9: MSTORE 000015ea: PUSH1 0x20 000015ec: PUSH1 0x04 000015ee: DUP1 000015ef: DUP4 000015f0: ADD 000015f1: SWAP2 000015f2: SWAP1 000015f3: SWAP2 000015f4: MSTORE 000015f5: PUSH1 0x24 000015f7: DUP3 000015f8: ADD 000015f9: MSTORE 000015fa: PUSH4 0x10b3b7bb 000015ff: PUSH1 0xe1 00001601: SHL 00001602: PUSH1 0x44 00001604: DUP3 00001605: ADD 00001606: MSTORE 00001607: SWAP1 00001608: MLOAD 00001609: SWAP1 0000160a: DUP2 0000160b: SWAP1 0000160c: SUB 0000160d: PUSH1 0x64 0000160f: ADD 00001610: SWAP1 00001611: REVERT 00001612: JUMPDEST 00001613: PUSH1 0x01 00001615: PUSH1 0x01 00001617: PUSH1 0xa0 00001619: SHL 0000161a: SUB 0000161b: DUP2 0000161c: AND 0000161d: PUSH2 0x1655 00001620: JUMPI 00001621: PUSH1 0x40 00001623: DUP1 00001624: MLOAD 00001625: PUSH3 0x461bcd 00001629: PUSH1 0xe5 0000162b: SHL 0000162c: DUP2 0000162d: MSTORE 0000162e: PUSH1 0x20 00001630: PUSH1 0x04 00001632: DUP3 00001633: ADD 00001634: MSTORE 00001635: PUSH1 0x05 00001637: PUSH1 0x24 00001639: DUP3 0000163a: ADD 0000163b: MSTORE 0000163c: PUSH5 0x10b0b23239 00001642: PUSH1 0xd9 00001644: SHL 00001645: PUSH1 0x44 00001647: DUP3 00001648: ADD 00001649: MSTORE 0000164a: SWAP1 0000164b: MLOAD 0000164c: SWAP1 0000164d: DUP2 0000164e: SWAP1 0000164f: SUB 00001650: PUSH1 0x64 00001652: ADD 00001653: SWAP1 00001654: REVERT 00001655: JUMPDEST 00001656: PUSH1 0x10 00001658: DUP1 00001659: SLOAD 0000165a: PUSH1 0x01 0000165c: PUSH1 0x01 0000165e: PUSH1 0xa0 00001660: SHL 00001661: SUB 00001662: NOT 00001663: AND 00001664: PUSH1 0x01 00001666: PUSH1 0x01 00001668: PUSH1 0xa0 0000166a: SHL 0000166b: SUB 0000166c: SWAP3 0000166d: SWAP1 0000166e: SWAP3 0000166f: AND 00001670: SWAP2 00001671: SWAP1 00001672: SWAP2 00001673: OR 00001674: SWAP1 00001675: SSTORE 00001676: JUMP 00001677: JUMPDEST 00001678: PUSH1 0x0b 0000167a: PUSH1 0x20 0000167c: MSTORE 0000167d: PUSH1 0x00 0000167f: SWAP1 00001680: DUP2 00001681: MSTORE 00001682: PUSH1 0x40 00001684: SWAP1 00001685: KECCAK256 00001686: SLOAD 00001687: DUP2 00001688: JUMP 00001689: JUMPDEST 0000168a: PUSH1 0x10 0000168c: SLOAD 0000168d: PUSH1 0x01 0000168f: PUSH1 0x01 00001691: PUSH1 0xa0 00001693: SHL 00001694: SUB 00001695: AND 00001696: CALLER 00001697: EQ 00001698: PUSH2 0x16d1 0000169b: JUMPI 0000169c: PUSH1 0x40 0000169e: DUP1 0000169f: MLOAD 000016a0: PUSH3 0x461bcd 000016a4: PUSH1 0xe5 000016a6: SHL 000016a7: DUP2 000016a8: MSTORE 000016a9: PUSH1 0x20 000016ab: PUSH1 0x04 000016ad: DUP1 000016ae: DUP4 000016af: ADD 000016b0: SWAP2 000016b1: SWAP1 000016b2: SWAP2 000016b3: MSTORE 000016b4: PUSH1 0x24 000016b6: DUP3 000016b7: ADD 000016b8: MSTORE 000016b9: PUSH4 0x10b3b7bb 000016be: PUSH1 0xe1 000016c0: SHL 000016c1: PUSH1 0x44 000016c3: DUP3 000016c4: ADD 000016c5: MSTORE 000016c6: SWAP1 000016c7: MLOAD 000016c8: SWAP1 000016c9: DUP2 000016ca: SWAP1 000016cb: SUB 000016cc: PUSH1 0x64 000016ce: ADD 000016cf: SWAP1 000016d0: REVERT 000016d1: JUMPDEST 000016d2: PUSH1 0x04 000016d4: SSTORE 000016d5: JUMP 000016d6: JUMPDEST 000016d7: PUSH1 0x0e 000016d9: SLOAD 000016da: DUP2 000016db: JUMP 000016dc: JUMPDEST 000016dd: PUSH1 0x10 000016df: SLOAD 000016e0: PUSH1 0x01 000016e2: PUSH1 0x01 000016e4: PUSH1 0xa0 000016e6: SHL 000016e7: SUB 000016e8: AND 000016e9: CALLER 000016ea: EQ 000016eb: PUSH2 0x1724 000016ee: JUMPI 000016ef: PUSH1 0x40 000016f1: DUP1 000016f2: MLOAD 000016f3: PUSH3 0x461bcd 000016f7: PUSH1 0xe5 000016f9: SHL 000016fa: DUP2 000016fb: MSTORE 000016fc: PUSH1 0x20 000016fe: PUSH1 0x04 00001700: DUP1 00001701: DUP4 00001702: ADD 00001703: SWAP2 00001704: SWAP1 00001705: SWAP2 00001706: MSTORE 00001707: PUSH1 0x24 00001709: DUP3 0000170a: ADD 0000170b: MSTORE 0000170c: PUSH4 0x10b3b7bb 00001711: PUSH1 0xe1 00001713: SHL 00001714: PUSH1 0x44 00001716: DUP3 00001717: ADD 00001718: MSTORE 00001719: SWAP1 0000171a: MLOAD 0000171b: SWAP1 0000171c: DUP2 0000171d: SWAP1 0000171e: SUB 0000171f: PUSH1 0x64 00001721: ADD 00001722: SWAP1 00001723: REVERT 00001724: JUMPDEST 00001725: PUSH1 0x0d 00001727: SWAP2 00001728: SWAP1 00001729: SWAP2 0000172a: SSTORE 0000172b: PUSH1 0x0e 0000172d: SSTORE 0000172e: JUMP 0000172f: JUMPDEST 00001730: PUSH1 0x01 00001732: PUSH1 0x01 00001734: PUSH1 0xa0 00001736: SHL 00001737: SUB 00001738: AND 00001739: PUSH1 0x00 0000173b: SWAP1 0000173c: DUP2 0000173d: MSTORE 0000173e: PUSH1 0x13 00001740: PUSH1 0x20 00001742: MSTORE 00001743: PUSH1 0x40 00001745: SWAP1 00001746: KECCAK256 00001747: SLOAD 00001748: SWAP1 00001749: JUMP 0000174a: JUMPDEST 0000174b: PUSH1 0x10 0000174d: SLOAD 0000174e: PUSH1 0x01 00001750: PUSH1 0x01 00001752: PUSH1 0xa0 00001754: SHL 00001755: SUB 00001756: AND 00001757: CALLER 00001758: EQ 00001759: PUSH2 0x1792 0000175c: JUMPI 0000175d: PUSH1 0x40 0000175f: DUP1 00001760: MLOAD 00001761: PUSH3 0x461bcd 00001765: PUSH1 0xe5 00001767: SHL 00001768: DUP2 00001769: MSTORE 0000176a: PUSH1 0x20 0000176c: PUSH1 0x04 0000176e: DUP1 0000176f: DUP4 00001770: ADD 00001771: SWAP2 00001772: SWAP1 00001773: SWAP2 00001774: MSTORE 00001775: PUSH1 0x24 00001777: DUP3 00001778: ADD 00001779: MSTORE 0000177a: PUSH4 0x10b3b7bb 0000177f: PUSH1 0xe1 00001781: SHL 00001782: PUSH1 0x44 00001784: DUP3 00001785: ADD 00001786: MSTORE 00001787: SWAP1 00001788: MLOAD 00001789: SWAP1 0000178a: DUP2 0000178b: SWAP1 0000178c: SUB 0000178d: PUSH1 0x64 0000178f: ADD 00001790: SWAP1 00001791: REVERT 00001792: JUMPDEST 00001793: PUSH2 0x2711 00001796: DUP3 00001797: GT 00001798: ISZERO 00001799: PUSH2 0x17a1 0000179c: JUMPI 0000179d: PUSH1 0x00 0000179f: DUP1 000017a0: REVERT 000017a1: JUMPDEST 000017a2: PUSH2 0x2711 000017a5: DUP2 000017a6: GT 000017a7: ISZERO 000017a8: PUSH2 0x17b0 000017ab: JUMPI 000017ac: PUSH1 0x00 000017ae: DUP1 000017af: REVERT 000017b0: JUMPDEST 000017b1: PUSH1 0x01 000017b3: PUSH1 0x01 000017b5: PUSH1 0xa0 000017b7: SHL 000017b8: SUB 000017b9: SWAP1 000017ba: SWAP3 000017bb: AND 000017bc: PUSH1 0x00 000017be: SWAP1 000017bf: DUP2 000017c0: MSTORE 000017c1: PUSH1 0x0b 000017c3: PUSH1 0x20 000017c5: SWAP1 000017c6: DUP2 000017c7: MSTORE 000017c8: PUSH1 0x40 000017ca: DUP1 000017cb: DUP4 000017cc: KECCAK256 000017cd: SWAP4 000017ce: SWAP1 000017cf: SWAP4 000017d0: SSTORE 000017d1: PUSH1 0x0c 000017d3: SWAP1 000017d4: MSTORE 000017d5: KECCAK256 000017d6: SSTORE 000017d7: JUMP 000017d8: JUMPDEST 000017d9: PUSH1 0x10 000017db: SLOAD 000017dc: PUSH1 0x01 000017de: PUSH1 0x01 000017e0: PUSH1 0xa0 000017e2: SHL 000017e3: SUB 000017e4: AND 000017e5: CALLER 000017e6: EQ 000017e7: PUSH2 0x1820 000017ea: JUMPI 000017eb: PUSH1 0x40 000017ed: DUP1 000017ee: MLOAD 000017ef: PUSH3 0x461bcd 000017f3: PUSH1 0xe5 000017f5: SHL 000017f6: DUP2 000017f7: MSTORE 000017f8: PUSH1 0x20 000017fa: PUSH1 0x04 000017fc: DUP1 000017fd: DUP4 000017fe: ADD 000017ff: SWAP2 00001800: SWAP1 00001801: SWAP2 00001802: MSTORE 00001803: PUSH1 0x24 00001805: DUP3 00001806: ADD 00001807: MSTORE 00001808: PUSH4 0x10b3b7bb 0000180d: PUSH1 0xe1 0000180f: SHL 00001810: PUSH1 0x44 00001812: DUP3 00001813: ADD 00001814: MSTORE 00001815: SWAP1 00001816: MLOAD 00001817: SWAP1 00001818: DUP2 00001819: SWAP1 0000181a: SUB 0000181b: PUSH1 0x64 0000181d: ADD 0000181e: SWAP1 0000181f: REVERT 00001820: JUMPDEST 00001821: PUSH1 0x01 00001823: PUSH1 0x01 00001825: PUSH1 0xa0 00001827: SHL 00001828: SUB 00001829: DUP2 0000182a: AND 0000182b: PUSH2 0x1863 0000182e: JUMPI 0000182f: PUSH1 0x40 00001831: DUP1 00001832: MLOAD 00001833: PUSH3 0x461bcd 00001837: PUSH1 0xe5 00001839: SHL 0000183a: DUP2 0000183b: MSTORE 0000183c: PUSH1 0x20 0000183e: PUSH1 0x04 00001840: DUP3 00001841: ADD 00001842: MSTORE 00001843: PUSH1 0x05 00001845: PUSH1 0x24 00001847: DUP3 00001848: ADD 00001849: MSTORE 0000184a: PUSH5 0x10b0b23239 00001850: PUSH1 0xd9 00001852: SHL 00001853: PUSH1 0x44 00001855: DUP3 00001856: ADD 00001857: MSTORE 00001858: SWAP1 00001859: MLOAD 0000185a: SWAP1 0000185b: DUP2 0000185c: SWAP1 0000185d: SUB 0000185e: PUSH1 0x64 00001860: ADD 00001861: SWAP1 00001862: REVERT 00001863: JUMPDEST 00001864: PUSH1 0x11 00001866: DUP1 00001867: SLOAD 00001868: PUSH1 0x01 0000186a: PUSH1 0x01 0000186c: PUSH1 0xa0 0000186e: SHL 0000186f: SUB 00001870: NOT 00001871: AND 00001872: PUSH1 0x01 00001874: PUSH1 0x01 00001876: PUSH1 0xa0 00001878: SHL 00001879: SUB 0000187a: SWAP3 0000187b: SWAP1 0000187c: SWAP3 0000187d: AND 0000187e: SWAP2 0000187f: SWAP1 00001880: SWAP2 00001881: OR 00001882: SWAP1 00001883: SSTORE 00001884: JUMP 00001885: JUMPDEST 00001886: PUSH1 0x10 00001888: SLOAD 00001889: PUSH1 0x01 0000188b: PUSH1 0x01 0000188d: PUSH1 0xa0 0000188f: SHL 00001890: SUB 00001891: AND 00001892: CALLER 00001893: EQ 00001894: PUSH2 0x18cd 00001897: JUMPI 00001898: PUSH1 0x40 0000189a: DUP1 0000189b: MLOAD 0000189c: PUSH3 0x461bcd 000018a0: PUSH1 0xe5 000018a2: SHL 000018a3: DUP2 000018a4: MSTORE 000018a5: PUSH1 0x20 000018a7: PUSH1 0x04 000018a9: DUP1 000018aa: DUP4 000018ab: ADD 000018ac: SWAP2 000018ad: SWAP1 000018ae: SWAP2 000018af: MSTORE 000018b0: PUSH1 0x24 000018b2: DUP3 000018b3: ADD 000018b4: MSTORE 000018b5: PUSH4 0x10b3b7bb 000018ba: PUSH1 0xe1 000018bc: SHL 000018bd: PUSH1 0x44 000018bf: DUP3 000018c0: ADD 000018c1: MSTORE 000018c2: SWAP1 000018c3: MLOAD 000018c4: SWAP1 000018c5: DUP2 000018c6: SWAP1 000018c7: SUB 000018c8: PUSH1 0x64 000018ca: ADD 000018cb: SWAP1 000018cc: REVERT 000018cd: JUMPDEST 000018ce: PUSH1 0x3c 000018d0: DUP4 000018d1: GT 000018d2: ISZERO 000018d3: PUSH2 0x18db 000018d6: JUMPI 000018d7: PUSH1 0x00 000018d9: DUP1 000018da: REVERT 000018db: JUMPDEST 000018dc: PUSH1 0x3c 000018de: DUP3 000018df: GT 000018e0: ISZERO 000018e1: PUSH2 0x18e9 000018e4: JUMPI 000018e5: PUSH1 0x00 000018e7: DUP1 000018e8: REVERT 000018e9: JUMPDEST 000018ea: PUSH1 0x1e 000018ec: DUP2 000018ed: GT 000018ee: ISZERO 000018ef: PUSH2 0x18f7 000018f2: JUMPI 000018f3: PUSH1 0x00 000018f5: DUP1 000018f6: REVERT 000018f7: JUMPDEST 000018f8: DUP2 000018f9: DUP2 000018fa: GT 000018fb: ISZERO 000018fc: PUSH2 0x1904 000018ff: JUMPI 00001900: PUSH1 0x00 00001902: DUP1 00001903: REVERT 00001904: JUMPDEST 00001905: PUSH1 0x3c 00001907: PUSH2 0x1916 0000190a: DUP4 0000190b: DUP4 0000190c: PUSH4 0xffffffff 00001911: PUSH2 0x1c60 00001914: AND 00001915: JUMP 00001916: JUMPDEST 00001917: GT 00001918: ISZERO 00001919: PUSH2 0x1921 0000191c: JUMPI 0000191d: PUSH1 0x00 0000191f: DUP1 00001920: REVERT 00001921: JUMPDEST 00001922: PUSH1 0x08 00001924: SWAP3 00001925: SWAP1 00001926: SWAP3 00001927: SSTORE 00001928: PUSH1 0x09 0000192a: SSTORE 0000192b: PUSH1 0x0a 0000192d: SSTORE 0000192e: JUMP 0000192f: JUMPDEST 00001930: PUSH1 0x12 00001932: SLOAD 00001933: PUSH1 0x00 00001935: SWAP1 00001936: PUSH2 0x1952 00001939: SWAP1 0000193a: PUSH2 0x0bfd 0000193d: PUSH9 0x71d75ab9b920500000 00001947: SELFBALANCE 00001948: PUSH4 0xffffffff 0000194d: PUSH2 0x1c60 00001950: AND 00001951: JUMP 00001952: JUMPDEST 00001953: SWAP1 00001954: POP 00001955: SWAP1 00001956: JUMP 00001957: JUMPDEST 00001958: PUSH1 0x01 0000195a: DUP1 0000195b: SLOAD 0000195c: PUSH1 0x40 0000195e: DUP1 0000195f: MLOAD 00001960: PUSH1 0x20 00001962: PUSH1 0x1f 00001964: PUSH1 0x02 00001966: PUSH1 0x00 00001968: NOT 00001969: PUSH2 0x0100 0000196c: DUP8 0000196d: DUP10 0000196e: AND 0000196f: ISZERO 00001970: MUL 00001971: ADD 00001972: SWAP1 00001973: SWAP6 00001974: AND 00001975: SWAP5 00001976: SWAP1 00001977: SWAP5 00001978: DIV 00001979: SWAP4 0000197a: DUP5 0000197b: ADD 0000197c: DUP2 0000197d: SWAP1 0000197e: DIV 0000197f: DUP2 00001980: MUL 00001981: DUP3 00001982: ADD 00001983: DUP2 00001984: ADD 00001985: SWAP1 00001986: SWAP3 00001987: MSTORE 00001988: DUP3 00001989: DUP2 0000198a: MSTORE 0000198b: PUSH1 0x60 0000198d: SWAP4 0000198e: SWAP1 0000198f: SWAP3 00001990: SWAP1 00001991: SWAP2 00001992: DUP4 00001993: ADD 00001994: DUP3 00001995: DUP3 00001996: DUP1 00001997: ISZERO 00001998: PUSH2 0x0f61 0000199b: JUMPI 0000199c: DUP1 0000199d: PUSH1 0x1f 0000199f: LT 000019a0: PUSH2 0x0f36 000019a3: JUMPI 000019a4: PUSH2 0x0100 000019a7: DUP1 000019a8: DUP4 000019a9: SLOAD 000019aa: DIV 000019ab: MUL 000019ac: DUP4 000019ad: MSTORE 000019ae: SWAP2 000019af: PUSH1 0x20 000019b1: ADD 000019b2: SWAP2 000019b3: PUSH2 0x0f61 000019b6: JUMP 000019b7: JUMPDEST 000019b8: PUSH1 0x00 000019ba: PUSH2 0x0f7f 000019bd: PUSH2 0x19c4 000019c0: PUSH2 0x1e60 000019c3: JUMP 000019c4: JUMPDEST 000019c5: DUP5 000019c6: PUSH2 0x14da 000019c9: DUP6 000019ca: PUSH1 0x40 000019cc: MLOAD 000019cd: DUP1 000019ce: PUSH1 0x60 000019d0: ADD 000019d1: PUSH1 0x40 000019d3: MSTORE 000019d4: DUP1 000019d5: PUSH1 0x25 000019d7: DUP2 000019d8: MSTORE 000019d9: PUSH1 0x20 000019db: ADD 000019dc: PUSH2 0x2604 000019df: PUSH1 0x25 000019e1: SWAP2 000019e2: CODECOPY 000019e3: PUSH1 0x14 000019e5: PUSH1 0x00 000019e7: PUSH2 0x19ee 000019ea: PUSH2 0x1e60 000019ed: JUMP 000019ee: JUMPDEST 000019ef: PUSH1 0x01 000019f1: PUSH1 0x01 000019f3: PUSH1 0xa0 000019f5: SHL 000019f6: SUB 000019f7: SWAP1 000019f8: DUP2 000019f9: AND 000019fa: DUP3 000019fb: MSTORE 000019fc: PUSH1 0x20 000019fe: DUP1 000019ff: DUP4 00001a00: ADD 00001a01: SWAP4 00001a02: SWAP1 00001a03: SWAP4 00001a04: MSTORE 00001a05: PUSH1 0x40 00001a07: SWAP2 00001a08: DUP3 00001a09: ADD 00001a0a: PUSH1 0x00 00001a0c: SWAP1 00001a0d: DUP2 00001a0e: KECCAK256 00001a0f: SWAP2 00001a10: DUP14 00001a11: AND 00001a12: DUP2 00001a13: MSTORE 00001a14: SWAP3 00001a15: MSTORE 00001a16: SWAP1 00001a17: KECCAK256 00001a18: SLOAD 00001a19: SWAP2 00001a1a: SWAP1 00001a1b: PUSH4 0xffffffff 00001a20: PUSH2 0x2361 00001a23: AND 00001a24: JUMP 00001a25: JUMPDEST 00001a26: PUSH1 0x00 00001a28: PUSH2 0x0f7f 00001a2b: PUSH2 0x1a32 00001a2e: PUSH2 0x1e60 00001a31: JUMP 00001a32: JUMPDEST 00001a33: DUP5 00001a34: DUP5 00001a35: PUSH2 0x2170 00001a38: JUMP 00001a39: JUMPDEST 00001a3a: PUSH1 0x09 00001a3c: SLOAD 00001a3d: DUP2 00001a3e: JUMP 00001a3f: JUMPDEST 00001a40: PUSH1 0x02 00001a42: SLOAD 00001a43: PUSH2 0x0100 00001a46: SWAP1 00001a47: DIV 00001a48: PUSH1 0x01 00001a4a: PUSH1 0x01 00001a4c: PUSH1 0xa0 00001a4e: SHL 00001a4f: SUB 00001a50: AND 00001a51: DUP2 00001a52: JUMP 00001a53: JUMPDEST 00001a54: PUSH1 0x0f 00001a56: PUSH1 0x20 00001a58: MSTORE 00001a59: PUSH1 0x00 00001a5b: SWAP1 00001a5c: DUP2 00001a5d: MSTORE 00001a5e: PUSH1 0x40 00001a60: SWAP1 00001a61: KECCAK256 00001a62: SLOAD 00001a63: DUP2 00001a64: JUMP 00001a65: JUMPDEST 00001a66: PUSH1 0x11 00001a68: SLOAD 00001a69: PUSH1 0x01 00001a6b: PUSH1 0x01 00001a6d: PUSH1 0xa0 00001a6f: SHL 00001a70: SUB 00001a71: AND 00001a72: CALLER 00001a73: EQ 00001a74: PUSH2 0x1ab0 00001a77: JUMPI 00001a78: PUSH1 0x40 00001a7a: DUP1 00001a7b: MLOAD 00001a7c: PUSH3 0x461bcd 00001a80: PUSH1 0xe5 00001a82: SHL 00001a83: DUP2 00001a84: MSTORE 00001a85: PUSH1 0x20 00001a87: PUSH1 0x04 00001a89: DUP3 00001a8a: ADD 00001a8b: MSTORE 00001a8c: PUSH1 0x09 00001a8e: PUSH1 0x24 00001a90: DUP3 00001a91: ADD 00001a92: MSTORE 00001a93: PUSH9 0x217472656173757279 00001a9d: PUSH1 0xb8 00001a9f: SHL 00001aa0: PUSH1 0x44 00001aa2: DUP3 00001aa3: ADD 00001aa4: MSTORE 00001aa5: SWAP1 00001aa6: MLOAD 00001aa7: SWAP1 00001aa8: DUP2 00001aa9: SWAP1 00001aaa: SUB 00001aab: PUSH1 0x64 00001aad: ADD 00001aae: SWAP1 00001aaf: REVERT 00001ab0: JUMPDEST 00001ab1: PUSH1 0x12 00001ab3: SLOAD 00001ab4: DUP2 00001ab5: GT 00001ab6: ISZERO 00001ab7: PUSH2 0x1abf 00001aba: JUMPI 00001abb: PUSH1 0x00 00001abd: DUP1 00001abe: REVERT 00001abf: JUMPDEST 00001ac0: PUSH1 0x12 00001ac2: SLOAD 00001ac3: PUSH2 0x1ad2 00001ac6: SWAP1 00001ac7: DUP3 00001ac8: PUSH4 0xffffffff 00001acd: PUSH2 0x1cc1 00001ad0: AND 00001ad1: JUMP 00001ad2: JUMPDEST 00001ad3: PUSH1 0x12 00001ad5: SSTORE 00001ad6: PUSH1 0x11 00001ad8: SLOAD 00001ad9: PUSH1 0x40 00001adb: MLOAD 00001adc: PUSH1 0x01 00001ade: PUSH1 0x01 00001ae0: PUSH1 0xa0 00001ae2: SHL 00001ae3: SUB 00001ae4: SWAP1 00001ae5: SWAP2 00001ae6: AND 00001ae7: SWAP1 00001ae8: DUP2 00001ae9: SWAP1 00001aea: DUP4 00001aeb: ISZERO 00001aec: PUSH2 0x08fc 00001aef: MUL 00001af0: SWAP1 00001af1: DUP5 00001af2: SWAP1 00001af3: PUSH1 0x00 00001af5: DUP2 00001af6: DUP2 00001af7: DUP2 00001af8: DUP6 00001af9: DUP9 00001afa: DUP9 00001afb: CALL 00001afc: SWAP4 00001afd: POP 00001afe: POP 00001aff: POP 00001b00: POP 00001b01: ISZERO 00001b02: DUP1 00001b03: ISZERO 00001b04: PUSH2 0x1b11 00001b07: JUMPI 00001b08: RETURNDATASIZE 00001b09: PUSH1 0x00 00001b0b: DUP1 00001b0c: RETURNDATACOPY 00001b0d: RETURNDATASIZE 00001b0e: PUSH1 0x00 00001b10: REVERT 00001b11: JUMPDEST 00001b12: POP 00001b13: POP 00001b14: POP 00001b15: JUMP 00001b16: JUMPDEST 00001b17: PUSH1 0x10 00001b19: SLOAD 00001b1a: PUSH1 0x01 00001b1c: PUSH1 0x01 00001b1e: PUSH1 0xa0 00001b20: SHL 00001b21: SUB 00001b22: AND 00001b23: CALLER 00001b24: EQ 00001b25: PUSH2 0x1b5e 00001b28: JUMPI 00001b29: PUSH1 0x40 00001b2b: DUP1 00001b2c: MLOAD 00001b2d: PUSH3 0x461bcd 00001b31: PUSH1 0xe5 00001b33: SHL 00001b34: DUP2 00001b35: MSTORE 00001b36: PUSH1 0x20 00001b38: PUSH1 0x04 00001b3a: DUP1 00001b3b: DUP4 00001b3c: ADD 00001b3d: SWAP2 00001b3e: SWAP1 00001b3f: SWAP2 00001b40: MSTORE 00001b41: PUSH1 0x24 00001b43: DUP3 00001b44: ADD 00001b45: MSTORE 00001b46: PUSH4 0x10b3b7bb 00001b4b: PUSH1 0xe1 00001b4d: SHL 00001b4e: PUSH1 0x44 00001b50: DUP3 00001b51: ADD 00001b52: MSTORE 00001b53: SWAP1 00001b54: MLOAD 00001b55: SWAP1 00001b56: DUP2 00001b57: SWAP1 00001b58: SUB 00001b59: PUSH1 0x64 00001b5b: ADD 00001b5c: SWAP1 00001b5d: REVERT 00001b5e: JUMPDEST 00001b5f: PUSH1 0x01 00001b61: PUSH1 0x01 00001b63: PUSH1 0xa0 00001b65: SHL 00001b66: SUB 00001b67: SWAP1 00001b68: SWAP2 00001b69: AND 00001b6a: PUSH1 0x00 00001b6c: SWAP1 00001b6d: DUP2 00001b6e: MSTORE 00001b6f: PUSH1 0x0f 00001b71: PUSH1 0x20 00001b73: MSTORE 00001b74: PUSH1 0x40 00001b76: SWAP1 00001b77: KECCAK256 00001b78: SSTORE 00001b79: JUMP 00001b7a: JUMPDEST 00001b7b: PUSH1 0x0c 00001b7d: PUSH1 0x20 00001b7f: MSTORE 00001b80: PUSH1 0x00 00001b82: SWAP1 00001b83: DUP2 00001b84: MSTORE 00001b85: PUSH1 0x40 00001b87: SWAP1 00001b88: KECCAK256 00001b89: SLOAD 00001b8a: DUP2 00001b8b: JUMP 00001b8c: JUMPDEST 00001b8d: PUSH1 0x10 00001b8f: SLOAD 00001b90: PUSH1 0x01 00001b92: PUSH1 0x01 00001b94: PUSH1 0xa0 00001b96: SHL 00001b97: SUB 00001b98: AND 00001b99: DUP2 00001b9a: JUMP 00001b9b: JUMPDEST 00001b9c: PUSH1 0x08 00001b9e: SLOAD 00001b9f: DUP2 00001ba0: JUMP 00001ba1: JUMPDEST 00001ba2: PUSH1 0x0d 00001ba4: SLOAD 00001ba5: DUP2 00001ba6: JUMP 00001ba7: JUMPDEST 00001ba8: PUSH1 0x01 00001baa: PUSH1 0x01 00001bac: PUSH1 0xa0 00001bae: SHL 00001baf: SUB 00001bb0: SWAP2 00001bb1: DUP3 00001bb2: AND 00001bb3: PUSH1 0x00 00001bb5: SWAP1 00001bb6: DUP2 00001bb7: MSTORE 00001bb8: PUSH1 0x14 00001bba: PUSH1 0x20 00001bbc: SWAP1 00001bbd: DUP2 00001bbe: MSTORE 00001bbf: PUSH1 0x40 00001bc1: DUP1 00001bc2: DUP4 00001bc3: KECCAK256 00001bc4: SWAP4 00001bc5: SWAP1 00001bc6: SWAP5 00001bc7: AND 00001bc8: DUP3 00001bc9: MSTORE 00001bca: SWAP2 00001bcb: SWAP1 00001bcc: SWAP2 00001bcd: MSTORE 00001bce: KECCAK256 00001bcf: SLOAD 00001bd0: SWAP1 00001bd1: JUMP 00001bd2: JUMPDEST 00001bd3: PUSH1 0x05 00001bd5: SLOAD 00001bd6: PUSH1 0x01 00001bd8: PUSH1 0x01 00001bda: PUSH1 0xa0 00001bdc: SHL 00001bdd: SUB 00001bde: AND 00001bdf: DUP2 00001be0: JUMP 00001be1: JUMPDEST 00001be2: PUSH20 0x1111111111111111111111111111111111111111 00001bf7: PUSH1 0x00 00001bf9: MSTORE 00001bfa: PUSH1 0x13 00001bfc: PUSH1 0x20 00001bfe: MSTORE 00001bff: PUSH1 0x00 00001c01: DUP1 00001c02: MLOAD 00001c03: PUSH1 0x20 00001c05: PUSH2 0x25be 00001c08: DUP4 00001c09: CODECOPY 00001c0a: DUP2 00001c0b: MLOAD 00001c0c: SWAP2 00001c0d: MSTORE 00001c0e: SLOAD 00001c0f: SWAP1 00001c10: JUMP 00001c11: JUMPDEST 00001c12: PUSH9 0x71d75ab9b920500000 00001c1c: DUP2 00001c1d: JUMP 00001c1e: JUMPDEST 00001c1f: PUSH1 0x12 00001c21: SLOAD 00001c22: DUP2 00001c23: JUMP 00001c24: JUMPDEST 00001c25: PUSH1 0x00 00001c27: DUP2 00001c28: EXTCODEHASH 00001c29: PUSH32 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 00001c4a: DUP2 00001c4b: ISZERO 00001c4c: DUP1 00001c4d: ISZERO 00001c4e: SWAP1 00001c4f: PUSH2 0x1c58 00001c52: JUMPI 00001c53: POP 00001c54: DUP1 00001c55: DUP3 00001c56: EQ 00001c57: ISZERO 00001c58: JUMPDEST 00001c59: SWAP5 00001c5a: SWAP4 00001c5b: POP 00001c5c: POP 00001c5d: POP 00001c5e: POP 00001c5f: JUMP 00001c60: JUMPDEST 00001c61: PUSH1 0x00 00001c63: DUP3 00001c64: DUP3 00001c65: ADD 00001c66: DUP4 00001c67: DUP2 00001c68: LT 00001c69: ISZERO 00001c6a: PUSH2 0x1cba 00001c6d: JUMPI 00001c6e: PUSH1 0x40 00001c70: DUP1 00001c71: MLOAD 00001c72: PUSH3 0x461bcd 00001c76: PUSH1 0xe5 00001c78: SHL 00001c79: DUP2 00001c7a: MSTORE 00001c7b: PUSH1 0x20 00001c7d: PUSH1 0x04 00001c7f: DUP3 00001c80: ADD 00001c81: MSTORE 00001c82: PUSH1 0x1b 00001c84: PUSH1 0x24 00001c86: DUP3 00001c87: ADD 00001c88: MSTORE 00001c89: PUSH32 0x536166654d6174683a206164646974696f6e206f766572666c6f770000000000 00001caa: PUSH1 0x44 00001cac: DUP3 00001cad: ADD 00001cae: MSTORE 00001caf: SWAP1 00001cb0: MLOAD 00001cb1: SWAP1 00001cb2: DUP2 00001cb3: SWAP1 00001cb4: SUB 00001cb5: PUSH1 0x64 00001cb7: ADD 00001cb8: SWAP1 00001cb9: REVERT 00001cba: JUMPDEST 00001cbb: SWAP4 00001cbc: SWAP3 00001cbd: POP 00001cbe: POP 00001cbf: POP 00001cc0: JUMP 00001cc1: JUMPDEST 00001cc2: PUSH1 0x00 00001cc4: PUSH2 0x1cba 00001cc7: DUP4 00001cc8: DUP4 00001cc9: PUSH1 0x40 00001ccb: MLOAD 00001ccc: DUP1 00001ccd: PUSH1 0x40 00001ccf: ADD 00001cd0: PUSH1 0x40 00001cd2: MSTORE 00001cd3: DUP1 00001cd4: PUSH1 0x1e 00001cd6: DUP2 00001cd7: MSTORE 00001cd8: PUSH1 0x20 00001cda: ADD 00001cdb: PUSH32 0x536166654d6174683a207375627472616374696f6e206f766572666c6f770000 00001cfc: DUP2 00001cfd: MSTORE 00001cfe: POP 00001cff: PUSH2 0x2361 00001d02: JUMP 00001d03: JUMPDEST 00001d04: PUSH1 0x00 00001d06: DUP3 00001d07: PUSH2 0x1d12 00001d0a: JUMPI 00001d0b: POP 00001d0c: PUSH1 0x00 00001d0e: PUSH2 0x0f83 00001d11: JUMP 00001d12: JUMPDEST 00001d13: DUP3 00001d14: DUP3 00001d15: MUL 00001d16: DUP3 00001d17: DUP5 00001d18: DUP3 00001d19: DUP2 00001d1a: PUSH2 0x1d1f 00001d1d: JUMPI 00001d1e: INVALID 00001d1f: JUMPDEST 00001d20: DIV 00001d21: EQ 00001d22: PUSH2 0x1cba 00001d25: JUMPI 00001d26: PUSH1 0x40 00001d28: MLOAD 00001d29: PUSH3 0x461bcd 00001d2d: PUSH1 0xe5 00001d2f: SHL 00001d30: DUP2 00001d31: MSTORE 00001d32: PUSH1 0x04 00001d34: ADD 00001d35: DUP1 00001d36: DUP1 00001d37: PUSH1 0x20 00001d39: ADD 00001d3a: DUP3 00001d3b: DUP2 00001d3c: SUB 00001d3d: DUP3 00001d3e: MSTORE 00001d3f: PUSH1 0x21 00001d41: DUP2 00001d42: MSTORE 00001d43: PUSH1 0x20 00001d45: ADD 00001d46: DUP1 00001d47: PUSH2 0x24eb 00001d4a: PUSH1 0x21 00001d4c: SWAP2 00001d4d: CODECOPY 00001d4e: PUSH1 0x40 00001d50: ADD 00001d51: SWAP2 00001d52: POP 00001d53: POP 00001d54: PUSH1 0x40 00001d56: MLOAD 00001d57: DUP1 00001d58: SWAP2 00001d59: SUB 00001d5a: SWAP1 00001d5b: REVERT 00001d5c: JUMPDEST 00001d5d: PUSH1 0x00 00001d5f: PUSH2 0x1cba 00001d62: DUP4 00001d63: DUP4 00001d64: PUSH1 0x40 00001d66: MLOAD 00001d67: DUP1 00001d68: PUSH1 0x40 00001d6a: ADD 00001d6b: PUSH1 0x40 00001d6d: MSTORE 00001d6e: DUP1 00001d6f: PUSH1 0x1a 00001d71: DUP2 00001d72: MSTORE 00001d73: PUSH1 0x20 00001d75: ADD 00001d76: PUSH32 0x536166654d6174683a206469766973696f6e206279207a65726f000000000000 00001d97: DUP2 00001d98: MSTORE 00001d99: POP 00001d9a: PUSH2 0x23f8 00001d9d: JUMP 00001d9e: JUMPDEST 00001d9f: PUSH2 0x1de1 00001da2: DUP2 00001da3: PUSH1 0x40 00001da5: MLOAD 00001da6: DUP1 00001da7: PUSH1 0x60 00001da9: ADD 00001daa: PUSH1 0x40 00001dac: MSTORE 00001dad: DUP1 00001dae: PUSH1 0x26 00001db0: DUP2 00001db1: MSTORE 00001db2: PUSH1 0x20 00001db4: ADD 00001db5: PUSH2 0x24c5 00001db8: PUSH1 0x26 00001dba: SWAP2 00001dbb: CODECOPY 00001dbc: PUSH1 0x01 00001dbe: PUSH1 0x01 00001dc0: PUSH1 0xa0 00001dc2: SHL 00001dc3: SUB 00001dc4: DUP7 00001dc5: AND 00001dc6: PUSH1 0x00 00001dc8: SWAP1 00001dc9: DUP2 00001dca: MSTORE 00001dcb: PUSH1 0x13 00001dcd: PUSH1 0x20 00001dcf: MSTORE 00001dd0: PUSH1 0x40 00001dd2: SWAP1 00001dd3: KECCAK256 00001dd4: SLOAD 00001dd5: SWAP2 00001dd6: SWAP1 00001dd7: PUSH4 0xffffffff 00001ddc: PUSH2 0x2361 00001ddf: AND 00001de0: JUMP 00001de1: JUMPDEST 00001de2: PUSH1 0x01 00001de4: PUSH1 0x01 00001de6: PUSH1 0xa0 00001de8: SHL 00001de9: SUB 00001dea: DUP1 00001deb: DUP6 00001dec: AND 00001ded: PUSH1 0x00 00001def: SWAP1 00001df0: DUP2 00001df1: MSTORE 00001df2: PUSH1 0x13 00001df4: PUSH1 0x20 00001df6: MSTORE 00001df7: PUSH1 0x40 00001df9: DUP1 00001dfa: DUP3 00001dfb: KECCAK256 00001dfc: SWAP4 00001dfd: SWAP1 00001dfe: SWAP4 00001dff: SSTORE 00001e00: SWAP1 00001e01: DUP5 00001e02: AND 00001e03: DUP2 00001e04: MSTORE 00001e05: KECCAK256 00001e06: SLOAD 00001e07: PUSH2 0x1e16 00001e0a: SWAP1 00001e0b: DUP3 00001e0c: PUSH4 0xffffffff 00001e11: PUSH2 0x1c60 00001e14: AND 00001e15: JUMP 00001e16: JUMPDEST 00001e17: PUSH1 0x01 00001e19: PUSH1 0x01 00001e1b: PUSH1 0xa0 00001e1d: SHL 00001e1e: SUB 00001e1f: DUP1 00001e20: DUP5 00001e21: AND 00001e22: PUSH1 0x00 00001e24: DUP2 00001e25: DUP2 00001e26: MSTORE 00001e27: PUSH1 0x13 00001e29: PUSH1 0x20 00001e2b: SWAP1 00001e2c: DUP2 00001e2d: MSTORE 00001e2e: PUSH1 0x40 00001e30: SWAP2 00001e31: DUP3 00001e32: SWAP1 00001e33: KECCAK256 00001e34: SWAP5 00001e35: SWAP1 00001e36: SWAP5 00001e37: SSTORE 00001e38: DUP1 00001e39: MLOAD 00001e3a: DUP6 00001e3b: DUP2 00001e3c: MSTORE 00001e3d: SWAP1 00001e3e: MLOAD 00001e3f: SWAP2 00001e40: SWAP4 00001e41: SWAP3 00001e42: DUP8 00001e43: AND 00001e44: SWAP3 00001e45: PUSH1 0x00 00001e47: DUP1 00001e48: MLOAD 00001e49: PUSH1 0x20 00001e4b: PUSH2 0x2534 00001e4e: DUP4 00001e4f: CODECOPY 00001e50: DUP2 00001e51: MLOAD 00001e52: SWAP2 00001e53: MSTORE 00001e54: SWAP3 00001e55: SWAP2 00001e56: DUP3 00001e57: SWAP1 00001e58: SUB 00001e59: ADD 00001e5a: SWAP1 00001e5b: LOG3 00001e5c: POP 00001e5d: POP 00001e5e: POP 00001e5f: JUMP 00001e60: JUMPDEST 00001e61: CALLER 00001e62: SWAP1 00001e63: JUMP 00001e64: JUMPDEST 00001e65: PUSH1 0x01 00001e67: PUSH1 0x01 00001e69: PUSH1 0xa0 00001e6b: SHL 00001e6c: SUB 00001e6d: DUP4 00001e6e: AND 00001e6f: PUSH2 0x1ea9 00001e72: JUMPI 00001e73: PUSH1 0x40 00001e75: MLOAD 00001e76: PUSH3 0x461bcd 00001e7a: PUSH1 0xe5 00001e7c: SHL 00001e7d: DUP2 00001e7e: MSTORE 00001e7f: PUSH1 0x04 00001e81: ADD 00001e82: DUP1 00001e83: DUP1 00001e84: PUSH1 0x20 00001e86: ADD 00001e87: DUP3 00001e88: DUP2 00001e89: SUB 00001e8a: DUP3 00001e8b: MSTORE 00001e8c: PUSH1 0x24 00001e8e: DUP2 00001e8f: MSTORE 00001e90: PUSH1 0x20 00001e92: ADD 00001e93: DUP1 00001e94: PUSH2 0x259a 00001e97: PUSH1 0x24 00001e99: SWAP2 00001e9a: CODECOPY 00001e9b: PUSH1 0x40 00001e9d: ADD 00001e9e: SWAP2 00001e9f: POP 00001ea0: POP 00001ea1: PUSH1 0x40 00001ea3: MLOAD 00001ea4: DUP1 00001ea5: SWAP2 00001ea6: SUB 00001ea7: SWAP1 00001ea8: REVERT 00001ea9: JUMPDEST 00001eaa: PUSH1 0x01 00001eac: PUSH1 0x01 00001eae: PUSH1 0xa0 00001eb0: SHL 00001eb1: SUB 00001eb2: DUP3 00001eb3: AND 00001eb4: PUSH2 0x1eee 00001eb7: JUMPI 00001eb8: PUSH1 0x40 00001eba: MLOAD 00001ebb: PUSH3 0x461bcd 00001ebf: PUSH1 0xe5 00001ec1: SHL 00001ec2: DUP2 00001ec3: MSTORE 00001ec4: PUSH1 0x04 00001ec6: ADD 00001ec7: DUP1 00001ec8: DUP1 00001ec9: PUSH1 0x20 00001ecb: ADD 00001ecc: DUP3 00001ecd: DUP2 00001ece: SUB 00001ecf: DUP3 00001ed0: MSTORE 00001ed1: PUSH1 0x22 00001ed3: DUP2 00001ed4: MSTORE 00001ed5: PUSH1 0x20 00001ed7: ADD 00001ed8: DUP1 00001ed9: PUSH2 0x24a3 00001edc: PUSH1 0x22 00001ede: SWAP2 00001edf: CODECOPY 00001ee0: PUSH1 0x40 00001ee2: ADD 00001ee3: SWAP2 00001ee4: POP 00001ee5: POP 00001ee6: PUSH1 0x40 00001ee8: MLOAD 00001ee9: DUP1 00001eea: SWAP2 00001eeb: SUB 00001eec: SWAP1 00001eed: REVERT 00001eee: JUMPDEST 00001eef: PUSH1 0x01 00001ef1: PUSH1 0x01 00001ef3: PUSH1 0xa0 00001ef5: SHL 00001ef6: SUB 00001ef7: DUP1 00001ef8: DUP5 00001ef9: AND 00001efa: PUSH1 0x00 00001efc: DUP2 00001efd: DUP2 00001efe: MSTORE 00001eff: PUSH1 0x14 00001f01: PUSH1 0x20 00001f03: SWAP1 00001f04: DUP2 00001f05: MSTORE 00001f06: PUSH1 0x40 00001f08: DUP1 00001f09: DUP4 00001f0a: KECCAK256 00001f0b: SWAP5 00001f0c: DUP8 00001f0d: AND 00001f0e: DUP1 00001f0f: DUP5 00001f10: MSTORE 00001f11: SWAP5 00001f12: DUP3 00001f13: MSTORE 00001f14: SWAP2 00001f15: DUP3 00001f16: SWAP1 00001f17: KECCAK256 00001f18: DUP6 00001f19: SWAP1 00001f1a: SSTORE 00001f1b: DUP2 00001f1c: MLOAD 00001f1d: DUP6 00001f1e: DUP2 00001f1f: MSTORE 00001f20: SWAP2 00001f21: MLOAD 00001f22: PUSH32 0x8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925 00001f43: SWAP3 00001f44: DUP2 00001f45: SWAP1 00001f46: SUB 00001f47: SWAP1 00001f48: SWAP2 00001f49: ADD 00001f4a: SWAP1 00001f4b: LOG3 00001f4c: POP 00001f4d: POP 00001f4e: POP 00001f4f: JUMP 00001f50: JUMPDEST 00001f51: PUSH1 0x01 00001f53: PUSH1 0x01 00001f55: PUSH1 0xa0 00001f57: SHL 00001f58: SUB 00001f59: DUP3 00001f5a: AND 00001f5b: PUSH2 0x1f95 00001f5e: JUMPI 00001f5f: PUSH1 0x40 00001f61: MLOAD 00001f62: PUSH3 0x461bcd 00001f66: PUSH1 0xe5 00001f68: SHL 00001f69: DUP2 00001f6a: MSTORE 00001f6b: PUSH1 0x04 00001f6d: ADD 00001f6e: DUP1 00001f6f: DUP1 00001f70: PUSH1 0x20 00001f72: ADD 00001f73: DUP3 00001f74: DUP2 00001f75: SUB 00001f76: DUP3 00001f77: MSTORE 00001f78: PUSH1 0x21 00001f7a: DUP2 00001f7b: MSTORE 00001f7c: PUSH1 0x20 00001f7e: ADD 00001f7f: DUP1 00001f80: PUSH2 0x2554 00001f83: PUSH1 0x21 00001f85: SWAP2 00001f86: CODECOPY 00001f87: PUSH1 0x40 00001f89: ADD 00001f8a: SWAP2 00001f8b: POP 00001f8c: POP 00001f8d: PUSH1 0x40 00001f8f: MLOAD 00001f90: DUP1 00001f91: SWAP2 00001f92: SUB 00001f93: SWAP1 00001f94: REVERT 00001f95: JUMPDEST 00001f96: DUP1 00001f97: PUSH2 0x1f9f 00001f9a: JUMPI 00001f9b: PUSH2 0x216c 00001f9e: JUMP 00001f9f: JUMPDEST 00001fa0: PUSH1 0x01 00001fa2: PUSH1 0x01 00001fa4: PUSH1 0xa0 00001fa6: SHL 00001fa7: SUB 00001fa8: DUP3 00001fa9: AND 00001faa: PUSH1 0x00 00001fac: SWAP1 00001fad: DUP2 00001fae: MSTORE 00001faf: PUSH1 0x13 00001fb1: PUSH1 0x20 00001fb3: MSTORE 00001fb4: PUSH1 0x40 00001fb6: SWAP1 00001fb7: KECCAK256 00001fb8: SLOAD 00001fb9: PUSH2 0x1fc1 00001fbc: JUMPI 00001fbd: PUSH2 0x216c 00001fc0: JUMP 00001fc1: JUMPDEST 00001fc2: PUSH1 0x01 00001fc4: PUSH1 0x01 00001fc6: PUSH1 0xa0 00001fc8: SHL 00001fc9: SUB 00001fca: DUP3 00001fcb: AND 00001fcc: PUSH20 0x1111111111111111111111111111111111111111 00001fe1: EQ 00001fe2: PUSH2 0x216c 00001fe5: JUMPI 00001fe6: PUSH2 0x2028 00001fe9: DUP2 00001fea: PUSH1 0x40 00001fec: MLOAD 00001fed: DUP1 00001fee: PUSH1 0x60 00001ff0: ADD 00001ff1: PUSH1 0x40 00001ff3: MSTORE 00001ff4: DUP1 00001ff5: PUSH1 0x22 00001ff7: DUP2 00001ff8: MSTORE 00001ff9: PUSH1 0x20 00001ffb: ADD 00001ffc: PUSH2 0x2481 00001fff: PUSH1 0x22 00002001: SWAP2 00002002: CODECOPY 00002003: PUSH1 0x01 00002005: PUSH1 0x01 00002007: PUSH1 0xa0 00002009: SHL 0000200a: SUB 0000200b: DUP6 0000200c: AND 0000200d: PUSH1 0x00 0000200f: SWAP1 00002010: DUP2 00002011: MSTORE 00002012: PUSH1 0x13 00002014: PUSH1 0x20 00002016: MSTORE 00002017: PUSH1 0x40 00002019: SWAP1 0000201a: KECCAK256 0000201b: SLOAD 0000201c: SWAP2 0000201d: SWAP1 0000201e: PUSH4 0xffffffff 00002023: PUSH2 0x2361 00002026: AND 00002027: JUMP 00002028: JUMPDEST 00002029: PUSH1 0x01 0000202b: PUSH1 0x01 0000202d: PUSH1 0xa0 0000202f: SHL 00002030: SUB 00002031: DUP4 00002032: AND 00002033: PUSH1 0x00 00002035: DUP2 00002036: DUP2 00002037: MSTORE 00002038: PUSH1 0x13 0000203a: PUSH1 0x20 0000203c: SWAP1 0000203d: DUP2 0000203e: MSTORE 0000203f: PUSH1 0x40 00002041: DUP1 00002042: DUP4 00002043: KECCAK256 00002044: SWAP5 00002045: SWAP1 00002046: SWAP5 00002047: SSTORE 00002048: DUP4 00002049: MLOAD 0000204a: DUP6 0000204b: DUP2 0000204c: MSTORE 0000204d: SWAP4 0000204e: MLOAD 0000204f: SWAP2 00002050: SWAP4 00002051: PUSH1 0x00 00002053: DUP1 00002054: MLOAD 00002055: PUSH1 0x20 00002057: PUSH2 0x2534 0000205a: DUP4 0000205b: CODECOPY 0000205c: DUP2 0000205d: MLOAD 0000205e: SWAP2 0000205f: MSTORE 00002060: SWAP3 00002061: SWAP1 00002062: DUP2 00002063: SWAP1 00002064: SUB 00002065: SWAP1 00002066: SWAP2 00002067: ADD 00002068: SWAP1 00002069: LOG3 0000206a: PUSH20 0x1111111111111111111111111111111111111111 0000207f: PUSH1 0x00 00002081: MSTORE 00002082: PUSH1 0x13 00002084: PUSH1 0x20 00002086: MSTORE 00002087: PUSH1 0x00 00002089: DUP1 0000208a: MLOAD 0000208b: PUSH1 0x20 0000208d: PUSH2 0x25be 00002090: DUP4 00002091: CODECOPY 00002092: DUP2 00002093: MLOAD 00002094: SWAP2 00002095: MSTORE 00002096: SLOAD 00002097: PUSH1 0x15 00002099: SLOAD 0000209a: DUP2 0000209b: LT 0000209c: ISZERO 0000209d: PUSH2 0x2154 000020a0: JUMPI 000020a1: PUSH1 0x00 000020a3: PUSH2 0x20ca 000020a6: PUSH2 0x20ba 000020a9: DUP4 000020aa: PUSH1 0x15 000020ac: SLOAD 000020ad: PUSH2 0x1cc1 000020b0: SWAP1 000020b1: SWAP2 000020b2: SWAP1 000020b3: PUSH4 0xffffffff 000020b8: AND 000020b9: JUMP 000020ba: JUMPDEST 000020bb: PUSH2 0x0c76 000020be: DUP5 000020bf: DUP7 000020c0: PUSH4 0xffffffff 000020c5: PUSH2 0x1d03 000020c8: AND 000020c9: JUMP 000020ca: JUMPDEST 000020cb: SWAP1 000020cc: POP 000020cd: PUSH2 0x20dc 000020d0: DUP3 000020d1: DUP3 000020d2: PUSH4 0xffffffff 000020d7: PUSH2 0x1cc1 000020da: AND 000020db: JUMP 000020dc: JUMPDEST 000020dd: PUSH20 0x1111111111111111111111111111111111111111 000020f2: PUSH1 0x00 000020f4: DUP2 000020f5: DUP2 000020f6: MSTORE 000020f7: PUSH1 0x13 000020f9: PUSH1 0x20 000020fb: SWAP1 000020fc: DUP2 000020fd: MSTORE 000020fe: PUSH1 0x00 00002100: DUP1 00002101: MLOAD 00002102: PUSH1 0x20 00002104: PUSH2 0x25be 00002107: DUP4 00002108: CODECOPY 00002109: DUP2 0000210a: MLOAD 0000210b: SWAP2 0000210c: MSTORE 0000210d: SWAP4 0000210e: SWAP1 0000210f: SWAP4 00002110: SSTORE 00002111: PUSH1 0x40 00002113: DUP1 00002114: MLOAD 00002115: DUP6 00002116: DUP2 00002117: MSTORE 00002118: SWAP1 00002119: MLOAD 0000211a: SWAP2 0000211b: SWAP4 0000211c: PUSH1 0x00 0000211e: DUP1 0000211f: MLOAD 00002120: PUSH1 0x20 00002122: PUSH2 0x2534 00002125: DUP4 00002126: CODECOPY 00002127: DUP2 00002128: MLOAD 00002129: SWAP2 0000212a: MSTORE 0000212b: SWAP3 0000212c: SWAP2 0000212d: DUP3 0000212e: SWAP1 0000212f: SUB 00002130: ADD 00002131: SWAP1 00002132: LOG3 00002133: PUSH2 0x214b 00002136: DUP2 00002137: PUSH2 0x0bfd 0000213a: DUP6 0000213b: PUSH1 0x15 0000213d: SLOAD 0000213e: PUSH2 0x1cc1 00002141: SWAP1 00002142: SWAP2 00002143: SWAP1 00002144: PUSH4 0xffffffff 00002149: AND 0000214a: JUMP 0000214b: JUMPDEST 0000214c: PUSH1 0x15 0000214e: SSTORE 0000214f: POP 00002150: PUSH2 0x1b11 00002153: JUMP 00002154: JUMPDEST 00002155: PUSH1 0x15 00002157: SLOAD 00002158: PUSH2 0x2167 0000215b: SWAP1 0000215c: DUP4 0000215d: PUSH4 0xffffffff 00002162: PUSH2 0x1cc1 00002165: AND 00002166: JUMP 00002167: JUMPDEST 00002168: PUSH1 0x15 0000216a: SSTORE 0000216b: POP 0000216c: JUMPDEST 0000216d: POP 0000216e: POP 0000216f: JUMP 00002170: JUMPDEST 00002171: PUSH1 0x01 00002173: PUSH1 0x01 00002175: PUSH1 0xa0 00002177: SHL 00002178: SUB 00002179: DUP4 0000217a: AND 0000217b: PUSH2 0x21b5 0000217e: JUMPI 0000217f: PUSH1 0x40 00002181: MLOAD 00002182: PUSH3 0x461bcd 00002186: PUSH1 0xe5 00002188: SHL 00002189: DUP2 0000218a: MSTORE 0000218b: PUSH1 0x04 0000218d: ADD 0000218e: DUP1 0000218f: DUP1 00002190: PUSH1 0x20 00002192: ADD 00002193: DUP3 00002194: DUP2 00002195: SUB 00002196: DUP3 00002197: MSTORE 00002198: PUSH1 0x25 0000219a: DUP2 0000219b: MSTORE 0000219c: PUSH1 0x20 0000219e: ADD 0000219f: DUP1 000021a0: PUSH2 0x2575 000021a3: PUSH1 0x25 000021a5: SWAP2 000021a6: CODECOPY 000021a7: PUSH1 0x40 000021a9: ADD 000021aa: SWAP2 000021ab: POP 000021ac: POP 000021ad: PUSH1 0x40 000021af: MLOAD 000021b0: DUP1 000021b1: SWAP2 000021b2: SUB 000021b3: SWAP1 000021b4: REVERT 000021b5: JUMPDEST 000021b6: PUSH1 0x01 000021b8: PUSH1 0x01 000021ba: PUSH1 0xa0 000021bc: SHL 000021bd: SUB 000021be: DUP3 000021bf: AND 000021c0: PUSH2 0x21fa 000021c3: JUMPI 000021c4: PUSH1 0x40 000021c6: MLOAD 000021c7: PUSH3 0x461bcd 000021cb: PUSH1 0xe5 000021cd: SHL 000021ce: DUP2 000021cf: MSTORE 000021d0: PUSH1 0x04 000021d2: ADD 000021d3: DUP1 000021d4: DUP1 000021d5: PUSH1 0x20 000021d7: ADD 000021d8: DUP3 000021d9: DUP2 000021da: SUB 000021db: DUP3 000021dc: MSTORE 000021dd: PUSH1 0x23 000021df: DUP2 000021e0: MSTORE 000021e1: PUSH1 0x20 000021e3: ADD 000021e4: DUP1 000021e5: PUSH2 0x245e 000021e8: PUSH1 0x23 000021ea: SWAP2 000021eb: CODECOPY 000021ec: PUSH1 0x40 000021ee: ADD 000021ef: SWAP2 000021f0: POP 000021f1: POP 000021f2: PUSH1 0x40 000021f4: MLOAD 000021f5: DUP1 000021f6: SWAP2 000021f7: SUB 000021f8: SWAP1 000021f9: REVERT 000021fa: JUMPDEST 000021fb: PUSH2 0x223d 000021fe: DUP2 000021ff: PUSH1 0x40 00002201: MLOAD 00002202: DUP1 00002203: PUSH1 0x60 00002205: ADD 00002206: PUSH1 0x40 00002208: MSTORE 00002209: DUP1 0000220a: PUSH1 0x26 0000220c: DUP2 0000220d: MSTORE 0000220e: PUSH1 0x20 00002210: ADD 00002211: PUSH2 0x24c5 00002214: PUSH1 0x26 00002216: SWAP2 00002217: CODECOPY 00002218: PUSH1 0x01 0000221a: PUSH1 0x01 0000221c: PUSH1 0xa0 0000221e: SHL 0000221f: SUB 00002220: DUP7 00002221: AND 00002222: PUSH1 0x00 00002224: SWAP1 00002225: DUP2 00002226: MSTORE 00002227: PUSH1 0x13 00002229: PUSH1 0x20 0000222b: MSTORE 0000222c: PUSH1 0x40 0000222e: SWAP1 0000222f: KECCAK256 00002230: SLOAD 00002231: SWAP2 00002232: SWAP1 00002233: PUSH4 0xffffffff 00002238: PUSH2 0x2361 0000223b: AND 0000223c: JUMP 0000223d: JUMPDEST 0000223e: PUSH1 0x01 00002240: PUSH1 0x01 00002242: PUSH1 0xa0 00002244: SHL 00002245: SUB 00002246: DUP1 00002247: DUP6 00002248: AND 00002249: PUSH1 0x00 0000224b: SWAP1 0000224c: DUP2 0000224d: MSTORE 0000224e: PUSH1 0x13 00002250: PUSH1 0x20 00002252: MSTORE 00002253: PUSH1 0x40 00002255: DUP1 00002256: DUP3 00002257: KECCAK256 00002258: SWAP4 00002259: SWAP1 0000225a: SWAP4 0000225b: SSTORE 0000225c: SWAP1 0000225d: DUP5 0000225e: AND 0000225f: DUP2 00002260: MSTORE 00002261: KECCAK256 00002262: SLOAD 00002263: PUSH2 0x2272 00002266: SWAP1 00002267: DUP3 00002268: PUSH4 0xffffffff 0000226d: PUSH2 0x1c60 00002270: AND 00002271: JUMP 00002272: JUMPDEST 00002273: PUSH1 0x01 00002275: PUSH1 0x01 00002277: PUSH1 0xa0 00002279: SHL 0000227a: SUB 0000227b: DUP1 0000227c: DUP5 0000227d: AND 0000227e: PUSH1 0x00 00002280: DUP2 00002281: DUP2 00002282: MSTORE 00002283: PUSH1 0x13 00002285: PUSH1 0x20 00002287: SWAP1 00002288: DUP2 00002289: MSTORE 0000228a: PUSH1 0x40 0000228c: SWAP2 0000228d: DUP3 0000228e: SWAP1 0000228f: KECCAK256 00002290: SWAP5 00002291: SWAP1 00002292: SWAP5 00002293: SSTORE 00002294: DUP1 00002295: MLOAD 00002296: DUP6 00002297: DUP2 00002298: MSTORE 00002299: SWAP1 0000229a: MLOAD 0000229b: SWAP2 0000229c: SWAP4 0000229d: SWAP3 0000229e: DUP8 0000229f: AND 000022a0: SWAP3 000022a1: PUSH1 0x00 000022a3: DUP1 000022a4: MLOAD 000022a5: PUSH1 0x20 000022a7: PUSH2 0x2534 000022aa: DUP4 000022ab: CODECOPY 000022ac: DUP2 000022ad: MLOAD 000022ae: SWAP2 000022af: MSTORE 000022b0: SWAP3 000022b1: SWAP2 000022b2: DUP3 000022b3: SWAP1 000022b4: SUB 000022b5: ADD 000022b6: SWAP1 000022b7: LOG3 000022b8: PUSH1 0x01 000022ba: PUSH1 0x01 000022bc: PUSH1 0xa0 000022be: SHL 000022bf: SUB 000022c0: DUP4 000022c1: AND 000022c2: PUSH1 0x00 000022c4: SWAP1 000022c5: DUP2 000022c6: MSTORE 000022c7: PUSH1 0x0b 000022c9: PUSH1 0x20 000022cb: MSTORE 000022cc: PUSH1 0x40 000022ce: SWAP1 000022cf: KECCAK256 000022d0: SLOAD 000022d1: DUP1 000022d2: PUSH2 0x22de 000022d5: JUMPI 000022d6: POP 000022d7: PUSH1 0x08 000022d9: SLOAD 000022da: PUSH2 0x22ec 000022dd: JUMP 000022de: JUMPDEST 000022df: PUSH2 0x2710 000022e2: DUP2 000022e3: GT 000022e4: ISZERO 000022e5: PUSH2 0x22ec 000022e8: JUMPI 000022e9: POP 000022ea: PUSH1 0x00 000022ec: JUMPDEST 000022ed: PUSH1 0x01 000022ef: PUSH1 0x01 000022f1: PUSH1 0xa0 000022f3: SHL 000022f4: SUB 000022f5: DUP4 000022f6: AND 000022f7: PUSH1 0x00 000022f9: SWAP1 000022fa: DUP2 000022fb: MSTORE 000022fc: PUSH1 0x0c 000022fe: PUSH1 0x20 00002300: MSTORE 00002301: PUSH1 0x40 00002303: SWAP1 00002304: KECCAK256 00002305: SLOAD 00002306: DUP1 00002307: PUSH2 0x2313 0000230a: JUMPI 0000230b: POP 0000230c: PUSH1 0x08 0000230e: SLOAD 0000230f: PUSH2 0x2321 00002312: JUMP 00002313: JUMPDEST 00002314: PUSH2 0x2710 00002317: DUP2 00002318: GT 00002319: ISZERO 0000231a: PUSH2 0x2321 0000231d: JUMPI 0000231e: POP 0000231f: PUSH1 0x00 00002321: JUMPDEST 00002322: DUP2 00002323: DUP2 00002324: DUP2 00002325: GT 00002326: ISZERO 00002327: PUSH2 0x232d 0000232a: JUMPI 0000232b: POP 0000232c: DUP1 0000232d: JUMPDEST 0000232e: DUP1 0000232f: ISZERO 00002330: PUSH2 0x2359 00002333: JUMPI 00002334: PUSH1 0x00 00002336: PUSH2 0x234b 00002339: PUSH2 0x2710 0000233c: PUSH2 0x0c76 0000233f: DUP8 00002340: DUP6 00002341: PUSH4 0xffffffff 00002346: PUSH2 0x1d03 00002349: AND 0000234a: JUMP 0000234b: JUMPDEST 0000234c: SWAP1 0000234d: POP 0000234e: PUSH2 0x2357 00002351: DUP7 00002352: DUP3 00002353: PUSH2 0x1f50 00002356: JUMP 00002357: JUMPDEST 00002358: POP 00002359: JUMPDEST 0000235a: POP 0000235b: POP 0000235c: POP 0000235d: POP 0000235e: POP 0000235f: POP 00002360: JUMP 00002361: JUMPDEST 00002362: PUSH1 0x00 00002364: DUP2 00002365: DUP5 00002366: DUP5 00002367: GT 00002368: ISZERO 00002369: PUSH2 0x23f0 0000236c: JUMPI 0000236d: PUSH1 0x40 0000236f: MLOAD 00002370: PUSH3 0x461bcd 00002374: PUSH1 0xe5 00002376: SHL 00002377: DUP2 00002378: MSTORE 00002379: PUSH1 0x04 0000237b: ADD 0000237c: DUP1 0000237d: DUP1 0000237e: PUSH1 0x20 00002380: ADD 00002381: DUP3 00002382: DUP2 00002383: SUB 00002384: DUP3 00002385: MSTORE 00002386: DUP4 00002387: DUP2 00002388: DUP2 00002389: MLOAD 0000238a: DUP2 0000238b: MSTORE 0000238c: PUSH1 0x20 0000238e: ADD 0000238f: SWAP2 00002390: POP 00002391: DUP1 00002392: MLOAD 00002393: SWAP1 00002394: PUSH1 0x20 00002396: ADD 00002397: SWAP1 00002398: DUP1 00002399: DUP4 0000239a: DUP4 0000239b: PUSH1 0x00 0000239d: JUMPDEST 0000239e: DUP4 0000239f: DUP2 000023a0: LT 000023a1: ISZERO 000023a2: PUSH2 0x23b5 000023a5: JUMPI 000023a6: DUP2 000023a7: DUP2 000023a8: ADD 000023a9: MLOAD 000023aa: DUP4 000023ab: DUP3 000023ac: ADD 000023ad: MSTORE 000023ae: PUSH1 0x20 000023b0: ADD 000023b1: PUSH2 0x239d 000023b4: JUMP 000023b5: JUMPDEST 000023b6: POP 000023b7: POP 000023b8: POP 000023b9: POP 000023ba: SWAP1 000023bb: POP 000023bc: SWAP1 000023bd: DUP2 000023be: ADD 000023bf: SWAP1 000023c0: PUSH1 0x1f 000023c2: AND 000023c3: DUP1 000023c4: ISZERO 000023c5: PUSH2 0x23e2 000023c8: JUMPI 000023c9: DUP1 000023ca: DUP3 000023cb: SUB 000023cc: DUP1 000023cd: MLOAD 000023ce: PUSH1 0x01 000023d0: DUP4 000023d1: PUSH1 0x20 000023d3: SUB 000023d4: PUSH2 0x0100 000023d7: EXP 000023d8: SUB 000023d9: NOT 000023da: AND 000023db: DUP2 000023dc: MSTORE 000023dd: PUSH1 0x20 000023df: ADD 000023e0: SWAP2 000023e1: POP 000023e2: JUMPDEST 000023e3: POP 000023e4: SWAP3 000023e5: POP 000023e6: POP 000023e7: POP 000023e8: PUSH1 0x40 000023ea: MLOAD 000023eb: DUP1 000023ec: SWAP2 000023ed: SUB 000023ee: SWAP1 000023ef: REVERT 000023f0: JUMPDEST 000023f1: POP 000023f2: POP 000023f3: POP 000023f4: SWAP1 000023f5: SUB 000023f6: SWAP1 000023f7: JUMP 000023f8: JUMPDEST 000023f9: PUSH1 0x00 000023fb: DUP2 000023fc: DUP4 000023fd: PUSH2 0x2447 00002400: JUMPI 00002401: PUSH1 0x40 00002403: MLOAD 00002404: PUSH3 0x461bcd 00002408: PUSH1 0xe5 0000240a: SHL 0000240b: DUP2 0000240c: MSTORE 0000240d: PUSH1 0x20 0000240f: PUSH1 0x04 00002411: DUP3 00002412: ADD 00002413: DUP2 00002414: DUP2 00002415: MSTORE 00002416: DUP4 00002417: MLOAD 00002418: PUSH1 0x24 0000241a: DUP5 0000241b: ADD 0000241c: MSTORE 0000241d: DUP4 0000241e: MLOAD 0000241f: SWAP1 00002420: SWAP3 00002421: DUP4 00002422: SWAP3 00002423: PUSH1 0x44 00002425: SWAP1 00002426: SWAP2 00002427: ADD 00002428: SWAP2 00002429: SWAP1 0000242a: DUP6 0000242b: ADD 0000242c: SWAP1 0000242d: DUP1 0000242e: DUP4 0000242f: DUP4 00002430: PUSH1 0x00 00002432: DUP4 00002433: ISZERO 00002434: PUSH2 0x23b5 00002437: JUMPI 00002438: DUP2 00002439: DUP2 0000243a: ADD 0000243b: MLOAD 0000243c: DUP4 0000243d: DUP3 0000243e: ADD 0000243f: MSTORE 00002440: PUSH1 0x20 00002442: ADD 00002443: PUSH2 0x239d 00002446: JUMP 00002447: JUMPDEST 00002448: POP 00002449: PUSH1 0x00 0000244b: DUP4 0000244c: DUP6 0000244d: DUP2 0000244e: PUSH2 0x2453 00002451: JUMPI 00002452: INVALID 00002453: JUMPDEST 00002454: DIV 00002455: SWAP6 00002456: SWAP5 00002457: POP 00002458: POP 00002459: POP 0000245a: POP 0000245b: POP 0000245c: JUMP 0000245d: INVALID 0000245e: GASLIMIT 0000245f: MSTORE 00002460: NUMBER 00002461: ORIGIN 00002462: ADDRESS 00002463: GASPRICE 00002464: KECCAK256 00002465: PUSH21 0x72616e7366657220746f20746865207a65726f2061 0000247b: PUSH5 0x6472657373 00002481: GASLIMIT 00002482: MSTORE 00002483: NUMBER 00002484: ORIGIN 00002485: ADDRESS 00002486: GASPRICE 00002487: KECCAK256 00002488: PUSH3 0x75726e 0000248c: KECCAK256 0000248d: PUSH2 0x6d6f 00002490: PUSH22 0x6e7420657863656564732062616c616e636545524332 000024a7: ADDRESS 000024a8: GASPRICE 000024a9: KECCAK256 000024aa: PUSH2 0x7070 000024ad: PUSH19 0x6f766520746f20746865207a65726f20616464 000024c1: PUSH19 0x65737345524332303a207472616e7366657220 000024d5: PUSH2 0x6d6f 000024d8: PUSH22 0x6e7420657863656564732062616c616e636553616665 000024ef: UNKNOWN(0x4D) 000024f0: PUSH2 0x7468 000024f3: GASPRICE 000024f4: KECCAK256 000024f5: PUSH14 0x756c7469706c69636174696f6e20 00002504: PUSH16 0x766572666c6f7745524332303a207472 00002515: PUSH2 0x6e73 00002518: PUSH7 0x657220616d6f75 00002520: PUSH15 0x74206578636565647320616c6c6f77 00002530: PUSH2 0x6e63 00002533: PUSH6 0xddf252ad1be2 0000253a: UNKNOWN(0xC8) 0000253b: SWAP12 0000253c: PUSH10 0xc2b068fc378daa952ba7 00002547: CALL 00002548: PUSH4 0xc4a11628 0000254d: CREATE2 0000254e: GAS 0000254f: UNKNOWN(0x4D) 00002550: CREATE2 00002551: UNKNOWN(0x23) 00002552: UNKNOWN(0xB3) 00002553: UNKNOWN(0xEF) 00002554: GASLIMIT 00002555: MSTORE 00002556: NUMBER 00002557: ORIGIN 00002558: ADDRESS 00002559: GASPRICE 0000255a: KECCAK256 0000255b: PUSH3 0x75726e 0000255f: KECCAK256 00002560: PUSH7 0x726f6d20746865 00002568: KECCAK256 00002569: PUSH27 0x65726f206164647265737345524332303a207472616e7366657220 00002585: PUSH7 0x726f6d20746865 0000258d: KECCAK256 0000258e: PUSH27 0x65726f206164647265737345524332303a20617070726f76652066 000025aa: PUSH19 0x6f6d20746865207a65726f2061646472657373 000025be: UNKNOWN(0xB8) 000025bf: UNKNOWN(0x0C) 000025c0: UNKNOWN(0x4D) 000025c1: UNKNOWN(0xB4) 000025c2: SAR 000025c3: PUSH21 0xa7d9fa7e40985cc7e838aad3e70f26bd87a5ba2786 000025d9: UNKNOWN(0x2C) 000025da: SSTORE 000025db: DUP10 000025dc: SSTORE 000025dd: PUSH3 0x4b6974 000025e1: PUSH21 0x656e537761703a20494e53554646494349454e545f 000025f7: UNKNOWN(0x4F) 000025f8: SSTORE 000025f9: SLOAD 000025fa: POP 000025fb: SSTORE 000025fc: SLOAD 000025fd: PUSH0 000025fe: COINBASE 000025ff: UNKNOWN(0x4D) 00002600: UNKNOWN(0x4F) 00002601: SSTORE 00002602: UNKNOWN(0x4E) 00002603: SLOAD 00002604: GASLIMIT 00002605: MSTORE 00002606: NUMBER 00002607: ORIGIN 00002608: ADDRESS 00002609: GASPRICE 0000260a: KECCAK256 0000260b: PUSH5 0x6563726561 00002611: PUSH20 0x656420616c6c6f77616e63652062656c6f77207a 00002626: PUSH6 0x726fa265627a 0000262d: PUSH27 0x723158209f02fe762af55ad2d1716063cbaffebb244b86d4b2b16c 00002649: UNKNOWN(0xC1) 0000264a: UNKNOWN(0xEC) 0000264b: UNKNOWN(0xDE) 0000264c: ADDMOD 0000264d: PUSH31
| Severity | Category | Tool | Title | Confidence | Validated | Confirmed | Details |
|---|---|---|---|---|---|---|---|
| high | math | codex | AutoBoost reserve burn enables ETH‑neutral buy/sell loops that ratchet price upward | 85 | no | — |
viewevidence_json{
"evidence": "sellToken burns before pricing and _burn() auto\u2011burns tokenFactoryAddr reserve (extraBurn), then pricing uses the reduced oldTokenReserve. buyToken\u2019s formula is symmetric, so buy\u2192sell of the same tokens returns the same ETH while extraBurn permanently shrinks reserves.",
"locations": [
"contracts/Contract.sol:243",
"contracts/Contract.sol:261",
"contracts/Contract.sol:352",
"contracts/Contract.sol:358",
"contracts/Contract.sol:310",
"contracts/Contract.sol:361"
],
"recommendation": "Do not let sell\u2011side burns reduce reserves used for pricing without compensating ETH loss. Options: (a) move reserve\u2011burning logic to after pricing and ETH payout, (b) incorporate extraBurn into the pricing formula (so buy\u2192sell is ETH\u2011lossy), or (c) apply a fee or reduce sell payout so round\u2011trips cannot be ETH\u2011neutral.",
"exploit_scenario": "1) Buy LIQUID to establish a position (buyToken). 2) Repeatedly call buyToken with the max allowed ETH per tx (default 0.001 ETH), then immediately sellToken the exact amount received. Because _burn() reduces the tokenFactoryAddr reserve (extraBurn) before sellToken reads oldTokenReserve, each loop returns essentially the same ETH you put in but permanently shrinks token reserves, increasing the price. 3) After enough loops, sell your held LIQUID to extract more ETH than you originally paid. Profit potential: scales with loop count and token holdings; upper bound is on the order of the contract\u2019s ETH reserve (initial 2100 ETH + current balance \u2212 treasury)."
}
|
| high | auth | detector | Authorization based on tx.origin | 70 | no | — |
viewvalidation_json{
"reason": "missing sink mapping",
"status": "no_sink"
}
witness_json{
"notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
"constraints": [],
"entrypoints": [
{
"calldata": "0xd9b69774",
"selector": "0xd9b69774",
"calldata_variants": [
"0xd9b69774",
"0xd9b697740000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xdd62ed3e",
"selector": "0xdd62ed3e",
"calldata_variants": [
"0xdd62ed3e",
"0xdd62ed3e0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xeb0ee934",
"selector": "0xeb0ee934",
"calldata_variants": [
"0xeb0ee934",
"0xeb0ee9340000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf1d9f88b",
"selector": "0xf1d9f88b",
"calldata_variants": [
"0xf1d9f88b",
"0xf1d9f88b0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xfa59e6d4",
"selector": "0xfa59e6d4",
"calldata_variants": [
"0xfa59e6d4",
"0xfa59e6d40000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xff71b4e5",
"selector": "0xff71b4e5",
"calldata_variants": [
"0xff71b4e5",
"0xff71b4e50000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xc21d74fe",
"selector": "0xc21d74fe",
"calldata_variants": [
"0xc21d74fe",
"0xc21d74fe0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xc83ce00a",
"selector": "0xc83ce00a",
"calldata_variants": [
"0xc83ce00a",
"0xc83ce00a0000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"guards_detected": [
{
"pc": 2610,
"type": "tx_origin_used"
},
{
"pc": 4310,
"type": "tx_origin_used"
},
{
"pc": 2609,
"type": "tx_origin_used"
},
{
"pc": 4309,
"type": "tx_origin_used"
},
{
"pc": 9313,
"type": "tx_origin_used"
},
{
"pc": 9348,
"type": "tx_origin_used"
},
{
"pc": 9559,
"type": "tx_origin_used"
},
{
"pc": 9735,
"type": "tx_origin_used"
}
]
}
|
| medium | other | detector | Untrusted CALL target/value reachable | 45 | no | no |
viewtrace_id: 0xb7031ec8172301046ebd2704a89140ef0addf061e7e000d705f63029b0f6f92c
call_targets:
0xc618d56b6d606e59c6b87af724ab5a91eb40d1cb
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0xb7031ec8172301046ebd2704a89140ef0addf061e7e000d705f63029b0f6f92c",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0xc618d56b6d606e59c6b87af724ab5a91eb40d1cb"
],
"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": "0xd9b69774",
"selector": "0xd9b69774",
"calldata_variants": [
"0xd9b69774",
"0xd9b697740000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xdd62ed3e",
"selector": "0xdd62ed3e",
"calldata_variants": [
"0xdd62ed3e",
"0xdd62ed3e0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xeb0ee934",
"selector": "0xeb0ee934",
"calldata_variants": [
"0xeb0ee934",
"0xeb0ee9340000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf1d9f88b",
"selector": "0xf1d9f88b",
"calldata_variants": [
"0xf1d9f88b",
"0xf1d9f88b0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xfa59e6d4",
"selector": "0xfa59e6d4",
"calldata_variants": [
"0xfa59e6d4",
"0xfa59e6d40000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xff71b4e5",
"selector": "0xff71b4e5",
"calldata_variants": [
"0xff71b4e5",
"0xff71b4e50000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xc21d74fe",
"selector": "0xc21d74fe",
"calldata_variants": [
"0xc21d74fe",
"0xc21d74fe0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xc83ce00a",
"selector": "0xc83ce00a",
"calldata_variants": [
"0xc83ce00a",
"0xc83ce00a0000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 5047,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 5108,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 6907,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"call_count": 4,
"guards_detected": [
{
"pc": 2610,
"type": "tx_origin_used"
},
{
"pc": 4310,
"type": "tx_origin_used"
},
{
"pc": 2609,
"type": "tx_origin_used"
},
{
"pc": 4309,
"type": "tx_origin_used"
},
{
"pc": 9313,
"type": "tx_origin_used"
},
{
"pc": 9348,
"type": "tx_origin_used"
},
{
"pc": 9559,
"type": "tx_origin_used"
},
{
"pc": 9735,
"type": "tx_origin_used"
}
],
"untrusted_call_count": 3
}
|
| medium | other | detector | ETH value transfer possible | 40 | no | no |
viewtrace_id: 0xb7031ec8172301046ebd2704a89140ef0addf061e7e000d705f63029b0f6f92c
call_targets:
0xc618d56b6d606e59c6b87af724ab5a91eb40d1cb
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0xb7031ec8172301046ebd2704a89140ef0addf061e7e000d705f63029b0f6f92c",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0xc618d56b6d606e59c6b87af724ab5a91eb40d1cb"
],
"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": "0xd9b69774",
"selector": "0xd9b69774",
"calldata_variants": [
"0xd9b69774",
"0xd9b697740000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xdd62ed3e",
"selector": "0xdd62ed3e",
"calldata_variants": [
"0xdd62ed3e",
"0xdd62ed3e0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xeb0ee934",
"selector": "0xeb0ee934",
"calldata_variants": [
"0xeb0ee934",
"0xeb0ee9340000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf1d9f88b",
"selector": "0xf1d9f88b",
"calldata_variants": [
"0xf1d9f88b",
"0xf1d9f88b0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xfa59e6d4",
"selector": "0xfa59e6d4",
"calldata_variants": [
"0xfa59e6d4",
"0xfa59e6d40000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xff71b4e5",
"selector": "0xff71b4e5",
"calldata_variants": [
"0xff71b4e5",
"0xff71b4e50000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xc21d74fe",
"selector": "0xc21d74fe",
"calldata_variants": [
"0xc21d74fe",
"0xc21d74fe0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xc83ce00a",
"selector": "0xc83ce00a",
"calldata_variants": [
"0xc83ce00a",
"0xc83ce00a0000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 5047,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 5108,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 6907,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"eth_value_calls": 4,
"guards_detected": [
{
"pc": 2610,
"type": "tx_origin_used"
},
{
"pc": 4310,
"type": "tx_origin_used"
},
{
"pc": 2609,
"type": "tx_origin_used"
},
{
"pc": 4309,
"type": "tx_origin_used"
},
{
"pc": 9313,
"type": "tx_origin_used"
},
{
"pc": 9348,
"type": "tx_origin_used"
},
{
"pc": 9559,
"type": "tx_origin_used"
},
{
"pc": 9735,
"type": "tx_origin_used"
}
]
}
|
| medium | other | detector | CREATE/CREATE2 reachable | 45 | no | no |
viewtrace_id: 0xed23a6d06e8a1bff1a0076e6b6db2236ef4b0ab03fbcc4fea2434cdc4411b87e
validation_json{
"sink": "CREATE",
"errors": 0,
"status": "unknown",
"attempts": 32,
"trace_id": "0xed23a6d06e8a1bff1a0076e6b6db2236ef4b0ab03fbcc4fea2434cdc4411b87e",
"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": "0xd9b69774",
"selector": "0xd9b69774",
"calldata_variants": [
"0xd9b69774",
"0xd9b697740000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xdd62ed3e",
"selector": "0xdd62ed3e",
"calldata_variants": [
"0xdd62ed3e",
"0xdd62ed3e0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xeb0ee934",
"selector": "0xeb0ee934",
"calldata_variants": [
"0xeb0ee934",
"0xeb0ee9340000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf1d9f88b",
"selector": "0xf1d9f88b",
"calldata_variants": [
"0xf1d9f88b",
"0xf1d9f88b0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xfa59e6d4",
"selector": "0xfa59e6d4",
"calldata_variants": [
"0xfa59e6d4",
"0xfa59e6d40000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xff71b4e5",
"selector": "0xff71b4e5",
"calldata_variants": [
"0xff71b4e5",
"0xff71b4e50000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xc21d74fe",
"selector": "0xc21d74fe",
"calldata_variants": [
"0xc21d74fe",
"0xc21d74fe0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xc83ce00a",
"selector": "0xc83ce00a",
"calldata_variants": [
"0xc83ce00a",
"0xc83ce00a0000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"create_count": 0,
"create2_count": 2
}
|
| low | other | cast | Contract creation opcode present | 60 | no | — |
viewevidence_json{
"notes": "runtime can deploy contracts dynamically via CREATE/CREATE2",
"create_count": 0,
"create2_count": 2
}
|