IopInitializeInMemoryDumpData

VOID __stdcall IopInitializeInMemoryDumpData(){
  __int64 v0; 
  char v1; 
  int v2; 
  PVOID *v3; 
  __int64 *v4; 
  unsigned int v5; 
  VOID *ContiguousNodeMemory; 
  __int64 v7; 
  unsigned __int64 v8; 
  unsigned __int64 v9; 
  int v10; 
  UINT64 Attributes; 
  UINT64 PreferredNode; 
  __int128 v13; 
  GUID VendorGuid; 
  VendorGuid.Data1 = 2012912317;
  *(_DWORD *)&VendorGuid.Data2 = 1295123289;
  *(_DWORD *)VendorGuid.Data4 = -198680387;
  *(_DWORD *)&VendorGuid.Data4[4] = 1266192359;
  *(_QWORD *)&v13 = 0x302E4594353594B3i64;
  v0 = 2i64;
  *((_QWORD *)&v13 + 1) = 0xB50211F197DACBD4ui64;
  if( _InterlockedExchange(InMemData, 1) != 1 )
  {
    dword_140C50944 = 0;
    LODWORD(qword_140C50930) = 0;
    v1 = 0;
    ZwFilterBootOption();
    if( v2 >= 0 || v2 == -2143092730 && (_BYTE)KdDebuggerEnabled )
      v1 = 1;
    v3 = (PVOID *)qword_140C50918;
    qword_140C50928 = 9112i64;
    v4 = qword_140C50918;
    v5 = 0;
    while( 1 )
    {
      LODWORD(PreferredNode) = 0x80000000;
      LODWORD(Attributes) = 4;
      ContiguousNodeMemory = MmAllocateContiguousNodeMemory(
                               qword_140C50928,
                               0i64,
                               (LARGE_INTEGER)-1i64,
                               0i64,
                               Attributes,
                               PreferredNode);
      *v4 = (__int64)ContiguousNodeMemory;
      if( !ContiguousNodeMemory )
        break;
      memset((INT64)ContiguousNodeMemory, 0i64);
      v7 = *v4;
      *(_OWORD *)v7 = v13;
      *(_QWORD *)(v7 + 16) = 0x199B7088610836E8i64;
      if( v1 )
        KdCopyDataBlock((_OWORD *)(*v4 + 8216));
      ++v5;
      ++v4;
      if( v5 >= 2 )
      {
        v8 = __rdtsc();
        LODWORD(qword_140C50938) = v8;
        v9 = __rdtsc();
        HIDWORD(qword_140C50938) = v9;
        LODWORD(Attributes) = 7;
        HIDWORD(qword_140C50938) = ExGenRandom(1i64) & 0x7FFFFFFF;
        v10 = IoSetEnvironmentVariableEx((WCHAR *)L"DumpInstance", &VendorGuid, &qword_140C50938, 8ui64, Attributes);
        if( v10 < 0 )
        {
          dword_140C50944 = v10;
          qword_140C50938 = 0x4547415045474150i64;
        }
        dword_140C50914 = 1;
        goto LABEL_18;
      }
    }
    dword_140C50944 = -1073741801;
    do
    {
      if( *v3 )
      {
        MmFreeContiguousMemory(*v3);
        *v3 = 0i64;
      }
      ++v3;
      --v0;
    }
    while( v0 );
LABEL_18:
    _InterlockedExchange(InMemData, 0);
  }
}

Referenced by:

IopInitializeOfflineCrashDump