PopDirectedDripsUmCreateTestDevice
INT64 __fastcall PopDirectedDripsUmCreateTestDevice(INT64 a1, _WORD *a2, CHAR **a3, UINT64 *a4){
unsigned int v4;
unsigned int v6;
int v8;
unsigned int v9;
__int64 v10;
UINT8 *PoolWithTag;
UINT8 *v12;
v4 = 2 * a1;
v6 = 2 * a1 + 8;
v8 = a1;
if( (unsigned int)(2 * a1) >= 0xFFFFFFF8 )
return(unsigned int)-1073741675;
v9 = 0;
if( (_DWORD)a1 )
{
v10 = (unsigned int)(a1 - 1);
if( !a2[v10] )
{
v8 = v10;
goto LABEL_7;
}
}
if( v6 + 2 < v6 )
return(unsigned int)-1073741675;
v6 += 2;
LABEL_7:
PoolWithTag = (UINT8 *)ExAllocatePoolWithTag(PagedPool, v6, 0x4D554444ui64);
v12 = PoolWithTag;
if( PoolWithTag )
{
memset((INT64)PoolWithTag, 0i64);
memmove(v12 + 8, (UINT8 *)a2, v4);
*(_DWORD *)v12 = 0;
*((_DWORD *)v12 + 1) = v8;
*a3 = (CHAR *)v12;
if( a4 )
*(_DWORD *)a4 = v6;
}
else
{
return(unsigned int)-1073741670;
}
return v9;
}Referenced by:
PopDirectedDripsUmDirectedFxAddTestDevice