Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- 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)
- {
- int v11; // er11@1
- __int64 v12; // rax@2
- __int64 v13; // r8@3
- signed __int64 v14; // ST00_8@3
- __int128 v15; // xmm0@6
- signed __int64 v16; // [sp+20h] [bp+8h]@2
- v11 = a3;
- if ( *(_BYTE *)(a1 + 64) )
- {
- v16 = qword_7FF6694DF228;
- v12 = qword_7FF6694DF228;
- if ( (unsigned int)qword_7FF6694DF228 >= 320 )
- {
- LABEL_5:
- v13 = 0i64; //set ptr to null. nice backdoor tho
- }
- else
- {
- while ( 1 )
- {
- v13 = (__int64)&(&off_7FF6694DF220)[12 * (unsigned int)v12 + 2];
- HIDWORD(v14) = HIDWORD(v12) + 1;
- LODWORD(v14) = *(_DWORD *)v13;
- if ( _InterlockedCompareExchange(&qword_7FF6694DF228, v14, v16) == v16 )
- break;
- v16 = qword_7FF6694DF228;
- v12 = qword_7FF6694DF228;
- if ( (unsigned int)qword_7FF6694DF228 >= 320 )
- goto LABEL_5;
- }
- }
- *(_DWORD *)(v13 + 16) = a5;//go to valhalla
- *(_DWORD *)(v13 + 20) = a6;
- *(_QWORD *)(v13 + 24) = a7;
- *(_QWORD *)v13 = a2;
- *(_DWORD *)(v13 + 8) = v11;
- *(_DWORD *)(v13 + 12) = a4;
- *(_OWORD *)(v13 + 32) = *(_OWORD *)a8;
- *(_OWORD *)(v13 + 48) = *(_OWORD *)a9;
- v15 = *(_OWORD *)a10;
- *(_BYTE *)(v13 + 80) = a11;
- *(_OWORD *)(v13 + 64) = v15;
- *(_QWORD *)(a1 + 8i64 * (_InterlockedExchangeAdd((volatile signed __int32 *)(a1 + 128), 1u) & 0x1F) + 192) = v13;
- }
- }
- //new, fixed one
- 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)
- {
- int v11; // er11@1
- __int64 v12; // rax@2
- __int64 v13; // r8@3
- signed __int64 v14; // ST00_8@3
- __int128 v15; // xmm0@7
- signed __int64 v16; // [sp+20h] [bp+8h]@2
- v11 = a3;
- if ( *(_BYTE *)(a1 + 64) )
- {
- v16 = g_pCount_7FF632630CD8;
- v12 = g_pCount_7FF632630CD8;
- if ( (unsigned int)g_pCount_7FF632630CD8 < 320 )//first check + no more nullptr meme
- {
- while ( 1 )
- {
- v13 = (__int64)(&off_7FF632630CD0 + 12 * (unsigned int)v12 + 2);
- HIDWORD(v14) = HIDWORD(v12) + 1;
- LODWORD(v14) = *(_DWORD *)v13;
- if ( _InterlockedCompareExchange(&g_pCount_7FF632630CD8, v14, v16) == v16 )
- break;
- v16 = g_pCount_7FF632630CD8;
- v12 = g_pCount_7FF632630CD8;
- if ( (unsigned int)g_pCount_7FF632630CD8 >= 320 )//second check
- return;
- }
- if ( v13 )
- {
- *(_DWORD *)(v13 + 16) = a5;
- *(_DWORD *)(v13 + 20) = a6;
- *(_QWORD *)(v13 + 24) = a7;
- *(_QWORD *)v13 = a2;
- *(_DWORD *)(v13 + 8) = v11;
- *(_DWORD *)(v13 + 12) = a4;
- *(_OWORD *)(v13 + 32) = *(_OWORD *)a8;
- *(_OWORD *)(v13 + 48) = *(_OWORD *)a9;
- v15 = *(_OWORD *)a10;
- *(_BYTE *)(v13 + 80) = a11;
- *(_OWORD *)(v13 + 64) = v15;
- *(_QWORD *)(a1 + 8i64 * (_InterlockedExchangeAdd((volatile signed __int32 *)(a1 + 128), 1u) & 0x1F) + 192) = v13;
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement