MaxtorCoder

sub_7FF69B917A60

Oct 24th, 2018
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 6.81 KB | None | 0 0
  1. __int64 __fastcall sub_7FF69B917A60(__int64 a1)
  2. {
  3.   __int64 v1; // rbx
  4.   unsigned int v2; // er12
  5.   __int64 v3; // r13
  6.   int v4; // er15
  7.   _QWORD *v5; // r14
  8.   _QWORD *v6; // rcx
  9.   float v7; // xmm0_4
  10.   float v8; // xmm1_4
  11.   __int64 v9; // rax
  12.   __int64 v10; // rax
  13.   unsigned __int64 v11; // rax
  14.   unsigned __int64 v12; // r15
  15.   __int64 v13; // rsi
  16.   unsigned __int64 v14; // rdx
  17.   __int64 v15; // rcx
  18.   __int64 v16; // rcx
  19.   unsigned __int64 v17; // rdx
  20.   __int64 *v18; // rax
  21.   unsigned __int64 v19; // r13
  22.   _QWORD *v20; // r14
  23.   _QWORD *v21; // r15
  24.   _QWORD *v22; // rsi
  25.   __int64 v23; // rax
  26.   signed __int64 v24; // r12
  27.   __int64 v25; // r8
  28.   signed __int64 i; // rax
  29.   _QWORD *j; // r9
  30.   __int64 v28; // r10
  31.   _QWORD *v29; // rcx
  32.   __int64 v30; // r8
  33.   signed __int64 v31; // rdx
  34.   __int128 v33; // [rsp+20h] [rbp-29h]
  35.   unsigned __int64 v34; // [rsp+30h] [rbp-19h]
  36.   char v35; // [rsp+38h] [rbp-11h]
  37.   __int128 v36; // [rsp+40h] [rbp-9h]
  38.   unsigned __int64 v37; // [rsp+50h] [rbp+7h]
  39.   __int64 v38; // [rsp+58h] [rbp+Fh]
  40.   __int64 v39; // [rsp+B0h] [rbp+67h]
  41.   __int64 v40; // [rsp+B8h] [rbp+6Fh]
  42.  
  43.   v39 = a1;
  44.   v1 = a1;
  45.   if ( *(_DWORD *)(a1 + 32) )
  46.   {
  47.     sub_7FF69B40BC10(&dword_7FF69CAD2E38, 0i64);
  48.     sub_7FF69B40B9A0(&dword_7FF69CAD2E58, 0i64);
  49.     sub_7FF69B40BD10(&dword_7FF69CAD2E78, 0i64);
  50.     byte_7FF69CAD2E15 = 0;
  51.   }
  52.   else
  53.   {
  54.     dword_7FF69CAD2E1C = *(_DWORD *)(a1 + 36);
  55.     if ( &dword_7FF69CAD2E38 != (int *)(a1 + 40) )
  56.       sub_7FF69B919C70(&dword_7FF69CAD2E38, *(unsigned int *)(a1 + 40), *(_QWORD *)(a1 + 48));
  57.     if ( &dword_7FF69CAD2E58 != (int *)(v1 + 72) )
  58.       sub_7FF69B919AF0(&dword_7FF69CAD2E58, *(unsigned int *)(v1 + 72), *(_QWORD *)(v1 + 80));
  59.     if ( &dword_7FF69CAD2E78 != (int *)(v1 + 104) )
  60.       sub_7FF69B919DD0(&dword_7FF69CAD2E78, *(unsigned int *)(v1 + 104), *(_QWORD *)(v1 + 112));
  61.     sub_7FF69BD24AC0(qword_7FF69CAD2E80, (unsigned int)dword_7FF69CAD2E78, 296i64, sub_7FF69B913650);
  62.     if ( &dword_7FF69CAD2EB8 != (int *)(v1 + 136) )
  63.       sub_7FF69B919F10(&dword_7FF69CAD2EB8, *(unsigned int *)(v1 + 136), *(_QWORD *)(v1 + 144));
  64.     sub_7FF69B91B770(&qword_7FF69CAD2ED8);
  65.     v2 = 0;
  66.     if ( dword_7FF69CAD2EB8 )
  67.     {
  68.       do
  69.       {
  70.         v3 = qword_7FF69CAD2EC0 + 9336i64 * v2;
  71.         v4 = *(_DWORD *)(v3 + 4);
  72.         v40 = qword_7FF69CAD2EC0 + 9336i64 * v2;
  73.         LODWORD(v36) = v4;
  74.         *((_QWORD *)&v36 + 1) = 0i64;
  75.         v37 = 0i64;
  76.         v38 = 0i64;
  77.         sub_7FF69B91B120(&qword_7FF69CAD2ED8, &v33, &v36, 0i64);
  78.         v5 = (_QWORD *)v33;
  79.         if ( v35 )
  80.         {
  81.           if ( (_QWORD)v33 )
  82.           {
  83.             *(_DWORD *)(v33 + 8) = v4;
  84.             v6 = v5 + 2;
  85.             v6[1] = 0i64;
  86.             v6[1] = 0i64;
  87.             *v6 = 0i64;
  88.             v6[2] = 0i64;
  89.             *v6 = 0i64;
  90.             v5[4] = 0i64;
  91.           }
  92.           v7 = (float)(signed int)qword_7FF69CAD2EE8;
  93.           if ( qword_7FF69CAD2EE8 < 0 )
  94.             v7 = v7 + 1.8446744e19;
  95.           v8 = (float)(signed int)qword_7FF69CAD2ED8;
  96.           if ( qword_7FF69CAD2ED8 < 0 )
  97.             v8 = v8 + 1.8446744e19;
  98.           if ( (float)(v7 / v8) > *(float *)&dword_7FF69CAD2EF0 )
  99.             sub_7FF69B91BED0(&qword_7FF69CAD2ED8, 2 * qword_7FF69CAD2ED8);
  100.         }
  101.         v9 = sub_7FF69C038B20(&JamBattlePayShopEntry const * `RTTI Type Descriptor');
  102.        sub_7FF69B2B3920(0i64, v9, 0xFFFFFFFAi64, 0i64);
  103.        v10 = sub_7FF69C038B20(&JamBattlePayShopEntry const * `RTTI Type Descriptor');
  104.         sub_7FF69B2B3920(0i64, v10, 0xFFFFFFFAi64, 0i64);
  105.         v11 = v5[4] & 0x7FFFFFFFFFFFFFFFi64;
  106.         v12 = ((signed __int64)&v40 - v5[2]) >> 3;
  107.         if ( v5[3] == v11 && v11 + 1 > v11 )
  108.         {
  109.           v13 = sub_7FF69B91AF20(v5 + 2);
  110.           sub_7FF69B91B580(v5 + 2, v13);
  111.           v5[2] = v13;
  112.           v5[4] &= 0x7FFFFFFFFFFFFFFFui64;
  113.         }
  114.         v14 = v5[3];
  115.         v15 = v5[2];
  116.         if ( v12 >= v14 )
  117.           *(_QWORD *)(v15 + 8 * v14) = v3;
  118.         else
  119.           *(_QWORD *)(v15 + 8 * v14) = *(_QWORD *)(v15 + 8 * v12);
  120.         ++v5[3];
  121.         ++v2;
  122.       }
  123.       while ( v2 < dword_7FF69CAD2EB8 );
  124.     }
  125.     if ( qword_7FF69CAD2EE0 )
  126.     {
  127.       v16 = *(_QWORD *)qword_7FF69CAD2EE0;
  128.       *((_QWORD *)&v33 + 1) = qword_7FF69CAD2EE0;
  129.       v17 = qword_7FF69CAD2EE0 + 8 * qword_7FF69CAD2ED8;
  130.       *(_QWORD *)&v33 = v16;
  131.       v34 = qword_7FF69CAD2EE0 + 8 * qword_7FF69CAD2ED8;
  132.       if ( !v16 )
  133.       {
  134.         v18 = (__int64 *)(qword_7FF69CAD2EE0 + 8);
  135.         *((_QWORD *)&v33 + 1) = qword_7FF69CAD2EE0 + 8;
  136.         if ( qword_7FF69CAD2EE0 + 8 < v17 )
  137.         {
  138.           do
  139.           {
  140.             v16 = *v18;
  141.             *(_QWORD *)&v33 = v16;
  142.             if ( v16 )
  143.               break;
  144.             ++v18;
  145.           }
  146.           while ( (unsigned __int64)v18 < v17 );
  147.           *((_QWORD *)&v33 + 1) = v18;
  148.         }
  149.       }
  150.       v37 = v34;
  151.       v36 = v33;
  152.       if ( v16 )
  153.       {
  154.         v19 = v37;
  155.         v20 = (_QWORD *)*((_QWORD *)&v36 + 1);
  156.         v21 = (_QWORD *)v36;
  157.         do
  158.         {
  159.           while ( 1 )
  160.           {
  161.             do
  162.             {
  163.               v22 = (_QWORD *)v21[2];
  164.               v23 = v21[3];
  165.               v24 = (signed __int64)&v22[v23];
  166.               if ( v22 != (_QWORD *)v24 )
  167.               {
  168.                 v25 = 0i64;
  169.                 for ( i = 8 * v23 >> 3; i != 1; ++v25 )
  170.                   i >>= 1;
  171.                 sub_7FF69B90F910(v21[2], v24, 2 * v25, (unsigned __int8)v39);
  172.                 for ( j = v22 + 1; j != (_QWORD *)v24; *v29 = v28 )
  173.                 {
  174.                   v28 = *j;
  175.                   v29 = j;
  176.                   if ( j != v22 )
  177.                   {
  178.                     do
  179.                     {
  180.                       v30 = *(v29 - 1);
  181.                       v31 = (signed __int64)(v29 - 1);
  182.                       if ( *(_DWORD *)(v28 + 12) >= *(_DWORD *)(v30 + 12) )
  183.                         break;
  184.                       *v29 = v30;
  185.                       --v29;
  186.                     }
  187.                     while ( (_QWORD *)v31 != v22 );
  188.                   }
  189.                   ++j;
  190.                 }
  191.               }
  192.               if ( !v21 )
  193.                 break;
  194.               v21 = (_QWORD *)*v21;
  195.             }
  196.             while ( v21 );
  197.             ++v20;
  198.             if ( (unsigned __int64)v20 >= v19 )
  199.               break;
  200.             while ( 1 )
  201.             {
  202.               v21 = (_QWORD *)*v20;
  203.               if ( *v20 )
  204.                 break;
  205.               ++v20;
  206.               if ( (unsigned __int64)v20 >= v19 )
  207.                 goto LABEL_50;
  208.             }
  209.           }
  210.         }
  211.         while ( v21 );
  212.       }
  213.     }
  214. LABEL_50:
  215.     v1 = v39;
  216.     byte_7FF69CAD2E15 = 1;
  217.   }
  218.   byte_7FF69CAD2E16 = *(_DWORD *)(v1 + 32) == 3;
  219.   return sub_7FF69B913220(1125i64, 0i64);
  220. }
Advertisement
Add Comment
Please, Sign In to add comment