conkas
conkas copied to clipboard
AssertionError: assert (self.insn.pops == len(self.arguments)
$ cat demo.hex
608060405234801561001057600080fd5b506004361061007d5760003560e01c8063875bdc6c1161005b578063875bdc6c146104635780638da5cb5b1461049b578063e74f3fbb146104bf578063fc0c546a146104c75761007d565b80630b6d621c146100825780634d08719f146100ed5780636973955d1461041a575b600080fd5b6100a86004803603602081101561009857600080fd5b50356001600160a01b03166104cf565b604080516001600160401b039788168152958716602087015293861685850152919094166060840152608083019390935260a082019290925290519081900360c00190f35b610418600480360360c081101561010357600080fd5b810190602081018135600160201b81111561011d57600080fd5b82018360208201111561012f57600080fd5b803590602001918460208302840111600160201b8311171561015057600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b81111561019f57600080fd5b8201836020820111156101b157600080fd5b803590602001918460208302840111600160201b831117156101d257600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b81111561022157600080fd5b82018360208201111561023357600080fd5b803590602001918460208302840111600160201b8311171561025457600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b8111156102a357600080fd5b8201836020820111156102b557600080fd5b803590602001918460208302840111600160201b831117156102d657600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b81111561032557600080fd5b82018360208201111561033757600080fd5b803590602001918460208302840111600160201b8311171561035857600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b8111156103a757600080fd5b8201836020820111156103b957600080fd5b803590602001918460208302840111600160201b831117156103da57600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092955061051c945050505050565b005b6104406004803603602081101561043057600080fd5b50356001600160a01b0316610cce565b604080516001600160401b03909316835260208301919091528051918290030190f35b6104896004803603602081101561047957600080fd5b50356001600160a01b0316610eb7565b60408051918252519081900360200190f35b6104a3610ef0565b604080516001600160a01b039092168252519081900360200190f35b610418610eff565b6104a36111bd565b60026020819052600091825260409091208054600182015491909201546001600160401b0380841693600160401b8104821693600160801b8204831693600160c01b909204909216919086565b6001546001600160a01b0316331461057e5760408051600160e51b62461bcd02815260206004820152600c60248201527f756e617574686f72697a65640000000000000000000000000000000000000000604482015290519081900360640190fd5b84518651146105c55760408051600160e51b62461bcd0281526020600482015260166024820152600080516020611581833981519152604482015290519081900360640190fd5b835186511461060c5760408051600160e51b62461bcd0281526020600482015260166024820152600080516020611581833981519152604482015290519081900360640190fd5b82518651146106535760408051600160e51b62461bcd0281526020600482015260166024820152600080516020611581833981519152604482015290519081900360640190fd5b815186511461069a5760408051600160e51b62461bcd0281526020600482015260166024820152600080516020611581833981519152604482015290519081900360640190fd5b80518651146106e15760408051600160e51b62461bcd0281526020600482015260166024820152600080516020611581833981519152604482015290519081900360640190fd5b60005b8651811015610cc557600260008883815181106106fd57fe5b6020908102919091018101516001600160a01b0316825281019190915260400160002054600160c01b90046001600160401b0316156107865760408051600160e51b62461bcd02815260206004820152601760248201527f746f6b656e2d757365722d6772616e742d657869737473000000000000000000604482015290519081900360640190fd5b85818151811061079257fe5b60200260200101516001600160401b0316600014156107fb5760408051600160e51b62461bcd02815260206004820152601260248201527f73686f756c6420626520706f7369746976650000000000000000000000000000604482015290519081900360640190fd5b600061083f85838151811061080c57fe5b60200260200101516001600160401b031687848151811061082957fe5b60200260200101516111cc90919063ffffffff16565b9050600081116108995760408051600160e51b62461bcd02815260206004820152601a60248201527f302d616d6f756e742d7665737465642d7065722d706572696f64000000000000604482015290519081900360640190fd5b60005460015484516001600160a01b03928316926323b872dd92169030906108f1908890889081106108c757fe5b60200260200101518b88815181106108db57fe5b602002602001015161123990919063ffffffff16565b6040805163ffffffff861660e01b81526001600160a01b0394851660048201529290931660248301526044820152905160648083019260209291908290030181600087803b15801561094257600080fd5b505af1158015610956573d6000803e3d6000fd5b505050506040513d602081101561096c57600080fd5b50610977905061152a565b6040518060c0016040528087858151811061098e57fe5b60200260200101516001600160401b0316815260200160006001600160401b031681526020018685815181106109c057fe5b60200260200101516001600160401b031681526020018985815181106109e257fe5b60200260200101516001600160401b03168152602001888581518110610a0457fe5b602002602001015181526020016000815250905080600260008b8681518110610a2957fe5b6020908102919091018101516001600160a01b031682528181019290925260409081016000908120845181549486015193860151606087015167ffffffffffffffff199096166001600160401b03928316176fffffffffffffffff00000000000000001916600160401b958316959095029490941777ffffffffffffffff000000000000000000000000000000001916600160801b94821694909402939093176001600160c01b0316600160c01b93909416929092029290921781556080830151600182015560a0909201516002909201919091558451859085908110610b0c57fe5b60200260200101511115610bd55760005489516001600160a01b039091169063a9059cbb908b9086908110610b3d57fe5b6020026020010151868681518110610b5157fe5b60200260200101516040518363ffffffff1660e01b815260040180836001600160a01b03166001600160a01b0316815260200182815260200192505050602060405180830381600087803b158015610ba857600080fd5b505af1158015610bbc573d6000803e3d6000fd5b505050506040513d6020811015610bd257600080fd5b50505b7f7615a186972eabc0f60985a3bb87fa8d09605913ad595b02eb6e7f11285cf53c898481518110610c0257fe5b6020026020010151898581518110610c1657fe5b6020026020010151898681518110610c2a57fe5b6020026020010151898781518110610c3e57fe5b6020026020010151898881518110610c5257fe5b6020026020010151898981518110610c6657fe5b602090810291909101810151604080516001600160a01b0390981688526001600160401b0396871692880192909252868201949094529184166060860152909216608084015260a0830152519081900360c00190a150506001016106e4565b50505050505050565b600080610cd961152a565b506001600160a01b038316600090815260026020818152604092839020835160c08101855281546001600160401b038082168352600160401b8204811694830194909452600160801b8104841695820195909552600160c01b909404909116606084018190526001820154608085015291015460a0830152421015610d65575060009150819050610eb2565b6000610d8782606001516001600160401b03164261129d90919063ffffffff16565b6040830151835191925062015180830491610db3916001600160401b039091169063ffffffff6112fd16565b6001600160401b0316816001600160401b031610610e18576000610de88460a00151856080015161129d90919063ffffffff16565b60208501518551919250610e0b916001600160401b03169063ffffffff61137a16565b95509350610eb292505050565b6000610e3a8460400151836001600160401b03166113e690919063ffffffff16565b90506000610e5e8560200151836001600160401b031661137a90919063ffffffff16565b85516080870151919250600091610e83916001600160401b031663ffffffff6111cc16565b90506000610ea06001600160401b0384168363ffffffff61146516565b929850919650610eb295505050505050565b915091565b6001600160a01b0381166000908152600260208190526040822090810154600190910154610eea9163ffffffff61129d16565b92915050565b6001546001600160a01b031681565b60005460408051600160e01b63f8023eb302815233600482015290516001600160a01b039092169163f8023eb391602480820192602092909190829003018186803b158015610f4d57600080fd5b505afa158015610f61573d6000803e3d6000fd5b505050506040513d6020811015610f7757600080fd5b505115610fce5760408051600160e51b62461bcd02815260206004820152601260248201527f4c6f636b656420666f7220475620766f74650000000000000000000000000000604482015290519081900360640190fd5b600080610fda33610cce565b9092509050806110345760408051600160e51b62461bcd02815260206004820152601860248201527f746f6b656e2d7a65726f2d616d6f756e742d7665737465640000000000000000604482015290519081900360640190fd5b336000908152600260205260409020805461105f90600160401b90046001600160401b0316846114c1565b81546001600160401b0391909116600160401b026fffffffffffffffff00000000000000001990911617815560028101546110a0908363ffffffff61123916565b60028201556000805460408051600160e01b63a9059cbb0281523360048201526024810186905290516001600160a01b039092169263a9059cbb926044808401936020939083900390910190829087803b1580156110fd57600080fd5b505af1158015611111573d6000803e3d6000fd5b505050506040513d602081101561112757600080fd5b505161117d5760408051600160e51b62461bcd02815260206004820152601c60248201527f746f6b656e2d73656e6465722d7472616e736665722d6661696c656400000000604482015290519081900360640190fd5b604080513381526020810184905281517f896e034966eaaf1adc54acc0f257056febbd300c9e47182cf761982cf1f5e430929181900390910190a1505050565b6000546001600160a01b031681565b60008082116112255760408051600160e51b62461bcd02815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b600082848161123057fe5b04949350505050565b6000828201838110156112965760408051600160e51b62461bcd02815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6000828211156112f75760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b60006001600160401b03831661131557506000610eea565b8282026001600160401b03808416908086169083168161133157fe5b046001600160401b03161461129657604051600160e51b62461bcd0281526004018080602001828103825260218152602001806115606021913960400191505060405180910390fd5b6000826001600160401b0316826001600160401b031611156112f75760408051600160e51b62461bcd02815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b600080826001600160401b0316116114485760408051600160e51b62461bcd02815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b6000826001600160401b0316846001600160401b03168161123057fe5b60008261147457506000610eea565b8282028284828161148157fe5b041461129657604051600160e51b62461bcd0281526004018080602001828103825260218152602001806115606021913960400191505060405180910390fd5b60008282016001600160401b0380851690821610156112965760408051600160e51b62461bcd02815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6040805160c081018252600080825260208201819052918101829052606081018290526080810182905260a08101919091529056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77446966666572656e74206172726179206c656e67746800000000000000000000a165627a7a723058200b84218a4082d98371b0875b78f51aae51a58c0585ebbfe0fa305fa3fff1f0580029
$ python conkas.py demo.hex
Analysing demo.hex...
Traceback (most recent call last):
File "conkas.py", line 105, in main
ssa = Recover(bytecode, edges=[], optimize=True)
File "/data-hdd/ethereum/tools/conkas/rattle/recover.py", line 768, in __init__
self.internal = InternalRecover(filedata, edges, optimize, split_functions)
File "/data-hdd/ethereum/tools/conkas/rattle/recover.py", line 37, in __init__
self.guarenteed_optimizations()
File "/data-hdd/ethereum/tools/conkas/rattle/recover.py", line 674, in guarenteed_optimizations
if reader.insn.is_push and reader.replace_uses_with(item):
File "/data-hdd/ethereum/tools/conkas/rattle/ssa.py", line 397, in replace_uses_with
reader.replace_argument(self.return_value, sv)
File "/data-hdd/ethereum/tools/conkas/rattle/ssa.py", line 289, in replace_argument
assert (self.insn.pops == len(self.arguments) or
AssertionError