============================== Sample 1 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined eph_waitack() PUSH R12 XOR R12D,R12D PUSH RBP MOV RBP,RDI SUB RSP,0x8 CALL eph_waitchar ;undefined eph_waitchar() CMP EAX,0x6 JZ LAB_0010cf38 MOV R12D,EAX AND EAX,0xfffffffb CMP EAX,0x11 JZ LAB_0010cf38 CMP R12D,0x18 JNZ LAB_0010cf48 LAB_0010cf38: ADD RSP,0x8 MOV EAX,R12D POP RBP POP R12 RET ?? 0Fh ?? 1Fh ?? 44h D ?? 00h ?? 00h LAB_0010cf48: MOV ECX,R12D MOV RDI,RBP XOR EAX,EAX MOV ESI,0x2713 LEA RDX,[.rodata:s_eph_waitack_got_%d_00110937] ;= "eph_waitack got %d" CALL eph_error ;undefined eph_error(undefined param_... ADD RSP,0x8 MOV EAX,R12D POP RBP POP R12 RET ?? 0Fh Actual src: int eph_waitack(eph_iob *iob,long timeout_usec) { int rc; if ((rc=eph_waitchar(iob,timeout_usec)) == ACK) return 0; if ((rc!= DC1) && (rc!= NAK) && (rc!= CAN)) eph_error(iob,ERR_BADREAD,"eph_waitack got %d",rc); return rc; } Predicted src: int e_wait_wait(const char *path) { int ret; ret = e_wait_wait(path, &ret); if (ret == 0) return ret; return ret; } ============================== Sample 2 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined pxy_setextattr_value_by_id() MOV EAX,0x2714 RET ?? 66h f Actual src: fsal_status_t pxy_setextattr_value_by_id(struct fsal_obj_handle *obj_hdl, const struct req_op_context *opctx, unsigned int xattr_id, void *buffer_addr, size_t buffer_size) { return fsalstat(ERR_FSAL_NOTSUPP, 0); } Predicted src: int attr_set_attr_by_attr(attr_t *attr, const char *attr) { return -EINVAL; } ============================== Sample 3 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined t3_key_get_version() MOV EAX,0x20a RET ?? 66h f Actual src: long t3_key_get_version(void) { return T3_KEY_VERSION; } Predicted src: uint32_t key_get_version (void) { return sizeof (key_t); } ============================== Sample 4 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined gst_audio_channel_mixer_mix_float_planar_planar() MOVSXD RAX,ECX PUSH R14 PUSH R13 PUSH R12 PUSH RBP PUSH RBX MOV EBX,dword ptr [RDI] MOV R14D,dword ptr [RDI + 0x4] TEST EAX,EAX JLE LAB_00117f1a MOV RBP,RDI LEA R13,[RAX*0x4] MOV R9,RSI XOR EDI,EDI LEA EAX,[R14 + -0x1] MOV R11,RDX PXOR XMM2,XMM2 MOVSXD R10,EBX LEA R12,[0x4 + RAX*0x4] NOP LAB_00117ec0: XOR ESI,ESI TEST R14D,R14D JLE LAB_00117f11 NOP word ptr [RAX + RAX*0x1] LAB_00117ed0: MOVAPS XMM1,XMM2 TEST EBX,EBX JLE LAB_00117eff MOV R8,qword ptr [RBP + 0x8] XOR EAX,EAX MOVAPS XMM1,XMM2 LAB_00117ee0: MOV RCX,qword ptr [R8 + RAX*0x8] MOV RDX,qword ptr [R9 + RAX*0x8] ADD RAX,0x1 MOVSS XMM0,dword ptr [RCX + RSI*0x1] MULSS XMM0,dword ptr [RDX + RDI*0x1] ADDSS XMM1,XMM0 CMP R10,RAX JNZ LAB_00117ee0 LAB_00117eff: MOV RAX,qword ptr [R11 + RSI*0x2] ADD RSI,0x4 MOVSS dword ptr [RAX + RDI*0x1],XMM1 CMP R12,RSI JNZ LAB_00117ed0 LAB_00117f11: ADD RDI,0x4 CMP R13,RDI JNZ LAB_00117ec0 LAB_00117f1a: POP RBX POP RBP POP R12 POP R13 POP R14 RET ?? 66h f Actual src: DEFINE_FLOAT_MIX_FUNC (float, planar, planar); Predicted src: static void gst_audio_audio_channel_audio_audio_float (GstAudiochannel *channel, guint n, const GValue * value, gpointer user_data) { guint i; for (i = 0; i < n; i++) { for (i = 0; i < n; i++) { for (i = 0; i < n; i++) { gst_audio_channel_audio_float_audio_float_audio (channel, i, value[i]); } } } } ============================== Sample 5 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined lw_srvchan_close() PUSH RBP MOV RBP,RDI CALL lw_sock_close ;undefined lw_sock_close() MOV RDI,qword ptr [RBP + 0x30] TEST RDI,RDI JZ LAB_00107c0f CALL .plt:::free ;void free(void * __ptr) MOV qword ptr [RBP + 0x30],0x0 LAB_00107c0f: MOV RDI,RBP POP RBP JMP reset ;undefined reset() ?? 0Fh Actual src: void lw_srvchan_close (LW_SRVCHAN * chan) { lw_sock_close (&(chan->sock)); if (chan->map!= NULL) { free (chan->map); chan->map = NULL; } reset (chan); } Predicted src: static void close_close(void *data) { struct wlr_client *client = data; if (client->fd!= NULL) close(client->fd); free(client); }