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