RtlpComputeEpilogueOffset

__int64 __fastcall RtlpComputeEpilogueOffset(__int64 a1, _QWORD *a2, signed __int64 a3){
  _QWORD *v3; 
  unsigned int i; 
  __int64 v6; 
  _QWORD *v7; 
  signed __int64 v9; 

  v3 = a2;
  for( i = 0; i < 0x19; ++i )
    *a2++ ^= a3;
  *(_DWORD *)v3 ^= a3;
  v6 = *((int *)v3 + 49);
  if( a3 && (_DWORD)v6 )
  {
    v7 = &a2[v6 - 1];
    while( 1 )
    {
      *v7-- ^= a3;
      v9 = __ROR8__(a3, v6);
      _bittestandcomplement64(&v9, v9 & 0x3F);
      LODWORD(v6) = v6 - 1;
      if( !(_DWORD)v6 )
        break;
      a3 = v9;
    }
  }
  if( (*((_DWORD *)v3 + 613) & 0x100000) != 0 )
    KeExitRetpoline();
  else
    _mm_lfence();
  sub_140A0FD10(a1, (__int64)v3);
  return((__int64(__fastcall *)(_QWORD *, __int64))v3[34])(v3 + 243, 1i64);
}

Referenced by:

No references.