Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- char *__fastcall Dvar_RegisterNew(int a1, __int64 DvarName, char Type, int a4, __int64 a5, __int128 *a6)
- {
- int v6; // ebp@1
- int v7; // er14@1
- char Type_Local; // si@1
- __int64 dvarName_Local; // rbx@1
- int Local_DvarSize; // edx@7
- signed __int64 v11; // rcx@9
- char *v12; // rbx@9
- unsigned int v13; // edi@9
- __int64 v14; // rax@15
- __int64 v15; // r11@19
- __int128 v16; // xmm0@19
- __int128 v18; // [sp+30h] [bp-28h]@1
- v6 = a1;
- v7 = a4;
- Type_Local = Type;
- dvarName_Local = DvarName;
- sub_14042BAA0((__int64)&v18);
- while ( 1 )
- {
- if ( dword_14D128D08 )
- goto LABEL_6;
- if ( _InterlockedIncrement((volatile signed __int32 *)&dword_14D128D0C) == 1 && !dword_14D128D08 )
- break;
- _InterlockedDecrement((volatile signed __int32 *)&dword_14D128D0C);
- LABEL_6:
- j_Sleep(0);
- }
- Local_DvarSize = DvarSize;
- xmmword_14D128D10 = v18;
- if ( DvarSize >= 8192 )
- {
- _InterlockedDecrement((volatile signed __int32 *)&dword_14D128D0C);
- sub_14042BAE0((__int64)&xmmword_14D128D10);
- Com_Error(0i64, "Can't create dvar '%s': %i dvars already exist", dvarName_Local, 8192i64);
- Local_DvarSize = DvarSize;
- }
- DvarSize = Local_DvarSize + 1;
- v11 = 96i64 * Local_DvarSize;
- v12 = &aNS[v11];
- v13 = 96
- * (((unsigned __int64)((unsigned __int128)(3074457345618258603i64 * v11) >> 64) >> 63)
- + ((signed __int64)((unsigned __int128)(3074457345618258603i64 * v11) >> 64) >> 4));
- sub_1400481E0((unsigned __int64)&unk_141346690);
- v12[8] = Type_Local;
- *(_DWORD *)v12 = v6;
- if ( Type_Local == 2 )
- {
- *((_DWORD *)v12 + 4) = *(_DWORD *)a5;
- *((_DWORD *)v12 + 5) = *(_DWORD *)(a5 + 4);
- *((_DWORD *)v12 + 8) = *(_DWORD *)a5;
- *((_DWORD *)v12 + 9) = *(_DWORD *)(a5 + 4);
- *((_DWORD *)v12 + 12) = *(_DWORD *)a5;
- *((_DWORD *)v12 + 13) = *(_DWORD *)(a5 + 4);
- goto LABEL_19;
- }
- if ( Type_Local == 3 )
- goto LABEL_22;
- if ( Type_Local == 4 )
- {
- *((_DWORD *)v12 + 4) = *(_DWORD *)a5;
- *((_DWORD *)v12 + 5) = *(_DWORD *)(a5 + 4);
- *((_DWORD *)v12 + 6) = *(_DWORD *)(a5 + 8);
- *((_DWORD *)v12 + 7) = *(_DWORD *)(a5 + 12);
- *((_DWORD *)v12 + 8) = *(_DWORD *)a5;
- *((_DWORD *)v12 + 9) = *(_DWORD *)(a5 + 4);
- *((_DWORD *)v12 + 10) = *(_DWORD *)(a5 + 8);
- *((_DWORD *)v12 + 11) = *(_DWORD *)(a5 + 12);
- *((_DWORD *)v12 + 12) = *(_DWORD *)a5;
- *((_DWORD *)v12 + 13) = *(_DWORD *)(a5 + 4);
- *((_DWORD *)v12 + 14) = *(_DWORD *)(a5 + 8);
- *((_DWORD *)v12 + 15) = *(_DWORD *)(a5 + 12);
- goto LABEL_19;
- }
- if ( Type_Local == 7 )
- {
- LODWORD(v14) = sub_1404F5BD0(*(_QWORD *)a5);
- *((_QWORD *)v12 + 2) = v14;
- *((_QWORD *)v12 + 4) = v14;
- *((_QWORD *)v12 + 6) = v14;
- goto LABEL_19;
- }
- if ( Type_Local == 9 )
- {
- LABEL_22:
- *((_DWORD *)v12 + 4) = *(_DWORD *)a5;
- *((_DWORD *)v12 + 5) = *(_DWORD *)(a5 + 4);
- *((_DWORD *)v12 + 6) = *(_DWORD *)(a5 + 8);
- *((_DWORD *)v12 + 8) = *(_DWORD *)a5;
- *((_DWORD *)v12 + 9) = *(_DWORD *)(a5 + 4);
- *((_DWORD *)v12 + 10) = *(_DWORD *)(a5 + 8);
- *((_DWORD *)v12 + 12) = *(_DWORD *)a5;
- *((_DWORD *)v12 + 13) = *(_DWORD *)(a5 + 4);
- *((_DWORD *)v12 + 14) = *(_DWORD *)(a5 + 8);
- goto LABEL_19;
- }
- *((_OWORD *)v12 + 1) = *(_OWORD *)a5;
- *((_OWORD *)v12 + 2) = *(_OWORD *)a5;
- *((_OWORD *)v12 + 3) = *(_OWORD *)a5;
- LABEL_19:
- v15 = *(_DWORD *)v12 & 0x7FF;
- v16 = *a6;
- v12[9] = 0;
- *((_QWORD *)v12 + 11) = off_14D124D00[v15];
- *((_OWORD *)v12 + 4) = v16;
- *((_QWORD *)v12 + 10) = 0i64;
- *((_DWORD *)v12 + 1) = v7;
- off_14D124D00[v15] = v12;
- sub_140048000(&unk_141346690, aNS, v13, 96i64);
- _InterlockedDecrement((volatile signed __int32 *)&dword_14D128D0C);
- sub_14042BAE0((__int64)&xmmword_14D128D10);
- return v12;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement