============================== Sample 1 ============================== ASM: ;************************************************************************************************************************************************************ ;* KDL::Path_RoundedComposite::GetLengthToEndOfSegment(int) * ;************************************************************************************************************************************************************ ;undefined GetLengthToEndOfSegment(int param_1) ;param_1 int EDI MOV param_1,qword ptr [param_1 + 0x8] MOV RAX,qword ptr [param_1] JMP qword ptr [RAX + 0x60] ?? 66h f Actual src: double Path_RoundedComposite::GetLengthToEndOfSegment(int i) { return comp->GetLengthToEndOfSegment(i); } Predicted src: int GetPathPath(int index) override { return m_impl->GetPathPath(index); } ============================== Sample 2 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined menu_media_disk_disciple_drive2_saveas() MOV ESI,0x152 JMP menu_media_save ;undefined menu_media_save() ?? 66h f Actual src: static MENU_CALLBACK( menu_media_disk_disciple_drive2_saveas ) { menu_media_save( gtk_action, 0x152 ); } Predicted src: static PyObject * media_media_save_media_save_save(PyObject *self, PyObject *args) { returnmedia_save_media_save_media(self, args, 0); } ============================== Sample 3 ============================== ASM: ;************************************************************************************************************************************************************ ;* decI_rRegNode::emit(CodeBuffer&, PhaseRegAlloc*) const * ;************************************************************************************************************************************************************ ;undefined emit(decI_rRegNode * this, CodeBuffer * param_1, PhaseRegAlloc * param_2) ;this decI_rRegNo... RDI ;param_1 CodeBuffer * RSI ;param_2 PhaseRegAll... RDX PUSH RBP MOV RBP,RSP PUSH R13 MOV R13,param_2 PUSH R12 MOV R12,this PUSH RBX MOV RBX,param_1 SUB RSP,0x8 MOV RAX,qword ptr [param_1 + 0x68] MOV qword ptr [param_1 + 0x60],RAX MOV this,qword ptr [this + 0x48] MOV RAX,qword ptr [this] CALL qword ptr [RAX + 0x8] MOV this,qword ptr [R12 + 0x48] MOV ECX,0x1 MOV param_2,R12 MOV param_1,R13 MOV RAX,qword ptr [this] CALL qword ptr [RAX + 0x28] CMP EAX,0x7 MOV RAX,qword ptr [RBX + 0x68] JLE LAB_0031bd46 MOV byte ptr [RAX],0x41 MOV RAX,qword ptr [RBX + 0x68] ADD RAX,0x1 MOV qword ptr [RBX + 0x68],RAX LAB_0031bd46: MOV byte ptr [RAX],0xff MOV param_2,R12 MOV param_1,R13 MOV ECX,0x1 ADD qword ptr [RBX + 0x68],0x1 MOV this,qword ptr [R12 + 0x48] MOV RAX,qword ptr [this] CALL qword ptr [RAX + 0x28] MOV param_2,qword ptr [RBX + 0x68] AND EAX,0x7 OR EAX,0xffffffc8 MOV byte ptr [param_2],AL ADD qword ptr [RBX + 0x68],0x1 ADD RSP,0x8 POP RBX POP R12 POP R13 POP RBP RET ;************************************************************************************************************************************************************ ;* decI_memNode::emit(CodeBuffer&, PhaseRegAlloc*) const * ;************************************************************************************************************************************************************ ;undefined emit(decI_memNode * this, CodeBuffer * param_1, PhaseRegAlloc * param_2) ;this decI_memNode * RDI ;param_1 CodeBuffer * RSI ;param_2 PhaseRegAll... RDX ;local_30 undefined1 -30 ;local_3c undefined4 -3c PUSH RBP Actual src: void decI_rRegNode::emit(CodeBuffer& cbuf, PhaseRegAlloc* ra_) const { cbuf.set_insts_mark(); // Start at oper_input_base() and count operands unsigned idx0 = 1; unsigned idx1 = 1; // dst unsigned idx2 = idx1 + opnd_array(1)->num_edges(); // src { #line 2399 "/fastdata/debian_allsrc/build/openjdk-8-8u312-b07/src/hotspot/src/cpu/x86/vm/x86_64.ad" if (opnd_array(1)->reg(ra_,this,idx1)/* dst */ >= 8) { emit_opcode(cbuf, Assembler::REX_B); } #line 18393 "../generated/adfiles/ad_x86_64.cpp" } { #line 1781 "/fastdata/debian_allsrc/build/openjdk-8-8u312-b07/src/hotspot/src/cpu/x86/vm/x86_64.ad" emit_opcode(cbuf, (0xFF /*primary()*/)); #line 18401 "../generated/adfiles/ad_x86_64.cpp" } { #line 2039 "/fastdata/debian_allsrc/build/openjdk-8-8u312-b07/src/hotspot/src/cpu/x86/vm/x86_64.ad" // INC, DEC, IDIV, IMOD, JMP indirect,... emit_rm(cbuf, 0x3, (0x01 /*secondary()*/), opnd_array(1)->reg(ra_,this,idx1)/* dst */ & 7); #line 18410 "../generated/adfiles/ad_x86_64.cpp" } } Predicted src: void Assembler::emit_emit(CodeBuffer& cbuf, PhaseRegAlloc* ra_) const { cbuf.set_insts_mark(); unsigned idx0 = 1; unsigned idx1 = 1; unsigned idx2 = 1; // src unsigned idx2 = idx1 + opnd_array(1)->num_edges(); // src unsigned idx2 = idx2 + opnd_array(2)->num_edges(); // src unsigned idx3 = idx3 + opnd_array(2)->num_edges(); // src { __ idx3 = idx3 + opnd_array(1)->num_edges(); // src } // src } } ============================== Sample 4 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined _champVLAFree() MOV R8,RDI MOV ECX,0x2 LEA RDI,[RDX + -0x10] MOV EDX,ESI MOV RSI,R8 JMP OSMemoryFree ;undefined OSMemoryFree() ?? 66h f Actual src: void _champVLAFree(const char *file,int line,void *ptr) #endif { VLARec *vla; vla = &(((VLARec*)ptr)[-1]); #ifndef _os_memory_debug_on os_free(vla); #else OSMemoryFree(vla,file,line,_OSMemoryVLA); #endif } Predicted src: void FreeFree(void *ptr, size_t size) { size_t i; for (i = 0; i < size; i++) { Free(ptr, ptr[i]); } } ============================== Sample 5 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined up_client_initable_init() PUSH R13 MOV R13,RDX PUSH R12 MOV R12,RDI PUSH RBP MOV RBP,RSI PUSH RBX SUB RSP,0x8 CALL .plt:up_client_get_type ;undefined up_client_get_type() MOV RDI,R12 MOV RSI,RAX CALL .plt:::g_type_check_instance_cast ;undefined g_type_check_instance_cast() MOV EDI,0x1 MOV R9,R13 MOV R8,RBP MOVSXD RBX,dword ptr [.bss:UpClient_private_offset] ;=?? LEA RCX,[.rodata:s_/org/freedesktop/UPower_0011e31a] ;= "/org/freedesktop/UPower" XOR ESI,ESI MOV R12,RAX LEA RDX,[.rodata:s_org.freedesktop.UPower_0011e332] ;= "org.freedesktop.UPower" ADD RBX,RAX MOV qword ptr [RAX + 0x18],RBX CALL .plt:up_exported_daemon_proxy_new_for_bus_sync ;undefined up_exported_daemon_proxy_n... MOV qword ptr [RBX],RAX MOV RAX,qword ptr [R12 + 0x18] MOV RDI,qword ptr [RAX] XOR EAX,EAX TEST RDI,RDI JZ LAB_0010d17f XOR R9D,R9D XOR R8D,R8D LEA RDX,[up_device_added_cb] MOV RCX,R12 LEA RSI,[.rodata:s_device-added_0011e2fe] ;= "device-added" CALL .plt:::g_signal_connect_data ;undefined g_signal_connect_data() MOV RAX,qword ptr [R12 + 0x18] XOR R9D,R9D XOR R8D,R8D MOV RCX,R12 LEA RDX,[up_device_removed_cb] LEA RSI,[.rodata:s_device-removed_0011e30b] ;= "device-removed" MOV RDI,qword ptr [RAX] CALL .plt:::g_signal_connect_data ;undefined g_signal_connect_data() MOV RAX,qword ptr [R12 + 0x18] XOR R9D,R9D XOR R8D,R8D MOV RCX,R12 LEA RDX,[up_client_notify_cb] LEA RSI,[.rodata:s_notify_0011e349] ;= "notify" MOV RDI,qword ptr [RAX] CALL .plt:::g_signal_connect_data ;undefined g_signal_connect_data() MOV EAX,0x1 LAB_0010d17f: ADD RSP,0x8 POP RBX POP RBP POP R12 POP R13 RET ?? 66h f Actual src: static gboolean up_client_initable_init (GInitable *initable, GCancellable *cancellable, GError **error) { UpClient *client = UP_CLIENT (initable); client->priv = up_client_get_instance_private (client); /* connect to main interface */ client->priv->proxy = up_exported_daemon_proxy_new_for_bus_sync (G_BUS_TYPE_SYSTEM, G_DBUS_PROXY_FLAGS_NONE, "org.freedesktop.UPower", "/org/freedesktop/UPower", cancellable, error); if (client->priv->proxy == NULL) return FALSE; /* all callbacks */ g_signal_connect (client->priv->proxy, "device-added", G_CALLBACK (up_device_added_cb), client); g_signal_connect (client->priv->proxy, "device-removed", G_CALLBACK (up_device_removed_cb), client); g_signal_connect (client->priv->proxy, "notify", G_CALLBACK (up_client_notify_cb), client); return TRUE; } Predicted src: static void on_device_notify_cb (GObject *source_object, GAsyncResult *res, gpointer user_data) { GdmClientPrivate *priv = G_DBUS_CLIENT (source_object); GdmClientPrivate *priv = G_DBUS_CLIENT_GET_PRIVATE (priv->client); GdmClientPrivate *priv = G_DBUS_CLIENT_GET_PRIVATE (priv->client); GdmClientPrivate *priv = priv->priv; GdmClientPrivate *priv = priv->priv; priv->client = priv->client; priv->client = priv->client; priv->client = g_signal_connect (priv->client, "notify", G_CALLBACK (on_device_notify_cb), priv->client); priv->client = g_signal_connect (priv->client, "notify", G_CALLBACK (on_device_notify_cb), priv); }