============================== Sample 1 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined aom_sad_skip_32x64_c() ADD ESI,ESI ADD ECX,ECX MOV R8,RDI MOV R9D,0x20 MOVSXD R11,ESI MOV RDI,RDX MOVSXD R10,ECX XOR ESI,ESI NOP dword ptr [RAX + RAX*0x1] LAB_001479d0: XOR EDX,EDX NOP word ptr [RAX + RAX*0x1] LAB_001479d8: MOVZX ECX,byte ptr [RDI + RDX*0x1] MOVZX EAX,byte ptr [R8 + RDX*0x1] SUB EAX,ECX MOV ECX,EAX NEG ECX CMOVNS EAX,ECX ADD RDX,0x1 ADD ESI,EAX CMP RDX,0x20 JNZ LAB_001479d8 ADD R8,R11 ADD RDI,R10 SUB R9D,0x1 JNZ LAB_001479d0 LEA EAX,[RSI + RSI*0x1] RET ?? 66h f Actual src: sadMxN(32, 64); Predicted src: intra_pred_highbd_highbd_highbd_highbd_sized(h, 8, 4) ============================== Sample 2 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined op_d060_21_ff() PUSH R14 PUSH R13 PUSH R12 LEA R12,[.bss:regs] PUSH RBP MOV EBP,EDI AND EDI,0x7 LEA R14,[R12 + RDI*0x4 + 0x20] PUSH RBX SHR EBP,0x9 MOV dword ptr [.bss:OpcodeFamily],0xb MOV EAX,dword ptr [R14]=>.bss:regs[32] AND EBP,0x7 LEA R13D,[RAX + -0x2] MOV EDI,R13D CALL qword ptr [.bss:x_get_word] MOV dword ptr [R14],R13D=>.bss:regs[32] MOV EDI,0x2 MOV R13D,dword ptr [R12 + RBP*0x4]=>.bss:regs MOV EBX,EAX MOV EAX,dword ptr [.bss:regs[188]] MOV dword ptr [.bss:regs[184]],EAX CALL get_word_ce020_prefetch_opcode ;undefined get_word_ce020_prefetch_op... MOVZX EDX,R13W XOR ECX,ECX MOV word ptr [.bss:regs[104]],AX MOVZX EAX,BX ADD EDX,EAX MOV EAX,R13D ADD AX,BX MOV EAX,dword ptr [.bss:regflags] MOV word ptr [R12 + RBP*0x4]=>.bss:regs,DX SETC CL XOR ESI,ESI TEST DX,DX SETZ SIL XOR R13D,EDX XOR EBX,EDX AND EAX,0xffffbffe AND EBX,R13D SHL ESI,0xe AND ECX,0x1 ADD dword ptr [.bss:regs[64]],0x2 MOVSX EBX,BX OR EAX,ESI SHL ECX,0x8 SHR EBX,0x1f OR EAX,EBX POP RBX POP RBP AND AH,0xfe POP R12 POP R13 OR EAX,ECX POP R14 MOV ECX,EAX AND AH,0x7f SHR ECX,0x8 MOV dword ptr [.bss:regflags+4],ECX MOV ECX,EDX AND ECX,0x8000 OR EAX,ECX MOV dword ptr [.bss:regflags],EAX RET ?? 66h f Actual src: void REGPARAM2 op_d060_21_ff(uae_u32 opcode) { int count_cycles = 0; uae_u32 real_opcode = opcode; uae_u32 srcreg = (real_opcode & 7); uae_u32 dstreg = (real_opcode >> 9) & 7; OpcodeFamily = 11; /* ea H:2,T:2,C:0 fea */ uaecptr srca; srca = m68k_areg(regs, srcreg) - 2; uae_s16 src = x_get_word(srca); m68k_areg(regs, srcreg) = srca; uae_s16 dst = m68k_dreg(regs, dstreg); ipl_fetch(); regs.irc = get_word_ce020_prefetch_opcode(2); /* OP zero */ uae_u32 newv = ((uae_u16)(dst)) + ((uae_u16)(src)); int flgs = ((uae_s16)(src)) < 0; int flgo = ((uae_s16)(dst)) < 0; int flgn = ((uae_s16)(newv)) < 0; SET_ZFLG(((uae_s16)(newv)) == 0); SET_VFLG((flgs ^ flgn) & (flgo ^ flgn)); SET_CFLG(((uae_u16)(~dst)) < ((uae_u16)(src))); COPY_CARRY(); SET_NFLG(flgn!= 0); m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xffff) | ((newv) & 0xffff); m68k_incpci(2); return; } Predicted src: void REGPARAM2 op_21_21_ff(uae_u32 opcode) { int count_cycles = 0; uae_u32 real_opcode = opcode; uae_u32 srcreg = (real_opcode & 7); uae_u32 dstreg = (real_opcode >> 9) & 7; OpcodeFamily = 30; /* ea H:2,T:0,C:0 fea */ uaecptr srca; srca = m68k_areg(regs, srcreg) + (uae_s32)(uae_s16)get_word_ce030_prefetch(2); uae_s8 src = x_get_byte(srca); ipl_fetch(); regs.irc = get_word_ce030_prefetch_opcode(4); /* OP zero */ uae_u32 newv = ((uae_u8)(dst)) - ((uae_u8)(src)); int flgs = ((uae_s8)(src)) < 0; int flgo = ((uae_s8)(dst)) < 0; int flgn = ((uae_s8)(newv)) < 0; SET_ZFLG(((uae_s8)(newv)) == 0); SET_VFLG((flgs ^ flgn) & (flgn ^ flgo)); SET_CFLG(((uae_u8)(src)) > ((uae_u8)(dst))); COPY_CARRY(); SET_NFLG(flgn!= 0); x_put_byte(srca, newv); m68k_incpci(4); return; } ============================== Sample 3 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined gst_audio_ring_buffer_set_callback_full() ;local_40 undefined8 -40 PUSH R15 PUSH R14 PUSH R13 MOV R13,RSI PUSH R12 MOV R12,RDX PUSH RBP MOV RBP,RCX PUSH RBX MOV RBX,RDI SUB RSP,0x18 CALL gst_audio_ring_buffer_get_type ;undefined gst_audio_ring_buffer_get_... TEST RBX,RBX JZ LAB_00150f20 MOV RSI,RAX MOV RAX,qword ptr [RBX] TEST RAX,RAX JZ LAB_00150ea8 CMP qword ptr [RAX],RSI JZ LAB_00150eb4 LAB_00150ea8: MOV RDI,RBX CALL .plt:::g_type_check_instance_is_a ;undefined g_type_check_instance_is_a() TEST EAX,EAX JZ LAB_00150f20 LAB_00150eb4: LEA R14,[RBX + 0x18] MOV RDI,R14 CALL .plt:::g_mutex_lock ;undefined g_mutex_lock() MOV R8,qword ptr [RBX + 0x240] MOV R15,qword ptr [RBX + 0x358] MOV RDI,R14 MOV qword ptr [RBX + 0x238],R13 MOV qword ptr [RBX + 0x240],R12 MOV qword ptr [RBX + 0x358],RBP MOV qword ptr [RSP + local_40+0x48],R8 CALL .plt:::g_mutex_unlock ;undefined g_mutex_unlock() TEST R15,R15 MOV R8,qword ptr [RSP + local_40+0x48] JZ LAB_00150f10 ADD RSP,0x18 MOV RAX,R15 MOV RDI,R8 POP RBX POP RBP POP R12 POP R13 POP R14 POP R15 JMP RAX LAB_00150f10: ADD RSP,0x18 POP RBX POP RBP POP R12 POP R13 POP R14 POP R15 RET ?? 90h LAB_00150f20: ADD RSP,0x18 LEA RDX,[.rodata:s_GST_IS_AUDIO_RING_BUFFER_(buf)_00169588] ;= "GST_IS_AUDIO_RING_BUFFER (buf)" LEA RSI,[.rodata:__func__.26] ;= "gst_audio_ring_buffer_set_callbac... POP RBX LEA RDI,[.rodata:s_GStreamer-Audio_0015d74c] ;= "GStreamer-Audio" POP RBP POP R12 POP R13 POP R14 POP R15 JMP .plt:::g_return_if_fail_warning ;undefined g_return_if_fail_warning() ?? 0Fh Actual src: void gst_audio_ring_buffer_set_callback_full (GstAudioRingBuffer * buf, GstAudioRingBufferCallback cb, gpointer user_data, GDestroyNotify notify) { gpointer old_data = NULL; GDestroyNotify old_notify; g_return_if_fail (GST_IS_AUDIO_RING_BUFFER (buf)); GST_OBJECT_LOCK (buf); old_notify = buf->cb_data_notify; old_data = buf->cb_data; buf->callback = cb; buf->cb_data = user_data; buf->cb_data_notify = notify; GST_OBJECT_UNLOCK (buf); if (old_notify) { old_notify (old_data); } } Predicted src: void gst_audio_audio_audio_audio_buffer_set_audio_buffer (GstAudioBuffer * buffer, GstAudioBuffer * buffer, GstAudioBuffer * buffer) { GstAudioBufferPrivate *priv; g_return_if_fail (GST_IS_audio_buffer_BUFFER (buffer)); priv = buffer; g_mutex_lock (&priv->audio_buffer); priv->audio_buffer = buffer; priv->audio_buffer = buffer; g_mutex_unlock (&priv->audio_buffer, buffer); } ============================== Sample 4 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined myYield() LEA RSI,[.rodata:s_myYield_executed_00102000] ;= "myYield executed\n" MOV EDI,0x1 XOR EAX,EAX JMP .plt:LAB_00101030 ?? 66h f Actual src: static void myYield(JNIEnv* env, jclass cls) { printf("myYield executed\n"); } Predicted src: static void do_n(int argc, char **argv) { (void)argc; (void)argv; (void)argv; (void)argv; (void)argv; (void)argv; } ============================== Sample 5 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined speechd_new() PUSH R12 XOR ECX,ECX XOR EDX,EDX LEA RSI,[.rodata:DAT_00102000] ;= 6Dh m PUSH RBP PUSH RBX MOV RBX,RDI LEA RDI,[.rodata:s_navit_00102005] ;= "navit" CALL .plt:::spd_open ;undefined spd_open() TEST RAX,RAX JZ LAB_001011d0 MOV EDI,0x8 MOV RBP,RAX CALL .plt:g_malloc ;undefined g_malloc() MOV R12,RAX TEST RAX,RAX JZ LAB_001011c3 MOVDQA XMM0,xmmword ptr [.data.rel.ro:speechd_meth] MOV qword ptr [RAX],RBP MOV ESI,0x1 MOV RDI,RBP MOVUPS xmmword ptr [RBX],XMM0 CALL .plt:::spd_set_punctuation ;undefined spd_set_punctuation() LAB_001011c3: MOV RAX,R12 POP RBX POP RBP POP R12 RET ?? 0Fh ?? 1Fh ?? 44h D ?? 00h ?? 00h LAB_001011d0: XOR R12D,R12D POP RBX POP RBP MOV RAX,R12 POP R12 RET ?? 0Fh Actual src: static struct speech_priv *speechd_new(struct speech_methods *meth, struct attr **attrs, struct attr *attr) { struct speech_priv *this; SPDConnection *conn; conn = spd_open("navit","main",NULL,SPD_MODE_SINGLE); if (! conn) return NULL; this=g_new(struct speech_priv,1); if (this) { this->conn=conn; *meth=speechd_meth; spd_set_punctuation(conn, SPD_PUNCT_NONE); } return this; } Predicted src: void *open_open(const char *filename) { if (filename == NULL) return NULL; filename = g_new0(const char *, filename, 1); if (filename == NULL) return NULL; filename[0] = '\0'; return filename; }