============================== Sample 1 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined GHOST_GetWindowUserData() MOV RAX,qword ptr [RDI] JMP qword ptr [RAX + 0xe0] ?? 0Fh Actual src: GHOST_TUserDataPtr GHOST_GetWindowUserData(GHOST_WindowHandle windowhandle) { GHOST_IWindow *window = (GHOST_IWindow *)windowhandle; return window->getUserData(); } Predicted src: int G_EXPORT void G_CALL G_hook_Release(G_hook_t *hook) { hook->G_hook_Release(hook); } ============================== Sample 2 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined ply_progress_bar_new() SUB RSP,0x8 MOV ESI,0x40 MOV EDI,0x1 CALL .plt:::calloc ;void * calloc(size_t __nmemb, size_t... MOV RDX,0x1000000ffffffff OR byte ptr [RAX + 0x38],0x1 MOV qword ptr [RAX + 0x28],RDX MOV qword ptr [RAX + 0x30],0x0 ADD RSP,0x8 RET ?? 66h f Actual src: ply_progress_bar_t * ply_progress_bar_new (void) { ply_progress_bar_t *progress_bar; progress_bar = calloc (1, sizeof(ply_progress_bar_t)); progress_bar->is_hidden = true; progress_bar->fg_color = 0xffffffff; /* Solid white */ progress_bar->bg_color = 0x01000000; /* Transparent */ progress_bar->fraction_done = 0.0; return progress_bar; } Predicted src: GtkWidget *bar_progress_new(void) { bar_progress_t *progress; progress = (bar_progress_t *) malloc(sizeof(bar_progress_t)); progress->progress = NULL; progress->progress = NULL; progress->progress = NULL; progress->progress = NULL; progress->progress = NULL; progress->progress = NULL; return (void *)progress; } ============================== Sample 3 ============================== ASM: ;************************************************************************************************************************************************************ ;* idAnimBlend::GetCycleCount() const * ;************************************************************************************************************************************************************ ;undefined GetCycleCount(idAnimBlend * this) ;this idAnimBlend * RDI MOVSX EAX,word ptr [this + 0x34] RET ?? 90h Actual src: int idAnimBlend::GetCycleCount( void ) const { return cycle; } Predicted src: int idReader::GetidCount() const { return m_idCount; } ============================== Sample 4 ============================== 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_client_proxy_init (GObject *source_object, GAsyncResult *res, gpointer user_data) { CsdClientPrivate *priv = Csd_CLIENT_GET_PRIVATE (source_object); CsdClientPrivate *priv = Csd_CLIENT_GET_PRIVATE (source_object); CsdClientPrivate *priv = priv->priv; priv->client = priv->client; priv->client = g_signal_connect (priv->client, "notify", G_CALLBACK (on_client_cb), priv->client); priv->client = g_signal_connect (priv->client, "notify", G_CALLBACK (on_client_cb), priv->client); } ============================== Sample 5 ============================== ASM: MOV word ptr [RBP + local_3f0+0x8],AX LEA param_3=>local_3f0,[RBP + -0x3e8] LEA RAX=>local_3ee,[RBP + -0x3e6] MOV param_2,param_3 MOV param_1,RAX CALL poly_int<1u,unsigned_short>::poly_int ;undefined poly_int(p... MOVZX EAX,word ptr [RBP + local_3ee+0x8] MOV word ptr [RBP + local_3f2+0x8],AX LEA param_3=>local_3f8,[RBP + -0x3f0] LEA RAX=>local_3f2,[RBP + -0x3ea] MOV param_2,param_3 MOV param_1,RAX CALL operator* ;poly_int operator*(poly_int_pod * pa... MOV qword ptr [RBP + local_400+0x8],RAX LEA param_3=>local_400,[RBP + -0x3f8] LEA RAX=>local_402,[RBP + -0x3fa] MOV param_2,param_3 Actual src: scope_kind innermost_scope_kind (void) { return current_binding_level->kind; } Predicted src: void visit(int p_idx) { p_idx = p_idx; p_idx = p_idx; }