PiDmGetObjectListCallback

__int64 __fastcall PiDmGetObjectListCallback(__int64 a1, __int64 a2, _BYTE *a3){
  __int64(__fastcall *v5)(__int64, _QWORD, char *); 
  int v6; 
  __int64 v8; 
  unsigned int v9; 
  unsigned int v10; 
  UINT64 dwFlags; 
  char v12; 
  *a3 = 0;
  v5 = *(__int64(__fastcall **)(__int64, _QWORD, char *))a2;
  v6 = 0;
  v12 = 0;
  if( !v5 || (v6 = v5(a1, *(_QWORD *)(a2 + 8), &v12), v6 >= 0) && v12 )
  {
    v8 = -1i64;
    do
      ++v8;
    while( *(_WORD *)(*(_QWORD *)(a1 + 16) + 2 * v8) );
    v9 = *(_DWORD *)(a2 + 24);
    v10 = v8 + 1;
    *(_DWORD *)(a2 + 28) += v10;
    if( v9 > v10 )
    {
      LODWORD(dwFlags) = 2304;
      RtlStringCchCopyExW(*(WCHAR **)(a2 + 16), v9, *(WCHAR **)(a1 + 16), 0i64, 0i64, dwFlags);
      *(_QWORD *)(a2 + 16) += 2i64 * v10;
      *(_DWORD *)(a2 + 24) -= v10;
    }
  }
  return(unsigned int)v6;
}

Referenced by:

No references.