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