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

Analysis Run

019be3d6-8201-73d9-b7fe-2f43c4915ca9

complete
Chain ID
1
Address
Block Number
Created
Thu, Jan 22, 2026 3:54 AM
Review Summary

What survived the funnel

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

Confirmed
0
Validated
0
Source
Verified
Review Backing
Present
Best current signal
ExchangeProxy.transferAll(TokenInterface,uint256) (contracts/Contract.sol#775-788) sends eth to arbitrary user
crit 0 high 0 direct contract
Review Checklist
1. Read the findings table first. Ignore raw jobs until the result looks real.
2. Confirm attacker control, not just the existence of a sink.
3. Confirm money or privilege impact.
4. Keep it if the behavior is real. Kill it if this is normal proxy, admin, or upgrade plumbing.

Processing Jobs

Status & attempts
ID Type Status Attempts Heartbeat
40568 artifact.fetch complete 1 / 3 2 months ago
40569 proxy.resolve complete 1 / 3 2 months ago
40570 tool.cast_disasm complete 1 / 3 2 months ago
40571 analysis.bundle complete 1 / 3 2 months ago
40572 capability.graph complete 1 / 3 2 months ago
40573 detector.run complete 1 / 3 2 months ago
40574 validation.fork complete 1 / 3 2 months ago
41241 report.consolidate complete 1 / 6 2 months ago
41242 tool.slither complete 1 / 2 2 months ago

Artifact

Runtime bytecode: available
Creation TX:
Deployer:
Proxy: no not_proxy
Implementation:
Verified Source: yes
Proxy evidence
{
    "status": "not_proxy"
}

Slither

tool.slither
Status
complete
Attempts
1 / 2
Findings
1
Solc
0.5.12 (solc-select)
View stderr
'forge clean' running (wd: /tmp/slither-ltu3tt7n)
'forge config --json' running
'forge build --build-info --skip ./test/** ./script/** --force' running (wd: /tmp/slither-ltu3tt7n)

ExchangeProxy.transferAll(TokenInterface,uint256) (contracts/Contract.sol#775-788) sends eth to arbitrary user
	Dangerous calls:
	- (xfer,None) = msg.sender.call.value(amount)() (contracts/Contract.sol#782-785)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#functions-that-send-ether-to-arbitrary-destinations

ExchangeProxy.calcEffectiveLiquidity(uint256,uint256,uint256) (contracts/Contract.sol#701-710) performs a multiplication on the result of a division:
	- effectiveLiquidity = tokenWeightIn.mul(BONE).div(tokenWeightOut.add(tokenWeightIn)).mul(tokenBalanceOut).div(BONE) (contracts/Contract.sol#706-709)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#divide-before-multiply

ExchangeProxy.transferAll(TokenInterface,uint256) (contracts/Contract.sol#775-788) uses a dangerous strict equality:
	- amount == 0 (contracts/Contract.sol#777)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#dangerous-strict-equalities

ExchangeProxy.viewSplitExactIn(address,address,uint256,uint256).sumEffectiveLiquidity (contracts/Contract.sol#584) is a local variable never initialized
ExchangeProxy.viewSplitExactOut(address,address,uint256,uint256).totalInputAmount (contracts/Contract.sol#642) is a local variable never initialized
ExchangeProxy.viewSplitExactIn(address,address,uint256,uint256).totalInputAmount (contracts/Contract.sol#595-596) is a local variable never initialized
ExchangeProxy.multihopBatchSwapExactIn(ExchangeProxy.Swap[][],TokenInterface,TokenInterface,uint256,uint256).tokenAmountOut (contracts/Contract.sol#406-410) is a local variable never initialized
ExchangeProxy.viewSplitExactOut(address,address,uint256,uint256).sumEffectiveLiquidity (contracts/Contract.sol#628-629) is a local variable never initialized
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#uninitialized-local-variables

ExchangeProxy.batchSwapExactIn(ExchangeProxy.Swap[],TokenInterface,TokenInterface,uint256,uint256) (contracts/Contract.sol#324-361) ignores return value by SwapTokenIn.approve(swap.pool,0) (contracts/Contract.sol#345)
ExchangeProxy.batchSwapExactIn(ExchangeProxy.Swap[],TokenInterface,TokenInterface,uint256,uint256) (contracts/Contract.sol#324-361) ignores return value by SwapTokenIn.approve(swap.pool,swap.swapAmount) (contracts/Contract.sol#347-348)
ExchangeProxy.batchSwapExactIn(ExchangeProxy.Swap[],TokenInterface,TokenInterface,uint256,uint256) (contracts/Contract.sol#324-361) ignores return value by (tokenAmountOut,None) = pool.swapExactAmountIn(swap.tokenIn,swap.swapAmount,swap.tokenOut,swap.limitReturnAmount,swap.maxPrice) (contracts/Contract.sol#348-357)
ExchangeProxy.batchSwapExactOut(ExchangeProxy.Swap[],TokenInterface,TokenInterface,uint256) (contracts/Contract.sol#361-398) ignores return value by SwapTokenIn.approve(swap.pool,0) (contracts/Contract.sol#380-382)
ExchangeProxy.batchSwapExactOut(ExchangeProxy.Swap[],TokenInterface,TokenInterface,uint256) (contracts/Contract.sol#361-398) ignores return value by SwapTokenIn.approve(swap.pool,swap.limitReturnAmount) (contracts/Contract.sol#382-384)
ExchangeProxy.batchSwapExactOut(ExchangeProxy.Swap[],TokenInterface,TokenInterface,uint256) (contracts/Contract.sol#361-398) ignores return value by (tokenAmountIn,None) = pool.swapExactAmountOut(swap.tokenIn,swap.limitReturnAmount,swap.tokenOut,swap.swapAmount,swap.maxPrice) (contracts/Contract.sol#385-392)
ExchangeProxy.multihopBatchSwapExactIn(ExchangeProxy.Swap[][],TokenInterface,TokenInterface,uint256,uint256) (contracts/Contract.sol#398-443) ignores return value by SwapTokenIn.approve(swap.pool,0) (contracts/Contract.sol#427-428)
ExchangeProxy.multihopBatchSwapExactIn(ExchangeProxy.Swap[][],TokenInterface,TokenInterface,uint256,uint256) (contracts/Contract.sol#398-443) ignores return value by SwapTokenIn.approve(swap.pool,swap.swapAmount) (contracts/Contract.sol#429)
ExchangeProxy.multihopBatchSwapExactIn(ExchangeProxy.Swap[][],TokenInterface,TokenInterface,uint256,uint256) (contracts/Contract.sol#398-443) ignores return value by (tokenAmountOut,None) = pool.swapExactAmountIn(swap.tokenIn,swap.swapAmount,swap.tokenOut,swap.limitReturnAmount,swap.maxPrice) (contracts/Contract.sol#430-438)
ExchangeProxy.multihopBatchSwapExactOut(ExchangeProxy.Swap[][],TokenInterface,TokenInterface,uint256) (contracts/Contract.sol#443-530) ignores return value by SwapTokenIn.approve(swap.pool,0) (contracts/Contract.sol#470-471)
ExchangeProxy.multihopBatchSwapExactOut(ExchangeProxy.Swap[][],TokenInterface,TokenInterface,uint256) (contracts/Contract.sol#443-530) ignores return value by SwapTokenIn.approve(swap.pool,swap.limitReturnAmount) (contracts/Contract.sol#472)
ExchangeProxy.multihopBatchSwapExactOut(ExchangeProxy.Swap[][],TokenInterface,TokenInterface,uint256) (contracts/Contract.sol#443-530) ignores return value by (tokenAmountInFirstSwap,None) = pool.swapExactAmountOut(swap.tokenIn,swap.limitReturnAmount,swap.tokenOut,swap.swapAmount,swap.maxPrice) (contracts/Contract.sol#473-480)
ExchangeProxy.multihopBatchSwapExactOut(ExchangeProxy.Swap[][],TokenInterface,TokenInterface,uint256) (contracts/Contract.sol#443-530) ignores return value by FirstSwapTokenIn.approve(firstSwap.pool,uint256(- 1)) (contracts/Contract.sol#503-504)
ExchangeProxy.multihopBatchSwapExactOut(ExchangeProxy.Swap[][],TokenInterface,TokenInterface,uint256) (contracts/Contract.sol#443-530) ignores return value by (tokenAmountInFirstSwap,None) = poolFirstSwap.swapExactAmountOut(firstSwap.tokenIn,firstSwap.limitReturnAmount,firstSwap.tokenOut,intermediateTokenAmount,firstSwap.maxPrice) (contracts/Contract.sol#506-511)
ExchangeProxy.multihopBatchSwapExactOut(ExchangeProxy.Swap[][],TokenInterface,TokenInterface,uint256) (contracts/Contract.sol#443-530) ignores return value by SecondSwapTokenIn.approve(secondSwap.pool,uint256(- 1)) (contracts/Contract.sol#517-518)
ExchangeProxy.multihopBatchSwapExactOut(ExchangeProxy.Swap[][],TokenInterface,TokenInterface,uint256) (contracts/Contract.sol#443-530) ignores return value by poolSecondSwap.swapExactAmountOut(secondSwap.tokenIn,secondSwap.limitReturnAmount,secondSwap.tokenOut,secondSwap.swapAmount,secondSwap.maxPrice) (contracts/Contract.sol#518-524)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#unused-return

ExchangeProxy.batchSwapExactIn(ExchangeProxy.Swap[],TokenInterface,TokenInterface,uint256,uint256) (contracts/Contract.sol#324-361) has external calls inside a loop: SwapTokenIn.allowance(address(this),swap.pool) > 0 (contracts/Contract.sol#342-344)
ExchangeProxy.batchSwapExactIn(ExchangeProxy.Swap[],TokenInterface,TokenInterface,uint256,uint256) (contracts/Contract.sol#324-361) has external calls inside a loop: SwapTokenIn.approve(swap.pool,0) (contracts/Contract.sol#345)
ExchangeProxy.batchSwapExactIn(ExchangeProxy.Swap[],TokenInterface,TokenInterface,uint256,uint256) (contracts/Contract.sol#324-361) has external calls inside a loop: SwapTokenIn.approve(swap.pool,swap.swapAmount) (contracts/Contract.sol#347-348)
ExchangeProxy.batchSwapExactIn(ExchangeProxy.Swap[],TokenInterface,TokenInterface,uint256,uint256) (contracts/Contract.sol#324-361) has external calls inside a loop: (tokenAmountOut,None) = pool.swapExactAmountIn(swap.tokenIn,swap.swapAmount,swap.tokenOut,swap.limitReturnAmount,swap.maxPrice) (contracts/Contract.sol#348-357)
ExchangeProxy.batchSwapExactOut(ExchangeProxy.Swap[],TokenInterface,TokenInterface,uint256) (contracts/Contract.sol#361-398) has external calls inside a loop: SwapTokenIn.allowance(address(this),swap.pool) > 0 (contracts/Contract.sol#377-380)
ExchangeProxy.batchSwapExactOut(ExchangeProxy.Swap[],TokenInterface,TokenInterface,uint256) (contracts/Contract.sol#361-398) has external calls inside a loop: SwapTokenIn.approve(swap.pool,0) (contracts/Contract.sol#380-382)
ExchangeProxy.batchSwapExactOut(ExchangeProxy.Swap[],TokenInterface,TokenInterface,uint256) (contracts/Contract.sol#361-398) has external calls inside a loop: SwapTokenIn.approve(swap.pool,swap.limitReturnAmount) (contracts/Contract.sol#382-384)
ExchangeProxy.batchSwapExactOut(ExchangeProxy.Swap[],TokenInterface,TokenInterface,uint256) (contracts/Contract.sol#361-398) has external calls inside a loop: (tokenAmountIn,None) = pool.swapExactAmountOut(swap.tokenIn,swap.limitReturnAmount,swap.tokenOut,swap.swapAmount,swap.maxPrice) (contracts/Contract.sol#385-392)
ExchangeProxy.multihopBatchSwapExactIn(ExchangeProxy.Swap[][],TokenInterface,TokenInterface,uint256,uint256) (contracts/Contract.sol#398-443) has external calls inside a loop: SwapTokenIn.allowance(address(this),swap.pool) > 0 (contracts/Contract.sol#426-427)
ExchangeProxy.multihopBatchSwapExactIn(ExchangeProxy.Swap[][],TokenInterface,TokenInterface,uint256,uint256) (contracts/Contract.sol#398-443) has external calls inside a loop: SwapTokenIn.approve(swap.pool,0) (contracts/Contract.sol#427-428)
ExchangeProxy.multihopBatchSwapExactIn(ExchangeProxy.Swap[][],TokenInterface,TokenInterface,uint256,uint256) (contracts/Contract.sol#398-443) has external calls inside a loop: SwapTokenIn.approve(swap.pool,swap.swapAmount) (contracts/Contract.sol#429)
ExchangeProxy.multihopBatchSwapExactIn(ExchangeProxy.Swap[][],TokenInterface,TokenInterface,uint256,uint256) (contracts/Contract.sol#398-443) has external calls inside a loop: (tokenAmountOut,None) = pool.swapExactAmountIn(swap.tokenIn,swap.swapAmount,swap.tokenOut,swap.limitReturnAmount,swap.maxPrice) (contracts/Contract.sol#430-438)
ExchangeProxy.multihopBatchSwapExactOut(ExchangeProxy.Swap[][],TokenInterface,TokenInterface,uint256) (contracts/Contract.sol#443-530) has external calls inside a loop: SwapTokenIn.allowance(address(this),swap.pool) > 0 (contracts/Contract.sol#468-470)
ExchangeProxy.multihopBatchSwapExactOut(ExchangeProxy.Swap[][],TokenInterface,TokenInterface,uint256) (contracts/Contract.sol#443-530) has external calls inside a loop: SwapTokenIn.approve(swap.pool,0) (contracts/Contract.sol#470-471)
ExchangeProxy.multihopBatchSwapExactOut(ExchangeProxy.Swap[][],TokenInterface,TokenInterface,uint256) (contracts/Contract.sol#443-530) has external calls inside a loop: SwapTokenIn.approve(swap.pool,swap.limitReturnAmount) (contracts/Contract.sol#472)
ExchangeProxy.multihopBatchSwapExactOut(ExchangeProxy.Swap[][],TokenInterface,TokenInterface,uint256) (contracts/Contract.sol#443-530) has external calls inside a loop: (tokenAmountInFirstSwap,None) = pool.swapExactAmountOut(swap.tokenIn,swap.limitReturnAmount,swap.tokenOut,swap.swapAmount,swap.maxPrice) (contracts/Contract.sol#473-480)
ExchangeProxy.multihopBatchSwapExactOut(ExchangeProxy.Swap[][],TokenInterface,TokenInterface,uint256) (contracts/Contract.sol#443-530) has external calls inside a loop: intermediateTokenAmount = poolSecondSwap.calcInGivenOut(poolSecondSwap.getBalance(secondSwap.tokenIn),poolSecondSwap.getDenormalizedWeight(secondSwap.tokenIn),poolSecondSwap.getBalance(secondSwap.tokenOut),poolSecondSwap.getDenormalizedWeight(secondSwap.tokenOut),secondSwap.swapAmount,poolSecondSwap.getSwapFee()) (contracts/Contract.sol#491-498)
ExchangeProxy.multihopBatchSwapExactOut(ExchangeProxy.Swap[][],TokenInterface,TokenInterface,uint256) (contracts/Contract.sol#443-530) has external calls inside a loop: FirstSwapTokenIn.allowance(address(this),firstSwap.pool) < uint256(- 1) (contracts/Contract.sol#501-503)
ExchangeProxy.multihopBatchSwapExactOut(ExchangeProxy.Swap[][],TokenInterface,TokenInterface,uint256) (contracts/Contract.sol#443-530) has external calls inside a loop: FirstSwapTokenIn.approve(firstSwap.pool,uint256(- 1)) (contracts/Contract.sol#503-504)
ExchangeProxy.multihopBatchSwapExactOut(ExchangeProxy.Swap[][],TokenInterface,TokenInterface,uint256) (contracts/Contract.sol#443-530) has external calls inside a loop: (tokenAmountInFirstSwap,None) = poolFirstSwap.swapExactAmountOut(firstSwap.tokenIn,firstSwap.limitReturnAmount,firstSwap.tokenOut,intermediateTokenAmount,firstSwap.maxPrice) (contracts/Contract.sol#506-511)
ExchangeProxy.multihopBatchSwapExactOut(ExchangeProxy.Swap[][],TokenInterface,TokenInterface,uint256) (contracts/Contract.sol#443-530) has external calls inside a loop: SecondSwapTokenIn.allowance(address(this),secondSwap.pool) < uint256(- 1) (contracts/Contract.sol#515-516)
ExchangeProxy.multihopBatchSwapExactOut(ExchangeProxy.Swap[][],TokenInterface,TokenInterface,uint256) (contracts/Contract.sol#443-530) has external calls inside a loop: SecondSwapTokenIn.approve(secondSwap.pool,uint256(- 1)) (contracts/Contract.sol#517-518)
ExchangeProxy.multihopBatchSwapExactOut(ExchangeProxy.Swap[][],TokenInterface,TokenInterface,uint256) (contracts/Contract.sol#443-530) has external calls inside a loop: poolSecondSwap.swapExactAmountOut(secondSwap.tokenIn,secondSwap.limitReturnAmount,secondSwap.tokenOut,secondSwap.swapAmount,secondSwap.maxPrice) (contracts/Contract.sol#518-524)
ExchangeProxy.getPoolData(address,address,address) (contracts/Contract.sol#666-700) has external calls inside a loop: tokenBalanceIn = pool.getBalance(tokenIn) (contracts/Contract.sol#673-674)
	Calls stack containing the loop:
		ExchangeProxy.smartSwapExactIn(TokenInterface,TokenInterface,uint256,uint256,uint256)
		ExchangeProxy.viewSplitExactIn(address,address,uint256,uint256)
ExchangeProxy.getPoolData(address,address,address) (contracts/Contract.sol#666-700) has external calls inside a loop: tokenBalanceOut = pool.getBalance(tokenOut) (contracts/Contract.sol#675-676)
	Calls stack containing the loop:
		ExchangeProxy.smartSwapExactIn(TokenInterface,TokenInterface,uint256,uint256,uint256)
		ExchangeProxy.viewSplitExactIn(address,address,uint256,uint256)
ExchangeProxy.getPoolData(address,address,address) (contracts/Contract.sol#666-700) has external calls inside a loop: tokenWeightIn = pool.getDenormalizedWeight(tokenIn) (contracts/Contract.sol#676-677)
	Calls stack containing the loop:
		ExchangeProxy.smartSwapExactIn(TokenInterface,TokenInterface,uint256,uint256,uint256)
		ExchangeProxy.viewSplitExactIn(address,address,uint256,uint256)
ExchangeProxy.getPoolData(address,address,address) (contracts/Contract.sol#666-700) has external calls inside a loop: tokenWeightOut = pool.getDenormalizedWeight(tokenOut) (contracts/Contract.sol#677-678)
	Calls stack containing the loop:
		ExchangeProxy.smartSwapExactIn(TokenInterface,TokenInterface,uint256,uint256,uint256)
		ExchangeProxy.viewSplitExactIn(address,address,uint256,uint256)
ExchangeProxy.getPoolData(address,address,address) (contracts/Contract.sol#666-700) has external calls inside a loop: swapFee = pool.getSwapFee() (contracts/Contract.sol#678-679)
	Calls stack containing the loop:
		ExchangeProxy.smartSwapExactIn(TokenInterface,TokenInterface,uint256,uint256,uint256)
		ExchangeProxy.viewSplitExactIn(address,address,uint256,uint256)
ExchangeProxy.calcTotalOutExactIn(uint256[],ExchangeProxy.Pool[]) (contracts/Contract.sol#710-740) has external calls inside a loop: output = PoolInterface(bestPools[i].pool).calcOutGivenIn(bestPools[i].tokenBalanceIn,bestPools[i].tokenWeightIn,bestPools[i].tokenBalanceOut,bestPools[i].tokenWeightOut,bestInputAmounts[i],bestPools[i].swapFee) (contracts/Contract.sol#718-736)
	Calls stack containing the loop:
		ExchangeProxy.smartSwapExactIn(TokenInterface,TokenInterface,uint256,uint256,uint256)
		ExchangeProxy.viewSplitExactIn(address,address,uint256,uint256)
ExchangeProxy.batchSwapExactIn(ExchangeProxy.Swap[],TokenInterface,TokenInterface,uint256,uint256) (contracts/Contract.sol#324-361) has external calls inside a loop: SwapTokenIn.allowance(address(this),swap.pool) > 0 (contracts/Contract.sol#342-344)
	Calls stack containing the loop:
		ExchangeProxy.smartSwapExactIn(TokenInterface,TokenInterface,uint256,uint256,uint256)
ExchangeProxy.batchSwapExactIn(ExchangeProxy.Swap[],TokenInterface,TokenInterface,uint256,uint256) (contracts/Contract.sol#324-361) has external calls inside a loop: SwapTokenIn.approve(swap.pool,0) (contracts/Contract.sol#345)
	Calls stack containing the loop:
		ExchangeProxy.smartSwapExactIn(TokenInterface,TokenInterface,uint256,uint256,uint256)
ExchangeProxy.batchSwapExactIn(ExchangeProxy.Swap[],TokenInterface,TokenInterface,uint256,uint256) (contracts/Contract.sol#324-361) has external calls inside a loop: SwapTokenIn.approve(swap.pool,swap.swapAmount) (contracts/Contract.sol#347-348)
	Calls stack containing the loop:
		ExchangeProxy.smartSwapExactIn(TokenInterface,TokenInterface,uint256,uint256,uint256)
ExchangeProxy.batchSwapExactIn(ExchangeProxy.Swap[],TokenInterface,TokenInterface,uint256,uint256) (contracts/Contract.sol#324-361) has external calls inside a loop: (tokenAmountOut,None) = pool.swapExactAmountIn(swap.tokenIn,swap.swapAmount,swap.tokenOut,swap.limitReturnAmount,swap.maxPrice) (contracts/Contract.sol#348-357)
	Calls stack containing the loop:
		ExchangeProxy.smartSwapExactIn(TokenInterface,TokenInterface,uint256,uint256,uint256)
ExchangeProxy.getPoolData(address,address,address) (contracts/Contract.sol#666-700) has external calls inside a loop: tokenBalanceIn = pool.getBalance(tokenIn) (contracts/Contract.sol#673-674)
	Calls stack containing the loop:
		ExchangeProxy.smartSwapExactOut(TokenInterface,TokenInterface,uint256,uint256,uint256)
		ExchangeProxy.viewSplitExactOut(address,address,uint256,uint256)
ExchangeProxy.getPoolData(address,address,address) (contracts/Contract.sol#666-700) has external calls inside a loop: tokenBalanceOut = pool.getBalance(tokenOut) (contracts/Contract.sol#675-676)
	Calls stack containing the loop:
		ExchangeProxy.smartSwapExactOut(TokenInterface,TokenInterface,uint256,uint256,uint256)
		ExchangeProxy.viewSplitExactOut(address,address,uint256,uint256)
ExchangeProxy.getPoolData(address,address,address) (contracts/Contract.sol#666-700) has external calls inside a loop: tokenWeightIn = pool.getDenormalizedWeight(tokenIn) (contracts/Contract.sol#676-677)
	Calls stack containing the loop:
		ExchangeProxy.smartSwapExactOut(TokenInterface,TokenInterface,uint256,uint256,uint256)
		ExchangeProxy.viewSplitExactOut(address,address,uint256,uint256)
ExchangeProxy.getPoolData(address,address,address) (contracts/Contract.sol#666-700) has external calls inside a loop: tokenWeightOut = pool.getDenormalizedWeight(tokenOut) (contracts/Contract.sol#677-678)
	Calls stack containing the loop:
		ExchangeProxy.smartSwapExactOut(TokenInterface,TokenInterface,uint256,uint256,uint256)
		ExchangeProxy.viewSplitExactOut(address,address,uint256,uint256)
ExchangeProxy.getPoolData(address,address,address) (contracts/Contract.sol#666-700) has external calls inside a loop: swapFee = pool.getSwapFee() (contracts/Contract.sol#678-679)
	Calls stack containing the loop:
		ExchangeProxy.smartSwapExactOut(TokenInterface,TokenInterface,uint256,uint256,uint256)
		ExchangeProxy.viewSplitExactOut(address,address,uint256,uint256)
ExchangeProxy.calcTotalOutExactOut(uint256[],ExchangeProxy.Pool[]) (contracts/Contract.sol#741-763) has external calls inside a loop: output = PoolInterface(bestPools[i].pool).calcInGivenOut(bestPools[i].tokenBalanceIn,bestPools[i].tokenWeightIn,bestPools[i].tokenBalanceOut,bestPools[i].tokenWeightOut,bestInputAmounts[i],bestPools[i].swapFee) (contracts/Contract.sol#749-758)
	Calls stack containing the loop:
		ExchangeProxy.smartSwapExactOut(TokenInterface,TokenInterface,uint256,uint256,uint256)
		ExchangeProxy.viewSplitExactOut(address,address,uint256,uint256)
ExchangeProxy.batchSwapExactOut(ExchangeProxy.Swap[],TokenInterface,TokenInterface,uint256) (contracts/Contract.sol#361-398) has external calls inside a loop: SwapTokenIn.allowance(address(this),swap.pool) > 0 (contracts/Contract.sol#377-380)
	Calls stack containing the loop:
		ExchangeProxy.smartSwapExactOut(TokenInterface,TokenInterface,uint256,uint256,uint256)
ExchangeProxy.batchSwapExactOut(ExchangeProxy.Swap[],TokenInterface,TokenInterface,uint256) (contracts/Contract.sol#361-398) has external calls inside a loop: SwapTokenIn.approve(swap.pool,0) (contracts/Contract.sol#380-382)
	Calls stack containing the loop:
		ExchangeProxy.smartSwapExactOut(TokenInterface,TokenInterface,uint256,uint256,uint256)
ExchangeProxy.batchSwapExactOut(ExchangeProxy.Swap[],TokenInterface,TokenInterface,uint256) (contracts/Contract.sol#361-398) has external calls inside a loop: SwapTokenIn.approve(swap.pool,swap.limitReturnAmount) (contracts/Contract.sol#382-384)
	Calls stack containing the loop:
		ExchangeProxy.smartSwapExactOut(TokenInterface,TokenInterface,uint256,uint256,uint256)
ExchangeProxy.batchSwapExactOut(ExchangeProxy.Swap[],TokenInterface,TokenInterface,uint256) (contracts/Contract.sol#361-398) has external calls inside a loop: (tokenAmountIn,None) = pool.swapExactAmountOut(swap.tokenIn,swap.limitReturnAmount,swap.tokenOut,swap.swapAmount,swap.maxPrice) (contracts/Contract.sol#385-392)
	Calls stack containing the loop:
		ExchangeProxy.smartSwapExactOut(TokenInterface,TokenInterface,uint256,uint256,uint256)
ExchangeProxy.getPoolData(address,address,address) (contracts/Contract.sol#666-700) has external calls inside a loop: tokenBalanceIn = pool.getBalance(tokenIn) (contracts/Contract.sol#673-674)
	Calls stack containing the loop:
		ExchangeProxy.viewSplitExactIn(address,address,uint256,uint256)
ExchangeProxy.getPoolData(address,address,address) (contracts/Contract.sol#666-700) has external calls inside a loop: tokenBalanceOut = pool.getBalance(tokenOut) (contracts/Contract.sol#675-676)
	Calls stack containing the loop:
		ExchangeProxy.viewSplitExactIn(address,address,uint256,uint256)
ExchangeProxy.getPoolData(address,address,address) (contracts/Contract.sol#666-700) has external calls inside a loop: tokenWeightIn = pool.getDenormalizedWeight(tokenIn) (contracts/Contract.sol#676-677)
	Calls stack containing the loop:
		ExchangeProxy.viewSplitExactIn(address,address,uint256,uint256)
ExchangeProxy.getPoolData(address,address,address) (contracts/Contract.sol#666-700) has external calls inside a loop: tokenWeightOut = pool.getDenormalizedWeight(tokenOut) (contracts/Contract.sol#677-678)
	Calls stack containing the loop:
		ExchangeProxy.viewSplitExactIn(address,address,uint256,uint256)
ExchangeProxy.getPoolData(address,address,address) (contracts/Contract.sol#666-700) has external calls inside a loop: swapFee = pool.getSwapFee() (contracts/Contract.sol#678-679)
	Calls stack containing the loop:
		ExchangeProxy.viewSplitExactIn(address,address,uint256,uint256)
ExchangeProxy.calcTotalOutExactIn(uint256[],ExchangeProxy.Pool[]) (contracts/Contract.sol#710-740) has external calls inside a loop: output = PoolInterface(bestPools[i].pool).calcOutGivenIn(bestPools[i].tokenBalanceIn,bestPools[i].tokenWeightIn,bestPools[i].tokenBalanceOut,bestPools[i].tokenWeightOut,bestInputAmounts[i],bestPools[i].swapFee) (contracts/Contract.sol#718-736)
	Calls stack containing the loop:
		ExchangeProxy.viewSplitExactIn(address,address,uint256,uint256)
ExchangeProxy.getPoolData(address,address,address) (contracts/Contract.sol#666-700) has external calls inside a loop: tokenBalanceIn = pool.getBalance(tokenIn) (contracts/Contract.sol#673-674)
	Calls stack containing the loop:
		ExchangeProxy.viewSplitExactOut(address,address,uint256,uint256)
ExchangeProxy.getPoolData(address,address,address) (contracts/Contract.sol#666-700) has external calls inside a loop: tokenBalanceOut = pool.getBalance(tokenOut) (contracts/Contract.sol#675-676)
	Calls stack containing the loop:
		ExchangeProxy.viewSplitExactOut(address,address,uint256,uint256)
ExchangeProxy.getPoolData(address,address,address) (contracts/Contract.sol#666-700) has external calls inside a loop: tokenWeightIn = pool.getDenormalizedWeight(tokenIn) (contracts/Contract.sol#676-677)
	Calls stack containing the loop:
		ExchangeProxy.viewSplitExactOut(address,address,uint256,uint256)
ExchangeProxy.getPoolData(address,address,address) (contracts/Contract.sol#666-700) has external calls inside a loop: tokenWeightOut = pool.getDenormalizedWeight(tokenOut) (contracts/Contract.sol#677-678)
	Calls stack containing the loop:
		ExchangeProxy.viewSplitExactOut(address,address,uint256,uint256)
ExchangeProxy.getPoolData(address,address,address) (contracts/Contract.sol#666-700) has external calls inside a loop: swapFee = pool.getSwapFee() (contracts/Contract.sol#678-679)
	Calls stack containing the loop:
		ExchangeProxy.viewSplitExactOut(address,address,uint256,uint256)
ExchangeProxy.calcTotalOutExactOut(uint256[],ExchangeProxy.Pool[]) (contracts/Contract.sol#741-763) has external calls inside a loop: output = PoolInterface(bestPools[i].pool).calcInGivenOut(bestPools[i].tokenBalanceIn,bestPools[i].tokenWeightIn,bestPools[i].tokenBalanceOut,bestPools[i].tokenWeightOut,bestInputAmounts[i],bestPools[i].swapFee) (contracts/Contract.sol#749-758)
	Calls stack containing the loop:
		ExchangeProxy.viewSplitExactOut(address,address,uint256,uint256)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation/#calls-inside-a-loop

2 different versions of Solidity are used:
	- Version constraint 0.5.12 is used by:
		-0.5.12 (contracts/Contract.sol#12-14)
	- Version constraint ^0.5.0 is used by:
		-^0.5.0 (contracts/Contract.sol#15-17)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#different-pragma-directives-are-used

Context._msgData() (contracts/Contract.sol#187-194) is never used and should be removed
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#dead-code

Version constraint 0.5.12 contains known severe issues (https://solidity.readthedocs.io/en/latest/bugs.html)
	- AbiReencodingHeadOverflowWithStaticArrayCleanup
	- DirtyBytesArrayToStorage
	- NestedCalldataArrayAbiReencodingSizeValidation
	- ABIDecodeTwoDimensionalArrayMemory
	- KeccakCaching
	- EmptyByteArrayCopy
	- DynamicArrayCleanup
	- ImplicitConstructorCallvalueCheck
	- TupleAssignmentMultiStackSlotComponents
	- MemoryArrayCreationOverflow
	- privateCanBeOverridden
	- YulOptimizerRedundantAssignmentBreakContinue0.5.
It is used by:
	- 0.5.12 (contracts/Contract.sol#12-14)
Version constraint ^0.5.0 contains known severe issues (https://solidity.readthedocs.io/en/latest/bugs.html)
	- DirtyBytesArrayToStorage
	- ABIDecodeTwoDimensionalArrayMemory
	- KeccakCaching
	- EmptyByteArrayCopy
	- DynamicArrayCleanup
	- ImplicitConstructorCallvalueCheck
	- TupleAssignmentMultiStackSlotComponents
	- MemoryArrayCreationOverflow
	- privateCanBeOverridden
	- SignedArrayStorageCopy
	- ABIEncoderV2StorageArrayWithMultiSlotElement
	- DynamicConstructorArgumentsClippedABIV2
	- UninitializedFunctionPointerInConstructor
	- IncorrectEventSignatureInLibraries
	- ABIEncoderV2PackedStorage.
It is used by:
	- ^0.5.0 (contracts/Contract.sol#15-17)
solc-0.5.12 is an outdated solc version. Use a more recent version (at least 0.8.0), if possible.
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#incorrect-versions-of-solidity

Low level call in ExchangeProxy.transferAll(TokenInterface,uint256) (contracts/Contract.sol#775-788):
	- (xfer,None) = msg.sender.call.value(amount)() (contracts/Contract.sol#782-785)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#low-level-calls

Parameter ExchangeProxy.setRegistry(address)._registry (contracts/Contract.sol#319-322) is not in mixedCase
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#conformance-to-solidity-naming-conventions

Redundant expression "this (contracts/Contract.sol#188)" inContext (contracts/Contract.sol#179-194)
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#redundant-statements

multihopBatchSwapExactIn(ExchangeProxy.Swap[][],TokenInterface,TokenInterface,uint256,uint256) should be declared external:
	- ExchangeProxy.multihopBatchSwapExactIn(ExchangeProxy.Swap[][],TokenInterface,TokenInterface,uint256,uint256) (contracts/Contract.sol#398-443)
Moreover, the following function parameters should change its data location:
swapSequences location should be calldata
multihopBatchSwapExactOut(ExchangeProxy.Swap[][],TokenInterface,TokenInterface,uint256) should be declared external:
	- ExchangeProxy.multihopBatchSwapExactOut(ExchangeProxy.Swap[][],TokenInterface,TokenInterface,uint256) (contracts/Contract.sol#443-530)
Moreover, the following function parameters should change its data location:
swapSequences location should be calldata
Reference: https://github.com/crytic/slither/wiki/Detector-Documentation#public-function-that-could-be-declared-external
. analyzed (7 contracts with 100 detectors), 89 result(s) found
Metadata
{
    "solc": {
        "status": "ok",
        "use_rc": 0,
        "version": "0.5.12",
        "strategy": "solc-select",
        "solc_path": "/var/www/tripwire/.venv/bin/solc",
        "install_rc": 0,
        "use_stderr": null,
        "use_stdout": "Switched global version to 0.5.12",
        "install_stderr": null,
        "install_stdout": "Version '0.5.12' is already installed, skipping..."
    },
    "solc_args": "--base-path /tmp/slither-ltu3tt7n --allow-paths /tmp/slither-ltu3tt7n,/tmp/slither-ltu3tt7n/lib,/tmp/slither-ltu3tt7n/src",
    "remappings": [],
    "source_files": [
        "contracts/Contract.sol"
    ],
    "contract_count": 0,
    "contract_names": [],
    "detector_count": 89,
    "workspace_hash": "84af27c9239e09fc56def6131a5ddb889976306d56553efe84504b669899b62d",
    "duration_seconds": 1.5094547271728516,
    "solc_version_requested": "0.5.12"
}

Codex

report.consolidate
Job Status
complete
Attempts
1 / 6
Findings
2
No findings?
no
Summary
Found 2 issues: multihop exact-out grants unlimited allowances to arbitrary pools, and swap functions can sweep any residual ERC20 balances by transferring full contract balances to the caller.
View stdout
{"no_findings":false,"summary":"Found 2 issues: multihop exact-out grants unlimited allowances to arbitrary pools, and swap functions can sweep any residual ERC20 balances by transferring full contract balances to the caller.","findings":[{"severity":"medium","category":"access_control","title":"Unlimited approvals to user-supplied pools allow token drain","exploit_scenario":"A caller supplies a malicious pool address in multihopBatchSwapExactOut. The proxy approves uint(-1) for tokenIn/secondSwap.tokenIn, then calls the pool. The malicious pool uses transferFrom to pull all of those tokens from the proxy (not just the intended swap amount) and returns a small tokenAmountIn so the maxTotalAmountIn check passes, stealing the caller’s funds. The unlimited approval also persists for later drains if the proxy ever holds those tokens again.","recommendation":"Avoid unlimited approvals to arbitrary pools. Approve only the exact amount needed for each swap and reset to zero afterward, or enforce that pools are from a trusted registry/whitelist before granting allowances.","evidence":"multihopBatchSwapExactOut grants uint(-1) approvals to pool addresses supplied in swapSequences without validation or revocation.","locations":["contracts/Contract.sol:510","contracts/Contract.sol:524"]},{"severity":"low","category":"access_control","title":"Public swap functions can sweep any ERC20 balance held by the proxy","exploit_scenario":"If any ERC20 tokens are accidentally sent to the proxy (or left from partial/multi-hop flows), any caller can pass empty swap arrays and set tokenIn/tokenOut to that token. The functions still call transferAll with getBalance, transferring the entire token balance to the caller, enabling theft of stranded funds.","recommendation":"Require non-empty swap arrays and only transfer the exact expected amounts (not full balances). Consider adding an owner-only token rescue function instead of letting arbitrary callers sweep balances.","evidence":"Exact-in/out functions transfer the full token balance via getBalance regardless of swaps length.","locations":["contracts/Contract.sol:369","contracts/Contract.sol:405","contracts/Contract.sol:453","contracts/Contract.sol:541"]}]}
View stderr
OpenAI Codex v0.77.0 (research preview)
--------
workdir: /tmp/codex-3bso5p8v
model: gpt-5.2-codex
provider: openai
approval: never
sandbox: read-only
reasoning effort: high
reasoning summaries: auto
session id: 019be3e5-3a7c-7611-88ea-f33cdfdf91c8
--------
user
You are a security auditor. Audit this Solidity codebase for exploitable vulnerabilities.
Focus on: reentrancy, access control, upgradeability/proxy issues, signature validation, oracle manipulation,
accounting/invariant breaks, external call patterns, unchecked return values, and dangerous delegatecall.

Scope rules:
- You MUST fully read `AUDIT_BUNDLE.txt` before concluding. It contains the complete contents of all first-party Solidity sources in this workspace.
- Treat `lib/` and `@openzeppelin/` as third-party dependencies; skip them unless there is a concrete misuse angle in first-party code.
- If there are only dependency files and no first-party sources, set no_findings=true and explain in summary.

Output MUST be valid JSON matching the provided schema.
- If you find nothing meaningful: set no_findings=true and findings=[].
- Otherwise: set no_findings=false and include findings with severity/category/title and file/line locations when possible.

Output constraints (IMPORTANT):
- severity MUST be exactly one of: info, low, medium, high, critical (lowercase).
- category MUST be exactly one of: access_control, reentrancy, math, oracle, upgradeability, auth, other.
Keep summary short and concrete.
mcp startup: no servers

thinking
**Preparing to read audit bundle**
exec
/bin/bash -lc ls in /tmp/codex-3bso5p8v succeeded in 8ms:
AUDIT_BUNDLE.txt
codex-output-schema.json
contracts
exec
/bin/bash -lc 'cat AUDIT_BUNDLE.txt' in /tmp/codex-3bso5p8v succeeded in 7ms:
This file concatenates the full contents of first-party Solidity sources for auditing.
Do not treat dependency code under lib/ or @openzeppelin/ as first-party.

================================================================================
FILE: contracts/Contract.sol
================================================================================
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.

// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
// GNU General Public License for more details.

// You should have received a copy of the GNU General Public License
// along with this program.  If not, see <http://www.gnu.org/licenses/>.

pragma solidity 0.5.12;





thinking
**Identifying potential reentrancy and payment mismatch issues**

Detected a possible reentrancy risk via external ETH transfers at the end of swaps, since no nonReentrant guards protect the functions and state tracking is minimal. Also, noticed missing validation that msg.value matches the declared ETH input amount, which could enable underpayment attacks.
thinking
**Highlighting risky unlimited approvals and token sweep vulnerabilities**

Unlimited allowances are granted to user-supplied pool addresses, enabling malicious pools to drain tokens held by the contract during swaps. Additionally, leftover or accidentally sent tokens can be fully swept by any caller in exact-out functions since transfers use full contract balances without strict accounting.
thinking
**Confirming reentrancy risk via ETH transfer and unchecked unlimited pool approvals**

Reentrancy can occur during ETH refunds via external calls without guard, potentially enabling nested swaps using contract-held tokens mid-execution. Also, unlimited token approvals to user-supplied pool addresses without validation allow malicious pools to drain tokens from the contract during swaps.
thinking
**Confirming arbitrary token sweeping via empty swap calls and pool trust assumptions**

Exact-out swap functions allow callers to drain any token balance held by the contract by submitting empty swap arrays, enabling theft of accidentally sent or leftover tokens. Also, unrestricted user-supplied pool addresses combined with unlimited approvals expose callers to token theft if they use malicious pools.
thinking
**Summarizing key low-severity issues for reporting**

Exact-out swap functions transfer the full tokenOut balance, allowing any caller to sweep stray tokens if no swaps occur, which could unintentionally drain tokens. Also, multihopBatchSwapExactOut grants unlimited approvals to user-supplied pool addresses, risking token theft if malicious pools are used. Both are low-severity but should be flagged with supporting evidence and code locations.
exec
/bin/bash -lc "nl -ba contracts/Contract.sol | sed -n '220,420p'" in /tmp/codex-3bso5p8v succeeded in 16ms:
   220	        emit OwnershipTransferred(address(0), msgSender);
   221	    }
   222	
   223	    /**
   224	     * @dev Returns the address of the current owner.
   225	     */
   226	    function owner() public view returns (address) {
   227	        return _owner;
   228	    }
   229	
   230	    /**
   231	     * @dev Throws if called by any account other than the owner.
   232	     */
   233	    modifier onlyOwner() {
   234	        require(isOwner(), "Ownable: caller is not the owner");
   235	        _;
   236	    }
   237	
   238	    /**
   239	     * @dev Returns true if the caller is the current owner.
exec
/bin/bash -lc "nl -ba contracts/Contract.sol | sed -n '420,700p'" in /tmp/codex-3bso5p8v succeeded in 7ms:
   420	
   421	        transferFromAll(tokenIn, totalAmountIn);
   422	
   423	        for (uint i = 0; i < swapSequences.length; i++) {
   424	            uint tokenAmountOut;
   425	            for (uint k = 0; k < swapSequences[i].length; k++) {
   426	                Swap memory swap = swapSequences[i][k];
   427	                TokenInterface SwapTokenIn = TokenInterface(swap.tokenIn);
   428	                if (k == 1) {
   429	                    // Makes sure that on the second swap the output of the first was used
   430	                    // so there is not intermediate token leftover
   431	                    swap.swapAmount = tokenAmountOut;
   432	                }
   433	
   434	                PoolInterface pool = PoolInterface(swap.pool);
   435	                if (SwapTokenIn.allowance(address(this), swap.pool) > 0) {
   436	                    SwapTokenIn.approve(swap.pool, 0);
   437	                }
   438	                SwapTokenIn.approve(swap.pool, swap.swapAmount);
   439	                (tokenAmountOut,) = pool.swapExactAmountIn(
exec
/bin/bash -lc "nl -ba contracts/Contract.sol | sed -n '700,900p'" in /tmp/codex-3bso5p8v succeeded in 9ms:
   700	        uint tokenWeightOut = pool.getDenormalizedWeight(tokenOut);
   701	        uint swapFee = pool.getSwapFee();
   702	
   703	        uint effectiveLiquidity = calcEffectiveLiquidity(
   704	                                            tokenWeightIn,
   705	                                            tokenBalanceOut,
   706	                                            tokenWeightOut
   707	                                        );
   708	        Pool memory returnPool = Pool({
   709	            pool: poolAddress,
   710	            tokenBalanceIn: tokenBalanceIn,
   711	            tokenWeightIn: tokenWeightIn,
   712	            tokenBalanceOut: tokenBalanceOut,
   713	            tokenWeightOut: tokenWeightOut,
   714	            swapFee: swapFee,
   715	            effectiveLiquidity: effectiveLiquidity
   716	        });
   717	
   718	        return returnPool;
   719	    }


thinking
**Summarizing two key findings**

Identified unlimited approvals to arbitrary pools with potential medium severity due to lasting approvals despite the contract's statelessness and exact-out functions enabling callers to sweep any token balances with low severity for unintended transfers.
thinking
**Detailing additional access control issues**

Found that batch swap functions allow sweeping any ERC20 token balance held by the contract via empty swap arrays, enabling unauthorized token drainage. Also confirmed unlimited approvals to user-supplied pools grant broad token spending rights, both categorized as access control risks with medium and low severities respectively.
codex
{"no_findings":false,"summary":"Found 2 issues: multihop exact-out grants unlimited allowances to arbitrary pools, and swap functions can sweep any residual ERC20 balances by transferring full contract balances to the caller.","findings":[{"severity":"medium","category":"access_control","title":"Unlimited approvals to user-supplied pools allow token drain","exploit_scenario":"A caller supplies a malicious pool address in multihopBatchSwapExactOut. The proxy approves uint(-1) for tokenIn/secondSwap.tokenIn, then calls the pool. The malicious pool uses transferFrom to pull all of those tokens from the proxy (not just the intended swap amount) and returns a small tokenAmountIn so the maxTotalAmountIn check passes, stealing the caller’s funds. The unlimited approval also persists for later drains if the proxy ever holds those tokens again.","recommendation":"Avoid unlimited approvals to arbitrary pools. Approve only the exact amount needed for each swap and reset to zero afterward, or enforce that pools are from a trusted registry/whitelist before granting allowances.","evidence":"multihopBatchSwapExactOut grants uint(-1) approvals to pool addresses supplied in swapSequences without validation or revocation.","locations":["contracts/Contract.sol:510","contracts/Contract.sol:524"]},{"severity":"low","category":"access_control","title":"Public swap functions can sweep any ERC20 balance held by the proxy","exploit_scenario":"If any ERC20 tokens are accidentally sent to the proxy (or left from partial/multi-hop flows), any caller can pass empty swap arrays and set tokenIn/tokenOut to that token. The functions still call transferAll with getBalance, transferring the entire token balance to the caller, enabling theft of stranded funds.","recommendation":"Require non-empty swap arrays and only transfer the exact expected amounts (not full balances). Consider adding an owner-only token rescue function instead of letting arbitrary callers sweep balances.","evidence":"Exact-in/out functions transfer the full token balance via getBalance regardless of swaps length.","locations":["contracts/Contract.sol:369","contracts/Contract.sol:405","contracts/Contract.sol:453","contracts/Contract.sol:541"]}]}
tokens used
46,359
Metadata
{
    "codex": {
        "ran_at": "2026-01-22T04:15:10.444513+00:00",
        "returncode": 0
    },
    "project": {
        "mode": "source",
        "file_count": 1,
        "import_count": 0,
        "first_party_contracts_count": 1
    },
    "summary": "Found 2 issues: multihop exact-out grants unlimited allowances to arbitrary pools, and swap functions can sweep any residual ERC20 balances by transferring full contract balances to the caller.",
    "raw_final": {
        "summary": "Found 2 issues: multihop exact-out grants unlimited allowances to arbitrary pools, and swap functions can sweep any residual ERC20 balances by transferring full contract balances to the caller.",
        "findings": [
            {
                "title": "Unlimited approvals to user-supplied pools allow token drain",
                "category": "access_control",
                "evidence": "multihopBatchSwapExactOut grants uint(-1) approvals to pool addresses supplied in swapSequences without validation or revocation.",
                "severity": "medium",
                "locations": [
                    "contracts/Contract.sol:510",
                    "contracts/Contract.sol:524"
                ],
                "recommendation": "Avoid unlimited approvals to arbitrary pools. Approve only the exact amount needed for each swap and reset to zero afterward, or enforce that pools are from a trusted registry/whitelist before granting allowances.",
                "exploit_scenario": "A caller supplies a malicious pool address in multihopBatchSwapExactOut. The proxy approves uint(-1) for tokenIn/secondSwap.tokenIn, then calls the pool. The malicious pool uses transferFrom to pull all of those tokens from the proxy (not just the intended swap amount) and returns a small tokenAmountIn so the maxTotalAmountIn check passes, stealing the caller\u2019s funds. The unlimited approval also persists for later drains if the proxy ever holds those tokens again."
            },
            {
                "title": "Public swap functions can sweep any ERC20 balance held by the proxy",
                "category": "access_control",
                "evidence": "Exact-in/out functions transfer the full token balance via getBalance regardless of swaps length.",
                "severity": "low",
                "locations": [
                    "contracts/Contract.sol:369",
                    "contracts/Contract.sol:405",
                    "contracts/Contract.sol:453",
                    "contracts/Contract.sol:541"
                ],
                "recommendation": "Require non-empty swap arrays and only transfer the exact expected amounts (not full balances). Consider adding an owner-only token rescue function instead of letting arbitrary callers sweep balances.",
                "exploit_scenario": "If any ERC20 tokens are accidentally sent to the proxy (or left from partial/multi-hop flows), any caller can pass empty swap arrays and set tokenIn/tokenOut to that token. The functions still call transferAll with getBalance, transferring the entire token balance to the caller, enabling theft of stranded funds."
            }
        ],
        "no_findings": false
    },
    "no_findings": false,
    "schema_version": 1
}

Opcode Heuristics

tool.cast_disasm
Delegatecall
0
Selfdestruct
0
CREATE2
0
CALL-family (heavy)
42
EXT*/BALANCE
41
Total opcodes
9228
Flags
heavy_ext_balance_usage call_family_heavy
View cast disassembly output
00000000: PUSH1 0x80
00000002: PUSH1 0x40
00000004: MSTORE
00000005: PUSH1 0x04
00000007: CALLDATASIZE
00000008: LT
00000009: PUSH2 0x00c2
0000000c: JUMPI
0000000d: PUSH1 0x00
0000000f: CALLDATALOAD
00000010: PUSH1 0xe0
00000012: SHR
00000013: DUP1
00000014: PUSH4 0x8743ad58
00000019: GT
0000001a: PUSH2 0x007f
0000001d: JUMPI
0000001e: DUP1
0000001f: PUSH4 0xa91ee0dc
00000024: GT
00000025: PUSH2 0x0059
00000028: JUMPI
00000029: DUP1
0000002a: PUSH4 0xa91ee0dc
0000002f: EQ
00000030: PUSH2 0x01cd
00000033: JUMPI
00000034: DUP1
00000035: PUSH4 0xb40f39ee
0000003a: EQ
0000003b: PUSH2 0x01ed
0000003e: JUMPI
0000003f: DUP1
00000040: PUSH4 0xe2b39746
00000045: EQ
00000046: PUSH2 0x0200
00000049: JUMPI
0000004a: DUP1
0000004b: PUSH4 0xf2fde38b
00000050: EQ
00000051: PUSH2 0x0213
00000054: JUMPI
00000055: PUSH2 0x00c2
00000058: JUMP
00000059: JUMPDEST
0000005a: DUP1
0000005b: PUSH4 0x8743ad58
00000060: EQ
00000061: PUSH2 0x0176
00000064: JUMPI
00000065: DUP1
00000066: PUSH4 0x8da5cb5b
0000006b: EQ
0000006c: PUSH2 0x0189
0000006f: JUMPI
00000070: DUP1
00000071: PUSH4 0x8f32d59b
00000076: EQ
00000077: PUSH2 0x01ab
0000007a: JUMPI
0000007b: PUSH2 0x00c2
0000007e: JUMP
0000007f: JUMPDEST
00000080: DUP1
00000081: PUSH4 0x21b0eb85
00000086: EQ
00000087: PUSH2 0x00c4
0000008a: JUMPI
0000008b: DUP1
0000008c: PUSH4 0x2db58134
00000091: EQ
00000092: PUSH2 0x00ed
00000095: JUMPI
00000096: DUP1
00000097: PUSH4 0x368bb1fc
0000009c: EQ
0000009d: PUSH2 0x0100
000000a0: JUMPI
000000a1: DUP1
000000a2: PUSH4 0x4b0f93fb
000000a7: EQ
000000a8: PUSH2 0x012e
000000ab: JUMPI
000000ac: DUP1
000000ad: PUSH4 0x715018a6
000000b2: EQ
000000b3: PUSH2 0x014e
000000b6: JUMPI
000000b7: DUP1
000000b8: PUSH4 0x86b2ecc4
000000bd: EQ
000000be: PUSH2 0x0163
000000c1: JUMPI
000000c2: JUMPDEST
000000c3: STOP
000000c4: JUMPDEST
000000c5: PUSH2 0x00d7
000000c8: PUSH2 0x00d2
000000cb: CALLDATASIZE
000000cc: PUSH1 0x04
000000ce: PUSH2 0x2d41
000000d1: JUMP
000000d2: JUMPDEST
000000d3: PUSH2 0x0233
000000d6: JUMP
000000d7: JUMPDEST
000000d8: PUSH1 0x40
000000da: MLOAD
000000db: PUSH2 0x00e4
000000de: SWAP2
000000df: SWAP1
000000e0: PUSH2 0x32b5
000000e3: JUMP
000000e4: JUMPDEST
000000e5: PUSH1 0x40
000000e7: MLOAD
000000e8: DUP1
000000e9: SWAP2
000000ea: SUB
000000eb: SWAP1
000000ec: RETURN
000000ed: JUMPDEST
000000ee: PUSH2 0x00d7
000000f1: PUSH2 0x00fb
000000f4: CALLDATASIZE
000000f5: PUSH1 0x04
000000f7: PUSH2 0x2caf
000000fa: JUMP
000000fb: JUMPDEST
000000fc: PUSH2 0x02b4
000000ff: JUMP
00000100: JUMPDEST
00000101: CALLVALUE
00000102: DUP1
00000103: ISZERO
00000104: PUSH2 0x010c
00000107: JUMPI
00000108: PUSH1 0x00
0000010a: DUP1
0000010b: REVERT
0000010c: JUMPDEST
0000010d: POP
0000010e: PUSH2 0x0120
00000111: PUSH2 0x011b
00000114: CALLDATASIZE
00000115: PUSH1 0x04
00000117: PUSH2 0x2b32
0000011a: JUMP
0000011b: JUMPDEST
0000011c: PUSH2 0x059a
0000011f: JUMP
00000120: JUMPDEST
00000121: PUSH1 0x40
00000123: MLOAD
00000124: PUSH2 0x00e4
00000127: SWAP3
00000128: SWAP2
00000129: SWAP1
0000012a: PUSH2 0x31f6
0000012d: JUMP
0000012e: JUMPDEST
0000012f: CALLVALUE
00000130: DUP1
00000131: ISZERO
00000132: PUSH2 0x013a
00000135: JUMPI
00000136: PUSH1 0x00
00000138: DUP1
00000139: REVERT
0000013a: JUMPDEST
0000013b: POP
0000013c: PUSH2 0x0120
0000013f: PUSH2 0x0149
00000142: CALLDATASIZE
00000143: PUSH1 0x04
00000145: PUSH2 0x2b32
00000148: JUMP
00000149: JUMPDEST
0000014a: PUSH2 0x0947
0000014d: JUMP
0000014e: JUMPDEST
0000014f: CALLVALUE
00000150: DUP1
00000151: ISZERO
00000152: PUSH2 0x015a
00000155: JUMPI
00000156: PUSH1 0x00
00000158: DUP1
00000159: REVERT
0000015a: JUMPDEST
0000015b: POP
0000015c: PUSH2 0x00c2
0000015f: PUSH2 0x0c37
00000162: JUMP
00000163: JUMPDEST
00000164: PUSH2 0x00d7
00000167: PUSH2 0x0171
0000016a: CALLDATASIZE
0000016b: PUSH1 0x04
0000016d: PUSH2 0x2bc8
00000170: JUMP
00000171: JUMPDEST
00000172: PUSH2 0x0ca5
00000175: JUMP
00000176: JUMPDEST
00000177: PUSH2 0x00d7
0000017a: PUSH2 0x0184
0000017d: CALLDATASIZE
0000017e: PUSH1 0x04
00000180: PUSH2 0x2ce8
00000183: JUMP
00000184: JUMPDEST
00000185: PUSH2 0x1632
00000188: JUMP
00000189: JUMPDEST
0000018a: CALLVALUE
0000018b: DUP1
0000018c: ISZERO
0000018d: PUSH2 0x0195
00000190: JUMPI
00000191: PUSH1 0x00
00000193: DUP1
00000194: REVERT
00000195: JUMPDEST
00000196: POP
00000197: PUSH2 0x019e
0000019a: PUSH2 0x1908
0000019d: JUMP
0000019e: JUMPDEST
0000019f: PUSH1 0x40
000001a1: MLOAD
000001a2: PUSH2 0x00e4
000001a5: SWAP2
000001a6: SWAP1
000001a7: PUSH2 0x30ec
000001aa: JUMP
000001ab: JUMPDEST
000001ac: CALLVALUE
000001ad: DUP1
000001ae: ISZERO
000001af: PUSH2 0x01b7
000001b2: JUMPI
000001b3: PUSH1 0x00
000001b5: DUP1
000001b6: REVERT
000001b7: JUMPDEST
000001b8: POP
000001b9: PUSH2 0x01c0
000001bc: PUSH2 0x1917
000001bf: JUMP
000001c0: JUMPDEST
000001c1: PUSH1 0x40
000001c3: MLOAD
000001c4: PUSH2 0x00e4
000001c7: SWAP2
000001c8: SWAP1
000001c9: PUSH2 0x3216
000001cc: JUMP
000001cd: JUMPDEST
000001ce: CALLVALUE
000001cf: DUP1
000001d0: ISZERO
000001d1: PUSH2 0x01d9
000001d4: JUMPI
000001d5: PUSH1 0x00
000001d7: DUP1
000001d8: REVERT
000001d9: JUMPDEST
000001da: POP
000001db: PUSH2 0x00c2
000001de: PUSH2 0x01e8
000001e1: CALLDATASIZE
000001e2: PUSH1 0x04
000001e4: PUSH2 0x2b14
000001e7: JUMP
000001e8: JUMPDEST
000001e9: PUSH2 0x193b
000001ec: JUMP
000001ed: JUMPDEST
000001ee: PUSH2 0x00d7
000001f1: PUSH2 0x01fb
000001f4: CALLDATASIZE
000001f5: PUSH1 0x04
000001f7: PUSH2 0x2d41
000001fa: JUMP
000001fb: JUMPDEST
000001fc: PUSH2 0x1981
000001ff: JUMP
00000200: JUMPDEST
00000201: PUSH2 0x00d7
00000204: PUSH2 0x020e
00000207: CALLDATASIZE
00000208: PUSH1 0x04
0000020a: PUSH2 0x2c23
0000020d: JUMP
0000020e: JUMPDEST
0000020f: PUSH2 0x19f6
00000212: JUMP
00000213: JUMPDEST
00000214: CALLVALUE
00000215: DUP1
00000216: ISZERO
00000217: PUSH2 0x021f
0000021a: JUMPI
0000021b: PUSH1 0x00
0000021d: DUP1
0000021e: REVERT
0000021f: JUMPDEST
00000220: POP
00000221: PUSH2 0x00c2
00000224: PUSH2 0x022e
00000227: CALLDATASIZE
00000228: PUSH1 0x04
0000022a: PUSH2 0x2b14
0000022d: JUMP
0000022e: JUMPDEST
0000022f: PUSH2 0x1cd2
00000232: JUMP
00000233: JUMPDEST
00000234: PUSH1 0x00
00000236: PUSH1 0x60
00000238: PUSH2 0x0240
0000023b: DUP8
0000023c: PUSH2 0x1d02
0000023f: JUMP
00000240: JUMPDEST
00000241: ISZERO
00000242: PUSH2 0x0265
00000245: JUMPI
00000246: PUSH1 0x01
00000248: SLOAD
00000249: PUSH2 0x025d
0000024c: SWAP1
0000024d: PUSH1 0x01
0000024f: PUSH1 0x01
00000251: PUSH1 0xa0
00000253: SHL
00000254: SUB
00000255: AND
00000256: DUP8
00000257: DUP8
00000258: DUP7
00000259: PUSH2 0x0947
0000025c: JUMP
0000025d: JUMPDEST
0000025e: POP
0000025f: SWAP1
00000260: POP
00000261: PUSH2 0x029c
00000264: JUMP
00000265: JUMPDEST
00000266: PUSH2 0x026e
00000269: DUP7
0000026a: PUSH2 0x1d02
0000026d: JUMP
0000026e: JUMPDEST
0000026f: ISZERO
00000270: PUSH2 0x028c
00000273: JUMPI
00000274: PUSH1 0x01
00000276: SLOAD
00000277: PUSH2 0x025d
0000027a: SWAP1
0000027b: DUP9
0000027c: SWAP1
0000027d: PUSH1 0x01
0000027f: PUSH1 0x01
00000281: PUSH1 0xa0
00000283: SHL
00000284: SUB
00000285: AND
00000286: DUP8
00000287: DUP7
00000288: PUSH2 0x0947
0000028b: JUMP
0000028c: JUMPDEST
0000028d: PUSH2 0x0298
00000290: DUP8
00000291: DUP8
00000292: DUP8
00000293: DUP7
00000294: PUSH2 0x0947
00000297: JUMP
00000298: JUMPDEST
00000299: POP
0000029a: SWAP1
0000029b: POP
0000029c: JUMPDEST
0000029d: PUSH2 0x02a9
000002a0: DUP2
000002a1: DUP9
000002a2: DUP9
000002a3: DUP9
000002a4: DUP9
000002a5: PUSH2 0x1632
000002a8: JUMP
000002a9: JUMPDEST
000002aa: SWAP8
000002ab: SWAP7
000002ac: POP
000002ad: POP
000002ae: POP
000002af: POP
000002b0: POP
000002b1: POP
000002b2: POP
000002b3: JUMP
000002b4: JUMPDEST
000002b5: PUSH1 0x00
000002b7: PUSH2 0x02c0
000002ba: DUP5
000002bb: DUP4
000002bc: PUSH2 0x1d28
000002bf: JUMP
000002c0: JUMPDEST
000002c1: POP
000002c2: PUSH1 0x00
000002c4: JUMPDEST
000002c5: DUP6
000002c6: MLOAD
000002c7: DUP2
000002c8: LT
000002c9: ISZERO
000002ca: PUSH2 0x0547
000002cd: JUMPI
000002ce: PUSH2 0x02d5
000002d1: PUSH2 0x27e4
000002d4: JUMP
000002d5: JUMPDEST
000002d6: DUP7
000002d7: DUP3
000002d8: DUP2
000002d9: MLOAD
000002da: DUP2
000002db: LT
000002dc: PUSH2 0x02e1
000002df: JUMPI
000002e0: INVALID
000002e1: JUMPDEST
000002e2: PUSH1 0x20
000002e4: SWAP1
000002e5: DUP2
000002e6: MUL
000002e7: SWAP2
000002e8: SWAP1
000002e9: SWAP2
000002ea: ADD
000002eb: DUP2
000002ec: ADD
000002ed: MLOAD
000002ee: SWAP1
000002ef: DUP2
000002f0: ADD
000002f1: MLOAD
000002f2: DUP2
000002f3: MLOAD
000002f4: PUSH1 0x40
000002f6: MLOAD
000002f7: PUSH4 0x6eb1769f
000002fc: PUSH1 0xe1
000002fe: SHL
000002ff: DUP2
00000300: MSTORE
00000301: SWAP3
00000302: SWAP4
00000303: POP
00000304: SWAP1
00000305: SWAP2
00000306: PUSH1 0x00
00000308: SWAP1
00000309: PUSH1 0x01
0000030b: PUSH1 0x01
0000030d: PUSH1 0xa0
0000030f: SHL
00000310: SUB
00000311: DUP5
00000312: AND
00000313: SWAP1
00000314: PUSH4 0xdd62ed3e
00000319: SWAP1
0000031a: PUSH2 0x0329
0000031d: SWAP1
0000031e: ADDRESS
0000031f: SWAP1
00000320: DUP7
00000321: SWAP1
00000322: PUSH1 0x04
00000324: ADD
00000325: PUSH2 0x3108
00000328: JUMP
00000329: JUMPDEST
0000032a: PUSH1 0x20
0000032c: PUSH1 0x40
0000032e: MLOAD
0000032f: DUP1
00000330: DUP4
00000331: SUB
00000332: DUP2
00000333: DUP7
00000334: DUP1
00000335: EXTCODESIZE
00000336: ISZERO
00000337: DUP1
00000338: ISZERO
00000339: PUSH2 0x0341
0000033c: JUMPI
0000033d: PUSH1 0x00
0000033f: DUP1
00000340: REVERT
00000341: JUMPDEST
00000342: POP
00000343: GAS
00000344: STATICCALL
00000345: ISZERO
00000346: DUP1
00000347: ISZERO
00000348: PUSH2 0x0355
0000034b: JUMPI
0000034c: RETURNDATASIZE
0000034d: PUSH1 0x00
0000034f: DUP1
00000350: RETURNDATACOPY
00000351: RETURNDATASIZE
00000352: PUSH1 0x00
00000354: REVERT
00000355: JUMPDEST
00000356: POP
00000357: POP
00000358: POP
00000359: POP
0000035a: PUSH1 0x40
0000035c: MLOAD
0000035d: RETURNDATASIZE
0000035e: PUSH1 0x1f
00000360: NOT
00000361: PUSH1 0x1f
00000363: DUP3
00000364: ADD
00000365: AND
00000366: DUP3
00000367: ADD
00000368: DUP1
00000369: PUSH1 0x40
0000036b: MSTORE
0000036c: POP
0000036d: PUSH2 0x0379
00000370: SWAP2
00000371: SWAP1
00000372: DUP2
00000373: ADD
00000374: SWAP1
00000375: PUSH2 0x2d87
00000378: JUMP
00000379: JUMPDEST
0000037a: GT
0000037b: ISZERO
0000037c: PUSH2 0x0403
0000037f: JUMPI
00000380: DUP3
00000381: MLOAD
00000382: PUSH1 0x40
00000384: MLOAD
00000385: PUSH4 0x095ea7b3
0000038a: PUSH1 0xe0
0000038c: SHL
0000038d: DUP2
0000038e: MSTORE
0000038f: PUSH1 0x01
00000391: PUSH1 0x01
00000393: PUSH1 0xa0
00000395: SHL
00000396: SUB
00000397: DUP5
00000398: AND
00000399: SWAP2
0000039a: PUSH4 0x095ea7b3
0000039f: SWAP2
000003a0: PUSH2 0x03af
000003a3: SWAP2
000003a4: SWAP1
000003a5: PUSH1 0x00
000003a7: SWAP1
000003a8: PUSH1 0x04
000003aa: ADD
000003ab: PUSH2 0x3181
000003ae: JUMP
000003af: JUMPDEST
000003b0: PUSH1 0x20
000003b2: PUSH1 0x40
000003b4: MLOAD
000003b5: DUP1
000003b6: DUP4
000003b7: SUB
000003b8: DUP2
000003b9: PUSH1 0x00
000003bb: DUP8
000003bc: DUP1
000003bd: EXTCODESIZE
000003be: ISZERO
000003bf: DUP1
000003c0: ISZERO
000003c1: PUSH2 0x03c9
000003c4: JUMPI
000003c5: PUSH1 0x00
000003c7: DUP1
000003c8: REVERT
000003c9: JUMPDEST
000003ca: POP
000003cb: GAS
000003cc: CALL
000003cd: ISZERO
000003ce: DUP1
000003cf: ISZERO
000003d0: PUSH2 0x03dd
000003d3: JUMPI
000003d4: RETURNDATASIZE
000003d5: PUSH1 0x00
000003d7: DUP1
000003d8: RETURNDATACOPY
000003d9: RETURNDATASIZE
000003da: PUSH1 0x00
000003dc: REVERT
000003dd: JUMPDEST
000003de: POP
000003df: POP
000003e0: POP
000003e1: POP
000003e2: PUSH1 0x40
000003e4: MLOAD
000003e5: RETURNDATASIZE
000003e6: PUSH1 0x1f
000003e8: NOT
000003e9: PUSH1 0x1f
000003eb: DUP3
000003ec: ADD
000003ed: AND
000003ee: DUP3
000003ef: ADD
000003f0: DUP1
000003f1: PUSH1 0x40
000003f3: MSTORE
000003f4: POP
000003f5: PUSH2 0x0401
000003f8: SWAP2
000003f9: SWAP1
000003fa: DUP2
000003fb: ADD
000003fc: SWAP1
000003fd: PUSH2 0x2d23
00000400: JUMP
00000401: JUMPDEST
00000402: POP
00000403: JUMPDEST
00000404: DUP3
00000405: MLOAD
00000406: PUSH1 0x80
00000408: DUP5
00000409: ADD
0000040a: MLOAD
0000040b: PUSH1 0x40
0000040d: MLOAD
0000040e: PUSH4 0x095ea7b3
00000413: PUSH1 0xe0
00000415: SHL
00000416: DUP2
00000417: MSTORE
00000418: PUSH1 0x01
0000041a: PUSH1 0x01
0000041c: PUSH1 0xa0
0000041e: SHL
0000041f: SUB
00000420: DUP6
00000421: AND
00000422: SWAP3
00000423: PUSH4 0x095ea7b3
00000428: SWAP3
00000429: PUSH2 0x0434
0000042c: SWAP3
0000042d: PUSH1 0x04
0000042f: ADD
00000430: PUSH2 0x319c
00000433: JUMP
00000434: JUMPDEST
00000435: PUSH1 0x20
00000437: PUSH1 0x40
00000439: MLOAD
0000043a: DUP1
0000043b: DUP4
0000043c: SUB
0000043d: DUP2
0000043e: PUSH1 0x00
00000440: DUP8
00000441: DUP1
00000442: EXTCODESIZE
00000443: ISZERO
00000444: DUP1
00000445: ISZERO
00000446: PUSH2 0x044e
00000449: JUMPI
0000044a: PUSH1 0x00
0000044c: DUP1
0000044d: REVERT
0000044e: JUMPDEST
0000044f: POP
00000450: GAS
00000451: CALL
00000452: ISZERO
00000453: DUP1
00000454: ISZERO
00000455: PUSH2 0x0462
00000458: JUMPI
00000459: RETURNDATASIZE
0000045a: PUSH1 0x00
0000045c: DUP1
0000045d: RETURNDATACOPY
0000045e: RETURNDATASIZE
0000045f: PUSH1 0x00
00000461: REVERT
00000462: JUMPDEST
00000463: POP
00000464: POP
00000465: POP
00000466: POP
00000467: PUSH1 0x40
00000469: MLOAD
0000046a: RETURNDATASIZE
0000046b: PUSH1 0x1f
0000046d: NOT
0000046e: PUSH1 0x1f
00000470: DUP3
00000471: ADD
00000472: AND
00000473: DUP3
00000474: ADD
00000475: DUP1
00000476: PUSH1 0x40
00000478: MSTORE
00000479: POP
0000047a: PUSH2 0x0486
0000047d: SWAP2
0000047e: SWAP1
0000047f: DUP2
00000480: ADD
00000481: SWAP1
00000482: PUSH2 0x2d23
00000485: JUMP
00000486: JUMPDEST
00000487: POP
00000488: PUSH1 0x20
0000048a: DUP4
0000048b: ADD
0000048c: MLOAD
0000048d: PUSH1 0x80
0000048f: DUP5
00000490: ADD
00000491: MLOAD
00000492: PUSH1 0x40
00000494: DUP1
00000495: DUP7
00000496: ADD
00000497: MLOAD
00000498: PUSH1 0x60
0000049a: DUP8
0000049b: ADD
0000049c: MLOAD
0000049d: PUSH1 0xa0
0000049f: DUP9
000004a0: ADD
000004a1: MLOAD
000004a2: SWAP3
000004a3: MLOAD
000004a4: PUSH4 0x1f17a7a9
000004a9: PUSH1 0xe2
000004ab: SHL
000004ac: DUP2
000004ad: MSTORE
000004ae: PUSH1 0x00
000004b0: SWAP6
000004b1: PUSH1 0x01
000004b3: PUSH1 0x01
000004b5: PUSH1 0xa0
000004b7: SHL
000004b8: SUB
000004b9: DUP9
000004ba: AND
000004bb: SWAP6
000004bc: PUSH4 0x7c5e9ea4
000004c1: SWAP6
000004c2: PUSH2 0x04d1
000004c5: SWAP6
000004c6: SWAP3
000004c7: SWAP5
000004c8: SWAP2
000004c9: SWAP4
000004ca: PUSH1 0x04
000004cc: ADD
000004cd: PUSH2 0x31aa
000004d0: JUMP
000004d1: JUMPDEST
000004d2: PUSH1 0x40
000004d4: DUP1
000004d5: MLOAD
000004d6: DUP1
000004d7: DUP4
000004d8: SUB
000004d9: DUP2
000004da: PUSH1 0x00
000004dc: DUP8
000004dd: DUP1
000004de: EXTCODESIZE
000004df: ISZERO
000004e0: DUP1
000004e1: ISZERO
000004e2: PUSH2 0x04ea
000004e5: JUMPI
000004e6: PUSH1 0x00
000004e8: DUP1
000004e9: REVERT
000004ea: JUMPDEST
000004eb: POP
000004ec: GAS
000004ed: CALL
000004ee: ISZERO
000004ef: DUP1
000004f0: ISZERO
000004f1: PUSH2 0x04fe
000004f4: JUMPI
000004f5: RETURNDATASIZE
000004f6: PUSH1 0x00
000004f8: DUP1
000004f9: RETURNDATACOPY
000004fa: RETURNDATASIZE
000004fb: PUSH1 0x00
000004fd: REVERT
000004fe: JUMPDEST
000004ff: POP
00000500: POP
00000501: POP
00000502: POP
00000503: PUSH1 0x40
00000505: MLOAD
00000506: RETURNDATASIZE
00000507: PUSH1 0x1f
00000509: NOT
0000050a: PUSH1 0x1f
0000050c: DUP3
0000050d: ADD
0000050e: AND
0000050f: DUP3
00000510: ADD
00000511: DUP1
00000512: PUSH1 0x40
00000514: MSTORE
00000515: POP
00000516: PUSH2 0x0522
00000519: SWAP2
0000051a: SWAP1
0000051b: DUP2
0000051c: ADD
0000051d: SWAP1
0000051e: PUSH2 0x2da5
00000521: JUMP
00000522: JUMPDEST
00000523: POP
00000524: SWAP1
00000525: POP
00000526: PUSH2 0x0535
00000529: DUP2
0000052a: DUP8
0000052b: PUSH4 0xffffffff
00000530: PUSH2 0x1e4a
00000533: AND
00000534: JUMP
00000535: JUMPDEST
00000536: SWAP6
00000537: POP
00000538: POP
00000539: PUSH1 0x01
0000053b: SWAP1
0000053c: SWAP4
0000053d: ADD
0000053e: SWAP3
0000053f: POP
00000540: PUSH2 0x02c4
00000543: SWAP2
00000544: POP
00000545: POP
00000546: JUMP
00000547: JUMPDEST
00000548: POP
00000549: DUP2
0000054a: DUP2
0000054b: GT
0000054c: ISZERO
0000054d: PUSH2 0x0571
00000550: JUMPI
00000551: PUSH1 0x40
00000553: MLOAD
00000554: PUSH3 0x461bcd
00000558: PUSH1 0xe5
0000055a: SHL
0000055b: DUP2
0000055c: MSTORE
0000055d: PUSH1 0x04
0000055f: ADD
00000560: PUSH2 0x0568
00000563: SWAP1
00000564: PUSH2 0x3265
00000567: JUMP
00000568: JUMPDEST
00000569: PUSH1 0x40
0000056b: MLOAD
0000056c: DUP1
0000056d: SWAP2
0000056e: SUB
0000056f: SWAP1
00000570: REVERT
00000571: JUMPDEST
00000572: PUSH2 0x0583
00000575: DUP4
00000576: PUSH2 0x057e
00000579: DUP6
0000057a: PUSH2 0x1e76
0000057d: JUMP
0000057e: JUMPDEST
0000057f: PUSH2 0x1f39
00000582: JUMP
00000583: JUMPDEST
00000584: POP
00000585: PUSH2 0x0591
00000588: DUP5
00000589: PUSH2 0x057e
0000058c: DUP7
0000058d: PUSH2 0x1e76
00000590: JUMP
00000591: JUMPDEST
00000592: POP
00000593: SWAP5
00000594: SWAP4
00000595: POP
00000596: POP
00000597: POP
00000598: POP
00000599: JUMP
0000059a: JUMPDEST
0000059b: PUSH1 0x02
0000059d: SLOAD
0000059e: PUSH1 0x40
000005a0: MLOAD
000005a1: PUSH4 0xbfdbfc43
000005a6: PUSH1 0xe0
000005a8: SHL
000005a9: DUP2
000005aa: MSTORE
000005ab: PUSH1 0x60
000005ad: SWAP2
000005ae: PUSH1 0x00
000005b0: SWAP2
000005b1: DUP4
000005b2: SWAP2
000005b3: PUSH1 0x01
000005b5: PUSH1 0x01
000005b7: PUSH1 0xa0
000005b9: SHL
000005ba: SUB
000005bb: AND
000005bc: SWAP1
000005bd: PUSH4 0xbfdbfc43
000005c2: SWAP1
000005c3: PUSH2 0x05d4
000005c6: SWAP1
000005c7: DUP11
000005c8: SWAP1
000005c9: DUP11
000005ca: SWAP1
000005cb: DUP10
000005cc: SWAP1
000005cd: PUSH1 0x04
000005cf: ADD
000005d0: PUSH2 0x3166
000005d3: JUMP
000005d4: JUMPDEST
000005d5: PUSH1 0x00
000005d7: PUSH1 0x40
000005d9: MLOAD
000005da: DUP1
000005db: DUP4
000005dc: SUB
000005dd: DUP2
000005de: DUP7
000005df: DUP1
000005e0: EXTCODESIZE
000005e1: ISZERO
000005e2: DUP1
000005e3: ISZERO
000005e4: PUSH2 0x05ec
000005e7: JUMPI
000005e8: PUSH1 0x00
000005ea: DUP1
000005eb: REVERT
000005ec: JUMPDEST
000005ed: POP
000005ee: GAS
000005ef: STATICCALL
000005f0: ISZERO
000005f1: DUP1
000005f2: ISZERO
000005f3: PUSH2 0x0600
000005f6: JUMPI
000005f7: RETURNDATASIZE
000005f8: PUSH1 0x00
000005fa: DUP1
000005fb: RETURNDATACOPY
000005fc: RETURNDATASIZE
000005fd: PUSH1 0x00
000005ff: REVERT
00000600: JUMPDEST
00000601: POP
00000602: POP
00000603: POP
00000604: POP
00000605: PUSH1 0x40
00000607: MLOAD
00000608: RETURNDATASIZE
00000609: PUSH1 0x00
0000060b: DUP3
0000060c: RETURNDATACOPY
0000060d: PUSH1 0x1f
0000060f: RETURNDATASIZE
00000610: SWAP1
00000611: DUP2
00000612: ADD
00000613: PUSH1 0x1f
00000615: NOT
00000616: AND
00000617: DUP3
00000618: ADD
00000619: PUSH1 0x40
0000061b: MSTORE
0000061c: PUSH2 0x0628
0000061f: SWAP2
00000620: SWAP1
00000621: DUP2
00000622: ADD
00000623: SWAP1
00000624: PUSH2 0x2b93
00000627: JUMP
00000628: JUMPDEST
00000629: SWAP1
0000062a: POP
0000062b: PUSH1 0x60
0000062d: DUP2
0000062e: MLOAD
0000062f: PUSH1 0x40
00000631: MLOAD
00000632: SWAP1
00000633: DUP1
00000634: DUP3
00000635: MSTORE
00000636: DUP1
00000637: PUSH1 0x20
00000639: MUL
0000063a: PUSH1 0x20
0000063c: ADD
0000063d: DUP3
0000063e: ADD
0000063f: PUSH1 0x40
00000641: MSTORE
00000642: DUP1
00000643: ISZERO
00000644: PUSH2 0x0667
00000647: JUMPI
00000648: DUP2
00000649: PUSH1 0x20
0000064b: ADD
0000064c: JUMPDEST
0000064d: PUSH2 0x0654
00000650: PUSH2 0x2835
00000653: JUMP
00000654: JUMPDEST
00000655: DUP2
00000656: MSTORE
00000657: PUSH1 0x20
00000659: ADD
0000065a: SWAP1
0000065b: PUSH1 0x01
0000065d: SWAP1
0000065e: SUB
0000065f: SWAP1
00000660: DUP2
00000661: PUSH2 0x064c
00000664: JUMPI
00000665: SWAP1
00000666: POP
00000667: JUMPDEST
00000668: POP
00000669: SWAP1
0000066a: POP
0000066b: PUSH1 0x00
0000066d: DUP1
0000066e: JUMPDEST
0000066f: DUP4
00000670: MLOAD
00000671: DUP2
00000672: LT
00000673: ISZERO
00000674: PUSH2 0x06e0
00000677: JUMPI
00000678: PUSH2 0x0695
0000067b: DUP11
0000067c: DUP11
0000067d: DUP7
0000067e: DUP5
0000067f: DUP2
00000680: MLOAD
00000681: DUP2
00000682: LT
00000683: PUSH2 0x0688
00000686: JUMPI
00000687: INVALID
00000688: JUMPDEST
00000689: PUSH1 0x20
0000068b: MUL
0000068c: PUSH1 0x20
0000068e: ADD
0000068f: ADD
00000690: MLOAD
00000691: PUSH2 0x2068
00000694: JUMP
00000695: JUMPDEST
00000696: DUP4
00000697: DUP3
00000698: DUP2
00000699: MLOAD
0000069a: DUP2
0000069b: LT
0000069c: PUSH2 0x06a1
0000069f: JUMPI
000006a0: INVALID
000006a1: JUMPDEST
000006a2: PUSH1 0x20
000006a4: MUL
000006a5: PUSH1 0x20
000006a7: ADD
000006a8: ADD
000006a9: DUP2
000006aa: SWAP1
000006ab: MSTORE
000006ac: POP
000006ad: PUSH2 0x06d6
000006b0: DUP4
000006b1: DUP3
000006b2: DUP2
000006b3: MLOAD
000006b4: DUP2
000006b5: LT
000006b6: PUSH2 0x06bb
000006b9: JUMPI
000006ba: INVALID
000006bb: JUMPDEST
000006bc: PUSH1 0x20
000006be: MUL
000006bf: PUSH1 0x20
000006c1: ADD
000006c2: ADD
000006c3: MLOAD
000006c4: PUSH1 0xc0
000006c6: ADD
000006c7: MLOAD
000006c8: DUP4
000006c9: PUSH2 0x1e4a
000006cc: SWAP1
000006cd: SWAP2
000006ce: SWAP1
000006cf: PUSH4 0xffffffff
000006d4: AND
000006d5: JUMP
000006d6: JUMPDEST
000006d7: SWAP2
000006d8: POP
000006d9: PUSH1 0x01
000006db: ADD
000006dc: PUSH2 0x066e
000006df: JUMP
000006e0: JUMPDEST
000006e1: POP
000006e2: PUSH1 0x60
000006e4: DUP3
000006e5: MLOAD
000006e6: PUSH1 0x40
000006e8: MLOAD
000006e9: SWAP1
000006ea: DUP1
000006eb: DUP3
000006ec: MSTORE
000006ed: DUP1
000006ee: PUSH1 0x20
000006f0: MUL
000006f1: PUSH1 0x20
000006f3: ADD
000006f4: DUP3
000006f5: ADD
000006f6: PUSH1 0x40
000006f8: MSTORE
000006f9: DUP1
000006fa: ISZERO
000006fb: PUSH2 0x070e
000006fe: JUMPI
000006ff: DUP2
00000700: PUSH1 0x20
00000702: ADD
00000703: PUSH1 0x20
00000705: DUP3
00000706: MUL
00000707: DUP1
00000708: CODESIZE
00000709: DUP4
0000070a: CODECOPY
0000070b: ADD
0000070c: SWAP1
0000070d: POP
0000070e: JUMPDEST
0000070f: POP
00000710: SWAP1
00000711: POP
00000712: PUSH1 0x00
00000714: DUP1
00000715: JUMPDEST
00000716: DUP5
00000717: MLOAD
00000718: DUP2
00000719: LT
0000071a: ISZERO
0000071b: PUSH2 0x07a0
0000071e: JUMPI
0000071f: PUSH2 0x0758
00000722: DUP5
00000723: PUSH2 0x074c
00000726: DUP8
00000727: DUP5
00000728: DUP2
00000729: MLOAD
0000072a: DUP2
0000072b: LT
0000072c: PUSH2 0x0731
0000072f: JUMPI
00000730: INVALID
00000731: JUMPDEST
00000732: PUSH1 0x20
00000734: MUL
00000735: PUSH1 0x20
00000737: ADD
00000738: ADD
00000739: MLOAD
0000073a: PUSH1 0xc0
0000073c: ADD
0000073d: MLOAD
0000073e: DUP14
0000073f: PUSH2 0x2348
00000742: SWAP1
00000743: SWAP2
00000744: SWAP1
00000745: PUSH4 0xffffffff
0000074a: AND
0000074b: JUMP
0000074c: JUMPDEST
0000074d: SWAP1
0000074e: PUSH4 0xffffffff
00000753: PUSH2 0x2382
00000756: AND
00000757: JUMP
00000758: JUMPDEST
00000759: DUP4
0000075a: DUP3
0000075b: DUP2
0000075c: MLOAD
0000075d: DUP2
0000075e: LT
0000075f: PUSH2 0x0764
00000762: JUMPI
00000763: INVALID
00000764: JUMPDEST
00000765: PUSH1 0x20
00000767: MUL
00000768: PUSH1 0x20
0000076a: ADD
0000076b: ADD
0000076c: DUP2
0000076d: DUP2
0000076e: MSTORE
0000076f: POP
00000770: POP
00000771: PUSH2 0x0796
00000774: DUP4
00000775: DUP3
00000776: DUP2
00000777: MLOAD
00000778: DUP2
00000779: LT
0000077a: PUSH2 0x077f
0000077d: JUMPI
0000077e: INVALID
0000077f: JUMPDEST
00000780: PUSH1 0x20
00000782: MUL
00000783: PUSH1 0x20
00000785: ADD
00000786: ADD
00000787: MLOAD
00000788: DUP4
00000789: PUSH2 0x1e4a
0000078c: SWAP1
0000078d: SWAP2
0000078e: SWAP1
0000078f: PUSH4 0xffffffff
00000794: AND
00000795: JUMP
00000796: JUMPDEST
00000797: SWAP2
00000798: POP
00000799: PUSH1 0x01
0000079b: ADD
0000079c: PUSH2 0x0715
0000079f: JUMP
000007a0: JUMPDEST
000007a1: POP
000007a2: DUP9
000007a3: DUP2
000007a4: LT
000007a5: ISZERO
000007a6: PUSH2 0x07fd
000007a9: JUMPI
000007aa: PUSH2 0x07df
000007ad: PUSH2 0x07bc
000007b0: DUP11
000007b1: DUP4
000007b2: PUSH4 0xffffffff
000007b7: PUSH2 0x23c4
000007ba: AND
000007bb: JUMP
000007bc: JUMPDEST
000007bd: DUP4
000007be: PUSH1 0x00
000007c0: DUP2
000007c1: MLOAD
000007c2: DUP2
000007c3: LT
000007c4: PUSH2 0x07c9
000007c7: JUMPI
000007c8: INVALID
000007c9: JUMPDEST
000007ca: PUSH1 0x20
000007cc: MUL
000007cd: PUSH1 0x20
000007cf: ADD
000007d0: ADD
000007d1: MLOAD
000007d2: PUSH2 0x1e4a
000007d5: SWAP1
000007d6: SWAP2
000007d7: SWAP1
000007d8: PUSH4 0xffffffff
000007dd: AND
000007de: JUMP
000007df: JUMPDEST
000007e0: DUP3
000007e1: PUSH1 0x00
000007e3: DUP2
000007e4: MLOAD
000007e5: DUP2
000007e6: LT
000007e7: PUSH2 0x07ec
000007ea: JUMPI
000007eb: INVALID
000007ec: JUMPDEST
000007ed: PUSH1 0x20
000007ef: MUL
000007f0: PUSH1 0x20
000007f2: ADD
000007f3: ADD
000007f4: DUP2
000007f5: DUP2
000007f6: MSTORE
000007f7: POP
000007f8: POP
000007f9: PUSH2 0x084d
000007fc: JUMP
000007fd: JUMPDEST
000007fe: PUSH2 0x0833
00000801: PUSH2 0x0810
00000804: DUP3
00000805: DUP12
00000806: PUSH4 0xffffffff
0000080b: PUSH2 0x23c4
0000080e: AND
0000080f: JUMP
00000810: JUMPDEST
00000811: DUP4
00000812: PUSH1 0x00
00000814: DUP2
00000815: MLOAD
00000816: DUP2
00000817: LT
00000818: PUSH2 0x081d
0000081b: JUMPI
0000081c: INVALID
0000081d: JUMPDEST
0000081e: PUSH1 0x20
00000820: MUL
00000821: PUSH1 0x20
00000823: ADD
00000824: ADD
00000825: MLOAD
00000826: PUSH2 0x23c4
00000829: SWAP1
0000082a: SWAP2
0000082b: SWAP1
0000082c: PUSH4 0xffffffff
00000831: AND
00000832: JUMP
00000833: JUMPDEST
00000834: DUP3
00000835: PUSH1 0x00
00000837: DUP2
00000838: MLOAD
00000839: DUP2
0000083a: LT
0000083b: PUSH2 0x0840
0000083e: JUMPI
0000083f: INVALID
00000840: JUMPDEST
00000841: PUSH1 0x20
00000843: MUL
00000844: PUSH1 0x20
00000846: ADD
00000847: ADD
00000848: DUP2
00000849: DUP2
0000084a: MSTORE
0000084b: POP
0000084c: POP
0000084d: JUMPDEST
0000084e: DUP4
0000084f: MLOAD
00000850: PUSH1 0x40
00000852: MLOAD
00000853: SWAP1
00000854: DUP1
00000855: DUP3
00000856: MSTORE
00000857: DUP1
00000858: PUSH1 0x20
0000085a: MUL
0000085b: PUSH1 0x20
0000085d: ADD
0000085e: DUP3
0000085f: ADD
00000860: PUSH1 0x40
00000862: MSTORE
00000863: DUP1
00000864: ISZERO
00000865: PUSH2 0x0888
00000868: JUMPI
00000869: DUP2
0000086a: PUSH1 0x20
0000086c: ADD
0000086d: JUMPDEST
0000086e: PUSH2 0x0875
00000871: PUSH2 0x27e4
00000874: JUMP
00000875: JUMPDEST
00000876: DUP2
00000877: MSTORE
00000878: PUSH1 0x20
0000087a: ADD
0000087b: SWAP1
0000087c: PUSH1 0x01
0000087e: SWAP1
0000087f: SUB
00000880: SWAP1
00000881: DUP2
00000882: PUSH2 0x086d
00000885: JUMPI
00000886: SWAP1
00000887: POP
00000888: JUMPDEST
00000889: POP
0000088a: SWAP7
0000088b: POP
0000088c: PUSH1 0x00
0000088e: JUMPDEST
0000088f: DUP5
00000890: MLOAD
00000891: DUP2
00000892: LT
00000893: ISZERO
00000894: PUSH2 0x092c
00000897: JUMPI
00000898: PUSH1 0x40
0000089a: MLOAD
0000089b: DUP1
0000089c: PUSH1 0xc0
0000089e: ADD
0000089f: PUSH1 0x40
000008a1: MSTORE
000008a2: DUP1
000008a3: DUP7
000008a4: DUP4
000008a5: DUP2
000008a6: MLOAD
000008a7: DUP2
000008a8: LT
000008a9: PUSH2 0x08ae
000008ac: JUMPI
000008ad: INVALID
000008ae: JUMPDEST
000008af: PUSH1 0x20
000008b1: MUL
000008b2: PUSH1 0x20
000008b4: ADD
000008b5: ADD
000008b6: MLOAD
000008b7: PUSH1 0x00
000008b9: ADD
000008ba: MLOAD
000008bb: PUSH1 0x01
000008bd: PUSH1 0x01
000008bf: PUSH1 0xa0
000008c1: SHL
000008c2: SUB
000008c3: AND
000008c4: DUP2
000008c5: MSTORE
000008c6: PUSH1 0x20
000008c8: ADD
000008c9: DUP14
000008ca: PUSH1 0x01
000008cc: PUSH1 0x01
000008ce: PUSH1 0xa0
000008d0: SHL
000008d1: SUB
000008d2: AND
000008d3: DUP2
000008d4: MSTORE
000008d5: PUSH1 0x20
000008d7: ADD
000008d8: DUP13
000008d9: PUSH1 0x01
000008db: PUSH1 0x01
000008dd: PUSH1 0xa0
000008df: SHL
000008e0: SUB
000008e1: AND
000008e2: DUP2
000008e3: MSTORE
000008e4: PUSH1 0x20
000008e6: ADD
000008e7: DUP5
000008e8: DUP4
000008e9: DUP2
000008ea: MLOAD
000008eb: DUP2
000008ec: LT
000008ed: PUSH2 0x08f2
000008f0: JUMPI
000008f1: INVALID
000008f2: JUMPDEST
000008f3: PUSH1 0x20
000008f5: MUL
000008f6: PUSH1 0x20
000008f8: ADD
000008f9: ADD
000008fa: MLOAD
000008fb: DUP2
000008fc: MSTORE
000008fd: PUSH1 0x20
000008ff: ADD
00000900: PUSH1 0x00
00000902: NOT
00000903: DUP2
00000904: MSTORE
00000905: PUSH1 0x20
00000907: ADD
00000908: PUSH1 0x00
0000090a: NOT
0000090b: DUP2
0000090c: MSTORE
0000090d: POP
0000090e: DUP9
0000090f: DUP3
00000910: DUP2
00000911: MLOAD
00000912: DUP2
00000913: LT
00000914: PUSH2 0x0919
00000917: JUMPI
00000918: INVALID
00000919: JUMPDEST
0000091a: PUSH1 0x20
0000091c: SWAP1
0000091d: DUP2
0000091e: MUL
0000091f: SWAP2
00000920: SWAP1
00000921: SWAP2
00000922: ADD
00000923: ADD
00000924: MSTORE
00000925: PUSH1 0x01
00000927: ADD
00000928: PUSH2 0x088e
0000092b: JUMP
0000092c: JUMPDEST
0000092d: POP
0000092e: PUSH2 0x0937
00000931: DUP3
00000932: DUP6
00000933: PUSH2 0x2406
00000936: JUMP
00000937: JUMPDEST
00000938: SWAP6
00000939: POP
0000093a: POP
0000093b: POP
0000093c: POP
0000093d: POP
0000093e: POP
0000093f: SWAP5
00000940: POP
00000941: SWAP5
00000942: SWAP3
00000943: POP
00000944: POP
00000945: POP
00000946: JUMP
00000947: JUMPDEST
00000948: PUSH1 0x02
0000094a: SLOAD
0000094b: PUSH1 0x40
0000094d: MLOAD
0000094e: PUSH4 0xbfdbfc43
00000953: PUSH1 0xe0
00000955: SHL
00000956: DUP2
00000957: MSTORE
00000958: PUSH1 0x60
0000095a: SWAP2
0000095b: PUSH1 0x00
0000095d: SWAP2
0000095e: DUP4
0000095f: SWAP2
00000960: PUSH1 0x01
00000962: PUSH1 0x01
00000964: PUSH1 0xa0
00000966: SHL
00000967: SUB
00000968: AND
00000969: SWAP1
0000096a: PUSH4 0xbfdbfc43
0000096f: SWAP1
00000970: PUSH2 0x0981
00000973: SWAP1
00000974: DUP11
00000975: SWAP1
00000976: DUP11
00000977: SWAP1
00000978: DUP10
00000979: SWAP1
0000097a: PUSH1 0x04
0000097c: ADD
0000097d: PUSH2 0x3166
00000980: JUMP
00000981: JUMPDEST
00000982: PUSH1 0x00
00000984: PUSH1 0x40
00000986: MLOAD
00000987: DUP1
00000988: DUP4
00000989: SUB
0000098a: DUP2
0000098b: DUP7
0000098c: DUP1
0000098d: EXTCODESIZE
0000098e: ISZERO
0000098f: DUP1
00000990: ISZERO
00000991: PUSH2 0x0999
00000994: JUMPI
00000995: PUSH1 0x00
00000997: DUP1
00000998: REVERT
00000999: JUMPDEST
0000099a: POP
0000099b: GAS
0000099c: STATICCALL
0000099d: ISZERO
0000099e: DUP1
0000099f: ISZERO
000009a0: PUSH2 0x09ad
000009a3: JUMPI
000009a4: RETURNDATASIZE
000009a5: PUSH1 0x00
000009a7: DUP1
000009a8: RETURNDATACOPY
000009a9: RETURNDATASIZE
000009aa: PUSH1 0x00
000009ac: REVERT
000009ad: JUMPDEST
000009ae: POP
000009af: POP
000009b0: POP
000009b1: POP
000009b2: PUSH1 0x40
000009b4: MLOAD
000009b5: RETURNDATASIZE
000009b6: PUSH1 0x00
000009b8: DUP3
000009b9: RETURNDATACOPY
000009ba: PUSH1 0x1f
000009bc: RETURNDATASIZE
000009bd: SWAP1
000009be: DUP2
000009bf: ADD
000009c0: PUSH1 0x1f
000009c2: NOT
000009c3: AND
000009c4: DUP3
000009c5: ADD
000009c6: PUSH1 0x40
000009c8: MSTORE
000009c9: PUSH2 0x09d5
000009cc: SWAP2
000009cd: SWAP1
000009ce: DUP2
000009cf: ADD
000009d0: SWAP1
000009d1: PUSH2 0x2b93
000009d4: JUMP
000009d5: JUMPDEST
000009d6: SWAP1
000009d7: POP
000009d8: PUSH1 0x60
000009da: DUP2
000009db: MLOAD
000009dc: PUSH1 0x40
000009de: MLOAD
000009df: SWAP1
000009e0: DUP1
000009e1: DUP3
000009e2: MSTORE
000009e3: DUP1
000009e4: PUSH1 0x20
000009e6: MUL
000009e7: PUSH1 0x20
000009e9: ADD
000009ea: DUP3
000009eb: ADD
000009ec: PUSH1 0x40
000009ee: MSTORE
000009ef: DUP1
000009f0: ISZERO
000009f1: PUSH2 0x0a14
000009f4: JUMPI
000009f5: DUP2
000009f6: PUSH1 0x20
000009f8: ADD
000009f9: JUMPDEST
000009fa: PUSH2 0x0a01
000009fd: PUSH2 0x2835
00000a00: JUMP
00000a01: JUMPDEST
00000a02: DUP2
00000a03: MSTORE
00000a04: PUSH1 0x20
00000a06: ADD
00000a07: SWAP1
00000a08: PUSH1 0x01
00000a0a: SWAP1
00000a0b: SUB
00000a0c: SWAP1
00000a0d: DUP2
00000a0e: PUSH2 0x09f9
00000a11: JUMPI
00000a12: SWAP1
00000a13: POP
00000a14: JUMPDEST
00000a15: POP
00000a16: SWAP1
00000a17: POP
00000a18: PUSH1 0x00
00000a1a: DUP1
00000a1b: JUMPDEST
00000a1c: DUP4
00000a1d: MLOAD
00000a1e: DUP2
00000a1f: LT
00000a20: ISZERO
00000a21: PUSH2 0x0a65
00000a24: JUMPI
00000a25: PUSH2 0x0a35
00000a28: DUP11
00000a29: DUP11
00000a2a: DUP7
00000a2b: DUP5
00000a2c: DUP2
00000a2d: MLOAD
00000a2e: DUP2
00000a2f: LT
00000a30: PUSH2 0x0688
00000a33: JUMPI
00000a34: INVALID
00000a35: JUMPDEST
00000a36: DUP4
00000a37: DUP3
00000a38: DUP2
00000a39: MLOAD
00000a3a: DUP2
00000a3b: LT
00000a3c: PUSH2 0x0a41
00000a3f: JUMPI
00000a40: INVALID
00000a41: JUMPDEST
00000a42: PUSH1 0x20
00000a44: MUL
00000a45: PUSH1 0x20
00000a47: ADD
00000a48: ADD
00000a49: DUP2
00000a4a: SWAP1
00000a4b: MSTORE
00000a4c: POP
00000a4d: PUSH2 0x0a5b
00000a50: DUP4
00000a51: DUP3
00000a52: DUP2
00000a53: MLOAD
00000a54: DUP2
00000a55: LT
00000a56: PUSH2 0x06bb
00000a59: JUMPI
00000a5a: INVALID
00000a5b: JUMPDEST
00000a5c: SWAP2
00000a5d: POP
00000a5e: PUSH1 0x01
00000a60: ADD
00000a61: PUSH2 0x0a1b
00000a64: JUMP
00000a65: JUMPDEST
00000a66: POP
00000a67: PUSH1 0x60
00000a69: DUP3
00000a6a: MLOAD
00000a6b: PUSH1 0x40
00000a6d: MLOAD
00000a6e: SWAP1
00000a6f: DUP1
00000a70: DUP3
00000a71: MSTORE
00000a72: DUP1
00000a73: PUSH1 0x20
00000a75: MUL
00000a76: PUSH1 0x20
00000a78: ADD
00000a79: DUP3
00000a7a: ADD
00000a7b: PUSH1 0x40
00000a7d: MSTORE
00000a7e: DUP1
00000a7f: ISZERO
00000a80: PUSH2 0x0a93
00000a83: JUMPI
00000a84: DUP2
00000a85: PUSH1 0x20
00000a87: ADD
00000a88: PUSH1 0x20
00000a8a: DUP3
00000a8b: MUL
00000a8c: DUP1
00000a8d: CODESIZE
00000a8e: DUP4
00000a8f: CODECOPY
00000a90: ADD
00000a91: SWAP1
00000a92: POP
00000a93: JUMPDEST
00000a94: POP
00000a95: SWAP1
00000a96: POP
00000a97: PUSH1 0x00
00000a99: DUP1
00000a9a: JUMPDEST
00000a9b: DUP5
00000a9c: MLOAD
00000a9d: DUP2
00000a9e: LT
00000a9f: ISZERO
00000aa0: PUSH2 0x0ae7
00000aa3: JUMPI
00000aa4: PUSH2 0x0ab6
00000aa7: DUP5
00000aa8: PUSH2 0x074c
00000aab: DUP8
00000aac: DUP5
00000aad: DUP2
00000aae: MLOAD
00000aaf: DUP2
00000ab0: LT
00000ab1: PUSH2 0x0731
00000ab4: JUMPI
00000ab5: INVALID
00000ab6: JUMPDEST
00000ab7: DUP4
00000ab8: DUP3
00000ab9: DUP2
00000aba: MLOAD
00000abb: DUP2
00000abc: LT
00000abd: PUSH2 0x0ac2
00000ac0: JUMPI
00000ac1: INVALID
00000ac2: JUMPDEST
00000ac3: PUSH1 0x20
00000ac5: MUL
00000ac6: PUSH1 0x20
00000ac8: ADD
00000ac9: ADD
00000aca: DUP2
00000acb: DUP2
00000acc: MSTORE
00000acd: POP
00000ace: POP
00000acf: PUSH2 0x0add
00000ad2: DUP4
00000ad3: DUP3
00000ad4: DUP2
00000ad5: MLOAD
00000ad6: DUP2
00000ad7: LT
00000ad8: PUSH2 0x077f
00000adb: JUMPI
00000adc: INVALID
00000add: JUMPDEST
00000ade: SWAP2
00000adf: POP
00000ae0: PUSH1 0x01
00000ae2: ADD
00000ae3: PUSH2 0x0a9a
00000ae6: JUMP
00000ae7: JUMPDEST
00000ae8: POP
00000ae9: DUP9
00000aea: DUP2
00000aeb: LT
00000aec: ISZERO
00000aed: PUSH2 0x0b21
00000af0: JUMPI
00000af1: PUSH2 0x0b03
00000af4: PUSH2 0x07bc
00000af7: DUP11
00000af8: DUP4
00000af9: PUSH4 0xffffffff
00000afe: PUSH2 0x23c4
00000b01: AND
00000b02: JUMP
00000b03: JUMPDEST
00000b04: DUP3
00000b05: PUSH1 0x00
00000b07: DUP2
00000b08: MLOAD
00000b09: DUP2
00000b0a: LT
00000b0b: PUSH2 0x0b10
00000b0e: JUMPI
00000b0f: INVALID
00000b10: JUMPDEST
00000b11: PUSH1 0x20
00000b13: MUL
00000b14: PUSH1 0x20
00000b16: ADD
00000b17: ADD
00000b18: DUP2
00000b19: DUP2
00000b1a: MSTORE
00000b1b: POP
00000b1c: POP
00000b1d: PUSH2 0x0b4e
00000b20: JUMP
00000b21: JUMPDEST
00000b22: PUSH2 0x0b34
00000b25: PUSH2 0x0810
00000b28: DUP3
00000b29: DUP12
00000b2a: PUSH4 0xffffffff
00000b2f: PUSH2 0x23c4
00000b32: AND
00000b33: JUMP
00000b34: JUMPDEST
00000b35: DUP3
00000b36: PUSH1 0x00
00000b38: DUP2
00000b39: MLOAD
00000b3a: DUP2
00000b3b: LT
00000b3c: PUSH2 0x0b41
00000b3f: JUMPI
00000b40: INVALID
00000b41: JUMPDEST
00000b42: PUSH1 0x20
00000b44: MUL
00000b45: PUSH1 0x20
00000b47: ADD
00000b48: ADD
00000b49: DUP2
00000b4a: DUP2
00000b4b: MSTORE
00000b4c: POP
00000b4d: POP
00000b4e: JUMPDEST
00000b4f: DUP4
00000b50: MLOAD
00000b51: PUSH1 0x40
00000b53: MLOAD
00000b54: SWAP1
00000b55: DUP1
00000b56: DUP3
00000b57: MSTORE
00000b58: DUP1
00000b59: PUSH1 0x20
00000b5b: MUL
00000b5c: PUSH1 0x20
00000b5e: ADD
00000b5f: DUP3
00000b60: ADD
00000b61: PUSH1 0x40
00000b63: MSTORE
00000b64: DUP1
00000b65: ISZERO
00000b66: PUSH2 0x0b89
00000b69: JUMPI
00000b6a: DUP2
00000b6b: PUSH1 0x20
00000b6d: ADD
00000b6e: JUMPDEST
00000b6f: PUSH2 0x0b76
00000b72: PUSH2 0x27e4
00000b75: JUMP
00000b76: JUMPDEST
00000b77: DUP2
00000b78: MSTORE
00000b79: PUSH1 0x20
00000b7b: ADD
00000b7c: SWAP1
00000b7d: PUSH1 0x01
00000b7f: SWAP1
00000b80: SUB
00000b81: SWAP1
00000b82: DUP2
00000b83: PUSH2 0x0b6e
00000b86: JUMPI
00000b87: SWAP1
00000b88: POP
00000b89: JUMPDEST
00000b8a: POP
00000b8b: SWAP7
00000b8c: POP
00000b8d: PUSH1 0x00
00000b8f: JUMPDEST
00000b90: DUP5
00000b91: MLOAD
00000b92: DUP2
00000b93: LT
00000b94: ISZERO
00000b95: PUSH2 0x0c2c
00000b98: JUMPI
00000b99: PUSH1 0x40
00000b9b: MLOAD
00000b9c: DUP1
00000b9d: PUSH1 0xc0
00000b9f: ADD
00000ba0: PUSH1 0x40
00000ba2: MSTORE
00000ba3: DUP1
00000ba4: DUP7
00000ba5: DUP4
00000ba6: DUP2
00000ba7: MLOAD
00000ba8: DUP2
00000ba9: LT
00000baa: PUSH2 0x0baf
00000bad: JUMPI
00000bae: INVALID
00000baf: JUMPDEST
00000bb0: PUSH1 0x20
00000bb2: MUL
00000bb3: PUSH1 0x20
00000bb5: ADD
00000bb6: ADD
00000bb7: MLOAD
00000bb8: PUSH1 0x00
00000bba: ADD
00000bbb: MLOAD
00000bbc: PUSH1 0x01
00000bbe: PUSH1 0x01
00000bc0: PUSH1 0xa0
00000bc2: SHL
00000bc3: SUB
00000bc4: AND
00000bc5: DUP2
00000bc6: MSTORE
00000bc7: PUSH1 0x20
00000bc9: ADD
00000bca: DUP14
00000bcb: PUSH1 0x01
00000bcd: PUSH1 0x01
00000bcf: PUSH1 0xa0
00000bd1: SHL
00000bd2: SUB
00000bd3: AND
00000bd4: DUP2
00000bd5: MSTORE
00000bd6: PUSH1 0x20
00000bd8: ADD
00000bd9: DUP13
00000bda: PUSH1 0x01
00000bdc: PUSH1 0x01
00000bde: PUSH1 0xa0
00000be0: SHL
00000be1: SUB
00000be2: AND
00000be3: DUP2
00000be4: MSTORE
00000be5: PUSH1 0x20
00000be7: ADD
00000be8: DUP5
00000be9: DUP4
00000bea: DUP2
00000beb: MLOAD
00000bec: DUP2
00000bed: LT
00000bee: PUSH2 0x0bf3
00000bf1: JUMPI
00000bf2: INVALID
00000bf3: JUMPDEST
00000bf4: PUSH1 0x20
00000bf6: MUL
00000bf7: PUSH1 0x20
00000bf9: ADD
00000bfa: ADD
00000bfb: MLOAD
00000bfc: DUP2
00000bfd: MSTORE
00000bfe: PUSH1 0x20
00000c00: ADD
00000c01: PUSH1 0x00
00000c03: DUP2
00000c04: MSTORE
00000c05: PUSH1 0x20
00000c07: ADD
00000c08: PUSH1 0x00
00000c0a: NOT
00000c0b: DUP2
00000c0c: MSTORE
00000c0d: POP
00000c0e: DUP9
00000c0f: DUP3
00000c10: DUP2
00000c11: MLOAD
00000c12: DUP2
00000c13: LT
00000c14: PUSH2 0x0c19
00000c17: JUMPI
00000c18: INVALID
00000c19: JUMPDEST
00000c1a: PUSH1 0x20
00000c1c: SWAP1
00000c1d: DUP2
00000c1e: MUL
00000c1f: SWAP2
00000c20: SWAP1
00000c21: SWAP2
00000c22: ADD
00000c23: ADD
00000c24: MSTORE
00000c25: PUSH1 0x01
00000c27: ADD
00000c28: PUSH2 0x0b8f
00000c2b: JUMP
00000c2c: JUMPDEST
00000c2d: POP
00000c2e: PUSH2 0x0937
00000c31: DUP3
00000c32: DUP6
00000c33: PUSH2 0x255c
00000c36: JUMP
00000c37: JUMPDEST
00000c38: PUSH2 0x0c3f
00000c3b: PUSH2 0x1917
00000c3e: JUMP
00000c3f: JUMPDEST
00000c40: PUSH2 0x0c5b
00000c43: JUMPI
00000c44: PUSH1 0x40
00000c46: MLOAD
00000c47: PUSH3 0x461bcd
00000c4b: PUSH1 0xe5
00000c4d: SHL
00000c4e: DUP2
00000c4f: MSTORE
00000c50: PUSH1 0x04
00000c52: ADD
00000c53: PUSH2 0x0568
00000c56: SWAP1
00000c57: PUSH2 0x3285
00000c5a: JUMP
00000c5b: JUMPDEST
00000c5c: PUSH1 0x00
00000c5e: DUP1
00000c5f: SLOAD
00000c60: PUSH1 0x40
00000c62: MLOAD
00000c63: PUSH1 0x01
00000c65: PUSH1 0x01
00000c67: PUSH1 0xa0
00000c69: SHL
00000c6a: SUB
00000c6b: SWAP1
00000c6c: SWAP2
00000c6d: AND
00000c6e: SWAP1
00000c6f: PUSH32 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0
00000c90: SWAP1
00000c91: DUP4
00000c92: SWAP1
00000c93: LOG3
00000c94: PUSH1 0x00
00000c96: DUP1
00000c97: SLOAD
00000c98: PUSH1 0x01
00000c9a: PUSH1 0x01
00000c9c: PUSH1 0xa0
00000c9e: SHL
00000c9f: SUB
00000ca0: NOT
00000ca1: AND
00000ca2: SWAP1
00000ca3: SSTORE
00000ca4: JUMP
00000ca5: JUMPDEST
00000ca6: PUSH1 0x00
00000ca8: PUSH2 0x0cb1
00000cab: DUP5
00000cac: DUP4
00000cad: PUSH2 0x1d28
00000cb0: JUMP
00000cb1: JUMPDEST
00000cb2: POP
00000cb3: PUSH1 0x00
00000cb5: JUMPDEST
00000cb6: DUP6
00000cb7: MLOAD
00000cb8: DUP2
00000cb9: LT
00000cba: ISZERO
00000cbb: PUSH2 0x0547
00000cbe: JUMPI
00000cbf: PUSH1 0x00
00000cc1: DUP7
00000cc2: DUP3
00000cc3: DUP2
00000cc4: MLOAD
00000cc5: DUP2
00000cc6: LT
00000cc7: PUSH2 0x0ccc
00000cca: JUMPI
00000ccb: INVALID
00000ccc: JUMPDEST
00000ccd: PUSH1 0x20
00000ccf: MUL
00000cd0: PUSH1 0x20
00000cd2: ADD
00000cd3: ADD
00000cd4: MLOAD
00000cd5: MLOAD
00000cd6: PUSH1 0x01
00000cd8: EQ
00000cd9: ISZERO
00000cda: PUSH2 0x0f50
00000cdd: JUMPI
00000cde: PUSH2 0x0ce5
00000ce1: PUSH2 0x27e4
00000ce4: JUMP
00000ce5: JUMPDEST
00000ce6: DUP8
00000ce7: DUP4
00000ce8: DUP2
00000ce9: MLOAD
00000cea: DUP2
00000ceb: LT
00000cec: PUSH2 0x0cf1
00000cef: JUMPI
00000cf0: INVALID
00000cf1: JUMPDEST
00000cf2: PUSH1 0x20
00000cf4: MUL
00000cf5: PUSH1 0x20
00000cf7: ADD
00000cf8: ADD
00000cf9: MLOAD
00000cfa: PUSH1 0x00
00000cfc: DUP2
00000cfd: MLOAD
00000cfe: DUP2
00000cff: LT
00000d00: PUSH2 0x0d05
00000d03: JUMPI
00000d04: INVALID
00000d05: JUMPDEST
00000d06: PUSH1 0x20
00000d08: SWAP1
00000d09: DUP2
00000d0a: MUL
00000d0b: SWAP2
00000d0c: SWAP1
00000d0d: SWAP2
00000d0e: ADD
00000d0f: DUP2
00000d10: ADD
00000d11: MLOAD
00000d12: SWAP1
00000d13: DUP2
00000d14: ADD
00000d15: MLOAD
00000d16: DUP2
00000d17: MLOAD
00000d18: PUSH1 0x40
00000d1a: MLOAD
00000d1b: PUSH4 0x6eb1769f
00000d20: PUSH1 0xe1
00000d22: SHL
00000d23: DUP2
00000d24: MSTORE
00000d25: SWAP3
00000d26: SWAP4
00000d27: POP
00000d28: SWAP1
00000d29: SWAP2
00000d2a: PUSH1 0x00
00000d2c: SWAP1
00000d2d: PUSH1 0x01
00000d2f: PUSH1 0x01
00000d31: PUSH1 0xa0
00000d33: SHL
00000d34: SUB
00000d35: DUP5
00000d36: AND
00000d37: SWAP1
00000d38: PUSH4 0xdd62ed3e
00000d3d: SWAP1
00000d3e: PUSH2 0x0d4d
00000d41: SWAP1
00000d42: ADDRESS
00000d43: SWAP1
00000d44: DUP7
00000d45: SWAP1
00000d46: PUSH1 0x04
00000d48: ADD
00000d49: PUSH2 0x3108
00000d4c: JUMP
00000d4d: JUMPDEST
00000d4e: PUSH1 0x20
00000d50: PUSH1 0x40
00000d52: MLOAD
00000d53: DUP1
00000d54: DUP4
00000d55: SUB
00000d56: DUP2
00000d57: DUP7
00000d58: DUP1
00000d59: EXTCODESIZE
00000d5a: ISZERO
00000d5b: DUP1
00000d5c: ISZERO
00000d5d: PUSH2 0x0d65
00000d60: JUMPI
00000d61: PUSH1 0x00
00000d63: DUP1
00000d64: REVERT
00000d65: JUMPDEST
00000d66: POP
00000d67: GAS
00000d68: STATICCALL
00000d69: ISZERO
00000d6a: DUP1
00000d6b: ISZERO
00000d6c: PUSH2 0x0d79
00000d6f: JUMPI
00000d70: RETURNDATASIZE
00000d71: PUSH1 0x00
00000d73: DUP1
00000d74: RETURNDATACOPY
00000d75: RETURNDATASIZE
00000d76: PUSH1 0x00
00000d78: REVERT
00000d79: JUMPDEST
00000d7a: POP
00000d7b: POP
00000d7c: POP
00000d7d: POP
00000d7e: PUSH1 0x40
00000d80: MLOAD
00000d81: RETURNDATASIZE
00000d82: PUSH1 0x1f
00000d84: NOT
00000d85: PUSH1 0x1f
00000d87: DUP3
00000d88: ADD
00000d89: AND
00000d8a: DUP3
00000d8b: ADD
00000d8c: DUP1
00000d8d: PUSH1 0x40
00000d8f: MSTORE
00000d90: POP
00000d91: PUSH2 0x0d9d
00000d94: SWAP2
00000d95: SWAP1
00000d96: DUP2
00000d97: ADD
00000d98: SWAP1
00000d99: PUSH2 0x2d87
00000d9c: JUMP
00000d9d: JUMPDEST
00000d9e: GT
00000d9f: ISZERO
00000da0: PUSH2 0x0e27
00000da3: JUMPI
00000da4: DUP3
00000da5: MLOAD
00000da6: PUSH1 0x40
00000da8: MLOAD
00000da9: PUSH4 0x095ea7b3
00000dae: PUSH1 0xe0
00000db0: SHL
00000db1: DUP2
00000db2: MSTORE
00000db3: PUSH1 0x01
00000db5: PUSH1 0x01
00000db7: PUSH1 0xa0
00000db9: SHL
00000dba: SUB
00000dbb: DUP5
00000dbc: AND
00000dbd: SWAP2
00000dbe: PUSH4 0x095ea7b3
00000dc3: SWAP2
00000dc4: PUSH2 0x0dd3
00000dc7: SWAP2
00000dc8: SWAP1
00000dc9: PUSH1 0x00
00000dcb: SWAP1
00000dcc: PUSH1 0x04
00000dce: ADD
00000dcf: PUSH2 0x3181
00000dd2: JUMP
00000dd3: JUMPDEST
00000dd4: PUSH1 0x20
00000dd6: PUSH1 0x40
00000dd8: MLOAD
00000dd9: DUP1
00000dda: DUP4
00000ddb: SUB
00000ddc: DUP2
00000ddd: PUSH1 0x00
00000ddf: DUP8
00000de0: DUP1
00000de1: EXTCODESIZE
00000de2: ISZERO
00000de3: DUP1
00000de4: ISZERO
00000de5: PUSH2 0x0ded
00000de8: JUMPI
00000de9: PUSH1 0x00
00000deb: DUP1
00000dec: REVERT
00000ded: JUMPDEST
00000dee: POP
00000def: GAS
00000df0: CALL
00000df1: ISZERO
00000df2: DUP1
00000df3: ISZERO
00000df4: PUSH2 0x0e01
00000df7: JUMPI
00000df8: RETURNDATASIZE
00000df9: PUSH1 0x00
00000dfb: DUP1
00000dfc: RETURNDATACOPY
00000dfd: RETURNDATASIZE
00000dfe: PUSH1 0x00
00000e00: REVERT
00000e01: JUMPDEST
00000e02: POP
00000e03: POP
00000e04: POP
00000e05: POP
00000e06: PUSH1 0x40
00000e08: MLOAD
00000e09: RETURNDATASIZE
00000e0a: PUSH1 0x1f
00000e0c: NOT
00000e0d: PUSH1 0x1f
00000e0f: DUP3
00000e10: ADD
00000e11: AND
00000e12: DUP3
00000e13: ADD
00000e14: DUP1
00000e15: PUSH1 0x40
00000e17: MSTORE
00000e18: POP
00000e19: PUSH2 0x0e25
00000e1c: SWAP2
00000e1d: SWAP1
00000e1e: DUP2
00000e1f: ADD
00000e20: SWAP1
00000e21: PUSH2 0x2d23
00000e24: JUMP
00000e25: JUMPDEST
00000e26: POP
00000e27: JUMPDEST
00000e28: DUP3
00000e29: MLOAD
00000e2a: PUSH1 0x80
00000e2c: DUP5
00000e2d: ADD
00000e2e: MLOAD
00000e2f: PUSH1 0x40
00000e31: MLOAD
00000e32: PUSH4 0x095ea7b3
00000e37: PUSH1 0xe0
00000e39: SHL
00000e3a: DUP2
00000e3b: MSTORE
00000e3c: PUSH1 0x01
00000e3e: PUSH1 0x01
00000e40: PUSH1 0xa0
00000e42: SHL
00000e43: SUB
00000e44: DUP6
00000e45: AND
00000e46: SWAP3
00000e47: PUSH4 0x095ea7b3
00000e4c: SWAP3
00000e4d: PUSH2 0x0e58
00000e50: SWAP3
00000e51: PUSH1 0x04
00000e53: ADD
00000e54: PUSH2 0x319c
00000e57: JUMP
00000e58: JUMPDEST
00000e59: PUSH1 0x20
00000e5b: PUSH1 0x40
00000e5d: MLOAD
00000e5e: DUP1
00000e5f: DUP4
00000e60: SUB
00000e61: DUP2
00000e62: PUSH1 0x00
00000e64: DUP8
00000e65: DUP1
00000e66: EXTCODESIZE
00000e67: ISZERO
00000e68: DUP1
00000e69: ISZERO
00000e6a: PUSH2 0x0e72
00000e6d: JUMPI
00000e6e: PUSH1 0x00
00000e70: DUP1
00000e71: REVERT
00000e72: JUMPDEST
00000e73: POP
00000e74: GAS
00000e75: CALL
00000e76: ISZERO
00000e77: DUP1
00000e78: ISZERO
00000e79: PUSH2 0x0e86
00000e7c: JUMPI
00000e7d: RETURNDATASIZE
00000e7e: PUSH1 0x00
00000e80: DUP1
00000e81: RETURNDATACOPY
00000e82: RETURNDATASIZE
00000e83: PUSH1 0x00
00000e85: REVERT
00000e86: JUMPDEST
00000e87: POP
00000e88: POP
00000e89: POP
00000e8a: POP
00000e8b: PUSH1 0x40
00000e8d: MLOAD
00000e8e: RETURNDATASIZE
00000e8f: PUSH1 0x1f
00000e91: NOT
00000e92: PUSH1 0x1f
00000e94: DUP3
00000e95: ADD
00000e96: AND
00000e97: DUP3
00000e98: ADD
00000e99: DUP1
00000e9a: PUSH1 0x40
00000e9c: MSTORE
00000e9d: POP
00000e9e: PUSH2 0x0eaa
00000ea1: SWAP2
00000ea2: SWAP1
00000ea3: DUP2
00000ea4: ADD
00000ea5: SWAP1
00000ea6: PUSH2 0x2d23
00000ea9: JUMP
00000eaa: JUMPDEST
00000eab: POP
00000eac: DUP1
00000ead: PUSH1 0x01
00000eaf: PUSH1 0x01
00000eb1: PUSH1 0xa0
00000eb3: SHL
00000eb4: SUB
00000eb5: AND
00000eb6: PUSH4 0x7c5e9ea4
00000ebb: DUP5
00000ebc: PUSH1 0x20
00000ebe: ADD
00000ebf: MLOAD
00000ec0: DUP6
00000ec1: PUSH1 0x80
00000ec3: ADD
00000ec4: MLOAD
00000ec5: DUP7
00000ec6: PUSH1 0x40
00000ec8: ADD
00000ec9: MLOAD
00000eca: DUP8
00000ecb: PUSH1 0x60
00000ecd: ADD
00000ece: MLOAD
00000ecf: DUP9
00000ed0: PUSH1 0xa0
00000ed2: ADD
00000ed3: MLOAD
00000ed4: PUSH1 0x40
00000ed6: MLOAD
00000ed7: DUP7
00000ed8: PUSH4 0xffffffff
00000edd: AND
00000ede: PUSH1 0xe0
00000ee0: SHL
00000ee1: DUP2
00000ee2: MSTORE
00000ee3: PUSH1 0x04
00000ee5: ADD
00000ee6: PUSH2 0x0ef3
00000ee9: SWAP6
00000eea: SWAP5
00000eeb: SWAP4
00000eec: SWAP3
00000eed: SWAP2
00000eee: SWAP1
00000eef: PUSH2 0x31aa
00000ef2: JUMP
00000ef3: JUMPDEST
00000ef4: PUSH1 0x40
00000ef6: DUP1
00000ef7: MLOAD
00000ef8: DUP1
00000ef9: DUP4
00000efa: SUB
00000efb: DUP2
00000efc: PUSH1 0x00
00000efe: DUP8
00000eff: DUP1
00000f00: EXTCODESIZE
00000f01: ISZERO
00000f02: DUP1
00000f03: ISZERO
00000f04: PUSH2 0x0f0c
00000f07: JUMPI
00000f08: PUSH1 0x00
00000f0a: DUP1
00000f0b: REVERT
00000f0c: JUMPDEST
00000f0d: POP
00000f0e: GAS
00000f0f: CALL
00000f10: ISZERO
00000f11: DUP1
00000f12: ISZERO
00000f13: PUSH2 0x0f20
00000f16: JUMPI
00000f17: RETURNDATASIZE
00000f18: PUSH1 0x00
00000f1a: DUP1
00000f1b: RETURNDATACOPY
00000f1c: RETURNDATASIZE
00000f1d: PUSH1 0x00
00000f1f: REVERT
00000f20: JUMPDEST
00000f21: POP
00000f22: POP
00000f23: POP
00000f24: POP
00000f25: PUSH1 0x40
00000f27: MLOAD
00000f28: RETURNDATASIZE
00000f29: PUSH1 0x1f
00000f2b: NOT
00000f2c: PUSH1 0x1f
00000f2e: DUP3
00000f2f: ADD
00000f30: AND
00000f31: DUP3
00000f32: ADD
00000f33: DUP1
00000f34: PUSH1 0x40
00000f36: MSTORE
00000f37: POP
00000f38: PUSH2 0x0f44
00000f3b: SWAP2
00000f3c: SWAP1
00000f3d: DUP2
00000f3e: ADD
00000f3f: SWAP1
00000f40: PUSH2 0x2da5
00000f43: JUMP
00000f44: JUMPDEST
00000f45: POP
00000f46: SWAP4
00000f47: POP
00000f48: PUSH2 0x1617
00000f4b: SWAP3
00000f4c: POP
00000f4d: POP
00000f4e: POP
00000f4f: JUMP
00000f50: JUMPDEST
00000f51: PUSH1 0x00
00000f53: PUSH2 0x0f5a
00000f56: PUSH2 0x27e4
00000f59: JUMP
00000f5a: JUMPDEST
00000f5b: DUP9
00000f5c: DUP5
00000f5d: DUP2
00000f5e: MLOAD
00000f5f: DUP2
00000f60: LT
00000f61: PUSH2 0x0f66
00000f64: JUMPI
00000f65: INVALID
00000f66: JUMPDEST
00000f67: PUSH1 0x20
00000f69: MUL
00000f6a: PUSH1 0x20
00000f6c: ADD
00000f6d: ADD
00000f6e: MLOAD
00000f6f: PUSH1 0x01
00000f71: DUP2
00000f72: MLOAD
00000f73: DUP2
00000f74: LT
00000f75: PUSH2 0x0f7a
00000f78: JUMPI
00000f79: INVALID
00000f7a: JUMPDEST
00000f7b: PUSH1 0x20
00000f7d: SWAP1
00000f7e: DUP2
00000f7f: MUL
00000f80: SWAP2
00000f81: SWAP1
00000f82: SWAP2
00000f83: ADD
00000f84: DUP2
00000f85: ADD
00000f86: MLOAD
00000f87: DUP1
00000f88: MLOAD
00000f89: SWAP2
00000f8a: DUP2
00000f8b: ADD
00000f8c: MLOAD
00000f8d: PUSH1 0x40
00000f8f: MLOAD
00000f90: PUSH4 0xf8b2cb4f
00000f95: PUSH1 0xe0
00000f97: SHL
00000f98: DUP2
00000f99: MSTORE
00000f9a: SWAP2
00000f9b: SWAP4
00000f9c: POP
00000f9d: PUSH1 0x01
00000f9f: PUSH1 0x01
00000fa1: PUSH1 0xa0
00000fa3: SHL
00000fa4: SUB
00000fa5: DUP4
00000fa6: AND
00000fa7: SWAP2
00000fa8: PUSH4 0xf8d6aed4
00000fad: SWAP2
00000fae: DUP4
00000faf: SWAP2
00000fb0: PUSH4 0xf8b2cb4f
00000fb5: SWAP2
00000fb6: PUSH2 0x0fc1
00000fb9: SWAP2
00000fba: PUSH1 0x04
00000fbc: ADD
00000fbd: PUSH2 0x30ec
00000fc0: JUMP
00000fc1: JUMPDEST
00000fc2: PUSH1 0x20
00000fc4: PUSH1 0x40
00000fc6: MLOAD
00000fc7: DUP1
00000fc8: DUP4
00000fc9: SUB
00000fca: DUP2
00000fcb: DUP7
00000fcc: DUP1
00000fcd: EXTCODESIZE
00000fce: ISZERO
00000fcf: DUP1
00000fd0: ISZERO
00000fd1: PUSH2 0x0fd9
00000fd4: JUMPI
00000fd5: PUSH1 0x00
00000fd7: DUP1
00000fd8: REVERT
00000fd9: JUMPDEST
00000fda: POP
00000fdb: GAS
00000fdc: STATICCALL
00000fdd: ISZERO
00000fde: DUP1
00000fdf: ISZERO
00000fe0: PUSH2 0x0fed
00000fe3: JUMPI
00000fe4: RETURNDATASIZE
00000fe5: PUSH1 0x00
00000fe7: DUP1
00000fe8: RETURNDATACOPY
00000fe9: RETURNDATASIZE
00000fea: PUSH1 0x00
00000fec: REVERT
00000fed: JUMPDEST
00000fee: POP
00000fef: POP
00000ff0: POP
00000ff1: POP
00000ff2: PUSH1 0x40
00000ff4: MLOAD
00000ff5: RETURNDATASIZE
00000ff6: PUSH1 0x1f
00000ff8: NOT
00000ff9: PUSH1 0x1f
00000ffb: DUP3
00000ffc: ADD
00000ffd: AND
00000ffe: DUP3
00000fff: ADD
00001000: DUP1
00001001: PUSH1 0x40
00001003: MSTORE
00001004: POP
00001005: PUSH2 0x1011
00001008: SWAP2
00001009: SWAP1
0000100a: DUP2
0000100b: ADD
0000100c: SWAP1
0000100d: PUSH2 0x2d87
00001010: JUMP
00001011: JUMPDEST
00001012: PUSH1 0x20
00001014: DUP6
00001015: ADD
00001016: MLOAD
00001017: PUSH1 0x40
00001019: MLOAD
0000101a: PUSH4 0x4a46c673
0000101f: PUSH1 0xe1
00001021: SHL
00001022: DUP2
00001023: MSTORE
00001024: PUSH1 0x01
00001026: PUSH1 0x01
00001028: PUSH1 0xa0
0000102a: SHL
0000102b: SUB
0000102c: DUP7
0000102d: AND
0000102e: SWAP2
0000102f: PUSH4 0x948d8ce6
00001034: SWAP2
00001035: PUSH2 0x1041
00001038: SWAP2
00001039: SWAP1
0000103a: PUSH1 0x04
0000103c: ADD
0000103d: PUSH2 0x30ec
00001040: JUMP
00001041: JUMPDEST
00001042: PUSH1 0x20
00001044: PUSH1 0x40
00001046: MLOAD
00001047: DUP1
00001048: DUP4
00001049: SUB
0000104a: DUP2
0000104b: DUP7
0000104c: DUP1
0000104d: EXTCODESIZE
0000104e: ISZERO
0000104f: DUP1
00001050: ISZERO
00001051: PUSH2 0x1059
00001054: JUMPI
00001055: PUSH1 0x00
00001057: DUP1
00001058: REVERT
00001059: JUMPDEST
0000105a: POP
0000105b: GAS
0000105c: STATICCALL
0000105d: ISZERO
0000105e: DUP1
0000105f: ISZERO
00001060: PUSH2 0x106d
00001063: JUMPI
00001064: RETURNDATASIZE
00001065: PUSH1 0x00
00001067: DUP1
00001068: RETURNDATACOPY
00001069: RETURNDATASIZE
0000106a: PUSH1 0x00
0000106c: REVERT
0000106d: JUMPDEST
0000106e: POP
0000106f: POP
00001070: POP
00001071: POP
00001072: PUSH1 0x40
00001074: MLOAD
00001075: RETURNDATASIZE
00001076: PUSH1 0x1f
00001078: NOT
00001079: PUSH1 0x1f
0000107b: DUP3
0000107c: ADD
0000107d: AND
0000107e: DUP3
0000107f: ADD
00001080: DUP1
00001081: PUSH1 0x40
00001083: MSTORE
00001084: POP
00001085: PUSH2 0x1091
00001088: SWAP2
00001089: SWAP1
0000108a: DUP2
0000108b: ADD
0000108c: SWAP1
0000108d: PUSH2 0x2d87
00001090: JUMP
00001091: JUMPDEST
00001092: PUSH1 0x40
00001094: DUP1
00001095: DUP8
00001096: ADD
00001097: MLOAD
00001098: SWAP1
00001099: MLOAD
0000109a: PUSH4 0xf8b2cb4f
0000109f: PUSH1 0xe0
000010a1: SHL
000010a2: DUP2
000010a3: MSTORE
000010a4: PUSH1 0x01
000010a6: PUSH1 0x01
000010a8: PUSH1 0xa0
000010aa: SHL
000010ab: SUB
000010ac: DUP8
000010ad: AND
000010ae: SWAP2
000010af: PUSH4 0xf8b2cb4f
000010b4: SWAP2
000010b5: PUSH2 0x10c1
000010b8: SWAP2
000010b9: SWAP1
000010ba: PUSH1 0x04
000010bc: ADD
000010bd: PUSH2 0x30ec
000010c0: JUMP
000010c1: JUMPDEST
000010c2: PUSH1 0x20
000010c4: PUSH1 0x40
000010c6: MLOAD
000010c7: DUP1
000010c8: DUP4
000010c9: SUB
000010ca: DUP2
000010cb: DUP7
000010cc: DUP1
000010cd: EXTCODESIZE
000010ce: ISZERO
000010cf: DUP1
000010d0: ISZERO
000010d1: PUSH2 0x10d9
000010d4: JUMPI
000010d5: PUSH1 0x00
000010d7: DUP1
000010d8: REVERT
000010d9: JUMPDEST
000010da: POP
000010db: GAS
000010dc: STATICCALL
000010dd: ISZERO
000010de: DUP1
000010df: ISZERO
000010e0: PUSH2 0x10ed
000010e3: JUMPI
000010e4: RETURNDATASIZE
000010e5: PUSH1 0x00
000010e7: DUP1
000010e8: RETURNDATACOPY
000010e9: RETURNDATASIZE
000010ea: PUSH1 0x00
000010ec: REVERT
000010ed: JUMPDEST
000010ee: POP
000010ef: POP
000010f0: POP
000010f1: POP
000010f2: PUSH1 0x40
000010f4: MLOAD
000010f5: RETURNDATASIZE
000010f6: PUSH1 0x1f
000010f8: NOT
000010f9: PUSH1 0x1f
000010fb: DUP3
000010fc: ADD
000010fd: AND
000010fe: DUP3
000010ff: ADD
00001100: DUP1
00001101: PUSH1 0x40
00001103: MSTORE
00001104: POP
00001105: PUSH2 0x1111
00001108: SWAP2
00001109: SWAP1
0000110a: DUP2
0000110b: ADD
0000110c: SWAP1
0000110d: PUSH2 0x2d87
00001110: JUMP
00001111: JUMPDEST
00001112: PUSH1 0x40
00001114: DUP1
00001115: DUP9
00001116: ADD
00001117: MLOAD
00001118: SWAP1
00001119: MLOAD
0000111a: PUSH4 0x4a46c673
0000111f: PUSH1 0xe1
00001121: SHL
00001122: DUP2
00001123: MSTORE
00001124: PUSH1 0x01
00001126: PUSH1 0x01
00001128: PUSH1 0xa0
0000112a: SHL
0000112b: SUB
0000112c: DUP9
0000112d: AND
0000112e: SWAP2
0000112f: PUSH4 0x948d8ce6
00001134: SWAP2
00001135: PUSH2 0x1141
00001138: SWAP2
00001139: SWAP1
0000113a: PUSH1 0x04
0000113c: ADD
0000113d: PUSH2 0x30ec
00001140: JUMP
00001141: JUMPDEST
00001142: PUSH1 0x20
00001144: PUSH1 0x40
00001146: MLOAD
00001147: DUP1
00001148: DUP4
00001149: SUB
0000114a: DUP2
0000114b: DUP7
0000114c: DUP1
0000114d: EXTCODESIZE
0000114e: ISZERO
0000114f: DUP1
00001150: ISZERO
00001151: PUSH2 0x1159
00001154: JUMPI
00001155: PUSH1 0x00
00001157: DUP1
00001158: REVERT
00001159: JUMPDEST
0000115a: POP
0000115b: GAS
0000115c: STATICCALL
0000115d: ISZERO
0000115e: DUP1
0000115f: ISZERO
00001160: PUSH2 0x116d
00001163: JUMPI
00001164: RETURNDATASIZE
00001165: PUSH1 0x00
00001167: DUP1
00001168: RETURNDATACOPY
00001169: RETURNDATASIZE
0000116a: PUSH1 0x00
0000116c: REVERT
0000116d: JUMPDEST
0000116e: POP
0000116f: POP
00001170: POP
00001171: POP
00001172: PUSH1 0x40
00001174: MLOAD
00001175: RETURNDATASIZE
00001176: PUSH1 0x1f
00001178: NOT
00001179: PUSH1 0x1f
0000117b: DUP3
0000117c: ADD
0000117d: AND
0000117e: DUP3
0000117f: ADD
00001180: DUP1
00001181: PUSH1 0x40
00001183: MSTORE
00001184: POP
00001185: PUSH2 0x1191
00001188: SWAP2
00001189: SWAP1
0000118a: DUP2
0000118b: ADD
0000118c: SWAP1
0000118d: PUSH2 0x2d87
00001190: JUMP
00001191: JUMPDEST
00001192: DUP8
00001193: PUSH1 0x60
00001195: ADD
00001196: MLOAD
00001197: DUP8
00001198: PUSH1 0x01
0000119a: PUSH1 0x01
0000119c: PUSH1 0xa0
0000119e: SHL
0000119f: SUB
000011a0: AND
000011a1: PUSH4 0xd4cadf68
000011a6: PUSH1 0x40
000011a8: MLOAD
000011a9: DUP2
000011aa: PUSH4 0xffffffff
000011af: AND
000011b0: PUSH1 0xe0
000011b2: SHL
000011b3: DUP2
000011b4: MSTORE
000011b5: PUSH1 0x04
000011b7: ADD
000011b8: PUSH1 0x20
000011ba: PUSH1 0x40
000011bc: MLOAD
000011bd: DUP1
000011be: DUP4
000011bf: SUB
000011c0: DUP2
000011c1: DUP7
000011c2: DUP1
000011c3: EXTCODESIZE
000011c4: ISZERO
000011c5: DUP1
000011c6: ISZERO
000011c7: PUSH2 0x11cf
000011ca: JUMPI
000011cb: PUSH1 0x00
000011cd: DUP1
000011ce: REVERT
000011cf: JUMPDEST
000011d0: POP
000011d1: GAS
000011d2: STATICCALL
000011d3: ISZERO
000011d4: DUP1
000011d5: ISZERO
000011d6: PUSH2 0x11e3
000011d9: JUMPI
000011da: RETURNDATASIZE
000011db: PUSH1 0x00
000011dd: DUP1
000011de: RETURNDATACOPY
000011df: RETURNDATASIZE
000011e0: PUSH1 0x00
000011e2: REVERT
000011e3: JUMPDEST
000011e4: POP
000011e5: POP
000011e6: POP
000011e7: POP
000011e8: PUSH1 0x40
000011ea: MLOAD
000011eb: RETURNDATASIZE
000011ec: PUSH1 0x1f
000011ee: NOT
000011ef: PUSH1 0x1f
000011f1: DUP3
000011f2: ADD
000011f3: AND
000011f4: DUP3
000011f5: ADD
000011f6: DUP1
000011f7: PUSH1 0x40
000011f9: MSTORE
000011fa: POP
000011fb: PUSH2 0x1207
000011fe: SWAP2
000011ff: SWAP1
00001200: DUP2
00001201: ADD
00001202: SWAP1
00001203: PUSH2 0x2d87
00001206: JUMP
00001207: JUMPDEST
00001208: PUSH1 0x40
0000120a: MLOAD
0000120b: DUP8
0000120c: PUSH4 0xffffffff
00001211: AND
00001212: PUSH1 0xe0
00001214: SHL
00001215: DUP2
00001216: MSTORE
00001217: PUSH1 0x04
00001219: ADD
0000121a: PUSH2 0x1228
0000121d: SWAP7
0000121e: SWAP6
0000121f: SWAP5
00001220: SWAP4
00001221: SWAP3
00001222: SWAP2
00001223: SWAP1
00001224: PUSH2 0x32c3
00001227: JUMP
00001228: JUMPDEST
00001229: PUSH1 0x20
0000122b: PUSH1 0x40
0000122d: MLOAD
0000122e: DUP1
0000122f: DUP4
00001230: SUB
00001231: DUP2
00001232: DUP7
00001233: DUP1
00001234: EXTCODESIZE
00001235: ISZERO
00001236: DUP1
00001237: ISZERO
00001238: PUSH2 0x1240
0000123b: JUMPI
0000123c: PUSH1 0x00
0000123e: DUP1
0000123f: REVERT
00001240: JUMPDEST
00001241: POP
00001242: GAS
00001243: STATICCALL
00001244: ISZERO
00001245: DUP1
00001246: ISZERO
00001247: PUSH2 0x1254
0000124a: JUMPI
0000124b: RETURNDATASIZE
0000124c: PUSH1 0x00
0000124e: DUP1
0000124f: RETURNDATACOPY
00001250: RETURNDATASIZE
00001251: PUSH1 0x00
00001253: REVERT
00001254: JUMPDEST
00001255: POP
00001256: POP
00001257: POP
00001258: POP
00001259: PUSH1 0x40
0000125b: MLOAD
0000125c: RETURNDATASIZE
0000125d: PUSH1 0x1f
0000125f: NOT
00001260: PUSH1 0x1f
00001262: DUP3
00001263: ADD
00001264: AND
00001265: DUP3
00001266: ADD
00001267: DUP1
00001268: PUSH1 0x40
0000126a: MSTORE
0000126b: POP
0000126c: PUSH2 0x1278
0000126f: SWAP2
00001270: SWAP1
00001271: DUP2
00001272: ADD
00001273: SWAP1
00001274: PUSH2 0x2d87
00001277: JUMP
00001278: JUMPDEST
00001279: SWAP3
0000127a: POP
0000127b: PUSH2 0x1282
0000127e: PUSH2 0x27e4
00001281: JUMP
00001282: JUMPDEST
00001283: DUP11
00001284: DUP7
00001285: DUP2
00001286: MLOAD
00001287: DUP2
00001288: LT
00001289: PUSH2 0x128e
0000128c: JUMPI
0000128d: INVALID
0000128e: JUMPDEST
0000128f: PUSH1 0x20
00001291: MUL
00001292: PUSH1 0x20
00001294: ADD
00001295: ADD
00001296: MLOAD
00001297: PUSH1 0x00
00001299: DUP2
0000129a: MLOAD
0000129b: DUP2
0000129c: LT
0000129d: PUSH2 0x12a2
000012a0: JUMPI
000012a1: INVALID
000012a2: JUMPDEST
000012a3: PUSH1 0x20
000012a5: SWAP1
000012a6: DUP2
000012a7: MUL
000012a8: SWAP2
000012a9: SWAP1
000012aa: SWAP2
000012ab: ADD
000012ac: DUP2
000012ad: ADD
000012ae: MLOAD
000012af: SWAP1
000012b0: DUP2
000012b1: ADD
000012b2: MLOAD
000012b3: DUP2
000012b4: MLOAD
000012b5: PUSH1 0x40
000012b7: MLOAD
000012b8: PUSH4 0x6eb1769f
000012bd: PUSH1 0xe1
000012bf: SHL
000012c0: DUP2
000012c1: MSTORE
000012c2: SWAP3
000012c3: SWAP4
000012c4: POP
000012c5: SWAP1
000012c6: SWAP2
000012c7: PUSH1 0x00
000012c9: NOT
000012ca: SWAP1
000012cb: PUSH1 0x01
000012cd: PUSH1 0x01
000012cf: PUSH1 0xa0
000012d1: SHL
000012d2: SUB
000012d3: DUP5
000012d4: AND
000012d5: SWAP1
000012d6: PUSH4 0xdd62ed3e
000012db: SWAP1
000012dc: PUSH2 0x12eb
000012df: SWAP1
000012e0: ADDRESS
000012e1: SWAP1
000012e2: DUP7
000012e3: SWAP1
000012e4: PUSH1 0x04
000012e6: ADD
000012e7: PUSH2 0x3108
000012ea: JUMP
000012eb: JUMPDEST
000012ec: PUSH1 0x20
000012ee: PUSH1 0x40
000012f0: MLOAD
000012f1: DUP1
000012f2: DUP4
000012f3: SUB
000012f4: DUP2
000012f5: DUP7
000012f6: DUP1
000012f7: EXTCODESIZE
000012f8: ISZERO
000012f9: DUP1
000012fa: ISZERO
000012fb: PUSH2 0x1303
000012fe: JUMPI
000012ff: PUSH1 0x00
00001301: DUP1
00001302: REVERT
00001303: JUMPDEST
00001304: POP
00001305: GAS
00001306: STATICCALL
00001307: ISZERO
00001308: DUP1
00001309: ISZERO
0000130a: PUSH2 0x1317
0000130d: JUMPI
0000130e: RETURNDATASIZE
0000130f: PUSH1 0x00
00001311: DUP1
00001312: RETURNDATACOPY
00001313: RETURNDATASIZE
00001314: PUSH1 0x00
00001316: REVERT
00001317: JUMPDEST
00001318: POP
00001319: POP
0000131a: POP
0000131b: POP
0000131c: PUSH1 0x40
0000131e: MLOAD
0000131f: RETURNDATASIZE
00001320: PUSH1 0x1f
00001322: NOT
00001323: PUSH1 0x1f
00001325: DUP3
00001326: ADD
00001327: AND
00001328: DUP3
00001329: ADD
0000132a: DUP1
0000132b: PUSH1 0x40
0000132d: MSTORE
0000132e: POP
0000132f: PUSH2 0x133b
00001332: SWAP2
00001333: SWAP1
00001334: DUP2
00001335: ADD
00001336: SWAP1
00001337: PUSH2 0x2d87
0000133a: JUMP
0000133b: JUMPDEST
0000133c: LT
0000133d: ISZERO
0000133e: PUSH2 0x13c6
00001341: JUMPI
00001342: DUP3
00001343: MLOAD
00001344: PUSH1 0x40
00001346: MLOAD
00001347: PUSH4 0x095ea7b3
0000134c: PUSH1 0xe0
0000134e: SHL
0000134f: DUP2
00001350: MSTORE
00001351: PUSH1 0x01
00001353: PUSH1 0x01
00001355: PUSH1 0xa0
00001357: SHL
00001358: SUB
00001359: DUP5
0000135a: AND
0000135b: SWAP2
0000135c: PUSH4 0x095ea7b3
00001361: SWAP2
00001362: PUSH2 0x1372
00001365: SWAP2
00001366: SWAP1
00001367: PUSH1 0x00
00001369: NOT
0000136a: SWAP1
0000136b: PUSH1 0x04
0000136d: ADD
0000136e: PUSH2 0x319c
00001371: JUMP
00001372: JUMPDEST
00001373: PUSH1 0x20
00001375: PUSH1 0x40
00001377: MLOAD
00001378: DUP1
00001379: DUP4
0000137a: SUB
0000137b: DUP2
0000137c: PUSH1 0x00
0000137e: DUP8
0000137f: DUP1
00001380: EXTCODESIZE
00001381: ISZERO
00001382: DUP1
00001383: ISZERO
00001384: PUSH2 0x138c
00001387: JUMPI
00001388: PUSH1 0x00
0000138a: DUP1
0000138b: REVERT
0000138c: JUMPDEST
0000138d: POP
0000138e: GAS
0000138f: CALL
00001390: ISZERO
00001391: DUP1
00001392: ISZERO
00001393: PUSH2 0x13a0
00001396: JUMPI
00001397: RETURNDATASIZE
00001398: PUSH1 0x00
0000139a: DUP1
0000139b: RETURNDATACOPY
0000139c: RETURNDATASIZE
0000139d: PUSH1 0x00
0000139f: REVERT
000013a0: JUMPDEST
000013a1: POP
000013a2: POP
000013a3: POP
000013a4: POP
000013a5: PUSH1 0x40
000013a7: MLOAD
000013a8: RETURNDATASIZE
000013a9: PUSH1 0x1f
000013ab: NOT
000013ac: PUSH1 0x1f
000013ae: DUP3
000013af: ADD
000013b0: AND
000013b1: DUP3
000013b2: ADD
000013b3: DUP1
000013b4: PUSH1 0x40
000013b6: MSTORE
000013b7: POP
000013b8: PUSH2 0x13c4
000013bb: SWAP2
000013bc: SWAP1
000013bd: DUP2
000013be: ADD
000013bf: SWAP1
000013c0: PUSH2 0x2d23
000013c3: JUMP
000013c4: JUMPDEST
000013c5: POP
000013c6: JUMPDEST
000013c7: DUP1
000013c8: PUSH1 0x01
000013ca: PUSH1 0x01
000013cc: PUSH1 0xa0
000013ce: SHL
000013cf: SUB
000013d0: AND
000013d1: PUSH4 0x7c5e9ea4
000013d6: DUP5
000013d7: PUSH1 0x20
000013d9: ADD
000013da: MLOAD
000013db: DUP6
000013dc: PUSH1 0x80
000013de: ADD
000013df: MLOAD
000013e0: DUP7
000013e1: PUSH1 0x40
000013e3: ADD
000013e4: MLOAD
000013e5: DUP11
000013e6: DUP9
000013e7: PUSH1 0xa0
000013e9: ADD
000013ea: MLOAD
000013eb: PUSH1 0x40
000013ed: MLOAD
000013ee: DUP7
000013ef: PUSH4 0xffffffff
000013f4: AND
000013f5: PUSH1 0xe0
000013f7: SHL
000013f8: DUP2
000013f9: MSTORE
000013fa: PUSH1 0x04
000013fc: ADD
000013fd: PUSH2 0x140a
00001400: SWAP6
00001401: SWAP5
00001402: SWAP4
00001403: SWAP3
00001404: SWAP2
00001405: SWAP1
00001406: PUSH2 0x31aa
00001409: JUMP
0000140a: JUMPDEST
0000140b: PUSH1 0x40
0000140d: DUP1
0000140e: MLOAD
0000140f: DUP1
00001410: DUP4
00001411: SUB
00001412: DUP2
00001413: PUSH1 0x00
00001415: DUP8
00001416: DUP1
00001417: EXTCODESIZE
00001418: ISZERO
00001419: DUP1
0000141a: ISZERO
0000141b: PUSH2 0x1423
0000141e: JUMPI
0000141f: PUSH1 0x00
00001421: DUP1
00001422: REVERT
00001423: JUMPDEST
00001424: POP
00001425: GAS
00001426: CALL
00001427: ISZERO
00001428: DUP1
00001429: ISZERO
0000142a: PUSH2 0x1437
0000142d: JUMPI
0000142e: RETURNDATASIZE
0000142f: PUSH1 0x00
00001431: DUP1
00001432: RETURNDATACOPY
00001433: RETURNDATASIZE
00001434: PUSH1 0x00
00001436: REVERT
00001437: JUMPDEST
00001438: POP
00001439: POP
0000143a: POP
0000143b: POP
0000143c: PUSH1 0x40
0000143e: MLOAD
0000143f: RETURNDATASIZE
00001440: PUSH1 0x1f
00001442: NOT
00001443: PUSH1 0x1f
00001445: DUP3
00001446: ADD
00001447: AND
00001448: DUP3
00001449: ADD
0000144a: DUP1
0000144b: PUSH1 0x40
0000144d: MSTORE
0000144e: POP
0000144f: PUSH2 0x145b
00001452: SWAP2
00001453: SWAP1
00001454: DUP2
00001455: ADD
00001456: SWAP1
00001457: PUSH2 0x2da5
0000145a: JUMP
0000145b: JUMPDEST
0000145c: POP
0000145d: PUSH1 0x20
0000145f: DUP7
00001460: ADD
00001461: MLOAD
00001462: DUP7
00001463: MLOAD
00001464: PUSH1 0x40
00001466: MLOAD
00001467: PUSH4 0x6eb1769f
0000146c: PUSH1 0xe1
0000146e: SHL
0000146f: DUP2
00001470: MSTORE
00001471: SWAP3
00001472: SWAP10
00001473: POP
00001474: SWAP1
00001475: SWAP2
00001476: PUSH1 0x00
00001478: NOT
00001479: SWAP2
0000147a: PUSH1 0x01
0000147c: PUSH1 0x01
0000147e: PUSH1 0xa0
00001480: SHL
00001481: SUB
00001482: DUP5
00001483: AND
00001484: SWAP2
00001485: PUSH4 0xdd62ed3e
0000148a: SWAP2
0000148b: PUSH2 0x1499
0000148e: SWAP2
0000148f: ADDRESS
00001490: SWAP2
00001491: SWAP1
00001492: PUSH1 0x04
00001494: ADD
00001495: PUSH2 0x3108
00001498: JUMP
00001499: JUMPDEST
0000149a: PUSH1 0x20
0000149c: PUSH1 0x40
0000149e: MLOAD
0000149f: DUP1
000014a0: DUP4
000014a1: SUB
000014a2: DUP2
000014a3: DUP7
000014a4: DUP1
000014a5: EXTCODESIZE
000014a6: ISZERO
000014a7: DUP1
000014a8: ISZERO
000014a9: PUSH2 0x14b1
000014ac: JUMPI
000014ad: PUSH1 0x00
000014af: DUP1
000014b0: REVERT
000014b1: JUMPDEST
000014b2: POP
000014b3: GAS
000014b4: STATICCALL
000014b5: ISZERO
000014b6: DUP1
000014b7: ISZERO
000014b8: PUSH2 0x14c5
000014bb: JUMPI
000014bc: RETURNDATASIZE
000014bd: PUSH1 0x00
000014bf: DUP1
000014c0: RETURNDATACOPY
000014c1: RETURNDATASIZE
000014c2: PUSH1 0x00
000014c4: REVERT
000014c5: JUMPDEST
000014c6: POP
000014c7: POP
000014c8: POP
000014c9: POP
000014ca: PUSH1 0x40
000014cc: MLOAD
000014cd: RETURNDATASIZE
000014ce: PUSH1 0x1f
000014d0: NOT
000014d1: PUSH1 0x1f
000014d3: DUP3
000014d4: ADD
000014d5: AND
000014d6: DUP3
000014d7: ADD
000014d8: DUP1
000014d9: PUSH1 0x40
000014db: MSTORE
000014dc: POP
000014dd: PUSH2 0x14e9
000014e0: SWAP2
000014e1: SWAP1
000014e2: DUP2
000014e3: ADD
000014e4: SWAP1
000014e5: PUSH2 0x2d87
000014e8: JUMP
000014e9: JUMPDEST
000014ea: LT
000014eb: ISZERO
000014ec: PUSH2 0x1574
000014ef: JUMPI
000014f0: DUP6
000014f1: MLOAD
000014f2: PUSH1 0x40
000014f4: MLOAD
000014f5: PUSH4 0x095ea7b3
000014fa: PUSH1 0xe0
000014fc: SHL
000014fd: DUP2
000014fe: MSTORE
000014ff: PUSH1 0x01
00001501: PUSH1 0x01
00001503: PUSH1 0xa0
00001505: SHL
00001506: SUB
00001507: DUP4
00001508: AND
00001509: SWAP2
0000150a: PUSH4 0x095ea7b3
0000150f: SWAP2
00001510: PUSH2 0x1520
00001513: SWAP2
00001514: SWAP1
00001515: PUSH1 0x00
00001517: NOT
00001518: SWAP1
00001519: PUSH1 0x04
0000151b: ADD
0000151c: PUSH2 0x319c
0000151f: JUMP
00001520: JUMPDEST
00001521: PUSH1 0x20
00001523: PUSH1 0x40
00001525: MLOAD
00001526: DUP1
00001527: DUP4
00001528: SUB
00001529: DUP2
0000152a: PUSH1 0x00
0000152c: DUP8
0000152d: DUP1
0000152e: EXTCODESIZE
0000152f: ISZERO
00001530: DUP1
00001531: ISZERO
00001532: PUSH2 0x153a
00001535: JUMPI
00001536: PUSH1 0x00
00001538: DUP1
00001539: REVERT
0000153a: JUMPDEST
0000153b: POP
0000153c: GAS
0000153d: CALL
0000153e: ISZERO
0000153f: DUP1
00001540: ISZERO
00001541: PUSH2 0x154e
00001544: JUMPI
00001545: RETURNDATASIZE
00001546: PUSH1 0x00
00001548: DUP1
00001549: RETURNDATACOPY
0000154a: RETURNDATASIZE
0000154b: PUSH1 0x00
0000154d: REVERT
0000154e: JUMPDEST
0000154f: POP
00001550: POP
00001551: POP
00001552: POP
00001553: PUSH1 0x40
00001555: MLOAD
00001556: RETURNDATASIZE
00001557: PUSH1 0x1f
00001559: NOT
0000155a: PUSH1 0x1f
0000155c: DUP3
0000155d: ADD
0000155e: AND
0000155f: DUP3
00001560: ADD
00001561: DUP1
00001562: PUSH1 0x40
00001564: MSTORE
00001565: POP
00001566: PUSH2 0x1572
00001569: SWAP2
0000156a: SWAP1
0000156b: DUP2
0000156c: ADD
0000156d: SWAP1
0000156e: PUSH2 0x2d23
00001571: JUMP
00001572: JUMPDEST
00001573: POP
00001574: JUMPDEST
00001575: DUP5
00001576: PUSH1 0x01
00001578: PUSH1 0x01
0000157a: PUSH1 0xa0
0000157c: SHL
0000157d: SUB
0000157e: AND
0000157f: PUSH4 0x7c5e9ea4
00001584: DUP8
00001585: PUSH1 0x20
00001587: ADD
00001588: MLOAD
00001589: DUP9
0000158a: PUSH1 0x80
0000158c: ADD
0000158d: MLOAD
0000158e: DUP10
0000158f: PUSH1 0x40
00001591: ADD
00001592: MLOAD
00001593: DUP11
00001594: PUSH1 0x60
00001596: ADD
00001597: MLOAD
00001598: DUP12
00001599: PUSH1 0xa0
0000159b: ADD
0000159c: MLOAD
0000159d: PUSH1 0x40
0000159f: MLOAD
000015a0: DUP7
000015a1: PUSH4 0xffffffff
000015a6: AND
000015a7: PUSH1 0xe0
000015a9: SHL
000015aa: DUP2
000015ab: MSTORE
000015ac: PUSH1 0x04
000015ae: ADD
000015af: PUSH2 0x15bc
000015b2: SWAP6
000015b3: SWAP5
000015b4: SWAP4
000015b5: SWAP3
000015b6: SWAP2
000015b7: SWAP1
000015b8: PUSH2 0x31aa
000015bb: JUMP
000015bc: JUMPDEST
000015bd: PUSH1 0x40
000015bf: DUP1
000015c0: MLOAD
000015c1: DUP1
000015c2: DUP4
000015c3: SUB
000015c4: DUP2
000015c5: PUSH1 0x00
000015c7: DUP8
000015c8: DUP1
000015c9: EXTCODESIZE
000015ca: ISZERO
000015cb: DUP1
000015cc: ISZERO
000015cd: PUSH2 0x15d5
000015d0: JUMPI
000015d1: PUSH1 0x00
000015d3: DUP1
000015d4: REVERT
000015d5: JUMPDEST
000015d6: POP
000015d7: GAS
000015d8: CALL
000015d9: ISZERO
000015da: DUP1
000015db: ISZERO
000015dc: PUSH2 0x15e9
000015df: JUMPI
000015e0: RETURNDATASIZE
000015e1: PUSH1 0x00
000015e3: DUP1
000015e4: RETURNDATACOPY
000015e5: RETURNDATASIZE
000015e6: PUSH1 0x00
000015e8: REVERT
000015e9: JUMPDEST
000015ea: POP
000015eb: POP
000015ec: POP
000015ed: POP
000015ee: PUSH1 0x40
000015f0: MLOAD
000015f1: RETURNDATASIZE
000015f2: PUSH1 0x1f
000015f4: NOT
000015f5: PUSH1 0x1f
000015f7: DUP3
000015f8: ADD
000015f9: AND
000015fa: DUP3
000015fb: ADD
000015fc: DUP1
000015fd: PUSH1 0x40
000015ff: MSTORE
00001600: POP
00001601: PUSH2 0x160d
00001604: SWAP2
00001605: SWAP1
00001606: DUP2
00001607: ADD
00001608: SWAP1
00001609: PUSH2 0x2da5
0000160c: JUMP
0000160d: JUMPDEST
0000160e: POP
0000160f: POP
00001610: POP
00001611: POP
00001612: POP
00001613: POP
00001614: POP
00001615: POP
00001616: POP
00001617: JUMPDEST
00001618: PUSH2 0x1627
0000161b: DUP2
0000161c: DUP5
0000161d: PUSH4 0xffffffff
00001622: PUSH2 0x1e4a
00001625: AND
00001626: JUMP
00001627: JUMPDEST
00001628: SWAP3
00001629: POP
0000162a: POP
0000162b: PUSH1 0x01
0000162d: ADD
0000162e: PUSH2 0x0cb5
00001631: JUMP
00001632: JUMPDEST
00001633: PUSH1 0x00
00001635: PUSH2 0x163e
00001638: DUP6
00001639: DUP5
0000163a: PUSH2 0x1d28
0000163d: JUMP
0000163e: JUMPDEST
0000163f: POP
00001640: PUSH1 0x00
00001642: JUMPDEST
00001643: DUP7
00001644: MLOAD
00001645: DUP2
00001646: LT
00001647: ISZERO
00001648: PUSH2 0x18c5
0000164b: JUMPI
0000164c: PUSH2 0x1653
0000164f: PUSH2 0x27e4
00001652: JUMP
00001653: JUMPDEST
00001654: DUP8
00001655: DUP3
00001656: DUP2
00001657: MLOAD
00001658: DUP2
00001659: LT
0000165a: PUSH2 0x165f
0000165d: JUMPI
0000165e: INVALID
0000165f: JUMPDEST
00001660: PUSH1 0x20
00001662: SWAP1
00001663: DUP2
00001664: MUL
00001665: SWAP2
00001666: SWAP1
00001667: SWAP2
00001668: ADD
00001669: DUP2
0000166a: ADD
0000166b: MLOAD
0000166c: SWAP1
0000166d: DUP2
0000166e: ADD
0000166f: MLOAD
00001670: DUP2
00001671: MLOAD
00001672: PUSH1 0x40
00001674: MLOAD
00001675: PUSH4 0x6eb1769f
0000167a: PUSH1 0xe1
0000167c: SHL
0000167d: DUP2
0000167e: MSTORE
0000167f: SWAP3
00001680: SWAP4
00001681: POP
00001682: SWAP1
00001683: SWAP2
00001684: PUSH1 0x00
00001686: SWAP1
00001687: PUSH1 0x01
00001689: PUSH1 0x01
0000168b: PUSH1 0xa0
0000168d: SHL
0000168e: SUB
0000168f: DUP5
00001690: AND
00001691: SWAP1
00001692: PUSH4 0xdd62ed3e
00001697: SWAP1
00001698: PUSH2 0x16a7
0000169b: SWAP1
0000169c: ADDRESS
0000169d: SWAP1
0000169e: DUP7
0000169f: SWAP1
000016a0: PUSH1 0x04
000016a2: ADD
000016a3: PUSH2 0x3108
000016a6: JUMP
000016a7: JUMPDEST
000016a8: PUSH1 0x20
000016aa: PUSH1 0x40
000016ac: MLOAD
000016ad: DUP1
000016ae: DUP4
000016af: SUB
000016b0: DUP2
000016b1: DUP7
000016b2: DUP1
000016b3: EXTCODESIZE
000016b4: ISZERO
000016b5: DUP1
000016b6: ISZERO
000016b7: PUSH2 0x16bf
000016ba: JUMPI
000016bb: PUSH1 0x00
000016bd: DUP1
000016be: REVERT
000016bf: JUMPDEST
000016c0: POP
000016c1: GAS
000016c2: STATICCALL
000016c3: ISZERO
000016c4: DUP1
000016c5: ISZERO
000016c6: PUSH2 0x16d3
000016c9: JUMPI
000016ca: RETURNDATASIZE
000016cb: PUSH1 0x00
000016cd: DUP1
000016ce: RETURNDATACOPY
000016cf: RETURNDATASIZE
000016d0: PUSH1 0x00
000016d2: REVERT
000016d3: JUMPDEST
000016d4: POP
000016d5: POP
000016d6: POP
000016d7: POP
000016d8: PUSH1 0x40
000016da: MLOAD
000016db: RETURNDATASIZE
000016dc: PUSH1 0x1f
000016de: NOT
000016df: PUSH1 0x1f
000016e1: DUP3
000016e2: ADD
000016e3: AND
000016e4: DUP3
000016e5: ADD
000016e6: DUP1
000016e7: PUSH1 0x40
000016e9: MSTORE
000016ea: POP
000016eb: PUSH2 0x16f7
000016ee: SWAP2
000016ef: SWAP1
000016f0: DUP2
000016f1: ADD
000016f2: SWAP1
000016f3: PUSH2 0x2d87
000016f6: JUMP
000016f7: JUMPDEST
000016f8: GT
000016f9: ISZERO
000016fa: PUSH2 0x1781
000016fd: JUMPI
000016fe: DUP3
000016ff: MLOAD
00001700: PUSH1 0x40
00001702: MLOAD
00001703: PUSH4 0x095ea7b3
00001708: PUSH1 0xe0
0000170a: SHL
0000170b: DUP2
0000170c: MSTORE
0000170d: PUSH1 0x01
0000170f: PUSH1 0x01
00001711: PUSH1 0xa0
00001713: SHL
00001714: SUB
00001715: DUP5
00001716: AND
00001717: SWAP2
00001718: PUSH4 0x095ea7b3
0000171d: SWAP2
0000171e: PUSH2 0x172d
00001721: SWAP2
00001722: SWAP1
00001723: PUSH1 0x00
00001725: SWAP1
00001726: PUSH1 0x04
00001728: ADD
00001729: PUSH2 0x3181
0000172c: JUMP
0000172d: JUMPDEST
0000172e: PUSH1 0x20
00001730: PUSH1 0x40
00001732: MLOAD
00001733: DUP1
00001734: DUP4
00001735: SUB
00001736: DUP2
00001737: PUSH1 0x00
00001739: DUP8
0000173a: DUP1
0000173b: EXTCODESIZE
0000173c: ISZERO
0000173d: DUP1
0000173e: ISZERO
0000173f: PUSH2 0x1747
00001742: JUMPI
00001743: PUSH1 0x00
00001745: DUP1
00001746: REVERT
00001747: JUMPDEST
00001748: POP
00001749: GAS
0000174a: CALL
0000174b: ISZERO
0000174c: DUP1
0000174d: ISZERO
0000174e: PUSH2 0x175b
00001751: JUMPI
00001752: RETURNDATASIZE
00001753: PUSH1 0x00
00001755: DUP1
00001756: RETURNDATACOPY
00001757: RETURNDATASIZE
00001758: PUSH1 0x00
0000175a: REVERT
0000175b: JUMPDEST
0000175c: POP
0000175d: POP
0000175e: POP
0000175f: POP
00001760: PUSH1 0x40
00001762: MLOAD
00001763: RETURNDATASIZE
00001764: PUSH1 0x1f
00001766: NOT
00001767: PUSH1 0x1f
00001769: DUP3
0000176a: ADD
0000176b: AND
0000176c: DUP3
0000176d: ADD
0000176e: DUP1
0000176f: PUSH1 0x40
00001771: MSTORE
00001772: POP
00001773: PUSH2 0x177f
00001776: SWAP2
00001777: SWAP1
00001778: DUP2
00001779: ADD
0000177a: SWAP1
0000177b: PUSH2 0x2d23
0000177e: JUMP
0000177f: JUMPDEST
00001780: POP
00001781: JUMPDEST
00001782: DUP3
00001783: MLOAD
00001784: PUSH1 0x60
00001786: DUP5
00001787: ADD
00001788: MLOAD
00001789: PUSH1 0x40
0000178b: MLOAD
0000178c: PUSH4 0x095ea7b3
00001791: PUSH1 0xe0
00001793: SHL
00001794: DUP2
00001795: MSTORE
00001796: PUSH1 0x01
00001798: PUSH1 0x01
0000179a: PUSH1 0xa0
0000179c: SHL
0000179d: SUB
0000179e: DUP6
0000179f: AND
000017a0: SWAP3
000017a1: PUSH4 0x095ea7b3
000017a6: SWAP3
000017a7: PUSH2 0x17b2
000017aa: SWAP3
000017ab: PUSH1 0x04
000017ad: ADD
000017ae: PUSH2 0x319c
000017b1: JUMP
000017b2: JUMPDEST
000017b3: PUSH1 0x20
000017b5: PUSH1 0x40
000017b7: MLOAD
000017b8: DUP1
000017b9: DUP4
000017ba: SUB
000017bb: DUP2
000017bc: PUSH1 0x00
000017be: DUP8
000017bf: DUP1
000017c0: EXTCODESIZE
000017c1: ISZERO
000017c2: DUP1
000017c3: ISZERO
000017c4: PUSH2 0x17cc
000017c7: JUMPI
000017c8: PUSH1 0x00
000017ca: DUP1
000017cb: REVERT
000017cc: JUMPDEST
000017cd: POP
000017ce: GAS
000017cf: CALL
000017d0: ISZERO
000017d1: DUP1
000017d2: ISZERO
000017d3: PUSH2 0x17e0
000017d6: JUMPI
000017d7: RETURNDATASIZE
000017d8: PUSH1 0x00
000017da: DUP1
000017db: RETURNDATACOPY
000017dc: RETURNDATASIZE
000017dd: PUSH1 0x00
000017df: REVERT
000017e0: JUMPDEST
000017e1: POP
000017e2: POP
000017e3: POP
000017e4: POP
000017e5: PUSH1 0x40
000017e7: MLOAD
000017e8: RETURNDATASIZE
000017e9: PUSH1 0x1f
000017eb: NOT
000017ec: PUSH1 0x1f
000017ee: DUP3
000017ef: ADD
000017f0: AND
000017f1: DUP3
000017f2: ADD
000017f3: DUP1
000017f4: PUSH1 0x40
000017f6: MSTORE
000017f7: POP
000017f8: PUSH2 0x1804
000017fb: SWAP2
000017fc: SWAP1
000017fd: DUP2
000017fe: ADD
000017ff: SWAP1
00001800: PUSH2 0x2d23
00001803: JUMP
00001804: JUMPDEST
00001805: POP
00001806: PUSH1 0x20
00001808: DUP4
00001809: ADD
0000180a: MLOAD
0000180b: PUSH1 0x60
0000180d: DUP5
0000180e: ADD
0000180f: MLOAD
00001810: PUSH1 0x40
00001812: DUP1
00001813: DUP7
00001814: ADD
00001815: MLOAD
00001816: PUSH1 0x80
00001818: DUP8
00001819: ADD
0000181a: MLOAD
0000181b: PUSH1 0xa0
0000181d: DUP9
0000181e: ADD
0000181f: MLOAD
00001820: SWAP3
00001821: MLOAD
00001822: PUSH4 0x8201aa3f
00001827: PUSH1 0xe0
00001829: SHL
0000182a: DUP2
0000182b: MSTORE
0000182c: PUSH1 0x00
0000182e: SWAP6
0000182f: PUSH1 0x01
00001831: PUSH1 0x01
00001833: PUSH1 0xa0
00001835: SHL
00001836: SUB
00001837: DUP9
00001838: AND
00001839: SWAP6
0000183a: PUSH4 0x8201aa3f
0000183f: SWAP6
00001840: PUSH2 0x184f
00001843: SWAP6
00001844: SWAP3
00001845: SWAP5
00001846: SWAP2
00001847: SWAP4
00001848: PUSH1 0x04
0000184a: ADD
0000184b: PUSH2 0x31aa
0000184e: JUMP
0000184f: JUMPDEST
00001850: PUSH1 0x40
00001852: DUP1
00001853: MLOAD
00001854: DUP1
00001855: DUP4
00001856: SUB
00001857: DUP2
00001858: PUSH1 0x00
0000185a: DUP8
0000185b: DUP1
0000185c: EXTCODESIZE
0000185d: ISZERO
0000185e: DUP1
0000185f: ISZERO
00001860: PUSH2 0x1868
00001863: JUMPI
00001864: PUSH1 0x00
00001866: DUP1
00001867: REVERT
00001868: JUMPDEST
00001869: POP
0000186a: GAS
0000186b: CALL
0000186c: ISZERO
0000186d: DUP1
0000186e: ISZERO
0000186f: PUSH2 0x187c
00001872: JUMPI
00001873: RETURNDATASIZE
00001874: PUSH1 0x00
00001876: DUP1
00001877: RETURNDATACOPY
00001878: RETURNDATASIZE
00001879: PUSH1 0x00
0000187b: REVERT
0000187c: JUMPDEST
0000187d: POP
0000187e: POP
0000187f: POP
00001880: POP
00001881: PUSH1 0x40
00001883: MLOAD
00001884: RETURNDATASIZE
00001885: PUSH1 0x1f
00001887: NOT
00001888: PUSH1 0x1f
0000188a: DUP3
0000188b: ADD
0000188c: AND
0000188d: DUP3
0000188e: ADD
0000188f: DUP1
00001890: PUSH1 0x40
00001892: MSTORE
00001893: POP
00001894: PUSH2 0x18a0
00001897: SWAP2
00001898: SWAP1
00001899: DUP2
0000189a: ADD
0000189b: SWAP1
0000189c: PUSH2 0x2da5
0000189f: JUMP
000018a0: JUMPDEST
000018a1: POP
000018a2: SWAP1
000018a3: POP
000018a4: PUSH2 0x18b3
000018a7: DUP2
000018a8: DUP8
000018a9: PUSH4 0xffffffff
000018ae: PUSH2 0x1e4a
000018b1: AND
000018b2: JUMP
000018b3: JUMPDEST
000018b4: SWAP6
000018b5: POP
000018b6: POP
000018b7: PUSH1 0x01
000018b9: SWAP1
000018ba: SWAP4
000018bb: ADD
000018bc: SWAP3
000018bd: POP
000018be: PUSH2 0x1642
000018c1: SWAP2
000018c2: POP
000018c3: POP
000018c4: JUMP
000018c5: JUMPDEST
000018c6: POP
000018c7: DUP2
000018c8: DUP2
000018c9: LT
000018ca: ISZERO
000018cb: PUSH2 0x18e6
000018ce: JUMPI
000018cf: PUSH1 0x40
000018d1: MLOAD
000018d2: PUSH3 0x461bcd
000018d6: PUSH1 0xe5
000018d8: SHL
000018d9: DUP2
000018da: MSTORE
000018db: PUSH1 0x04
000018dd: ADD
000018de: PUSH2 0x0568
000018e1: SWAP1
000018e2: PUSH2 0x3255
000018e5: JUMP
000018e6: JUMPDEST
000018e7: PUSH2 0x18f0
000018ea: DUP5
000018eb: DUP3
000018ec: PUSH2 0x1f39
000018ef: JUMP
000018f0: JUMPDEST
000018f1: POP
000018f2: PUSH2 0x18fe
000018f5: DUP6
000018f6: PUSH2 0x057e
000018f9: DUP8
000018fa: PUSH2 0x1e76
000018fd: JUMP
000018fe: JUMPDEST
000018ff: POP
00001900: SWAP6
00001901: SWAP5
00001902: POP
00001903: POP
00001904: POP
00001905: POP
00001906: POP
00001907: JUMP
00001908: JUMPDEST
00001909: PUSH1 0x00
0000190b: SLOAD
0000190c: PUSH1 0x01
0000190e: PUSH1 0x01
00001910: PUSH1 0xa0
00001912: SHL
00001913: SUB
00001914: AND
00001915: SWAP1
00001916: JUMP
00001917: JUMPDEST
00001918: PUSH1 0x00
0000191a: DUP1
0000191b: SLOAD
0000191c: PUSH1 0x01
0000191e: PUSH1 0x01
00001920: PUSH1 0xa0
00001922: SHL
00001923: SUB
00001924: AND
00001925: PUSH2 0x192c
00001928: PUSH2 0x26ab
0000192b: JUMP
0000192c: JUMPDEST
0000192d: PUSH1 0x01
0000192f: PUSH1 0x01
00001931: PUSH1 0xa0
00001933: SHL
00001934: SUB
00001935: AND
00001936: EQ
00001937: SWAP1
00001938: POP
00001939: SWAP1
0000193a: JUMP
0000193b: JUMPDEST
0000193c: PUSH2 0x1943
0000193f: PUSH2 0x1917
00001942: JUMP
00001943: JUMPDEST
00001944: PUSH2 0x195f
00001947: JUMPI
00001948: PUSH1 0x40
0000194a: MLOAD
0000194b: PUSH3 0x461bcd
0000194f: PUSH1 0xe5
00001951: SHL
00001952: DUP2
00001953: MSTORE
00001954: PUSH1 0x04
00001956: ADD
00001957: PUSH2 0x0568
0000195a: SWAP1
0000195b: PUSH2 0x3285
0000195e: JUMP
0000195f: JUMPDEST
00001960: PUSH1 0x02
00001962: DUP1
00001963: SLOAD
00001964: PUSH1 0x01
00001966: PUSH1 0x01
00001968: PUSH1 0xa0
0000196a: SHL
0000196b: SUB
0000196c: NOT
0000196d: AND
0000196e: PUSH1 0x01
00001970: PUSH1 0x01
00001972: PUSH1 0xa0
00001974: SHL
00001975: SUB
00001976: SWAP3
00001977: SWAP1
00001978: SWAP3
00001979: AND
0000197a: SWAP2
0000197b: SWAP1
0000197c: SWAP2
0000197d: OR
0000197e: SWAP1
0000197f: SSTORE
00001980: JUMP
00001981: JUMPDEST
00001982: PUSH1 0x00
00001984: PUSH1 0x60
00001986: PUSH2 0x198e
00001989: DUP8
0000198a: PUSH2 0x1d02
0000198d: JUMP
0000198e: JUMPDEST
0000198f: ISZERO
00001990: PUSH2 0x19b3
00001993: JUMPI
00001994: PUSH1 0x01
00001996: SLOAD
00001997: PUSH2 0x19ab
0000199a: SWAP1
0000199b: PUSH1 0x01
0000199d: PUSH1 0x01
0000199f: PUSH1 0xa0
000019a1: SHL
000019a2: SUB
000019a3: AND
000019a4: DUP8
000019a5: DUP8
000019a6: DUP7
000019a7: PUSH2 0x059a
000019aa: JUMP
000019ab: JUMPDEST
000019ac: POP
000019ad: SWAP1
000019ae: POP
000019af: PUSH2 0x19ea
000019b2: JUMP
000019b3: JUMPDEST
000019b4: PUSH2 0x19bc
000019b7: DUP7
000019b8: PUSH2 0x1d02
000019bb: JUMP
000019bc: JUMPDEST
000019bd: ISZERO
000019be: PUSH2 0x19da
000019c1: JUMPI
000019c2: PUSH1 0x01
000019c4: SLOAD
000019c5: PUSH2 0x19ab
000019c8: SWAP1
000019c9: DUP9
000019ca: SWAP1
000019cb: PUSH1 0x01
000019cd: PUSH1 0x01
000019cf: PUSH1 0xa0
000019d1: SHL
000019d2: SUB
000019d3: AND
000019d4: DUP8
000019d5: DUP7
000019d6: PUSH2 0x059a
000019d9: JUMP
000019da: JUMPDEST
000019db: PUSH2 0x19e6
000019de: DUP8
000019df: DUP8
000019e0: DUP8
000019e1: DUP7
000019e2: PUSH2 0x059a
000019e5: JUMP
000019e6: JUMPDEST
000019e7: POP
000019e8: SWAP1
000019e9: POP
000019ea: JUMPDEST
000019eb: PUSH2 0x02a9
000019ee: DUP2
000019ef: DUP9
000019f0: DUP9
000019f1: DUP8
000019f2: PUSH2 0x02b4
000019f5: JUMP
000019f6: JUMPDEST
000019f7: PUSH1 0x00
000019f9: PUSH2 0x1a02
000019fc: DUP6
000019fd: DUP5
000019fe: PUSH2 0x1d28
00001a01: JUMP
00001a02: JUMPDEST
00001a03: POP
00001a04: PUSH1 0x00
00001a06: JUMPDEST
00001a07: DUP7
00001a08: MLOAD
00001a09: DUP2
00001a0a: LT
00001a0b: ISZERO
00001a0c: PUSH2 0x18c5
00001a0f: JUMPI
00001a10: PUSH1 0x00
00001a12: DUP1
00001a13: JUMPDEST
00001a14: DUP9
00001a15: DUP4
00001a16: DUP2
00001a17: MLOAD
00001a18: DUP2
00001a19: LT
00001a1a: PUSH2 0x1a1f
00001a1d: JUMPI
00001a1e: INVALID
00001a1f: JUMPDEST
00001a20: PUSH1 0x20
00001a22: MUL
00001a23: PUSH1 0x20
00001a25: ADD
00001a26: ADD
00001a27: MLOAD
00001a28: MLOAD
00001a29: DUP2
00001a2a: LT
00001a2b: ISZERO
00001a2c: PUSH2 0x1cb6
00001a2f: JUMPI
00001a30: PUSH2 0x1a37
00001a33: PUSH2 0x27e4
00001a36: JUMP
00001a37: JUMPDEST
00001a38: DUP10
00001a39: DUP5
00001a3a: DUP2
00001a3b: MLOAD
00001a3c: DUP2
00001a3d: LT
00001a3e: PUSH2 0x1a43
00001a41: JUMPI
00001a42: INVALID
00001a43: JUMPDEST
00001a44: PUSH1 0x20
00001a46: MUL
00001a47: PUSH1 0x20
00001a49: ADD
00001a4a: ADD
00001a4b: MLOAD
00001a4c: DUP3
00001a4d: DUP2
00001a4e: MLOAD
00001a4f: DUP2
00001a50: LT
00001a51: PUSH2 0x1a56
00001a54: JUMPI
00001a55: INVALID
00001a56: JUMPDEST
00001a57: PUSH1 0x20
00001a59: MUL
00001a5a: PUSH1 0x20
00001a5c: ADD
00001a5d: ADD
00001a5e: MLOAD
00001a5f: SWAP1
00001a60: POP
00001a61: PUSH1 0x00
00001a63: DUP2
00001a64: PUSH1 0x20
00001a66: ADD
00001a67: MLOAD
00001a68: SWAP1
00001a69: POP
00001a6a: DUP3
00001a6b: PUSH1 0x01
00001a6d: EQ
00001a6e: ISZERO
00001a6f: PUSH2 0x1a7a
00001a72: JUMPI
00001a73: PUSH1 0x60
00001a75: DUP3
00001a76: ADD
00001a77: DUP5
00001a78: SWAP1
00001a79: MSTORE
00001a7a: JUMPDEST
00001a7b: DUP2
00001a7c: MLOAD
00001a7d: PUSH1 0x40
00001a7f: MLOAD
00001a80: PUSH4 0x6eb1769f
00001a85: PUSH1 0xe1
00001a87: SHL
00001a88: DUP2
00001a89: MSTORE
00001a8a: PUSH1 0x00
00001a8c: SWAP1
00001a8d: PUSH1 0x01
00001a8f: PUSH1 0x01
00001a91: PUSH1 0xa0
00001a93: SHL
00001a94: SUB
00001a95: DUP5
00001a96: AND
00001a97: SWAP1
00001a98: PUSH4 0xdd62ed3e
00001a9d: SWAP1
00001a9e: PUSH2 0x1aad
00001aa1: SWAP1
00001aa2: ADDRESS
00001aa3: SWAP1
00001aa4: DUP7
00001aa5: SWAP1
00001aa6: PUSH1 0x04
00001aa8: ADD
00001aa9: PUSH2 0x3108
00001aac: JUMP
00001aad: JUMPDEST
00001aae: PUSH1 0x20
00001ab0: PUSH1 0x40
00001ab2: MLOAD
00001ab3: DUP1
00001ab4: DUP4
00001ab5: SUB
00001ab6: DUP2
00001ab7: DUP7
00001ab8: DUP1
00001ab9: EXTCODESIZE
00001aba: ISZERO
00001abb: DUP1
00001abc: ISZERO
00001abd: PUSH2 0x1ac5
00001ac0: JUMPI
00001ac1: PUSH1 0x00
00001ac3: DUP1
00001ac4: REVERT
00001ac5: JUMPDEST
00001ac6: POP
00001ac7: GAS
00001ac8: STATICCALL
00001ac9: ISZERO
00001aca: DUP1
00001acb: ISZERO
00001acc: PUSH2 0x1ad9
00001acf: JUMPI
00001ad0: RETURNDATASIZE
00001ad1: PUSH1 0x00
00001ad3: DUP1
00001ad4: RETURNDATACOPY
00001ad5: RETURNDATASIZE
00001ad6: PUSH1 0x00
00001ad8: REVERT
00001ad9: JUMPDEST
00001ada: POP
00001adb: POP
00001adc: POP
00001add: POP
00001ade: PUSH1 0x40
00001ae0: MLOAD
00001ae1: RETURNDATASIZE
00001ae2: PUSH1 0x1f
00001ae4: NOT
00001ae5: PUSH1 0x1f
00001ae7: DUP3
00001ae8: ADD
00001ae9: AND
00001aea: DUP3
00001aeb: ADD
00001aec: DUP1
00001aed: PUSH1 0x40
00001aef: MSTORE
00001af0: POP
00001af1: PUSH2 0x1afd
00001af4: SWAP2
00001af5: SWAP1
00001af6: DUP2
00001af7: ADD
00001af8: SWAP1
00001af9: PUSH2 0x2d87
00001afc: JUMP
00001afd: JUMPDEST
00001afe: GT
00001aff: ISZERO
00001b00: PUSH2 0x1b87
00001b03: JUMPI
00001b04: DUP3
00001b05: MLOAD
00001b06: PUSH1 0x40
00001b08: MLOAD
00001b09: PUSH4 0x095ea7b3
00001b0e: PUSH1 0xe0
00001b10: SHL
00001b11: DUP2
00001b12: MSTORE
00001b13: PUSH1 0x01
00001b15: PUSH1 0x01
00001b17: PUSH1 0xa0
00001b19: SHL
00001b1a: SUB
00001b1b: DUP5
00001b1c: AND
00001b1d: SWAP2
00001b1e: PUSH4 0x095ea7b3
00001b23: SWAP2
00001b24: PUSH2 0x1b33
00001b27: SWAP2
00001b28: SWAP1
00001b29: PUSH1 0x00
00001b2b: SWAP1
00001b2c: PUSH1 0x04
00001b2e: ADD
00001b2f: PUSH2 0x3181
00001b32: JUMP
00001b33: JUMPDEST
00001b34: PUSH1 0x20
00001b36: PUSH1 0x40
00001b38: MLOAD
00001b39: DUP1
00001b3a: DUP4
00001b3b: SUB
00001b3c: DUP2
00001b3d: PUSH1 0x00
00001b3f: DUP8
00001b40: DUP1
00001b41: EXTCODESIZE
00001b42: ISZERO
00001b43: DUP1
00001b44: ISZERO
00001b45: PUSH2 0x1b4d
00001b48: JUMPI
00001b49: PUSH1 0x00
00001b4b: DUP1
00001b4c: REVERT
00001b4d: JUMPDEST
00001b4e: POP
00001b4f: GAS
00001b50: CALL
00001b51: ISZERO
00001b52: DUP1
00001b53: ISZERO
00001b54: PUSH2 0x1b61
00001b57: JUMPI
00001b58: RETURNDATASIZE
00001b59: PUSH1 0x00
00001b5b: DUP1
00001b5c: RETURNDATACOPY
00001b5d: RETURNDATASIZE
00001b5e: PUSH1 0x00
00001b60: REVERT
00001b61: JUMPDEST
00001b62: POP
00001b63: POP
00001b64: POP
00001b65: POP
00001b66: PUSH1 0x40
00001b68: MLOAD
00001b69: RETURNDATASIZE
00001b6a: PUSH1 0x1f
00001b6c: NOT
00001b6d: PUSH1 0x1f
00001b6f: DUP3
00001b70: ADD
00001b71: AND
00001b72: DUP3
00001b73: ADD
00001b74: DUP1
00001b75: PUSH1 0x40
00001b77: MSTORE
00001b78: POP
00001b79: PUSH2 0x1b85
00001b7c: SWAP2
00001b7d: SWAP1
00001b7e: DUP2
00001b7f: ADD
00001b80: SWAP1
00001b81: PUSH2 0x2d23
00001b84: JUMP
00001b85: JUMPDEST
00001b86: POP
00001b87: JUMPDEST
00001b88: DUP3
00001b89: MLOAD
00001b8a: PUSH1 0x60
00001b8c: DUP5
00001b8d: ADD
00001b8e: MLOAD
00001b8f: PUSH1 0x40
00001b91: MLOAD
00001b92: PUSH4 0x095ea7b3
00001b97: PUSH1 0xe0
00001b99: SHL
00001b9a: DUP2
00001b9b: MSTORE
00001b9c: PUSH1 0x01
00001b9e: PUSH1 0x01
00001ba0: PUSH1 0xa0
00001ba2: SHL
00001ba3: SUB
00001ba4: DUP6
00001ba5: AND
00001ba6: SWAP3
00001ba7: PUSH4 0x095ea7b3
00001bac: SWAP3
00001bad: PUSH2 0x1bb8
00001bb0: SWAP3
00001bb1: PUSH1 0x04
00001bb3: ADD
00001bb4: PUSH2 0x319c
00001bb7: JUMP
00001bb8: JUMPDEST
00001bb9: PUSH1 0x20
00001bbb: PUSH1 0x40
00001bbd: MLOAD
00001bbe: DUP1
00001bbf: DUP4
00001bc0: SUB
00001bc1: DUP2
00001bc2: PUSH1 0x00
00001bc4: DUP8
00001bc5: DUP1
00001bc6: EXTCODESIZE
00001bc7: ISZERO
00001bc8: DUP1
00001bc9: ISZERO
00001bca: PUSH2 0x1bd2
00001bcd: JUMPI
00001bce: PUSH1 0x00
00001bd0: DUP1
00001bd1: REVERT
00001bd2: JUMPDEST
00001bd3: POP
00001bd4: GAS
00001bd5: CALL
00001bd6: ISZERO
00001bd7: DUP1
00001bd8: ISZERO
00001bd9: PUSH2 0x1be6
00001bdc: JUMPI
00001bdd: RETURNDATASIZE
00001bde: PUSH1 0x00
00001be0: DUP1
00001be1: RETURNDATACOPY
00001be2: RETURNDATASIZE
00001be3: PUSH1 0x00
00001be5: REVERT
00001be6: JUMPDEST
00001be7: POP
00001be8: POP
00001be9: POP
00001bea: POP
00001beb: PUSH1 0x40
00001bed: MLOAD
00001bee: RETURNDATASIZE
00001bef: PUSH1 0x1f
00001bf1: NOT
00001bf2: PUSH1 0x1f
00001bf4: DUP3
00001bf5: ADD
00001bf6: AND
00001bf7: DUP3
00001bf8: ADD
00001bf9: DUP1
00001bfa: PUSH1 0x40
00001bfc: MSTORE
00001bfd: POP
00001bfe: PUSH2 0x1c0a
00001c01: SWAP2
00001c02: SWAP1
00001c03: DUP2
00001c04: ADD
00001c05: SWAP1
00001c06: PUSH2 0x2d23
00001c09: JUMP
00001c0a: JUMPDEST
00001c0b: POP
00001c0c: DUP1
00001c0d: PUSH1 0x01
00001c0f: PUSH1 0x01
00001c11: PUSH1 0xa0
00001c13: SHL
00001c14: SUB
00001c15: AND
00001c16: PUSH4 0x8201aa3f
00001c1b: DUP5
00001c1c: PUSH1 0x20
00001c1e: ADD
00001c1f: MLOAD
00001c20: DUP6
00001c21: PUSH1 0x60
00001c23: ADD
00001c24: MLOAD
00001c25: DUP7
00001c26: PUSH1 0x40
00001c28: ADD
00001c29: MLOAD
00001c2a: DUP8
00001c2b: PUSH1 0x80
00001c2d: ADD
00001c2e: MLOAD
00001c2f: DUP9
00001c30: PUSH1 0xa0
00001c32: ADD
00001c33: MLOAD
00001c34: PUSH1 0x40
00001c36: MLOAD
00001c37: DUP7
00001c38: PUSH4 0xffffffff
00001c3d: AND
00001c3e: PUSH1 0xe0
00001c40: SHL
00001c41: DUP2
00001c42: MSTORE
00001c43: PUSH1 0x04
00001c45: ADD
00001c46: PUSH2 0x1c53
00001c49: SWAP6
00001c4a: SWAP5
00001c4b: SWAP4
00001c4c: SWAP3
00001c4d: SWAP2
00001c4e: SWAP1
00001c4f: PUSH2 0x31aa
00001c52: JUMP
00001c53: JUMPDEST
00001c54: PUSH1 0x40
00001c56: DUP1
00001c57: MLOAD
00001c58: DUP1
00001c59: DUP4
00001c5a: SUB
00001c5b: DUP2
00001c5c: PUSH1 0x00
00001c5e: DUP8
00001c5f: DUP1
00001c60: EXTCODESIZE
00001c61: ISZERO
00001c62: DUP1
00001c63: ISZERO
00001c64: PUSH2 0x1c6c
00001c67: JUMPI
00001c68: PUSH1 0x00
00001c6a: DUP1
00001c6b: REVERT
00001c6c: JUMPDEST
00001c6d: POP
00001c6e: GAS
00001c6f: CALL
00001c70: ISZERO
00001c71: DUP1
00001c72: ISZERO
00001c73: PUSH2 0x1c80
00001c76: JUMPI
00001c77: RETURNDATASIZE
00001c78: PUSH1 0x00
00001c7a: DUP1
00001c7b: RETURNDATACOPY
00001c7c: RETURNDATASIZE
00001c7d: PUSH1 0x00
00001c7f: REVERT
00001c80: JUMPDEST
00001c81: POP
00001c82: POP
00001c83: POP
00001c84: POP
00001c85: PUSH1 0x40
00001c87: MLOAD
00001c88: RETURNDATASIZE
00001c89: PUSH1 0x1f
00001c8b: NOT
00001c8c: PUSH1 0x1f
00001c8e: DUP3
00001c8f: ADD
00001c90: AND
00001c91: DUP3
00001c92: ADD
00001c93: DUP1
00001c94: PUSH1 0x40
00001c96: MSTORE
00001c97: POP
00001c98: PUSH2 0x1ca4
00001c9b: SWAP2
00001c9c: SWAP1
00001c9d: DUP2
00001c9e: ADD
00001c9f: SWAP1
00001ca0: PUSH2 0x2da5
00001ca3: JUMP
00001ca4: JUMPDEST
00001ca5: POP
00001ca6: SWAP5
00001ca7: POP
00001ca8: POP
00001ca9: PUSH1 0x01
00001cab: SWAP1
00001cac: SWAP3
00001cad: ADD
00001cae: SWAP2
00001caf: POP
00001cb0: PUSH2 0x1a13
00001cb3: SWAP1
00001cb4: POP
00001cb5: JUMP
00001cb6: JUMPDEST
00001cb7: POP
00001cb8: PUSH2 0x1cc7
00001cbb: DUP2
00001cbc: DUP5
00001cbd: PUSH4 0xffffffff
00001cc2: PUSH2 0x1e4a
00001cc5: AND
00001cc6: JUMP
00001cc7: JUMPDEST
00001cc8: SWAP3
00001cc9: POP
00001cca: POP
00001ccb: PUSH1 0x01
00001ccd: ADD
00001cce: PUSH2 0x1a06
00001cd1: JUMP
00001cd2: JUMPDEST
00001cd3: PUSH2 0x1cda
00001cd6: PUSH2 0x1917
00001cd9: JUMP
00001cda: JUMPDEST
00001cdb: PUSH2 0x1cf6
00001cde: JUMPI
00001cdf: PUSH1 0x40
00001ce1: MLOAD
00001ce2: PUSH3 0x461bcd
00001ce6: PUSH1 0xe5
00001ce8: SHL
00001ce9: DUP2
00001cea: MSTORE
00001ceb: PUSH1 0x04
00001ced: ADD
00001cee: PUSH2 0x0568
00001cf1: SWAP1
00001cf2: PUSH2 0x3285
00001cf5: JUMP
00001cf6: JUMPDEST
00001cf7: PUSH2 0x1cff
00001cfa: DUP2
00001cfb: PUSH2 0x26af
00001cfe: JUMP
00001cff: JUMPDEST
00001d00: POP
00001d01: JUMP
00001d02: JUMPDEST
00001d03: PUSH1 0x01
00001d05: PUSH1 0x01
00001d07: PUSH1 0xa0
00001d09: SHL
00001d0a: SUB
00001d0b: DUP2
00001d0c: AND
00001d0d: PUSH20 0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee
00001d22: EQ
00001d23: JUMPDEST
00001d24: SWAP2
00001d25: SWAP1
00001d26: POP
00001d27: JUMP
00001d28: JUMPDEST
00001d29: PUSH1 0x00
00001d2b: PUSH2 0x1d33
00001d2e: DUP4
00001d2f: PUSH2 0x1d02
00001d32: JUMP
00001d33: JUMPDEST
00001d34: ISZERO
00001d35: PUSH2 0x1da6
00001d38: JUMPI
00001d39: PUSH1 0x01
00001d3b: PUSH1 0x00
00001d3d: SWAP1
00001d3e: SLOAD
00001d3f: SWAP1
00001d40: PUSH2 0x0100
00001d43: EXP
00001d44: SWAP1
00001d45: DIV
00001d46: PUSH1 0x01
00001d48: PUSH1 0x01
00001d4a: PUSH1 0xa0
00001d4c: SHL
00001d4d: SUB
00001d4e: AND
00001d4f: PUSH1 0x01
00001d51: PUSH1 0x01
00001d53: PUSH1 0xa0
00001d55: SHL
00001d56: SUB
00001d57: AND
00001d58: PUSH4 0xd0e30db0
00001d5d: CALLVALUE
00001d5e: PUSH1 0x40
00001d60: MLOAD
00001d61: DUP3
00001d62: PUSH4 0xffffffff
00001d67: AND
00001d68: PUSH1 0xe0
00001d6a: SHL
00001d6b: DUP2
00001d6c: MSTORE
00001d6d: PUSH1 0x04
00001d6f: ADD
00001d70: PUSH1 0x00
00001d72: PUSH1 0x40
00001d74: MLOAD
00001d75: DUP1
00001d76: DUP4
00001d77: SUB
00001d78: DUP2
00001d79: DUP6
00001d7a: DUP9
00001d7b: DUP1
00001d7c: EXTCODESIZE
00001d7d: ISZERO
00001d7e: DUP1
00001d7f: ISZERO
00001d80: PUSH2 0x1d88
00001d83: JUMPI
00001d84: PUSH1 0x00
00001d86: DUP1
00001d87: REVERT
00001d88: JUMPDEST
00001d89: POP
00001d8a: GAS
00001d8b: CALL
00001d8c: ISZERO
00001d8d: DUP1
00001d8e: ISZERO
00001d8f: PUSH2 0x1d9c
00001d92: JUMPI
00001d93: RETURNDATASIZE
00001d94: PUSH1 0x00
00001d96: DUP1
00001d97: RETURNDATACOPY
00001d98: RETURNDATASIZE
00001d99: PUSH1 0x00
00001d9b: REVERT
00001d9c: JUMPDEST
00001d9d: POP
00001d9e: POP
00001d9f: POP
00001da0: POP
00001da1: POP
00001da2: PUSH2 0x1e44
00001da5: JUMP
00001da6: JUMPDEST
00001da7: PUSH1 0x40
00001da9: MLOAD
00001daa: PUSH4 0x23b872dd
00001daf: PUSH1 0xe0
00001db1: SHL
00001db2: DUP2
00001db3: MSTORE
00001db4: PUSH1 0x01
00001db6: PUSH1 0x01
00001db8: PUSH1 0xa0
00001dba: SHL
00001dbb: SUB
00001dbc: DUP5
00001dbd: AND
00001dbe: SWAP1
00001dbf: PUSH4 0x23b872dd
00001dc4: SWAP1
00001dc5: PUSH2 0x1dd6
00001dc8: SWAP1
00001dc9: CALLER
00001dca: SWAP1
00001dcb: ADDRESS
00001dcc: SWAP1
00001dcd: DUP8
00001dce: SWAP1
00001dcf: PUSH1 0x04
00001dd1: ADD
00001dd2: PUSH2 0x3123
00001dd5: JUMP
00001dd6: JUMPDEST
00001dd7: PUSH1 0x20
00001dd9: PUSH1 0x40
00001ddb: MLOAD
00001ddc: DUP1
00001ddd: DUP4
00001dde: SUB
00001ddf: DUP2
00001de0: PUSH1 0x00
00001de2: DUP8
00001de3: DUP1
00001de4: EXTCODESIZE
00001de5: ISZERO
00001de6: DUP1
00001de7: ISZERO
00001de8: PUSH2 0x1df0
00001deb: JUMPI
00001dec: PUSH1 0x00
00001dee: DUP1
00001def: REVERT
00001df0: JUMPDEST
00001df1: POP
00001df2: GAS
00001df3: CALL
00001df4: ISZERO
00001df5: DUP1
00001df6: ISZERO
00001df7: PUSH2 0x1e04
00001dfa: JUMPI
00001dfb: RETURNDATASIZE
00001dfc: PUSH1 0x00
00001dfe: DUP1
00001dff: RETURNDATACOPY
00001e00: RETURNDATASIZE
00001e01: PUSH1 0x00
00001e03: REVERT
00001e04: JUMPDEST
00001e05: POP
00001e06: POP
00001e07: POP
00001e08: POP
00001e09: PUSH1 0x40
00001e0b: MLOAD
00001e0c: RETURNDATASIZE
00001e0d: PUSH1 0x1f
00001e0f: NOT
00001e10: PUSH1 0x1f
00001e12: DUP3
00001e13: ADD
00001e14: AND
00001e15: DUP3
00001e16: ADD
00001e17: DUP1
00001e18: PUSH1 0x40
00001e1a: MSTORE
00001e1b: POP
00001e1c: PUSH2 0x1e28
00001e1f: SWAP2
00001e20: SWAP1
00001e21: DUP2
00001e22: ADD
00001e23: SWAP1
00001e24: PUSH2 0x2d23
00001e27: JUMP
00001e28: JUMPDEST
00001e29: PUSH2 0x1e44
00001e2c: JUMPI
00001e2d: PUSH1 0x40
00001e2f: MLOAD
00001e30: PUSH3 0x461bcd
00001e34: PUSH1 0xe5
00001e36: SHL
00001e37: DUP2
00001e38: MSTORE
00001e39: PUSH1 0x04
00001e3b: ADD
00001e3c: PUSH2 0x0568
00001e3f: SWAP1
00001e40: PUSH2 0x32a5
00001e43: JUMP
00001e44: JUMPDEST
00001e45: SWAP3
00001e46: SWAP2
00001e47: POP
00001e48: POP
00001e49: JUMP
00001e4a: JUMPDEST
00001e4b: PUSH1 0x00
00001e4d: DUP3
00001e4e: DUP3
00001e4f: ADD
00001e50: DUP4
00001e51: DUP2
00001e52: LT
00001e53: ISZERO
00001e54: PUSH2 0x1e6f
00001e57: JUMPI
00001e58: PUSH1 0x40
00001e5a: MLOAD
00001e5b: PUSH3 0x461bcd
00001e5f: PUSH1 0xe5
00001e61: SHL
00001e62: DUP2
00001e63: MSTORE
00001e64: PUSH1 0x04
00001e66: ADD
00001e67: PUSH2 0x0568
00001e6a: SWAP1
00001e6b: PUSH2 0x3245
00001e6e: JUMP
00001e6f: JUMPDEST
00001e70: SWAP4
00001e71: SWAP3
00001e72: POP
00001e73: POP
00001e74: POP
00001e75: JUMP
00001e76: JUMPDEST
00001e77: PUSH1 0x00
00001e79: PUSH2 0x1e81
00001e7c: DUP3
00001e7d: PUSH2 0x1d02
00001e80: JUMP
00001e81: JUMPDEST
00001e82: ISZERO
00001e83: PUSH2 0x1f0d
00001e86: JUMPI
00001e87: PUSH1 0x01
00001e89: SLOAD
00001e8a: PUSH1 0x40
00001e8c: MLOAD
00001e8d: PUSH4 0x70a08231
00001e92: PUSH1 0xe0
00001e94: SHL
00001e95: DUP2
00001e96: MSTORE
00001e97: PUSH1 0x01
00001e99: PUSH1 0x01
00001e9b: PUSH1 0xa0
00001e9d: SHL
00001e9e: SUB
00001e9f: SWAP1
00001ea0: SWAP2
00001ea1: AND
00001ea2: SWAP1
00001ea3: PUSH4 0x70a08231
00001ea8: SWAP1
00001ea9: PUSH2 0x1eb6
00001eac: SWAP1
00001ead: ADDRESS
00001eae: SWAP1
00001eaf: PUSH1 0x04
00001eb1: ADD
00001eb2: PUSH2 0x30fa
00001eb5: JUMP
00001eb6: JUMPDEST
00001eb7: PUSH1 0x20
00001eb9: PUSH1 0x40
00001ebb: MLOAD
00001ebc: DUP1
00001ebd: DUP4
00001ebe: SUB
00001ebf: DUP2
00001ec0: DUP7
00001ec1: DUP1
00001ec2: EXTCODESIZE
00001ec3: ISZERO
00001ec4: DUP1
00001ec5: ISZERO
00001ec6: PUSH2 0x1ece
00001ec9: JUMPI
00001eca: PUSH1 0x00
00001ecc: DUP1
00001ecd: REVERT
00001ece: JUMPDEST
00001ecf: POP
00001ed0: GAS
00001ed1: STATICCALL
00001ed2: ISZERO
00001ed3: DUP1
00001ed4: ISZERO
00001ed5: PUSH2 0x1ee2
00001ed8: JUMPI
00001ed9: RETURNDATASIZE
00001eda: PUSH1 0x00
00001edc: DUP1
00001edd: RETURNDATACOPY
00001ede: RETURNDATASIZE
00001edf: PUSH1 0x00
00001ee1: REVERT
00001ee2: JUMPDEST
00001ee3: POP
00001ee4: POP
00001ee5: POP
00001ee6: POP
00001ee7: PUSH1 0x40
00001ee9: MLOAD
00001eea: RETURNDATASIZE
00001eeb: PUSH1 0x1f
00001eed: NOT
00001eee: PUSH1 0x1f
00001ef0: DUP3
00001ef1: ADD
00001ef2: AND
00001ef3: DUP3
00001ef4: ADD
00001ef5: DUP1
00001ef6: PUSH1 0x40
00001ef8: MSTORE
00001ef9: POP
00001efa: PUSH2 0x1f06
00001efd: SWAP2
00001efe: SWAP1
00001eff: DUP2
00001f00: ADD
00001f01: SWAP1
00001f02: PUSH2 0x2d87
00001f05: JUMP
00001f06: JUMPDEST
00001f07: SWAP1
00001f08: POP
00001f09: PUSH2 0x1d23
00001f0c: JUMP
00001f0d: JUMPDEST
00001f0e: PUSH1 0x40
00001f10: MLOAD
00001f11: PUSH4 0x70a08231
00001f16: PUSH1 0xe0
00001f18: SHL
00001f19: DUP2
00001f1a: MSTORE
00001f1b: PUSH1 0x01
00001f1d: PUSH1 0x01
00001f1f: PUSH1 0xa0
00001f21: SHL
00001f22: SUB
00001f23: DUP4
00001f24: AND
00001f25: SWAP1
00001f26: PUSH4 0x70a08231
00001f2b: SWAP1
00001f2c: PUSH2 0x1eb6
00001f2f: SWAP1
00001f30: ADDRESS
00001f31: SWAP1
00001f32: PUSH1 0x04
00001f34: ADD
00001f35: PUSH2 0x30fa
00001f38: JUMP
00001f39: JUMPDEST
00001f3a: PUSH1 0x00
00001f3c: DUP2
00001f3d: PUSH2 0x1f48
00001f40: JUMPI
00001f41: POP
00001f42: PUSH1 0x01
00001f44: PUSH2 0x1e44
00001f47: JUMP
00001f48: JUMPDEST
00001f49: PUSH2 0x1f51
00001f4c: DUP4
00001f4d: PUSH2 0x1d02
00001f50: JUMP
00001f51: JUMPDEST
00001f52: ISZERO
00001f53: PUSH2 0x203a
00001f56: JUMPI
00001f57: PUSH1 0x01
00001f59: SLOAD
00001f5a: PUSH1 0x40
00001f5c: MLOAD
00001f5d: PUSH4 0x2e1a7d4d
00001f62: PUSH1 0xe0
00001f64: SHL
00001f65: DUP2
00001f66: MSTORE
00001f67: PUSH1 0x01
00001f69: PUSH1 0x01
00001f6b: PUSH1 0xa0
00001f6d: SHL
00001f6e: SUB
00001f6f: SWAP1
00001f70: SWAP2
00001f71: AND
00001f72: SWAP1
00001f73: PUSH4 0x2e1a7d4d
00001f78: SWAP1
00001f79: PUSH2 0x1f86
00001f7c: SWAP1
00001f7d: DUP6
00001f7e: SWAP1
00001f7f: PUSH1 0x04
00001f81: ADD
00001f82: PUSH2 0x32b5
00001f85: JUMP
00001f86: JUMPDEST
00001f87: PUSH1 0x00
00001f89: PUSH1 0x40
00001f8b: MLOAD
00001f8c: DUP1
00001f8d: DUP4
00001f8e: SUB
00001f8f: DUP2
00001f90: PUSH1 0x00
00001f92: DUP8
00001f93: DUP1
00001f94: EXTCODESIZE
00001f95: ISZERO
00001f96: DUP1
00001f97: ISZERO
00001f98: PUSH2 0x1fa0
00001f9b: JUMPI
00001f9c: PUSH1 0x00
00001f9e: DUP1
00001f9f: REVERT
00001fa0: JUMPDEST
00001fa1: POP
00001fa2: GAS
00001fa3: CALL
00001fa4: ISZERO
00001fa5: DUP1
00001fa6: ISZERO
00001fa7: PUSH2 0x1fb4
00001faa: JUMPI
00001fab: RETURNDATASIZE
00001fac: PUSH1 0x00
00001fae: DUP1
00001faf: RETURNDATACOPY
00001fb0: RETURNDATASIZE
00001fb1: PUSH1 0x00
00001fb3: REVERT
00001fb4: JUMPDEST
00001fb5: POP
00001fb6: POP
00001fb7: POP
00001fb8: POP
00001fb9: PUSH1 0x00
00001fbb: CALLER
00001fbc: PUSH1 0x01
00001fbe: PUSH1 0x01
00001fc0: PUSH1 0xa0
00001fc2: SHL
00001fc3: SUB
00001fc4: AND
00001fc5: DUP4
00001fc6: PUSH1 0x40
00001fc8: MLOAD
00001fc9: PUSH2 0x1fd1
00001fcc: SWAP1
00001fcd: PUSH2 0x30e1
00001fd0: JUMP
00001fd1: JUMPDEST
00001fd2: PUSH1 0x00
00001fd4: PUSH1 0x40
00001fd6: MLOAD
00001fd7: DUP1
00001fd8: DUP4
00001fd9: SUB
00001fda: DUP2
00001fdb: DUP6
00001fdc: DUP8
00001fdd: GAS
00001fde: CALL
00001fdf: SWAP3
00001fe0: POP
00001fe1: POP
00001fe2: POP
00001fe3: RETURNDATASIZE
00001fe4: DUP1
00001fe5: PUSH1 0x00
00001fe7: DUP2
00001fe8: EQ
00001fe9: PUSH2 0x200e
00001fec: JUMPI
00001fed: PUSH1 0x40
00001fef: MLOAD
00001ff0: SWAP2
00001ff1: POP
00001ff2: PUSH1 0x1f
00001ff4: NOT
00001ff5: PUSH1 0x3f
00001ff7: RETURNDATASIZE
00001ff8: ADD
00001ff9: AND
00001ffa: DUP3
00001ffb: ADD
00001ffc: PUSH1 0x40
00001ffe: MSTORE
00001fff: RETURNDATASIZE
00002000: DUP3
00002001: MSTORE
00002002: RETURNDATASIZE
00002003: PUSH1 0x00
00002005: PUSH1 0x20
00002007: DUP5
00002008: ADD
00002009: RETURNDATACOPY
0000200a: PUSH2 0x2013
0000200d: JUMP
0000200e: JUMPDEST
0000200f: PUSH1 0x60
00002011: SWAP2
00002012: POP
00002013: JUMPDEST
00002014: POP
00002015: POP
00002016: SWAP1
00002017: POP
00002018: DUP1
00002019: PUSH2 0x2034
0000201c: JUMPI
0000201d: PUSH1 0x40
0000201f: MLOAD
00002020: PUSH3 0x461bcd
00002024: PUSH1 0xe5
00002026: SHL
00002027: DUP2
00002028: MSTORE
00002029: PUSH1 0x04
0000202b: ADD
0000202c: PUSH2 0x0568
0000202f: SWAP1
00002030: PUSH2 0x3295
00002033: JUMP
00002034: JUMPDEST
00002035: POP
00002036: PUSH2 0x1e44
00002039: JUMP
0000203a: JUMPDEST
0000203b: PUSH1 0x40
0000203d: MLOAD
0000203e: PUSH4 0xa9059cbb
00002043: PUSH1 0xe0
00002045: SHL
00002046: DUP2
00002047: MSTORE
00002048: PUSH1 0x01
0000204a: PUSH1 0x01
0000204c: PUSH1 0xa0
0000204e: SHL
0000204f: SUB
00002050: DUP5
00002051: AND
00002052: SWAP1
00002053: PUSH4 0xa9059cbb
00002058: SWAP1
00002059: PUSH2 0x1dd6
0000205c: SWAP1
0000205d: CALLER
0000205e: SWAP1
0000205f: DUP7
00002060: SWAP1
00002061: PUSH1 0x04
00002063: ADD
00002064: PUSH2 0x314b
00002067: JUMP
00002068: JUMPDEST
00002069: PUSH2 0x2070
0000206c: PUSH2 0x2835
0000206f: JUMP
00002070: JUMPDEST
00002071: PUSH1 0x40
00002073: MLOAD
00002074: PUSH4 0xf8b2cb4f
00002079: PUSH1 0xe0
0000207b: SHL
0000207c: DUP2
0000207d: MSTORE
0000207e: DUP3
0000207f: SWAP1
00002080: PUSH1 0x00
00002082: SWAP1
00002083: PUSH1 0x01
00002085: PUSH1 0x01
00002087: PUSH1 0xa0
00002089: SHL
0000208a: SUB
0000208b: DUP4
0000208c: AND
0000208d: SWAP1
0000208e: PUSH4 0xf8b2cb4f
00002093: SWAP1
00002094: PUSH2 0x20a1
00002097: SWAP1
00002098: DUP10
00002099: SWAP1
0000209a: PUSH1 0x04
0000209c: ADD
0000209d: PUSH2 0x30ec
000020a0: JUMP
000020a1: JUMPDEST
000020a2: PUSH1 0x20
000020a4: PUSH1 0x40
000020a6: MLOAD
000020a7: DUP1
000020a8: DUP4
000020a9: SUB
000020aa: DUP2
000020ab: DUP7
000020ac: DUP1
000020ad: EXTCODESIZE
000020ae: ISZERO
000020af: DUP1
000020b0: ISZERO
000020b1: PUSH2 0x20b9
000020b4: JUMPI
000020b5: PUSH1 0x00
000020b7: DUP1
000020b8: REVERT
000020b9: JUMPDEST
000020ba: POP
000020bb: GAS
000020bc: STATICCALL
000020bd: ISZERO
000020be: DUP1
000020bf: ISZERO
000020c0: PUSH2 0x20cd
000020c3: JUMPI
000020c4: RETURNDATASIZE
000020c5: PUSH1 0x00
000020c7: DUP1
000020c8: RETURNDATACOPY
000020c9: RETURNDATASIZE
000020ca: PUSH1 0x00
000020cc: REVERT
000020cd: JUMPDEST
000020ce: POP
000020cf: POP
000020d0: POP
000020d1: POP
000020d2: PUSH1 0x40
000020d4: MLOAD
000020d5: RETURNDATASIZE
000020d6: PUSH1 0x1f
000020d8: NOT
000020d9: PUSH1 0x1f
000020db: DUP3
000020dc: ADD
000020dd: AND
000020de: DUP3
000020df: ADD
000020e0: DUP1
000020e1: PUSH1 0x40
000020e3: MSTORE
000020e4: POP
000020e5: PUSH2 0x20f1
000020e8: SWAP2
000020e9: SWAP1
000020ea: DUP2
000020eb: ADD
000020ec: SWAP1
000020ed: PUSH2 0x2d87
000020f0: JUMP
000020f1: JUMPDEST
000020f2: SWAP1
000020f3: POP
000020f4: PUSH1 0x00
000020f6: DUP3
000020f7: PUSH1 0x01
000020f9: PUSH1 0x01
000020fb: PUSH1 0xa0
000020fd: SHL
000020fe: SUB
000020ff: AND
00002100: PUSH4 0xf8b2cb4f
00002105: DUP8
00002106: PUSH1 0x40
00002108: MLOAD
00002109: DUP3
0000210a: PUSH4 0xffffffff
0000210f: AND
00002110: PUSH1 0xe0
00002112: SHL
00002113: DUP2
00002114: MSTORE
00002115: PUSH1 0x04
00002117: ADD
00002118: PUSH2 0x2121
0000211b: SWAP2
0000211c: SWAP1
0000211d: PUSH2 0x30ec
00002120: JUMP
00002121: JUMPDEST
00002122: PUSH1 0x20
00002124: PUSH1 0x40
00002126: MLOAD
00002127: DUP1
00002128: DUP4
00002129: SUB
0000212a: DUP2
0000212b: DUP7
0000212c: DUP1
0000212d: EXTCODESIZE
0000212e: ISZERO
0000212f: DUP1
00002130: ISZERO
00002131: PUSH2 0x2139
00002134: JUMPI
00002135: PUSH1 0x00
00002137: DUP1
00002138: REVERT
00002139: JUMPDEST
0000213a: POP
0000213b: GAS
0000213c: STATICCALL
0000213d: ISZERO
0000213e: DUP1
0000213f: ISZERO
00002140: PUSH2 0x214d
00002143: JUMPI
00002144: RETURNDATASIZE
00002145: PUSH1 0x00
00002147: DUP1
00002148: RETURNDATACOPY
00002149: RETURNDATASIZE
0000214a: PUSH1 0x00
0000214c: REVERT
0000214d: JUMPDEST
0000214e: POP
0000214f: POP
00002150: POP
00002151: POP
00002152: PUSH1 0x40
00002154: MLOAD
00002155: RETURNDATASIZE
00002156: PUSH1 0x1f
00002158: NOT
00002159: PUSH1 0x1f
0000215b: DUP3
0000215c: ADD
0000215d: AND
0000215e: DUP3
0000215f: ADD
00002160: DUP1
00002161: PUSH1 0x40
00002163: MSTORE
00002164: POP
00002165: PUSH2 0x2171
00002168: SWAP2
00002169: SWAP1
0000216a: DUP2
0000216b: ADD
0000216c: SWAP1
0000216d: PUSH2 0x2d87
00002170: JUMP
00002171: JUMPDEST
00002172: SWAP1
00002173: POP
00002174: PUSH1 0x00
00002176: DUP4
00002177: PUSH1 0x01
00002179: PUSH1 0x01
0000217b: PUSH1 0xa0
0000217d: SHL
0000217e: SUB
0000217f: AND
00002180: PUSH4 0x948d8ce6
00002185: DUP10
00002186: PUSH1 0x40
00002188: MLOAD
00002189: DUP3
0000218a: PUSH4 0xffffffff
0000218f: AND
00002190: PUSH1 0xe0
00002192: SHL
00002193: DUP2
00002194: MSTORE
00002195: PUSH1 0x04
00002197: ADD
00002198: PUSH2 0x21a1
0000219b: SWAP2
0000219c: SWAP1
0000219d: PUSH2 0x30ec
000021a0: JUMP
000021a1: JUMPDEST
000021a2: PUSH1 0x20
000021a4: PUSH1 0x40
000021a6: MLOAD
000021a7: DUP1
000021a8: DUP4
000021a9: SUB
000021aa: DUP2
000021ab: DUP7
000021ac: DUP1
000021ad: EXTCODESIZE
000021ae: ISZERO
000021af: DUP1
000021b0: ISZERO
000021b1: PUSH2 0x21b9
000021b4: JUMPI
000021b5: PUSH1 0x00
000021b7: DUP1
000021b8: REVERT
000021b9: JUMPDEST
000021ba: POP
000021bb: GAS
000021bc: STATICCALL
000021bd: ISZERO
000021be: DUP1
000021bf: ISZERO
000021c0: PUSH2 0x21cd
000021c3: JUMPI
000021c4: RETURNDATASIZE
000021c5: PUSH1 0x00
000021c7: DUP1
000021c8: RETURNDATACOPY
000021c9: RETURNDATASIZE
000021ca: PUSH1 0x00
000021cc: REVERT
000021cd: JUMPDEST
000021ce: POP
000021cf: POP
000021d0: POP
000021d1: POP
000021d2: PUSH1 0x40
000021d4: MLOAD
000021d5: RETURNDATASIZE
000021d6: PUSH1 0x1f
000021d8: NOT
000021d9: PUSH1 0x1f
000021db: DUP3
000021dc: ADD
000021dd: AND
000021de: DUP3
000021df: ADD
000021e0: DUP1
000021e1: PUSH1 0x40
000021e3: MSTORE
000021e4: POP
000021e5: PUSH2 0x21f1
000021e8: SWAP2
000021e9: SWAP1
000021ea: DUP2
000021eb: ADD
000021ec: SWAP1
000021ed: PUSH2 0x2d87
000021f0: JUMP
000021f1: JUMPDEST
000021f2: SWAP1
000021f3: POP
000021f4: PUSH1 0x00
000021f6: DUP5
000021f7: PUSH1 0x01
000021f9: PUSH1 0x01
000021fb: PUSH1 0xa0
000021fd: SHL
000021fe: SUB
000021ff: AND
00002200: PUSH4 0x948d8ce6
00002205: DUP10
00002206: PUSH1 0x40
00002208: MLOAD
00002209: DUP3
0000220a: PUSH4 0xffffffff
0000220f: AND
00002210: PUSH1 0xe0
00002212: SHL
00002213: DUP2
00002214: MSTORE
00002215: PUSH1 0x04
00002217: ADD
00002218: PUSH2 0x2221
0000221b: SWAP2
0000221c: SWAP1
0000221d: PUSH2 0x30ec
00002220: JUMP
00002221: JUMPDEST
00002222: PUSH1 0x20
00002224: PUSH1 0x40
00002226: MLOAD
00002227: DUP1
00002228: DUP4
00002229: SUB
0000222a: DUP2
0000222b: DUP7
0000222c: DUP1
0000222d: EXTCODESIZE
0000222e: ISZERO
0000222f: DUP1
00002230: ISZERO
00002231: PUSH2 0x2239
00002234: JUMPI
00002235: PUSH1 0x00
00002237: DUP1
00002238: REVERT
00002239: JUMPDEST
0000223a: POP
0000223b: GAS
0000223c: STATICCALL
0000223d: ISZERO
0000223e: DUP1
0000223f: ISZERO
00002240: PUSH2 0x224d
00002243: JUMPI
00002244: RETURNDATASIZE
00002245: PUSH1 0x00
00002247: DUP1
00002248: RETURNDATACOPY
00002249: RETURNDATASIZE
0000224a: PUSH1 0x00
0000224c: REVERT
0000224d: JUMPDEST
0000224e: POP
0000224f: POP
00002250: POP
00002251: POP
00002252: PUSH1 0x40
00002254: MLOAD
00002255: RETURNDATASIZE
00002256: PUSH1 0x1f
00002258: NOT
00002259: PUSH1 0x1f
0000225b: DUP3
0000225c: ADD
0000225d: AND
0000225e: DUP3
0000225f: ADD
00002260: DUP1
00002261: PUSH1 0x40
00002263: MSTORE
00002264: POP
00002265: PUSH2 0x2271
00002268: SWAP2
00002269: SWAP1
0000226a: DUP2
0000226b: ADD
0000226c: SWAP1
0000226d: PUSH2 0x2d87
00002270: JUMP
00002271: JUMPDEST
00002272: SWAP1
00002273: POP
00002274: PUSH1 0x00
00002276: DUP6
00002277: PUSH1 0x01
00002279: PUSH1 0x01
0000227b: PUSH1 0xa0
0000227d: SHL
0000227e: SUB
0000227f: AND
00002280: PUSH4 0xd4cadf68
00002285: PUSH1 0x40
00002287: MLOAD
00002288: DUP2
00002289: PUSH4 0xffffffff
0000228e: AND
0000228f: PUSH1 0xe0
00002291: SHL
00002292: DUP2
00002293: MSTORE
00002294: PUSH1 0x04
00002296: ADD
00002297: PUSH1 0x20
00002299: PUSH1 0x40
0000229b: MLOAD
0000229c: DUP1
0000229d: DUP4
0000229e: SUB
0000229f: DUP2
000022a0: DUP7
000022a1: DUP1
000022a2: EXTCODESIZE
000022a3: ISZERO
000022a4: DUP1
000022a5: ISZERO
000022a6: PUSH2 0x22ae
000022a9: JUMPI
000022aa: PUSH1 0x00
000022ac: DUP1
000022ad: REVERT
000022ae: JUMPDEST
000022af: POP
000022b0: GAS
000022b1: STATICCALL
000022b2: ISZERO
000022b3: DUP1
000022b4: ISZERO
000022b5: PUSH2 0x22c2
000022b8: JUMPI
000022b9: RETURNDATASIZE
000022ba: PUSH1 0x00
000022bc: DUP1
000022bd: RETURNDATACOPY
000022be: RETURNDATASIZE
000022bf: PUSH1 0x00
000022c1: REVERT
000022c2: JUMPDEST
000022c3: POP
000022c4: POP
000022c5: POP
000022c6: POP
000022c7: PUSH1 0x40
000022c9: MLOAD
000022ca: RETURNDATASIZE
000022cb: PUSH1 0x1f
000022cd: NOT
000022ce: PUSH1 0x1f
000022d0: DUP3
000022d1: ADD
000022d2: AND
000022d3: DUP3
000022d4: ADD
000022d5: DUP1
000022d6: PUSH1 0x40
000022d8: MSTORE
000022d9: POP
000022da: PUSH2 0x22e6
000022dd: SWAP2
000022de: SWAP1
000022df: DUP2
000022e0: ADD
000022e1: SWAP1
000022e2: PUSH2 0x2d87
000022e5: JUMP
000022e6: JUMPDEST
000022e7: SWAP1
000022e8: POP
000022e9: PUSH1 0x00
000022eb: PUSH2 0x22f5
000022ee: DUP5
000022ef: DUP7
000022f0: DUP6
000022f1: PUSH2 0x2730
000022f4: JUMP
000022f5: JUMPDEST
000022f6: SWAP1
000022f7: POP
000022f8: PUSH2 0x22ff
000022fb: PUSH2 0x2835
000022fe: JUMP
000022ff: JUMPDEST
00002300: POP
00002301: PUSH1 0x40
00002303: DUP1
00002304: MLOAD
00002305: PUSH1 0xe0
00002307: DUP2
00002308: ADD
00002309: DUP3
0000230a: MSTORE
0000230b: PUSH1 0x01
0000230d: PUSH1 0x01
0000230f: PUSH1 0xa0
00002311: SHL
00002312: SUB
00002313: DUP12
00002314: AND
00002315: DUP2
00002316: MSTORE
00002317: PUSH1 0x20
00002319: DUP2
0000231a: ADD
0000231b: SWAP8
0000231c: SWAP1
0000231d: SWAP8
0000231e: MSTORE
0000231f: DUP7
00002320: ADD
00002321: SWAP4
00002322: SWAP1
00002323: SWAP4
00002324: MSTORE
00002325: PUSH1 0x60
00002327: DUP6
00002328: ADD
00002329: SWAP4
0000232a: SWAP1
0000232b: SWAP4
0000232c: MSTORE
0000232d: PUSH1 0x80
0000232f: DUP5
00002330: ADD
00002331: MSTORE
00002332: PUSH1 0xa0
00002334: DUP4
00002335: ADD
00002336: SWAP2
00002337: SWAP1
00002338: SWAP2
00002339: MSTORE
0000233a: PUSH1 0xc0
0000233c: DUP3
0000233d: ADD
0000233e: MSTORE
0000233f: SWAP2
00002340: POP
00002341: POP
00002342: SWAP4
00002343: SWAP3
00002344: POP
00002345: POP
00002346: POP
00002347: JUMP
00002348: JUMPDEST
00002349: PUSH1 0x00
0000234b: DUP3
0000234c: PUSH2 0x2357
0000234f: JUMPI
00002350: POP
00002351: PUSH1 0x00
00002353: PUSH2 0x1e44
00002356: JUMP
00002357: JUMPDEST
00002358: DUP3
00002359: DUP3
0000235a: MUL
0000235b: DUP3
0000235c: DUP5
0000235d: DUP3
0000235e: DUP2
0000235f: PUSH2 0x2364
00002362: JUMPI
00002363: INVALID
00002364: JUMPDEST
00002365: DIV
00002366: EQ
00002367: PUSH2 0x1e6f
0000236a: JUMPI
0000236b: PUSH1 0x40
0000236d: MLOAD
0000236e: PUSH3 0x461bcd
00002372: PUSH1 0xe5
00002374: SHL
00002375: DUP2
00002376: MSTORE
00002377: PUSH1 0x04
00002379: ADD
0000237a: PUSH2 0x0568
0000237d: SWAP1
0000237e: PUSH2 0x3275
00002381: JUMP
00002382: JUMPDEST
00002383: PUSH1 0x00
00002385: PUSH2 0x1e6f
00002388: DUP4
00002389: DUP4
0000238a: PUSH1 0x40
0000238c: MLOAD
0000238d: DUP1
0000238e: PUSH1 0x40
00002390: ADD
00002391: PUSH1 0x40
00002393: MSTORE
00002394: DUP1
00002395: PUSH1 0x1a
00002397: DUP2
00002398: MSTORE
00002399: PUSH1 0x20
0000239b: ADD
0000239c: PUSH32 0x536166654d6174683a206469766973696f6e206279207a65726f000000000000
000023bd: DUP2
000023be: MSTORE
000023bf: POP
000023c0: PUSH2 0x2781
000023c3: JUMP
000023c4: JUMPDEST
000023c5: PUSH1 0x00
000023c7: PUSH2 0x1e6f
000023ca: DUP4
000023cb: DUP4
000023cc: PUSH1 0x40
000023ce: MLOAD
000023cf: DUP1
000023d0: PUSH1 0x40
000023d2: ADD
000023d3: PUSH1 0x40
000023d5: MSTORE
000023d6: DUP1
000023d7: PUSH1 0x1e
000023d9: DUP2
000023da: MSTORE
000023db: PUSH1 0x20
000023dd: ADD
000023de: PUSH32 0x536166654d6174683a207375627472616374696f6e206f766572666c6f770000
000023ff: DUP2
00002400: MSTORE
00002401: POP
00002402: PUSH2 0x27b8
00002405: JUMP
00002406: JUMPDEST
00002407: PUSH1 0x00
00002409: DUP1
0000240a: JUMPDEST
0000240b: DUP4
0000240c: MLOAD
0000240d: DUP2
0000240e: LT
0000240f: ISZERO
00002410: PUSH2 0x2555
00002413: JUMPI
00002414: PUSH1 0x00
00002416: DUP4
00002417: DUP3
00002418: DUP2
00002419: MLOAD
0000241a: DUP2
0000241b: LT
0000241c: PUSH2 0x2421
0000241f: JUMPI
00002420: INVALID
00002421: JUMPDEST
00002422: PUSH1 0x20
00002424: MUL
00002425: PUSH1 0x20
00002427: ADD
00002428: ADD
00002429: MLOAD
0000242a: PUSH1 0x00
0000242c: ADD
0000242d: MLOAD
0000242e: PUSH1 0x01
00002430: PUSH1 0x01
00002432: PUSH1 0xa0
00002434: SHL
00002435: SUB
00002436: AND
00002437: PUSH4 0xf8d6aed4
0000243c: DUP6
0000243d: DUP5
0000243e: DUP2
0000243f: MLOAD
00002440: DUP2
00002441: LT
00002442: PUSH2 0x2447
00002445: JUMPI
00002446: INVALID
00002447: JUMPDEST
00002448: PUSH1 0x20
0000244a: MUL
0000244b: PUSH1 0x20
0000244d: ADD
0000244e: ADD
0000244f: MLOAD
00002450: PUSH1 0x20
00002452: ADD
00002453: MLOAD
00002454: DUP7
00002455: DUP6
00002456: DUP2
00002457: MLOAD
00002458: DUP2
00002459: LT
0000245a: PUSH2 0x245f
0000245d: JUMPI
0000245e: INVALID
0000245f: JUMPDEST
00002460: PUSH1 0x20
00002462: MUL
00002463: PUSH1 0x20
00002465: ADD
00002466: ADD
00002467: MLOAD
00002468: PUSH1 0x40
0000246a: ADD
0000246b: MLOAD
0000246c: DUP8
0000246d: DUP7
0000246e: DUP2
0000246f: MLOAD
00002470: DUP2
00002471: LT
00002472: PUSH2 0x2477
00002475: JUMPI
00002476: INVALID
00002477: JUMPDEST
00002478: PUSH1 0x20
0000247a: MUL
0000247b: PUSH1 0x20
0000247d: ADD
0000247e: ADD
0000247f: MLOAD
00002480: PUSH1 0x60
00002482: ADD
00002483: MLOAD
00002484: DUP9
00002485: DUP8
00002486: DUP2
00002487: MLOAD
00002488: DUP2
00002489: LT
0000248a: PUSH2 0x248f
0000248d: JUMPI
0000248e: INVALID
0000248f: JUMPDEST
00002490: PUSH1 0x20
00002492: MUL
00002493: PUSH1 0x20
00002495: ADD
00002496: ADD
00002497: MLOAD
00002498: PUSH1 0x80
0000249a: ADD
0000249b: MLOAD
0000249c: DUP11
0000249d: DUP9
0000249e: DUP2
0000249f: MLOAD
000024a0: DUP2
000024a1: LT
000024a2: PUSH2 0x24a7
000024a5: JUMPI
000024a6: INVALID
000024a7: JUMPDEST
000024a8: PUSH1 0x20
000024aa: MUL
000024ab: PUSH1 0x20
000024ad: ADD
000024ae: ADD
000024af: MLOAD
000024b0: DUP11
000024b1: DUP10
000024b2: DUP2
000024b3: MLOAD
000024b4: DUP2
000024b5: LT
000024b6: PUSH2 0x24bb
000024b9: JUMPI
000024ba: INVALID
000024bb: JUMPDEST
000024bc: PUSH1 0x20
000024be: MUL
000024bf: PUSH1 0x20
000024c1: ADD
000024c2: ADD
000024c3: MLOAD
000024c4: PUSH1 0xa0
000024c6: ADD
000024c7: MLOAD
000024c8: PUSH1 0x40
000024ca: MLOAD
000024cb: DUP8
000024cc: PUSH4 0xffffffff
000024d1: AND
000024d2: PUSH1 0xe0
000024d4: SHL
000024d5: DUP2
000024d6: MSTORE
000024d7: PUSH1 0x04
000024d9: ADD
000024da: PUSH2 0x24e8
000024dd: SWAP7
000024de: SWAP6
000024df: SWAP5
000024e0: SWAP4
000024e1: SWAP3
000024e2: SWAP2
000024e3: SWAP1
000024e4: PUSH2 0x32c3
000024e7: JUMP
000024e8: JUMPDEST
000024e9: PUSH1 0x20
000024eb: PUSH1 0x40
000024ed: MLOAD
000024ee: DUP1
000024ef: DUP4
000024f0: SUB
000024f1: DUP2
000024f2: DUP7
000024f3: DUP1
000024f4: EXTCODESIZE
000024f5: ISZERO
000024f6: DUP1
000024f7: ISZERO
000024f8: PUSH2 0x2500
000024fb: JUMPI
000024fc: PUSH1 0x00
000024fe: DUP1
000024ff: REVERT
00002500: JUMPDEST
00002501: POP
00002502: GAS
00002503: STATICCALL
00002504: ISZERO
00002505: DUP1
00002506: ISZERO
00002507: PUSH2 0x2514
0000250a: JUMPI
0000250b: RETURNDATASIZE
0000250c: PUSH1 0x00
0000250e: DUP1
0000250f: RETURNDATACOPY
00002510: RETURNDATASIZE
00002511: PUSH1 0x00
00002513: REVERT
00002514: JUMPDEST
00002515: POP
00002516: POP
00002517: POP
00002518: POP
00002519: PUSH1 0x40
0000251b: MLOAD
0000251c: RETURNDATASIZE
0000251d: PUSH1 0x1f
0000251f: NOT
00002520: PUSH1 0x1f
00002522: DUP3
00002523: ADD
00002524: AND
00002525: DUP3
00002526: ADD
00002527: DUP1
00002528: PUSH1 0x40
0000252a: MSTORE
0000252b: POP
0000252c: PUSH2 0x2538
0000252f: SWAP2
00002530: SWAP1
00002531: DUP2
00002532: ADD
00002533: SWAP1
00002534: PUSH2 0x2d87
00002537: JUMP
00002538: JUMPDEST
00002539: SWAP1
0000253a: POP
0000253b: PUSH2 0x254a
0000253e: DUP4
0000253f: DUP3
00002540: PUSH4 0xffffffff
00002545: PUSH2 0x1e4a
00002548: AND
00002549: JUMP
0000254a: JUMPDEST
0000254b: SWAP3
0000254c: POP
0000254d: POP
0000254e: PUSH1 0x01
00002550: ADD
00002551: PUSH2 0x240a
00002554: JUMP
00002555: JUMPDEST
00002556: POP
00002557: SWAP3
00002558: SWAP2
00002559: POP
0000255a: POP
0000255b: JUMP
0000255c: JUMPDEST
0000255d: PUSH1 0x00
0000255f: DUP1
00002560: JUMPDEST
00002561: DUP4
00002562: MLOAD
00002563: DUP2
00002564: LT
00002565: ISZERO
00002566: PUSH2 0x2555
00002569: JUMPI
0000256a: PUSH1 0x00
0000256c: DUP4
0000256d: DUP3
0000256e: DUP2
0000256f: MLOAD
00002570: DUP2
00002571: LT
00002572: PUSH2 0x2577
00002575: JUMPI
00002576: INVALID
00002577: JUMPDEST
00002578: PUSH1 0x20
0000257a: MUL
0000257b: PUSH1 0x20
0000257d: ADD
0000257e: ADD
0000257f: MLOAD
00002580: PUSH1 0x00
00002582: ADD
00002583: MLOAD
00002584: PUSH1 0x01
00002586: PUSH1 0x01
00002588: PUSH1 0xa0
0000258a: SHL
0000258b: SUB
0000258c: AND
0000258d: PUSH4 0xba9530a6
00002592: DUP6
00002593: DUP5
00002594: DUP2
00002595: MLOAD
00002596: DUP2
00002597: LT
00002598: PUSH2 0x259d
0000259b: JUMPI
0000259c: INVALID
0000259d: JUMPDEST
0000259e: PUSH1 0x20
000025a0: MUL
000025a1: PUSH1 0x20
000025a3: ADD
000025a4: ADD
000025a5: MLOAD
000025a6: PUSH1 0x20
000025a8: ADD
000025a9: MLOAD
000025aa: DUP7
000025ab: DUP6
000025ac: DUP2
000025ad: MLOAD
000025ae: DUP2
000025af: LT
000025b0: PUSH2 0x25b5
000025b3: JUMPI
000025b4: INVALID
000025b5: JUMPDEST
000025b6: PUSH1 0x20
000025b8: MUL
000025b9: PUSH1 0x20
000025bb: ADD
000025bc: ADD
000025bd: MLOAD
000025be: PUSH1 0x40
000025c0: ADD
000025c1: MLOAD
000025c2: DUP8
000025c3: DUP7
000025c4: DUP2
000025c5: MLOAD
000025c6: DUP2
000025c7: LT
000025c8: PUSH2 0x25cd
000025cb: JUMPI
000025cc: INVALID
000025cd: JUMPDEST
000025ce: PUSH1 0x20
000025d0: MUL
000025d1: PUSH1 0x20
000025d3: ADD
000025d4: ADD
000025d5: MLOAD
000025d6: PUSH1 0x60
000025d8: ADD
000025d9: MLOAD
000025da: DUP9
000025db: DUP8
000025dc: DUP2
000025dd: MLOAD
000025de: DUP2
000025df: LT
000025e0: PUSH2 0x25e5
000025e3: JUMPI
000025e4: INVALID
000025e5: JUMPDEST
000025e6: PUSH1 0x20
000025e8: MUL
000025e9: PUSH1 0x20
000025eb: ADD
000025ec: ADD
000025ed: MLOAD
000025ee: PUSH1 0x80
000025f0: ADD
000025f1: MLOAD
000025f2: DUP11
000025f3: DUP9
000025f4: DUP2
000025f5: MLOAD
000025f6: DUP2
000025f7: LT
000025f8: PUSH2 0x25fd
000025fb: JUMPI
000025fc: INVALID
000025fd: JUMPDEST
000025fe: PUSH1 0x20
00002600: MUL
00002601: PUSH1 0x20
00002603: ADD
00002604: ADD
00002605: MLOAD
00002606: DUP11
00002607: DUP10
00002608: DUP2
00002609: MLOAD
0000260a: DUP2
0000260b: LT
0000260c: PUSH2 0x2611
0000260f: JUMPI
00002610: INVALID
00002611: JUMPDEST
00002612: PUSH1 0x20
00002614: MUL
00002615: PUSH1 0x20
00002617: ADD
00002618: ADD
00002619: MLOAD
0000261a: PUSH1 0xa0
0000261c: ADD
0000261d: MLOAD
0000261e: PUSH1 0x40
00002620: MLOAD
00002621: DUP8
00002622: PUSH4 0xffffffff
00002627: AND
00002628: PUSH1 0xe0
0000262a: SHL
0000262b: DUP2
0000262c: MSTORE
0000262d: PUSH1 0x04
0000262f: ADD
00002630: PUSH2 0x263e
00002633: SWAP7
00002634: SWAP6
00002635: SWAP5
00002636: SWAP4
00002637: SWAP3
00002638: SWAP2
00002639: SWAP1
0000263a: PUSH2 0x32c3
0000263d: JUMP
0000263e: JUMPDEST
0000263f: PUSH1 0x20
00002641: PUSH1 0x40
00002643: MLOAD
00002644: DUP1
00002645: DUP4
00002646: SUB
00002647: DUP2
00002648: DUP7
00002649: DUP1
0000264a: EXTCODESIZE
0000264b: ISZERO
0000264c: DUP1
0000264d: ISZERO
0000264e: PUSH2 0x2656
00002651: JUMPI
00002652: PUSH1 0x00
00002654: DUP1
00002655: REVERT
00002656: JUMPDEST
00002657: POP
00002658: GAS
00002659: STATICCALL
0000265a: ISZERO
0000265b: DUP1
0000265c: ISZERO
0000265d: PUSH2 0x266a
00002660: JUMPI
00002661: RETURNDATASIZE
00002662: PUSH1 0x00
00002664: DUP1
00002665: RETURNDATACOPY
00002666: RETURNDATASIZE
00002667: PUSH1 0x00
00002669: REVERT
0000266a: JUMPDEST
0000266b: POP
0000266c: POP
0000266d: POP
0000266e: POP
0000266f: PUSH1 0x40
00002671: MLOAD
00002672: RETURNDATASIZE
00002673: PUSH1 0x1f
00002675: NOT
00002676: PUSH1 0x1f
00002678: DUP3
00002679: ADD
0000267a: AND
0000267b: DUP3
0000267c: ADD
0000267d: DUP1
0000267e: PUSH1 0x40
00002680: MSTORE
00002681: POP
00002682: PUSH2 0x268e
00002685: SWAP2
00002686: SWAP1
00002687: DUP2
00002688: ADD
00002689: SWAP1
0000268a: PUSH2 0x2d87
0000268d: JUMP
0000268e: JUMPDEST
0000268f: SWAP1
00002690: POP
00002691: PUSH2 0x26a0
00002694: DUP4
00002695: DUP3
00002696: PUSH4 0xffffffff
0000269b: PUSH2 0x1e4a
0000269e: AND
0000269f: JUMP
000026a0: JUMPDEST
000026a1: SWAP3
000026a2: POP
000026a3: POP
000026a4: PUSH1 0x01
000026a6: ADD
000026a7: PUSH2 0x2560
000026aa: JUMP
000026ab: JUMPDEST
000026ac: CALLER
000026ad: SWAP1
000026ae: JUMP
000026af: JUMPDEST
000026b0: PUSH1 0x01
000026b2: PUSH1 0x01
000026b4: PUSH1 0xa0
000026b6: SHL
000026b7: SUB
000026b8: DUP2
000026b9: AND
000026ba: PUSH2 0x26d5
000026bd: JUMPI
000026be: PUSH1 0x40
000026c0: MLOAD
000026c1: PUSH3 0x461bcd
000026c5: PUSH1 0xe5
000026c7: SHL
000026c8: DUP2
000026c9: MSTORE
000026ca: PUSH1 0x04
000026cc: ADD
000026cd: PUSH2 0x0568
000026d0: SWAP1
000026d1: PUSH2 0x3235
000026d4: JUMP
000026d5: JUMPDEST
000026d6: PUSH1 0x00
000026d8: DUP1
000026d9: SLOAD
000026da: PUSH1 0x40
000026dc: MLOAD
000026dd: PUSH1 0x01
000026df: PUSH1 0x01
000026e1: PUSH1 0xa0
000026e3: SHL
000026e4: SUB
000026e5: DUP1
000026e6: DUP6
000026e7: AND
000026e8: SWAP4
000026e9: SWAP3
000026ea: AND
000026eb: SWAP2
000026ec: PUSH32 0x8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0
0000270d: SWAP2
0000270e: LOG3
0000270f: PUSH1 0x00
00002711: DUP1
00002712: SLOAD
00002713: PUSH1 0x01
00002715: PUSH1 0x01
00002717: PUSH1 0xa0
00002719: SHL
0000271a: SUB
0000271b: NOT
0000271c: AND
0000271d: PUSH1 0x01
0000271f: PUSH1 0x01
00002721: PUSH1 0xa0
00002723: SHL
00002724: SUB
00002725: SWAP3
00002726: SWAP1
00002727: SWAP3
00002728: AND
00002729: SWAP2
0000272a: SWAP1
0000272b: SWAP2
0000272c: OR
0000272d: SWAP1
0000272e: SSTORE
0000272f: JUMP
00002730: JUMPDEST
00002731: PUSH1 0x00
00002733: PUSH2 0x2779
00002736: PUSH8 0x0de0b6b3a7640000
0000273f: PUSH2 0x074c
00002742: DUP6
00002743: PUSH2 0x276d
00002746: PUSH2 0x2755
00002749: DUP8
0000274a: DUP11
0000274b: PUSH4 0xffffffff
00002750: PUSH2 0x1e4a
00002753: AND
00002754: JUMP
00002755: JUMPDEST
00002756: PUSH2 0x074c
00002759: DUP11
0000275a: PUSH8 0x0de0b6b3a7640000
00002763: PUSH4 0xffffffff
00002768: PUSH2 0x2348
0000276b: AND
0000276c: JUMP
0000276d: JUMPDEST
0000276e: SWAP1
0000276f: PUSH4 0xffffffff
00002774: PUSH2 0x2348
00002777: AND
00002778: JUMP
00002779: JUMPDEST
0000277a: SWAP5
0000277b: SWAP4
0000277c: POP
0000277d: POP
0000277e: POP
0000277f: POP
00002780: JUMP
00002781: JUMPDEST
00002782: PUSH1 0x00
00002784: DUP2
00002785: DUP4
00002786: PUSH2 0x27a2
00002789: JUMPI
0000278a: PUSH1 0x40
0000278c: MLOAD
0000278d: PUSH3 0x461bcd
00002791: PUSH1 0xe5
00002793: SHL
00002794: DUP2
00002795: MSTORE
00002796: PUSH1 0x04
00002798: ADD
00002799: PUSH2 0x0568
0000279c: SWAP2
0000279d: SWAP1
0000279e: PUSH2 0x3224
000027a1: JUMP
000027a2: JUMPDEST
000027a3: POP
000027a4: PUSH1 0x00
000027a6: DUP4
000027a7: DUP6
000027a8: DUP2
000027a9: PUSH2 0x27ae
000027ac: JUMPI
000027ad: INVALID
000027ae: JUMPDEST
000027af: DIV
000027b0: SWAP6
000027b1: SWAP5
000027b2: POP
000027b3: POP
000027b4: POP
000027b5: POP
000027b6: POP
000027b7: JUMP
000027b8: JUMPDEST
000027b9: PUSH1 0x00
000027bb: DUP2
000027bc: DUP5
000027bd: DUP5
000027be: GT
000027bf: ISZERO
000027c0: PUSH2 0x27dc
000027c3: JUMPI
000027c4: PUSH1 0x40
000027c6: MLOAD
000027c7: PUSH3 0x461bcd
000027cb: PUSH1 0xe5
000027cd: SHL
000027ce: DUP2
000027cf: MSTORE
000027d0: PUSH1 0x04
000027d2: ADD
000027d3: PUSH2 0x0568
000027d6: SWAP2
000027d7: SWAP1
000027d8: PUSH2 0x3224
000027db: JUMP
000027dc: JUMPDEST
000027dd: POP
000027de: POP
000027df: POP
000027e0: SWAP1
000027e1: SUB
000027e2: SWAP1
000027e3: JUMP
000027e4: JUMPDEST
000027e5: PUSH1 0x40
000027e7: MLOAD
000027e8: DUP1
000027e9: PUSH1 0xc0
000027eb: ADD
000027ec: PUSH1 0x40
000027ee: MSTORE
000027ef: DUP1
000027f0: PUSH1 0x00
000027f2: PUSH1 0x01
000027f4: PUSH1 0x01
000027f6: PUSH1 0xa0
000027f8: SHL
000027f9: SUB
000027fa: AND
000027fb: DUP2
000027fc: MSTORE
000027fd: PUSH1 0x20
000027ff: ADD
00002800: PUSH1 0x00
00002802: PUSH1 0x01
00002804: PUSH1 0x01
00002806: PUSH1 0xa0
00002808: SHL
00002809: SUB
0000280a: AND
0000280b: DUP2
0000280c: MSTORE
0000280d: PUSH1 0x20
0000280f: ADD
00002810: PUSH1 0x00
00002812: PUSH1 0x01
00002814: PUSH1 0x01
00002816: PUSH1 0xa0
00002818: SHL
00002819: SUB
0000281a: AND
0000281b: DUP2
0000281c: MSTORE
0000281d: PUSH1 0x20
0000281f: ADD
00002820: PUSH1 0x00
00002822: DUP2
00002823: MSTORE
00002824: PUSH1 0x20
00002826: ADD
00002827: PUSH1 0x00
00002829: DUP2
0000282a: MSTORE
0000282b: PUSH1 0x20
0000282d: ADD
0000282e: PUSH1 0x00
00002830: DUP2
00002831: MSTORE
00002832: POP
00002833: SWAP1
00002834: JUMP
00002835: JUMPDEST
00002836: PUSH1 0x40
00002838: MLOAD
00002839: DUP1
0000283a: PUSH1 0xe0
0000283c: ADD
0000283d: PUSH1 0x40
0000283f: MSTORE
00002840: DUP1
00002841: PUSH1 0x00
00002843: PUSH1 0x01
00002845: PUSH1 0x01
00002847: PUSH1 0xa0
00002849: SHL
0000284a: SUB
0000284b: AND
0000284c: DUP2
0000284d: MSTORE
0000284e: PUSH1 0x20
00002850: ADD
00002851: PUSH1 0x00
00002853: DUP2
00002854: MSTORE
00002855: PUSH1 0x20
00002857: ADD
00002858: PUSH1 0x00
0000285a: DUP2
0000285b: MSTORE
0000285c: PUSH1 0x20
0000285e: ADD
0000285f: PUSH1 0x00
00002861: DUP2
00002862: MSTORE
00002863: PUSH1 0x20
00002865: ADD
00002866: PUSH1 0x00
00002868: DUP2
00002869: MSTORE
0000286a: PUSH1 0x20
0000286c: ADD
0000286d: PUSH1 0x00
0000286f: DUP2
00002870: MSTORE
00002871: PUSH1 0x20
00002873: ADD
00002874: PUSH1 0x00
00002876: DUP2
00002877: MSTORE
00002878: POP
00002879: SWAP1
0000287a: JUMP
0000287b: JUMPDEST
0000287c: DUP1
0000287d: CALLDATALOAD
0000287e: PUSH2 0x1e44
00002881: DUP2
00002882: PUSH2 0x33e3
00002885: JUMP
00002886: JUMPDEST
00002887: DUP1
00002888: MLOAD
00002889: PUSH2 0x1e44
0000288c: DUP2
0000288d: PUSH2 0x33e3
00002890: JUMP
00002891: JUMPDEST
00002892: PUSH1 0x00
00002894: DUP3
00002895: PUSH1 0x1f
00002897: DUP4
00002898: ADD
00002899: SLT
0000289a: PUSH2 0x28a2
0000289d: JUMPI
0000289e: PUSH1 0x00
000028a0: DUP1
000028a1: REVERT
000028a2: JUMPDEST
000028a3: DUP2
000028a4: MLOAD
000028a5: PUSH2 0x28b5
000028a8: PUSH2 0x28b0
000028ab: DUP3
000028ac: PUSH2 0x3339
000028af: JUMP
000028b0: JUMPDEST
000028b1: PUSH2 0x3312
000028b4: JUMP
000028b5: JUMPDEST
000028b6: SWAP2
000028b7: POP
000028b8: DUP2
000028b9: DUP2
000028ba: DUP4
000028bb: MSTORE
000028bc: PUSH1 0x20
000028be: DUP5
000028bf: ADD
000028c0: SWAP4
000028c1: POP
000028c2: PUSH1 0x20
000028c4: DUP2
000028c5: ADD
000028c6: SWAP1
000028c7: POP
000028c8: DUP4
000028c9: DUP6
000028ca: PUSH1 0x20
000028cc: DUP5
000028cd: MUL
000028ce: DUP3
000028cf: ADD
000028d0: GT
000028d1: ISZERO
000028d2: PUSH2 0x28da
000028d5: JUMPI
000028d6: PUSH1 0x00
000028d8: DUP1
000028d9: REVERT
000028da: JUMPDEST
000028db: PUSH1 0x00
000028dd: JUMPDEST
000028de: DUP4
000028df: DUP2
000028e0: LT
000028e1: ISZERO
000028e2: PUSH2 0x2906
000028e5: JUMPI
000028e6: DUP2
000028e7: PUSH2 0x28f0
000028ea: DUP9
000028eb: DUP3
000028ec: PUSH2 0x2886
000028ef: JUMP
000028f0: JUMPDEST
000028f1: DUP5
000028f2: MSTORE
000028f3: POP
000028f4: PUSH1 0x20
000028f6: SWAP3
000028f7: DUP4
000028f8: ADD
000028f9: SWAP3
000028fa: SWAP2
000028fb: SWAP1
000028fc: SWAP2
000028fd: ADD
000028fe: SWAP1
000028ff: PUSH1 0x01
00002901: ADD
00002902: PUSH2 0x28dd
00002905: JUMP
00002906: JUMPDEST
00002907: POP
00002908: POP
00002909: POP
0000290a: POP
0000290b: SWAP3
0000290c: SWAP2
0000290d: POP
0000290e: POP
0000290f: JUMP
00002910: JUMPDEST
00002911: PUSH1 0x00
00002913: DUP3
00002914: PUSH1 0x1f
00002916: DUP4
00002917: ADD
00002918: SLT
00002919: PUSH2 0x2921
0000291c: JUMPI
0000291d: PUSH1 0x00
0000291f: DUP1
00002920: REVERT
00002921: JUMPDEST
00002922: DUP2
00002923: CALLDATALOAD
00002924: PUSH2 0x292f
00002927: PUSH2 0x28b0
0000292a: DUP3
0000292b: PUSH2 0x3339
0000292e: JUMP
0000292f: JUMPDEST
00002930: DUP2
00002931: DUP2
00002932: MSTORE
00002933: PUSH1 0x20
00002935: SWAP4
00002936: DUP5
00002937: ADD
00002938: SWAP4
00002939: SWAP1
0000293a: SWAP3
0000293b: POP
0000293c: DUP3
0000293d: ADD
0000293e: DUP4
0000293f: PUSH1 0x00
00002941: JUMPDEST
00002942: DUP4
00002943: DUP2
00002944: LT
00002945: ISZERO
00002946: PUSH2 0x2906
00002949: JUMPI
0000294a: DUP2
0000294b: CALLDATALOAD
0000294c: DUP7
0000294d: ADD
0000294e: PUSH2 0x2957
00002951: DUP9
00002952: DUP3
00002953: PUSH2 0x296d
00002956: JUMP
00002957: JUMPDEST
00002958: DUP5
00002959: MSTORE
0000295a: POP
0000295b: PUSH1 0x20
0000295d: SWAP3
0000295e: DUP4
0000295f: ADD
00002960: SWAP3
00002961: SWAP2
00002962: SWAP1
00002963: SWAP2
00002964: ADD
00002965: SWAP1
00002966: PUSH1 0x01
00002968: ADD
00002969: PUSH2 0x2941
0000296c: JUMP
0000296d: JUMPDEST
0000296e: PUSH1 0x00
00002970: DUP3
00002971: PUSH1 0x1f
00002973: DUP4
00002974: ADD
00002975: SLT
00002976: PUSH2 0x297e
00002979: JUMPI
0000297a: PUSH1 0x00
0000297c: DUP1
0000297d: REVERT
0000297e: JUMPDEST
0000297f: DUP2
00002980: CALLDATALOAD
00002981: PUSH2 0x298c
00002984: PUSH2 0x28b0
00002987: DUP3
00002988: PUSH2 0x3339
0000298b: JUMP
0000298c: JUMPDEST
0000298d: SWAP2
0000298e: POP
0000298f: DUP2
00002990: DUP2
00002991: DUP4
00002992: MSTORE
00002993: PUSH1 0x20
00002995: DUP5
00002996: ADD
00002997: SWAP4
00002998: POP
00002999: PUSH1 0x20
0000299b: DUP2
0000299c: ADD
0000299d: SWAP1
0000299e: POP
0000299f: DUP4
000029a0: DUP6
000029a1: PUSH1 0xc0
000029a3: DUP5
000029a4: MUL
000029a5: DUP3
000029a6: ADD
000029a7: GT
000029a8: ISZERO
000029a9: PUSH2 0x29b1
000029ac: JUMPI
000029ad: PUSH1 0x00
000029af: DUP1
000029b0: REVERT
000029b1: JUMPDEST
000029b2: PUSH1 0x00
000029b4: JUMPDEST
000029b5: DUP4
000029b6: DUP2
000029b7: LT
000029b8: ISZERO
000029b9: PUSH2 0x2906
000029bc: JUMPI
000029bd: DUP2
000029be: PUSH2 0x29c7
000029c1: DUP9
000029c2: DUP3
000029c3: PUSH2 0x2a67
000029c6: JUMP
000029c7: JUMPDEST
000029c8: DUP5
000029c9: MSTORE
000029ca: POP
000029cb: PUSH1 0x20
000029cd: SWAP1
000029ce: SWAP3
000029cf: ADD
000029d0: SWAP2
000029d1: PUSH1 0xc0
000029d3: SWAP2
000029d4: SWAP1
000029d5: SWAP2
000029d6: ADD
000029d7: SWAP1
000029d8: PUSH1 0x01
000029da: ADD
000029db: PUSH2 0x29b4
000029de: JUMP
000029df: JUMPDEST
000029e0: PUSH1 0x00
000029e2: DUP3
000029e3: PUSH1 0x1f
000029e5: DUP4
000029e6: ADD
000029e7: SLT
000029e8: PUSH2 0x29f0
000029eb: JUMPI
000029ec: PUSH1 0x00
000029ee: DUP1
000029ef: REVERT
000029f0: JUMPDEST
000029f1: DUP2
000029f2: CALLDATALOAD
000029f3: PUSH2 0x29fe
000029f6: PUSH2 0x28b0
000029f9: DUP3
000029fa: PUSH2 0x3339
000029fd: JUMP
000029fe: JUMPDEST
000029ff: SWAP2
00002a00: POP
00002a01: DUP2
00002a02: DUP2
00002a03: DUP4
00002a04: MSTORE
00002a05: PUSH1 0x20
00002a07: DUP5
00002a08: ADD
00002a09: SWAP4
00002a0a: POP
00002a0b: PUSH1 0x20
00002a0d: DUP2
00002a0e: ADD
00002a0f: SWAP1
00002a10: POP
00002a11: DUP4
00002a12: DUP6
00002a13: PUSH1 0xc0
00002a15: DUP5
00002a16: MUL
00002a17: DUP3
00002a18: ADD
00002a19: GT
00002a1a: ISZERO
00002a1b: PUSH2 0x2a23
00002a1e: JUMPI
00002a1f: PUSH1 0x00
00002a21: DUP1
00002a22: REVERT
00002a23: JUMPDEST
00002a24: PUSH1 0x00
00002a26: JUMPDEST
00002a27: DUP4
00002a28: DUP2
00002a29: LT
00002a2a: ISZERO
00002a2b: PUSH2 0x2906
00002a2e: JUMPI
00002a2f: DUP2
00002a30: PUSH2 0x2a39
00002a33: DUP9
00002a34: DUP3
00002a35: PUSH2 0x2a67
00002a38: JUMP
00002a39: JUMPDEST
00002a3a: DUP5
00002a3b: MSTORE
00002a3c: POP
00002a3d: PUSH1 0x20
00002a3f: SWAP1
00002a40: SWAP3
00002a41: ADD
00002a42: SWAP2
00002a43: PUSH1 0xc0
00002a45: SWAP2
00002a46: SWAP1
00002a47: SWAP2
00002a48: ADD
00002a49: SWAP1
00002a4a: PUSH1 0x01
00002a4c: ADD
00002a4d: PUSH2 0x2a26
00002a50: JUMP
00002a51: JUMPDEST
00002a52: DUP1
00002a53: MLOAD
00002a54: PUSH2 0x1e44
00002a57: DUP2
00002a58: PUSH2 0x33f7
00002a5b: JUMP
00002a5c: JUMPDEST
00002a5d: DUP1
00002a5e: CALLDATALOAD
00002a5f: PUSH2 0x1e44
00002a62: DUP2
00002a63: PUSH2 0x3400
00002a66: JUMP
00002a67: JUMPDEST
00002a68: PUSH1 0x00
00002a6a: PUSH1 0xc0
00002a6c: DUP3
00002a6d: DUP5
00002a6e: SUB
00002a6f: SLT
00002a70: ISZERO
00002a71: PUSH2 0x2a79
00002a74: JUMPI
00002a75: PUSH1 0x00
00002a77: DUP1
00002a78: REVERT
00002a79: JUMPDEST
00002a7a: PUSH2 0x2a83
00002a7d: PUSH1 0xc0
00002a7f: PUSH2 0x3312
00002a82: JUMP
00002a83: JUMPDEST
00002a84: SWAP1
00002a85: POP
00002a86: PUSH1 0x00
00002a88: PUSH2 0x2a91
00002a8b: DUP5
00002a8c: DUP5
00002a8d: PUSH2 0x287b
00002a90: JUMP
00002a91: JUMPDEST
00002a92: DUP3
00002a93: MSTORE
00002a94: POP
00002a95: PUSH1 0x20
00002a97: PUSH2 0x2aa2
00002a9a: DUP5
00002a9b: DUP5
00002a9c: DUP4
00002a9d: ADD
00002a9e: PUSH2 0x287b
00002aa1: JUMP
00002aa2: JUMPDEST
00002aa3: PUSH1 0x20
00002aa5: DUP4
00002aa6: ADD
00002aa7: MSTORE
00002aa8: POP
00002aa9: PUSH1 0x40
00002aab: PUSH2 0x2ab6
00002aae: DUP5
00002aaf: DUP3
00002ab0: DUP6
00002ab1: ADD
00002ab2: PUSH2 0x287b
00002ab5: JUMP
00002ab6: JUMPDEST
00002ab7: PUSH1 0x40
00002ab9: DUP4
00002aba: ADD
00002abb: MSTORE
00002abc: POP
00002abd: PUSH1 0x60
00002abf: PUSH2 0x2aca
00002ac2: DUP5
00002ac3: DUP3
00002ac4: DUP6
00002ac5: ADD
00002ac6: PUSH2 0x2afe
00002ac9: JUMP
00002aca: JUMPDEST
00002acb: PUSH1 0x60
00002acd: DUP4
00002ace: ADD
00002acf: MSTORE
00002ad0: POP
00002ad1: PUSH1 0x80
00002ad3: PUSH2 0x2ade
00002ad6: DUP5
00002ad7: DUP3
00002ad8: DUP6
00002ad9: ADD
00002ada: PUSH2 0x2afe
00002add: JUMP
00002ade: JUMPDEST
00002adf: PUSH1 0x80
00002ae1: DUP4
00002ae2: ADD
00002ae3: MSTORE
00002ae4: POP
00002ae5: PUSH1 0xa0
00002ae7: PUSH2 0x2af2
00002aea: DUP5
00002aeb: DUP3
00002aec: DUP6
00002aed: ADD
00002aee: PUSH2 0x2afe
00002af1: JUMP
00002af2: JUMPDEST
00002af3: PUSH1 0xa0
00002af5: DUP4
00002af6: ADD
00002af7: MSTORE
00002af8: POP
00002af9: SWAP3
00002afa: SWAP2
00002afb: POP
00002afc: POP
00002afd: JUMP
00002afe: JUMPDEST
00002aff: DUP1
00002b00: CALLDATALOAD
00002b01: PUSH2 0x1e44
00002b04: DUP2
00002b05: PUSH2 0x3409
00002b08: JUMP
00002b09: JUMPDEST
00002b0a: DUP1
00002b0b: MLOAD
00002b0c: PUSH2 0x1e44
00002b0f: DUP2
00002b10: PUSH2 0x3409
00002b13: JUMP
00002b14: JUMPDEST
00002b15: PUSH1 0x00
00002b17: PUSH1 0x20
00002b19: DUP3
00002b1a: DUP5
00002b1b: SUB
00002b1c: SLT
00002b1d: ISZERO
00002b1e: PUSH2 0x2b26
00002b21: JUMPI
00002b22: PUSH1 0x00
00002b24: DUP1
00002b25: REVERT
00002b26: JUMPDEST
00002b27: PUSH1 0x00
00002b29: PUSH2 0x2779
00002b2c: DUP5
00002b2d: DUP5
00002b2e: PUSH2 0x287b
00002b31: JUMP
00002b32: JUMPDEST
00002b33: PUSH1 0x00
00002b35: DUP1
00002b36: PUSH1 0x00
00002b38: DUP1
00002b39: PUSH1 0x80
00002b3b: DUP6
00002b3c: DUP8
00002b3d: SUB
00002b3e: SLT
00002b3f: ISZERO
00002b40: PUSH2 0x2b48
00002b43: JUMPI
00002b44: PUSH1 0x00
00002b46: DUP1
00002b47: REVERT
00002b48: JUMPDEST
00002b49: PUSH1 0x00
00002b4b: PUSH2 0x2b54
00002b4e: DUP8
00002b4f: DUP8
00002b50: PUSH2 0x287b
00002b53: JUMP
00002b54: JUMPDEST
00002b55: SWAP5
00002b56: POP
00002b57: POP
00002b58: PUSH1 0x20
00002b5a: PUSH2 0x2b65
00002b5d: DUP8
00002b5e: DUP3
00002b5f: DUP9
00002b60: ADD
00002b61: PUSH2 0x287b
00002b64: JUMP
00002b65: JUMPDEST
00002b66: SWAP4
00002b67: POP
00002b68: POP
00002b69: PUSH1 0x40
00002b6b: PUSH2 0x2b76
00002b6e: DUP8
00002b6f: DUP3
00002b70: DUP9
00002b71: ADD
00002b72: PUSH2 0x2afe
00002b75: JUMP
00002b76: JUMPDEST
00002b77: SWAP3
00002b78: POP
00002b79: POP
00002b7a: PUSH1 0x60
00002b7c: PUSH2 0x2b87
00002b7f: DUP8
00002b80: DUP3
00002b81: DUP9
00002b82: ADD
00002b83: PUSH2 0x2afe
00002b86: JUMP
00002b87: JUMPDEST
00002b88: SWAP2
00002b89: POP
00002b8a: POP
00002b8b: SWAP3
00002b8c: SWAP6
00002b8d: SWAP2
00002b8e: SWAP5
00002b8f: POP
00002b90: SWAP3
00002b91: POP
00002b92: JUMP
00002b93: JUMPDEST
00002b94: PUSH1 0x00
00002b96: PUSH1 0x20
00002b98: DUP3
00002b99: DUP5
00002b9a: SUB
00002b9b: SLT
00002b9c: ISZERO
00002b9d: PUSH2 0x2ba5
00002ba0: JUMPI
00002ba1: PUSH1 0x00
00002ba3: DUP1
00002ba4: REVERT
00002ba5: JUMPDEST
00002ba6: DUP2
00002ba7: MLOAD
00002ba8: PUSH8 0xffffffffffffffff
00002bb1: DUP2
00002bb2: GT
00002bb3: ISZERO
00002bb4: PUSH2 0x2bbc
00002bb7: JUMPI
00002bb8: PUSH1 0x00
00002bba: DUP1
00002bbb: REVERT
00002bbc: JUMPDEST
00002bbd: PUSH2 0x2779
00002bc0: DUP5
00002bc1: DUP3
00002bc2: DUP6
00002bc3: ADD
00002bc4: PUSH2 0x2891
00002bc7: JUMP
00002bc8: JUMPDEST
00002bc9: PUSH1 0x00
00002bcb: DUP1
00002bcc: PUSH1 0x00
00002bce: DUP1
00002bcf: PUSH1 0x80
00002bd1: DUP6
00002bd2: DUP8
00002bd3: SUB
00002bd4: SLT
00002bd5: ISZERO
00002bd6: PUSH2 0x2bde
00002bd9: JUMPI
00002bda: PUSH1 0x00
00002bdc: DUP1
00002bdd: REVERT
00002bde: JUMPDEST
00002bdf: DUP5
00002be0: CALLDATALOAD
00002be1: PUSH8 0xffffffffffffffff
00002bea: DUP2
00002beb: GT
00002bec: ISZERO
00002bed: PUSH2 0x2bf5
00002bf0: JUMPI
00002bf1: PUSH1 0x00
00002bf3: DUP1
00002bf4: REVERT
00002bf5: JUMPDEST
00002bf6: PUSH2 0x2c01
00002bf9: DUP8
00002bfa: DUP3
00002bfb: DUP9
00002bfc: ADD
00002bfd: PUSH2 0x2910
00002c00: JUMP
00002c01: JUMPDEST
00002c02: SWAP5
00002c03: POP
00002c04: POP
00002c05: PUSH1 0x20
00002c07: PUSH2 0x2c12
00002c0a: DUP8
00002c0b: DUP3
00002c0c: DUP9
00002c0d: ADD
00002c0e: PUSH2 0x2a5c
00002c11: JUMP
00002c12: JUMPDEST
00002c13: SWAP4
00002c14: POP
00002c15: POP
00002c16: PUSH1 0x40
00002c18: PUSH2 0x2b76
00002c1b: DUP8
00002c1c: DUP3
00002c1d: DUP9
00002c1e: ADD
00002c1f: PUSH2 0x2a5c
00002c22: JUMP
00002c23: JUMPDEST
00002c24: PUSH1 0x00
00002c26: DUP1
00002c27: PUSH1 0x00
00002c29: DUP1
00002c2a: PUSH1 0x00
00002c2c: PUSH1 0xa0
00002c2e: DUP7
00002c2f: DUP9
00002c30: SUB
00002c31: SLT
00002c32: ISZERO
00002c33: PUSH2 0x2c3b
00002c36: JUMPI
00002c37: PUSH1 0x00
00002c39: DUP1
00002c3a: REVERT
00002c3b: JUMPDEST
00002c3c: DUP6
00002c3d: CALLDATALOAD
00002c3e: PUSH8 0xffffffffffffffff
00002c47: DUP2
00002c48: GT
00002c49: ISZERO
00002c4a: PUSH2 0x2c52
00002c4d: JUMPI
00002c4e: PUSH1 0x00
00002c50: DUP1
00002c51: REVERT
00002c52: JUMPDEST
00002c53: PUSH2 0x2c5e
00002c56: DUP9
00002c57: DUP3
00002c58: DUP10
00002c59: ADD
00002c5a: PUSH2 0x2910
00002c5d: JUMP
00002c5e: JUMPDEST
00002c5f: SWAP6
00002c60: POP
00002c61: POP
00002c62: PUSH1 0x20
00002c64: PUSH2 0x2c6f
00002c67: DUP9
00002c68: DUP3
00002c69: DUP10
00002c6a: ADD
00002c6b: PUSH2 0x2a5c
00002c6e: JUMP
00002c6f: JUMPDEST
00002c70: SWAP5
00002c71: POP
00002c72: POP
00002c73: PUSH1 0x40
00002c75: PUSH2 0x2c80
00002c78: DUP9
00002c79: DUP3
00002c7a: DUP10
00002c7b: ADD
00002c7c: PUSH2 0x2a5c
00002c7f: JUMP
00002c80: JUMPDEST
00002c81: SWAP4
00002c82: POP
00002c83: POP
00002c84: PUSH1 0x60
00002c86: PUSH2 0x2c91
00002c89: DUP9
00002c8a: DUP3
00002c8b: DUP10
00002c8c: ADD
00002c8d: PUSH2 0x2afe
00002c90: JUMP
00002c91: JUMPDEST
00002c92: SWAP3
00002c93: POP
00002c94: POP
00002c95: PUSH1 0x80
00002c97: PUSH2 0x2ca2
00002c9a: DUP9
00002c9b: DUP3
00002c9c: DUP10
00002c9d: ADD
00002c9e: PUSH2 0x2afe
00002ca1: JUMP
00002ca2: JUMPDEST
00002ca3: SWAP2
00002ca4: POP
00002ca5: POP
00002ca6: SWAP3
00002ca7: SWAP6
00002ca8: POP
00002ca9: SWAP3
00002caa: SWAP6
00002cab: SWAP1
00002cac: SWAP4
00002cad: POP
00002cae: JUMP
00002caf: JUMPDEST
00002cb0: PUSH1 0x00
00002cb2: DUP1
00002cb3: PUSH1 0x00
00002cb5: DUP1
00002cb6: PUSH1 0x80
00002cb8: DUP6
00002cb9: DUP8
00002cba: SUB
00002cbb: SLT
00002cbc: ISZERO
00002cbd: PUSH2 0x2cc5
00002cc0: JUMPI
00002cc1: PUSH1 0x00
00002cc3: DUP1
00002cc4: REVERT
00002cc5: JUMPDEST
00002cc6: DUP5
00002cc7: CALLDATALOAD
00002cc8: PUSH8 0xffffffffffffffff
00002cd1: DUP2
00002cd2: GT
00002cd3: ISZERO
00002cd4: PUSH2 0x2cdc
00002cd7: JUMPI
00002cd8: PUSH1 0x00
00002cda: DUP1
00002cdb: REVERT
00002cdc: JUMPDEST
00002cdd: PUSH2 0x2c01
00002ce0: DUP8
00002ce1: DUP3
00002ce2: DUP9
00002ce3: ADD
00002ce4: PUSH2 0x29df
00002ce7: JUMP
00002ce8: JUMPDEST
00002ce9: PUSH1 0x00
00002ceb: DUP1
00002cec: PUSH1 0x00
00002cee: DUP1
00002cef: PUSH1 0x00
00002cf1: PUSH1 0xa0
00002cf3: DUP7
00002cf4: DUP9
00002cf5: SUB
00002cf6: SLT
00002cf7: ISZERO
00002cf8: PUSH2 0x2d00
00002cfb: JUMPI
00002cfc: PUSH1 0x00
00002cfe: DUP1
00002cff: REVERT
00002d00: JUMPDEST
00002d01: DUP6
00002d02: CALLDATALOAD
00002d03: PUSH8 0xffffffffffffffff
00002d0c: DUP2
00002d0d: GT
00002d0e: ISZERO
00002d0f: PUSH2 0x2d17
00002d12: JUMPI
00002d13: PUSH1 0x00
00002d15: DUP1
00002d16: REVERT
00002d17: JUMPDEST
00002d18: PUSH2 0x2c5e
00002d1b: DUP9
00002d1c: DUP3
00002d1d: DUP10
00002d1e: ADD
00002d1f: PUSH2 0x29df
00002d22: JUMP
00002d23: JUMPDEST
00002d24: PUSH1 0x00
00002d26: PUSH1 0x20
00002d28: DUP3
00002d29: DUP5
00002d2a: SUB
00002d2b: SLT
00002d2c: ISZERO
00002d2d: PUSH2 0x2d35
00002d30: JUMPI
00002d31: PUSH1 0x00
00002d33: DUP1
00002d34: REVERT
00002d35: JUMPDEST
00002d36: PUSH1 0x00
00002d38: PUSH2 0x2779
00002d3b: DUP5
00002d3c: DUP5
00002d3d: PUSH2 0x2a51
00002d40: JUMP
00002d41: JUMPDEST
00002d42: PUSH1 0x00
00002d44: DUP1
00002d45: PUSH1 0x00
00002d47: DUP1
00002d48: PUSH1 0x00
00002d4a: PUSH1 0xa0
00002d4c: DUP7
00002d4d: DUP9
00002d4e: SUB
00002d4f: SLT
00002d50: ISZERO
00002d51: PUSH2 0x2d59
00002d54: JUMPI
00002d55: PUSH1 0x00
00002d57: DUP1
00002d58: REVERT
00002d59: JUMPDEST
00002d5a: PUSH1 0x00
00002d5c: PUSH2 0x2d65
00002d5f: DUP9
00002d60: DUP9
00002d61: PUSH2 0x2a5c
00002d64: JUMP
00002d65: JUMPDEST
00002d66: SWAP6
00002d67: POP
00002d68: POP
00002d69: PUSH1 0x20
00002d6b: PUSH2 0x2d76
00002d6e: DUP9
00002d6f: DUP3
00002d70: DUP10
00002d71: ADD
00002d72: PUSH2 0x2a5c
00002d75: JUMP
00002d76: JUMPDEST
00002d77: SWAP5
00002d78: POP
00002d79: POP
00002d7a: PUSH1 0x40
00002d7c: PUSH2 0x2c80
00002d7f: DUP9
00002d80: DUP3
00002d81: DUP10
00002d82: ADD
00002d83: PUSH2 0x2afe
00002d86: JUMP
00002d87: JUMPDEST
00002d88: PUSH1 0x00
00002d8a: PUSH1 0x20
00002d8c: DUP3
00002d8d: DUP5
00002d8e: SUB
00002d8f: SLT
00002d90: ISZERO
00002d91: PUSH2 0x2d99
00002d94: JUMPI
00002d95: PUSH1 0x00
00002d97: DUP1
00002d98: REVERT
00002d99: JUMPDEST
00002d9a: PUSH1 0x00
00002d9c: PUSH2 0x2779
00002d9f: DUP5
00002da0: DUP5
00002da1: PUSH2 0x2b09
00002da4: JUMP
00002da5: JUMPDEST
00002da6: PUSH1 0x00
00002da8: DUP1
00002da9: PUSH1 0x40
00002dab: DUP4
00002dac: DUP6
00002dad: SUB
00002dae: SLT
00002daf: ISZERO
00002db0: PUSH2 0x2db8
00002db3: JUMPI
00002db4: PUSH1 0x00
00002db6: DUP1
00002db7: REVERT
00002db8: JUMPDEST
00002db9: PUSH1 0x00
00002dbb: PUSH2 0x2dc4
00002dbe: DUP6
00002dbf: DUP6
00002dc0: PUSH2 0x2b09
00002dc3: JUMP
00002dc4: JUMPDEST
00002dc5: SWAP3
00002dc6: POP
00002dc7: POP
00002dc8: PUSH1 0x20
00002dca: PUSH2 0x2dd5
00002dcd: DUP6
00002dce: DUP3
00002dcf: DUP7
00002dd0: ADD
00002dd1: PUSH2 0x2b09
00002dd4: JUMP
00002dd5: JUMPDEST
00002dd6: SWAP2
00002dd7: POP
00002dd8: POP
00002dd9: SWAP3
00002dda: POP
00002ddb: SWAP3
00002ddc: SWAP1
00002ddd: POP
00002dde: JUMP
00002ddf: JUMPDEST
00002de0: PUSH1 0x00
00002de2: PUSH2 0x2deb
00002de5: DUP4
00002de6: DUP4
00002de7: PUSH2 0x3062
00002dea: JUMP
00002deb: JUMPDEST
00002dec: POP
00002ded: POP
00002dee: PUSH1 0xc0
00002df0: ADD
00002df1: SWAP1
00002df2: JUMP
00002df3: JUMPDEST
00002df4: PUSH2 0x2dfc
00002df7: DUP2
00002df8: PUSH2 0x3397
00002dfb: JUMP
00002dfc: JUMPDEST
00002dfd: DUP3
00002dfe: MSTORE
00002dff: POP
00002e00: POP
00002e01: JUMP
00002e02: JUMPDEST
00002e03: PUSH2 0x2dfc
00002e06: DUP2
00002e07: PUSH2 0x336d
00002e0a: JUMP
00002e0b: JUMPDEST
00002e0c: PUSH1 0x00
00002e0e: PUSH2 0x2e16
00002e11: DUP3
00002e12: PUSH2 0x3360
00002e15: JUMP
00002e16: JUMPDEST
00002e17: PUSH2 0x2e20
00002e1a: DUP2
00002e1b: DUP6
00002e1c: PUSH2 0x3364
00002e1f: JUMP
00002e20: JUMPDEST
00002e21: SWAP4
00002e22: POP
00002e23: PUSH2 0x2e2b
00002e26: DUP4
00002e27: PUSH2 0x335a
00002e2a: JUMP
00002e2b: JUMPDEST
00002e2c: DUP1
00002e2d: PUSH1 0x00
00002e2f: JUMPDEST
00002e30: DUP4
00002e31: DUP2
00002e32: LT
00002e33: ISZERO
00002e34: PUSH2 0x2e59
00002e37: JUMPI
00002e38: DUP2
00002e39: MLOAD
00002e3a: PUSH2 0x2e43
00002e3d: DUP9
00002e3e: DUP3
00002e3f: PUSH2 0x2ddf
00002e42: JUMP
00002e43: JUMPDEST
00002e44: SWAP8
00002e45: POP
00002e46: PUSH2 0x2e4e
00002e49: DUP4
00002e4a: PUSH2 0x335a
00002e4d: JUMP
00002e4e: JUMPDEST
00002e4f: SWAP3
00002e50: POP
00002e51: POP
00002e52: PUSH1 0x01
00002e54: ADD
00002e55: PUSH2 0x2e2f
00002e58: JUMP
00002e59: JUMPDEST
00002e5a: POP
00002e5b: SWAP5
00002e5c: SWAP6
00002e5d: SWAP5
00002e5e: POP
00002e5f: POP
00002e60: POP
00002e61: POP
00002e62: POP
00002e63: JUMP
00002e64: JUMPDEST
00002e65: PUSH2 0x2dfc
00002e68: DUP2
00002e69: PUSH2 0x3378
00002e6c: JUMP
00002e6d: JUMPDEST
00002e6e: PUSH2 0x2dfc
00002e71: DUP2
00002e72: PUSH2 0x33a2
00002e75: JUMP
00002e76: JUMPDEST
00002e77: PUSH1 0x00
00002e79: PUSH2 0x2e81
00002e7c: DUP3
00002e7d: PUSH2 0x3360
00002e80: JUMP
00002e81: JUMPDEST
00002e82: PUSH2 0x2e8b
00002e85: DUP2
00002e86: DUP6
00002e87: PUSH2 0x3364
00002e8a: JUMP
00002e8b: JUMPDEST
00002e8c: SWAP4
00002e8d: POP
00002e8e: PUSH2 0x2e9b
00002e91: DUP2
00002e92: DUP6
00002e93: PUSH1 0x20
00002e95: DUP7
00002e96: ADD
00002e97: PUSH2 0x33ad
00002e9a: JUMP
00002e9b: JUMPDEST
00002e9c: PUSH2 0x2ea4
00002e9f: DUP2
00002ea0: PUSH2 0x33d9
00002ea3: JUMP
00002ea4: JUMPDEST
00002ea5: SWAP1
00002ea6: SWAP4
00002ea7: ADD
00002ea8: SWAP4
00002ea9: SWAP3
00002eaa: POP
00002eab: POP
00002eac: POP
00002ead: JUMP
00002eae: JUMPDEST
00002eaf: PUSH1 0x00
00002eb1: PUSH2 0x2ebb
00002eb4: PUSH1 0x26
00002eb6: DUP4
00002eb7: PUSH2 0x3364
00002eba: JUMP
00002ebb: JUMPDEST
00002ebc: PUSH32 0x4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061
00002edd: DUP2
00002ede: MSTORE
00002edf: PUSH6 0x646472657373
00002ee6: PUSH1 0xd0
00002ee8: SHL
00002ee9: PUSH1 0x20
00002eeb: DUP3
00002eec: ADD
00002eed: MSTORE
00002eee: PUSH1 0x40
00002ef0: ADD
00002ef1: SWAP3
00002ef2: SWAP2
00002ef3: POP
00002ef4: POP
00002ef5: JUMP
00002ef6: JUMPDEST
00002ef7: PUSH1 0x00
00002ef9: PUSH2 0x2f03
00002efc: PUSH1 0x1b
00002efe: DUP4
00002eff: PUSH2 0x3364
00002f02: JUMP
00002f03: JUMPDEST
00002f04: PUSH32 0x536166654d6174683a206164646974696f6e206f766572666c6f770000000000
00002f25: DUP2
00002f26: MSTORE
00002f27: PUSH1 0x20
00002f29: ADD
00002f2a: SWAP3
00002f2b: SWAP2
00002f2c: POP
00002f2d: POP
00002f2e: JUMP
00002f2f: JUMPDEST
00002f30: PUSH1 0x00
00002f32: PUSH2 0x2f3c
00002f35: PUSH1 0x0d
00002f37: DUP4
00002f38: PUSH2 0x3364
00002f3b: JUMP
00002f3c: JUMPDEST
00002f3d: PUSH13 0x11549497d31253525517d3d555
00002f4b: PUSH1 0x9a
00002f4d: SHL
00002f4e: DUP2
00002f4f: MSTORE
00002f50: PUSH1 0x20
00002f52: ADD
00002f53: SWAP3
00002f54: SWAP2
00002f55: POP
00002f56: POP
00002f57: JUMP
00002f58: JUMPDEST
00002f59: PUSH1 0x00
00002f5b: PUSH2 0x2f65
00002f5e: PUSH1 0x0c
00002f60: DUP4
00002f61: PUSH2 0x3364
00002f64: JUMP
00002f65: JUMPDEST
00002f66: PUSH12 0x22a9292fa624a6a4aa2fa4a7
00002f73: PUSH1 0xa1
00002f75: SHL
00002f76: DUP2
00002f77: MSTORE
00002f78: PUSH1 0x20
00002f7a: ADD
00002f7b: SWAP3
00002f7c: SWAP2
00002f7d: POP
00002f7e: POP
00002f7f: JUMP
00002f80: JUMPDEST
00002f81: PUSH1 0x00
00002f83: PUSH2 0x2f8d
00002f86: PUSH1 0x21
00002f88: DUP4
00002f89: PUSH2 0x3364
00002f8c: JUMP
00002f8d: JUMPDEST
00002f8e: PUSH32 0x536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f
00002faf: DUP2
00002fb0: MSTORE
00002fb1: PUSH1 0x77
00002fb3: PUSH1 0xf8
00002fb5: SHL
00002fb6: PUSH1 0x20
00002fb8: DUP3
00002fb9: ADD
00002fba: MSTORE
00002fbb: PUSH1 0x40
00002fbd: ADD
00002fbe: SWAP3
00002fbf: SWAP2
00002fc0: POP
00002fc1: POP
00002fc2: JUMP
00002fc3: JUMPDEST
00002fc4: PUSH1 0x00
00002fc6: PUSH2 0x2fd0
00002fc9: PUSH1 0x20
00002fcb: DUP4
00002fcc: PUSH2 0x3364
00002fcf: JUMP
00002fd0: JUMPDEST
00002fd1: PUSH32 0x4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572
00002ff2: DUP2
00002ff3: MSTORE
00002ff4: PUSH1 0x20
00002ff6: ADD
00002ff7: SWAP3
00002ff8: SWAP2
00002ff9: POP
00002ffa: POP
00002ffb: JUMP
00002ffc: JUMPDEST
00002ffd: PUSH1 0x00
00002fff: PUSH2 0x3009
00003002: PUSH1 0x0e
00003004: DUP4
00003005: PUSH2 0x3364
00003008: JUMP
00003009: JUMPDEST
0000300a: PUSH14 0x11549497d1551217d19052531151
00003019: PUSH1 0x92
0000301b: SHL
0000301c: DUP2
0000301d: MSTORE
0000301e: PUSH1 0x20
00003020: ADD
00003021: SWAP3
00003022: SWAP2
00003023: POP
00003024: POP
00003025: JUMP
00003026: JUMPDEST
00003027: PUSH1 0x00
00003029: PUSH2 0x1e44
0000302c: PUSH1 0x00
0000302e: DUP4
0000302f: PUSH2 0x1d23
00003032: JUMP
00003033: JUMPDEST
00003034: PUSH1 0x00
00003036: PUSH2 0x3040
00003039: PUSH1 0x13
0000303b: DUP4
0000303c: PUSH2 0x3364
0000303f: JUMP
00003040: JUMPDEST
00003041: PUSH19 0x11549497d514905394d1915497d19052531151
00003055: PUSH1 0x6a
00003057: SHL
00003058: DUP2
00003059: MSTORE
0000305a: PUSH1 0x20
0000305c: ADD
0000305d: SWAP3
0000305e: SWAP2
0000305f: POP
00003060: POP
00003061: JUMP
00003062: JUMPDEST
00003063: DUP1
00003064: MLOAD
00003065: PUSH1 0xc0
00003067: DUP4
00003068: ADD
00003069: SWAP1
0000306a: PUSH2 0x3073
0000306d: DUP5
0000306e: DUP3
0000306f: PUSH2 0x2e02
00003072: JUMP
00003073: JUMPDEST
00003074: POP
00003075: PUSH1 0x20
00003077: DUP3
00003078: ADD
00003079: MLOAD
0000307a: PUSH2 0x3086
0000307d: PUSH1 0x20
0000307f: DUP6
00003080: ADD
00003081: DUP3
00003082: PUSH2 0x2e02
00003085: JUMP
00003086: JUMPDEST
00003087: POP
00003088: PUSH1 0x40
0000308a: DUP3
0000308b: ADD
0000308c: MLOAD
0000308d: PUSH2 0x3099
00003090: PUSH1 0x40
00003092: DUP6
00003093: ADD
00003094: DUP3
00003095: PUSH2 0x2e02
00003098: JUMP
00003099: JUMPDEST
0000309a: POP
0000309b: PUSH1 0x60
0000309d: DUP3
0000309e: ADD
0000309f: MLOAD
000030a0: PUSH2 0x30ac
000030a3: PUSH1 0x60
000030a5: DUP6
000030a6: ADD
000030a7: DUP3
000030a8: PUSH2 0x30d8
000030ab: JUMP
000030ac: JUMPDEST
000030ad: POP
000030ae: PUSH1 0x80
000030b0: DUP3
000030b1: ADD
000030b2: MLOAD
000030b3: PUSH2 0x30bf
000030b6: PUSH1 0x80
000030b8: DUP6
000030b9: ADD
000030ba: DUP3
000030bb: PUSH2 0x30d8
000030be: JUMP
000030bf: JUMPDEST
000030c0: POP
000030c1: PUSH1 0xa0
000030c3: DUP3
000030c4: ADD
000030c5: MLOAD
000030c6: PUSH2 0x30d2
000030c9: PUSH1 0xa0
000030cb: DUP6
000030cc: ADD
000030cd: DUP3
000030ce: PUSH2 0x30d8
000030d1: JUMP
000030d2: JUMPDEST
000030d3: POP
000030d4: POP
000030d5: POP
000030d6: POP
000030d7: JUMP
000030d8: JUMPDEST
000030d9: PUSH2 0x2dfc
000030dc: DUP2
000030dd: PUSH2 0x3394
000030e0: JUMP
000030e1: JUMPDEST
000030e2: PUSH1 0x00
000030e4: PUSH2 0x1e44
000030e7: DUP3
000030e8: PUSH2 0x3026
000030eb: JUMP
000030ec: JUMPDEST
000030ed: PUSH1 0x20
000030ef: DUP2
000030f0: ADD
000030f1: PUSH2 0x1e44
000030f4: DUP3
000030f5: DUP5
000030f6: PUSH2 0x2e02
000030f9: JUMP
000030fa: JUMPDEST
000030fb: PUSH1 0x20
000030fd: DUP2
000030fe: ADD
000030ff: PUSH2 0x1e44
00003102: DUP3
00003103: DUP5
00003104: PUSH2 0x2df3
00003107: JUMP
00003108: JUMPDEST
00003109: PUSH1 0x40
0000310b: DUP2
0000310c: ADD
0000310d: PUSH2 0x3116
00003110: DUP3
00003111: DUP6
00003112: PUSH2 0x2df3
00003115: JUMP
00003116: JUMPDEST
00003117: PUSH2 0x1e6f
0000311a: PUSH1 0x20
0000311c: DUP4
0000311d: ADD
0000311e: DUP5
0000311f: PUSH2 0x2e02
00003122: JUMP
00003123: JUMPDEST
00003124: PUSH1 0x60
00003126: DUP2
00003127: ADD
00003128: PUSH2 0x3131
0000312b: DUP3
0000312c: DUP7
0000312d: PUSH2 0x2df3
00003130: JUMP
00003131: JUMPDEST
00003132: PUSH2 0x313e
00003135: PUSH1 0x20
00003137: DUP4
00003138: ADD
00003139: DUP6
0000313a: PUSH2 0x2df3
0000313d: JUMP
0000313e: JUMPDEST
0000313f: PUSH2 0x2779
00003142: PUSH1 0x40
00003144: DUP4
00003145: ADD
00003146: DUP5
00003147: PUSH2 0x30d8
0000314a: JUMP
0000314b: JUMPDEST
0000314c: PUSH1 0x40
0000314e: DUP2
0000314f: ADD
00003150: PUSH2 0x3159
00003153: DUP3
00003154: DUP6
00003155: PUSH2 0x2df3
00003158: JUMP
00003159: JUMPDEST
0000315a: PUSH2 0x1e6f
0000315d: PUSH1 0x20
0000315f: DUP4
00003160: ADD
00003161: DUP5
00003162: PUSH2 0x30d8
00003165: JUMP
00003166: JUMPDEST
00003167: PUSH1 0x60
00003169: DUP2
0000316a: ADD
0000316b: PUSH2 0x3174
0000316e: DUP3
0000316f: DUP7
00003170: PUSH2 0x2e02
00003173: JUMP
00003174: JUMPDEST
00003175: PUSH2 0x313e
00003178: PUSH1 0x20
0000317a: DUP4
0000317b: ADD
0000317c: DUP6
0000317d: PUSH2 0x2e02
00003180: JUMP
00003181: JUMPDEST
00003182: PUSH1 0x40
00003184: DUP2
00003185: ADD
00003186: PUSH2 0x318f
00003189: DUP3
0000318a: DUP6
0000318b: PUSH2 0x2e02
0000318e: JUMP
0000318f: JUMPDEST
00003190: PUSH2 0x1e6f
00003193: PUSH1 0x20
00003195: DUP4
00003196: ADD
00003197: DUP5
00003198: PUSH2 0x2e6d
0000319b: JUMP
0000319c: JUMPDEST
0000319d: PUSH1 0x40
0000319f: DUP2
000031a0: ADD
000031a1: PUSH2 0x3159
000031a4: DUP3
000031a5: DUP6
000031a6: PUSH2 0x2e02
000031a9: JUMP
000031aa: JUMPDEST
000031ab: PUSH1 0xa0
000031ad: DUP2
000031ae: ADD
000031af: PUSH2 0x31b8
000031b2: DUP3
000031b3: DUP9
000031b4: PUSH2 0x2e02
000031b7: JUMP
000031b8: JUMPDEST
000031b9: PUSH2 0x31c5
000031bc: PUSH1 0x20
000031be: DUP4
000031bf: ADD
000031c0: DUP8
000031c1: PUSH2 0x30d8
000031c4: JUMP
000031c5: JUMPDEST
000031c6: PUSH2 0x31d2
000031c9: PUSH1 0x40
000031cb: DUP4
000031cc: ADD
000031cd: DUP7
000031ce: PUSH2 0x2e02
000031d1: JUMP
000031d2: JUMPDEST
000031d3: PUSH2 0x31df
000031d6: PUSH1 0x60
000031d8: DUP4
000031d9: ADD
000031da: DUP6
000031db: PUSH2 0x30d8
000031de: JUMP
000031df: JUMPDEST
000031e0: PUSH2 0x31ec
000031e3: PUSH1 0x80
000031e5: DUP4
000031e6: ADD
000031e7: DUP5
000031e8: PUSH2 0x30d8
000031eb: JUMP
000031ec: JUMPDEST
000031ed: SWAP7
000031ee: SWAP6
000031ef: POP
000031f0: POP
000031f1: POP
000031f2: POP
000031f3: POP
000031f4: POP
000031f5: JUMP
000031f6: JUMPDEST
000031f7: PUSH1 0x40
000031f9: DUP1
000031fa: DUP3
000031fb: MSTORE
000031fc: DUP2
000031fd: ADD
000031fe: PUSH2 0x3207
00003201: DUP2
00003202: DUP6
00003203: PUSH2 0x2e0b
00003206: JUMP
00003207: JUMPDEST
00003208: SWAP1
00003209: POP
0000320a: PUSH2 0x1e6f
0000320d: PUSH1 0x20
0000320f: DUP4
00003210: ADD
00003211: DUP5
00003212: PUSH2 0x30d8
00003215: JUMP
00003216: JUMPDEST
00003217: PUSH1 0x20
00003219: DUP2
0000321a: ADD
0000321b: PUSH2 0x1e44
0000321e: DUP3
0000321f: DUP5
00003220: PUSH2 0x2e64
00003223: JUMP
00003224: JUMPDEST
00003225: PUSH1 0x20
00003227: DUP1
00003228: DUP3
00003229: MSTORE
0000322a: DUP2
0000322b: ADD
0000322c: PUSH2 0x1e6f
0000322f: DUP2
00003230: DUP5
00003231: PUSH2 0x2e76
00003234: JUMP
00003235: JUMPDEST
00003236: PUSH1 0x20
00003238: DUP1
00003239: DUP3
0000323a: MSTORE
0000323b: DUP2
0000323c: ADD
0000323d: PUSH2 0x1e44
00003240: DUP2
00003241: PUSH2 0x2eae
00003244: JUMP
00003245: JUMPDEST
00003246: PUSH1 0x20
00003248: DUP1
00003249: DUP3
0000324a: MSTORE
0000324b: DUP2
0000324c: ADD
0000324d: PUSH2 0x1e44
00003250: DUP2
00003251: PUSH2 0x2ef6
00003254: JUMP
00003255: JUMPDEST
00003256: PUSH1 0x20
00003258: DUP1
00003259: DUP3
0000325a: MSTORE
0000325b: DUP2
0000325c: ADD
0000325d: PUSH2 0x1e44
00003260: DUP2
00003261: PUSH2 0x2f2f
00003264: JUMP
00003265: JUMPDEST
00003266: PUSH1 0x20
00003268: DUP1
00003269: DUP3
0000326a: MSTORE
0000326b: DUP2
0000326c: ADD
0000326d: PUSH2 0x1e44
00003270: DUP2
00003271: PUSH2 0x2f58
00003274: JUMP
00003275: JUMPDEST
00003276: PUSH1 0x20
00003278: DUP1
00003279: DUP3
0000327a: MSTORE
0000327b: DUP2
0000327c: ADD
0000327d: PUSH2 0x1e44
00003280: DUP2
00003281: PUSH2 0x2f80
00003284: JUMP
00003285: JUMPDEST
00003286: PUSH1 0x20
00003288: DUP1
00003289: DUP3
0000328a: MSTORE
0000328b: DUP2
0000328c: ADD
0000328d: PUSH2 0x1e44
00003290: DUP2
00003291: PUSH2 0x2fc3
00003294: JUMP
00003295: JUMPDEST
00003296: PUSH1 0x20
00003298: DUP1
00003299: DUP3
0000329a: MSTORE
0000329b: DUP2
0000329c: ADD
0000329d: PUSH2 0x1e44
000032a0: DUP2
000032a1: PUSH2 0x2ffc
000032a4: JUMP
000032a5: JUMPDEST
000032a6: PUSH1 0x20
000032a8: DUP1
000032a9: DUP3
000032aa: MSTORE
000032ab: DUP2
000032ac: ADD
000032ad: PUSH2 0x1e44
000032b0: DUP2
000032b1: PUSH2 0x3033
000032b4: JUMP
000032b5: JUMPDEST
000032b6: PUSH1 0x20
000032b8: DUP2
000032b9: ADD
000032ba: PUSH2 0x1e44
000032bd: DUP3
000032be: DUP5
000032bf: PUSH2 0x30d8
000032c2: JUMP
000032c3: JUMPDEST
000032c4: PUSH1 0xc0
000032c6: DUP2
000032c7: ADD
000032c8: PUSH2 0x32d1
000032cb: DUP3
000032cc: DUP10
000032cd: PUSH2 0x30d8
000032d0: JUMP
000032d1: JUMPDEST
000032d2: PUSH2 0x32de
000032d5: PUSH1 0x20
000032d7: DUP4
000032d8: ADD
000032d9: DUP9
000032da: PUSH2 0x30d8
000032dd: JUMP
000032de: JUMPDEST
000032df: PUSH2 0x32eb
000032e2: PUSH1 0x40
000032e4: DUP4
000032e5: ADD
000032e6: DUP8
000032e7: PUSH2 0x30d8
000032ea: JUMP
000032eb: JUMPDEST
000032ec: PUSH2 0x32f8
000032ef: PUSH1 0x60
000032f1: DUP4
000032f2: ADD
000032f3: DUP7
000032f4: PUSH2 0x30d8
000032f7: JUMP
000032f8: JUMPDEST
000032f9: PUSH2 0x3305
000032fc: PUSH1 0x80
000032fe: DUP4
000032ff: ADD
00003300: DUP6
00003301: PUSH2 0x30d8
00003304: JUMP
00003305: JUMPDEST
00003306: PUSH2 0x02a9
00003309: PUSH1 0xa0
0000330b: DUP4
0000330c: ADD
0000330d: DUP5
0000330e: PUSH2 0x30d8
00003311: JUMP
00003312: JUMPDEST
00003313: PUSH1 0x40
00003315: MLOAD
00003316: DUP2
00003317: DUP2
00003318: ADD
00003319: PUSH8 0xffffffffffffffff
00003322: DUP2
00003323: GT
00003324: DUP3
00003325: DUP3
00003326: LT
00003327: OR
00003328: ISZERO
00003329: PUSH2 0x3331
0000332c: JUMPI
0000332d: PUSH1 0x00
0000332f: DUP1
00003330: REVERT
00003331: JUMPDEST
00003332: PUSH1 0x40
00003334: MSTORE
00003335: SWAP2
00003336: SWAP1
00003337: POP
00003338: JUMP
00003339: JUMPDEST
0000333a: PUSH1 0x00
0000333c: PUSH8 0xffffffffffffffff
00003345: DUP3
00003346: GT
00003347: ISZERO
00003348: PUSH2 0x3350
0000334b: JUMPI
0000334c: PUSH1 0x00
0000334e: DUP1
0000334f: REVERT
00003350: JUMPDEST
00003351: POP
00003352: PUSH1 0x20
00003354: SWAP1
00003355: DUP2
00003356: MUL
00003357: ADD
00003358: SWAP1
00003359: JUMP
0000335a: JUMPDEST
0000335b: PUSH1 0x20
0000335d: ADD
0000335e: SWAP1
0000335f: JUMP
00003360: JUMPDEST
00003361: MLOAD
00003362: SWAP1
00003363: JUMP
00003364: JUMPDEST
00003365: SWAP1
00003366: DUP2
00003367: MSTORE
00003368: PUSH1 0x20
0000336a: ADD
0000336b: SWAP1
0000336c: JUMP
0000336d: JUMPDEST
0000336e: PUSH1 0x00
00003370: PUSH2 0x1e44
00003373: DUP3
00003374: PUSH2 0x3388
00003377: JUMP
00003378: JUMPDEST
00003379: ISZERO
0000337a: ISZERO
0000337b: SWAP1
0000337c: JUMP
0000337d: JUMPDEST
0000337e: PUSH1 0x00
00003380: PUSH2 0x1e44
00003383: DUP3
00003384: PUSH2 0x336d
00003387: JUMP
00003388: JUMPDEST
00003389: PUSH1 0x01
0000338b: PUSH1 0x01
0000338d: PUSH1 0xa0
0000338f: SHL
00003390: SUB
00003391: AND
00003392: SWAP1
00003393: JUMP
00003394: JUMPDEST
00003395: SWAP1
00003396: JUMP
00003397: JUMPDEST
00003398: PUSH1 0x00
0000339a: PUSH2 0x1e44
0000339d: DUP3
0000339e: PUSH2 0x337d
000033a1: JUMP
000033a2: JUMPDEST
000033a3: PUSH1 0x00
000033a5: PUSH2 0x1e44
000033a8: DUP3
000033a9: PUSH2 0x3394
000033ac: JUMP
000033ad: JUMPDEST
000033ae: PUSH1 0x00
000033b0: JUMPDEST
000033b1: DUP4
000033b2: DUP2
000033b3: LT
000033b4: ISZERO
000033b5: PUSH2 0x33c8
000033b8: JUMPI
000033b9: DUP2
000033ba: DUP2
000033bb: ADD
000033bc: MLOAD
000033bd: DUP4
000033be: DUP3
000033bf: ADD
000033c0: MSTORE
000033c1: PUSH1 0x20
000033c3: ADD
000033c4: PUSH2 0x33b0
000033c7: JUMP
000033c8: JUMPDEST
000033c9: DUP4
000033ca: DUP2
000033cb: GT
000033cc: ISZERO
000033cd: PUSH2 0x30d2
000033d0: JUMPI
000033d1: POP
000033d2: POP
000033d3: PUSH1 0x00
000033d5: SWAP2
000033d6: ADD
000033d7: MSTORE
000033d8: JUMP
000033d9: JUMPDEST
000033da: PUSH1 0x1f
000033dc: ADD
000033dd: PUSH1 0x1f
000033df: NOT
000033e0: AND
000033e1: SWAP1
000033e2: JUMP
000033e3: JUMPDEST
000033e4: PUSH2 0x33ec
000033e7: DUP2
000033e8: PUSH2 0x336d
000033eb: JUMP
000033ec: JUMPDEST
000033ed: DUP2
000033ee: EQ
000033ef: PUSH2 0x1cff
000033f2: JUMPI
000033f3: PUSH1 0x00
000033f5: DUP1
000033f6: REVERT
000033f7: JUMPDEST
000033f8: PUSH2 0x33ec
000033fb: DUP2
000033fc: PUSH2 0x3378
000033ff: JUMP
00003400: JUMPDEST
00003401: PUSH2 0x33ec
00003404: DUP2
00003405: PUSH2 0x337d
00003408: JUMP
00003409: JUMPDEST
0000340a: PUSH2 0x33ec
0000340d: DUP2
0000340e: PUSH2 0x3394
00003411: JUMP
00003412: INVALID
00003413: LOG3
00003414: PUSH6 0x627a7a723158
0000341b: KECCAK256
0000341c: PUSH11 0x7e6caac398936eb953c1ac
00003428: SWAP7
00003429: UNKNOWN(0x2E)
0000342a: UNKNOWN(0xFB)
0000342b: UNKNOWN(0xE4)
0000342c: UNKNOWN(0x26)
0000342d: UNKNOWN(0x2C)
0000342e: PUSH24 0xbbec294e69ca633488f2701cb36c6578706572696d656e74
00003447: PUSH2 0x6cf5
0000344a: PUSH5 0x736f6c6343
00003450: STOP
00003451: SDIV
00003452: UNKNOWN(0x0C)
00003453: STOP
00003454: BLOCKHASH

Findings

validated = confirmed for call sinks; sink observed for others
Severity Category Tool Title Confidence Validated Confirmed Details
high upgradeability slither ExchangeProxy.transferAll(TokenInterface,uint256) (contracts/Contract.sol#775-788) sends eth to arbitrary user 85 no
view
evidence_json
{
    "impact": "High",
    "detector": "arbitrary-send-eth",
    "elements": [
        {
            "name": "transferAll",
            "type": "function",
            "source_mapping": {
                "lines": [
                    775,
                    776,
                    777,
                    778,
                    779,
                    780,
                    781,
                    782,
                    783,
                    784,
                    785,
                    786,
                    787,
                    788
                ],
                "start": 29576,
                "length": 426,
                "ending_column": 17,
                "is_dependency": false,
                "filename_short": "contracts/Contract.sol",
                "starting_column": 61,
                "filename_absolute": "/tmp/slither-ltu3tt7n/contracts/Contract.sol",
                "filename_relative": "contracts/Contract.sol"
            },
            "type_specific_fields": {
                "parent": {
                    "name": "ExchangeProxy",
                    "type": "contract",
                    "source_mapping": {
                        "lines": [
                            290,
                            291,
                            292,
                            293,
                            294,
                            295,
                            296,
                            297,
                            298,
                            299,
                            300,
                            301,
                            302,
                            303,
                            304,
                            305,
                            306,
                            307,
                            308,
                            309,
                            310,
                            311,
                            312,
                            313,
                            314,
                            315,
                            316,
                            317,
                            318,
                            319,
                            320,
                            321,
                            322,
                            323,
                            324,
                            325,
                            326,
                            327,
                            328,
                            329,
                            330,
                            331,
                            332,
                            333,
                            334,
                            335,
                            336,
                            337,
                            338,
                            339,
                            340,
                            341,
                            342,
                            343,
                            344,
                            345,
                            346,
                            347,
                            348,
                            349,
                            350,
                            351,
                            352,
                            353,
                            354,
                            355,
                            356,
                            357,
                            358,
                            359,
                            360,
                            361,
                            362,
                            363,
                            364,
                            365,
                            366,
                            367,
                            368,
                            369,
                            370,
                            371,
                            372,
                            373,
                            374,
                            375,
                            376,
                            377,
                            378,
                            379,
                            380,
                            381,
                            382,
                            383,
                            384,
                            385,
                            386,
                            387,
                            388,
                            389,
                            390,
                            391,
                            392,
                            393,
                            394,
                            395,
                            396,
                            397,
                            398,
                            399,
                            400,
                            401,
                            402,
                            403,
                            404,
                            405,
                            406,
                            407,
                            408,
                            409,
                            410,
                            411,
                            412,
                            413,
                            414,
                            415,
                            416,
                            417,
                            418,
                            419,
                            420,
                            421,
                            422,
                            423,
                            424,
                            425,
                            426,
                            427,
                            428,
                            429,
                            430,
                            431,
                            432,
                            433,
                            434,
                            435,
                            436,
                            437,
                            438,
                            439,
                            440,
                            441,
                            442,
                            443,
                            444,
                            445,
                            446,
                            447,
                            448,
                            449,
                            450,
                            451,
                            452,
                            453,
                            454,
                            455,
                            456,
                            457,
                            458,
                            459,
                            460,
                            461,
                            462,
                            463,
                            464,
                            465,
                            466,
                            467,
                            468,
                            469,
                            470,
                            471,
                            472,
                            473,
                            474,
                            475,
                            476,
                            477,
                            478,
                            479,
                            480,
                            481,
                            482,
                            483,
                            484,
                            485,
                            486,
                            487,
                            488,
                            489,
                            490,
                            491,
                            492,
                            493,
                            494,
                            495,
                            496,
                            497,
                            498,
                            499,
                            500,
                            501,
                            502,
                            503,
                            504,
                            505,
                            506,
                            507,
                            508,
                            509,
                            510,
                            511,
                            512,
                            513,
                            514,
                            515,
                            516,
                            517,
                            518,
                            519,
                            520,
                            521,
                            522,
                            523,
                            524,
                            525,
                            526,
                            527,
                            528,
                            529,
                            530,
                            531,
                            532,
                            533,
                            534,
                            535,
                            536,
                            537,
                            538,
                            539,
                            540,
                            541,
                            542,
                            543,
                            544,
                            545,
                            546,
                            547,
                            548,
                            549,
                            550,
                            551,
                            552,
                            553,
                            554,
                            555,
                            556,
                            557,
                            558,
                            559,
                            560,
                            561,
                            562,
                            563,
                            564,
                            565,
                            566,
                            567,
                            568,
                            569,
                            570,
                            571,
                            572,
                            573,
                            574,
                            575,
                            576,
                            577,
                            578,
                            579,
                            580,
                            581,
                            582,
                            583,
                            584,
                            585,
                            586,
                            587,
                            588,
                            589,
                            590,
                            591,
                            592,
                            593,
                            594,
                            595,
                            596,
                            597,
                            598,
                            599,
                            600,
                            601,
                            602,
                            603,
                            604,
                            605,
                            606,
                            607,
                            608,
                            609,
                            610,
                            611,
                            612,
                            613,
                            614,
                            615,
                            616,
                            617,
                            618,
                            619,
                            620,
                            621,
                            622,
                            623,
                            624,
                            625,
                            626,
                            627,
                            628,
                            629,
                            630,
                            631,
                            632,
                            633,
                            634,
                            635,
                            636,
                            637,
                            638,
                            639,
                            640,
                            641,
                            642,
                            643,
                            644,
                            645,
                            646,
                            647,
                            648,
                            649,
                            650,
                            651,
                            652,
                            653,
                            654,
                            655,
                            656,
                            657,
                            658,
                            659,
                            660,
                            661,
                            662,
                            663,
                            664,
                            665,
                            666,
                            667,
                            668,
                            669,
                            670,
                            671,
                            672,
                            673,
                            674,
                            675,
                            676,
                            677,
                            678,
                            679,
                            680,
                            681,
                            682,
                            683,
                            684,
                            685,
                            686,
                            687,
                            688,
                            689,
                            690,
                            691,
                            692,
                            693,
                            694,
                            695,
                            696,
                            697,
                            698,
                            699,
                            700,
                            701,
                            702,
                            703,
                            704,
                            705,
                            706,
                            707,
                            708,
                            709,
                            710,
                            711,
                            712,
                            713,
                            714,
                            715,
                            716,
                            717,
                            718,
                            719,
                            720,
                            721,
                            722,
                            723,
                            724,
                            725,
                            726,
                            727,
                            728,
                            729,
                            730,
                            731,
                            732,
                            733,
                            734,
                            735,
                            736,
                            737,
                            738,
                            739,
                            740,
                            741,
                            742,
                            743,
                            744,
                            745,
                            746,
                            747,
                            748,
                            749,
                            750,
                            751,
                            752,
                            753,
                            754,
                            755,
                            756,
                            757,
                            758,
                            759,
                            760,
                            761,
                            762,
                            763,
                            764,
                            765,
                            766,
                            767,
                            768,
                            769,
                            770,
                            771,
                            772,
                            773,
                            774,
                            775,
                            776,
                            777,
                            778,
                            779,
                            780,
                            781,
                            782,
                            783,
                            784,
                            785,
                            786,
                            787,
                            788,
                            789,
                            790,
                            791,
                            792,
                            793
                        ],
                        "start": 10626,
                        "length": 19540,
                        "ending_column": 43,
                        "is_dependency": false,
                        "filename_short": "contracts/Contract.sol",
                        "starting_column": 3,
                        "filename_absolute": "/tmp/slither-ltu3tt7n/contracts/Contract.sol",
                        "filename_relative": "contracts/Contract.sol"
                    }
                },
                "signature": "transferAll(TokenInterface,uint256)"
            }
        },
        {
            "name": "(xfer,None) = msg.sender.call.value(amount)()",
            "type": "node",
            "source_mapping": {
                "lines": [
                    782,
                    783,
                    784,
                    785
                ],
                "start": 29795,
                "length": 48,
                "ending_column": 23,
                "is_dependency": false,
                "filename_short": "contracts/Contract.sol",
                "starting_column": 13,
                "filename_absolute": "/tmp/slither-ltu3tt7n/contracts/Contract.sol",
                "filename_relative": "contracts/Contract.sol"
            },
            "type_specific_fields": {
                "parent": {
                    "name": "transferAll",
                    "type": "function",
                    "source_mapping": {
                        "lines": [
                            775,
                            776,
                            777,
                            778,
                            779,
                            780,
                            781,
                            782,
                            783,
                            784,
                            785,
                            786,
                            787,
                            788
                        ],
                        "start": 29576,
                        "length": 426,
                        "ending_column": 17,
                        "is_dependency": false,
                        "filename_short": "contracts/Contract.sol",
                        "starting_column": 61,
                        "filename_absolute": "/tmp/slither-ltu3tt7n/contracts/Contract.sol",
                        "filename_relative": "contracts/Contract.sol"
                    },
                    "type_specific_fields": {
                        "parent": {
                            "name": "ExchangeProxy",
                            "type": "contract",
                            "source_mapping": {
                                "lines": [
                                    290,
                                    291,
                                    292,
                                    293,
                                    294,
                                    295,
                                    296,
                                    297,
                                    298,
                                    299,
                                    300,
                                    301,
                                    302,
                                    303,
                                    304,
                                    305,
                                    306,
                                    307,
                                    308,
                                    309,
                                    310,
                                    311,
                                    312,
                                    313,
                                    314,
                                    315,
                                    316,
                                    317,
                                    318,
                                    319,
                                    320,
                                    321,
                                    322,
                                    323,
                                    324,
                                    325,
                                    326,
                                    327,
                                    328,
                                    329,
                                    330,
                                    331,
                                    332,
                                    333,
                                    334,
                                    335,
                                    336,
                                    337,
                                    338,
                                    339,
                                    340,
                                    341,
                                    342,
                                    343,
                                    344,
                                    345,
                                    346,
                                    347,
                                    348,
                                    349,
                                    350,
                                    351,
                                    352,
                                    353,
                                    354,
                                    355,
                                    356,
                                    357,
                                    358,
                                    359,
                                    360,
                                    361,
                                    362,
                                    363,
                                    364,
                                    365,
                                    366,
                                    367,
                                    368,
                                    369,
                                    370,
                                    371,
                                    372,
                                    373,
                                    374,
                                    375,
                                    376,
                                    377,
                                    378,
                                    379,
                                    380,
                                    381,
                                    382,
                                    383,
                                    384,
                                    385,
                                    386,
                                    387,
                                    388,
                                    389,
                                    390,
                                    391,
                                    392,
                                    393,
                                    394,
                                    395,
                                    396,
                                    397,
                                    398,
                                    399,
                                    400,
                                    401,
                                    402,
                                    403,
                                    404,
                                    405,
                                    406,
                                    407,
                                    408,
                                    409,
                                    410,
                                    411,
                                    412,
                                    413,
                                    414,
                                    415,
                                    416,
                                    417,
                                    418,
                                    419,
                                    420,
                                    421,
                                    422,
                                    423,
                                    424,
                                    425,
                                    426,
                                    427,
                                    428,
                                    429,
                                    430,
                                    431,
                                    432,
                                    433,
                                    434,
                                    435,
                                    436,
                                    437,
                                    438,
                                    439,
                                    440,
                                    441,
                                    442,
                                    443,
                                    444,
                                    445,
                                    446,
                                    447,
                                    448,
                                    449,
                                    450,
                                    451,
                                    452,
                                    453,
                                    454,
                                    455,
                                    456,
                                    457,
                                    458,
                                    459,
                                    460,
                                    461,
                                    462,
                                    463,
                                    464,
                                    465,
                                    466,
                                    467,
                                    468,
                                    469,
                                    470,
                                    471,
                                    472,
                                    473,
                                    474,
                                    475,
                                    476,
                                    477,
                                    478,
                                    479,
                                    480,
                                    481,
                                    482,
                                    483,
                                    484,
                                    485,
                                    486,
                                    487,
                                    488,
                                    489,
                                    490,
                                    491,
                                    492,
                                    493,
                                    494,
                                    495,
                                    496,
                                    497,
                                    498,
                                    499,
                                    500,
                                    501,
                                    502,
                                    503,
                                    504,
                                    505,
                                    506,
                                    507,
                                    508,
                                    509,
                                    510,
                                    511,
                                    512,
                                    513,
                                    514,
                                    515,
                                    516,
                                    517,
                                    518,
                                    519,
                                    520,
                                    521,
                                    522,
                                    523,
                                    524,
                                    525,
                                    526,
                                    527,
                                    528,
                                    529,
                                    530,
                                    531,
                                    532,
                                    533,
                                    534,
                                    535,
                                    536,
                                    537,
                                    538,
                                    539,
                                    540,
                                    541,
                                    542,
                                    543,
                                    544,
                                    545,
                                    546,
                                    547,
                                    548,
                                    549,
                                    550,
                                    551,
                                    552,
                                    553,
                                    554,
                                    555,
                                    556,
                                    557,
                                    558,
                                    559,
                                    560,
                                    561,
                                    562,
                                    563,
                                    564,
                                    565,
                                    566,
                                    567,
                                    568,
                                    569,
                                    570,
                                    571,
                                    572,
                                    573,
                                    574,
                                    575,
                                    576,
                                    577,
                                    578,
                                    579,
                                    580,
                                    581,
                                    582,
                                    583,
                                    584,
                                    585,
                                    586,
                                    587,
                                    588,
                                    589,
                                    590,
                                    591,
                                    592,
                                    593,
                                    594,
                                    595,
                                    596,
                                    597,
                                    598,
                                    599,
                                    600,
                                    601,
                                    602,
                                    603,
                                    604,
                                    605,
                                    606,
                                    607,
                                    608,
                                    609,
                                    610,
                                    611,
                                    612,
                                    613,
                                    614,
                                    615,
                                    616,
                                    617,
                                    618,
                                    619,
                                    620,
                                    621,
                                    622,
                                    623,
                                    624,
                                    625,
                                    626,
                                    627,
                                    628,
                                    629,
                                    630,
                                    631,
                                    632,
                                    633,
                                    634,
                                    635,
                                    636,
                                    637,
                                    638,
                                    639,
                                    640,
                                    641,
                                    642,
                                    643,
                                    644,
                                    645,
                                    646,
                                    647,
                                    648,
                                    649,
                                    650,
                                    651,
                                    652,
                                    653,
                                    654,
                                    655,
                                    656,
                                    657,
                                    658,
                                    659,
                                    660,
                                    661,
                                    662,
                                    663,
                                    664,
                                    665,
                                    666,
                                    667,
                                    668,
                                    669,
                                    670,
                                    671,
                                    672,
                                    673,
                                    674,
                                    675,
                                    676,
                                    677,
                                    678,
                                    679,
                                    680,
                                    681,
                                    682,
                                    683,
                                    684,
                                    685,
                                    686,
                                    687,
                                    688,
                                    689,
                                    690,
                                    691,
                                    692,
                                    693,
                                    694,
                                    695,
                                    696,
                                    697,
                                    698,
                                    699,
                                    700,
                                    701,
                                    702,
                                    703,
                                    704,
                                    705,
                                    706,
                                    707,
                                    708,
                                    709,
                                    710,
                                    711,
                                    712,
                                    713,
                                    714,
                                    715,
                                    716,
                                    717,
                                    718,
                                    719,
                                    720,
                                    721,
                                    722,
                                    723,
                                    724,
                                    725,
                                    726,
                                    727,
                                    728,
                                    729,
                                    730,
                                    731,
                                    732,
                                    733,
                                    734,
                                    735,
                                    736,
                                    737,
                                    738,
                                    739,
                                    740,
                                    741,
                                    742,
                                    743,
                                    744,
                                    745,
                                    746,
                                    747,
                                    748,
                                    749,
                                    750,
                                    751,
                                    752,
                                    753,
                                    754,
                                    755,
                                    756,
                                    757,
                                    758,
                                    759,
                                    760,
                                    761,
                                    762,
                                    763,
                                    764,
                                    765,
                                    766,
                                    767,
                                    768,
                                    769,
                                    770,
                                    771,
                                    772,
                                    773,
                                    774,
                                    775,
                                    776,
                                    777,
                                    778,
                                    779,
                                    780,
                                    781,
                                    782,
                                    783,
                                    784,
                                    785,
                                    786,
                                    787,
                                    788,
                                    789,
                                    790,
                                    791,
                                    792,
                                    793
                                ],
                                "start": 10626,
                                "length": 19540,
                                "ending_column": 43,
                                "is_dependency": false,
                                "filename_short": "contracts/Contract.sol",
                                "starting_column": 3,
                                "filename_absolute": "/tmp/slither-ltu3tt7n/contracts/Contract.sol",
                                "filename_relative": "contracts/Contract.sol"
                            }
                        },
                        "signature": "transferAll(TokenInterface,uint256)"
                    }
                }
            }
        }
    ],
    "locations": [
        {
            "file": "contracts/Contract.sol",
            "name": "transferAll",
            "type": "function",
            "lines": [
                775,
                776,
                777,
                778,
                779,
                780,
                781,
                782,
                783,
                784,
                785,
                786,
                787,
                788
            ]
        },
        {
            "file": "contracts/Contract.sol",
            "name": "(xfer,None) = msg.sender.call.value(amount)()",
            "type": "node",
            "lines": [
                782,
                783,
                784,
                785
            ]
        }
    ],
    "description": "ExchangeProxy.transferAll(TokenInterface,uint256) (contracts/Contract.sol#775-788) sends eth to arbitrary user\n\tDangerous calls:\n\t- (xfer,None) = msg.sender.call.value(amount)() (contracts/Contract.sol#782-785)"
}
high other detector Untrusted CALL target/value reachable 60 no no
view
trace_id: 0xc5c66efd14f413db10aa3b8209e4d116a30acdc296cfd89630400269bc9d8dcb
call_targets: 0x3e66b66fd1d0b02fda6c811da9e0547970db2f21
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0xc5c66efd14f413db10aa3b8209e4d116a30acdc296cfd89630400269bc9d8dcb",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0x3e66b66fd1d0b02fda6c811da9e0547970db2f21"
    ],
    "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": "0xa91ee0dc",
            "selector": "0xa91ee0dc",
            "calldata_variants": [
                "0xa91ee0dc",
                "0xa91ee0dc0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xb40f39ee",
            "selector": "0xb40f39ee",
            "calldata_variants": [
                "0xb40f39ee",
                "0xb40f39ee0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xe2b39746",
            "selector": "0xe2b39746",
            "calldata_variants": [
                "0xe2b39746",
                "0xe2b397460000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xf2fde38b",
            "selector": "0xf2fde38b",
            "calldata_variants": [
                "0xf2fde38b",
                "0xf2fde38b0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x8743ad58",
            "selector": "0x8743ad58",
            "calldata_variants": [
                "0x8743ad58",
                "0x8743ad580000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x8da5cb5b",
            "selector": "0x8da5cb5b",
            "calldata_variants": [
                "0x8da5cb5b",
                "0x8da5cb5b0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x8f32d59b",
            "selector": "0x8f32d59b",
            "calldata_variants": [
                "0x8f32d59b",
                "0x8f32d59b0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x21b0eb85",
            "selector": "0x21b0eb85",
            "calldata_variants": [
                "0x21b0eb85",
                "0x21b0eb850000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 972,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 1105,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 1261,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "call_count": 20,
    "guards_detected": [],
    "untrusted_call_count": 20
}
high other detector ETH value transfer possible 55 no no
view
trace_id: 0xc5c66efd14f413db10aa3b8209e4d116a30acdc296cfd89630400269bc9d8dcb
call_targets: 0x3e66b66fd1d0b02fda6c811da9e0547970db2f21
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0xc5c66efd14f413db10aa3b8209e4d116a30acdc296cfd89630400269bc9d8dcb",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0x3e66b66fd1d0b02fda6c811da9e0547970db2f21"
    ],
    "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": "0xa91ee0dc",
            "selector": "0xa91ee0dc",
            "calldata_variants": [
                "0xa91ee0dc",
                "0xa91ee0dc0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xb40f39ee",
            "selector": "0xb40f39ee",
            "calldata_variants": [
                "0xb40f39ee",
                "0xb40f39ee0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xe2b39746",
            "selector": "0xe2b39746",
            "calldata_variants": [
                "0xe2b39746",
                "0xe2b397460000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0xf2fde38b",
            "selector": "0xf2fde38b",
            "calldata_variants": [
                "0xf2fde38b",
                "0xf2fde38b0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x8743ad58",
            "selector": "0x8743ad58",
            "calldata_variants": [
                "0x8743ad58",
                "0x8743ad580000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x8da5cb5b",
            "selector": "0x8da5cb5b",
            "calldata_variants": [
                "0x8da5cb5b",
                "0x8da5cb5b0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x8f32d59b",
            "selector": "0x8f32d59b",
            "calldata_variants": [
                "0x8f32d59b",
                "0x8f32d59b0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x21b0eb85",
            "selector": "0x21b0eb85",
            "calldata_variants": [
                "0x21b0eb85",
                "0x21b0eb850000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 972,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 1105,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 1261,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "eth_value_calls": 20,
    "guards_detected": []
}
medium access_control codex Unlimited approvals to user-supplied pools allow token drain 75 no
view
evidence_json
{
    "evidence": "multihopBatchSwapExactOut grants uint(-1) approvals to pool addresses supplied in swapSequences without validation or revocation.",
    "locations": [
        "contracts/Contract.sol:510",
        "contracts/Contract.sol:524"
    ],
    "recommendation": "Avoid unlimited approvals to arbitrary pools. Approve only the exact amount needed for each swap and reset to zero afterward, or enforce that pools are from a trusted registry/whitelist before granting allowances.",
    "exploit_scenario": "A caller supplies a malicious pool address in multihopBatchSwapExactOut. The proxy approves uint(-1) for tokenIn/secondSwap.tokenIn, then calls the pool. The malicious pool uses transferFrom to pull all of those tokens from the proxy (not just the intended swap amount) and returns a small tokenAmountIn so the maxTotalAmountIn check passes, stealing the caller\u2019s funds. The unlimited approval also persists for later drains if the proxy ever holds those tokens again."
}
low access_control codex Public swap functions can sweep any ERC20 balance held by the proxy 65 no
view
evidence_json
{
    "evidence": "Exact-in/out functions transfer the full token balance via getBalance regardless of swaps length.",
    "locations": [
        "contracts/Contract.sol:369",
        "contracts/Contract.sol:405",
        "contracts/Contract.sol:453",
        "contracts/Contract.sol:541"
    ],
    "recommendation": "Require non-empty swap arrays and only transfer the exact expected amounts (not full balances). Consider adding an owner-only token rescue function instead of letting arbitrary callers sweep balances.",
    "exploit_scenario": "If any ERC20 tokens are accidentally sent to the proxy (or left from partial/multi-hop flows), any caller can pass empty swap arrays and set tokenIn/tokenOut to that token. The functions still call transferAll with getBalance, transferring the entire token balance to the caller, enabling theft of stranded funds."
}
info other cast Heavy EXTCODE*/BALANCE usage 55 no
view
evidence_json
{
    "notes": "frequent external code or balance checks; may indicate introspection or validation logic",
    "ext_balance_count": 41
}
info other cast Heavy CALL-family usage 55 no
view
evidence_json
{
    "notes": "large number of CALL/CALLCODE/STATICCALL opcodes; review external call patterns",
    "call_family_count": 42
}