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