============================== Sample 1 ============================== ASM: ;************************************************************************************************************************************************************ ;* CL_CommandLine_Generic::next() * ;************************************************************************************************************************************************************ ;undefined next(CL_CommandLine_Generic * this) ;this CL_CommandL... RDI MOV RDX,qword ptr [this + 0x48] MOV RAX,qword ptr [this + 0x58] CMP RAX,RDX JZ LAB_0014f790 ADD RAX,0x28 CMP RDX,RAX MOV qword ptr [this + 0x58],RAX SETNZ AL RET ?? 0Fh ?? 1Fh ?? 40h @ ?? 00h LAB_0014f790: MOV RDX,qword ptr [this + 0x40] CMP RAX,RDX MOV qword ptr [this + 0x58],RDX SETNZ AL RET ?? 90h Actual src: bool CL_CommandLine_Generic::next() { if (current_option == parsed_options.end()) { (current_option = parsed_options.begin()); return current_option!= parsed_options.end(); } else { return (++current_option)!= parsed_options.end(); } } Predicted src: bool Command_Command::next_next() { if (m_next_next_ == m_next) return true; else return false; } ============================== Sample 2 ============================== 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_cert(const X509 *x) { return X509_get_current_cert(x->cert); } ============================== Sample 3 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined fd_write() PUSH R13 MOV R13,RCX PUSH R12 MOV R12,RDX XOR EDX,EDX PUSH RBP MOV EBP,EDI PUSH RBX MOV RBX,RSI SUB RSP,0x8 CALL .plt:::lseek ;__off_t lseek(int __fd, __off_t __of... CMP RAX,RBX JNZ LAB_00139860 ADD RSP,0x8 MOV RDX,R13 MOV RSI,R12 MOV EDI,EBP POP RBX POP RBP POP R12 POP R13 JMP .plt:::write ;ssize_t write(int __fd, void * __buf... ?? 0Fh ?? 1Fh ?? 84h ?? 00h ?? 00h ?? 00h ?? 00h ?? 00h LAB_00139860: ADD RSP,0x8 MOV RAX,-0x1 POP RBX POP RBP POP R12 POP R13 RET ?? 66h f Actual src: ssize_t fd_write(int fd, off_t offset, const void *src, size_t size) { if (lseek(fd, offset, SEEK_SET)!= offset) return -1; return write(fd, src, size); } Predicted src: static ssize_t write(int fd, void *buf, size_t len, void *buf, size_t len) { ssize_t ret = write(fd, buf, len, buf, len); if (ret == -1) return ret; return write(fd, buf, len); } ============================== Sample 4 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined fileAddComplexValue() TEST ESI,ESI JZ LAB_001f4080 MOV RAX,qword ptr [.bss:column] ;=?? MOV RDX,qword ptr [.bss:rowbuf] ;=?? LEA RCX,[RAX + 0x2] MOVSD qword ptr [RDX + RAX*0x8],XMM0 MOV qword ptr [.bss:column],RCX ;=?? MOVSD qword ptr [RDX + RAX*0x8 + 0x8],XMM1 RET ?? 0Fh ?? 1Fh ?? 80h ?? 00h ?? 00h ?? 00h ?? 00h LAB_001f4080: MOV ECX,0xf MOV EDX,0xf MOV EAX,0x2 LEA RSI,[.rodata:s__%.*e,%.*e_00712740] ;= "\t%.*e,%.*e\n" JMP sh_fprintf ;undefined sh_fprintf(undefined param... ?? 0Fh Actual src: static void fileAddComplexValue(FILE *fp, bool bin, IFcomplex value) { if (bin) { rowbuf[column++] = value.real; rowbuf[column++] = value.imag; } else { fprintf(fp, "\t%.*e,%.*e\n", DOUBLE_PRECISION, value.real, DOUBLE_PRECISION, value.imag); } } Predicted src: void rowrow(FILE *fp, char *name, int n) { if (n < 0) fprintf(fp, "%s\n", name, n); else fprintf(fp, "%s\n", name); } ============================== Sample 5 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined svt_aom_highbd_dc_predictor_8x32_c() PUSH R13 XOR EAX,EAX MOV R13,RSI PUSH R12 PUSH RBP PUSH RBX MOV RBX,RDI LEA RDI,[RDX + 0x10] SUB RSP,0x8 NOP word ptr CS:[RAX + RAX*0x1] LAB_00155040: MOVZX ESI,word ptr [RDX] ADD RDX,0x2 ADD EAX,ESI CMP RDI,RDX JNZ LAB_00155040 LEA RSI,[RCX + 0x40] NOP word ptr [RAX + RAX*0x1] LAB_00155058: MOVZX EDX,word ptr [RCX] ADD RCX,0x2 ADD EAX,EDX CMP RSI,RCX JNZ LAB_00155058 LEA R12D,[RAX + 0x14] MOV EAX,0xcccccccd ADD R13,R13 MOV EBP,0x20 IMUL R12,RAX SHR R12,0x25 NOP LAB_00155080: MOV RDI,RBX MOV EDX,0x8 MOV ESI,R12D ADD RBX,R13 CALL svt_aom_memset16 ;undefined svt_aom_memset16() SUB EBP,0x1 JNZ LAB_00155080 ADD RSP,0x8 POP RBX POP RBP POP R12 POP R13 RET ?? 66h f Actual src: intra_pred_highbd_sized(dc, 8, 32) Predicted src: intra_pred_highbd_sized(dc_highbd_highbd_highbd_highbd_highbd_highbd_highbd_highbd_highbd_highbd_highbd_highbd_sized, uint16_t, uint16_t *above, uint16_t *above, uint16_t *above, uint16_t *above, uint16_t *above, uint16_t stride, uint16_t stride, uint16_t stride, uint16_t stride, uint16_t stride, uint16_t stride, uint16_t stride, uint16_t stride, uint16_t stride, uint16_t stride, uint16_t stride, uint16_t stride, uint16_t stride, uint16_t stride, uint16_t stride, uint16_t stride, uint16_t stride, uint16_t stride, uint16_t stride, uint16_t stride, uint16_t stride, uint16_t stride, uint16_t stride, uint16_t stride, uint16_t stride, uint16_t stride, uint16_t stride, uint16_t stride, uint16_t stride, uint16_t stride, uint16_t stride, uint16_t stride, uint16_t stride, uint16_t stride, uint16_t stride, uint16_t stride, uint16_t stride, uint16_t stride, uint16_t stride, uint16_t stride, uint16_t stride, uint16_t stride, uint16_t stride, uint16_t stride, uint16_t stride, uint16_t stride, uint16_t stride, uint16_t stride, uint16_t stride, uint16_t stride, uint16_t stride, uint16_t stride, uint16_t stride, uint16_t stride, uint16_t stride, uint16_t stride, uint16_t stride, uint16_t stride, uint16_t stride, uint16_t stride, uint16_t stride, uint16_t stride, uint16_t stride, uint16_t stride, uint16_t stride, uint16_t stride, uint16_t stride, uint16_t stride, uint16_t stride, uint16_t stride, uint16_t stride, uint16_t stride, uint16_t stride, uint16_t stride, uint16_t stride, uint16_t stride, uint16_t stride, uint16_t stride, ) { uint16_t stride = (uint16_t *)above; uint16_t stride = (uint16_t *)above; for (uint16_t i = 0; i < stride; i++) { for (uint16_t j < stride; j++) { { { uint16_t j; uint16_t j; uint16_t j; uint16_t j; j = (uint16_t) (uint16_t) j; j = (uint16_t) j; j += (uint16_t) j; j += (uint16_t) j; j += (uint16_t) j; j += (uint16_t) j; j += (uint16_t) j; j += (uint16_t) j; j += (uint16_t) j; j += (uint16_t) j; j += (uint16_t) j; j += (uint16_t) j; j += (uint16_t) j; j += (uint16_t) j; j += (uint16_t) j; j += (uint16_t) j; j +=