PfSnLogVolumeCreate

NTSTATUS __stdcall PfSnLogVolumeCreate(_PFFI_FILEINFO_VOLUME_INFO *VolumeCreateEvent){
  int v1; 
  NTSTATUS v2; 
  _EPROCESS *v4; 
  int v5; 
  _EX_RUNDOWN_REF *v6; 
  __int64 *v7; 
  unsigned __int64 v8; 
  int v9; 
  _UNICODE_STRING SourceString; 
  _UNICODE_STRING DestinationString; 
  __int64 *v13; 

  v1 = *((unsigned __int16 *)VolumeCreateEvent + 15);
  v2 = 0;
  v4 = *(_EPROCESS **)VolumeCreateEvent;
  v5 = 2 * v1;
  *(_DWORD *)(&DestinationString.MaximumLength + 1) = 0;
  *(_DWORD *)(&SourceString.MaximumLength + 1) = 0;
  v13 = 0i64;
  v6 = PfSnLogHelper(v4, (unsigned int)(v5 + 97) >> 4, &v13);
  if( !v6 )
    return -1073741446;
  v7 = v13;
  DestinationString.Length = 0;
  DestinationString.MaximumLength = v5;
  *(_OWORD *)v13 = 0i64;
  *v7 = (8i64 * (((unsigned int)(v5 + 97) >> 4) - 1)) | 5;
  v8 = ((unsigned __int64)v7 + 23) & 0xFFFFFFFFFFFFFFF8ui64;
  v7[1] = *((_QWORD *)VolumeCreateEvent + 1);
  SourceString.Length = v5;
  SourceString.MaximumLength = v5;
  *(_QWORD *)v8 = 0i64;
  v9 = *(_DWORD *)(v8 + 36);
  DestinationString.Buffer = (wchar_t *)(v8 + 56);
  SourceString.Buffer = (wchar_t *)*((_QWORD *)VolumeCreateEvent + 5);
  *(_DWORD *)v8 = (8 * v5 + 528) | 2;
  *(_DWORD *)(v8 + 4) = VolumeCreateEvent[13];
  *(_DWORD *)(v8 + 8) = VolumeCreateEvent[14];
  *(_QWORD *)(v8 + 24) = *((_QWORD *)VolumeCreateEvent + 1);
  *(_DWORD *)(v8 + 36) ^= (VolumeCreateEvent[12] ^ v9) & 0xF;
  *(_DWORD *)(v8 + 36) ^= (VolumeCreateEvent[12] ^ *(_DWORD *)(v8 + 36)) & 0xF0;
  *(_QWORD *)(v8 + 16) = *((_QWORD *)VolumeCreateEvent + 2);
  *(_DWORD *)(v8 + 32) = VolumeCreateEvent[6];
  *(_WORD *)(v8 + 40) = v5;
  *(_WORD *)(v8 + 42) = v5;
  RtlUpcaseUnicodeString(&DestinationString, &SourceString, 0);
  *(_WORD *)(v8 + 2i64 * *((unsigned __int16 *)VolumeCreateEvent + 15) + 56) = 0;
  ExReleaseRundownProtection(v6 + 45);
  return v2;
}

Referenced by:

PfFileInfoNotify