============================== Sample 1 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined Perl_parse_arithexpr() PUSH RBP MOV RBP,RDI PUSH RBX SUB RSP,0x8 TEST ESI,0xfffffffe JNZ LAB_001a9ade MOV EBX,ESI MOV EDX,0xa MOV ESI,0x103 CALL S_parse_recdescent_for_op ;undefined S_parse_recdescent_for_op() TEST RAX,RAX JZ LAB_001a9a90 LAB_001a9a87: ADD RSP,0x8 POP RBX POP RBP RET ?? 66h f ?? 90h LAB_001a9a90: TEST EBX,EBX JNZ LAB_001a9a87 MOV RAX,qword ptr [RBP + 0x200] CMP byte ptr [RAX + 0xff],0x0 JZ LAB_001a9ac0 LAB_001a9aa4: ADD RSP,0x8 MOV RDI,RBP XOR EDX,EDX XOR ESI,ESI POP RBX POP RBP JMP .plt:Perl_newOP ;undefined Perl_newOP() ?? 66h f ?? 2Eh . ?? 0Fh ?? 1Fh ?? 84h ?? 00h ?? 00h ?? 00h ?? 00h ?? 00h LAB_001a9ac0: MOV RDI,RBP LEA RSI,[.rodata:s_Parse_error_002d58bc] ;= "Parse error" XOR EAX,EAX CALL .plt:Perl_mess ;undefined Perl_mess(undefined param_... MOV RDI,RBP MOV RSI,RAX CALL .plt:Perl_qerror ;undefined Perl_qerror() JMP LAB_001a9aa4 LAB_001a9ade: LEA RDX,[.rodata:s_parse_expr_002d6081] ;= "parse_expr" LEA RSI,[.rodata:s_Parsing_code_internal_error_(%s)_002d7450] ;= "Parsing code internal error (%s)" XOR EAX,EAX CALL .plt:Perl_croak ;undefined Perl_croak(undefined param... NOP dword ptr CS:[RAX + RAX*0x1] Actual src: OP * Perl_parse_arithexpr(pTHX_ U32 flags) { return parse_expr(LEX_FAKEEOF_COMPARE, flags); } Predicted src: static int string_new(const char *name) { char *name = NULL; if (!name) return -1; if (!name) return -1; if (!name) return -1; if (!name) return -1; if (!name) return -1; if (!name) return -1; return 0; } ============================== Sample 2 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined vector_delete() TEST RDI,RDI JZ LAB_001bd150 PUSH RBP MOV RBP,RDI CALL .plt:IvocVect::~IvocVect ;undefined ~IvocVect(IvocVect * this) MOV RDI,RBP MOV ESI,0x28 POP RBP JMP .plt:::operator.delete ;void operator.delete(void * param_1,... ?? 0Fh ?? 1Fh ?? 40h @ ?? 00h LAB_001bd150: RET ?? 66h f Actual src: void vector_delete(Vect* v){delete v;} Predicted src: void on_delete(void) { if (NULL!= NULL) { free(NULL); return; } } ============================== Sample 3 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined soup_message_get_priority() PUSH RBX MOV RBX,RDI CALL .plt:soup_message_get_type ;undefined soup_message_get_type() TEST RBX,RBX JZ LAB_00146720 MOV RSI,RAX MOV RAX,qword ptr [RBX] TEST RAX,RAX JZ LAB_001466fe CMP qword ptr [RAX],RSI JZ LAB_0014670a LAB_001466fe: MOV RDI,RBX CALL .plt:::g_type_check_instance_is_a ;undefined g_type_check_instance_is_a() TEST EAX,EAX JZ LAB_00146720 LAB_0014670a: MOVSXD RAX,dword ptr [.bss:SoupMessage_private_offset] ;=?? MOV EAX,dword ptr [RBX + RAX*0x1 + 0x98] POP RBX RET ?? 66h f ?? 0Fh ?? 1Fh ?? 44h D ?? 00h ?? 00h LAB_00146720: LEA RDX,[.rodata:s_SOUP_IS_MESSAGE_(msg)_00173fcf] ;= "SOUP_IS_MESSAGE (msg)" LEA RSI,[.rodata:__func__.0] ;= "soup_message_get_priority" LEA RDI,[.rodata:s_libsoup_00173a36] ;= "libsoup" CALL .plt:::g_return_if_fail_warning ;undefined g_return_if_fail_warning() MOV EAX,0x2 POP RBX RET ?? 66h f Actual src: SoupMessagePriority soup_message_get_priority (SoupMessage *msg) { SoupMessagePrivate *priv; g_return_val_if_fail (SOUP_IS_MESSAGE (msg), SOUP_MESSAGE_PRIORITY_NORMAL); priv = soup_message_get_instance_private (msg); return priv->priority; } Predicted src: const gchar * gst_message_get_message (const gchar *message) { g_return_val_if_fail (message!= NULL, NULL); g_return_val_if_fail (message->priv->message!= NULL, NULL); return g_strdup (message->priv->message); } ============================== Sample 4 ============================== ASM: ;************************************************************************************************************************************************************ ;* KDL::Path_RoundedComposite::GetLengthToEndOfSegment(int) * ;************************************************************************************************************************************************************ ;undefined GetLengthToEndOfSegment(int param_1) ;param_1 int EDI MOV param_1,qword ptr [param_1 + 0x8] MOV RAX,qword ptr [param_1] JMP qword ptr [RAX + 0x60] ?? 66h f Actual src: double Path_RoundedComposite::GetLengthToEndOfSegment(int i) { return comp->GetLengthToEndOfSegment(i); } Predicted src: vtkBooleanMacro(int); ============================== Sample 5 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined gst_audio_ring_buffer_set_callback_full() ;local_40 undefined8 -40 PUSH R15 PUSH R14 PUSH R13 MOV R13,RSI PUSH R12 MOV R12,RDX PUSH RBP MOV RBP,RCX PUSH RBX MOV RBX,RDI SUB RSP,0x18 CALL gst_audio_ring_buffer_get_type ;undefined gst_audio_ring_buffer_get_... TEST RBX,RBX JZ LAB_00150f20 MOV RSI,RAX MOV RAX,qword ptr [RBX] TEST RAX,RAX JZ LAB_00150ea8 CMP qword ptr [RAX],RSI JZ LAB_00150eb4 LAB_00150ea8: MOV RDI,RBX CALL .plt:::g_type_check_instance_is_a ;undefined g_type_check_instance_is_a() TEST EAX,EAX JZ LAB_00150f20 LAB_00150eb4: LEA R14,[RBX + 0x18] MOV RDI,R14 CALL .plt:::g_mutex_lock ;undefined g_mutex_lock() MOV R8,qword ptr [RBX + 0x240] MOV R15,qword ptr [RBX + 0x358] MOV RDI,R14 MOV qword ptr [RBX + 0x238],R13 MOV qword ptr [RBX + 0x240],R12 MOV qword ptr [RBX + 0x358],RBP MOV qword ptr [RSP + local_40+0x48],R8 CALL .plt:::g_mutex_unlock ;undefined g_mutex_unlock() TEST R15,R15 MOV R8,qword ptr [RSP + local_40+0x48] JZ LAB_00150f10 ADD RSP,0x18 MOV RAX,R15 MOV RDI,R8 POP RBX POP RBP POP R12 POP R13 POP R14 POP R15 JMP RAX LAB_00150f10: ADD RSP,0x18 POP RBX POP RBP POP R12 POP R13 POP R14 POP R15 RET ?? 90h LAB_00150f20: ADD RSP,0x18 LEA RDX,[.rodata:s_GST_IS_AUDIO_RING_BUFFER_(buf)_00169588] ;= "GST_IS_AUDIO_RING_BUFFER (buf)" LEA RSI,[.rodata:__func__.26] ;= "gst_audio_ring_buffer_set_callbac... POP RBX LEA RDI,[.rodata:s_GStreamer-Audio_0015d74c] ;= "GStreamer-Audio" POP RBP POP R12 POP R13 POP R14 POP R15 JMP .plt:::g_return_if_fail_warning ;undefined g_return_if_fail_warning() ?? 0Fh Actual src: void gst_audio_ring_buffer_set_callback_full (GstAudioRingBuffer * buf, GstAudioRingBufferCallback cb, gpointer user_data, GDestroyNotify notify) { gpointer old_data = NULL; GDestroyNotify old_notify; g_return_if_fail (GST_IS_AUDIO_RING_BUFFER (buf)); GST_OBJECT_LOCK (buf); old_notify = buf->cb_data_notify; old_data = buf->cb_data; buf->callback = cb; buf->cb_data = user_data; buf->cb_data_notify = notify; GST_OBJECT_UNLOCK (buf); if (old_notify) { old_notify (old_data); } } Predicted src: static void buffer_buffer_buffer_buffer_buffer_buffer_buffer_buffer_buffer_buffer_buffer_buffer_buffer_buffer_buffer_buffer_buffer_buffer_buffer_buffer_buffer_buffer_buffer_buffer(buffer_buffer_buffer_buffer_buffer_buffer_buffer_buffer_buffer_buffer_buffer_buffer_buffer_buffer_buffer_buffer_buffer_buffer_buffer_buffer_buffer_buffer_buffer_buffer_buffer_buffer_buffer_buffer_buffer_buffer_buffer_buffer_bufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbufferbuffe