29ca86d2-0e00-4039-a1ac-458e924c7147
Open this run to answer one question: is this real attacker-relevant behavior with real impact, or just normal contract plumbing?
| ID | Type | Status | Attempts | Heartbeat |
|---|---|---|---|---|
| 30951 | report.consolidate | complete | 1 / 1 | 3 months ago |
| 94717 | artifact.fetch | complete | 1 / 3 | 1 week ago |
| 94718 | tool.cast_disasm | complete | 1 / 3 | 1 week ago |
| 94719 | analysis.bundle | complete | 1 / 3 | 1 week ago |
| 94720 | capability.graph | complete | 1 / 3 | 1 week ago |
| 94721 | detector.run | complete | 1 / 3 | 1 week ago |
| 94722 | validation.fork | complete | 1 / 3 | 1 week ago |
No slither job recorded yet.
[codex:1138744] OpenAI Codex v0.77.0 (research preview)
[codex:1138744] --------
[codex:1138744] workdir: /tmp/codex-multi-7wwc7sg5
[codex:1138744] model: gpt-5.2-codex
[codex:1138744] provider: openai
[codex:1138744] approval: never
[codex:1138744] sandbox: read-only
[codex:1138744] reasoning effort: xhigh
[codex:1138744] reasoning summaries: auto
[codex:1138744] session id: 019b768e-002e-7942-9b01-6736b160580a
[codex:1138744] --------
[codex:1138744] user
[codex:1138744] You are a profit-focused exploit hunter analyzing EVM bytecode. Your ONLY goal is finding ways to extract value (ETH, tokens, NFTs) from this contract.
[codex:1138744]
[codex:1138744] Read `BYTECODE_BUNDLE.txt` completely before concluding.
[codex:1138744]
[codex:1138744] ONLY REPORT if you find a CONCRETE, EXPLOITABLE path to profit. We do NOT care about:
[codex:1138744] - Gas inefficiency, code quality, or best practices
[codex:1138744] - Theoretical vulnerabilities without a clear extraction path
[codex:1138744] - Generic footguns (unchecked return values, etc.) unless they enable theft
[codex:1138744] - Issues requiring social engineering or off-chain coordination
[codex:1138744]
[codex:1138744] PATTERNS WORTH INVESTIGATING in bytecode:
[codex:1138744] - CALL/DELEGATECALL with controllable destination or calldata
[codex:1138744] - Value transfers (CALL with non-zero value) without prior CALLER/ORIGIN checks
[codex:1138744] - SSTORE to low slots (0-10) that might be owner/admin storage
[codex:1138744] - ecrecover (signature validation) - look for missing nonce/replay protection
[codex:1138744] - External calls before state updates (reentrancy)
[codex:1138744] - SELFDESTRUCT with controllable beneficiary
[codex:1138744] - Proxy patterns (DELEGATECALL to storage slot) with unprotected upgrade paths
[codex:1138744]
[codex:1138744] For each finding, you MUST explain:
[codex:1138744] 1. The specific bytecode pattern/offsets that indicate the vulnerability
[codex:1138744] 2. The concrete sequence of transactions to extract value
[codex:1138744] 3. Why you believe this is exploitable (not just suspicious)
[codex:1138744]
[codex:1138744] If you cannot identify a concrete profit path from bytecode alone: set no_findings=true.
[codex:1138744] Do NOT hallucinate. Bytecode-only analysis is limited - be honest about uncertainty.
[codex:1138744]
[codex:1138744] Output MUST be valid JSON matching the provided schema.
[codex:1138744] - severity: info, low, medium, high, critical (use high/critical ONLY for clear extraction paths)
[codex:1138744] - category: access_control, reentrancy, math, oracle, upgradeability, auth, other
[codex:1138744] mcp startup: no servers
[codex:1138744]
[codex:1138744] thinking
[codex:1138744] **Searching for bytecode files**
[codex:1138744] exec
[codex:1138744] /bin/bash -lc ls in /tmp/codex-multi-7wwc7sg5 succeeded in 6ms:
[codex:1138744] BYTECODE_BUNDLE.txt
[codex:1138744] codex-output-schema.json
[codex:1138744]
[codex:1138744] thinking
[codex:1138744] **Reading file content**
[codex:1138744] exec
[codex:1138744] /bin/bash -lc 'cat BYTECODE_BUNDLE.txt' in /tmp/codex-multi-7wwc7sg5 succeeded in 5ms:
[codex:1138744] Runtime bytecode bundle for best-effort auditing.
[codex:1138744] Note: without verified source, conclusions are low-confidence unless a concrete pattern is visible.
[codex:1138744]
[codex:1138744] FILE: runtime_bytecode.hex
[codex:1138744] 0x6080604052600436106102605760003560e01c806392bfff1911610144578063ccbba0c0116100b6578063e79994cb1161007a578063e79994cb14610795578063ed421e14146107cd578063f4887f15146107ed578063f6eb192d1461080d578063f8453e7c1461082d578063f92f9e101461084d57600080fd5b8063ccbba0c0146106df578063ce206dc6146106fd578063d416deb61461071d578063d6bed37c1461073d578063e78cea921461077557600080fd5b8063ad1e29b111610108578063ad1e29b1146105e5578063b06c3d8014610615578063b0829ba714610642578063bb1c6a811461066f578063c13298471461068f578063c719eebe146106af57600080fd5b806392bfff191461053757806395edabb01461055757806398421bda14610577578063a1590646146105af578063aaf5eb68146105cf57600080fd5b806362a5af3b116101dd57806370b8ed74116101a157806370b8ed741461044d57806371806b781461046d578063775fe40b1461049d5780637eeee88e146104ca5780638dd14802146104f7578063903341781461051757600080fd5b806362a5af3b146103cd578063650cd615146103e25780636598f3f814610402578063666a7e49146104185780636a28f0001461043857600080fd5b806345d61ded1161022457806345d61ded14610325578063465f193514610345578063518351cd146103655780635c975abb1461038957806362859f8f146103ad57600080fd5b8063036e76e31461026c578063044423e91461028e5780630f45b502146102c557806339fdd5de146102e55780633a5381b51461030557600080fd5b3661026757005b600080fd5b34801561027857600080fd5b5061028c610287366004612bde565b61086d565b005b34801561029a57600080fd5b506097546001600160a01b03165b6040516001600160a01b0390911681526020015b60405180910390f35b3480156102d157600080fd5b5061028c6102e0366004612c02565b6108cc565b3480156102f157600080fd5b5061028c610300366004612c6d565b6109e0565b34801561031157600080fd5b5060ca546102a8906001600160a01b031681565b34801561033157600080fd5b5060d6546102a8906001600160a01b031681565b34801561035157600080fd5b5061028c610360366004612cd7565b610bc1565b34801561037157600080fd5b5061037b60d75481565b6040519081526020016102bc565b34801561039557600080fd5b5060335460ff165b60405190151581526020016102bc565b3480156103b957600080fd5b5061028c6103c8366004612d5e565b610c43565b3480156103d957600080fd5b5061028c610d0f565b3480156103ee57600080fd5b5061028c6103fd366004612dae565b610d4a565b34801561040e57600080fd5b5061037b60d85481565b34801561042457600080fd5b5061028c610433366004612bde565b610d7e565b34801561044457600080fd5b5061028c610dd5565b34801561045957600080fd5b5061028c610468366004612e01565b610e10565b34801561047957600080fd5b5061039d610488366004612bde565b60cf6020526000908152604090205460ff1681565b3480156104a957600080fd5b5061037b6104b8366004612bde565b60d36020526000908152604090205481565b3480156104d657600080fd5b5061037b6104e5366004612bde565b60ce6020526000908152604090205481565b34801561050357600080fd5b5061028c610512366004612bde565b610edd565b34801561052357600080fd5b5061028c610532366004612bde565b610f3a565b34801561054357600080fd5b5061028c610552366004612e42565b610f9a565b34801561056357600080fd5b5061037b610572366004612bde565b611090565b34801561058357600080fd5b5061037b610592366004612e77565b60cb60209081526000928352604080842090915290825290205481565b3480156105bb57600080fd5b5061028c6105ca366004612eb0565b6111f3565b3480156105db57600080fd5b5061037b61271081565b3480156105f157600080fd5b5061039d610600366004612f22565b60d46020526000908152604090205460ff1681565b34801561062157600080fd5b5061037b610630366004612bde565b60d26020526000908152604090205481565b34801561064e57600080fd5b5061037b61065d366004612bde565b60cc6020526000908152604090205481565b34801561067b57600080fd5b5061028c61068a366004612f3b565b6113c0565b34801561069b57600080fd5b5061028c6106aa366004612fd5565b6115ab565b3480156106bb57600080fd5b5061039d6106ca366004612f22565b60d06020526000908152604090205460ff1681565b3480156106eb57600080fd5b506098546001600160a01b03166102a8565b34801561070957600080fd5b5060d1546102a8906001600160a01b031681565b34801561072957600080fd5b5061028c610738366004613021565b611603565b34801561074957600080fd5b5061037b610758366004612e77565b60cd60209081526000928352604080842090915290825290205481565b34801561078157600080fd5b5060c9546102a8906001600160a01b031681565b3480156107a157600080fd5b5061037b6107b036600461305c565b60d560209081526000928352604080842090915290825290205481565b3480156107d957600080fd5b5061028c6107e8366004612cd7565b611805565b3480156107f957600080fd5b5061028c610808366004612bde565b611926565b34801561081957600080fd5b5061028c610828366004613088565b611983565b34801561083957600080fd5b5061028c610848366004613102565b611c15565b34801561085957600080fd5b5061028c61086836600461317e565b611db2565b610875611f0f565b6098546001600160a01b03908116908216036108c057609854604051630237ef6160e11b81526001600160a01b03918216600482015290821660248201526044015b60405180910390fd5b6108c981611f51565b50565b6108d4611f0f565b61271082111561093657604051630c6a14bb60e11b815260048101839052612710602482015260606044820152601a60648201527f4272696467652070657263656e742065786365656473206d6178000000000000608482015260a4016108b7565b612710811115610998576040516345fe0c2760e11b815260048101829052612710602482015260606044820152601a60648201527f537570706c792070657263656e742065786365656473206d6178000000000000608482015260a4016108b7565b60d782905560d881905560408051838152602081018390527f87ec0345192ee00e871b0aa8c85041fb508295846f1b114f2ad28550d85a54a491015b60405180910390a15050565b6109e8612017565b6109f0612070565b846109fa816120b6565b83610a048161214b565b86610a0e81612175565b610af233898960c960009054906101000a90046001600160a01b03166001600160a01b0316631edb51ad6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a67573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a8b91906131be565b8a604051602001610aa09594939291906131d7565b6040516020818303038152906040528051906020012086868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061220b92505050565b33600090815260cb602090815260408083206001600160a01b038c16845290915281208054899290610b25908490613228565b90915550506001600160a01b038816600090815260cc602052604081208054899290610b52908490613228565b90915550610b6d90506001600160a01b03891633308a6122ef565b6040518781526001600160a01b0389169033907f3bda13fe73033028c14ba107ef2ddc3a09abeb2ea7cac294113857d856c96b3b9060200160405180910390a3505050610bba6001606555565b5050505050565b610bc9611f0f565b610bd1612017565b610be78184846001600160a01b03821615612361565b826001600160a01b0316816001600160a01b03167fa922bc33914bd31b27595f621e02fefe0cce42e852ef76299a0a618efa9c6e5b84604051610c2c91815260200190565b60405180910390a3610c3e6001606555565b505050565b610c4b612434565b610c53612017565b8060005b81811015610cff57600060d26000868685818110610c7757610c77613241565b9050602002016020810190610c8c9190612bde565b6001600160a01b03166001600160a01b0316815260200190815260200160002081905550600060d36000868685818110610cc857610cc8613241565b9050602002016020810190610cdd9190612bde565b6001600160a01b03168152602081019190915260400160002055600101610c57565b5050610d0b6001606555565b5050565b610d17612434565b610d1f6124d8565b6040517f4051e961c454332acc3bfc1fd8b56b6089a599327eb5c8dd6d693d38551cd32390600090a1565b610d52612070565b610d5a612532565b610d62612017565b610d6e82858584612361565b610d786001606555565b50505050565b610d86611f0f565b6097546001600160a01b0390811690821603610dcc57609754604051630237ef6160e11b81526001600160a01b03918216600482015290821660248201526044016108b7565b6108c98161259c565b610ddd611f0f565b610de561264e565b6040517f2d12867222d81b22cc368d426643f6e5a96986c24cc39ce8504ed58e2660df5190600090a1565b610e18612434565b610e20612070565b6001600160a01b03808416600090815260cb6020908152604080832093861683529290529081208054839290610e57908490613228565b90915550506001600160a01b038216600090815260cc602052604081208054839290610e84908490613228565b92505081905550826001600160a01b0316826001600160a01b03167fe085944a5ddfe0e68127edbf665e03ec5be397243129f6555232ed553e951cb183604051610ed091815260200190565b60405180910390a3505050565b610ee5611f0f565b80610eef81612687565b60c980546001600160a01b0319166001600160a01b0384169081179091556040517fa49730bff544fd0b716395c592e39c6fd2d2481a19b9229b5b240483db95a49590600090a25050565b80610f4481612687565b610f4c611f0f565b60d180546001600160a01b0319166001600160a01b0384169081179091556040519081527f1f0da97238b22add14994904c13e93a9ba4fdb2020955e639c43e03bb262cbce906020016109d4565b610fa2612532565b610faa612017565b600081815260d4602052604090205460ff1615610fec576040516318bb936b60e31b8152600481018290526001600160a01b03841660248201526044016108b7565b6001600160a01b038316600090815260d3602052604081208054849290611014908490613228565b90915550506001600160a01b038316600090815260cf602052604090205460ff161561105457600081815260d460205260409020805460ff191660011790555b80836001600160a01b03167fddf3797a38d53ed43ea0839f8db9db1109d5d86994ebe78cc33a039fa5f8749b84604051610c2c91815260200190565b6001600160a01b038116600081815260d260205260408082205460d75491516370a0823160e01b81523060048201529293909284928492612710926370a0823190602401602060405180830381865afa1580156110f1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061111591906131be565b61111f9086613228565b6111299190613257565b611133919061326e565b61113d9190613290565b90506000846001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561117f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111a391906131be565b905060008361271060d85486856111ba9190613290565b6111c49190613257565b6111ce919061326e565b6111d89190613290565b90508281116111e757806111e9565b825b9695505050505050565b6111fb612532565b611203612070565b61120b612017565b6000805b8281101561138757600084848381811061122b5761122b613241565b905060200201359050600087878481811061124857611248613241565b600085815260d460209081526040909120549102929092013592505060ff1615611297576040516318bb936b60e31b8152600481018390526001600160a01b038a1660248201526044016108b7565b6001600160a01b038916600090815260d5602090815260408083208584529091529020548114611319576001600160a01b038916600081815260d56020908152604080832086845290915290819020549051631b1d4ef960e21b81526004810191909152602481018390526044810184905260648101919091526084016108b7565b600082815260d4602052604090819020805460ff19166001179055519381019382906001600160a01b038b16907f1b36ea262b458e9b3ff138a58a195232f209ce92ab097f27606a12f7ec0790f2906113759085815260200190565b60405180910390a3505060010161120f565b506001600160a01b038616600090815260d26020526040812080548392906113b0908490613290565b9091555050600160655550610bba565b6113c8612434565b6113d0612070565b84831480156113de57508281145b6114395760405162461bcd60e51b815260206004820152602660248201527f496e70757420617272617973206d7573742068617665207468652073616d65206044820152650d8cadccee8d60d31b60648201526084016108b7565b60005b858110156115a257600087878381811061145857611458613241565b905060200201602081019061146d9190612bde565b9050600086868481811061148357611483613241565b90506020020160208101906114989190612bde565b905060008585858181106114ae576114ae613241565b90506020020135905060cb6000846001600160a01b03166001600160a01b031681526020019081526020016000206000836001600160a01b03166001600160a01b0316815260200190815260200160002054600003611528576000600183604051631940590960e01b81526004016108b7939291906132a3565b6001600160a01b03838116600081815260cb6020908152604080832094871680845294825280832080548701905560cc82529182902080548601905590518481527f3bda13fe73033028c14ba107ef2ddc3a09abeb2ea7cac294113857d856c96b3b910160405180910390a350505080600101905061143c565b50505050505050565b6115b3612434565b6115bb612017565b6115f98383808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508592506126e8915050565b610c3e6001606555565b61160b612532565b611613612017565b6001600160a01b038416600090815260cf602052604090205460ff1661166957600061163e85611090565b90508381101561166757838186604051630585fbc960e31b81526004016108b7939291906132a3565b505b6040516370a0823160e01b8152306004820152819084906001600160a01b038716906370a0823190602401602060405180830381865afa1580156116b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116d591906131be565b6116df9190613290565b101561170457828185604051631940590960e01b81526004016108b7939291906132a3565b6001600160a01b038416600090815260d56020908152604080832085845290915290205415611758576040516318bb936b60e31b8152600481018390526001600160a01b03851660248201526044016108b7565b6001600160a01b038416600081815260d560209081526040808320868452825280832087905592825260d290529081208054859290611798908490613228565b909155505060d1546117b7906001600160a01b03868116911685612745565b604080516001600160a01b03861681526020810185905283917fd89781d5625dc08049e795985a82f6f1df8f90f8f8bcb9973736b9c25bc2925e910160405180910390a2610d786001606555565b61180d612434565b8061181781612775565b61181f612017565b609854604051636eab9b3560e11b81523360048201526001600160a01b039091169063dd57366a90602401602060405180830381865afa158015611867573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061188b91906132c2565b8015611899575060335460ff165b156118b9576040516309d228a560e11b81523360048201526024016108b7565b6118cf8285856001600160a01b03821615612361565b836001600160a01b0316826001600160a01b03167fa922bc33914bd31b27595f621e02fefe0cce42e852ef76299a0a618efa9c6e5b8560405161191491815260200190565b60405180910390a3610d786001606555565b61192e611f0f565b8061193881612687565b60d680546001600160a01b0319166001600160a01b0384169081179091556040517f5bbdab227f09862389aad197176a8cc81e4d162e2953ef9293725ca3ed54728a90600090a25050565b61198b612017565b611993612070565b8261199d81612175565b6119a5612434565b6001600160a01b03808616600081815260cd602090815260408083209489168084529482528083205493835260cb8252808320948352939052919091205484916119ee91613290565b1015611a5a576001600160a01b03808616600081815260cd602090815260408083209489168084529482528083205493835260cb825280832094835293905291909120548491611a3d91613290565b85604051631940590960e01b81526004016108b7939291906132a3565b611b3e8585858560c960009054906101000a90046001600160a01b03166001600160a01b0316631edb51ad6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ab4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ad891906131be565b604051602001611aec9594939291906131d7565b6040516020818303038152906040528051906020012088888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061220b92505050565b6001600160a01b03808616600090815260cd6020908152604080832093881683529290529081208054859290611b75908490613228565b90915550506001600160a01b038416600090815260ce602052604081208054859290611ba2908490613228565b90915550611bb590508585856000612361565b836001600160a01b0316856001600160a01b03167fa9a049377ec351e933b3447707a7afd5778f50b3737b539e7e62bd271db2eb5f85604051611bfa91815260200190565b60405180910390a350611c0d6001606555565b505050505050565b600054610100900460ff1615808015611c355750600054600160ff909116105b80611c4f5750303b158015611c4f575060005460ff166001145b611cb25760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016108b7565b6000805460ff191660011790558015611cd5576000805461ff0019166101001790555b84611cdf81612687565b84611ce981612687565b60c980546001600160a01b03808a166001600160a01b03199283161790925560ca805492891692909116919091179055611d238989612841565b611d62858580806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250600192506126e8915050565b505080156115a2576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150505050505050565b611dba611f0f565b611dc2612017565b6001600160a01b03808416600090815260cb6020908152604080832093851683529290529081205490819003611e125780600083604051631940590960e01b81526004016108b7939291906132a3565b6001600160a01b03808516600090815260cb602081815260408084208786168086529083528185208590559488168452918152818320938352929092529081208054839290611e62908490613228565b92505081905550836001600160a01b0316826001600160a01b03167fe085944a5ddfe0e68127edbf665e03ec5be397243129f6555232ed553e951cb16000604051611eaf91815260200190565b60405180910390a3826001600160a01b0316826001600160a01b03167fe085944a5ddfe0e68127edbf665e03ec5be397243129f6555232ed553e951cb183604051611efc91815260200190565b60405180910390a350610c3e6001606555565b6097546001600160a01b03163314611f4f57609754604051636ccc68c360e11b81523360048201526001600160a01b0390911660248201526044016108b7565b565b6001600160a01b038116611fcd5760408051630961777760e41b81526004810191909152602b60448201527f4d61696e7461696e65727320726567697374727920616464726573732063616e60648201526a6e6f74206265207a65726f60a81b60848201526001600160a01b038216602482015260a4016108b7565b609880546001600160a01b0319166001600160a01b0383169081179091556040517f993a06629d3c3b6a878490571de2b491eb014f2623099576c8e849408342350790600090a250565b6002606554036120695760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016108b7565b6002606555565b60335460ff1615611f4f5760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b60448201526064016108b7565b6001600160a01b038116600090815260cf602052604090205460ff166108c9576040805163ea51453360e01b81526001600160a01b03831660048201526024810191909152603260448201527f546f6b656e206973206e6f7420636f6e6669677572656420666f72206d61696e6064820152712d746f2d6d61696e207472616e736665727360701b608482015260a4016108b7565b804211156108c95760405163442400cf60e11b8152600481018290524260248201526044016108b7565b60c954604051634448c04560e01b81526001600160a01b03838116600483015290911690634448c04590602401602060405180830381865afa1580156121bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121e391906132c2565b156108c9576040516281783560e51b81526001600160a01b03821660048201526024016108b7565b600082815260d0602052604090205460ff161561223f57818160405163054f717960e21b81526004016108b792919061332f565b60ca54604051631b594def60e31b81526001600160a01b039091169063daca6f7890612271908590859060040161332f565b602060405180830381865afa15801561228e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122b291906132c2565b6122d3578082604051637ab683f760e01b81526004016108b7929190613348565b50600090815260d060205260409020805460ff19166001179055565b6040516001600160a01b0380851660248301528316604482015260648101829052610d789085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152612863565b6001606555565b8015612420576000846001600160a01b03168360405160006040518083038185875af1925050503d80600081146123b4576040519150601f19603f3d011682016040523d82523d6000602084013e6123b9565b606091505b505090508061241a5760405163a906d43160e01b81526001600160a01b03861660048201526024810184905260606044820152601660648201527513985d1a5d99481d1c985b9cd9995c8819985a5b195960521b608482015260a4016108b7565b50610d78565b610d786001600160a01b0384168584612745565b609854604051636eab9b3560e11b81523360048201526001600160a01b039091169063dd57366a90602401602060405180830381865afa15801561247c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124a091906132c2565b1580156124b857506097546001600160a01b03163314155b15611f4f5760405163537ebb8760e11b81523360048201526024016108b7565b6124e0612070565b6033805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586125153390565b6040516001600160a01b03909116815260200160405180910390a1565b60c9546001600160a01b03163314611f4f5760c95460405163c52de32160e01b81523360048201526001600160a01b0390911660248201526060604482015260136064820152726f6e6c79436861696e706f727442726964676560681b608482015260a4016108b7565b6001600160a01b0381166126045760408051630961777760e41b81526004810191909152601f60448201527f436f6e677265737320616464726573732063616e6e6f74206265207a65726f0060648201526001600160a01b03821660248201526084016108b7565b609780546001600160a01b0319166001600160a01b0383169081179091556040517f92c0335399ecbaa35b0b21fc784a8ce59419e6786caf942b31db51ac8c29258490600090a250565b612656612938565b6033805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa33612515565b6001600160a01b0381166108c95760408051638eb40ca760e01b815260048101919091526016604482015275416464726573732063616e6e6f74206265207a65726f60501b60648201526001600160a01b03821660248201526084016108b7565b60005b8251811015610c3e578160cf600085848151811061270b5761270b613241565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790556001016126eb565b6040516001600160a01b038316602482015260448101829052610c3e90849063a9059cbb60e01b90606401612323565b60d65460405163e4e3a7a960e01b81526001600160a01b0383811660048301529091169063e4e3a7a990602401602060405180830381865afa1580156127bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127e391906132c2565b6108c95760408051633c84244160e21b81526001600160a01b03831660048201526024810191909152601b60448201527f42656e6566696369617279206e6f742077686974656c6973746564000000000060648201526084016108b7565b61284a8261259c565b61285381611f51565b61285b612981565b610d0b6129b0565b60006128b8826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166129df9092919063ffffffff16565b90508051600014806128d95750808060200190518101906128d991906132c2565b610c3e5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016108b7565b60335460ff16611f4f5760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b60448201526064016108b7565b600054610100900460ff166129a85760405162461bcd60e51b81526004016108b79061336a565b611f4f6129f6565b600054610100900460ff166129d75760405162461bcd60e51b81526004016108b79061336a565b611f4f612a29565b60606129ee8484600085612a50565b949350505050565b600054610100900460ff16612a1d5760405162461bcd60e51b81526004016108b79061336a565b6033805460ff19169055565b600054610100900460ff1661235a5760405162461bcd60e51b81526004016108b79061336a565b606082471015612ab15760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016108b7565b600080866001600160a01b03168587604051612acd91906133b5565b60006040518083038185875af1925050503d8060008114612b0a576040519150601f19603f3d011682016040523d82523d6000602084013e612b0f565b606091505b5091509150612b2087838387612b2b565b979650505050505050565b60608315612b9a578251600003612b93576001600160a01b0385163b612b935760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016108b7565b50816129ee565b6129ee8383815115612baf5781518083602001fd5b8060405162461bcd60e51b81526004016108b791906133d1565b6001600160a01b03811681146108c957600080fd5b600060208284031215612bf057600080fd5b8135612bfb81612bc9565b9392505050565b60008060408385031215612c1557600080fd5b50508035926020909101359150565b60008083601f840112612c3657600080fd5b50813567ffffffffffffffff811115612c4e57600080fd5b602083019150836020828501011115612c6657600080fd5b9250929050565b600080600080600060808688031215612c8557600080fd5b8535612c9081612bc9565b94506020860135935060408601359250606086013567ffffffffffffffff811115612cba57600080fd5b612cc688828901612c24565b969995985093965092949392505050565b600080600060608486031215612cec57600080fd5b8335612cf781612bc9565b9250602084013591506040840135612d0e81612bc9565b809150509250925092565b60008083601f840112612d2b57600080fd5b50813567ffffffffffffffff811115612d4357600080fd5b6020830191508360208260051b8501011115612c6657600080fd5b60008060208385031215612d7157600080fd5b823567ffffffffffffffff811115612d8857600080fd5b612d9485828601612d19565b90969095509350505050565b80151581146108c957600080fd5b60008060008060808587031215612dc457600080fd5b8435612dcf81612bc9565b9350602085013592506040850135612de681612bc9565b91506060850135612df681612da0565b939692955090935050565b600080600060608486031215612e1657600080fd5b8335612e2181612bc9565b92506020840135612e3181612bc9565b929592945050506040919091013590565b600080600060608486031215612e5757600080fd5b8335612e6281612bc9565b95602085013595506040909401359392505050565b60008060408385031215612e8a57600080fd5b8235612e9581612bc9565b91506020830135612ea581612bc9565b809150509250929050565b600080600080600060608688031215612ec857600080fd5b8535612ed381612bc9565b9450602086013567ffffffffffffffff80821115612ef057600080fd5b612efc89838a01612d19565b90965094506040880135915080821115612f1557600080fd5b50612cc688828901612d19565b600060208284031215612f3457600080fd5b5035919050565b60008060008060008060608789031215612f5457600080fd5b863567ffffffffffffffff80821115612f6c57600080fd5b612f788a838b01612d19565b90985096506020890135915080821115612f9157600080fd5b612f9d8a838b01612d19565b90965094506040890135915080821115612fb657600080fd5b50612fc389828a01612d19565b979a9699509497509295939492505050565b600080600060408486031215612fea57600080fd5b833567ffffffffffffffff81111561300157600080fd5b61300d86828701612d19565b9094509250506020840135612d0e81612da0565b6000806000806080858703121561303757600080fd5b843561304281612bc9565b966020860135965060408601359560600135945092505050565b6000806040838503121561306f57600080fd5b823561307a81612bc9565b946020939093013593505050565b60008060008060008060a087890312156130a157600080fd5b863567ffffffffffffffff8111156130b857600080fd5b6130c489828a01612c24565b90975095505060208701356130d881612bc9565b935060408701356130e881612bc9565b959894975092956060810135946080909101359350915050565b60008060008060008060a0878903121561311b57600080fd5b863561312681612bc9565b9550602087013561313681612bc9565b9450604087013561314681612bc9565b9350606087013561315681612bc9565b9250608087013567ffffffffffffffff81111561317257600080fd5b612fc389828a01612d19565b60008060006060848603121561319357600080fd5b833561319e81612bc9565b925060208401356131ae81612bc9565b91506040840135612d0e81612bc9565b6000602082840312156131d057600080fd5b5051919050565b6bffffffffffffffffffffffff19606096871b811682529490951b909316601485015260288401919091526048830152606882015260880190565b634e487b7160e01b600052601160045260246000fd5b8082018082111561323b5761323b613212565b92915050565b634e487b7160e01b600052603260045260246000fd5b808202811582820484141761323b5761323b613212565b60008261328b57634e487b7160e01b600052601260045260246000fd5b500490565b8181038181111561323b5761323b613212565b92835260208301919091526001600160a01b0316604082015260600190565b6000602082840312156132d457600080fd5b8151612bfb81612da0565b60005b838110156132fa5781810151838201526020016132e2565b50506000910152565b6000815180845261331b8160208601602086016132df565b601f01601f19169290920160200192915050565b8281526040602082015260006129ee6040830184613303565b60408152600061335b6040830185613303565b90508260208301529392505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b600082516133c78184602087016132df565b9190910192915050565b602081526000612bfb602083018461330356fea264697066735822122011e96c20b65180197b84b48e0f2651c3049f2405c78ae8180e21aa4aa3a5b3c864736f6c63430008160033
[codex:1138744]
[codex:1138744] thinking
[codex:1138744] **Examining bytecode for exploit paths**
[codex:1138744]
[codex:1138744] I'm focusing on identifying a concrete exploit path in a complex bridge contract bytecode by analyzing function selectors, revert strings, and initializer patterns to check for unprotected calls or vulnerabilities like unguarded initializers or unauthorized token transfers. I’m preparing to extract strings from the bytecode to gather more clues about access controls and sensitive functions.
[codex:1138744] exec
[codex:1138744] /bin/bash -lc 'rg -n "" BYTECODE_BUNDLE.txt' in /tmp/codex-multi-7wwc7sg5 succeeded in 7ms:
[codex:1138744] 1:Runtime bytecode bundle for best-effort auditing.
[codex:1138744] 2:Note: without verified source, conclusions are low-confidence unless a concrete pattern is visible.
[codex:1138744] 3:
[codex:1138744] 4:FILE: runtime_bytecode.hex
[codex:1138744] 5:0x6080604052600436106102605760003560e01c806392bfff1911610144578063ccbba0c0116100b6578063e79994cb1161007a578063e79994cb14610795578063ed421e14146107cd578063f4887f15146107ed578063f6eb192d1461080d578063f8453e7c1461082d578063f92f9e101461084d57600080fd5b8063ccbba0c0146106df578063ce206dc6146106fd578063d416deb61461071d578063d6bed37c1461073d578063e78cea921461077557600080fd5b8063ad1e29b111610108578063ad1e29b1146105e5578063b06c3d8014610615578063b0829ba714610642578063bb1c6a811461066f578063c13298471461068f578063c719eebe146106af57600080fd5b806392bfff191461053757806395edabb01461055757806398421bda14610577578063a1590646146105af578063aaf5eb68146105cf57600080fd5b806362a5af3b116101dd57806370b8ed74116101a157806370b8ed741461044d57806371806b781461046d578063775fe40b1461049d5780637eeee88e146104ca5780638dd14802146104f7578063903341781461051757600080fd5b806362a5af3b146103cd578063650cd615146103e25780636598f3f814610402578063666a7e49146104185780636a28f0001461043857600080fd5b806345d61ded1161022457806345d61ded14610325578063465f193514610345578063518351cd146103655780635c975abb1461038957806362859f8f146103ad57600080fd5b8063036e76e31461026c578063044423e91461028e5780630f45b502146102c557806339fdd5de146102e55780633a5381b51461030557600080fd5b3661026757005b600080fd5b34801561027857600080fd5b5061028c610287366004612bde565b61086d565b005b34801561029a57600080fd5b506097546001600160a01b03165b6040516001600160a01b0390911681526020015b60405180910390f35b3480156102d157600080fd5b5061028c6102e0366004612c02565b6108cc565b3480156102f157600080fd5b5061028c610300366004612c6d565b6109e0565b34801561031157600080fd5b5060ca546102a8906001600160a01b031681565b34801561033157600080fd5b5060d6546102a8906001600160a01b031681565b34801561035157600080fd5b5061028c610360366004612cd7565b610bc1565b34801561037157600080fd5b5061037b60d75481565b6040519081526020016102bc565b34801561039557600080fd5b5060335460ff165b60405190151581526020016102bc565b3480156103b957600080fd5b5061028c6103c8366004612d5e565b610c43565b3480156103d957600080fd5b5061028c610d0f565b3480156103ee57600080fd5b5061028c6103fd366004612dae565b610d4a565b34801561040e57600080fd5b5061037b60d85481565b34801561042457600080fd5b5061028c610433366004612bde565b610d7e565b34801561044457600080fd5b5061028c610dd5565b34801561045957600080fd5b5061028c610468366004612e01565b610e10565b34801561047957600080fd5b5061039d610488366004612bde565b60cf6020526000908152604090205460ff1681565b3480156104a957600080fd5b5061037b6104b8366004612bde565b60d36020526000908152604090205481565b3480156104d657600080fd5b5061037b6104e5366004612bde565b60ce6020526000908152604090205481565b34801561050357600080fd5b5061028c610512366004612bde565b610edd565b34801561052357600080fd5b5061028c610532366004612bde565b610f3a565b34801561054357600080fd5b5061028c610552366004612e42565b610f9a565b34801561056357600080fd5b5061037b610572366004612bde565b611090565b34801561058357600080fd5b5061037b610592366004612e77565b60cb60209081526000928352604080842090915290825290205481565b3480156105bb57600080fd5b5061028c6105ca366004612eb0565b6111f3565b3480156105db57600080fd5b5061037b61271081565b3480156105f157600080fd5b5061039d610600366004612f22565b60d46020526000908152604090205460ff1681565b34801561062157600080fd5b5061037b610630366004612bde565b60d26020526000908152604090205481565b34801561064e57600080fd5b5061037b61065d366004612bde565b60cc6020526000908152604090205481565b34801561067b57600080fd5b5061028c61068a366004612f3b565b6113c0565b34801561069b57600080fd5b5061028c6106aa366004612fd5565b6115ab565b3480156106bb57600080fd5b5061039d6106ca366004612f22565b60d06020526000908152604090205460ff1681565b3480156106eb57600080fd5b506098546001600160a01b03166102a8565b34801561070957600080fd5b5060d1546102a8906001600160a01b031681565b34801561072957600080fd5b5061028c610738366004613021565b611603565b34801561074957600080fd5b5061037b610758366004612e77565b60cd60209081526000928352604080842090915290825290205481565b34801561078157600080fd5b5060c9546102a8906001600160a01b031681565b3480156107a157600080fd5b5061037b6107b036600461305c565b60d560209081526000928352604080842090915290825290205481565b3480156107d957600080fd5b5061028c6107e8366004612cd7565b611805565b3480156107f957600080fd5b5061028c610808366004612bde565b611926565b34801561081957600080fd5b5061028c610828366004613088565b611983565b34801561083957600080fd5b5061028c610848366004613102565b611c15565b34801561085957600080fd5b5061028c61086836600461317e565b611db2565b610875611f0f565b6098546001600160a01b03908116908216036108c057609854604051630237ef6160e11b81526001600160a01b03918216600482015290821660248201526044015b60405180910390fd5b6108c981611f51565b50565b6108d4611f0f565b61271082111561093657604051630c6a14bb60e11b815260048101839052612710602482015260606044820152601a60648201527f4272696467652070657263656e742065786365656473206d6178000000000000608482015260a4016108b7565b612710811115610998576040516345fe0c2760e11b815260048101829052612710602482015260606044820152601a60648201527f537570706c792070657263656e742065786365656473206d6178000000000000608482015260a4016108b7565b60d782905560d881905560408051838152602081018390527f87ec0345192ee00e871b0aa8c85041fb508295846f1b114f2ad28550d85a54a491015b60405180910390a15050565b6109e8612017565b6109f0612070565b846109fa816120b6565b83610a048161214b565b86610a0e81612175565b610af233898960c960009054906101000a90046001600160a01b03166001600160a01b0316631edb51ad6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a67573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a8b91906131be565b8a604051602001610aa09594939291906131d7565b6040516020818303038152906040528051906020012086868080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061220b92505050565b33600090815260cb602090815260408083206001600160a01b038c16845290915281208054899290610b25908490613228565b90915550506001600160a01b038816600090815260cc602052604081208054899290610b52908490613228565b90915550610b6d90506001600160a01b03891633308a6122ef565b6040518781526001600160a01b0389169033907f3bda13fe73033028c14ba107ef2ddc3a09abeb2ea7cac294113857d856c96b3b9060200160405180910390a3505050610bba6001606555565b5050505050565b610bc9611f0f565b610bd1612017565b610be78184846001600160a01b03821615612361565b826001600160a01b0316816001600160a01b03167fa922bc33914bd31b27595f621e02fefe0cce42e852ef76299a0a618efa9c6e5b84604051610c2c91815260200190565b60405180910390a3610c3e6001606555565b505050565b610c4b612434565b610c53612017565b8060005b81811015610cff57600060d26000868685818110610c7757610c77613241565b9050602002016020810190610c8c9190612bde565b6001600160a01b03166001600160a01b0316815260200190815260200160002081905550600060d36000868685818110610cc857610cc8613241565b9050602002016020810190610cdd9190612bde565b6001600160a01b03168152602081019190915260400160002055600101610c57565b5050610d0b6001606555565b5050565b610d17612434565b610d1f6124d8565b6040517f4051e961c454332acc3bfc1fd8b56b6089a599327eb5c8dd6d693d38551cd32390600090a1565b610d52612070565b610d5a612532565b610d62612017565b610d6e82858584612361565b610d786001606555565b50505050565b610d86611f0f565b6097546001600160a01b0390811690821603610dcc57609754604051630237ef6160e11b81526001600160a01b03918216600482015290821660248201526044016108b7565b6108c98161259c565b610ddd611f0f565b610de561264e565b6040517f2d12867222d81b22cc368d426643f6e5a96986c24cc39ce8504ed58e2660df5190600090a1565b610e18612434565b610e20612070565b6001600160a01b03808416600090815260cb6020908152604080832093861683529290529081208054839290610e57908490613228565b90915550506001600160a01b038216600090815260cc602052604081208054839290610e84908490613228565b92505081905550826001600160a01b0316826001600160a01b03167fe085944a5ddfe0e68127edbf665e03ec5be397243129f6555232ed553e951cb183604051610ed091815260200190565b60405180910390a3505050565b610ee5611f0f565b80610eef81612687565b60c980546001600160a01b0319166001600160a01b0384169081179091556040517fa49730bff544fd0b716395c592e39c6fd2d2481a19b9229b5b240483db95a49590600090a25050565b80610f4481612687565b610f4c611f0f565b60d180546001600160a01b0319166001600160a01b0384169081179091556040519081527f1f0da97238b22add14994904c13e93a9ba4fdb2020955e639c43e03bb262cbce906020016109d4565b610fa2612532565b610faa612017565b600081815260d4602052604090205460ff1615610fec576040516318bb936b60e31b8152600481018290526001600160a01b03841660248201526044016108b7565b6001600160a01b038316600090815260d3602052604081208054849290611014908490613228565b90915550506001600160a01b038316600090815260cf602052604090205460ff161561105457600081815260d460205260409020805460ff191660011790555b80836001600160a01b03167fddf3797a38d53ed43ea0839f8db9db1109d5d86994ebe78cc33a039fa5f8749b84604051610c2c91815260200190565b6001600160a01b038116600081815260d260205260408082205460d75491516370a0823160e01b81523060048201529293909284928492612710926370a0823190602401602060405180830381865afa1580156110f1573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061111591906131be565b61111f9086613228565b6111299190613257565b611133919061326e565b61113d9190613290565b90506000846001600160a01b03166318160ddd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561117f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111a391906131be565b905060008361271060d85486856111ba9190613290565b6111c49190613257565b6111ce919061326e565b6111d89190613290565b90508281116111e757806111e9565b825b9695505050505050565b6111fb612532565b611203612070565b61120b612017565b6000805b8281101561138757600084848381811061122b5761122b613241565b905060200201359050600087878481811061124857611248613241565b600085815260d460209081526040909120549102929092013592505060ff1615611297576040516318bb936b60e31b8152600481018390526001600160a01b038a1660248201526044016108b7565b6001600160a01b038916600090815260d5602090815260408083208584529091529020548114611319576001600160a01b038916600081815260d56020908152604080832086845290915290819020549051631b1d4ef960e21b81526004810191909152602481018390526044810184905260648101919091526084016108b7565b600082815260d4602052604090819020805460ff19166001179055519381019382906001600160a01b038b16907f1b36ea262b458e9b3ff138a58a195232f209ce92ab097f27606a12f7ec0790f2906113759085815260200190565b60405180910390a3505060010161120f565b506001600160a01b038616600090815260d26020526040812080548392906113b0908490613290565b9091555050600160655550610bba565b6113c8612434565b6113d0612070565b84831480156113de57508281145b6114395760405162461bcd60e51b815260206004820152602660248201527f496e70757420617272617973206d7573742068617665207468652073616d65206044820152650d8cadccee8d60d31b60648201526084016108b7565b60005b858110156115a257600087878381811061145857611458613241565b905060200201602081019061146d9190612bde565b9050600086868481811061148357611483613241565b90506020020160208101906114989190612bde565b905060008585858181106114ae576114ae613241565b90506020020135905060cb6000846001600160a01b03166001600160a01b031681526020019081526020016000206000836001600160a01b03166001600160a01b0316815260200190815260200160002054600003611528576000600183604051631940590960e01b81526004016108b7939291906132a3565b6001600160a01b03838116600081815260cb6020908152604080832094871680845294825280832080548701905560cc82529182902080548601905590518481527f3bda13fe73033028c14ba107ef2ddc3a09abeb2ea7cac294113857d856c96b3b910160405180910390a350505080600101905061143c565b50505050505050565b6115b3612434565b6115bb612017565b6115f98383808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152508592506126e8915050565b610c3e6001606555565b61160b612532565b611613612017565b6001600160a01b038416600090815260cf602052604090205460ff1661166957600061163e85611090565b90508381101561166757838186604051630585fbc960e31b81526004016108b7939291906132a3565b505b6040516370a0823160e01b8152306004820152819084906001600160a01b038716906370a0823190602401602060405180830381865afa1580156116b1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116d591906131be565b6116df9190613290565b101561170457828185604051631940590960e01b81526004016108b7939291906132a3565b6001600160a01b038416600090815260d56020908152604080832085845290915290205415611758576040516318bb936b60e31b8152600481018390526001600160a01b03851660248201526044016108b7565b6001600160a01b038416600081815260d560209081526040808320868452825280832087905592825260d290529081208054859290611798908490613228565b909155505060d1546117b7906001600160a01b03868116911685612745565b604080516001600160a01b03861681526020810185905283917fd89781d5625dc08049e795985a82f6f1df8f90f8f8bcb9973736b9c25bc2925e910160405180910390a2610d786001606555565b61180d612434565b8061181781612775565b61181f612017565b609854604051636eab9b3560e11b81523360048201526001600160a01b039091169063dd57366a90602401602060405180830381865afa158015611867573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061188b91906132c2565b8015611899575060335460ff165b156118b9576040516309d228a560e11b81523360048201526024016108b7565b6118cf8285856001600160a01b03821615612361565b836001600160a01b0316826001600160a01b03167fa922bc33914bd31b27595f621e02fefe0cce42e852ef76299a0a618efa9c6e5b8560405161191491815260200190565b60405180910390a3610d786001606555565b61192e611f0f565b8061193881612687565b60d680546001600160a01b0319166001600160a01b0384169081179091556040517f5bbdab227f09862389aad197176a8cc81e4d162e2953ef9293725ca3ed54728a90600090a25050565b61198b612017565b611993612070565b8261199d81612175565b6119a5612434565b6001600160a01b03808616600081815260cd602090815260408083209489168084529482528083205493835260cb8252808320948352939052919091205484916119ee91613290565b1015611a5a576001600160a01b03808616600081815260cd602090815260408083209489168084529482528083205493835260cb825280832094835293905291909120548491611a3d91613290565b85604051631940590960e01b81526004016108b7939291906132a3565b611b3e8585858560c960009054906101000a90046001600160a01b03166001600160a01b0316631edb51ad6040518163ffffffff1660e01b8152600401602060405180830381865afa158015611ab4573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ad891906131be565b604051602001611aec9594939291906131d7565b6040516020818303038152906040528051906020012088888080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061220b92505050565b6001600160a01b03808616600090815260cd6020908152604080832093881683529290529081208054859290611b75908490613228565b90915550506001600160a01b038416600090815260ce602052604081208054859290611ba2908490613228565b90915550611bb590508585856000612361565b836001600160a01b0316856001600160a01b03167fa9a049377ec351e933b3447707a7afd5778f50b3737b539e7e62bd271db2eb5f85604051611bfa91815260200190565b60405180910390a350611c0d6001606555565b505050505050565b600054610100900460ff1615808015611c355750600054600160ff909116105b80611c4f5750303b158015611c4f575060005460ff166001145b611cb25760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016108b7565b6000805460ff191660011790558015611cd5576000805461ff0019166101001790555b84611cdf81612687565b84611ce981612687565b60c980546001600160a01b03808a166001600160a01b03199283161790925560ca805492891692909116919091179055611d238989612841565b611d62858580806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250600192506126e8915050565b505080156115a2576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a150505050505050565b611dba611f0f565b611dc2612017565b6001600160a01b03808416600090815260cb6020908152604080832093851683529290529081205490819003611e125780600083604051631940590960e01b81526004016108b7939291906132a3565b6001600160a01b03808516600090815260cb602081815260408084208786168086529083528185208590559488168452918152818320938352929092529081208054839290611e62908490613228565b92505081905550836001600160a01b0316826001600160a01b03167fe085944a5ddfe0e68127edbf665e03ec5be397243129f6555232ed553e951cb16000604051611eaf91815260200190565b60405180910390a3826001600160a01b0316826001600160a01b03167fe085944a5ddfe0e68127edbf665e03ec5be397243129f6555232ed553e951cb183604051611efc91815260200190565b60405180910390a350610c3e6001606555565b6097546001600160a01b03163314611f4f57609754604051636ccc68c360e11b81523360048201526001600160a01b0390911660248201526044016108b7565b565b6001600160a01b038116611fcd5760408051630961777760e41b81526004810191909152602b60448201527f4d61696e7461696e65727320726567697374727920616464726573732063616e60648201526a6e6f74206265207a65726f60a81b60848201526001600160a01b038216602482015260a4016108b7565b609880546001600160a01b0319166001600160a01b0383169081179091556040517f993a06629d3c3b6a878490571de2b491eb014f2623099576c8e849408342350790600090a250565b6002606554036120695760405162461bcd60e51b815260206004820152601f60248201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c0060448201526064016108b7565b6002606555565b60335460ff1615611f4f5760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b60448201526064016108b7565b6001600160a01b038116600090815260cf602052604090205460ff166108c9576040805163ea51453360e01b81526001600160a01b03831660048201526024810191909152603260448201527f546f6b656e206973206e6f7420636f6e6669677572656420666f72206d61696e6064820152712d746f2d6d61696e207472616e736665727360701b608482015260a4016108b7565b804211156108c95760405163442400cf60e11b8152600481018290524260248201526044016108b7565b60c954604051634448c04560e01b81526001600160a01b03838116600483015290911690634448c04590602401602060405180830381865afa1580156121bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121e391906132c2565b156108c9576040516281783560e51b81526001600160a01b03821660048201526024016108b7565b600082815260d0602052604090205460ff161561223f57818160405163054f717960e21b81526004016108b792919061332f565b60ca54604051631b594def60e31b81526001600160a01b039091169063daca6f7890612271908590859060040161332f565b602060405180830381865afa15801561228e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122b291906132c2565b6122d3578082604051637ab683f760e01b81526004016108b7929190613348565b50600090815260d060205260409020805460ff19166001179055565b6040516001600160a01b0380851660248301528316604482015260648101829052610d789085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152612863565b6001606555565b8015612420576000846001600160a01b03168360405160006040518083038185875af1925050503d80600081146123b4576040519150601f19603f3d011682016040523d82523d6000602084013e6123b9565b606091505b505090508061241a5760405163a906d43160e01b81526001600160a01b03861660048201526024810184905260606044820152601660648201527513985d1a5d99481d1c985b9cd9995c8819985a5b195960521b608482015260a4016108b7565b50610d78565b610d786001600160a01b0384168584612745565b609854604051636eab9b3560e11b81523360048201526001600160a01b039091169063dd57366a90602401602060405180830381865afa15801561247c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906124a091906132c2565b1580156124b857506097546001600160a01b03163314155b15611f4f5760405163537ebb8760e11b81523360048201526024016108b7565b6124e0612070565b6033805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586125153390565b6040516001600160a01b03909116815260200160405180910390a1565b60c9546001600160a01b03163314611f4f5760c95460405163c52de32160e01b81523360048201526001600160a01b0390911660248201526060604482015260136064820152726f6e6c79436861696e706f727442726964676560681b608482015260a4016108b7565b6001600160a01b0381166126045760408051630961777760e41b81526004810191909152601f60448201527f436f6e677265737320616464726573732063616e6e6f74206265207a65726f0060648201526001600160a01b03821660248201526084016108b7565b609780546001600160a01b0319166001600160a01b0383169081179091556040517f92c0335399ecbaa35b0b21fc784a8ce59419e6786caf942b31db51ac8c29258490600090a250565b612656612938565b6033805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa33612515565b6001600160a01b0381166108c95760408051638eb40ca760e01b815260048101919091526016604482015275416464726573732063616e6e6f74206265207a65726f60501b60648201526001600160a01b03821660248201526084016108b7565b60005b8251811015610c3e578160cf600085848151811061270b5761270b613241565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff19169115159190911790556001016126eb565b6040516001600160a01b038316602482015260448101829052610c3e90849063a9059cbb60e01b90606401612323565b60d65460405163e4e3a7a960e01b81526001600160a01b0383811660048301529091169063e4e3a7a990602401602060405180830381865afa1580156127bf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906127e391906132c2565b6108c95760408051633c84244160e21b81526001600160a01b03831660048201526024810191909152601b60448201527f42656e6566696369617279206e6f742077686974656c6973746564000000000060648201526084016108b7565b61284a8261259c565b61285381611f51565b61285b612981565b610d0b6129b0565b60006128b8826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166129df9092919063ffffffff16565b90508051600014806128d95750808060200190518101906128d991906132c2565b610c3e5760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016108b7565b60335460ff16611f4f5760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b60448201526064016108b7565b600054610100900460ff166129a85760405162461bcd60e51b81526004016108b79061336a565b611f4f6129f6565b600054610100900460ff166129d75760405162461bcd60e51b81526004016108b79061336a565b611f4f612a29565b60606129ee8484600085612a50565b949350505050565b600054610100900460ff16612a1d5760405162461bcd60e51b81526004016108b79061336a565b6033805460ff19169055565b600054610100900460ff1661235a5760405162461bcd60e51b81526004016108b79061336a565b606082471015612ab15760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016108b7565b600080866001600160a01b03168587604051612acd91906133b5565b60006040518083038185875af1925050503d8060008114612b0a576040519150601f19603f3d011682016040523d82523d6000602084013e612b0f565b606091505b5091509150612b2087838387612b2b565b979650505050505050565b60608315612b9a578251600003612b93576001600160a01b0385163b612b935760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016108b7565b50816129ee565b6129ee8383815115612baf5781518083602001fd5b8060405162461bcd60e51b81526004016108b791906133d1565b6001600160a01b03811681146108c957600080fd5b600060208284031215612bf057600080fd5b8135612bfb81612bc9565b9392505050565b60008060408385031215612c1557600080fd5b50508035926020909101359150565b60008083601f840112612c3657600080fd5b50813567ffffffffffffffff811115612c4e57600080fd5b602083019150836020828501011115612c6657600080fd5b9250929050565b600080600080600060808688031215612c8557600080fd5b8535612c9081612bc9565b94506020860135935060408601359250606086013567ffffffffffffffff811115612cba57600080fd5b612cc688828901612c24565b969995985093965092949392505050565b600080600060608486031215612cec57600080fd5b8335612cf781612bc9565b9250602084013591506040840135612d0e81612bc9565b809150509250925092565b60008083601f840112612d2b57600080fd5b50813567ffffffffffffffff811115612d4357600080fd5b6020830191508360208260051b8501011115612c6657600080fd5b60008060208385031215612d7157600080fd5b823567ffffffffffffffff811115612d8857600080fd5b612d9485828601612d19565b90969095509350505050565b80151581146108c957600080fd5b60008060008060808587031215612dc457600080fd5b8435612dcf81612bc9565b9350602085013592506040850135612de681612bc9565b91506060850135612df681612da0565b939692955090935050565b600080600060608486031215612e1657600080fd5b8335612e2181612bc9565b92506020840135612e3181612bc9565b929592945050506040919091013590565b600080600060608486031215612e5757600080fd5b8335612e6281612bc9565b95602085013595506040909401359392505050565b60008060408385031215612e8a57600080fd5b8235612e9581612bc9565b91506020830135612ea581612bc9565b809150509250929050565b600080600080600060608688031215612ec857600080fd5b8535612ed381612bc9565b9450602086013567ffffffffffffffff80821115612ef057600080fd5b612efc89838a01612d19565b90965094506040880135915080821115612f1557600080fd5b50612cc688828901612d19565b600060208284031215612f3457600080fd5b5035919050565b60008060008060008060608789031215612f5457600080fd5b863567ffffffffffffffff80821115612f6c57600080fd5b612f788a838b01612d19565b90985096506020890135915080821115612f9157600080fd5b612f9d8a838b01612d19565b90965094506040890135915080821115612fb657600080fd5b50612fc389828a01612d19565b979a9699509497509295939492505050565b600080600060408486031215612fea57600080fd5b833567ffffffffffffffff81111561300157600080fd5b61300d86828701612d19565b9094509250506020840135612d0e81612da0565b6000806000806080858703121561303757600080fd5b843561304281612bc9565b966020860135965060408601359560600135945092505050565b6000806040838503121561306f57600080fd5b823561307a81612bc9565b946020939093013593505050565b60008060008060008060a087890312156130a157600080fd5b863567ffffffffffffffff8111156130b857600080fd5b6130c489828a01612c24565b90975095505060208701356130d881612bc9565b935060408701356130e881612bc9565b959894975092956060810135946080909101359350915050565b60008060008060008060a0878903121561311b57600080fd5b863561312681612bc9565b9550602087013561313681612bc9565b9450604087013561314681612bc9565b9350606087013561315681612bc9565b9250608087013567ffffffffffffffff81111561317257600080fd5b612fc389828a01612d19565b60008060006060848603121561319357600080fd5b833561319e81612bc9565b925060208401356131ae81612bc9565b91506040840135612d0e81612bc9565b6000602082840312156131d057600080fd5b5051919050565b6bffffffffffffffffffffffff19606096871b811682529490951b909316601485015260288401919091526048830152606882015260880190565b634e487b7160e01b600052601160045260246000fd5b8082018082111561323b5761323b613212565b92915050565b634e487b7160e01b600052603260045260246000fd5b808202811582820484141761323b5761323b613212565b60008261328b57634e487b7160e01b600052601260045260246000fd5b500490565b8181038181111561323b5761323b613212565b92835260208301919091526001600160a01b0316604082015260600190565b6000602082840312156132d457600080fd5b8151612bfb81612da0565b60005b838110156132fa5781810151838201526020016132e2565b50506000910152565b6000815180845261331b8160208601602086016132df565b601f01601f19169290920160200192915050565b8281526040602082015260006129ee6040830184613303565b60408152600061335b6040830185613303565b90508260208301529392505050565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b600082516133c78184602087016132df565b9190910192915050565b602081526000612bfb602083018461330356fea264697066735822122011e96c20b65180197b84b48e0f2651c3049f2405c78ae8180e21aa4aa3a5b3c864736f6c63430008160033
[codex:1138744]
[codex:1138744] thinking
[codex:1138744] **Analyzing contract bytecode for vulnerabilities**
[codex:1138744]
[codex:1138744] I’m parsing the large bytecode carefully to identify revert strings, function selectors, and storage patterns tied to roles and access control. I’m focusing on potential unprotected token transfers, initializer exposure, and key modifiers like onlyOwner or onlyChainportBridge to see if any function allows unauthorized token withdrawal. I’m also considering whether the initializer could be exploited if not yet called, although that depends on contract state unknown to me. I plan to run a script to detect dangerous opcodes like selfdestruct or delegatecall to deepen the analysis. This process might confirm whether there is any concrete exploit path or not.
[codex:1138744] exec
[codex:1138744] /bin/bash -lc "python - <<'PY'
[codex:1138744] import re
[codex:1138744] from pathlib import Path
[codex:1138744] text=Path('BYTECODE_BUNDLE.txt').read_text()
[codex:1138744] # extract hex after 0x
[codex:1138744] m=re.search(r'0x[0-9a-fA-F]+', text)
[codex:1138744] if not m:
[codex:1138744] print('no hex')
[codex:1138744] raise SystemExit
[codex:1138744] hexstr=m.group(0)[2:]
[codex:1138744] code=bytes.fromhex(hexstr)
[codex:1138744] # opcode map for immediate lengths
[codex:1138744] op_imms={i: i-0x5f for i in range(0x60,0x80)}
[codex:1138744] op_imms.update({i: i-0x7f for i in range(0x80,0x90)})
[codex:1138744] # iterate
[codex:1138744] ops=[]
[codex:1138744] i=0
[codex:1138744] while i<len(code):
[codex:1138744] op=code[i]
[codex:1138744] ops.append((i,op))
[codex:1138744] i+=1
[codex:1138744] if op in op_imms:
[codex:1138744] i+=op_imms[op]
[codex:1138744] # find interesting opcodes
[codex:1138744] names={
[codex:1138744] 0xf1:'CALL',
[codex:1138744] 0xf2:'CALLCODE',
[codex:1138744] 0xf4:'DELEGATECALL',
[codex:1138744] 0xf5:'CREATE2',
[codex:1138744] 0xf0:'CREATE',
[codex:1138744] 0xff:'SELFDESTRUCT',
[codex:1138744] 0xfa:'STATICCALL'
[codex:1138744] }
[codex:1138744] for op in [0xf1,0xf2,0xf4,0xf5,0xf0,0xff,0xfa]:
[codex:1138744] offsets=[hex(o) for o,opc in ops if opc==op]
[codex:1138744] print(names[op], len(offsets))
[codex:1138744] print(offsets[:20])
[codex:1138744] PY" in /tmp/codex-multi-7wwc7sg5 succeeded in 51ms:
[codex:1138744] CALL 3
[codex:1138744] ['0x1351', '0x2384', '0x2ada']
[codex:1138744] CALLCODE 1
[codex:1138744] ['0x1367']
[codex:1138744] DELEGATECALL 1
[codex:1138744] ['0x4c']
[codex:1138744] CREATE2 1
[codex:1138744] ['0x138']
[codex:1138744] CREATE 0
[codex:1138744] []
[codex:1138744] SELFDESTRUCT 57
[codex:1138744] ['0x17', '0x10d', '0xa3f', '0xa40', '0xa41', '0x1157', '0x1158', '0x1159', '0x1a8c', '0x1a8d', '0x1a8e', '0x2c3b', '0x2c3c', '0x2c3d', '0x2c3e', '0x2c3f', '0x2c40', '0x2c41', '0x2c42', '0x2cab']
[codex:1138744] STATICCALL 11
[codex:1138744] ['0xa56', '0x10e0', '0x116e', '0x16a0', '0x1856', '0x1aa3', '0x21ae', '0x227d', '0x246b', '0x27ae', '0x32e9']
[codex:1138744]
[codex:1138744] thinking
[codex:1138744] **Identifying metadata to improve disassembly**
[codex:1138744]
[codex:1138744] I'm digging into why selfdestruct opcode counts are inflated, realizing the disassembler is parsing metadata bytes (like IPFS hashes) as code since it disassembles linearly without stopping at the runtime code end. The plan is to detect the metadata prefix `a264697066` following an `0xfe` invalid opcode and cut off disassembly there to avoid miscounting opcodes embedded in metadata. This should give more accurate opcode counts by ignoring appended metadata.
[codex:1138744] exec
[codex:1138744] /bin/bash -lc "python - <<'PY'
[codex:1138744] import re
[codex:1138744] from pathlib import Path
[codex:1138744] text=Path('BYTECODE_BUNDLE.txt').read_text()
[codex:1138744] hexstr=re.search(r'0x[0-9a-fA-F]+', text).group(0)[2:]
[codex:1138744] # find metadata start
[codex:1138744] meta_idx=hexstr.find('a264697066735822')
[codex:1138744] if meta_idx"'!=-1:
[codex:1138744] hexstr_code=hexstr[:meta_idx-2] # remove preceding '"'fe' maybe
[codex:1138744] else:
[codex:1138744] hexstr_code=hexstr
[codex:1138744] code=bytes.fromhex(hexstr_code)
[codex:1138744] op_imms={i: i-0x5f for i in range(0x60,0x80)}
[codex:1138744] op_imms.update({i: i-0x7f for i in range(0x80,0x90)})
[codex:1138744] ops=[]
[codex:1138744] i=0
[codex:1138744] while i<len(code):
[codex:1138744] op=code[i]
[codex:1138744] ops.append((i,op))
[codex:1138744] i+=1
[codex:1138744] if op in op_imms:
[codex:1138744] i+=op_imms[op]
[codex:1138744] # count interesting
[codex:1138744] names={0xf1:'CALL',0xf2:'CALLCODE',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xf0:'CREATE',0xff:'SELFDESTRUCT',0xfa:'STATICCALL'}
[codex:1138744] for op in [0xf1,0xf2,0xf4,0xf5,0xf0,0xff,0xfa]:
[codex:1138744] offsets=[o for o,opc in ops if opc==op]
[codex:1138744] print(names[op], len(offsets), [hex(o) for o in offsets[:10]])
[codex:1138744] PY" in /tmp/codex-multi-7wwc7sg5 succeeded in 33ms:
[codex:1138744] CALL 3 ['0x1351', '0x2384', '0x2ada']
[codex:1138744] CALLCODE 1 ['0x1367']
[codex:1138744] DELEGATECALL 1 ['0x4c']
[codex:1138744] CREATE2 1 ['0x138']
[codex:1138744] CREATE 0 []
[codex:1138744] SELFDESTRUCT 57 ['0x17', '0x10d', '0xa3f', '0xa40', '0xa41', '0x1157', '0x1158', '0x1159', '0x1a8c', '0x1a8d']
[codex:1138744] STATICCALL 11 ['0xa56', '0x10e0', '0x116e', '0x16a0', '0x1856', '0x1aa3', '0x21ae', '0x227d', '0x246b', '0x27ae']
[codex:1138744]
[codex:1138744] thinking
[codex:1138744] **Correcting opcode classification**
[codex:1138744] exec
[codex:1138744] /bin/bash -lc "python - <<'PY'
[codex:1138744] import re
[codex:1138744] from pathlib import Path
[codex:1138744] text=Path('BYTECODE_BUNDLE.txt').read_text()
[codex:1138744] hexstr=re.search(r'0x[0-9a-fA-F]+', text).group(0)[2:]
[codex:1138744] meta_idx=hexstr.find('a264697066735822')
[codex:1138744] if meta_idx"'!=-1:
[codex:1138744] # cut at metadata start; remove potential preceding '"'fe'
[codex:1138744] hexstr_code=hexstr[:meta_idx-2]
[codex:1138744] else:
[codex:1138744] hexstr_code=hexstr
[codex:1138744] code=bytes.fromhex(hexstr_code)
[codex:1138744] # immediate lengths for PUSH1..PUSH32
[codex:1138744] op_imms={i: i-0x5f for i in range(0x60,0x80)}
[codex:1138744] ops=[]
[codex:1138744] i=0
[codex:1138744] while i<len(code):
[codex:1138744] op=code[i]
[codex:1138744] ops.append((i,op))
[codex:1138744] i+=1
[codex:1138744] if op in op_imms:
[codex:1138744] i+=op_imms[op]
[codex:1138744] # count interesting
[codex:1138744] names={0xf1:'CALL',0xf2:'CALLCODE',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xf0:'CREATE',0xff:'SELFDESTRUCT',0xfa:'STATICCALL'}
[codex:1138744] for op in [0xf1,0xf2,0xf4,0xf5,0xf0,0xff,0xfa]:
[codex:1138744] offsets=[o for o,opc in ops if opc==op]
[codex:1138744] print(names[op], len(offsets), [hex(o) for o in offsets[:10]])
[codex:1138744] PY" in /tmp/codex-multi-7wwc7sg5 succeeded in 32ms:
[codex:1138744] CALL 2 ['0x2384', '0x2ada']
[codex:1138744] CALLCODE 0 []
[codex:1138744] DELEGATECALL 0 []
[codex:1138744] CREATE2 0 []
[codex:1138744] CREATE 0 []
[codex:1138744] SELFDESTRUCT 0 []
[codex:1138744] STATICCALL 10 ['0xa56', '0x10e0', '0x116e', '0x16a0', '0x1856', '0x1aa3', '0x21ae', '0x227d', '0x246b', '0x27ae']
[codex:1138744]
[codex:1138744] thinking
[codex:1138744] **Analyzing CALL opcodes and surrounding bytes**
[codex:1138744] exec
[codex:1138744] /bin/bash -lc "python - <<'PY'
[codex:1138744] import re
[codex:1138744] from pathlib import Path
[codex:1138744] text=Path('BYTECODE_BUNDLE.txt').read_text()
[codex:1138744] hexstr=re.search(r'0x[0-9a-fA-F]+', text).group(0)[2:]
[codex:1138744] meta_idx=hexstr.find('a264697066735822')
[codex:1138744] if meta_idx"'!=-1:
[codex:1138744] hexstr_code=hexstr[:meta_idx-2]
[codex:1138744] else:
[codex:1138744] hexstr_code=hexstr
[codex:1138744] code=bytes.fromhex(hexstr_code)
[codex:1138744] # simple disassembler
[codex:1138744] op_imms={i: i-0x5f for i in range(0x60,0x80)}
[codex:1138744] opnames={
[codex:1138744] 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:1138744] 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:1138744] 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',
[codex:1138744] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:1138744] 0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',0x5f:'PUSH0',
[codex:1138744] 0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT',
[codex:1138744] }
[codex:1138744] # add DUP/SWAP/LOG
[codex:1138744] for i in range(0x80,0x90): opnames[i]=f'DUP{i-0x7f}'
[codex:1138744] for i in range(0x90,0xa0): opnames[i]=f'SWAP{i-0x8f}'
[codex:1138744] for i in range(0xa0,0xa5): opnames[i]=f'LOG{i-0x9f}'
[codex:1138744]
[codex:1138744] # build list of opcodes with offsets
[codex:1138744] ops=[]
[codex:1138744] i=0
[codex:1138744] while i<len(code):
[codex:1138744] op=code[i]
[codex:1138744] name=opnames.get(op, f'OP{op:02x}')
[codex:1138744] imm=None
[codex:1138744] i0=i
[codex:1138744] i+=1
[codex:1138744] if op in op_imms:
[codex:1138744] n=op_imms[op]
[codex:1138744] imm=code[i:i+n]
[codex:1138744] i+=n
[codex:1138744] ops.append((i0,op,name,imm))
[codex:1138744]
[codex:1138744] # function to print around offset
[codex:1138744]
[codex:1138744] def dump_around(target, radius=20):
[codex:1138744] # find index
[codex:1138744] idx=next((j for j,(o,_,_,_) in enumerate(ops) if o==target), None)
[codex:1138744] if idx is None:
[codex:1138744] # maybe target within immediate, find nearest previous
[codex:1138744] idx=next((j for j,(o,_,_,_) in enumerate(ops) if o>target), None)
[codex:1138744] if idx is None:
[codex:1138744] idx=len(ops)-1
[codex:1138744] start=max(0, idx-radius)
[codex:1138744] end=min(len(ops), idx+radius+1)
[codex:1138744] for o,op,name,imm in ops[start:end]:
[codex:1138744] if imm is not None:
[codex:1138744] imm_hex=imm.hex()
[codex:1138744] print(f'{o:06x}: {name} 0x{imm_hex}')
[codex:1138744] else:
[codex:1138744] print(f'{o:06x}: {name}')
[codex:1138744] print('---')
[codex:1138744]
[codex:1138744] for t in [0x2384, 0x2ada]:
[codex:1138744] print('Around', hex(t))
[codex:1138744] dump_around(t, radius=25)
[codex:1138744] PY" in /tmp/codex-multi-7wwc7sg5 succeeded in 42ms:
[codex:1138744] Around 0x2384
[codex:1138744] 002362: DUP1
[codex:1138744] 002363: ISZERO
[codex:1138744] 002364: OP61 0x2420
[codex:1138744] 002367: JUMPI
[codex:1138744] 002368: OP60 0x00
[codex:1138744] 00236a: DUP5
[codex:1138744] 00236b: OP60 0x01
[codex:1138744] 00236d: OP60 0x01
[codex:1138744] 00236f: OP60 0xa0
[codex:1138744] 002371: SHL
[codex:1138744] 002372: SUB
[codex:1138744] 002373: AND
[codex:1138744] 002374: DUP4
[codex:1138744] 002375: OP60 0x40
[codex:1138744] 002377: MLOAD
[codex:1138744] 002378: OP60 0x00
[codex:1138744] 00237a: OP60 0x40
[codex:1138744] 00237c: MLOAD
[codex:1138744] 00237d: DUP1
[codex:1138744]
[codex:1138744] thinking
[codex:1138744] **Analyzing low-level call patterns and call value detection**
[codex:1138744]
[codex:1138744] I'm focusing on how to decode call arguments before the low-level call to identify the value and target. The goal is to reconstruct stack state around the call using a simple stack simulation or symbolic execution. I'm interpreting patterns from `Address.functionCall` and `functionCallWithValue` and examining the flow around success checks and revert jumps, trying to find if any ETH value greater than zero is sent or if calls are user-supplied. I'll dig into instructions near offsets 0x2320–0x2390 to clarify the exact stack state at the call site.
[codex:1138744] exec
[codex:1138744] /bin/bash -lc "python - <<'PY'
[codex:1138744] import re
[codex:1138744] from pathlib import Path
[codex:1138744] text=Path('BYTECODE_BUNDLE.txt').read_text()
[codex:1138744] hexstr=re.search(r'0x[0-9a-fA-F]+', text).group(0)[2:]
[codex:1138744] meta_idx=hexstr.find('a264697066735822')
[codex:1138744] if meta_idx"'!=-1:
[codex:1138744] hexstr_code=hexstr[:meta_idx-2]
[codex:1138744] else:
[codex:1138744] hexstr_code=hexstr
[codex:1138744] code=bytes.fromhex(hexstr_code)
[codex:1138744] # disassemble with offsets
[codex:1138744] op_imms={i: i-0x5f for i in range(0x60,0x80)}
[codex:1138744] opnames={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',0x5f:'PUSH0',0xf0:'CREATE',0xf1:'CALL',0xf2:'CALLCODE',0xf3:'RETURN',0xf4:'DELEGATECALL',0xf5:'CREATE2',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID',0xff:'SELFDESTRUCT'}
[codex:1138744] for i in range(0x80,0x90): opnames[i]=f'DUP{i-0x7f}'
[codex:1138744] for i in range(0x90,0xa0): opnames[i]=f'SWAP{i-0x8f}'
[codex:1138744] for i in range(0xa0,0xa5): opnames[i]=f'LOG{i-0x9f}'
[codex:1138744]
[codex:1138744] ops=[]
[codex:1138744] i=0
[codex:1138744] while i<len(code):
[codex:1138744] op=code[i]
[codex:1138744] name=opnames.get(op,f'OP{op:02x}')
[codex:1138744] imm=None
[codex:1138744] i0=i
[codex:1138744] i+=1
[codex:1138744] if op in op_imms:
[codex:1138744] n=op_imms[op]
[codex:1138744] imm=code[i:i+n]
[codex:1138744] i+=n
[codex:1138744] ops.append((i0,op,name,imm))
[codex:1138744]
[codex:1138744] # print a window
[codex:1138744] start=0x2320
[codex:1138744] end=0x23c0
[codex:1138744] for o,op,name,imm in ops:
[codex:1138744] if o<start: continue
[codex:1138744] if o>=end: break
[codex:1138744] if imm is not None:
[codex:1138744] print(f'{o:06x}: {name} 0x{imm.hex()}')
[codex:1138744] else:
[codex:1138744] print(f'{o:06x}: {name}')
[codex:1138744] PY" in /tmp/codex-multi-7wwc7sg5 succeeded in 36ms:
[codex:1138744] 002320: OP60 0x84
[codex:1138744] 002322: ADD
[codex:1138744] 002323: JUMPDEST
[codex:1138744] 002324: OP60 0x40
[codex:1138744] 002326: DUP1
[codex:1138744] 002327: MLOAD
[codex:1138744] 002328: OP60 0x1f
[codex:1138744] 00232a: NOT
[codex:1138744] 00232b: DUP2
[codex:1138744] 00232c: DUP5
[codex:1138744] 00232d: SUB
[codex:1138744] 00232e: ADD
[codex:1138744] 00232f: DUP2
[codex:1138744] 002330: MSTORE
[codex:1138744] 002331: SWAP2
[codex:1138744] 002332: SWAP1
[codex:1138744] 002333: MSTORE
[codex:1138744] 002334: OP60 0x20
[codex:1138744] 002336: DUP2
[codex:1138744] 002337: ADD
[codex:1138744]
[codex:1138744] thinking
[codex:1138744] **Analyzing CALL stack arguments symbolically**
[codex:1138744]
[codex:1138744] I'm examining the EVM instructions around a CALL to understand how the value argument is passed, especially whether it's zero or symbolic. To get clarity, I'm planning to simulate the stack symbolically from a nearby JUMPDEST, assigning placeholders to unknown stack values and tracking their flow until the CALL instruction, hoping this helps confirm if the value sent is zero or variable.
[codex:1138744] exec
[codex:1138744] /bin/bash -lc "python - <<'PY'
[codex:1138744] import re
[codex:1138744] from pathlib import Path
[codex:1138744] text=Path('BYTECODE_BUNDLE.txt').read_text()
[codex:1138744] hexstr=re.search(r'0x[0-9a-fA-F]+', text).group(0)[2:]
[codex:1138744] meta_idx=hexstr.find('a264697066735822')
[codex:1138744] if meta_idx"'!=-1:
[codex:1138744] hexstr_code=hexstr[:meta_idx-2]
[codex:1138744] else:
[codex:1138744] hexstr_code=hexstr
[codex:1138744] code=bytes.fromhex(hexstr_code)
[codex:1138744]
[codex:1138744] # disassemble with offsets
[codex:1138744] op_imms={i: i-0x5f for i in range(0x60,0x80)}
[codex:1138744]
[codex:1138744] ops=[]
[codex:1138744] i=0
[codex:1138744] while i<len(code):
[codex:1138744] op=code[i]
[codex:1138744] imm=None
[codex:1138744] i0=i
[codex:1138744] i+=1
[codex:1138744] if op in op_imms:
[codex:1138744] n=op_imms[op]
[codex:1138744] imm=code[i:i+n]
[codex:1138744] i+=n
[codex:1138744] ops.append((i0,op,imm))
[codex:1138744]
[codex:1138744] # map opcodes to names for relevant ones
[codex:1138744] names={
[codex:1138744] 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:1138744] 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:1138744] 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',
[codex:1138744] 0x40:'BLOCKHASH',0x41:'COINBASE',0x42:'TIMESTAMP',0x43:'NUMBER',0x44:'DIFFICULTY',0x45:'GASLIMIT',0x46:'CHAINID',0x47:'SELFBALANCE',0x48:'BASEFEE',
[codex:1138744] 0x50:'POP',0x51:'MLOAD',0x52:'MSTORE',0x53:'MSTORE8',0x54:'SLOAD',0x55:'SSTORE',0x56:'JUMP',0x57:'JUMPI',0x58:'PC',0x59:'MSIZE',0x5a:'GAS',0x5b:'JUMPDEST',0x5f:'PUSH0',
[codex:1138744] 0xf1:'CALL',0xfd:'REVERT',0xfa:'STATICCALL',0xf3:'RETURN',0xfe:'INVALID',
[codex:1138744] }
[codex:1138744] for i in range(0x80,0x90): names[i]=f'DUP{i-0x7f}'
[codex:1138744] for i in range(0x90,0xa0): names[i]=f'SWAP{i-0x8f}'
[codex:1138744]
[codex:1138744] # get ops between start and end offsets
[codex:1138744] start=0x2361
[codex:1138744] end=0x2385
[codex:1138744] # find index range
[codex:1138744] ops_range=[(o,op,imm) for (o,op,imm) in ops if start<=o<end]
[codex:1138744]
[codex:1138744] # simple symbolic stack
[codex:1138744] class Sym:
[codex:1138744] def __init__(self,name): self.name=name
[codex:1138744] def __repr__(self): return self.name
[codex:1138744]
[codex:1138744] stack=[Sym(f's{i}') for i in range(8)] # initial unknowns (top at end?)
[codex:1138744] # We'll treat end of list as top of stack.
[codex:1138744]
[codex:1138744] # helper for stack operations
[codex:1138744]
[codex:1138744] def push(val):
[codex:1138744] stack.append(val)
[codex:1138744]
[codex:1138744] def pop():
[codex:1138744] return stack.pop() if stack else Sym('underflow')
[codex:1138744]
[codex:1138744] def dup(n):
[codex:1138744] # dup1 duplicates top
[codex:1138744] idx=-n
[codex:1138744] stack.append(stack[idx] if len(stack)>=n else Sym('underflow'))
[codex:1138744]
[codex:1138744] def swap(n):
[codex:1138744] idx=-1-n
[codex:1138744] if len(stack)>=n+1:
[codex:1138744] stack[-1], stack[idx] = stack[idx], stack[-1]
[codex:1138744] else:
[codex:1138744] # pad with unknowns
[codex:1138744] while len(stack)<n+1:
[codex:1138744] stack.insert(0, Sym('pad'))
[codex:1138744] stack[-1], stack[idx] = stack[idx], stack[-1]
[codex:1138744]
[codex:1138744] # For binary ops, just pop 2 and push new symbol
[codex:1138744]
[codex:1138744] def binop(opname):
[codex:1138744] b=pop(); a=pop();
[codex:1138744] push(Sym(f'({a}{opname}{b})'))
[codex:1138744]
[codex:1138744] # Run
[codex:1138744] for o,op,imm in ops_range:
[codex:1138744] name=names.get(op,f'OP{op:02x}')
[codex:1138744] if name.startswith('PUSH'):
[codex:1138744] if op==0x5f:
[codex:1138744] push(Sym('0'))
[codex:1138744] else:
[codex:1138744] push(Sym('0x'+imm.hex()))
[codex:1138744] elif name.startswith('DUP'):
[codex:1138744] n=int(name[3:])
[codex:1138744] dup(n)
[codex:1138744] elif name.startswith('SWAP'):
[codex:1138744] n=int(name[4:])
[codex:1138744] swap(n)
[codex:1138744] elif name in ('ADD','SUB','MUL','DIV','SHL','SHR','AND','OR','XOR','EQ'):
[codex:1138744] binop(name)
[codex:1138744] elif name in ('ISZERO','NOT'):
[codex:1138744] a=pop(); push(Sym(f'{name}({a})'))
[codex:1138744] elif name in ('POP','MLOAD','SLOAD','CALLDATALOAD','MSIZE','GAS','RETURNDATASIZE','CALLER','CALLVALUE','ADDRESS','BALANCE','EXTCODESIZE'):
[codex:1138744] # treat as consuming? POP consumes 1, others push unknown
[codex:1138744] if name=='POP':
[codex:1138744] pop()
[codex:1138744] else:
[codex:1138744] push(Sym(name.lower()))
[codex:1138744] elif name in ('MSTORE','MSTORE8','SSTORE','JUMP','JUMPI','RETURN','REVERT','CALL'): # handle call specially later
[codex:1138744] if name=='MSTORE':
[codex:1138744] pop(); pop()
[codex:1138744] elif name=='MSTORE8':
[codex:1138744] pop(); pop()
[codex:1138744] elif name=='SSTORE':
[codex:1138744] pop(); pop()
[codex:1138744] elif name=='JUMPI':
[codex:1138744] pop(); pop()
[codex:1138744] elif name=='JUMP':
[codex:1138744] pop()
[codex:1138744] elif name=='CALL':
[codex:1138744] # pop 7 args and push success
[codex:1138744] args=[pop() for _ in range(7)]
[codex:1138744] # order: out_size, out_offset, in_size, in_offset, value, to, gas (top first)
[codex:1138744] out_size,out_offset,in_size,in_offset,value,to,gas=args
[codex:1138744] print('CALL args at',hex(o))
[codex:1138744] print(' gas',gas)
[codex:1138744] print(' to',to)
[codex:1138744] print(' value',value)
[codex:1138744] print(' in_offset',in_offset)
[codex:1138744] print(' in_size',in_size)
[codex:1138744] print(' out_offset',out_offset)
[codex:1138744] print(' out_size',out_size)
[codex:1138744] push(Sym('call_success'))
[codex:1138744] else:
[codex:1138744] pass
[codex:1138744] else:
[codex:1138744] # unknown op, ignore
[codex:1138744] pass
[codex:1138744] # print stack debug
[codex:1138744] #print(hex(o), name, 'stack', stack)
[codex:1138744]
[codex:1138744] PY" in /tmp/codex-multi-7wwc7sg5 succeeded in 46ms:
[codex:1138744] CALL args at 0x2384
[codex:1138744] gas mload
[codex:1138744] to mload
[codex:1138744] value (mloadSUBs1)
[codex:1138744] in_offset mload
[codex:1138744] in_size (s4AND(s5SUB(s6SHLs2)))
[codex:1138744] out_offset s3
[codex:1138744] out_size gas
[codex:1138744]
[codex:1138744] thinking
[codex:1138744] **Analyzing Address library call patterns**
[codex:1138744]
[codex:1138744] I'm figuring out that the stack simulation is off because the initial conditions and some instruction models are wrong. Instead, I'm pivoting to identify calls from the Address library by disassembling code near certain addresses, looking for hints like `SELFBALANCE` checks that match the `sendValue` function. This way I can better understand how ETH transfers and function calls are handled in the bytecode.
[codex:1138744] exec
[codex:1138744] /bin/bash -lc "python - <<'PY'
[codex:1138744] import re
[codex:1138744] from pathlib import Path
[codex:1138744] text=Path('BYTECODE_BUNDLE.txt').read_text()
[codex:1138744] hexstr=re.search(r'0x[0-9a-fA-F]+', text).group(0)[2:]
[codex:1138744] meta_idx=hexstr.find('a264697066735822')
[codex:1138744] if meta_idx"'!=-1:
[codex:1138744] hexstr_code=hexstr[:meta_idx-2]
[codex:1138744] else:
[codex:1138744] hexstr_code=hexstr
[codex:1138744] code=bytes.fromhex(hexstr_code)
[codex:1138744]
[codex:1138744] # disassemble
[codex:1138744] op_imms={i: i-0x5f for i in range(0x60,0x80)}
[codex:1138744]
[codex:1138744] names={
[codex:1138744] 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',0x5f:'PUSH0',0xf1:'CALL',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID'
[codex:1138744] }
[codex:1138744] for i in range(0x80,0x90): names[i]=f'DUP{i-0x7f}'
[codex:1138744] for i in range(0x90,0xa0): names[i]=f'SWAP{i-0x8f}'
[codex:1138744]
[codex:1138744] ops=[]
[codex:1138744] i=0
[codex:1138744] while i<len(code):
[codex:1138744] op=code[i]
[codex:1138744] imm=None
[codex:1138744] i0=i
[codex:1138744] i+=1
[codex:1138744] if op in op_imms:
[codex:1138744] n=op_imms[op]
[codex:1138744] imm=code[i:i+n]
[codex:1138744] i+=n
[codex:1138744] ops.append((i0,op,imm))
[codex:1138744]
[codex:1138744] start=0x2a40
[codex:1138744] end=0x2b30
[codex:1138744] for o,op,imm in ops:
[codex:1138744] if o<start: continue
[codex:1138744] if o>=end: break
[codex:1138744] name=names.get(op,f'OP{op:02x}')
[codex:1138744] if imm is not None:
[codex:1138744] print(f'{o:06x}: {name} 0x{imm.hex()}')
[codex:1138744] else:
[codex:1138744] print(f'{o:06x}: {name}')
[codex:1138744] PY" in /tmp/codex-multi-7wwc7sg5 succeeded in 33ms:
[codex:1138744] 002a40: OP60 0xe5
[codex:1138744] 002a42: SHL
[codex:1138744] 002a43: DUP2
[codex:1138744] 002a44: MSTORE
[codex:1138744] 002a45: OP60 0x04
[codex:1138744] 002a47: ADD
[codex:1138744] 002a48: OP61 0x08b7
[codex:1138744] 002a4b: SWAP1
[codex:1138744] 002a4c: OP61 0x336a
[codex:1138744] 002a4f: JUMP
[codex:1138744] 002a50: JUMPDEST
[codex:1138744] 002a51: OP60 0x60
[codex:1138744] 002a53: DUP3
[codex:1138744] 002a54: SELFBALANCE
[codex:1138744] 002a55: LT
[codex:1138744] 002a56: ISZERO
[codex:1138744] 002a57: OP61 0x2ab1
[codex:1138744] 002a5a: JUMPI
[codex:1138744] 002a5b: OP60 0x40
[codex:1138744] 002a5d: MLOAD
[codex:1138744]
[codex:1138744] thinking
[codex:1138744] **Analyzing sendValue usage for ETH transfers**
[codex:1138744] exec
[codex:1138744] /bin/bash -lc "python - <<'PY'
[codex:1138744] import re
[codex:1138744] from pathlib import Path
[codex:1138744] text=Path('BYTECODE_BUNDLE.txt').read_text()
[codex:1138744] hexstr=re.search(r'0x[0-9a-fA-F]+', text).group(0)[2:]
[codex:1138744] meta_idx=hexstr.find('a264697066735822')
[codex:1138744] if meta_idx"'!=-1:
[codex:1138744] hexstr_code=hexstr[:meta_idx-2]
[codex:1138744] else:
[codex:1138744] hexstr_code=hexstr
[codex:1138744] code=bytes.fromhex(hexstr_code)
[codex:1138744]
[codex:1138744] # find PUSH2 0x2a50 occurrences
[codex:1138744] occ=[]
[codex:1138744] i=0
[codex:1138744] while i<len(code):
[codex:1138744] op=code[i]
[codex:1138744] if 0x60<=op<=0x7f:
[codex:1138744] n=op-0x5f
[codex:1138744] imm=code[i+1:i+1+n]
[codex:1138744] if n==2 and imm==bytes.fromhex('"'2a50'):
[codex:1138744] occ.append(i)
[codex:1138744] i+=1+n
[codex:1138744] else:
[codex:1138744] i+=1
[codex:1138744] print('PUSH2 0x2a50 occurrences',len(occ), [hex(o) for o in occ[:10]])
[codex:1138744]
[codex:1138744] # show context around each
[codex:1138744] for o in occ[:5]:
[codex:1138744] start=max(0,o-10)
[codex:1138744] end=min(len(code),o+10)
[codex:1138744] print('context at',hex(o), code[start:end].hex())
[codex:1138744] PY" in /tmp/codex-multi-7wwc7sg5 succeeded in 30ms:
[codex:1138744] PUSH2 0x2a50 occurrences 1 ['0x29ea']
[codex:1138744] context at 0x29ea 60606129ee8484600085612a50565b9493505050
[codex:1138744]
[codex:1138744] thinking
[codex:1138744] **Analyzing sendValue usage in bytecode**
[codex:1138744] exec
[codex:1138744] /bin/bash -lc "python - <<'PY'
[codex:1138744] import re
[codex:1138744] from pathlib import Path
[codex:1138744] text=Path('BYTECODE_BUNDLE.txt').read_text()
[codex:1138744] hexstr=re.search(r'0x[0-9a-fA-F]+', text).group(0)[2:]
[codex:1138744] meta_idx=hexstr.find('a264697066735822')
[codex:1138744] if meta_idx"'!=-1:
[codex:1138744] hexstr_code=hexstr[:meta_idx-2]
[codex:1138744] else:
[codex:1138744] hexstr_code=hexstr
[codex:1138744] code=bytes.fromhex(hexstr_code)
[codex:1138744]
[codex:1138744] # disassemble helper
[codex:1138744] op_imms={i: i-0x5f for i in range(0x60,0x80)}
[codex:1138744]
[codex:1138744] names={
[codex:1138744] 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',0x5f:'PUSH0',0xf1:'CALL',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID'
[codex:1138744] }
[codex:1138744] for i in range(0x80,0x90): names[i]=f'DUP{i-0x7f}'
[codex:1138744] for i in range(0x90,0xa0): names[i]=f'SWAP{i-0x8f}'
[codex:1138744]
[codex:1138744] ops=[]
[codex:1138744] i=0
[codex:1138744] while i<len(code):
[codex:1138744] op=code[i]
[codex:1138744] imm=None
[codex:1138744] i0=i
[codex:1138744] i+=1
[codex:1138744] if op in op_imms:
[codex:1138744] n=op_imms[op]
[codex:1138744] imm=code[i:i+n]
[codex:1138744] i+=n
[codex:1138744] ops.append((i0,op,imm))
[codex:1138744]
[codex:1138744] start=0x2990
[codex:1138744] end=0x2a20
[codex:1138744] for o,op,imm in ops:
[codex:1138744] if o<start: continue
[codex:1138744] if o>=end: break
[codex:1138744] name=names.get(op,f'OP{op:02x}')
[codex:1138744] if imm is not None:
[codex:1138744] print(f'{o:06x}: {name} 0x{imm.hex()}')
[codex:1138744] else:
[codex:1138744] print(f'{o:06x}: {name}')
[codex:1138744] PY" in /tmp/codex-multi-7wwc7sg5 succeeded in 34ms:
[codex:1138744] 002990: JUMPI
[codex:1138744] 002991: OP60 0x40
[codex:1138744] 002993: MLOAD
[codex:1138744] 002994: OP62 0x461bcd
[codex:1138744] 002998: OP60 0xe5
[codex:1138744] 00299a: SHL
[codex:1138744] 00299b: DUP2
[codex:1138744] 00299c: MSTORE
[codex:1138744] 00299d: OP60 0x04
[codex:1138744] 00299f: ADD
[codex:1138744] 0029a0: OP61 0x08b7
[codex:1138744] 0029a3: SWAP1
[codex:1138744] 0029a4: OP61 0x336a
[codex:1138744] 0029a7: JUMP
[codex:1138744] 0029a8: JUMPDEST
[codex:1138744] 0029a9: OP61 0x1f4f
[codex:1138744] 0029ac: OP61 0x29f6
[codex:1138744] 0029af: JUMP
[codex:1138744] 0029b0: JUMPDEST
[codex:1138744] 0029b1: OP60 0x00
[codex:1138744]
[codex:1138744] thinking
[codex:1138744] **Analyzing sendValue usage and access controls**
[codex:1138744] exec
[codex:1138744] /bin/bash -lc "python - <<'PY'
[codex:1138744] import re
[codex:1138744] from pathlib import Path
[codex:1138744] text=Path('BYTECODE_BUNDLE.txt').read_text()
[codex:1138744] hexstr=re.search(r'0x[0-9a-fA-F]+', text).group(0)[2:]
[codex:1138744] meta_idx=hexstr.find('a264697066735822')
[codex:1138744] if meta_idx"'!=-1:
[codex:1138744] hexstr_code=hexstr[:meta_idx-2]
[codex:1138744] else:
[codex:1138744] hexstr_code=hexstr
[codex:1138744] code=bytes.fromhex(hexstr_code)
[codex:1138744]
[codex:1138744] # search for PUSH2 0x29df
[codex:1138744] occ=[]
[codex:1138744] i=0
[codex:1138744] while i<len(code):
[codex:1138744] op=code[i]
[codex:1138744] if 0x60<=op<=0x7f:
[codex:1138744] n=op-0x5f
[codex:1138744] imm=code[i+1:i+1+n]
[codex:1138744] if n==2 and imm==bytes.fromhex('"'29df'):
[codex:1138744] occ.append(i)
[codex:1138744] i+=1+n
[codex:1138744] else:
[codex:1138744] i+=1
[codex:1138744] print('PUSH2 0x29df occurrences',len(occ), [hex(o) for o in occ])
[codex:1138744] PY" in /tmp/codex-multi-7wwc7sg5 succeeded in 30ms:
[codex:1138744] PUSH2 0x29df occurrences 1 ['0x28aa']
[codex:1138744]
[codex:1138744] thinking
[codex:1138744] **Disassembling function using sendValue**
[codex:1138744] exec
[codex:1138744] /bin/bash -lc "python - <<'PY'
[codex:1138744] import re
[codex:1138744] from pathlib import Path
[codex:1138744] text=Path('BYTECODE_BUNDLE.txt').read_text()
[codex:1138744] hexstr=re.search(r'0x[0-9a-fA-F]+', text).group(0)[2:]
[codex:1138744] meta_idx=hexstr.find('a264697066735822')
[codex:1138744] if meta_idx"'!=-1:
[codex:1138744] hexstr_code=hexstr[:meta_idx-2]
[codex:1138744] else:
[codex:1138744] hexstr_code=hexstr
[codex:1138744] code=bytes.fromhex(hexstr_code)
[codex:1138744]
[codex:1138744] op_imms={i: i-0x5f for i in range(0x60,0x80)}
[codex:1138744]
[codex:1138744] names={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',0x5f:'PUSH0',0xf1:'CALL',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID'}
[codex:1138744] for i in range(0x80,0x90): names[i]=f'DUP{i-0x7f}'
[codex:1138744] for i in range(0x90,0xa0): names[i]=f'SWAP{i-0x8f}'
[codex:1138744]
[codex:1138744] ops=[]
[codex:1138744] i=0
[codex:1138744] while i<len(code):
[codex:1138744] op=code[i]
[codex:1138744] imm=None
[codex:1138744] i0=i
[codex:1138744] i+=1
[codex:1138744] if op in op_imms:
[codex:1138744] n=op_imms[op]
[codex:1138744] imm=code[i:i+n]
[codex:1138744] i+=n
[codex:1138744] ops.append((i0,op,imm))
[codex:1138744]
[codex:1138744] start=0x2870
[codex:1138744] end=0x28c0
[codex:1138744] for o,op,imm in ops:
[codex:1138744] if o<start: continue
[codex:1138744] if o>=end: break
[codex:1138744] name=names.get(op,f'OP{op:02x}')
[codex:1138744] if imm is not None:
[codex:1138744] print(f'{o:06x}: {name} 0x{imm.hex()}')
[codex:1138744] else:
[codex:1138744] print(f'{o:06x}: {name}')
[codex:1138744] PY" in /tmp/codex-multi-7wwc7sg5 succeeded in 32ms:
[codex:1138744] 002870: ADD
[codex:1138744] 002871: OP60 0x40
[codex:1138744] 002873: MSTORE
[codex:1138744] 002874: DUP1
[codex:1138744] 002875: OP60 0x20
[codex:1138744] 002877: DUP2
[codex:1138744] 002878: MSTORE
[codex:1138744] 002879: OP60 0x20
[codex:1138744] 00287b: ADD
[codex:1138744] 00287c: OP7f 0x5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564
[codex:1138744] 00289d: DUP2
[codex:1138744] 00289e: MSTORE
[codex:1138744] 00289f: POP
[codex:1138744] 0028a0: DUP6
[codex:1138744] 0028a1: OP60 0x01
[codex:1138744] 0028a3: OP60 0x01
[codex:1138744] 0028a5: OP60 0xa0
[codex:1138744] 0028a7: SHL
[codex:1138744] 0028a8: SUB
[codex:1138744] 0028a9: AND
[codex:1138744]
[codex:1138744] thinking
[codex:1138744] **Analyzing SafeERC20 and access controls**
[codex:1138744] exec
[codex:1138744] /bin/bash -lc "python - <<'PY'
[codex:1138744] import re
[codex:1138744] from pathlib import Path
[codex:1138744] text=Path('BYTECODE_BUNDLE.txt').read_text()
[codex:1138744] hexstr=re.search(r'0x[0-9a-fA-F]+', text).group(0)[2:]
[codex:1138744] meta_idx=hexstr.find('a264697066735822')
[codex:1138744] if meta_idx"'!=-1:
[codex:1138744] hexstr_code=hexstr[:meta_idx-2]
[codex:1138744] else:
[codex:1138744] hexstr_code=hexstr
[codex:1138744] code=bytes.fromhex(hexstr_code)
[codex:1138744]
[codex:1138744] # find PUSH2 0x1f0f occurrences
[codex:1138744] occ=[]
[codex:1138744] i=0
[codex:1138744] while i<len(code):
[codex:1138744] op=code[i]
[codex:1138744] if 0x60<=op<=0x7f:
[codex:1138744] n=op-0x5f
[codex:1138744] imm=code[i+1:i+1+n]
[codex:1138744] if n==2 and imm==bytes.fromhex('"'1f0f'):
[codex:1138744] occ.append(i)
[codex:1138744] i+=1+n
[codex:1138744] else:
[codex:1138744] i+=1
[codex:1138744] print('PUSH2 0x1f0f occurrences',len(occ))
[codex:1138744] print([hex(o) for o in occ[:20]])
[codex:1138744] PY" in /tmp/codex-multi-7wwc7sg5 succeeded in 34ms:
[codex:1138744] PUSH2 0x1f0f occurrences 9
[codex:1138744] ['0x871', '0x8d0', '0xbc5', '0xd82', '0xdd9', '0xee1', '0xf48', '0x192a', '0x1db6']
[codex:1138744]
[codex:1138744] thinking
[codex:1138744] **Analyzing modifiers and guard functions**
[codex:1138744] exec
[codex:1138744] /bin/bash -lc "python - <<'PY'
[codex:1138744] import re
[codex:1138744] from pathlib import Path
[codex:1138744] text=Path('BYTECODE_BUNDLE.txt').read_text()
[codex:1138744] hexstr=re.search(r'0x[0-9a-fA-F]+', text).group(0)[2:]
[codex:1138744] meta_idx=hexstr.find('a264697066735822')
[codex:1138744] if meta_idx"'!=-1:
[codex:1138744] hexstr_code=hexstr[:meta_idx-2]
[codex:1138744] else:
[codex:1138744] hexstr_code=hexstr
[codex:1138744] code=bytes.fromhex(hexstr_code)
[codex:1138744]
[codex:1138744] op_imms={i: i-0x5f for i in range(0x60,0x80)}
[codex:1138744]
[codex:1138744] names={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',0x5f:'PUSH0',0xf1:'CALL',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID'}
[codex:1138744] for i in range(0x80,0x90): names[i]=f'DUP{i-0x7f}'
[codex:1138744] for i in range(0x90,0xa0): names[i]=f'SWAP{i-0x8f}'
[codex:1138744]
[codex:1138744] ops=[]
[codex:1138744] i=0
[codex:1138744] while i<len(code):
[codex:1138744] op=code[i]
[codex:1138744] imm=None
[codex:1138744] i0=i
[codex:1138744] i+=1
[codex:1138744] if op in op_imms:
[codex:1138744] n=op_imms[op]
[codex:1138744] imm=code[i:i+n]
[codex:1138744] i+=n
[codex:1138744] ops.append((i0,op,imm))
[codex:1138744]
[codex:1138744] start=0x2000
[codex:1138744] end=0x2090
[codex:1138744] for o,op,imm in ops:
[codex:1138744] if o<start: continue
[codex:1138744] if o>=end: break
[codex:1138744] name=names.get(op,f'OP{op:02x}')
[codex:1138744] if imm is not None:
[codex:1138744] print(f'{o:06x}: {name} 0x{imm.hex()}')
[codex:1138744] else:
[codex:1138744] print(f'{o:06x}: {name}')
[codex:1138744] PY" in /tmp/codex-multi-7wwc7sg5 succeeded in 42ms:
[codex:1138744] 002010: SWAP1
[codex:1138744] 002011: OP60 0x00
[codex:1138744] 002013: SWAP1
[codex:1138744] 002014: OPa2
[codex:1138744] 002015: POP
[codex:1138744] 002016: JUMP
[codex:1138744] 002017: JUMPDEST
[codex:1138744] 002018: OP60 0x02
[codex:1138744] 00201a: OP60 0x65
[codex:1138744] 00201c: SLOAD
[codex:1138744] 00201d: SUB
[codex:1138744] 00201e: OP61 0x2069
[codex:1138744] 002021: JUMPI
[codex:1138744] 002022: OP60 0x40
[codex:1138744] 002024: MLOAD
[codex:1138744] 002025: OP62 0x461bcd
[codex:1138744] 002029: OP60 0xe5
[codex:1138744] 00202b: SHL
[codex:1138744] 00202c: DUP2
[codex:1138744] 00202d: MSTORE
[codex:1138744]
[codex:1138744] thinking
[codex:1138744] **Analyzing storage writes for access control**
[codex:1138744] exec
[codex:1138744] /bin/bash -lc "python - <<'PY'
[codex:1138744] import re
[codex:1138744] from pathlib import Path
[codex:1138744] text=Path('BYTECODE_BUNDLE.txt').read_text()
[codex:1138744] hexstr=re.search(r'0x[0-9a-fA-F]+', text).group(0)[2:]
[codex:1138744] meta_idx=hexstr.find('a264697066735822')
[codex:1138744] if meta_idx"'!=-1:
[codex:1138744] hexstr_code=hexstr[:meta_idx-2]
[codex:1138744] else:
[codex:1138744] hexstr_code=hexstr
[codex:1138744] code=bytes.fromhex(hexstr_code)
[codex:1138744]
[codex:1138744] # disassemble
[codex:1138744] op_imms={i: i-0x5f for i in range(0x60,0x80)}
[codex:1138744] ops=[]
[codex:1138744] i=0
[codex:1138744] while i<len(code):
[codex:1138744] op=code[i]
[codex:1138744] imm=None
[codex:1138744] i0=i
[codex:1138744] i+=1
[codex:1138744] if op in op_imms:
[codex:1138744] n=op_imms[op]
[codex:1138744] imm=code[i:i+n]
[codex:1138744] i+=n
[codex:1138744] ops.append((i0,op,imm))
[codex:1138744]
[codex:1138744] # gather SSTORE occurrences and inspect immediate before
[codex:1138744] sstore=0x55
[codex:1138744] slots=[]
[codex:1138744] for idx,(o,op,imm) in enumerate(ops):
[codex:1138744] if op==sstore:
[codex:1138744] # look back for a PUSH of slot as immediate? usually sequence: PUSH <value> PUSH <slot> SSTORE or compute
[codex:1138744] prev=ops[idx-1] if idx>=1 else None
[codex:1138744] prev2=ops[idx-2] if idx>=2 else None
[codex:1138744] slot=None
[codex:1138744] if prev and prev[1] in op_imms:
[codex:1138744] slot=int.from_bytes(prev[2], '"'big')
[codex:1138744] elif prev2 and prev2[1] in op_imms:
[codex:1138744] slot=int.from_bytes(prev2[2], 'big')
[codex:1138744] slots.append((o,slot,prev,prev2))
[codex:1138744]
[codex:1138744] # print unique slots
[codex:1138744] unique=sorted({s for _,s,_,_ in slots if s is not None})
[codex:1138744] print('SSTORE count',len(slots))
[codex:1138744] print('Slots constants',unique)
[codex:1138744] # show sstores with slot 0x97 if any
[codex:1138744] for o,slot,prev,prev2 in slots:
[codex:1138744] if slot==0x97:
[codex:1138744] print('SSTORE slot 0x97 at',hex(o),'prev',prev,'prev2',prev2)
[codex:1138744] PY" in /tmp/codex-multi-7wwc7sg5 succeeded in 32ms:
[codex:1138744] SSTORE count 47
[codex:1138744] Slots constants [0, 101]
[codex:1138744]
[codex:1138744] thinking
[codex:1138744] **Analyzing storage slots and initializer protections**
[codex:1138744] exec
[codex:1138744] /bin/bash -lc "python - <<'PY'
[codex:1138744] import re
[codex:1138744] from pathlib import Path
[codex:1138744] text=Path('BYTECODE_BUNDLE.txt').read_text()
[codex:1138744] hexstr=re.search(r'0x[0-9a-fA-F]+', text).group(0)[2:]
[codex:1138744] # find occurrences
[codex:1138744] for sig in ['a9059cbb','23b872dd','18160ddd','70a08231']:
[codex:1138744] idxs=[m.start() for m in re.finditer(sig, hexstr)]
[codex:1138744] print(sig, 'occurrences', len(idxs), 'first', idxs[:5])
[codex:1138744] PY" in /tmp/codex-multi-7wwc7sg5 succeeded in 27ms:
[codex:1138744] a9059cbb occurrences 1 first [20172]
[codex:1138744] 23b872dd occurrences 1 first [17968]
[codex:1138744] 18160ddd occurrences 1 first [8858]
[codex:1138744] 70a08231 occurrences 4 first [8546, 8602, 11484, 11546]
[codex:1138744]
[codex:1138744] thinking
[codex:1138744] **Checking bytecode offsets for transfer functions**
[codex:1138744] exec
[codex:1138744] /bin/bash -lc "python - <<'PY'
[codex:1138744] import re
[codex:1138744] from pathlib import Path
[codex:1138744] text=Path('BYTECODE_BUNDLE.txt').read_text()
[codex:1138744] hexstr=re.search(r'0x[0-9a-fA-F]+', text).group(0)[2:]
[codex:1138744] for sig in ['a9059cbb','23b872dd']:
[codex:1138744] idx=hexstr.find(sig)
[codex:1138744] if idx"'!=-1:
[codex:1138744] byte_offset=idx//2
[codex:1138744] print(sig, '"'hex index', idx, 'byte offset', hex(byte_offset))
[codex:1138744] # show some context bytes around
[codex:1138744] start=max(0, idx-40)
[codex:1138744] end=min(len(hexstr), idx+40)
[codex:1138744] print(hexstr[start:end])
[codex:1138744] PY" in /tmp/codex-multi-7wwc7sg5 succeeded in 26ms:
[codex:1138744] a9059cbb hex index 20172 byte offset 0x2766
[codex:1138744] 16602482015260448101829052610c3e90849063a9059cbb60e01b90606401612323565b60d65460
[codex:1138744] 23b872dd hex index 17968 byte offset 0x2318
[codex:1138744] 16604482015260648101829052610d789085906323b872dd60e01b906084015b60408051601f1981
[codex:1138744]
[codex:1138744] thinking
[codex:1138744] **Disassembling around specific offset**
[codex:1138744] exec
[codex:1138744] /bin/bash -lc "python - <<'PY'
[codex:1138744] import re
[codex:1138744] from pathlib import Path
[codex:1138744] text=Path('BYTECODE_BUNDLE.txt').read_text()
[codex:1138744] hexstr=re.search(r'0x[0-9a-fA-F]+', text).group(0)[2:]
[codex:1138744] meta_idx=hexstr.find('a264697066735822')
[codex:1138744] if meta_idx"'!=-1:
[codex:1138744] hexstr_code=hexstr[:meta_idx-2]
[codex:1138744] else:
[codex:1138744] hexstr_code=hexstr
[codex:1138744] code=bytes.fromhex(hexstr_code)
[codex:1138744]
[codex:1138744] # disassemble
[codex:1138744] op_imms={i: i-0x5f for i in range(0x60,0x80)}
[codex:1138744]
[codex:1138744] names={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',0x5f:'PUSH0',0xf1:'CALL',0xfa:'STATICCALL',0xfd:'REVERT',0xfe:'INVALID'}
[codex:1138744] for i in range(0x80,0x90): names[i]=f'DUP{i-0x7f}'
[codex:1138744] for i in range(0x90,0xa0): names[i]=f'SWAP{i-0x8f}'
[codex:1138744]
[codex:1138744] ops=[]
[codex:1138744] i=0
[codex:1138744] while i<len(code):
[codex:1138744] op=code[i]
[codex:1138744] imm=None
[codex:1138744] i0=i
[codex:1138744] i+=1
[codex:1138744] if op in op_imms:
[codex:1138744] n=op_imms[op]
[codex:1138744] imm=code[i:i+n]
[codex:1138744] i+=n
[codex:1138744] ops.append((i0,op,imm))
[codex:1138744]
[codex:1138744] start=0x2720
[codex:1138744] end=0x27a0
[codex:1138744] for o,op,imm in ops:
[codex:1138744] if o<start: continue
[codex:1138744] if o>=end: break
[codex:1138744] name=names.get(op,f'OP{op:02x}')
[codex:1138744] if imm is not None:
[codex:1138744] print(f'{o:06x}: {name} 0x{imm.hex()}')
[codex:1138744] else:
[codex:1138744] print(f'{o:06x}: {name}')
[codex:1138744] PY" in /tmp/codex-multi-7wwc7sg5 succeeded in 35ms:
[codex:1138744] 002720: AND
[codex:1138744] 002721: DUP3
[codex:1138744] 002722: MSTORE
[codex:1138744] 002723: DUP2
[codex:1138744] 002724: ADD
[codex:1138744] 002725: SWAP2
[codex:1138744] 002726: SWAP1
[codex:1138744] 002727: SWAP2
[codex:1138744] 002728: MSTORE
[codex:1138744] 002729: OP60 0x40
[codex:1138744] 00272b: ADD
[codex:1138744] 00272c: OP60 0x00
[codex:1138744] 00272e: SHA3
[codex:1138744] 00272f: DUP1
[codex:1138744] 002730: SLOAD
[codex:1138744] 002731: OP60 0xff
[codex:1138744] 002733: NOT
[codex:1138744] 002734: AND
[codex:1138744] 002735: SWAP2
[codex:1138744] 002736: ISZERO
[codex:1138744]
[codex:1138744] thinking
[codex:1138744] **Analyzing contract withdrawal and signature checks**
[codex:1138744]
[codex:1138744] I'm reviewing the function that handles token withdrawals and transfers, focusing on signature verifications and maintainer checks. There’s no direct evidence of exploitable paths like missing signature validation or unprotected access that would allow unauthorized withdrawal for profit. Given the complexity and lack of clear vulnerabilities, I’m preparing a JSON output stating no concrete exploit was found.
[codex:1138744] codex
[codex:1138744] {"no_findings":true,"summary":"No concrete, exploitable value-extraction path was identified from the provided runtime bytecode alone.","findings":[]}
[codex:1138744] tokens used
[codex:1138744] 85,160
[codex:1138744] {"no_findings":true,"summary":"No concrete, exploitable value-extraction path was identified from the provided runtime bytecode alone.","findings":[]}
{
"codex": {
"ran_at": "2025-12-31T22:43:42.068994+00:00",
"returncode": 0
},
"summary": "No concrete, exploitable value-extraction path was identified from the provided runtime bytecode alone.",
"raw_final": {
"summary": "No concrete, exploitable value-extraction path was identified from the provided runtime bytecode alone.",
"findings": [],
"no_findings": true
},
"no_findings": true,
"schema_version": 1
}
00000000: PUSH1 0x80 00000002: PUSH1 0x40 00000004: MSTORE 00000005: PUSH1 0x04 00000007: CALLDATASIZE 00000008: LT 00000009: PUSH2 0x0260 0000000c: JUMPI 0000000d: PUSH1 0x00 0000000f: CALLDATALOAD 00000010: PUSH1 0xe0 00000012: SHR 00000013: DUP1 00000014: PUSH4 0x92bfff19 00000019: GT 0000001a: PUSH2 0x0144 0000001d: JUMPI 0000001e: DUP1 0000001f: PUSH4 0xccbba0c0 00000024: GT 00000025: PUSH2 0x00b6 00000028: JUMPI 00000029: DUP1 0000002a: PUSH4 0xe79994cb 0000002f: GT 00000030: PUSH2 0x007a 00000033: JUMPI 00000034: DUP1 00000035: PUSH4 0xe79994cb 0000003a: EQ 0000003b: PUSH2 0x0795 0000003e: JUMPI 0000003f: DUP1 00000040: PUSH4 0xed421e14 00000045: EQ 00000046: PUSH2 0x07cd 00000049: JUMPI 0000004a: DUP1 0000004b: PUSH4 0xf4887f15 00000050: EQ 00000051: PUSH2 0x07ed 00000054: JUMPI 00000055: DUP1 00000056: PUSH4 0xf6eb192d 0000005b: EQ 0000005c: PUSH2 0x080d 0000005f: JUMPI 00000060: DUP1 00000061: PUSH4 0xf8453e7c 00000066: EQ 00000067: PUSH2 0x082d 0000006a: JUMPI 0000006b: DUP1 0000006c: PUSH4 0xf92f9e10 00000071: EQ 00000072: PUSH2 0x084d 00000075: JUMPI 00000076: PUSH1 0x00 00000078: DUP1 00000079: REVERT 0000007a: JUMPDEST 0000007b: DUP1 0000007c: PUSH4 0xccbba0c0 00000081: EQ 00000082: PUSH2 0x06df 00000085: JUMPI 00000086: DUP1 00000087: PUSH4 0xce206dc6 0000008c: EQ 0000008d: PUSH2 0x06fd 00000090: JUMPI 00000091: DUP1 00000092: PUSH4 0xd416deb6 00000097: EQ 00000098: PUSH2 0x071d 0000009b: JUMPI 0000009c: DUP1 0000009d: PUSH4 0xd6bed37c 000000a2: EQ 000000a3: PUSH2 0x073d 000000a6: JUMPI 000000a7: DUP1 000000a8: PUSH4 0xe78cea92 000000ad: EQ 000000ae: PUSH2 0x0775 000000b1: JUMPI 000000b2: PUSH1 0x00 000000b4: DUP1 000000b5: REVERT 000000b6: JUMPDEST 000000b7: DUP1 000000b8: PUSH4 0xad1e29b1 000000bd: GT 000000be: PUSH2 0x0108 000000c1: JUMPI 000000c2: DUP1 000000c3: PUSH4 0xad1e29b1 000000c8: EQ 000000c9: PUSH2 0x05e5 000000cc: JUMPI 000000cd: DUP1 000000ce: PUSH4 0xb06c3d80 000000d3: EQ 000000d4: PUSH2 0x0615 000000d7: JUMPI 000000d8: DUP1 000000d9: PUSH4 0xb0829ba7 000000de: EQ 000000df: PUSH2 0x0642 000000e2: JUMPI 000000e3: DUP1 000000e4: PUSH4 0xbb1c6a81 000000e9: EQ 000000ea: PUSH2 0x066f 000000ed: JUMPI 000000ee: DUP1 000000ef: PUSH4 0xc1329847 000000f4: EQ 000000f5: PUSH2 0x068f 000000f8: JUMPI 000000f9: DUP1 000000fa: PUSH4 0xc719eebe 000000ff: EQ 00000100: PUSH2 0x06af 00000103: JUMPI 00000104: PUSH1 0x00 00000106: DUP1 00000107: REVERT 00000108: JUMPDEST 00000109: DUP1 0000010a: PUSH4 0x92bfff19 0000010f: EQ 00000110: PUSH2 0x0537 00000113: JUMPI 00000114: DUP1 00000115: PUSH4 0x95edabb0 0000011a: EQ 0000011b: PUSH2 0x0557 0000011e: JUMPI 0000011f: DUP1 00000120: PUSH4 0x98421bda 00000125: EQ 00000126: PUSH2 0x0577 00000129: JUMPI 0000012a: DUP1 0000012b: PUSH4 0xa1590646 00000130: EQ 00000131: PUSH2 0x05af 00000134: JUMPI 00000135: DUP1 00000136: PUSH4 0xaaf5eb68 0000013b: EQ 0000013c: PUSH2 0x05cf 0000013f: JUMPI 00000140: PUSH1 0x00 00000142: DUP1 00000143: REVERT 00000144: JUMPDEST 00000145: DUP1 00000146: PUSH4 0x62a5af3b 0000014b: GT 0000014c: PUSH2 0x01dd 0000014f: JUMPI 00000150: DUP1 00000151: PUSH4 0x70b8ed74 00000156: GT 00000157: PUSH2 0x01a1 0000015a: JUMPI 0000015b: DUP1 0000015c: PUSH4 0x70b8ed74 00000161: EQ 00000162: PUSH2 0x044d 00000165: JUMPI 00000166: DUP1 00000167: PUSH4 0x71806b78 0000016c: EQ 0000016d: PUSH2 0x046d 00000170: JUMPI 00000171: DUP1 00000172: PUSH4 0x775fe40b 00000177: EQ 00000178: PUSH2 0x049d 0000017b: JUMPI 0000017c: DUP1 0000017d: PUSH4 0x7eeee88e 00000182: EQ 00000183: PUSH2 0x04ca 00000186: JUMPI 00000187: DUP1 00000188: PUSH4 0x8dd14802 0000018d: EQ 0000018e: PUSH2 0x04f7 00000191: JUMPI 00000192: DUP1 00000193: PUSH4 0x90334178 00000198: EQ 00000199: PUSH2 0x0517 0000019c: JUMPI 0000019d: PUSH1 0x00 0000019f: DUP1 000001a0: REVERT 000001a1: JUMPDEST 000001a2: DUP1 000001a3: PUSH4 0x62a5af3b 000001a8: EQ 000001a9: PUSH2 0x03cd 000001ac: JUMPI 000001ad: DUP1 000001ae: PUSH4 0x650cd615 000001b3: EQ 000001b4: PUSH2 0x03e2 000001b7: JUMPI 000001b8: DUP1 000001b9: PUSH4 0x6598f3f8 000001be: EQ 000001bf: PUSH2 0x0402 000001c2: JUMPI 000001c3: DUP1 000001c4: PUSH4 0x666a7e49 000001c9: EQ 000001ca: PUSH2 0x0418 000001cd: JUMPI 000001ce: DUP1 000001cf: PUSH4 0x6a28f000 000001d4: EQ 000001d5: PUSH2 0x0438 000001d8: JUMPI 000001d9: PUSH1 0x00 000001db: DUP1 000001dc: REVERT 000001dd: JUMPDEST 000001de: DUP1 000001df: PUSH4 0x45d61ded 000001e4: GT 000001e5: PUSH2 0x0224 000001e8: JUMPI 000001e9: DUP1 000001ea: PUSH4 0x45d61ded 000001ef: EQ 000001f0: PUSH2 0x0325 000001f3: JUMPI 000001f4: DUP1 000001f5: PUSH4 0x465f1935 000001fa: EQ 000001fb: PUSH2 0x0345 000001fe: JUMPI 000001ff: DUP1 00000200: PUSH4 0x518351cd 00000205: EQ 00000206: PUSH2 0x0365 00000209: JUMPI 0000020a: DUP1 0000020b: PUSH4 0x5c975abb 00000210: EQ 00000211: PUSH2 0x0389 00000214: JUMPI 00000215: DUP1 00000216: PUSH4 0x62859f8f 0000021b: EQ 0000021c: PUSH2 0x03ad 0000021f: JUMPI 00000220: PUSH1 0x00 00000222: DUP1 00000223: REVERT 00000224: JUMPDEST 00000225: DUP1 00000226: PUSH4 0x036e76e3 0000022b: EQ 0000022c: PUSH2 0x026c 0000022f: JUMPI 00000230: DUP1 00000231: PUSH4 0x044423e9 00000236: EQ 00000237: PUSH2 0x028e 0000023a: JUMPI 0000023b: DUP1 0000023c: PUSH4 0x0f45b502 00000241: EQ 00000242: PUSH2 0x02c5 00000245: JUMPI 00000246: DUP1 00000247: PUSH4 0x39fdd5de 0000024c: EQ 0000024d: PUSH2 0x02e5 00000250: JUMPI 00000251: DUP1 00000252: PUSH4 0x3a5381b5 00000257: EQ 00000258: PUSH2 0x0305 0000025b: JUMPI 0000025c: PUSH1 0x00 0000025e: DUP1 0000025f: REVERT 00000260: JUMPDEST 00000261: CALLDATASIZE 00000262: PUSH2 0x0267 00000265: JUMPI 00000266: STOP 00000267: JUMPDEST 00000268: PUSH1 0x00 0000026a: DUP1 0000026b: REVERT 0000026c: JUMPDEST 0000026d: CALLVALUE 0000026e: DUP1 0000026f: ISZERO 00000270: PUSH2 0x0278 00000273: JUMPI 00000274: PUSH1 0x00 00000276: DUP1 00000277: REVERT 00000278: JUMPDEST 00000279: POP 0000027a: PUSH2 0x028c 0000027d: PUSH2 0x0287 00000280: CALLDATASIZE 00000281: PUSH1 0x04 00000283: PUSH2 0x2bde 00000286: JUMP 00000287: JUMPDEST 00000288: PUSH2 0x086d 0000028b: JUMP 0000028c: JUMPDEST 0000028d: STOP 0000028e: JUMPDEST 0000028f: CALLVALUE 00000290: DUP1 00000291: ISZERO 00000292: PUSH2 0x029a 00000295: JUMPI 00000296: PUSH1 0x00 00000298: DUP1 00000299: REVERT 0000029a: JUMPDEST 0000029b: POP 0000029c: PUSH1 0x97 0000029e: SLOAD 0000029f: PUSH1 0x01 000002a1: PUSH1 0x01 000002a3: PUSH1 0xa0 000002a5: SHL 000002a6: SUB 000002a7: AND 000002a8: JUMPDEST 000002a9: PUSH1 0x40 000002ab: MLOAD 000002ac: PUSH1 0x01 000002ae: PUSH1 0x01 000002b0: PUSH1 0xa0 000002b2: SHL 000002b3: SUB 000002b4: SWAP1 000002b5: SWAP2 000002b6: AND 000002b7: DUP2 000002b8: MSTORE 000002b9: PUSH1 0x20 000002bb: ADD 000002bc: JUMPDEST 000002bd: PUSH1 0x40 000002bf: MLOAD 000002c0: DUP1 000002c1: SWAP2 000002c2: SUB 000002c3: SWAP1 000002c4: RETURN 000002c5: JUMPDEST 000002c6: CALLVALUE 000002c7: DUP1 000002c8: ISZERO 000002c9: PUSH2 0x02d1 000002cc: JUMPI 000002cd: PUSH1 0x00 000002cf: DUP1 000002d0: REVERT 000002d1: JUMPDEST 000002d2: POP 000002d3: PUSH2 0x028c 000002d6: PUSH2 0x02e0 000002d9: CALLDATASIZE 000002da: PUSH1 0x04 000002dc: PUSH2 0x2c02 000002df: JUMP 000002e0: JUMPDEST 000002e1: PUSH2 0x08cc 000002e4: JUMP 000002e5: JUMPDEST 000002e6: CALLVALUE 000002e7: DUP1 000002e8: ISZERO 000002e9: PUSH2 0x02f1 000002ec: JUMPI 000002ed: PUSH1 0x00 000002ef: DUP1 000002f0: REVERT 000002f1: JUMPDEST 000002f2: POP 000002f3: PUSH2 0x028c 000002f6: PUSH2 0x0300 000002f9: CALLDATASIZE 000002fa: PUSH1 0x04 000002fc: PUSH2 0x2c6d 000002ff: JUMP 00000300: JUMPDEST 00000301: PUSH2 0x09e0 00000304: JUMP 00000305: JUMPDEST 00000306: CALLVALUE 00000307: DUP1 00000308: ISZERO 00000309: PUSH2 0x0311 0000030c: JUMPI 0000030d: PUSH1 0x00 0000030f: DUP1 00000310: REVERT 00000311: JUMPDEST 00000312: POP 00000313: PUSH1 0xca 00000315: SLOAD 00000316: PUSH2 0x02a8 00000319: SWAP1 0000031a: PUSH1 0x01 0000031c: PUSH1 0x01 0000031e: PUSH1 0xa0 00000320: SHL 00000321: SUB 00000322: AND 00000323: DUP2 00000324: JUMP 00000325: JUMPDEST 00000326: CALLVALUE 00000327: DUP1 00000328: ISZERO 00000329: PUSH2 0x0331 0000032c: JUMPI 0000032d: PUSH1 0x00 0000032f: DUP1 00000330: REVERT 00000331: JUMPDEST 00000332: POP 00000333: PUSH1 0xd6 00000335: SLOAD 00000336: PUSH2 0x02a8 00000339: SWAP1 0000033a: PUSH1 0x01 0000033c: PUSH1 0x01 0000033e: PUSH1 0xa0 00000340: SHL 00000341: SUB 00000342: AND 00000343: DUP2 00000344: JUMP 00000345: JUMPDEST 00000346: CALLVALUE 00000347: DUP1 00000348: ISZERO 00000349: PUSH2 0x0351 0000034c: JUMPI 0000034d: PUSH1 0x00 0000034f: DUP1 00000350: REVERT 00000351: JUMPDEST 00000352: POP 00000353: PUSH2 0x028c 00000356: PUSH2 0x0360 00000359: CALLDATASIZE 0000035a: PUSH1 0x04 0000035c: PUSH2 0x2cd7 0000035f: JUMP 00000360: JUMPDEST 00000361: PUSH2 0x0bc1 00000364: JUMP 00000365: JUMPDEST 00000366: CALLVALUE 00000367: DUP1 00000368: ISZERO 00000369: PUSH2 0x0371 0000036c: JUMPI 0000036d: PUSH1 0x00 0000036f: DUP1 00000370: REVERT 00000371: JUMPDEST 00000372: POP 00000373: PUSH2 0x037b 00000376: PUSH1 0xd7 00000378: SLOAD 00000379: DUP2 0000037a: JUMP 0000037b: JUMPDEST 0000037c: PUSH1 0x40 0000037e: MLOAD 0000037f: SWAP1 00000380: DUP2 00000381: MSTORE 00000382: PUSH1 0x20 00000384: ADD 00000385: PUSH2 0x02bc 00000388: JUMP 00000389: JUMPDEST 0000038a: CALLVALUE 0000038b: DUP1 0000038c: ISZERO 0000038d: PUSH2 0x0395 00000390: JUMPI 00000391: PUSH1 0x00 00000393: DUP1 00000394: REVERT 00000395: JUMPDEST 00000396: POP 00000397: PUSH1 0x33 00000399: SLOAD 0000039a: PUSH1 0xff 0000039c: AND 0000039d: JUMPDEST 0000039e: PUSH1 0x40 000003a0: MLOAD 000003a1: SWAP1 000003a2: ISZERO 000003a3: ISZERO 000003a4: DUP2 000003a5: MSTORE 000003a6: PUSH1 0x20 000003a8: ADD 000003a9: PUSH2 0x02bc 000003ac: JUMP 000003ad: JUMPDEST 000003ae: CALLVALUE 000003af: DUP1 000003b0: ISZERO 000003b1: PUSH2 0x03b9 000003b4: JUMPI 000003b5: PUSH1 0x00 000003b7: DUP1 000003b8: REVERT 000003b9: JUMPDEST 000003ba: POP 000003bb: PUSH2 0x028c 000003be: PUSH2 0x03c8 000003c1: CALLDATASIZE 000003c2: PUSH1 0x04 000003c4: PUSH2 0x2d5e 000003c7: JUMP 000003c8: JUMPDEST 000003c9: PUSH2 0x0c43 000003cc: JUMP 000003cd: JUMPDEST 000003ce: CALLVALUE 000003cf: DUP1 000003d0: ISZERO 000003d1: PUSH2 0x03d9 000003d4: JUMPI 000003d5: PUSH1 0x00 000003d7: DUP1 000003d8: REVERT 000003d9: JUMPDEST 000003da: POP 000003db: PUSH2 0x028c 000003de: PUSH2 0x0d0f 000003e1: JUMP 000003e2: JUMPDEST 000003e3: CALLVALUE 000003e4: DUP1 000003e5: ISZERO 000003e6: PUSH2 0x03ee 000003e9: JUMPI 000003ea: PUSH1 0x00 000003ec: DUP1 000003ed: REVERT 000003ee: JUMPDEST 000003ef: POP 000003f0: PUSH2 0x028c 000003f3: PUSH2 0x03fd 000003f6: CALLDATASIZE 000003f7: PUSH1 0x04 000003f9: PUSH2 0x2dae 000003fc: JUMP 000003fd: JUMPDEST 000003fe: PUSH2 0x0d4a 00000401: JUMP 00000402: JUMPDEST 00000403: CALLVALUE 00000404: DUP1 00000405: ISZERO 00000406: PUSH2 0x040e 00000409: JUMPI 0000040a: PUSH1 0x00 0000040c: DUP1 0000040d: REVERT 0000040e: JUMPDEST 0000040f: POP 00000410: PUSH2 0x037b 00000413: PUSH1 0xd8 00000415: SLOAD 00000416: DUP2 00000417: JUMP 00000418: JUMPDEST 00000419: CALLVALUE 0000041a: DUP1 0000041b: ISZERO 0000041c: PUSH2 0x0424 0000041f: JUMPI 00000420: PUSH1 0x00 00000422: DUP1 00000423: REVERT 00000424: JUMPDEST 00000425: POP 00000426: PUSH2 0x028c 00000429: PUSH2 0x0433 0000042c: CALLDATASIZE 0000042d: PUSH1 0x04 0000042f: PUSH2 0x2bde 00000432: JUMP 00000433: JUMPDEST 00000434: PUSH2 0x0d7e 00000437: JUMP 00000438: JUMPDEST 00000439: CALLVALUE 0000043a: DUP1 0000043b: ISZERO 0000043c: PUSH2 0x0444 0000043f: JUMPI 00000440: PUSH1 0x00 00000442: DUP1 00000443: REVERT 00000444: JUMPDEST 00000445: POP 00000446: PUSH2 0x028c 00000449: PUSH2 0x0dd5 0000044c: JUMP 0000044d: JUMPDEST 0000044e: CALLVALUE 0000044f: DUP1 00000450: ISZERO 00000451: PUSH2 0x0459 00000454: JUMPI 00000455: PUSH1 0x00 00000457: DUP1 00000458: REVERT 00000459: JUMPDEST 0000045a: POP 0000045b: PUSH2 0x028c 0000045e: PUSH2 0x0468 00000461: CALLDATASIZE 00000462: PUSH1 0x04 00000464: PUSH2 0x2e01 00000467: JUMP 00000468: JUMPDEST 00000469: PUSH2 0x0e10 0000046c: JUMP 0000046d: JUMPDEST 0000046e: CALLVALUE 0000046f: DUP1 00000470: ISZERO 00000471: PUSH2 0x0479 00000474: JUMPI 00000475: PUSH1 0x00 00000477: DUP1 00000478: REVERT 00000479: JUMPDEST 0000047a: POP 0000047b: PUSH2 0x039d 0000047e: PUSH2 0x0488 00000481: CALLDATASIZE 00000482: PUSH1 0x04 00000484: PUSH2 0x2bde 00000487: JUMP 00000488: JUMPDEST 00000489: PUSH1 0xcf 0000048b: PUSH1 0x20 0000048d: MSTORE 0000048e: PUSH1 0x00 00000490: SWAP1 00000491: DUP2 00000492: MSTORE 00000493: PUSH1 0x40 00000495: SWAP1 00000496: KECCAK256 00000497: SLOAD 00000498: PUSH1 0xff 0000049a: AND 0000049b: DUP2 0000049c: JUMP 0000049d: JUMPDEST 0000049e: CALLVALUE 0000049f: DUP1 000004a0: ISZERO 000004a1: PUSH2 0x04a9 000004a4: JUMPI 000004a5: PUSH1 0x00 000004a7: DUP1 000004a8: REVERT 000004a9: JUMPDEST 000004aa: POP 000004ab: PUSH2 0x037b 000004ae: PUSH2 0x04b8 000004b1: CALLDATASIZE 000004b2: PUSH1 0x04 000004b4: PUSH2 0x2bde 000004b7: JUMP 000004b8: JUMPDEST 000004b9: PUSH1 0xd3 000004bb: PUSH1 0x20 000004bd: MSTORE 000004be: PUSH1 0x00 000004c0: SWAP1 000004c1: DUP2 000004c2: MSTORE 000004c3: PUSH1 0x40 000004c5: SWAP1 000004c6: KECCAK256 000004c7: SLOAD 000004c8: DUP2 000004c9: JUMP 000004ca: JUMPDEST 000004cb: CALLVALUE 000004cc: DUP1 000004cd: ISZERO 000004ce: PUSH2 0x04d6 000004d1: JUMPI 000004d2: PUSH1 0x00 000004d4: DUP1 000004d5: REVERT 000004d6: JUMPDEST 000004d7: POP 000004d8: PUSH2 0x037b 000004db: PUSH2 0x04e5 000004de: CALLDATASIZE 000004df: PUSH1 0x04 000004e1: PUSH2 0x2bde 000004e4: JUMP 000004e5: JUMPDEST 000004e6: PUSH1 0xce 000004e8: PUSH1 0x20 000004ea: MSTORE 000004eb: PUSH1 0x00 000004ed: SWAP1 000004ee: DUP2 000004ef: MSTORE 000004f0: PUSH1 0x40 000004f2: SWAP1 000004f3: KECCAK256 000004f4: SLOAD 000004f5: DUP2 000004f6: JUMP 000004f7: JUMPDEST 000004f8: CALLVALUE 000004f9: DUP1 000004fa: ISZERO 000004fb: PUSH2 0x0503 000004fe: JUMPI 000004ff: PUSH1 0x00 00000501: DUP1 00000502: REVERT 00000503: JUMPDEST 00000504: POP 00000505: PUSH2 0x028c 00000508: PUSH2 0x0512 0000050b: CALLDATASIZE 0000050c: PUSH1 0x04 0000050e: PUSH2 0x2bde 00000511: JUMP 00000512: JUMPDEST 00000513: PUSH2 0x0edd 00000516: JUMP 00000517: JUMPDEST 00000518: CALLVALUE 00000519: DUP1 0000051a: ISZERO 0000051b: PUSH2 0x0523 0000051e: JUMPI 0000051f: PUSH1 0x00 00000521: DUP1 00000522: REVERT 00000523: JUMPDEST 00000524: POP 00000525: PUSH2 0x028c 00000528: PUSH2 0x0532 0000052b: CALLDATASIZE 0000052c: PUSH1 0x04 0000052e: PUSH2 0x2bde 00000531: JUMP 00000532: JUMPDEST 00000533: PUSH2 0x0f3a 00000536: JUMP 00000537: JUMPDEST 00000538: CALLVALUE 00000539: DUP1 0000053a: ISZERO 0000053b: PUSH2 0x0543 0000053e: JUMPI 0000053f: PUSH1 0x00 00000541: DUP1 00000542: REVERT 00000543: JUMPDEST 00000544: POP 00000545: PUSH2 0x028c 00000548: PUSH2 0x0552 0000054b: CALLDATASIZE 0000054c: PUSH1 0x04 0000054e: PUSH2 0x2e42 00000551: JUMP 00000552: JUMPDEST 00000553: PUSH2 0x0f9a 00000556: JUMP 00000557: JUMPDEST 00000558: CALLVALUE 00000559: DUP1 0000055a: ISZERO 0000055b: PUSH2 0x0563 0000055e: JUMPI 0000055f: PUSH1 0x00 00000561: DUP1 00000562: REVERT 00000563: JUMPDEST 00000564: POP 00000565: PUSH2 0x037b 00000568: PUSH2 0x0572 0000056b: CALLDATASIZE 0000056c: PUSH1 0x04 0000056e: PUSH2 0x2bde 00000571: JUMP 00000572: JUMPDEST 00000573: PUSH2 0x1090 00000576: JUMP 00000577: JUMPDEST 00000578: CALLVALUE 00000579: DUP1 0000057a: ISZERO 0000057b: PUSH2 0x0583 0000057e: JUMPI 0000057f: PUSH1 0x00 00000581: DUP1 00000582: REVERT 00000583: JUMPDEST 00000584: POP 00000585: PUSH2 0x037b 00000588: PUSH2 0x0592 0000058b: CALLDATASIZE 0000058c: PUSH1 0x04 0000058e: PUSH2 0x2e77 00000591: JUMP 00000592: JUMPDEST 00000593: PUSH1 0xcb 00000595: PUSH1 0x20 00000597: SWAP1 00000598: DUP2 00000599: MSTORE 0000059a: PUSH1 0x00 0000059c: SWAP3 0000059d: DUP4 0000059e: MSTORE 0000059f: PUSH1 0x40 000005a1: DUP1 000005a2: DUP5 000005a3: KECCAK256 000005a4: SWAP1 000005a5: SWAP2 000005a6: MSTORE 000005a7: SWAP1 000005a8: DUP3 000005a9: MSTORE 000005aa: SWAP1 000005ab: KECCAK256 000005ac: SLOAD 000005ad: DUP2 000005ae: JUMP 000005af: JUMPDEST 000005b0: CALLVALUE 000005b1: DUP1 000005b2: ISZERO 000005b3: PUSH2 0x05bb 000005b6: JUMPI 000005b7: PUSH1 0x00 000005b9: DUP1 000005ba: REVERT 000005bb: JUMPDEST 000005bc: POP 000005bd: PUSH2 0x028c 000005c0: PUSH2 0x05ca 000005c3: CALLDATASIZE 000005c4: PUSH1 0x04 000005c6: PUSH2 0x2eb0 000005c9: JUMP 000005ca: JUMPDEST 000005cb: PUSH2 0x11f3 000005ce: JUMP 000005cf: JUMPDEST 000005d0: CALLVALUE 000005d1: DUP1 000005d2: ISZERO 000005d3: PUSH2 0x05db 000005d6: JUMPI 000005d7: PUSH1 0x00 000005d9: DUP1 000005da: REVERT 000005db: JUMPDEST 000005dc: POP 000005dd: PUSH2 0x037b 000005e0: PUSH2 0x2710 000005e3: DUP2 000005e4: JUMP 000005e5: JUMPDEST 000005e6: CALLVALUE 000005e7: DUP1 000005e8: ISZERO 000005e9: PUSH2 0x05f1 000005ec: JUMPI 000005ed: PUSH1 0x00 000005ef: DUP1 000005f0: REVERT 000005f1: JUMPDEST 000005f2: POP 000005f3: PUSH2 0x039d 000005f6: PUSH2 0x0600 000005f9: CALLDATASIZE 000005fa: PUSH1 0x04 000005fc: PUSH2 0x2f22 000005ff: JUMP 00000600: JUMPDEST 00000601: PUSH1 0xd4 00000603: PUSH1 0x20 00000605: MSTORE 00000606: PUSH1 0x00 00000608: SWAP1 00000609: DUP2 0000060a: MSTORE 0000060b: PUSH1 0x40 0000060d: SWAP1 0000060e: KECCAK256 0000060f: SLOAD 00000610: PUSH1 0xff 00000612: AND 00000613: DUP2 00000614: JUMP 00000615: JUMPDEST 00000616: CALLVALUE 00000617: DUP1 00000618: ISZERO 00000619: PUSH2 0x0621 0000061c: JUMPI 0000061d: PUSH1 0x00 0000061f: DUP1 00000620: REVERT 00000621: JUMPDEST 00000622: POP 00000623: PUSH2 0x037b 00000626: PUSH2 0x0630 00000629: CALLDATASIZE 0000062a: PUSH1 0x04 0000062c: PUSH2 0x2bde 0000062f: JUMP 00000630: JUMPDEST 00000631: PUSH1 0xd2 00000633: PUSH1 0x20 00000635: MSTORE 00000636: PUSH1 0x00 00000638: SWAP1 00000639: DUP2 0000063a: MSTORE 0000063b: PUSH1 0x40 0000063d: SWAP1 0000063e: KECCAK256 0000063f: SLOAD 00000640: DUP2 00000641: JUMP 00000642: JUMPDEST 00000643: CALLVALUE 00000644: DUP1 00000645: ISZERO 00000646: PUSH2 0x064e 00000649: JUMPI 0000064a: PUSH1 0x00 0000064c: DUP1 0000064d: REVERT 0000064e: JUMPDEST 0000064f: POP 00000650: PUSH2 0x037b 00000653: PUSH2 0x065d 00000656: CALLDATASIZE 00000657: PUSH1 0x04 00000659: PUSH2 0x2bde 0000065c: JUMP 0000065d: JUMPDEST 0000065e: PUSH1 0xcc 00000660: PUSH1 0x20 00000662: MSTORE 00000663: PUSH1 0x00 00000665: SWAP1 00000666: DUP2 00000667: MSTORE 00000668: PUSH1 0x40 0000066a: SWAP1 0000066b: KECCAK256 0000066c: SLOAD 0000066d: DUP2 0000066e: JUMP 0000066f: JUMPDEST 00000670: CALLVALUE 00000671: DUP1 00000672: ISZERO 00000673: PUSH2 0x067b 00000676: JUMPI 00000677: PUSH1 0x00 00000679: DUP1 0000067a: REVERT 0000067b: JUMPDEST 0000067c: POP 0000067d: PUSH2 0x028c 00000680: PUSH2 0x068a 00000683: CALLDATASIZE 00000684: PUSH1 0x04 00000686: PUSH2 0x2f3b 00000689: JUMP 0000068a: JUMPDEST 0000068b: PUSH2 0x13c0 0000068e: JUMP 0000068f: JUMPDEST 00000690: CALLVALUE 00000691: DUP1 00000692: ISZERO 00000693: PUSH2 0x069b 00000696: JUMPI 00000697: PUSH1 0x00 00000699: DUP1 0000069a: REVERT 0000069b: JUMPDEST 0000069c: POP 0000069d: PUSH2 0x028c 000006a0: PUSH2 0x06aa 000006a3: CALLDATASIZE 000006a4: PUSH1 0x04 000006a6: PUSH2 0x2fd5 000006a9: JUMP 000006aa: JUMPDEST 000006ab: PUSH2 0x15ab 000006ae: JUMP 000006af: JUMPDEST 000006b0: CALLVALUE 000006b1: DUP1 000006b2: ISZERO 000006b3: PUSH2 0x06bb 000006b6: JUMPI 000006b7: PUSH1 0x00 000006b9: DUP1 000006ba: REVERT 000006bb: JUMPDEST 000006bc: POP 000006bd: PUSH2 0x039d 000006c0: PUSH2 0x06ca 000006c3: CALLDATASIZE 000006c4: PUSH1 0x04 000006c6: PUSH2 0x2f22 000006c9: JUMP 000006ca: JUMPDEST 000006cb: PUSH1 0xd0 000006cd: PUSH1 0x20 000006cf: MSTORE 000006d0: PUSH1 0x00 000006d2: SWAP1 000006d3: DUP2 000006d4: MSTORE 000006d5: PUSH1 0x40 000006d7: SWAP1 000006d8: KECCAK256 000006d9: SLOAD 000006da: PUSH1 0xff 000006dc: AND 000006dd: DUP2 000006de: JUMP 000006df: JUMPDEST 000006e0: CALLVALUE 000006e1: DUP1 000006e2: ISZERO 000006e3: PUSH2 0x06eb 000006e6: JUMPI 000006e7: PUSH1 0x00 000006e9: DUP1 000006ea: REVERT 000006eb: JUMPDEST 000006ec: POP 000006ed: PUSH1 0x98 000006ef: SLOAD 000006f0: PUSH1 0x01 000006f2: PUSH1 0x01 000006f4: PUSH1 0xa0 000006f6: SHL 000006f7: SUB 000006f8: AND 000006f9: PUSH2 0x02a8 000006fc: JUMP 000006fd: JUMPDEST 000006fe: CALLVALUE 000006ff: DUP1 00000700: ISZERO 00000701: PUSH2 0x0709 00000704: JUMPI 00000705: PUSH1 0x00 00000707: DUP1 00000708: REVERT 00000709: JUMPDEST 0000070a: POP 0000070b: PUSH1 0xd1 0000070d: SLOAD 0000070e: PUSH2 0x02a8 00000711: SWAP1 00000712: PUSH1 0x01 00000714: PUSH1 0x01 00000716: PUSH1 0xa0 00000718: SHL 00000719: SUB 0000071a: AND 0000071b: DUP2 0000071c: JUMP 0000071d: JUMPDEST 0000071e: CALLVALUE 0000071f: DUP1 00000720: ISZERO 00000721: PUSH2 0x0729 00000724: JUMPI 00000725: PUSH1 0x00 00000727: DUP1 00000728: REVERT 00000729: JUMPDEST 0000072a: POP 0000072b: PUSH2 0x028c 0000072e: PUSH2 0x0738 00000731: CALLDATASIZE 00000732: PUSH1 0x04 00000734: PUSH2 0x3021 00000737: JUMP 00000738: JUMPDEST 00000739: PUSH2 0x1603 0000073c: JUMP 0000073d: JUMPDEST 0000073e: CALLVALUE 0000073f: DUP1 00000740: ISZERO 00000741: PUSH2 0x0749 00000744: JUMPI 00000745: PUSH1 0x00 00000747: DUP1 00000748: REVERT 00000749: JUMPDEST 0000074a: POP 0000074b: PUSH2 0x037b 0000074e: PUSH2 0x0758 00000751: CALLDATASIZE 00000752: PUSH1 0x04 00000754: PUSH2 0x2e77 00000757: JUMP 00000758: JUMPDEST 00000759: PUSH1 0xcd 0000075b: PUSH1 0x20 0000075d: SWAP1 0000075e: DUP2 0000075f: MSTORE 00000760: PUSH1 0x00 00000762: SWAP3 00000763: DUP4 00000764: MSTORE 00000765: PUSH1 0x40 00000767: DUP1 00000768: DUP5 00000769: KECCAK256 0000076a: SWAP1 0000076b: SWAP2 0000076c: MSTORE 0000076d: SWAP1 0000076e: DUP3 0000076f: MSTORE 00000770: SWAP1 00000771: KECCAK256 00000772: SLOAD 00000773: DUP2 00000774: JUMP 00000775: JUMPDEST 00000776: CALLVALUE 00000777: DUP1 00000778: ISZERO 00000779: PUSH2 0x0781 0000077c: JUMPI 0000077d: PUSH1 0x00 0000077f: DUP1 00000780: REVERT 00000781: JUMPDEST 00000782: POP 00000783: PUSH1 0xc9 00000785: SLOAD 00000786: PUSH2 0x02a8 00000789: SWAP1 0000078a: PUSH1 0x01 0000078c: PUSH1 0x01 0000078e: PUSH1 0xa0 00000790: SHL 00000791: SUB 00000792: AND 00000793: DUP2 00000794: JUMP 00000795: JUMPDEST 00000796: CALLVALUE 00000797: DUP1 00000798: ISZERO 00000799: PUSH2 0x07a1 0000079c: JUMPI 0000079d: PUSH1 0x00 0000079f: DUP1 000007a0: REVERT 000007a1: JUMPDEST 000007a2: POP 000007a3: PUSH2 0x037b 000007a6: PUSH2 0x07b0 000007a9: CALLDATASIZE 000007aa: PUSH1 0x04 000007ac: PUSH2 0x305c 000007af: JUMP 000007b0: JUMPDEST 000007b1: PUSH1 0xd5 000007b3: PUSH1 0x20 000007b5: SWAP1 000007b6: DUP2 000007b7: MSTORE 000007b8: PUSH1 0x00 000007ba: SWAP3 000007bb: DUP4 000007bc: MSTORE 000007bd: PUSH1 0x40 000007bf: DUP1 000007c0: DUP5 000007c1: KECCAK256 000007c2: SWAP1 000007c3: SWAP2 000007c4: MSTORE 000007c5: SWAP1 000007c6: DUP3 000007c7: MSTORE 000007c8: SWAP1 000007c9: KECCAK256 000007ca: SLOAD 000007cb: DUP2 000007cc: JUMP 000007cd: JUMPDEST 000007ce: CALLVALUE 000007cf: DUP1 000007d0: ISZERO 000007d1: PUSH2 0x07d9 000007d4: JUMPI 000007d5: PUSH1 0x00 000007d7: DUP1 000007d8: REVERT 000007d9: JUMPDEST 000007da: POP 000007db: PUSH2 0x028c 000007de: PUSH2 0x07e8 000007e1: CALLDATASIZE 000007e2: PUSH1 0x04 000007e4: PUSH2 0x2cd7 000007e7: JUMP 000007e8: JUMPDEST 000007e9: PUSH2 0x1805 000007ec: JUMP 000007ed: JUMPDEST 000007ee: CALLVALUE 000007ef: DUP1 000007f0: ISZERO 000007f1: PUSH2 0x07f9 000007f4: JUMPI 000007f5: PUSH1 0x00 000007f7: DUP1 000007f8: REVERT 000007f9: JUMPDEST 000007fa: POP 000007fb: PUSH2 0x028c 000007fe: PUSH2 0x0808 00000801: CALLDATASIZE 00000802: PUSH1 0x04 00000804: PUSH2 0x2bde 00000807: JUMP 00000808: JUMPDEST 00000809: PUSH2 0x1926 0000080c: JUMP 0000080d: JUMPDEST 0000080e: CALLVALUE 0000080f: DUP1 00000810: ISZERO 00000811: PUSH2 0x0819 00000814: JUMPI 00000815: PUSH1 0x00 00000817: DUP1 00000818: REVERT 00000819: JUMPDEST 0000081a: POP 0000081b: PUSH2 0x028c 0000081e: PUSH2 0x0828 00000821: CALLDATASIZE 00000822: PUSH1 0x04 00000824: PUSH2 0x3088 00000827: JUMP 00000828: JUMPDEST 00000829: PUSH2 0x1983 0000082c: JUMP 0000082d: JUMPDEST 0000082e: CALLVALUE 0000082f: DUP1 00000830: ISZERO 00000831: PUSH2 0x0839 00000834: JUMPI 00000835: PUSH1 0x00 00000837: DUP1 00000838: REVERT 00000839: JUMPDEST 0000083a: POP 0000083b: PUSH2 0x028c 0000083e: PUSH2 0x0848 00000841: CALLDATASIZE 00000842: PUSH1 0x04 00000844: PUSH2 0x3102 00000847: JUMP 00000848: JUMPDEST 00000849: PUSH2 0x1c15 0000084c: JUMP 0000084d: JUMPDEST 0000084e: CALLVALUE 0000084f: DUP1 00000850: ISZERO 00000851: PUSH2 0x0859 00000854: JUMPI 00000855: PUSH1 0x00 00000857: DUP1 00000858: REVERT 00000859: JUMPDEST 0000085a: POP 0000085b: PUSH2 0x028c 0000085e: PUSH2 0x0868 00000861: CALLDATASIZE 00000862: PUSH1 0x04 00000864: PUSH2 0x317e 00000867: JUMP 00000868: JUMPDEST 00000869: PUSH2 0x1db2 0000086c: JUMP 0000086d: JUMPDEST 0000086e: PUSH2 0x0875 00000871: PUSH2 0x1f0f 00000874: JUMP 00000875: JUMPDEST 00000876: PUSH1 0x98 00000878: SLOAD 00000879: PUSH1 0x01 0000087b: PUSH1 0x01 0000087d: PUSH1 0xa0 0000087f: SHL 00000880: SUB 00000881: SWAP1 00000882: DUP2 00000883: AND 00000884: SWAP1 00000885: DUP3 00000886: AND 00000887: SUB 00000888: PUSH2 0x08c0 0000088b: JUMPI 0000088c: PUSH1 0x98 0000088e: SLOAD 0000088f: PUSH1 0x40 00000891: MLOAD 00000892: PUSH4 0x0237ef61 00000897: PUSH1 0xe1 00000899: SHL 0000089a: DUP2 0000089b: MSTORE 0000089c: PUSH1 0x01 0000089e: PUSH1 0x01 000008a0: PUSH1 0xa0 000008a2: SHL 000008a3: SUB 000008a4: SWAP2 000008a5: DUP3 000008a6: AND 000008a7: PUSH1 0x04 000008a9: DUP3 000008aa: ADD 000008ab: MSTORE 000008ac: SWAP1 000008ad: DUP3 000008ae: AND 000008af: PUSH1 0x24 000008b1: DUP3 000008b2: ADD 000008b3: MSTORE 000008b4: PUSH1 0x44 000008b6: ADD 000008b7: JUMPDEST 000008b8: PUSH1 0x40 000008ba: MLOAD 000008bb: DUP1 000008bc: SWAP2 000008bd: SUB 000008be: SWAP1 000008bf: REVERT 000008c0: JUMPDEST 000008c1: PUSH2 0x08c9 000008c4: DUP2 000008c5: PUSH2 0x1f51 000008c8: JUMP 000008c9: JUMPDEST 000008ca: POP 000008cb: JUMP 000008cc: JUMPDEST 000008cd: PUSH2 0x08d4 000008d0: PUSH2 0x1f0f 000008d3: JUMP 000008d4: JUMPDEST 000008d5: PUSH2 0x2710 000008d8: DUP3 000008d9: GT 000008da: ISZERO 000008db: PUSH2 0x0936 000008de: JUMPI 000008df: PUSH1 0x40 000008e1: MLOAD 000008e2: PUSH4 0x0c6a14bb 000008e7: PUSH1 0xe1 000008e9: SHL 000008ea: DUP2 000008eb: MSTORE 000008ec: PUSH1 0x04 000008ee: DUP2 000008ef: ADD 000008f0: DUP4 000008f1: SWAP1 000008f2: MSTORE 000008f3: PUSH2 0x2710 000008f6: PUSH1 0x24 000008f8: DUP3 000008f9: ADD 000008fa: MSTORE 000008fb: PUSH1 0x60 000008fd: PUSH1 0x44 000008ff: DUP3 00000900: ADD 00000901: MSTORE 00000902: PUSH1 0x1a 00000904: PUSH1 0x64 00000906: DUP3 00000907: ADD 00000908: MSTORE 00000909: PUSH32 0x4272696467652070657263656e742065786365656473206d6178000000000000 0000092a: PUSH1 0x84 0000092c: DUP3 0000092d: ADD 0000092e: MSTORE 0000092f: PUSH1 0xa4 00000931: ADD 00000932: PUSH2 0x08b7 00000935: JUMP 00000936: JUMPDEST 00000937: PUSH2 0x2710 0000093a: DUP2 0000093b: GT 0000093c: ISZERO 0000093d: PUSH2 0x0998 00000940: JUMPI 00000941: PUSH1 0x40 00000943: MLOAD 00000944: PUSH4 0x45fe0c27 00000949: PUSH1 0xe1 0000094b: SHL 0000094c: DUP2 0000094d: MSTORE 0000094e: PUSH1 0x04 00000950: DUP2 00000951: ADD 00000952: DUP3 00000953: SWAP1 00000954: MSTORE 00000955: PUSH2 0x2710 00000958: PUSH1 0x24 0000095a: DUP3 0000095b: ADD 0000095c: MSTORE 0000095d: PUSH1 0x60 0000095f: PUSH1 0x44 00000961: DUP3 00000962: ADD 00000963: MSTORE 00000964: PUSH1 0x1a 00000966: PUSH1 0x64 00000968: DUP3 00000969: ADD 0000096a: MSTORE 0000096b: PUSH32 0x537570706c792070657263656e742065786365656473206d6178000000000000 0000098c: PUSH1 0x84 0000098e: DUP3 0000098f: ADD 00000990: MSTORE 00000991: PUSH1 0xa4 00000993: ADD 00000994: PUSH2 0x08b7 00000997: JUMP 00000998: JUMPDEST 00000999: PUSH1 0xd7 0000099b: DUP3 0000099c: SWAP1 0000099d: SSTORE 0000099e: PUSH1 0xd8 000009a0: DUP2 000009a1: SWAP1 000009a2: SSTORE 000009a3: PUSH1 0x40 000009a5: DUP1 000009a6: MLOAD 000009a7: DUP4 000009a8: DUP2 000009a9: MSTORE 000009aa: PUSH1 0x20 000009ac: DUP2 000009ad: ADD 000009ae: DUP4 000009af: SWAP1 000009b0: MSTORE 000009b1: PUSH32 0x87ec0345192ee00e871b0aa8c85041fb508295846f1b114f2ad28550d85a54a4 000009d2: SWAP2 000009d3: ADD 000009d4: JUMPDEST 000009d5: PUSH1 0x40 000009d7: MLOAD 000009d8: DUP1 000009d9: SWAP2 000009da: SUB 000009db: SWAP1 000009dc: LOG1 000009dd: POP 000009de: POP 000009df: JUMP 000009e0: JUMPDEST 000009e1: PUSH2 0x09e8 000009e4: PUSH2 0x2017 000009e7: JUMP 000009e8: JUMPDEST 000009e9: PUSH2 0x09f0 000009ec: PUSH2 0x2070 000009ef: JUMP 000009f0: JUMPDEST 000009f1: DUP5 000009f2: PUSH2 0x09fa 000009f5: DUP2 000009f6: PUSH2 0x20b6 000009f9: JUMP 000009fa: JUMPDEST 000009fb: DUP4 000009fc: PUSH2 0x0a04 000009ff: DUP2 00000a00: PUSH2 0x214b 00000a03: JUMP 00000a04: JUMPDEST 00000a05: DUP7 00000a06: PUSH2 0x0a0e 00000a09: DUP2 00000a0a: PUSH2 0x2175 00000a0d: JUMP 00000a0e: JUMPDEST 00000a0f: PUSH2 0x0af2 00000a12: CALLER 00000a13: DUP10 00000a14: DUP10 00000a15: PUSH1 0xc9 00000a17: PUSH1 0x00 00000a19: SWAP1 00000a1a: SLOAD 00000a1b: SWAP1 00000a1c: PUSH2 0x0100 00000a1f: EXP 00000a20: SWAP1 00000a21: DIV 00000a22: PUSH1 0x01 00000a24: PUSH1 0x01 00000a26: PUSH1 0xa0 00000a28: SHL 00000a29: SUB 00000a2a: AND 00000a2b: PUSH1 0x01 00000a2d: PUSH1 0x01 00000a2f: PUSH1 0xa0 00000a31: SHL 00000a32: SUB 00000a33: AND 00000a34: PUSH4 0x1edb51ad 00000a39: PUSH1 0x40 00000a3b: MLOAD 00000a3c: DUP2 00000a3d: PUSH4 0xffffffff 00000a42: AND 00000a43: PUSH1 0xe0 00000a45: SHL 00000a46: DUP2 00000a47: MSTORE 00000a48: PUSH1 0x04 00000a4a: ADD 00000a4b: PUSH1 0x20 00000a4d: PUSH1 0x40 00000a4f: MLOAD 00000a50: DUP1 00000a51: DUP4 00000a52: SUB 00000a53: DUP2 00000a54: DUP7 00000a55: GAS 00000a56: STATICCALL 00000a57: ISZERO 00000a58: DUP1 00000a59: ISZERO 00000a5a: PUSH2 0x0a67 00000a5d: JUMPI 00000a5e: RETURNDATASIZE 00000a5f: PUSH1 0x00 00000a61: DUP1 00000a62: RETURNDATACOPY 00000a63: RETURNDATASIZE 00000a64: PUSH1 0x00 00000a66: REVERT 00000a67: JUMPDEST 00000a68: POP 00000a69: POP 00000a6a: POP 00000a6b: POP 00000a6c: PUSH1 0x40 00000a6e: MLOAD 00000a6f: RETURNDATASIZE 00000a70: PUSH1 0x1f 00000a72: NOT 00000a73: PUSH1 0x1f 00000a75: DUP3 00000a76: ADD 00000a77: AND 00000a78: DUP3 00000a79: ADD 00000a7a: DUP1 00000a7b: PUSH1 0x40 00000a7d: MSTORE 00000a7e: POP 00000a7f: DUP2 00000a80: ADD 00000a81: SWAP1 00000a82: PUSH2 0x0a8b 00000a85: SWAP2 00000a86: SWAP1 00000a87: PUSH2 0x31be 00000a8a: JUMP 00000a8b: JUMPDEST 00000a8c: DUP11 00000a8d: PUSH1 0x40 00000a8f: MLOAD 00000a90: PUSH1 0x20 00000a92: ADD 00000a93: PUSH2 0x0aa0 00000a96: SWAP6 00000a97: SWAP5 00000a98: SWAP4 00000a99: SWAP3 00000a9a: SWAP2 00000a9b: SWAP1 00000a9c: PUSH2 0x31d7 00000a9f: JUMP 00000aa0: JUMPDEST 00000aa1: PUSH1 0x40 00000aa3: MLOAD 00000aa4: PUSH1 0x20 00000aa6: DUP2 00000aa7: DUP4 00000aa8: SUB 00000aa9: SUB 00000aaa: DUP2 00000aab: MSTORE 00000aac: SWAP1 00000aad: PUSH1 0x40 00000aaf: MSTORE 00000ab0: DUP1 00000ab1: MLOAD 00000ab2: SWAP1 00000ab3: PUSH1 0x20 00000ab5: ADD 00000ab6: KECCAK256 00000ab7: DUP7 00000ab8: DUP7 00000ab9: DUP1 00000aba: DUP1 00000abb: PUSH1 0x1f 00000abd: ADD 00000abe: PUSH1 0x20 00000ac0: DUP1 00000ac1: SWAP2 00000ac2: DIV 00000ac3: MUL 00000ac4: PUSH1 0x20 00000ac6: ADD 00000ac7: PUSH1 0x40 00000ac9: MLOAD 00000aca: SWAP1 00000acb: DUP2 00000acc: ADD 00000acd: PUSH1 0x40 00000acf: MSTORE 00000ad0: DUP1 00000ad1: SWAP4 00000ad2: SWAP3 00000ad3: SWAP2 00000ad4: SWAP1 00000ad5: DUP2 00000ad6: DUP2 00000ad7: MSTORE 00000ad8: PUSH1 0x20 00000ada: ADD 00000adb: DUP4 00000adc: DUP4 00000add: DUP1 00000ade: DUP3 00000adf: DUP5 00000ae0: CALLDATACOPY 00000ae1: PUSH1 0x00 00000ae3: SWAP3 00000ae4: ADD 00000ae5: SWAP2 00000ae6: SWAP1 00000ae7: SWAP2 00000ae8: MSTORE 00000ae9: POP 00000aea: PUSH2 0x220b 00000aed: SWAP3 00000aee: POP 00000aef: POP 00000af0: POP 00000af1: JUMP 00000af2: JUMPDEST 00000af3: CALLER 00000af4: PUSH1 0x00 00000af6: SWAP1 00000af7: DUP2 00000af8: MSTORE 00000af9: PUSH1 0xcb 00000afb: PUSH1 0x20 00000afd: SWAP1 00000afe: DUP2 00000aff: MSTORE 00000b00: PUSH1 0x40 00000b02: DUP1 00000b03: DUP4 00000b04: KECCAK256 00000b05: PUSH1 0x01 00000b07: PUSH1 0x01 00000b09: PUSH1 0xa0 00000b0b: SHL 00000b0c: SUB 00000b0d: DUP13 00000b0e: AND 00000b0f: DUP5 00000b10: MSTORE 00000b11: SWAP1 00000b12: SWAP2 00000b13: MSTORE 00000b14: DUP2 00000b15: KECCAK256 00000b16: DUP1 00000b17: SLOAD 00000b18: DUP10 00000b19: SWAP3 00000b1a: SWAP1 00000b1b: PUSH2 0x0b25 00000b1e: SWAP1 00000b1f: DUP5 00000b20: SWAP1 00000b21: PUSH2 0x3228 00000b24: JUMP 00000b25: JUMPDEST 00000b26: SWAP1 00000b27: SWAP2 00000b28: SSTORE 00000b29: POP 00000b2a: POP 00000b2b: PUSH1 0x01 00000b2d: PUSH1 0x01 00000b2f: PUSH1 0xa0 00000b31: SHL 00000b32: SUB 00000b33: DUP9 00000b34: AND 00000b35: PUSH1 0x00 00000b37: SWAP1 00000b38: DUP2 00000b39: MSTORE 00000b3a: PUSH1 0xcc 00000b3c: PUSH1 0x20 00000b3e: MSTORE 00000b3f: PUSH1 0x40 00000b41: DUP2 00000b42: KECCAK256 00000b43: DUP1 00000b44: SLOAD 00000b45: DUP10 00000b46: SWAP3 00000b47: SWAP1 00000b48: PUSH2 0x0b52 00000b4b: SWAP1 00000b4c: DUP5 00000b4d: SWAP1 00000b4e: PUSH2 0x3228 00000b51: JUMP 00000b52: JUMPDEST 00000b53: SWAP1 00000b54: SWAP2 00000b55: SSTORE 00000b56: POP 00000b57: PUSH2 0x0b6d 00000b5a: SWAP1 00000b5b: POP 00000b5c: PUSH1 0x01 00000b5e: PUSH1 0x01 00000b60: PUSH1 0xa0 00000b62: SHL 00000b63: SUB 00000b64: DUP10 00000b65: AND 00000b66: CALLER 00000b67: ADDRESS 00000b68: DUP11 00000b69: PUSH2 0x22ef 00000b6c: JUMP 00000b6d: JUMPDEST 00000b6e: PUSH1 0x40 00000b70: MLOAD 00000b71: DUP8 00000b72: DUP2 00000b73: MSTORE 00000b74: PUSH1 0x01 00000b76: PUSH1 0x01 00000b78: PUSH1 0xa0 00000b7a: SHL 00000b7b: SUB 00000b7c: DUP10 00000b7d: AND 00000b7e: SWAP1 00000b7f: CALLER 00000b80: SWAP1 00000b81: PUSH32 0x3bda13fe73033028c14ba107ef2ddc3a09abeb2ea7cac294113857d856c96b3b 00000ba2: SWAP1 00000ba3: PUSH1 0x20 00000ba5: ADD 00000ba6: PUSH1 0x40 00000ba8: MLOAD 00000ba9: DUP1 00000baa: SWAP2 00000bab: SUB 00000bac: SWAP1 00000bad: LOG3 00000bae: POP 00000baf: POP 00000bb0: POP 00000bb1: PUSH2 0x0bba 00000bb4: PUSH1 0x01 00000bb6: PUSH1 0x65 00000bb8: SSTORE 00000bb9: JUMP 00000bba: JUMPDEST 00000bbb: POP 00000bbc: POP 00000bbd: POP 00000bbe: POP 00000bbf: POP 00000bc0: JUMP 00000bc1: JUMPDEST 00000bc2: PUSH2 0x0bc9 00000bc5: PUSH2 0x1f0f 00000bc8: JUMP 00000bc9: JUMPDEST 00000bca: PUSH2 0x0bd1 00000bcd: PUSH2 0x2017 00000bd0: JUMP 00000bd1: JUMPDEST 00000bd2: PUSH2 0x0be7 00000bd5: DUP2 00000bd6: DUP5 00000bd7: DUP5 00000bd8: PUSH1 0x01 00000bda: PUSH1 0x01 00000bdc: PUSH1 0xa0 00000bde: SHL 00000bdf: SUB 00000be0: DUP3 00000be1: AND 00000be2: ISZERO 00000be3: PUSH2 0x2361 00000be6: JUMP 00000be7: JUMPDEST 00000be8: DUP3 00000be9: PUSH1 0x01 00000beb: PUSH1 0x01 00000bed: PUSH1 0xa0 00000bef: SHL 00000bf0: SUB 00000bf1: AND 00000bf2: DUP2 00000bf3: PUSH1 0x01 00000bf5: PUSH1 0x01 00000bf7: PUSH1 0xa0 00000bf9: SHL 00000bfa: SUB 00000bfb: AND 00000bfc: PUSH32 0xa922bc33914bd31b27595f621e02fefe0cce42e852ef76299a0a618efa9c6e5b 00000c1d: DUP5 00000c1e: PUSH1 0x40 00000c20: MLOAD 00000c21: PUSH2 0x0c2c 00000c24: SWAP2 00000c25: DUP2 00000c26: MSTORE 00000c27: PUSH1 0x20 00000c29: ADD 00000c2a: SWAP1 00000c2b: JUMP 00000c2c: JUMPDEST 00000c2d: PUSH1 0x40 00000c2f: MLOAD 00000c30: DUP1 00000c31: SWAP2 00000c32: SUB 00000c33: SWAP1 00000c34: LOG3 00000c35: PUSH2 0x0c3e 00000c38: PUSH1 0x01 00000c3a: PUSH1 0x65 00000c3c: SSTORE 00000c3d: JUMP 00000c3e: JUMPDEST 00000c3f: POP 00000c40: POP 00000c41: POP 00000c42: JUMP 00000c43: JUMPDEST 00000c44: PUSH2 0x0c4b 00000c47: PUSH2 0x2434 00000c4a: JUMP 00000c4b: JUMPDEST 00000c4c: PUSH2 0x0c53 00000c4f: PUSH2 0x2017 00000c52: JUMP 00000c53: JUMPDEST 00000c54: DUP1 00000c55: PUSH1 0x00 00000c57: JUMPDEST 00000c58: DUP2 00000c59: DUP2 00000c5a: LT 00000c5b: ISZERO 00000c5c: PUSH2 0x0cff 00000c5f: JUMPI 00000c60: PUSH1 0x00 00000c62: PUSH1 0xd2 00000c64: PUSH1 0x00 00000c66: DUP7 00000c67: DUP7 00000c68: DUP6 00000c69: DUP2 00000c6a: DUP2 00000c6b: LT 00000c6c: PUSH2 0x0c77 00000c6f: JUMPI 00000c70: PUSH2 0x0c77 00000c73: PUSH2 0x3241 00000c76: JUMP 00000c77: JUMPDEST 00000c78: SWAP1 00000c79: POP 00000c7a: PUSH1 0x20 00000c7c: MUL 00000c7d: ADD 00000c7e: PUSH1 0x20 00000c80: DUP2 00000c81: ADD 00000c82: SWAP1 00000c83: PUSH2 0x0c8c 00000c86: SWAP2 00000c87: SWAP1 00000c88: PUSH2 0x2bde 00000c8b: JUMP 00000c8c: JUMPDEST 00000c8d: PUSH1 0x01 00000c8f: PUSH1 0x01 00000c91: PUSH1 0xa0 00000c93: SHL 00000c94: SUB 00000c95: AND 00000c96: PUSH1 0x01 00000c98: PUSH1 0x01 00000c9a: PUSH1 0xa0 00000c9c: SHL 00000c9d: SUB 00000c9e: AND 00000c9f: DUP2 00000ca0: MSTORE 00000ca1: PUSH1 0x20 00000ca3: ADD 00000ca4: SWAP1 00000ca5: DUP2 00000ca6: MSTORE 00000ca7: PUSH1 0x20 00000ca9: ADD 00000caa: PUSH1 0x00 00000cac: KECCAK256 00000cad: DUP2 00000cae: SWAP1 00000caf: SSTORE 00000cb0: POP 00000cb1: PUSH1 0x00 00000cb3: PUSH1 0xd3 00000cb5: PUSH1 0x00 00000cb7: DUP7 00000cb8: DUP7 00000cb9: DUP6 00000cba: DUP2 00000cbb: DUP2 00000cbc: LT 00000cbd: PUSH2 0x0cc8 00000cc0: JUMPI 00000cc1: PUSH2 0x0cc8 00000cc4: PUSH2 0x3241 00000cc7: JUMP 00000cc8: JUMPDEST 00000cc9: SWAP1 00000cca: POP 00000ccb: PUSH1 0x20 00000ccd: MUL 00000cce: ADD 00000ccf: PUSH1 0x20 00000cd1: DUP2 00000cd2: ADD 00000cd3: SWAP1 00000cd4: PUSH2 0x0cdd 00000cd7: SWAP2 00000cd8: SWAP1 00000cd9: PUSH2 0x2bde 00000cdc: JUMP 00000cdd: JUMPDEST 00000cde: PUSH1 0x01 00000ce0: PUSH1 0x01 00000ce2: PUSH1 0xa0 00000ce4: SHL 00000ce5: SUB 00000ce6: AND 00000ce7: DUP2 00000ce8: MSTORE 00000ce9: PUSH1 0x20 00000ceb: DUP2 00000cec: ADD 00000ced: SWAP2 00000cee: SWAP1 00000cef: SWAP2 00000cf0: MSTORE 00000cf1: PUSH1 0x40 00000cf3: ADD 00000cf4: PUSH1 0x00 00000cf6: KECCAK256 00000cf7: SSTORE 00000cf8: PUSH1 0x01 00000cfa: ADD 00000cfb: PUSH2 0x0c57 00000cfe: JUMP 00000cff: JUMPDEST 00000d00: POP 00000d01: POP 00000d02: PUSH2 0x0d0b 00000d05: PUSH1 0x01 00000d07: PUSH1 0x65 00000d09: SSTORE 00000d0a: JUMP 00000d0b: JUMPDEST 00000d0c: POP 00000d0d: POP 00000d0e: JUMP 00000d0f: JUMPDEST 00000d10: PUSH2 0x0d17 00000d13: PUSH2 0x2434 00000d16: JUMP 00000d17: JUMPDEST 00000d18: PUSH2 0x0d1f 00000d1b: PUSH2 0x24d8 00000d1e: JUMP 00000d1f: JUMPDEST 00000d20: PUSH1 0x40 00000d22: MLOAD 00000d23: PUSH32 0x4051e961c454332acc3bfc1fd8b56b6089a599327eb5c8dd6d693d38551cd323 00000d44: SWAP1 00000d45: PUSH1 0x00 00000d47: SWAP1 00000d48: LOG1 00000d49: JUMP 00000d4a: JUMPDEST 00000d4b: PUSH2 0x0d52 00000d4e: PUSH2 0x2070 00000d51: JUMP 00000d52: JUMPDEST 00000d53: PUSH2 0x0d5a 00000d56: PUSH2 0x2532 00000d59: JUMP 00000d5a: JUMPDEST 00000d5b: PUSH2 0x0d62 00000d5e: PUSH2 0x2017 00000d61: JUMP 00000d62: JUMPDEST 00000d63: PUSH2 0x0d6e 00000d66: DUP3 00000d67: DUP6 00000d68: DUP6 00000d69: DUP5 00000d6a: PUSH2 0x2361 00000d6d: JUMP 00000d6e: JUMPDEST 00000d6f: PUSH2 0x0d78 00000d72: PUSH1 0x01 00000d74: PUSH1 0x65 00000d76: SSTORE 00000d77: JUMP 00000d78: JUMPDEST 00000d79: POP 00000d7a: POP 00000d7b: POP 00000d7c: POP 00000d7d: JUMP 00000d7e: JUMPDEST 00000d7f: PUSH2 0x0d86 00000d82: PUSH2 0x1f0f 00000d85: JUMP 00000d86: JUMPDEST 00000d87: PUSH1 0x97 00000d89: SLOAD 00000d8a: PUSH1 0x01 00000d8c: PUSH1 0x01 00000d8e: PUSH1 0xa0 00000d90: SHL 00000d91: SUB 00000d92: SWAP1 00000d93: DUP2 00000d94: AND 00000d95: SWAP1 00000d96: DUP3 00000d97: AND 00000d98: SUB 00000d99: PUSH2 0x0dcc 00000d9c: JUMPI 00000d9d: PUSH1 0x97 00000d9f: SLOAD 00000da0: PUSH1 0x40 00000da2: MLOAD 00000da3: PUSH4 0x0237ef61 00000da8: PUSH1 0xe1 00000daa: SHL 00000dab: DUP2 00000dac: MSTORE 00000dad: PUSH1 0x01 00000daf: PUSH1 0x01 00000db1: PUSH1 0xa0 00000db3: SHL 00000db4: SUB 00000db5: SWAP2 00000db6: DUP3 00000db7: AND 00000db8: PUSH1 0x04 00000dba: DUP3 00000dbb: ADD 00000dbc: MSTORE 00000dbd: SWAP1 00000dbe: DUP3 00000dbf: AND 00000dc0: PUSH1 0x24 00000dc2: DUP3 00000dc3: ADD 00000dc4: MSTORE 00000dc5: PUSH1 0x44 00000dc7: ADD 00000dc8: PUSH2 0x08b7 00000dcb: JUMP 00000dcc: JUMPDEST 00000dcd: PUSH2 0x08c9 00000dd0: DUP2 00000dd1: PUSH2 0x259c 00000dd4: JUMP 00000dd5: JUMPDEST 00000dd6: PUSH2 0x0ddd 00000dd9: PUSH2 0x1f0f 00000ddc: JUMP 00000ddd: JUMPDEST 00000dde: PUSH2 0x0de5 00000de1: PUSH2 0x264e 00000de4: JUMP 00000de5: JUMPDEST 00000de6: PUSH1 0x40 00000de8: MLOAD 00000de9: PUSH32 0x2d12867222d81b22cc368d426643f6e5a96986c24cc39ce8504ed58e2660df51 00000e0a: SWAP1 00000e0b: PUSH1 0x00 00000e0d: SWAP1 00000e0e: LOG1 00000e0f: JUMP 00000e10: JUMPDEST 00000e11: PUSH2 0x0e18 00000e14: PUSH2 0x2434 00000e17: JUMP 00000e18: JUMPDEST 00000e19: PUSH2 0x0e20 00000e1c: PUSH2 0x2070 00000e1f: JUMP 00000e20: JUMPDEST 00000e21: PUSH1 0x01 00000e23: PUSH1 0x01 00000e25: PUSH1 0xa0 00000e27: SHL 00000e28: SUB 00000e29: DUP1 00000e2a: DUP5 00000e2b: AND 00000e2c: PUSH1 0x00 00000e2e: SWAP1 00000e2f: DUP2 00000e30: MSTORE 00000e31: PUSH1 0xcb 00000e33: PUSH1 0x20 00000e35: SWAP1 00000e36: DUP2 00000e37: MSTORE 00000e38: PUSH1 0x40 00000e3a: DUP1 00000e3b: DUP4 00000e3c: KECCAK256 00000e3d: SWAP4 00000e3e: DUP7 00000e3f: AND 00000e40: DUP4 00000e41: MSTORE 00000e42: SWAP3 00000e43: SWAP1 00000e44: MSTORE 00000e45: SWAP1 00000e46: DUP2 00000e47: KECCAK256 00000e48: DUP1 00000e49: SLOAD 00000e4a: DUP4 00000e4b: SWAP3 00000e4c: SWAP1 00000e4d: PUSH2 0x0e57 00000e50: SWAP1 00000e51: DUP5 00000e52: SWAP1 00000e53: PUSH2 0x3228 00000e56: JUMP 00000e57: JUMPDEST 00000e58: SWAP1 00000e59: SWAP2 00000e5a: SSTORE 00000e5b: POP 00000e5c: POP 00000e5d: PUSH1 0x01 00000e5f: PUSH1 0x01 00000e61: PUSH1 0xa0 00000e63: SHL 00000e64: SUB 00000e65: DUP3 00000e66: AND 00000e67: PUSH1 0x00 00000e69: SWAP1 00000e6a: DUP2 00000e6b: MSTORE 00000e6c: PUSH1 0xcc 00000e6e: PUSH1 0x20 00000e70: MSTORE 00000e71: PUSH1 0x40 00000e73: DUP2 00000e74: KECCAK256 00000e75: DUP1 00000e76: SLOAD 00000e77: DUP4 00000e78: SWAP3 00000e79: SWAP1 00000e7a: PUSH2 0x0e84 00000e7d: SWAP1 00000e7e: DUP5 00000e7f: SWAP1 00000e80: PUSH2 0x3228 00000e83: JUMP 00000e84: JUMPDEST 00000e85: SWAP3 00000e86: POP 00000e87: POP 00000e88: DUP2 00000e89: SWAP1 00000e8a: SSTORE 00000e8b: POP 00000e8c: DUP3 00000e8d: PUSH1 0x01 00000e8f: PUSH1 0x01 00000e91: PUSH1 0xa0 00000e93: SHL 00000e94: SUB 00000e95: AND 00000e96: DUP3 00000e97: PUSH1 0x01 00000e99: PUSH1 0x01 00000e9b: PUSH1 0xa0 00000e9d: SHL 00000e9e: SUB 00000e9f: AND 00000ea0: PUSH32 0xe085944a5ddfe0e68127edbf665e03ec5be397243129f6555232ed553e951cb1 00000ec1: DUP4 00000ec2: PUSH1 0x40 00000ec4: MLOAD 00000ec5: PUSH2 0x0ed0 00000ec8: SWAP2 00000ec9: DUP2 00000eca: MSTORE 00000ecb: PUSH1 0x20 00000ecd: ADD 00000ece: SWAP1 00000ecf: JUMP 00000ed0: JUMPDEST 00000ed1: PUSH1 0x40 00000ed3: MLOAD 00000ed4: DUP1 00000ed5: SWAP2 00000ed6: SUB 00000ed7: SWAP1 00000ed8: LOG3 00000ed9: POP 00000eda: POP 00000edb: POP 00000edc: JUMP 00000edd: JUMPDEST 00000ede: PUSH2 0x0ee5 00000ee1: PUSH2 0x1f0f 00000ee4: JUMP 00000ee5: JUMPDEST 00000ee6: DUP1 00000ee7: PUSH2 0x0eef 00000eea: DUP2 00000eeb: PUSH2 0x2687 00000eee: JUMP 00000eef: JUMPDEST 00000ef0: PUSH1 0xc9 00000ef2: DUP1 00000ef3: SLOAD 00000ef4: PUSH1 0x01 00000ef6: PUSH1 0x01 00000ef8: PUSH1 0xa0 00000efa: SHL 00000efb: SUB 00000efc: NOT 00000efd: AND 00000efe: PUSH1 0x01 00000f00: PUSH1 0x01 00000f02: PUSH1 0xa0 00000f04: SHL 00000f05: SUB 00000f06: DUP5 00000f07: AND 00000f08: SWAP1 00000f09: DUP2 00000f0a: OR 00000f0b: SWAP1 00000f0c: SWAP2 00000f0d: SSTORE 00000f0e: PUSH1 0x40 00000f10: MLOAD 00000f11: PUSH32 0xa49730bff544fd0b716395c592e39c6fd2d2481a19b9229b5b240483db95a495 00000f32: SWAP1 00000f33: PUSH1 0x00 00000f35: SWAP1 00000f36: LOG2 00000f37: POP 00000f38: POP 00000f39: JUMP 00000f3a: JUMPDEST 00000f3b: DUP1 00000f3c: PUSH2 0x0f44 00000f3f: DUP2 00000f40: PUSH2 0x2687 00000f43: JUMP 00000f44: JUMPDEST 00000f45: PUSH2 0x0f4c 00000f48: PUSH2 0x1f0f 00000f4b: JUMP 00000f4c: JUMPDEST 00000f4d: PUSH1 0xd1 00000f4f: DUP1 00000f50: SLOAD 00000f51: PUSH1 0x01 00000f53: PUSH1 0x01 00000f55: PUSH1 0xa0 00000f57: SHL 00000f58: SUB 00000f59: NOT 00000f5a: AND 00000f5b: PUSH1 0x01 00000f5d: PUSH1 0x01 00000f5f: PUSH1 0xa0 00000f61: SHL 00000f62: SUB 00000f63: DUP5 00000f64: AND 00000f65: SWAP1 00000f66: DUP2 00000f67: OR 00000f68: SWAP1 00000f69: SWAP2 00000f6a: SSTORE 00000f6b: PUSH1 0x40 00000f6d: MLOAD 00000f6e: SWAP1 00000f6f: DUP2 00000f70: MSTORE 00000f71: PUSH32 0x1f0da97238b22add14994904c13e93a9ba4fdb2020955e639c43e03bb262cbce 00000f92: SWAP1 00000f93: PUSH1 0x20 00000f95: ADD 00000f96: PUSH2 0x09d4 00000f99: JUMP 00000f9a: JUMPDEST 00000f9b: PUSH2 0x0fa2 00000f9e: PUSH2 0x2532 00000fa1: JUMP 00000fa2: JUMPDEST 00000fa3: PUSH2 0x0faa 00000fa6: PUSH2 0x2017 00000fa9: JUMP 00000faa: JUMPDEST 00000fab: PUSH1 0x00 00000fad: DUP2 00000fae: DUP2 00000faf: MSTORE 00000fb0: PUSH1 0xd4 00000fb2: PUSH1 0x20 00000fb4: MSTORE 00000fb5: PUSH1 0x40 00000fb7: SWAP1 00000fb8: KECCAK256 00000fb9: SLOAD 00000fba: PUSH1 0xff 00000fbc: AND 00000fbd: ISZERO 00000fbe: PUSH2 0x0fec 00000fc1: JUMPI 00000fc2: PUSH1 0x40 00000fc4: MLOAD 00000fc5: PUSH4 0x18bb936b 00000fca: PUSH1 0xe3 00000fcc: SHL 00000fcd: DUP2 00000fce: MSTORE 00000fcf: PUSH1 0x04 00000fd1: DUP2 00000fd2: ADD 00000fd3: DUP3 00000fd4: SWAP1 00000fd5: MSTORE 00000fd6: PUSH1 0x01 00000fd8: PUSH1 0x01 00000fda: PUSH1 0xa0 00000fdc: SHL 00000fdd: SUB 00000fde: DUP5 00000fdf: AND 00000fe0: PUSH1 0x24 00000fe2: DUP3 00000fe3: ADD 00000fe4: MSTORE 00000fe5: PUSH1 0x44 00000fe7: ADD 00000fe8: PUSH2 0x08b7 00000feb: JUMP 00000fec: JUMPDEST 00000fed: PUSH1 0x01 00000fef: PUSH1 0x01 00000ff1: PUSH1 0xa0 00000ff3: SHL 00000ff4: SUB 00000ff5: DUP4 00000ff6: AND 00000ff7: PUSH1 0x00 00000ff9: SWAP1 00000ffa: DUP2 00000ffb: MSTORE 00000ffc: PUSH1 0xd3 00000ffe: PUSH1 0x20 00001000: MSTORE 00001001: PUSH1 0x40 00001003: DUP2 00001004: KECCAK256 00001005: DUP1 00001006: SLOAD 00001007: DUP5 00001008: SWAP3 00001009: SWAP1 0000100a: PUSH2 0x1014 0000100d: SWAP1 0000100e: DUP5 0000100f: SWAP1 00001010: PUSH2 0x3228 00001013: JUMP 00001014: JUMPDEST 00001015: SWAP1 00001016: SWAP2 00001017: SSTORE 00001018: POP 00001019: POP 0000101a: PUSH1 0x01 0000101c: PUSH1 0x01 0000101e: PUSH1 0xa0 00001020: SHL 00001021: SUB 00001022: DUP4 00001023: AND 00001024: PUSH1 0x00 00001026: SWAP1 00001027: DUP2 00001028: MSTORE 00001029: PUSH1 0xcf 0000102b: PUSH1 0x20 0000102d: MSTORE 0000102e: PUSH1 0x40 00001030: SWAP1 00001031: KECCAK256 00001032: SLOAD 00001033: PUSH1 0xff 00001035: AND 00001036: ISZERO 00001037: PUSH2 0x1054 0000103a: JUMPI 0000103b: PUSH1 0x00 0000103d: DUP2 0000103e: DUP2 0000103f: MSTORE 00001040: PUSH1 0xd4 00001042: PUSH1 0x20 00001044: MSTORE 00001045: PUSH1 0x40 00001047: SWAP1 00001048: KECCAK256 00001049: DUP1 0000104a: SLOAD 0000104b: PUSH1 0xff 0000104d: NOT 0000104e: AND 0000104f: PUSH1 0x01 00001051: OR 00001052: SWAP1 00001053: SSTORE 00001054: JUMPDEST 00001055: DUP1 00001056: DUP4 00001057: PUSH1 0x01 00001059: PUSH1 0x01 0000105b: PUSH1 0xa0 0000105d: SHL 0000105e: SUB 0000105f: AND 00001060: PUSH32 0xddf3797a38d53ed43ea0839f8db9db1109d5d86994ebe78cc33a039fa5f8749b 00001081: DUP5 00001082: PUSH1 0x40 00001084: MLOAD 00001085: PUSH2 0x0c2c 00001088: SWAP2 00001089: DUP2 0000108a: MSTORE 0000108b: PUSH1 0x20 0000108d: ADD 0000108e: SWAP1 0000108f: JUMP 00001090: JUMPDEST 00001091: PUSH1 0x01 00001093: PUSH1 0x01 00001095: PUSH1 0xa0 00001097: SHL 00001098: SUB 00001099: DUP2 0000109a: AND 0000109b: PUSH1 0x00 0000109d: DUP2 0000109e: DUP2 0000109f: MSTORE 000010a0: PUSH1 0xd2 000010a2: PUSH1 0x20 000010a4: MSTORE 000010a5: PUSH1 0x40 000010a7: DUP1 000010a8: DUP3 000010a9: KECCAK256 000010aa: SLOAD 000010ab: PUSH1 0xd7 000010ad: SLOAD 000010ae: SWAP2 000010af: MLOAD 000010b0: PUSH4 0x70a08231 000010b5: PUSH1 0xe0 000010b7: SHL 000010b8: DUP2 000010b9: MSTORE 000010ba: ADDRESS 000010bb: PUSH1 0x04 000010bd: DUP3 000010be: ADD 000010bf: MSTORE 000010c0: SWAP3 000010c1: SWAP4 000010c2: SWAP1 000010c3: SWAP3 000010c4: DUP5 000010c5: SWAP3 000010c6: DUP5 000010c7: SWAP3 000010c8: PUSH2 0x2710 000010cb: SWAP3 000010cc: PUSH4 0x70a08231 000010d1: SWAP1 000010d2: PUSH1 0x24 000010d4: ADD 000010d5: PUSH1 0x20 000010d7: PUSH1 0x40 000010d9: MLOAD 000010da: DUP1 000010db: DUP4 000010dc: SUB 000010dd: DUP2 000010de: DUP7 000010df: GAS 000010e0: STATICCALL 000010e1: ISZERO 000010e2: DUP1 000010e3: ISZERO 000010e4: PUSH2 0x10f1 000010e7: JUMPI 000010e8: RETURNDATASIZE 000010e9: PUSH1 0x00 000010eb: DUP1 000010ec: RETURNDATACOPY 000010ed: RETURNDATASIZE 000010ee: PUSH1 0x00 000010f0: REVERT 000010f1: JUMPDEST 000010f2: POP 000010f3: POP 000010f4: POP 000010f5: POP 000010f6: PUSH1 0x40 000010f8: MLOAD 000010f9: RETURNDATASIZE 000010fa: PUSH1 0x1f 000010fc: NOT 000010fd: PUSH1 0x1f 000010ff: DUP3 00001100: ADD 00001101: AND 00001102: DUP3 00001103: ADD 00001104: DUP1 00001105: PUSH1 0x40 00001107: MSTORE 00001108: POP 00001109: DUP2 0000110a: ADD 0000110b: SWAP1 0000110c: PUSH2 0x1115 0000110f: SWAP2 00001110: SWAP1 00001111: PUSH2 0x31be 00001114: JUMP 00001115: JUMPDEST 00001116: PUSH2 0x111f 00001119: SWAP1 0000111a: DUP7 0000111b: PUSH2 0x3228 0000111e: JUMP 0000111f: JUMPDEST 00001120: PUSH2 0x1129 00001123: SWAP2 00001124: SWAP1 00001125: PUSH2 0x3257 00001128: JUMP 00001129: JUMPDEST 0000112a: PUSH2 0x1133 0000112d: SWAP2 0000112e: SWAP1 0000112f: PUSH2 0x326e 00001132: JUMP 00001133: JUMPDEST 00001134: PUSH2 0x113d 00001137: SWAP2 00001138: SWAP1 00001139: PUSH2 0x3290 0000113c: JUMP 0000113d: JUMPDEST 0000113e: SWAP1 0000113f: POP 00001140: PUSH1 0x00 00001142: DUP5 00001143: PUSH1 0x01 00001145: PUSH1 0x01 00001147: PUSH1 0xa0 00001149: SHL 0000114a: SUB 0000114b: AND 0000114c: PUSH4 0x18160ddd 00001151: PUSH1 0x40 00001153: MLOAD 00001154: DUP2 00001155: PUSH4 0xffffffff 0000115a: AND 0000115b: PUSH1 0xe0 0000115d: SHL 0000115e: DUP2 0000115f: MSTORE 00001160: PUSH1 0x04 00001162: ADD 00001163: PUSH1 0x20 00001165: PUSH1 0x40 00001167: MLOAD 00001168: DUP1 00001169: DUP4 0000116a: SUB 0000116b: DUP2 0000116c: DUP7 0000116d: GAS 0000116e: STATICCALL 0000116f: ISZERO 00001170: DUP1 00001171: ISZERO 00001172: PUSH2 0x117f 00001175: JUMPI 00001176: RETURNDATASIZE 00001177: PUSH1 0x00 00001179: DUP1 0000117a: RETURNDATACOPY 0000117b: RETURNDATASIZE 0000117c: PUSH1 0x00 0000117e: REVERT 0000117f: JUMPDEST 00001180: POP 00001181: POP 00001182: POP 00001183: POP 00001184: PUSH1 0x40 00001186: MLOAD 00001187: RETURNDATASIZE 00001188: PUSH1 0x1f 0000118a: NOT 0000118b: PUSH1 0x1f 0000118d: DUP3 0000118e: ADD 0000118f: AND 00001190: DUP3 00001191: ADD 00001192: DUP1 00001193: PUSH1 0x40 00001195: MSTORE 00001196: POP 00001197: DUP2 00001198: ADD 00001199: SWAP1 0000119a: PUSH2 0x11a3 0000119d: SWAP2 0000119e: SWAP1 0000119f: PUSH2 0x31be 000011a2: JUMP 000011a3: JUMPDEST 000011a4: SWAP1 000011a5: POP 000011a6: PUSH1 0x00 000011a8: DUP4 000011a9: PUSH2 0x2710 000011ac: PUSH1 0xd8 000011ae: SLOAD 000011af: DUP7 000011b0: DUP6 000011b1: PUSH2 0x11ba 000011b4: SWAP2 000011b5: SWAP1 000011b6: PUSH2 0x3290 000011b9: JUMP 000011ba: JUMPDEST 000011bb: PUSH2 0x11c4 000011be: SWAP2 000011bf: SWAP1 000011c0: PUSH2 0x3257 000011c3: JUMP 000011c4: JUMPDEST 000011c5: PUSH2 0x11ce 000011c8: SWAP2 000011c9: SWAP1 000011ca: PUSH2 0x326e 000011cd: JUMP 000011ce: JUMPDEST 000011cf: PUSH2 0x11d8 000011d2: SWAP2 000011d3: SWAP1 000011d4: PUSH2 0x3290 000011d7: JUMP 000011d8: JUMPDEST 000011d9: SWAP1 000011da: POP 000011db: DUP3 000011dc: DUP2 000011dd: GT 000011de: PUSH2 0x11e7 000011e1: JUMPI 000011e2: DUP1 000011e3: PUSH2 0x11e9 000011e6: JUMP 000011e7: JUMPDEST 000011e8: DUP3 000011e9: JUMPDEST 000011ea: SWAP7 000011eb: SWAP6 000011ec: POP 000011ed: POP 000011ee: POP 000011ef: POP 000011f0: POP 000011f1: POP 000011f2: JUMP 000011f3: JUMPDEST 000011f4: PUSH2 0x11fb 000011f7: PUSH2 0x2532 000011fa: JUMP 000011fb: JUMPDEST 000011fc: PUSH2 0x1203 000011ff: PUSH2 0x2070 00001202: JUMP 00001203: JUMPDEST 00001204: PUSH2 0x120b 00001207: PUSH2 0x2017 0000120a: JUMP 0000120b: JUMPDEST 0000120c: PUSH1 0x00 0000120e: DUP1 0000120f: JUMPDEST 00001210: DUP3 00001211: DUP2 00001212: LT 00001213: ISZERO 00001214: PUSH2 0x1387 00001217: JUMPI 00001218: PUSH1 0x00 0000121a: DUP5 0000121b: DUP5 0000121c: DUP4 0000121d: DUP2 0000121e: DUP2 0000121f: LT 00001220: PUSH2 0x122b 00001223: JUMPI 00001224: PUSH2 0x122b 00001227: PUSH2 0x3241 0000122a: JUMP 0000122b: JUMPDEST 0000122c: SWAP1 0000122d: POP 0000122e: PUSH1 0x20 00001230: MUL 00001231: ADD 00001232: CALLDATALOAD 00001233: SWAP1 00001234: POP 00001235: PUSH1 0x00 00001237: DUP8 00001238: DUP8 00001239: DUP5 0000123a: DUP2 0000123b: DUP2 0000123c: LT 0000123d: PUSH2 0x1248 00001240: JUMPI 00001241: PUSH2 0x1248 00001244: PUSH2 0x3241 00001247: JUMP 00001248: JUMPDEST 00001249: PUSH1 0x00 0000124b: DUP6 0000124c: DUP2 0000124d: MSTORE 0000124e: PUSH1 0xd4 00001250: PUSH1 0x20 00001252: SWAP1 00001253: DUP2 00001254: MSTORE 00001255: PUSH1 0x40 00001257: SWAP1 00001258: SWAP2 00001259: KECCAK256 0000125a: SLOAD 0000125b: SWAP2 0000125c: MUL 0000125d: SWAP3 0000125e: SWAP1 0000125f: SWAP3 00001260: ADD 00001261: CALLDATALOAD 00001262: SWAP3 00001263: POP 00001264: POP 00001265: PUSH1 0xff 00001267: AND 00001268: ISZERO 00001269: PUSH2 0x1297 0000126c: JUMPI 0000126d: PUSH1 0x40 0000126f: MLOAD 00001270: PUSH4 0x18bb936b 00001275: PUSH1 0xe3 00001277: SHL 00001278: DUP2 00001279: MSTORE 0000127a: PUSH1 0x04 0000127c: DUP2 0000127d: ADD 0000127e: DUP4 0000127f: SWAP1 00001280: MSTORE 00001281: PUSH1 0x01 00001283: PUSH1 0x01 00001285: PUSH1 0xa0 00001287: SHL 00001288: SUB 00001289: DUP11 0000128a: AND 0000128b: PUSH1 0x24 0000128d: DUP3 0000128e: ADD 0000128f: MSTORE 00001290: PUSH1 0x44 00001292: ADD 00001293: PUSH2 0x08b7 00001296: JUMP 00001297: JUMPDEST 00001298: PUSH1 0x01 0000129a: PUSH1 0x01 0000129c: PUSH1 0xa0 0000129e: SHL 0000129f: SUB 000012a0: DUP10 000012a1: AND 000012a2: PUSH1 0x00 000012a4: SWAP1 000012a5: DUP2 000012a6: MSTORE 000012a7: PUSH1 0xd5 000012a9: PUSH1 0x20 000012ab: SWAP1 000012ac: DUP2 000012ad: MSTORE 000012ae: PUSH1 0x40 000012b0: DUP1 000012b1: DUP4 000012b2: KECCAK256 000012b3: DUP6 000012b4: DUP5 000012b5: MSTORE 000012b6: SWAP1 000012b7: SWAP2 000012b8: MSTORE 000012b9: SWAP1 000012ba: KECCAK256 000012bb: SLOAD 000012bc: DUP2 000012bd: EQ 000012be: PUSH2 0x1319 000012c1: JUMPI 000012c2: PUSH1 0x01 000012c4: PUSH1 0x01 000012c6: PUSH1 0xa0 000012c8: SHL 000012c9: SUB 000012ca: DUP10 000012cb: AND 000012cc: PUSH1 0x00 000012ce: DUP2 000012cf: DUP2 000012d0: MSTORE 000012d1: PUSH1 0xd5 000012d3: PUSH1 0x20 000012d5: SWAP1 000012d6: DUP2 000012d7: MSTORE 000012d8: PUSH1 0x40 000012da: DUP1 000012db: DUP4 000012dc: KECCAK256 000012dd: DUP7 000012de: DUP5 000012df: MSTORE 000012e0: SWAP1 000012e1: SWAP2 000012e2: MSTORE 000012e3: SWAP1 000012e4: DUP2 000012e5: SWAP1 000012e6: KECCAK256 000012e7: SLOAD 000012e8: SWAP1 000012e9: MLOAD 000012ea: PUSH4 0x1b1d4ef9 000012ef: PUSH1 0xe2 000012f1: SHL 000012f2: DUP2 000012f3: MSTORE 000012f4: PUSH1 0x04 000012f6: DUP2 000012f7: ADD 000012f8: SWAP2 000012f9: SWAP1 000012fa: SWAP2 000012fb: MSTORE 000012fc: PUSH1 0x24 000012fe: DUP2 000012ff: ADD 00001300: DUP4 00001301: SWAP1 00001302: MSTORE 00001303: PUSH1 0x44 00001305: DUP2 00001306: ADD 00001307: DUP5 00001308: SWAP1 00001309: MSTORE 0000130a: PUSH1 0x64 0000130c: DUP2 0000130d: ADD 0000130e: SWAP2 0000130f: SWAP1 00001310: SWAP2 00001311: MSTORE 00001312: PUSH1 0x84 00001314: ADD 00001315: PUSH2 0x08b7 00001318: JUMP 00001319: JUMPDEST 0000131a: PUSH1 0x00 0000131c: DUP3 0000131d: DUP2 0000131e: MSTORE 0000131f: PUSH1 0xd4 00001321: PUSH1 0x20 00001323: MSTORE 00001324: PUSH1 0x40 00001326: SWAP1 00001327: DUP2 00001328: SWAP1 00001329: KECCAK256 0000132a: DUP1 0000132b: SLOAD 0000132c: PUSH1 0xff 0000132e: NOT 0000132f: AND 00001330: PUSH1 0x01 00001332: OR 00001333: SWAP1 00001334: SSTORE 00001335: MLOAD 00001336: SWAP4 00001337: DUP2 00001338: ADD 00001339: SWAP4 0000133a: DUP3 0000133b: SWAP1 0000133c: PUSH1 0x01 0000133e: PUSH1 0x01 00001340: PUSH1 0xa0 00001342: SHL 00001343: SUB 00001344: DUP12 00001345: AND 00001346: SWAP1 00001347: PUSH32 0x1b36ea262b458e9b3ff138a58a195232f209ce92ab097f27606a12f7ec0790f2 00001368: SWAP1 00001369: PUSH2 0x1375 0000136c: SWAP1 0000136d: DUP6 0000136e: DUP2 0000136f: MSTORE 00001370: PUSH1 0x20 00001372: ADD 00001373: SWAP1 00001374: JUMP 00001375: JUMPDEST 00001376: PUSH1 0x40 00001378: MLOAD 00001379: DUP1 0000137a: SWAP2 0000137b: SUB 0000137c: SWAP1 0000137d: LOG3 0000137e: POP 0000137f: POP 00001380: PUSH1 0x01 00001382: ADD 00001383: PUSH2 0x120f 00001386: JUMP 00001387: JUMPDEST 00001388: POP 00001389: PUSH1 0x01 0000138b: PUSH1 0x01 0000138d: PUSH1 0xa0 0000138f: SHL 00001390: SUB 00001391: DUP7 00001392: AND 00001393: PUSH1 0x00 00001395: SWAP1 00001396: DUP2 00001397: MSTORE 00001398: PUSH1 0xd2 0000139a: PUSH1 0x20 0000139c: MSTORE 0000139d: PUSH1 0x40 0000139f: DUP2 000013a0: KECCAK256 000013a1: DUP1 000013a2: SLOAD 000013a3: DUP4 000013a4: SWAP3 000013a5: SWAP1 000013a6: PUSH2 0x13b0 000013a9: SWAP1 000013aa: DUP5 000013ab: SWAP1 000013ac: PUSH2 0x3290 000013af: JUMP 000013b0: JUMPDEST 000013b1: SWAP1 000013b2: SWAP2 000013b3: SSTORE 000013b4: POP 000013b5: POP 000013b6: PUSH1 0x01 000013b8: PUSH1 0x65 000013ba: SSTORE 000013bb: POP 000013bc: PUSH2 0x0bba 000013bf: JUMP 000013c0: JUMPDEST 000013c1: PUSH2 0x13c8 000013c4: PUSH2 0x2434 000013c7: JUMP 000013c8: JUMPDEST 000013c9: PUSH2 0x13d0 000013cc: PUSH2 0x2070 000013cf: JUMP 000013d0: JUMPDEST 000013d1: DUP5 000013d2: DUP4 000013d3: EQ 000013d4: DUP1 000013d5: ISZERO 000013d6: PUSH2 0x13de 000013d9: JUMPI 000013da: POP 000013db: DUP3 000013dc: DUP2 000013dd: EQ 000013de: JUMPDEST 000013df: PUSH2 0x1439 000013e2: JUMPI 000013e3: PUSH1 0x40 000013e5: MLOAD 000013e6: PUSH3 0x461bcd 000013ea: PUSH1 0xe5 000013ec: SHL 000013ed: DUP2 000013ee: MSTORE 000013ef: PUSH1 0x20 000013f1: PUSH1 0x04 000013f3: DUP3 000013f4: ADD 000013f5: MSTORE 000013f6: PUSH1 0x26 000013f8: PUSH1 0x24 000013fa: DUP3 000013fb: ADD 000013fc: MSTORE 000013fd: PUSH32 0x496e70757420617272617973206d7573742068617665207468652073616d6520 0000141e: PUSH1 0x44 00001420: DUP3 00001421: ADD 00001422: MSTORE 00001423: PUSH6 0x0d8cadccee8d 0000142a: PUSH1 0xd3 0000142c: SHL 0000142d: PUSH1 0x64 0000142f: DUP3 00001430: ADD 00001431: MSTORE 00001432: PUSH1 0x84 00001434: ADD 00001435: PUSH2 0x08b7 00001438: JUMP 00001439: JUMPDEST 0000143a: PUSH1 0x00 0000143c: JUMPDEST 0000143d: DUP6 0000143e: DUP2 0000143f: LT 00001440: ISZERO 00001441: PUSH2 0x15a2 00001444: JUMPI 00001445: PUSH1 0x00 00001447: DUP8 00001448: DUP8 00001449: DUP4 0000144a: DUP2 0000144b: DUP2 0000144c: LT 0000144d: PUSH2 0x1458 00001450: JUMPI 00001451: PUSH2 0x1458 00001454: PUSH2 0x3241 00001457: JUMP 00001458: JUMPDEST 00001459: SWAP1 0000145a: POP 0000145b: PUSH1 0x20 0000145d: MUL 0000145e: ADD 0000145f: PUSH1 0x20 00001461: DUP2 00001462: ADD 00001463: SWAP1 00001464: PUSH2 0x146d 00001467: SWAP2 00001468: SWAP1 00001469: PUSH2 0x2bde 0000146c: JUMP 0000146d: JUMPDEST 0000146e: SWAP1 0000146f: POP 00001470: PUSH1 0x00 00001472: DUP7 00001473: DUP7 00001474: DUP5 00001475: DUP2 00001476: DUP2 00001477: LT 00001478: PUSH2 0x1483 0000147b: JUMPI 0000147c: PUSH2 0x1483 0000147f: PUSH2 0x3241 00001482: JUMP 00001483: JUMPDEST 00001484: SWAP1 00001485: POP 00001486: PUSH1 0x20 00001488: MUL 00001489: ADD 0000148a: PUSH1 0x20 0000148c: DUP2 0000148d: ADD 0000148e: SWAP1 0000148f: PUSH2 0x1498 00001492: SWAP2 00001493: SWAP1 00001494: PUSH2 0x2bde 00001497: JUMP 00001498: JUMPDEST 00001499: SWAP1 0000149a: POP 0000149b: PUSH1 0x00 0000149d: DUP6 0000149e: DUP6 0000149f: DUP6 000014a0: DUP2 000014a1: DUP2 000014a2: LT 000014a3: PUSH2 0x14ae 000014a6: JUMPI 000014a7: PUSH2 0x14ae 000014aa: PUSH2 0x3241 000014ad: JUMP 000014ae: JUMPDEST 000014af: SWAP1 000014b0: POP 000014b1: PUSH1 0x20 000014b3: MUL 000014b4: ADD 000014b5: CALLDATALOAD 000014b6: SWAP1 000014b7: POP 000014b8: PUSH1 0xcb 000014ba: PUSH1 0x00 000014bc: DUP5 000014bd: PUSH1 0x01 000014bf: PUSH1 0x01 000014c1: PUSH1 0xa0 000014c3: SHL 000014c4: SUB 000014c5: AND 000014c6: PUSH1 0x01 000014c8: PUSH1 0x01 000014ca: PUSH1 0xa0 000014cc: SHL 000014cd: SUB 000014ce: AND 000014cf: DUP2 000014d0: MSTORE 000014d1: PUSH1 0x20 000014d3: ADD 000014d4: SWAP1 000014d5: DUP2 000014d6: MSTORE 000014d7: PUSH1 0x20 000014d9: ADD 000014da: PUSH1 0x00 000014dc: KECCAK256 000014dd: PUSH1 0x00 000014df: DUP4 000014e0: PUSH1 0x01 000014e2: PUSH1 0x01 000014e4: PUSH1 0xa0 000014e6: SHL 000014e7: SUB 000014e8: AND 000014e9: PUSH1 0x01 000014eb: PUSH1 0x01 000014ed: PUSH1 0xa0 000014ef: SHL 000014f0: SUB 000014f1: AND 000014f2: DUP2 000014f3: MSTORE 000014f4: PUSH1 0x20 000014f6: ADD 000014f7: SWAP1 000014f8: DUP2 000014f9: MSTORE 000014fa: PUSH1 0x20 000014fc: ADD 000014fd: PUSH1 0x00 000014ff: KECCAK256 00001500: SLOAD 00001501: PUSH1 0x00 00001503: SUB 00001504: PUSH2 0x1528 00001507: JUMPI 00001508: PUSH1 0x00 0000150a: PUSH1 0x01 0000150c: DUP4 0000150d: PUSH1 0x40 0000150f: MLOAD 00001510: PUSH4 0x19405909 00001515: PUSH1 0xe0 00001517: SHL 00001518: DUP2 00001519: MSTORE 0000151a: PUSH1 0x04 0000151c: ADD 0000151d: PUSH2 0x08b7 00001520: SWAP4 00001521: SWAP3 00001522: SWAP2 00001523: SWAP1 00001524: PUSH2 0x32a3 00001527: JUMP 00001528: JUMPDEST 00001529: PUSH1 0x01 0000152b: PUSH1 0x01 0000152d: PUSH1 0xa0 0000152f: SHL 00001530: SUB 00001531: DUP4 00001532: DUP2 00001533: AND 00001534: PUSH1 0x00 00001536: DUP2 00001537: DUP2 00001538: MSTORE 00001539: PUSH1 0xcb 0000153b: PUSH1 0x20 0000153d: SWAP1 0000153e: DUP2 0000153f: MSTORE 00001540: PUSH1 0x40 00001542: DUP1 00001543: DUP4 00001544: KECCAK256 00001545: SWAP5 00001546: DUP8 00001547: AND 00001548: DUP1 00001549: DUP5 0000154a: MSTORE 0000154b: SWAP5 0000154c: DUP3 0000154d: MSTORE 0000154e: DUP1 0000154f: DUP4 00001550: KECCAK256 00001551: DUP1 00001552: SLOAD 00001553: DUP8 00001554: ADD 00001555: SWAP1 00001556: SSTORE 00001557: PUSH1 0xcc 00001559: DUP3 0000155a: MSTORE 0000155b: SWAP2 0000155c: DUP3 0000155d: SWAP1 0000155e: KECCAK256 0000155f: DUP1 00001560: SLOAD 00001561: DUP7 00001562: ADD 00001563: SWAP1 00001564: SSTORE 00001565: SWAP1 00001566: MLOAD 00001567: DUP5 00001568: DUP2 00001569: MSTORE 0000156a: PUSH32 0x3bda13fe73033028c14ba107ef2ddc3a09abeb2ea7cac294113857d856c96b3b 0000158b: SWAP2 0000158c: ADD 0000158d: PUSH1 0x40 0000158f: MLOAD 00001590: DUP1 00001591: SWAP2 00001592: SUB 00001593: SWAP1 00001594: LOG3 00001595: POP 00001596: POP 00001597: POP 00001598: DUP1 00001599: PUSH1 0x01 0000159b: ADD 0000159c: SWAP1 0000159d: POP 0000159e: PUSH2 0x143c 000015a1: JUMP 000015a2: JUMPDEST 000015a3: POP 000015a4: POP 000015a5: POP 000015a6: POP 000015a7: POP 000015a8: POP 000015a9: POP 000015aa: JUMP 000015ab: JUMPDEST 000015ac: PUSH2 0x15b3 000015af: PUSH2 0x2434 000015b2: JUMP 000015b3: JUMPDEST 000015b4: PUSH2 0x15bb 000015b7: PUSH2 0x2017 000015ba: JUMP 000015bb: JUMPDEST 000015bc: PUSH2 0x15f9 000015bf: DUP4 000015c0: DUP4 000015c1: DUP1 000015c2: DUP1 000015c3: PUSH1 0x20 000015c5: MUL 000015c6: PUSH1 0x20 000015c8: ADD 000015c9: PUSH1 0x40 000015cb: MLOAD 000015cc: SWAP1 000015cd: DUP2 000015ce: ADD 000015cf: PUSH1 0x40 000015d1: MSTORE 000015d2: DUP1 000015d3: SWAP4 000015d4: SWAP3 000015d5: SWAP2 000015d6: SWAP1 000015d7: DUP2 000015d8: DUP2 000015d9: MSTORE 000015da: PUSH1 0x20 000015dc: ADD 000015dd: DUP4 000015de: DUP4 000015df: PUSH1 0x20 000015e1: MUL 000015e2: DUP1 000015e3: DUP3 000015e4: DUP5 000015e5: CALLDATACOPY 000015e6: PUSH1 0x00 000015e8: SWAP3 000015e9: ADD 000015ea: SWAP2 000015eb: SWAP1 000015ec: SWAP2 000015ed: MSTORE 000015ee: POP 000015ef: DUP6 000015f0: SWAP3 000015f1: POP 000015f2: PUSH2 0x26e8 000015f5: SWAP2 000015f6: POP 000015f7: POP 000015f8: JUMP 000015f9: JUMPDEST 000015fa: PUSH2 0x0c3e 000015fd: PUSH1 0x01 000015ff: PUSH1 0x65 00001601: SSTORE 00001602: JUMP 00001603: JUMPDEST 00001604: PUSH2 0x160b 00001607: PUSH2 0x2532 0000160a: JUMP 0000160b: JUMPDEST 0000160c: PUSH2 0x1613 0000160f: PUSH2 0x2017 00001612: JUMP 00001613: JUMPDEST 00001614: PUSH1 0x01 00001616: PUSH1 0x01 00001618: PUSH1 0xa0 0000161a: SHL 0000161b: SUB 0000161c: DUP5 0000161d: AND 0000161e: PUSH1 0x00 00001620: SWAP1 00001621: DUP2 00001622: MSTORE 00001623: PUSH1 0xcf 00001625: PUSH1 0x20 00001627: MSTORE 00001628: PUSH1 0x40 0000162a: SWAP1 0000162b: KECCAK256 0000162c: SLOAD 0000162d: PUSH1 0xff 0000162f: AND 00001630: PUSH2 0x1669 00001633: JUMPI 00001634: PUSH1 0x00 00001636: PUSH2 0x163e 00001639: DUP6 0000163a: PUSH2 0x1090 0000163d: JUMP 0000163e: JUMPDEST 0000163f: SWAP1 00001640: POP 00001641: DUP4 00001642: DUP2 00001643: LT 00001644: ISZERO 00001645: PUSH2 0x1667 00001648: JUMPI 00001649: DUP4 0000164a: DUP2 0000164b: DUP7 0000164c: PUSH1 0x40 0000164e: MLOAD 0000164f: PUSH4 0x0585fbc9 00001654: PUSH1 0xe3 00001656: SHL 00001657: DUP2 00001658: MSTORE 00001659: PUSH1 0x04 0000165b: ADD 0000165c: PUSH2 0x08b7 0000165f: SWAP4 00001660: SWAP3 00001661: SWAP2 00001662: SWAP1 00001663: PUSH2 0x32a3 00001666: JUMP 00001667: JUMPDEST 00001668: POP 00001669: JUMPDEST 0000166a: PUSH1 0x40 0000166c: MLOAD 0000166d: PUSH4 0x70a08231 00001672: PUSH1 0xe0 00001674: SHL 00001675: DUP2 00001676: MSTORE 00001677: ADDRESS 00001678: PUSH1 0x04 0000167a: DUP3 0000167b: ADD 0000167c: MSTORE 0000167d: DUP2 0000167e: SWAP1 0000167f: DUP5 00001680: SWAP1 00001681: PUSH1 0x01 00001683: PUSH1 0x01 00001685: PUSH1 0xa0 00001687: SHL 00001688: SUB 00001689: DUP8 0000168a: AND 0000168b: SWAP1 0000168c: PUSH4 0x70a08231 00001691: SWAP1 00001692: PUSH1 0x24 00001694: ADD 00001695: PUSH1 0x20 00001697: PUSH1 0x40 00001699: MLOAD 0000169a: DUP1 0000169b: DUP4 0000169c: SUB 0000169d: DUP2 0000169e: DUP7 0000169f: GAS 000016a0: STATICCALL 000016a1: ISZERO 000016a2: DUP1 000016a3: ISZERO 000016a4: PUSH2 0x16b1 000016a7: JUMPI 000016a8: RETURNDATASIZE 000016a9: PUSH1 0x00 000016ab: DUP1 000016ac: RETURNDATACOPY 000016ad: RETURNDATASIZE 000016ae: PUSH1 0x00 000016b0: REVERT 000016b1: JUMPDEST 000016b2: POP 000016b3: POP 000016b4: POP 000016b5: POP 000016b6: PUSH1 0x40 000016b8: MLOAD 000016b9: RETURNDATASIZE 000016ba: PUSH1 0x1f 000016bc: NOT 000016bd: PUSH1 0x1f 000016bf: DUP3 000016c0: ADD 000016c1: AND 000016c2: DUP3 000016c3: ADD 000016c4: DUP1 000016c5: PUSH1 0x40 000016c7: MSTORE 000016c8: POP 000016c9: DUP2 000016ca: ADD 000016cb: SWAP1 000016cc: PUSH2 0x16d5 000016cf: SWAP2 000016d0: SWAP1 000016d1: PUSH2 0x31be 000016d4: JUMP 000016d5: JUMPDEST 000016d6: PUSH2 0x16df 000016d9: SWAP2 000016da: SWAP1 000016db: PUSH2 0x3290 000016de: JUMP 000016df: JUMPDEST 000016e0: LT 000016e1: ISZERO 000016e2: PUSH2 0x1704 000016e5: JUMPI 000016e6: DUP3 000016e7: DUP2 000016e8: DUP6 000016e9: PUSH1 0x40 000016eb: MLOAD 000016ec: PUSH4 0x19405909 000016f1: PUSH1 0xe0 000016f3: SHL 000016f4: DUP2 000016f5: MSTORE 000016f6: PUSH1 0x04 000016f8: ADD 000016f9: PUSH2 0x08b7 000016fc: SWAP4 000016fd: SWAP3 000016fe: SWAP2 000016ff: SWAP1 00001700: PUSH2 0x32a3 00001703: JUMP 00001704: JUMPDEST 00001705: PUSH1 0x01 00001707: PUSH1 0x01 00001709: PUSH1 0xa0 0000170b: SHL 0000170c: SUB 0000170d: DUP5 0000170e: AND 0000170f: PUSH1 0x00 00001711: SWAP1 00001712: DUP2 00001713: MSTORE 00001714: PUSH1 0xd5 00001716: PUSH1 0x20 00001718: SWAP1 00001719: DUP2 0000171a: MSTORE 0000171b: PUSH1 0x40 0000171d: DUP1 0000171e: DUP4 0000171f: KECCAK256 00001720: DUP6 00001721: DUP5 00001722: MSTORE 00001723: SWAP1 00001724: SWAP2 00001725: MSTORE 00001726: SWAP1 00001727: KECCAK256 00001728: SLOAD 00001729: ISZERO 0000172a: PUSH2 0x1758 0000172d: JUMPI 0000172e: PUSH1 0x40 00001730: MLOAD 00001731: PUSH4 0x18bb936b 00001736: PUSH1 0xe3 00001738: SHL 00001739: DUP2 0000173a: MSTORE 0000173b: PUSH1 0x04 0000173d: DUP2 0000173e: ADD 0000173f: DUP4 00001740: SWAP1 00001741: MSTORE 00001742: PUSH1 0x01 00001744: PUSH1 0x01 00001746: PUSH1 0xa0 00001748: SHL 00001749: SUB 0000174a: DUP6 0000174b: AND 0000174c: PUSH1 0x24 0000174e: DUP3 0000174f: ADD 00001750: MSTORE 00001751: PUSH1 0x44 00001753: ADD 00001754: PUSH2 0x08b7 00001757: JUMP 00001758: JUMPDEST 00001759: PUSH1 0x01 0000175b: PUSH1 0x01 0000175d: PUSH1 0xa0 0000175f: SHL 00001760: SUB 00001761: DUP5 00001762: AND 00001763: PUSH1 0x00 00001765: DUP2 00001766: DUP2 00001767: MSTORE 00001768: PUSH1 0xd5 0000176a: PUSH1 0x20 0000176c: SWAP1 0000176d: DUP2 0000176e: MSTORE 0000176f: PUSH1 0x40 00001771: DUP1 00001772: DUP4 00001773: KECCAK256 00001774: DUP7 00001775: DUP5 00001776: MSTORE 00001777: DUP3 00001778: MSTORE 00001779: DUP1 0000177a: DUP4 0000177b: KECCAK256 0000177c: DUP8 0000177d: SWAP1 0000177e: SSTORE 0000177f: SWAP3 00001780: DUP3 00001781: MSTORE 00001782: PUSH1 0xd2 00001784: SWAP1 00001785: MSTORE 00001786: SWAP1 00001787: DUP2 00001788: KECCAK256 00001789: DUP1 0000178a: SLOAD 0000178b: DUP6 0000178c: SWAP3 0000178d: SWAP1 0000178e: PUSH2 0x1798 00001791: SWAP1 00001792: DUP5 00001793: SWAP1 00001794: PUSH2 0x3228 00001797: JUMP 00001798: JUMPDEST 00001799: SWAP1 0000179a: SWAP2 0000179b: SSTORE 0000179c: POP 0000179d: POP 0000179e: PUSH1 0xd1 000017a0: SLOAD 000017a1: PUSH2 0x17b7 000017a4: SWAP1 000017a5: PUSH1 0x01 000017a7: PUSH1 0x01 000017a9: PUSH1 0xa0 000017ab: SHL 000017ac: SUB 000017ad: DUP7 000017ae: DUP2 000017af: AND 000017b0: SWAP2 000017b1: AND 000017b2: DUP6 000017b3: PUSH2 0x2745 000017b6: JUMP 000017b7: JUMPDEST 000017b8: PUSH1 0x40 000017ba: DUP1 000017bb: MLOAD 000017bc: PUSH1 0x01 000017be: PUSH1 0x01 000017c0: PUSH1 0xa0 000017c2: SHL 000017c3: SUB 000017c4: DUP7 000017c5: AND 000017c6: DUP2 000017c7: MSTORE 000017c8: PUSH1 0x20 000017ca: DUP2 000017cb: ADD 000017cc: DUP6 000017cd: SWAP1 000017ce: MSTORE 000017cf: DUP4 000017d0: SWAP2 000017d1: PUSH32 0xd89781d5625dc08049e795985a82f6f1df8f90f8f8bcb9973736b9c25bc2925e 000017f2: SWAP2 000017f3: ADD 000017f4: PUSH1 0x40 000017f6: MLOAD 000017f7: DUP1 000017f8: SWAP2 000017f9: SUB 000017fa: SWAP1 000017fb: LOG2 000017fc: PUSH2 0x0d78 000017ff: PUSH1 0x01 00001801: PUSH1 0x65 00001803: SSTORE 00001804: JUMP 00001805: JUMPDEST 00001806: PUSH2 0x180d 00001809: PUSH2 0x2434 0000180c: JUMP 0000180d: JUMPDEST 0000180e: DUP1 0000180f: PUSH2 0x1817 00001812: DUP2 00001813: PUSH2 0x2775 00001816: JUMP 00001817: JUMPDEST 00001818: PUSH2 0x181f 0000181b: PUSH2 0x2017 0000181e: JUMP 0000181f: JUMPDEST 00001820: PUSH1 0x98 00001822: SLOAD 00001823: PUSH1 0x40 00001825: MLOAD 00001826: PUSH4 0x6eab9b35 0000182b: PUSH1 0xe1 0000182d: SHL 0000182e: DUP2 0000182f: MSTORE 00001830: CALLER 00001831: PUSH1 0x04 00001833: DUP3 00001834: ADD 00001835: MSTORE 00001836: PUSH1 0x01 00001838: PUSH1 0x01 0000183a: PUSH1 0xa0 0000183c: SHL 0000183d: SUB 0000183e: SWAP1 0000183f: SWAP2 00001840: AND 00001841: SWAP1 00001842: PUSH4 0xdd57366a 00001847: SWAP1 00001848: PUSH1 0x24 0000184a: ADD 0000184b: PUSH1 0x20 0000184d: PUSH1 0x40 0000184f: MLOAD 00001850: DUP1 00001851: DUP4 00001852: SUB 00001853: DUP2 00001854: DUP7 00001855: GAS 00001856: STATICCALL 00001857: ISZERO 00001858: DUP1 00001859: ISZERO 0000185a: PUSH2 0x1867 0000185d: JUMPI 0000185e: RETURNDATASIZE 0000185f: PUSH1 0x00 00001861: DUP1 00001862: RETURNDATACOPY 00001863: RETURNDATASIZE 00001864: PUSH1 0x00 00001866: REVERT 00001867: JUMPDEST 00001868: POP 00001869: POP 0000186a: POP 0000186b: POP 0000186c: PUSH1 0x40 0000186e: MLOAD 0000186f: RETURNDATASIZE 00001870: PUSH1 0x1f 00001872: NOT 00001873: PUSH1 0x1f 00001875: DUP3 00001876: ADD 00001877: AND 00001878: DUP3 00001879: ADD 0000187a: DUP1 0000187b: PUSH1 0x40 0000187d: MSTORE 0000187e: POP 0000187f: DUP2 00001880: ADD 00001881: SWAP1 00001882: PUSH2 0x188b 00001885: SWAP2 00001886: SWAP1 00001887: PUSH2 0x32c2 0000188a: JUMP 0000188b: JUMPDEST 0000188c: DUP1 0000188d: ISZERO 0000188e: PUSH2 0x1899 00001891: JUMPI 00001892: POP 00001893: PUSH1 0x33 00001895: SLOAD 00001896: PUSH1 0xff 00001898: AND 00001899: JUMPDEST 0000189a: ISZERO 0000189b: PUSH2 0x18b9 0000189e: JUMPI 0000189f: PUSH1 0x40 000018a1: MLOAD 000018a2: PUSH4 0x09d228a5 000018a7: PUSH1 0xe1 000018a9: SHL 000018aa: DUP2 000018ab: MSTORE 000018ac: CALLER 000018ad: PUSH1 0x04 000018af: DUP3 000018b0: ADD 000018b1: MSTORE 000018b2: PUSH1 0x24 000018b4: ADD 000018b5: PUSH2 0x08b7 000018b8: JUMP 000018b9: JUMPDEST 000018ba: PUSH2 0x18cf 000018bd: DUP3 000018be: DUP6 000018bf: DUP6 000018c0: PUSH1 0x01 000018c2: PUSH1 0x01 000018c4: PUSH1 0xa0 000018c6: SHL 000018c7: SUB 000018c8: DUP3 000018c9: AND 000018ca: ISZERO 000018cb: PUSH2 0x2361 000018ce: JUMP 000018cf: JUMPDEST 000018d0: DUP4 000018d1: PUSH1 0x01 000018d3: PUSH1 0x01 000018d5: PUSH1 0xa0 000018d7: SHL 000018d8: SUB 000018d9: AND 000018da: DUP3 000018db: PUSH1 0x01 000018dd: PUSH1 0x01 000018df: PUSH1 0xa0 000018e1: SHL 000018e2: SUB 000018e3: AND 000018e4: PUSH32 0xa922bc33914bd31b27595f621e02fefe0cce42e852ef76299a0a618efa9c6e5b 00001905: DUP6 00001906: PUSH1 0x40 00001908: MLOAD 00001909: PUSH2 0x1914 0000190c: SWAP2 0000190d: DUP2 0000190e: MSTORE 0000190f: PUSH1 0x20 00001911: ADD 00001912: SWAP1 00001913: JUMP 00001914: JUMPDEST 00001915: PUSH1 0x40 00001917: MLOAD 00001918: DUP1 00001919: SWAP2 0000191a: SUB 0000191b: SWAP1 0000191c: LOG3 0000191d: PUSH2 0x0d78 00001920: PUSH1 0x01 00001922: PUSH1 0x65 00001924: SSTORE 00001925: JUMP 00001926: JUMPDEST 00001927: PUSH2 0x192e 0000192a: PUSH2 0x1f0f 0000192d: JUMP 0000192e: JUMPDEST 0000192f: DUP1 00001930: PUSH2 0x1938 00001933: DUP2 00001934: PUSH2 0x2687 00001937: JUMP 00001938: JUMPDEST 00001939: PUSH1 0xd6 0000193b: DUP1 0000193c: SLOAD 0000193d: PUSH1 0x01 0000193f: PUSH1 0x01 00001941: PUSH1 0xa0 00001943: SHL 00001944: SUB 00001945: NOT 00001946: AND 00001947: PUSH1 0x01 00001949: PUSH1 0x01 0000194b: PUSH1 0xa0 0000194d: SHL 0000194e: SUB 0000194f: DUP5 00001950: AND 00001951: SWAP1 00001952: DUP2 00001953: OR 00001954: SWAP1 00001955: SWAP2 00001956: SSTORE 00001957: PUSH1 0x40 00001959: MLOAD 0000195a: PUSH32 0x5bbdab227f09862389aad197176a8cc81e4d162e2953ef9293725ca3ed54728a 0000197b: SWAP1 0000197c: PUSH1 0x00 0000197e: SWAP1 0000197f: LOG2 00001980: POP 00001981: POP 00001982: JUMP 00001983: JUMPDEST 00001984: PUSH2 0x198b 00001987: PUSH2 0x2017 0000198a: JUMP 0000198b: JUMPDEST 0000198c: PUSH2 0x1993 0000198f: PUSH2 0x2070 00001992: JUMP 00001993: JUMPDEST 00001994: DUP3 00001995: PUSH2 0x199d 00001998: DUP2 00001999: PUSH2 0x2175 0000199c: JUMP 0000199d: JUMPDEST 0000199e: PUSH2 0x19a5 000019a1: PUSH2 0x2434 000019a4: JUMP 000019a5: JUMPDEST 000019a6: PUSH1 0x01 000019a8: PUSH1 0x01 000019aa: PUSH1 0xa0 000019ac: SHL 000019ad: SUB 000019ae: DUP1 000019af: DUP7 000019b0: AND 000019b1: PUSH1 0x00 000019b3: DUP2 000019b4: DUP2 000019b5: MSTORE 000019b6: PUSH1 0xcd 000019b8: PUSH1 0x20 000019ba: SWAP1 000019bb: DUP2 000019bc: MSTORE 000019bd: PUSH1 0x40 000019bf: DUP1 000019c0: DUP4 000019c1: KECCAK256 000019c2: SWAP5 000019c3: DUP10 000019c4: AND 000019c5: DUP1 000019c6: DUP5 000019c7: MSTORE 000019c8: SWAP5 000019c9: DUP3 000019ca: MSTORE 000019cb: DUP1 000019cc: DUP4 000019cd: KECCAK256 000019ce: SLOAD 000019cf: SWAP4 000019d0: DUP4 000019d1: MSTORE 000019d2: PUSH1 0xcb 000019d4: DUP3 000019d5: MSTORE 000019d6: DUP1 000019d7: DUP4 000019d8: KECCAK256 000019d9: SWAP5 000019da: DUP4 000019db: MSTORE 000019dc: SWAP4 000019dd: SWAP1 000019de: MSTORE 000019df: SWAP2 000019e0: SWAP1 000019e1: SWAP2 000019e2: KECCAK256 000019e3: SLOAD 000019e4: DUP5 000019e5: SWAP2 000019e6: PUSH2 0x19ee 000019e9: SWAP2 000019ea: PUSH2 0x3290 000019ed: JUMP 000019ee: JUMPDEST 000019ef: LT 000019f0: ISZERO 000019f1: PUSH2 0x1a5a 000019f4: JUMPI 000019f5: PUSH1 0x01 000019f7: PUSH1 0x01 000019f9: PUSH1 0xa0 000019fb: SHL 000019fc: SUB 000019fd: DUP1 000019fe: DUP7 000019ff: AND 00001a00: PUSH1 0x00 00001a02: DUP2 00001a03: DUP2 00001a04: MSTORE 00001a05: PUSH1 0xcd 00001a07: PUSH1 0x20 00001a09: SWAP1 00001a0a: DUP2 00001a0b: MSTORE 00001a0c: PUSH1 0x40 00001a0e: DUP1 00001a0f: DUP4 00001a10: KECCAK256 00001a11: SWAP5 00001a12: DUP10 00001a13: AND 00001a14: DUP1 00001a15: DUP5 00001a16: MSTORE 00001a17: SWAP5 00001a18: DUP3 00001a19: MSTORE 00001a1a: DUP1 00001a1b: DUP4 00001a1c: KECCAK256 00001a1d: SLOAD 00001a1e: SWAP4 00001a1f: DUP4 00001a20: MSTORE 00001a21: PUSH1 0xcb 00001a23: DUP3 00001a24: MSTORE 00001a25: DUP1 00001a26: DUP4 00001a27: KECCAK256 00001a28: SWAP5 00001a29: DUP4 00001a2a: MSTORE 00001a2b: SWAP4 00001a2c: SWAP1 00001a2d: MSTORE 00001a2e: SWAP2 00001a2f: SWAP1 00001a30: SWAP2 00001a31: KECCAK256 00001a32: SLOAD 00001a33: DUP5 00001a34: SWAP2 00001a35: PUSH2 0x1a3d 00001a38: SWAP2 00001a39: PUSH2 0x3290 00001a3c: JUMP 00001a3d: JUMPDEST 00001a3e: DUP6 00001a3f: PUSH1 0x40 00001a41: MLOAD 00001a42: PUSH4 0x19405909 00001a47: PUSH1 0xe0 00001a49: SHL 00001a4a: DUP2 00001a4b: MSTORE 00001a4c: PUSH1 0x04 00001a4e: ADD 00001a4f: PUSH2 0x08b7 00001a52: SWAP4 00001a53: SWAP3 00001a54: SWAP2 00001a55: SWAP1 00001a56: PUSH2 0x32a3 00001a59: JUMP 00001a5a: JUMPDEST 00001a5b: PUSH2 0x1b3e 00001a5e: DUP6 00001a5f: DUP6 00001a60: DUP6 00001a61: DUP6 00001a62: PUSH1 0xc9 00001a64: PUSH1 0x00 00001a66: SWAP1 00001a67: SLOAD 00001a68: SWAP1 00001a69: PUSH2 0x0100 00001a6c: EXP 00001a6d: SWAP1 00001a6e: DIV 00001a6f: PUSH1 0x01 00001a71: PUSH1 0x01 00001a73: PUSH1 0xa0 00001a75: SHL 00001a76: SUB 00001a77: AND 00001a78: PUSH1 0x01 00001a7a: PUSH1 0x01 00001a7c: PUSH1 0xa0 00001a7e: SHL 00001a7f: SUB 00001a80: AND 00001a81: PUSH4 0x1edb51ad 00001a86: PUSH1 0x40 00001a88: MLOAD 00001a89: DUP2 00001a8a: PUSH4 0xffffffff 00001a8f: AND 00001a90: PUSH1 0xe0 00001a92: SHL 00001a93: DUP2 00001a94: MSTORE 00001a95: PUSH1 0x04 00001a97: ADD 00001a98: PUSH1 0x20 00001a9a: PUSH1 0x40 00001a9c: MLOAD 00001a9d: DUP1 00001a9e: DUP4 00001a9f: SUB 00001aa0: DUP2 00001aa1: DUP7 00001aa2: GAS 00001aa3: STATICCALL 00001aa4: ISZERO 00001aa5: DUP1 00001aa6: ISZERO 00001aa7: PUSH2 0x1ab4 00001aaa: JUMPI 00001aab: RETURNDATASIZE 00001aac: PUSH1 0x00 00001aae: DUP1 00001aaf: RETURNDATACOPY 00001ab0: RETURNDATASIZE 00001ab1: PUSH1 0x00 00001ab3: REVERT 00001ab4: JUMPDEST 00001ab5: POP 00001ab6: POP 00001ab7: POP 00001ab8: POP 00001ab9: PUSH1 0x40 00001abb: MLOAD 00001abc: RETURNDATASIZE 00001abd: PUSH1 0x1f 00001abf: NOT 00001ac0: PUSH1 0x1f 00001ac2: DUP3 00001ac3: ADD 00001ac4: AND 00001ac5: DUP3 00001ac6: ADD 00001ac7: DUP1 00001ac8: PUSH1 0x40 00001aca: MSTORE 00001acb: POP 00001acc: DUP2 00001acd: ADD 00001ace: SWAP1 00001acf: PUSH2 0x1ad8 00001ad2: SWAP2 00001ad3: SWAP1 00001ad4: PUSH2 0x31be 00001ad7: JUMP 00001ad8: JUMPDEST 00001ad9: PUSH1 0x40 00001adb: MLOAD 00001adc: PUSH1 0x20 00001ade: ADD 00001adf: PUSH2 0x1aec 00001ae2: SWAP6 00001ae3: SWAP5 00001ae4: SWAP4 00001ae5: SWAP3 00001ae6: SWAP2 00001ae7: SWAP1 00001ae8: PUSH2 0x31d7 00001aeb: JUMP 00001aec: JUMPDEST 00001aed: PUSH1 0x40 00001aef: MLOAD 00001af0: PUSH1 0x20 00001af2: DUP2 00001af3: DUP4 00001af4: SUB 00001af5: SUB 00001af6: DUP2 00001af7: MSTORE 00001af8: SWAP1 00001af9: PUSH1 0x40 00001afb: MSTORE 00001afc: DUP1 00001afd: MLOAD 00001afe: SWAP1 00001aff: PUSH1 0x20 00001b01: ADD 00001b02: KECCAK256 00001b03: DUP9 00001b04: DUP9 00001b05: DUP1 00001b06: DUP1 00001b07: PUSH1 0x1f 00001b09: ADD 00001b0a: PUSH1 0x20 00001b0c: DUP1 00001b0d: SWAP2 00001b0e: DIV 00001b0f: MUL 00001b10: PUSH1 0x20 00001b12: ADD 00001b13: PUSH1 0x40 00001b15: MLOAD 00001b16: SWAP1 00001b17: DUP2 00001b18: ADD 00001b19: PUSH1 0x40 00001b1b: MSTORE 00001b1c: DUP1 00001b1d: SWAP4 00001b1e: SWAP3 00001b1f: SWAP2 00001b20: SWAP1 00001b21: DUP2 00001b22: DUP2 00001b23: MSTORE 00001b24: PUSH1 0x20 00001b26: ADD 00001b27: DUP4 00001b28: DUP4 00001b29: DUP1 00001b2a: DUP3 00001b2b: DUP5 00001b2c: CALLDATACOPY 00001b2d: PUSH1 0x00 00001b2f: SWAP3 00001b30: ADD 00001b31: SWAP2 00001b32: SWAP1 00001b33: SWAP2 00001b34: MSTORE 00001b35: POP 00001b36: PUSH2 0x220b 00001b39: SWAP3 00001b3a: POP 00001b3b: POP 00001b3c: POP 00001b3d: JUMP 00001b3e: JUMPDEST 00001b3f: PUSH1 0x01 00001b41: PUSH1 0x01 00001b43: PUSH1 0xa0 00001b45: SHL 00001b46: SUB 00001b47: DUP1 00001b48: DUP7 00001b49: AND 00001b4a: PUSH1 0x00 00001b4c: SWAP1 00001b4d: DUP2 00001b4e: MSTORE 00001b4f: PUSH1 0xcd 00001b51: PUSH1 0x20 00001b53: SWAP1 00001b54: DUP2 00001b55: MSTORE 00001b56: PUSH1 0x40 00001b58: DUP1 00001b59: DUP4 00001b5a: KECCAK256 00001b5b: SWAP4 00001b5c: DUP9 00001b5d: AND 00001b5e: DUP4 00001b5f: MSTORE 00001b60: SWAP3 00001b61: SWAP1 00001b62: MSTORE 00001b63: SWAP1 00001b64: DUP2 00001b65: KECCAK256 00001b66: DUP1 00001b67: SLOAD 00001b68: DUP6 00001b69: SWAP3 00001b6a: SWAP1 00001b6b: PUSH2 0x1b75 00001b6e: SWAP1 00001b6f: DUP5 00001b70: SWAP1 00001b71: PUSH2 0x3228 00001b74: JUMP 00001b75: JUMPDEST 00001b76: SWAP1 00001b77: SWAP2 00001b78: SSTORE 00001b79: POP 00001b7a: POP 00001b7b: PUSH1 0x01 00001b7d: PUSH1 0x01 00001b7f: PUSH1 0xa0 00001b81: SHL 00001b82: SUB 00001b83: DUP5 00001b84: AND 00001b85: PUSH1 0x00 00001b87: SWAP1 00001b88: DUP2 00001b89: MSTORE 00001b8a: PUSH1 0xce 00001b8c: PUSH1 0x20 00001b8e: MSTORE 00001b8f: PUSH1 0x40 00001b91: DUP2 00001b92: KECCAK256 00001b93: DUP1 00001b94: SLOAD 00001b95: DUP6 00001b96: SWAP3 00001b97: SWAP1 00001b98: PUSH2 0x1ba2 00001b9b: SWAP1 00001b9c: DUP5 00001b9d: SWAP1 00001b9e: PUSH2 0x3228 00001ba1: JUMP 00001ba2: JUMPDEST 00001ba3: SWAP1 00001ba4: SWAP2 00001ba5: SSTORE 00001ba6: POP 00001ba7: PUSH2 0x1bb5 00001baa: SWAP1 00001bab: POP 00001bac: DUP6 00001bad: DUP6 00001bae: DUP6 00001baf: PUSH1 0x00 00001bb1: PUSH2 0x2361 00001bb4: JUMP 00001bb5: JUMPDEST 00001bb6: DUP4 00001bb7: PUSH1 0x01 00001bb9: PUSH1 0x01 00001bbb: PUSH1 0xa0 00001bbd: SHL 00001bbe: SUB 00001bbf: AND 00001bc0: DUP6 00001bc1: PUSH1 0x01 00001bc3: PUSH1 0x01 00001bc5: PUSH1 0xa0 00001bc7: SHL 00001bc8: SUB 00001bc9: AND 00001bca: PUSH32 0xa9a049377ec351e933b3447707a7afd5778f50b3737b539e7e62bd271db2eb5f 00001beb: DUP6 00001bec: PUSH1 0x40 00001bee: MLOAD 00001bef: PUSH2 0x1bfa 00001bf2: SWAP2 00001bf3: DUP2 00001bf4: MSTORE 00001bf5: PUSH1 0x20 00001bf7: ADD 00001bf8: SWAP1 00001bf9: JUMP 00001bfa: JUMPDEST 00001bfb: PUSH1 0x40 00001bfd: MLOAD 00001bfe: DUP1 00001bff: SWAP2 00001c00: SUB 00001c01: SWAP1 00001c02: LOG3 00001c03: POP 00001c04: PUSH2 0x1c0d 00001c07: PUSH1 0x01 00001c09: PUSH1 0x65 00001c0b: SSTORE 00001c0c: JUMP 00001c0d: JUMPDEST 00001c0e: POP 00001c0f: POP 00001c10: POP 00001c11: POP 00001c12: POP 00001c13: POP 00001c14: JUMP 00001c15: JUMPDEST 00001c16: PUSH1 0x00 00001c18: SLOAD 00001c19: PUSH2 0x0100 00001c1c: SWAP1 00001c1d: DIV 00001c1e: PUSH1 0xff 00001c20: AND 00001c21: ISZERO 00001c22: DUP1 00001c23: DUP1 00001c24: ISZERO 00001c25: PUSH2 0x1c35 00001c28: JUMPI 00001c29: POP 00001c2a: PUSH1 0x00 00001c2c: SLOAD 00001c2d: PUSH1 0x01 00001c2f: PUSH1 0xff 00001c31: SWAP1 00001c32: SWAP2 00001c33: AND 00001c34: LT 00001c35: JUMPDEST 00001c36: DUP1 00001c37: PUSH2 0x1c4f 00001c3a: JUMPI 00001c3b: POP 00001c3c: ADDRESS 00001c3d: EXTCODESIZE 00001c3e: ISZERO 00001c3f: DUP1 00001c40: ISZERO 00001c41: PUSH2 0x1c4f 00001c44: JUMPI 00001c45: POP 00001c46: PUSH1 0x00 00001c48: SLOAD 00001c49: PUSH1 0xff 00001c4b: AND 00001c4c: PUSH1 0x01 00001c4e: EQ 00001c4f: JUMPDEST 00001c50: PUSH2 0x1cb2 00001c53: JUMPI 00001c54: PUSH1 0x40 00001c56: MLOAD 00001c57: PUSH3 0x461bcd 00001c5b: PUSH1 0xe5 00001c5d: SHL 00001c5e: DUP2 00001c5f: MSTORE 00001c60: PUSH1 0x20 00001c62: PUSH1 0x04 00001c64: DUP3 00001c65: ADD 00001c66: MSTORE 00001c67: PUSH1 0x2e 00001c69: PUSH1 0x24 00001c6b: DUP3 00001c6c: ADD 00001c6d: MSTORE 00001c6e: PUSH32 0x496e697469616c697a61626c653a20636f6e747261637420697320616c726561 00001c8f: PUSH1 0x44 00001c91: DUP3 00001c92: ADD 00001c93: MSTORE 00001c94: PUSH14 0x191e481a5b9a5d1a585b1a5e9959 00001ca3: PUSH1 0x92 00001ca5: SHL 00001ca6: PUSH1 0x64 00001ca8: DUP3 00001ca9: ADD 00001caa: MSTORE 00001cab: PUSH1 0x84 00001cad: ADD 00001cae: PUSH2 0x08b7 00001cb1: JUMP 00001cb2: JUMPDEST 00001cb3: PUSH1 0x00 00001cb5: DUP1 00001cb6: SLOAD 00001cb7: PUSH1 0xff 00001cb9: NOT 00001cba: AND 00001cbb: PUSH1 0x01 00001cbd: OR 00001cbe: SWAP1 00001cbf: SSTORE 00001cc0: DUP1 00001cc1: ISZERO 00001cc2: PUSH2 0x1cd5 00001cc5: JUMPI 00001cc6: PUSH1 0x00 00001cc8: DUP1 00001cc9: SLOAD 00001cca: PUSH2 0xff00 00001ccd: NOT 00001cce: AND 00001ccf: PUSH2 0x0100 00001cd2: OR 00001cd3: SWAP1 00001cd4: SSTORE 00001cd5: JUMPDEST 00001cd6: DUP5 00001cd7: PUSH2 0x1cdf 00001cda: DUP2 00001cdb: PUSH2 0x2687 00001cde: JUMP 00001cdf: JUMPDEST 00001ce0: DUP5 00001ce1: PUSH2 0x1ce9 00001ce4: DUP2 00001ce5: PUSH2 0x2687 00001ce8: JUMP 00001ce9: JUMPDEST 00001cea: PUSH1 0xc9 00001cec: DUP1 00001ced: SLOAD 00001cee: PUSH1 0x01 00001cf0: PUSH1 0x01 00001cf2: PUSH1 0xa0 00001cf4: SHL 00001cf5: SUB 00001cf6: DUP1 00001cf7: DUP11 00001cf8: AND 00001cf9: PUSH1 0x01 00001cfb: PUSH1 0x01 00001cfd: PUSH1 0xa0 00001cff: SHL 00001d00: SUB 00001d01: NOT 00001d02: SWAP3 00001d03: DUP4 00001d04: AND 00001d05: OR 00001d06: SWAP1 00001d07: SWAP3 00001d08: SSTORE 00001d09: PUSH1 0xca 00001d0b: DUP1 00001d0c: SLOAD 00001d0d: SWAP3 00001d0e: DUP10 00001d0f: AND 00001d10: SWAP3 00001d11: SWAP1 00001d12: SWAP2 00001d13: AND 00001d14: SWAP2 00001d15: SWAP1 00001d16: SWAP2 00001d17: OR 00001d18: SWAP1 00001d19: SSTORE 00001d1a: PUSH2 0x1d23 00001d1d: DUP10 00001d1e: DUP10 00001d1f: PUSH2 0x2841 00001d22: JUMP 00001d23: JUMPDEST 00001d24: PUSH2 0x1d62 00001d27: DUP6 00001d28: DUP6 00001d29: DUP1 00001d2a: DUP1 00001d2b: PUSH1 0x20 00001d2d: MUL 00001d2e: PUSH1 0x20 00001d30: ADD 00001d31: PUSH1 0x40 00001d33: MLOAD 00001d34: SWAP1 00001d35: DUP2 00001d36: ADD 00001d37: PUSH1 0x40 00001d39: MSTORE 00001d3a: DUP1 00001d3b: SWAP4 00001d3c: SWAP3 00001d3d: SWAP2 00001d3e: SWAP1 00001d3f: DUP2 00001d40: DUP2 00001d41: MSTORE 00001d42: PUSH1 0x20 00001d44: ADD 00001d45: DUP4 00001d46: DUP4 00001d47: PUSH1 0x20 00001d49: MUL 00001d4a: DUP1 00001d4b: DUP3 00001d4c: DUP5 00001d4d: CALLDATACOPY 00001d4e: PUSH1 0x00 00001d50: SWAP3 00001d51: ADD 00001d52: SWAP2 00001d53: SWAP1 00001d54: SWAP2 00001d55: MSTORE 00001d56: POP 00001d57: PUSH1 0x01 00001d59: SWAP3 00001d5a: POP 00001d5b: PUSH2 0x26e8 00001d5e: SWAP2 00001d5f: POP 00001d60: POP 00001d61: JUMP 00001d62: JUMPDEST 00001d63: POP 00001d64: POP 00001d65: DUP1 00001d66: ISZERO 00001d67: PUSH2 0x15a2 00001d6a: JUMPI 00001d6b: PUSH1 0x00 00001d6d: DUP1 00001d6e: SLOAD 00001d6f: PUSH2 0xff00 00001d72: NOT 00001d73: AND 00001d74: SWAP1 00001d75: SSTORE 00001d76: PUSH1 0x40 00001d78: MLOAD 00001d79: PUSH1 0x01 00001d7b: DUP2 00001d7c: MSTORE 00001d7d: PUSH32 0x7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb3847402498 00001d9e: SWAP1 00001d9f: PUSH1 0x20 00001da1: ADD 00001da2: PUSH1 0x40 00001da4: MLOAD 00001da5: DUP1 00001da6: SWAP2 00001da7: SUB 00001da8: SWAP1 00001da9: LOG1 00001daa: POP 00001dab: POP 00001dac: POP 00001dad: POP 00001dae: POP 00001daf: POP 00001db0: POP 00001db1: JUMP 00001db2: JUMPDEST 00001db3: PUSH2 0x1dba 00001db6: PUSH2 0x1f0f 00001db9: JUMP 00001dba: JUMPDEST 00001dbb: PUSH2 0x1dc2 00001dbe: PUSH2 0x2017 00001dc1: JUMP 00001dc2: JUMPDEST 00001dc3: PUSH1 0x01 00001dc5: PUSH1 0x01 00001dc7: PUSH1 0xa0 00001dc9: SHL 00001dca: SUB 00001dcb: DUP1 00001dcc: DUP5 00001dcd: AND 00001dce: PUSH1 0x00 00001dd0: SWAP1 00001dd1: DUP2 00001dd2: MSTORE 00001dd3: PUSH1 0xcb 00001dd5: PUSH1 0x20 00001dd7: SWAP1 00001dd8: DUP2 00001dd9: MSTORE 00001dda: PUSH1 0x40 00001ddc: DUP1 00001ddd: DUP4 00001dde: KECCAK256 00001ddf: SWAP4 00001de0: DUP6 00001de1: AND 00001de2: DUP4 00001de3: MSTORE 00001de4: SWAP3 00001de5: SWAP1 00001de6: MSTORE 00001de7: SWAP1 00001de8: DUP2 00001de9: KECCAK256 00001dea: SLOAD 00001deb: SWAP1 00001dec: DUP2 00001ded: SWAP1 00001dee: SUB 00001def: PUSH2 0x1e12 00001df2: JUMPI 00001df3: DUP1 00001df4: PUSH1 0x00 00001df6: DUP4 00001df7: PUSH1 0x40 00001df9: MLOAD 00001dfa: PUSH4 0x19405909 00001dff: PUSH1 0xe0 00001e01: SHL 00001e02: DUP2 00001e03: MSTORE 00001e04: PUSH1 0x04 00001e06: ADD 00001e07: PUSH2 0x08b7 00001e0a: SWAP4 00001e0b: SWAP3 00001e0c: SWAP2 00001e0d: SWAP1 00001e0e: PUSH2 0x32a3 00001e11: JUMP 00001e12: JUMPDEST 00001e13: PUSH1 0x01 00001e15: PUSH1 0x01 00001e17: PUSH1 0xa0 00001e19: SHL 00001e1a: SUB 00001e1b: DUP1 00001e1c: DUP6 00001e1d: AND 00001e1e: PUSH1 0x00 00001e20: SWAP1 00001e21: DUP2 00001e22: MSTORE 00001e23: PUSH1 0xcb 00001e25: PUSH1 0x20 00001e27: DUP2 00001e28: DUP2 00001e29: MSTORE 00001e2a: PUSH1 0x40 00001e2c: DUP1 00001e2d: DUP5 00001e2e: KECCAK256 00001e2f: DUP8 00001e30: DUP7 00001e31: AND 00001e32: DUP1 00001e33: DUP7 00001e34: MSTORE 00001e35: SWAP1 00001e36: DUP4 00001e37: MSTORE 00001e38: DUP2 00001e39: DUP6 00001e3a: KECCAK256 00001e3b: DUP6 00001e3c: SWAP1 00001e3d: SSTORE 00001e3e: SWAP5 00001e3f: DUP9 00001e40: AND 00001e41: DUP5 00001e42: MSTORE 00001e43: SWAP2 00001e44: DUP2 00001e45: MSTORE 00001e46: DUP2 00001e47: DUP4 00001e48: KECCAK256 00001e49: SWAP4 00001e4a: DUP4 00001e4b: MSTORE 00001e4c: SWAP3 00001e4d: SWAP1 00001e4e: SWAP3 00001e4f: MSTORE 00001e50: SWAP1 00001e51: DUP2 00001e52: KECCAK256 00001e53: DUP1 00001e54: SLOAD 00001e55: DUP4 00001e56: SWAP3 00001e57: SWAP1 00001e58: PUSH2 0x1e62 00001e5b: SWAP1 00001e5c: DUP5 00001e5d: SWAP1 00001e5e: PUSH2 0x3228 00001e61: JUMP 00001e62: JUMPDEST 00001e63: SWAP3 00001e64: POP 00001e65: POP 00001e66: DUP2 00001e67: SWAP1 00001e68: SSTORE 00001e69: POP 00001e6a: DUP4 00001e6b: PUSH1 0x01 00001e6d: PUSH1 0x01 00001e6f: PUSH1 0xa0 00001e71: SHL 00001e72: SUB 00001e73: AND 00001e74: DUP3 00001e75: PUSH1 0x01 00001e77: PUSH1 0x01 00001e79: PUSH1 0xa0 00001e7b: SHL 00001e7c: SUB 00001e7d: AND 00001e7e: PUSH32 0xe085944a5ddfe0e68127edbf665e03ec5be397243129f6555232ed553e951cb1 00001e9f: PUSH1 0x00 00001ea1: PUSH1 0x40 00001ea3: MLOAD 00001ea4: PUSH2 0x1eaf 00001ea7: SWAP2 00001ea8: DUP2 00001ea9: MSTORE 00001eaa: PUSH1 0x20 00001eac: ADD 00001ead: SWAP1 00001eae: JUMP 00001eaf: JUMPDEST 00001eb0: PUSH1 0x40 00001eb2: MLOAD 00001eb3: DUP1 00001eb4: SWAP2 00001eb5: SUB 00001eb6: SWAP1 00001eb7: LOG3 00001eb8: DUP3 00001eb9: PUSH1 0x01 00001ebb: PUSH1 0x01 00001ebd: PUSH1 0xa0 00001ebf: SHL 00001ec0: SUB 00001ec1: AND 00001ec2: DUP3 00001ec3: PUSH1 0x01 00001ec5: PUSH1 0x01 00001ec7: PUSH1 0xa0 00001ec9: SHL 00001eca: SUB 00001ecb: AND 00001ecc: PUSH32 0xe085944a5ddfe0e68127edbf665e03ec5be397243129f6555232ed553e951cb1 00001eed: DUP4 00001eee: PUSH1 0x40 00001ef0: MLOAD 00001ef1: PUSH2 0x1efc 00001ef4: SWAP2 00001ef5: DUP2 00001ef6: MSTORE 00001ef7: PUSH1 0x20 00001ef9: ADD 00001efa: SWAP1 00001efb: JUMP 00001efc: JUMPDEST 00001efd: PUSH1 0x40 00001eff: MLOAD 00001f00: DUP1 00001f01: SWAP2 00001f02: SUB 00001f03: SWAP1 00001f04: LOG3 00001f05: POP 00001f06: PUSH2 0x0c3e 00001f09: PUSH1 0x01 00001f0b: PUSH1 0x65 00001f0d: SSTORE 00001f0e: JUMP 00001f0f: JUMPDEST 00001f10: PUSH1 0x97 00001f12: SLOAD 00001f13: PUSH1 0x01 00001f15: PUSH1 0x01 00001f17: PUSH1 0xa0 00001f19: SHL 00001f1a: SUB 00001f1b: AND 00001f1c: CALLER 00001f1d: EQ 00001f1e: PUSH2 0x1f4f 00001f21: JUMPI 00001f22: PUSH1 0x97 00001f24: SLOAD 00001f25: PUSH1 0x40 00001f27: MLOAD 00001f28: PUSH4 0x6ccc68c3 00001f2d: PUSH1 0xe1 00001f2f: SHL 00001f30: DUP2 00001f31: MSTORE 00001f32: CALLER 00001f33: PUSH1 0x04 00001f35: DUP3 00001f36: ADD 00001f37: MSTORE 00001f38: PUSH1 0x01 00001f3a: PUSH1 0x01 00001f3c: PUSH1 0xa0 00001f3e: SHL 00001f3f: SUB 00001f40: SWAP1 00001f41: SWAP2 00001f42: AND 00001f43: PUSH1 0x24 00001f45: DUP3 00001f46: ADD 00001f47: MSTORE 00001f48: PUSH1 0x44 00001f4a: ADD 00001f4b: PUSH2 0x08b7 00001f4e: JUMP 00001f4f: JUMPDEST 00001f50: JUMP 00001f51: JUMPDEST 00001f52: PUSH1 0x01 00001f54: PUSH1 0x01 00001f56: PUSH1 0xa0 00001f58: SHL 00001f59: SUB 00001f5a: DUP2 00001f5b: AND 00001f5c: PUSH2 0x1fcd 00001f5f: JUMPI 00001f60: PUSH1 0x40 00001f62: DUP1 00001f63: MLOAD 00001f64: PUSH4 0x09617777 00001f69: PUSH1 0xe4 00001f6b: SHL 00001f6c: DUP2 00001f6d: MSTORE 00001f6e: PUSH1 0x04 00001f70: DUP2 00001f71: ADD 00001f72: SWAP2 00001f73: SWAP1 00001f74: SWAP2 00001f75: MSTORE 00001f76: PUSH1 0x2b 00001f78: PUSH1 0x44 00001f7a: DUP3 00001f7b: ADD 00001f7c: MSTORE 00001f7d: PUSH32 0x4d61696e7461696e65727320726567697374727920616464726573732063616e 00001f9e: PUSH1 0x64 00001fa0: DUP3 00001fa1: ADD 00001fa2: MSTORE 00001fa3: PUSH11 0x6e6f74206265207a65726f 00001faf: PUSH1 0xa8 00001fb1: SHL 00001fb2: PUSH1 0x84 00001fb4: DUP3 00001fb5: ADD 00001fb6: MSTORE 00001fb7: PUSH1 0x01 00001fb9: PUSH1 0x01 00001fbb: PUSH1 0xa0 00001fbd: SHL 00001fbe: SUB 00001fbf: DUP3 00001fc0: AND 00001fc1: PUSH1 0x24 00001fc3: DUP3 00001fc4: ADD 00001fc5: MSTORE 00001fc6: PUSH1 0xa4 00001fc8: ADD 00001fc9: PUSH2 0x08b7 00001fcc: JUMP 00001fcd: JUMPDEST 00001fce: PUSH1 0x98 00001fd0: DUP1 00001fd1: SLOAD 00001fd2: PUSH1 0x01 00001fd4: PUSH1 0x01 00001fd6: PUSH1 0xa0 00001fd8: SHL 00001fd9: SUB 00001fda: NOT 00001fdb: AND 00001fdc: PUSH1 0x01 00001fde: PUSH1 0x01 00001fe0: PUSH1 0xa0 00001fe2: SHL 00001fe3: SUB 00001fe4: DUP4 00001fe5: AND 00001fe6: SWAP1 00001fe7: DUP2 00001fe8: OR 00001fe9: SWAP1 00001fea: SWAP2 00001feb: SSTORE 00001fec: PUSH1 0x40 00001fee: MLOAD 00001fef: PUSH32 0x993a06629d3c3b6a878490571de2b491eb014f2623099576c8e8494083423507 00002010: SWAP1 00002011: PUSH1 0x00 00002013: SWAP1 00002014: LOG2 00002015: POP 00002016: JUMP 00002017: JUMPDEST 00002018: PUSH1 0x02 0000201a: PUSH1 0x65 0000201c: SLOAD 0000201d: SUB 0000201e: PUSH2 0x2069 00002021: JUMPI 00002022: PUSH1 0x40 00002024: MLOAD 00002025: PUSH3 0x461bcd 00002029: PUSH1 0xe5 0000202b: SHL 0000202c: DUP2 0000202d: MSTORE 0000202e: PUSH1 0x20 00002030: PUSH1 0x04 00002032: DUP3 00002033: ADD 00002034: MSTORE 00002035: PUSH1 0x1f 00002037: PUSH1 0x24 00002039: DUP3 0000203a: ADD 0000203b: MSTORE 0000203c: PUSH32 0x5265656e7472616e637947756172643a207265656e7472616e742063616c6c00 0000205d: PUSH1 0x44 0000205f: DUP3 00002060: ADD 00002061: MSTORE 00002062: PUSH1 0x64 00002064: ADD 00002065: PUSH2 0x08b7 00002068: JUMP 00002069: JUMPDEST 0000206a: PUSH1 0x02 0000206c: PUSH1 0x65 0000206e: SSTORE 0000206f: JUMP 00002070: JUMPDEST 00002071: PUSH1 0x33 00002073: SLOAD 00002074: PUSH1 0xff 00002076: AND 00002077: ISZERO 00002078: PUSH2 0x1f4f 0000207b: JUMPI 0000207c: PUSH1 0x40 0000207e: MLOAD 0000207f: PUSH3 0x461bcd 00002083: PUSH1 0xe5 00002085: SHL 00002086: DUP2 00002087: MSTORE 00002088: PUSH1 0x20 0000208a: PUSH1 0x04 0000208c: DUP3 0000208d: ADD 0000208e: MSTORE 0000208f: PUSH1 0x10 00002091: PUSH1 0x24 00002093: DUP3 00002094: ADD 00002095: MSTORE 00002096: PUSH16 0x14185d5cd8589b194e881c185d5cd959 000020a7: PUSH1 0x82 000020a9: SHL 000020aa: PUSH1 0x44 000020ac: DUP3 000020ad: ADD 000020ae: MSTORE 000020af: PUSH1 0x64 000020b1: ADD 000020b2: PUSH2 0x08b7 000020b5: JUMP 000020b6: JUMPDEST 000020b7: PUSH1 0x01 000020b9: PUSH1 0x01 000020bb: PUSH1 0xa0 000020bd: SHL 000020be: SUB 000020bf: DUP2 000020c0: AND 000020c1: PUSH1 0x00 000020c3: SWAP1 000020c4: DUP2 000020c5: MSTORE 000020c6: PUSH1 0xcf 000020c8: PUSH1 0x20 000020ca: MSTORE 000020cb: PUSH1 0x40 000020cd: SWAP1 000020ce: KECCAK256 000020cf: SLOAD 000020d0: PUSH1 0xff 000020d2: AND 000020d3: PUSH2 0x08c9 000020d6: JUMPI 000020d7: PUSH1 0x40 000020d9: DUP1 000020da: MLOAD 000020db: PUSH4 0xea514533 000020e0: PUSH1 0xe0 000020e2: SHL 000020e3: DUP2 000020e4: MSTORE 000020e5: PUSH1 0x01 000020e7: PUSH1 0x01 000020e9: PUSH1 0xa0 000020eb: SHL 000020ec: SUB 000020ed: DUP4 000020ee: AND 000020ef: PUSH1 0x04 000020f1: DUP3 000020f2: ADD 000020f3: MSTORE 000020f4: PUSH1 0x24 000020f6: DUP2 000020f7: ADD 000020f8: SWAP2 000020f9: SWAP1 000020fa: SWAP2 000020fb: MSTORE 000020fc: PUSH1 0x32 000020fe: PUSH1 0x44 00002100: DUP3 00002101: ADD 00002102: MSTORE 00002103: PUSH32 0x546f6b656e206973206e6f7420636f6e6669677572656420666f72206d61696e 00002124: PUSH1 0x64 00002126: DUP3 00002127: ADD 00002128: MSTORE 00002129: PUSH18 0x2d746f2d6d61696e207472616e7366657273 0000213c: PUSH1 0x70 0000213e: SHL 0000213f: PUSH1 0x84 00002141: DUP3 00002142: ADD 00002143: MSTORE 00002144: PUSH1 0xa4 00002146: ADD 00002147: PUSH2 0x08b7 0000214a: JUMP 0000214b: JUMPDEST 0000214c: DUP1 0000214d: TIMESTAMP 0000214e: GT 0000214f: ISZERO 00002150: PUSH2 0x08c9 00002153: JUMPI 00002154: PUSH1 0x40 00002156: MLOAD 00002157: PUSH4 0x442400cf 0000215c: PUSH1 0xe1 0000215e: SHL 0000215f: DUP2 00002160: MSTORE 00002161: PUSH1 0x04 00002163: DUP2 00002164: ADD 00002165: DUP3 00002166: SWAP1 00002167: MSTORE 00002168: TIMESTAMP 00002169: PUSH1 0x24 0000216b: DUP3 0000216c: ADD 0000216d: MSTORE 0000216e: PUSH1 0x44 00002170: ADD 00002171: PUSH2 0x08b7 00002174: JUMP 00002175: JUMPDEST 00002176: PUSH1 0xc9 00002178: SLOAD 00002179: PUSH1 0x40 0000217b: MLOAD 0000217c: PUSH4 0x4448c045 00002181: PUSH1 0xe0 00002183: SHL 00002184: DUP2 00002185: MSTORE 00002186: PUSH1 0x01 00002188: PUSH1 0x01 0000218a: PUSH1 0xa0 0000218c: SHL 0000218d: SUB 0000218e: DUP4 0000218f: DUP2 00002190: AND 00002191: PUSH1 0x04 00002193: DUP4 00002194: ADD 00002195: MSTORE 00002196: SWAP1 00002197: SWAP2 00002198: AND 00002199: SWAP1 0000219a: PUSH4 0x4448c045 0000219f: SWAP1 000021a0: PUSH1 0x24 000021a2: ADD 000021a3: PUSH1 0x20 000021a5: PUSH1 0x40 000021a7: MLOAD 000021a8: DUP1 000021a9: DUP4 000021aa: SUB 000021ab: DUP2 000021ac: DUP7 000021ad: GAS 000021ae: STATICCALL 000021af: ISZERO 000021b0: DUP1 000021b1: ISZERO 000021b2: PUSH2 0x21bf 000021b5: JUMPI 000021b6: RETURNDATASIZE 000021b7: PUSH1 0x00 000021b9: DUP1 000021ba: RETURNDATACOPY 000021bb: RETURNDATASIZE 000021bc: PUSH1 0x00 000021be: REVERT 000021bf: JUMPDEST 000021c0: POP 000021c1: POP 000021c2: POP 000021c3: POP 000021c4: PUSH1 0x40 000021c6: MLOAD 000021c7: RETURNDATASIZE 000021c8: PUSH1 0x1f 000021ca: NOT 000021cb: PUSH1 0x1f 000021cd: DUP3 000021ce: ADD 000021cf: AND 000021d0: DUP3 000021d1: ADD 000021d2: DUP1 000021d3: PUSH1 0x40 000021d5: MSTORE 000021d6: POP 000021d7: DUP2 000021d8: ADD 000021d9: SWAP1 000021da: PUSH2 0x21e3 000021dd: SWAP2 000021de: SWAP1 000021df: PUSH2 0x32c2 000021e2: JUMP 000021e3: JUMPDEST 000021e4: ISZERO 000021e5: PUSH2 0x08c9 000021e8: JUMPI 000021e9: PUSH1 0x40 000021eb: MLOAD 000021ec: PUSH3 0x817835 000021f0: PUSH1 0xe5 000021f2: SHL 000021f3: DUP2 000021f4: MSTORE 000021f5: PUSH1 0x01 000021f7: PUSH1 0x01 000021f9: PUSH1 0xa0 000021fb: SHL 000021fc: SUB 000021fd: DUP3 000021fe: AND 000021ff: PUSH1 0x04 00002201: DUP3 00002202: ADD 00002203: MSTORE 00002204: PUSH1 0x24 00002206: ADD 00002207: PUSH2 0x08b7 0000220a: JUMP 0000220b: JUMPDEST 0000220c: PUSH1 0x00 0000220e: DUP3 0000220f: DUP2 00002210: MSTORE 00002211: PUSH1 0xd0 00002213: PUSH1 0x20 00002215: MSTORE 00002216: PUSH1 0x40 00002218: SWAP1 00002219: KECCAK256 0000221a: SLOAD 0000221b: PUSH1 0xff 0000221d: AND 0000221e: ISZERO 0000221f: PUSH2 0x223f 00002222: JUMPI 00002223: DUP2 00002224: DUP2 00002225: PUSH1 0x40 00002227: MLOAD 00002228: PUSH4 0x054f7179 0000222d: PUSH1 0xe2 0000222f: SHL 00002230: DUP2 00002231: MSTORE 00002232: PUSH1 0x04 00002234: ADD 00002235: PUSH2 0x08b7 00002238: SWAP3 00002239: SWAP2 0000223a: SWAP1 0000223b: PUSH2 0x332f 0000223e: JUMP 0000223f: JUMPDEST 00002240: PUSH1 0xca 00002242: SLOAD 00002243: PUSH1 0x40 00002245: MLOAD 00002246: PUSH4 0x1b594def 0000224b: PUSH1 0xe3 0000224d: SHL 0000224e: DUP2 0000224f: MSTORE 00002250: PUSH1 0x01 00002252: PUSH1 0x01 00002254: PUSH1 0xa0 00002256: SHL 00002257: SUB 00002258: SWAP1 00002259: SWAP2 0000225a: AND 0000225b: SWAP1 0000225c: PUSH4 0xdaca6f78 00002261: SWAP1 00002262: PUSH2 0x2271 00002265: SWAP1 00002266: DUP6 00002267: SWAP1 00002268: DUP6 00002269: SWAP1 0000226a: PUSH1 0x04 0000226c: ADD 0000226d: PUSH2 0x332f 00002270: JUMP 00002271: JUMPDEST 00002272: PUSH1 0x20 00002274: PUSH1 0x40 00002276: MLOAD 00002277: DUP1 00002278: DUP4 00002279: SUB 0000227a: DUP2 0000227b: DUP7 0000227c: GAS 0000227d: STATICCALL 0000227e: ISZERO 0000227f: DUP1 00002280: ISZERO 00002281: PUSH2 0x228e 00002284: JUMPI 00002285: RETURNDATASIZE 00002286: PUSH1 0x00 00002288: DUP1 00002289: RETURNDATACOPY 0000228a: RETURNDATASIZE 0000228b: PUSH1 0x00 0000228d: REVERT 0000228e: JUMPDEST 0000228f: POP 00002290: POP 00002291: POP 00002292: POP 00002293: PUSH1 0x40 00002295: MLOAD 00002296: RETURNDATASIZE 00002297: PUSH1 0x1f 00002299: NOT 0000229a: PUSH1 0x1f 0000229c: DUP3 0000229d: ADD 0000229e: AND 0000229f: DUP3 000022a0: ADD 000022a1: DUP1 000022a2: PUSH1 0x40 000022a4: MSTORE 000022a5: POP 000022a6: DUP2 000022a7: ADD 000022a8: SWAP1 000022a9: PUSH2 0x22b2 000022ac: SWAP2 000022ad: SWAP1 000022ae: PUSH2 0x32c2 000022b1: JUMP 000022b2: JUMPDEST 000022b3: PUSH2 0x22d3 000022b6: JUMPI 000022b7: DUP1 000022b8: DUP3 000022b9: PUSH1 0x40 000022bb: MLOAD 000022bc: PUSH4 0x7ab683f7 000022c1: PUSH1 0xe0 000022c3: SHL 000022c4: DUP2 000022c5: MSTORE 000022c6: PUSH1 0x04 000022c8: ADD 000022c9: PUSH2 0x08b7 000022cc: SWAP3 000022cd: SWAP2 000022ce: SWAP1 000022cf: PUSH2 0x3348 000022d2: JUMP 000022d3: JUMPDEST 000022d4: POP 000022d5: PUSH1 0x00 000022d7: SWAP1 000022d8: DUP2 000022d9: MSTORE 000022da: PUSH1 0xd0 000022dc: PUSH1 0x20 000022de: MSTORE 000022df: PUSH1 0x40 000022e1: SWAP1 000022e2: KECCAK256 000022e3: DUP1 000022e4: SLOAD 000022e5: PUSH1 0xff 000022e7: NOT 000022e8: AND 000022e9: PUSH1 0x01 000022eb: OR 000022ec: SWAP1 000022ed: SSTORE 000022ee: JUMP 000022ef: JUMPDEST 000022f0: PUSH1 0x40 000022f2: MLOAD 000022f3: PUSH1 0x01 000022f5: PUSH1 0x01 000022f7: PUSH1 0xa0 000022f9: SHL 000022fa: SUB 000022fb: DUP1 000022fc: DUP6 000022fd: AND 000022fe: PUSH1 0x24 00002300: DUP4 00002301: ADD 00002302: MSTORE 00002303: DUP4 00002304: AND 00002305: PUSH1 0x44 00002307: DUP3 00002308: ADD 00002309: MSTORE 0000230a: PUSH1 0x64 0000230c: DUP2 0000230d: ADD 0000230e: DUP3 0000230f: SWAP1 00002310: MSTORE 00002311: PUSH2 0x0d78 00002314: SWAP1 00002315: DUP6 00002316: SWAP1 00002317: PUSH4 0x23b872dd 0000231c: PUSH1 0xe0 0000231e: SHL 0000231f: SWAP1 00002320: PUSH1 0x84 00002322: ADD 00002323: JUMPDEST 00002324: PUSH1 0x40 00002326: DUP1 00002327: MLOAD 00002328: PUSH1 0x1f 0000232a: NOT 0000232b: DUP2 0000232c: DUP5 0000232d: SUB 0000232e: ADD 0000232f: DUP2 00002330: MSTORE 00002331: SWAP2 00002332: SWAP1 00002333: MSTORE 00002334: PUSH1 0x20 00002336: DUP2 00002337: ADD 00002338: DUP1 00002339: MLOAD 0000233a: PUSH1 0x01 0000233c: PUSH1 0x01 0000233e: PUSH1 0xe0 00002340: SHL 00002341: SUB 00002342: AND 00002343: PUSH1 0x01 00002345: PUSH1 0x01 00002347: PUSH1 0xe0 00002349: SHL 0000234a: SUB 0000234b: NOT 0000234c: SWAP1 0000234d: SWAP4 0000234e: AND 0000234f: SWAP3 00002350: SWAP1 00002351: SWAP3 00002352: OR 00002353: SWAP1 00002354: SWAP2 00002355: MSTORE 00002356: PUSH2 0x2863 00002359: JUMP 0000235a: JUMPDEST 0000235b: PUSH1 0x01 0000235d: PUSH1 0x65 0000235f: SSTORE 00002360: JUMP 00002361: JUMPDEST 00002362: DUP1 00002363: ISZERO 00002364: PUSH2 0x2420 00002367: JUMPI 00002368: PUSH1 0x00 0000236a: DUP5 0000236b: PUSH1 0x01 0000236d: PUSH1 0x01 0000236f: PUSH1 0xa0 00002371: SHL 00002372: SUB 00002373: AND 00002374: DUP4 00002375: PUSH1 0x40 00002377: MLOAD 00002378: PUSH1 0x00 0000237a: PUSH1 0x40 0000237c: MLOAD 0000237d: DUP1 0000237e: DUP4 0000237f: SUB 00002380: DUP2 00002381: DUP6 00002382: DUP8 00002383: GAS 00002384: CALL 00002385: SWAP3 00002386: POP 00002387: POP 00002388: POP 00002389: RETURNDATASIZE 0000238a: DUP1 0000238b: PUSH1 0x00 0000238d: DUP2 0000238e: EQ 0000238f: PUSH2 0x23b4 00002392: JUMPI 00002393: PUSH1 0x40 00002395: MLOAD 00002396: SWAP2 00002397: POP 00002398: PUSH1 0x1f 0000239a: NOT 0000239b: PUSH1 0x3f 0000239d: RETURNDATASIZE 0000239e: ADD 0000239f: AND 000023a0: DUP3 000023a1: ADD 000023a2: PUSH1 0x40 000023a4: MSTORE 000023a5: RETURNDATASIZE 000023a6: DUP3 000023a7: MSTORE 000023a8: RETURNDATASIZE 000023a9: PUSH1 0x00 000023ab: PUSH1 0x20 000023ad: DUP5 000023ae: ADD 000023af: RETURNDATACOPY 000023b0: PUSH2 0x23b9 000023b3: JUMP 000023b4: JUMPDEST 000023b5: PUSH1 0x60 000023b7: SWAP2 000023b8: POP 000023b9: JUMPDEST 000023ba: POP 000023bb: POP 000023bc: SWAP1 000023bd: POP 000023be: DUP1 000023bf: PUSH2 0x241a 000023c2: JUMPI 000023c3: PUSH1 0x40 000023c5: MLOAD 000023c6: PUSH4 0xa906d431 000023cb: PUSH1 0xe0 000023cd: SHL 000023ce: DUP2 000023cf: MSTORE 000023d0: PUSH1 0x01 000023d2: PUSH1 0x01 000023d4: PUSH1 0xa0 000023d6: SHL 000023d7: SUB 000023d8: DUP7 000023d9: AND 000023da: PUSH1 0x04 000023dc: DUP3 000023dd: ADD 000023de: MSTORE 000023df: PUSH1 0x24 000023e1: DUP2 000023e2: ADD 000023e3: DUP5 000023e4: SWAP1 000023e5: MSTORE 000023e6: PUSH1 0x60 000023e8: PUSH1 0x44 000023ea: DUP3 000023eb: ADD 000023ec: MSTORE 000023ed: PUSH1 0x16 000023ef: PUSH1 0x64 000023f1: DUP3 000023f2: ADD 000023f3: MSTORE 000023f4: PUSH22 0x13985d1a5d99481d1c985b9cd9995c8819985a5b1959 0000240b: PUSH1 0x52 0000240d: SHL 0000240e: PUSH1 0x84 00002410: DUP3 00002411: ADD 00002412: MSTORE 00002413: PUSH1 0xa4 00002415: ADD 00002416: PUSH2 0x08b7 00002419: JUMP 0000241a: JUMPDEST 0000241b: POP 0000241c: PUSH2 0x0d78 0000241f: JUMP 00002420: JUMPDEST 00002421: PUSH2 0x0d78 00002424: PUSH1 0x01 00002426: PUSH1 0x01 00002428: PUSH1 0xa0 0000242a: SHL 0000242b: SUB 0000242c: DUP5 0000242d: AND 0000242e: DUP6 0000242f: DUP5 00002430: PUSH2 0x2745 00002433: JUMP 00002434: JUMPDEST 00002435: PUSH1 0x98 00002437: SLOAD 00002438: PUSH1 0x40 0000243a: MLOAD 0000243b: PUSH4 0x6eab9b35 00002440: PUSH1 0xe1 00002442: SHL 00002443: DUP2 00002444: MSTORE 00002445: CALLER 00002446: PUSH1 0x04 00002448: DUP3 00002449: ADD 0000244a: MSTORE 0000244b: PUSH1 0x01 0000244d: PUSH1 0x01 0000244f: PUSH1 0xa0 00002451: SHL 00002452: SUB 00002453: SWAP1 00002454: SWAP2 00002455: AND 00002456: SWAP1 00002457: PUSH4 0xdd57366a 0000245c: SWAP1 0000245d: PUSH1 0x24 0000245f: ADD 00002460: PUSH1 0x20 00002462: PUSH1 0x40 00002464: MLOAD 00002465: DUP1 00002466: DUP4 00002467: SUB 00002468: DUP2 00002469: DUP7 0000246a: GAS 0000246b: STATICCALL 0000246c: ISZERO 0000246d: DUP1 0000246e: ISZERO 0000246f: PUSH2 0x247c 00002472: JUMPI 00002473: RETURNDATASIZE 00002474: PUSH1 0x00 00002476: DUP1 00002477: RETURNDATACOPY 00002478: RETURNDATASIZE 00002479: PUSH1 0x00 0000247b: REVERT 0000247c: JUMPDEST 0000247d: POP 0000247e: POP 0000247f: POP 00002480: POP 00002481: PUSH1 0x40 00002483: MLOAD 00002484: RETURNDATASIZE 00002485: PUSH1 0x1f 00002487: NOT 00002488: PUSH1 0x1f 0000248a: DUP3 0000248b: ADD 0000248c: AND 0000248d: DUP3 0000248e: ADD 0000248f: DUP1 00002490: PUSH1 0x40 00002492: MSTORE 00002493: POP 00002494: DUP2 00002495: ADD 00002496: SWAP1 00002497: PUSH2 0x24a0 0000249a: SWAP2 0000249b: SWAP1 0000249c: PUSH2 0x32c2 0000249f: JUMP 000024a0: JUMPDEST 000024a1: ISZERO 000024a2: DUP1 000024a3: ISZERO 000024a4: PUSH2 0x24b8 000024a7: JUMPI 000024a8: POP 000024a9: PUSH1 0x97 000024ab: SLOAD 000024ac: PUSH1 0x01 000024ae: PUSH1 0x01 000024b0: PUSH1 0xa0 000024b2: SHL 000024b3: SUB 000024b4: AND 000024b5: CALLER 000024b6: EQ 000024b7: ISZERO 000024b8: JUMPDEST 000024b9: ISZERO 000024ba: PUSH2 0x1f4f 000024bd: JUMPI 000024be: PUSH1 0x40 000024c0: MLOAD 000024c1: PUSH4 0x537ebb87 000024c6: PUSH1 0xe1 000024c8: SHL 000024c9: DUP2 000024ca: MSTORE 000024cb: CALLER 000024cc: PUSH1 0x04 000024ce: DUP3 000024cf: ADD 000024d0: MSTORE 000024d1: PUSH1 0x24 000024d3: ADD 000024d4: PUSH2 0x08b7 000024d7: JUMP 000024d8: JUMPDEST 000024d9: PUSH2 0x24e0 000024dc: PUSH2 0x2070 000024df: JUMP 000024e0: JUMPDEST 000024e1: PUSH1 0x33 000024e3: DUP1 000024e4: SLOAD 000024e5: PUSH1 0xff 000024e7: NOT 000024e8: AND 000024e9: PUSH1 0x01 000024eb: OR 000024ec: SWAP1 000024ed: SSTORE 000024ee: PUSH32 0x62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258 0000250f: PUSH2 0x2515 00002512: CALLER 00002513: SWAP1 00002514: JUMP 00002515: JUMPDEST 00002516: PUSH1 0x40 00002518: MLOAD 00002519: PUSH1 0x01 0000251b: PUSH1 0x01 0000251d: PUSH1 0xa0 0000251f: SHL 00002520: SUB 00002521: SWAP1 00002522: SWAP2 00002523: AND 00002524: DUP2 00002525: MSTORE 00002526: PUSH1 0x20 00002528: ADD 00002529: PUSH1 0x40 0000252b: MLOAD 0000252c: DUP1 0000252d: SWAP2 0000252e: SUB 0000252f: SWAP1 00002530: LOG1 00002531: JUMP 00002532: JUMPDEST 00002533: PUSH1 0xc9 00002535: SLOAD 00002536: PUSH1 0x01 00002538: PUSH1 0x01 0000253a: PUSH1 0xa0 0000253c: SHL 0000253d: SUB 0000253e: AND 0000253f: CALLER 00002540: EQ 00002541: PUSH2 0x1f4f 00002544: JUMPI 00002545: PUSH1 0xc9 00002547: SLOAD 00002548: PUSH1 0x40 0000254a: MLOAD 0000254b: PUSH4 0xc52de321 00002550: PUSH1 0xe0 00002552: SHL 00002553: DUP2 00002554: MSTORE 00002555: CALLER 00002556: PUSH1 0x04 00002558: DUP3 00002559: ADD 0000255a: MSTORE 0000255b: PUSH1 0x01 0000255d: PUSH1 0x01 0000255f: PUSH1 0xa0 00002561: SHL 00002562: SUB 00002563: SWAP1 00002564: SWAP2 00002565: AND 00002566: PUSH1 0x24 00002568: DUP3 00002569: ADD 0000256a: MSTORE 0000256b: PUSH1 0x60 0000256d: PUSH1 0x44 0000256f: DUP3 00002570: ADD 00002571: MSTORE 00002572: PUSH1 0x13 00002574: PUSH1 0x64 00002576: DUP3 00002577: ADD 00002578: MSTORE 00002579: PUSH19 0x6f6e6c79436861696e706f7274427269646765 0000258d: PUSH1 0x68 0000258f: SHL 00002590: PUSH1 0x84 00002592: DUP3 00002593: ADD 00002594: MSTORE 00002595: PUSH1 0xa4 00002597: ADD 00002598: PUSH2 0x08b7 0000259b: JUMP 0000259c: JUMPDEST 0000259d: PUSH1 0x01 0000259f: PUSH1 0x01 000025a1: PUSH1 0xa0 000025a3: SHL 000025a4: SUB 000025a5: DUP2 000025a6: AND 000025a7: PUSH2 0x2604 000025aa: JUMPI 000025ab: PUSH1 0x40 000025ad: DUP1 000025ae: MLOAD 000025af: PUSH4 0x09617777 000025b4: PUSH1 0xe4 000025b6: SHL 000025b7: DUP2 000025b8: MSTORE 000025b9: PUSH1 0x04 000025bb: DUP2 000025bc: ADD 000025bd: SWAP2 000025be: SWAP1 000025bf: SWAP2 000025c0: MSTORE 000025c1: PUSH1 0x1f 000025c3: PUSH1 0x44 000025c5: DUP3 000025c6: ADD 000025c7: MSTORE 000025c8: PUSH32 0x436f6e677265737320616464726573732063616e6e6f74206265207a65726f00 000025e9: PUSH1 0x64 000025eb: DUP3 000025ec: ADD 000025ed: MSTORE 000025ee: PUSH1 0x01 000025f0: PUSH1 0x01 000025f2: PUSH1 0xa0 000025f4: SHL 000025f5: SUB 000025f6: DUP3 000025f7: AND 000025f8: PUSH1 0x24 000025fa: DUP3 000025fb: ADD 000025fc: MSTORE 000025fd: PUSH1 0x84 000025ff: ADD 00002600: PUSH2 0x08b7 00002603: JUMP 00002604: JUMPDEST 00002605: PUSH1 0x97 00002607: DUP1 00002608: SLOAD 00002609: PUSH1 0x01 0000260b: PUSH1 0x01 0000260d: PUSH1 0xa0 0000260f: SHL 00002610: SUB 00002611: NOT 00002612: AND 00002613: PUSH1 0x01 00002615: PUSH1 0x01 00002617: PUSH1 0xa0 00002619: SHL 0000261a: SUB 0000261b: DUP4 0000261c: AND 0000261d: SWAP1 0000261e: DUP2 0000261f: OR 00002620: SWAP1 00002621: SWAP2 00002622: SSTORE 00002623: PUSH1 0x40 00002625: MLOAD 00002626: PUSH32 0x92c0335399ecbaa35b0b21fc784a8ce59419e6786caf942b31db51ac8c292584 00002647: SWAP1 00002648: PUSH1 0x00 0000264a: SWAP1 0000264b: LOG2 0000264c: POP 0000264d: JUMP 0000264e: JUMPDEST 0000264f: PUSH2 0x2656 00002652: PUSH2 0x2938 00002655: JUMP 00002656: JUMPDEST 00002657: PUSH1 0x33 00002659: DUP1 0000265a: SLOAD 0000265b: PUSH1 0xff 0000265d: NOT 0000265e: AND 0000265f: SWAP1 00002660: SSTORE 00002661: PUSH32 0x5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa 00002682: CALLER 00002683: PUSH2 0x2515 00002686: JUMP 00002687: JUMPDEST 00002688: PUSH1 0x01 0000268a: PUSH1 0x01 0000268c: PUSH1 0xa0 0000268e: SHL 0000268f: SUB 00002690: DUP2 00002691: AND 00002692: PUSH2 0x08c9 00002695: JUMPI 00002696: PUSH1 0x40 00002698: DUP1 00002699: MLOAD 0000269a: PUSH4 0x8eb40ca7 0000269f: PUSH1 0xe0 000026a1: SHL 000026a2: DUP2 000026a3: MSTORE 000026a4: PUSH1 0x04 000026a6: DUP2 000026a7: ADD 000026a8: SWAP2 000026a9: SWAP1 000026aa: SWAP2 000026ab: MSTORE 000026ac: PUSH1 0x16 000026ae: PUSH1 0x44 000026b0: DUP3 000026b1: ADD 000026b2: MSTORE 000026b3: PUSH22 0x416464726573732063616e6e6f74206265207a65726f 000026ca: PUSH1 0x50 000026cc: SHL 000026cd: PUSH1 0x64 000026cf: DUP3 000026d0: ADD 000026d1: MSTORE 000026d2: PUSH1 0x01 000026d4: PUSH1 0x01 000026d6: PUSH1 0xa0 000026d8: SHL 000026d9: SUB 000026da: DUP3 000026db: AND 000026dc: PUSH1 0x24 000026de: DUP3 000026df: ADD 000026e0: MSTORE 000026e1: PUSH1 0x84 000026e3: ADD 000026e4: PUSH2 0x08b7 000026e7: JUMP 000026e8: JUMPDEST 000026e9: PUSH1 0x00 000026eb: JUMPDEST 000026ec: DUP3 000026ed: MLOAD 000026ee: DUP2 000026ef: LT 000026f0: ISZERO 000026f1: PUSH2 0x0c3e 000026f4: JUMPI 000026f5: DUP2 000026f6: PUSH1 0xcf 000026f8: PUSH1 0x00 000026fa: DUP6 000026fb: DUP5 000026fc: DUP2 000026fd: MLOAD 000026fe: DUP2 000026ff: LT 00002700: PUSH2 0x270b 00002703: JUMPI 00002704: PUSH2 0x270b 00002707: PUSH2 0x3241 0000270a: JUMP 0000270b: JUMPDEST 0000270c: PUSH1 0x20 0000270e: SWAP1 0000270f: DUP2 00002710: MUL 00002711: SWAP2 00002712: SWAP1 00002713: SWAP2 00002714: ADD 00002715: DUP2 00002716: ADD 00002717: MLOAD 00002718: PUSH1 0x01 0000271a: PUSH1 0x01 0000271c: PUSH1 0xa0 0000271e: SHL 0000271f: SUB 00002720: AND 00002721: DUP3 00002722: MSTORE 00002723: DUP2 00002724: ADD 00002725: SWAP2 00002726: SWAP1 00002727: SWAP2 00002728: MSTORE 00002729: PUSH1 0x40 0000272b: ADD 0000272c: PUSH1 0x00 0000272e: KECCAK256 0000272f: DUP1 00002730: SLOAD 00002731: PUSH1 0xff 00002733: NOT 00002734: AND 00002735: SWAP2 00002736: ISZERO 00002737: ISZERO 00002738: SWAP2 00002739: SWAP1 0000273a: SWAP2 0000273b: OR 0000273c: SWAP1 0000273d: SSTORE 0000273e: PUSH1 0x01 00002740: ADD 00002741: PUSH2 0x26eb 00002744: JUMP 00002745: JUMPDEST 00002746: PUSH1 0x40 00002748: MLOAD 00002749: PUSH1 0x01 0000274b: PUSH1 0x01 0000274d: PUSH1 0xa0 0000274f: SHL 00002750: SUB 00002751: DUP4 00002752: AND 00002753: PUSH1 0x24 00002755: DUP3 00002756: ADD 00002757: MSTORE 00002758: PUSH1 0x44 0000275a: DUP2 0000275b: ADD 0000275c: DUP3 0000275d: SWAP1 0000275e: MSTORE 0000275f: PUSH2 0x0c3e 00002762: SWAP1 00002763: DUP5 00002764: SWAP1 00002765: PUSH4 0xa9059cbb 0000276a: PUSH1 0xe0 0000276c: SHL 0000276d: SWAP1 0000276e: PUSH1 0x64 00002770: ADD 00002771: PUSH2 0x2323 00002774: JUMP 00002775: JUMPDEST 00002776: PUSH1 0xd6 00002778: SLOAD 00002779: PUSH1 0x40 0000277b: MLOAD 0000277c: PUSH4 0xe4e3a7a9 00002781: PUSH1 0xe0 00002783: SHL 00002784: DUP2 00002785: MSTORE 00002786: PUSH1 0x01 00002788: PUSH1 0x01 0000278a: PUSH1 0xa0 0000278c: SHL 0000278d: SUB 0000278e: DUP4 0000278f: DUP2 00002790: AND 00002791: PUSH1 0x04 00002793: DUP4 00002794: ADD 00002795: MSTORE 00002796: SWAP1 00002797: SWAP2 00002798: AND 00002799: SWAP1 0000279a: PUSH4 0xe4e3a7a9 0000279f: SWAP1 000027a0: PUSH1 0x24 000027a2: ADD 000027a3: PUSH1 0x20 000027a5: PUSH1 0x40 000027a7: MLOAD 000027a8: DUP1 000027a9: DUP4 000027aa: SUB 000027ab: DUP2 000027ac: DUP7 000027ad: GAS 000027ae: STATICCALL 000027af: ISZERO 000027b0: DUP1 000027b1: ISZERO 000027b2: PUSH2 0x27bf 000027b5: JUMPI 000027b6: RETURNDATASIZE 000027b7: PUSH1 0x00 000027b9: DUP1 000027ba: RETURNDATACOPY 000027bb: RETURNDATASIZE 000027bc: PUSH1 0x00 000027be: REVERT 000027bf: JUMPDEST 000027c0: POP 000027c1: POP 000027c2: POP 000027c3: POP 000027c4: PUSH1 0x40 000027c6: MLOAD 000027c7: RETURNDATASIZE 000027c8: PUSH1 0x1f 000027ca: NOT 000027cb: PUSH1 0x1f 000027cd: DUP3 000027ce: ADD 000027cf: AND 000027d0: DUP3 000027d1: ADD 000027d2: DUP1 000027d3: PUSH1 0x40 000027d5: MSTORE 000027d6: POP 000027d7: DUP2 000027d8: ADD 000027d9: SWAP1 000027da: PUSH2 0x27e3 000027dd: SWAP2 000027de: SWAP1 000027df: PUSH2 0x32c2 000027e2: JUMP 000027e3: JUMPDEST 000027e4: PUSH2 0x08c9 000027e7: JUMPI 000027e8: PUSH1 0x40 000027ea: DUP1 000027eb: MLOAD 000027ec: PUSH4 0x3c842441 000027f1: PUSH1 0xe2 000027f3: SHL 000027f4: DUP2 000027f5: MSTORE 000027f6: PUSH1 0x01 000027f8: PUSH1 0x01 000027fa: PUSH1 0xa0 000027fc: SHL 000027fd: SUB 000027fe: DUP4 000027ff: AND 00002800: PUSH1 0x04 00002802: DUP3 00002803: ADD 00002804: MSTORE 00002805: PUSH1 0x24 00002807: DUP2 00002808: ADD 00002809: SWAP2 0000280a: SWAP1 0000280b: SWAP2 0000280c: MSTORE 0000280d: PUSH1 0x1b 0000280f: PUSH1 0x44 00002811: DUP3 00002812: ADD 00002813: MSTORE 00002814: PUSH32 0x42656e6566696369617279206e6f742077686974656c69737465640000000000 00002835: PUSH1 0x64 00002837: DUP3 00002838: ADD 00002839: MSTORE 0000283a: PUSH1 0x84 0000283c: ADD 0000283d: PUSH2 0x08b7 00002840: JUMP 00002841: JUMPDEST 00002842: PUSH2 0x284a 00002845: DUP3 00002846: PUSH2 0x259c 00002849: JUMP 0000284a: JUMPDEST 0000284b: PUSH2 0x2853 0000284e: DUP2 0000284f: PUSH2 0x1f51 00002852: JUMP 00002853: JUMPDEST 00002854: PUSH2 0x285b 00002857: PUSH2 0x2981 0000285a: JUMP 0000285b: JUMPDEST 0000285c: PUSH2 0x0d0b 0000285f: PUSH2 0x29b0 00002862: JUMP 00002863: JUMPDEST 00002864: PUSH1 0x00 00002866: PUSH2 0x28b8 00002869: DUP3 0000286a: PUSH1 0x40 0000286c: MLOAD 0000286d: DUP1 0000286e: PUSH1 0x40 00002870: ADD 00002871: PUSH1 0x40 00002873: MSTORE 00002874: DUP1 00002875: PUSH1 0x20 00002877: DUP2 00002878: MSTORE 00002879: PUSH1 0x20 0000287b: ADD 0000287c: PUSH32 0x5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564 0000289d: DUP2 0000289e: MSTORE 0000289f: POP 000028a0: DUP6 000028a1: PUSH1 0x01 000028a3: PUSH1 0x01 000028a5: PUSH1 0xa0 000028a7: SHL 000028a8: SUB 000028a9: AND 000028aa: PUSH2 0x29df 000028ad: SWAP1 000028ae: SWAP3 000028af: SWAP2 000028b0: SWAP1 000028b1: PUSH4 0xffffffff 000028b6: AND 000028b7: JUMP 000028b8: JUMPDEST 000028b9: SWAP1 000028ba: POP 000028bb: DUP1 000028bc: MLOAD 000028bd: PUSH1 0x00 000028bf: EQ 000028c0: DUP1 000028c1: PUSH2 0x28d9 000028c4: JUMPI 000028c5: POP 000028c6: DUP1 000028c7: DUP1 000028c8: PUSH1 0x20 000028ca: ADD 000028cb: SWAP1 000028cc: MLOAD 000028cd: DUP2 000028ce: ADD 000028cf: SWAP1 000028d0: PUSH2 0x28d9 000028d3: SWAP2 000028d4: SWAP1 000028d5: PUSH2 0x32c2 000028d8: JUMP 000028d9: JUMPDEST 000028da: PUSH2 0x0c3e 000028dd: JUMPI 000028de: PUSH1 0x40 000028e0: MLOAD 000028e1: PUSH3 0x461bcd 000028e5: PUSH1 0xe5 000028e7: SHL 000028e8: DUP2 000028e9: MSTORE 000028ea: PUSH1 0x20 000028ec: PUSH1 0x04 000028ee: DUP3 000028ef: ADD 000028f0: MSTORE 000028f1: PUSH1 0x2a 000028f3: PUSH1 0x24 000028f5: DUP3 000028f6: ADD 000028f7: MSTORE 000028f8: PUSH32 0x5361666545524332303a204552433230206f7065726174696f6e20646964206e 00002919: PUSH1 0x44 0000291b: DUP3 0000291c: ADD 0000291d: MSTORE 0000291e: PUSH10 0x1bdd081cdd58d8d95959 00002929: PUSH1 0xb2 0000292b: SHL 0000292c: PUSH1 0x64 0000292e: DUP3 0000292f: ADD 00002930: MSTORE 00002931: PUSH1 0x84 00002933: ADD 00002934: PUSH2 0x08b7 00002937: JUMP 00002938: JUMPDEST 00002939: PUSH1 0x33 0000293b: SLOAD 0000293c: PUSH1 0xff 0000293e: AND 0000293f: PUSH2 0x1f4f 00002942: JUMPI 00002943: PUSH1 0x40 00002945: MLOAD 00002946: PUSH3 0x461bcd 0000294a: PUSH1 0xe5 0000294c: SHL 0000294d: DUP2 0000294e: MSTORE 0000294f: PUSH1 0x20 00002951: PUSH1 0x04 00002953: DUP3 00002954: ADD 00002955: MSTORE 00002956: PUSH1 0x14 00002958: PUSH1 0x24 0000295a: DUP3 0000295b: ADD 0000295c: MSTORE 0000295d: PUSH20 0x14185d5cd8589b194e881b9bdd081c185d5cd959 00002972: PUSH1 0x62 00002974: SHL 00002975: PUSH1 0x44 00002977: DUP3 00002978: ADD 00002979: MSTORE 0000297a: PUSH1 0x64 0000297c: ADD 0000297d: PUSH2 0x08b7 00002980: JUMP 00002981: JUMPDEST 00002982: PUSH1 0x00 00002984: SLOAD 00002985: PUSH2 0x0100 00002988: SWAP1 00002989: DIV 0000298a: PUSH1 0xff 0000298c: AND 0000298d: PUSH2 0x29a8 00002990: JUMPI 00002991: PUSH1 0x40 00002993: MLOAD 00002994: PUSH3 0x461bcd 00002998: PUSH1 0xe5 0000299a: SHL 0000299b: DUP2 0000299c: MSTORE 0000299d: PUSH1 0x04 0000299f: ADD 000029a0: PUSH2 0x08b7 000029a3: SWAP1 000029a4: PUSH2 0x336a 000029a7: JUMP 000029a8: JUMPDEST 000029a9: PUSH2 0x1f4f 000029ac: PUSH2 0x29f6 000029af: JUMP 000029b0: JUMPDEST 000029b1: PUSH1 0x00 000029b3: SLOAD 000029b4: PUSH2 0x0100 000029b7: SWAP1 000029b8: DIV 000029b9: PUSH1 0xff 000029bb: AND 000029bc: PUSH2 0x29d7 000029bf: JUMPI 000029c0: PUSH1 0x40 000029c2: MLOAD 000029c3: PUSH3 0x461bcd 000029c7: PUSH1 0xe5 000029c9: SHL 000029ca: DUP2 000029cb: MSTORE 000029cc: PUSH1 0x04 000029ce: ADD 000029cf: PUSH2 0x08b7 000029d2: SWAP1 000029d3: PUSH2 0x336a 000029d6: JUMP 000029d7: JUMPDEST 000029d8: PUSH2 0x1f4f 000029db: PUSH2 0x2a29 000029de: JUMP 000029df: JUMPDEST 000029e0: PUSH1 0x60 000029e2: PUSH2 0x29ee 000029e5: DUP5 000029e6: DUP5 000029e7: PUSH1 0x00 000029e9: DUP6 000029ea: PUSH2 0x2a50 000029ed: JUMP 000029ee: JUMPDEST 000029ef: SWAP5 000029f0: SWAP4 000029f1: POP 000029f2: POP 000029f3: POP 000029f4: POP 000029f5: JUMP 000029f6: JUMPDEST 000029f7: PUSH1 0x00 000029f9: SLOAD 000029fa: PUSH2 0x0100 000029fd: SWAP1 000029fe: DIV 000029ff: PUSH1 0xff 00002a01: AND 00002a02: PUSH2 0x2a1d 00002a05: JUMPI 00002a06: PUSH1 0x40 00002a08: MLOAD 00002a09: PUSH3 0x461bcd 00002a0d: PUSH1 0xe5 00002a0f: SHL 00002a10: DUP2 00002a11: MSTORE 00002a12: PUSH1 0x04 00002a14: ADD 00002a15: PUSH2 0x08b7 00002a18: SWAP1 00002a19: PUSH2 0x336a 00002a1c: JUMP 00002a1d: JUMPDEST 00002a1e: PUSH1 0x33 00002a20: DUP1 00002a21: SLOAD 00002a22: PUSH1 0xff 00002a24: NOT 00002a25: AND 00002a26: SWAP1 00002a27: SSTORE 00002a28: JUMP 00002a29: JUMPDEST 00002a2a: PUSH1 0x00 00002a2c: SLOAD 00002a2d: PUSH2 0x0100 00002a30: SWAP1 00002a31: DIV 00002a32: PUSH1 0xff 00002a34: AND 00002a35: PUSH2 0x235a 00002a38: JUMPI 00002a39: PUSH1 0x40 00002a3b: MLOAD 00002a3c: PUSH3 0x461bcd 00002a40: PUSH1 0xe5 00002a42: SHL 00002a43: DUP2 00002a44: MSTORE 00002a45: PUSH1 0x04 00002a47: ADD 00002a48: PUSH2 0x08b7 00002a4b: SWAP1 00002a4c: PUSH2 0x336a 00002a4f: JUMP 00002a50: JUMPDEST 00002a51: PUSH1 0x60 00002a53: DUP3 00002a54: SELFBALANCE 00002a55: LT 00002a56: ISZERO 00002a57: PUSH2 0x2ab1 00002a5a: JUMPI 00002a5b: PUSH1 0x40 00002a5d: MLOAD 00002a5e: PUSH3 0x461bcd 00002a62: PUSH1 0xe5 00002a64: SHL 00002a65: DUP2 00002a66: MSTORE 00002a67: PUSH1 0x20 00002a69: PUSH1 0x04 00002a6b: DUP3 00002a6c: ADD 00002a6d: MSTORE 00002a6e: PUSH1 0x26 00002a70: PUSH1 0x24 00002a72: DUP3 00002a73: ADD 00002a74: MSTORE 00002a75: PUSH32 0x416464726573733a20696e73756666696369656e742062616c616e636520666f 00002a96: PUSH1 0x44 00002a98: DUP3 00002a99: ADD 00002a9a: MSTORE 00002a9b: PUSH6 0x1c8818d85b1b 00002aa2: PUSH1 0xd2 00002aa4: SHL 00002aa5: PUSH1 0x64 00002aa7: DUP3 00002aa8: ADD 00002aa9: MSTORE 00002aaa: PUSH1 0x84 00002aac: ADD 00002aad: PUSH2 0x08b7 00002ab0: JUMP 00002ab1: JUMPDEST 00002ab2: PUSH1 0x00 00002ab4: DUP1 00002ab5: DUP7 00002ab6: PUSH1 0x01 00002ab8: PUSH1 0x01 00002aba: PUSH1 0xa0 00002abc: SHL 00002abd: SUB 00002abe: AND 00002abf: DUP6 00002ac0: DUP8 00002ac1: PUSH1 0x40 00002ac3: MLOAD 00002ac4: PUSH2 0x2acd 00002ac7: SWAP2 00002ac8: SWAP1 00002ac9: PUSH2 0x33b5 00002acc: JUMP 00002acd: JUMPDEST 00002ace: PUSH1 0x00 00002ad0: PUSH1 0x40 00002ad2: MLOAD 00002ad3: DUP1 00002ad4: DUP4 00002ad5: SUB 00002ad6: DUP2 00002ad7: DUP6 00002ad8: DUP8 00002ad9: GAS 00002ada: CALL 00002adb: SWAP3 00002adc: POP 00002add: POP 00002ade: POP 00002adf: RETURNDATASIZE 00002ae0: DUP1 00002ae1: PUSH1 0x00 00002ae3: DUP2 00002ae4: EQ 00002ae5: PUSH2 0x2b0a 00002ae8: JUMPI 00002ae9: PUSH1 0x40 00002aeb: MLOAD 00002aec: SWAP2 00002aed: POP 00002aee: PUSH1 0x1f 00002af0: NOT 00002af1: PUSH1 0x3f 00002af3: RETURNDATASIZE 00002af4: ADD 00002af5: AND 00002af6: DUP3 00002af7: ADD 00002af8: PUSH1 0x40 00002afa: MSTORE 00002afb: RETURNDATASIZE 00002afc: DUP3 00002afd: MSTORE 00002afe: RETURNDATASIZE 00002aff: PUSH1 0x00 00002b01: PUSH1 0x20 00002b03: DUP5 00002b04: ADD 00002b05: RETURNDATACOPY 00002b06: PUSH2 0x2b0f 00002b09: JUMP 00002b0a: JUMPDEST 00002b0b: PUSH1 0x60 00002b0d: SWAP2 00002b0e: POP 00002b0f: JUMPDEST 00002b10: POP 00002b11: SWAP2 00002b12: POP 00002b13: SWAP2 00002b14: POP 00002b15: PUSH2 0x2b20 00002b18: DUP8 00002b19: DUP4 00002b1a: DUP4 00002b1b: DUP8 00002b1c: PUSH2 0x2b2b 00002b1f: JUMP 00002b20: JUMPDEST 00002b21: SWAP8 00002b22: SWAP7 00002b23: POP 00002b24: POP 00002b25: POP 00002b26: POP 00002b27: POP 00002b28: POP 00002b29: POP 00002b2a: JUMP 00002b2b: JUMPDEST 00002b2c: PUSH1 0x60 00002b2e: DUP4 00002b2f: ISZERO 00002b30: PUSH2 0x2b9a 00002b33: JUMPI 00002b34: DUP3 00002b35: MLOAD 00002b36: PUSH1 0x00 00002b38: SUB 00002b39: PUSH2 0x2b93 00002b3c: JUMPI 00002b3d: PUSH1 0x01 00002b3f: PUSH1 0x01 00002b41: PUSH1 0xa0 00002b43: SHL 00002b44: SUB 00002b45: DUP6 00002b46: AND 00002b47: EXTCODESIZE 00002b48: PUSH2 0x2b93 00002b4b: JUMPI 00002b4c: PUSH1 0x40 00002b4e: MLOAD 00002b4f: PUSH3 0x461bcd 00002b53: PUSH1 0xe5 00002b55: SHL 00002b56: DUP2 00002b57: MSTORE 00002b58: PUSH1 0x20 00002b5a: PUSH1 0x04 00002b5c: DUP3 00002b5d: ADD 00002b5e: MSTORE 00002b5f: PUSH1 0x1d 00002b61: PUSH1 0x24 00002b63: DUP3 00002b64: ADD 00002b65: MSTORE 00002b66: PUSH32 0x416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000 00002b87: PUSH1 0x44 00002b89: DUP3 00002b8a: ADD 00002b8b: MSTORE 00002b8c: PUSH1 0x64 00002b8e: ADD 00002b8f: PUSH2 0x08b7 00002b92: JUMP 00002b93: JUMPDEST 00002b94: POP 00002b95: DUP2 00002b96: PUSH2 0x29ee 00002b99: JUMP 00002b9a: JUMPDEST 00002b9b: PUSH2 0x29ee 00002b9e: DUP4 00002b9f: DUP4 00002ba0: DUP2 00002ba1: MLOAD 00002ba2: ISZERO 00002ba3: PUSH2 0x2baf 00002ba6: JUMPI 00002ba7: DUP2 00002ba8: MLOAD 00002ba9: DUP1 00002baa: DUP4 00002bab: PUSH1 0x20 00002bad: ADD 00002bae: REVERT 00002baf: JUMPDEST 00002bb0: DUP1 00002bb1: PUSH1 0x40 00002bb3: MLOAD 00002bb4: PUSH3 0x461bcd 00002bb8: PUSH1 0xe5 00002bba: SHL 00002bbb: DUP2 00002bbc: MSTORE 00002bbd: PUSH1 0x04 00002bbf: ADD 00002bc0: PUSH2 0x08b7 00002bc3: SWAP2 00002bc4: SWAP1 00002bc5: PUSH2 0x33d1 00002bc8: JUMP 00002bc9: JUMPDEST 00002bca: PUSH1 0x01 00002bcc: PUSH1 0x01 00002bce: PUSH1 0xa0 00002bd0: SHL 00002bd1: SUB 00002bd2: DUP2 00002bd3: AND 00002bd4: DUP2 00002bd5: EQ 00002bd6: PUSH2 0x08c9 00002bd9: JUMPI 00002bda: PUSH1 0x00 00002bdc: DUP1 00002bdd: REVERT 00002bde: JUMPDEST 00002bdf: PUSH1 0x00 00002be1: PUSH1 0x20 00002be3: DUP3 00002be4: DUP5 00002be5: SUB 00002be6: SLT 00002be7: ISZERO 00002be8: PUSH2 0x2bf0 00002beb: JUMPI 00002bec: PUSH1 0x00 00002bee: DUP1 00002bef: REVERT 00002bf0: JUMPDEST 00002bf1: DUP2 00002bf2: CALLDATALOAD 00002bf3: PUSH2 0x2bfb 00002bf6: DUP2 00002bf7: PUSH2 0x2bc9 00002bfa: JUMP 00002bfb: JUMPDEST 00002bfc: SWAP4 00002bfd: SWAP3 00002bfe: POP 00002bff: POP 00002c00: POP 00002c01: JUMP 00002c02: JUMPDEST 00002c03: PUSH1 0x00 00002c05: DUP1 00002c06: PUSH1 0x40 00002c08: DUP4 00002c09: DUP6 00002c0a: SUB 00002c0b: SLT 00002c0c: ISZERO 00002c0d: PUSH2 0x2c15 00002c10: JUMPI 00002c11: PUSH1 0x00 00002c13: DUP1 00002c14: REVERT 00002c15: JUMPDEST 00002c16: POP 00002c17: POP 00002c18: DUP1 00002c19: CALLDATALOAD 00002c1a: SWAP3 00002c1b: PUSH1 0x20 00002c1d: SWAP1 00002c1e: SWAP2 00002c1f: ADD 00002c20: CALLDATALOAD 00002c21: SWAP2 00002c22: POP 00002c23: JUMP 00002c24: JUMPDEST 00002c25: PUSH1 0x00 00002c27: DUP1 00002c28: DUP4 00002c29: PUSH1 0x1f 00002c2b: DUP5 00002c2c: ADD 00002c2d: SLT 00002c2e: PUSH2 0x2c36 00002c31: JUMPI 00002c32: PUSH1 0x00 00002c34: DUP1 00002c35: REVERT 00002c36: JUMPDEST 00002c37: POP 00002c38: DUP2 00002c39: CALLDATALOAD 00002c3a: PUSH8 0xffffffffffffffff 00002c43: DUP2 00002c44: GT 00002c45: ISZERO 00002c46: PUSH2 0x2c4e 00002c49: JUMPI 00002c4a: PUSH1 0x00 00002c4c: DUP1 00002c4d: REVERT 00002c4e: JUMPDEST 00002c4f: PUSH1 0x20 00002c51: DUP4 00002c52: ADD 00002c53: SWAP2 00002c54: POP 00002c55: DUP4 00002c56: PUSH1 0x20 00002c58: DUP3 00002c59: DUP6 00002c5a: ADD 00002c5b: ADD 00002c5c: GT 00002c5d: ISZERO 00002c5e: PUSH2 0x2c66 00002c61: JUMPI 00002c62: PUSH1 0x00 00002c64: DUP1 00002c65: REVERT 00002c66: JUMPDEST 00002c67: SWAP3 00002c68: POP 00002c69: SWAP3 00002c6a: SWAP1 00002c6b: POP 00002c6c: JUMP 00002c6d: JUMPDEST 00002c6e: PUSH1 0x00 00002c70: DUP1 00002c71: PUSH1 0x00 00002c73: DUP1 00002c74: PUSH1 0x00 00002c76: PUSH1 0x80 00002c78: DUP7 00002c79: DUP9 00002c7a: SUB 00002c7b: SLT 00002c7c: ISZERO 00002c7d: PUSH2 0x2c85 00002c80: JUMPI 00002c81: PUSH1 0x00 00002c83: DUP1 00002c84: REVERT 00002c85: JUMPDEST 00002c86: DUP6 00002c87: CALLDATALOAD 00002c88: PUSH2 0x2c90 00002c8b: DUP2 00002c8c: PUSH2 0x2bc9 00002c8f: JUMP 00002c90: JUMPDEST 00002c91: SWAP5 00002c92: POP 00002c93: PUSH1 0x20 00002c95: DUP7 00002c96: ADD 00002c97: CALLDATALOAD 00002c98: SWAP4 00002c99: POP 00002c9a: PUSH1 0x40 00002c9c: DUP7 00002c9d: ADD 00002c9e: CALLDATALOAD 00002c9f: SWAP3 00002ca0: POP 00002ca1: PUSH1 0x60 00002ca3: DUP7 00002ca4: ADD 00002ca5: CALLDATALOAD 00002ca6: PUSH8 0xffffffffffffffff 00002caf: DUP2 00002cb0: GT 00002cb1: ISZERO 00002cb2: PUSH2 0x2cba 00002cb5: JUMPI 00002cb6: PUSH1 0x00 00002cb8: DUP1 00002cb9: REVERT 00002cba: JUMPDEST 00002cbb: PUSH2 0x2cc6 00002cbe: DUP9 00002cbf: DUP3 00002cc0: DUP10 00002cc1: ADD 00002cc2: PUSH2 0x2c24 00002cc5: JUMP 00002cc6: JUMPDEST 00002cc7: SWAP7 00002cc8: SWAP10 00002cc9: SWAP6 00002cca: SWAP9 00002ccb: POP 00002ccc: SWAP4 00002ccd: SWAP7 00002cce: POP 00002ccf: SWAP3 00002cd0: SWAP5 00002cd1: SWAP4 00002cd2: SWAP3 00002cd3: POP 00002cd4: POP 00002cd5: POP 00002cd6: JUMP 00002cd7: JUMPDEST 00002cd8: PUSH1 0x00 00002cda: DUP1 00002cdb: PUSH1 0x00 00002cdd: PUSH1 0x60 00002cdf: DUP5 00002ce0: DUP7 00002ce1: SUB 00002ce2: SLT 00002ce3: ISZERO 00002ce4: PUSH2 0x2cec 00002ce7: JUMPI 00002ce8: PUSH1 0x00 00002cea: DUP1 00002ceb: REVERT 00002cec: JUMPDEST 00002ced: DUP4 00002cee: CALLDATALOAD 00002cef: PUSH2 0x2cf7 00002cf2: DUP2 00002cf3: PUSH2 0x2bc9 00002cf6: JUMP 00002cf7: JUMPDEST 00002cf8: SWAP3 00002cf9: POP 00002cfa: PUSH1 0x20 00002cfc: DUP5 00002cfd: ADD 00002cfe: CALLDATALOAD 00002cff: SWAP2 00002d00: POP 00002d01: PUSH1 0x40 00002d03: DUP5 00002d04: ADD 00002d05: CALLDATALOAD 00002d06: PUSH2 0x2d0e 00002d09: DUP2 00002d0a: PUSH2 0x2bc9 00002d0d: JUMP 00002d0e: JUMPDEST 00002d0f: DUP1 00002d10: SWAP2 00002d11: POP 00002d12: POP 00002d13: SWAP3 00002d14: POP 00002d15: SWAP3 00002d16: POP 00002d17: SWAP3 00002d18: JUMP 00002d19: JUMPDEST 00002d1a: PUSH1 0x00 00002d1c: DUP1 00002d1d: DUP4 00002d1e: PUSH1 0x1f 00002d20: DUP5 00002d21: ADD 00002d22: SLT 00002d23: PUSH2 0x2d2b 00002d26: JUMPI 00002d27: PUSH1 0x00 00002d29: DUP1 00002d2a: REVERT 00002d2b: JUMPDEST 00002d2c: POP 00002d2d: DUP2 00002d2e: CALLDATALOAD 00002d2f: PUSH8 0xffffffffffffffff 00002d38: DUP2 00002d39: GT 00002d3a: ISZERO 00002d3b: PUSH2 0x2d43 00002d3e: JUMPI 00002d3f: PUSH1 0x00 00002d41: DUP1 00002d42: REVERT 00002d43: JUMPDEST 00002d44: PUSH1 0x20 00002d46: DUP4 00002d47: ADD 00002d48: SWAP2 00002d49: POP 00002d4a: DUP4 00002d4b: PUSH1 0x20 00002d4d: DUP3 00002d4e: PUSH1 0x05 00002d50: SHL 00002d51: DUP6 00002d52: ADD 00002d53: ADD 00002d54: GT 00002d55: ISZERO 00002d56: PUSH2 0x2c66 00002d59: JUMPI 00002d5a: PUSH1 0x00 00002d5c: DUP1 00002d5d: REVERT 00002d5e: JUMPDEST 00002d5f: PUSH1 0x00 00002d61: DUP1 00002d62: PUSH1 0x20 00002d64: DUP4 00002d65: DUP6 00002d66: SUB 00002d67: SLT 00002d68: ISZERO 00002d69: PUSH2 0x2d71 00002d6c: JUMPI 00002d6d: PUSH1 0x00 00002d6f: DUP1 00002d70: REVERT 00002d71: JUMPDEST 00002d72: DUP3 00002d73: CALLDATALOAD 00002d74: PUSH8 0xffffffffffffffff 00002d7d: DUP2 00002d7e: GT 00002d7f: ISZERO 00002d80: PUSH2 0x2d88 00002d83: JUMPI 00002d84: PUSH1 0x00 00002d86: DUP1 00002d87: REVERT 00002d88: JUMPDEST 00002d89: PUSH2 0x2d94 00002d8c: DUP6 00002d8d: DUP3 00002d8e: DUP7 00002d8f: ADD 00002d90: PUSH2 0x2d19 00002d93: JUMP 00002d94: JUMPDEST 00002d95: SWAP1 00002d96: SWAP7 00002d97: SWAP1 00002d98: SWAP6 00002d99: POP 00002d9a: SWAP4 00002d9b: POP 00002d9c: POP 00002d9d: POP 00002d9e: POP 00002d9f: JUMP 00002da0: JUMPDEST 00002da1: DUP1 00002da2: ISZERO 00002da3: ISZERO 00002da4: DUP2 00002da5: EQ 00002da6: PUSH2 0x08c9 00002da9: JUMPI 00002daa: PUSH1 0x00 00002dac: DUP1 00002dad: REVERT 00002dae: JUMPDEST 00002daf: PUSH1 0x00 00002db1: DUP1 00002db2: PUSH1 0x00 00002db4: DUP1 00002db5: PUSH1 0x80 00002db7: DUP6 00002db8: DUP8 00002db9: SUB 00002dba: SLT 00002dbb: ISZERO 00002dbc: PUSH2 0x2dc4 00002dbf: JUMPI 00002dc0: PUSH1 0x00 00002dc2: DUP1 00002dc3: REVERT 00002dc4: JUMPDEST 00002dc5: DUP5 00002dc6: CALLDATALOAD 00002dc7: PUSH2 0x2dcf 00002dca: DUP2 00002dcb: PUSH2 0x2bc9 00002dce: JUMP 00002dcf: JUMPDEST 00002dd0: SWAP4 00002dd1: POP 00002dd2: PUSH1 0x20 00002dd4: DUP6 00002dd5: ADD 00002dd6: CALLDATALOAD 00002dd7: SWAP3 00002dd8: POP 00002dd9: PUSH1 0x40 00002ddb: DUP6 00002ddc: ADD 00002ddd: CALLDATALOAD 00002dde: PUSH2 0x2de6 00002de1: DUP2 00002de2: PUSH2 0x2bc9 00002de5: JUMP 00002de6: JUMPDEST 00002de7: SWAP2 00002de8: POP 00002de9: PUSH1 0x60 00002deb: DUP6 00002dec: ADD 00002ded: CALLDATALOAD 00002dee: PUSH2 0x2df6 00002df1: DUP2 00002df2: PUSH2 0x2da0 00002df5: JUMP 00002df6: JUMPDEST 00002df7: SWAP4 00002df8: SWAP7 00002df9: SWAP3 00002dfa: SWAP6 00002dfb: POP 00002dfc: SWAP1 00002dfd: SWAP4 00002dfe: POP 00002dff: POP 00002e00: JUMP 00002e01: JUMPDEST 00002e02: PUSH1 0x00 00002e04: DUP1 00002e05: PUSH1 0x00 00002e07: PUSH1 0x60 00002e09: DUP5 00002e0a: DUP7 00002e0b: SUB 00002e0c: SLT 00002e0d: ISZERO 00002e0e: PUSH2 0x2e16 00002e11: JUMPI 00002e12: PUSH1 0x00 00002e14: DUP1 00002e15: REVERT 00002e16: JUMPDEST 00002e17: DUP4 00002e18: CALLDATALOAD 00002e19: PUSH2 0x2e21 00002e1c: DUP2 00002e1d: PUSH2 0x2bc9 00002e20: JUMP 00002e21: JUMPDEST 00002e22: SWAP3 00002e23: POP 00002e24: PUSH1 0x20 00002e26: DUP5 00002e27: ADD 00002e28: CALLDATALOAD 00002e29: PUSH2 0x2e31 00002e2c: DUP2 00002e2d: PUSH2 0x2bc9 00002e30: JUMP 00002e31: JUMPDEST 00002e32: SWAP3 00002e33: SWAP6 00002e34: SWAP3 00002e35: SWAP5 00002e36: POP 00002e37: POP 00002e38: POP 00002e39: PUSH1 0x40 00002e3b: SWAP2 00002e3c: SWAP1 00002e3d: SWAP2 00002e3e: ADD 00002e3f: CALLDATALOAD 00002e40: SWAP1 00002e41: JUMP 00002e42: JUMPDEST 00002e43: PUSH1 0x00 00002e45: DUP1 00002e46: PUSH1 0x00 00002e48: PUSH1 0x60 00002e4a: DUP5 00002e4b: DUP7 00002e4c: SUB 00002e4d: SLT 00002e4e: ISZERO 00002e4f: PUSH2 0x2e57 00002e52: JUMPI 00002e53: PUSH1 0x00 00002e55: DUP1 00002e56: REVERT 00002e57: JUMPDEST 00002e58: DUP4 00002e59: CALLDATALOAD 00002e5a: PUSH2 0x2e62 00002e5d: DUP2 00002e5e: PUSH2 0x2bc9 00002e61: JUMP 00002e62: JUMPDEST 00002e63: SWAP6 00002e64: PUSH1 0x20 00002e66: DUP6 00002e67: ADD 00002e68: CALLDATALOAD 00002e69: SWAP6 00002e6a: POP 00002e6b: PUSH1 0x40 00002e6d: SWAP1 00002e6e: SWAP5 00002e6f: ADD 00002e70: CALLDATALOAD 00002e71: SWAP4 00002e72: SWAP3 00002e73: POP 00002e74: POP 00002e75: POP 00002e76: JUMP 00002e77: JUMPDEST 00002e78: PUSH1 0x00 00002e7a: DUP1 00002e7b: PUSH1 0x40 00002e7d: DUP4 00002e7e: DUP6 00002e7f: SUB 00002e80: SLT 00002e81: ISZERO 00002e82: PUSH2 0x2e8a 00002e85: JUMPI 00002e86: PUSH1 0x00 00002e88: DUP1 00002e89: REVERT 00002e8a: JUMPDEST 00002e8b: DUP3 00002e8c: CALLDATALOAD 00002e8d: PUSH2 0x2e95 00002e90: DUP2 00002e91: PUSH2 0x2bc9 00002e94: JUMP 00002e95: JUMPDEST 00002e96: SWAP2 00002e97: POP 00002e98: PUSH1 0x20 00002e9a: DUP4 00002e9b: ADD 00002e9c: CALLDATALOAD 00002e9d: PUSH2 0x2ea5 00002ea0: DUP2 00002ea1: PUSH2 0x2bc9 00002ea4: JUMP 00002ea5: JUMPDEST 00002ea6: DUP1 00002ea7: SWAP2 00002ea8: POP 00002ea9: POP 00002eaa: SWAP3 00002eab: POP 00002eac: SWAP3 00002ead: SWAP1 00002eae: POP 00002eaf: JUMP 00002eb0: JUMPDEST 00002eb1: PUSH1 0x00 00002eb3: DUP1 00002eb4: PUSH1 0x00 00002eb6: DUP1 00002eb7: PUSH1 0x00 00002eb9: PUSH1 0x60 00002ebb: DUP7 00002ebc: DUP9 00002ebd: SUB 00002ebe: SLT 00002ebf: ISZERO 00002ec0: PUSH2 0x2ec8 00002ec3: JUMPI 00002ec4: PUSH1 0x00 00002ec6: DUP1 00002ec7: REVERT 00002ec8: JUMPDEST 00002ec9: DUP6 00002eca: CALLDATALOAD 00002ecb: PUSH2 0x2ed3 00002ece: DUP2 00002ecf: PUSH2 0x2bc9 00002ed2: JUMP 00002ed3: JUMPDEST 00002ed4: SWAP5 00002ed5: POP 00002ed6: PUSH1 0x20 00002ed8: DUP7 00002ed9: ADD 00002eda: CALLDATALOAD 00002edb: PUSH8 0xffffffffffffffff 00002ee4: DUP1 00002ee5: DUP3 00002ee6: GT 00002ee7: ISZERO 00002ee8: PUSH2 0x2ef0 00002eeb: JUMPI 00002eec: PUSH1 0x00 00002eee: DUP1 00002eef: REVERT 00002ef0: JUMPDEST 00002ef1: PUSH2 0x2efc 00002ef4: DUP10 00002ef5: DUP4 00002ef6: DUP11 00002ef7: ADD 00002ef8: PUSH2 0x2d19 00002efb: JUMP 00002efc: JUMPDEST 00002efd: SWAP1 00002efe: SWAP7 00002eff: POP 00002f00: SWAP5 00002f01: POP 00002f02: PUSH1 0x40 00002f04: DUP9 00002f05: ADD 00002f06: CALLDATALOAD 00002f07: SWAP2 00002f08: POP 00002f09: DUP1 00002f0a: DUP3 00002f0b: GT 00002f0c: ISZERO 00002f0d: PUSH2 0x2f15 00002f10: JUMPI 00002f11: PUSH1 0x00 00002f13: DUP1 00002f14: REVERT 00002f15: JUMPDEST 00002f16: POP 00002f17: PUSH2 0x2cc6 00002f1a: DUP9 00002f1b: DUP3 00002f1c: DUP10 00002f1d: ADD 00002f1e: PUSH2 0x2d19 00002f21: JUMP 00002f22: JUMPDEST 00002f23: PUSH1 0x00 00002f25: PUSH1 0x20 00002f27: DUP3 00002f28: DUP5 00002f29: SUB 00002f2a: SLT 00002f2b: ISZERO 00002f2c: PUSH2 0x2f34 00002f2f: JUMPI 00002f30: PUSH1 0x00 00002f32: DUP1 00002f33: REVERT 00002f34: JUMPDEST 00002f35: POP 00002f36: CALLDATALOAD 00002f37: SWAP2 00002f38: SWAP1 00002f39: POP 00002f3a: JUMP 00002f3b: JUMPDEST 00002f3c: PUSH1 0x00 00002f3e: DUP1 00002f3f: PUSH1 0x00 00002f41: DUP1 00002f42: PUSH1 0x00 00002f44: DUP1 00002f45: PUSH1 0x60 00002f47: DUP8 00002f48: DUP10 00002f49: SUB 00002f4a: SLT 00002f4b: ISZERO 00002f4c: PUSH2 0x2f54 00002f4f: JUMPI 00002f50: PUSH1 0x00 00002f52: DUP1 00002f53: REVERT 00002f54: JUMPDEST 00002f55: DUP7 00002f56: CALLDATALOAD 00002f57: PUSH8 0xffffffffffffffff 00002f60: DUP1 00002f61: DUP3 00002f62: GT 00002f63: ISZERO 00002f64: PUSH2 0x2f6c 00002f67: JUMPI 00002f68: PUSH1 0x00 00002f6a: DUP1 00002f6b: REVERT 00002f6c: JUMPDEST 00002f6d: PUSH2 0x2f78 00002f70: DUP11 00002f71: DUP4 00002f72: DUP12 00002f73: ADD 00002f74: PUSH2 0x2d19 00002f77: JUMP 00002f78: JUMPDEST 00002f79: SWAP1 00002f7a: SWAP9 00002f7b: POP 00002f7c: SWAP7 00002f7d: POP 00002f7e: PUSH1 0x20 00002f80: DUP10 00002f81: ADD 00002f82: CALLDATALOAD 00002f83: SWAP2 00002f84: POP 00002f85: DUP1 00002f86: DUP3 00002f87: GT 00002f88: ISZERO 00002f89: PUSH2 0x2f91 00002f8c: JUMPI 00002f8d: PUSH1 0x00 00002f8f: DUP1 00002f90: REVERT 00002f91: JUMPDEST 00002f92: PUSH2 0x2f9d 00002f95: DUP11 00002f96: DUP4 00002f97: DUP12 00002f98: ADD 00002f99: PUSH2 0x2d19 00002f9c: JUMP 00002f9d: JUMPDEST 00002f9e: SWAP1 00002f9f: SWAP7 00002fa0: POP 00002fa1: SWAP5 00002fa2: POP 00002fa3: PUSH1 0x40 00002fa5: DUP10 00002fa6: ADD 00002fa7: CALLDATALOAD 00002fa8: SWAP2 00002fa9: POP 00002faa: DUP1 00002fab: DUP3 00002fac: GT 00002fad: ISZERO 00002fae: PUSH2 0x2fb6 00002fb1: JUMPI 00002fb2: PUSH1 0x00 00002fb4: DUP1 00002fb5: REVERT 00002fb6: JUMPDEST 00002fb7: POP 00002fb8: PUSH2 0x2fc3 00002fbb: DUP10 00002fbc: DUP3 00002fbd: DUP11 00002fbe: ADD 00002fbf: PUSH2 0x2d19 00002fc2: JUMP 00002fc3: JUMPDEST 00002fc4: SWAP8 00002fc5: SWAP11 00002fc6: SWAP7 00002fc7: SWAP10 00002fc8: POP 00002fc9: SWAP5 00002fca: SWAP8 00002fcb: POP 00002fcc: SWAP3 00002fcd: SWAP6 00002fce: SWAP4 00002fcf: SWAP5 00002fd0: SWAP3 00002fd1: POP 00002fd2: POP 00002fd3: POP 00002fd4: JUMP 00002fd5: JUMPDEST 00002fd6: PUSH1 0x00 00002fd8: DUP1 00002fd9: PUSH1 0x00 00002fdb: PUSH1 0x40 00002fdd: DUP5 00002fde: DUP7 00002fdf: SUB 00002fe0: SLT 00002fe1: ISZERO 00002fe2: PUSH2 0x2fea 00002fe5: JUMPI 00002fe6: PUSH1 0x00 00002fe8: DUP1 00002fe9: REVERT 00002fea: JUMPDEST 00002feb: DUP4 00002fec: CALLDATALOAD 00002fed: PUSH8 0xffffffffffffffff 00002ff6: DUP2 00002ff7: GT 00002ff8: ISZERO 00002ff9: PUSH2 0x3001 00002ffc: JUMPI 00002ffd: PUSH1 0x00 00002fff: DUP1 00003000: REVERT 00003001: JUMPDEST 00003002: PUSH2 0x300d 00003005: DUP7 00003006: DUP3 00003007: DUP8 00003008: ADD 00003009: PUSH2 0x2d19 0000300c: JUMP 0000300d: JUMPDEST 0000300e: SWAP1 0000300f: SWAP5 00003010: POP 00003011: SWAP3 00003012: POP 00003013: POP 00003014: PUSH1 0x20 00003016: DUP5 00003017: ADD 00003018: CALLDATALOAD 00003019: PUSH2 0x2d0e 0000301c: DUP2 0000301d: PUSH2 0x2da0 00003020: JUMP 00003021: JUMPDEST 00003022: PUSH1 0x00 00003024: DUP1 00003025: PUSH1 0x00 00003027: DUP1 00003028: PUSH1 0x80 0000302a: DUP6 0000302b: DUP8 0000302c: SUB 0000302d: SLT 0000302e: ISZERO 0000302f: PUSH2 0x3037 00003032: JUMPI 00003033: PUSH1 0x00 00003035: DUP1 00003036: REVERT 00003037: JUMPDEST 00003038: DUP5 00003039: CALLDATALOAD 0000303a: PUSH2 0x3042 0000303d: DUP2 0000303e: PUSH2 0x2bc9 00003041: JUMP 00003042: JUMPDEST 00003043: SWAP7 00003044: PUSH1 0x20 00003046: DUP7 00003047: ADD 00003048: CALLDATALOAD 00003049: SWAP7 0000304a: POP 0000304b: PUSH1 0x40 0000304d: DUP7 0000304e: ADD 0000304f: CALLDATALOAD 00003050: SWAP6 00003051: PUSH1 0x60 00003053: ADD 00003054: CALLDATALOAD 00003055: SWAP5 00003056: POP 00003057: SWAP3 00003058: POP 00003059: POP 0000305a: POP 0000305b: JUMP 0000305c: JUMPDEST 0000305d: PUSH1 0x00 0000305f: DUP1 00003060: PUSH1 0x40 00003062: DUP4 00003063: DUP6 00003064: SUB 00003065: SLT 00003066: ISZERO 00003067: PUSH2 0x306f 0000306a: JUMPI 0000306b: PUSH1 0x00 0000306d: DUP1 0000306e: REVERT 0000306f: JUMPDEST 00003070: DUP3 00003071: CALLDATALOAD 00003072: PUSH2 0x307a 00003075: DUP2 00003076: PUSH2 0x2bc9 00003079: JUMP 0000307a: JUMPDEST 0000307b: SWAP5 0000307c: PUSH1 0x20 0000307e: SWAP4 0000307f: SWAP1 00003080: SWAP4 00003081: ADD 00003082: CALLDATALOAD 00003083: SWAP4 00003084: POP 00003085: POP 00003086: POP 00003087: JUMP 00003088: JUMPDEST 00003089: PUSH1 0x00 0000308b: DUP1 0000308c: PUSH1 0x00 0000308e: DUP1 0000308f: PUSH1 0x00 00003091: DUP1 00003092: PUSH1 0xa0 00003094: DUP8 00003095: DUP10 00003096: SUB 00003097: SLT 00003098: ISZERO 00003099: PUSH2 0x30a1 0000309c: JUMPI 0000309d: PUSH1 0x00 0000309f: DUP1 000030a0: REVERT 000030a1: JUMPDEST 000030a2: DUP7 000030a3: CALLDATALOAD 000030a4: PUSH8 0xffffffffffffffff 000030ad: DUP2 000030ae: GT 000030af: ISZERO 000030b0: PUSH2 0x30b8 000030b3: JUMPI 000030b4: PUSH1 0x00 000030b6: DUP1 000030b7: REVERT 000030b8: JUMPDEST 000030b9: PUSH2 0x30c4 000030bc: DUP10 000030bd: DUP3 000030be: DUP11 000030bf: ADD 000030c0: PUSH2 0x2c24 000030c3: JUMP 000030c4: JUMPDEST 000030c5: SWAP1 000030c6: SWAP8 000030c7: POP 000030c8: SWAP6 000030c9: POP 000030ca: POP 000030cb: PUSH1 0x20 000030cd: DUP8 000030ce: ADD 000030cf: CALLDATALOAD 000030d0: PUSH2 0x30d8 000030d3: DUP2 000030d4: PUSH2 0x2bc9 000030d7: JUMP 000030d8: JUMPDEST 000030d9: SWAP4 000030da: POP 000030db: PUSH1 0x40 000030dd: DUP8 000030de: ADD 000030df: CALLDATALOAD 000030e0: PUSH2 0x30e8 000030e3: DUP2 000030e4: PUSH2 0x2bc9 000030e7: JUMP 000030e8: JUMPDEST 000030e9: SWAP6 000030ea: SWAP9 000030eb: SWAP5 000030ec: SWAP8 000030ed: POP 000030ee: SWAP3 000030ef: SWAP6 000030f0: PUSH1 0x60 000030f2: DUP2 000030f3: ADD 000030f4: CALLDATALOAD 000030f5: SWAP5 000030f6: PUSH1 0x80 000030f8: SWAP1 000030f9: SWAP2 000030fa: ADD 000030fb: CALLDATALOAD 000030fc: SWAP4 000030fd: POP 000030fe: SWAP2 000030ff: POP 00003100: POP 00003101: JUMP 00003102: JUMPDEST 00003103: PUSH1 0x00 00003105: DUP1 00003106: PUSH1 0x00 00003108: DUP1 00003109: PUSH1 0x00 0000310b: DUP1 0000310c: PUSH1 0xa0 0000310e: DUP8 0000310f: DUP10 00003110: SUB 00003111: SLT 00003112: ISZERO 00003113: PUSH2 0x311b 00003116: JUMPI 00003117: PUSH1 0x00 00003119: DUP1 0000311a: REVERT 0000311b: JUMPDEST 0000311c: DUP7 0000311d: CALLDATALOAD 0000311e: PUSH2 0x3126 00003121: DUP2 00003122: PUSH2 0x2bc9 00003125: JUMP 00003126: JUMPDEST 00003127: SWAP6 00003128: POP 00003129: PUSH1 0x20 0000312b: DUP8 0000312c: ADD 0000312d: CALLDATALOAD 0000312e: PUSH2 0x3136 00003131: DUP2 00003132: PUSH2 0x2bc9 00003135: JUMP 00003136: JUMPDEST 00003137: SWAP5 00003138: POP 00003139: PUSH1 0x40 0000313b: DUP8 0000313c: ADD 0000313d: CALLDATALOAD 0000313e: PUSH2 0x3146 00003141: DUP2 00003142: PUSH2 0x2bc9 00003145: JUMP 00003146: JUMPDEST 00003147: SWAP4 00003148: POP 00003149: PUSH1 0x60 0000314b: DUP8 0000314c: ADD 0000314d: CALLDATALOAD 0000314e: PUSH2 0x3156 00003151: DUP2 00003152: PUSH2 0x2bc9 00003155: JUMP 00003156: JUMPDEST 00003157: SWAP3 00003158: POP 00003159: PUSH1 0x80 0000315b: DUP8 0000315c: ADD 0000315d: CALLDATALOAD 0000315e: PUSH8 0xffffffffffffffff 00003167: DUP2 00003168: GT 00003169: ISZERO 0000316a: PUSH2 0x3172 0000316d: JUMPI 0000316e: PUSH1 0x00 00003170: DUP1 00003171: REVERT 00003172: JUMPDEST 00003173: PUSH2 0x2fc3 00003176: DUP10 00003177: DUP3 00003178: DUP11 00003179: ADD 0000317a: PUSH2 0x2d19 0000317d: JUMP 0000317e: JUMPDEST 0000317f: PUSH1 0x00 00003181: DUP1 00003182: PUSH1 0x00 00003184: PUSH1 0x60 00003186: DUP5 00003187: DUP7 00003188: SUB 00003189: SLT 0000318a: ISZERO 0000318b: PUSH2 0x3193 0000318e: JUMPI 0000318f: PUSH1 0x00 00003191: DUP1 00003192: REVERT 00003193: JUMPDEST 00003194: DUP4 00003195: CALLDATALOAD 00003196: PUSH2 0x319e 00003199: DUP2 0000319a: PUSH2 0x2bc9 0000319d: JUMP 0000319e: JUMPDEST 0000319f: SWAP3 000031a0: POP 000031a1: PUSH1 0x20 000031a3: DUP5 000031a4: ADD 000031a5: CALLDATALOAD 000031a6: PUSH2 0x31ae 000031a9: DUP2 000031aa: PUSH2 0x2bc9 000031ad: JUMP 000031ae: JUMPDEST 000031af: SWAP2 000031b0: POP 000031b1: PUSH1 0x40 000031b3: DUP5 000031b4: ADD 000031b5: CALLDATALOAD 000031b6: PUSH2 0x2d0e 000031b9: DUP2 000031ba: PUSH2 0x2bc9 000031bd: JUMP 000031be: JUMPDEST 000031bf: PUSH1 0x00 000031c1: PUSH1 0x20 000031c3: DUP3 000031c4: DUP5 000031c5: SUB 000031c6: SLT 000031c7: ISZERO 000031c8: PUSH2 0x31d0 000031cb: JUMPI 000031cc: PUSH1 0x00 000031ce: DUP1 000031cf: REVERT 000031d0: JUMPDEST 000031d1: POP 000031d2: MLOAD 000031d3: SWAP2 000031d4: SWAP1 000031d5: POP 000031d6: JUMP 000031d7: JUMPDEST 000031d8: PUSH12 0xffffffffffffffffffffffff 000031e5: NOT 000031e6: PUSH1 0x60 000031e8: SWAP7 000031e9: DUP8 000031ea: SHL 000031eb: DUP2 000031ec: AND 000031ed: DUP3 000031ee: MSTORE 000031ef: SWAP5 000031f0: SWAP1 000031f1: SWAP6 000031f2: SHL 000031f3: SWAP1 000031f4: SWAP4 000031f5: AND 000031f6: PUSH1 0x14 000031f8: DUP6 000031f9: ADD 000031fa: MSTORE 000031fb: PUSH1 0x28 000031fd: DUP5 000031fe: ADD 000031ff: SWAP2 00003200: SWAP1 00003201: SWAP2 00003202: MSTORE 00003203: PUSH1 0x48 00003205: DUP4 00003206: ADD 00003207: MSTORE 00003208: PUSH1 0x68 0000320a: DUP3 0000320b: ADD 0000320c: MSTORE 0000320d: PUSH1 0x88 0000320f: ADD 00003210: SWAP1 00003211: JUMP 00003212: JUMPDEST 00003213: PUSH4 0x4e487b71 00003218: PUSH1 0xe0 0000321a: SHL 0000321b: PUSH1 0x00 0000321d: MSTORE 0000321e: PUSH1 0x11 00003220: PUSH1 0x04 00003222: MSTORE 00003223: PUSH1 0x24 00003225: PUSH1 0x00 00003227: REVERT 00003228: JUMPDEST 00003229: DUP1 0000322a: DUP3 0000322b: ADD 0000322c: DUP1 0000322d: DUP3 0000322e: GT 0000322f: ISZERO 00003230: PUSH2 0x323b 00003233: JUMPI 00003234: PUSH2 0x323b 00003237: PUSH2 0x3212 0000323a: JUMP 0000323b: JUMPDEST 0000323c: SWAP3 0000323d: SWAP2 0000323e: POP 0000323f: POP 00003240: JUMP 00003241: JUMPDEST 00003242: PUSH4 0x4e487b71 00003247: PUSH1 0xe0 00003249: SHL 0000324a: PUSH1 0x00 0000324c: MSTORE 0000324d: PUSH1 0x32 0000324f: PUSH1 0x04 00003251: MSTORE 00003252: PUSH1 0x24 00003254: PUSH1 0x00 00003256: REVERT 00003257: JUMPDEST 00003258: DUP1 00003259: DUP3 0000325a: MUL 0000325b: DUP2 0000325c: ISZERO 0000325d: DUP3 0000325e: DUP3 0000325f: DIV 00003260: DUP5 00003261: EQ 00003262: OR 00003263: PUSH2 0x323b 00003266: JUMPI 00003267: PUSH2 0x323b 0000326a: PUSH2 0x3212 0000326d: JUMP 0000326e: JUMPDEST 0000326f: PUSH1 0x00 00003271: DUP3 00003272: PUSH2 0x328b 00003275: JUMPI 00003276: PUSH4 0x4e487b71 0000327b: PUSH1 0xe0 0000327d: SHL 0000327e: PUSH1 0x00 00003280: MSTORE 00003281: PUSH1 0x12 00003283: PUSH1 0x04 00003285: MSTORE 00003286: PUSH1 0x24 00003288: PUSH1 0x00 0000328a: REVERT 0000328b: JUMPDEST 0000328c: POP 0000328d: DIV 0000328e: SWAP1 0000328f: JUMP 00003290: JUMPDEST 00003291: DUP2 00003292: DUP2 00003293: SUB 00003294: DUP2 00003295: DUP2 00003296: GT 00003297: ISZERO 00003298: PUSH2 0x323b 0000329b: JUMPI 0000329c: PUSH2 0x323b 0000329f: PUSH2 0x3212 000032a2: JUMP 000032a3: JUMPDEST 000032a4: SWAP3 000032a5: DUP4 000032a6: MSTORE 000032a7: PUSH1 0x20 000032a9: DUP4 000032aa: ADD 000032ab: SWAP2 000032ac: SWAP1 000032ad: SWAP2 000032ae: MSTORE 000032af: PUSH1 0x01 000032b1: PUSH1 0x01 000032b3: PUSH1 0xa0 000032b5: SHL 000032b6: SUB 000032b7: AND 000032b8: PUSH1 0x40 000032ba: DUP3 000032bb: ADD 000032bc: MSTORE 000032bd: PUSH1 0x60 000032bf: ADD 000032c0: SWAP1 000032c1: JUMP 000032c2: JUMPDEST 000032c3: PUSH1 0x00 000032c5: PUSH1 0x20 000032c7: DUP3 000032c8: DUP5 000032c9: SUB 000032ca: SLT 000032cb: ISZERO 000032cc: PUSH2 0x32d4 000032cf: JUMPI 000032d0: PUSH1 0x00 000032d2: DUP1 000032d3: REVERT 000032d4: JUMPDEST 000032d5: DUP2 000032d6: MLOAD 000032d7: PUSH2 0x2bfb 000032da: DUP2 000032db: PUSH2 0x2da0 000032de: JUMP 000032df: JUMPDEST 000032e0: PUSH1 0x00 000032e2: JUMPDEST 000032e3: DUP4 000032e4: DUP2 000032e5: LT 000032e6: ISZERO 000032e7: PUSH2 0x32fa 000032ea: JUMPI 000032eb: DUP2 000032ec: DUP2 000032ed: ADD 000032ee: MLOAD 000032ef: DUP4 000032f0: DUP3 000032f1: ADD 000032f2: MSTORE 000032f3: PUSH1 0x20 000032f5: ADD 000032f6: PUSH2 0x32e2 000032f9: JUMP 000032fa: JUMPDEST 000032fb: POP 000032fc: POP 000032fd: PUSH1 0x00 000032ff: SWAP2 00003300: ADD 00003301: MSTORE 00003302: JUMP 00003303: JUMPDEST 00003304: PUSH1 0x00 00003306: DUP2 00003307: MLOAD 00003308: DUP1 00003309: DUP5 0000330a: MSTORE 0000330b: PUSH2 0x331b 0000330e: DUP2 0000330f: PUSH1 0x20 00003311: DUP7 00003312: ADD 00003313: PUSH1 0x20 00003315: DUP7 00003316: ADD 00003317: PUSH2 0x32df 0000331a: JUMP 0000331b: JUMPDEST 0000331c: PUSH1 0x1f 0000331e: ADD 0000331f: PUSH1 0x1f 00003321: NOT 00003322: AND 00003323: SWAP3 00003324: SWAP1 00003325: SWAP3 00003326: ADD 00003327: PUSH1 0x20 00003329: ADD 0000332a: SWAP3 0000332b: SWAP2 0000332c: POP 0000332d: POP 0000332e: JUMP 0000332f: JUMPDEST 00003330: DUP3 00003331: DUP2 00003332: MSTORE 00003333: PUSH1 0x40 00003335: PUSH1 0x20 00003337: DUP3 00003338: ADD 00003339: MSTORE 0000333a: PUSH1 0x00 0000333c: PUSH2 0x29ee 0000333f: PUSH1 0x40 00003341: DUP4 00003342: ADD 00003343: DUP5 00003344: PUSH2 0x3303 00003347: JUMP 00003348: JUMPDEST 00003349: PUSH1 0x40 0000334b: DUP2 0000334c: MSTORE 0000334d: PUSH1 0x00 0000334f: PUSH2 0x335b 00003352: PUSH1 0x40 00003354: DUP4 00003355: ADD 00003356: DUP6 00003357: PUSH2 0x3303 0000335a: JUMP 0000335b: JUMPDEST 0000335c: SWAP1 0000335d: POP 0000335e: DUP3 0000335f: PUSH1 0x20 00003361: DUP4 00003362: ADD 00003363: MSTORE 00003364: SWAP4 00003365: SWAP3 00003366: POP 00003367: POP 00003368: POP 00003369: JUMP 0000336a: JUMPDEST 0000336b: PUSH1 0x20 0000336d: DUP1 0000336e: DUP3 0000336f: MSTORE 00003370: PUSH1 0x2b 00003372: SWAP1 00003373: DUP3 00003374: ADD 00003375: MSTORE 00003376: PUSH32 0x496e697469616c697a61626c653a20636f6e7472616374206973206e6f742069 00003397: PUSH1 0x40 00003399: DUP3 0000339a: ADD 0000339b: MSTORE 0000339c: PUSH11 0x6e697469616c697a696e67 000033a8: PUSH1 0xa8 000033aa: SHL 000033ab: PUSH1 0x60 000033ad: DUP3 000033ae: ADD 000033af: MSTORE 000033b0: PUSH1 0x80 000033b2: ADD 000033b3: SWAP1 000033b4: JUMP 000033b5: JUMPDEST 000033b6: PUSH1 0x00 000033b8: DUP3 000033b9: MLOAD 000033ba: PUSH2 0x33c7 000033bd: DUP2 000033be: DUP5 000033bf: PUSH1 0x20 000033c1: DUP8 000033c2: ADD 000033c3: PUSH2 0x32df 000033c6: JUMP 000033c7: JUMPDEST 000033c8: SWAP2 000033c9: SWAP1 000033ca: SWAP2 000033cb: ADD 000033cc: SWAP3 000033cd: SWAP2 000033ce: POP 000033cf: POP 000033d0: JUMP 000033d1: JUMPDEST 000033d2: PUSH1 0x20 000033d4: DUP2 000033d5: MSTORE 000033d6: PUSH1 0x00 000033d8: PUSH2 0x2bfb 000033db: PUSH1 0x20 000033dd: DUP4 000033de: ADD 000033df: DUP5 000033e0: PUSH2 0x3303 000033e3: JUMP 000033e4: INVALID 000033e5: LOG2 000033e6: PUSH5 0x6970667358 000033ec: UNKNOWN(0x22) 000033ed: SLT 000033ee: KECCAK256 000033ef: GT 000033f0: UNKNOWN(0xE9) 000033f1: PUSH13 0x20b65180197b84b48e0f2651c3 000033ff: DIV 00003400: SWAP16 00003401: UNKNOWN(0x24) 00003402: SDIV 00003403: UNKNOWN(0xC7) 00003404: DUP11 00003405: UNKNOWN(0xE8) 00003406: XOR 00003407: UNKNOWN(0x0E) 00003408: UNKNOWN(0x21) 00003409: UNKNOWN(0xAA) 0000340a: BLOBBASEFEE 0000340b: LOG3 0000340c: UNKNOWN(0xA5) 0000340d: UNKNOWN(0xB3) 0000340e: UNKNOWN(0xC8) 0000340f: PUSH5 0x736f6c6343 00003415: STOP 00003416: ADDMOD 00003417: AND 00003418: STOP 00003419: CALLER
| Severity | Category | Tool | Title | Confidence | Validated | Confirmed | Details |
|---|---|---|---|---|---|---|---|
| high | other | detector | Untrusted CALL target/value reachable | 60 | no | no |
viewtrace_id: 0x2e24a0c90dd1ea7d1161ffa11c67f114b8e72562e69634ed5433389367649139
call_targets:
0x088884253ac8fbda22b40b40104a891f8c44337d
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0x2e24a0c90dd1ea7d1161ffa11c67f114b8e72562e69634ed5433389367649139",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0x088884253ac8fbda22b40b40104a891f8c44337d"
],
"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": "0xe79994cb",
"selector": "0xe79994cb",
"calldata_variants": [
"0xe79994cb",
"0xe79994cb0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xed421e14",
"selector": "0xed421e14",
"calldata_variants": [
"0xed421e14",
"0xed421e140000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf4887f15",
"selector": "0xf4887f15",
"calldata_variants": [
"0xf4887f15",
"0xf4887f150000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf6eb192d",
"selector": "0xf6eb192d",
"calldata_variants": [
"0xf6eb192d",
"0xf6eb192d0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf8453e7c",
"selector": "0xf8453e7c",
"calldata_variants": [
"0xf8453e7c",
"0xf8453e7c0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf92f9e10",
"selector": "0xf92f9e10",
"calldata_variants": [
"0xf92f9e10",
"0xf92f9e100000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xccbba0c0",
"selector": "0xccbba0c0",
"calldata_variants": [
"0xccbba0c0",
"0xccbba0c00000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xce206dc6",
"selector": "0xce206dc6",
"calldata_variants": [
"0xce206dc6",
"0xce206dc60000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 9092,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 10970,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"call_count": 2,
"guards_detected": [],
"untrusted_call_count": 2
}
|
| high | other | detector | ETH value transfer possible | 55 | no | no |
viewtrace_id: 0x2e24a0c90dd1ea7d1161ffa11c67f114b8e72562e69634ed5433389367649139
call_targets:
0x088884253ac8fbda22b40b40104a891f8c44337d
target_varies:
no
classification:
constant_target
validation_json{
"sink": "CALL",
"errors": 0,
"status": "sink_reached",
"attempts": 1,
"trace_id": "0x2e24a0c90dd1ea7d1161ffa11c67f114b8e72562e69634ed5433389367649139",
"confirmed": false,
"trace_mode": "callTracer",
"call_targets": [
"0x088884253ac8fbda22b40b40104a891f8c44337d"
],
"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": "0xe79994cb",
"selector": "0xe79994cb",
"calldata_variants": [
"0xe79994cb",
"0xe79994cb0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xed421e14",
"selector": "0xed421e14",
"calldata_variants": [
"0xed421e14",
"0xed421e140000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf4887f15",
"selector": "0xf4887f15",
"calldata_variants": [
"0xf4887f15",
"0xf4887f150000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf6eb192d",
"selector": "0xf6eb192d",
"calldata_variants": [
"0xf6eb192d",
"0xf6eb192d0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf8453e7c",
"selector": "0xf8453e7c",
"calldata_variants": [
"0xf8453e7c",
"0xf8453e7c0000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xf92f9e10",
"selector": "0xf92f9e10",
"calldata_variants": [
"0xf92f9e10",
"0xf92f9e100000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xccbba0c0",
"selector": "0xccbba0c0",
"calldata_variants": [
"0xccbba0c0",
"0xccbba0c00000000000000000000000000000000000000000000000000000000000000000"
]
},
{
"calldata": "0xce206dc6",
"selector": "0xce206dc6",
"calldata_variants": [
"0xce206dc6",
"0xce206dc60000000000000000000000000000000000000000000000000000000000000000"
]
}
]
}
evidence_json{
"examples": [
{
"pc": 9092,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
},
{
"pc": 10970,
"opcode": "CALL",
"returndata_checked": null,
"value_expression_category": "computed",
"target_expression_category": "computed"
}
],
"eth_value_calls": 2,
"guards_detected": []
}
|
| info | other | cast | Heavy CALL-family usage | 55 | no | — |
viewevidence_json{
"notes": "large number of CALL/CALLCODE/STATICCALL opcodes; review external call patterns",
"call_family_count": 12
}
|