Advertisement
Guest User

Untitled

a guest
Oct 20th, 2014
339
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 9.97 KB | None | 0 0
  1. unsigned int __thiscall sub_7696D0(int this, int a2, int a3)
  2. {
  3.   int v3; // edi@1
  4.   int v4; // eax@1
  5.   int v5; // ecx@2
  6.   char v6; // al@2
  7.   unsigned int v7; // edi@2
  8.   int v8; // esi@6
  9.   int v9; // eax@6
  10.   __m128 v10; // xmm0@6
  11.   bool v11; // cl@7
  12.   int v12; // eax@13
  13.   int v13; // ecx@14
  14.   char v14; // al@14
  15.   unsigned int v15; // edi@14
  16.   int v16; // esi@18
  17.   int v17; // eax@18
  18.   __m128 v18; // xmm0@18
  19.   bool v19; // cl@19
  20.   unsigned int v20; // esi@24
  21.   unsigned int v21; // esi@31
  22.   unsigned int v22; // eax@31
  23.   unsigned int v23; // esi@42
  24.   unsigned int v24; // esi@49
  25.   unsigned int v25; // eax@49
  26.   unsigned int v26; // ecx@61
  27.   unsigned int v27; // eax@61
  28.   int v28; // ecx@64
  29.   int v29; // eax@64
  30.   unsigned int v30; // ecx@66
  31.   unsigned int v31; // eax@66
  32.   int v32; // ecx@69
  33.   int v33; // eax@69
  34.   int v34; // edi@71
  35.   unsigned int v35; // esi@71
  36.   unsigned int v36; // eax@71
  37.   int v37; // edi@76
  38.   int v38; // eax@76
  39.   double v39; // st7@80
  40.   int v40; // edi@81
  41.   unsigned int v41; // esi@81
  42.   unsigned int result; // eax@81
  43.   int v43; // edi@86
  44.   int v44; // eax@86
  45.   double v45; // st7@90
  46.   char v46; // [sp+17h] [bp-19h]@2
  47.   char v47; // [sp+17h] [bp-19h]@14
  48.   int v48; // [sp+18h] [bp-18h]@1
  49.   int v49; // [sp+18h] [bp-18h]@61
  50.   int v50; // [sp+1Ch] [bp-14h]@24
  51.   int v51; // [sp+20h] [bp-10h]@69
  52.   void **v52; // [sp+24h] [bp-Ch]@24
  53.   int v53; // [sp+28h] [bp-8h]@24
  54.   int v54; // [sp+2Ch] [bp-4h]@24
  55.  
  56.   v3 = this;
  57.   v48 = this;
  58.   v4 = *(_DWORD *)(this + 396);
  59.   if ( v4 )
  60.   {
  61.     v5 = a2;
  62.     v6 = v4 != *(_DWORD *)(a2 + 8);
  63.     v7 = 0;
  64.     v46 = v6;
  65.     if ( v6 )
  66.       goto LABEL_24;
  67.     while ( v7 < *(_DWORD *)(v5 + 8) )
  68.     {
  69.       v8 = sub_4E6BC0(v48 + 388, v7);
  70.       v9 = sub_5007D0(v7);
  71.       v10 = (__m128)*(_DWORD *)v8;
  72.       v10.m128_f32[0] = v10.m128_f32[0] - *(float *)v9;
  73.       v11 = COERCE_FLOAT(*(_OWORD *)&_mm_and_ps(v10, (__m128)xmmword_F5B250)) > 0.001;
  74.       ++v7;
  75.       v6 = v11 | v46;
  76.       v46 = v6;
  77.       if ( v6 )
  78.         goto LABEL_24;
  79.       v5 = a2;
  80.     }
  81.     if ( v6 )
  82.       goto LABEL_24;
  83.     v3 = v48;
  84.   }
  85.   v12 = *(_DWORD *)(v3 + 428);
  86.   if ( !v12 )
  87.     goto LABEL_61;
  88.   v13 = a3;
  89.   v14 = v12 != *(_DWORD *)(a3 + 8);
  90.   v15 = 0;
  91.   v47 = v14;
  92.   if ( !v14 )
  93.   {
  94.     while ( v15 < *(_DWORD *)(v13 + 8) )
  95.     {
  96.       v16 = sub_4E6BC0(v48 + 420, v15);
  97.       v17 = sub_5007D0(v15);
  98.       v18 = (__m128)*(_DWORD *)v16;
  99.       v18.m128_f32[0] = v18.m128_f32[0] - *(float *)v17;
  100.       v19 = COERCE_FLOAT(*(_OWORD *)&_mm_and_ps(v18, (__m128)xmmword_F5B250)) > 0.001;
  101.       ++v15;
  102.       v14 = v19 | v47;
  103.       v47 = v14;
  104.       if ( v14 )
  105.         goto LABEL_24;
  106.       v13 = a3;
  107.     }
  108.     if ( !v14 )
  109.     {
  110.       v3 = v48;
  111.       goto LABEL_61;
  112.     }
  113.   }
  114. LABEL_24:
  115.   v3 = v48;
  116.   prism::error("Chassis reused with different wheel size setup: %s");
  117.   v52 = &prism::string_dyn_t::vtable;
  118.   v54 = 25;
  119.   v53 = prism::pml_buffer_t::pml_buffer_t(25);
  120.   v50 = (int)"Front wheel sizes, old [";
  121.   *(_BYTE *)v53 = 0;
  122.   prism::mstring_t::copy(&v50, 0, 0, -1);
  123.   v20 = 0;
  124.   if ( *(_DWORD *)(v48 + 396) )
  125.   {
  126.     if ( *(_DWORD *)(v48 + 396) <= 0u )
  127.     {
  128.       prism::error("%s(%u): %s: %s");
  129.       if ( dword_101391C )
  130.         dword_101391C(
  131.           "Index outside array boundaries.",
  132.           "d:\\build_bot\\slave\\final_build_ets2_112\\build\\prism\\src\\p3core\\collections/arrays/arrays_base_impl.h",
  133.           484,
  134.           "??A?$array_t@M@prism@@QAEAAMI@Z");
  135.       RaiseException(0xC0000025u, 1u, 0, 0);
  136.     }
  137.     do
  138.     {
  139.       sub_47A400(&v52, "%.3f", *(float *)(*(_DWORD *)(v48 + 392) + 4 * v20++));
  140.       if ( v20 >= *(_DWORD *)(v48 + 396) )
  141.         break;
  142.       v50 = (int)", ";
  143.       prism::mstring_t::copy(&v50, strlen((const char *)v53), 0, -1);
  144.     }
  145.     while ( v20 < *(_DWORD *)(v48 + 396) );
  146.   }
  147.   v50 = (int)"] versus new [";
  148.   prism::mstring_t::copy(&v50, strlen((const char *)v53), 0, -1);
  149.   v21 = 0;
  150.   v22 = *(_DWORD *)(a2 + 8);
  151.   if ( v22 )
  152.   {
  153.     if ( v22 <= 0 )
  154.     {
  155.       prism::error("%s(%u): %s: %s");
  156.       if ( dword_101391C )
  157.         dword_101391C(
  158.           "Index outside array boundaries.",
  159.           "d:\\build_bot\\slave\\final_build_ets2_112\\build\\prism\\src\\p3core\\collections/arrays/arrays_base_impl.h",
  160.           470,
  161.           "??A?$array_t@M@prism@@QBEABMI@Z");
  162.       RaiseException(0xC0000025u, 1u, 0, 0);
  163.     }
  164.     do
  165.     {
  166.       sub_47A400(&v52, "%.3f", *(float *)(*(_DWORD *)(a2 + 4) + 4 * v21++));
  167.       if ( v21 < *(_DWORD *)(a2 + 8) )
  168.       {
  169.         v50 = (int)", ";
  170.         prism::mstring_t::copy(&v50, strlen((const char *)v53), 0, -1);
  171.       }
  172.     }
  173.     while ( v21 < *(_DWORD *)(a2 + 8) );
  174.     v3 = v48;
  175.   }
  176.   v50 = (int)"].";
  177.   prism::mstring_t::copy(&v50, strlen((const char *)v53), 0, -1);
  178.   prism::error("%s");
  179.   if ( ((int (__thiscall *)(void ***))v52[3])(&v52) )
  180.     *(_BYTE *)v53 = 0;
  181.   v50 = (int)"Rear wheel sizes, old [";
  182.   prism::mstring_t::copy(&v50, strlen((const char *)v53), 0, -1);
  183.   v23 = 0;
  184.   if ( *(_DWORD *)(v3 + 428) )
  185.   {
  186.     if ( *(_DWORD *)(v3 + 428) <= 0u )
  187.     {
  188.       prism::error("%s(%u): %s: %s");
  189.       if ( dword_101391C )
  190.         dword_101391C(
  191.           "Index outside array boundaries.",
  192.           "d:\\build_bot\\slave\\final_build_ets2_112\\build\\prism\\src\\p3core\\collections/arrays/arrays_base_impl.h",
  193.           484,
  194.           "??A?$array_t@M@prism@@QAEAAMI@Z");
  195.       RaiseException(0xC0000025u, 1u, 0, 0);
  196.     }
  197.     do
  198.     {
  199.       sub_47A400(&v52, "%.3f", *(float *)(*(_DWORD *)(v3 + 424) + 4 * v23++));
  200.       if ( v23 >= *(_DWORD *)(v3 + 428) )
  201.         break;
  202.       v50 = (int)", ";
  203.       prism::mstring_t::copy(&v50, strlen((const char *)v53), 0, -1);
  204.     }
  205.     while ( v23 < *(_DWORD *)(v3 + 428) );
  206.   }
  207.   v50 = (int)"] versus new [";
  208.   prism::mstring_t::copy(&v50, strlen((const char *)v53), 0, -1);
  209.   v24 = 0;
  210.   v25 = *(_DWORD *)(a3 + 8);
  211.   if ( v25 )
  212.   {
  213.     if ( v25 <= 0 )
  214.     {
  215.       prism::error("%s(%u): %s: %s");
  216.       if ( dword_101391C )
  217.         dword_101391C(
  218.           "Index outside array boundaries.",
  219.           "d:\\build_bot\\slave\\final_build_ets2_112\\build\\prism\\src\\p3core\\collections/arrays/arrays_base_impl.h",
  220.           470,
  221.           "??A?$array_t@M@prism@@QBEABMI@Z");
  222.       RaiseException(0xC0000025u, 1u, 0, 0);
  223.     }
  224.     do
  225.     {
  226.       sub_47A400(&v52, "%.3f", *(float *)(*(_DWORD *)(a3 + 4) + 4 * v24++));
  227.       if ( v24 < *(_DWORD *)(a3 + 8) )
  228.       {
  229.         v50 = (int)", ";
  230.         prism::mstring_t::copy(&v50, strlen((const char *)v53), 0, -1);
  231.       }
  232.     }
  233.     while ( v24 < *(_DWORD *)(a3 + 8) );
  234.     v3 = v48;
  235.   }
  236.   v50 = (int)"].";
  237.   prism::mstring_t::copy(&v50, strlen((const char *)v53), 0, -1);
  238.   prism::error("%s");
  239.   v52 = &prism::string_dyn_t::vtable;
  240.   if ( (char *)v53 != &byte_E37D47 )
  241.     operator delete__(v53);
  242. LABEL_61:
  243.   v49 = v3 + 388;
  244.   v26 = *(_DWORD *)(a2 + 8);
  245.   v27 = *(_DWORD *)(v3 + 396);
  246.   if ( v27 != v26 )
  247.   {
  248.     if ( v26 >= v27 )
  249.     {
  250.       v28 = v26 - v27;
  251.       v29 = *(_DWORD *)(v3 + 388);
  252.       v50 = v28;
  253.       if ( (unsigned __int8)(*(int (__thiscall **)(int, int))(v29 + 20))(v3 + 388, v28) )
  254.         *(_DWORD *)(v3 + 396) += v50;
  255.     }
  256.     else
  257.     {
  258.       *(_DWORD *)(v3 + 396) = v26;
  259.     }
  260.   }
  261.   v50 = v3 + 420;
  262.   v30 = *(_DWORD *)(a3 + 8);
  263.   v31 = *(_DWORD *)(v3 + 428);
  264.   if ( v31 != v30 )
  265.   {
  266.     if ( v30 >= v31 )
  267.     {
  268.       v32 = v30 - v31;
  269.       v33 = *(_DWORD *)(v3 + 420);
  270.       v51 = v32;
  271.       if ( (unsigned __int8)(*(int (__thiscall **)(int, int))(v33 + 20))(v3 + 420, v32) )
  272.         *(_DWORD *)(v3 + 428) += v51;
  273.     }
  274.     else
  275.     {
  276.       *(_DWORD *)(v3 + 428) = v30;
  277.     }
  278.   }
  279.   v34 = a2;
  280.   v35 = 0;
  281.   v36 = *(_DWORD *)(a2 + 8);
  282.   if ( v36 )
  283.   {
  284.     if ( v36 <= 0 )
  285.     {
  286.       prism::error("%s(%u): %s: %s");
  287.       if ( dword_101391C )
  288.         dword_101391C(
  289.           "Index outside array boundaries.",
  290.           "d:\\build_bot\\slave\\final_build_ets2_112\\build\\prism\\src\\p3core\\collections/arrays/arrays_base_impl.h",
  291.           470,
  292.           "??A?$array_t@M@prism@@QBEABMI@Z");
  293.       RaiseException(0xC0000025u, 1u, 0, 0);
  294.     }
  295.     do
  296.     {
  297.       v37 = 4 * v35 + *(_DWORD *)(v34 + 4);
  298.       v38 = v49;
  299.       if ( v35 >= *(_DWORD *)(v49 + 8) )
  300.       {
  301.         prism::error("%s(%u): %s: %s");
  302.         if ( dword_101391C )
  303.           dword_101391C(
  304.             "Index outside array boundaries.",
  305.             "d:\\build_bot\\slave\\final_build_ets2_112\\build\\prism\\src\\p3core\\collections/arrays/arrays_base_impl.h",
  306.             484,
  307.             "??A?$array_t@M@prism@@QAEAAMI@Z");
  308.         RaiseException(0xC0000025u, 1u, 0, 0);
  309.         v38 = v49;
  310.       }
  311.       v39 = *(float *)v37;
  312.       v34 = a2;
  313.       *(float *)(*(_DWORD *)(v38 + 4) + 4 * v35++) = v39;
  314.     }
  315.     while ( v35 < *(_DWORD *)(a2 + 8) );
  316.   }
  317.   v40 = a3;
  318.   v41 = 0;
  319.   result = *(_DWORD *)(a3 + 8);
  320.   if ( result )
  321.   {
  322.     if ( result <= 0 )
  323.     {
  324.       prism::error("%s(%u): %s: %s");
  325.       if ( dword_101391C )
  326.         dword_101391C(
  327.           "Index outside array boundaries.",
  328.           "d:\\build_bot\\slave\\final_build_ets2_112\\build\\prism\\src\\p3core\\collections/arrays/arrays_base_impl.h",
  329.           470,
  330.           "??A?$array_t@M@prism@@QBEABMI@Z");
  331.       RaiseException(0xC0000025u, 1u, 0, 0);
  332.     }
  333.     do
  334.     {
  335.       v43 = 4 * v41 + *(_DWORD *)(v40 + 4);
  336.       v44 = v50;
  337.       if ( v41 >= *(_DWORD *)(v50 + 8) )
  338.       {
  339.         prism::error("%s(%u): %s: %s");
  340.         if ( dword_101391C )
  341.           dword_101391C(
  342.             "Index outside array boundaries.",
  343.             "d:\\build_bot\\slave\\final_build_ets2_112\\build\\prism\\src\\p3core\\collections/arrays/arrays_base_impl.h",
  344.             484,
  345.             "??A?$array_t@M@prism@@QAEAAMI@Z");
  346.         RaiseException(0xC0000025u, 1u, 0, 0);
  347.         v44 = v50;
  348.       }
  349.       v45 = *(float *)v43;
  350.       v40 = a3;
  351.       *(float *)(*(_DWORD *)(v44 + 4) + 4 * v41++) = v45;
  352.       result = *(_DWORD *)(a3 + 8);
  353.     }
  354.     while ( v41 < result );
  355.   }
  356.   return result;
  357. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement