Advertisement
Martymoose98

CGraphicDeviceDx11::EnumAdapters

Apr 25th, 2022
846
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.78 KB | None | 0 0
  1. signed __int64 __fastcall CGraphicDeviceDx11::EnumAdapters(CGraphicDeviceDx11 *pThis, __int64 a2)
  2. {
  3.   CHeapInfo *v2; // r15
  4.   CGraphicDeviceDx11 *pGraphicDevice; // r14
  5.   int nAdapters; // ebp
  6.   UINT uAdapters; // edi
  7.   signed __int64 cbAdapterSize; // rax
  8.   unsigned __int8 v7; // cf
  9.   __int64 cbSize; // rax
  10.   CHeapInstance *v9; // rax
  11.   signed __int64 v10; // rbx
  12.   UINT uIndex; // esi
  13.   CAdapter *v12; // rbx
  14.   signed __int64 uDescLength; // r8
  15.   CGraphicDeviceDx11 *v14; // rcx
  16.   IDXGIAdapter *pAdapter; // [rsp+30h] [rbp-188h]
  17.   __int64 v17; // [rsp+38h] [rbp-180h]
  18.   __int64 v18; // [rsp+40h] [rbp-178h]
  19.   CHeapInstance *v19; // [rsp+48h] [rbp-170h]
  20.   DXGI_ADAPTER_DESC AdapterDesc; // [rsp+50h] [rbp-168h]
  21.  
  22.   v17 = -2i64;
  23.   v2 = (CHeapInfo *)a2;
  24.   pGraphicDevice = pThis;
  25.   v18 = a2;
  26.   nAdapters = 0;
  27.   uAdapters = 0;
  28.   if ( pThis->m_pFactory->lpVtbl->EnumAdapters(pThis->m_pFactory, 0, &pAdapter) != 0x887A0002 )
  29.   {
  30.     do
  31.       ++uAdapters;
  32.     while ( pGraphicDevice->m_pFactory->lpVtbl->EnumAdapters(pGraphicDevice->m_pFactory, uAdapters, &pAdapter) != 0x887A0002 );
  33.     if ( uAdapters )
  34.     {
  35.       cbAdapterSize = 280i64 * uAdapters;
  36.       if ( !is_mul_ok(uAdapters, 280ui64) )
  37.         cbAdapterSize = -1i64;
  38.       v7 = __CFADD__(cbAdapterSize, 8i64);
  39.       cbSize = cbAdapterSize + 8;
  40.       if ( v7 )
  41.         cbSize = -1i64;
  42.       v9 = CHeapInstance::ReserveMemory(v2, cbSize, 0i64, 0);
  43.       v19 = v9;
  44.       if ( v9 )
  45.       {
  46.         v9->m_pVtbl = (CHeapInstanceVtbl *)uAdapters;
  47.         v10 = (signed __int64)&v9->m_Lock;
  48.         sub_7FF718AC5158((__int64)&v9->m_Lock, 280i64, uAdapters, (__int64 (*)(void))CAdapter::CAdapter);
  49.       }
  50.       else
  51.       {
  52.         v10 = 0i64;
  53.       }
  54.       pGraphicDevice->m_pAdapters = (CAdapter *)v10;
  55.       if ( v10 )
  56.       {
  57.         uIndex = 0;
  58.         if ( !uAdapters )
  59.         {
  60. SetAdapterCount:
  61.           pGraphicDevice->m_nAdapters = nAdapters;
  62.           return 1i64;
  63.         }
  64.         while ( pGraphicDevice->m_pFactory->lpVtbl->EnumAdapters(pGraphicDevice->m_pFactory, uIndex, &pAdapter) != 0x887A0002 )
  65.         {
  66.           v12 = &pGraphicDevice->m_pAdapters[nAdapters];
  67.           if ( pAdapter->lpVtbl->GetDesc(pAdapter, &AdapterDesc) )
  68.             break;
  69.           uDescLength = -1i64;
  70.           do
  71.             ++uDescLength;
  72.           while ( AdapterDesc.Description[uDescLength] );
  73.           memcpy(v12, &AdapterDesc, 2 * uDescLength);
  74.           if ( !(unsigned int)CGraphicDeviceDx11::EnumOutputs(v14, v12, pAdapter, (__int64)v2) )
  75.             break;
  76.           if ( v12->m_uOutputs > 0 )
  77.           {
  78.             v12->m_pAdapter = pAdapter;
  79.             ++nAdapters;
  80.           }
  81.           if ( ++uIndex >= uAdapters )
  82.             goto SetAdapterCount;
  83.         }
  84.       }
  85.     }
  86.   }
  87.   return 0i64;
  88. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement