============================== Sample 1 ============================== ASM: ;************************************************************************************************************************************************************ ;* QComboBox_Adaptor::sizeHint() const * ;************************************************************************************************************************************************************ ;undefined sizeHint(QComboBox_Adaptor * this) ;this QComboBox_A... RDI PUSH R12 LEA R12,[this + 0x278] PUSH RBP MOV RBP,this MOV this,R12 SUB RSP,0x8 CALL .plt:::tl::WeakOrSharedPtr::get ;undefined get(void) TEST RAX,RAX JZ LAB_00c0bc3e MOV this,R12 CALL .plt:::tl::WeakOrSharedPtr::get ;undefined get(void) MOV this,RAX TEST RAX,RAX JZ LAB_00c0bc4d MOV RDX=>.data.rel.ro:gsi::Callee::typeinfo,qword ptr [->gsi::Callee::typeinfo] ;= 02782628 ;= 02a29710 MOV RSI=>EXTERNAL:tl::Object::typeinfo,qword ptr [->tl::Object::typeinfo] ;= 02a1e480 ;=?? XOR ECX,ECX CALL .plt:::__dynamic_cast ;undefined __dynamic_cast() MOV this,RAX MOV RAX,qword ptr [RAX] MOV RAX,qword ptr [RAX + 0x18] CMP RAX,qword ptr [->gsi::Callee::can_call] ;= 00914c70 JNZ LAB_00c0bc38 LAB_00c0bc16: ADD RSP,0x8 LEA this,[RBP + 0x270] LEA RSI,[QComboBox_Adaptor::cbs_sizeHint_c0_0] XOR EDX,EDX POP RBP POP R12 JMP gsi::Callback::issue ;QSize issue... ?? 66h f ?? 0Fh ?? 1Fh ?? 44h D ?? 00h ?? 00h LAB_00c0bc38: CALL RAX TEST AL,AL JNZ LAB_00c0bc16 LAB_00c0bc3e: ADD RSP,0x8 MOV this,RBP POP RBP POP R12 JMP .plt:::QComboBox::sizeHint ;undefined sizeHint(void) LAB_00c0bc4d: MOV RAX,qword ptr [DAT_00000000] UD2 ?? 66h f Actual src: virtual QSize sizeHint() const { if (cb_sizeHint_c0_0.can_issue()) { return cb_sizeHint_c0_0.issue(&QComboBox_Adaptor::cbs_sizeHint_c0_0); } else { return QComboBox::sizeHint(); } } Predicted src: virtual QSize size() const { if (cb_paint_c0_0.can_issue()) { return cb_paint_c0_0.issue::strlen ;size_t strlen(char * __s) CMP RAX,0x3ff CMOVA RBX,R15 MOV qword ptr [R14 + RBP*0x8]=>.bss:com_argv,RBX ADD RBP,0x1 CMP R12D,EBP JLE LAB_00160c95 LAB_00160c77: MOV RBX,qword ptr [R13 + RBP*0x8] TEST RBX,RBX JNZ LAB_00160c58 LEA RBX,[.rodata:DAT_00286e0d] MOV qword ptr [R14 + RBP*0x8]=>.bss:com_argv,RBX=>.rodata:DAT_00286e0d ADD RBP,0x1 CMP R12D,EBP JG LAB_00160c77 LAB_00160c95: ADD RSP,0x8 POP RBX POP RBP POP R12 POP R13 POP R14 POP R15 RET ?? 0Fh ?? 1Fh ?? 40h @ ?? 00h LAB_00160ca8: LEA RSI,[.rodata:s_argc_>_MAX_NUM_ARGVS_0028ed0d] ;= "argc > MAX_NUM_ARGVS" XOR EDI,EDI XOR EAX,EAX CALL Com_Error ;undefined Com_Error(undefined param_... MOV dword ptr [.bss:com_argc],R12D JMP LAB_00160c43 ?? 66h f Actual src: void COM_InitArgv (int argc, char **argv) { int i; if (argc > MAX_NUM_ARGVS) Com_Error (ERR_FATAL, "argc > MAX_NUM_ARGVS"); com_argc = argc; for (i=0 ; i= MAX_TOKEN_CHARS ) com_argv[i] = ""; else com_argv[i] = argv[i]; } } Predicted src: void Init(int n) { int i; for (i = 0; i < n; i++) { if (n == 0) { fprintf(stderr, "\n"); return; } } for (i = 0; i < n; i++) { fprintf(stderr, "\n"); fprintf(stderr, "\n"); fprintf(stderr, "\n"); fprintf(stderr, "\n"); fprintf(stderr, "\n"); } } ============================== Sample 3 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined f_11826() ;local_30 undefined8 -30 ;local_40 undefined8 -40 ;local_48 undefined8 -48 ;local_50 undefined8 -50 PUSH RBP MOV RBP,RSP PUSH R14 PUSH R13 PUSH R12 MOV R12,RSI PUSH RBX MOV RBX,RDI SUB RSP,0x10 MOV RDX=>EXTERNAL:C_timer_interrupt_counter,qword ptr [->C_timer_interrupt_counter] ;= 001c62a8 ;=?? MOV R14,qword ptr [RSI] MOV RAX,qword ptr FS:[0x28] MOV qword ptr [RBP + local_30+0x8],RAX XOR EAX,EAX MOV R13,qword ptr [RSI + 0x8] MOV RAX,qword ptr [RDX]=>EXTERNAL:C_timer_interrupt_counter ;=?? SUB RAX,0x1 MOV qword ptr [RDX]=>EXTERNAL:C_timer_interrupt_counter,RAX ;=?? TEST RAX,RAX JLE LAB_00149201 LAB_001491a1: MOV RAX,qword ptr [->C_stack_limit] ;= 001c6148 MOV RDX,qword ptr [->C_scratch_usage] ;= 001c6298 MOV RCX,RSP SUB RCX,qword ptr [RAX]=>EXTERNAL:C_stack_limit ;=?? MOV RDX=>EXTERNAL:C_scratch_usage,qword ptr [RDX] ;=?? MOV RAX,RCX XOR ECX,ECX SAR RAX,0x3 CMP RBX,0x2 SETL CL LEA RDX,[RCX + RDX*0x1 + 0x3] CMP RAX,RDX JLE LAB_0014920d SUB RSP,0x20 MOV RDI,qword ptr [R14 + 0x10] MOV RAX,0x300000000000002 LEA RSI=>local_50+0x7,[RSP + 0xf] AND RSI,-0x10 MOV qword ptr [RSI]=>local_50,RAX MOV qword ptr [RSI + local_48+0x50],R13 MOV qword ptr [RSI + local_40+0x50],0xe CALL f_11757 ;undefined f_11757() LAB_00149201: MOV EDI,0xff CALL .plt:::C_raise_interrupt ;undefined C_raise_interrupt() JMP LAB_001491a1 LAB_0014920d: MOV RDX,R12 MOV ESI,EBX LEA RDI,[f_11826] CALL .plt:::C_save_and_reclaim ;undefined C_save_and_reclaim() NOP Actual src: static void C_ccall f_11826(C_word c,C_word *av){ C_word tmp; C_word t0=av[0]; C_word t1=av[1]; C_word t2; C_word *a; C_check_for_interrupt; if(C_unlikely(!C_demand(C_calculate_demand(3,c,1)))){ C_save_and_reclaim((void *)f_11826,c,av);} a=C_alloc(3); t2=((C_word*)t0)[2]; f_11757(t2,C_a_i_list1(&a,1,t1));} Predicted src: static void C_ccall f_1010(C_word c,C_word *av){ C_word tmp; C_word t0=av[0]; C_word t1=av[1]; C_word t2; C_word t3; C_word *a; C_check_for_interrupt; if(C_unlikely(!C_demand(C_calculate_demand(3,c,2)))){ C_save_and_reclaim((void *)f_101010,c,av);} a=C_alloc(3); t2=(*a=C_CLOSURE_TYPE|2,a[1]=(C_word)f_1010,a[2]=((C_word*)t0)[2],a[3]=((C_word*)t0)[3],a[4]=((C_word*)t0)[4],a[5]=((C_word*)t0)[5],a[5]=((C_word*)t0)[5],tmp=(C_word)a,a+=5,tmp); /* c-platform.scm: chicken.scm: chicken.compiler.compiler.compiler.compiler.compiler.compiler.compiler.compiler.compiler.compiler.compiler */ t3=((C_word*)t0)[5];{ C_word *av2; av2[0]=t3; av2[1]=t3; av2[2]=((C_word*)t0)[5]; ((C_proc)(void*)(*((C_word*)t3+1)))(2,av2);}} ============================== Sample 4 ============================== ASM: ;************************************************************************************************************************************************************ ;* js::frontend::ElemOpEmitter::prepareForRhs() * ;************************************************************************************************************************************************************ ;undefined prepareForRhs(ElemOpEmitter * this) ;this ElemOpEmitt... RDI MOV EAX,dword ptr [this + 0x8] SUB EAX,0x8 CMP EAX,0x1 JA LAB_00687ad2 MOV EAX,dword ptr [this + 0xc] TEST EAX,EAX JZ LAB_00687ae0 LAB_00687ad2: MOV EAX,0x1 RET ?? 0Fh ;? -> 00841f0f ?? 1Fh ?? 84h ?? 00h ?? 00h ?? 00h ?? 00h ?? 00h LAB_00687ae0: MOV this,qword ptr [this] JMP js::frontend::BytecodeEmitter::emitSuperBase ;undefined emitSuperBase(BytecodeEmit... ?? 0Fh ;? -> 00841f0f Actual src: bool ElemOpEmitter::prepareForRhs() { MOZ_ASSERT(isSimpleAssignment() || isPropInit() || isCompoundAssignment()); MOZ_ASSERT_IF(isSimpleAssignment() || isPropInit(), state_ == State::Key); MOZ_ASSERT_IF(isCompoundAssignment(), state_ == State::Get); if (isSimpleAssignment() || isPropInit()) { // For CompoundAssignment, SuperBase is already emitted by emitGet. if (isSuper()) { if (!bce_->emitSuperBase()) { // [stack] THIS KEY SUPERBASE return false; } } } #ifdef DEBUG state_ = State::Rhs; #endif return true; } Predicted src: void Reader::emit() { if (m_impl) { m_impl->emit(m_impl); } } ============================== Sample 5 ============================== ASM: ;************************************************************************************************************************************************************ ;* FUNCTION * ;************************************************************************************************************************************************************ ;undefined dhcp6_calc_mac() ;local_30 undefined8 -30 ;local_48 undefined1[16] -48 PUSH R13 PUSH R12 PUSH RBP PUSH RBX SUB RSP,0xc8 MOV RAX,qword ptr FS:[0x28] MOV qword ptr [RSP + local_30+0xe8],RAX XOR EAX,EAX CMP ECX,0x1 JNZ LAB_00112b80 LEA RAX,[R8 + 0x10] MOV RBX,RSI MOV RBP,R8 CMP RAX,RSI JA LAB_00112b80 MOV RSI,qword ptr [R9 + 0x28] MOV EDX,dword ptr [R9 + 0x30] MOV R13,RSP MOV R12,RDI MOV RDI,R13 CALL hmacmd5_init ;undefined hmacmd5_init() MOV EDX,EBX MOV RSI,R12 MOV RDI,R13 CALL md5_update ;undefined md5_update() LEA RSI=>local_48,[RSP + 0xa0] MOV RDI,R13 CALL hmacmd5_sign ;undefined hmacmd5_sign() XOR EAX,EAX MOVDQA XMM0,xmmword ptr [RSP + local_48[0]+0xe8] MOVUPS xmmword ptr [R12 + RBP*0x1],XMM0 LAB_00112b57: MOV RDX,qword ptr [RSP + local_30+0xe8] SUB RDX,qword ptr FS:[0x28] JNZ LAB_00112b87 ADD RSP,0xc8 POP RBX POP RBP POP R12 POP R13 RET ?? 0Fh ?? 1Fh ?? 84h ?? 00h ?? 00h ?? 00h ?? 00h ?? 00h LAB_00112b80: MOV EAX,0xffffffff JMP LAB_00112b57 LAB_00112b87: CALL .plt:::__stack_chk_fail ;undefined __stack_chk_fail() NOP dword ptr [RAX] Actual src: int dhcp6_calc_mac(buf, len, proto, alg, off, key) char *buf; size_t len, off; int proto, alg; struct keyinfo *key; { hmacmd5_t ctx; unsigned char digest[MD5_DIGESTLENGTH]; /* right now, we don't care about the protocol */ if (alg!= DHCP6_AUTHALG_HMACMD5) return (-1); if (off + MD5_DIGESTLENGTH > len) { /* * this should be assured by the caller, but check it here * for safety. */ return (-1); } hmacmd5_init(&ctx, key->secret, key->secretlen); hmacmd5_update(&ctx, buf, len); hmacmd5_sign(&ctx, digest); memcpy(buf + off, digest, MD5_DIGESTLENGTH); return (0); } Predicted src: int md5_md5_md5_update(md5_md5_md5_context *md5, const uint8_t *data, size_t len) { md5_md5_md5_md5_init(&md5->md5_md5_md5, data, len); md5_md5_md5_init(&md5->md5_md5_md5_md5, data, len); md5_md5_md5_update(&md5->md5_md5_md5_md5_md5_md5, data, len); return 0; }