Advertisement
Guest User

Untitled

a guest
Apr 21st, 2020
519
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.19 KB | None | 0 0
  1. void __fastcall sub_1580DE0(__int64 a1, __int64 (__fastcall *(*a2)[3])(), int a3, int a4, int a5, int a6, __int64 (__fastcall *(*a7)[3])(), __int64 a8, __int64 a9, __int64 a10, char a11)
  2. {
  3. int v11; // er11@1
  4. __int64 v12; // rax@2
  5. __int64 v13; // r8@3
  6. signed __int64 v14; // ST00_8@3
  7. __int128 v15; // xmm0@6
  8. signed __int64 v16; // [sp+20h] [bp+8h]@2
  9.  
  10. v11 = a3;
  11. if ( *(_BYTE *)(a1 + 64) )
  12. {
  13. v16 = qword_7FF6694DF228;
  14. v12 = qword_7FF6694DF228;
  15. if ( (unsigned int)qword_7FF6694DF228 >= 320 )
  16. {
  17. LABEL_5:
  18. v13 = 0i64; //set ptr to null. nice backdoor tho
  19. }
  20. else
  21. {
  22. while ( 1 )
  23. {
  24. v13 = (__int64)&(&off_7FF6694DF220)[12 * (unsigned int)v12 + 2];
  25. HIDWORD(v14) = HIDWORD(v12) + 1;
  26. LODWORD(v14) = *(_DWORD *)v13;
  27. if ( _InterlockedCompareExchange(&qword_7FF6694DF228, v14, v16) == v16 )
  28. break;
  29. v16 = qword_7FF6694DF228;
  30. v12 = qword_7FF6694DF228;
  31. if ( (unsigned int)qword_7FF6694DF228 >= 320 )
  32. goto LABEL_5;
  33. }
  34. }
  35. *(_DWORD *)(v13 + 16) = a5;//go to valhalla
  36. *(_DWORD *)(v13 + 20) = a6;
  37. *(_QWORD *)(v13 + 24) = a7;
  38. *(_QWORD *)v13 = a2;
  39. *(_DWORD *)(v13 + 8) = v11;
  40. *(_DWORD *)(v13 + 12) = a4;
  41. *(_OWORD *)(v13 + 32) = *(_OWORD *)a8;
  42. *(_OWORD *)(v13 + 48) = *(_OWORD *)a9;
  43. v15 = *(_OWORD *)a10;
  44. *(_BYTE *)(v13 + 80) = a11;
  45. *(_OWORD *)(v13 + 64) = v15;
  46. *(_QWORD *)(a1 + 8i64 * (_InterlockedExchangeAdd((volatile signed __int32 *)(a1 + 128), 1u) & 0x1F) + 192) = v13;
  47. }
  48. }
  49.  
  50.  
  51.  
  52. //new, fixed one
  53.  
  54. void __fastcall sub_FAA1A0(__int64 a1, __int64 (__fastcall *(*a2)[85])(), int a3, int a4, int a5, int a6, __int64 (__fastcall *(*a7)[85])(), __int64 a8, __int64 a9, __int64 a10, char a11)
  55. {
  56. int v11; // er11@1
  57. __int64 v12; // rax@2
  58. __int64 v13; // r8@3
  59. signed __int64 v14; // ST00_8@3
  60. __int128 v15; // xmm0@7
  61. signed __int64 v16; // [sp+20h] [bp+8h]@2
  62.  
  63. v11 = a3;
  64. if ( *(_BYTE *)(a1 + 64) )
  65. {
  66. v16 = g_pCount_7FF632630CD8;
  67. v12 = g_pCount_7FF632630CD8;
  68. if ( (unsigned int)g_pCount_7FF632630CD8 < 320 )//first check + no more nullptr meme
  69. {
  70. while ( 1 )
  71. {
  72. v13 = (__int64)(&off_7FF632630CD0 + 12 * (unsigned int)v12 + 2);
  73. HIDWORD(v14) = HIDWORD(v12) + 1;
  74. LODWORD(v14) = *(_DWORD *)v13;
  75. if ( _InterlockedCompareExchange(&g_pCount_7FF632630CD8, v14, v16) == v16 )
  76. break;
  77. v16 = g_pCount_7FF632630CD8;
  78. v12 = g_pCount_7FF632630CD8;
  79. if ( (unsigned int)g_pCount_7FF632630CD8 >= 320 )//second check
  80. return;
  81. }
  82. if ( v13 )
  83. {
  84. *(_DWORD *)(v13 + 16) = a5;
  85. *(_DWORD *)(v13 + 20) = a6;
  86. *(_QWORD *)(v13 + 24) = a7;
  87. *(_QWORD *)v13 = a2;
  88. *(_DWORD *)(v13 + 8) = v11;
  89. *(_DWORD *)(v13 + 12) = a4;
  90. *(_OWORD *)(v13 + 32) = *(_OWORD *)a8;
  91. *(_OWORD *)(v13 + 48) = *(_OWORD *)a9;
  92. v15 = *(_OWORD *)a10;
  93. *(_BYTE *)(v13 + 80) = a11;
  94. *(_OWORD *)(v13 + 64) = v15;
  95. *(_QWORD *)(a1 + 8i64 * (_InterlockedExchangeAdd((volatile signed __int32 *)(a1 + 128), 1u) & 0x1F) + 192) = v13;
  96. }
  97. }
  98. }
  99. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement