MiSectionInitialization
INT64 __fastcall MiSectionInitialization(){
_QWORD *v0;
_QWORD *v1;
_QWORD *v2;
UNICODE_STRING v4;
__int64 v5[2];
int v6[2];
__int64 v7;
__int64 *v8;
int v9;
int v10;
__int128 v11;
__int16 result;
char result_2;
int result_4;
int v15;
__int128 v16;
int v17;
int v18;
int v19;
NTSTATUS(__stdcall *v20)(_OB_OPEN_REASON, CHAR, _EPROCESS *, PVOID, UINT64 *, UINT64);
VOID(__fastcall *v21)(INT64, CHAR);
VOID(__stdcall *v22)(PVOID);
PVOID Object;
HANDLE Handle;
v6[1] = 0;
v10 = 0;
Object = 0i64;
Handle = 0i64;
dword_140C4EA90 = -1;
qword_140C4C6C8 = 0i64;
v4.Buffer = L"Section";
v5[1] = (__int64)L"\\Device\\PhysicalMemory";
*(_QWORD *)&v4.Length = 1048590i64;
v5[0] = 3014700i64;
memset((INT64)&result, 0i64);
result_2 |= 4u;
v20 = MiSectionOpen;
result = 120;
v21 = MiSectionClose;
v18 = 1;
v22 = MiSectionDelete;
v15 = 256;
v19 = 64;
v17 = 983071;
v16 = MiSectionMapping;
result_4 = 128;
if( (int)ObCreateObjectType(&v4, (__int64)&result, 0i64, (__int64)&MmSectionObjectType) >= 0 )
{
LODWORD(v0) = MiAllocatePool((struct _SLIST_ENTRY *)0x100);
v1 = v0;
if( v0 )
{
memset((INT64)&qword_140C4C6F0, 0i64);
v1[5] = 0i64;
dword_140C4C7B8 |= 0x400u;
v7 = 0i64;
v8 = v5;
qword_140C4C6F0 = (INT64)&qword_140C4C780;
qword_140C4C780 = (__int64)v1;
qword_140C4C798 = 1i64;
*v1 = &qword_140C4C780;
v6[0] = 48;
v9 = 65552;
v11 = 0i64;
if( (int)ObCreateObject(0, MmSectionObjectType, (__int64)v6, 0, 0, 64, 64, 0, &Object) < 0 )
{
ExFreePoolWithTag(v1, 0);
}
else
{
v2 = Object;
*((_QWORD *)Object + 5) = &qword_140C4C780;
v2[6] = 0xFFFFFFFFFFFFi64;
*((_DWORD *)v2 + 14) = 0;
*((_DWORD *)v2 + 15) = *((_DWORD *)v2 + 15) & 0xFFFFF000 | 0x40;
if( ObInsertObject(v2, 0i64, 4ui64, 0i64, 0i64, &Handle) >= 0 )
{
ObCloseHandle(Handle, 0);
return 1i64;
}
}
}
}
return 0i64;
}Referenced by:
MiInitSystem