EtwpPreserveMdlList

__int64 __fastcall EtwpPreserveMdlList(_QWORD *a1, __int64 a2, int a3, __int64 a4){
  unsigned int v5; 
  _QWORD *v8; 
  _QWORD *v9; 
  VOID **PoolWithTag; 
  VOID **v11; 
  unsigned int v12; 
  VOID **v13; 
  unsigned int v14; 
  unsigned int v16; 

  v16 = 0;
  v5 = 0;
  v8 = a1;
  v9 = a1;
  do
  {
    KsrMdlToMemoryRuns(v9, 0i64, 0i64, &v16);
    v5 += v16;
    v9 = (_QWORD *)*v9;
  }
  while( v9 );
  PoolWithTag = ExAllocatePoolWithTag(1ui64, 8i64 * v5, 1266119749i64);
  v11 = PoolWithTag;
  if( PoolWithTag )
  {
    v13 = PoolWithTag;
    v14 = v5;
    while( v8 )
    {
      KsrMdlToMemoryRuns(v8, v13, v14, &v16);
      v14 -= v16;
      v8 = (_QWORD *)*v8;
      v13 += v16;
    }
    v12 = KsrPersistMemoryWithMetadata(EtwpKsrGuid, v11, v5, a2, a3, a4);
    ExFreePoolWithTag(v11, 0);
  }
  else
  {
    return(unsigned int)-1073741801;
  }
  return v12;
}

Referenced by:

EtwpPreserveLogger