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

Analysis Run

37397440-b316-4f0a-852b-52ac16b6f89e

complete
Chain ID
1
Address
Block Number
Created
Mon, Dec 29, 2025 6:46 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
Bytecode only
Review Backing
Not yet
Best current signal
Untrusted DELEGATECALL target reachable
crit 0 high 0 proxy context implementation known
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
30452 report.consolidate complete 1 / 1 3 months ago
103571 artifact.fetch complete 1 / 3 1 week ago
103572 tool.cast_disasm complete 1 / 3 1 week ago
103573 analysis.bundle complete 1 / 3 1 week ago
103574 capability.graph complete 1 / 3 1 week ago
103575 detector.run complete 1 / 3 1 week ago
103576 validation.fork complete 1 / 3 1 week ago

Artifact

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

Slither

tool.slither

No slither job recorded yet.

Codex

report.consolidate
Job Status
complete
Attempts
1 / 1
Findings
0
No findings?
yes
Summary
Reviewed the runtime bytecode bundle; no concrete, explainable vulnerabilities could be confirmed from bytecode/disassembly patterns alone.
View stderr
[codex:1185006] OpenAI Codex v0.77.0 (research preview)
[codex:1185006] --------
[codex:1185006] workdir: /tmp/codex-multi-qmdb0_vy
[codex:1185006] model: gpt-5.2-codex
[codex:1185006] provider: openai
[codex:1185006] approval: never
[codex:1185006] sandbox: read-only
[codex:1185006] reasoning effort: xhigh
[codex:1185006] reasoning summaries: auto
[codex:1185006] session id: 019b68d4-dcdd-7712-8021-72ab541277e2
[codex:1185006] --------
[codex:1185006] user
[codex:1185006] You are a security auditor. You are given EVM runtime bytecode (and possibly a disassembly) for a contract with NO verified source.
[codex:1185006] This is best-effort. Do not hallucinate: only flag issues when there's a concrete, explainable angle from bytecode/disasm patterns.
[codex:1185006] 
[codex:1185006] You MUST read the full `BYTECODE_BUNDLE.txt` before concluding.
[codex:1185006] 
[codex:1185006] Output MUST be valid JSON matching the provided schema.
[codex:1185006] - If you cannot identify a concrete issue from bytecode/disasm alone: set no_findings=true and findings=[].
[codex:1185006] - Otherwise: include findings with severity/category/title/evidence and point locations to BYTECODE_BUNDLE.txt line ranges when possible.
[codex:1185006] 
[codex:1185006] Output constraints (IMPORTANT):
[codex:1185006] - severity MUST be exactly one of: info, low, medium, high, critical (lowercase).
[codex:1185006] - category MUST be exactly one of: access_control, reentrancy, math, oracle, upgradeability, auth, other.
[codex:1185006] mcp startup: no servers
[codex:1185006] 
[codex:1185006] thinking
[codex:1185006] **Reading file contents**
[codex:1185006] exec
[codex:1185006] /bin/bash -lc ls in /tmp/codex-multi-qmdb0_vy succeeded in 5ms:
[codex:1185006] BYTECODE_BUNDLE.txt
[codex:1185006] codex-output-schema.json
[codex:1185006] exec
[codex:1185006] /bin/bash -lc 'cat BYTECODE_BUNDLE.txt' in /tmp/codex-multi-qmdb0_vy succeeded in 5ms:
[codex:1185006] Runtime bytecode bundle for best-effort auditing.
[codex:1185006] Note: without verified source, conclusions are low-confidence unless a concrete pattern is visible.
[codex:1185006] 
[codex:1185006] FILE: runtime_bytecode.hex
[codex:1185006] 0x6080604052600436101561001d575b366111595761001b612047565b005b60003560e01c806306fdde031461019d5780630b3dc35414610198578063150b7a02146101935780631626ba7e1461018e57806329f8b17414610189578063333daf921461018457806334fcd5be1461017f5780633659cfe61461017a5780633a871cdd146101755780633e1b08121461017057806351166ba01461016b578063519454471461016657806354fd4d501461016157806355b14f501461015c57806357b750471461015757806384b0196e1461015257806388e7fd061461014d578063b0d691fe14610148578063b68df16d14610143578063bc197c811461013e578063d087d28814610139578063d1f5789414610134578063d54162211461012f5763f23a6e610361000e576110c7565b611035565b610f99565b610f1a565b610e8b565b610dae565b610d69565b610d34565b610c8c565b610c55565b610b6f565b610b1b565b610a16565b61094d565b610889565b610847565b6107a1565b6106be565b610639565b610491565b61043e565b6103b1565b610332565b6102fe565b60009103126101ad57565b600080fd5b634e487b7160e01b600052604160045260246000fd5b6001600160401b0381116101db57604052565b6101b2565b606081019081106001600160401b038211176101db57604052565b608081019081106001600160401b038211176101db57604052565b604081019081106001600160401b038211176101db57604052565b60c081019081106001600160401b038211176101db57604052565b90601f801991011681019081106001600160401b038211176101db57604052565b6040519061027a826101fb565b565b6040519061016082018281106001600160401b038211176101db57604052565b604051906102a982610216565b600682526512d95c9b995b60d21b6020830152565b919082519283825260005b8481106102ea575050826000602080949584010152601f8019910116010190565b6020818301810151848301820152016102c9565b346101ad5760003660031901126101ad5761032e61031a61029c565b6040519182916020835260208301906102be565b0390f35b346101ad5760003660031901126101ad5760206000805160206121718339815191525460501c6040519060018060a01b03168152f35b6001600160a01b038116036101ad57565b359061027a82610368565b9181601f840112156101ad578235916001600160401b0383116101ad57602083818601950101116101ad57565b346101ad5760803660031901126101ad576103cd600435610368565b6103d8602435610368565b6064356001600160401b0381116101ad576103f7903690600401610384565b5050604051630a85bd0160e11b8152602090f35b9060406003198301126101ad5760043591602435906001600160401b0382116101ad5761043a91600401610384565b9091565b346101ad5760206104576104513661040b565b91611c33565b6040516001600160e01b03199091168152f35b600435906001600160e01b0319821682036101ad57565b65ffffffffffff8116036101ad57565b60c03660031901126101ad576104a561046a565b602435906104b282610368565b604435906104bf82610368565b6064356104cb81610481565b608435936104d885610481565b60a4356001600160401b0381116101ad576104f7903690600401610384565b9590946001600160a01b0393337f0000000000000000000000005ff137d4b0fdcd49dca30c7cf57e578a026d2789861614158061062f575b61061d5784926105646105909261055561054761026d565b65ffffffffffff9094168452565b65ffffffffffff166020830152565b6001600160a01b03851660408201526001600160a01b038316606082015261058b87611121565b611803565b1693843b156101ad576040519063064acaab60e11b825281806105ba6000998a94600484016118b6565b038183895af18015610618576105ff575b5016906001600160e01b0319167fed03d2572564284398470d3f266a693e29ddfff3eba45fc06c5e91013d3213538480a480f35b8061060c610612926101c8565b806101a2565b386105cb565b61154d565b604051637046c88d60e01b8152600490fd5b503033141561052f565b346101ad57602061065261064c3661040b565b91611f8c565b604051908152f35b9291926001600160401b0382116101db5760405191610683601f8201601f19166020018461024c565b8294818452818301116101ad578281602093846000960137010152565b9080601f830112156101ad578160206106bb9335910161065a565b90565b6020806003193601126101ad576001600160401b036004358181116101ad57366023820112156101ad578060040135918083116101db578260051b9060409081519461070c8785018761024c565b85528585019160248094860101943686116101ad57848101935b8685106107365761001b8861121c565b84358481116101ad578201606060231982360301126101ad5783519161075b836101e0565b8782013561076881610368565b835260448201358b8401526064820135928684116101ad576107928c94938a8695369201016106a0565b86820152815201940193610726565b60203660031901126101ad576004356107b981610368565b6001600160a01b0390337f0000000000000000000000005ff137d4b0fdcd49dca30c7cf57e578a026d2789831614158061083d575b61061d57807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b600080a2005b50303314156107ee565b6003196060368201126101ad57600435906001600160401b0382116101ad576101609082360301126101ad576106526020916044359060243590600401611559565b346101ad5760203660031901126101ad576004356001600160c01b038116908190036101ad57604051631aab3f0d60e11b815230600482015260248101919091526020816044817f0000000000000000000000005ff137d4b0fdcd49dca30c7cf57e578a026d27896001600160a01b03165afa80156106185761032e9160009161091f575b506040519081529081906020820190565b610940915060203d8111610946575b610938818361024c565b81019061146e565b3861090e565b503d61092e565b346101ad5760203660031901126101ad5761032e61099261096c61046a565b6000606060405161097c816101fb565b8281528260208201528260408201520152611121565b6040519061099f826101fb565b805465ffffffffffff80821684528160301c16602084015260601c60408301526001808060a01b03910154166060820152604051918291829190916060608082019365ffffffffffff80825116845260208201511660208401528160018060a01b0391826040820151166040860152015116910152565b60803660031901126101ad57600435610a2e81610368565b6044356001600160401b0381116101ad57610a4d9036906004016106a0565b9060643560028110156101ad57337f0000000000000000000000005ff137d4b0fdcd49dca30c7cf57e578a026d27896001600160a01b0316141580610af0575b80610adb575b61061d57610aa0816111d2565b610ac9576000828193926020839451920190602435905af13d82803e15610ac5573d90f35b3d90fd5b6040516367ce775960e01b8152600490fd5b50610aeb610ae7611d8c565b1590565b610a93565b5030331415610a8d565b60405190610b0782610216565b6005825264302e322e3360d81b6020830152565b346101ad5760003660031901126101ad5761032e61031a610afa565b9060406003198301126101ad57600435610b5081610368565b91602435906001600160401b0382116101ad5761043a91600401610384565b610b7836610b37565b90916001600160a01b03337f0000000000000000000000005ff137d4b0fdcd49dca30c7cf57e578a026d27898216141580610c4b575b61061d57806000805160206121718339815191525460501c1691610bd181612078565b1692836040519360009586947fa35f5cdc5fbabb614b4cd5064ce5543f43dc8fab0e4da41255230eb8aba2531c8680a3813b15610c47578385610c25819593829463064acaab60e11b8452600484016118b6565b03925af1801561061857610c37575080f35b8061060c610c44926101c8565b80f35b8380fd5b5030331415610bae565b346101ad5760003660031901126101ad5760206000805160206121718339815191525460e01b6040519063ffffffff60e01b168152f35b346101ad5760003660031901126101ad57610ce2610ca861029c565b610cb0610afa565b90604051928392600f60f81b8452610cd460209360e08587015260e08601906102be565b9084820360408601526102be565b90466060840152306080840152600060a084015282820360c08401528060605192838152019160809160005b828110610d1d57505050500390f35b835185528695509381019392810192600101610d0e565b346101ad5760003660031901126101ad5760206000805160206121718339815191525465ffffffffffff60405191831c168152f35b346101ad5760003660031901126101ad576040517f0000000000000000000000005ff137d4b0fdcd49dca30c7cf57e578a026d27896001600160a01b03168152602090f35b60403660031901126101ad57600435610dc681610368565b6024356001600160401b0381116101ad57610de59036906004016106a0565b90337f0000000000000000000000005ff137d4b0fdcd49dca30c7cf57e578a026d27896001600160a01b0316141580610e51575b80610e40575b61061d5760008281939260208394519201905af43d82803e15610ac5573d90f35b50610e4c610ae7611d8c565b610e1f565b5030331415610e19565b9181601f840112156101ad578235916001600160401b0383116101ad576020808501948460051b0101116101ad57565b346101ad5760a03660031901126101ad57610ea7600435610368565b610eb2602435610368565b6001600160401b036044358181116101ad57610ed2903690600401610e5b565b50506064358181116101ad57610eec903690600401610e5b565b50506084359081116101ad57610f06903690600401610384565b505060405163bc197c8160e01b8152602090f35b346101ad5760003660031901126101ad57604051631aab3f0d60e11b8152306004820152600060248201526020816044817f0000000000000000000000005ff137d4b0fdcd49dca30c7cf57e578a026d27896001600160a01b03165afa80156106185761032e9160009161091f57506040519081529081906020820190565b610fa236610b37565b60008051602061217183398151915254919290916001600160a01b03919060501c821661102457610fd281612078565b1691823b156101ad57611007926000928360405180968195829463064acaab60e11b8452602060048501526024840191611895565b03925af180156106185761101757005b8061060c61001b926101c8565b60405162dc149f60e41b8152600490fd5b60203660031901126101ad5761104961046a565b337f0000000000000000000000005ff137d4b0fdcd49dca30c7cf57e578a026d27896001600160a01b03161415806110bd575b61061d5760008051602061217183398151915290815469ffffffffffff000000004260201b169160e01c9069ffffffffffffffffffff191617179055600080f35b503033141561107c565b346101ad5760a03660031901126101ad576110e3600435610368565b6110ee602435610368565b6084356001600160401b0381116101ad5761110d903690600401610384565b505060405163f23a6e6160e01b8152602090f35b63ffffffff60e01b166000527f439ffe7df606b78489639bc0b827913bd09e1246fa6802968a5b3694c53e0dda602052604060002090565b600061116f81356001600160e01b031916611121565b5460601c337f0000000000000000000000005ff137d4b0fdcd49dca30c7cf57e578a026d27896001600160a01b03161415806111c3575b61061d57818091368280378136915af43d82803e15610ac5573d90f35b506111cc611d8c565b156111a6565b600211156111dc57565b634e487b7160e01b600052602160045260246000fd5b80518210156112065760209160051b010190565b634e487b7160e01b600052603260045260246000fd5b337f0000000000000000000000005ff137d4b0fdcd49dca30c7cf57e578a026d27896001600160a01b03161415806112a9575b61061d5780519060005b82811061126557505050565b60008061127283856111f2565b5180516001600160a01b03166020916040838201519101519283519301915af13d6000803e156112a457600101611259565b3d6000fd5b506112b5610ae7611d8c565b61124f565b906004116101ad5790600490565b90929192836004116101ad5783116101ad57600401916003190190565b906024116101ad5760100190601490565b906058116101ad5760380190602090565b906024116101ad5760040190602090565b906038116101ad5760240190601490565b90600a116101ad5760040190600690565b906010116101ad57600a0190600690565b909392938483116101ad5784116101ad578101920390565b6001600160e01b0319903581811693926004811061138057505050565b60040360031b82901b16169150565b9190610160838203126101ad576113a461027c565b926113ae81610379565b8452602081013560208501526040810135916001600160401b03928381116101ad57816113dc9184016106a0565b604086015260608201358381116101ad57816113f99184016106a0565b60608601526080820135608086015260a082013560a086015260c082013560c086015260e082013560e08601526101008083013590860152610120808301358481116101ad578261144b9185016106a0565b9086015261014092838301359081116101ad5761146892016106a0565b90830152565b908160209103126101ad575190565b606080825282516001600160a01b031690820152919392916040916115439060208101516080840152838101516114c2610160918260a08701526101c08601906102be565b906115306114e2606085015193605f1994858983030160c08a01526102be565b608085015160e088015260a085015192610100938489015260c08601519061012091828a015260e08701519461014095868b01528701519089015285015184888303016101808901526102be565b92015190848303016101a08501526102be565b9460208201520152565b6040513d6000823e3d90fd5b6001600160a01b039392917f0000000000000000000000005ff137d4b0fdcd49dca30c7cf57e578a026d278985163303611777576004948535928361014481013501918760248401930135946115b86115b287866112ba565b90611363565b926001600160e01b0319808516918215611754576115d790369061138f565b946115f16000805160206121718339815191525460e01b90565b1616156116095760405163fc2f51c560e01b81528a90fd5b97989697600160e01b8103611703575090602095966116936116616116486116436115b287606460009901350160248782013591016112ba565b611121565b6001810154909a9081906001600160a01b0316986112c8565b995460d081901b6001600160d01b03191660709190911b65ffffffffffff60a01b1617995b8b6116f5575b369161065a565b6101408501526116b7604051998a9788968794633a871cdd60e01b8652850161147d565b0393165af1908115610618576106bb926000926116d5575b506120ee565b6116ee91925060203d811161094657610938818361024c565b90386116cf565b348080808f335af15061168c565b9095939190600160e11b036117475761173d611693946000936117386115b28a606460209c01350160248d82013591016112ba565b6118c7565b9199929691611686565b5050505050505050600190565b9697505050505050506106bb9394508215611ec0573434343486335af150611ec0565b604051636b31ba1560e11b8152600490fd5b6bffffffffffffffffffffffff1990358181169392601481106117ab57505050565b60140360031b82901b16169150565b3590602081106117c8575090565b6000199060200360031b1b1690565b6001600160d01b031990358181169392600681106117f457505050565b60060360031b82901b16169150565b81516020830151604084015160309190911b6bffffffffffff0000000000001665ffffffffffff9290921691909117606091821b6bffffffffffffffffffffffff19161782559091015160019190910180546001600160a01b0319166001600160a01b0392909216919091179055565b90602091808252806000848401376000828201840152601f01601f1916010190565b908060209392818452848401376000828201840152601f01601f1916010190565b9160206106bb938181520191611895565b91906118d382826112e5565b6118dc91611789565b60601c936118ea83836112f6565b6118f3916117ba565b60588301607882019485836058019061190d91838861134b565b611916916117ba565b6119208287611307565b611929916117ba565b6119338388611318565b61193c91611789565b60601c61194a36878761065a565b8051602091820120604080517f3ce406685c1b3551d706d85a68afdaa49ac4e07b451ad9b8ff8b58c3ee9641769381019384526001600160e01b03198e169181019190915260608101949094526001600160a01b0392909216608084015260a080840192909252908252906119c060c08261024c565b5190206119cc90611b1f565b90840196607888016119df91848961134b565b906119e992611f8c565b6119f38287611307565b6001600160a01b031991611a0791906117ba565b16611a11916120ee565b966078868801019682036077190195611a2a8382611329565b611a33916117d7565b60d01c92611a41818361133a565b611a4a916117d7565b60d01c91611a588282611318565b611a6191611789565b60601c91611a6e916112e5565b611a7791611789565b60601c91611a8361026d565b65ffffffffffff909516855265ffffffffffff1660208501526001600160a01b031660408401526001600160a01b03166060830152611ac190611121565b90611acb91611803565b6001600160a01b03871691823b156101ad57611b01926000928360405180968195829463064acaab60e11b8452600484016118b6565b03925af1801561061857611b125750565b8061060c61027a926101c8565b7f470bb15be946f544f872ed597995173a7016edfe194aac72bd042df5455e97697f000000000000000000000000d3f582f6b4814e989ee8e96bc3175320b5a540ab30147f000000000000000000000000000000000000000000000000000000000000000146141615611bac575b671901000000000000600052601a52603a526042601820906000603a52565b5060a06040517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81527f32ba20807d2fff2dbb34e0bcfa82982565bef566d4c0c633dc57b700b81c342760208201527f3524473bf9d21abe45b7f656e2f1380e9335b9d346503f037e8275c56c697796604082015246606082015230608082015220611b8d565b91611cf291611cf793611cdc611cea611c4a61029c565b611c52610afa565b906020815191012090602081519101206040519060208201927f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8452604083015260608201524660808201523060a082015260a08152611cb181610231565b51902092604051928391602083019586909160429261190160f01b8352600283015260228201520190565b03601f19810183528261024c565b519020611f8c565b6120c5565b9065ffffffffffff928342911611159283611d44575b505081611d32575b5015611d2657630b135d3f60e11b90565b6001600160e01b031990565b6001600160a01b031615905038611d15565b429116101591503880611d0d565b908160209103126101ad575180151581036101ad5790565b6001600160a01b0390911681526040602082018190526106bb92910190611873565b611d963633611ff4565b611ebb57611daf6000356001600160e01b031916611121565b6001810154611dce906001600160a01b03165b6001600160a01b031690565b906001600160a01b03821615908115611e7f575b8115611e54575b5015611df55750600090565b60206040518092639ea9bd5960e01b82528180611e16363360048401611d6a565b03915afa90811561061857600091611e2c575090565b6106bb915060203d8111611e4d575b611e45818361024c565b810190611d52565b503d611e3b565b54611e6e915065ffffffffffff165b65ffffffffffff1690565b65ffffffffffff4291161138611de9565b905065ffffffffffff611e9f611e63835465ffffffffffff9060301c1690565b168015159081611eb1575b5090611de2565b9050421138611eaa565b600190565b9091611ecc368361138f565b610140928381013590601e19813603018212156101ad5701938435946001600160401b0386116101ad576020019385360385136101ad57611f1661168c87611f5e986020986112c8565b908301526000611f40611dc26000805160206121718339815191525460501c60018060a01b031690565b9260405196879586948593633a871cdd60e01b85526004850161147d565b03925af190811561061857600091611f74575090565b6106bb915060203d811161094657610938818361024c565b600080516020612171833981519152546040805163199ed7c960e11b8152600481019390935260248301529092602092849260501c6001600160a01b03169183918291611fde91604484019190611895565b03915afa90811561061857600091611f74575090565b6000805160206121718339815191525460408051639ea9bd5960e01b81526001600160a01b039384166004820152602481019190915292602092849260501c169082908190611e16906044830190611873565b7f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f8852587460408051338152346020820152a1565b60008051602061217183398151915280547fffff0000000000000000000000000000000000000000ffffffffffffffffffff1660509290921b600160501b600160f01b0316919091179055565b8065ffffffffffff91828160a01c169283156001146120e6575b5060d01c92565b9250386120df565b8082186001600160a01b031615600114612109575050600190565b65ffffffffffff60a01b8181169265ffffffffffff60a01b1992831692811691908415612167575b81168015612160575b848110908518028085189414612158575b5081811190821802181790565b92503861214b565b508061213a565b9350809361213156fe439ffe7df606b78489639bc0b827913bd09e1246fa6802968a5b3694c53e0dd9
[codex:1185006] 
[codex:1185006] thinking
[codex:1185006] **Analyzing bytecode for vulnerabilities**
[codex:1185006] exec
[codex:1185006] /bin/bash -lc 'nl -ba BYTECODE_BUNDLE.txt' in /tmp/codex-multi-qmdb0_vy succeeded in 6ms:
[codex:1185006]      1	Runtime bytecode bundle for best-effort auditing.
[codex:1185006]      2	Note: without verified source, conclusions are low-confidence unless a concrete pattern is visible.
[codex:1185006]      3	
[codex:1185006]      4	FILE: runtime_bytecode.hex
[codex:1185006]      5	0x6080604052600436101561001d575b366111595761001b612047565b005b60003560e01c806306fdde031461019d5780630b3dc35414610198578063150b7a02146101935780631626ba7e1461018e57806329f8b17414610189578063333daf921461018457806334fcd5be1461017f5780633659cfe61461017a5780633a871cdd146101755780633e1b08121461017057806351166ba01461016b578063519454471461016657806354fd4d501461016157806355b14f501461015c57806357b750471461015757806384b0196e1461015257806388e7fd061461014d578063b0d691fe14610148578063b68df16d14610143578063bc197c811461013e578063d087d28814610139578063d1f5789414610134578063d54162211461012f5763f23a6e610361000e576110c7565b611035565b610f99565b610f1a565b610e8b565b610dae565b610d69565b610d34565b610c8c565b610c55565b610b6f565b610b1b565b610a16565b61094d565b610889565b610847565b6107a1565b6106be565b610639565b610491565b61043e565b6103b1565b610332565b6102fe565b60009103126101ad57565b600080fd5b634e487b7160e01b600052604160045260246000fd5b6001600160401b0381116101db57604052565b6101b2565b606081019081106001600160401b038211176101db57604052565b608081019081106001600160401b038211176101db57604052565b604081019081106001600160401b038211176101db57604052565b60c081019081106001600160401b038211176101db57604052565b90601f801991011681019081106001600160401b038211176101db57604052565b6040519061027a826101fb565b565b6040519061016082018281106001600160401b038211176101db57604052565b604051906102a982610216565b600682526512d95c9b995b60d21b6020830152565b919082519283825260005b8481106102ea575050826000602080949584010152601f8019910116010190565b6020818301810151848301820152016102c9565b346101ad5760003660031901126101ad5761032e61031a61029c565b6040519182916020835260208301906102be565b0390f35b346101ad5760003660031901126101ad5760206000805160206121718339815191525460501c6040519060018060a01b03168152f35b6001600160a01b038116036101ad57565b359061027a82610368565b9181601f840112156101ad578235916001600160401b0383116101ad57602083818601950101116101ad57565b346101ad5760803660031901126101ad576103cd600435610368565b6103d8602435610368565b6064356001600160401b0381116101ad576103f7903690600401610384565b5050604051630a85bd0160e11b8152602090f35b9060406003198301126101ad5760043591602435906001600160401b0382116101ad5761043a91600401610384565b9091565b346101ad5760206104576104513661040b565b91611c33565b6040516001600160e01b03199091168152f35b600435906001600160e01b0319821682036101ad57565b65ffffffffffff8116036101ad57565b60c03660031901126101ad576104a561046a565b602435906104b282610368565b604435906104bf82610368565b6064356104cb81610481565b608435936104d885610481565b60a4356001600160401b0381116101ad576104f7903690600401610384565b9590946001600160a01b0393337f0000000000000000000000005ff137d4b0fdcd49dca30c7cf57e578a026d2789861614158061062f575b61061d5784926105646105909261055561054761026d565b65ffffffffffff9094168452565b65ffffffffffff166020830152565b6001600160a01b03851660408201526001600160a01b038316606082015261058b87611121565b611803565b1693843b156101ad576040519063064acaab60e11b825281806105ba6000998a94600484016118b6565b038183895af18015610618576105ff575b5016906001600160e01b0319167fed03d2572564284398470d3f266a693e29ddfff3eba45fc06c5e91013d3213538480a480f35b8061060c610612926101c8565b806101a2565b386105cb565b61154d565b604051637046c88d60e01b8152600490fd5b503033141561052f565b346101ad57602061065261064c3661040b565b91611f8c565b604051908152f35b9291926001600160401b0382116101db5760405191610683601f8201601f19166020018461024c565b8294818452818301116101ad578281602093846000960137010152565b9080601f830112156101ad578160206106bb9335910161065a565b90565b6020806003193601126101ad576001600160401b036004358181116101ad57366023820112156101ad578060040135918083116101db578260051b9060409081519461070c8785018761024c565b85528585019160248094860101943686116101ad57848101935b8685106107365761001b8861121c565b84358481116101ad578201606060231982360301126101ad5783519161075b836101e0565b8782013561076881610368565b835260448201358b8401526064820135928684116101ad576107928c94938a8695369201016106a0565b86820152815201940193610726565b60203660031901126101ad576004356107b981610368565b6001600160a01b0390337f0000000000000000000000005ff137d4b0fdcd49dca30c7cf57e578a026d2789831614158061083d575b61061d57807f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc55167fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b600080a2005b50303314156107ee565b6003196060368201126101ad57600435906001600160401b0382116101ad576101609082360301126101ad576106526020916044359060243590600401611559565b346101ad5760203660031901126101ad576004356001600160c01b038116908190036101ad57604051631aab3f0d60e11b815230600482015260248101919091526020816044817f0000000000000000000000005ff137d4b0fdcd49dca30c7cf57e578a026d27896001600160a01b03165afa80156106185761032e9160009161091f575b506040519081529081906020820190565b610940915060203d8111610946575b610938818361024c565b81019061146e565b3861090e565b503d61092e565b346101ad5760203660031901126101ad5761032e61099261096c61046a565b6000606060405161097c816101fb565b8281528260208201528260408201520152611121565b6040519061099f826101fb565b805465ffffffffffff80821684528160301c16602084015260601c60408301526001808060a01b03910154166060820152604051918291829190916060608082019365ffffffffffff80825116845260208201511660208401528160018060a01b0391826040820151166040860152015116910152565b60803660031901126101ad57600435610a2e81610368565b6044356001600160401b0381116101ad57610a4d9036906004016106a0565b9060643560028110156101ad57337f0000000000000000000000005ff137d4b0fdcd49dca30c7cf57e578a026d27896001600160a01b0316141580610af0575b80610adb575b61061d57610aa0816111d2565b610ac9576000828193926020839451920190602435905af13d82803e15610ac5573d90f35b3d90fd5b6040516367ce775960e01b8152600490fd5b50610aeb610ae7611d8c565b1590565b610a93565b5030331415610a8d565b60405190610b0782610216565b6005825264302e322e3360d81b6020830152565b346101ad5760003660031901126101ad5761032e61031a610afa565b9060406003198301126101ad57600435610b5081610368565b91602435906001600160401b0382116101ad5761043a91600401610384565b610b7836610b37565b90916001600160a01b03337f0000000000000000000000005ff137d4b0fdcd49dca30c7cf57e578a026d27898216141580610c4b575b61061d57806000805160206121718339815191525460501c1691610bd181612078565b1692836040519360009586947fa35f5cdc5fbabb614b4cd5064ce5543f43dc8fab0e4da41255230eb8aba2531c8680a3813b15610c47578385610c25819593829463064acaab60e11b8452600484016118b6565b03925af1801561061857610c37575080f35b8061060c610c44926101c8565b80f35b8380fd5b5030331415610bae565b346101ad5760003660031901126101ad5760206000805160206121718339815191525460e01b6040519063ffffffff60e01b168152f35b346101ad5760003660031901126101ad57610ce2610ca861029c565b610cb0610afa565b90604051928392600f60f81b8452610cd460209360e08587015260e08601906102be565b9084820360408601526102be565b90466060840152306080840152600060a084015282820360c08401528060605192838152019160809160005b828110610d1d57505050500390f35b835185528695509381019392810192600101610d0e565b346101ad5760003660031901126101ad5760206000805160206121718339815191525465ffffffffffff60405191831c168152f35b346101ad5760003660031901126101ad576040517f0000000000000000000000005ff137d4b0fdcd49dca30c7cf57e578a026d27896001600160a01b03168152602090f35b60403660031901126101ad57600435610dc681610368565b6024356001600160401b0381116101ad57610de59036906004016106a0565b90337f0000000000000000000000005ff137d4b0fdcd49dca30c7cf57e578a026d27896001600160a01b0316141580610e51575b80610e40575b61061d5760008281939260208394519201905af43d82803e15610ac5573d90f35b50610e4c610ae7611d8c565b610e1f565b5030331415610e19565b9181601f840112156101ad578235916001600160401b0383116101ad576020808501948460051b0101116101ad57565b346101ad5760a03660031901126101ad57610ea7600435610368565b610eb2602435610368565b6001600160401b036044358181116101ad57610ed2903690600401610e5b565b50506064358181116101ad57610eec903690600401610e5b565b50506084359081116101ad57610f06903690600401610384565b505060405163bc197c8160e01b8152602090f35b346101ad5760003660031901126101ad57604051631aab3f0d60e11b8152306004820152600060248201526020816044817f0000000000000000000000005ff137d4b0fdcd49dca30c7cf57e578a026d27896001600160a01b03165afa80156106185761032e9160009161091f57506040519081529081906020820190565b610fa236610b37565b60008051602061217183398151915254919290916001600160a01b03919060501c821661102457610fd281612078565b1691823b156101ad57611007926000928360405180968195829463064acaab60e11b8452602060048501526024840191611895565b03925af180156106185761101757005b8061060c61001b926101c8565b60405162dc149f60e41b8152600490fd5b60203660031901126101ad5761104961046a565b337f0000000000000000000000005ff137d4b0fdcd49dca30c7cf57e578a026d27896001600160a01b03161415806110bd575b61061d5760008051602061217183398151915290815469ffffffffffff000000004260201b169160e01c9069ffffffffffffffffffff191617179055600080f35b503033141561107c565b346101ad5760a03660031901126101ad576110e3600435610368565b6110ee602435610368565b6084356001600160401b0381116101ad5761110d903690600401610384565b505060405163f23a6e6160e01b8152602090f35b63ffffffff60e01b166000527f439ffe7df606b78489639bc0b827913bd09e1246fa6802968a5b3694c53e0dda602052604060002090565b600061116f81356001600160e01b031916611121565b5460601c337f0000000000000000000000005ff137d4b0fdcd49dca30c7cf57e578a026d27896001600160a01b03161415806111c3575b61061d57818091368280378136915af43d82803e15610ac5573d90f35b506111cc611d8c565b156111a6565b600211156111dc57565b634e487b7160e01b600052602160045260246000fd5b80518210156112065760209160051b010190565b634e487b7160e01b600052603260045260246000fd5b337f0000000000000000000000005ff137d4b0fdcd49dca30c7cf57e578a026d27896001600160a01b03161415806112a9575b61061d5780519060005b82811061126557505050565b60008061127283856111f2565b5180516001600160a01b03166020916040838201519101519283519301915af13d6000803e156112a457600101611259565b3d6000fd5b506112b5610ae7611d8c565b61124f565b906004116101ad5790600490565b90929192836004116101ad5783116101ad57600401916003190190565b906024116101ad5760100190601490565b906058116101ad5760380190602090565b906024116101ad5760040190602090565b906038116101ad5760240190601490565b90600a116101ad5760040190600690565b906010116101ad57600a0190600690565b909392938483116101ad5784116101ad578101920390565b6001600160e01b0319903581811693926004811061138057505050565b60040360031b82901b16169150565b9190610160838203126101ad576113a461027c565b926113ae81610379565b8452602081013560208501526040810135916001600160401b03928381116101ad57816113dc9184016106a0565b604086015260608201358381116101ad57816113f99184016106a0565b60608601526080820135608086015260a082013560a086015260c082013560c086015260e082013560e08601526101008083013590860152610120808301358481116101ad578261144b9185016106a0565b9086015261014092838301359081116101ad5761146892016106a0565b90830152565b908160209103126101ad575190565b606080825282516001600160a01b031690820152919392916040916115439060208101516080840152838101516114c2610160918260a08701526101c08601906102be565b906115306114e2606085015193605f1994858983030160c08a01526102be565b608085015160e088015260a085015192610100938489015260c08601519061012091828a015260e08701519461014095868b01528701519089015285015184888303016101808901526102be565b92015190848303016101a08501526102be565b9460208201520152565b6040513d6000823e3d90fd5b6001600160a01b039392917f0000000000000000000000005ff137d4b0fdcd49dca30c7cf57e578a026d278985163303611777576004948535928361014481013501918760248401930135946115b86115b287866112ba565b90611363565b926001600160e01b0319808516918215611754576115d790369061138f565b946115f16000805160206121718339815191525460e01b90565b1616156116095760405163fc2f51c560e01b81528a90fd5b97989697600160e01b8103611703575090602095966116936116616116486116436115b287606460009901350160248782013591016112ba565b611121565b6001810154909a9081906001600160a01b0316986112c8565b995460d081901b6001600160d01b03191660709190911b65ffffffffffff60a01b1617995b8b6116f5575b369161065a565b6101408501526116b7604051998a9788968794633a871cdd60e01b8652850161147d565b0393165af1908115610618576106bb926000926116d5575b506120ee565b6116ee91925060203d811161094657610938818361024c565b90386116cf565b348080808f335af15061168c565b9095939190600160e11b036117475761173d611693946000936117386115b28a606460209c01350160248d82013591016112ba565b6118c7565b9199929691611686565b5050505050505050600190565b9697505050505050506106bb9394508215611ec0573434343486335af150611ec0565b604051636b31ba1560e11b8152600490fd5b6bffffffffffffffffffffffff1990358181169392601481106117ab57505050565b60140360031b82901b16169150565b3590602081106117c8575090565b6000199060200360031b1b1690565b6001600160d01b031990358181169392600681106117f457505050565b60060360031b82901b16169150565b81516020830151604084015160309190911b6bffffffffffff0000000000001665ffffffffffff9290921691909117606091821b6bffffffffffffffffffffffff19161782559091015160019190910180546001600160a01b0319166001600160a01b0392909216919091179055565b90602091808252806000848401376000828201840152601f01601f1916010190565b908060209392818452848401376000828201840152601f01601f1916010190565b9160206106bb938181520191611895565b91906118d382826112e5565b6118dc91611789565b60601c936118ea83836112f6565b6118f3916117ba565b60588301607882019485836058019061190d91838861134b565b611916916117ba565b6119208287611307565b611929916117ba565b6119338388611318565b61193c91611789565b60601c61194a36878761065a565b8051602091820120604080517f3ce406685c1b3551d706d85a68afdaa49ac4e07b451ad9b8ff8b58c3ee9641769381019384526001600160e01b03198e169181019190915260608101949094526001600160a01b0392909216608084015260a080840192909252908252906119c060c08261024c565b5190206119cc90611b1f565b90840196607888016119df91848961134b565b906119e992611f8c565b6119f38287611307565b6001600160a01b031991611a0791906117ba565b16611a11916120ee565b966078868801019682036077190195611a2a8382611329565b611a33916117d7565b60d01c92611a41818361133a565b611a4a916117d7565b60d01c91611a588282611318565b611a6191611789565b60601c91611a6e916112e5565b611a7791611789565b60601c91611a8361026d565b65ffffffffffff909516855265ffffffffffff1660208501526001600160a01b031660408401526001600160a01b03166060830152611ac190611121565b90611acb91611803565b6001600160a01b03871691823b156101ad57611b01926000928360405180968195829463064acaab60e11b8452600484016118b6565b03925af1801561061857611b125750565b8061060c61027a926101c8565b7f470bb15be946f544f872ed597995173a7016edfe194aac72bd042df5455e97697f000000000000000000000000d3f582f6b4814e989ee8e96bc3175320b5a540ab30147f000000000000000000000000000000000000000000000000000000000000000146141615611bac575b671901000000000000600052601a52603a526042601820906000603a52565b5060a06040517f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f81527f32ba20807d2fff2dbb34e0bcfa82982565bef566d4c0c633dc57b700b81c342760208201527f3524473bf9d21abe45b7f656e2f1380e9335b9d346503f037e8275c56c697796604082015246606082015230608082015220611b8d565b91611cf291611cf793611cdc611cea611c4a61029c565b611c52610afa565b906020815191012090602081519101206040519060208201927f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f8452604083015260608201524660808201523060a082015260a08152611cb181610231565b51902092604051928391602083019586909160429261190160f01b8352600283015260228201520190565b03601f19810183528261024c565b519020611f8c565b6120c5565b9065ffffffffffff928342911611159283611d44575b505081611d32575b5015611d2657630b135d3f60e11b90565b6001600160e01b031990565b6001600160a01b031615905038611d15565b429116101591503880611d0d565b908160209103126101ad575180151581036101ad5790565b6001600160a01b0390911681526040602082018190526106bb92910190611873565b611d963633611ff4565b611ebb57611daf6000356001600160e01b031916611121565b6001810154611dce906001600160a01b03165b6001600160a01b031690565b906001600160a01b03821615908115611e7f575b8115611e54575b5015611df55750600090565b60206040518092639ea9bd5960e01b82528180611e16363360048401611d6a565b03915afa90811561061857600091611e2c575090565b6106bb915060203d8111611e4d575b611e45818361024c565b810190611d52565b503d611e3b565b54611e6e915065ffffffffffff165b65ffffffffffff1690565b65ffffffffffff4291161138611de9565b905065ffffffffffff611e9f611e63835465ffffffffffff9060301c1690565b168015159081611eb1575b5090611de2565b9050421138611eaa565b600190565b9091611ecc368361138f565b610140928381013590601e19813603018212156101ad5701938435946001600160401b0386116101ad576020019385360385136101ad57611f1661168c87611f5e986020986112c8565b908301526000611f40611dc26000805160206121718339815191525460501c60018060a01b031690565b9260405196879586948593633a871cdd60e01b85526004850161147d565b03925af190811561061857600091611f74575090565b6106bb915060203d811161094657610938818361024c565b600080516020612171833981519152546040805163199ed7c960e11b8152600481019390935260248301529092602092849260501c6001600160a01b03169183918291611fde91604484019190611895565b03915afa90811561061857600091611f74575090565b6000805160206121718339815191525460408051639ea9bd5960e01b81526001600160a01b039384166004820152602481019190915292602092849260501c169082908190611e16906044830190611873565b7f88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f8852587460408051338152346020820152a1565b60008051602061217183398151915280547fffff0000000000000000000000000000000000000000ffffffffffffffffffff1660509290921b600160501b600160f01b0316919091179055565b8065ffffffffffff91828160a01c169283156001146120e6575b5060d01c92565b9250386120df565b8082186001600160a01b031615600114612109575050600190565b65ffffffffffff60a01b8181169265ffffffffffff60a01b1992831692811691908415612167575b81168015612160575b848110908518028085189414612158575b5081811190821802181790565b92503861214b565b508061213a565b9350809361213156fe439ffe7df606b78489639bc0b827913bd09e1246fa6802968a5b3694c53e0dd9
[codex:1185006] 
[codex:1185006] thinking
[codex:1185006] **Analyzing upgradeable contract bytecode**
[codex:1185006] 
[codex:1185006] I'm parsing the bytecode to identify function selectors, especially UUPS upgrade functions like `upgradeTo`, and examining if access control checks like `CALLER == owner` are present around upgrade logic; I'll disassemble from function offsets to look for concrete security issues while avoiding guesses.
[codex:1185006] exec
[codex:1185006] /bin/bash -lc "python - <<'PY'
[codex:1185006] from binascii import unhexlify
[codex:1185006] import sys
[codex:1185006] hexdata = open('/tmp/codex-multi-qmdb0_vy/BYTECODE_BUNDLE.txt').read().split('0x',1)[1].strip()
[codex:1185006] # remove trailing newline maybe, but there might be other text? ensure only hex at last line
[codex:1185006] hexdata = ''.join(ch for ch in hexdata if ch.strip())
[codex:1185006] # keep only hex chars
[codex:1185006] hexdata = ''.join([c for c in hexdata if c in '0123456789abcdefABCDEF'])
[codex:1185006] code = bytes.fromhex(hexdata)
[codex:1185006] 
[codex:1185006] # opcode map
[codex:1185006] opmap = {i: f'PUSH{i-0x5f}' for i in range(0x60,0x80)}
[codex:1185006] for i, name in [
[codex:1185006]     (0x00,'STOP'),(0x01,'ADD'),(0x02,'MUL'),(0x03,'SUB'),(0x04,'DIV'),(0x05,'SDIV'),(0x06,'MOD'),(0x07,'SMOD'),(0x08,'ADDMOD'),(0x09,'MULMOD'),(0x0a,'EXP'),(0x0b,'SIGNEXTEND'),
[codex:1185006]     (0x10,'LT'),(0x11,'GT'),(0x12,'SLT'),(0x13,'SGT'),(0x14,'EQ'),(0x15,'ISZERO'),(0x16,'AND'),(0x17,'OR'),(0x18,'XOR'),(0x19,'NOT'),(0x1a,'BYTE'),(0x1b,'SHL'),(0x1c,'SHR'),(0x1d,'SAR'),
[codex:1185006]     (0x20,'SHA3'),
[codex:1185006]     (0x30,'ADDRESS'),(0x31,'BALANCE'),(0x32,'ORIGIN'),(0x33,'CALLER'),(0x34,'CALLVALUE'),(0x35,'CALLDATALOAD'),(0x36,'CALLDATASIZE'),(0x37,'CALLDATACOPY'),(0x38,'CODESIZE'),(0x39,'CODECOPY'),(0x3a,'GASPRICE'),(0x3b,'EXTCODESIZE'),(0x3c,'EXTCODECOPY'),(0x3d,'RETURNDATASIZE'),(0x3e,'RETURNDATACOPY'),(0x3f,'EXTCODEHASH'),
[codex:1185006]     (0x40,'BLOCKHASH'),(0x41,'COINBASE'),(0x42,'TIMESTAMP'),(0x43,'NUMBER'),(0x44,'DIFFICULTY'),(0x45,'GASLIMIT'),(0x46,'CHAINID'),(0x47,'SELFBALANCE'),(0x48,'BASEFEE'),
[codex:1185006]     (0x50,'POP'),(0x51,'MLOAD'),(0x52,'MSTORE'),(0x53,'MSTORE8'),(0x54,'SLOAD'),(0x55,'SSTORE'),(0x56,'JUMP'),(0x57,'JUMPI'),(0x58,'PC'),(0x59,'MSIZE'),(0x5a,'GAS'),(0x5b,'JUMPDEST'),
[codex:1185006]     (0x60,'PUSH1'),
[codex:1185006]     (0x80,'DUP1'),(0x81,'DUP2'),(0x82,'DUP3'),(0x83,'DUP4'),(0x84,'DUP5'),(0x85,'DUP6'),(0x86,'DUP7'),(0x87,'DUP8'),(0x88,'DUP9'),(0x89,'DUP10'),(0x8a,'DUP11'),(0x8b,'DUP12'),(0x8c,'DUP13'),(0x8d,'DUP14'),(0x8e,'DUP15'),(0x8f,'DUP16'),
[codex:1185006]     (0x90,'SWAP1'),(0x91,'SWAP2'),(0x92,'SWAP3'),(0x93,'SWAP4'),(0x94,'SWAP5'),(0x95,'SWAP6'),(0x96,'SWAP7'),(0x97,'SWAP8'),(0x98,'SWAP9'),(0x99,'SWAP10'),(0x9a,'SWAP11'),(0x9b,'SWAP12'),(0x9c,'SWAP13'),(0x9d,'SWAP14'),(0x9e,'SWAP15'),(0x9f,'SWAP16'),
[codex:1185006]     (0xa0,'LOG0'),(0xa1,'LOG1'),(0xa2,'LOG2'),(0xa3,'LOG3'),(0xa4,'LOG4'),
[codex:1185006]     (0xf0,'CREATE'),(0xf1,'CALL'),(0xf2,'CALLCODE'),(0xf3,'RETURN'),(0xf4,'DELEGATECALL'),(0xf5,'CREATE2'),(0xfa,'STATICCALL'),(0xfd,'REVERT'),(0xfe,'INVALID'),(0xff,'SELFDESTRUCT'),
[codex:1185006] ]:
[codex:1185006]     opmap[i]=name
[codex:1185006] 
[codex:1185006] # disasm with addresses
[codex:1185006] ops=[]
[codex:1185006] i=0
[codex:1185006] while i<len(code):
[codex:1185006]     op=code[i]
[codex:1185006]     name=opmap.get(op, f'OP_{op:02x}')
[codex:1185006]     if 0x60<=op<=0x7f:
[codex:1185006]         n=op-0x5f
[codex:1185006]         data=code[i+1:i+1+n]
[codex:1185006]         ops.append((i,name,data))
[codex:1185006]         i+=1+n
[codex:1185006]     else:
[codex:1185006]         ops.append((i,name,None))
[codex:1185006]         i+=1
[codex:1185006] 
[codex:1185006] # helper to print around a target offset
[codex:1185006] 
[codex:1185006] def show(start, count=80):
[codex:1185006]     # find index of op at or before start
[codex:1185006]     idx=0
[codex:1185006]     for j,(pc,_,__) in enumerate(ops):
[codex:1185006]         if pc>=start:
[codex:1185006]             idx=j
[codex:1185006]             break
[codex:1185006]     for pc,name,data in ops[idx:idx+count]:
[codex:1185006]         if data is None:
[codex:1185006]             print(f\"{pc:04x}: {name}\")
[codex:1185006]         else:
[codex:1185006]             print(f\"{pc:04x}: {name} 0x{data.hex()}\")
[codex:1185006] 
[codex:1185006] # show around function at 0x017a (upgradeTo selector jump dest?)
[codex:1185006] show(0x0170, 80)
[codex:1185006] print('---')
[codex:1185006] # show around location with impl slot constant (search for 0x360894...)
[codex:1185006] const = bytes.fromhex('360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc')
[codex:1185006] idx = code.find(const)
[codex:1185006] print('impl slot at', hex(idx))
[codex:1185006] show(idx-20, 80)
[codex:1185006] 
[codex:1185006] PY" in /tmp/codex-multi-qmdb0_vy succeeded in 41ms:
[codex:1185006] 0170: JUMPDEST
[codex:1185006] 0171: PUSH2 0x0889
[codex:1185006] 0174: JUMP
[codex:1185006] 0175: JUMPDEST
[codex:1185006] 0176: PUSH2 0x0847
[codex:1185006] 0179: JUMP
[codex:1185006] 017a: JUMPDEST
[codex:1185006] 017b: PUSH2 0x07a1
[codex:1185006] 017e: JUMP
[codex:1185006] 017f: JUMPDEST
[codex:1185006] 0180: PUSH2 0x06be
[codex:1185006] 0183: JUMP
[codex:1185006] 0184: JUMPDEST
[codex:1185006] 0185: PUSH2 0x0639
[codex:1185006] 0188: JUMP
[codex:1185006] 0189: JUMPDEST
[codex:1185006] 018a: PUSH2 0x0491
[codex:1185006] 018d: JUMP
[codex:1185006] 018e: JUMPDEST
[codex:1185006] 018f: PUSH2 0x043e
[codex:1185006] 
[codex:1185006] thinking
[codex:1185006] **Examining upgrade access control logic**
[codex:1185006] 
[codex:1185006] I'm analyzing the disassembly around the implementation slot store and noticing a complex conditional jump sequence that seems to check caller identity, possibly related to UUPS proxy's `onlyProxy` modifier. The check involves comparing the caller's address to the contract's address in a way that’s not typical, so I want to understand how it enforces upgrade permissions by disassembling more code around 0x07a1 to 0x08a0.
[codex:1185006] exec
[codex:1185006] /bin/bash -lc "python - <<'PY'
[codex:1185006] from binascii import unhexlify
[codex:1185006] hexdata = open('/tmp/codex-multi-qmdb0_vy/BYTECODE_BUNDLE.txt').read().split('0x',1)[1]
[codex:1185006] hexdata = ''.join(c for c in hexdata if c in '0123456789abcdefABCDEF')
[codex:1185006] code=bytes.fromhex(hexdata)
[codex:1185006] 
[codex:1185006] opmap={i: f'PUSH{i-0x5f}' for i in range(0x60,0x80)}
[codex:1185006] for i,name in [(0x00,'STOP'),(0x01,'ADD'),(0x02,'MUL'),(0x03,'SUB'),(0x04,'DIV'),(0x05,'SDIV'),(0x06,'MOD'),(0x07,'SMOD'),(0x08,'ADDMOD'),(0x09,'MULMOD'),(0x0a,'EXP'),(0x0b,'SIGNEXTEND'),(0x10,'LT'),(0x11,'GT'),(0x12,'SLT'),(0x13,'SGT'),(0x14,'EQ'),(0x15,'ISZERO'),(0x16,'AND'),(0x17,'OR'),(0x18,'XOR'),(0x19,'NOT'),(0x1a,'BYTE'),(0x1b,'SHL'),(0x1c,'SHR'),(0x1d,'SAR'),(0x20,'SHA3'),(0x30,'ADDRESS'),(0x31,'BALANCE'),(0x32,'ORIGIN'),(0x33,'CALLER'),(0x34,'CALLVALUE'),(0x35,'CALLDATALOAD'),(0x36,'CALLDATASIZE'),(0x37,'CALLDATACOPY'),(0x38,'CODESIZE'),(0x39,'CODECOPY'),(0x3a,'GASPRICE'),(0x3b,'EXTCODESIZE'),(0x3c,'EXTCODECOPY'),(0x3d,'RETURNDATASIZE'),(0x3e,'RETURNDATACOPY'),(0x3f,'EXTCODEHASH'),(0x40,'BLOCKHASH'),(0x41,'COINBASE'),(0x42,'TIMESTAMP'),(0x43,'NUMBER'),(0x44,'DIFFICULTY'),(0x45,'GASLIMIT'),(0x46,'CHAINID'),(0x47,'SELFBALANCE'),(0x48,'BASEFEE'),(0x50,'POP'),(0x51,'MLOAD'),(0x52,'MSTORE'),(0x53,'MSTORE8'),(0x54,'SLOAD'),(0x55,'SSTORE'),(0x56,'JUMP'),(0x57,'JUMPI'),(0x58,'PC'),(0x59,'MSIZE'),(0x5a,'GAS'),(0x5b,'JUMPDEST'),(0x60,'PUSH1'),(0x80,'DUP1'),(0x81,'DUP2'),(0x82,'DUP3'),(0x83,'DUP4'),(0x84,'DUP5'),(0x85,'DUP6'),(0x86,'DUP7'),(0x87,'DUP8'),(0x88,'DUP9'),(0x89,'DUP10'),(0x8a,'DUP11'),(0x8b,'DUP12'),(0x8c,'DUP13'),(0x8d,'DUP14'),(0x8e,'DUP15'),(0x8f,'DUP16'),(0x90,'SWAP1'),(0x91,'SWAP2'),(0x92,'SWAP3'),(0x93,'SWAP4'),(0x94,'SWAP5'),(0x95,'SWAP6'),(0x96,'SWAP7'),(0x97,'SWAP8'),(0x98,'SWAP9'),(0x99,'SWAP10'),(0x9a,'SWAP11'),(0x9b,'SWAP12'),(0x9c,'SWAP13'),(0x9d,'SWAP14'),(0x9e,'SWAP15'),(0x9f,'SWAP16'),(0xa0,'LOG0'),(0xa1,'LOG1'),(0xa2,'LOG2'),(0xa3,'LOG3'),(0xa4,'LOG4'),(0xf0,'CREATE'),(0xf1,'CALL'),(0xf2,'CALLCODE'),(0xf3,'RETURN'),(0xf4,'DELEGATECALL'),(0xf5,'CREATE2'),(0xfa,'STATICCALL'),(0xfd,'REVERT'),(0xfe,'INVALID'),(0xff,'SELFDESTRUCT')]
[codex:1185006] for i,n in list(opmap.items()):
[codex:1185006]     pass
[codex:1185006] 
[codex:1185006] ops=[]
[codex:1185006] i=0
[codex:1185006] while i<len(code):
[codex:1185006]     op=code[i]
[codex:1185006]     name=opmap.get(op, f'OP_{op:02x}')
[codex:1185006]     if 0x60<=op<=0x7f:
[codex:1185006]         n=op-0x5f
[codex:1185006]         data=code[i+1:i+1+n]
[codex:1185006]         ops.append((i,name,data))
[codex:1185006]         i+=1+n
[codex:1185006]     else:
[codex:1185006]         ops.append((i,name,None))
[codex:1185006]         i+=1
[codex:1185006] 
[codex:1185006] 
[codex:1185006] def show(start, end):
[codex:1185006]     for pc,name,data in ops:
[codex:1185006]         if start<=pc<=end:
[codex:1185006]             if data is None:
[codex:1185006]                 print(f\"{pc:04x}: {name}\")
[codex:1185006]             else:
[codex:1185006]                 print(f\"{pc:04x}: {name} 0x{data.hex()}\")
[codex:1185006] 
[codex:1185006] show(0x0780,0x08a5)
[codex:1185006] PY" in /tmp/codex-multi-qmdb0_vy exited 1 in 33ms:
[codex:1185006]   File "<stdin>", line 7
[codex:1185006]     for i,name in [(0x00,'STOP'),(0x01,'ADD'),(0x02,'MUL'),(0x03,'SUB'),(0x04,'DIV'),(0x05,'SDIV'),(0x06,'MOD'),(0x07,'SMOD'),(0x08,'ADDMOD'),(0x09,'MULMOD'),(0x0a,'EXP'),(0x0b,'SIGNEXTEND'),(0x10,'LT'),(0x11,'GT'),(0x12,'SLT'),(0x13,'SGT'),(0x14,'EQ'),(0x15,'ISZERO'),(0x16,'AND'),(0x17,'OR'),(0x18,'XOR'),(0x19,'NOT'),(0x1a,'BYTE'),(0x1b,'SHL'),(0x1c,'SHR'),(0x1d,'SAR'),(0x20,'SHA3'),(0x30,'ADDRESS'),(0x31,'BALANCE'),(0x32,'ORIGIN'),(0x33,'CALLER'),(0x34,'CALLVALUE'),(0x35,'CALLDATALOAD'),(0x36,'CALLDATASIZE'),(0x37,'CALLDATACOPY'),(0x38,'CODESIZE'),(0x39,'CODECOPY'),(0x3a,'GASPRICE'),(0x3b,'EXTCODESIZE'),(0x3c,'EXTCODECOPY'),(0x3d,'RETURNDATASIZE'),(0x3e,'RETURNDATACOPY'),(0x3f,'EXTCODEHASH'),(0x40,'BLOCKHASH'),(0x41,'COINBASE'),(0x42,'TIMESTAMP'),(0x43,'NUMBER'),(0x44,'DIFFICULTY'),(0x45,'GASLIMIT'),(0x46,'CHAINID'),(0x47,'SELFBALANCE'),(0x48,'BASEFEE'),(0x50,'POP'),(0x51,'MLOAD'),(0x52,'MSTORE'),(0x53,'MSTORE8'),(0x54,'SLOAD'),(0x55,'SSTORE'),(0x56,'JUMP'),(0x57,'JUMPI'),(0x58,'PC'),(0x59,'MSIZE'),(0x5a,'GAS'),(0x5b,'JUMPDEST'),(0x60,'PUSH1'),(0x80,'DUP1'),(0x81,'DUP2'),(0x82,'DUP3'),(0x83,'DUP4'),(0x84,'DUP5'),(0x85,'DUP6'),(0x86,'DUP7'),(0x87,'DUP8'),(0x88,'DUP9'),(0x89,'DUP10'),(0x8a,'DUP11'),(0x8b,'DUP12'),(0x8c,'DUP13'),(0x8d,'DUP14'),(0x8e,'DUP15'),(0x8f,'DUP16'),(0x90,'SWAP1'),(0x91,'SWAP2'),(0x92,'SWAP3'),(0x93,'SWAP4'),(0x94,'SWAP5'),(0x95,'SWAP6'),(0x96,'SWAP7'),(0x97,'SWAP8'),(0x98,'SWAP9'),(0x99,'SWAP10'),(0x9a,'SWAP11'),(0x9b,'SWAP12'),(0x9c,'SWAP13'),(0x9d,'SWAP14'),(0x9e,'SWAP15'),(0x9f,'SWAP16'),(0xa0,'LOG0'),(0xa1,'LOG1'),(0xa2,'LOG2'),(0xa3,'LOG3'),(0xa4,'LOG4'),(0xf0,'CREATE'),(0xf1,'CALL'),(0xf2,'CALLCODE'),(0xf3,'RETURN'),(0xf4,'DELEGATECALL'),(0xf5,'CREATE2'),(0xfa,'STATICCALL'),(0xfd,'REVERT'),(0xfe,'INVALID'),(0xff,'SELFDESTRUCT')]
[codex:1185006]                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                             ^
[codex:1185006] SyntaxError: expected ':'
[codex:1185006] 
[codex:1185006] thinking
[codex:1185006] **Correcting the mapping approach**
[codex:1185006] exec
[codex:1185006] /bin/bash -lc "python - <<'PY'
[codex:1185006] hexdata = open('/tmp/codex-multi-qmdb0_vy/BYTECODE_BUNDLE.txt').read().split('0x',1)[1]
[codex:1185006] hexdata = ''.join(c for c in hexdata if c in '0123456789abcdefABCDEF')
[codex:1185006] code=bytes.fromhex(hexdata)
[codex:1185006] 
[codex:1185006] # opcode mapping
[codex:1185006] opmap={i: f'PUSH{i-0x5f}' for i in range(0x60,0x80)}
[codex:1185006] ops_list=[
[codex:1185006]     (0x00,'STOP'),(0x01,'ADD'),(0x02,'MUL'),(0x03,'SUB'),(0x04,'DIV'),(0x05,'SDIV'),(0x06,'MOD'),(0x07,'SMOD'),(0x08,'ADDMOD'),(0x09,'MULMOD'),(0x0a,'EXP'),(0x0b,'SIGNEXTEND'),
[codex:1185006]     (0x10,'LT'),(0x11,'GT'),(0x12,'SLT'),(0x13,'SGT'),(0x14,'EQ'),(0x15,'ISZERO'),(0x16,'AND'),(0x17,'OR'),(0x18,'XOR'),(0x19,'NOT'),(0x1a,'BYTE'),(0x1b,'SHL'),(0x1c,'SHR'),(0x1d,'SAR'),
[codex:1185006]     (0x20,'SHA3'),
[codex:1185006]     (0x30,'ADDRESS'),(0x31,'BALANCE'),(0x32,'ORIGIN'),(0x33,'CALLER'),(0x34,'CALLVALUE'),(0x35,'CALLDATALOAD'),(0x36,'CALLDATASIZE'),(0x37,'CALLDATACOPY'),(0x38,'CODESIZE'),(0x39,'CODECOPY'),(0x3a,'GASPRICE'),(0x3b,'EXTCODESIZE'),(0x3c,'EXTCODECOPY'),(0x3d,'RETURNDATASIZE'),(0x3e,'RETURNDATACOPY'),(0x3f,'EXTCODEHASH'),
[codex:1185006]     (0x40,'BLOCKHASH'),(0x41,'COINBASE'),(0x42,'TIMESTAMP'),(0x43,'NUMBER'),(0x44,'DIFFICULTY'),(0x45,'GASLIMIT'),(0x46,'CHAINID'),(0x47,'SELFBALANCE'),(0x48,'BASEFEE'),
[codex:1185006]     (0x50,'POP'),(0x51,'MLOAD'),(0x52,'MSTORE'),(0x53,'MSTORE8'),(0x54,'SLOAD'),(0x55,'SSTORE'),(0x56,'JUMP'),(0x57,'JUMPI'),(0x58,'PC'),(0x59,'MSIZE'),(0x5a,'GAS'),(0x5b,'JUMPDEST'),
[codex:1185006]     (0x80,'DUP1'),(0x81,'DUP2'),(0x82,'DUP3'),(0x83,'DUP4'),(0x84,'DUP5'),(0x85,'DUP6'),(0x86,'DUP7'),(0x87,'DUP8'),(0x88,'DUP9'),(0x89,'DUP10'),(0x8a,'DUP11'),(0x8b,'DUP12'),(0x8c,'DUP13'),(0x8d,'DUP14'),(0x8e,'DUP15'),(0x8f,'DUP16'),
[codex:1185006]     (0x90,'SWAP1'),(0x91,'SWAP2'),(0x92,'SWAP3'),(0x93,'SWAP4'),(0x94,'SWAP5'),(0x95,'SWAP6'),(0x96,'SWAP7'),(0x97,'SWAP8'),(0x98,'SWAP9'),(0x99,'SWAP10'),(0x9a,'SWAP11'),(0x9b,'SWAP12'),(0x9c,'SWAP13'),(0x9d,'SWAP14'),(0x9e,'SWAP15'),(0x9f,'SWAP16'),
[codex:1185006]     (0xa0,'LOG0'),(0xa1,'LOG1'),(0xa2,'LOG2'),(0xa3,'LOG3'),(0xa4,'LOG4'),
[codex:1185006]     (0xf0,'CREATE'),(0xf1,'CALL'),(0xf2,'CALLCODE'),(0xf3,'RETURN'),(0xf4,'DELEGATECALL'),(0xf5,'CREATE2'),(0xfa,'STATICCALL'),(0xfd,'REVERT'),(0xfe,'INVALID'),(0xff,'SELFDESTRUCT'),
[codex:1185006] ]
[codex:1185006] for k,v in ops_list:
[codex:1185006]     opmap[k]=v
[codex:1185006] 
[codex:1185006] ops=[]
[codex:1185006] i=0
[codex:1185006] while i<len(code):
[codex:1185006]     op=code[i]
[codex:1185006]     name=opmap.get(op, f'OP_{op:02x}')
[codex:1185006]     if 0x60<=op<=0x7f:
[codex:1185006]         n=op-0x5f
[codex:1185006]         data=code[i+1:i+1+n]
[codex:1185006]         ops.append((i,name,data))
[codex:1185006]         i+=1+n
[codex:1185006]     else:
[codex:1185006]         ops.append((i,name,None))
[codex:1185006]         i+=1
[codex:1185006] 
[codex:1185006] 
[codex:1185006] def show(start, end):
[codex:1185006]     for pc,name,data in ops:
[codex:1185006]         if start<=pc<=end:
[codex:1185006]             if data is None:
[codex:1185006]                 print(f\"{pc:04x}: {name}\")
[codex:1185006]             else:
[codex:1185006]                 print(f\"{pc:04x}: {name} 0x{data.hex()}\")
[codex:1185006] 
[codex:1185006] show(0x0790,0x08a5)
[codex:1185006] PY" in /tmp/codex-multi-qmdb0_vy succeeded in 33ms:
[codex:1185006] 0791: JUMP
[codex:1185006] 0792: JUMPDEST
[codex:1185006] 0793: DUP7
[codex:1185006] 0794: DUP3
[codex:1185006] 0795: ADD
[codex:1185006] 0796: MSTORE
[codex:1185006] 0797: DUP2
[codex:1185006] 0798: MSTORE
[codex:1185006] 0799: ADD
[codex:1185006] 079a: SWAP5
[codex:1185006] 079b: ADD
[codex:1185006] 079c: SWAP4
[codex:1185006] 079d: PUSH2 0x0726
[codex:1185006] 07a0: JUMP
[codex:1185006] 07a1: JUMPDEST
[codex:1185006] 07a2: PUSH1 0x20
[codex:1185006] 07a4: CALLDATASIZE
[codex:1185006] 07a5: PUSH1 0x03
[codex:1185006] 07a7: NOT
[codex:1185006] 07a8: ADD
[codex:1185006] 
[codex:1185006] thinking
[codex:1185006] **Analyzing upgradeTo access control logic**
[codex:1185006] exec
[codex:1185006] /bin/bash -lc "python - <<'PY'
[codex:1185006] hexdata = open('/tmp/codex-multi-qmdb0_vy/BYTECODE_BUNDLE.txt').read().split('0x',1)[1]
[codex:1185006] hexdata=''.join(c for c in hexdata if c in '0123456789abcdefABCDEF')
[codex:1185006] code=bytes.fromhex(hexdata)
[codex:1185006] # same opmap as before
[codex:1185006] opmap={i: f'PUSH{i-0x5f}' for i in range(0x60,0x80)}
[codex:1185006] ops_list=[(0x00,'STOP'),(0x01,'ADD'),(0x02,'MUL'),(0x03,'SUB'),(0x04,'DIV'),(0x05,'SDIV'),(0x06,'MOD'),(0x07,'SMOD'),(0x08,'ADDMOD'),(0x09,'MULMOD'),(0x0a,'EXP'),(0x0b,'SIGNEXTEND'),(0x10,'LT'),(0x11,'GT'),(0x12,'SLT'),(0x13,'SGT'),(0x14,'EQ'),(0x15,'ISZERO'),(0x16,'AND'),(0x17,'OR'),(0x18,'XOR'),(0x19,'NOT'),(0x1a,'BYTE'),(0x1b,'SHL'),(0x1c,'SHR'),(0x1d,'SAR'),(0x20,'SHA3'),(0x30,'ADDRESS'),(0x31,'BALANCE'),(0x32,'ORIGIN'),(0x33,'CALLER'),(0x34,'CALLVALUE'),(0x35,'CALLDATALOAD'),(0x36,'CALLDATASIZE'),(0x37,'CALLDATACOPY'),(0x38,'CODESIZE'),(0x39,'CODECOPY'),(0x3a,'GASPRICE'),(0x3b,'EXTCODESIZE'),(0x3c,'EXTCODECOPY'),(0x3d,'RETURNDATASIZE'),(0x3e,'RETURNDATACOPY'),(0x3f,'EXTCODEHASH'),(0x40,'BLOCKHASH'),(0x41,'COINBASE'),(0x42,'TIMESTAMP'),(0x43,'NUMBER'),(0x44,'DIFFICULTY'),(0x45,'GASLIMIT'),(0x46,'CHAINID'),(0x47,'SELFBALANCE'),(0x48,'BASEFEE'),(0x50,'POP'),(0x51,'MLOAD'),(0x52,'MSTORE'),(0x53,'MSTORE8'),(0x54,'SLOAD'),(0x55,'SSTORE'),(0x56,'JUMP'),(0x57,'JUMPI'),(0x58,'PC'),(0x59,'MSIZE'),(0x5a,'GAS'),(0x5b,'JUMPDEST'),(0x80,'DUP1'),(0x81,'DUP2'),(0x82,'DUP3'),(0x83,'DUP4'),(0x84,'DUP5'),(0x85,'DUP6'),(0x86,'DUP7'),(0x87,'DUP8'),(0x88,'DUP9'),(0x89,'DUP10'),(0x8a,'DUP11'),(0x8b,'DUP12'),(0x8c,'DUP13'),(0x8d,'DUP14'),(0x8e,'DUP15'),(0x8f,'DUP16'),(0x90,'SWAP1'),(0x91,'SWAP2'),(0x92,'SWAP3'),(0x93,'SWAP4'),(0x94,'SWAP5'),(0x95,'SWAP6'),(0x96,'SWAP7'),(0x97,'SWAP8'),(0x98,'SWAP9'),(0x99,'SWAP10'),(0x9a,'SWAP11'),(0x9b,'SWAP12'),(0x9c,'SWAP13'),(0x9d,'SWAP14'),(0x9e,'SWAP15'),(0x9f,'SWAP16'),(0xa0,'LOG0'),(0xa1,'LOG1'),(0xa2,'LOG2'),(0xa3,'LOG3'),(0xa4,'LOG4'),(0xf0,'CREATE'),(0xf1,'CALL'),(0xf2,'CALLCODE'),(0xf3,'RETURN'),(0xf4,'DELEGATECALL'),(0xf5,'CREATE2'),(0xfa,'STATICCALL'),(0xfd,'REVERT'),(0xfe,'INVALID'),(0xff,'SELFDESTRUCT')]
[codex:1185006] for k,v in ops_list:
[codex:1185006]     opmap[k]=v
[codex:1185006] 
[codex:1185006] ops=[]
[codex:1185006] i=0
[codex:1185006] while i<len(code):
[codex:1185006]     op=code[i]
[codex:1185006]     name=opmap.get(op, f'OP_{op:02x}')
[codex:1185006]     if 0x60<=op<=0x7f:
[codex:1185006]         n=op-0x5f
[codex:1185006]         data=code[i+1:i+1+n]
[codex:1185006]         ops.append((i,name,data))
[codex:1185006]         i+=1+n
[codex:1185006]     else:
[codex:1185006]         ops.append((i,name,None))
[codex:1185006]         i+=1
[codex:1185006] 
[codex:1185006] 
[codex:1185006] def show(start, end):
[codex:1185006]     for pc,name,data in ops:
[codex:1185006]         if start<=pc<=end:
[codex:1185006]             if data is None:
[codex:1185006]                 print(f\"{pc:04x}: {name}\")
[codex:1185006]             else:
[codex:1185006]                 print(f\"{pc:04x}: {name} 0x{data.hex()}\")
[codex:1185006] 
[codex:1185006] show(0x0340,0x03b0)
[codex:1185006] PY" in /tmp/codex-multi-qmdb0_vy succeeded in 26ms:
[codex:1185006] 0340: PUSH2 0x01ad
[codex:1185006] 0343: JUMPI
[codex:1185006] 0344: PUSH1 0x20
[codex:1185006] 0346: PUSH1 0x00
[codex:1185006] 0348: DUP1
[codex:1185006] 0349: MLOAD
[codex:1185006] 034a: PUSH1 0x20
[codex:1185006] 034c: PUSH2 0x2171
[codex:1185006] 034f: DUP4
[codex:1185006] 0350: CODECOPY
[codex:1185006] 0351: DUP2
[codex:1185006] 0352: MLOAD
[codex:1185006] 0353: SWAP2
[codex:1185006] 0354: MSTORE
[codex:1185006] 0355: SLOAD
[codex:1185006] 0356: PUSH1 0x50
[codex:1185006] 0358: SHR
[codex:1185006] 0359: PUSH1 0x40
[codex:1185006] 035b: MLOAD
[codex:1185006] 035c: SWAP1
[codex:1185006] 
[codex:1185006] thinking
[codex:1185006] **Analyzing address sanitization and caller checks**
[codex:1185006] exec
[codex:1185006] /bin/bash -lc "python - <<'PY'
[codex:1185006] hexdata = open('/tmp/codex-multi-qmdb0_vy/BYTECODE_BUNDLE.txt').read().split('0x',1)[1]
[codex:1185006] hexdata=''.join(c for c in hexdata if c in '0123456789abcdefABCDEF')
[codex:1185006] code=bytes.fromhex(hexdata)
[codex:1185006] # opmap
[codex:1185006] opmap={i: f'PUSH{i-0x5f}' for i in range(0x60,0x80)}
[codex:1185006] ops_list=[(0x00,'STOP'),(0x01,'ADD'),(0x02,'MUL'),(0x03,'SUB'),(0x04,'DIV'),(0x05,'SDIV'),(0x06,'MOD'),(0x07,'SMOD'),(0x08,'ADDMOD'),(0x09,'MULMOD'),(0x0a,'EXP'),(0x0b,'SIGNEXTEND'),(0x10,'LT'),(0x11,'GT'),(0x12,'SLT'),(0x13,'SGT'),(0x14,'EQ'),(0x15,'ISZERO'),(0x16,'AND'),(0x17,'OR'),(0x18,'XOR'),(0x19,'NOT'),(0x1a,'BYTE'),(0x1b,'SHL'),(0x1c,'SHR'),(0x1d,'SAR'),(0x20,'SHA3'),(0x30,'ADDRESS'),(0x31,'BALANCE'),(0x32,'ORIGIN'),(0x33,'CALLER'),(0x34,'CALLVALUE'),(0x35,'CALLDATALOAD'),(0x36,'CALLDATASIZE'),(0x37,'CALLDATACOPY'),(0x38,'CODESIZE'),(0x39,'CODECOPY'),(0x3a,'GASPRICE'),(0x3b,'EXTCODESIZE'),(0x3c,'EXTCODECOPY'),(0x3d,'RETURNDATASIZE'),(0x3e,'RETURNDATACOPY'),(0x3f,'EXTCODEHASH'),(0x40,'BLOCKHASH'),(0x41,'COINBASE'),(0x42,'TIMESTAMP'),(0x43,'NUMBER'),(0x44,'DIFFICULTY'),(0x45,'GASLIMIT'),(0x46,'CHAINID'),(0x47,'SELFBALANCE'),(0x48,'BASEFEE'),(0x50,'POP'),(0x51,'MLOAD'),(0x52,'MSTORE'),(0x53,'MSTORE8'),(0x54,'SLOAD'),(0x55,'SSTORE'),(0x56,'JUMP'),(0x57,'JUMPI'),(0x58,'PC'),(0x59,'MSIZE'),(0x5a,'GAS'),(0x5b,'JUMPDEST'),(0x80,'DUP1'),(0x81,'DUP2'),(0x82,'DUP3'),(0x83,'DUP4'),(0x84,'DUP5'),(0x85,'DUP6'),(0x86,'DUP7'),(0x87,'DUP8'),(0x88,'DUP9'),(0x89,'DUP10'),(0x8a,'DUP11'),(0x8b,'DUP12'),(0x8c,'DUP13'),(0x8d,'DUP14'),(0x8e,'DUP15'),(0x8f,'DUP16'),(0x90,'SWAP1'),(0x91,'SWAP2'),(0x92,'SWAP3'),(0x93,'SWAP4'),(0x94,'SWAP5'),(0x95,'SWAP6'),(0x96,'SWAP7'),(0x97,'SWAP8'),(0x98,'SWAP9'),(0x99,'SWAP10'),(0x9a,'SWAP11'),(0x9b,'SWAP12'),(0x9c,'SWAP13'),(0x9d,'SWAP14'),(0x9e,'SWAP15'),(0x9f,'SWAP16'),(0xa0,'LOG0'),(0xa1,'LOG1'),(0xa2,'LOG2'),(0xa3,'LOG3'),(0xa4,'LOG4'),(0xf0,'CREATE'),(0xf1,'CALL'),(0xf2,'CALLCODE'),(0xf3,'RETURN'),(0xf4,'DELEGATECALL'),(0xf5,'CREATE2'),(0xfa,'STATICCALL'),(0xfd,'REVERT'),(0xfe,'INVALID'),(0xff,'SELFDESTRUCT')]
[codex:1185006] for k,v in ops_list:
[codex:1185006]     opmap[k]=v
[codex:1185006] 
[codex:1185006] ops=[]
[codex:1185006] i=0
[codex:1185006] while i<len(code):
[codex:1185006]     op=code[i]
[codex:1185006]     name=opmap.get(op, f'OP_{op:02x}')
[codex:1185006]     if 0x60<=op<=0x7f:
[codex:1185006]         n=op-0x5f
[codex:1185006]         data=code[i+1:i+1+n]
[codex:1185006]         ops.append((i,name,data))
[codex:1185006]         i+=1+n
[codex:1185006]     else:
[codex:1185006]         ops.append((i,name,None))
[codex:1185006]         i+=1
[codex:1185006] 
[codex:1185006] 
[codex:1185006] def show(start, end):
[codex:1185006]     for pc,name,data in ops:
[codex:1185006]         if start<=pc<=end:
[codex:1185006]             if data is None:
[codex:1185006]                 print(f\"{pc:04x}: {name}\")
[codex:1185006]             else:
[codex:1185006]                 print(f\"{pc:04x}: {name} 0x{data.hex()}\")
[codex:1185006] 
[codex:1185006] show(0x0600,0x0665)
[codex:1185006] PY" in /tmp/codex-multi-qmdb0_vy succeeded in 27ms:
[codex:1185006] 0600: DUP1
[codex:1185006] 0601: PUSH2 0x060c
[codex:1185006] 0604: PUSH2 0x0612
[codex:1185006] 0607: SWAP3
[codex:1185006] 0608: PUSH2 0x01c8
[codex:1185006] 060b: JUMP
[codex:1185006] 060c: JUMPDEST
[codex:1185006] 060d: DUP1
[codex:1185006] 060e: PUSH2 0x01a2
[codex:1185006] 0611: JUMP
[codex:1185006] 0612: JUMPDEST
[codex:1185006] 0613: CODESIZE
[codex:1185006] 0614: PUSH2 0x05cb
[codex:1185006] 0617: JUMP
[codex:1185006] 0618: JUMPDEST
[codex:1185006] 0619: PUSH2 0x154d
[codex:1185006] 061c: JUMP
[codex:1185006] 061d: JUMPDEST
[codex:1185006] 061e: PUSH1 0x40
[codex:1185006] 0620: MLOAD
[codex:1185006] 
[codex:1185006] thinking
[codex:1185006] **Analyzing upgrade authorization and delegatecall risks**
[codex:1185006] 
[codex:1185006] I'm examining an upgrade function that restricts access to the entrypoint or internal calls, which fits an account abstraction model rather than a standard proxy pattern. While this reduces unauthorized upgrades, I'm now focused on detecting any delegatecall or call operations that use user-supplied targets without proper access control, as those could pose serious vulnerabilities if unchecked. To do this, I plan to identify all delegatecall opcodes in the bytecode and verify their authorization checks.
[codex:1185006] exec
[codex:1185006] /bin/bash -lc "python - <<'PY'
[codex:1185006] hexdata=open('/tmp/codex-multi-qmdb0_vy/BYTECODE_BUNDLE.txt').read().split('0x',1)[1]
[codex:1185006] hexdata=''.join(c for c in hexdata if c in '0123456789abcdefABCDEF')
[codex:1185006] code=bytes.fromhex(hexdata)
[codex:1185006] # find all DELEGATECALL (0xf4)
[codex:1185006] indices=[i for i,b in enumerate(code) if b==0xf4]
[codex:1185006] print('DELEGATECALL count', len(indices))
[codex:1185006] print(indices[:20])
[codex:1185006] # find CALL (0xf1)
[codex:1185006] indices_call=[i for i,b in enumerate(code) if b==0xf1]
[codex:1185006] print('CALL count', len(indices_call))
[codex:1185006] print(indices_call[:20])
[codex:1185006] # find SELFDESTRUCT (0xff)
[codex:1185006] indices_sd=[i for i,b in enumerate(code) if b==0xff]
[codex:1185006] print('SELFDESTRUCT count', len(indices_sd))
[codex:1185006] print(indices_sd[:20])
[codex:1185006] PY" in /tmp/codex-multi-qmdb0_vy succeeded in 19ms:
[codex:1185006] DELEGATECALL count 4
[codex:1185006] [3635, 4534, 6126, 7572]
[codex:1185006] CALL count 25
[codex:1185006] [238, 1299, 1472, 2002, 2271, 2666, 2744, 2962, 3113, 3468, 3574, 3930, 4107, 4185, 4483, 4652, 4754, 5491, 5595, 5820]
[codex:1185006] SELFDESTRUCT count 186
[codex:1185006] [1155, 1156, 1157, 1158, 1159, 1160, 1353, 1354, 1355, 1356, 1357, 1358, 1367, 1368, 1369, 1370, 1371, 1372, 1481, 1516]
[codex:1185006] 
[codex:1185006] thinking
[codex:1185006] **Verifying SELFDESTRUCT occurrences by opcode parsing**
[codex:1185006] exec
[codex:1185006] /bin/bash -lc "python - <<'PY'
[codex:1185006] hexdata=open('/tmp/codex-multi-qmdb0_vy/BYTECODE_BUNDLE.txt').read().split('0x',1)[1]
[codex:1185006] hexdata=''.join(c for c in hexdata if c in '0123456789abcdefABCDEF')
[codex:1185006] code=bytes.fromhex(hexdata)
[codex:1185006] # opmap
[codex:1185006] opmap={i: f'PUSH{i-0x5f}' for i in range(0x60,0x80)}
[codex:1185006] ops_list=[(0x00,'STOP'),(0x01,'ADD'),(0x02,'MUL'),(0x03,'SUB'),(0x04,'DIV'),(0x05,'SDIV'),(0x06,'MOD'),(0x07,'SMOD'),(0x08,'ADDMOD'),(0x09,'MULMOD'),(0x0a,'EXP'),(0x0b,'SIGNEXTEND'),(0x10,'LT'),(0x11,'GT'),(0x12,'SLT'),(0x13,'SGT'),(0x14,'EQ'),(0x15,'ISZERO'),(0x16,'AND'),(0x17,'OR'),(0x18,'XOR'),(0x19,'NOT'),(0x1a,'BYTE'),(0x1b,'SHL'),(0x1c,'SHR'),(0x1d,'SAR'),(0x20,'SHA3'),(0x30,'ADDRESS'),(0x31,'BALANCE'),(0x32,'ORIGIN'),(0x33,'CALLER'),(0x34,'CALLVALUE'),(0x35,'CALLDATALOAD'),(0x36,'CALLDATASIZE'),(0x37,'CALLDATACOPY'),(0x38,'CODESIZE'),(0x39,'CODECOPY'),(0x3a,'GASPRICE'),(0x3b,'EXTCODESIZE'),(0x3c,'EXTCODECOPY'),(0x3d,'RETURNDATASIZE'),(0x3e,'RETURNDATACOPY'),(0x3f,'EXTCODEHASH'),(0x40,'BLOCKHASH'),(0x41,'COINBASE'),(0x42,'TIMESTAMP'),(0x43,'NUMBER'),(0x44,'DIFFICULTY'),(0x45,'GASLIMIT'),(0x46,'CHAINID'),(0x47,'SELFBALANCE'),(0x48,'BASEFEE'),(0x50,'POP'),(0x51,'MLOAD'),(0x52,'MSTORE'),(0x53,'MSTORE8'),(0x54,'SLOAD'),(0x55,'SSTORE'),(0x56,'JUMP'),(0x57,'JUMPI'),(0x58,'PC'),(0x59,'MSIZE'),(0x5a,'GAS'),(0x5b,'JUMPDEST'),(0x80,'DUP1'),(0x81,'DUP2'),(0x82,'DUP3'),(0x83,'DUP4'),(0x84,'DUP5'),(0x85,'DUP6'),(0x86,'DUP7'),(0x87,'DUP8'),(0x88,'DUP9'),(0x89,'DUP10'),(0x8a,'DUP11'),(0x8b,'DUP12'),(0x8c,'DUP13'),(0x8d,'DUP14'),(0x8e,'DUP15'),(0x8f,'DUP16'),(0x90,'SWAP1'),(0x91,'SWAP2'),(0x92,'SWAP3'),(0x93,'SWAP4'),(0x94,'SWAP5'),(0x95,'SWAP6'),(0x96,'SWAP7'),(0x97,'SWAP8'),(0x98,'SWAP9'),(0x99,'SWAP10'),(0x9a,'SWAP11'),(0x9b,'SWAP12'),(0x9c,'SWAP13'),(0x9d,'SWAP14'),(0x9e,'SWAP15'),(0x9f,'SWAP16'),(0xa0,'LOG0'),(0xa1,'LOG1'),(0xa2,'LOG2'),(0xa3,'LOG3'),(0xa4,'LOG4'),(0xf0,'CREATE'),(0xf1,'CALL'),(0xf2,'CALLCODE'),(0xf3,'RETURN'),(0xf4,'DELEGATECALL'),(0xf5,'CREATE2'),(0xfa,'STATICCALL'),(0xfd,'REVERT'),(0xfe,'INVALID'),(0xff,'SELFDESTRUCT')]
[codex:1185006] for k,v in ops_list:
[codex:1185006]     opmap[k]=v
[codex:1185006] 
[codex:1185006] ops=[]
[codex:1185006] i=0
[codex:1185006] while i<len(code):
[codex:1185006]     op=code[i]
[codex:1185006]     name=opmap.get(op, f'OP_{op:02x}')
[codex:1185006]     if 0x60<=op<=0x7f:
[codex:1185006]         n=op-0x5f
[codex:1185006]         data=code[i+1:i+1+n]
[codex:1185006]         ops.append((i,name,data))
[codex:1185006]         i+=1+n
[codex:1185006]     else:
[codex:1185006]         ops.append((i,name,None))
[codex:1185006]         i+=1
[codex:1185006] 
[codex:1185006] for name in ['DELEGATECALL','CALL','SELFDESTRUCT']:
[codex:1185006]     loc=[pc for pc,n,_ in ops if n==name]
[codex:1185006]     print(name, 'count', len(loc))
[codex:1185006]     print(loc)
[codex:1185006] PY" in /tmp/codex-multi-qmdb0_vy succeeded in 28ms:
[codex:1185006] DELEGATECALL count 2
[codex:1185006] [3635, 4534]
[codex:1185006] CALL count 10
[codex:1185006] [1472, 2744, 3113, 4107, 4754, 5820, 5885, 6001, 6917, 8034]
[codex:1185006] SELFDESTRUCT count 0
[codex:1185006] []
[codex:1185006] 
[codex:1185006] thinking
[codex:1185006] **Inspecting DELEGATECALL instructions**
[codex:1185006] exec
[codex:1185006] /bin/bash -lc "python - <<'PY'
[codex:1185006] hexdata=open('/tmp/codex-multi-qmdb0_vy/BYTECODE_BUNDLE.txt').read().split('0x',1)[1]
[codex:1185006] hexdata=''.join(c for c in hexdata if c in '0123456789abcdefABCDEF')
[codex:1185006] code=bytes.fromhex(hexdata)
[codex:1185006] # opmap
[codex:1185006] opmap={i: f'PUSH{i-0x5f}' for i in range(0x60,0x80)}
[codex:1185006] ops_list=[(0x00,'STOP'),(0x01,'ADD'),(0x02,'MUL'),(0x03,'SUB'),(0x04,'DIV'),(0x05,'SDIV'),(0x06,'MOD'),(0x07,'SMOD'),(0x08,'ADDMOD'),(0x09,'MULMOD'),(0x0a,'EXP'),(0x0b,'SIGNEXTEND'),(0x10,'LT'),(0x11,'GT'),(0x12,'SLT'),(0x13,'SGT'),(0x14,'EQ'),(0x15,'ISZERO'),(0x16,'AND'),(0x17,'OR'),(0x18,'XOR'),(0x19,'NOT'),(0x1a,'BYTE'),(0x1b,'SHL'),(0x1c,'SHR'),(0x1d,'SAR'),(0x20,'SHA3'),(0x30,'ADDRESS'),(0x31,'BALANCE'),(0x32,'ORIGIN'),(0x33,'CALLER'),(0x34,'CALLVALUE'),(0x35,'CALLDATALOAD'),(0x36,'CALLDATASIZE'),(0x37,'CALLDATACOPY'),(0x38,'CODESIZE'),(0x39,'CODECOPY'),(0x3a,'GASPRICE'),(0x3b,'EXTCODESIZE'),(0x3c,'EXTCODECOPY'),(0x3d,'RETURNDATASIZE'),(0x3e,'RETURNDATACOPY'),(0x3f,'EXTCODEHASH'),(0x40,'BLOCKHASH'),(0x41,'COINBASE'),(0x42,'TIMESTAMP'),(0x43,'NUMBER'),(0x44,'DIFFICULTY'),(0x45,'GASLIMIT'),(0x46,'CHAINID'),(0x47,'SELFBALANCE'),(0x48,'BASEFEE'),(0x50,'POP'),(0x51,'MLOAD'),(0x52,'MSTORE'),(0x53,'MSTORE8'),(0x54,'SLOAD'),(0x55,'SSTORE'),(0x56,'JUMP'),(0x57,'JUMPI'),(0x58,'PC'),(0x59,'MSIZE'),(0x5a,'GAS'),(0x5b,'JUMPDEST'),(0x80,'DUP1'),(0x81,'DUP2'),(0x82,'DUP3'),(0x83,'DUP4'),(0x84,'DUP5'),(0x85,'DUP6'),(0x86,'DUP7'),(0x87,'DUP8'),(0x88,'DUP9'),(0x89,'DUP10'),(0x8a,'DUP11'),(0x8b,'DUP12'),(0x8c,'DUP13'),(0x8d,'DUP14'),(0x8e,'DUP15'),(0x8f,'DUP16'),(0x90,'SWAP1'),(0x91,'SWAP2'),(0x92,'SWAP3'),(0x93,'SWAP4'),(0x94,'SWAP5'),(0x95,'SWAP6'),(0x96,'SWAP7'),(0x97,'SWAP8'),(0x98,'SWAP9'),(0x99,'SWAP10'),(0x9a,'SWAP11'),(0x9b,'SWAP12'),(0x9c,'SWAP13'),(0x9d,'SWAP14'),(0x9e,'SWAP15'),(0x9f,'SWAP16'),(0xa0,'LOG0'),(0xa1,'LOG1'),(0xa2,'LOG2'),(0xa3,'LOG3'),(0xa4,'LOG4'),(0xf0,'CREATE'),(0xf1,'CALL'),(0xf2,'CALLCODE'),(0xf3,'RETURN'),(0xf4,'DELEGATECALL'),(0xf5,'CREATE2'),(0xfa,'STATICCALL'),(0xfd,'REVERT'),(0xfe,'INVALID'),(0xff,'SELFDESTRUCT')]
[codex:1185006] for k,v in ops_list:
[codex:1185006]     opmap[k]=v
[codex:1185006] 
[codex:1185006] ops=[]
[codex:1185006] i=0
[codex:1185006] while i<len(code):
[codex:1185006]     op=code[i]
[codex:1185006]     name=opmap.get(op, f'OP_{op:02x}')
[codex:1185006]     if 0x60<=op<=0x7f:
[codex:1185006]         n=op-0x5f
[codex:1185006]         data=code[i+1:i+1+n]
[codex:1185006]         ops.append((i,name,data))
[codex:1185006]         i+=1+n
[codex:1185006]     else:
[codex:1185006]         ops.append((i,name,None))
[codex:1185006]         i+=1
[codex:1185006] 
[codex:1185006] 
[codex:1185006] def show(center, radius=20):
[codex:1185006]     start=center-radius
[codex:1185006]     end=center+radius
[codex:1185006]     for pc,name,data in ops:
[codex:1185006]         if start<=pc<=end:
[codex:1185006]             if data is None:
[codex:1185006]                 print(f\"{pc:04x}: {name}\")
[codex:1185006]             else:
[codex:1185006]                 print(f\"{pc:04x}: {name} 0x{data.hex()}\")
[codex:1185006] 
[codex:1185006] print('--- around 0x0e33 (3635)')
[codex:1185006] show(0x0e33, 40)
[codex:1185006] print('--- around 0x11b6 (4534)')
[codex:1185006] show(0x11b6, 40)
[codex:1185006] PY" in /tmp/codex-multi-qmdb0_vy succeeded in 29ms:
[codex:1185006] --- around 0x0e33 (3635)
[codex:1185006] 0e0b: PUSH1 0x01
[codex:1185006] 0e0d: PUSH1 0xa0
[codex:1185006] 0e0f: SHL
[codex:1185006] 0e10: SUB
[codex:1185006] 0e11: AND
[codex:1185006] 0e12: EQ
[codex:1185006] 0e13: ISZERO
[codex:1185006] 0e14: DUP1
[codex:1185006] 0e15: PUSH2 0x0e51
[codex:1185006] 0e18: JUMPI
[codex:1185006] 0e19: JUMPDEST
[codex:1185006] 0e1a: DUP1
[codex:1185006] 0e1b: PUSH2 0x0e40
[codex:1185006] 0e1e: JUMPI
[codex:1185006] 0e1f: JUMPDEST
[codex:1185006] 0e20: PUSH2 0x061d
[codex:1185006] 0e23: JUMPI
[codex:1185006] 0e24: PUSH1 0x00
[codex:1185006] 0e26: DUP3
[codex:1185006] 
[codex:1185006] thinking
[codex:1185006] **Analyzing delegatecall usage and access control**
[codex:1185006] exec
[codex:1185006] /bin/bash -lc "python - <<'PY'
[codex:1185006] hexdata=open('/tmp/codex-multi-qmdb0_vy/BYTECODE_BUNDLE.txt').read().split('0x',1)[1]
[codex:1185006] hexdata=''.join(c for c in hexdata if c in '0123456789abcdefABCDEF')
[codex:1185006] code=bytes.fromhex(hexdata)
[codex:1185006] # opmap
[codex:1185006] opmap={i: f'PUSH{i-0x5f}' for i in range(0x60,0x80)}
[codex:1185006] ops_list=[(0x00,'STOP'),(0x01,'ADD'),(0x02,'MUL'),(0x03,'SUB'),(0x04,'DIV'),(0x05,'SDIV'),(0x06,'MOD'),(0x07,'SMOD'),(0x08,'ADDMOD'),(0x09,'MULMOD'),(0x0a,'EXP'),(0x0b,'SIGNEXTEND'),(0x10,'LT'),(0x11,'GT'),(0x12,'SLT'),(0x13,'SGT'),(0x14,'EQ'),(0x15,'ISZERO'),(0x16,'AND'),(0x17,'OR'),(0x18,'XOR'),(0x19,'NOT'),(0x1a,'BYTE'),(0x1b,'SHL'),(0x1c,'SHR'),(0x1d,'SAR'),(0x20,'SHA3'),(0x30,'ADDRESS'),(0x31,'BALANCE'),(0x32,'ORIGIN'),(0x33,'CALLER'),(0x34,'CALLVALUE'),(0x35,'CALLDATALOAD'),(0x36,'CALLDATASIZE'),(0x37,'CALLDATACOPY'),(0x38,'CODESIZE'),(0x39,'CODECOPY'),(0x3a,'GASPRICE'),(0x3b,'EXTCODESIZE'),(0x3c,'EXTCODECOPY'),(0x3d,'RETURNDATASIZE'),(0x3e,'RETURNDATACOPY'),(0x3f,'EXTCODEHASH'),(0x40,'BLOCKHASH'),(0x41,'COINBASE'),(0x42,'TIMESTAMP'),(0x43,'NUMBER'),(0x44,'DIFFICULTY'),(0x45,'GASLIMIT'),(0x46,'CHAINID'),(0x47,'SELFBALANCE'),(0x48,'BASEFEE'),(0x50,'POP'),(0x51,'MLOAD'),(0x52,'MSTORE'),(0x53,'MSTORE8'),(0x54,'SLOAD'),(0x55,'SSTORE'),(0x56,'JUMP'),(0x57,'JUMPI'),(0x58,'PC'),(0x59,'MSIZE'),(0x5a,'GAS'),(0x5b,'JUMPDEST'),(0x80,'DUP1'),(0x81,'DUP2'),(0x82,'DUP3'),(0x83,'DUP4'),(0x84,'DUP5'),(0x85,'DUP6'),(0x86,'DUP7'),(0x87,'DUP8'),(0x88,'DUP9'),(0x89,'DUP10'),(0x8a,'DUP11'),(0x8b,'DUP12'),(0x8c,'DUP13'),(0x8d,'DUP14'),(0x8e,'DUP15'),(0x8f,'DUP16'),(0x90,'SWAP1'),(0x91,'SWAP2'),(0x92,'SWAP3'),(0x93,'SWAP4'),(0x94,'SWAP5'),(0x95,'SWAP6'),(0x96,'SWAP7'),(0x97,'SWAP8'),(0x98,'SWAP9'),(0x99,'SWAP10'),(0x9a,'SWAP11'),(0x9b,'SWAP12'),(0x9c,'SWAP13'),(0x9d,'SWAP14'),(0x9e,'SWAP15'),(0x9f,'SWAP16'),(0xa0,'LOG0'),(0xa1,'LOG1'),(0xa2,'LOG2'),(0xa3,'LOG3'),(0xa4,'LOG4'),(0xf0,'CREATE'),(0xf1,'CALL'),(0xf2,'CALLCODE'),(0xf3,'RETURN'),(0xf4,'DELEGATECALL'),(0xf5,'CREATE2'),(0xfa,'STATICCALL'),(0xfd,'REVERT'),(0xfe,'INVALID'),(0xff,'SELFDESTRUCT')]
[codex:1185006] for k,v in ops_list:
[codex:1185006]     opmap[k]=v
[codex:1185006] 
[codex:1185006] ops=[]
[codex:1185006] i=0
[codex:1185006] while i<len(code):
[codex:1185006]     op=code[i]
[codex:1185006]     name=opmap.get(op, f'OP_{op:02x}')
[codex:1185006]     if 0x60<=op<=0x7f:
[codex:1185006]         n=op-0x5f
[codex:1185006]         data=code[i+1:i+1+n]
[codex:1185006]         ops.append((i,name,data))
[codex:1185006]         i+=1+n
[codex:1185006]     else:
[codex:1185006]         ops.append((i,name,None))
[codex:1185006]         i+=1
[codex:1185006] 
[codex:1185006] 
[codex:1185006] def show(start, end):
[codex:1185006]     for pc,name,data in ops:
[codex:1185006]         if start<=pc<=end:
[codex:1185006]             if data is None:
[codex:1185006]                 print(f\"{pc:04x}: {name}\")
[codex:1185006]             else:
[codex:1185006]                 print(f\"{pc:04x}: {name} 0x{data.hex()}\")
[codex:1185006] 
[codex:1185006] show(0x0d80,0x0e70)
[codex:1185006] PY" in /tmp/codex-multi-qmdb0_vy succeeded in 32ms:
[codex:1185006] 0d9f: PUSH1 0x01
[codex:1185006] 0da1: PUSH1 0x01
[codex:1185006] 0da3: PUSH1 0xa0
[codex:1185006] 0da5: SHL
[codex:1185006] 0da6: SUB
[codex:1185006] 0da7: AND
[codex:1185006] 0da8: DUP2
[codex:1185006] 0da9: MSTORE
[codex:1185006] 0daa: PUSH1 0x20
[codex:1185006] 0dac: SWAP1
[codex:1185006] 0dad: RETURN
[codex:1185006] 0dae: JUMPDEST
[codex:1185006] 0daf: PUSH1 0x40
[codex:1185006] 0db1: CALLDATASIZE
[codex:1185006] 0db2: PUSH1 0x03
[codex:1185006] 0db4: NOT
[codex:1185006] 0db5: ADD
[codex:1185006] 0db6: SLT
[codex:1185006] 0db7: PUSH2 0x01ad
[codex:1185006] 0dba: JUMPI
[codex:1185006] 
[codex:1185006] thinking
[codex:1185006] **Analyzing caller authorization and potential vulnerabilities**
[codex:1185006] exec
[codex:1185006] /bin/bash -lc "python - <<'PY'
[codex:1185006] hexdata=open('/tmp/codex-multi-qmdb0_vy/BYTECODE_BUNDLE.txt').read().split('0x',1)[1]
[codex:1185006] hexdata=''.join(c for c in hexdata if c in '0123456789abcdefABCDEF')
[codex:1185006] code=bytes.fromhex(hexdata)
[codex:1185006] # opmap
[codex:1185006] opmap={i: f'PUSH{i-0x5f}' for i in range(0x60,0x80)}
[codex:1185006] ops_list=[(0x00,'STOP'),(0x01,'ADD'),(0x02,'MUL'),(0x03,'SUB'),(0x04,'DIV'),(0x05,'SDIV'),(0x06,'MOD'),(0x07,'SMOD'),(0x08,'ADDMOD'),(0x09,'MULMOD'),(0x0a,'EXP'),(0x0b,'SIGNEXTEND'),(0x10,'LT'),(0x11,'GT'),(0x12,'SLT'),(0x13,'SGT'),(0x14,'EQ'),(0x15,'ISZERO'),(0x16,'AND'),(0x17,'OR'),(0x18,'XOR'),(0x19,'NOT'),(0x1a,'BYTE'),(0x1b,'SHL'),(0x1c,'SHR'),(0x1d,'SAR'),(0x20,'SHA3'),(0x30,'ADDRESS'),(0x31,'BALANCE'),(0x32,'ORIGIN'),(0x33,'CALLER'),(0x34,'CALLVALUE'),(0x35,'CALLDATALOAD'),(0x36,'CALLDATASIZE'),(0x37,'CALLDATACOPY'),(0x38,'CODESIZE'),(0x39,'CODECOPY'),(0x3a,'GASPRICE'),(0x3b,'EXTCODESIZE'),(0x3c,'EXTCODECOPY'),(0x3d,'RETURNDATASIZE'),(0x3e,'RETURNDATACOPY'),(0x3f,'EXTCODEHASH'),(0x40,'BLOCKHASH'),(0x41,'COINBASE'),(0x42,'TIMESTAMP'),(0x43,'NUMBER'),(0x44,'DIFFICULTY'),(0x45,'GASLIMIT'),(0x46,'CHAINID'),(0x47,'SELFBALANCE'),(0x48,'BASEFEE'),(0x50,'POP'),(0x51,'MLOAD'),(0x52,'MSTORE'),(0x53,'MSTORE8'),(0x54,'SLOAD'),(0x55,'SSTORE'),(0x56,'JUMP'),(0x57,'JUMPI'),(0x58,'PC'),(0x59,'MSIZE'),(0x5a,'GAS'),(0x5b,'JUMPDEST'),(0x80,'DUP1'),(0x81,'DUP2'),(0x82,'DUP3'),(0x83,'DUP4'),(0x84,'DUP5'),(0x85,'DUP6'),(0x86,'DUP7'),(0x87,'DUP8'),(0x88,'DUP9'),(0x89,'DUP10'),(0x8a,'DUP11'),(0x8b,'DUP12'),(0x8c,'DUP13'),(0x8d,'DUP14'),(0x8e,'DUP15'),(0x8f,'DUP16'),(0x90,'SWAP1'),(0x91,'SWAP2'),(0x92,'SWAP3'),(0x93,'SWAP4'),(0x94,'SWAP5'),(0x95,'SWAP6'),(0x96,'SWAP7'),(0x97,'SWAP8'),(0x98,'SWAP9'),(0x99,'SWAP10'),(0x9a,'SWAP11'),(0x9b,'SWAP12'),(0x9c,'SWAP13'),(0x9d,'SWAP14'),(0x9e,'SWAP15'),(0x9f,'SWAP16'),(0xa0,'LOG0'),(0xa1,'LOG1'),(0xa2,'LOG2'),(0xa3,'LOG3'),(0xa4,'LOG4'),(0xf0,'CREATE'),(0xf1,'CALL'),(0xf2,'CALLCODE'),(0xf3,'RETURN'),(0xf4,'DELEGATECALL'),(0xf5,'CREATE2'),(0xfa,'STATICCALL'),(0xfd,'REVERT'),(0xfe,'INVALID'),(0xff,'SELFDESTRUCT')]
[codex:1185006] for k,v in ops_list:
[codex:1185006]     opmap[k]=v
[codex:1185006] 
[codex:1185006] ops=[]
[codex:1185006] i=0
[codex:1185006] while i<len(code):
[codex:1185006]     op=code[i]
[codex:1185006]     name=opmap.get(op, f'OP_{op:02x}')
[codex:1185006]     if 0x60<=op<=0x7f:
[codex:1185006]         n=op-0x5f
[codex:1185006]         data=code[i+1:i+1+n]
[codex:1185006]         ops.append((i,name,data))
[codex:1185006]         i+=1+n
[codex:1185006]     else:
[codex:1185006]         ops.append((i,name,None))
[codex:1185006]         i+=1
[codex:1185006] 
[codex:1185006] sstore=[pc for pc,n,_ in ops if n=='SSTORE']
[codex:1185006] print('SSTORE count', len(sstore))
[codex:1185006] print(sstore)
[codex:1185006] PY" in /tmp/codex-multi-qmdb0_vy succeeded in 23ms:
[codex:1185006] SSTORE count 5
[codex:1185006] [2069, 4280, 6217, 6257, 8387]
[codex:1185006] 
[codex:1185006] thinking
[codex:1185006] **Examining SSTORE instructions for protection**
[codex:1185006] exec
[codex:1185006] /bin/bash -lc "python - <<'PY'
[codex:1185006] hexdata=open('/tmp/codex-multi-qmdb0_vy/BYTECODE_BUNDLE.txt').read().split('0x',1)[1]
[codex:1185006] hexdata=''.join(c for c in hexdata if c in '0123456789abcdefABCDEF')
[codex:1185006] code=bytes.fromhex(hexdata)
[codex:1185006] # opmap
[codex:1185006] opmap={i: f'PUSH{i-0x5f}' for i in range(0x60,0x80)}
[codex:1185006] ops_list=[(0x00,'STOP'),(0x01,'ADD'),(0x02,'MUL'),(0x03,'SUB'),(0x04,'DIV'),(0x05,'SDIV'),(0x06,'MOD'),(0x07,'SMOD'),(0x08,'ADDMOD'),(0x09,'MULMOD'),(0x0a,'EXP'),(0x0b,'SIGNEXTEND'),(0x10,'LT'),(0x11,'GT'),(0x12,'SLT'),(0x13,'SGT'),(0x14,'EQ'),(0x15,'ISZERO'),(0x16,'AND'),(0x17,'OR'),(0x18,'XOR'),(0x19,'NOT'),(0x1a,'BYTE'),(0x1b,'SHL'),(0x1c,'SHR'),(0x1d,'SAR'),(0x20,'SHA3'),(0x30,'ADDRESS'),(0x31,'BALANCE'),(0x32,'ORIGIN'),(0x33,'CALLER'),(0x34,'CALLVALUE'),(0x35,'CALLDATALOAD'),(0x36,'CALLDATASIZE'),(0x37,'CALLDATACOPY'),(0x38,'CODESIZE'),(0x39,'CODECOPY'),(0x3a,'GASPRICE'),(0x3b,'EXTCODESIZE'),(0x3c,'EXTCODECOPY'),(0x3d,'RETURNDATASIZE'),(0x3e,'RETURNDATACOPY'),(0x3f,'EXTCODEHASH'),(0x40,'BLOCKHASH'),(0x41,'COINBASE'),(0x42,'TIMESTAMP'),(0x43,'NUMBER'),(0x44,'DIFFICULTY'),(0x45,'GASLIMIT'),(0x46,'CHAINID'),(0x47,'SELFBALANCE'),(0x48,'BASEFEE'),(0x50,'POP'),(0x51,'MLOAD'),(0x52,'MSTORE'),(0x53,'MSTORE8'),(0x54,'SLOAD'),(0x55,'SSTORE'),(0x56,'JUMP'),(0x57,'JUMPI'),(0x58,'PC'),(0x59,'MSIZE'),(0x5a,'GAS'),(0x5b,'JUMPDEST'),(0x80,'DUP1'),(0x81,'DUP2'),(0x82,'DUP3'),(0x83,'DUP4'),(0x84,'DUP5'),(0x85,'DUP6'),(0x86,'DUP7'),(0x87,'DUP8'),(0x88,'DUP9'),(0x89,'DUP10'),(0x8a,'DUP11'),(0x8b,'DUP12'),(0x8c,'DUP13'),(0x8d,'DUP14'),(0x8e,'DUP15'),(0x8f,'DUP16'),(0x90,'SWAP1'),(0x91,'SWAP2'),(0x92,'SWAP3'),(0x93,'SWAP4'),(0x94,'SWAP5'),(0x95,'SWAP6'),(0x96,'SWAP7'),(0x97,'SWAP8'),(0x98,'SWAP9'),(0x99,'SWAP10'),(0x9a,'SWAP11'),(0x9b,'SWAP12'),(0x9c,'SWAP13'),(0x9d,'SWAP14'),(0x9e,'SWAP15'),(0x9f,'SWAP16'),(0xa0,'LOG0'),(0xa1,'LOG1'),(0xa2,'LOG2'),(0xa3,'LOG3'),(0xa4,'LOG4'),(0xf0,'CREATE'),(0xf1,'CALL'),(0xf2,'CALLCODE'),(0xf3,'RETURN'),(0xf4,'DELEGATECALL'),(0xf5,'CREATE2'),(0xfa,'STATICCALL'),(0xfd,'REVERT'),(0xfe,'INVALID'),(0xff,'SELFDESTRUCT')]
[codex:1185006] for k,v in ops_list:
[codex:1185006]     opmap[k]=v
[codex:1185006] 
[codex:1185006] ops=[]
[codex:1185006] i=0
[codex:1185006] while i<len(code):
[codex:1185006]     op=code[i]
[codex:1185006]     name=opmap.get(op, f'OP_{op:02x}')
[codex:1185006]     if 0x60<=op<=0x7f:
[codex:1185006]         n=op-0x5f
[codex:1185006]         data=code[i+1:i+1+n]
[codex:1185006]         ops.append((i,name,data))
[codex:1185006]         i+=1+n
[codex:1185006]     else:
[codex:1185006]         ops.append((i,name,None))
[codex:1185006]         i+=1
[codex:1185006] 
[codex:1185006] 
[codex:1185006] def show(center, radius=40):
[codex:1185006]     start=center-radius
[codex:1185006]     end=center+radius
[codex:1185006]     for pc,name,data in ops:
[codex:1185006]         if start<=pc<=end:
[codex:1185006]             if data is None:
[codex:1185006]                 print(f\"{pc:04x}: {name}\")
[codex:1185006]             else:
[codex:1185006]                 print(f\"{pc:04x}: {name} 0x{data.hex()}\")
[codex:1185006] 
[codex:1185006] for s in [0x0815,0x10b8,0x1849,0x1861,0x20c3]:
[codex:1185006]     print('--- around', hex(s))
[codex:1185006]     show(s, 30)
[codex:1185006] PY" in /tmp/codex-multi-qmdb0_vy succeeded in 29ms:
[codex:1185006] --- around 0x815
[codex:1185006] 0815: SSTORE
[codex:1185006] 0816: AND
[codex:1185006] 0817: PUSH32 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b
[codex:1185006] --- around 0x10b8
[codex:1185006] 109e: TIMESTAMP
[codex:1185006] 109f: PUSH1 0x20
[codex:1185006] 10a1: SHL
[codex:1185006] 10a2: AND
[codex:1185006] 10a3: SWAP2
[codex:1185006] 10a4: PUSH1 0xe0
[codex:1185006] 10a6: SHR
[codex:1185006] 10a7: SWAP1
[codex:1185006] 10a8: PUSH10 0xffffffffffffffffffff
[codex:1185006] 10b3: NOT
[codex:1185006] 10b4: AND
[codex:1185006] 10b5: OR
[codex:1185006] 10b6: OR
[codex:1185006] 10b7: SWAP1
[codex:1185006] 10b8: SSTORE
[codex:1185006] 
[codex:1185006] thinking
[codex:1185006] **Analyzing access control near storage writes**
[codex:1185006] exec
[codex:1185006] /bin/bash -lc "python - <<'PY'
[codex:1185006] hexdata=open('/tmp/codex-multi-qmdb0_vy/BYTECODE_BUNDLE.txt').read().split('0x',1)[1]
[codex:1185006] hexdata=''.join(c for c in hexdata if c in '0123456789abcdefABCDEF')
[codex:1185006] code=bytes.fromhex(hexdata)
[codex:1185006] # opmap
[codex:1185006] opmap={i: f'PUSH{i-0x5f}' for i in range(0x60,0x80)}
[codex:1185006] ops_list=[(0x00,'STOP'),(0x01,'ADD'),(0x02,'MUL'),(0x03,'SUB'),(0x04,'DIV'),(0x05,'SDIV'),(0x06,'MOD'),(0x07,'SMOD'),(0x08,'ADDMOD'),(0x09,'MULMOD'),(0x0a,'EXP'),(0x0b,'SIGNEXTEND'),(0x10,'LT'),(0x11,'GT'),(0x12,'SLT'),(0x13,'SGT'),(0x14,'EQ'),(0x15,'ISZERO'),(0x16,'AND'),(0x17,'OR'),(0x18,'XOR'),(0x19,'NOT'),(0x1a,'BYTE'),(0x1b,'SHL'),(0x1c,'SHR'),(0x1d,'SAR'),(0x20,'SHA3'),(0x30,'ADDRESS'),(0x31,'BALANCE'),(0x32,'ORIGIN'),(0x33,'CALLER'),(0x34,'CALLVALUE'),(0x35,'CALLDATALOAD'),(0x36,'CALLDATASIZE'),(0x37,'CALLDATACOPY'),(0x38,'CODESIZE'),(0x39,'CODECOPY'),(0x3a,'GASPRICE'),(0x3b,'EXTCODESIZE'),(0x3c,'EXTCODECOPY'),(0x3d,'RETURNDATASIZE'),(0x3e,'RETURNDATACOPY'),(0x3f,'EXTCODEHASH'),(0x40,'BLOCKHASH'),(0x41,'COINBASE'),(0x42,'TIMESTAMP'),(0x43,'NUMBER'),(0x44,'DIFFICULTY'),(0x45,'GASLIMIT'),(0x46,'CHAINID'),(0x47,'SELFBALANCE'),(0x48,'BASEFEE'),(0x50,'POP'),(0x51,'MLOAD'),(0x52,'MSTORE'),(0x53,'MSTORE8'),(0x54,'SLOAD'),(0x55,'SSTORE'),(0x56,'JUMP'),(0x57,'JUMPI'),(0x58,'PC'),(0x59,'MSIZE'),(0x5a,'GAS'),(0x5b,'JUMPDEST'),(0x80,'DUP1'),(0x81,'DUP2'),(0x82,'DUP3'),(0x83,'DUP4'),(0x84,'DUP5'),(0x85,'DUP6'),(0x86,'DUP7'),(0x87,'DUP8'),(0x88,'DUP9'),(0x89,'DUP10'),(0x8a,'DUP11'),(0x8b,'DUP12'),(0x8c,'DUP13'),(0x8d,'DUP14'),(0x8e,'DUP15'),(0x8f,'DUP16'),(0x90,'SWAP1'),(0x91,'SWAP2'),(0x92,'SWAP3'),(0x93,'SWAP4'),(0x94,'SWAP5'),(0x95,'SWAP6'),(0x96,'SWAP7'),(0x97,'SWAP8'),(0x98,'SWAP9'),(0x99,'SWAP10'),(0x9a,'SWAP11'),(0x9b,'SWAP12'),(0x9c,'SWAP13'),(0x9d,'SWAP14'),(0x9e,'SWAP15'),(0x9f,'SWAP16'),(0xa0,'LOG0'),(0xa1,'LOG1'),(0xa2,'LOG2'),(0xa3,'LOG3'),(0xa4,'LOG4'),(0xf0,'CREATE'),(0xf1,'CALL'),(0xf2,'CALLCODE'),(0xf3,'RETURN'),(0xf4,'DELEGATECALL'),(0xf5,'CREATE2'),(0xfa,'STATICCALL'),(0xfd,'REVERT'),(0xfe,'INVALID'),(0xff,'SELFDESTRUCT')]
[codex:1185006] for k,v in ops_list:
[codex:1185006]     opmap[k]=v
[codex:1185006] 
[codex:1185006] ops=[]
[codex:1185006] i=0
[codex:1185006] while i<len(code):
[codex:1185006]     op=code[i]
[codex:1185006]     name=opmap.get(op, f'OP_{op:02x}')
[codex:1185006]     if 0x60<=op<=0x7f:
[codex:1185006]         n=op-0x5f
[codex:1185006]         data=code[i+1:i+1+n]
[codex:1185006]         ops.append((i,name,data))
[codex:1185006]         i+=1+n
[codex:1185006]     else:
[codex:1185006]         ops.append((i,name,None))
[codex:1185006]         i+=1
[codex:1185006] 
[codex:1185006] 
[codex:1185006] def show(start, end):
[codex:1185006]     for pc,name,data in ops:
[codex:1185006]         if start<=pc<=end:
[codex:1185006]             if data is None:
[codex:1185006]                 print(f\"{pc:04x}: {name}\")
[codex:1185006]             else:
[codex:1185006]                 print(f\"{pc:04x}: {name} 0x{data.hex()}\")
[codex:1185006] 
[codex:1185006] show(0x1070,0x10f0)
[codex:1185006] PY" in /tmp/codex-multi-qmdb0_vy succeeded in 28ms:
[codex:1185006] 1070: PUSH1 0xa0
[codex:1185006] 1072: SHL
[codex:1185006] 1073: SUB
[codex:1185006] 1074: AND
[codex:1185006] 1075: EQ
[codex:1185006] 1076: ISZERO
[codex:1185006] 1077: DUP1
[codex:1185006] 1078: PUSH2 0x10bd
[codex:1185006] 107b: JUMPI
[codex:1185006] 107c: JUMPDEST
[codex:1185006] 107d: PUSH2 0x061d
[codex:1185006] 1080: JUMPI
[codex:1185006] 1081: PUSH1 0x00
[codex:1185006] 1083: DUP1
[codex:1185006] 1084: MLOAD
[codex:1185006] 1085: PUSH1 0x20
[codex:1185006] 1087: PUSH2 0x2171
[codex:1185006] 108a: DUP4
[codex:1185006] 108b: CODECOPY
[codex:1185006] 108c: DUP2
[codex:1185006] 
[codex:1185006] thinking
[codex:1185006] **Analyzing runtime bytecode security**
[codex:1185006] 
[codex:1185006] I'm piecing together how the contract's bytecode checks caller permissions around critical storage updates and delegatecalls, seeing that privileged functions seem guarded by entrypoint or self checks. It looks like a proxy or proxy-like pattern with delegatecall in fallback, but without obvious missing access controls from the bytecode alone. Since no concrete issues stand out, I'll prepare a JSON output indicating no findings with a summary noting the limited visibility from disassembly alone.
[codex:1185006] codex
[codex:1185006] {"no_findings":true,"summary":"Reviewed the runtime bytecode bundle; no concrete, explainable vulnerabilities could be confirmed from bytecode/disassembly patterns alone.","findings":[]}
[codex:1185006] tokens used
[codex:1185006] 130,429
[codex:1185006] {"no_findings":true,"summary":"Reviewed the runtime bytecode bundle; no concrete, explainable vulnerabilities could be confirmed from bytecode/disassembly patterns alone.","findings":[]}
Metadata
{
    "codex": {
        "ran_at": "2025-12-29T06:46:56.389280+00:00",
        "returncode": 0
    },
    "summary": "Reviewed the runtime bytecode bundle; no concrete, explainable vulnerabilities could be confirmed from bytecode/disassembly patterns alone.",
    "raw_final": {
        "summary": "Reviewed the runtime bytecode bundle; no concrete, explainable vulnerabilities could be confirmed from bytecode/disassembly patterns alone.",
        "findings": [],
        "no_findings": true
    },
    "no_findings": true,
    "schema_version": 1
}

Opcode Heuristics

tool.cast_disasm
Delegatecall
2
Selfdestruct
0
CREATE2
0
CALL-family (heavy)
14
EXT*/BALANCE
4
Total opcodes
5326
Flags
delegatecall_present call_family_heavy
View cast disassembly output
00000000: PUSH1 0x80
00000002: PUSH1 0x40
00000004: MSTORE
00000005: PUSH1 0x04
00000007: CALLDATASIZE
00000008: LT
00000009: ISZERO
0000000a: PUSH2 0x001d
0000000d: JUMPI
0000000e: JUMPDEST
0000000f: CALLDATASIZE
00000010: PUSH2 0x1159
00000013: JUMPI
00000014: PUSH2 0x001b
00000017: PUSH2 0x2047
0000001a: JUMP
0000001b: JUMPDEST
0000001c: STOP
0000001d: JUMPDEST
0000001e: PUSH1 0x00
00000020: CALLDATALOAD
00000021: PUSH1 0xe0
00000023: SHR
00000024: DUP1
00000025: PUSH4 0x06fdde03
0000002a: EQ
0000002b: PUSH2 0x019d
0000002e: JUMPI
0000002f: DUP1
00000030: PUSH4 0x0b3dc354
00000035: EQ
00000036: PUSH2 0x0198
00000039: JUMPI
0000003a: DUP1
0000003b: PUSH4 0x150b7a02
00000040: EQ
00000041: PUSH2 0x0193
00000044: JUMPI
00000045: DUP1
00000046: PUSH4 0x1626ba7e
0000004b: EQ
0000004c: PUSH2 0x018e
0000004f: JUMPI
00000050: DUP1
00000051: PUSH4 0x29f8b174
00000056: EQ
00000057: PUSH2 0x0189
0000005a: JUMPI
0000005b: DUP1
0000005c: PUSH4 0x333daf92
00000061: EQ
00000062: PUSH2 0x0184
00000065: JUMPI
00000066: DUP1
00000067: PUSH4 0x34fcd5be
0000006c: EQ
0000006d: PUSH2 0x017f
00000070: JUMPI
00000071: DUP1
00000072: PUSH4 0x3659cfe6
00000077: EQ
00000078: PUSH2 0x017a
0000007b: JUMPI
0000007c: DUP1
0000007d: PUSH4 0x3a871cdd
00000082: EQ
00000083: PUSH2 0x0175
00000086: JUMPI
00000087: DUP1
00000088: PUSH4 0x3e1b0812
0000008d: EQ
0000008e: PUSH2 0x0170
00000091: JUMPI
00000092: DUP1
00000093: PUSH4 0x51166ba0
00000098: EQ
00000099: PUSH2 0x016b
0000009c: JUMPI
0000009d: DUP1
0000009e: PUSH4 0x51945447
000000a3: EQ
000000a4: PUSH2 0x0166
000000a7: JUMPI
000000a8: DUP1
000000a9: PUSH4 0x54fd4d50
000000ae: EQ
000000af: PUSH2 0x0161
000000b2: JUMPI
000000b3: DUP1
000000b4: PUSH4 0x55b14f50
000000b9: EQ
000000ba: PUSH2 0x015c
000000bd: JUMPI
000000be: DUP1
000000bf: PUSH4 0x57b75047
000000c4: EQ
000000c5: PUSH2 0x0157
000000c8: JUMPI
000000c9: DUP1
000000ca: PUSH4 0x84b0196e
000000cf: EQ
000000d0: PUSH2 0x0152
000000d3: JUMPI
000000d4: DUP1
000000d5: PUSH4 0x88e7fd06
000000da: EQ
000000db: PUSH2 0x014d
000000de: JUMPI
000000df: DUP1
000000e0: PUSH4 0xb0d691fe
000000e5: EQ
000000e6: PUSH2 0x0148
000000e9: JUMPI
000000ea: DUP1
000000eb: PUSH4 0xb68df16d
000000f0: EQ
000000f1: PUSH2 0x0143
000000f4: JUMPI
000000f5: DUP1
000000f6: PUSH4 0xbc197c81
000000fb: EQ
000000fc: PUSH2 0x013e
000000ff: JUMPI
00000100: DUP1
00000101: PUSH4 0xd087d288
00000106: EQ
00000107: PUSH2 0x0139
0000010a: JUMPI
0000010b: DUP1
0000010c: PUSH4 0xd1f57894
00000111: EQ
00000112: PUSH2 0x0134
00000115: JUMPI
00000116: DUP1
00000117: PUSH4 0xd5416221
0000011c: EQ
0000011d: PUSH2 0x012f
00000120: JUMPI
00000121: PUSH4 0xf23a6e61
00000126: SUB
00000127: PUSH2 0x000e
0000012a: JUMPI
0000012b: PUSH2 0x10c7
0000012e: JUMP
0000012f: JUMPDEST
00000130: PUSH2 0x1035
00000133: JUMP
00000134: JUMPDEST
00000135: PUSH2 0x0f99
00000138: JUMP
00000139: JUMPDEST
0000013a: PUSH2 0x0f1a
0000013d: JUMP
0000013e: JUMPDEST
0000013f: PUSH2 0x0e8b
00000142: JUMP
00000143: JUMPDEST
00000144: PUSH2 0x0dae
00000147: JUMP
00000148: JUMPDEST
00000149: PUSH2 0x0d69
0000014c: JUMP
0000014d: JUMPDEST
0000014e: PUSH2 0x0d34
00000151: JUMP
00000152: JUMPDEST
00000153: PUSH2 0x0c8c
00000156: JUMP
00000157: JUMPDEST
00000158: PUSH2 0x0c55
0000015b: JUMP
0000015c: JUMPDEST
0000015d: PUSH2 0x0b6f
00000160: JUMP
00000161: JUMPDEST
00000162: PUSH2 0x0b1b
00000165: JUMP
00000166: JUMPDEST
00000167: PUSH2 0x0a16
0000016a: JUMP
0000016b: JUMPDEST
0000016c: PUSH2 0x094d
0000016f: JUMP
00000170: JUMPDEST
00000171: PUSH2 0x0889
00000174: JUMP
00000175: JUMPDEST
00000176: PUSH2 0x0847
00000179: JUMP
0000017a: JUMPDEST
0000017b: PUSH2 0x07a1
0000017e: JUMP
0000017f: JUMPDEST
00000180: PUSH2 0x06be
00000183: JUMP
00000184: JUMPDEST
00000185: PUSH2 0x0639
00000188: JUMP
00000189: JUMPDEST
0000018a: PUSH2 0x0491
0000018d: JUMP
0000018e: JUMPDEST
0000018f: PUSH2 0x043e
00000192: JUMP
00000193: JUMPDEST
00000194: PUSH2 0x03b1
00000197: JUMP
00000198: JUMPDEST
00000199: PUSH2 0x0332
0000019c: JUMP
0000019d: JUMPDEST
0000019e: PUSH2 0x02fe
000001a1: JUMP
000001a2: JUMPDEST
000001a3: PUSH1 0x00
000001a5: SWAP2
000001a6: SUB
000001a7: SLT
000001a8: PUSH2 0x01ad
000001ab: JUMPI
000001ac: JUMP
000001ad: JUMPDEST
000001ae: PUSH1 0x00
000001b0: DUP1
000001b1: REVERT
000001b2: JUMPDEST
000001b3: PUSH4 0x4e487b71
000001b8: PUSH1 0xe0
000001ba: SHL
000001bb: PUSH1 0x00
000001bd: MSTORE
000001be: PUSH1 0x41
000001c0: PUSH1 0x04
000001c2: MSTORE
000001c3: PUSH1 0x24
000001c5: PUSH1 0x00
000001c7: REVERT
000001c8: JUMPDEST
000001c9: PUSH1 0x01
000001cb: PUSH1 0x01
000001cd: PUSH1 0x40
000001cf: SHL
000001d0: SUB
000001d1: DUP2
000001d2: GT
000001d3: PUSH2 0x01db
000001d6: JUMPI
000001d7: PUSH1 0x40
000001d9: MSTORE
000001da: JUMP
000001db: JUMPDEST
000001dc: PUSH2 0x01b2
000001df: JUMP
000001e0: JUMPDEST
000001e1: PUSH1 0x60
000001e3: DUP2
000001e4: ADD
000001e5: SWAP1
000001e6: DUP2
000001e7: LT
000001e8: PUSH1 0x01
000001ea: PUSH1 0x01
000001ec: PUSH1 0x40
000001ee: SHL
000001ef: SUB
000001f0: DUP3
000001f1: GT
000001f2: OR
000001f3: PUSH2 0x01db
000001f6: JUMPI
000001f7: PUSH1 0x40
000001f9: MSTORE
000001fa: JUMP
000001fb: JUMPDEST
000001fc: PUSH1 0x80
000001fe: DUP2
000001ff: ADD
00000200: SWAP1
00000201: DUP2
00000202: LT
00000203: PUSH1 0x01
00000205: PUSH1 0x01
00000207: PUSH1 0x40
00000209: SHL
0000020a: SUB
0000020b: DUP3
0000020c: GT
0000020d: OR
0000020e: PUSH2 0x01db
00000211: JUMPI
00000212: PUSH1 0x40
00000214: MSTORE
00000215: JUMP
00000216: JUMPDEST
00000217: PUSH1 0x40
00000219: DUP2
0000021a: ADD
0000021b: SWAP1
0000021c: DUP2
0000021d: LT
0000021e: PUSH1 0x01
00000220: PUSH1 0x01
00000222: PUSH1 0x40
00000224: SHL
00000225: SUB
00000226: DUP3
00000227: GT
00000228: OR
00000229: PUSH2 0x01db
0000022c: JUMPI
0000022d: PUSH1 0x40
0000022f: MSTORE
00000230: JUMP
00000231: JUMPDEST
00000232: PUSH1 0xc0
00000234: DUP2
00000235: ADD
00000236: SWAP1
00000237: DUP2
00000238: LT
00000239: PUSH1 0x01
0000023b: PUSH1 0x01
0000023d: PUSH1 0x40
0000023f: SHL
00000240: SUB
00000241: DUP3
00000242: GT
00000243: OR
00000244: PUSH2 0x01db
00000247: JUMPI
00000248: PUSH1 0x40
0000024a: MSTORE
0000024b: JUMP
0000024c: JUMPDEST
0000024d: SWAP1
0000024e: PUSH1 0x1f
00000250: DUP1
00000251: NOT
00000252: SWAP2
00000253: ADD
00000254: AND
00000255: DUP2
00000256: ADD
00000257: SWAP1
00000258: DUP2
00000259: LT
0000025a: PUSH1 0x01
0000025c: PUSH1 0x01
0000025e: PUSH1 0x40
00000260: SHL
00000261: SUB
00000262: DUP3
00000263: GT
00000264: OR
00000265: PUSH2 0x01db
00000268: JUMPI
00000269: PUSH1 0x40
0000026b: MSTORE
0000026c: JUMP
0000026d: JUMPDEST
0000026e: PUSH1 0x40
00000270: MLOAD
00000271: SWAP1
00000272: PUSH2 0x027a
00000275: DUP3
00000276: PUSH2 0x01fb
00000279: JUMP
0000027a: JUMPDEST
0000027b: JUMP
0000027c: JUMPDEST
0000027d: PUSH1 0x40
0000027f: MLOAD
00000280: SWAP1
00000281: PUSH2 0x0160
00000284: DUP3
00000285: ADD
00000286: DUP3
00000287: DUP2
00000288: LT
00000289: PUSH1 0x01
0000028b: PUSH1 0x01
0000028d: PUSH1 0x40
0000028f: SHL
00000290: SUB
00000291: DUP3
00000292: GT
00000293: OR
00000294: PUSH2 0x01db
00000297: JUMPI
00000298: PUSH1 0x40
0000029a: MSTORE
0000029b: JUMP
0000029c: JUMPDEST
0000029d: PUSH1 0x40
0000029f: MLOAD
000002a0: SWAP1
000002a1: PUSH2 0x02a9
000002a4: DUP3
000002a5: PUSH2 0x0216
000002a8: JUMP
000002a9: JUMPDEST
000002aa: PUSH1 0x06
000002ac: DUP3
000002ad: MSTORE
000002ae: PUSH6 0x12d95c9b995b
000002b5: PUSH1 0xd2
000002b7: SHL
000002b8: PUSH1 0x20
000002ba: DUP4
000002bb: ADD
000002bc: MSTORE
000002bd: JUMP
000002be: JUMPDEST
000002bf: SWAP2
000002c0: SWAP1
000002c1: DUP3
000002c2: MLOAD
000002c3: SWAP3
000002c4: DUP4
000002c5: DUP3
000002c6: MSTORE
000002c7: PUSH1 0x00
000002c9: JUMPDEST
000002ca: DUP5
000002cb: DUP2
000002cc: LT
000002cd: PUSH2 0x02ea
000002d0: JUMPI
000002d1: POP
000002d2: POP
000002d3: DUP3
000002d4: PUSH1 0x00
000002d6: PUSH1 0x20
000002d8: DUP1
000002d9: SWAP5
000002da: SWAP6
000002db: DUP5
000002dc: ADD
000002dd: ADD
000002de: MSTORE
000002df: PUSH1 0x1f
000002e1: DUP1
000002e2: NOT
000002e3: SWAP2
000002e4: ADD
000002e5: AND
000002e6: ADD
000002e7: ADD
000002e8: SWAP1
000002e9: JUMP
000002ea: JUMPDEST
000002eb: PUSH1 0x20
000002ed: DUP2
000002ee: DUP4
000002ef: ADD
000002f0: DUP2
000002f1: ADD
000002f2: MLOAD
000002f3: DUP5
000002f4: DUP4
000002f5: ADD
000002f6: DUP3
000002f7: ADD
000002f8: MSTORE
000002f9: ADD
000002fa: PUSH2 0x02c9
000002fd: JUMP
000002fe: JUMPDEST
000002ff: CALLVALUE
00000300: PUSH2 0x01ad
00000303: JUMPI
00000304: PUSH1 0x00
00000306: CALLDATASIZE
00000307: PUSH1 0x03
00000309: NOT
0000030a: ADD
0000030b: SLT
0000030c: PUSH2 0x01ad
0000030f: JUMPI
00000310: PUSH2 0x032e
00000313: PUSH2 0x031a
00000316: PUSH2 0x029c
00000319: JUMP
0000031a: JUMPDEST
0000031b: PUSH1 0x40
0000031d: MLOAD
0000031e: SWAP2
0000031f: DUP3
00000320: SWAP2
00000321: PUSH1 0x20
00000323: DUP4
00000324: MSTORE
00000325: PUSH1 0x20
00000327: DUP4
00000328: ADD
00000329: SWAP1
0000032a: PUSH2 0x02be
0000032d: JUMP
0000032e: JUMPDEST
0000032f: SUB
00000330: SWAP1
00000331: RETURN
00000332: JUMPDEST
00000333: CALLVALUE
00000334: PUSH2 0x01ad
00000337: JUMPI
00000338: PUSH1 0x00
0000033a: CALLDATASIZE
0000033b: PUSH1 0x03
0000033d: NOT
0000033e: ADD
0000033f: SLT
00000340: PUSH2 0x01ad
00000343: JUMPI
00000344: PUSH1 0x20
00000346: PUSH1 0x00
00000348: DUP1
00000349: MLOAD
0000034a: PUSH1 0x20
0000034c: PUSH2 0x2171
0000034f: DUP4
00000350: CODECOPY
00000351: DUP2
00000352: MLOAD
00000353: SWAP2
00000354: MSTORE
00000355: SLOAD
00000356: PUSH1 0x50
00000358: SHR
00000359: PUSH1 0x40
0000035b: MLOAD
0000035c: SWAP1
0000035d: PUSH1 0x01
0000035f: DUP1
00000360: PUSH1 0xa0
00000362: SHL
00000363: SUB
00000364: AND
00000365: DUP2
00000366: MSTORE
00000367: RETURN
00000368: JUMPDEST
00000369: PUSH1 0x01
0000036b: PUSH1 0x01
0000036d: PUSH1 0xa0
0000036f: SHL
00000370: SUB
00000371: DUP2
00000372: AND
00000373: SUB
00000374: PUSH2 0x01ad
00000377: JUMPI
00000378: JUMP
00000379: JUMPDEST
0000037a: CALLDATALOAD
0000037b: SWAP1
0000037c: PUSH2 0x027a
0000037f: DUP3
00000380: PUSH2 0x0368
00000383: JUMP
00000384: JUMPDEST
00000385: SWAP2
00000386: DUP2
00000387: PUSH1 0x1f
00000389: DUP5
0000038a: ADD
0000038b: SLT
0000038c: ISZERO
0000038d: PUSH2 0x01ad
00000390: JUMPI
00000391: DUP3
00000392: CALLDATALOAD
00000393: SWAP2
00000394: PUSH1 0x01
00000396: PUSH1 0x01
00000398: PUSH1 0x40
0000039a: SHL
0000039b: SUB
0000039c: DUP4
0000039d: GT
0000039e: PUSH2 0x01ad
000003a1: JUMPI
000003a2: PUSH1 0x20
000003a4: DUP4
000003a5: DUP2
000003a6: DUP7
000003a7: ADD
000003a8: SWAP6
000003a9: ADD
000003aa: ADD
000003ab: GT
000003ac: PUSH2 0x01ad
000003af: JUMPI
000003b0: JUMP
000003b1: JUMPDEST
000003b2: CALLVALUE
000003b3: PUSH2 0x01ad
000003b6: JUMPI
000003b7: PUSH1 0x80
000003b9: CALLDATASIZE
000003ba: PUSH1 0x03
000003bc: NOT
000003bd: ADD
000003be: SLT
000003bf: PUSH2 0x01ad
000003c2: JUMPI
000003c3: PUSH2 0x03cd
000003c6: PUSH1 0x04
000003c8: CALLDATALOAD
000003c9: PUSH2 0x0368
000003cc: JUMP
000003cd: JUMPDEST
000003ce: PUSH2 0x03d8
000003d1: PUSH1 0x24
000003d3: CALLDATALOAD
000003d4: PUSH2 0x0368
000003d7: JUMP
000003d8: JUMPDEST
000003d9: PUSH1 0x64
000003db: CALLDATALOAD
000003dc: PUSH1 0x01
000003de: PUSH1 0x01
000003e0: PUSH1 0x40
000003e2: SHL
000003e3: SUB
000003e4: DUP2
000003e5: GT
000003e6: PUSH2 0x01ad
000003e9: JUMPI
000003ea: PUSH2 0x03f7
000003ed: SWAP1
000003ee: CALLDATASIZE
000003ef: SWAP1
000003f0: PUSH1 0x04
000003f2: ADD
000003f3: PUSH2 0x0384
000003f6: JUMP
000003f7: JUMPDEST
000003f8: POP
000003f9: POP
000003fa: PUSH1 0x40
000003fc: MLOAD
000003fd: PUSH4 0x0a85bd01
00000402: PUSH1 0xe1
00000404: SHL
00000405: DUP2
00000406: MSTORE
00000407: PUSH1 0x20
00000409: SWAP1
0000040a: RETURN
0000040b: JUMPDEST
0000040c: SWAP1
0000040d: PUSH1 0x40
0000040f: PUSH1 0x03
00000411: NOT
00000412: DUP4
00000413: ADD
00000414: SLT
00000415: PUSH2 0x01ad
00000418: JUMPI
00000419: PUSH1 0x04
0000041b: CALLDATALOAD
0000041c: SWAP2
0000041d: PUSH1 0x24
0000041f: CALLDATALOAD
00000420: SWAP1
00000421: PUSH1 0x01
00000423: PUSH1 0x01
00000425: PUSH1 0x40
00000427: SHL
00000428: SUB
00000429: DUP3
0000042a: GT
0000042b: PUSH2 0x01ad
0000042e: JUMPI
0000042f: PUSH2 0x043a
00000432: SWAP2
00000433: PUSH1 0x04
00000435: ADD
00000436: PUSH2 0x0384
00000439: JUMP
0000043a: JUMPDEST
0000043b: SWAP1
0000043c: SWAP2
0000043d: JUMP
0000043e: JUMPDEST
0000043f: CALLVALUE
00000440: PUSH2 0x01ad
00000443: JUMPI
00000444: PUSH1 0x20
00000446: PUSH2 0x0457
00000449: PUSH2 0x0451
0000044c: CALLDATASIZE
0000044d: PUSH2 0x040b
00000450: JUMP
00000451: JUMPDEST
00000452: SWAP2
00000453: PUSH2 0x1c33
00000456: JUMP
00000457: JUMPDEST
00000458: PUSH1 0x40
0000045a: MLOAD
0000045b: PUSH1 0x01
0000045d: PUSH1 0x01
0000045f: PUSH1 0xe0
00000461: SHL
00000462: SUB
00000463: NOT
00000464: SWAP1
00000465: SWAP2
00000466: AND
00000467: DUP2
00000468: MSTORE
00000469: RETURN
0000046a: JUMPDEST
0000046b: PUSH1 0x04
0000046d: CALLDATALOAD
0000046e: SWAP1
0000046f: PUSH1 0x01
00000471: PUSH1 0x01
00000473: PUSH1 0xe0
00000475: SHL
00000476: SUB
00000477: NOT
00000478: DUP3
00000479: AND
0000047a: DUP3
0000047b: SUB
0000047c: PUSH2 0x01ad
0000047f: JUMPI
00000480: JUMP
00000481: JUMPDEST
00000482: PUSH6 0xffffffffffff
00000489: DUP2
0000048a: AND
0000048b: SUB
0000048c: PUSH2 0x01ad
0000048f: JUMPI
00000490: JUMP
00000491: JUMPDEST
00000492: PUSH1 0xc0
00000494: CALLDATASIZE
00000495: PUSH1 0x03
00000497: NOT
00000498: ADD
00000499: SLT
0000049a: PUSH2 0x01ad
0000049d: JUMPI
0000049e: PUSH2 0x04a5
000004a1: PUSH2 0x046a
000004a4: JUMP
000004a5: JUMPDEST
000004a6: PUSH1 0x24
000004a8: CALLDATALOAD
000004a9: SWAP1
000004aa: PUSH2 0x04b2
000004ad: DUP3
000004ae: PUSH2 0x0368
000004b1: JUMP
000004b2: JUMPDEST
000004b3: PUSH1 0x44
000004b5: CALLDATALOAD
000004b6: SWAP1
000004b7: PUSH2 0x04bf
000004ba: DUP3
000004bb: PUSH2 0x0368
000004be: JUMP
000004bf: JUMPDEST
000004c0: PUSH1 0x64
000004c2: CALLDATALOAD
000004c3: PUSH2 0x04cb
000004c6: DUP2
000004c7: PUSH2 0x0481
000004ca: JUMP
000004cb: JUMPDEST
000004cc: PUSH1 0x84
000004ce: CALLDATALOAD
000004cf: SWAP4
000004d0: PUSH2 0x04d8
000004d3: DUP6
000004d4: PUSH2 0x0481
000004d7: JUMP
000004d8: JUMPDEST
000004d9: PUSH1 0xa4
000004db: CALLDATALOAD
000004dc: PUSH1 0x01
000004de: PUSH1 0x01
000004e0: PUSH1 0x40
000004e2: SHL
000004e3: SUB
000004e4: DUP2
000004e5: GT
000004e6: PUSH2 0x01ad
000004e9: JUMPI
000004ea: PUSH2 0x04f7
000004ed: SWAP1
000004ee: CALLDATASIZE
000004ef: SWAP1
000004f0: PUSH1 0x04
000004f2: ADD
000004f3: PUSH2 0x0384
000004f6: JUMP
000004f7: JUMPDEST
000004f8: SWAP6
000004f9: SWAP1
000004fa: SWAP5
000004fb: PUSH1 0x01
000004fd: PUSH1 0x01
000004ff: PUSH1 0xa0
00000501: SHL
00000502: SUB
00000503: SWAP4
00000504: CALLER
00000505: PUSH32 0x0000000000000000000000005ff137d4b0fdcd49dca30c7cf57e578a026d2789
00000526: DUP7
00000527: AND
00000528: EQ
00000529: ISZERO
0000052a: DUP1
0000052b: PUSH2 0x062f
0000052e: JUMPI
0000052f: JUMPDEST
00000530: PUSH2 0x061d
00000533: JUMPI
00000534: DUP5
00000535: SWAP3
00000536: PUSH2 0x0564
00000539: PUSH2 0x0590
0000053c: SWAP3
0000053d: PUSH2 0x0555
00000540: PUSH2 0x0547
00000543: PUSH2 0x026d
00000546: JUMP
00000547: JUMPDEST
00000548: PUSH6 0xffffffffffff
0000054f: SWAP1
00000550: SWAP5
00000551: AND
00000552: DUP5
00000553: MSTORE
00000554: JUMP
00000555: JUMPDEST
00000556: PUSH6 0xffffffffffff
0000055d: AND
0000055e: PUSH1 0x20
00000560: DUP4
00000561: ADD
00000562: MSTORE
00000563: JUMP
00000564: JUMPDEST
00000565: PUSH1 0x01
00000567: PUSH1 0x01
00000569: PUSH1 0xa0
0000056b: SHL
0000056c: SUB
0000056d: DUP6
0000056e: AND
0000056f: PUSH1 0x40
00000571: DUP3
00000572: ADD
00000573: MSTORE
00000574: PUSH1 0x01
00000576: PUSH1 0x01
00000578: PUSH1 0xa0
0000057a: SHL
0000057b: SUB
0000057c: DUP4
0000057d: AND
0000057e: PUSH1 0x60
00000580: DUP3
00000581: ADD
00000582: MSTORE
00000583: PUSH2 0x058b
00000586: DUP8
00000587: PUSH2 0x1121
0000058a: JUMP
0000058b: JUMPDEST
0000058c: PUSH2 0x1803
0000058f: JUMP
00000590: JUMPDEST
00000591: AND
00000592: SWAP4
00000593: DUP5
00000594: EXTCODESIZE
00000595: ISZERO
00000596: PUSH2 0x01ad
00000599: JUMPI
0000059a: PUSH1 0x40
0000059c: MLOAD
0000059d: SWAP1
0000059e: PUSH4 0x064acaab
000005a3: PUSH1 0xe1
000005a5: SHL
000005a6: DUP3
000005a7: MSTORE
000005a8: DUP2
000005a9: DUP1
000005aa: PUSH2 0x05ba
000005ad: PUSH1 0x00
000005af: SWAP10
000005b0: DUP11
000005b1: SWAP5
000005b2: PUSH1 0x04
000005b4: DUP5
000005b5: ADD
000005b6: PUSH2 0x18b6
000005b9: JUMP
000005ba: JUMPDEST
000005bb: SUB
000005bc: DUP2
000005bd: DUP4
000005be: DUP10
000005bf: GAS
000005c0: CALL
000005c1: DUP1
000005c2: ISZERO
000005c3: PUSH2 0x0618
000005c6: JUMPI
000005c7: PUSH2 0x05ff
000005ca: JUMPI
000005cb: JUMPDEST
000005cc: POP
000005cd: AND
000005ce: SWAP1
000005cf: PUSH1 0x01
000005d1: PUSH1 0x01
000005d3: PUSH1 0xe0
000005d5: SHL
000005d6: SUB
000005d7: NOT
000005d8: AND
000005d9: PUSH32 0xed03d2572564284398470d3f266a693e29ddfff3eba45fc06c5e91013d321353
000005fa: DUP5
000005fb: DUP1
000005fc: LOG4
000005fd: DUP1
000005fe: RETURN
000005ff: JUMPDEST
00000600: DUP1
00000601: PUSH2 0x060c
00000604: PUSH2 0x0612
00000607: SWAP3
00000608: PUSH2 0x01c8
0000060b: JUMP
0000060c: JUMPDEST
0000060d: DUP1
0000060e: PUSH2 0x01a2
00000611: JUMP
00000612: JUMPDEST
00000613: CODESIZE
00000614: PUSH2 0x05cb
00000617: JUMP
00000618: JUMPDEST
00000619: PUSH2 0x154d
0000061c: JUMP
0000061d: JUMPDEST
0000061e: PUSH1 0x40
00000620: MLOAD
00000621: PUSH4 0x7046c88d
00000626: PUSH1 0xe0
00000628: SHL
00000629: DUP2
0000062a: MSTORE
0000062b: PUSH1 0x04
0000062d: SWAP1
0000062e: REVERT
0000062f: JUMPDEST
00000630: POP
00000631: ADDRESS
00000632: CALLER
00000633: EQ
00000634: ISZERO
00000635: PUSH2 0x052f
00000638: JUMP
00000639: JUMPDEST
0000063a: CALLVALUE
0000063b: PUSH2 0x01ad
0000063e: JUMPI
0000063f: PUSH1 0x20
00000641: PUSH2 0x0652
00000644: PUSH2 0x064c
00000647: CALLDATASIZE
00000648: PUSH2 0x040b
0000064b: JUMP
0000064c: JUMPDEST
0000064d: SWAP2
0000064e: PUSH2 0x1f8c
00000651: JUMP
00000652: JUMPDEST
00000653: PUSH1 0x40
00000655: MLOAD
00000656: SWAP1
00000657: DUP2
00000658: MSTORE
00000659: RETURN
0000065a: JUMPDEST
0000065b: SWAP3
0000065c: SWAP2
0000065d: SWAP3
0000065e: PUSH1 0x01
00000660: PUSH1 0x01
00000662: PUSH1 0x40
00000664: SHL
00000665: SUB
00000666: DUP3
00000667: GT
00000668: PUSH2 0x01db
0000066b: JUMPI
0000066c: PUSH1 0x40
0000066e: MLOAD
0000066f: SWAP2
00000670: PUSH2 0x0683
00000673: PUSH1 0x1f
00000675: DUP3
00000676: ADD
00000677: PUSH1 0x1f
00000679: NOT
0000067a: AND
0000067b: PUSH1 0x20
0000067d: ADD
0000067e: DUP5
0000067f: PUSH2 0x024c
00000682: JUMP
00000683: JUMPDEST
00000684: DUP3
00000685: SWAP5
00000686: DUP2
00000687: DUP5
00000688: MSTORE
00000689: DUP2
0000068a: DUP4
0000068b: ADD
0000068c: GT
0000068d: PUSH2 0x01ad
00000690: JUMPI
00000691: DUP3
00000692: DUP2
00000693: PUSH1 0x20
00000695: SWAP4
00000696: DUP5
00000697: PUSH1 0x00
00000699: SWAP7
0000069a: ADD
0000069b: CALLDATACOPY
0000069c: ADD
0000069d: ADD
0000069e: MSTORE
0000069f: JUMP
000006a0: JUMPDEST
000006a1: SWAP1
000006a2: DUP1
000006a3: PUSH1 0x1f
000006a5: DUP4
000006a6: ADD
000006a7: SLT
000006a8: ISZERO
000006a9: PUSH2 0x01ad
000006ac: JUMPI
000006ad: DUP2
000006ae: PUSH1 0x20
000006b0: PUSH2 0x06bb
000006b3: SWAP4
000006b4: CALLDATALOAD
000006b5: SWAP2
000006b6: ADD
000006b7: PUSH2 0x065a
000006ba: JUMP
000006bb: JUMPDEST
000006bc: SWAP1
000006bd: JUMP
000006be: JUMPDEST
000006bf: PUSH1 0x20
000006c1: DUP1
000006c2: PUSH1 0x03
000006c4: NOT
000006c5: CALLDATASIZE
000006c6: ADD
000006c7: SLT
000006c8: PUSH2 0x01ad
000006cb: JUMPI
000006cc: PUSH1 0x01
000006ce: PUSH1 0x01
000006d0: PUSH1 0x40
000006d2: SHL
000006d3: SUB
000006d4: PUSH1 0x04
000006d6: CALLDATALOAD
000006d7: DUP2
000006d8: DUP2
000006d9: GT
000006da: PUSH2 0x01ad
000006dd: JUMPI
000006de: CALLDATASIZE
000006df: PUSH1 0x23
000006e1: DUP3
000006e2: ADD
000006e3: SLT
000006e4: ISZERO
000006e5: PUSH2 0x01ad
000006e8: JUMPI
000006e9: DUP1
000006ea: PUSH1 0x04
000006ec: ADD
000006ed: CALLDATALOAD
000006ee: SWAP2
000006ef: DUP1
000006f0: DUP4
000006f1: GT
000006f2: PUSH2 0x01db
000006f5: JUMPI
000006f6: DUP3
000006f7: PUSH1 0x05
000006f9: SHL
000006fa: SWAP1
000006fb: PUSH1 0x40
000006fd: SWAP1
000006fe: DUP2
000006ff: MLOAD
00000700: SWAP5
00000701: PUSH2 0x070c
00000704: DUP8
00000705: DUP6
00000706: ADD
00000707: DUP8
00000708: PUSH2 0x024c
0000070b: JUMP
0000070c: JUMPDEST
0000070d: DUP6
0000070e: MSTORE
0000070f: DUP6
00000710: DUP6
00000711: ADD
00000712: SWAP2
00000713: PUSH1 0x24
00000715: DUP1
00000716: SWAP5
00000717: DUP7
00000718: ADD
00000719: ADD
0000071a: SWAP5
0000071b: CALLDATASIZE
0000071c: DUP7
0000071d: GT
0000071e: PUSH2 0x01ad
00000721: JUMPI
00000722: DUP5
00000723: DUP2
00000724: ADD
00000725: SWAP4
00000726: JUMPDEST
00000727: DUP7
00000728: DUP6
00000729: LT
0000072a: PUSH2 0x0736
0000072d: JUMPI
0000072e: PUSH2 0x001b
00000731: DUP9
00000732: PUSH2 0x121c
00000735: JUMP
00000736: JUMPDEST
00000737: DUP5
00000738: CALLDATALOAD
00000739: DUP5
0000073a: DUP2
0000073b: GT
0000073c: PUSH2 0x01ad
0000073f: JUMPI
00000740: DUP3
00000741: ADD
00000742: PUSH1 0x60
00000744: PUSH1 0x23
00000746: NOT
00000747: DUP3
00000748: CALLDATASIZE
00000749: SUB
0000074a: ADD
0000074b: SLT
0000074c: PUSH2 0x01ad
0000074f: JUMPI
00000750: DUP4
00000751: MLOAD
00000752: SWAP2
00000753: PUSH2 0x075b
00000756: DUP4
00000757: PUSH2 0x01e0
0000075a: JUMP
0000075b: JUMPDEST
0000075c: DUP8
0000075d: DUP3
0000075e: ADD
0000075f: CALLDATALOAD
00000760: PUSH2 0x0768
00000763: DUP2
00000764: PUSH2 0x0368
00000767: JUMP
00000768: JUMPDEST
00000769: DUP4
0000076a: MSTORE
0000076b: PUSH1 0x44
0000076d: DUP3
0000076e: ADD
0000076f: CALLDATALOAD
00000770: DUP12
00000771: DUP5
00000772: ADD
00000773: MSTORE
00000774: PUSH1 0x64
00000776: DUP3
00000777: ADD
00000778: CALLDATALOAD
00000779: SWAP3
0000077a: DUP7
0000077b: DUP5
0000077c: GT
0000077d: PUSH2 0x01ad
00000780: JUMPI
00000781: PUSH2 0x0792
00000784: DUP13
00000785: SWAP5
00000786: SWAP4
00000787: DUP11
00000788: DUP7
00000789: SWAP6
0000078a: CALLDATASIZE
0000078b: SWAP3
0000078c: ADD
0000078d: ADD
0000078e: PUSH2 0x06a0
00000791: JUMP
00000792: JUMPDEST
00000793: DUP7
00000794: DUP3
00000795: ADD
00000796: MSTORE
00000797: DUP2
00000798: MSTORE
00000799: ADD
0000079a: SWAP5
0000079b: ADD
0000079c: SWAP4
0000079d: PUSH2 0x0726
000007a0: JUMP
000007a1: JUMPDEST
000007a2: PUSH1 0x20
000007a4: CALLDATASIZE
000007a5: PUSH1 0x03
000007a7: NOT
000007a8: ADD
000007a9: SLT
000007aa: PUSH2 0x01ad
000007ad: JUMPI
000007ae: PUSH1 0x04
000007b0: CALLDATALOAD
000007b1: PUSH2 0x07b9
000007b4: DUP2
000007b5: PUSH2 0x0368
000007b8: JUMP
000007b9: JUMPDEST
000007ba: PUSH1 0x01
000007bc: PUSH1 0x01
000007be: PUSH1 0xa0
000007c0: SHL
000007c1: SUB
000007c2: SWAP1
000007c3: CALLER
000007c4: PUSH32 0x0000000000000000000000005ff137d4b0fdcd49dca30c7cf57e578a026d2789
000007e5: DUP4
000007e6: AND
000007e7: EQ
000007e8: ISZERO
000007e9: DUP1
000007ea: PUSH2 0x083d
000007ed: JUMPI
000007ee: JUMPDEST
000007ef: PUSH2 0x061d
000007f2: JUMPI
000007f3: DUP1
000007f4: PUSH32 0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc
00000815: SSTORE
00000816: AND
00000817: PUSH32 0xbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b
00000838: PUSH1 0x00
0000083a: DUP1
0000083b: LOG2
0000083c: STOP
0000083d: JUMPDEST
0000083e: POP
0000083f: ADDRESS
00000840: CALLER
00000841: EQ
00000842: ISZERO
00000843: PUSH2 0x07ee
00000846: JUMP
00000847: JUMPDEST
00000848: PUSH1 0x03
0000084a: NOT
0000084b: PUSH1 0x60
0000084d: CALLDATASIZE
0000084e: DUP3
0000084f: ADD
00000850: SLT
00000851: PUSH2 0x01ad
00000854: JUMPI
00000855: PUSH1 0x04
00000857: CALLDATALOAD
00000858: SWAP1
00000859: PUSH1 0x01
0000085b: PUSH1 0x01
0000085d: PUSH1 0x40
0000085f: SHL
00000860: SUB
00000861: DUP3
00000862: GT
00000863: PUSH2 0x01ad
00000866: JUMPI
00000867: PUSH2 0x0160
0000086a: SWAP1
0000086b: DUP3
0000086c: CALLDATASIZE
0000086d: SUB
0000086e: ADD
0000086f: SLT
00000870: PUSH2 0x01ad
00000873: JUMPI
00000874: PUSH2 0x0652
00000877: PUSH1 0x20
00000879: SWAP2
0000087a: PUSH1 0x44
0000087c: CALLDATALOAD
0000087d: SWAP1
0000087e: PUSH1 0x24
00000880: CALLDATALOAD
00000881: SWAP1
00000882: PUSH1 0x04
00000884: ADD
00000885: PUSH2 0x1559
00000888: JUMP
00000889: JUMPDEST
0000088a: CALLVALUE
0000088b: PUSH2 0x01ad
0000088e: JUMPI
0000088f: PUSH1 0x20
00000891: CALLDATASIZE
00000892: PUSH1 0x03
00000894: NOT
00000895: ADD
00000896: SLT
00000897: PUSH2 0x01ad
0000089a: JUMPI
0000089b: PUSH1 0x04
0000089d: CALLDATALOAD
0000089e: PUSH1 0x01
000008a0: PUSH1 0x01
000008a2: PUSH1 0xc0
000008a4: SHL
000008a5: SUB
000008a6: DUP2
000008a7: AND
000008a8: SWAP1
000008a9: DUP2
000008aa: SWAP1
000008ab: SUB
000008ac: PUSH2 0x01ad
000008af: JUMPI
000008b0: PUSH1 0x40
000008b2: MLOAD
000008b3: PUSH4 0x1aab3f0d
000008b8: PUSH1 0xe1
000008ba: SHL
000008bb: DUP2
000008bc: MSTORE
000008bd: ADDRESS
000008be: PUSH1 0x04
000008c0: DUP3
000008c1: ADD
000008c2: MSTORE
000008c3: PUSH1 0x24
000008c5: DUP2
000008c6: ADD
000008c7: SWAP2
000008c8: SWAP1
000008c9: SWAP2
000008ca: MSTORE
000008cb: PUSH1 0x20
000008cd: DUP2
000008ce: PUSH1 0x44
000008d0: DUP2
000008d1: PUSH32 0x0000000000000000000000005ff137d4b0fdcd49dca30c7cf57e578a026d2789
000008f2: PUSH1 0x01
000008f4: PUSH1 0x01
000008f6: PUSH1 0xa0
000008f8: SHL
000008f9: SUB
000008fa: AND
000008fb: GAS
000008fc: STATICCALL
000008fd: DUP1
000008fe: ISZERO
000008ff: PUSH2 0x0618
00000902: JUMPI
00000903: PUSH2 0x032e
00000906: SWAP2
00000907: PUSH1 0x00
00000909: SWAP2
0000090a: PUSH2 0x091f
0000090d: JUMPI
0000090e: JUMPDEST
0000090f: POP
00000910: PUSH1 0x40
00000912: MLOAD
00000913: SWAP1
00000914: DUP2
00000915: MSTORE
00000916: SWAP1
00000917: DUP2
00000918: SWAP1
00000919: PUSH1 0x20
0000091b: DUP3
0000091c: ADD
0000091d: SWAP1
0000091e: JUMP
0000091f: JUMPDEST
00000920: PUSH2 0x0940
00000923: SWAP2
00000924: POP
00000925: PUSH1 0x20
00000927: RETURNDATASIZE
00000928: DUP2
00000929: GT
0000092a: PUSH2 0x0946
0000092d: JUMPI
0000092e: JUMPDEST
0000092f: PUSH2 0x0938
00000932: DUP2
00000933: DUP4
00000934: PUSH2 0x024c
00000937: JUMP
00000938: JUMPDEST
00000939: DUP2
0000093a: ADD
0000093b: SWAP1
0000093c: PUSH2 0x146e
0000093f: JUMP
00000940: JUMPDEST
00000941: CODESIZE
00000942: PUSH2 0x090e
00000945: JUMP
00000946: JUMPDEST
00000947: POP
00000948: RETURNDATASIZE
00000949: PUSH2 0x092e
0000094c: JUMP
0000094d: JUMPDEST
0000094e: CALLVALUE
0000094f: PUSH2 0x01ad
00000952: JUMPI
00000953: PUSH1 0x20
00000955: CALLDATASIZE
00000956: PUSH1 0x03
00000958: NOT
00000959: ADD
0000095a: SLT
0000095b: PUSH2 0x01ad
0000095e: JUMPI
0000095f: PUSH2 0x032e
00000962: PUSH2 0x0992
00000965: PUSH2 0x096c
00000968: PUSH2 0x046a
0000096b: JUMP
0000096c: JUMPDEST
0000096d: PUSH1 0x00
0000096f: PUSH1 0x60
00000971: PUSH1 0x40
00000973: MLOAD
00000974: PUSH2 0x097c
00000977: DUP2
00000978: PUSH2 0x01fb
0000097b: JUMP
0000097c: JUMPDEST
0000097d: DUP3
0000097e: DUP2
0000097f: MSTORE
00000980: DUP3
00000981: PUSH1 0x20
00000983: DUP3
00000984: ADD
00000985: MSTORE
00000986: DUP3
00000987: PUSH1 0x40
00000989: DUP3
0000098a: ADD
0000098b: MSTORE
0000098c: ADD
0000098d: MSTORE
0000098e: PUSH2 0x1121
00000991: JUMP
00000992: JUMPDEST
00000993: PUSH1 0x40
00000995: MLOAD
00000996: SWAP1
00000997: PUSH2 0x099f
0000099a: DUP3
0000099b: PUSH2 0x01fb
0000099e: JUMP
0000099f: JUMPDEST
000009a0: DUP1
000009a1: SLOAD
000009a2: PUSH6 0xffffffffffff
000009a9: DUP1
000009aa: DUP3
000009ab: AND
000009ac: DUP5
000009ad: MSTORE
000009ae: DUP2
000009af: PUSH1 0x30
000009b1: SHR
000009b2: AND
000009b3: PUSH1 0x20
000009b5: DUP5
000009b6: ADD
000009b7: MSTORE
000009b8: PUSH1 0x60
000009ba: SHR
000009bb: PUSH1 0x40
000009bd: DUP4
000009be: ADD
000009bf: MSTORE
000009c0: PUSH1 0x01
000009c2: DUP1
000009c3: DUP1
000009c4: PUSH1 0xa0
000009c6: SHL
000009c7: SUB
000009c8: SWAP2
000009c9: ADD
000009ca: SLOAD
000009cb: AND
000009cc: PUSH1 0x60
000009ce: DUP3
000009cf: ADD
000009d0: MSTORE
000009d1: PUSH1 0x40
000009d3: MLOAD
000009d4: SWAP2
000009d5: DUP3
000009d6: SWAP2
000009d7: DUP3
000009d8: SWAP2
000009d9: SWAP1
000009da: SWAP2
000009db: PUSH1 0x60
000009dd: PUSH1 0x80
000009df: DUP3
000009e0: ADD
000009e1: SWAP4
000009e2: PUSH6 0xffffffffffff
000009e9: DUP1
000009ea: DUP3
000009eb: MLOAD
000009ec: AND
000009ed: DUP5
000009ee: MSTORE
000009ef: PUSH1 0x20
000009f1: DUP3
000009f2: ADD
000009f3: MLOAD
000009f4: AND
000009f5: PUSH1 0x20
000009f7: DUP5
000009f8: ADD
000009f9: MSTORE
000009fa: DUP2
000009fb: PUSH1 0x01
000009fd: DUP1
000009fe: PUSH1 0xa0
00000a00: SHL
00000a01: SUB
00000a02: SWAP2
00000a03: DUP3
00000a04: PUSH1 0x40
00000a06: DUP3
00000a07: ADD
00000a08: MLOAD
00000a09: AND
00000a0a: PUSH1 0x40
00000a0c: DUP7
00000a0d: ADD
00000a0e: MSTORE
00000a0f: ADD
00000a10: MLOAD
00000a11: AND
00000a12: SWAP2
00000a13: ADD
00000a14: MSTORE
00000a15: JUMP
00000a16: JUMPDEST
00000a17: PUSH1 0x80
00000a19: CALLDATASIZE
00000a1a: PUSH1 0x03
00000a1c: NOT
00000a1d: ADD
00000a1e: SLT
00000a1f: PUSH2 0x01ad
00000a22: JUMPI
00000a23: PUSH1 0x04
00000a25: CALLDATALOAD
00000a26: PUSH2 0x0a2e
00000a29: DUP2
00000a2a: PUSH2 0x0368
00000a2d: JUMP
00000a2e: JUMPDEST
00000a2f: PUSH1 0x44
00000a31: CALLDATALOAD
00000a32: PUSH1 0x01
00000a34: PUSH1 0x01
00000a36: PUSH1 0x40
00000a38: SHL
00000a39: SUB
00000a3a: DUP2
00000a3b: GT
00000a3c: PUSH2 0x01ad
00000a3f: JUMPI
00000a40: PUSH2 0x0a4d
00000a43: SWAP1
00000a44: CALLDATASIZE
00000a45: SWAP1
00000a46: PUSH1 0x04
00000a48: ADD
00000a49: PUSH2 0x06a0
00000a4c: JUMP
00000a4d: JUMPDEST
00000a4e: SWAP1
00000a4f: PUSH1 0x64
00000a51: CALLDATALOAD
00000a52: PUSH1 0x02
00000a54: DUP2
00000a55: LT
00000a56: ISZERO
00000a57: PUSH2 0x01ad
00000a5a: JUMPI
00000a5b: CALLER
00000a5c: PUSH32 0x0000000000000000000000005ff137d4b0fdcd49dca30c7cf57e578a026d2789
00000a7d: PUSH1 0x01
00000a7f: PUSH1 0x01
00000a81: PUSH1 0xa0
00000a83: SHL
00000a84: SUB
00000a85: AND
00000a86: EQ
00000a87: ISZERO
00000a88: DUP1
00000a89: PUSH2 0x0af0
00000a8c: JUMPI
00000a8d: JUMPDEST
00000a8e: DUP1
00000a8f: PUSH2 0x0adb
00000a92: JUMPI
00000a93: JUMPDEST
00000a94: PUSH2 0x061d
00000a97: JUMPI
00000a98: PUSH2 0x0aa0
00000a9b: DUP2
00000a9c: PUSH2 0x11d2
00000a9f: JUMP
00000aa0: JUMPDEST
00000aa1: PUSH2 0x0ac9
00000aa4: JUMPI
00000aa5: PUSH1 0x00
00000aa7: DUP3
00000aa8: DUP2
00000aa9: SWAP4
00000aaa: SWAP3
00000aab: PUSH1 0x20
00000aad: DUP4
00000aae: SWAP5
00000aaf: MLOAD
00000ab0: SWAP3
00000ab1: ADD
00000ab2: SWAP1
00000ab3: PUSH1 0x24
00000ab5: CALLDATALOAD
00000ab6: SWAP1
00000ab7: GAS
00000ab8: CALL
00000ab9: RETURNDATASIZE
00000aba: DUP3
00000abb: DUP1
00000abc: RETURNDATACOPY
00000abd: ISZERO
00000abe: PUSH2 0x0ac5
00000ac1: JUMPI
00000ac2: RETURNDATASIZE
00000ac3: SWAP1
00000ac4: RETURN
00000ac5: JUMPDEST
00000ac6: RETURNDATASIZE
00000ac7: SWAP1
00000ac8: REVERT
00000ac9: JUMPDEST
00000aca: PUSH1 0x40
00000acc: MLOAD
00000acd: PUSH4 0x67ce7759
00000ad2: PUSH1 0xe0
00000ad4: SHL
00000ad5: DUP2
00000ad6: MSTORE
00000ad7: PUSH1 0x04
00000ad9: SWAP1
00000ada: REVERT
00000adb: JUMPDEST
00000adc: POP
00000add: PUSH2 0x0aeb
00000ae0: PUSH2 0x0ae7
00000ae3: PUSH2 0x1d8c
00000ae6: JUMP
00000ae7: JUMPDEST
00000ae8: ISZERO
00000ae9: SWAP1
00000aea: JUMP
00000aeb: JUMPDEST
00000aec: PUSH2 0x0a93
00000aef: JUMP
00000af0: JUMPDEST
00000af1: POP
00000af2: ADDRESS
00000af3: CALLER
00000af4: EQ
00000af5: ISZERO
00000af6: PUSH2 0x0a8d
00000af9: JUMP
00000afa: JUMPDEST
00000afb: PUSH1 0x40
00000afd: MLOAD
00000afe: SWAP1
00000aff: PUSH2 0x0b07
00000b02: DUP3
00000b03: PUSH2 0x0216
00000b06: JUMP
00000b07: JUMPDEST
00000b08: PUSH1 0x05
00000b0a: DUP3
00000b0b: MSTORE
00000b0c: PUSH5 0x302e322e33
00000b12: PUSH1 0xd8
00000b14: SHL
00000b15: PUSH1 0x20
00000b17: DUP4
00000b18: ADD
00000b19: MSTORE
00000b1a: JUMP
00000b1b: JUMPDEST
00000b1c: CALLVALUE
00000b1d: PUSH2 0x01ad
00000b20: JUMPI
00000b21: PUSH1 0x00
00000b23: CALLDATASIZE
00000b24: PUSH1 0x03
00000b26: NOT
00000b27: ADD
00000b28: SLT
00000b29: PUSH2 0x01ad
00000b2c: JUMPI
00000b2d: PUSH2 0x032e
00000b30: PUSH2 0x031a
00000b33: PUSH2 0x0afa
00000b36: JUMP
00000b37: JUMPDEST
00000b38: SWAP1
00000b39: PUSH1 0x40
00000b3b: PUSH1 0x03
00000b3d: NOT
00000b3e: DUP4
00000b3f: ADD
00000b40: SLT
00000b41: PUSH2 0x01ad
00000b44: JUMPI
00000b45: PUSH1 0x04
00000b47: CALLDATALOAD
00000b48: PUSH2 0x0b50
00000b4b: DUP2
00000b4c: PUSH2 0x0368
00000b4f: JUMP
00000b50: JUMPDEST
00000b51: SWAP2
00000b52: PUSH1 0x24
00000b54: CALLDATALOAD
00000b55: SWAP1
00000b56: PUSH1 0x01
00000b58: PUSH1 0x01
00000b5a: PUSH1 0x40
00000b5c: SHL
00000b5d: SUB
00000b5e: DUP3
00000b5f: GT
00000b60: PUSH2 0x01ad
00000b63: JUMPI
00000b64: PUSH2 0x043a
00000b67: SWAP2
00000b68: PUSH1 0x04
00000b6a: ADD
00000b6b: PUSH2 0x0384
00000b6e: JUMP
00000b6f: JUMPDEST
00000b70: PUSH2 0x0b78
00000b73: CALLDATASIZE
00000b74: PUSH2 0x0b37
00000b77: JUMP
00000b78: JUMPDEST
00000b79: SWAP1
00000b7a: SWAP2
00000b7b: PUSH1 0x01
00000b7d: PUSH1 0x01
00000b7f: PUSH1 0xa0
00000b81: SHL
00000b82: SUB
00000b83: CALLER
00000b84: PUSH32 0x0000000000000000000000005ff137d4b0fdcd49dca30c7cf57e578a026d2789
00000ba5: DUP3
00000ba6: AND
00000ba7: EQ
00000ba8: ISZERO
00000ba9: DUP1
00000baa: PUSH2 0x0c4b
00000bad: JUMPI
00000bae: JUMPDEST
00000baf: PUSH2 0x061d
00000bb2: JUMPI
00000bb3: DUP1
00000bb4: PUSH1 0x00
00000bb6: DUP1
00000bb7: MLOAD
00000bb8: PUSH1 0x20
00000bba: PUSH2 0x2171
00000bbd: DUP4
00000bbe: CODECOPY
00000bbf: DUP2
00000bc0: MLOAD
00000bc1: SWAP2
00000bc2: MSTORE
00000bc3: SLOAD
00000bc4: PUSH1 0x50
00000bc6: SHR
00000bc7: AND
00000bc8: SWAP2
00000bc9: PUSH2 0x0bd1
00000bcc: DUP2
00000bcd: PUSH2 0x2078
00000bd0: JUMP
00000bd1: JUMPDEST
00000bd2: AND
00000bd3: SWAP3
00000bd4: DUP4
00000bd5: PUSH1 0x40
00000bd7: MLOAD
00000bd8: SWAP4
00000bd9: PUSH1 0x00
00000bdb: SWAP6
00000bdc: DUP7
00000bdd: SWAP5
00000bde: PUSH32 0xa35f5cdc5fbabb614b4cd5064ce5543f43dc8fab0e4da41255230eb8aba2531c
00000bff: DUP7
00000c00: DUP1
00000c01: LOG3
00000c02: DUP2
00000c03: EXTCODESIZE
00000c04: ISZERO
00000c05: PUSH2 0x0c47
00000c08: JUMPI
00000c09: DUP4
00000c0a: DUP6
00000c0b: PUSH2 0x0c25
00000c0e: DUP2
00000c0f: SWAP6
00000c10: SWAP4
00000c11: DUP3
00000c12: SWAP5
00000c13: PUSH4 0x064acaab
00000c18: PUSH1 0xe1
00000c1a: SHL
00000c1b: DUP5
00000c1c: MSTORE
00000c1d: PUSH1 0x04
00000c1f: DUP5
00000c20: ADD
00000c21: PUSH2 0x18b6
00000c24: JUMP
00000c25: JUMPDEST
00000c26: SUB
00000c27: SWAP3
00000c28: GAS
00000c29: CALL
00000c2a: DUP1
00000c2b: ISZERO
00000c2c: PUSH2 0x0618
00000c2f: JUMPI
00000c30: PUSH2 0x0c37
00000c33: JUMPI
00000c34: POP
00000c35: DUP1
00000c36: RETURN
00000c37: JUMPDEST
00000c38: DUP1
00000c39: PUSH2 0x060c
00000c3c: PUSH2 0x0c44
00000c3f: SWAP3
00000c40: PUSH2 0x01c8
00000c43: JUMP
00000c44: JUMPDEST
00000c45: DUP1
00000c46: RETURN
00000c47: JUMPDEST
00000c48: DUP4
00000c49: DUP1
00000c4a: REVERT
00000c4b: JUMPDEST
00000c4c: POP
00000c4d: ADDRESS
00000c4e: CALLER
00000c4f: EQ
00000c50: ISZERO
00000c51: PUSH2 0x0bae
00000c54: JUMP
00000c55: JUMPDEST
00000c56: CALLVALUE
00000c57: PUSH2 0x01ad
00000c5a: JUMPI
00000c5b: PUSH1 0x00
00000c5d: CALLDATASIZE
00000c5e: PUSH1 0x03
00000c60: NOT
00000c61: ADD
00000c62: SLT
00000c63: PUSH2 0x01ad
00000c66: JUMPI
00000c67: PUSH1 0x20
00000c69: PUSH1 0x00
00000c6b: DUP1
00000c6c: MLOAD
00000c6d: PUSH1 0x20
00000c6f: PUSH2 0x2171
00000c72: DUP4
00000c73: CODECOPY
00000c74: DUP2
00000c75: MLOAD
00000c76: SWAP2
00000c77: MSTORE
00000c78: SLOAD
00000c79: PUSH1 0xe0
00000c7b: SHL
00000c7c: PUSH1 0x40
00000c7e: MLOAD
00000c7f: SWAP1
00000c80: PUSH4 0xffffffff
00000c85: PUSH1 0xe0
00000c87: SHL
00000c88: AND
00000c89: DUP2
00000c8a: MSTORE
00000c8b: RETURN
00000c8c: JUMPDEST
00000c8d: CALLVALUE
00000c8e: PUSH2 0x01ad
00000c91: JUMPI
00000c92: PUSH1 0x00
00000c94: CALLDATASIZE
00000c95: PUSH1 0x03
00000c97: NOT
00000c98: ADD
00000c99: SLT
00000c9a: PUSH2 0x01ad
00000c9d: JUMPI
00000c9e: PUSH2 0x0ce2
00000ca1: PUSH2 0x0ca8
00000ca4: PUSH2 0x029c
00000ca7: JUMP
00000ca8: JUMPDEST
00000ca9: PUSH2 0x0cb0
00000cac: PUSH2 0x0afa
00000caf: JUMP
00000cb0: JUMPDEST
00000cb1: SWAP1
00000cb2: PUSH1 0x40
00000cb4: MLOAD
00000cb5: SWAP3
00000cb6: DUP4
00000cb7: SWAP3
00000cb8: PUSH1 0x0f
00000cba: PUSH1 0xf8
00000cbc: SHL
00000cbd: DUP5
00000cbe: MSTORE
00000cbf: PUSH2 0x0cd4
00000cc2: PUSH1 0x20
00000cc4: SWAP4
00000cc5: PUSH1 0xe0
00000cc7: DUP6
00000cc8: DUP8
00000cc9: ADD
00000cca: MSTORE
00000ccb: PUSH1 0xe0
00000ccd: DUP7
00000cce: ADD
00000ccf: SWAP1
00000cd0: PUSH2 0x02be
00000cd3: JUMP
00000cd4: JUMPDEST
00000cd5: SWAP1
00000cd6: DUP5
00000cd7: DUP3
00000cd8: SUB
00000cd9: PUSH1 0x40
00000cdb: DUP7
00000cdc: ADD
00000cdd: MSTORE
00000cde: PUSH2 0x02be
00000ce1: JUMP
00000ce2: JUMPDEST
00000ce3: SWAP1
00000ce4: CHAINID
00000ce5: PUSH1 0x60
00000ce7: DUP5
00000ce8: ADD
00000ce9: MSTORE
00000cea: ADDRESS
00000ceb: PUSH1 0x80
00000ced: DUP5
00000cee: ADD
00000cef: MSTORE
00000cf0: PUSH1 0x00
00000cf2: PUSH1 0xa0
00000cf4: DUP5
00000cf5: ADD
00000cf6: MSTORE
00000cf7: DUP3
00000cf8: DUP3
00000cf9: SUB
00000cfa: PUSH1 0xc0
00000cfc: DUP5
00000cfd: ADD
00000cfe: MSTORE
00000cff: DUP1
00000d00: PUSH1 0x60
00000d02: MLOAD
00000d03: SWAP3
00000d04: DUP4
00000d05: DUP2
00000d06: MSTORE
00000d07: ADD
00000d08: SWAP2
00000d09: PUSH1 0x80
00000d0b: SWAP2
00000d0c: PUSH1 0x00
00000d0e: JUMPDEST
00000d0f: DUP3
00000d10: DUP2
00000d11: LT
00000d12: PUSH2 0x0d1d
00000d15: JUMPI
00000d16: POP
00000d17: POP
00000d18: POP
00000d19: POP
00000d1a: SUB
00000d1b: SWAP1
00000d1c: RETURN
00000d1d: JUMPDEST
00000d1e: DUP4
00000d1f: MLOAD
00000d20: DUP6
00000d21: MSTORE
00000d22: DUP7
00000d23: SWAP6
00000d24: POP
00000d25: SWAP4
00000d26: DUP2
00000d27: ADD
00000d28: SWAP4
00000d29: SWAP3
00000d2a: DUP2
00000d2b: ADD
00000d2c: SWAP3
00000d2d: PUSH1 0x01
00000d2f: ADD
00000d30: PUSH2 0x0d0e
00000d33: JUMP
00000d34: JUMPDEST
00000d35: CALLVALUE
00000d36: PUSH2 0x01ad
00000d39: JUMPI
00000d3a: PUSH1 0x00
00000d3c: CALLDATASIZE
00000d3d: PUSH1 0x03
00000d3f: NOT
00000d40: ADD
00000d41: SLT
00000d42: PUSH2 0x01ad
00000d45: JUMPI
00000d46: PUSH1 0x20
00000d48: PUSH1 0x00
00000d4a: DUP1
00000d4b: MLOAD
00000d4c: PUSH1 0x20
00000d4e: PUSH2 0x2171
00000d51: DUP4
00000d52: CODECOPY
00000d53: DUP2
00000d54: MLOAD
00000d55: SWAP2
00000d56: MSTORE
00000d57: SLOAD
00000d58: PUSH6 0xffffffffffff
00000d5f: PUSH1 0x40
00000d61: MLOAD
00000d62: SWAP2
00000d63: DUP4
00000d64: SHR
00000d65: AND
00000d66: DUP2
00000d67: MSTORE
00000d68: RETURN
00000d69: JUMPDEST
00000d6a: CALLVALUE
00000d6b: PUSH2 0x01ad
00000d6e: JUMPI
00000d6f: PUSH1 0x00
00000d71: CALLDATASIZE
00000d72: PUSH1 0x03
00000d74: NOT
00000d75: ADD
00000d76: SLT
00000d77: PUSH2 0x01ad
00000d7a: JUMPI
00000d7b: PUSH1 0x40
00000d7d: MLOAD
00000d7e: PUSH32 0x0000000000000000000000005ff137d4b0fdcd49dca30c7cf57e578a026d2789
00000d9f: PUSH1 0x01
00000da1: PUSH1 0x01
00000da3: PUSH1 0xa0
00000da5: SHL
00000da6: SUB
00000da7: AND
00000da8: DUP2
00000da9: MSTORE
00000daa: PUSH1 0x20
00000dac: SWAP1
00000dad: RETURN
00000dae: JUMPDEST
00000daf: PUSH1 0x40
00000db1: CALLDATASIZE
00000db2: PUSH1 0x03
00000db4: NOT
00000db5: ADD
00000db6: SLT
00000db7: PUSH2 0x01ad
00000dba: JUMPI
00000dbb: PUSH1 0x04
00000dbd: CALLDATALOAD
00000dbe: PUSH2 0x0dc6
00000dc1: DUP2
00000dc2: PUSH2 0x0368
00000dc5: JUMP
00000dc6: JUMPDEST
00000dc7: PUSH1 0x24
00000dc9: CALLDATALOAD
00000dca: PUSH1 0x01
00000dcc: PUSH1 0x01
00000dce: PUSH1 0x40
00000dd0: SHL
00000dd1: SUB
00000dd2: DUP2
00000dd3: GT
00000dd4: PUSH2 0x01ad
00000dd7: JUMPI
00000dd8: PUSH2 0x0de5
00000ddb: SWAP1
00000ddc: CALLDATASIZE
00000ddd: SWAP1
00000dde: PUSH1 0x04
00000de0: ADD
00000de1: PUSH2 0x06a0
00000de4: JUMP
00000de5: JUMPDEST
00000de6: SWAP1
00000de7: CALLER
00000de8: PUSH32 0x0000000000000000000000005ff137d4b0fdcd49dca30c7cf57e578a026d2789
00000e09: PUSH1 0x01
00000e0b: PUSH1 0x01
00000e0d: PUSH1 0xa0
00000e0f: SHL
00000e10: SUB
00000e11: AND
00000e12: EQ
00000e13: ISZERO
00000e14: DUP1
00000e15: PUSH2 0x0e51
00000e18: JUMPI
00000e19: JUMPDEST
00000e1a: DUP1
00000e1b: PUSH2 0x0e40
00000e1e: JUMPI
00000e1f: JUMPDEST
00000e20: PUSH2 0x061d
00000e23: JUMPI
00000e24: PUSH1 0x00
00000e26: DUP3
00000e27: DUP2
00000e28: SWAP4
00000e29: SWAP3
00000e2a: PUSH1 0x20
00000e2c: DUP4
00000e2d: SWAP5
00000e2e: MLOAD
00000e2f: SWAP3
00000e30: ADD
00000e31: SWAP1
00000e32: GAS
00000e33: DELEGATECALL
00000e34: RETURNDATASIZE
00000e35: DUP3
00000e36: DUP1
00000e37: RETURNDATACOPY
00000e38: ISZERO
00000e39: PUSH2 0x0ac5
00000e3c: JUMPI
00000e3d: RETURNDATASIZE
00000e3e: SWAP1
00000e3f: RETURN
00000e40: JUMPDEST
00000e41: POP
00000e42: PUSH2 0x0e4c
00000e45: PUSH2 0x0ae7
00000e48: PUSH2 0x1d8c
00000e4b: JUMP
00000e4c: JUMPDEST
00000e4d: PUSH2 0x0e1f
00000e50: JUMP
00000e51: JUMPDEST
00000e52: POP
00000e53: ADDRESS
00000e54: CALLER
00000e55: EQ
00000e56: ISZERO
00000e57: PUSH2 0x0e19
00000e5a: JUMP
00000e5b: JUMPDEST
00000e5c: SWAP2
00000e5d: DUP2
00000e5e: PUSH1 0x1f
00000e60: DUP5
00000e61: ADD
00000e62: SLT
00000e63: ISZERO
00000e64: PUSH2 0x01ad
00000e67: JUMPI
00000e68: DUP3
00000e69: CALLDATALOAD
00000e6a: SWAP2
00000e6b: PUSH1 0x01
00000e6d: PUSH1 0x01
00000e6f: PUSH1 0x40
00000e71: SHL
00000e72: SUB
00000e73: DUP4
00000e74: GT
00000e75: PUSH2 0x01ad
00000e78: JUMPI
00000e79: PUSH1 0x20
00000e7b: DUP1
00000e7c: DUP6
00000e7d: ADD
00000e7e: SWAP5
00000e7f: DUP5
00000e80: PUSH1 0x05
00000e82: SHL
00000e83: ADD
00000e84: ADD
00000e85: GT
00000e86: PUSH2 0x01ad
00000e89: JUMPI
00000e8a: JUMP
00000e8b: JUMPDEST
00000e8c: CALLVALUE
00000e8d: PUSH2 0x01ad
00000e90: JUMPI
00000e91: PUSH1 0xa0
00000e93: CALLDATASIZE
00000e94: PUSH1 0x03
00000e96: NOT
00000e97: ADD
00000e98: SLT
00000e99: PUSH2 0x01ad
00000e9c: JUMPI
00000e9d: PUSH2 0x0ea7
00000ea0: PUSH1 0x04
00000ea2: CALLDATALOAD
00000ea3: PUSH2 0x0368
00000ea6: JUMP
00000ea7: JUMPDEST
00000ea8: PUSH2 0x0eb2
00000eab: PUSH1 0x24
00000ead: CALLDATALOAD
00000eae: PUSH2 0x0368
00000eb1: JUMP
00000eb2: JUMPDEST
00000eb3: PUSH1 0x01
00000eb5: PUSH1 0x01
00000eb7: PUSH1 0x40
00000eb9: SHL
00000eba: SUB
00000ebb: PUSH1 0x44
00000ebd: CALLDATALOAD
00000ebe: DUP2
00000ebf: DUP2
00000ec0: GT
00000ec1: PUSH2 0x01ad
00000ec4: JUMPI
00000ec5: PUSH2 0x0ed2
00000ec8: SWAP1
00000ec9: CALLDATASIZE
00000eca: SWAP1
00000ecb: PUSH1 0x04
00000ecd: ADD
00000ece: PUSH2 0x0e5b
00000ed1: JUMP
00000ed2: JUMPDEST
00000ed3: POP
00000ed4: POP
00000ed5: PUSH1 0x64
00000ed7: CALLDATALOAD
00000ed8: DUP2
00000ed9: DUP2
00000eda: GT
00000edb: PUSH2 0x01ad
00000ede: JUMPI
00000edf: PUSH2 0x0eec
00000ee2: SWAP1
00000ee3: CALLDATASIZE
00000ee4: SWAP1
00000ee5: PUSH1 0x04
00000ee7: ADD
00000ee8: PUSH2 0x0e5b
00000eeb: JUMP
00000eec: JUMPDEST
00000eed: POP
00000eee: POP
00000eef: PUSH1 0x84
00000ef1: CALLDATALOAD
00000ef2: SWAP1
00000ef3: DUP2
00000ef4: GT
00000ef5: PUSH2 0x01ad
00000ef8: JUMPI
00000ef9: PUSH2 0x0f06
00000efc: SWAP1
00000efd: CALLDATASIZE
00000efe: SWAP1
00000eff: PUSH1 0x04
00000f01: ADD
00000f02: PUSH2 0x0384
00000f05: JUMP
00000f06: JUMPDEST
00000f07: POP
00000f08: POP
00000f09: PUSH1 0x40
00000f0b: MLOAD
00000f0c: PUSH4 0xbc197c81
00000f11: PUSH1 0xe0
00000f13: SHL
00000f14: DUP2
00000f15: MSTORE
00000f16: PUSH1 0x20
00000f18: SWAP1
00000f19: RETURN
00000f1a: JUMPDEST
00000f1b: CALLVALUE
00000f1c: PUSH2 0x01ad
00000f1f: JUMPI
00000f20: PUSH1 0x00
00000f22: CALLDATASIZE
00000f23: PUSH1 0x03
00000f25: NOT
00000f26: ADD
00000f27: SLT
00000f28: PUSH2 0x01ad
00000f2b: JUMPI
00000f2c: PUSH1 0x40
00000f2e: MLOAD
00000f2f: PUSH4 0x1aab3f0d
00000f34: PUSH1 0xe1
00000f36: SHL
00000f37: DUP2
00000f38: MSTORE
00000f39: ADDRESS
00000f3a: PUSH1 0x04
00000f3c: DUP3
00000f3d: ADD
00000f3e: MSTORE
00000f3f: PUSH1 0x00
00000f41: PUSH1 0x24
00000f43: DUP3
00000f44: ADD
00000f45: MSTORE
00000f46: PUSH1 0x20
00000f48: DUP2
00000f49: PUSH1 0x44
00000f4b: DUP2
00000f4c: PUSH32 0x0000000000000000000000005ff137d4b0fdcd49dca30c7cf57e578a026d2789
00000f6d: PUSH1 0x01
00000f6f: PUSH1 0x01
00000f71: PUSH1 0xa0
00000f73: SHL
00000f74: SUB
00000f75: AND
00000f76: GAS
00000f77: STATICCALL
00000f78: DUP1
00000f79: ISZERO
00000f7a: PUSH2 0x0618
00000f7d: JUMPI
00000f7e: PUSH2 0x032e
00000f81: SWAP2
00000f82: PUSH1 0x00
00000f84: SWAP2
00000f85: PUSH2 0x091f
00000f88: JUMPI
00000f89: POP
00000f8a: PUSH1 0x40
00000f8c: MLOAD
00000f8d: SWAP1
00000f8e: DUP2
00000f8f: MSTORE
00000f90: SWAP1
00000f91: DUP2
00000f92: SWAP1
00000f93: PUSH1 0x20
00000f95: DUP3
00000f96: ADD
00000f97: SWAP1
00000f98: JUMP
00000f99: JUMPDEST
00000f9a: PUSH2 0x0fa2
00000f9d: CALLDATASIZE
00000f9e: PUSH2 0x0b37
00000fa1: JUMP
00000fa2: JUMPDEST
00000fa3: PUSH1 0x00
00000fa5: DUP1
00000fa6: MLOAD
00000fa7: PUSH1 0x20
00000fa9: PUSH2 0x2171
00000fac: DUP4
00000fad: CODECOPY
00000fae: DUP2
00000faf: MLOAD
00000fb0: SWAP2
00000fb1: MSTORE
00000fb2: SLOAD
00000fb3: SWAP2
00000fb4: SWAP3
00000fb5: SWAP1
00000fb6: SWAP2
00000fb7: PUSH1 0x01
00000fb9: PUSH1 0x01
00000fbb: PUSH1 0xa0
00000fbd: SHL
00000fbe: SUB
00000fbf: SWAP2
00000fc0: SWAP1
00000fc1: PUSH1 0x50
00000fc3: SHR
00000fc4: DUP3
00000fc5: AND
00000fc6: PUSH2 0x1024
00000fc9: JUMPI
00000fca: PUSH2 0x0fd2
00000fcd: DUP2
00000fce: PUSH2 0x2078
00000fd1: JUMP
00000fd2: JUMPDEST
00000fd3: AND
00000fd4: SWAP2
00000fd5: DUP3
00000fd6: EXTCODESIZE
00000fd7: ISZERO
00000fd8: PUSH2 0x01ad
00000fdb: JUMPI
00000fdc: PUSH2 0x1007
00000fdf: SWAP3
00000fe0: PUSH1 0x00
00000fe2: SWAP3
00000fe3: DUP4
00000fe4: PUSH1 0x40
00000fe6: MLOAD
00000fe7: DUP1
00000fe8: SWAP7
00000fe9: DUP2
00000fea: SWAP6
00000feb: DUP3
00000fec: SWAP5
00000fed: PUSH4 0x064acaab
00000ff2: PUSH1 0xe1
00000ff4: SHL
00000ff5: DUP5
00000ff6: MSTORE
00000ff7: PUSH1 0x20
00000ff9: PUSH1 0x04
00000ffb: DUP6
00000ffc: ADD
00000ffd: MSTORE
00000ffe: PUSH1 0x24
00001000: DUP5
00001001: ADD
00001002: SWAP2
00001003: PUSH2 0x1895
00001006: JUMP
00001007: JUMPDEST
00001008: SUB
00001009: SWAP3
0000100a: GAS
0000100b: CALL
0000100c: DUP1
0000100d: ISZERO
0000100e: PUSH2 0x0618
00001011: JUMPI
00001012: PUSH2 0x1017
00001015: JUMPI
00001016: STOP
00001017: JUMPDEST
00001018: DUP1
00001019: PUSH2 0x060c
0000101c: PUSH2 0x001b
0000101f: SWAP3
00001020: PUSH2 0x01c8
00001023: JUMP
00001024: JUMPDEST
00001025: PUSH1 0x40
00001027: MLOAD
00001028: PUSH3 0xdc149f
0000102c: PUSH1 0xe4
0000102e: SHL
0000102f: DUP2
00001030: MSTORE
00001031: PUSH1 0x04
00001033: SWAP1
00001034: REVERT
00001035: JUMPDEST
00001036: PUSH1 0x20
00001038: CALLDATASIZE
00001039: PUSH1 0x03
0000103b: NOT
0000103c: ADD
0000103d: SLT
0000103e: PUSH2 0x01ad
00001041: JUMPI
00001042: PUSH2 0x1049
00001045: PUSH2 0x046a
00001048: JUMP
00001049: JUMPDEST
0000104a: CALLER
0000104b: PUSH32 0x0000000000000000000000005ff137d4b0fdcd49dca30c7cf57e578a026d2789
0000106c: PUSH1 0x01
0000106e: PUSH1 0x01
00001070: PUSH1 0xa0
00001072: SHL
00001073: SUB
00001074: AND
00001075: EQ
00001076: ISZERO
00001077: DUP1
00001078: PUSH2 0x10bd
0000107b: JUMPI
0000107c: JUMPDEST
0000107d: PUSH2 0x061d
00001080: JUMPI
00001081: PUSH1 0x00
00001083: DUP1
00001084: MLOAD
00001085: PUSH1 0x20
00001087: PUSH2 0x2171
0000108a: DUP4
0000108b: CODECOPY
0000108c: DUP2
0000108d: MLOAD
0000108e: SWAP2
0000108f: MSTORE
00001090: SWAP1
00001091: DUP2
00001092: SLOAD
00001093: PUSH10 0xffffffffffff00000000
0000109e: TIMESTAMP
0000109f: PUSH1 0x20
000010a1: SHL
000010a2: AND
000010a3: SWAP2
000010a4: PUSH1 0xe0
000010a6: SHR
000010a7: SWAP1
000010a8: PUSH10 0xffffffffffffffffffff
000010b3: NOT
000010b4: AND
000010b5: OR
000010b6: OR
000010b7: SWAP1
000010b8: SSTORE
000010b9: PUSH1 0x00
000010bb: DUP1
000010bc: RETURN
000010bd: JUMPDEST
000010be: POP
000010bf: ADDRESS
000010c0: CALLER
000010c1: EQ
000010c2: ISZERO
000010c3: PUSH2 0x107c
000010c6: JUMP
000010c7: JUMPDEST
000010c8: CALLVALUE
000010c9: PUSH2 0x01ad
000010cc: JUMPI
000010cd: PUSH1 0xa0
000010cf: CALLDATASIZE
000010d0: PUSH1 0x03
000010d2: NOT
000010d3: ADD
000010d4: SLT
000010d5: PUSH2 0x01ad
000010d8: JUMPI
000010d9: PUSH2 0x10e3
000010dc: PUSH1 0x04
000010de: CALLDATALOAD
000010df: PUSH2 0x0368
000010e2: JUMP
000010e3: JUMPDEST
000010e4: PUSH2 0x10ee
000010e7: PUSH1 0x24
000010e9: CALLDATALOAD
000010ea: PUSH2 0x0368
000010ed: JUMP
000010ee: JUMPDEST
000010ef: PUSH1 0x84
000010f1: CALLDATALOAD
000010f2: PUSH1 0x01
000010f4: PUSH1 0x01
000010f6: PUSH1 0x40
000010f8: SHL
000010f9: SUB
000010fa: DUP2
000010fb: GT
000010fc: PUSH2 0x01ad
000010ff: JUMPI
00001100: PUSH2 0x110d
00001103: SWAP1
00001104: CALLDATASIZE
00001105: SWAP1
00001106: PUSH1 0x04
00001108: ADD
00001109: PUSH2 0x0384
0000110c: JUMP
0000110d: JUMPDEST
0000110e: POP
0000110f: POP
00001110: PUSH1 0x40
00001112: MLOAD
00001113: PUSH4 0xf23a6e61
00001118: PUSH1 0xe0
0000111a: SHL
0000111b: DUP2
0000111c: MSTORE
0000111d: PUSH1 0x20
0000111f: SWAP1
00001120: RETURN
00001121: JUMPDEST
00001122: PUSH4 0xffffffff
00001127: PUSH1 0xe0
00001129: SHL
0000112a: AND
0000112b: PUSH1 0x00
0000112d: MSTORE
0000112e: PUSH32 0x439ffe7df606b78489639bc0b827913bd09e1246fa6802968a5b3694c53e0dda
0000114f: PUSH1 0x20
00001151: MSTORE
00001152: PUSH1 0x40
00001154: PUSH1 0x00
00001156: KECCAK256
00001157: SWAP1
00001158: JUMP
00001159: JUMPDEST
0000115a: PUSH1 0x00
0000115c: PUSH2 0x116f
0000115f: DUP2
00001160: CALLDATALOAD
00001161: PUSH1 0x01
00001163: PUSH1 0x01
00001165: PUSH1 0xe0
00001167: SHL
00001168: SUB
00001169: NOT
0000116a: AND
0000116b: PUSH2 0x1121
0000116e: JUMP
0000116f: JUMPDEST
00001170: SLOAD
00001171: PUSH1 0x60
00001173: SHR
00001174: CALLER
00001175: PUSH32 0x0000000000000000000000005ff137d4b0fdcd49dca30c7cf57e578a026d2789
00001196: PUSH1 0x01
00001198: PUSH1 0x01
0000119a: PUSH1 0xa0
0000119c: SHL
0000119d: SUB
0000119e: AND
0000119f: EQ
000011a0: ISZERO
000011a1: DUP1
000011a2: PUSH2 0x11c3
000011a5: JUMPI
000011a6: JUMPDEST
000011a7: PUSH2 0x061d
000011aa: JUMPI
000011ab: DUP2
000011ac: DUP1
000011ad: SWAP2
000011ae: CALLDATASIZE
000011af: DUP3
000011b0: DUP1
000011b1: CALLDATACOPY
000011b2: DUP2
000011b3: CALLDATASIZE
000011b4: SWAP2
000011b5: GAS
000011b6: DELEGATECALL
000011b7: RETURNDATASIZE
000011b8: DUP3
000011b9: DUP1
000011ba: RETURNDATACOPY
000011bb: ISZERO
000011bc: PUSH2 0x0ac5
000011bf: JUMPI
000011c0: RETURNDATASIZE
000011c1: SWAP1
000011c2: RETURN
000011c3: JUMPDEST
000011c4: POP
000011c5: PUSH2 0x11cc
000011c8: PUSH2 0x1d8c
000011cb: JUMP
000011cc: JUMPDEST
000011cd: ISZERO
000011ce: PUSH2 0x11a6
000011d1: JUMP
000011d2: JUMPDEST
000011d3: PUSH1 0x02
000011d5: GT
000011d6: ISZERO
000011d7: PUSH2 0x11dc
000011da: JUMPI
000011db: JUMP
000011dc: JUMPDEST
000011dd: PUSH4 0x4e487b71
000011e2: PUSH1 0xe0
000011e4: SHL
000011e5: PUSH1 0x00
000011e7: MSTORE
000011e8: PUSH1 0x21
000011ea: PUSH1 0x04
000011ec: MSTORE
000011ed: PUSH1 0x24
000011ef: PUSH1 0x00
000011f1: REVERT
000011f2: JUMPDEST
000011f3: DUP1
000011f4: MLOAD
000011f5: DUP3
000011f6: LT
000011f7: ISZERO
000011f8: PUSH2 0x1206
000011fb: JUMPI
000011fc: PUSH1 0x20
000011fe: SWAP2
000011ff: PUSH1 0x05
00001201: SHL
00001202: ADD
00001203: ADD
00001204: SWAP1
00001205: JUMP
00001206: JUMPDEST
00001207: PUSH4 0x4e487b71
0000120c: PUSH1 0xe0
0000120e: SHL
0000120f: PUSH1 0x00
00001211: MSTORE
00001212: PUSH1 0x32
00001214: PUSH1 0x04
00001216: MSTORE
00001217: PUSH1 0x24
00001219: PUSH1 0x00
0000121b: REVERT
0000121c: JUMPDEST
0000121d: CALLER
0000121e: PUSH32 0x0000000000000000000000005ff137d4b0fdcd49dca30c7cf57e578a026d2789
0000123f: PUSH1 0x01
00001241: PUSH1 0x01
00001243: PUSH1 0xa0
00001245: SHL
00001246: SUB
00001247: AND
00001248: EQ
00001249: ISZERO
0000124a: DUP1
0000124b: PUSH2 0x12a9
0000124e: JUMPI
0000124f: JUMPDEST
00001250: PUSH2 0x061d
00001253: JUMPI
00001254: DUP1
00001255: MLOAD
00001256: SWAP1
00001257: PUSH1 0x00
00001259: JUMPDEST
0000125a: DUP3
0000125b: DUP2
0000125c: LT
0000125d: PUSH2 0x1265
00001260: JUMPI
00001261: POP
00001262: POP
00001263: POP
00001264: JUMP
00001265: JUMPDEST
00001266: PUSH1 0x00
00001268: DUP1
00001269: PUSH2 0x1272
0000126c: DUP4
0000126d: DUP6
0000126e: PUSH2 0x11f2
00001271: JUMP
00001272: JUMPDEST
00001273: MLOAD
00001274: DUP1
00001275: MLOAD
00001276: PUSH1 0x01
00001278: PUSH1 0x01
0000127a: PUSH1 0xa0
0000127c: SHL
0000127d: SUB
0000127e: AND
0000127f: PUSH1 0x20
00001281: SWAP2
00001282: PUSH1 0x40
00001284: DUP4
00001285: DUP3
00001286: ADD
00001287: MLOAD
00001288: SWAP2
00001289: ADD
0000128a: MLOAD
0000128b: SWAP3
0000128c: DUP4
0000128d: MLOAD
0000128e: SWAP4
0000128f: ADD
00001290: SWAP2
00001291: GAS
00001292: CALL
00001293: RETURNDATASIZE
00001294: PUSH1 0x00
00001296: DUP1
00001297: RETURNDATACOPY
00001298: ISZERO
00001299: PUSH2 0x12a4
0000129c: JUMPI
0000129d: PUSH1 0x01
0000129f: ADD
000012a0: PUSH2 0x1259
000012a3: JUMP
000012a4: JUMPDEST
000012a5: RETURNDATASIZE
000012a6: PUSH1 0x00
000012a8: REVERT
000012a9: JUMPDEST
000012aa: POP
000012ab: PUSH2 0x12b5
000012ae: PUSH2 0x0ae7
000012b1: PUSH2 0x1d8c
000012b4: JUMP
000012b5: JUMPDEST
000012b6: PUSH2 0x124f
000012b9: JUMP
000012ba: JUMPDEST
000012bb: SWAP1
000012bc: PUSH1 0x04
000012be: GT
000012bf: PUSH2 0x01ad
000012c2: JUMPI
000012c3: SWAP1
000012c4: PUSH1 0x04
000012c6: SWAP1
000012c7: JUMP
000012c8: JUMPDEST
000012c9: SWAP1
000012ca: SWAP3
000012cb: SWAP2
000012cc: SWAP3
000012cd: DUP4
000012ce: PUSH1 0x04
000012d0: GT
000012d1: PUSH2 0x01ad
000012d4: JUMPI
000012d5: DUP4
000012d6: GT
000012d7: PUSH2 0x01ad
000012da: JUMPI
000012db: PUSH1 0x04
000012dd: ADD
000012de: SWAP2
000012df: PUSH1 0x03
000012e1: NOT
000012e2: ADD
000012e3: SWAP1
000012e4: JUMP
000012e5: JUMPDEST
000012e6: SWAP1
000012e7: PUSH1 0x24
000012e9: GT
000012ea: PUSH2 0x01ad
000012ed: JUMPI
000012ee: PUSH1 0x10
000012f0: ADD
000012f1: SWAP1
000012f2: PUSH1 0x14
000012f4: SWAP1
000012f5: JUMP
000012f6: JUMPDEST
000012f7: SWAP1
000012f8: PUSH1 0x58
000012fa: GT
000012fb: PUSH2 0x01ad
000012fe: JUMPI
000012ff: PUSH1 0x38
00001301: ADD
00001302: SWAP1
00001303: PUSH1 0x20
00001305: SWAP1
00001306: JUMP
00001307: JUMPDEST
00001308: SWAP1
00001309: PUSH1 0x24
0000130b: GT
0000130c: PUSH2 0x01ad
0000130f: JUMPI
00001310: PUSH1 0x04
00001312: ADD
00001313: SWAP1
00001314: PUSH1 0x20
00001316: SWAP1
00001317: JUMP
00001318: JUMPDEST
00001319: SWAP1
0000131a: PUSH1 0x38
0000131c: GT
0000131d: PUSH2 0x01ad
00001320: JUMPI
00001321: PUSH1 0x24
00001323: ADD
00001324: SWAP1
00001325: PUSH1 0x14
00001327: SWAP1
00001328: JUMP
00001329: JUMPDEST
0000132a: SWAP1
0000132b: PUSH1 0x0a
0000132d: GT
0000132e: PUSH2 0x01ad
00001331: JUMPI
00001332: PUSH1 0x04
00001334: ADD
00001335: SWAP1
00001336: PUSH1 0x06
00001338: SWAP1
00001339: JUMP
0000133a: JUMPDEST
0000133b: SWAP1
0000133c: PUSH1 0x10
0000133e: GT
0000133f: PUSH2 0x01ad
00001342: JUMPI
00001343: PUSH1 0x0a
00001345: ADD
00001346: SWAP1
00001347: PUSH1 0x06
00001349: SWAP1
0000134a: JUMP
0000134b: JUMPDEST
0000134c: SWAP1
0000134d: SWAP4
0000134e: SWAP3
0000134f: SWAP4
00001350: DUP5
00001351: DUP4
00001352: GT
00001353: PUSH2 0x01ad
00001356: JUMPI
00001357: DUP5
00001358: GT
00001359: PUSH2 0x01ad
0000135c: JUMPI
0000135d: DUP2
0000135e: ADD
0000135f: SWAP3
00001360: SUB
00001361: SWAP1
00001362: JUMP
00001363: JUMPDEST
00001364: PUSH1 0x01
00001366: PUSH1 0x01
00001368: PUSH1 0xe0
0000136a: SHL
0000136b: SUB
0000136c: NOT
0000136d: SWAP1
0000136e: CALLDATALOAD
0000136f: DUP2
00001370: DUP2
00001371: AND
00001372: SWAP4
00001373: SWAP3
00001374: PUSH1 0x04
00001376: DUP2
00001377: LT
00001378: PUSH2 0x1380
0000137b: JUMPI
0000137c: POP
0000137d: POP
0000137e: POP
0000137f: JUMP
00001380: JUMPDEST
00001381: PUSH1 0x04
00001383: SUB
00001384: PUSH1 0x03
00001386: SHL
00001387: DUP3
00001388: SWAP1
00001389: SHL
0000138a: AND
0000138b: AND
0000138c: SWAP2
0000138d: POP
0000138e: JUMP
0000138f: JUMPDEST
00001390: SWAP2
00001391: SWAP1
00001392: PUSH2 0x0160
00001395: DUP4
00001396: DUP3
00001397: SUB
00001398: SLT
00001399: PUSH2 0x01ad
0000139c: JUMPI
0000139d: PUSH2 0x13a4
000013a0: PUSH2 0x027c
000013a3: JUMP
000013a4: JUMPDEST
000013a5: SWAP3
000013a6: PUSH2 0x13ae
000013a9: DUP2
000013aa: PUSH2 0x0379
000013ad: JUMP
000013ae: JUMPDEST
000013af: DUP5
000013b0: MSTORE
000013b1: PUSH1 0x20
000013b3: DUP2
000013b4: ADD
000013b5: CALLDATALOAD
000013b6: PUSH1 0x20
000013b8: DUP6
000013b9: ADD
000013ba: MSTORE
000013bb: PUSH1 0x40
000013bd: DUP2
000013be: ADD
000013bf: CALLDATALOAD
000013c0: SWAP2
000013c1: PUSH1 0x01
000013c3: PUSH1 0x01
000013c5: PUSH1 0x40
000013c7: SHL
000013c8: SUB
000013c9: SWAP3
000013ca: DUP4
000013cb: DUP2
000013cc: GT
000013cd: PUSH2 0x01ad
000013d0: JUMPI
000013d1: DUP2
000013d2: PUSH2 0x13dc
000013d5: SWAP2
000013d6: DUP5
000013d7: ADD
000013d8: PUSH2 0x06a0
000013db: JUMP
000013dc: JUMPDEST
000013dd: PUSH1 0x40
000013df: DUP7
000013e0: ADD
000013e1: MSTORE
000013e2: PUSH1 0x60
000013e4: DUP3
000013e5: ADD
000013e6: CALLDATALOAD
000013e7: DUP4
000013e8: DUP2
000013e9: GT
000013ea: PUSH2 0x01ad
000013ed: JUMPI
000013ee: DUP2
000013ef: PUSH2 0x13f9
000013f2: SWAP2
000013f3: DUP5
000013f4: ADD
000013f5: PUSH2 0x06a0
000013f8: JUMP
000013f9: JUMPDEST
000013fa: PUSH1 0x60
000013fc: DUP7
000013fd: ADD
000013fe: MSTORE
000013ff: PUSH1 0x80
00001401: DUP3
00001402: ADD
00001403: CALLDATALOAD
00001404: PUSH1 0x80
00001406: DUP7
00001407: ADD
00001408: MSTORE
00001409: PUSH1 0xa0
0000140b: DUP3
0000140c: ADD
0000140d: CALLDATALOAD
0000140e: PUSH1 0xa0
00001410: DUP7
00001411: ADD
00001412: MSTORE
00001413: PUSH1 0xc0
00001415: DUP3
00001416: ADD
00001417: CALLDATALOAD
00001418: PUSH1 0xc0
0000141a: DUP7
0000141b: ADD
0000141c: MSTORE
0000141d: PUSH1 0xe0
0000141f: DUP3
00001420: ADD
00001421: CALLDATALOAD
00001422: PUSH1 0xe0
00001424: DUP7
00001425: ADD
00001426: MSTORE
00001427: PUSH2 0x0100
0000142a: DUP1
0000142b: DUP4
0000142c: ADD
0000142d: CALLDATALOAD
0000142e: SWAP1
0000142f: DUP7
00001430: ADD
00001431: MSTORE
00001432: PUSH2 0x0120
00001435: DUP1
00001436: DUP4
00001437: ADD
00001438: CALLDATALOAD
00001439: DUP5
0000143a: DUP2
0000143b: GT
0000143c: PUSH2 0x01ad
0000143f: JUMPI
00001440: DUP3
00001441: PUSH2 0x144b
00001444: SWAP2
00001445: DUP6
00001446: ADD
00001447: PUSH2 0x06a0
0000144a: JUMP
0000144b: JUMPDEST
0000144c: SWAP1
0000144d: DUP7
0000144e: ADD
0000144f: MSTORE
00001450: PUSH2 0x0140
00001453: SWAP3
00001454: DUP4
00001455: DUP4
00001456: ADD
00001457: CALLDATALOAD
00001458: SWAP1
00001459: DUP2
0000145a: GT
0000145b: PUSH2 0x01ad
0000145e: JUMPI
0000145f: PUSH2 0x1468
00001462: SWAP3
00001463: ADD
00001464: PUSH2 0x06a0
00001467: JUMP
00001468: JUMPDEST
00001469: SWAP1
0000146a: DUP4
0000146b: ADD
0000146c: MSTORE
0000146d: JUMP
0000146e: JUMPDEST
0000146f: SWAP1
00001470: DUP2
00001471: PUSH1 0x20
00001473: SWAP2
00001474: SUB
00001475: SLT
00001476: PUSH2 0x01ad
00001479: JUMPI
0000147a: MLOAD
0000147b: SWAP1
0000147c: JUMP
0000147d: JUMPDEST
0000147e: PUSH1 0x60
00001480: DUP1
00001481: DUP3
00001482: MSTORE
00001483: DUP3
00001484: MLOAD
00001485: PUSH1 0x01
00001487: PUSH1 0x01
00001489: PUSH1 0xa0
0000148b: SHL
0000148c: SUB
0000148d: AND
0000148e: SWAP1
0000148f: DUP3
00001490: ADD
00001491: MSTORE
00001492: SWAP2
00001493: SWAP4
00001494: SWAP3
00001495: SWAP2
00001496: PUSH1 0x40
00001498: SWAP2
00001499: PUSH2 0x1543
0000149c: SWAP1
0000149d: PUSH1 0x20
0000149f: DUP2
000014a0: ADD
000014a1: MLOAD
000014a2: PUSH1 0x80
000014a4: DUP5
000014a5: ADD
000014a6: MSTORE
000014a7: DUP4
000014a8: DUP2
000014a9: ADD
000014aa: MLOAD
000014ab: PUSH2 0x14c2
000014ae: PUSH2 0x0160
000014b1: SWAP2
000014b2: DUP3
000014b3: PUSH1 0xa0
000014b5: DUP8
000014b6: ADD
000014b7: MSTORE
000014b8: PUSH2 0x01c0
000014bb: DUP7
000014bc: ADD
000014bd: SWAP1
000014be: PUSH2 0x02be
000014c1: JUMP
000014c2: JUMPDEST
000014c3: SWAP1
000014c4: PUSH2 0x1530
000014c7: PUSH2 0x14e2
000014ca: PUSH1 0x60
000014cc: DUP6
000014cd: ADD
000014ce: MLOAD
000014cf: SWAP4
000014d0: PUSH1 0x5f
000014d2: NOT
000014d3: SWAP5
000014d4: DUP6
000014d5: DUP10
000014d6: DUP4
000014d7: SUB
000014d8: ADD
000014d9: PUSH1 0xc0
000014db: DUP11
000014dc: ADD
000014dd: MSTORE
000014de: PUSH2 0x02be
000014e1: JUMP
000014e2: JUMPDEST
000014e3: PUSH1 0x80
000014e5: DUP6
000014e6: ADD
000014e7: MLOAD
000014e8: PUSH1 0xe0
000014ea: DUP9
000014eb: ADD
000014ec: MSTORE
000014ed: PUSH1 0xa0
000014ef: DUP6
000014f0: ADD
000014f1: MLOAD
000014f2: SWAP3
000014f3: PUSH2 0x0100
000014f6: SWAP4
000014f7: DUP5
000014f8: DUP10
000014f9: ADD
000014fa: MSTORE
000014fb: PUSH1 0xc0
000014fd: DUP7
000014fe: ADD
000014ff: MLOAD
00001500: SWAP1
00001501: PUSH2 0x0120
00001504: SWAP2
00001505: DUP3
00001506: DUP11
00001507: ADD
00001508: MSTORE
00001509: PUSH1 0xe0
0000150b: DUP8
0000150c: ADD
0000150d: MLOAD
0000150e: SWAP5
0000150f: PUSH2 0x0140
00001512: SWAP6
00001513: DUP7
00001514: DUP12
00001515: ADD
00001516: MSTORE
00001517: DUP8
00001518: ADD
00001519: MLOAD
0000151a: SWAP1
0000151b: DUP10
0000151c: ADD
0000151d: MSTORE
0000151e: DUP6
0000151f: ADD
00001520: MLOAD
00001521: DUP5
00001522: DUP9
00001523: DUP4
00001524: SUB
00001525: ADD
00001526: PUSH2 0x0180
00001529: DUP10
0000152a: ADD
0000152b: MSTORE
0000152c: PUSH2 0x02be
0000152f: JUMP
00001530: JUMPDEST
00001531: SWAP3
00001532: ADD
00001533: MLOAD
00001534: SWAP1
00001535: DUP5
00001536: DUP4
00001537: SUB
00001538: ADD
00001539: PUSH2 0x01a0
0000153c: DUP6
0000153d: ADD
0000153e: MSTORE
0000153f: PUSH2 0x02be
00001542: JUMP
00001543: JUMPDEST
00001544: SWAP5
00001545: PUSH1 0x20
00001547: DUP3
00001548: ADD
00001549: MSTORE
0000154a: ADD
0000154b: MSTORE
0000154c: JUMP
0000154d: JUMPDEST
0000154e: PUSH1 0x40
00001550: MLOAD
00001551: RETURNDATASIZE
00001552: PUSH1 0x00
00001554: DUP3
00001555: RETURNDATACOPY
00001556: RETURNDATASIZE
00001557: SWAP1
00001558: REVERT
00001559: JUMPDEST
0000155a: PUSH1 0x01
0000155c: PUSH1 0x01
0000155e: PUSH1 0xa0
00001560: SHL
00001561: SUB
00001562: SWAP4
00001563: SWAP3
00001564: SWAP2
00001565: PUSH32 0x0000000000000000000000005ff137d4b0fdcd49dca30c7cf57e578a026d2789
00001586: DUP6
00001587: AND
00001588: CALLER
00001589: SUB
0000158a: PUSH2 0x1777
0000158d: JUMPI
0000158e: PUSH1 0x04
00001590: SWAP5
00001591: DUP6
00001592: CALLDATALOAD
00001593: SWAP3
00001594: DUP4
00001595: PUSH2 0x0144
00001598: DUP2
00001599: ADD
0000159a: CALLDATALOAD
0000159b: ADD
0000159c: SWAP2
0000159d: DUP8
0000159e: PUSH1 0x24
000015a0: DUP5
000015a1: ADD
000015a2: SWAP4
000015a3: ADD
000015a4: CALLDATALOAD
000015a5: SWAP5
000015a6: PUSH2 0x15b8
000015a9: PUSH2 0x15b2
000015ac: DUP8
000015ad: DUP7
000015ae: PUSH2 0x12ba
000015b1: JUMP
000015b2: JUMPDEST
000015b3: SWAP1
000015b4: PUSH2 0x1363
000015b7: JUMP
000015b8: JUMPDEST
000015b9: SWAP3
000015ba: PUSH1 0x01
000015bc: PUSH1 0x01
000015be: PUSH1 0xe0
000015c0: SHL
000015c1: SUB
000015c2: NOT
000015c3: DUP1
000015c4: DUP6
000015c5: AND
000015c6: SWAP2
000015c7: DUP3
000015c8: ISZERO
000015c9: PUSH2 0x1754
000015cc: JUMPI
000015cd: PUSH2 0x15d7
000015d0: SWAP1
000015d1: CALLDATASIZE
000015d2: SWAP1
000015d3: PUSH2 0x138f
000015d6: JUMP
000015d7: JUMPDEST
000015d8: SWAP5
000015d9: PUSH2 0x15f1
000015dc: PUSH1 0x00
000015de: DUP1
000015df: MLOAD
000015e0: PUSH1 0x20
000015e2: PUSH2 0x2171
000015e5: DUP4
000015e6: CODECOPY
000015e7: DUP2
000015e8: MLOAD
000015e9: SWAP2
000015ea: MSTORE
000015eb: SLOAD
000015ec: PUSH1 0xe0
000015ee: SHL
000015ef: SWAP1
000015f0: JUMP
000015f1: JUMPDEST
000015f2: AND
000015f3: AND
000015f4: ISZERO
000015f5: PUSH2 0x1609
000015f8: JUMPI
000015f9: PUSH1 0x40
000015fb: MLOAD
000015fc: PUSH4 0xfc2f51c5
00001601: PUSH1 0xe0
00001603: SHL
00001604: DUP2
00001605: MSTORE
00001606: DUP11
00001607: SWAP1
00001608: REVERT
00001609: JUMPDEST
0000160a: SWAP8
0000160b: SWAP9
0000160c: SWAP7
0000160d: SWAP8
0000160e: PUSH1 0x01
00001610: PUSH1 0xe0
00001612: SHL
00001613: DUP2
00001614: SUB
00001615: PUSH2 0x1703
00001618: JUMPI
00001619: POP
0000161a: SWAP1
0000161b: PUSH1 0x20
0000161d: SWAP6
0000161e: SWAP7
0000161f: PUSH2 0x1693
00001622: PUSH2 0x1661
00001625: PUSH2 0x1648
00001628: PUSH2 0x1643
0000162b: PUSH2 0x15b2
0000162e: DUP8
0000162f: PUSH1 0x64
00001631: PUSH1 0x00
00001633: SWAP10
00001634: ADD
00001635: CALLDATALOAD
00001636: ADD
00001637: PUSH1 0x24
00001639: DUP8
0000163a: DUP3
0000163b: ADD
0000163c: CALLDATALOAD
0000163d: SWAP2
0000163e: ADD
0000163f: PUSH2 0x12ba
00001642: JUMP
00001643: JUMPDEST
00001644: PUSH2 0x1121
00001647: JUMP
00001648: JUMPDEST
00001649: PUSH1 0x01
0000164b: DUP2
0000164c: ADD
0000164d: SLOAD
0000164e: SWAP1
0000164f: SWAP11
00001650: SWAP1
00001651: DUP2
00001652: SWAP1
00001653: PUSH1 0x01
00001655: PUSH1 0x01
00001657: PUSH1 0xa0
00001659: SHL
0000165a: SUB
0000165b: AND
0000165c: SWAP9
0000165d: PUSH2 0x12c8
00001660: JUMP
00001661: JUMPDEST
00001662: SWAP10
00001663: SLOAD
00001664: PUSH1 0xd0
00001666: DUP2
00001667: SWAP1
00001668: SHL
00001669: PUSH1 0x01
0000166b: PUSH1 0x01
0000166d: PUSH1 0xd0
0000166f: SHL
00001670: SUB
00001671: NOT
00001672: AND
00001673: PUSH1 0x70
00001675: SWAP2
00001676: SWAP1
00001677: SWAP2
00001678: SHL
00001679: PUSH6 0xffffffffffff
00001680: PUSH1 0xa0
00001682: SHL
00001683: AND
00001684: OR
00001685: SWAP10
00001686: JUMPDEST
00001687: DUP12
00001688: PUSH2 0x16f5
0000168b: JUMPI
0000168c: JUMPDEST
0000168d: CALLDATASIZE
0000168e: SWAP2
0000168f: PUSH2 0x065a
00001692: JUMP
00001693: JUMPDEST
00001694: PUSH2 0x0140
00001697: DUP6
00001698: ADD
00001699: MSTORE
0000169a: PUSH2 0x16b7
0000169d: PUSH1 0x40
0000169f: MLOAD
000016a0: SWAP10
000016a1: DUP11
000016a2: SWAP8
000016a3: DUP9
000016a4: SWAP7
000016a5: DUP8
000016a6: SWAP5
000016a7: PUSH4 0x3a871cdd
000016ac: PUSH1 0xe0
000016ae: SHL
000016af: DUP7
000016b0: MSTORE
000016b1: DUP6
000016b2: ADD
000016b3: PUSH2 0x147d
000016b6: JUMP
000016b7: JUMPDEST
000016b8: SUB
000016b9: SWAP4
000016ba: AND
000016bb: GAS
000016bc: CALL
000016bd: SWAP1
000016be: DUP2
000016bf: ISZERO
000016c0: PUSH2 0x0618
000016c3: JUMPI
000016c4: PUSH2 0x06bb
000016c7: SWAP3
000016c8: PUSH1 0x00
000016ca: SWAP3
000016cb: PUSH2 0x16d5
000016ce: JUMPI
000016cf: JUMPDEST
000016d0: POP
000016d1: PUSH2 0x20ee
000016d4: JUMP
000016d5: JUMPDEST
000016d6: PUSH2 0x16ee
000016d9: SWAP2
000016da: SWAP3
000016db: POP
000016dc: PUSH1 0x20
000016de: RETURNDATASIZE
000016df: DUP2
000016e0: GT
000016e1: PUSH2 0x0946
000016e4: JUMPI
000016e5: PUSH2 0x0938
000016e8: DUP2
000016e9: DUP4
000016ea: PUSH2 0x024c
000016ed: JUMP
000016ee: JUMPDEST
000016ef: SWAP1
000016f0: CODESIZE
000016f1: PUSH2 0x16cf
000016f4: JUMP
000016f5: JUMPDEST
000016f6: CALLVALUE
000016f7: DUP1
000016f8: DUP1
000016f9: DUP1
000016fa: DUP16
000016fb: CALLER
000016fc: GAS
000016fd: CALL
000016fe: POP
000016ff: PUSH2 0x168c
00001702: JUMP
00001703: JUMPDEST
00001704: SWAP1
00001705: SWAP6
00001706: SWAP4
00001707: SWAP2
00001708: SWAP1
00001709: PUSH1 0x01
0000170b: PUSH1 0xe1
0000170d: SHL
0000170e: SUB
0000170f: PUSH2 0x1747
00001712: JUMPI
00001713: PUSH2 0x173d
00001716: PUSH2 0x1693
00001719: SWAP5
0000171a: PUSH1 0x00
0000171c: SWAP4
0000171d: PUSH2 0x1738
00001720: PUSH2 0x15b2
00001723: DUP11
00001724: PUSH1 0x64
00001726: PUSH1 0x20
00001728: SWAP13
00001729: ADD
0000172a: CALLDATALOAD
0000172b: ADD
0000172c: PUSH1 0x24
0000172e: DUP14
0000172f: DUP3
00001730: ADD
00001731: CALLDATALOAD
00001732: SWAP2
00001733: ADD
00001734: PUSH2 0x12ba
00001737: JUMP
00001738: JUMPDEST
00001739: PUSH2 0x18c7
0000173c: JUMP
0000173d: JUMPDEST
0000173e: SWAP2
0000173f: SWAP10
00001740: SWAP3
00001741: SWAP7
00001742: SWAP2
00001743: PUSH2 0x1686
00001746: JUMP
00001747: JUMPDEST
00001748: POP
00001749: POP
0000174a: POP
0000174b: POP
0000174c: POP
0000174d: POP
0000174e: POP
0000174f: POP
00001750: PUSH1 0x01
00001752: SWAP1
00001753: JUMP
00001754: JUMPDEST
00001755: SWAP7
00001756: SWAP8
00001757: POP
00001758: POP
00001759: POP
0000175a: POP
0000175b: POP
0000175c: POP
0000175d: POP
0000175e: PUSH2 0x06bb
00001761: SWAP4
00001762: SWAP5
00001763: POP
00001764: DUP3
00001765: ISZERO
00001766: PUSH2 0x1ec0
00001769: JUMPI
0000176a: CALLVALUE
0000176b: CALLVALUE
0000176c: CALLVALUE
0000176d: CALLVALUE
0000176e: DUP7
0000176f: CALLER
00001770: GAS
00001771: CALL
00001772: POP
00001773: PUSH2 0x1ec0
00001776: JUMP
00001777: JUMPDEST
00001778: PUSH1 0x40
0000177a: MLOAD
0000177b: PUSH4 0x6b31ba15
00001780: PUSH1 0xe1
00001782: SHL
00001783: DUP2
00001784: MSTORE
00001785: PUSH1 0x04
00001787: SWAP1
00001788: REVERT
00001789: JUMPDEST
0000178a: PUSH12 0xffffffffffffffffffffffff
00001797: NOT
00001798: SWAP1
00001799: CALLDATALOAD
0000179a: DUP2
0000179b: DUP2
0000179c: AND
0000179d: SWAP4
0000179e: SWAP3
0000179f: PUSH1 0x14
000017a1: DUP2
000017a2: LT
000017a3: PUSH2 0x17ab
000017a6: JUMPI
000017a7: POP
000017a8: POP
000017a9: POP
000017aa: JUMP
000017ab: JUMPDEST
000017ac: PUSH1 0x14
000017ae: SUB
000017af: PUSH1 0x03
000017b1: SHL
000017b2: DUP3
000017b3: SWAP1
000017b4: SHL
000017b5: AND
000017b6: AND
000017b7: SWAP2
000017b8: POP
000017b9: JUMP
000017ba: JUMPDEST
000017bb: CALLDATALOAD
000017bc: SWAP1
000017bd: PUSH1 0x20
000017bf: DUP2
000017c0: LT
000017c1: PUSH2 0x17c8
000017c4: JUMPI
000017c5: POP
000017c6: SWAP1
000017c7: JUMP
000017c8: JUMPDEST
000017c9: PUSH1 0x00
000017cb: NOT
000017cc: SWAP1
000017cd: PUSH1 0x20
000017cf: SUB
000017d0: PUSH1 0x03
000017d2: SHL
000017d3: SHL
000017d4: AND
000017d5: SWAP1
000017d6: JUMP
000017d7: JUMPDEST
000017d8: PUSH1 0x01
000017da: PUSH1 0x01
000017dc: PUSH1 0xd0
000017de: SHL
000017df: SUB
000017e0: NOT
000017e1: SWAP1
000017e2: CALLDATALOAD
000017e3: DUP2
000017e4: DUP2
000017e5: AND
000017e6: SWAP4
000017e7: SWAP3
000017e8: PUSH1 0x06
000017ea: DUP2
000017eb: LT
000017ec: PUSH2 0x17f4
000017ef: JUMPI
000017f0: POP
000017f1: POP
000017f2: POP
000017f3: JUMP
000017f4: JUMPDEST
000017f5: PUSH1 0x06
000017f7: SUB
000017f8: PUSH1 0x03
000017fa: SHL
000017fb: DUP3
000017fc: SWAP1
000017fd: SHL
000017fe: AND
000017ff: AND
00001800: SWAP2
00001801: POP
00001802: JUMP
00001803: JUMPDEST
00001804: DUP2
00001805: MLOAD
00001806: PUSH1 0x20
00001808: DUP4
00001809: ADD
0000180a: MLOAD
0000180b: PUSH1 0x40
0000180d: DUP5
0000180e: ADD
0000180f: MLOAD
00001810: PUSH1 0x30
00001812: SWAP2
00001813: SWAP1
00001814: SWAP2
00001815: SHL
00001816: PUSH12 0xffffffffffff000000000000
00001823: AND
00001824: PUSH6 0xffffffffffff
0000182b: SWAP3
0000182c: SWAP1
0000182d: SWAP3
0000182e: AND
0000182f: SWAP2
00001830: SWAP1
00001831: SWAP2
00001832: OR
00001833: PUSH1 0x60
00001835: SWAP2
00001836: DUP3
00001837: SHL
00001838: PUSH12 0xffffffffffffffffffffffff
00001845: NOT
00001846: AND
00001847: OR
00001848: DUP3
00001849: SSTORE
0000184a: SWAP1
0000184b: SWAP2
0000184c: ADD
0000184d: MLOAD
0000184e: PUSH1 0x01
00001850: SWAP2
00001851: SWAP1
00001852: SWAP2
00001853: ADD
00001854: DUP1
00001855: SLOAD
00001856: PUSH1 0x01
00001858: PUSH1 0x01
0000185a: PUSH1 0xa0
0000185c: SHL
0000185d: SUB
0000185e: NOT
0000185f: AND
00001860: PUSH1 0x01
00001862: PUSH1 0x01
00001864: PUSH1 0xa0
00001866: SHL
00001867: SUB
00001868: SWAP3
00001869: SWAP1
0000186a: SWAP3
0000186b: AND
0000186c: SWAP2
0000186d: SWAP1
0000186e: SWAP2
0000186f: OR
00001870: SWAP1
00001871: SSTORE
00001872: JUMP
00001873: JUMPDEST
00001874: SWAP1
00001875: PUSH1 0x20
00001877: SWAP2
00001878: DUP1
00001879: DUP3
0000187a: MSTORE
0000187b: DUP1
0000187c: PUSH1 0x00
0000187e: DUP5
0000187f: DUP5
00001880: ADD
00001881: CALLDATACOPY
00001882: PUSH1 0x00
00001884: DUP3
00001885: DUP3
00001886: ADD
00001887: DUP5
00001888: ADD
00001889: MSTORE
0000188a: PUSH1 0x1f
0000188c: ADD
0000188d: PUSH1 0x1f
0000188f: NOT
00001890: AND
00001891: ADD
00001892: ADD
00001893: SWAP1
00001894: JUMP
00001895: JUMPDEST
00001896: SWAP1
00001897: DUP1
00001898: PUSH1 0x20
0000189a: SWAP4
0000189b: SWAP3
0000189c: DUP2
0000189d: DUP5
0000189e: MSTORE
0000189f: DUP5
000018a0: DUP5
000018a1: ADD
000018a2: CALLDATACOPY
000018a3: PUSH1 0x00
000018a5: DUP3
000018a6: DUP3
000018a7: ADD
000018a8: DUP5
000018a9: ADD
000018aa: MSTORE
000018ab: PUSH1 0x1f
000018ad: ADD
000018ae: PUSH1 0x1f
000018b0: NOT
000018b1: AND
000018b2: ADD
000018b3: ADD
000018b4: SWAP1
000018b5: JUMP
000018b6: JUMPDEST
000018b7: SWAP2
000018b8: PUSH1 0x20
000018ba: PUSH2 0x06bb
000018bd: SWAP4
000018be: DUP2
000018bf: DUP2
000018c0: MSTORE
000018c1: ADD
000018c2: SWAP2
000018c3: PUSH2 0x1895
000018c6: JUMP
000018c7: JUMPDEST
000018c8: SWAP2
000018c9: SWAP1
000018ca: PUSH2 0x18d3
000018cd: DUP3
000018ce: DUP3
000018cf: PUSH2 0x12e5
000018d2: JUMP
000018d3: JUMPDEST
000018d4: PUSH2 0x18dc
000018d7: SWAP2
000018d8: PUSH2 0x1789
000018db: JUMP
000018dc: JUMPDEST
000018dd: PUSH1 0x60
000018df: SHR
000018e0: SWAP4
000018e1: PUSH2 0x18ea
000018e4: DUP4
000018e5: DUP4
000018e6: PUSH2 0x12f6
000018e9: JUMP
000018ea: JUMPDEST
000018eb: PUSH2 0x18f3
000018ee: SWAP2
000018ef: PUSH2 0x17ba
000018f2: JUMP
000018f3: JUMPDEST
000018f4: PUSH1 0x58
000018f6: DUP4
000018f7: ADD
000018f8: PUSH1 0x78
000018fa: DUP3
000018fb: ADD
000018fc: SWAP5
000018fd: DUP6
000018fe: DUP4
000018ff: PUSH1 0x58
00001901: ADD
00001902: SWAP1
00001903: PUSH2 0x190d
00001906: SWAP2
00001907: DUP4
00001908: DUP9
00001909: PUSH2 0x134b
0000190c: JUMP
0000190d: JUMPDEST
0000190e: PUSH2 0x1916
00001911: SWAP2
00001912: PUSH2 0x17ba
00001915: JUMP
00001916: JUMPDEST
00001917: PUSH2 0x1920
0000191a: DUP3
0000191b: DUP8
0000191c: PUSH2 0x1307
0000191f: JUMP
00001920: JUMPDEST
00001921: PUSH2 0x1929
00001924: SWAP2
00001925: PUSH2 0x17ba
00001928: JUMP
00001929: JUMPDEST
0000192a: PUSH2 0x1933
0000192d: DUP4
0000192e: DUP9
0000192f: PUSH2 0x1318
00001932: JUMP
00001933: JUMPDEST
00001934: PUSH2 0x193c
00001937: SWAP2
00001938: PUSH2 0x1789
0000193b: JUMP
0000193c: JUMPDEST
0000193d: PUSH1 0x60
0000193f: SHR
00001940: PUSH2 0x194a
00001943: CALLDATASIZE
00001944: DUP8
00001945: DUP8
00001946: PUSH2 0x065a
00001949: JUMP
0000194a: JUMPDEST
0000194b: DUP1
0000194c: MLOAD
0000194d: PUSH1 0x20
0000194f: SWAP2
00001950: DUP3
00001951: ADD
00001952: KECCAK256
00001953: PUSH1 0x40
00001955: DUP1
00001956: MLOAD
00001957: PUSH32 0x3ce406685c1b3551d706d85a68afdaa49ac4e07b451ad9b8ff8b58c3ee964176
00001978: SWAP4
00001979: DUP2
0000197a: ADD
0000197b: SWAP4
0000197c: DUP5
0000197d: MSTORE
0000197e: PUSH1 0x01
00001980: PUSH1 0x01
00001982: PUSH1 0xe0
00001984: SHL
00001985: SUB
00001986: NOT
00001987: DUP15
00001988: AND
00001989: SWAP2
0000198a: DUP2
0000198b: ADD
0000198c: SWAP2
0000198d: SWAP1
0000198e: SWAP2
0000198f: MSTORE
00001990: PUSH1 0x60
00001992: DUP2
00001993: ADD
00001994: SWAP5
00001995: SWAP1
00001996: SWAP5
00001997: MSTORE
00001998: PUSH1 0x01
0000199a: PUSH1 0x01
0000199c: PUSH1 0xa0
0000199e: SHL
0000199f: SUB
000019a0: SWAP3
000019a1: SWAP1
000019a2: SWAP3
000019a3: AND
000019a4: PUSH1 0x80
000019a6: DUP5
000019a7: ADD
000019a8: MSTORE
000019a9: PUSH1 0xa0
000019ab: DUP1
000019ac: DUP5
000019ad: ADD
000019ae: SWAP3
000019af: SWAP1
000019b0: SWAP3
000019b1: MSTORE
000019b2: SWAP1
000019b3: DUP3
000019b4: MSTORE
000019b5: SWAP1
000019b6: PUSH2 0x19c0
000019b9: PUSH1 0xc0
000019bb: DUP3
000019bc: PUSH2 0x024c
000019bf: JUMP
000019c0: JUMPDEST
000019c1: MLOAD
000019c2: SWAP1
000019c3: KECCAK256
000019c4: PUSH2 0x19cc
000019c7: SWAP1
000019c8: PUSH2 0x1b1f
000019cb: JUMP
000019cc: JUMPDEST
000019cd: SWAP1
000019ce: DUP5
000019cf: ADD
000019d0: SWAP7
000019d1: PUSH1 0x78
000019d3: DUP9
000019d4: ADD
000019d5: PUSH2 0x19df
000019d8: SWAP2
000019d9: DUP5
000019da: DUP10
000019db: PUSH2 0x134b
000019de: JUMP
000019df: JUMPDEST
000019e0: SWAP1
000019e1: PUSH2 0x19e9
000019e4: SWAP3
000019e5: PUSH2 0x1f8c
000019e8: JUMP
000019e9: JUMPDEST
000019ea: PUSH2 0x19f3
000019ed: DUP3
000019ee: DUP8
000019ef: PUSH2 0x1307
000019f2: JUMP
000019f3: JUMPDEST
000019f4: PUSH1 0x01
000019f6: PUSH1 0x01
000019f8: PUSH1 0xa0
000019fa: SHL
000019fb: SUB
000019fc: NOT
000019fd: SWAP2
000019fe: PUSH2 0x1a07
00001a01: SWAP2
00001a02: SWAP1
00001a03: PUSH2 0x17ba
00001a06: JUMP
00001a07: JUMPDEST
00001a08: AND
00001a09: PUSH2 0x1a11
00001a0c: SWAP2
00001a0d: PUSH2 0x20ee
00001a10: JUMP
00001a11: JUMPDEST
00001a12: SWAP7
00001a13: PUSH1 0x78
00001a15: DUP7
00001a16: DUP9
00001a17: ADD
00001a18: ADD
00001a19: SWAP7
00001a1a: DUP3
00001a1b: SUB
00001a1c: PUSH1 0x77
00001a1e: NOT
00001a1f: ADD
00001a20: SWAP6
00001a21: PUSH2 0x1a2a
00001a24: DUP4
00001a25: DUP3
00001a26: PUSH2 0x1329
00001a29: JUMP
00001a2a: JUMPDEST
00001a2b: PUSH2 0x1a33
00001a2e: SWAP2
00001a2f: PUSH2 0x17d7
00001a32: JUMP
00001a33: JUMPDEST
00001a34: PUSH1 0xd0
00001a36: SHR
00001a37: SWAP3
00001a38: PUSH2 0x1a41
00001a3b: DUP2
00001a3c: DUP4
00001a3d: PUSH2 0x133a
00001a40: JUMP
00001a41: JUMPDEST
00001a42: PUSH2 0x1a4a
00001a45: SWAP2
00001a46: PUSH2 0x17d7
00001a49: JUMP
00001a4a: JUMPDEST
00001a4b: PUSH1 0xd0
00001a4d: SHR
00001a4e: SWAP2
00001a4f: PUSH2 0x1a58
00001a52: DUP3
00001a53: DUP3
00001a54: PUSH2 0x1318
00001a57: JUMP
00001a58: JUMPDEST
00001a59: PUSH2 0x1a61
00001a5c: SWAP2
00001a5d: PUSH2 0x1789
00001a60: JUMP
00001a61: JUMPDEST
00001a62: PUSH1 0x60
00001a64: SHR
00001a65: SWAP2
00001a66: PUSH2 0x1a6e
00001a69: SWAP2
00001a6a: PUSH2 0x12e5
00001a6d: JUMP
00001a6e: JUMPDEST
00001a6f: PUSH2 0x1a77
00001a72: SWAP2
00001a73: PUSH2 0x1789
00001a76: JUMP
00001a77: JUMPDEST
00001a78: PUSH1 0x60
00001a7a: SHR
00001a7b: SWAP2
00001a7c: PUSH2 0x1a83
00001a7f: PUSH2 0x026d
00001a82: JUMP
00001a83: JUMPDEST
00001a84: PUSH6 0xffffffffffff
00001a8b: SWAP1
00001a8c: SWAP6
00001a8d: AND
00001a8e: DUP6
00001a8f: MSTORE
00001a90: PUSH6 0xffffffffffff
00001a97: AND
00001a98: PUSH1 0x20
00001a9a: DUP6
00001a9b: ADD
00001a9c: MSTORE
00001a9d: PUSH1 0x01
00001a9f: PUSH1 0x01
00001aa1: PUSH1 0xa0
00001aa3: SHL
00001aa4: SUB
00001aa5: AND
00001aa6: PUSH1 0x40
00001aa8: DUP5
00001aa9: ADD
00001aaa: MSTORE
00001aab: PUSH1 0x01
00001aad: PUSH1 0x01
00001aaf: PUSH1 0xa0
00001ab1: SHL
00001ab2: SUB
00001ab3: AND
00001ab4: PUSH1 0x60
00001ab6: DUP4
00001ab7: ADD
00001ab8: MSTORE
00001ab9: PUSH2 0x1ac1
00001abc: SWAP1
00001abd: PUSH2 0x1121
00001ac0: JUMP
00001ac1: JUMPDEST
00001ac2: SWAP1
00001ac3: PUSH2 0x1acb
00001ac6: SWAP2
00001ac7: PUSH2 0x1803
00001aca: JUMP
00001acb: JUMPDEST
00001acc: PUSH1 0x01
00001ace: PUSH1 0x01
00001ad0: PUSH1 0xa0
00001ad2: SHL
00001ad3: SUB
00001ad4: DUP8
00001ad5: AND
00001ad6: SWAP2
00001ad7: DUP3
00001ad8: EXTCODESIZE
00001ad9: ISZERO
00001ada: PUSH2 0x01ad
00001add: JUMPI
00001ade: PUSH2 0x1b01
00001ae1: SWAP3
00001ae2: PUSH1 0x00
00001ae4: SWAP3
00001ae5: DUP4
00001ae6: PUSH1 0x40
00001ae8: MLOAD
00001ae9: DUP1
00001aea: SWAP7
00001aeb: DUP2
00001aec: SWAP6
00001aed: DUP3
00001aee: SWAP5
00001aef: PUSH4 0x064acaab
00001af4: PUSH1 0xe1
00001af6: SHL
00001af7: DUP5
00001af8: MSTORE
00001af9: PUSH1 0x04
00001afb: DUP5
00001afc: ADD
00001afd: PUSH2 0x18b6
00001b00: JUMP
00001b01: JUMPDEST
00001b02: SUB
00001b03: SWAP3
00001b04: GAS
00001b05: CALL
00001b06: DUP1
00001b07: ISZERO
00001b08: PUSH2 0x0618
00001b0b: JUMPI
00001b0c: PUSH2 0x1b12
00001b0f: JUMPI
00001b10: POP
00001b11: JUMP
00001b12: JUMPDEST
00001b13: DUP1
00001b14: PUSH2 0x060c
00001b17: PUSH2 0x027a
00001b1a: SWAP3
00001b1b: PUSH2 0x01c8
00001b1e: JUMP
00001b1f: JUMPDEST
00001b20: PUSH32 0x470bb15be946f544f872ed597995173a7016edfe194aac72bd042df5455e9769
00001b41: PUSH32 0x000000000000000000000000d3f582f6b4814e989ee8e96bc3175320b5a540ab
00001b62: ADDRESS
00001b63: EQ
00001b64: PUSH32 0x0000000000000000000000000000000000000000000000000000000000000001
00001b85: CHAINID
00001b86: EQ
00001b87: AND
00001b88: ISZERO
00001b89: PUSH2 0x1bac
00001b8c: JUMPI
00001b8d: JUMPDEST
00001b8e: PUSH8 0x1901000000000000
00001b97: PUSH1 0x00
00001b99: MSTORE
00001b9a: PUSH1 0x1a
00001b9c: MSTORE
00001b9d: PUSH1 0x3a
00001b9f: MSTORE
00001ba0: PUSH1 0x42
00001ba2: PUSH1 0x18
00001ba4: KECCAK256
00001ba5: SWAP1
00001ba6: PUSH1 0x00
00001ba8: PUSH1 0x3a
00001baa: MSTORE
00001bab: JUMP
00001bac: JUMPDEST
00001bad: POP
00001bae: PUSH1 0xa0
00001bb0: PUSH1 0x40
00001bb2: MLOAD
00001bb3: PUSH32 0x8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f
00001bd4: DUP2
00001bd5: MSTORE
00001bd6: PUSH32 0x32ba20807d2fff2dbb34e0bcfa82982565bef566d4c0c633dc57b700b81c3427
00001bf7: PUSH1 0x20
00001bf9: DUP3
00001bfa: ADD
00001bfb: MSTORE
00001bfc: PUSH32 0x3524473bf9d21abe45b7f656e2f1380e9335b9d346503f037e8275c56c697796
00001c1d: PUSH1 0x40
00001c1f: DUP3
00001c20: ADD
00001c21: MSTORE
00001c22: CHAINID
00001c23: PUSH1 0x60
00001c25: DUP3
00001c26: ADD
00001c27: MSTORE
00001c28: ADDRESS
00001c29: PUSH1 0x80
00001c2b: DUP3
00001c2c: ADD
00001c2d: MSTORE
00001c2e: KECCAK256
00001c2f: PUSH2 0x1b8d
00001c32: JUMP
00001c33: JUMPDEST
00001c34: SWAP2
00001c35: PUSH2 0x1cf2
00001c38: SWAP2
00001c39: PUSH2 0x1cf7
00001c3c: SWAP4
00001c3d: PUSH2 0x1cdc
00001c40: PUSH2 0x1cea
00001c43: PUSH2 0x1c4a
00001c46: PUSH2 0x029c
00001c49: JUMP
00001c4a: JUMPDEST
00001c4b: PUSH2 0x1c52
00001c4e: PUSH2 0x0afa
00001c51: JUMP
00001c52: JUMPDEST
00001c53: SWAP1
00001c54: PUSH1 0x20
00001c56: DUP2
00001c57: MLOAD
00001c58: SWAP2
00001c59: ADD
00001c5a: KECCAK256
00001c5b: SWAP1
00001c5c: PUSH1 0x20
00001c5e: DUP2
00001c5f: MLOAD
00001c60: SWAP2
00001c61: ADD
00001c62: KECCAK256
00001c63: PUSH1 0x40
00001c65: MLOAD
00001c66: SWAP1
00001c67: PUSH1 0x20
00001c69: DUP3
00001c6a: ADD
00001c6b: SWAP3
00001c6c: PUSH32 0x8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f
00001c8d: DUP5
00001c8e: MSTORE
00001c8f: PUSH1 0x40
00001c91: DUP4
00001c92: ADD
00001c93: MSTORE
00001c94: PUSH1 0x60
00001c96: DUP3
00001c97: ADD
00001c98: MSTORE
00001c99: CHAINID
00001c9a: PUSH1 0x80
00001c9c: DUP3
00001c9d: ADD
00001c9e: MSTORE
00001c9f: ADDRESS
00001ca0: PUSH1 0xa0
00001ca2: DUP3
00001ca3: ADD
00001ca4: MSTORE
00001ca5: PUSH1 0xa0
00001ca7: DUP2
00001ca8: MSTORE
00001ca9: PUSH2 0x1cb1
00001cac: DUP2
00001cad: PUSH2 0x0231
00001cb0: JUMP
00001cb1: JUMPDEST
00001cb2: MLOAD
00001cb3: SWAP1
00001cb4: KECCAK256
00001cb5: SWAP3
00001cb6: PUSH1 0x40
00001cb8: MLOAD
00001cb9: SWAP3
00001cba: DUP4
00001cbb: SWAP2
00001cbc: PUSH1 0x20
00001cbe: DUP4
00001cbf: ADD
00001cc0: SWAP6
00001cc1: DUP7
00001cc2: SWAP1
00001cc3: SWAP2
00001cc4: PUSH1 0x42
00001cc6: SWAP3
00001cc7: PUSH2 0x1901
00001cca: PUSH1 0xf0
00001ccc: SHL
00001ccd: DUP4
00001cce: MSTORE
00001ccf: PUSH1 0x02
00001cd1: DUP4
00001cd2: ADD
00001cd3: MSTORE
00001cd4: PUSH1 0x22
00001cd6: DUP3
00001cd7: ADD
00001cd8: MSTORE
00001cd9: ADD
00001cda: SWAP1
00001cdb: JUMP
00001cdc: JUMPDEST
00001cdd: SUB
00001cde: PUSH1 0x1f
00001ce0: NOT
00001ce1: DUP2
00001ce2: ADD
00001ce3: DUP4
00001ce4: MSTORE
00001ce5: DUP3
00001ce6: PUSH2 0x024c
00001ce9: JUMP
00001cea: JUMPDEST
00001ceb: MLOAD
00001cec: SWAP1
00001ced: KECCAK256
00001cee: PUSH2 0x1f8c
00001cf1: JUMP
00001cf2: JUMPDEST
00001cf3: PUSH2 0x20c5
00001cf6: JUMP
00001cf7: JUMPDEST
00001cf8: SWAP1
00001cf9: PUSH6 0xffffffffffff
00001d00: SWAP3
00001d01: DUP4
00001d02: TIMESTAMP
00001d03: SWAP2
00001d04: AND
00001d05: GT
00001d06: ISZERO
00001d07: SWAP3
00001d08: DUP4
00001d09: PUSH2 0x1d44
00001d0c: JUMPI
00001d0d: JUMPDEST
00001d0e: POP
00001d0f: POP
00001d10: DUP2
00001d11: PUSH2 0x1d32
00001d14: JUMPI
00001d15: JUMPDEST
00001d16: POP
00001d17: ISZERO
00001d18: PUSH2 0x1d26
00001d1b: JUMPI
00001d1c: PUSH4 0x0b135d3f
00001d21: PUSH1 0xe1
00001d23: SHL
00001d24: SWAP1
00001d25: JUMP
00001d26: JUMPDEST
00001d27: PUSH1 0x01
00001d29: PUSH1 0x01
00001d2b: PUSH1 0xe0
00001d2d: SHL
00001d2e: SUB
00001d2f: NOT
00001d30: SWAP1
00001d31: JUMP
00001d32: JUMPDEST
00001d33: PUSH1 0x01
00001d35: PUSH1 0x01
00001d37: PUSH1 0xa0
00001d39: SHL
00001d3a: SUB
00001d3b: AND
00001d3c: ISZERO
00001d3d: SWAP1
00001d3e: POP
00001d3f: CODESIZE
00001d40: PUSH2 0x1d15
00001d43: JUMP
00001d44: JUMPDEST
00001d45: TIMESTAMP
00001d46: SWAP2
00001d47: AND
00001d48: LT
00001d49: ISZERO
00001d4a: SWAP2
00001d4b: POP
00001d4c: CODESIZE
00001d4d: DUP1
00001d4e: PUSH2 0x1d0d
00001d51: JUMP
00001d52: JUMPDEST
00001d53: SWAP1
00001d54: DUP2
00001d55: PUSH1 0x20
00001d57: SWAP2
00001d58: SUB
00001d59: SLT
00001d5a: PUSH2 0x01ad
00001d5d: JUMPI
00001d5e: MLOAD
00001d5f: DUP1
00001d60: ISZERO
00001d61: ISZERO
00001d62: DUP2
00001d63: SUB
00001d64: PUSH2 0x01ad
00001d67: JUMPI
00001d68: SWAP1
00001d69: JUMP
00001d6a: JUMPDEST
00001d6b: PUSH1 0x01
00001d6d: PUSH1 0x01
00001d6f: PUSH1 0xa0
00001d71: SHL
00001d72: SUB
00001d73: SWAP1
00001d74: SWAP2
00001d75: AND
00001d76: DUP2
00001d77: MSTORE
00001d78: PUSH1 0x40
00001d7a: PUSH1 0x20
00001d7c: DUP3
00001d7d: ADD
00001d7e: DUP2
00001d7f: SWAP1
00001d80: MSTORE
00001d81: PUSH2 0x06bb
00001d84: SWAP3
00001d85: SWAP2
00001d86: ADD
00001d87: SWAP1
00001d88: PUSH2 0x1873
00001d8b: JUMP
00001d8c: JUMPDEST
00001d8d: PUSH2 0x1d96
00001d90: CALLDATASIZE
00001d91: CALLER
00001d92: PUSH2 0x1ff4
00001d95: JUMP
00001d96: JUMPDEST
00001d97: PUSH2 0x1ebb
00001d9a: JUMPI
00001d9b: PUSH2 0x1daf
00001d9e: PUSH1 0x00
00001da0: CALLDATALOAD
00001da1: PUSH1 0x01
00001da3: PUSH1 0x01
00001da5: PUSH1 0xe0
00001da7: SHL
00001da8: SUB
00001da9: NOT
00001daa: AND
00001dab: PUSH2 0x1121
00001dae: JUMP
00001daf: JUMPDEST
00001db0: PUSH1 0x01
00001db2: DUP2
00001db3: ADD
00001db4: SLOAD
00001db5: PUSH2 0x1dce
00001db8: SWAP1
00001db9: PUSH1 0x01
00001dbb: PUSH1 0x01
00001dbd: PUSH1 0xa0
00001dbf: SHL
00001dc0: SUB
00001dc1: AND
00001dc2: JUMPDEST
00001dc3: PUSH1 0x01
00001dc5: PUSH1 0x01
00001dc7: PUSH1 0xa0
00001dc9: SHL
00001dca: SUB
00001dcb: AND
00001dcc: SWAP1
00001dcd: JUMP
00001dce: JUMPDEST
00001dcf: SWAP1
00001dd0: PUSH1 0x01
00001dd2: PUSH1 0x01
00001dd4: PUSH1 0xa0
00001dd6: SHL
00001dd7: SUB
00001dd8: DUP3
00001dd9: AND
00001dda: ISZERO
00001ddb: SWAP1
00001ddc: DUP2
00001ddd: ISZERO
00001dde: PUSH2 0x1e7f
00001de1: JUMPI
00001de2: JUMPDEST
00001de3: DUP2
00001de4: ISZERO
00001de5: PUSH2 0x1e54
00001de8: JUMPI
00001de9: JUMPDEST
00001dea: POP
00001deb: ISZERO
00001dec: PUSH2 0x1df5
00001def: JUMPI
00001df0: POP
00001df1: PUSH1 0x00
00001df3: SWAP1
00001df4: JUMP
00001df5: JUMPDEST
00001df6: PUSH1 0x20
00001df8: PUSH1 0x40
00001dfa: MLOAD
00001dfb: DUP1
00001dfc: SWAP3
00001dfd: PUSH4 0x9ea9bd59
00001e02: PUSH1 0xe0
00001e04: SHL
00001e05: DUP3
00001e06: MSTORE
00001e07: DUP2
00001e08: DUP1
00001e09: PUSH2 0x1e16
00001e0c: CALLDATASIZE
00001e0d: CALLER
00001e0e: PUSH1 0x04
00001e10: DUP5
00001e11: ADD
00001e12: PUSH2 0x1d6a
00001e15: JUMP
00001e16: JUMPDEST
00001e17: SUB
00001e18: SWAP2
00001e19: GAS
00001e1a: STATICCALL
00001e1b: SWAP1
00001e1c: DUP2
00001e1d: ISZERO
00001e1e: PUSH2 0x0618
00001e21: JUMPI
00001e22: PUSH1 0x00
00001e24: SWAP2
00001e25: PUSH2 0x1e2c
00001e28: JUMPI
00001e29: POP
00001e2a: SWAP1
00001e2b: JUMP
00001e2c: JUMPDEST
00001e2d: PUSH2 0x06bb
00001e30: SWAP2
00001e31: POP
00001e32: PUSH1 0x20
00001e34: RETURNDATASIZE
00001e35: DUP2
00001e36: GT
00001e37: PUSH2 0x1e4d
00001e3a: JUMPI
00001e3b: JUMPDEST
00001e3c: PUSH2 0x1e45
00001e3f: DUP2
00001e40: DUP4
00001e41: PUSH2 0x024c
00001e44: JUMP
00001e45: JUMPDEST
00001e46: DUP2
00001e47: ADD
00001e48: SWAP1
00001e49: PUSH2 0x1d52
00001e4c: JUMP
00001e4d: JUMPDEST
00001e4e: POP
00001e4f: RETURNDATASIZE
00001e50: PUSH2 0x1e3b
00001e53: JUMP
00001e54: JUMPDEST
00001e55: SLOAD
00001e56: PUSH2 0x1e6e
00001e59: SWAP2
00001e5a: POP
00001e5b: PUSH6 0xffffffffffff
00001e62: AND
00001e63: JUMPDEST
00001e64: PUSH6 0xffffffffffff
00001e6b: AND
00001e6c: SWAP1
00001e6d: JUMP
00001e6e: JUMPDEST
00001e6f: PUSH6 0xffffffffffff
00001e76: TIMESTAMP
00001e77: SWAP2
00001e78: AND
00001e79: GT
00001e7a: CODESIZE
00001e7b: PUSH2 0x1de9
00001e7e: JUMP
00001e7f: JUMPDEST
00001e80: SWAP1
00001e81: POP
00001e82: PUSH6 0xffffffffffff
00001e89: PUSH2 0x1e9f
00001e8c: PUSH2 0x1e63
00001e8f: DUP4
00001e90: SLOAD
00001e91: PUSH6 0xffffffffffff
00001e98: SWAP1
00001e99: PUSH1 0x30
00001e9b: SHR
00001e9c: AND
00001e9d: SWAP1
00001e9e: JUMP
00001e9f: JUMPDEST
00001ea0: AND
00001ea1: DUP1
00001ea2: ISZERO
00001ea3: ISZERO
00001ea4: SWAP1
00001ea5: DUP2
00001ea6: PUSH2 0x1eb1
00001ea9: JUMPI
00001eaa: JUMPDEST
00001eab: POP
00001eac: SWAP1
00001ead: PUSH2 0x1de2
00001eb0: JUMP
00001eb1: JUMPDEST
00001eb2: SWAP1
00001eb3: POP
00001eb4: TIMESTAMP
00001eb5: GT
00001eb6: CODESIZE
00001eb7: PUSH2 0x1eaa
00001eba: JUMP
00001ebb: JUMPDEST
00001ebc: PUSH1 0x01
00001ebe: SWAP1
00001ebf: JUMP
00001ec0: JUMPDEST
00001ec1: SWAP1
00001ec2: SWAP2
00001ec3: PUSH2 0x1ecc
00001ec6: CALLDATASIZE
00001ec7: DUP4
00001ec8: PUSH2 0x138f
00001ecb: JUMP
00001ecc: JUMPDEST
00001ecd: PUSH2 0x0140
00001ed0: SWAP3
00001ed1: DUP4
00001ed2: DUP2
00001ed3: ADD
00001ed4: CALLDATALOAD
00001ed5: SWAP1
00001ed6: PUSH1 0x1e
00001ed8: NOT
00001ed9: DUP2
00001eda: CALLDATASIZE
00001edb: SUB
00001edc: ADD
00001edd: DUP3
00001ede: SLT
00001edf: ISZERO
00001ee0: PUSH2 0x01ad
00001ee3: JUMPI
00001ee4: ADD
00001ee5: SWAP4
00001ee6: DUP5
00001ee7: CALLDATALOAD
00001ee8: SWAP5
00001ee9: PUSH1 0x01
00001eeb: PUSH1 0x01
00001eed: PUSH1 0x40
00001eef: SHL
00001ef0: SUB
00001ef1: DUP7
00001ef2: GT
00001ef3: PUSH2 0x01ad
00001ef6: JUMPI
00001ef7: PUSH1 0x20
00001ef9: ADD
00001efa: SWAP4
00001efb: DUP6
00001efc: CALLDATASIZE
00001efd: SUB
00001efe: DUP6
00001eff: SGT
00001f00: PUSH2 0x01ad
00001f03: JUMPI
00001f04: PUSH2 0x1f16
00001f07: PUSH2 0x168c
00001f0a: DUP8
00001f0b: PUSH2 0x1f5e
00001f0e: SWAP9
00001f0f: PUSH1 0x20
00001f11: SWAP9
00001f12: PUSH2 0x12c8
00001f15: JUMP
00001f16: JUMPDEST
00001f17: SWAP1
00001f18: DUP4
00001f19: ADD
00001f1a: MSTORE
00001f1b: PUSH1 0x00
00001f1d: PUSH2 0x1f40
00001f20: PUSH2 0x1dc2
00001f23: PUSH1 0x00
00001f25: DUP1
00001f26: MLOAD
00001f27: PUSH1 0x20
00001f29: PUSH2 0x2171
00001f2c: DUP4
00001f2d: CODECOPY
00001f2e: DUP2
00001f2f: MLOAD
00001f30: SWAP2
00001f31: MSTORE
00001f32: SLOAD
00001f33: PUSH1 0x50
00001f35: SHR
00001f36: PUSH1 0x01
00001f38: DUP1
00001f39: PUSH1 0xa0
00001f3b: SHL
00001f3c: SUB
00001f3d: AND
00001f3e: SWAP1
00001f3f: JUMP
00001f40: JUMPDEST
00001f41: SWAP3
00001f42: PUSH1 0x40
00001f44: MLOAD
00001f45: SWAP7
00001f46: DUP8
00001f47: SWAP6
00001f48: DUP7
00001f49: SWAP5
00001f4a: DUP6
00001f4b: SWAP4
00001f4c: PUSH4 0x3a871cdd
00001f51: PUSH1 0xe0
00001f53: SHL
00001f54: DUP6
00001f55: MSTORE
00001f56: PUSH1 0x04
00001f58: DUP6
00001f59: ADD
00001f5a: PUSH2 0x147d
00001f5d: JUMP
00001f5e: JUMPDEST
00001f5f: SUB
00001f60: SWAP3
00001f61: GAS
00001f62: CALL
00001f63: SWAP1
00001f64: DUP2
00001f65: ISZERO
00001f66: PUSH2 0x0618
00001f69: JUMPI
00001f6a: PUSH1 0x00
00001f6c: SWAP2
00001f6d: PUSH2 0x1f74
00001f70: JUMPI
00001f71: POP
00001f72: SWAP1
00001f73: JUMP
00001f74: JUMPDEST
00001f75: PUSH2 0x06bb
00001f78: SWAP2
00001f79: POP
00001f7a: PUSH1 0x20
00001f7c: RETURNDATASIZE
00001f7d: DUP2
00001f7e: GT
00001f7f: PUSH2 0x0946
00001f82: JUMPI
00001f83: PUSH2 0x0938
00001f86: DUP2
00001f87: DUP4
00001f88: PUSH2 0x024c
00001f8b: JUMP
00001f8c: JUMPDEST
00001f8d: PUSH1 0x00
00001f8f: DUP1
00001f90: MLOAD
00001f91: PUSH1 0x20
00001f93: PUSH2 0x2171
00001f96: DUP4
00001f97: CODECOPY
00001f98: DUP2
00001f99: MLOAD
00001f9a: SWAP2
00001f9b: MSTORE
00001f9c: SLOAD
00001f9d: PUSH1 0x40
00001f9f: DUP1
00001fa0: MLOAD
00001fa1: PUSH4 0x199ed7c9
00001fa6: PUSH1 0xe1
00001fa8: SHL
00001fa9: DUP2
00001faa: MSTORE
00001fab: PUSH1 0x04
00001fad: DUP2
00001fae: ADD
00001faf: SWAP4
00001fb0: SWAP1
00001fb1: SWAP4
00001fb2: MSTORE
00001fb3: PUSH1 0x24
00001fb5: DUP4
00001fb6: ADD
00001fb7: MSTORE
00001fb8: SWAP1
00001fb9: SWAP3
00001fba: PUSH1 0x20
00001fbc: SWAP3
00001fbd: DUP5
00001fbe: SWAP3
00001fbf: PUSH1 0x50
00001fc1: SHR
00001fc2: PUSH1 0x01
00001fc4: PUSH1 0x01
00001fc6: PUSH1 0xa0
00001fc8: SHL
00001fc9: SUB
00001fca: AND
00001fcb: SWAP2
00001fcc: DUP4
00001fcd: SWAP2
00001fce: DUP3
00001fcf: SWAP2
00001fd0: PUSH2 0x1fde
00001fd3: SWAP2
00001fd4: PUSH1 0x44
00001fd6: DUP5
00001fd7: ADD
00001fd8: SWAP2
00001fd9: SWAP1
00001fda: PUSH2 0x1895
00001fdd: JUMP
00001fde: JUMPDEST
00001fdf: SUB
00001fe0: SWAP2
00001fe1: GAS
00001fe2: STATICCALL
00001fe3: SWAP1
00001fe4: DUP2
00001fe5: ISZERO
00001fe6: PUSH2 0x0618
00001fe9: JUMPI
00001fea: PUSH1 0x00
00001fec: SWAP2
00001fed: PUSH2 0x1f74
00001ff0: JUMPI
00001ff1: POP
00001ff2: SWAP1
00001ff3: JUMP
00001ff4: JUMPDEST
00001ff5: PUSH1 0x00
00001ff7: DUP1
00001ff8: MLOAD
00001ff9: PUSH1 0x20
00001ffb: PUSH2 0x2171
00001ffe: DUP4
00001fff: CODECOPY
00002000: DUP2
00002001: MLOAD
00002002: SWAP2
00002003: MSTORE
00002004: SLOAD
00002005: PUSH1 0x40
00002007: DUP1
00002008: MLOAD
00002009: PUSH4 0x9ea9bd59
0000200e: PUSH1 0xe0
00002010: SHL
00002011: DUP2
00002012: MSTORE
00002013: PUSH1 0x01
00002015: PUSH1 0x01
00002017: PUSH1 0xa0
00002019: SHL
0000201a: SUB
0000201b: SWAP4
0000201c: DUP5
0000201d: AND
0000201e: PUSH1 0x04
00002020: DUP3
00002021: ADD
00002022: MSTORE
00002023: PUSH1 0x24
00002025: DUP2
00002026: ADD
00002027: SWAP2
00002028: SWAP1
00002029: SWAP2
0000202a: MSTORE
0000202b: SWAP3
0000202c: PUSH1 0x20
0000202e: SWAP3
0000202f: DUP5
00002030: SWAP3
00002031: PUSH1 0x50
00002033: SHR
00002034: AND
00002035: SWAP1
00002036: DUP3
00002037: SWAP1
00002038: DUP2
00002039: SWAP1
0000203a: PUSH2 0x1e16
0000203d: SWAP1
0000203e: PUSH1 0x44
00002040: DUP4
00002041: ADD
00002042: SWAP1
00002043: PUSH2 0x1873
00002046: JUMP
00002047: JUMPDEST
00002048: PUSH32 0x88a5966d370b9919b20f3e2c13ff65706f196a4e32cc2c12bf57088f88525874
00002069: PUSH1 0x40
0000206b: DUP1
0000206c: MLOAD
0000206d: CALLER
0000206e: DUP2
0000206f: MSTORE
00002070: CALLVALUE
00002071: PUSH1 0x20
00002073: DUP3
00002074: ADD
00002075: MSTORE
00002076: LOG1
00002077: JUMP
00002078: JUMPDEST
00002079: PUSH1 0x00
0000207b: DUP1
0000207c: MLOAD
0000207d: PUSH1 0x20
0000207f: PUSH2 0x2171
00002082: DUP4
00002083: CODECOPY
00002084: DUP2
00002085: MLOAD
00002086: SWAP2
00002087: MSTORE
00002088: DUP1
00002089: SLOAD
0000208a: PUSH32 0xffff0000000000000000000000000000000000000000ffffffffffffffffffff
000020ab: AND
000020ac: PUSH1 0x50
000020ae: SWAP3
000020af: SWAP1
000020b0: SWAP3
000020b1: SHL
000020b2: PUSH1 0x01
000020b4: PUSH1 0x50
000020b6: SHL
000020b7: PUSH1 0x01
000020b9: PUSH1 0xf0
000020bb: SHL
000020bc: SUB
000020bd: AND
000020be: SWAP2
000020bf: SWAP1
000020c0: SWAP2
000020c1: OR
000020c2: SWAP1
000020c3: SSTORE
000020c4: JUMP
000020c5: JUMPDEST
000020c6: DUP1
000020c7: PUSH6 0xffffffffffff
000020ce: SWAP2
000020cf: DUP3
000020d0: DUP2
000020d1: PUSH1 0xa0
000020d3: SHR
000020d4: AND
000020d5: SWAP3
000020d6: DUP4
000020d7: ISZERO
000020d8: PUSH1 0x01
000020da: EQ
000020db: PUSH2 0x20e6
000020de: JUMPI
000020df: JUMPDEST
000020e0: POP
000020e1: PUSH1 0xd0
000020e3: SHR
000020e4: SWAP3
000020e5: JUMP
000020e6: JUMPDEST
000020e7: SWAP3
000020e8: POP
000020e9: CODESIZE
000020ea: PUSH2 0x20df
000020ed: JUMP
000020ee: JUMPDEST
000020ef: DUP1
000020f0: DUP3
000020f1: XOR
000020f2: PUSH1 0x01
000020f4: PUSH1 0x01
000020f6: PUSH1 0xa0
000020f8: SHL
000020f9: SUB
000020fa: AND
000020fb: ISZERO
000020fc: PUSH1 0x01
000020fe: EQ
000020ff: PUSH2 0x2109
00002102: JUMPI
00002103: POP
00002104: POP
00002105: PUSH1 0x01
00002107: SWAP1
00002108: JUMP
00002109: JUMPDEST
0000210a: PUSH6 0xffffffffffff
00002111: PUSH1 0xa0
00002113: SHL
00002114: DUP2
00002115: DUP2
00002116: AND
00002117: SWAP3
00002118: PUSH6 0xffffffffffff
0000211f: PUSH1 0xa0
00002121: SHL
00002122: NOT
00002123: SWAP3
00002124: DUP4
00002125: AND
00002126: SWAP3
00002127: DUP2
00002128: AND
00002129: SWAP2
0000212a: SWAP1
0000212b: DUP5
0000212c: ISZERO
0000212d: PUSH2 0x2167
00002130: JUMPI
00002131: JUMPDEST
00002132: DUP2
00002133: AND
00002134: DUP1
00002135: ISZERO
00002136: PUSH2 0x2160
00002139: JUMPI
0000213a: JUMPDEST
0000213b: DUP5
0000213c: DUP2
0000213d: LT
0000213e: SWAP1
0000213f: DUP6
00002140: XOR
00002141: MUL
00002142: DUP1
00002143: DUP6
00002144: XOR
00002145: SWAP5
00002146: EQ
00002147: PUSH2 0x2158
0000214a: JUMPI
0000214b: JUMPDEST
0000214c: POP
0000214d: DUP2
0000214e: DUP2
0000214f: GT
00002150: SWAP1
00002151: DUP3
00002152: XOR
00002153: MUL
00002154: XOR
00002155: OR
00002156: SWAP1
00002157: JUMP
00002158: JUMPDEST
00002159: SWAP3
0000215a: POP
0000215b: CODESIZE
0000215c: PUSH2 0x214b
0000215f: JUMP
00002160: JUMPDEST
00002161: POP
00002162: DUP1
00002163: PUSH2 0x213a
00002166: JUMP
00002167: JUMPDEST
00002168: SWAP4
00002169: POP
0000216a: DUP1
0000216b: SWAP4
0000216c: PUSH2 0x2131
0000216f: JUMP
00002170: INVALID
00002171: NUMBER
00002172: SWAP16
00002173: INVALID
00002174: PUSH30

Findings

validated = confirmed for call sinks; sink observed for others
Severity Category Tool Title Confidence Validated Confirmed Details
critical upgradeability detector Untrusted DELEGATECALL target reachable 70 no no
view
trace_id: 0x48d693b4d93a5087c4e45b5e9d8582c68d5eb2c682bc53af1c424854926a1724
validation_json
{
    "sink": "DELEGATECALL",
    "errors": 0,
    "status": "unknown",
    "attempts": 192,
    "trace_id": "0x48d693b4d93a5087c4e45b5e9d8582c68d5eb2c682bc53af1c424854926a1724",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": null,
    "matched_probe": null,
    "target_varies": null,
    "classification": "no_sink"
}
witness_json
{
    "notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
    "constraints": [],
    "entrypoints": [
        {
            "calldata": "0x06fdde03",
            "selector": "0x06fdde03",
            "calldata_variants": [
                "0x06fdde03",
                "0x06fdde030000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x0b3dc354",
            "selector": "0x0b3dc354",
            "calldata_variants": [
                "0x0b3dc354",
                "0x0b3dc3540000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x150b7a02",
            "selector": "0x150b7a02",
            "calldata_variants": [
                "0x150b7a02",
                "0x150b7a020000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x1626ba7e",
            "selector": "0x1626ba7e",
            "calldata_variants": [
                "0x1626ba7e",
                "0x1626ba7e0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x29f8b174",
            "selector": "0x29f8b174",
            "calldata_variants": [
                "0x29f8b174",
                "0x29f8b1740000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x333daf92",
            "selector": "0x333daf92",
            "calldata_variants": [
                "0x333daf92",
                "0x333daf920000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x34fcd5be",
            "selector": "0x34fcd5be",
            "calldata_variants": [
                "0x34fcd5be",
                "0x34fcd5be0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x3659cfe6",
            "selector": "0x3659cfe6",
            "calldata_variants": [
                "0x3659cfe6",
                "0x3659cfe60000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 3635,
            "opcode": "DELEGATECALL",
            "returndata_checked": null,
            "value_expression_category": "n/a",
            "target_expression_category": "computed"
        },
        {
            "pc": 4534,
            "opcode": "DELEGATECALL",
            "returndata_checked": null,
            "value_expression_category": "n/a",
            "target_expression_category": "computed"
        }
    ],
    "guards_detected": [],
    "delegatecall_count": 2,
    "untrusted_delegatecall_count": 2
}
high other detector Untrusted CALL target/value reachable 60 no no
view
trace_id: 0x6d36ba0d255c1a18ab016c4403d1405fac2492ff65f1195dc1d497893f755bd6
call_targets: 0xd3f582f6b4814e989ee8e96bc3175320b5a540ab
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0x6d36ba0d255c1a18ab016c4403d1405fac2492ff65f1195dc1d497893f755bd6",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0xd3f582f6b4814e989ee8e96bc3175320b5a540ab"
    ],
    "matched_probe": null,
    "target_varies": false,
    "classification": "constant_target"
}
witness_json
{
    "notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
    "constraints": [],
    "entrypoints": [
        {
            "calldata": "0x06fdde03",
            "selector": "0x06fdde03",
            "calldata_variants": [
                "0x06fdde03",
                "0x06fdde030000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x0b3dc354",
            "selector": "0x0b3dc354",
            "calldata_variants": [
                "0x0b3dc354",
                "0x0b3dc3540000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x150b7a02",
            "selector": "0x150b7a02",
            "calldata_variants": [
                "0x150b7a02",
                "0x150b7a020000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x1626ba7e",
            "selector": "0x1626ba7e",
            "calldata_variants": [
                "0x1626ba7e",
                "0x1626ba7e0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x29f8b174",
            "selector": "0x29f8b174",
            "calldata_variants": [
                "0x29f8b174",
                "0x29f8b1740000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x333daf92",
            "selector": "0x333daf92",
            "calldata_variants": [
                "0x333daf92",
                "0x333daf920000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x34fcd5be",
            "selector": "0x34fcd5be",
            "calldata_variants": [
                "0x34fcd5be",
                "0x34fcd5be0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x3659cfe6",
            "selector": "0x3659cfe6",
            "calldata_variants": [
                "0x3659cfe6",
                "0x3659cfe60000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 1472,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 2744,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 3113,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "call_count": 10,
    "guards_detected": [],
    "untrusted_call_count": 10
}
high other detector ETH value transfer possible 55 no no
view
trace_id: 0x6d36ba0d255c1a18ab016c4403d1405fac2492ff65f1195dc1d497893f755bd6
call_targets: 0xd3f582f6b4814e989ee8e96bc3175320b5a540ab
target_varies: no
classification: constant_target
validation_json
{
    "sink": "CALL",
    "errors": 0,
    "status": "sink_reached",
    "attempts": 1,
    "trace_id": "0x6d36ba0d255c1a18ab016c4403d1405fac2492ff65f1195dc1d497893f755bd6",
    "confirmed": false,
    "trace_mode": "callTracer",
    "call_targets": [
        "0xd3f582f6b4814e989ee8e96bc3175320b5a540ab"
    ],
    "matched_probe": null,
    "target_varies": false,
    "classification": "constant_target"
}
witness_json
{
    "notes": "heuristic witness; entrypoints are best-effort selectors with zeroed calldata",
    "constraints": [],
    "entrypoints": [
        {
            "calldata": "0x06fdde03",
            "selector": "0x06fdde03",
            "calldata_variants": [
                "0x06fdde03",
                "0x06fdde030000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x0b3dc354",
            "selector": "0x0b3dc354",
            "calldata_variants": [
                "0x0b3dc354",
                "0x0b3dc3540000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x150b7a02",
            "selector": "0x150b7a02",
            "calldata_variants": [
                "0x150b7a02",
                "0x150b7a020000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x1626ba7e",
            "selector": "0x1626ba7e",
            "calldata_variants": [
                "0x1626ba7e",
                "0x1626ba7e0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x29f8b174",
            "selector": "0x29f8b174",
            "calldata_variants": [
                "0x29f8b174",
                "0x29f8b1740000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x333daf92",
            "selector": "0x333daf92",
            "calldata_variants": [
                "0x333daf92",
                "0x333daf920000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x34fcd5be",
            "selector": "0x34fcd5be",
            "calldata_variants": [
                "0x34fcd5be",
                "0x34fcd5be0000000000000000000000000000000000000000000000000000000000000000"
            ]
        },
        {
            "calldata": "0x3659cfe6",
            "selector": "0x3659cfe6",
            "calldata_variants": [
                "0x3659cfe6",
                "0x3659cfe60000000000000000000000000000000000000000000000000000000000000000"
            ]
        }
    ]
}
evidence_json
{
    "examples": [
        {
            "pc": 1472,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 2744,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        },
        {
            "pc": 3113,
            "opcode": "CALL",
            "returndata_checked": null,
            "value_expression_category": "computed",
            "target_expression_category": "computed"
        }
    ],
    "eth_value_calls": 10,
    "guards_detected": []
}
medium upgradeability cast DELEGATECALL present 80 no
view
evidence_json
{
    "notes": "delegatecall enables execution in caller context; common in proxies/upgradeable patterns",
    "delegatecall_count": 2
}
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": 14
}