HalpMcExportAndChargeNeededData

VOID __fastcall HalpMcExportAndChargeNeededData(INT64 a1, const WCHAR *a2, WCHAR a3){
  CHAR *v4; 
  CHAR *v5; 
  int v6; 
  int v7; 
  UINT64 v8; 
  LODWORD(v8) = 0;
  v4 = HalpMcExportAllData(&v8, a1, PagedPool);
  v5 = v4;
  if( v4 )
  {
    v6 = v8;
    v7 = MmObtainChargesToLockPagedPool(v4, (unsigned int)v8);
    HalpMcUpdateDataCharged = v7 != 0;
    if( v7 )
    {
LABEL_3:
      HalpMcUpdateData = v5;
      LODWORD(HalpMcUpdateDataSize) = v6;
      return;
    }
    ExFreePoolWithTag(v5, 0x206C6148u);
    v5 = HalpMcExportAllData(&v8, a1, NonPagedPoolNx);
    if( v5 )
    {
      v6 = v8;
      goto LABEL_3;
    }
  }
  HalpUnloadMicrocode();
}

Referenced by:

HalMcFinishMicrocode