HalpBlkApicInitializeLocalUnit

EXCEPTION_REGISTRATION_RECORD *__stdcall HalpBlkApicInitializeLocalUnit(){
  unsigned __int64 v0; 
  unsigned int v1; 
  unsigned int v2; 
  char v3; 
  int v4; 
  char v5; 
  UINT64 v6; 
  int v7; 
  unsigned int v8; 
  unsigned int v9; 
  unsigned int v10; 
  int v11; 
  unsigned int v12; 
  unsigned int v13; 
  __int64 v14; 
  char v15; 
  if( *(_BYTE *)(*(_QWORD *)KeGetPcr() + 41i64) )
  {
    v0 = __readmsr(0x1Bu);
    if( (v0 & 0x400) == 0 )
      __writemsr(0x1Bu, v0 | 0x400);
  }
  HalpBlkApicWrite(128i64, 0xF0ui64);
  HalpBlkApicRead(v1);
  if( *(_BYTE *)(*(_QWORD *)KeGetPcr() + 41i64) == v3 )
  {
    HalpBlkApicWrite(v2 - 32, 0i64);
    if( *(_BYTE *)(*(_QWORD *)KeGetPcr() + 42i64) == v5 )
      v6 = 0xFFFFFFFFi64;
    else
      v6 = 0xFFFFFFFi64;
    HalpBlkApicWrite((unsigned int)(v4 - 16), v6);
  }
  HalpBlkApicWrite(v2, 0x1DFui64);
  HalpBlkApicWrite(800i64, 0x300D8ui64);
  HalpBlkApicWrite(992i64, 0xBui64);
  HalpBlkApicWrite(880i64, 0xE2ui64);
  HalpBlkApicWrite(832i64, 0x100D8ui64);
  v7 = HalpBlkApicRead(848i64);
  HalpBlkApicWrite(v8, v7 | 0x10000u);
  HalpBlkApicWrite(v10, v9);
  HalpBlkApicWrite((unsigned int)(v11 + 16), 0x184D8ui64);
  v12 = HalpBlkApicRead(32i64);
  if( *(_BYTE *)(v14 + 41) == v15 )
    v12 >>= 24;
  *(_DWORD *)(*(_QWORD *)KeGetPcr() + 20i64) = v12;
  return HalpBlkApicWrite(v13, 0i64);
}

Referenced by:

HalpBlkProcessorStartup