============================== Sample 1 ============================== ASM: ;************************************************************************************************************************************************************ ;* decI_rRegNode::emit(CodeBuffer&, PhaseRegAlloc*) const * ;************************************************************************************************************************************************************ ;undefined emit(decI_rRegNode * this, CodeBuffer * param_1, PhaseRegAlloc * param_2) ;this decI_rRegNo... RDI ;param_1 CodeBuffer * RSI ;param_2 PhaseRegAll... RDX PUSH RBP MOV RBP,RSP PUSH R13 MOV R13,param_2 PUSH R12 MOV R12,this PUSH RBX MOV RBX,param_1 SUB RSP,0x8 MOV RAX,qword ptr [param_1 + 0x68] MOV qword ptr [param_1 + 0x60],RAX MOV this,qword ptr [this + 0x48] MOV RAX,qword ptr [this] CALL qword ptr [RAX + 0x8] MOV this,qword ptr [R12 + 0x48] MOV ECX,0x1 MOV param_2,R12 MOV param_1,R13 MOV RAX,qword ptr [this] CALL qword ptr [RAX + 0x28] CMP EAX,0x7 MOV RAX,qword ptr [RBX + 0x68] JLE LAB_0031bd46 MOV byte ptr [RAX],0x41 MOV RAX,qword ptr [RBX + 0x68] ADD RAX,0x1 MOV qword ptr [RBX + 0x68],RAX LAB_0031bd46: MOV byte ptr [RAX],0xff MOV param_2,R12 MOV param_1,R13 MOV ECX,0x1 ADD qword ptr [RBX + 0x68],0x1 MOV this,qword ptr [R12 + 0x48] MOV RAX,qword ptr [this] CALL qword ptr [RAX + 0x28] MOV param_2,qword ptr [RBX + 0x68] AND EAX,0x7 OR EAX,0xffffffc8 MOV byte ptr [param_2],AL ADD qword ptr [RBX + 0x68],0x1 ADD RSP,0x8 POP RBX POP R12 POP R13 POP RBP RET ;************************************************************************************************************************************************************ ;* decI_memNode::emit(CodeBuffer&, PhaseRegAlloc*) const * ;************************************************************************************************************************************************************ ;undefined emit(decI_memNode * this, CodeBuffer * param_1, PhaseRegAlloc * param_2) ;this decI_memNode * RDI ;param_1 CodeBuffer * RSI ;param_2 PhaseRegAll... RDX ;local_30 undefined1 -30 ;local_3c undefined4 -3c PUSH RBP Actual src: void decI_rRegNode::emit(CodeBuffer& cbuf, PhaseRegAlloc* ra_) const { cbuf.set_insts_mark(); // Start at oper_input_base() and count operands unsigned idx0 = 1; unsigned idx1 = 1; // dst unsigned idx2 = idx1 + opnd_array(1)->num_edges(); // src { #line 2399 "/fastdata/debian_allsrc/build/openjdk-8-8u312-b07/src/hotspot/src/cpu/x86/vm/x86_64.ad" if (opnd_array(1)->reg(ra_,this,idx1)/* dst */ >= 8) { emit_opcode(cbuf, Assembler::REX_B); } #line 18393 "../generated/adfiles/ad_x86_64.cpp" } { #line 1781 "/fastdata/debian_allsrc/build/openjdk-8-8u312-b07/src/hotspot/src/cpu/x86/vm/x86_64.ad" emit_opcode(cbuf, (0xFF /*primary()*/)); #line 18401 "../generated/adfiles/ad_x86_64.cpp" } { #line 2039 "/fastdata/debian_allsrc/build/openjdk-8-8u312-b07/src/hotspot/src/cpu/x86/vm/x86_64.ad" // INC, DEC, IDIV, IMOD, JMP indirect,... emit_rm(cbuf, 0x3, (0x01 /*secondary()*/), opnd_array(1)->reg(ra_,this,idx1)/* dst */ & 7); #line 18410 "../generated/adfiles/ad_x86_64.cpp" } } Predicted src: void CNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNodeNod ============================== Sample 2 ============================== 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 cb_cb (void) { if (type_type == 0) return; if (type_type_type == 0) return; if (type_type_type->type_type == 0) return; if (type_type->type_type == 0) return; if (type_type->type_type == 0) return; if (type_type->type_type == 0) return; if (type_type->type_type->type_type == 0) return; if (type_type->type_type->type_type == 0) return; if (type_type->type->type_type->type->type_type == 0) type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type (type->type->type_type->type_type); if (type_type_type_type_type_type_type_type->type_type_type_type_type_type_type->type_type == 0) type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type (type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type_type ============================== Sample 3 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined _writeback_v() ;local_10 undefined8 -10 ;local_20 undefined8 -20 ;local_28 undefined8 -28 ;local_30 undefined8 -30 ;local_38 undefined8 -38 PUSH RBP MOV RBP,RSP SUB RSP,0x30 MOV qword ptr [RBP + local_20+0x8],RDI MOV qword ptr [RBP + local_28+0x8],RSI MOV qword ptr [RBP + local_30+0x8],RDX MOV qword ptr [RBP + local_38+0x8],RCX MOV RAX,qword ptr [RBP + local_38+0x8] MOV qword ptr [RBP + local_10+0x8],RAX MOV RAX,qword ptr [RBP + local_10+0x8] MOV ESI,0x2 MOV RDI,RAX CALL _test_flags ;undefined _test_flags() TEST AL,AL JZ LAB_00295efb MOV RAX,qword ptr [RBP + local_10+0x8] MOV RDI,RAX CALL _issue_write ;undefined _issue_write() LAB_00295efb: MOV EAX,0x1 LEAVE RET ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined _invalidate_v() ;local_10 undefined8 -10 ;local_18 undefined8 -18 ;local_20 undefined8 -20 ;local_28 undefined8 -28 ;local_30 undefined8 -30 ;local_38 undefined8 -38 PUSH RBP Actual src: static bool _writeback_v(struct radix_tree_iterator *it, uint8_t *kb, uint8_t *ke, union radix_value v) { struct block *b = v.ptr; if (_test_flags(b, BF_DIRTY)) _issue_write(b); return true; } Predicted src: static int _test_test_test_test_test(void *data, const char *name, size_t len) { return _test_test_test_test_test(data, len, len, len); } ============================== 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 void C_ccall f_Set(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 t4; C_word t4; C_word t4; C_word t4; C_word t4; C_word t4; C_word t4; if(C_unlikely(!C_demand(C_calculate_demand(4,c,2)))){ C_save_and_reclaim((void *)f_8,c,av);} a=C_alloc(6); t4=(*a=C_CLOSURE_TYPE|4,a[1]=(C_word)f_6,a[2]=((C_word*)t0)[2],a[3],a[4]=((C_word*)t0)[4],a[4],a[4]=((C_word*)t0)[4],a[5],a[4]=((C_word*)t0)[4],a[5],a[5],a[5],a[5]=((C_word*)t0)[5],a[5],a[5],a[5]=((C_word*)t0)[4],a[5],a[5],a[5],a[5]=((C_word*)t0)[5],a[5],a[5],a[5],a[5],a[5]=((C_word*)t0)[5],a[5],a[5],a[5],a[5],a[5],a[5],a[5],a[5],a[5],a[5],a[5],a[5],a[5],a[5],a[5],a[5],a[5],a[5],a[5],a[5],a[5],a[5],a[5],a[5],a[5],a[5],a[5],a[5],a[5],a[5],a[5],a[5],a[5],a[5],a[5],a[5],a[5],a[5],a[5],a[5],a[5],a[5],a[5],a[5],a[5],a[5],a[5],a[5],a[5],a[5],a[5],a[5],a[5],a[5],a[5],a[5],a[5],a[5],a[5],a[5],a[5],a[5],a[5],a[5],a[5],a[5],a[5],a[5],a[5],a[5],a[5],a[5],a[5],a[5],a[5],a[5],a[5],a[5],a[5],a[5],a[5],a[5],a[5],a[5],a[5],a[5],a[5],a[5],a[5],a[5],a[5],a[5],a[5],a[5],a[5],a[5],a[5],a[5],a[5],a[5],a[5],a[5],a[5],a[5],a[5],a[5],a[5],a[5],a[5],a[5],a[5],a[5],a[5],a[5],a[5],a[5],a[5],a[5],a[5],a[5],a[5],a[5],a[5],a[5],a[5],a[5],a[5],a[5],a[5],a[5],a[5],a[5],a[5],a[5],a[5],a[5],a[5],a[5],a[5],a[5],a[5],a[5],a[5],a[5],a[5],a[5],a[5],a[5],a[5],a[5],a[5],a[5],a[5],a[5],a[5],a[5],a[5],a[5],a[5],a[5],a[5],a[5],a[5],a[5],a[5],a[5],a[5],a[ ============================== Sample 5 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined _atspi_get_iface_num() PUSH R13 LEA RSI,[.rodata:s_org.a11y.atspi.Accessible_0012d911] ;= "org.a11y.atspi.Accessible" LEA R13,[.data.rel.ro:interfaces] PUSH R12 PUSH RBP MOV RBP,RDI PUSH RBX XOR EBX,EBX SUB RSP,0x8 JMP LAB_0011d46e ?? 90h LAB_0011d460: ADD RBX,0x1 MOV RSI=>.rodata:s_org.a11y.atspi.Action_0012dac5,qword ptr [R13 + RBX*0x8]=>.data.rel.ro:interfaces[8] ;= "org.a11y.atspi.Action" TEST RSI,RSI JZ LAB_0011d490 LAB_0011d46e: MOV RDI,RBP MOV R12D,EBX CALL .plt:::strcmp ;int strcmp(char * __s1, char * __s2) TEST EAX,EAX JNZ LAB_0011d460 ADD RSP,0x8 MOV EAX,R12D POP RBX POP RBP POP R12 POP R13 RET ?? 0Fh ?? 1Fh ?? 44h D ?? 00h ?? 00h LAB_0011d490: ADD RSP,0x8 MOV R12D,0xffffffff POP RBX MOV EAX,R12D POP RBP POP R12 POP R13 RET ?? 66h f Actual src: gint _atspi_get_iface_num (const char *iface) { /* TODO: Use a binary search or hash to improve performance */ int i; for (i = 0; interfaces[i]; i++) { if (!strcmp(iface, interfaces[i])) return i; } return -1; } Predicted src: static int _cffi_d_get_int(int argc, char **argv) { if (argc > 0) return -1; if (argc > 0) return -1; }