PfSnLogVolumeCreate

__int64 __fastcall PfSnLogVolumeCreate(__int64 a1){
  int v1; 
  unsigned int v2; 
  __int64 v4; 
  int v5; 
  struct _EX_RUNDOWN_REF *v6; 
  __int64 *v7; 
  unsigned __int64 v8; 
  int v9; 
  UNICODE_STRING SourceString; 
  struct _UNICODE_STRING DestinationString; 
  __int64 *v13; 
  v1 = *(unsigned __int16 *)(a1 + 30);
  v2 = 0;
  v4 = *(_QWORD *)a1;
  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 )
  {
    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 *)(a1 + 8);
    SourceString.Length = v5;
    SourceString.MaximumLength = v5;
    *(_QWORD *)v8 = 0i64;
    v9 = *(_DWORD *)(v8 + 36);
    DestinationString.Buffer = (wchar_t *)(v8 + 56);
    SourceString.Buffer = *(wchar_t **)(a1 + 40);
    *(_DWORD *)v8 = (8 * v5 + 528) | 2;
    *(_DWORD *)(v8 + 4) = *(_DWORD *)(a1 + 52);
    *(_DWORD *)(v8 + 8) = *(_DWORD *)(a1 + 56);
    *(_QWORD *)(v8 + 24) = *(_QWORD *)(a1 + 8);
    *(_DWORD *)(v8 + 36) ^= (*(_DWORD *)(a1 + 48) ^ v9) & 0xF;
    *(_DWORD *)(v8 + 36) ^= (*(_DWORD *)(a1 + 48) ^ *(_DWORD *)(v8 + 36)) & 0xF0;
    *(_QWORD *)(v8 + 16) = *(_QWORD *)(a1 + 16);
    *(_DWORD *)(v8 + 32) = *(_DWORD *)(a1 + 24);
    *(_WORD *)(v8 + 40) = v5;
    *(_WORD *)(v8 + 42) = v5;
    RtlUpcaseUnicodeString(&DestinationString, &SourceString, 0);
    *(_WORD *)(v8 + 2i64 * *(unsigned __int16 *)(a1 + 30) + 56) = 0;
    ExReleaseRundownProtection(v6 + 45);
  }
  else
  {
    return(unsigned int)-1073741446;
  }
  return v2;
}

Referenced by:

PfFileInfoNotify