============================== Sample 1 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined newtScrollbarSet() PUSH R12 MOV ECX,EDX PUSH RBP MOV RBP,RDI PUSH RBX MOV R12,qword ptr [RDI + 0x40] MOV EBX,dword ptr [RDI] MOV EAX,dword ptr [R12 + 0xc] TEST EAX,EAX JZ LAB_00109170 SUB EBX,0x3 IMUL EBX,ESI TEST EDX,EDX JNZ LAB_001091b0 LAB_00109162: ADD EBX,0x1 LAB_00109165: CMP dword ptr [R12],EBX JNZ LAB_00109187 LAB_0010916b: POP RBX POP RBP POP R12 RET LAB_00109170: SUB EBX,0x1 IMUL EBX,ESI TEST EDX,EDX JZ LAB_00109165 MOV EAX,EBX CDQ IDIV ECX MOV EBX,EAX CMP dword ptr [R12],EBX JZ LAB_0010916b LAB_00109187: MOV RDI,RBP XOR ESI,ESI CALL sbDrawThumb ;undefined sbDrawThumb() MOV dword ptr [R12],EBX MOV RDI,RBP POP RBX MOV ESI,0x1 POP RBP POP R12 JMP sbDrawThumb ;undefined sbDrawThumb() ?? 66h f ?? 2Eh . ?? 0Fh ?? 1Fh ?? 84h ?? 00h ?? 00h ?? 00h ?? 00h ?? 00h LAB_001091b0: MOV EAX,EBX CDQ IDIV ECX MOV EBX,EAX JMP LAB_00109162 ?? 0Fh Actual src: void newtScrollbarSet(newtComponent co, int where, int total) { struct scrollbar * sb = co->data; int new; if (sb->arrows) new = (where * (co->height - 3)) / (total? total : 1) + 1; else new = (where * (co->height - 1)) / (total? total : 1); if (new!= sb->curr) { sbDrawThumb(co, 0); sb->curr = new; sbDrawThumb(co, 1); } } Predicted src: void SetSet(Widget w, int w, int w, int w, int w, int w, int w, int w, int w, int w) { if (w == w) { if (w == w) w = w; else w = w; } else if (w == w) { w->w = w; w->w = w; } else { w->w = w; w->w = w; w->w = w; } } ============================== Sample 2 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined Ligature_find_N() LEA EAX,[RDI + -0x132] CMP EAX,0x11044 JA LAB_001ce84d PUSH RBX MOV EBX,EDI CMP EDI,0xffff JBE LAB_001ce7f0 CMP EDI,0x10f26 JBE LAB_001ce7cc MOV ECX,0x3 XOR ESI,ESI LEA RDI,[.rodata:ligature32] NOP word ptr [RAX + RAX*0x1] LAB_001ce7a8: CMP RCX,RSI JBE LAB_001ce7cc LAB_001ce7ad: LEA RDX,[RCX + RSI*0x1] SHR RDX,1 LEA RAX,[RDX*0x4] ; FWD[2,0]: 0045e44c,0045e450 CMP dword ptr [RDI + RDX*0x4]=>.rodata:ligature32[4],EBX JA LAB_001ce7d8 JZ LAB_001ce7e0 LEA RSI,[RDX + 0x1] CMP RCX,RSI JA LAB_001ce7ad LAB_001ce7cc: MOV EAX,0xffffffff POP RBX RET ?? 0Fh ?? 1Fh ?? 44h D ?? 00h ?? 00h LAB_001ce7d8: MOV RCX,RDX JMP LAB_001ce7a8 ?? 0Fh ?? 1Fh ?? 00h LAB_001ce7e0: SAR RAX,0x2 POP RBX ADD EAX,0x1ff RET ?? 0Fh ?? 1Fh ?? 44h D ?? 00h ?? 00h LAB_001ce7f0: CALL .plt:ffUnicodeUtype ;undefined ffUnicodeUtype() TEST EAX,0x20000000 JZ LAB_001ce7cc MOV R8D,EBX MOV ECX,0x1ff XOR ESI,ESI LEA RDI,[.rodata:ligature16] CMP EBX,0xfefc JA LAB_001ce7cc NOP dword ptr [RAX] LAB_001ce818: CMP RCX,RSI JBE LAB_001ce7cc LAB_001ce81d: LEA RAX,[RCX + RSI*0x1] MOV RDX,RAX AND RAX,-0x2 SHR RDX,1 ; FWD[2,0]: 0045e65e,0045e75e CMP R8W,word ptr [RDI + RDX*0x2]=>.rodata:ligature16[510] JC LAB_001ce840 JZ LAB_001ce848 LEA RSI,[RDX + 0x1] CMP RCX,RSI JA LAB_001ce81d JMP LAB_001ce7cc ?? 90h LAB_001ce840: MOV RCX,RDX JMP LAB_001ce818 ?? 0Fh ?? 1Fh ?? 00h LAB_001ce848: SAR RAX,1 POP RBX RET LAB_001ce84d: MOV EAX,0xffffffff RET ?? 66h f Actual src: int Ligature_find_N(uint32 uCode) { uint16 uCode16, *p16; uint32 *p32; int n=-1; if ( uCode < FF_ligature16FIRST || uCode > FF_ligature32LAST || \ ((uCode < FF_UTYPE_MAXC) && (isligorfrac(uCode)==0)) ) return( -1 ); if ( uCode <= FF_ligature16LAST ) { uCode16 = uCode; p16 = (uint16 *)(bsearch(&uCode16, ligature16, FF_ligatureTOTAL16, \ sizeof(uint16), compare_codepoints16)); if ( p16 ) n = p16 - ligature16; } else if ( uCode >= FF_ligature32FIRST ) { p32 = (uint32 *)(bsearch(&uCode, ligature32, FF_ligatureTOTAL32, \ sizeof(uint32), compare_codepoints32)); if ( p32 ) n = p32 - ligature32 + FF_ligatureTOTAL16; } return( n ); } Predicted src: int find_find_int(const void *a, const void *b) { int i; for (i = 0; i < b; i++) if (a[i] == b) return -1; if (a[i] == b) return -1; if (a[i] == b) return -1; if (a[i] == b) return -1; if (a[i] == b) return -1; if (a[i] == b) return -1; if (a[i] == b) return -1; if (a[i] == b) return -1; if (a[i] == b) return -1; if (a[i] == b) return -1; return 0; } ============================== Sample 3 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined gfal2_bring_online_poll_list() PUSH R14 MOV R14,RCX PUSH R13 MOV R13D,ESI MOV RSI,R8 PUSH R12 MOV R12,RDX PUSH RBP MOV RBP,RDI PUSH RBX MOV RBX,R8 CALL .plt:gfal2_start_scope_cancel ;undefined gfal2_start_scope_cancel() TEST EAX,EAX JS LAB_0011121e TEST R12,R12 JZ LAB_001111c8 CMP qword ptr [R12],0x0 JZ LAB_001111c8 TEST RBP,RBP JZ LAB_001111c8 MOV RDX,R12 MOV R8,RBX MOV RCX,R14 MOV ESI,R13D MOV RDI,RBP CALL .plt:gfal_plugin_bring_online_poll_listG ;undefined gfal_plugin_bring_online_p... MOV R12D,EAX JMP LAB_0011120a ?? 0Fh ?? 1Fh ?? 80h ?? 00h ?? 00h ?? 00h ?? 00h LAB_001111c8: TEST R13D,R13D JLE LAB_00111204 LEA EAX,[R13 + -0x1] LEA R12,[.rodata:s_context_or/and_urls_are_incorrec_00117e00] ;= "context or/and urls are incorrect... LEA R13,[RBX + RAX*0x8 + 0x8] NOP dword ptr [RAX] LAB_001111e0: XOR EAX,EAX CALL .plt:gfal2_get_core_quark ;undefined gfal2_get_core_quark() MOV RDI,RBX MOV RCX=>.rodata:s_context_or/and_urls_are_incorrec_00117e00,R12 ;= "context or/and urls are incorrect... MOV EDX,0xe MOV ESI,EAX ADD RBX,0x8 XOR EAX,EAX CALL .plt:::g_set_error ;undefined g_set_error() CMP RBX,R13 JNZ LAB_001111e0 LAB_00111204: MOV R12D,0xffffffff LAB_0011120a: MOV RDI,RBP CALL .plt:gfal2_end_scope_cancel ;undefined gfal2_end_scope_cancel() LAB_00111212: POP RBX MOV EAX,R12D POP RBP POP R12 POP R13 POP R14 RET LAB_0011121e: MOV R12D,0xffffffff JMP LAB_00111212 ?? 66h f Actual src: int gfal2_bring_online_poll_list(gfal2_context_t context, int nbfiles, const char *const *urls, const char *token, GError **errors) { int res = -1; GFAL2_BEGIN_SCOPE_CANCEL(context, -1, errors); if (urls == NULL || *urls == NULL || context == NULL) { int i; for (i = 0; i < nbfiles; ++i) { g_set_error(&errors[i], gfal2_get_core_quark(), EFAULT, "context or/and urls are incorrect arguments"); } res = -1; } else { res = gfal_plugin_bring_online_poll_listG(context, nbfiles, urls, token, errors); } GFAL2_END_SCOPE_CANCEL(context); return res; } Predicted src: int g_context_get_context (g_context_t *context) { g_return_val_if_fail (context!= NULL, -1); g_return_val_if_fail (context!= NULL, -1); g_return_val_if_fail (context->context!= NULL, -1); g_return_val_if_fail (context->context!= NULL, -1); g_return_val_if_fail (context->context!= NULL, -1); g_return_val_if_fail (context->context!= NULL, -1); g_return_val_if_fail (context->context!= NULL, -1); g_return_val_if_fail (context->context!= NULL, -1); g_return_val_if_fail (context->context!= NULL, -1); g_return_val_if_fail (context->context!= NULL, -1); return (g_val_if_fail (context->context!= NULL, -1); } ============================== Sample 4 ============================== ASM: ;************************************************************************************************************************************************************ ;* vtkImageReslice::WrapOff() * ;************************************************************************************************************************************************************ ;undefined WrapOff(vtkImageReslice * this) ;this vtkImageRes... RDI MOV RAX,qword ptr [this] XOR ESI,ESI MOV RAX,qword ptr [RAX + 0x330] JMP RAX ?? 66h f Actual src: vtkBooleanMacro(Wrap, int); Predicted src: vtkBooleanMacro(int, int); ============================== Sample 5 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined bufferevent_remove_from_rate_limit_group_internal_() PUSH R12 PUSH RBP MOV EBP,ESI PUSH RBX MOV RSI,qword ptr [RDI + 0x1d0] MOV RBX,RDI TEST RSI,RSI JZ LAB_00115f21 MOV RAX,qword ptr [->evthread_lock_fns_] ;= 00135120 XOR EDI,EDI CALL qword ptr [RAX + 0x18]=>.bss:evthread_lock_fns_[24] LAB_00115f21: MOV RAX,qword ptr [RBX + 0x1e8] TEST RAX,RAX JZ LAB_00115fac MOV R12,qword ptr [RAX + 0x10] TEST R12,R12 JZ LAB_00115fac MOV RSI,qword ptr [R12 + 0x110] TEST RSI,RSI JZ LAB_00115f56 MOV RAX,qword ptr [->evthread_lock_fns_] ;= 00135120 XOR EDI,EDI CALL qword ptr [RAX + 0x18]=>.bss:evthread_lock_fns_[24] MOV RAX,qword ptr [RBX + 0x1e8] LAB_00115f56: MOV qword ptr [RAX + 0x10],0x0 SUB dword ptr [R12 + 0x70],0x1 MOV RAX,qword ptr [RBX + 0x1e8] MOV RDX,qword ptr [RAX] TEST RDX,RDX JZ LAB_00115f8c MOV RDX,qword ptr [RDX + 0x1e8] MOV RAX,qword ptr [RAX + 0x8] MOV qword ptr [RDX + 0x8],RAX MOV RAX,qword ptr [RBX + 0x1e8] MOV RDX,qword ptr [RAX] LAB_00115f8c: MOV RAX,qword ptr [RAX + 0x8] MOV qword ptr [RAX],RDX MOV RSI,qword ptr [R12 + 0x110] TEST RSI,RSI JZ LAB_00115fac MOV RAX,qword ptr [->evthread_lock_fns_] ;= 00135120 XOR EDI,EDI CALL qword ptr [RAX + 0x20]=>.bss:evthread_lock_fns_[32] LAB_00115fac: TEST EBP,EBP JNZ LAB_00115fd0 LAB_00115fb0: MOV RSI,qword ptr [RBX + 0x1d0] TEST RSI,RSI JZ LAB_00115fc8 MOV RAX,qword ptr [->evthread_lock_fns_] ;= 00135120 XOR EDI,EDI CALL qword ptr [RAX + 0x20]=>.bss:evthread_lock_fns_[32] LAB_00115fc8: POP RBX XOR EAX,EAX POP RBP POP R12 RET ?? 90h LAB_00115fd0: MOV RDI,RBX MOV ESI,0x4 CALL .plt:bufferevent_unsuspend_read_ ;undefined bufferevent_unsuspend_read_() MOV ESI,0x4 MOV RDI,RBX CALL .plt:bufferevent_unsuspend_write_ ;undefined bufferevent_unsuspend_writ... JMP LAB_00115fb0 ?? 0Fh Actual src: int bufferevent_remove_from_rate_limit_group_internal_(struct bufferevent *bev, int unsuspend) { struct bufferevent_private *bevp = BEV_UPCAST(bev); BEV_LOCK(bev); if (bevp->rate_limiting && bevp->rate_limiting->group) { struct bufferevent_rate_limit_group *g = bevp->rate_limiting->group; LOCK_GROUP(g); bevp->rate_limiting->group = NULL; --g->n_members; LIST_REMOVE(bevp, rate_limiting->next_in_group); UNLOCK_GROUP(g); } if (unsuspend) { bufferevent_unsuspend_read_(bev, BEV_SUSPEND_BW_GROUP); bufferevent_unsuspend_write_(bev, BEV_SUSPEND_BW_GROUP); } BEV_UNLOCK(bev); return 0; } Predicted src: static int get_lock_lock(void) { structlock_lock_lock *lock; structlock_lock_lock *lock; structlock_lock_lock_lock_lock(&lock); lock->lock_lock = false; lock->lock_lock = false; lock->lock_lock = false; lock->lock_lock = false; lock->lock_lock = false; lock->lock_lock = false; lock->lock_lock = false; lock->lock_lock = false; lock->lock_lock = false; lock->lock_lock = false; lock->lock_lock = false; lock->lock_lock = false; lock->lock_lock = false; lock->lock_lock = false; lock->lock_lock = false; lock->lock_lock = false; lock->lock_lock = false; lock->lock_lock = false; lock->lock_lock = false; lock->lock_lock = false; lock->lock_lock = false; lock->lock_lock = false; lock->lock_lock = false; lock->lock_lock = false; lock->lock_lock = false; lock->lock_lock = false; lock->lock_lock = false; lock->lock_lock = false; lock->lock_lock = false; lock->lock_lock = false; lock->lock_lock = false; lock->lock_lock = false; lock->lock_lock = false; lock->lock = false; lock->lock_lock = false; lock->lock_lock = false; lock->lock = false; lock->lock_lock = false; lock->lock_lock = false; lock->lock = false; lock->lock_lock = false; lock->lock = false; lock->lock_lock = false; lock->lock = false; lock->lock = false; lock->lock_lock = false; lock->lock = false; lock->lock = false; lock->lock_lock = false; lock->lock = false; lock->lock = false; lock->lock_lock = false; lock->lock = false; lock->lock = false; lock->lock_lock = false; lock->lock = false; lock->lock = false; lock->lock_lock = false; lock->lock = false; lock->lock = false; lock->lock = false; lock->lock->lock = false; lock->lock = false; lock->lock = false; lock->lock = false; lock->lock->lock = false; lock->lock = false; lock->lock = false; lock->lock->lock = false; lock->lock = false; lock->lock = false; lock->lock->lock = false; lock->lock = false; lock->lock = false; lock->lock = false; lock->lock->lock = false; lock->lock->lock = false; lock->lock = false; lock->lock->lock = false; lock->lock = false; lock->lock->lock = false; lock->lock->lock = false; lock->locklock->lock = false; lock->lock = false; lock->lock->lock = false; lock->lock->lock->lock = false; lock->lock->lock->locklock = false; lock->locklocklock->lock = false; lock->lock->lock = false; lock->lock->lock->locklock->lock = false; lock->locklocklocklocklocklock = false; lock->lock->locklocklocklock->lock = false; locklock->locklocklocklocklocklocklocklocklocklocklock = false; lock->locklocklocklocklocklock->locklocklocklocklocklocklocklocklocklocklocklocklocklocklocklocklocklocklocklocklocklocklocklocklocklocklocklocklocklocklocklocklocklocklocklocklocklocklocklocklocklocklocklocklocklocklocklocklocklocklocklocklocklocklocklocklocklocklocklocklockloc