IopInitializeInMemoryDumpData
VOID __stdcall IopInitializeInMemoryDumpData(){
__int64 v0;
char v1;
NTSTATUS v2;
VOID **v3;
char *v4;
unsigned int v5;
VOID *ContiguousNodeMemory;
__int64 v7;
unsigned __int64 v8;
unsigned __int64 v9;
NTSTATUS v10;
UINT64 DataSize;
UINT64 DataSizea;
UINT64 PreferredNode;
char Data[8];
__int128 v15;
__int64 v16;
_GUID VendorGuid;
VendorGuid.Data1 = 2012912317;
*(_DWORD *)&VendorGuid.Data2 = 1295123289;
*(_DWORD *)VendorGuid.Data4 = -198680387;
*(_DWORD *)&VendorGuid.Data4[4] = 1266192359;
Data[0] = 0;
*(_QWORD *)&v15 = 0x302E4594353594B3i64;
v0 = 2i64;
*((_QWORD *)&v15 + 1) = 0xB50211F197DACBD4ui64;
v16 = 0x199B7088610836E8i64;
if( _InterlockedExchange(dword_140C50910, 1) != 1 )
{
dword_140C50944 = 0;
dword_140C50930[0] = 0;
LODWORD(DataSize) = 1;
v1 = 0;
v2 = ZwFilterBootOption(FilterBootOptionOperationSetElement, 0x10200003ui64, 0x260000A0ui64, Data, DataSize);
if( v2 >= 0 || v2 == -2143092730 && (_BYTE)KdDebuggerEnabled )
v1 = 1;
v3 = (VOID **)&unk_140C50918;
NumberOfBytes = 9112i64;
v4 = (char *)&unk_140C50918;
v5 = 0;
while( 1 )
{
LODWORD(PreferredNode) = 0x80000000;
LODWORD(DataSizea) = 4;
ContiguousNodeMemory = MmAllocateContiguousNodeMemory(
NumberOfBytes,
0i64,
(_LARGE_INTEGER)-1i64,
0i64,
DataSizea,
PreferredNode);
*(_QWORD *)v4 = ContiguousNodeMemory;
if( !ContiguousNodeMemory )
break;
memset(ContiguousNodeMemory, 0i64, NumberOfBytes);
v7 = *(_QWORD *)v4;
*(_OWORD *)v7 = v15;
*(_QWORD *)(v7 + 16) = v16;
if( v1 )
KdCopyDataBlock((_KDDEBUGGER_DATA64 *)(*(_QWORD *)v4 + 8216i64));
++v5;
v4 += 8;
if( v5 >= 2 )
{
v8 = __rdtsc();
LODWORD(qword_140C50938) = v8;
v9 = __rdtsc();
HIDWORD(qword_140C50938) = v9;
LODWORD(DataSizea) = 7;
HIDWORD(qword_140C50938) = ExGenRandom(ExGenRandomDomainUserVisible) & 0x7FFFFFFF;
v10 = IoSetEnvironmentVariableEx((WCHAR *)L"DumpInstance", &VendorGuid, &qword_140C50938, 8ui64, DataSizea);
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(dword_140C50910, 0);
}
}Referenced by:
IopInitializeOfflineCrashDump