HalpCmciInitializeErrorPacket

NTSTATUS __stdcall HalpCmciInitializeErrorPacket(INT64 a1, INT64 a2){
  UINT8 *v3; 
  __int64 v4; 
  _HALP_ALLOC_CONTEXT *v5; 
  __int64 v6; 
  unsigned __int8 CurrentIrql; 
  NTSTATUS result; 

  v3 = 0i64;
  LODWORD(v4) = HalpGetMcaPcrContext(a2);
  v6 = v4;
  if( !*(_QWORD *)(v4 + 16) )
  {
    v3 = HalpMmAllocCtxAlloc(v5, 0x160ui64);
    if( !v3 )
      KeBugCheckEx(0xACu, (PVOID)0x160, (PVOID)0xDA00, 0i64, 0i64);
  }
  CurrentIrql = KeGetCurrentIrql();
  __writecr8(0xFui64);
  if( v3 )
    *(_QWORD *)(v6 + 16) = v3;
  else
    v3 = *(UINT8 **)(v6 + 16);
  HalpCmcInitializeErrorPacketContents((INT64)v3);
  *(_OWORD *)(*(_QWORD *)(v6 + 16) + 32i64) = CMCI_NOTIFY_TYPE_GUID;
  *(_QWORD *)(v6 + 24) = a1;
  result = CurrentIrql;
  __writecr8(CurrentIrql);
  return result;
}

Referenced by:

HalpCmciInit
HalpInitializeCmc