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