KiInitializeIdt

VOID __stdcall KiInitializeIdt(UINT32 Number, PKPCR Pcr){
  __int64 *v2; 
  unsigned __int64 v3; 
  __int64 v4; 
  char v5; 
  char *v6; 
  unsigned __int64 v7; 
  __int16 v8; 
  unsigned __int64 v9; 
  unsigned __int64 v10; 
  __int64 v11; 
  __int16 v12; 
  __int16 v13; 
  int v14; 
  __int16 v15; 
  __int64 v16; 

  KiDebugTrapIndex = 0;
  v2 = &KiInterruptInitTable;
  v3 = 0i64;
  v4 = *(_QWORD *)&Number + 4i64;
  v5 = (char)Pcr;
  do
  {
    if( !KiBootDebuggerActive || (unsigned int)v3 > 0x2D || (v16 = 0x30000000600Ai64, !_bittest64(&v16, v3)) )
    {
      v6 = (char *)KiIsrThunkShadow;
      if( !v5 )
        v6 = (char *)KxUnexpectedInterrupt0;
      v7 = (unsigned __int64)&v6[8 * v3];
      if( (_DWORD)v3 == 46 && KiSystemCallSelector != 1 )
      {
        v15 = *(_WORD *)v4 & 0xF8;
        *(_WORD *)(v4 - 4) = v7;
        *(_WORD *)v4 = v15 | 0x8E00;
        v9 = v7 >> 16;
        v10 = HIDWORD(v7);
        v2 += 3;
        goto LABEL_8;
      }
      if( (_DWORD)v3 != *(unsigned __int8 *)v2 )
      {
        v8 = *(_WORD *)v4 & 0xF8;
        *(_WORD *)(v4 - 4) = v7;
        *(_WORD *)v4 = v8 | 0x8E00;
        v9 = v7 >> 16;
        v10 = HIDWORD(v7);
LABEL_8:
        *(_DWORD *)(v4 + 4) = v10;
        *(_WORD *)(v4 + 2) = v9;
        *(_WORD *)(v4 - 2) = 16;
        goto LABEL_9;
      }
      if( v5 )
        v11 = v2[2];
      else
        v11 = v2[1];
      *(_WORD *)(v4 - 4) = v11;
      *(_WORD *)(v4 - 2) = 16;
      v12 = *(_WORD *)v4 & 0xEEF8 | *((_BYTE *)v2 + 2) & 7 | 0xE00;
      *(_WORD *)v4 = v12;
      v13 = v12 & 0x1FFF | ((*((_BYTE *)v2 + 1) & 3 | 4) << 13);
      *(_WORD *)(v4 + 2) = WORD1(v11);
      *(_DWORD *)(v4 + 4) = HIDWORD(v11);
      *(_WORD *)v4 = v13;
      if( *((_BYTE *)v2 + 1) )
      {
        v14 = KiDebugTrapIndex;
        KiDebugTraps[KiDebugTrapIndex] = v11;
        KiDebugTrapIndex = v14 + 1;
      }
LABEL_15:
      v2 += 3;
      goto LABEL_9;
    }
    if( (_DWORD)v3 == *(unsigned __int8 *)v2 )
      goto LABEL_15;
LABEL_9:
    v3 = (unsigned int)(v3 + 1);
    v4 += 16i64;
  }
  while( (unsigned int)v3 <= 0xFF );
}

Referenced by:

KiEnableKvaShadowing
KiInitializeBootStructures