IopLoadCrashdumpDriver

NTSTATUS __stdcall IopLoadCrashdumpDriver(){
  NTSTATUS result; 
  __int64 v1; 
  __int64(__fastcall *v2)(_UNICODE_STRING **, _DWORD *); 
  __int64 v3; 
  _UNICODE_STRING DestinationString; 
  _UNICODE_STRING *v5; 
  __int64 v6; 
  NTSTATUS(__fastcall *v7)(_UNICODE_STRING *, _UNICODE_STRING *, _UNICODE_STRING *, int, INT64, INT64); 
  NTSTATUS(__stdcall *v8)(VOID *); 
  VOID(__stdcall *v9)(UINT64, VOID *, UINT64, UINT64 *, UINT64 *); 
  __int64 v10; 
  int v11; 
  int v12; 
  _UNICODE_STRING *v13; 
  INT64 v14; 
  INT64 v15; 

  v15 = 0i64;
  v6 = 0i64;
  v12 = 0;
  v14 = 0i64;
  DestinationString = 0i64;
  if( qword_140C50968 )
    return 0;
  RtlInitUnicodeString(&DestinationString, L"\\SystemRoot\\System32\\Drivers\\crashdmp.sys");
  result = MmLoadSystemImageEx(&DestinationString, 0i64, 0i64, 0x22ui64, (INT64)&v15, (INT64)&v14);
  if( result >= 0 )
  {
    LODWORD(v1) = RtlImageNtHeader(v14);
    if( !v1 )
      return -1073741823;
    v2 = (__int64(__fastcall *)(_UNICODE_STRING **, _DWORD *))(v14 + *(unsigned int *)(v1 + 40));
    v5 = &IoArcBootDeviceName;
    v13 = &PoHiberFileRoot;
    IopGetPhysicalMemoryBlock();
    v6 = v3;
    if( !v3 )
      return -1073741670;
    v7 = IopLoadCrashdmpImage;
    v8 = MmUnloadSystemImage;
    v10 = *(&stru_140C452E0 + 886);
    v9 = HvlGetEncryptedData;
    v11 = VslVsmEnabled ? ((HvlpFlags & 2) != 0) + 1 : 0;
    dword_140C509A0 = 1;
    dword_140C509A4 = 11;
    result = v2(&v5, &dword_140C509A0);
    if( result >= 0 )
    {
      qword_140C50968 = v15;
      Address = v14;
      return 0;
    }
  }
  return result;
}

Referenced by:

IoGetDumpStack
IopInitializeCrashDump