============================== Sample 1 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined gf_props_get_id() TEST RDI,RDI JZ LAB_004f5b40 PUSH R12 MOV R12,RDI PUSH RBP LEA RBP,[.data:GF_BuiltInProps[8]] PUSH RBX XOR EBX,EBX JMP LAB_004f5b0f ?? 66h f ?? 0Fh ;? -> 00841f0f ?? 1Fh ?? 84h ?? 00h ?? 00h ?? 00h ?? 00h ?? 00h LAB_004f5b00: ADD EBX,0x1 ADD RBP,0x20 CMP EBX,0xba JZ LAB_004f5b43 LAB_004f5b0f: ; FWD[3,0]: 0073b88e,0088f4c8,0088f4e8 MOV RDI=>.rodata:s_ID_0073b887+7,qword ptr [RBP]=>.data:GF_BuiltInProps[8] ;= "ID" TEST RDI,RDI JZ LAB_004f5b00 MOV RSI,R12 CALL .plt:::strcmp ;int strcmp(char * __s1, char * __s2) TEST EAX,EAX JNZ LAB_004f5b00 SHL RBX,0x5 LEA RAX,[.data:GF_BuiltInProps] MOV EAX,dword ptr [RAX + RBX*0x1]=>.data:GF_BuiltInProps POP RBX POP RBP POP R12 RET ?? 66h f ?? 0Fh ;? -> 00841f0f ?? 1Fh ?? 84h ?? 00h ?? 00h ?? 00h ?? 00h ?? 00h LAB_004f5b40: XOR EAX,EAX RET LAB_004f5b43: POP RBX XOR EAX,EAX POP RBP POP R12 RET ?? 66h f Actual src: GF_EXPORT u32 gf_props_get_id(const char *name) { u32 i, nb_props; if (!name) return 0; nb_props = sizeof(GF_BuiltInProps) / sizeof(GF_BuiltInProperty); for (i=0; iUnit::vtable] ;= 00288da8 ADD RAX,0x10 MOV qword ptr [RDI + -0x18],RAX=>.data.rel.ro:PTR_~Unit_00288db8 ;= 00203f20 MOV qword ptr [R12 + 0x8],RDI MOV RBP,qword ptr [RSI + 0x80] MOV RAX,RBP ADD RAX,R13 JZ LAB_00207791 TEST RBP,RBP JZ LAB_00207816 LAB_00207791: MOV qword ptr [RSP]=>local_28,R13 CMP R13,0xf JA LAB_002077e0 CMP R13,0x1 JNZ LAB_002077d8 MOVZX EAX,byte ptr [RBP] MOV byte ptr [R12 + 0x18],AL LAB_002077aa: MOV qword ptr [R12 + 0x10],R13 MOV byte ptr [RDI + R13*0x1],0x0 MOV RAX,qword ptr [RSP + local_20+0x28] SUB RAX,qword ptr FS:[0x28] JNZ LAB_00207822 ADD RSP,0x10 MOV RAX,R12 POP RBP POP R12 POP R13 RET ?? 0Fh ?? 1Fh ?? 80h ?? 00h ?? 00h ?? 00h ?? 00h LAB_002077d8: TEST R13,R13 JZ LAB_002077aa JMP LAB_00207800 ?? 90h LAB_002077e0: LEA RDI,[R12 + 0x8] MOV RSI,RSP XOR EDX,EDX CALL .plt:::std::__cxx11::basic_string,std::allocator>::_M...;undefined _M_create(ulong * param_1,... MOV qword ptr [R12 + 0x8],RAX MOV RDI,RAX MOV RAX,qword ptr [RSP]=>local_28 MOV qword ptr [R12 + 0x18],RAX LAB_00207800: MOV RDX,R13 MOV RSI,RBP CALL .plt:::memcpy ;void * memcpy(void * __dest, void *... MOV R13,qword ptr [RSP]=>local_28 MOV RDI,qword ptr [R12 + 0x8] JMP LAB_002077aa LAB_00207816: LEA RDI,[.rodata:s_basic_string::_M_construct_null_n_0021e1b8] ;= "basic_string::_M_construct null n... CALL .plt:::std::__throw_logic_error ;undefined __throw_logic_error(char *... LAB_00207822: CALL .plt:::__stack_chk_fail ;undefined __stack_chk_fail() NOP Actual src: Unit Load::getUnit() const { return unit; } Predicted src: std::string CUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUnitUni ============================== Sample 3 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined __newSnowballStemmer() ;local_28 undefined1[16] -28 PUSH R12 XOR ESI,ESI PUSH RBX SUB RSP,0x18 ; FWD[2,0]: 0017e440,002f4d30 MOVQ XMM0,qword ptr [->__sbstemmer_Stem] ;= 0017e440 MOVHPS XMM0,qword ptr [->__sbstemmer_Free] ;= 0017e510 MOVAPS xmmword ptr [RSP]=>local_28,XMM0 CALL .plt:sb_stemmer_new ;undefined sb_stemmer_new() MOV R12,RAX TEST RAX,RAX JZ LAB_0017e687 MOV EDI,0x18 CALL .plt.got:::malloc ;void * malloc(size_t __size) MOV EDI,0x18 MOV qword ptr [RAX],R12 MOV RBX,RAX MOV qword ptr [RAX + 0x10],0x18 CALL .plt.got:::malloc ;void * malloc(size_t __size) MOV EDI,0x30 MOV byte ptr [RAX],0x2b MOV qword ptr [RBX + 0x8],RAX CALL .plt.got:::malloc ;void * malloc(size_t __size) MOVDQA XMM0,xmmword ptr [RSP]=>local_28 MOV qword ptr [RAX],RBX MOV R12,RAX MOVUPS xmmword ptr [RAX + 0x8],XMM0 LEA RAX,[sbstemmer_Reset] MOV qword ptr [R12 + 0x18],RAX=>sbstemmer_Reset LAB_0017e687: ADD RSP,0x18 MOV RAX,R12 POP RBX POP R12 RET ?? 66h f Actual src: Stemmer *__newSnowballStemmer(const char *language) { struct sb_stemmer *sb = sb_stemmer_new(language, NULL); // No stemmer available for this language if (!sb) { return NULL; } struct sbStemmerCtx *ctx = malloc(sizeof(*ctx)); ctx->sb = sb; ctx->cap = 24; ctx->buf = malloc(ctx->cap); ctx->buf[0] = STEM_PREFIX; Stemmer *ret = malloc(sizeof(Stemmer)); ret->ctx = ctx; ret->Stem = __sbstemmer_Stem; ret->Free = __sbstemmer_Free; ret->Reset = sbstemmer_Reset; return ret; } Predicted src: SLEPC_API SLEPC_EXPORT SLEPC_API SLEPC_t* SLEPC_new(void) { SLEPC_s* s; s = (SLEPC_s*) malloc(sizeof(SLEPC_s)); if (s == NULL) return NULL; s->data = (SLEPC_s*) malloc(sizeof(SLEPC_s)); s->data = (SLEPC_s*) malloc(sizeof(SLEPC_s)); s->data = (SLEPC_s*) malloc(sizeof(SLEPC_s)); s->data = (SLEPC_s*) malloc(sizeof(SLEPC_s)); return s; } ============================== Sample 4 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined aom_sad_skip_32x64_c() ADD ESI,ESI ADD ECX,ECX MOV R8,RDI MOV R9D,0x20 MOVSXD R11,ESI MOV RDI,RDX MOVSXD R10,ECX XOR ESI,ESI NOP dword ptr [RAX + RAX*0x1] LAB_001479d0: XOR EDX,EDX NOP word ptr [RAX + RAX*0x1] LAB_001479d8: MOVZX ECX,byte ptr [RDI + RDX*0x1] MOVZX EAX,byte ptr [R8 + RDX*0x1] SUB EAX,ECX MOV ECX,EAX NEG ECX CMOVNS EAX,ECX ADD RDX,0x1 ADD ESI,EAX CMP RDX,0x20 JNZ LAB_001479d8 ADD R8,R11 ADD RDI,R10 SUB R9D,0x1 JNZ LAB_001479d0 LEA EAX,[RSI + RSI*0x1] RET ?? 66h f Actual src: sadMxN(32, 64); Predicted src: intra_pred_highbd_sized(h, 64, 64) ============================== Sample 5 ============================== ASM: ;************************************************************************************************************************************************************ ;* Pattern::canBeEmpty(States const&) const * ;************************************************************************************************************************************************************ ;undefined canBeEmpty(Pattern * this, States * param_1) ;this Pattern * RDI ;param_1 States * RSI MOV RAX,this MOV this,param_1 CMP qword ptr [RAX + 0x20],0x0 JZ LAB_0013fdb0 MOV param_1,qword ptr [RAX + 0x10] JMP Pattern::empty ;undefined empty(States * param_1, ul... ?? 66h f ?? 2Eh . ?? 0Fh ?? 1Fh ?? 84h ?? 00h ?? 00h ?? 00h ?? 00h ?? 00h LAB_0013fdb0: MOV EAX,0x1 RET ?? 66h f Actual src: bool Pattern::canBeEmpty(States const &states) const { return (fixedLength() && length() == 0) or empty(states, d_pair.first); } Predicted src: bool can::can_empty(constcan::can::can::can::can::can::can::can::can::can::can::can::can::can::can::can::can::can::can::can::can::can::can::can::can::can::can::can::can::can::can::can::can::can::can::can::can::can::can::can::can::can::can::can::can::can::can::can::can::can::can::can::can::can::can::can::can::can::can::can::can::can::can::can::can::can::can::can::can::can::can::can::can::can::can::can::can::can::can::can::can::can::can::can::can::can::can::can::can::can::can::can::can::can::can::can::can::can::can::can::can::can::can::can::can::can::can::can::can::can::can::can::can::can::can::can::can::can::can::can::can::can::can::can::can::can::can::can::can::can::can::can::can::can::can::can::can::can::can::can::can::can::can::can::can::can::can::can::can::can::can::can::can::can::can::cancan::can::can::can::can::cancan::can::can::can::cancan::can::can::cancan::can::cancan::can::cancan::can::cancan::can::cancan::can::cancan::can::cancan::cancan::cancan::cancan::cancan::cancan::cancan::cancan::cancan::cancan::cancan::cancan::cancan::cancan::cancan::cancan::cancan::cancan::cancan::cancan::cancan::cancan::cancan::cancancan::cancan::cancancan::cancan::cancancan::cancancan::cancancan::cancancan::cancancancan::cancancan::cancancancan::cancancancan::cancancancancan::cancancancancancan::cancancancancancan::cancancancancancancancancan::cancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancancanca