KsepCacheDeviceInsertData

INT64 __fastcall KsepCacheDeviceInsertData(INT64 a1, _WORD *a2, const VOID *a3, INT64 a4, UINT64 Size){
  int v6; 
  UNICODE_STRING *v9; 
  UNICODE_STRING *v10; 
  NTSTATUS v11; 
  UINT8 *v12; 
  UNICODE_STRING **v13; 
  v6 = a4;
  KsepPoolAllocatePaged(0x30ui64);
  v10 = v9;
  if( v9 )
  {
    v11 = KsepStringDuplicate(v9 + 1, a2);
    if( v11 >= 0 )
    {
      KsepPoolAllocatePaged((unsigned int)Size);
      v10[2].Buffer = (wchar_t *)v12;
      if( v12 )
      {
        memmove(v12, (UINT8 *)a3, (unsigned int)Size);
        *(_DWORD *)(&v10[2].MaximumLength + 1) = v6;
        *(_DWORD *)&v10[2].Length = Size;
        v13 = *(UNICODE_STRING ***)(a1 + 64);
        if( *v13 != (UNICODE_STRING *)(a1 + 56) )
          __fastfail(3u);
        *(_QWORD *)&v10->Length = a1 + 56;
        v10->Buffer = (wchar_t *)v13;
        *v13 = v10;
        *(_QWORD *)(a1 + 64) = v10;
        v10 = 0i64;
        v11 = 0;
      }
      else
      {
        v11 = -1073741801;
      }
    }
    if( v10 )
    {
      KsepStringFree(v10 + 1);
      KsepPoolFreePaged(v10[2].Buffer);
      KsepPoolFreePaged(v10);
    }
  }
  else
  {
    return(unsigned int)-1073741801;
  }
  return(unsigned int)v11;
}

Referenced by:

KsepDbCacheReadDeviceInternal