# # Panoramix v4 Oct 2019 # Decompiled source of 0x4f4e0f2cb72E718fC0433222768c57e823162152 # # Let's make the world open source # # # I failed with these: # - unknowna270ef06(?) # All the rest is below. # def storage: stor0 is uint256 at storage 0 stor0 is addr at storage 0 def _fallback() payable: # default function stop def unknown7f5b002e(uint256 _param1): # not payable require calldata.size - 4 >=′ 32 require _param1 == addr(_param1) return eth.balance(_param1) def unknown363a7ef7(): # not payable if not addr(stor0): uint256(stor0) = tx.origin or Mask(96, 160, uint256(stor0)) if addr(stor0) != tx.origin: revert with 0, 'bad origin' def unknown746a5053(uint256 _param1, uint256 _param2) payable: require calldata.size - 4 >=′ 64 require _param1 == addr(_param1) require _param2 == _param2 if not addr(stor0): uint256(stor0) = tx.origin or Mask(96, 160, uint256(stor0)) if addr(stor0) != tx.origin: revert with 0, 'bad origin' create contract with 0 wei code: 0xfe608060405234801561001057600080fd5b5060da8061001f6000396000f3fe608060405260043610601c5760003560e01c8063f2adf1cb14601e575b005b348015602957600080fd5b50601c60353660046050565b806001600160a01b0316ff5b8035604a816083565b92915050565b600060208284031215606157600080fd5b6000606b84846041565b949350505050565b60006001600160a01b038216604a565b608a816073565b8114609457600080fd5b5056fea365627a7a7231582002418c334d1aed8da2f2f5f053319e0c542be659c16228e886da830043f4c02a6c6578706572696d656e74616cf564736f6c634300051000 if not create.new_address: revert with ext_call.return_data[0 len return_data.size] call addr(create.new_address) with: value _param2 wei gas 2300 * is_zero(value) wei if not ext_call.success: revert with ext_call.return_data[0 len return_data.size] require ext_code.size(addr(create.new_address)) call addr(create.new_address).0xf2adf1cb with: gas gas_remaining wei args addr(_param1) if not ext_call.success: revert with ext_call.return_data[0 len return_data.size] return 0, 64, 0 def unknown41fc3baf(uint256 _param1, array _param2, uint256 _param3) payable: require calldata.size - 4 >=′ 96 require _param1 == addr(_param1) require _param2 <= 18446744073709551615 require _param2 + 35 <′ calldata.size require _param2.length <= 18446744073709551615 require ceil32(_param2.length) + 128 >= 96 and ceil32(_param2.length) + 128 <= 18446744073709551615 require _param2 + _param2.length + 36 <= calldata.size mem[128 len _param2.length] = _param2[all] mem[_param2.length + 128] = 0 require _param3 == _param3 if not addr(stor0): uint256(stor0) = tx.origin or Mask(96, 160, uint256(stor0)) if addr(stor0) != tx.origin: revert with 0, 'bad origin' mem[ceil32(_param2.length) + 128 len ceil32(_param2.length)] = _param2[all], mem[_param2.length + 128 len ceil32(_param2.length) - _param2.length] if ceil32(_param2.length) > _param2.length: mem[ceil32(_param2.length) + _param2.length + 128] = 0 call addr(_param1) with: funct Mask(32, -(8 * ceil32(_param2.length) + -_param2.length + 4) + 256, 0) >> -(8 * ceil32(_param2.length) + -_param2.length + 4) + 256 value _param3 wei gas gas_remaining wei args mem[ceil32(_param2.length) + 132 len _param2.length - 4] if return_data.size: return bool(ext_call.success), Array(len=return_data.size, data=ext_call.return_data) mem[ceil32(_param2.length) + 128] = bool(ext_call.success) mem[ceil32(_param2.length) + 160] = 64 mem[ceil32(_param2.length) + 192] = _param2.length return Mask(8 * -ceil32(_param2.length) + _param2.length + 32, 0, 0), mem[_param2.length + 160 len (2 * ceil32(_param2.length)) + -_param2.length + 64] def unknown8b418713(uint256 _param1, uint256 _param2, uint256 _param3, array _param4): # not payable require calldata.size - 4 >=′ 128 require _param1 == addr(_param1) require calldata.size - 36 >=′ 64 require _param2 == addr(_param2) require _param3 == _param3 mem[128] = _param3 require _param4 <= 18446744073709551615 require _param4 + 35 <′ calldata.size require _param4.length <= 18446744073709551615 require ceil32(_param4.length) + 192 >= 160 and ceil32(_param4.length) + 192 <= 18446744073709551615 mem[160] = _param4.length require _param4 + _param4.length + 36 <= calldata.size mem[192 len _param4.length] = _param4[all] mem[_param4.length + 192] = 0 if not addr(stor0): uint256(stor0) = tx.origin or Mask(96, 160, uint256(stor0)) if addr(stor0) != tx.origin: revert with 0, 'bad origin' mem[ceil32(_param4.length) + 192 len ceil32(_param4.length)] = _param4[all], mem[_param4.length + 192 len ceil32(_param4.length) - _param4.length] if ceil32(_param4.length) > _param4.length: mem[ceil32(_param4.length) + _param4.length + 192] = 0 call this.address with: funct Mask(32, -(8 * ceil32(_param4.length) + -_param4.length + 4) + 256, 0) >> -(8 * ceil32(_param4.length) + -_param4.length + 4) + 256 gas gas_remaining wei args mem[ceil32(_param4.length) + 196 len _param4.length - 4] if return_data.size: return bool(ext_call.success), Array(len=return_data.size, data=ext_call.return_data) mem[ceil32(_param4.length) + 192] = bool(ext_call.success) mem[ceil32(_param4.length) + 224] = 64 mem[ceil32(_param4.length) + 256] = _param2 mem[ceil32(_param4.length) + 288 len ceil32(_param2)] = mem[128 len ceil32(_param2)] if ceil32(_param2) > _param2: mem[ceil32(_param4.length) + _param2 + 288] = 0 return Mask(8 * -ceil32(_param4.length) + _param4.length + 32, 0, 0), mem[_param4.length + 224 len ceil32(_param4.length) + -_param4.length + 32], _param2, mem[ceil32(_param4.length) + 288 len ceil32(_param2)]