Advertisement
Martymoose98

CGraphicDeviceDx11 virtual

Nov 20th, 2018
209
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.14 KB | None | 0 0
  1. signed __int64 __fastcall sub_140948620(__int64 *a1, __int64 a2, int *a3)
  2. {
  3. __int64 *v3; // rax
  4. int v4; // edi
  5. __int64 *v5; // r15
  6. __int64 v6; // rcx
  7. __int64 *v7; // rax
  8. int *v8; // rbx
  9. __int64 v9; // rsi
  10. __int64 v10; // rax
  11. ID3D11SamplerState **v11; // r14
  12. int v12; // ecx
  13. __int64 v13; // r8
  14. signed int v14; // eax
  15. __int64 v15; // rax
  16. unsigned int v16; // edx
  17. __m128i v17; // xmm0
  18. signed int v18; // eax
  19. __int64 v19; // rax
  20. ID3D11Device *v20; // rcx
  21. signed __int64 result; // rax
  22. int v22; // ecx
  23. __int64 v23; // [rsp+30h] [rbp-39h]
  24. signed int v24; // [rsp+40h] [rbp-29h]
  25. signed int v25; // [rsp+44h] [rbp-25h]
  26. ID3D11SamplerState **v26; // [rsp+48h] [rbp-21h]
  27. D3D11_SAMPLER_DESC v27; // [rsp+58h] [rbp-11h]
  28.  
  29. v3 = (__int64 *)a1[9];
  30. v4 = 0;
  31. v5 = a1;
  32. v6 = *v3;
  33. v7 = (__int64 *)v3[5];
  34. v8 = a3;
  35. v9 = a2;
  36. v25 = -1;
  37. v24 = 0;
  38. if ( v7 )
  39. {
  40. v10 = *v7;
  41. v24 = 1;
  42. v23 = v10;
  43. }
  44. HeapInstance::ReserveMemory((CHeapInstance *)v6, (HeapAlloc_t *)&v26, 8i64, *(_QWORD *)(v6 + 120), 0, (__int64)&v23);
  45. v11 = v26;
  46. if ( !v26 )
  47. return 0i64;
  48. *v26 = 0i64;
  49. v12 = *v8;
  50. v13 = v8[1];
  51. v27.MipLODBias = 0.0;
  52. if ( v12 )
  53. {
  54. if ( v12 == 1 )
  55. v4 = dword_140E9F328[v13];
  56. }
  57. else
  58. {
  59. v4 = dword_140E9F2F0[v13];
  60. }
  61. v14 = v8[3];
  62. if ( !v14 || v8[2] )
  63. {
  64. v27.MaxAnisotropy = 1;
  65. }
  66. else
  67. {
  68. v4 = 85;
  69. if ( v14 > 4 )
  70. v14 = 4;
  71. v27.MaxAnisotropy = dword_140E9F370[v14];
  72. }
  73. v27.ComparisonFunc = dword_140E9F458[v8[8]];
  74. if ( v27.ComparisonFunc != 1 )
  75. v4 += 128;
  76. v15 = v8[7];
  77. if ( (signed int)v15 < 0 )
  78. {
  79. *(_QWORD *)v27.BorderColor = 0i64;
  80. *(_QWORD *)&v27.BorderColor[2] = 0i64;
  81. goto LABEL_20;
  82. }
  83. if ( (signed int)v15 < *((_DWORD *)v5 + 6) )
  84. {
  85. v16 = *(_DWORD *)(v5[2] + 4 * v15);
  86. v17 = _mm_cvtsi32_si128((unsigned __int8)(*(_DWORD *)(v5[2] + 4 * v15) >> 16));
  87. v18 = (unsigned __int8)(*(_WORD *)(v5[2] + 4 * v15) >> 8);
  88. v27.BorderColor[0] = COERCE_FLOAT(_mm_cvtepi32_ps(v17)) * 0.0039215689;
  89. v27.BorderColor[1] = (float)v18 * 0.0039215689;
  90. v27.BorderColor[2] = (float)(unsigned __int8)v16 * 0.0039215689;
  91. v27.BorderColor[3] = (float)(v16 >> 24) * 0.0039215689;
  92. LABEL_20:
  93. v19 = v8[4];
  94. v27.MinLOD = 0.0;
  95. v27.AddressU = dword_140E9F318[v19];
  96. v27.AddressV = dword_140E9F318[v8[5]];
  97. v27.AddressW = dword_140E9F318[v8[6]];
  98. if ( (_DWORD)v13 )
  99. v27.MaxLOD = 3.4028235e38;
  100. else
  101. v27.MaxLOD = 0.0;
  102. v20 = (ID3D11Device *)*v5;
  103. v27.Filter = v4;
  104. if ( v20->lpVtbl->CreateSamplerState(v20, &v27, v11) >= 0 )
  105. {
  106. *(_DWORD *)(v9 + 8) = *v8;
  107. *(_DWORD *)(v9 + 12) = v8[1];
  108. result = 1i64;
  109. *(_DWORD *)(v9 + 16) = v8[2];
  110. *(_DWORD *)(v9 + 20) = v8[3];
  111. *(_DWORD *)(v9 + 24) = v8[4];
  112. *(_DWORD *)(v9 + 28) = v8[5];
  113. *(_DWORD *)(v9 + 32) = v8[6];
  114. *(_DWORD *)(v9 + 36) = v8[7];
  115. v22 = v8[8];
  116. *(_QWORD *)(v9 + 56) = v11;
  117. *(_DWORD *)(v9 + 40) = v22;
  118. return result;
  119. }
  120. }
  121. ReleaseComComponent((IUnknown **)v11);
  122. return 0i64;
  123. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement