IopLiveDumpAllocateIptBuffers
INT64 __fastcall IopLiveDumpAllocateIptBuffers(INT64 a1){
unsigned int v1;
INT64 *v2;
unsigned int v4;
INT64 IndependentPages;
KEVENT *v6;
KEVENT *v7;
UINT64 v8;
INT64 v9;
KEVENT *v10;
KEVENT *v11;
__int128 v13;
v1 = 0;
*(_DWORD *)(a1 + 956) = 0x10000000;
v2 = (INT64 *)(a1 + 944);
*(_QWORD *)(a1 + 976) = 0i64;
v13 = 0i64;
(*(void(__fastcall **)(__int64, _QWORD, INT64, __int64))(IptInterface + 40))(2i64, 0i64, a1 + 944, 48i64);
v4 = *(_DWORD *)(a1 + 984);
if( v4 )
{
if( *(_QWORD *)(a1 + 976) )
{
IopLiveDumpDiscardVirtualAddressRange();
v4 = *(_DWORD *)(a1 + 984);
}
*(_QWORD *)(a1 + 976) = 0i64;
*(_DWORD *)(a1 + 984) = 0;
*(_DWORD *)(a1 + 952) = 0;
IndependentPages = MmAllocateIndependentPagesEx(v4, 0xFFFFFFFFi64, 0i64, 0i64);
*v2 = IndependentPages;
if( IndependentPages )
{
v6 = *(KEVENT **)(a1 + 832);
v7 = *(KEVENT **)(a1 + 824);
*(_DWORD *)(a1 + 952) = v4;
if( IopLiveDumpIsUnderMemoryPressure(v7, v6) )
return(unsigned int)-1073741248;
IopLiveDumpDiscardVirtualAddressRange();
memset(*v2, 0i64);
if( (*(int(__fastcall **)(__int128 *))(IptInterface + 24))(&v13) >= 0 )
{
if( (_QWORD)v13 )
{
if( *((_QWORD *)&v13 + 1) )
{
IopLiveDumpDiscardVirtualAddressRange();
v8 = *((_QWORD *)&v13 + 1);
*(_QWORD *)(a1 + 928) = 0i64;
*(_DWORD *)(a1 + 936) = 0;
*(_DWORD *)(a1 + 904) = 0;
v9 = MmAllocateIndependentPagesEx(v8, 0xFFFFFFFFi64, 0i64, 0i64);
*(_QWORD *)(a1 + 896) = v9;
if( v9 )
{
v10 = *(KEVENT **)(a1 + 832);
v11 = *(KEVENT **)(a1 + 824);
*(_DWORD *)(a1 + 904) = DWORD2(v13);
if( !IopLiveDumpIsUnderMemoryPressure(v11, v10) )
{
IopLiveDumpDiscardVirtualAddressRange();
memset(*(_QWORD *)(a1 + 896), 0i64);
return v1;
}
return(unsigned int)-1073741248;
}
}
}
}
}
}
return v1;
}Referenced by:
IopLiveDumpAllocAndInitResources