IopInitCrashDumpDuringSysInit

NTSTATUS __stdcall IopInitCrashDumpDuringSysInit(_LOADER_PARAMETER_BLOCK *LoaderBlock){
  NTSTATUS v1; 
  unsigned int v3; 
  unsigned __int64 v4; 
  char v6; 
  _QWORD PagingFileName[3]; 
  _RTL_QUERY_REGISTRY_TABLE QueryTable[2]; 
  UINT8 IncludeType[30]; 
  __int16 v10; 
  char v11; 
  char v12; 

  v1 = 0;
  v6 = 0;
  *(&stru_140C452E0 + 886) = HalSetEnvironmentVariableEx;
  if( !*(&stru_140CF2E80 + 4800) && SecureDump_Init() < 0 )
    *(&stru_140CF2E80 + 4800) = 1;
  if( (*(_DWORD *)&LoaderBlock->FirmwareInformation & 2) != 0 )
    *(&stru_140C452E0 + 886) = VslReportBugCheckProgress;
  v3 = 0;
  v4 = 0i64;
  do
  {
    if( v4 >= 0x29 )
      _report_rangecheckfailure();
    IncludeType[v4] = 0;
    ++v3;
    ++v4;
  }
  while( v3 < 0x29 );
  v10 = 257;
  IncludeType[6] = 1;
  v11 = 1;
  v12 = 1;
  qword_140C508F0 = MmInitializeMemoryLimits(LoaderBlock, IncludeType);
  memset(QueryTable, 0i64, sizeof(QueryTable));
  QueryTable[0].Flags = 4;
  QueryTable[0].QueryRoutine = (int(__fastcall *)(wchar_t *, unsigned int, void *, unsigned int, void *, void *))IopInitCrashDumpRegCallback;
  QueryTable[0].DefaultType = 0;
  QueryTable[0].Name = L"ExistingPageFiles";
  QueryTable[0].EntryContext = &v6;
  RtlQueryRegistryValuesEx(2ui64, L"Session Manager\\Memory Management", QueryTable, LoaderBlock, 0i64);
  if( !v6 )
  {
    *(_OWORD *)&PagingFileName[1] = 0i64;
    v1 = IoInitializeCrashDump(0i64, (_UNICODE_STRING *)&PagingFileName[1]) == 0 ? 0xC0000001 : 0;
  }
  IopInitializeOfflineCrashDump(LoaderBlock->Extension);
  return v1;
}

Referenced by:

IoInitSystemPreDrivers