MmGetPageFileForCrashDump

INT64 __fastcall MmGetPageFileForCrashDump(){
  _ETHREAD *CurrentThread; 
  INT64 v1; 
  unsigned __int64 v2; 
  __int64 *v3; 
  __int64 v4; 
  __int64 v5; 
  CurrentThread = (_ETHREAD *)KeGetCurrentThread();
  v1 = 0i64;
  v2 = 0i64;
  --*((_WORD *)CurrentThread + 243);
  ExAcquirePushLockExclusiveEx((UINT64)&qword_140C50ED0, 0i64);
  if( Count )
  {
    v3 = qword_140C525E0;
    v4 = Count;
    do
    {
      v5 = *v3;
      if( (*(_WORD *)(*v3 + 204) & 0x850) == 0 && *(_QWORD *)(v5 + 16) > v2 )
      {
        v1 = *(_QWORD *)(v5 + 224);
        v2 = *(_QWORD *)(v5 + 16);
      }
      ++v3;
      --v4;
    }
    while( v4 );
  }
  if( (_InterlockedExchangeAdd64((volatile signed __int64 *)&qword_140C50ED0, 0xFFFFFFFFFFFFFFFFui64) & 6) == 2 )
    ExfTryToWakePushLock((volatile INT64 *)&qword_140C50ED0);
  KeAbPostRelease(&qword_140C50ED0);
  KiLeaveGuardedRegionUnsafe((__int64)CurrentThread);
  return v1;
}

Referenced by:

IoConfigureCrashDump