============================== Sample 1 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined measure_select_all() PUSH R12 MOV R12,qword ptr [.bss:sysenv[616]] PUSH RBP PUSH RBX TEST R12,R12 JZ LAB_001513b8 MOV RBX,qword ptr [R12 + 0x168] TEST RBX,RBX JNZ LAB_00151361 JMP LAB_001513a4 ?? 0Fh ?? 1Fh ?? 44h D ?? 00h ?? 00h LAB_00151338: TEST EAX,EAX JLE LAB_00151358 MOV RDI,qword ptr [RBP + 0x10] MOV RDX,R12 XOR ESI,ESI CALL select_core ;undefined select_core() MOV RDI,qword ptr [RBP + 0x18] MOV RDX,R12 XOR ESI,ESI CALL select_core ;undefined select_core() LAB_00151358: MOV RBX,qword ptr [RBX + 0x8] TEST RBX,RBX JZ LAB_001513a4 LAB_00151361: MOV RBP,qword ptr [RBX] MOV EAX,dword ptr [RBP] CMP EAX,0x3 JLE LAB_00151338 CMP EAX,0x4 JNZ LAB_00151358 MOV RDI,qword ptr [RBP + 0x10] MOV RDX,R12 XOR ESI,ESI CALL select_core ;undefined select_core() MOV RDI,qword ptr [RBP + 0x18] MOV RDX,R12 XOR ESI,ESI CALL select_core ;undefined select_core() MOV RDI,qword ptr [RBP + 0x20] MOV RDX,R12 XOR ESI,ESI CALL select_core ;undefined select_core() MOV RBX,qword ptr [RBX + 0x8] TEST RBX,RBX JNZ LAB_00151361 LAB_001513a4: POP RBX MOV EDI,0x1 POP RBP POP R12 JMP redraw_canvas ;undefined redraw_canvas() ?? 66h f ?? 0Fh ?? 1Fh ?? 44h D ?? 00h ?? 00h LAB_001513b8: POP RBX POP RBP POP R12 RET ?? 0Fh Actual src: void measure_select_all(void) { GSList *list; struct model_pak *model; struct measure_pak *m; model = sysenv.active_model; if (!model) return; for (list=model->measure_list ; list ; list=g_slist_next(list)) { m = list->data; switch (m->type) { case MEASURE_INTER: case MEASURE_INTRA: case MEASURE_DISTANCE: select_core(m->core[0], FALSE, model); select_core(m->core[1], FALSE, model); break; case MEASURE_ANGLE: select_core(m->core[0], FALSE, model); select_core(m->core[1], FALSE, model); select_core(m->core[2], FALSE, model); break; } } redraw_canvas(SINGLE); } Predicted src: static void all_cb(void) { struct list *list = list; for (list = list; list; list = list->next) { if (list->next!= list->next) { list->next = list->next; list->next = list->next; list->next = list->next; list->next = list->next; list->next = list->next; list->next = list->next; list->next = list->next; list->next = list->next; list->next = list->next; list->next = list->next; list->next = list->next; list->next = list->next; list->next = list->next; list->next = list->next; list->next = list->next; list->next = list->next; list->next = list->next; list->next = list->next; list->next = list->next; list->next = list->next; list->next = list->next; list->next = list->next; list->next = list->next; list->next = list->next; list->next = list->next; list->next = list->next; list->next = list->next; list->next = list->next; list = list->next; list->next = list->next; list = list->next; list->next = list->next; list = list->next; list->next = list->next; list = list->next; list->next = list->next; list = list->next; list = list->next; list = list->next; list = list->next; list = list->next; list = list->next; list = list->next; list->next = list->next; list = list->next; list = list->next; list = list->next = list->next; list = list->next; list = list = list->next; list = list->next; list = list->next; list = list->next; list = list = list->next; list = list->next; list = list->next = list->next; list = list->next; list = list->next; list = list = list->next; list = list->next; list = list = list->next; list = list = list->next; list = list->next; list = list->next = list->next; list = list->next; list = list->next; list = list = list->next; list = list->next; list = list = list->next; list = list = list->next; list = list = list->next; list = list->next; list = list = list->next; list = list->list = list->next; list = list = list->next; list = list = list->next; list = list->list = list; list = list = list->next; list = list; list = list->next; list->next; list = list = list->list = list = list; list->list = list = list = list; list->list = list = list; list = list; list = list; list = list->list->list = list->list = list = list; list->next; list = list->list = list = list; list->list = list = list->list->list = list; list = list->list = list->list = list; list = list; list = list->list = list; list = list; list = list; list = list->list = list->list->list = list; list->list = list; list = list->list = list->list = list->list->list->list = list = list; list = list; list = list->list = list; list->list = list; list->list = list->list->list = lis ============================== Sample 2 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined f_11826() ;local_30 undefined8 -30 ;local_40 undefined8 -40 ;local_48 undefined8 -48 ;local_50 undefined8 -50 PUSH RBP MOV RBP,RSP PUSH R14 PUSH R13 PUSH R12 MOV R12,RSI PUSH RBX MOV RBX,RDI SUB RSP,0x10 MOV RDX=>EXTERNAL:C_timer_interrupt_counter,qword ptr [->C_timer_interrupt_counter] ;= 001c62a8 ;=?? MOV R14,qword ptr [RSI] MOV RAX,qword ptr FS:[0x28] MOV qword ptr [RBP + local_30+0x8],RAX XOR EAX,EAX MOV R13,qword ptr [RSI + 0x8] MOV RAX,qword ptr [RDX]=>EXTERNAL:C_timer_interrupt_counter ;=?? SUB RAX,0x1 MOV qword ptr [RDX]=>EXTERNAL:C_timer_interrupt_counter,RAX ;=?? TEST RAX,RAX JLE LAB_00149201 LAB_001491a1: MOV RAX,qword ptr [->C_stack_limit] ;= 001c6148 MOV RDX,qword ptr [->C_scratch_usage] ;= 001c6298 MOV RCX,RSP SUB RCX,qword ptr [RAX]=>EXTERNAL:C_stack_limit ;=?? MOV RDX=>EXTERNAL:C_scratch_usage,qword ptr [RDX] ;=?? MOV RAX,RCX XOR ECX,ECX SAR RAX,0x3 CMP RBX,0x2 SETL CL LEA RDX,[RCX + RDX*0x1 + 0x3] CMP RAX,RDX JLE LAB_0014920d SUB RSP,0x20 MOV RDI,qword ptr [R14 + 0x10] MOV RAX,0x300000000000002 LEA RSI=>local_50+0x7,[RSP + 0xf] AND RSI,-0x10 MOV qword ptr [RSI]=>local_50,RAX MOV qword ptr [RSI + local_48+0x50],R13 MOV qword ptr [RSI + local_40+0x50],0xe CALL f_11757 ;undefined f_11757() LAB_00149201: MOV EDI,0xff CALL .plt:::C_raise_interrupt ;undefined C_raise_interrupt() JMP LAB_001491a1 LAB_0014920d: MOV RDX,R12 MOV ESI,EBX LEA RDI,[f_11826] CALL .plt:::C_save_and_reclaim ;undefined C_save_and_reclaim() NOP Actual src: static void C_ccall f_11826(C_word c,C_word *av){ C_word tmp; C_word t0=av[0]; C_word t1=av[1]; C_word t2; C_word *a; C_check_for_interrupt; if(C_unlikely(!C_demand(C_calculate_demand(3,c,1)))){ C_save_and_reclaim((void *)f_11826,c,av);} a=C_alloc(3); t2=((C_word*)t0)[2]; f_11757(t2,C_a_i_list1(&a,1,t1));} Predicted src: static void C_ccall f_88(C_word c,C_word *av){ C_word tmp; C_word t0=av[0]; C_word t1=av[1]; C_word t2; C_word t3; C_word *a; if(C_unlikely(!C_demand(C_calculate_demand(0,c,2)))){ C_save_and_reclaim((void *)f_8,c,av);} a=C_alloc(3); t2=(*a=C_CLOSURE_TYPE|2,a[1]=(C_word)f_8,a[2]=((C_word*)t0)[2],a[3]=((C_word*)t0)[3],a[3]=((C_word*)t0)[3],a[4]=((C_word*)t0)[4],a[5]=((C_word*)t0)[4],a[5]=((C_word*)t0)[4],a[5]=((C_word*)t0)[5],tmp=(C_word)a,a+=5,tmp); ((C_proc)(void*)(*((C_word*)t3+1)))(2,av2,av2);}} ============================== Sample 3 ============================== ASM: ;************************************************************************************************************************************************************ ;* ClpSolve::setSpecialOption(int, int, int) * ;************************************************************************************************************************************************************ ;undefined setSpecialOption(ClpSolve * this, int param_1, int param_2, int param_3) ;this ClpSolve * RDI ;param_1 int ESI ;param_2 int EDX ;param_3 int ECX MOVSXD param_1,param_1 MOV dword ptr [this + param_1*0x4 + 0xc],param_2 MOV dword ptr [this + param_1*0x4 + 0x28],param_3 RET ?? 0Fh Actual src: void ClpSolve::setSpecialOption(int which, int value, int extraInfo) { options_[which] = value; extraInfo_[which] = extraInfo; } Predicted src: void set_pos(int x, int y, int y, int y) { x = x; x = y; y = y; y = y; y = y; } ============================== Sample 4 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined LzmaEnc_SetProps() ;local_10 undefined8 -10 ;local_18 undefined8 -18 ;local_28 undefined1[16] -28 ;local_38 undefined1[16] -38 ; 00128944 ;local_48 undefined1[16] -48 PUSH RBX MOV RBX,RDI SUB RSP,0x40 MOVDQU XMM0,xmmword ptr [RSI] MOVDQU XMM1,xmmword ptr [RSI + 0x10] MOV RAX,qword ptr FS:[0x28] MOV qword ptr [RSP + local_10+0x48],RAX XOR EAX,EAX MOVDQU XMM2,xmmword ptr [RSI + 0x20] MOV RAX,qword ptr [RSI + 0x30] MOV RDI,RSP MOVAPS xmmword ptr [RSP]=>local_48,XMM0 MOV qword ptr [RSP + local_18+0x48],RAX MOVAPS xmmword ptr [RSP + local_38[0]+0x48],XMM1 MOVAPS xmmword ptr [RSP + local_28[0]+0x48],XMM2 CALL LzmaEncProps_Normalize ;undefined LzmaEncProps_Normalize() CMP dword ptr [RSP + local_38[0]+0x48],0x8 MOV EAX,0x5 JG LAB_001289d0 CMP dword ptr [RSP + local_38[4]+0x48],0x4 MOV RSI,qword ptr [RSP + local_38[0]+0x48] JG LAB_001289d0 MOV EDX,dword ptr [RSP + local_38[8]+0x48] CMP EDX,0x4 JG LAB_001289d0 MOV ECX,dword ptr [RSP + local_48[4]+0x48] CMP ECX,0x60000000 JA LAB_001289d0 MOV EAX,dword ptr [RSP + local_28[0]+0x48] MOV dword ptr [RBX + 0xac],ECX MOV ECX,0x111 MOV dword ptr [RBX + 0x68],EDX MOV EDX,dword ptr [RSP + local_38[12]+0x48] CMP EAX,ECX MOV qword ptr [RBX + 0x60],RSI CMOVA EAX,ECX MOV ECX,0x5 CMP EAX,ECX CMOVC EAX,ECX MOV ECX,dword ptr [RSP + local_28[4]+0x48] MOV dword ptr [RBX + 0x44],EAX XOR EAX,EAX TEST EDX,EDX SETZ AL MOV dword ptr [RBX + 0x80],EAX TEST ECX,ECX JZ LAB_00128998 MOV EDX,dword ptr [RSP + local_28[8]+0x48] MOV byte ptr [RBX + 0x701],0x1 MOV EAX,0x2 CMP EDX,0x1 JLE LAB_001289a4 CMP EDX,0x3 MOV EAX,0x4 CMOVLE EAX,EDX JMP LAB_001289a4 ?? 0Fh ?? 1Fh ?? 00h LAB_00128998: MOV byte ptr [RBX + 0x701],0x0 MOV EAX,0x4 LAB_001289a4: MOV dword ptr [RBX + 0x73c],EAX MOV EAX,dword ptr [RSP + local_28[12]+0x48] MOV dword ptr [RBX + 0x71c],EAX MOV EAX,dword ptr [RSP + local_18+0x48] MOV dword ptr [RBX + 0x84],EAX XOR EAX,EAX CMP dword ptr [RSP + local_18+0x4c],0x1 SETG AL MOV dword ptr [RBX + 0x8c],EAX XOR EAX,EAX LAB_001289d0: MOV RDX,qword ptr [RSP + local_10+0x48] SUB RDX,qword ptr FS:[0x28] JNZ LAB_001289e6 ADD RSP,0x40 POP RBX RET LAB_001289e6: CALL .plt:::__stack_chk_fail ;undefined __stack_chk_fail() NOP dword ptr [RAX + RAX*0x1] Actual src: SRes LzmaEnc_SetProps(CLzmaEncHandle pp, const CLzmaEncProps *props2) { CLzmaEnc *p = (CLzmaEnc *)pp; CLzmaEncProps props = *props2; LzmaEncProps_Normalize(&props); if (props.lc > LZMA_LC_MAX || props.lp > LZMA_LP_MAX || props.pb > LZMA_PB_MAX || props.dictSize > ((UInt64)1 << kDicLogSizeMaxCompress) || props.dictSize > kMaxHistorySize) return SZ_ERROR_PARAM; p->dictSize = props.dictSize; { unsigned fb = props.fb; if (fb < 5) fb = 5; if (fb > LZMA_MATCH_LEN_MAX) fb = LZMA_MATCH_LEN_MAX; p->numFastBytes = fb; } p->lc = props.lc; p->lp = props.lp; p->pb = props.pb; p->fastMode = (props.algo == 0); p->matchFinderBase.btMode = (Byte)(props.btMode? 1 : 0); { UInt32 numHashBytes = 4; if (props.btMode) { if (props.numHashBytes < 2) numHashBytes = 2; else if (props.numHashBytes < 4) numHashBytes = props.numHashBytes; } p->matchFinderBase.numHashBytes = numHashBytes; } p->matchFinderBase.cutValue = props.mc; p->writeEndMark = props.writeEndMark; #ifndef _7ZIP_ST /* if (newMultiThread!= _multiThread) { ReleaseMatchFinder(); _multiThread = newMultiThread; } */ p->multiThread = (props.numThreads > 1); #endif return SZ_OK; } Predicted src: static int add_SetSet(const void *p1, const void *p2, const void *p2) { int i; for (i = 0; i < p2; i++) { if (p1[i] == p2[i]) { if (p1[i] == p2[i]) { p1[i] = p1[i]; p2[i] = p2[i]; } } } return 0; } ============================== Sample 5 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;void clipboard_destroy(object * obj) ;obj object * RDI PUSH R13 MOV R13,obj PUSH R12 LEA R12,[R13 + 0x70] PUSH RBP PUSH RBX SUB RSP,0x8 MOV obj,qword ptr [obj->refcount + 0x90] CALL .plt:::free ;void free(void * __ptr) MOV RBP,qword ptr [R13 + 0x70] MOV RBX,qword ptr [RBP] CMP RBP,R12 JZ LAB_0011736b NOP word ptr [RAX + RAX*0x1] LAB_00117340: MOV RAX,qword ptr [RBP + 0x8] MOV qword ptr [RBX + 0x8],RAX MOV RDX,qword ptr [RBP] MOV qword ptr [RAX],RDX MOV obj,qword ptr [RBP + 0x20] CALL .plt:::free ;void free(void * __ptr) MOV obj,RBP MOV RBP,RBX CALL .plt:::free ;void free(void * __ptr) MOV RBX,qword ptr [RBX] CMP RBP,R12 JNZ LAB_00117340 LAB_0011736b: MOV qword ptr [R13 + 0x80],0x0 ADD RSP,0x8 POP RBX POP RBP POP R12 POP R13 RET ?? 66h f Actual src: static void clipboard_destroy( struct object *obj ) { struct clipboard *clipboard = (struct clipboard *)obj; free( clipboard->listeners ); free_clipboard_formats( clipboard ); } Predicted src: static void free_object(void *data, void *data) { struct data *data = data; struct data *data = data; struct data *data = data; data = data->data; data->data = data; data->data = data->data; data->data = data->data; data->data = data->data; data->data = data->data; data->data = data->data; data->data = data->data; data->data = data->data; data->data = data->data; data->data = data->data; data->data = data->data; data->data = data->data; data->data = data->data; data->data = data->data; data->data = data->data; data->data = data->data; data->data = data->data; data->data = data->data; data->data = data->data; data->data = data->data; data->data = data; }