KiCheckMicrocode

VOID __stdcall KiCheckMicrocode(INT64 a1){
  char v2; 
  unsigned __int32 v3; 
  unsigned __int64 v4; 
  unsigned int v5; 
  unsigned __int64 v6; 
  __int64 v7; 
  char *i; 
  void *v9; 
  __int64 v10; 
  unsigned __int64 v11; 

  if( KiMicrocodeTrackerEnabled
    && (!KiBootProcessorsStarted || *(_DWORD *)(a1 + 36) < (unsigned int)KiBootProcessorCount) )
  {
    v2 = *(_BYTE *)(a1 + 141);
    if( v2 == 1 )
    {
      v11 = __readmsr(0x8Bu);
      v6 = 0i64;
      v5 = v11;
      v3 = EAX(__cpuid(1, 0));
    }
    else
    {
      if( v2 != 2 )
        return;
      __writemsr(0x8Bu, 0i64);
      v3 = EAX(__cpuid(1, 0));
      v4 = __readmsr(0x8Bu);
      v5 = HIDWORD(v4);
      v6 = __readmsr(0x17u);
    }
    v7 = 0i64;
    for( i = (char *)&unk_140CFBC84; ; i += 24 )
    {
      if( !*((_DWORD *)i - 1) )
      {
        v10 = 3 * v7;
        *((_DWORD *)&KiMicrocodeTracker + 2 * v10) = 1;
        *((_DWORD *)&KiMicrocodeTracker + 2 * v10 + 1) = v3;
        *((_QWORD *)&KiMicrocodeTracker + v10 + 1) = v6;
        *((_DWORD *)&KiMicrocodeTracker + 2 * v10 + 4) = v5;
        return;
      }
      if( *(_DWORD *)i == v3 && *(_QWORD *)(i + 4) == v6 )
        break;
      v7 = (unsigned int)(v7 + 1);
      if( (unsigned int)v7 >= 4 )
        return;
    }
    v9 = (void *)*((unsigned int *)&KiMicrocodeTracker + 6 * v7 + 4);
    if( (_DWORD)v9 != v5 )
      KeBugCheckEx(0x17Eu, (PVOID)v3, v9, (PVOID)v5, (PVOID)*(unsigned int *)(a1 + 36));
  }
}

Referenced by:

KiInitializeKernel
KiRestoreFeatureBits