============================== Sample 1 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined emile_cipher_init() CMP byte ptr [.bss:_emile_cipher_inited],0x0 ;=?? MOV EAX,0x1 JZ LAB_00103710 RET ?? 90h LAB_00103710: SUB RSP,0x8 CALL _emile_cipher_init ;undefined _emile_cipher_init() TEST AL,AL JZ LAB_00103729 MOV byte ptr [.bss:_emile_cipher_inited],0x1 ;=?? MOV EAX,0x1 LAB_00103729: ADD RSP,0x8 RET ?? 66h f Actual src: Eina_Bool emile_cipher_init(void) { if (_emile_cipher_inited) return EINA_TRUE; if (!_emile_cipher_init()) return EINA_FALSE; _emile_cipher_inited = EINA_TRUE; return EINA_TRUE; } Predicted src: int _x11_init(int argc, char **argv) { if (argc == 1) { return 1; } if (argc == 1) { return 1; } if (argc == 1) { return 1; } return 1; } ============================== Sample 2 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined fcml_tf_env_memory_alloc_handler_counter() ADD dword ptr [.bss:counter],0x1 JMP qword ptr [.bss:default_alloc] ?? 0Fh Actual src: fcml_ptr fcml_tf_env_memory_alloc_handler_counter( fcml_usize size ) { counter += 1; return default_alloc( size ); } Predicted src: void handler_handler_handler (void) { handler_alloc_handler (handler_handler); } ============================== Sample 3 ============================== ASM: ;************************************************************************************************************************************************************ ;* new_outline(text_object*, char*, unsigned int) * ;************************************************************************************************************************************************************ ;undefined new_outline(text_object * param_1, char * param_2, uint param_3) ;param_1 text_object * RDI ;param_2 char * RSI ;param_3 uint EDX ;local_10 undefined8 -10 TEST param_3,param_3 JNZ LAB_0013fb18 RET ?? 0Fh ?? 1Fh ?? 00h LAB_0013fb18: SUB RSP,0x18 MOV RAX,param_1 PXOR XMM0,XMM0 MOV param_1,param_2 CVTSI2SD XMM0,qword ptr [RAX + 0x20] MOV param_2,0x6 MOVSD qword ptr [RSP + local_10+0x18],XMM0 CALL new_special ;undefined new_special(char * param_1... MOVSD XMM0,qword ptr [RSP + local_10+0x18] MOVSD qword ptr [RAX + 0x8],XMM0 ADD RSP,0x18 RET ?? 0Fh Actual src: void new_outline(struct text_object *obj, char *p, unsigned int p_max_size) { if (p_max_size == 0) { return; } new_special(p, OUTLINE)->arg = obj->data.l; } Predicted src: double object_object_object(object *obj, double x, double y) { if (!object_object_object(obj, x, y)) return 0; return object_object_object(obj, x, y); } ============================== Sample 4 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined net_object_get_panel() PUSH RBX MOV RBX,RDI CALL .plt:net_object_get_type ;undefined net_object_get_type() TEST RBX,RBX JZ LAB_00120798 MOV RSI,RAX MOV RAX,qword ptr [RBX] TEST RAX,RAX JZ LAB_0012077e CMP qword ptr [RAX],RSI JZ LAB_0012078a LAB_0012077e: MOV RDI,RBX CALL .plt:::g_type_check_instance_is_a ;undefined g_type_check_instance_is_a() TEST EAX,EAX JZ LAB_00120798 LAB_0012078a: MOV RAX,qword ptr [RBX + 0x18] POP RBX MOV RAX,qword ptr [RAX + 0x28] RET ?? 0Fh ?? 1Fh ?? 40h @ ?? 00h LAB_00120798: LEA RDX,[.rodata:s_NET_IS_OBJECT_(object)_00142723] ;= "NET_IS_OBJECT (object)" LEA RSI,[.rodata:__func__.0] ;= "net_object_get_panel" XOR EDI,EDI CALL .plt:::g_return_if_fail_warning ;undefined g_return_if_fail_warning() XOR EAX,EAX POP RBX RET ?? 66h f Actual src: CcNetworkPanel * net_object_get_panel (NetObject *object) { g_return_val_if_fail (NET_IS_OBJECT (object), NULL); return object->priv->panel; } Predicted src: const gchar * g_object_get_object (G_OBJECT *object) { g_return_val_if_fail (G_IS_OBJECT (object), NULL); return object->priv->object; } ============================== Sample 5 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined eog_metadata_sidebar_init() PUSH R12 MOV R12,RDI PUSH RBX SUB RSP,0x8 MOVSXD RBX,dword ptr [.bss:EogMetadataSidebar_private_offset] ;=?? ADD RBX,RDI MOV qword ptr [RDI + 0x38],RBX CALL .plt:::gtk_widget_get_type ;undefined gtk_widget_get_type() MOV RDI,R12 MOV RSI,RAX CALL .plt:::g_type_check_instance_cast ;undefined g_type_check_instance_cast() MOV RDI,RAX CALL .plt:::gtk_widget_init_template ;undefined gtk_widget_init_template() MOV RDI,qword ptr [RBX + 0x38] ADD RSP,0x8 MOV RCX,R12 POP RBX XOR R9D,R9D XOR R8D,R8D POP R12 LEA RDX,[_folder_label_clicked_cb] LEA RSI,[.rodata:s_activate-link_0015f079] ;= "activate-link" JMP .plt:::g_signal_connect_data ;undefined g_signal_connect_data() ?? 66h f Actual src: static void eog_metadata_sidebar_init (EogMetadataSidebar *sidebar) { EogMetadataSidebarPrivate *priv; priv = sidebar->priv = eog_metadata_sidebar_get_instance_private (sidebar); gtk_widget_init_template (GTK_WIDGET (sidebar)); g_signal_connect (priv->folder_label, "activate-link", G_CALLBACK (_folder_label_clicked_cb), sidebar); #ifndef HAVE_EXIF { /* Remove the lower 8 lines as they are empty without libexif*/ guint i; for (i = 11; i > 3; i--) { gtk_grid_remove_row (GTK_GRID (priv->metadata_grid), i); } } #endif /*!HAVE_EXIF */ } Predicted src: static void gtk_widget_init (GtkWidget *widget) { g_signal_connect (widget, G_CALLBACK (gtk_widget_get_type (), G_TYPE_CHECK_INSTANCE_CAST (widget), G_TYPE_CHECK_INSTANCE_CAST (widget), G_TYPE_CHECK_INSTANCE_CAST (widget), G_TYPE_CHECK_INSTANCE_CAST (widget), G_TYPE_CHECK_INSTANCE_CAST (widget, G_TYPE_CHECK_INSTANCE_CAST (widget), G_TYPE_CHECK_INSTANCE_CAST (widget, G_TYPE_CHECK_INSTANCE_CAST (widget), G_TYPE_CHECK_INSTANCE_CAST (widget), G_TYPE_CHECK_INSTANCE_CAST (widget, G_TYPE_CHECK_INSTANCE_CAST (widget), G_TYPE_CHECK_INSTANCE_CAST (widget), G_TYPE_CHECK_INSTANCE_CAST (widget), G_TYPE_CHECK_INSTANCE_CAST (widget), G_TYPE_CAST (widget), G_TYPE_CHECK_INSTANCE_CAST (widget), G_TYPE_CHECK_INSTANCE_CAST (widget), G_TYPE_CHECK_INSTANCE_CAST (widget), G_TYPE_TYPE_CHECK_INSTANCE_CAST (widget), G_TYPE_CHECK_INSTANCE_CAST (widget), G_TYPE_TYPE_CAST (widget), G_TYPE_TYPE_CHECK_INSTANCE_CAST (widget), G_TYPE_TYPE_CHECK_INSTANCE_CAST (widget), G_TYPE_TYPE_CHECK_INSTANCE_CAST (widget), G_TYPE_TYPE_TYPE_CAST (widget), G_TYPE_TYPE_TYPE_CHECK_INSTANCE_CAST (widget), G_TYPE_TYPE_TYPE_TYPE_CAST (widget), G_TYPE_TYPE_TYPE_TYPE_CAST (widget), G_TYPE_TYPE_TYPE_CHECK_INSTANCE_CAST (widget), G_TYPE_TYPE_TYPE_TYPE_TYPE_CAST (widget), G_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_CAST (widget), G_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_CAST (widget), G_TYPE_TYPE_TYPE_TYPE_CAST (widget), G_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_CAST (widget), G_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_CAST (widget), G_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_VIEW, G_TYPE_TYPE_TYPE_TYPE_TYPE_NONE), G_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_NONE), G_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE (widget), G_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE (widget), G_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE (widget), G_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE (widget, G_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE_TYPE