============================== Sample 1 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined init_child_item() PUSH R12 PUSH RBP MOV RBP,RDI PUSH RBX MOV RBX,qword ptr [RDI + 0x60] CALL .plt:e_tree_get_type ;undefined e_tree_get_type() MOV R12,RAX CALL .plt:::gtk_accessible_get_type ;undefined gtk_accessible_get_type() MOV RDI,RBP MOV RSI,RAX CALL .plt:::g_type_check_instance_cast ;undefined g_type_check_instance_cast() MOV RDI,RAX CALL .plt:::gtk_accessible_get_widget ;undefined gtk_accessible_get_widget() MOV RSI,R12 MOV RDI,RAX CALL .plt:::g_type_check_instance_cast ;undefined g_type_check_instance_cast() TEST RAX,RAX JZ LAB_002ea090 MOV RDI,RAX CALL .plt:e_tree_get_item ;undefined e_tree_get_item() CMP qword ptr [RBX],0x0 JZ LAB_002ea070 POP RBX POP RBP POP R12 RET ?? 66h f ?? 90h LAB_002ea070: MOV ESI,0x50 MOV RDI,RAX CALL .plt:::g_type_check_instance_cast ;undefined g_type_check_instance_cast() MOV RDI,RAX CALL .plt:::atk_gobject_accessible_for_object ;undefined atk_gobject_accessible_for... MOV qword ptr [RBX],RAX POP RBX POP RBP POP R12 RET ?? 0Fh ?? 1Fh ?? 00h LAB_002ea090: POP RBX LEA RDX,[.rodata:DAT_00318012] ;= 74h t LEA RSI,[.rodata:__func__.0] ;= "init_child_item" POP RBP LEA RDI,[.rodata:s_evolution-util_002ef0ab] ;= "evolution-util" POP R12 JMP .plt:::g_return_if_fail_warning ;undefined g_return_if_fail_warning() ?? 66h f Actual src: static void init_child_item (GalA11yETree *a11y) { GalA11yETreePrivate *priv = a11y->priv; ETree *tree; ETableItem * eti; tree = E_TREE (gtk_accessible_get_widget (GTK_ACCESSIBLE (a11y))); g_return_if_fail (tree); eti = e_tree_get_item (tree); if (priv->child_item == NULL) { priv->child_item = atk_gobject_accessible_for_object (G_OBJECT (eti)); } } Predicted src: static void e_tree_item_init (EItem *item) { EItem *item; g_return_if_fail (E_IS_TREE_ITEM (item)); item = E_TREE_ITEM (item); g_return_if_fail (item!= NULL); item->priv->item = item; } ============================== Sample 2 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined CheckForUnclosedCatches() PUSH R12 XOR R12D,R12D PUSH RBP PUSH RBX MOV RAX,qword ptr [RDI + 0x80] CMP dword ptr [RAX + 0x48],0x1 JA LAB_0013d6f0 LAB_0013d6e4: MOV EAX,R12D POP RBX POP RBP POP R12 RET ?? 0Fh ?? 1Fh ?? 40h @ ?? 00h LAB_0013d6f0: MOV RBX,RDI MOV R12D,0x1 TEST byte ptr [RDI + 0x96],0x4 JZ LAB_0013d6e4 MOV RAX,qword ptr [RDI] MOV ESI,0xffffffff LEA RDI,[.rodata:s_catch_still_active_on_exit_from_a_0026f308] ;= "catch still active on exit from a... MOV RBP,qword ptr [RAX] CALL .plt:Tcl_NewStringObj ;undefined Tcl_NewStringObj() MOV RSI,RAX MOV RDI,RBP CALL .plt:Tcl_SetObjResult ;undefined Tcl_SetObjResult() MOV RAX,qword ptr [RBX + 0x80] MOV RDI,RBP MOV RAX,qword ptr [RAX + 0x50] MOV ESI,dword ptr [RAX + 0x8] CALL .plt:Tcl_SetErrorLine ;undefined Tcl_SetErrorLine() MOV RDI,RBP XOR EAX,EAX XOR R8D,R8D LEA RCX,[.rodata:s_UNCLOSEDCATCH_0026ef21] ;= "UNCLOSEDCATCH" LEA RDX,[.rodata:s_ASSEM_0026edd1] ;= "ASSEM" LEA RSI,[.rodata:DAT_0026edd7] ;= 54h T CALL .plt:Tcl_SetErrorCode ;undefined Tcl_SetErrorCode(undefined... MOV EAX,R12D POP RBX POP RBP POP R12 RET ?? 66h f Actual src: static int CheckForUnclosedCatches( AssemblyEnv* assemEnvPtr) /* Assembly environment */ { CompileEnv* envPtr = assemEnvPtr->envPtr; /* Compilation environment */ Tcl_Interp* interp = (Tcl_Interp*) envPtr->iPtr; /* Tcl interpreter */ if (assemEnvPtr->curr_bb->catchState >= BBCS_INCATCH) { if (assemEnvPtr->flags & TCL_EVAL_DIRECT) { Tcl_SetObjResult(interp, Tcl_NewStringObj( "catch still active on exit from assembly code", -1)); Tcl_SetErrorLine(interp, assemEnvPtr->curr_bb->enclosingCatch->startLine); Tcl_SetErrorCode(interp, "TCL", "ASSEM", "UNCLOSEDCATCH", NULL); } return TCL_ERROR; } return TCL_OK; } Predicted src: int Tcl_Tcl_Command( Tcl_Interp *interp, Tcl_Interp *interp, Tcl_Obj *interp) { Tcl_Obj *interp = (Tcl_Obj *)interp; Tcl_Obj *interp = (Tcl_Obj *)interp; Tcl_Obj *interp = (Tcl_Obj *)interp; Tcl_Obj *interp = (Tcl_Obj *)interp; Tcl_Obj *interp = (Tcl_Obj *)interp; Tcl_Obj *interp = (Tcl_Obj *)interp; Tcl_Obj *interp = (Tcl_Obj *)interp; Tcl_Obj *interp = (Tcl_Obj *)interp; Tcl_Obj *interp = (Tcl_Obj *)interp; Tcl_Obj *interp = (Tcl_Obj *)interp; Tcl_Obj *interp = (Tcl_Obj *)interp; Tcl_Obj *interp = (Tcl_Obj *)interp; Tcl_Obj *interp = (Tcl_Obj *)interp; Tcl_Obj *interp = (Tcl_Obj *)interp; Tcl_Obj *interp = (Tcl_Obj *)interp; Tcl_Obj *interp = (Tcl_Obj *)interp; return TCL_OK; } ============================== Sample 3 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined startree_search() MOV R9,R8 XOR R8D,R8D JMP startree_search_for ;undefined startree_search_for() ?? 0Fh Actual src: void startree_search(const startree_t* s, const double* xyzcenter, double radius2, double** xyzresults, double** radecresults, int* nresults) { startree_search_for(s, xyzcenter, radius2, xyzresults, radecresults, NULL, nresults); } Predicted src: int search_search_search (const char *search_name, const char *search_name, const char *search_name) { return (search_search_search_search (search_name,search_name,search_name, NULL)); } ============================== Sample 4 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined NhlCvtBooleanToString() ;local_10 undefined8 -10 ;local_14 undefined2 -14 ;local_18 undefined4 -18 ;local_28 undefined1[16] -28 PUSH RBX MOV EDX,0x67 MOV RBX,RSI SUB RSP,0x20 MOVDQA XMM0,xmmword ptr [.rodata:s_NhlCvtBooleanToSNhlCvtStringGenA_002b1f70] ;= "NhlCvtBooleanToSNhlCvtStringGenAr... MOV RAX,qword ptr FS:[0x28] MOV qword ptr [RSP + local_10+0x28],RAX XOR EAX,EAX MOV dword ptr [RSP + local_18+0x28],0x6e697274 MOV word ptr [RSP + local_14+0x28],DX MOVAPS xmmword ptr [RSP]=>local_28,XMM0 TEST ECX,ECX JNZ LAB_00158520 MOV EAX,dword ptr [RDI + 0x8] LEA RDX,[.data:false.427] ;= "False" TEST EAX,EAX LEA RAX,[.data:true.428] ;= 0075725400h CMOVZ RAX,RDX MOV EDX,dword ptr [RSI] TEST EDX,EDX JZ LAB_001584f0 MOV RCX,qword ptr [RSI + 0x8] TEST RCX,RCX JZ LAB_001584f0 MOV dword ptr [RSI],0x8 CMP EDX,0x7 JA LAB_00158510 MOV EAX,0xfffffffc LAB_001584d4: MOV RDX,qword ptr [RSP + local_10+0x28] SUB RDX,qword ptr FS:[0x28] JNZ LAB_00158546 ADD RSP,0x20 POP RBX RET ?? 66h f ?? 0Fh ?? 1Fh ?? 44h D ?? 00h ?? 00h LAB_001584f0: MOV dword ptr [RBX],0x8 MOV qword ptr [.bss:val.426],RAX ;=?? LEA RAX,[.bss:val.426] ;=?? MOV qword ptr [RBX + 0x8],RAX=>.bss:val.426 ;=?? MOV EAX,0xffffffff JMP LAB_001584d4 ?? 90h LAB_00158510: MOV qword ptr [RCX],RAX MOV EAX,0xffffffff JMP LAB_001584d4 ?? 66h f ?? 0Fh ?? 1Fh ?? 44h D ?? 00h ?? 00h LAB_00158520: MOV RCX,RSP MOV ESI,0x3e8 MOV EDI,0xfffffffc LEA RDX,[.rodata:s_%s:Called_with_improper_number_o_002af620+48] ;= "%s:Called with improper number of... CALL .plt:NhlPError ;undefined NhlPError(undefined param_... MOV dword ptr [RBX],0x0 MOV EAX,0xfffffffc JMP LAB_001584d4 LAB_00158546: CALL .plt:::__stack_chk_fail ;undefined __stack_chk_fail() NOP dword ptr [RAX + RAX*0x1] Actual src: static NhlErrorTypes NhlCvtBooleanToString CvtArgs { static char true[] = "True"; static char false[] = "False"; char func[] = "NhlCvtBooleanToString"; NhlString tstring; NhlErrorTypes ret = NhlNOERROR; if(nargs!= 0){ NhlPError(NhlFATAL,NhlEUNKNOWN, "%s:Called with improper number of args",func); to->size = 0; return NhlFATAL; } if(from->data.intval) tstring = true; else tstring = false; _NhlSetVal(NhlString,sizeof(NhlString),tstring); } Predicted src: static int StringToStringString(Widget w, XEvent *event, String *params, Cardinal *num_params, Cardinal *num_params) { if (num_params == NULL) { return -1; } if (num_params == NULL) { return -1; } *num_params = w->num_params; if (num_params == NULL) { *num_params = w->num_params; return 0; } *num_params = w->num_params; *num_params = w->num_params; return 0; } ============================== Sample 5 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined md_cert_has_expired() SUB RSP,0x8 MOV RDI,qword ptr [RDI + 0x8] CALL .plt:::X509_getm_notAfter ;undefined X509_getm_notAfter() MOV RDI,RAX CALL .plt:::X509_cmp_current_time ;int X509_cmp_current_time(ASN1_TIME... TEST EAX,EAX SETLE AL ADD RSP,0x8 MOVZX EAX,AL RET ?? 66h f Actual src: int md_cert_has_expired(const md_cert_t *cert) { return (X509_cmp_current_time(X509_get_notAfter(cert->x509)) <= 0); } Predicted src: int X509_get_current_time(const X509 *x) { return X509_get_current_time(x->current_time); }