PdcPortOpenCommon

INT64 __fastcall PdcPortOpenCommon(
        INT64 a1,
        INT64 a2,
        INT64 a3,
        INT64 *a4,
        INT64 a5,
        INT64 a6,
        INT64 a7,
        INT64 a8,
        CHAR **a9){
  void *v11; 
  _QWORD *PoolWithTag; 
  _QWORD *v13; 
  INT64 v14; 
  _DWORD *v15; 
  NTSTATUS v16; 
  INT64 result[5]; 
  int v19; 
  int v20; 
  int v21; 
  memset((INT64)result, 0i64);
  v11 = 0i64;
  *a9 = 0i64;
  PoolWithTag = ExAllocatePoolWithTag(PagedPool, 0x6E8ui64, 0x50636450ui64);
  v13 = PoolWithTag;
  if( !PoolWithTag )
    goto LABEL_9;
  memset((INT64)PoolWithTag, 0i64);
  v13[1] = 0i64;
  v14 = *a4;
  *((_DWORD *)v13 + 4) = 68;
  *((_DWORD *)v13 + 5) = 4;
  *(_DWORD *)v13 = 1348691024;
  v13[218] = a3;
  v13[219] = v14;
  result[1] = 0i64;
  result[2] = 0i64;
  v20 = 68;
  v21 = 4;
  v19 = 5;
  result[0] = 52429560i64;
  v15 = ExAllocatePoolWithTag(PagedPool, 0xB8ui64, 0x50636450ui64);
  v11 = v15;
  if( !v15 )
  {
LABEL_9:
    v16 = -1073741801;
LABEL_10:
    if( v13 )
      PdcpPortReleaseResources(v13);
    goto LABEL_6;
  }
  *v15 = 1;
  *((_QWORD *)v15 + 2) = v13;
  *((_QWORD *)v15 + 1) = result;
  v16 = ZwPowerInformation(VerifySystemPolicyDc|0x40, v15, 0xB8u, 0i64, 0);
  if( v16 >= 0 )
  {
    *a9 = (CHAR *)v13;
    v16 = 0;
  }
  if( v16 < 0 )
    goto LABEL_10;
LABEL_6:
  if( v11 )
    ExFreePoolWithTag(v11, 0);
  return(unsigned int)v16;
}

Referenced by:

PdcTaskClientRegister