PiCMCreateObject
INT64 __stdcall PiCMCreateObject(
PVOID IoctlInputBuffer,
UINT64 IoctlInputBufferSize,
PVOID IoctlOutputBuffer,
UINT64 IoctlOutputBufferSize,
UINT64 *BytesUsed){
unsigned int v5;
int Object;
int v8;
__int64 v9;
unsigned int v10;
INT64 v12[2];
__int128 v13;
UINT64 ExpectedOutputSize;
UINT64 *v15;
v5 = IoctlOutputBufferSize;
*(_DWORD *)v15 = 0;
*(_OWORD *)v12 = 0i64;
v13 = 0i64;
ExpectedOutputSize = 0i64;
Object = PiCMCaptureObjectInputData(
(UINT64)IoctlInputBuffer,
IoctlInputBufferSize,
(unsigned int)BytesUsed,
(INT64)v12);
if( Object >= 0 )
{
if( !PiAuDoesClientHaveAccess(2ui64) )
{
Object = -1073741790;
LABEL_39:
Object = PiCMReturnBasicResultData(
(unsigned int)Object,
(unsigned int)ExpectedOutputSize,
IoctlOutputBuffer,
v5,
v15);
goto LABEL_40;
}
if( !(_QWORD)v13 )
goto LABEL_38;
if( HIDWORD(v12[0]) )
goto LABEL_38;
if( HIDWORD(v13) )
goto LABEL_38;
if( !IoctlOutputBuffer )
goto LABEL_38;
v8 = 8;
if( v5 < 8 )
goto LABEL_38;
v9 = LODWORD(v12[1]);
v10 = 0;
if( SLODWORD(v12[1]) <= 6 )
{
if( LODWORD(v12[1]) == 6 )
{
v10 = 6;
goto LABEL_35;
}
v9 = (unsigned int)(LODWORD(v12[1]) - 1);
if( LODWORD(v12[1]) == 1 )
{
v10 = 1;
goto LABEL_35;
}
v9 = (unsigned int)(LODWORD(v12[1]) - 2);
if( LODWORD(v12[1]) == 2 )
{
v10 = 2;
goto LABEL_36;
}
v9 = (unsigned int)(LODWORD(v12[1]) - 3);
if( LODWORD(v12[1]) == 3 )
{
v10 = 4;
goto LABEL_36;
}
v9 = (unsigned int)(LODWORD(v12[1]) - 4);
if( LODWORD(v12[1]) == 4 )
{
v10 = 3;
goto LABEL_35;
}
if( LODWORD(v12[1]) == 5 )
{
v10 = 5;
goto LABEL_35;
}
goto LABEL_32;
}
v9 = (unsigned int)(LODWORD(v12[1]) - 65537);
if( LODWORD(v12[1]) == 65537 )
{
v8 = 7;
}
else
{
v9 = (unsigned int)(LODWORD(v12[1]) - 65538);
if( LODWORD(v12[1]) != 65538 )
{
v9 = (unsigned int)(LODWORD(v12[1]) - 65539);
if( LODWORD(v12[1]) == 65539 )
{
v8 = 9;
}
else
{
v9 = (unsigned int)(LODWORD(v12[1]) - 65540);
if( LODWORD(v12[1]) == 65540 )
{
v8 = 10;
}
else
{
if( LODWORD(v12[1]) != 65541 )
goto LABEL_32;
v8 = 11;
}
}
}
}
v10 = PiDrvDbCtx != 0 ? v8 : 0;
LABEL_32:
if( v10 )
{
if( v10 <= 4 || v10 > 6 )
{
LABEL_36:
if( Object >= 0 )
Object = PnpCreateObject(v9, v13, v10, 0, 0i64);
goto LABEL_39;
}
LABEL_35:
Object = -1073741637;
goto LABEL_36;
}
LABEL_38:
Object = -1073741811;
goto LABEL_39;
}
LABEL_40:
PiCMReleaseObjectInputData((INT64)v12);
return(unsigned int)Object;
}Referenced by:
No references.