IopDuplicateDetection

__int64 __fastcall IopDuplicateDetection(unsigned int a1, unsigned int a2, unsigned int a3, _QWORD *a4){
  unsigned int v4; 
  __int64 *LegacyBusDeviceNode; 
  void(__fastcall **v11)(_QWORD); 
  __int64 v12[5]; 
  PVOID P; 
  v4 = 0;
  P = 0i64;
  v12[0] = 0i64;
  *a4 = 0i64;
  LegacyBusDeviceNode = IopFindLegacyBusDeviceNode(a1, a2);
  if( !LegacyBusDeviceNode )
    return 3221225488i64;
  if( (int)IopQueryResourceHandlerInterface(3, LegacyBusDeviceNode[4], 0, &P) < 0 )
    return 3221225488i64;
  v11 = (void(__fastcall **)(_QWORD))P;
  if( !P )
    return 3221225488i64;
  if( (*((int(__fastcall **)(_QWORD, _QWORD, _QWORD, _QWORD, __int64 *))P + 4))(*((_QWORD *)P + 1), a1, a2, a3, v12) >= 0
    && v12[0] )
  {
    *a4 = *(_QWORD *)(*(_QWORD *)(v12[0] + 312) + 40i64);
  }
  else
  {
    v4 = -1073741808;
  }
  v11[3](v11[1]);
  ExFreePoolWithTag(v11, 0);
  return v4;
}

Referenced by:

IoReportDetectedDevice