============================== Sample 1 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined asn1_skip_tlv() ;local_30 undefined8 -30 ;local_34 undefined4 -34 PUSH R14 PUSH R13 PUSH R12 XOR R12D,R12D PUSH RBP MOV RBP,RSI PUSH RBX MOV RBX,RDI SUB RSP,0x10 MOV RAX,qword ptr FS:[0x28] MOV qword ptr [RSP + local_30+0x38],RAX XOR EAX,EAX MOV RDX,RSP CALL asn1_decode_tag ;undefined asn1_decode_tag() CMP EAX,0x1 JZ LAB_0010bff8 LAB_0010bfd2: MOV RAX,qword ptr [RSP + local_30+0x38] SUB RAX,qword ptr FS:[0x28] JNZ LAB_0010c035 ADD RSP,0x10 MOV EAX,R12D POP RBX POP RBP POP R12 POP R13 POP R14 RET ?? 66h f ?? 0Fh ?? 1Fh ?? 44h D ?? 00h ?? 00h LAB_0010bff8: LEA RDX=>local_34,[RSP + 0x4] MOV RSI,RBP MOV RDI,RBX CALL asn1_decode_length ;undefined asn1_decode_length() MOV R12D,EAX CMP EAX,0x1 JZ LAB_0010c018 LAB_0010c010: XOR R12D,R12D JMP LAB_0010bfd2 ?? 0Fh ?? 1Fh ?? 00h LAB_0010c018: MOV R13D,dword ptr [RSP + local_34+0x38] MOV R14D,dword ptr [RBX] MOV RDI,RBP ADD R14D,R13D CALL bytestring_get_size ;undefined bytestring_get_size() CMP R14D,EAX JA LAB_0010c010 ADD dword ptr [RBX],R13D JMP LAB_0010bfd2 LAB_0010c035: CALL .plt:::__stack_chk_fail ;undefined __stack_chk_fail() NOP word ptr [RAX + RAX*0x1] Actual src: int asn1_skip_tlv(unsigned *pos, const bytestring_t *tlvlist) { unsigned tag; if (asn1_decode_tag(pos,tlvlist,&tag)!=BYTESTRING_OK) return BYTESTRING_ERROR; return asn1_skip_value(pos,tlvlist); } Predicted src: int ASN1CALL decode_decode_decode_tag(const unsigned char *buf, size_t len) { unsigned char *p; unsigned char *p; unsigned char *p; unsigned char *p; p = buf; if (len == 0) return 0; p = buf; p = buf; while (p[0]!= '\0') { p++; if (p[1]!= '\0') return 0; p++; } *p = p; return 1; } ============================== Sample 2 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined astSetPutErr_() PUSH R13 PUSH R12 PUSH RBP MOV RBP,RSI PUSH RBX MOV RBX,RDI SUB RSP,0x8 MOV RSI=>astGlobalsCreateKey_,qword ptr [->astGlobalsCreateKey_] ;= 001e0a80 MOV RDI=>.bss:starlink_ast_globals_initialised,qword ptr [->starlink_ast_globals_initialised] ;= 006e2228 ;=?? CALL .plt:::pthread_once ;int pthread_once(pthread_once_t * __... TEST EAX,EAX JZ LAB_00173760 MOV RAX,qword ptr [->stderr] ;= 006e4518 MOV EDX,0x2b MOV ESI,0x1 XOR R12D,R12D LEA RDI,[.rodata:s_Starlink_AST_package_initialisat_006211f8] ;= "Starlink AST package initialisati... MOV RCX,qword ptr [RAX]=>EXTERNAL:stderr ;=?? CALL .plt:::fwrite ;size_t fwrite(void * __ptr, size_t _... LAB_0017374a: MOV EAX,dword ptr [RBP] TEST EAX,EAX JZ LAB_001737b8 ADD RSP,0x8 POP RBX POP RBP POP R12 POP R13 RET ?? 0Fh ?? 1Fh ?? 40h @ ?? 00h LAB_00173760: MOV R13,qword ptr [->starlink_ast_globals_key] ;= 006e2224 MOV EDI,dword ptr [R13]=>.bss:starlink_ast_globals_key ;=?? CALL .plt:::pthread_getspecific ;void * pthread_getspecific(pthread_k... MOV R12,RAX TEST RAX,RAX JNZ LAB_0017374a CALL .plt:astGlobalsInit_ ;undefined astGlobalsInit_() MOV EDI,dword ptr [R13]=>.bss:starlink_ast_globals_key ;=?? MOV RSI,RAX MOV R12,RAX CALL .plt:::pthread_setspecific ;int pthread_setspecific(pthread_key_... TEST EAX,EAX JZ LAB_0017374a MOV RAX,qword ptr [->stderr] ;= 006e4518 MOV EDX,0x3a MOV ESI,0x1 LEA RDI,[.rodata:s_Starlink_AST_failed_to_store_Thr_00621228] ;= "Starlink AST failed to store Thre... MOV RCX,qword ptr [RAX]=>EXTERNAL:stderr ;=?? CALL .plt:::fwrite ;size_t fwrite(void * __ptr, size_t _... JMP LAB_0017374a ?? 66h f ?? 0Fh ?? 1Fh ?? 44h D ?? 00h ?? 00h LAB_001737b8: MOV qword ptr [R12 + DAT_000009a0],RBX ADD RSP,0x8 MOV RSI,RBP LEA RDI,[CPutErrWrapper] POP RBX POP RBP POP R12 POP R13 JMP .plt:astSetPutErrWrapper_ ;undefined astSetPutErrWrapper_() ?? 0Fh Actual src: void astSetPutErr_( AstPutErrFun fun, int *status ){ /* *++ * Name: c astSetPutErr f AST_SETPUTERR * Purpose: c Register an error handling function for use by the AST error model f Register an error handling routine for use by the AST error model * Type: * Public function. * Synopsis: c #include "error.h" c void astSetPutErr( void (*fun)(int,const char*) ) f CALL AST_GRFSET( FUN, STATUS ) * Description: * This function can be used to register an external function to be * used to deliver an error message and (optionally) an accompanying * status value to the user. * * If this function is not called prior to the first error occuring * within AST, then the external error handling function selected at * link-time (using the ast_link command) will be used. To use an * alternative error handler, call this function before using any other * AST functions, specifying the external error handling function to be * used. This will register the function for future use. * Parameters: c fun f FUN = INTEGER FUNCTION (Given) c A Pointer to the function to be used to handle errors. The interface c for this function is described below. f The name of the routine to be used to handle errors (the name f should also appear in a Fortran EXTERNAL statement in the f routine which invokes AST_SETPUTERR). c Once a function has been provided, a NULL pointer can be supplied c in a subsequent call to astSetPutErr to reset the function to the c corresponding function selected at link-time. f Once a routine has been provided, the "null" routine AST_NULL can f be supplied in a subsequent call to astSetPutErr to reset the routine f to the corresponding routine selected at link-time. AST_NULL is f defined in the AST_PAR include file. f STATUS = INTEGER (Given and Returned) f The global status. * Function Interface: * The supplied external function should deliver the supplied error message * and (optionally) the supplied status value to the user or to some * underlying error system. It requires the following interface: * c void PutErr( int status_value, const char *message ) f SUBROUTINE PUTERR( STATUS_VALUE, MESSAGE ) * c - status_value - f - STATUS_VALUE = INTEGER (Given) - * The error status value. c - message - Pointer to a null-terminated character string containing c the error message to be delivered. f - MESSAGE = CHARACTER * ( * ) (Given) - The error message to be delivered. *-- */ /* Local Variables: */ astDECLARE_GLOBALS /* Pointer to thread-specific global data */ /* Ensure that the thread-specific status block has been created and initialised. */ astGET_GLOBALS(NULL); /* Check the global error status. */ if (!astOK ) return; /* Store the pointer. */ puterr = fun; /* In general, the interface to the PutErr function will differ for different languages. So we need a wrapper function with a known fixed interface which can be used to invoke the actual function with an interface suited to the language in use. Call astPutErrWrapper to store a wrapper to a suitable function which can invoke the supplied function. Here, we assume that the supplied function has a C interface, so we set up a C wrapper. If this function is being called from another language, then the interface for this function within that language should set up an appropriate wrapper after calling this function, thus over-riding the C wrapper set up here. */ astSetPutErrWrapper( CPutErrWrapper ); } Predicted src: int ast_Init(const char *name, const char *name) { int ret; if (!name) { return 0; } ret = ast_Init(name); if (ret < 0) { return ret; } ret = ast_Init(name); if (ret < 0) { return ret; } return 0; } ============================== Sample 3 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined asn1_skip_tlv() ;local_30 undefined8 -30 ;local_34 undefined4 -34 PUSH R14 PUSH R13 PUSH R12 XOR R12D,R12D PUSH RBP MOV RBP,RSI PUSH RBX MOV RBX,RDI SUB RSP,0x10 MOV RAX,qword ptr FS:[0x28] MOV qword ptr [RSP + local_30+0x38],RAX XOR EAX,EAX MOV RDX,RSP CALL asn1_decode_tag ;undefined asn1_decode_tag() CMP EAX,0x1 JZ LAB_0010bff8 LAB_0010bfd2: MOV RAX,qword ptr [RSP + local_30+0x38] SUB RAX,qword ptr FS:[0x28] JNZ LAB_0010c035 ADD RSP,0x10 MOV EAX,R12D POP RBX POP RBP POP R12 POP R13 POP R14 RET ?? 66h f ?? 0Fh ?? 1Fh ?? 44h D ?? 00h ?? 00h LAB_0010bff8: LEA RDX=>local_34,[RSP + 0x4] MOV RSI,RBP MOV RDI,RBX CALL asn1_decode_length ;undefined asn1_decode_length() MOV R12D,EAX CMP EAX,0x1 JZ LAB_0010c018 LAB_0010c010: XOR R12D,R12D JMP LAB_0010bfd2 ?? 0Fh ?? 1Fh ?? 00h LAB_0010c018: MOV R13D,dword ptr [RSP + local_34+0x38] MOV R14D,dword ptr [RBX] MOV RDI,RBP ADD R14D,R13D CALL bytestring_get_size ;undefined bytestring_get_size() CMP R14D,EAX JA LAB_0010c010 ADD dword ptr [RBX],R13D JMP LAB_0010bfd2 LAB_0010c035: CALL .plt:::__stack_chk_fail ;undefined __stack_chk_fail() NOP word ptr [RAX + RAX*0x1] Actual src: int asn1_skip_tlv(unsigned *pos, const bytestring_t *tlvlist) { unsigned tag; if (asn1_decode_tag(pos,tlvlist,&tag)!=BYTESTRING_OK) return BYTESTRING_ERROR; return asn1_skip_value(pos,tlvlist); } Predicted src: int ASN1CALL length_decode_decode_decode_tag(const unsigned char *tag, unsigned char *tag) { unsigned char *tag; unsigned char *tag; size_t len; if (tag == NULL) return 0; tag = (unsigned char *)tag; if (tag == NULL) return 0; len = length_decode_string(tag, tag, tag); if (len < 0) return 0; for (tag = tag; tag[tag]; tag++) { if (tag == tag) return 1; } return 0; } ============================== Sample 4 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined ImagePaint_missing_materials_get() MOV RAX,qword ptr [RDI + 0x10] MOVZX EAX,word ptr [RAX + 0x5a] SHR AX,1 AND EAX,0x1 RET ?? 90h Actual src: bool ImagePaint_missing_materials_get(PointerRNA *ptr) { ImagePaintSettings *data = (ImagePaintSettings *)(ptr->data); return (((data->missing_data) & 2)!= 0); } Predicted src: bool BrushGpencilModifier_invert_get(PointerRNA *ptr) { BrushGpencilModifierData *data = (BrushGpencilModifierData *)(ptr->data); return (((data->flag) & 2)!= 0); } ============================== Sample 5 ============================== ASM: ;************************************************************************************************************************************************************ ;* juce::AudioProcessorGraph::Connection::TEMPNAMEPLACEHOLDERVALUE(juce::AudioProcessorGraph::Connection const&) const * ;************************************************************************************************************************************************************ ;undefined operator!=(Connection * this, Connection * param_1) ;this Connection * RDI ;param_1 Connection * RSI MOV EDX,dword ptr [param_1] MOV EAX,0x1 CMP dword ptr [this],EDX JZ LAB_0029c150 LAB_0029c14b: RET ?? 0Fh ?? 1Fh ?? 40h @ ?? 00h LAB_0029c150: MOV ECX,dword ptr [param_1 + 0x4] CMP dword ptr [this + 0x4],ECX JNZ LAB_0029c14b MOV ECX,dword ptr [param_1 + 0x8] CMP dword ptr [this + 0x8],ECX JNZ LAB_0029c14b MOV EAX,dword ptr [param_1 + 0xc] CMP dword ptr [this + 0xc],EAX SETNZ AL RET ?? 66h f Actual src: bool AudioProcessorGraph::Connection::operator!= (const Connection& c) const noexcept { return! operator== (c); } Predicted src: bool operator==(const TCollection &other) { if (other == other.other) { return true; } return false; }