============================== Sample 1 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined item_set_linked_invoker() PUSH R14 MOV R14,RSI XOR ESI,ESI PUSH R13 MOV R13,RDI MOV RDI,R8 PUSH R12 MOV R12,R9 PUSH RBP MOV RBP,R8 SUB RSP,0x8 CALL .plt:::gimp_value_array_index ;undefined gimp_value_array_index() MOV RSI,R14 MOV RDI,RAX CALL gimp_value_get_item ;undefined gimp_value_get_item() MOV ESI,0x1 MOV RDI,RBP MOV R14,RAX CALL .plt:::gimp_value_array_index ;undefined gimp_value_array_index() MOV RDI,RAX CALL .plt:::g_value_get_boolean ;undefined g_value_get_boolean() MOV EBP,EAX CALL gimp_item_get_type ;undefined gimp_item_get_type() MOV RDI,R14 MOV RSI,RAX CALL .plt:::g_type_check_instance_cast ;undefined g_type_check_instance_cast() MOV EDX,0x1 MOV ESI,EBP MOV RDI,RAX CALL gimp_item_set_linked ;undefined gimp_item_set_linked() TEST R12,R12 JZ LAB_0046518e MOV R12,qword ptr [R12] LAB_0046518e: ADD RSP,0x8 MOV RDX,R12 MOV RDI,R13 MOV ESI,0x1 POP RBP POP R12 POP R13 POP R14 JMP gimp_procedure_get_return_values ;undefined gimp_procedure_get_return_... ?? 0Fh Actual src: static GimpValueArray * item_set_linked_invoker (GimpProcedure *procedure, Gimp *gimp, GimpContext *context, GimpProgress *progress, const GimpValueArray *args, GError **error) { gboolean success = TRUE; GimpItem *item; gboolean linked; item = gimp_value_get_item (gimp_value_array_index (args, 0), gimp); linked = g_value_get_boolean (gimp_value_array_index (args, 1)); if (success) { gimp_item_set_linked (GIMP_ITEM (item), linked, TRUE); } return gimp_procedure_get_return_values (procedure, success, error? *error : NULL); } Predicted src: static void gimp_item_set_value (GimpItem *item, const GValue *value, gpointer data) { GimpItem *item = GIMP_ITEM (data); GimpItem *item = gimp_item_get_item (item); if (item) { GimpItem *item = gimp_item_get_item (item); gimp_item_set_value (item, gimp_item_get_value (item)); } } ============================== Sample 2 ============================== ASM: ;************************************************************************************************************************************************************ ;* opencl_device::KernelLauncher::AccumulateFactorsAutoScaling(_cl_mem*, _cl_mem*, _cl_mem*, unsigned int, unsigned int, unsigned int) * ;************************************************************************************************************************************************************ ;undefined AccumulateFactorsAutoScaling(KernelLauncher * this, _cl_mem * param_1, _cl_mem * param_2, _cl_mem * param_3, uint param_4, uint param_5, uint param_6) ;this KernelLaunc... RDI ;param_1 _cl_mem * RSI ;param_2 _cl_mem * RDX ;param_3 _cl_mem * RCX ;param_4 uint R8D ;param_5 uint R9D ;param_6 uint 8 PUSH R12 MOV EAX,dword ptr [RSP + param_6+0x8] MOV R10,param_1 MOV R11,param_2 MOV R12,param_3 MOV param_2,qword ptr [this + 0x228] MOV param_3,dword ptr [this + 0x230] MOV param_1,qword ptr [this + 0x130] PUSH RAX XOR EAX,EAX PUSH param_5 PUSH param_4 PUSH R12 PUSH R11 PUSH R10 PUSH 0x6 PUSH 0x3 MOV param_4,qword ptr [this + 0x234] MOV param_5,dword ptr [this + 0x23c] MOV this,qword ptr [this] CALL .plt:opencl_device::GPUInterface::LaunchKernel ;undefined LaunchKernel(_cl_kernel *... ADD RSP,0x40 POP R12 RET ?? 90h Actual src: void KernelLauncher::AccumulateFactorsAutoScaling(GPUPtr dScalingFactors, GPUPtr dNodePtrQueue, GPUPtr dRootScalingFactors, unsigned int nodeCount, unsigned int patternCount, unsigned int scaleBufferSize) { #ifdef BEAGLE_DEBUG_FLOW fprintf(stderr, "\t\tEntering KernelLauncher::AccumulateFactorsAutoScaling\n"); #endif int parameterCountV = 3; int totalParameterCount = 6; gpu->LaunchKernel(fAccumulateFactorsAutoScaling, bgAccumulateBlock, bgAccumulateGrid, parameterCountV, totalParameterCount, dScalingFactors, dNodePtrQueue, dRootScalingFactors, nodeCount, patternCount, scaleBufferSize); #ifdef BEAGLE_DEBUG_FLOW fprintf(stderr, "\t\tLeaving KernelLauncher::AccumulateFactorsAutoScaling\n"); #endif } Predicted src: int32_t D2D2D_D2D_DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD ============================== Sample 3 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined ppc32_exec_LWZUX() PUSH R12 MOV EAX,ESI PUSH RBP MOV EBP,ESI SHR EAX,0xb SHR EBP,0x10 AND EAX,0x1f SHR ESI,0x15 PUSH RBX AND EBP,0x1f MOV RBX,RDI MOV EDX,ESI MOV R12D,dword ptr [RDI + RBP*0x4 + 0x4] ADD R12D,dword ptr [RDI + RAX*0x4 + 0x4] AND EDX,0x1f MOV ESI,R12D CALL qword ptr [RDI + 0x208] MOV dword ptr [RBX + RBP*0x4 + 0x4],R12D XOR EAX,EAX POP RBX POP RBP POP R12 RET ?? 66h f Actual src: static fastcall int ppc32_exec_LWZUX(cpu_ppc_t *cpu,ppc_insn_t insn) { int rd = bits(insn,21,25); int ra = bits(insn,16,20); int rb = bits(insn,11,15); m_uint32_t vaddr; vaddr = cpu->gpr[ra] + cpu->gpr[rb]; ppc32_exec_memop(cpu,PPC_MEMOP_LWZ,vaddr,rd); cpu->gpr[ra] = vaddr; return(0); } Predicted src: static int exec_exec_exec_exec_exec_exec(int32_t *tvb, int32_t offset, int32_t offset, int32_t offset, int32_t offset) { int32_t *data = (int32_t *)tvb; uint32_t *data = (int32_t *) data; uint32_t *data = (uint32_t *) data; data[0] = data[1]; data[2] = data[3]; data[3] = data[3]; data[4] = data[5]; data[5] = data[5]; data[5] = data[5]; return 0; } ============================== Sample 4 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined BKE_previewimg_cached_thumbnail_read() ;local_40 undefined8 -40 ;local_48 undefined8 -48 PUSH R15 MOV R15D,ECX PUSH R14 MOV R14D,EDX PUSH R13 MOV R13,RSI MOV RSI,RDI PUSH R12 PUSH RBP MOV RBP,RDI PUSH RBX SUB RSP,0x18 MOV RDI,qword ptr [.bss:gCachedPreviews] ;=?? MOV RAX,qword ptr FS:[0x28] MOV qword ptr [RSP + local_40+0x48],RAX XOR EAX,EAX MOV qword ptr [RSP]=>local_48,0x0 CALL BLI_ghash_lookup_p ;undefined BLI_ghash_lookup_p() MOV R12,qword ptr [RSP]=>local_48 MOV RBX,RAX TEST RAX,RAX JZ LAB_011aabe4 MOV R12,qword ptr [RAX] MOV qword ptr [RSP]=>local_48,R12 LAB_011aabe4: TEST R12,R12 JZ LAB_011aac60 TEST R15B,R15B JNZ LAB_011aac18 LAB_011aabee: MOV RAX,qword ptr [RSP + local_40+0x48] SUB RAX,qword ptr FS:[0x28] JNZ LAB_011aacb7 ADD RSP,0x18 MOV RAX,R12 POP RBX POP RBP POP R12 POP R13 POP R14 POP R15 RET ?? 0Fh ?? 1Fh ?? 40h @ ?? 00h LAB_011aac18: MOVZX EAX,byte ptr [R12 + 0x40] CMP EAX,R14D JNZ LAB_011aac40 LEA RDI,[R12 + 0x41] MOV RSI,R13 CALL .plt:::strcmp ;int strcmp(char * __s1, char * __s2) TEST EAX,EAX JNZ LAB_011aac40 MOV RDI,R12 CALL BKE_previewimg_clear ;undefined BKE_previewimg_clear() JMP LAB_011aac48 ?? 66h f ?? 90h LAB_011aac40: MOV RDI,RSP CALL BKE_previewimg_free ;undefined BKE_previewimg_free() LAB_011aac48: MOV R12,qword ptr [RSP]=>local_48 TEST R12,R12 JZ LAB_011aac60 TEST RBX,RBX JZ LAB_011aac94 LAB_011aac56: MOV qword ptr [RBX],R12 MOV R12,qword ptr [RSP]=>local_48 JMP LAB_011aabee ?? 90h LAB_011aac60: MOV RDI,R13 CALL .plt:::strlen ;size_t strlen(char * __s) LEA RDI,[RAX + 0x2] MOV R15,RAX CALL previewimg_create_ex ;undefined previewimg_create_ex(ulong... LEA RDX,[R15 + 0x1] MOV RSI,R13 MOV byte ptr [RAX + 0x40],R14B MOV R12,RAX LEA RDI,[RAX + 0x41] CALL .plt:::memcpy ;void * memcpy(void * __dest, void *... MOV qword ptr [RSP]=>local_48,R12 TEST RBX,RBX JNZ LAB_011aac56 LAB_011aac94: MOV RDI,RBP CALL BLI_strdup ;undefined BLI_strdup() MOV RDI,qword ptr [.bss:gCachedPreviews] ;=?? MOV RDX,R12 MOV RSI,RAX CALL BLI_ghash_insert ;undefined BLI_ghash_insert() MOV R12,qword ptr [RSP]=>local_48 JMP LAB_011aabee LAB_011aacb7: CALL .plt:::__stack_chk_fail ;undefined __stack_chk_fail() ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined FUN_011aacbc() NOP dword ptr [RAX] Actual src: PreviewImage *BKE_previewimg_cached_thumbnail_read(const char *name, const char *path, const int source, bool force_update) { BLI_assert(BLI_thread_is_main()); PreviewImage *prv = nullptr; void **prv_p; prv_p = BLI_ghash_lookup_p(gCachedPreviews, name); if (prv_p) { prv = *(PreviewImage **)prv_p; BLI_assert(prv); } if (prv && force_update) { const char *prv_deferred_data = (char *)PRV_DEFERRED_DATA(prv); if (((int)prv_deferred_data[0] == source) && STREQ(&prv_deferred_data[1], path)) { /* If same path, no need to re-allocate preview, just clear it up. */ BKE_previewimg_clear(prv); } else { BKE_previewimg_free(&prv); } } if (!prv) { prv = previewimg_deferred_create(path, source); force_update = true; } if (force_update) { if (prv_p) { *prv_p = prv; } else { BLI_ghash_insert(gCachedPreviews, BLI_strdup(name), prv); } } return prv; } Predicted src: void BKE_update_map(struct BKE_context *ctx, const char *name) { struct BKE_map *map; struct BKE_map *map; struct BKE_map *map; map = ctx->map; if (!map) { return; } map = BKE_map_find_map(map, name); if (!map) { return; } map = BKE_map_find_map(map, name); if (!map) { return; } map = BKE_map_new(map); if (!map) { return; } map->map = NULL; map->map = NULL; } ============================== 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: static gboolean phosh_dbus_dbus_proxy_get_property (GObject *object) { GVariant *variant; gboolean value = 0; variant = g_dbus_proxy_get_cached_property (G_DBUS_PROXY (G_DBUS_PROXY (object), "org.freedesktop"); if (variant!= NULL) { value = g_variant_get_boolean (variant); g_variant_unref (variant); } return value; }