Advertisement
Guest User

roblox lua state and script context c++

a guest
Nov 18th, 2017
244
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. int __thiscall sub_6C1110(void *this, int a2, int a3, signed int a4, int a5, int a6, int a7, int a8, int a9, int a10, int a11, int a12, int a13, int a14, int a15, int a16, int a17, int a18, int a19, int a20, int a21, int a22, int a23, int a24, int a25, int a26, int a27, int a28, int a29, int a30, int a31)
  2. {
  3.   int v31; // edi@1
  4.   int v32; // ebx@1
  5.   int v33; // esi@4
  6.   int v34; // eax@9
  7.   int v35; // ecx@9
  8.   void *v36; // eax@12
  9.   int v37; // eax@17
  10.   int v38; // ecx@17
  11.   void *v39; // eax@18
  12.   void *v41; // esi@31
  13.   signed int v42; // eax@31
  14.   signed int v43; // eax@36
  15.   bool v44; // cf@36
  16.   int v45; // eax@39
  17.   int v46; // ecx@39
  18.   signed int v47; // ecx@40
  19.   char v48; // al@43
  20.   signed int v49; // ecx@43
  21.   int v50; // esi@45
  22.   void *v51; // eax@45
  23.   int v52; // eax@46
  24.   signed int v53; // eax@50
  25.   int v54; // eax@55
  26.   int v55; // eax@55
  27.   int v56; // eax@63
  28.   int v57; // eax@65
  29.   int v58; // eax@65
  30.   int v59; // eax@69
  31.   int *v60; // eax@72
  32.   void *v61; // ebx@77
  33.   void *v62; // edi@77
  34.   int v63; // eax@77
  35.   volatile signed __int32 *v64; // [sp-8h] [bp-138h]@61
  36.   signed int v65; // [sp-4h] [bp-134h]@34
  37.   int v66; // [sp+0h] [bp-130h]@1
  38.   char v67; // [sp+Ch] [bp-124h]@65
  39.   char v68; // [sp+40h] [bp-F0h]@63
  40.   char v69; // [sp+74h] [bp-BCh]@63
  41.   char v70; // [sp+98h] [bp-98h]@48
  42.   char v71; // [sp+A4h] [bp-8Ch]@63
  43.   int v72; // [sp+BCh] [bp-74h]@53
  44.   int v73; // [sp+C0h] [bp-70h]@53
  45.   int *v74; // [sp+C8h] [bp-68h]@36
  46.   unsigned int v75; // [sp+DCh] [bp-54h]@72
  47.   void **v76; // [sp+E0h] [bp-50h]@32
  48.   __int64 v77; // [sp+E4h] [bp-4Ch]@32
  49.   int v78; // [sp+ECh] [bp-44h]@56
  50.   int v79; // [sp+F4h] [bp-3Ch]@1
  51.   int v80; // [sp+F8h] [bp-38h]@1
  52.   char v81; // [sp+FCh] [bp-34h]@26
  53.   char *v82; // [sp+100h] [bp-30h]@27
  54.   int v83; // [sp+104h] [bp-2Ch]@58
  55.   volatile signed __int32 *v84; // [sp+108h] [bp-28h]@55
  56.   void *v85; // [sp+10Ch] [bp-24h]@1
  57.   int v86; // [sp+110h] [bp-20h]@32
  58.   volatile signed __int32 **v87; // [sp+114h] [bp-1Ch]@32
  59.   char *v88; // [sp+118h] [bp-18h]@43
  60.   void *v89; // [sp+11Ch] [bp-14h]@12
  61.   int *v90; // [sp+120h] [bp-10h]@1
  62.   int v91; // [sp+12Ch] [bp-4h]@1
  63.  
  64.   v90 = &v66;
  65.   v85 = this;
  66.   v31 = a3;
  67.   v32 = a2;
  68.   v91 = 0;
  69.   v79 = a2;
  70.   v80 = a3;
  71.   if ( a3 )
  72.     _InterlockedIncrement((volatile signed __int32 *)(a3 + 4));
  73.   LOBYTE(v91) = 1;
  74.   if ( !v32 )
  75.     goto LABEL_87;
  76.   v33 = *(_DWORD *)(v32 + 52);
  77.   if ( v33 )
  78.   {
  79.     if ( *(_DWORD *)(v33 + 52) )
  80.       v33 = sub_4E0790();
  81.   }
  82.   else
  83.   {
  84.     v33 = v32;
  85.   }
  86.   if ( !v33 || (v34 = sub_51F8D0(0), v35 = *(_DWORD *)(v33 + 12), !(unsigned __int8)sub_5E4DD0(v34)) )
  87. LABEL_87:
  88.     v33 = 0;
  89.   if ( !v85 )
  90.     goto LABEL_88;
  91.   v36 = (void *)*((_DWORD *)v85 + 13);
  92.   v89 = v36;
  93.   if ( v36 )
  94.   {
  95.     if ( *((_DWORD *)v36 + 13) )
  96.     {
  97.       v36 = (void *)sub_4E0790();
  98.       v89 = v36;
  99.     }
  100.   }
  101.   else
  102.   {
  103.     v36 = v85;
  104.     v89 = v85;
  105.   }
  106.   if ( v36 && (v37 = sub_51F8D0(0), v38 = *((_DWORD *)v89 + 3), (unsigned __int8)sub_5E4DD0(v37)) )
  107.     v39 = v89;
  108.   else
  109. LABEL_88:
  110.     v39 = 0;
  111.   if ( (void *)v33 != v39 )
  112.   {
  113.     LOBYTE(v91) = 2;
  114.     if ( !v31 )
  115.       return sub_6B2CC0(&a2);
  116.     goto LABEL_22;
  117.   }
  118.   (*(void (__thiscall **)(int, char *))(*(_DWORD *)v32 + 156))(v32, &v81);
  119.   LOBYTE(v91) = 3;
  120.   if ( v81 )
  121.   {
  122.     v41 = v85;
  123.     v42 = *((_DWORD *)v85 + 77);
  124.     if ( v42 > 3 )
  125.     {
  126.       v76 = &off_FD67B4;
  127.       v86 = (int)"startScript re-entrancy has exceeded 3";
  128.       LOBYTE(v87) = 1;
  129.       _mm_storel_epi64((__m128i *)&v77, 0i64);
  130.       sub_E1B6A4(&v86, &v77);
  131.       v76 = &off_FD67C0;
  132.       v42 = sub_E1B83B(&v76, &unk_1467CE0);
  133.     }
  134.     *((_DWORD *)v41 + 77) = v42 + 1;
  135.     if ( byte_1617C38 )
  136.     {
  137.       v65 = v32;
  138.       sub_BD3FC0((unsigned __int8)byte_1617C38, "Running script %p", v32);
  139.     }
  140.     if ( *(_BYTE *)(sub_66CCA0() + 112) )
  141.     {
  142.       v43 = sub_5178B0(&v74);
  143.       v44 = *(_DWORD *)(v43 + 20) < 0x10u;
  144.       LOBYTE(v91) = 6;
  145.       if ( !v44 )
  146.         v43 = *(_DWORD *)v43;
  147.       v65 = v43;
  148.       sub_50CDA0(1, "Running Script \"%s\"", v43);
  149.       sub_5EDC50(&v74);
  150.     }
  151.     LOBYTE(v91) = 7;
  152.     v45 = sub_835940(0);
  153.     v46 = *(_DWORD *)(v32 + 12);
  154.     if ( (unsigned __int8)sub_5E4DD0(v45) )
  155.     {
  156.       v47 = 3;
  157.     }
  158.     else
  159.     {
  160.       v47 = 2;
  161.       if ( a4 != 2 )
  162.         v47 = a4;
  163.     }
  164.     v88 = (char *)v47;
  165.     v48 = sub_5A1E30(v47, 5);
  166.     v49 = 0;
  167.     if ( v48 )
  168.       v49 = 1;
  169.     v50 = (int)((char *)v41 + 56 * v49 - *((_DWORD *)v41 + 14 * v49 + 41) + 164);
  170.     v51 = (void *)sub_72A9C0(v50);
  171.     v89 = v51;
  172.     if ( !v51 )
  173.     {
  174.       v52 = *(_DWORD *)(v32 + 40);
  175.       if ( *(_DWORD *)(v52 + 20) >= 0x10u )
  176.         v52 = *(_DWORD *)v52;
  177.       sub_BA5F60(&v70, "Unable to create a new thread for %s", v52);
  178.       v51 = (void *)sub_E1B83B(&v70, &unk_1467CE0);
  179.     }
  180.     if ( byte_1617C38 )
  181.     {
  182.       v53 = *(_DWORD *)(v32 + 40);
  183.       if ( *(_DWORD *)(v53 + 20) >= 0x10u )
  184.         v53 = *(_DWORD *)v53;
  185.       v65 = v53;
  186.       sub_BD4100((unsigned __int8)byte_1617C38, "lua_sethook %s", v53);
  187.       v51 = v89;
  188.     }
  189.     sub_72BD30(v51, sub_6B8980, 8, 1000);
  190.     v72 = 1;
  191.     v73 = v50;
  192.     v86 = v32;
  193.     v87 = (volatile signed __int32 **)v31;
  194.     if ( v31 )
  195.       _InterlockedIncrement((volatile signed __int32 *)(v31 + 4));
  196.     LOBYTE(v91) = 9;
  197.     sub_6C04F0(v89, v88, &v86);
  198.     LOBYTE(v91) = 8;
  199.     sub_BC2C00(&v86);
  200.     v54 = sub_703810(&v84, v89);
  201.     sub_6B3040(v54);
  202.     sub_6B2250(&v84);
  203.     v55 = (*(int (__thiscall **)(int))(*(_DWORD *)v32 + 148))(v32);
  204.     v88 = (char *)v55;
  205.     if ( *(_DWORD *)(v55 + 16) )
  206.     {
  207.       v84 = *(volatile signed __int32 **)(v32 + 40);
  208.       v87 = (volatile signed __int32 **)((char *)v85 + 752);
  209.       sub_6ADDF0(&v78, v55);
  210.       if ( (volatile signed __int32 *)(v78 + 40) != v84 )
  211.         sub_48EF60(v84, 0, -1);
  212.       v83 = v32;
  213.       v84 = (volatile signed __int32 *)v31;
  214.       if ( v31 )
  215.         _InterlockedIncrement((volatile signed __int32 *)(v31 + 4));
  216.       LOBYTE(v91) = 10;
  217.       sub_6ADDF0(&v78, v88);
  218.       sub_84A4E0(&v83);
  219.       LOBYTE(v91) = 8;
  220.       sub_4E9920(&v83);
  221.     }
  222.     sub_6B1F70(v89);
  223.     LOBYTE(v91) = 11;
  224.     v64 = (volatile signed __int32 *)v32;
  225.     v65 = v31;
  226.     if ( v31 )
  227.       _InterlockedIncrement((volatile signed __int32 *)(v31 + 4));
  228.     sub_7415D0(v89, v64, v65);
  229.     sub_72BC70(v89, -10002, "script");
  230.     v87 = (volatile signed __int32 **)sub_5178B0(&v71);
  231.     LOBYTE(v91) = 12;
  232.     v56 = sub_48C000("=");
  233.     LOBYTE(v91) = 13;
  234.     sub_4B9A70(&v74, v56, v87);
  235.     sub_5EDC50(&v69);
  236.     LOBYTE(v91) = 16;
  237.     sub_5EDC50(&v71);
  238.     v88 = v82;
  239.     sub_6A8790(&v68);
  240.     LOBYTE(v91) = 17;
  241.     if ( (unsigned __int8)sub_99D940() && a22 )
  242.     {
  243.       LOBYTE(v91) = 18;
  244.       v57 = sub_6B3500(&v71, v88);
  245.       LOBYTE(v91) = 19;
  246.       v58 = sub_6A8BF0(&v67, v57);
  247.       LOBYTE(v91) = 20;
  248.       sub_6A88F0(v58);
  249.       sub_4E9C70(&v67);
  250.       sub_5EDC50(&v71);
  251.       v91 = 17;
  252.       v88 = &v68;
  253.     }
  254.     if ( a6 || a14 )
  255.     {
  256.       v87 = (volatile signed __int32 **)((int (__cdecl *)(signed int))loc_B949E0)(64);
  257.       LOBYTE(v91) = 25;
  258.       if ( v87 )
  259.         v59 = sub_6B1280(&a6);
  260.       else
  261.         v59 = 0;
  262.       LOBYTE(v91) = 17;
  263.       sub_6BEF60(v59);
  264.     }
  265.     v60 = (int *)&v74;
  266.     v65 = 1;
  267.     if ( v75 >= 0x10 )
  268.       v60 = v74;
  269.     if ( sub_594D00(v89, v88, v60, v65) != 0 )
  270.     {
  271.       v64 = (volatile signed __int32 *)v32;
  272.       v65 = v31;
  273.       if ( v31 )
  274.         _InterlockedIncrement((volatile signed __int32 *)(v31 + 4));
  275.       v61 = v89;
  276.       v62 = v85;
  277.       sub_6BE200(v89, v64, v65);
  278.       v63 = *((_DWORD *)v61 - 4);
  279.       if ( v63 && *(_DWORD *)(v63 + 32) )
  280.         sub_65C330(v61);
  281.       sub_72C060(v61, -2);
  282.     }
  283.     else
  284.     {
  285.       sub_521550(v89);
  286.       v65 = 0;
  287.       v87 = &v64;
  288.       v64 = v84;
  289.       if ( v84 )
  290.         _InterlockedIncrement(v84);
  291.       v62 = v85;
  292.       LOBYTE(v91) = 17;
  293.       sub_6BF2A0(v64, v65);
  294.       v61 = v89;
  295.     }
  296.     sub_873260(v61, 0);
  297.     sub_4E9C70(&v68);
  298.     sub_5EDC50(&v74);
  299.     sub_514010(&v84);
  300.     LOBYTE(v91) = 27;
  301.     sub_72C060(v50, -2);
  302.     --*((_DWORD *)v62 + 77);
  303.     sub_6B25D0(&v81);
  304.     sub_BC2C00(&v79);
  305.   }
  306.   else
  307.   {
  308.     LOBYTE(v91) = 4;
  309.     if ( !_InterlockedExchangeAdd((volatile signed __int32 *)v82 + 13, 0xFFFFFFFF) )
  310.       sub_6AFA60(&v82, sub_6B5680);
  311.     LOBYTE(v91) = 5;
  312.     if ( v31 )
  313.     {
  314. LABEL_22:
  315.       if ( !_InterlockedExchangeAdd((volatile signed __int32 *)(v31 + 4), 0xFFFFFFFF) )
  316.       {
  317.         (*(void (__thiscall **)(int))(*(_DWORD *)v31 + 4))(v31);
  318.         if ( _InterlockedExchangeAdd((volatile signed __int32 *)(v31 + 8), 0xFFFFFFFF) == 1 )
  319.           (*(void (__thiscall **)(int))(*(_DWORD *)v31 + 8))(v31);
  320.       }
  321.       return sub_6B2CC0(&a2);
  322.     }
  323.   }
  324.   return sub_6B2CC0(&a2);
  325. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement