============================== Sample 1 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined op_edc0_22_ff() PUSH RBX MOV EBX,EDI MOV EDI,0x2 MOV dword ptr [.bss:OpcodeFamily],0x5d AND EBX,0x7 MOV dword ptr [.bss:CurrentInstrCycles],0x8 CALL get_word_030_prefetch ;undefined get_word_030_prefetch() MOV ESI,EAX TEST AH,0x8 JZ LAB_009bbe18 SAR AX,0x6 LEA R9,[.bss:regs] AND EAX,0x7 MOV EDX,dword ptr [R9 + RAX*0x4]=>.bss:regs MOV ECX,EDX AND ECX,0x1f LAB_009bbd46: TEST SIL,0x20 JZ LAB_009bbe00 MOV EAX,ESI AND EAX,0x7 MOV R8D,dword ptr [R9 + RAX*0x4]=>.bss:regs SUB R8D,0x1 AND R8D,0x1f ADD R8D,0x1 LAB_009bbd65: MOV EAX,dword ptr [R9 + RBX*0x4]=>.bss:regs ROL EAX,CL MOV ECX,0x20 MOV EDI,EAX SHR EAX,0x1f SUB ECX,R8D SHL EAX,0xf SHR EDI,CL MOV ECX,EAX MOV EAX,dword ptr [.bss:regflags] AND AH,0x3f OR EAX,ECX XOR ECX,ECX TEST EDI,EDI SETZ CL SHL ECX,0xe OR EAX,ECX LEA ECX,[R8 + -0x1] AND EAX,0xfffffefe MOV dword ptr [.bss:regflags],EAX MOV EAX,0x1 SHL EAX,CL TEST EAX,EAX JNZ LAB_009bbdbf JMP LAB_009bbdc3 ?? 66h f ?? 0Fh ?? 1Fh ?? 44h D ?? 00h ?? 00h LAB_009bbdb8: ADD EDX,0x1 SHR EAX,1 JZ LAB_009bbdc3 LAB_009bbdbf: TEST EDI,EAX JZ LAB_009bbdb8 LAB_009bbdc3: SAR SI,0xc MOV EAX,dword ptr [.bss:regs[188]] MOV EDI,0x4 AND ESI,0x7 MOV dword ptr [R9 + RSI*0x4]=>.bss:regs,EDX MOV dword ptr [.bss:regs[184]],EAX CALL get_word_030_prefetch ;undefined get_word_030_prefetch() ADD dword ptr [.bss:regs[64]],0x4 POP RBX MOV word ptr [.bss:regs[104]],AX MOV EAX,0x1000 RET ?? 0Fh ?? 1Fh ?? 80h ?? 00h ?? 00h ?? 00h ?? 00h LAB_009bbe00: LEA R8D,[RSI + 0x1f] AND R8D,0x1f ADD R8D,0x1 JMP LAB_009bbd65 ?? 0Fh ?? 1Fh ?? 80h ?? 00h ?? 00h ?? 00h ?? 00h LAB_009bbe18: MOV ECX,EAX LEA R9,[.bss:regs] SAR CX,0x6 AND ECX,0x1f MOV EDX,ECX JMP LAB_009bbd46 ?? 90h Actual src: uae_u32 REGPARAM2 op_edc0_22_ff(uae_u32 opcode) { int count_cycles = 0; uae_u32 real_opcode = opcode; uae_u32 dstreg = real_opcode & 7; OpcodeFamily = 93; CurrentInstrCycles = 8; uae_s16 extra = get_word_030_prefetch(2); uae_u32 bdata[2]; uae_s32 offset = extra & 0x800? m68k_dreg(regs, (extra >> 6) & 7) : (extra >> 6) & 0x1f; int width = (((extra & 0x20? m68k_dreg(regs, extra & 7) : extra) - 1) & 0x1f) + 1; uae_u32 offset2 = offset; uae_u32 tmp = m68k_dreg(regs, dstreg); offset &= 0x1f; tmp = (tmp << offset) | (tmp >> (32 - offset)); bdata[0] = tmp & ((1 << (32 - width)) - 1); SET_ALWAYS_NFLG(((uae_s32)tmp) < 0? 1 : 0); tmp >>= (32 - width); SET_ZFLG(tmp == 0); SET_VFLG(0); SET_CFLG(0); { uae_u32 mask = 1 << (width - 1); while (mask) { if (tmp & mask) break; mask >>= 1; offset2++; }} m68k_dreg(regs, (extra >> 12) & 7) = offset2; ipl_fetch(); regs.irc = get_word_030_prefetch(4); m68k_incpci(4); return (1 * 4 * CYCLE_UNIT / 2 + count_cycles) * 4; } Predicted src: uae_u32 REGPARAM2 op_0_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; CurrentInstrCycles = 12; uaecptr srca; srca = m68k_areg(regs, srcreg) + (uae_s32)(uae_s16)get_word_prefetch(2); uae_s32 dst = m68k_areg(regs, dstreg); uae_u32 newv = ((uae_u32)(dst)) - ((uae_u32)(src)); int flgs = ((uae_s32)(src)) < 0; int flgo = ((uae_s32)(newv)) < 0; int flgn = ((uae_s32)(newv)) < 0; int flgn = ((uae_s32)(newv)) < 0; SET_ZFLG(((uae_s32)(newv)) == 0); SET_VFLG((flgs ^ flgn) & (flgn ^ flgn)); SET_CFLG(((uae_u32)(dst))); SET_CARRY(); SET_NFLG(flgn!= 0); m68k_dreg(regs, dstreg) = (m68k_dreg(regs, dstreg) & ~0xffff) | ((newv) & 0xffff); m68k_incpci(2); return (2 * 4 * CYCLE_UNIT / 2 + count_cycles) * 4; } ============================== Sample 2 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined get_cursor_from_program() ;local_48 undefined1 -48 ;local_4c undefined4 -4c PUSH R13 PUSH R12 PUSH RBP MOV RBP,RDI PUSH RBX MOV RBX,RSI SUB RSP,0x38 MOV RAX,qword ptr [.bss:cobglobptr] ;=?? MOV RAX,qword ptr [RAX + 0x8] TEST RAX,RAX JZ LAB_001451d8 MOV R12,qword ptr [RAX + 0x48] TEST R12,R12 JZ LAB_001451d8 MOV RAX,qword ptr [R12 + 0x10] TEST byte ptr [RAX],0x10 JNZ LAB_001451f0 MOV R13,qword ptr [R12] MOV EAX,R13D AND EAX,0xfffffffd CMP EAX,0x4 JNZ LAB_00145228 MOV RSI,qword ptr [R12 + 0x8] MOVSXD RDX,R13D LEA RDI=>local_48,[RSP + 0x10] MOV ECX,0x20 ADD R13D,0x1 CALL .plt:::__memcpy_chk ;undefined __memcpy_chk() MOVSXD R13,R13D LEA RDX=>local_4c,[RSP + 0xc] LEA RSI,[.rodata:s_%d_0014e6af+17] ;= "%d" MOV RDI,RAX XOR EAX,EAX MOV byte ptr [RSP + R13*0x1 + 0x10],0x0 CALL .plt:::__isoc99_sscanf ;undefined __isoc99_sscanf() TEST EAX,EAX JZ LAB_00145228 MOV EAX,dword ptr [RSP + local_4c+0x58] CMP qword ptr [R12],0x4 MOVSXD RDX,EAX JZ LAB_00145202 LAB_001451a2: IMUL RDX,RDX,0x10624dd3 MOV ECX,EAX SAR ECX,0x1f SAR RDX,0x26 SUB EDX,ECX LEA ECX,[RDX + -0x1] IMUL EDX,EDX,0x3e8 SUB EAX,EDX SUB EAX,0x1 LAB_001451c2: MOV dword ptr [RBP],ECX MOV dword ptr [RBX],EAX ADD RSP,0x38 POP RBX POP RBP POP R12 POP R13 RET ?? 66h f ?? 0Fh ?? 1Fh ?? 44h D ?? 00h ?? 00h LAB_001451d8: MOV dword ptr [RBP],0xffffffff MOV dword ptr [RBX],0xffffffff ADD RSP,0x38 POP RBX POP RBP POP R12 POP R13 RET LAB_001451f0: MOV RDI,R12 CALL .plt:cob_get_int ;undefined cob_get_int() CMP qword ptr [R12],0x4 MOVSXD RDX,EAX JNZ LAB_001451a2 LAB_00145202: IMUL RDX,RDX,0x51eb851f MOV ECX,EAX SAR ECX,0x1f SAR RDX,0x25 SUB EDX,ECX LEA ECX,[RDX + -0x1] IMUL EDX,EDX,0x64 SUB EAX,EDX SUB EAX,0x1 JMP LAB_001451c2 ?? 0Fh ?? 1Fh ?? 80h ?? 00h ?? 00h ?? 00h ?? 00h LAB_00145228: MOV EDI,0x3 CALL .plt:cob_fatal_error ;undefined cob_fatal_error() NOP dword ptr CS:[RAX + RAX*0x1] Actual src: static void get_cursor_from_program (int *line, int *column) { if (COB_MODULE_PTR && COB_MODULE_PTR->cursor_pos) { cob_field *cursor_field = COB_MODULE_PTR->cursor_pos; int cursor_pos; if (COB_FIELD_IS_NUMERIC (cursor_field)) { cursor_pos = cob_get_int (cursor_field); } else { char buff[32]; int maxsize = cursor_field->size; /* LCOV_EXCL_START */ if (unlikely (maxsize!= 4 && maxsize!= 6)) { cob_fatal_error (COB_FERROR_CODEGEN); } /* LCOV_EXCL_STOP */ memcpy (buff, cursor_field->data, maxsize); buff[maxsize + 1] = 0; if (unlikely (!sscanf (buff, "%d", &cursor_pos))) { cob_fatal_error (COB_FERROR_CODEGEN); } } if (cursor_field->size == 4) { *line = (cursor_pos / 100) - 1; *column = (cursor_pos % 100) - 1; } else { *line = (cursor_pos / 1000) - 1; *column = (cursor_pos % 1000) - 1; } } else { *column = *line = -1; } } Predicted src: static int get_int(int argc, char **argv, char **argv, char **argv) { char *argv; char *argv[2]; char *argv[2]; if (argv[2] == NULL) return -1; if (argv[1] == NULL) return -1; if (argv[2] == NULL) return -1; if (argv[2] == NULL) return -1; if (argv[2] == NULL) return -1; if (argv[2] == NULL) return -1; if (argv[2] == NULL) return -1; if (argv[2] == NULL) return -1; if (argv[2] == NULL) return -1; if (argv[2] == NULL) return -1; if (argv[2] == NULL) return -1; if (argv[2] == NULL) return -1; if (argv[2] == NULL) return -1; if (argv[2] == NULL) return -1; return -1; } ============================== 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 vtkGetMacro(int, int); ============================== Sample 4 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined gth_tag_new_loop() PUSH RBX MOV RBX,RDI MOV EDI,0x18 CALL .plt:::g_malloc0 ;undefined g_malloc0() MOV EDX,dword ptr [RBX] MOV qword ptr [RAX + 0x8],RBX MOV dword ptr [RAX],EDX POP RBX RET ?? 0Fh Actual src: GthTag * gth_tag_new_loop (GthLoop *loop) { GthTag *tag; tag = g_new0 (GthTag, 1); tag->type = loop->type; if (loop->type == GTH_TAG_FOR_EACH_IN_RANGE) tag->value.range_loop = (GthRangeLoop *) loop; else tag->value.loop = loop; return tag; } Predicted src: static void gimp_new (gpointer data) { data->data = data; data->data = data; data->data = data; } ============================== Sample 5 ============================== ASM: ;************************************************************************************************************************************************************ ;* Konclude::Reasoner::Kernel::Process::CIndividualSaturationProcessNode::setOccurrenceStatisticsCollectingRequired(bool) * ;************************************************************************************************************************************************************ ;undefined setOccurrenceStatisticsCollectingRequired(CIndividualSaturationProcessNode * this, bool param_1) ;this CIndividual... RDI ;param_1 bool SIL MOV byte ptr [this + 0xea],param_1 MOV RAX,this RET ?? 90h Actual src: CIndividualSaturationProcessNode* CIndividualSaturationProcessNode::setOccurrenceStatisticsCollectingRequired(bool collectingRequired) { mOccurrenceStatisticsCollectingRequired = collectingRequired; return this; } Predicted src: bool CIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividualIndividua