============================== Sample 1 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined Java_edu_umn_gis_mapscript_mapscriptJNI_webObj_1empty_1get() MOV RSI,qword ptr [RDX + 0x40] JMP .plt:JNU_NewStringNative ;undefined JNU_NewStringNative() ?? 0Fh Actual src: SWIGEXPORT jstring JNICALL Java_edu_umn_gis_mapscript_mapscriptJNI_webObj_1empty_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { jstring jresult = 0 ; webObj *arg1 = (webObj *) 0 ; char *result = 0 ; (void)jenv; (void)jcls; (void)jarg1_; arg1 = *(webObj **)&jarg1; result = (char *) ((arg1)->empty); { jresult = JNU_NewStringNative(jenv, result); } return jresult; } Predicted src: SWIGEXPORT jstring JNICALL Java_edu_umn_gis_mapscript_mapscriptJNI_mapscript_mapscript_mapscriptJNI_1Obj_1Obj_1get(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) { jstring jresult = 0 ; struct layerObj *arg1 = (struct layerObj *) 0 ; char *result = 0 ; (void)jenv; (void)jcls; (void)jarg1_; arg1 = *(struct layerObj **)&jarg1; result = (char *) ((arg1)->Obj); jresult = jenv->NewStringUTF((const char *)result); return jresult; } ============================== Sample 2 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined gdm_dbus_chooser_skeleton_init() PUSH RBX MOV RBX,RDI MOVSXD RDI,dword ptr [.bss:GdmDBusChooserSkeleton_private_offset] ADD RDI,RBX MOV qword ptr [RBX + 0x20],RDI ADD RDI,0x20 CALL .plt:::g_mutex_init ;undefined g_mutex_init() MOV RBX,qword ptr [RBX + 0x20] CALL .plt:::g_main_context_ref_thread_default ;undefined g_main_context_ref_thread_... MOV qword ptr [RBX + 0x18],RAX POP RBX RET ?? 66h f Actual src: static void gdm_dbus_chooser_skeleton_init (GdmDBusChooserSkeleton *skeleton) { #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38 skeleton->priv = gdm_dbus_chooser_skeleton_get_instance_private (skeleton); #else skeleton->priv = G_TYPE_INSTANCE_GET_PRIVATE (skeleton, GDM_DBUS_TYPE_CHOOSER_SKELETON, GdmDBusChooserSkeletonPrivate); #endif g_mutex_init (&skeleton->priv->lock); skeleton->priv->context = g_main_context_ref_thread_default (); } Predicted src: static void xdp_dbus_skeleton_init (XdpDBusSkeleton *skeleton) { #if GLIB_VERSION_MAX_ALLOWED >= GLIB_VERSION_2_38 skeleton->priv = XDP_dbus_skeleton_get_instance_private (skeleton); #else skeleton->priv = G_TYPE_INSTANCE_GET_PRIVATE (skeleton, XDP_DBUS_TYPE_SKELETON, XDP_DBUS_SKELETON, XdpDBusSkeletonPrivate); #endif g_mutex_init (&skeleton->priv->lock); skeleton->priv->context = g_main_context_ref_thread_default (); } ============================== Sample 3 ============================== 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: void G_CALL G_CALL G_CALL G_CALL G_CALL G_CALL (G_GNUC_UNUSED const G_GNUC_UNUSED const G * G_GNUC_UNUSED, G_GNUC_UNUSED const G_UNUSED const G_GNUC_UNUSED const G_UNUSED const G_GNUC_UNUSED const G_UNUSED const G_GNUC_UNUSED const G_UNUSED const G_UNUSED const G * G_GNUC_UNUSED) { G_GNUC_UNUSED G_UNUSED const G_UNUSED const G * G_GNUC_UNUSED = G_GNUC_UNUSED; G_GNUC_UNUSED const G_UNUSED const G_UNUSED const G_GNUC_UNUSED const G Gset * G_GNUC_UNUSED = G_GNUC_UNUSED; G_GNUC_UNUSED const G_UNUSED const G_UNUSED const Gset * G_GNUC_UNUSED = G_GNUC_UNUSED; G_GNUC_UNUSED const G_UNUSED const G_UNUSED const Gset * G_GNUC_UNUSED = G_GNUC_UNUSED; G_UNUSED const G_GNUC_UNUSED const G_UNUSED const Gset * G_UNUSED = G_GNUC_UNUSED; } ============================== Sample 4 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined Dicache_remove() ;local_10 undefined8 -10 ;local_28 undefined4 -28 ;local_68 undefined8 -68 PUSH RBP LEA RDX,[Dicache_entry_cmp] SUB RSP,0x60 MOV RAX,qword ptr FS:[0x28] MOV qword ptr [RSP + local_10+0x68],RAX XOR EAX,EAX MOV qword ptr [RSP]=>local_68,RDI MOV RDI,qword ptr [.bss:CachedIMGs] MOV dword ptr [RSP + local_28+0x68],ESI MOV RSI,RSP CALL dList_find_sorted ;undefined dList_find_sorted() TEST RAX,RAX JZ LAB_0013e783 MOV RDI,qword ptr [.bss:CachedIMGs] MOV RBP,RAX MOV RSI,RAX CALL dList_remove ;undefined dList_remove() MOV RDI,qword ptr [RBP] MOV EAX,dword ptr [RBP + 0x28] SUB dword ptr [.bss:dicache_size_total],EAX CALL a_Url_free ;undefined a_Url_free() MOV RDI,qword ptr [RBP + 0x18] CALL dFree ;undefined dFree() MOV RDI,qword ptr [RBP + 0x30] CALL a_Bitvec_free ;undefined a_Bitvec_free() MOV RDI,qword ptr [RBP + 0x20] CALL a_Imgbuf_unref ;undefined a_Imgbuf_unref() MOV RAX,qword ptr [RBP + 0x48] TEST RAX,RAX JZ LAB_0013e77b MOV RSI,qword ptr [RBP + 0x50] MOV EDI,0x2 CALL RAX LAB_0013e77b: MOV RDI,RBP CALL dFree ;undefined dFree() LAB_0013e783: MOV RAX,qword ptr [RSP + local_10+0x68] SUB RAX,qword ptr FS:[0x28] JNZ LAB_0013e799 ADD RSP,0x60 POP RBP RET LAB_0013e799: CALL .plt:::__stack_chk_fail ;undefined __stack_chk_fail() NOP Actual src: static void Dicache_remove(const DilloUrl *Url, int version) { DICacheEntry e, *entry; _MSG("Dicache_remove url=%s\n", URL_STR(Url)); e.url = (DilloUrl*)Url; e.version = version; entry = dList_find_sorted(CachedIMGs, &e, Dicache_entry_cmp); dReturn_if (entry == NULL); _MSG("Dicache_remove Imgbuf=%p Decoder=%p DecoderData=%p\n", entry->v_imgbuf, entry->Decoder, entry->DecoderData); /* Eliminate this dicache entry */ dList_remove(CachedIMGs, entry); dicache_size_total -= entry->TotalSize; /* entry cleanup */ a_Url_free(entry->url); dFree(entry->cmap); a_Bitvec_free(entry->BitVec); a_Imgbuf_unref(entry->v_imgbuf); if (entry->Decoder) { entry->Decoder(CA_Abort, entry->DecoderData); } dFree(entry); } Predicted src: void remove_entry(struct entry *entry) { struct entry *entry; struct entry *entry; struct entry *entry; entry = entry->entry; entry = entry->entry; entry->entry = entry->entry; entry->flags = entry->flags; entry->flags = entry->flags; entry->flags = entry->flags; if (entry->flags) { entry->flags = entry->flags; entry->flags = entry->flags; } if (entry->flags) { entry->flags = entry->flags; } if (entry->flags) { entry->flags = entry->flags; } if (entry->flags) { entry->flags = entry->flags; } if (entry->flags) { entry->flags = entry->flags; } if (entry->flags) { entry->flags = entry->flags; } if (entry->flags) { entry->flags = entry->flags; } entry->flags = entry->flags; if (entry->flags) { entry->flags = entry->flags; } entry_free(entry); } ============================== Sample 5 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined xdp_camera_proxy_get_is_camera_present() PUSH R12 XOR R12D,R12D PUSH RBP MOV RBP,RDI SUB RSP,0x8 CALL xdp_camera_proxy_get_type ;undefined xdp_camera_proxy_get_type() MOV RDI,RBP MOV RSI,RAX CALL .plt:::g_type_check_instance_cast ;undefined g_type_check_instance_cast() MOV RBP,RAX CALL .plt:::g_dbus_proxy_get_type ;undefined g_dbus_proxy_get_type() MOV RDI,RBP MOV RSI,RAX CALL .plt:::g_type_check_instance_cast ;undefined g_type_check_instance_cast() LEA RSI,[.rodata:s_IsCameraPresent_001a19d0] ;= "IsCameraPresent" MOV RDI,RAX CALL .plt:::g_dbus_proxy_get_cached_property ;undefined g_dbus_proxy_get_cached_pr... TEST RAX,RAX JZ LAB_0014af3a MOV RBP,RAX MOV RDI,RAX CALL .plt:::g_variant_get_boolean ;undefined g_variant_get_boolean() MOV RDI,RBP MOV R12D,EAX CALL .plt.got:::g_variant_unref ;undefined g_variant_unref() LAB_0014af3a: ADD RSP,0x8 MOV EAX,R12D POP RBP POP R12 RET ?? 66h f Actual src: static gboolean xdp_camera_proxy_get_is_camera_present (XdpCamera *object) { XdpCameraProxy *proxy = XDP_CAMERA_PROXY (object); GVariant *variant; gboolean value = 0; variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (proxy), "IsCameraPresent"); if (variant!= NULL) { value = g_variant_get_boolean (variant); g_variant_unref (variant); } return value; } Predicted src: gboolean udisks_drive_proxy_get_is_is_flags (UDisksDrive *object) { UDisksDriveProxy *proxy = UDISKS_drive_PROXY (object); GVariant *variant; gboolean value = 0; variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (proxy), "is_is_is_flags"); if (variant!= NULL) { value = g_variant_get_boolean (variant); g_variant_unref (variant); } return value; }