SmKmStoreCreatePrepare
NTSTATUS __stdcall SmKmStoreCreatePrepare(
_SM_CREATE_REQUEST *CreateRequest,
INT8 RequestorMode,
INT8 **EncryptionKeyOut,
_SMST_PARAMETERS *SmStParams){
unsigned int v4;
_SM_CREATE_REQUEST *v5;
NTSTATUS v6;
VOID *v9;
_SMST_PARAMETERS v10;
__int64 v11;
VOID *v13;
v4 = *CreateRequest;
v5 = CreateRequest + 2;
v6 = 0;
v9 = 0i64;
if( (unsigned __int8)*CreateRequest != 6 || v4 >= 0x400 )
return -1073741811;
if( RequestorMode )
{
if( (v4 & 0x300) != 0 || *(_BYTE *)v5 )
return -1073741790;
}
else if( *(_BYTE *)v5 )
{
v10 = CreateRequest[12];
if( v10 )
{
LODWORD(v13) = SSHSupportAllocateNonPaged(v10, 0x4B456D73u);
v9 = v13;
if( !v13 )
return -1073741670;
}
memmove(v9, *((const VOID **)v5 + 4), v10);
v11 = *((_QWORD *)v5 + 7);
goto LABEL_6;
}
v10 = 0;
v11 = 0i64;
LABEL_6:
*(_QWORD *)SmStParams = v5;
*((_QWORD *)SmStParams + 1) = v9;
SmStParams[4] = v10;
*((_QWORD *)SmStParams + 3) = v11;
*EncryptionKeyOut = (INT8 *)v9;
return v6;
}Referenced by:
SmProcessCreateRequest