Advertisement
Guest User

Dvar_RegisterNew - MWR - eithan1231

a guest
Nov 4th, 2016
302
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.78 KB | None | 0 0
  1.  char *__fastcall Dvar_RegisterNew(int a1, __int64 DvarName, char Type, int a4, __int64 a5, __int128 *a6)
  2. {
  3.   int v6; // ebp@1
  4.   int v7; // er14@1
  5.   char Type_Local; // si@1
  6.   __int64 dvarName_Local; // rbx@1
  7.   int Local_DvarSize; // edx@7
  8.   signed __int64 v11; // rcx@9
  9.   char *v12; // rbx@9
  10.   unsigned int v13; // edi@9
  11.   __int64 v14; // rax@15
  12.   __int64 v15; // r11@19
  13.   __int128 v16; // xmm0@19
  14.   __int128 v18; // [sp+30h] [bp-28h]@1
  15.  
  16.   v6 = a1;
  17.   v7 = a4;
  18.   Type_Local = Type;
  19.   dvarName_Local = DvarName;
  20.   sub_14042BAA0((__int64)&v18);
  21.  
  22.   while ( 1 )
  23.   {
  24.     if ( dword_14D128D08 )
  25.       goto LABEL_6;
  26.     if ( _InterlockedIncrement((volatile signed __int32 *)&dword_14D128D0C) == 1 && !dword_14D128D08 )
  27.       break;
  28.     _InterlockedDecrement((volatile signed __int32 *)&dword_14D128D0C);
  29. LABEL_6:
  30.     j_Sleep(0);
  31.   }
  32.  
  33.   Local_DvarSize = DvarSize;
  34.   xmmword_14D128D10 = v18;
  35.  
  36.   if ( DvarSize >= 8192 )
  37.   {
  38.     _InterlockedDecrement((volatile signed __int32 *)&dword_14D128D0C);
  39.     sub_14042BAE0((__int64)&xmmword_14D128D10);
  40.     Com_Error(0i64, "Can't create dvar '%s': %i dvars already exist", dvarName_Local, 8192i64);
  41.     Local_DvarSize = DvarSize;
  42.   }
  43.  
  44.   DvarSize = Local_DvarSize + 1;
  45.   v11 = 96i64 * Local_DvarSize;
  46.   v12 = &aNS[v11];
  47.   v13 = 96
  48.       * (((unsigned __int64)((unsigned __int128)(3074457345618258603i64 * v11) >> 64) >> 63)
  49.       + ((signed __int64)((unsigned __int128)(3074457345618258603i64 * v11) >> 64) >> 4));
  50.   sub_1400481E0((unsigned __int64)&unk_141346690);
  51.   v12[8] = Type_Local;
  52.   *(_DWORD *)v12 = v6;
  53.  
  54.   if ( Type_Local == 2 )
  55.   {
  56.     *((_DWORD *)v12 + 4) = *(_DWORD *)a5;
  57.     *((_DWORD *)v12 + 5) = *(_DWORD *)(a5 + 4);
  58.     *((_DWORD *)v12 + 8) = *(_DWORD *)a5;
  59.     *((_DWORD *)v12 + 9) = *(_DWORD *)(a5 + 4);
  60.     *((_DWORD *)v12 + 12) = *(_DWORD *)a5;
  61.     *((_DWORD *)v12 + 13) = *(_DWORD *)(a5 + 4);
  62.     goto LABEL_19;
  63.   }
  64.   if ( Type_Local == 3 )
  65.     goto LABEL_22;
  66.   if ( Type_Local == 4 )
  67.   {
  68.     *((_DWORD *)v12 + 4) = *(_DWORD *)a5;
  69.     *((_DWORD *)v12 + 5) = *(_DWORD *)(a5 + 4);
  70.     *((_DWORD *)v12 + 6) = *(_DWORD *)(a5 + 8);
  71.     *((_DWORD *)v12 + 7) = *(_DWORD *)(a5 + 12);
  72.     *((_DWORD *)v12 + 8) = *(_DWORD *)a5;
  73.     *((_DWORD *)v12 + 9) = *(_DWORD *)(a5 + 4);
  74.     *((_DWORD *)v12 + 10) = *(_DWORD *)(a5 + 8);
  75.     *((_DWORD *)v12 + 11) = *(_DWORD *)(a5 + 12);
  76.     *((_DWORD *)v12 + 12) = *(_DWORD *)a5;
  77.     *((_DWORD *)v12 + 13) = *(_DWORD *)(a5 + 4);
  78.     *((_DWORD *)v12 + 14) = *(_DWORD *)(a5 + 8);
  79.     *((_DWORD *)v12 + 15) = *(_DWORD *)(a5 + 12);
  80.     goto LABEL_19;
  81.   }
  82.   if ( Type_Local == 7 )
  83.   {
  84.     LODWORD(v14) = sub_1404F5BD0(*(_QWORD *)a5);
  85.     *((_QWORD *)v12 + 2) = v14;
  86.     *((_QWORD *)v12 + 4) = v14;
  87.     *((_QWORD *)v12 + 6) = v14;
  88.     goto LABEL_19;
  89.   }
  90.   if ( Type_Local == 9 )
  91.   {
  92. LABEL_22:
  93.     *((_DWORD *)v12 + 4) = *(_DWORD *)a5;
  94.     *((_DWORD *)v12 + 5) = *(_DWORD *)(a5 + 4);
  95.     *((_DWORD *)v12 + 6) = *(_DWORD *)(a5 + 8);
  96.     *((_DWORD *)v12 + 8) = *(_DWORD *)a5;
  97.     *((_DWORD *)v12 + 9) = *(_DWORD *)(a5 + 4);
  98.     *((_DWORD *)v12 + 10) = *(_DWORD *)(a5 + 8);
  99.     *((_DWORD *)v12 + 12) = *(_DWORD *)a5;
  100.     *((_DWORD *)v12 + 13) = *(_DWORD *)(a5 + 4);
  101.     *((_DWORD *)v12 + 14) = *(_DWORD *)(a5 + 8);
  102.     goto LABEL_19;
  103.   }
  104.   *((_OWORD *)v12 + 1) = *(_OWORD *)a5;
  105.   *((_OWORD *)v12 + 2) = *(_OWORD *)a5;
  106.   *((_OWORD *)v12 + 3) = *(_OWORD *)a5;
  107. LABEL_19:
  108.   v15 = *(_DWORD *)v12 & 0x7FF;
  109.   v16 = *a6;
  110.   v12[9] = 0;
  111.   *((_QWORD *)v12 + 11) = off_14D124D00[v15];
  112.   *((_OWORD *)v12 + 4) = v16;
  113.   *((_QWORD *)v12 + 10) = 0i64;
  114.   *((_DWORD *)v12 + 1) = v7;
  115.   off_14D124D00[v15] = v12;
  116.   sub_140048000(&unk_141346690, aNS, v13, 96i64);
  117.   _InterlockedDecrement((volatile signed __int32 *)&dword_14D128D0C);
  118.   sub_14042BAE0((__int64)&xmmword_14D128D10);
  119.   return v12;
  120. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement