PopDirectedDripsUmDirectedFxAddTestDevice
INT64 __fastcall PopDirectedDripsUmDirectedFxAddTestDevice(UINT64 a1, INT64 a2){
PVOID v2;
int v4;
unsigned int v5;
unsigned __int64 v6;
unsigned __int8 NewElement;
UINT64 BufferSize;
PVOID Buffer;
LODWORD(BufferSize) = 0;
v2 = 0i64;
NewElement = 0;
Buffer = 0i64;
if( (unsigned int)a1 >= 0x10 )
{
v5 = *(_DWORD *)(a2 + 12);
v6 = 2i64 * v5;
if( v6 > 0xFFFFFFFF || (unsigned int)v6 > (int)a1 - 16 )
{
v4 = -1073741811;
}
else
{
v4 = PopDirectedDripsUmCreateTestDevice(v5, (_WORD *)(a2 + 16), (CHAR **)&Buffer, &BufferSize);
if( v4 < 0 )
{
v2 = Buffer;
}
else
{
PopAcquireRwLockExclusive((_POP_RW_LOCK *)&PopDirectedDripsUmLock);
v2 = Buffer;
if( RtlInsertElementGenericTableAvl(
&PopDirectedDripsUmTestDeviceTable,
Buffer,
(unsigned int)BufferSize,
&NewElement) )
{
if( NewElement )
{
_InterlockedIncrement(&PopDirectedDripsUmTestDeviceCount);
v2 = Buffer;
v4 = 0;
}
else
{
v4 = -1073740008;
}
}
else
{
v4 = -1073741670;
}
PopReleaseRwLock((UINT64)&PopDirectedDripsUmLock);
}
}
if( v2 )
ExFreePoolWithTag(v2, 0x4D554444u);
}
else
{
return(unsigned int)-1073741811;
}
return(unsigned int)v4;
}Referenced by:
PopDirectedDripsUmPowerInformationInternal