MiCook1e

WebSocket aces.exe

May 19th, 2025
18
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 35.75 KB | None | 0 0
  1.   int64_t sub_1429f8470(void* arg1, int32_t* arg2, void* arg3, int64_t* arg4)
  2.  
  3.   {
  4.       if (!*(uint64_t*)((char*)arg1 + 0x88))
  5.       {
  6.           if ((char*)arg1 + 8 != arg3)
  7.           {
  8.               int64_t rax_1 = *(uint64_t*)((char*)arg1 + 0x18);
  9.              
  10.               if (rax_1)
  11.                   rax_1((char*)arg1 + 8, 0, 0);
  12.              
  13.               int64_t rbx_1 = *(uint64_t*)((char*)arg3 + 0x10);
  14.               int64_t rax_2;
  15.              
  16.               if (!rbx_1)
  17.                   rax_2 = 0;
  18.               else
  19.               {
  20.                   rbx_1((char*)arg1 + 8, arg3, 2);
  21.                   rax_2 = *(uint64_t*)((char*)arg3 + 0x10);
  22.               }
  23.              
  24.               *(uint64_t*)((char*)arg1 + 0x18) = rax_2;
  25.               *(uint64_t*)((char*)arg1 + 0x20) = *(uint64_t*)((char*)arg3 + 0x18);
  26.               *(uint64_t*)((char*)arg3 + 0x10) = 0;
  27.               *(uint64_t*)((char*)arg3 + 0x18) = sub_1400e8c20;
  28.           }
  29.          
  30.           void** s_1 = j_sub_1452ca40c(0xd8);
  31.           void** s = s_1;
  32.           int32_t var_e8;
  33.          
  34.           if (!s_1)
  35.           {
  36.               void** s_2;
  37.              
  38.               while (true)
  39.               {
  40.                   int64_t rax_4 = data_145c71700;
  41.                  
  42.                   if (rax_4 && rax_4(0xd8))
  43.                   {
  44.                       s_2 = j_sub_1452ca40c(0xd8);
  45.                      
  46.                       if (s_2)
  47.                           break;
  48.                      
  49.                       continue;
  50.                   }
  51.                  
  52.                   int64_t var_e0_2 = 0xd8;
  53.                   label_1429f95c0:
  54.                   var_e8 = 2;
  55.                   sub_141e64090("..\..\prog\engine\memory\dagmem.…", 0x310, "Not enough memory to alloc %llu …", &var_e8, 1);
  56.                   /* no return */
  57.               }
  58.              
  59.               s = s_2;
  60.           }
  61.          
  62.           uint32_t rax_8 = (int32_t)((j__msize_base(s) + 0xf) >> 4);
  63.           data_145c716f0 += rax_8;
  64.           data_145c716f4 += 1;
  65.           int32_t rax_9 = *(uint32_t*)((char*)arg1 + 0x74);
  66.           char rsi_2 = *(uint8_t*)((char*)arg1 + 0x71);
  67.           char rax_10 = *(uint8_t*)((char*)arg1 + 0x70);
  68.           int64_t rbx_2 = *(uint64_t*)((char*)arg1 + 0x68);
  69.           char var_98 = 0;
  70.           void* rax_11 = strlen(arg2);
  71.           void* r12_1 = rax_11;
  72.           void* var_90;
  73.           char var_81;
  74.           int32_t* r14_2;
  75.          
  76.           if (rax_11 < 0x18)
  77.           {
  78.               rax_11 = 0x17;
  79.               rax_11 = 0x17 - r12_1;
  80.               var_81 = rax_11;
  81.               r14_2 = var_98;
  82.           }
  83.           else
  84.           {
  85.               int32_t* rax_12 = j_sub_1452ca40c((char*)r12_1 + 1);
  86.               r14_2 = rax_12;
  87.              
  88.               if (!rax_12)
  89.               {
  90.                   while (true)
  91.                   {
  92.                       int64_t rax_13 = data_145c71700;
  93.                      
  94.                       if (rax_13 && rax_13((char*)r12_1 + 1))
  95.                       {
  96.                           int32_t* rax_15 = j_sub_1452ca40c((char*)r12_1 + 1);
  97.                          
  98.                           if (!rax_15)
  99.                               continue;
  100.                          
  101.                           r14_2 = rax_15;
  102.                           break;
  103.                       }
  104.                      
  105.                       void* var_e0_3 = (char*)r12_1 + 1;
  106.                       goto label_1429f95c0;
  107.                   }
  108.               }
  109.              
  110.               uint32_t rax_18 = (int32_t)((j__msize_base(r14_2) + 0xf) >> 4);
  111.               data_145c716f0 += rax_18;
  112.               data_145c716f4 += 1;
  113.               var_98 = r14_2;
  114.               int64_t rax_20 = r12_1 | 0x8000000000000000;
  115.               int64_t var_88_1 = rax_20;
  116.               var_90 = r12_1;
  117.               rax_11 = rax_20 >> 0x38;
  118.           }
  119.          
  120.           if (rax_11 >= 0)
  121.               r14_2 = &var_98;
  122.          
  123.           char* r14_3 = &var_98;
  124.           memcpy(r14_2, arg2, r12_1);
  125.           uint64_t rax_21 = (uint64_t)var_81;
  126.           void* rdx_3 = &var_98 - rax_21 + 0x17;
  127.          
  128.           if (rax_21 < 0)
  129.               rdx_3 = var_98 + var_90;
  130.          
  131.           *(uint8_t*)rdx_3 = 0;
  132.           s[9] = 0;
  133.           __builtin_memset(s, 0, 0x44);
  134.           *(uint8_t*)((char*)s + 0x5f) = 0x17;
  135.           s[0xc] = 0;
  136.           s[0xd] = rbx_2;
  137.           *(uint16_t*)((char*)s + 0xbc) = 0;
  138.           __builtin_memset(&s[0x18], 0, 0x18);
  139.           __builtin_memset(&s[0xe], 0, 0x4b);
  140.           (*(uint64_t*)(data_145b2d6b0 + 0x30))(&data_145d4e370, 0x50);
  141.           data_145b2cfc0 = &data_145d4e370;
  142.           data_145b2cfb8 = (*(uint32_t*)(data_145b2d6b0 + 0x10) & 0x10) << 0x11 | (0xffdfffff & data_145b2cfb8);
  143.           data_145b2cfd0 = "1.2.11.zlib-ng";
  144.           data_145b2d008 = 0x1000009;
  145.           int32_t var_100_1 = 9;
  146.           int32_t var_108_1 = 0;
  147.           sub_143e16e90(&data_145d4e3c0, 0x50, "%u.%u.%u", 1);
  148.           data_145b2d010 = &data_145d4e3c0;
  149.           data_145b2d040 = 0x28a5;
  150.           int32_t var_100_2 = 5;
  151.           int32_t var_108_2 = 4;
  152.           sub_143e16e90(&data_145d4e410, 0x50, "%u.%u.%u", 1);
  153.           data_145b2d048 = &data_145d4e410;
  154.          
  155.           if (data_145b2cfa8 <= 0x73201)
  156.           {
  157.               char const (* var_e0_4)[0x7] = data_145b2cfa0;
  158.               var_e8 = 1;
  159.               sub_141e64090("..\..\prog\gameLibs\websocket\we…", 0x28b, "CURL version '%s'. At least '7.5…", &var_e8, 1);
  160.               /* no return */
  161.           }
  162.          
  163.           int32_t* rax_28 = sub_142fef270();
  164.           *(uint64_t*)s = rax_28;
  165.          
  166.           if (!rax_28)
  167.           {
  168.               sub_141e64090("..\..\prog\gameLibs\websocket\we…", 0x28f, "failed to allocate curl handle", nullptr, 0);
  169.               /* no return */
  170.           }
  171.          
  172.           sub_142ff27b0(rax_28, 0x2777, s);
  173.           sub_142ff27b0(*(uint64_t*)s, 0x272d, s);
  174.           sub_142ff27b0(*(uint64_t*)s, 0x2711, s);
  175.           sub_142ff27b0(*(uint64_t*)s, 0x2719, s);
  176.           sub_142ff27b0(*(uint64_t*)s, 0x4e6f, sub_1429f7ae0);
  177.           sub_142ff27b0(*(uint64_t*)s, 0x4e2b, sub_1429f6640);
  178.           sub_142ff27b0(*(uint64_t*)s, 0x4e2c, sub_1429f6590);
  179.           sub_142ff27b0(*(uint64_t*)s, 0x34, 1);
  180.           sub_142ff27b0(*(uint64_t*)s, 0x29, 1);
  181.           sub_142ff27b0(*(uint64_t*)s, 0x4e7e, sub_1429f81d0);
  182.           uint64_t r8_6 = (uint64_t)rax_9;
  183.          
  184.           if (r8_6 > 0)
  185.               sub_142ff27b0(*(uint64_t*)s, 0x9c, r8_6);
  186.          
  187.           uint64_t rax_29 = (uint64_t)data_145cb5767;
  188.           int64_t rcx_24;
  189.          
  190.           if (rax_29 >= 0)
  191.               rcx_24 = 0x17 - rax_29;
  192.           else
  193.               rcx_24 = data_145cb5758;
  194.          
  195.           if (!rax_10 || !rcx_24)
  196.           {
  197.               sub_142ff27b0(*(uint64_t*)s, 0x40, 0);
  198.               sub_142ff27b0(*(uint64_t*)s, 0x51, 0);
  199.           }
  200.           else
  201.           {
  202.               int64_t* r8_7;
  203.              
  204.               if (rax_29 >= 0)
  205.                   r8_7 = &data_145cb5750;
  206.               else
  207.                   r8_7 = data_145cb5750;
  208.              
  209.               sub_142ff27b0(*(uint64_t*)s, 0x2751, r8_7);
  210.               sub_142ff27b0(*(uint64_t*)s, 0x40, 1);
  211.               sub_142ff27b0(*(uint64_t*)s, 0x51, (uint64_t)((uint32_t)rsi_2 * 2));
  212.           }
  213.          
  214.           uint64_t r9 = (uint64_t)var_81;
  215.           void* r10_1 = 0x17 - r9;
  216.          
  217.           if (r9 < 0)
  218.               r10_1 = var_90;
  219.          
  220.           if (r10_1 >= 5)
  221.           {
  222.               char* r8_10 = var_98;
  223.               char temp0_1 = r9;
  224.               void var_128;
  225.               void* r11_1 = &var_128 + 0x17 - r9 + 0x90;
  226.              
  227.               if (temp0_1 < 0)
  228.                   r11_1 = (char*)var_90 + r8_10;
  229.              
  230.               char* rdx_7 = &var_98;
  231.              
  232.               if (temp0_1 < 0)
  233.                   rdx_7 = r8_10;
  234.              
  235.               if (rdx_7 != r11_1)
  236.               {
  237.                   int64_t rbx_3 = 4;
  238.                   int64_t rdi_1 = 3;
  239.                   int64_t rsi_4 = 2;
  240.                   int64_t rbp_1 = 1;
  241.                   int64_t rax_31 = 0;
  242.                  
  243.                   while (true)
  244.                   {
  245.                       void* rcx_30 = &rdx_7[rbp_1];
  246.                       int32_t* r8_11;
  247.                       int32_t* r9_1;
  248.                      
  249.                       if (rdx_7[rbx_3 - 4] != 0x77)
  250.                       {
  251.                           if (rcx_30 != r11_1)
  252.                           {
  253.                               label_1429f8a19:
  254.                               rax_31 -= 1;
  255.                               rbx_3 += 1;
  256.                               rdi_1 += 1;
  257.                               rsi_4 += 1;
  258.                               rbp_1 += 1;
  259.                               continue;
  260.                           }
  261.                       }
  262.                       else if (rcx_30 != r11_1)
  263.                       {
  264.                           if (rdx_7[rbx_3 - 3] != 0x73)
  265.                               goto label_1429f8a19;
  266.                          
  267.                           if (&rdx_7[rsi_4] != r11_1)
  268.                           {
  269.                               if (rdx_7[rbx_3 - 2] != 0x3a)
  270.                                   goto label_1429f8a19;
  271.                              
  272.                               if (&rdx_7[rdi_1] != r11_1)
  273.                               {
  274.                                   if (rdx_7[rbx_3 - 1] != 0x2f)
  275.                                       goto label_1429f8a19;
  276.                                  
  277.                                   void* rcx_33 = &rdx_7[rbx_3];
  278.                                  
  279.                                   if (rcx_33 != r11_1)
  280.                                   {
  281.                                       if (*(uint8_t*)rcx_33 != 0x2f)
  282.                                           goto label_1429f8a19;
  283.                                      
  284.                                       if (rdx_7 - rax_31 != r11_1 && !rax_31)
  285.                                       {
  286.                                           if (r9 >= 0)
  287.                                               r8_10 = &var_98;
  288.                                          
  289.                                           r8_11 = &r8_10[5];
  290.                                           var_108_2 = &data_145a4bdf6[7];
  291.                                           r9_1 = "http://";
  292.                                           label_1429f8a9e:
  293.                                           sub_140687980(&var_98, rdx_7, r8_11, r9_1, var_108_2);
  294.                                           break;
  295.                                       }
  296.                                   }
  297.                               }
  298.                           }
  299.                       }
  300.                      
  301.                       if (r10_1 < 6)
  302.                           break;
  303.                      
  304.                       int64_t rbx_4 = 5;
  305.                       int64_t rdi_2 = 4;
  306.                       int64_t rsi_6 = 3;
  307.                       int64_t rax_33 = 2;
  308.                       int64_t rbp_2 = 1;
  309.                       int64_t r10_2 = 0;
  310.                      
  311.                       while (true)
  312.                       {
  313.                           void* rcx_41 = &rdx_7[rbp_2];
  314.                          
  315.                           if (rdx_7[rbx_4 - 5] == 0x77)
  316.                           {
  317.                               if (rcx_41 == r11_1)
  318.                                   goto label_1429f8aaf;
  319.                              
  320.                               if (rdx_7[rbx_4 - 4] == 0x73)
  321.                               {
  322.                                   if (&rdx_7[rax_33] == r11_1)
  323.                                       goto label_1429f8aaf;
  324.                                  
  325.                                   if (rdx_7[rbx_4 - 3] == 0x73)
  326.                                   {
  327.                                       if (&rdx_7[rsi_6] == r11_1)
  328.                                           goto label_1429f8aaf;
  329.                                      
  330.                                       if (rdx_7[rbx_4 - 2] == 0x3a)
  331.                                       {
  332.                                           if (&rdx_7[rdi_2] == r11_1)
  333.                                               goto label_1429f8aaf;
  334.                                          
  335.                                           if (rdx_7[rbx_4 - 1] == 0x2f)
  336.                                           {
  337.                                               void* rcx_45 = &rdx_7[rbx_4];
  338.                                              
  339.                                               if (rcx_45 == r11_1)
  340.                                                   goto label_1429f8aaf;
  341.                                              
  342.                                               if (*(uint8_t*)rcx_45 == 0x2f)
  343.                                               {
  344.                                                   if (rdx_7 - r10_2 == r11_1)
  345.                                                       break;
  346.                                                  
  347.                                                   if (r10_2)
  348.                                                       break;
  349.                                                  
  350.                                                   if (r9 >= 0)
  351.                                                       r8_10 = &var_98;
  352.                                                  
  353.                                                   r8_11 = &r8_10[6];
  354.                                                   var_108_2 = &data_145a4bde6[8];
  355.                                                   r9_1 = "https://";
  356.                                                   goto label_1429f8a9e;
  357.                                               }
  358.                                           }
  359.                                       }
  360.                                   }
  361.                               }
  362.                           }
  363.                           else if (rcx_41 == r11_1)
  364.                               goto label_1429f8aaf;
  365.                          
  366.                           r10_2 -= 1;
  367.                           rbx_4 += 1;
  368.                           rdi_2 += 1;
  369.                           rsi_6 += 1;
  370.                           rax_33 += 1;
  371.                           rbp_2 += 1;
  372.                       }
  373.                      
  374.                       break;
  375.                   }
  376.               }
  377.           }
  378.          
  379.           label_1429f8aaf:
  380.          
  381.           if (var_81 < 0)
  382.               r14_3 = var_98;
  383.          
  384.           sub_142ff27b0(*(uint64_t*)s, 0x2712, r14_3);
  385.           sub_142ff27b0(*(uint64_t*)s, 0x54, 2);
  386.           sub_142ff27b0(*(uint64_t*)s, 0x2e, 1);
  387.           sub_142ff27b0(*(uint64_t*)s, 0x2734, "GET");
  388.           int64_t* i_17 = s[1];
  389.           int64_t rax_32 = data_145b15750("Expect:");
  390.          
  391.           if (!rax_32)
  392.               i_17 = nullptr;
  393.           else
  394.           {
  395.               int64_t* i_19 = data_145b15768(0x10);
  396.              
  397.               if (!i_19)
  398.               {
  399.                   data_145b15758(rax_32);
  400.                   i_17 = nullptr;
  401.               }
  402.               else
  403.               {
  404.                   i_19[1] = 0;
  405.                   *(uint64_t*)i_19 = rax_32;
  406.                  
  407.                   if (!i_17)
  408.                       i_17 = i_19;
  409.                   else
  410.                   {
  411.                       int64_t* i = i_17;
  412.                       int64_t* i_8;
  413.                      
  414.                       do
  415.                       {
  416.                           i_8 = i;
  417.                           i = i[1];
  418.                       } while (i);
  419.                      
  420.                       i_8[1] = i_19;
  421.                   }
  422.               }
  423.           }
  424.          
  425.           s[1] = i_17;
  426.           int64_t rax_36 = data_145b15750("Transfer-Encoding:");
  427.          
  428.           if (!rax_36)
  429.               i_17 = nullptr;
  430.           else
  431.           {
  432.               int64_t* i_20 = data_145b15768(0x10);
  433.              
  434.               if (!i_20)
  435.               {
  436.                   data_145b15758(rax_36);
  437.                   i_17 = nullptr;
  438.               }
  439.               else
  440.               {
  441.                   i_20[1] = 0;
  442.                   *(uint64_t*)i_20 = rax_36;
  443.                  
  444.                   if (!i_17)
  445.                       i_17 = i_20;
  446.                   else
  447.                   {
  448.                       int64_t* i_1 = i_17;
  449.                       int64_t* i_9;
  450.                      
  451.                       do
  452.                       {
  453.                           i_9 = i_1;
  454.                           i_1 = i_1[1];
  455.                       } while (i_1);
  456.                      
  457.                       i_9[1] = i_20;
  458.                   }
  459.               }
  460.           }
  461.          
  462.           s[1] = i_17;
  463.           int64_t rax_37 = data_145b15750("Connection: Upgrade");
  464.          
  465.           if (!rax_37)
  466.               i_17 = nullptr;
  467.           else
  468.           {
  469.               int64_t* i_21 = data_145b15768(0x10);
  470.              
  471.               if (!i_21)
  472.               {
  473.                   data_145b15758(rax_37);
  474.                   i_17 = nullptr;
  475.               }
  476.               else
  477.               {
  478.                   i_21[1] = 0;
  479.                   *(uint64_t*)i_21 = rax_37;
  480.                  
  481.                   if (!i_17)
  482.                       i_17 = i_21;
  483.                   else
  484.                   {
  485.                       int64_t* i_2 = i_17;
  486.                       int64_t* i_10;
  487.                      
  488.                       do
  489.                       {
  490.                           i_10 = i_2;
  491.                           i_2 = i_2[1];
  492.                       } while (i_2);
  493.                      
  494.                       i_10[1] = i_21;
  495.                   }
  496.               }
  497.           }
  498.          
  499.           s[1] = i_17;
  500.           int64_t rax_38 = data_145b15750("Upgrade: websocket");
  501.          
  502.           if (!rax_38)
  503.               i_17 = nullptr;
  504.           else
  505.           {
  506.               int64_t* i_22 = data_145b15768(0x10);
  507.              
  508.               if (!i_22)
  509.               {
  510.                   data_145b15758(rax_38);
  511.                   i_17 = nullptr;
  512.               }
  513.               else
  514.               {
  515.                   i_22[1] = 0;
  516.                   *(uint64_t*)i_22 = rax_38;
  517.                  
  518.                   if (!i_17)
  519.                       i_17 = i_22;
  520.                   else
  521.                   {
  522.                       int64_t* i_3 = i_17;
  523.                       int64_t* i_11;
  524.                      
  525.                       do
  526.                       {
  527.                           i_11 = i_3;
  528.                           i_3 = i_3[1];
  529.                       } while (i_3);
  530.                      
  531.                       i_11[1] = i_22;
  532.                   }
  533.               }
  534.           }
  535.          
  536.           s[1] = i_17;
  537.           int64_t rax_39 = data_145b15750("Sec-WebSocket-Version: 13");
  538.          
  539.           if (!rax_39)
  540.               i_17 = nullptr;
  541.           else
  542.           {
  543.               int64_t* i_23 = data_145b15768(0x10);
  544.              
  545.               if (!i_23)
  546.               {
  547.                   data_145b15758(rax_39);
  548.                   i_17 = nullptr;
  549.               }
  550.               else
  551.               {
  552.                   i_23[1] = 0;
  553.                   *(uint64_t*)i_23 = rax_39;
  554.                  
  555.                   if (!i_17)
  556.                       i_17 = i_23;
  557.                   else
  558.                   {
  559.                       int64_t* i_4 = i_17;
  560.                       int64_t* i_12;
  561.                      
  562.                       do
  563.                       {
  564.                           i_12 = i_4;
  565.                           i_4 = i_4[1];
  566.                       } while (i_4);
  567.                      
  568.                       i_12[1] = i_23;
  569.                   }
  570.               }
  571.           }
  572.          
  573.           s[1] = i_17;
  574.           int64_t var_d8_1 = (int64_t){0};
  575.           char var_c8;
  576.           sub_1438987a0(nullptr, &var_c8, 0x10, 0, var_108_2, var_100_2);
  577.           uint64_t rcx_51 = (uint64_t)var_c8;
  578.           var_e8 = (*"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdef…")[rcx_51 >> 2];
  579.           char var_c7;
  580.           uint64_t rbp_3 = (uint64_t)var_c7;
  581.           *(uint8_t*)((char*)var_e8)[1] = (*"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdef…")[rbp_3 >> 4 | ((uint64_t)(rcx_51 << 4) & 0x30)];
  582.           char var_c6;
  583.           uint64_t rcx_55 = (uint64_t)var_c6;
  584.           *(uint8_t*)((char*)var_e8)[2] = (*"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdef…")[(rcx_55 >> 6) + (((uint64_t)rbp_3 & 0xf) << 2)];
  585.           *(uint8_t*)((char*)var_e8)[3] = *(uint8_t*)(((uint64_t)rcx_55 & 0x3f) + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdef…");
  586.           char var_c5;
  587.           uint64_t rcx_58 = (uint64_t)var_c5;
  588.           char var_e4_1 = (*"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdef…")[rcx_58 >> 2];
  589.           char var_c4;
  590.           uint64_t rbp_5 = (uint64_t)var_c4;
  591.           char var_e3_1 = (*"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdef…")[rbp_5 >> 4 | ((uint64_t)(rcx_58 << 4) & 0x30)];
  592.           char var_c3;
  593.           uint64_t rcx_62 = (uint64_t)var_c3;
  594.           char var_e2_1 = (*"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdef…")[(rcx_62 >> 6) + (((uint64_t)rbp_5 & 0xf) << 2)];
  595.           char var_e1_1 = *(uint8_t*)(((uint64_t)rcx_62 & 0x3f) + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdef…");
  596.           char var_c2;
  597.           uint64_t rcx_65 = (uint64_t)var_c2;
  598.           int64_t var_e0;
  599.           var_e0 = (*"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdef…")[rcx_65 >> 2];
  600.           char var_c1;
  601.           uint64_t rbp_7 = (uint64_t)var_c1;
  602.           *(uint8_t*)((char*)var_e0)[1] = (*"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdef…")[rbp_7 >> 4 | ((uint64_t)(rcx_65 << 4) & 0x30)];
  603.           char var_c0;
  604.           uint64_t rcx_69 = (uint64_t)var_c0;
  605.           *(uint8_t*)((char*)var_e0)[2] = (*"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdef…")[(rcx_69 >> 6) + (((uint64_t)rbp_7 & 0xf) << 2)];
  606.           *(uint8_t*)((char*)var_e0)[3] = *(uint8_t*)(((uint64_t)rcx_69 & 0x3f) + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdef…");
  607.           char var_bf;
  608.           uint64_t rcx_72 = (uint64_t)var_bf;
  609.           *(uint8_t*)((char*)var_e0)[4] = (*"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdef…")[rcx_72 >> 2];
  610.           char var_be;
  611.           uint64_t rbp_9 = (uint64_t)var_be;
  612.           *(uint8_t*)((char*)var_e0)[5] = (*"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdef…")[rbp_9 >> 4 | ((uint64_t)(rcx_72 << 4) & 0x30)];
  613.           char var_bd;
  614.           uint64_t rcx_76 = (uint64_t)var_bd;
  615.           *(uint8_t*)((char*)var_e0)[6] = (*"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdef…")[(rcx_76 >> 6) + (((uint64_t)rbp_9 & 0xf) << 2)];
  616.           *(uint8_t*)((char*)var_e0)[7] = *(uint8_t*)(((uint64_t)rcx_76 & 0x3f) + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdef…");
  617.           char var_bc;
  618.           uint64_t rcx_79 = (uint64_t)var_bc;
  619.           var_d8_1 = (*"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdef…")[rcx_79 >> 2];
  620.           char var_bb;
  621.           uint64_t rbp_11 = (uint64_t)var_bb;
  622.           *(uint8_t*)((char*)var_d8_1)[1] = (*"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdef…")[rbp_11 >> 4 | ((uint64_t)(rcx_79 << 4) & 0x30)];
  623.           char var_ba;
  624.           uint64_t rcx_83 = (uint64_t)var_ba;
  625.           *(uint8_t*)((char*)var_d8_1)[2] = (*"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdef…")[(rcx_83 >> 6) + (((uint64_t)rbp_11 & 0xf) << 2)];
  626.           *(uint8_t*)((char*)var_d8_1)[3] = *(uint8_t*)(((uint64_t)rcx_83 & 0x3f) + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdef…");
  627.           char var_b9;
  628.           uint64_t rcx_86 = (uint64_t)var_b9;
  629.           *(uint8_t*)((char*)var_d8_1)[4] = (*"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdef…")[rcx_86 >> 2];
  630.           *(uint8_t*)((char*)var_d8_1)[5] = *(uint8_t*)(((uint64_t)(rcx_86 << 4) & 0x30) + "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdef…");
  631.           *(uint16_t*)((char*)var_d8_1)[6] = 0x3d3d;
  632.           char var_b8 = 0;
  633.           void* rax_41 = strlen(&var_e8);
  634.           void* r12_2 = rax_41;
  635.           void* var_b0;
  636.           int64_t var_a8;
  637.           char var_a1;
  638.           int32_t var_78;
  639.           int32_t* i_16;
  640.          
  641.           if (rax_41 < 0x18)
  642.           {
  643.               rax_41 = 0x17;
  644.               rax_41 = 0x17 - r12_2;
  645.               var_a1 = rax_41;
  646.               i_16 = var_b8;
  647.           }
  648.           else
  649.           {
  650.               int32_t* i_24 = j_sub_1452ca40c((char*)r12_2 + 1);
  651.               i_16 = i_24;
  652.              
  653.               if (!i_24)
  654.               {
  655.                   int32_t* i_5;
  656.                  
  657.                   do
  658.                   {
  659.                       int64_t rax_42 = data_145c71700;
  660.                       char rax_43;
  661.                      
  662.                       if (rax_42)
  663.                           rax_43 = rax_42((char*)r12_2 + 1);
  664.                      
  665.                       if (!rax_42 || !rax_43)
  666.                       {
  667.                           void* var_70 = (char*)r12_2 + 1;
  668.                           var_78 = 2;
  669.                           sub_141e64090("..\..\prog\engine\memory\dagmem.…", 0x310, "Not enough memory to alloc %llu …", &var_78, 1);
  670.                           /* no return */
  671.                       }
  672.                      
  673.                       i_5 = j_sub_1452ca40c((char*)r12_2 + 1);
  674.                   } while (!i_5);
  675.                  
  676.                   i_16 = i_5;
  677.               }
  678.              
  679.               uint32_t rax_46 = (int32_t)((j__msize_base(i_16) + 0xf) >> 4);
  680.               data_145c716f0 += rax_46;
  681.               data_145c716f4 += 1;
  682.               var_b8 = i_16;
  683.               int64_t rax_48 = r12_2 | 0x8000000000000000;
  684.               var_a8 = rax_48;
  685.               var_b0 = r12_2;
  686.               rax_41 = rax_48 >> 0x38;
  687.           }
  688.          
  689.           if (rax_41 >= 0)
  690.               i_16 = &var_b8;
  691.          
  692.           int32_t* rdi_4 = &var_e8;
  693.           memcpy(i_16, &var_e8, r12_2);
  694.           uint64_t rax_49 = (uint64_t)var_a1;
  695.           void* rdx_64 = &var_b8 - rax_49 + 0x17;
  696.          
  697.           if (rax_49 < 0)
  698.               rdx_64 = var_b8 + var_b0;
  699.          
  700.           *(uint8_t*)rdx_64 = 0;
  701.           int64_t rax_50 = s[0xb];
  702.           var_e8 = *(uint128_t*)((char*)s + 0x48);
  703.           s[0xb] = var_a8;
  704.           *(uint128_t*)((char*)s + 0x48) = var_b8;
  705.           var_b8 = var_e8;
  706.           int64_t var_a8_1 = rax_50;
  707.          
  708.           if (var_a1 < 0)
  709.           {
  710.               int64_t rsi_11 = var_b8;
  711.              
  712.               if (rsi_11)
  713.               {
  714.                   int32_t rax_56 = -((int32_t)((j__msize_base(rsi_11) + 0xf) >> 4));
  715.                   data_145c716f0 += rax_56;
  716.                   data_145c716f4 -= 1;
  717.                   sub_1452c4c18(rsi_11);
  718.               }
  719.           }
  720.          
  721.           sub_140808780(&var_e8, "Sec-WebSocket-Key: ", &s[9]);
  722.          
  723.           if (*(uint8_t*)((char*)rax_50)[7] < 0)
  724.               rdi_4 = var_e8;
  725.          
  726.           int64_t* i_15 = s[1];
  727.           int64_t rax_57 = data_145b15750(rdi_4);
  728.          
  729.           if (!rax_57)
  730.               i_15 = nullptr;
  731.           else
  732.           {
  733.               int64_t* i_25 = data_145b15768(0x10);
  734.              
  735.               if (!i_25)
  736.               {
  737.                   data_145b15758(rax_57);
  738.                   i_15 = nullptr;
  739.               }
  740.               else
  741.               {
  742.                   i_25[1] = 0;
  743.                   *(uint64_t*)i_25 = rax_57;
  744.                  
  745.                   if (!i_15)
  746.                       i_15 = i_25;
  747.                   else
  748.                   {
  749.                       int64_t* i_6 = i_15;
  750.                       int64_t* i_13;
  751.                      
  752.                       do
  753.                       {
  754.                           i_13 = i_6;
  755.                           i_6 = i_6[1];
  756.                       } while (i_6);
  757.                      
  758.                       i_13[1] = i_25;
  759.                   }
  760.               }
  761.           }
  762.          
  763.           s[1] = i_15;
  764.           int32_t* rsi_13 = *(uint64_t*)arg4;
  765.           int64_t rbx_6 = arg4[1];
  766.          
  767.           if (rsi_13 != rbx_6)
  768.           {
  769.               do
  770.               {
  771.                   void* rbp_14 = &rsi_13[6];
  772.                   sub_140352710(&var_78, rsi_13, ": ");
  773.                   uint64_t rax_58 = (uint64_t)*(uint8_t*)((char*)rsi_13 + 0x2f);
  774.                   void* rcx_103 = *(uint64_t*)((char*)rsi_13 + 0x18);
  775.                   void* r8_17 = (char*)rbp_14 - rax_58 + 0x17;
  776.                   char temp1_1 = rax_58;
  777.                  
  778.                   if (temp1_1 < 0)
  779.                       r8_17 = *(uint64_t*)((char*)rsi_13 + 0x20) + rcx_103;
  780.                  
  781.                   if (temp1_1 < 0)
  782.                       rbp_14 = rcx_103;
  783.                  
  784.                   sub_140280390(&var_78, rbp_14, r8_17);
  785.                   var_b8 = var_78;
  786.                   int64_t var_68;
  787.                   int64_t var_a8_2 = var_68;
  788.                   char* rcx_105 = &var_b8;
  789.                  
  790.                   if (var_a1 < 0)
  791.                       rcx_105 = var_b8;
  792.                  
  793.                   int64_t* i_18 = s[1];
  794.                   int64_t rax_60 = data_145b15750(rcx_105);
  795.                  
  796.                   if (!rax_60)
  797.                       i_18 = nullptr;
  798.                   else
  799.                   {
  800.                       int64_t* i_26 = data_145b15768(0x10);
  801.                      
  802.                       if (!i_26)
  803.                       {
  804.                           data_145b15758(rax_60);
  805.                           i_18 = nullptr;
  806.                       }
  807.                       else
  808.                       {
  809.                           i_26[1] = 0;
  810.                           *(uint64_t*)i_26 = rax_60;
  811.                          
  812.                           if (!i_18)
  813.                               i_18 = i_26;
  814.                           else
  815.                           {
  816.                               int64_t* i_7 = i_18;
  817.                               int64_t* i_14;
  818.                              
  819.                               do
  820.                               {
  821.                                   i_14 = i_7;
  822.                                   i_7 = i_7[1];
  823.                               } while (i_7);
  824.                              
  825.                               i_14[1] = i_26;
  826.                           }
  827.                       }
  828.                   }
  829.                  
  830.                   s[1] = i_18;
  831.                  
  832.                   if (var_a1 < 0)
  833.                   {
  834.                       int64_t rbp_16 = var_b8;
  835.                      
  836.                       if (rbp_16)
  837.                       {
  838.                           int32_t rax_64 = -((int32_t)((j__msize_base(rbp_16) + 0xf) >> 4));
  839.                           data_145c716f0 += rax_64;
  840.                           data_145c716f4 -= 1;
  841.                           sub_1452c4c18(rbp_16);
  842.                       }
  843.                   }
  844.                  
  845.                   rsi_13 = &rsi_13[0xc];
  846.               } while (rsi_13 != rbx_6);
  847.              
  848.               i_15 = s[1];
  849.           }
  850.          
  851.           sub_142ff27b0(*(uint64_t*)s, 0x2727, i_15);
  852.          
  853.           if (*(uint8_t*)((char*)rax_50)[7] < 0)
  854.           {
  855.               int64_t rsi_14 = var_e8;
  856.              
  857.               if (rsi_14)
  858.               {
  859.                   int32_t rax_68 = -((int32_t)((j__msize_base(rsi_14) + 0xf) >> 4));
  860.                   data_145c716f0 += rax_68;
  861.                   data_145c716f4 -= 1;
  862.                   sub_1452c4c18(rsi_14);
  863.               }
  864.           }
  865.          
  866.           if (var_81 < 0)
  867.           {
  868.               int64_t rsi_15 = var_98;
  869.              
  870.               if (rsi_15)
  871.               {
  872.                   int32_t rax_72 = -((int32_t)((j__msize_base(rsi_15) + 0xf) >> 4));
  873.                   data_145c716f0 += rax_72;
  874.                   data_145c716f4 -= 1;
  875.                   sub_1452c4c18(rsi_15);
  876.               }
  877.           }
  878.          
  879.           int64_t* rsi_16 = *(uint64_t*)((char*)arg1 + 0x88);
  880.          
  881.           if (rsi_16 != s)
  882.           {
  883.               *(uint64_t*)((char*)arg1 + 0x88) = s;
  884.              
  885.               if (rsi_16)
  886.               {
  887.                   sub_1429f8260(rsi_16);
  888.                   int32_t rax_76 = -((int32_t)((j__msize_base(rsi_16) + 0xf) >> 4));
  889.                   data_145c716f0 += rax_76;
  890.                   data_145c716f4 -= 1;
  891.                   sub_1452c4c18(rsi_16);
  892.                   s = *(uint64_t*)((char*)arg1 + 0x88);
  893.               }
  894.           }
  895.          
  896.           int32_t* rsi_17 = *(uint64_t*)s;
  897.           int32_t* rax_77;
  898.           int128_t zmm6_1;
  899.           rax_77 = sub_143d12440(0x38f, 0x61, 0x47);
  900.           *(uint64_t*)((char*)arg1 + 0x78) = rax_77;
  901.           int32_t rax_78 = sub_143d12850(rax_77, rsi_17, zmm6_1);
  902.           uint64_t rdx_70 = (uint64_t)(rax_78 + 1);
  903.           char const* const rcx_118;
  904.          
  905.           if (rdx_70 > 0xd)
  906.           {
  907.               rcx_118 = "Unknown error";
  908.               label_1429f9552:
  909.               int64_t var_e0_1 = (int64_t)rax_78;
  910.               var_e8 = 2;
  911.               var_d8_1 = rcx_118;
  912.               var_d8_1 = 1;
  913.               sub_142adc6a0(2, "[websocket] curl_multi_add_handl…", &var_e8, 2);
  914.           }
  915.           else
  916.           {
  917.               rcx_118 = "Please call curl_multi_perform()…";
  918.              
  919.               switch (rdx_70)
  920.               {
  921.                   case 0:
  922.                   {
  923.                       goto label_1429f9552;
  924.                   }
  925.                   case 1:
  926.                   {
  927.                       *(uint8_t*)((char*)arg1 + 0x80) = 1;
  928.                       break;
  929.                   }
  930.                   case 2:
  931.                   {
  932.                       rcx_118 = "Invalid multi handle";
  933.                       goto label_1429f9552;
  934.                   }
  935.                   case 3:
  936.                   {
  937.                       rcx_118 = "Invalid easy handle";
  938.                       goto label_1429f9552;
  939.                   }
  940.                   case 4:
  941.                   {
  942.                       rcx_118 = "Out of memory";
  943.                       goto label_1429f9552;
  944.                   }
  945.                   case 5:
  946.                   {
  947.                       rcx_118 = "Internal error";
  948.                       goto label_1429f9552;
  949.                   }
  950.                   case 6:
  951.                   {
  952.                       rcx_118 = "Invalid socket argument";
  953.                       goto label_1429f9552;
  954.                   }
  955.                   case 7:
  956.                   {
  957.                       rcx_118 = "Unknown option";
  958.                       goto label_1429f9552;
  959.                   }
  960.                   case 8:
  961.                   {
  962.                       rcx_118 = "The easy handle is already added…";
  963.                       goto label_1429f9552;
  964.                   }
  965.                   case 9:
  966.                   {
  967.                       rcx_118 = "API function called from within …";
  968.                       goto label_1429f9552;
  969.                   }
  970.                   case 0xa:
  971.                   {
  972.                       rcx_118 = "Wakeup is unavailable or failed";
  973.                       goto label_1429f9552;
  974.                   }
  975.                   case 0xb:
  976.                   {
  977.                       rcx_118 = "A libcurl function was given a b…";
  978.                       goto label_1429f9552;
  979.                   }
  980.                   case 0xc:
  981.                   {
  982.                       rcx_118 = "Operation was aborted by an appl…";
  983.                       goto label_1429f9552;
  984.                   }
  985.                   case 0xd:
  986.                   {
  987.                       rcx_118 = "Unrecoverable error in select/po…";
  988.                       goto label_1429f9552;
  989.                   }
  990.               }
  991.           }
  992.       }
  993.       else
  994.           (*(uint64_t*)((char*)arg3 + 0x18))(arg1, 2, arg3);
  995.      
  996.       int64_t result = *(uint64_t*)((char*)arg3 + 0x10);
  997.      
  998.       if (!result)
  999.           return result;
  1000.      
  1001.       return result(arg3, 0, 0);
  1002.   }
  1003.  
Add Comment
Please, Sign In to add comment