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