KiUnwindUserSspForApcContextCopyBypass

INT64 __fastcall KiUnwindUserSspForApcContextCopyBypass(INT64 a1){
  unsigned int v1; 
  INT64 result; 
  unsigned int v3; 
  unsigned __int64 v4; 
  signed __int64 v5; 
  void *v6; 
  void *v7; 
  UINT64 *v8; 
  INT64 *v9; 
  CHAR *ExtendedFeature2; 
  CHAR *v11; 
  UINT64 ContextFlags; 
  BYTE *v13; 
  v1 = *(_DWORD *)(a1 + 48);
  v13 = 0i64;
  ContextFlags = v1;
  LODWORD(result) = RtlpSanitizeContextFlags(&ContextFlags, 1);
  if( (int)result >= 0 )
  {
    v3 = ContextFlags;
    if( (ContextFlags & 0x100040) != 1048640 )
      return 3221225473i64;
    LODWORD(result) = RtlGetExtendedContextLength((unsigned int)ContextFlags, (UINT64 *)((char *)&ContextFlags + 4));
    if( (int)result >= 0 )
    {
      v4 = HIDWORD(ContextFlags) + 15i64;
      if( v4 <= HIDWORD(ContextFlags) )
        v4 = 0xFFFFFFFFFFFFFF0i64;
      v5 = v4 & 0xFFFFFFFFFFFFFFF0ui64;
      v6 = alloca(v5);
      v7 = alloca(v5);
      LODWORD(result) = RtlInitializeExtendedContext((INT64)&ContextFlags, v3, &v13);
      if( (int)result >= 0 )
      {
        LOBYTE(v8) = 1;
        result = RtlpReadExtendedContext(v9, v8, v13);
        if( (int)result >= 0 )
        {
          ExtendedFeature2 = RtlLocateExtendedFeature2(v13, 0xBui64, 0xFFFFF780000003D8ui64, 0i64);
          v11 = ExtendedFeature2;
          if( ExtendedFeature2 && (*(_DWORD *)((_BYTE *)&ContextFlags + SLODWORD(STACK[0x510]) + 1232) & 0x800i64) != 0 )
          {
            *((_QWORD *)ExtendedFeature2 + 1) -= 8i64;
            result = KiVerifyContextXStateCetUEnabled(ExtendedFeature2, (VOID *)__readmsr(0x6A7u));
            if( (int)result >= 0 )
            {
              __writemsr(0x6A7u, *((_QWORD *)v11 + 1));
              return 0i64;
            }
            return result;
          }
          return 3221225473i64;
        }
      }
    }
  }
  return result;
}

Referenced by:

KiInitializeUserApc