Guest User

Untitled

a guest
Apr 22nd, 2021
191
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 43.35 KB | None | 0 0
  1.  
  2. /* WARNING: Type propagation algorithm not settling */
  3. /* WARNING: Could not reconcile some variable overlaps */
  4. /* WARNING: Restarted to delay deadcode elimination for space: stack */
  5.  
  6. undefined8 FUN_006ca728(long param_1,char *param_2,int param_3,undefined4 param_4,int param_5)
  7.  
  8. {
  9.   bool bVar1;
  10.   undefined4 *puVar2;
  11.   uint uVar3;
  12.   undefined8 *__ptr;
  13.   long *plVar4;
  14.   long **pplVar5;
  15.   long *plVar6;
  16.   uint uVar7;
  17.   uint uVar8;
  18.   byte bVar9;
  19.   uint uVar10;
  20.   long lVar11;
  21.   long *plVar12;
  22.   char cVar13;
  23.   int iVar14;
  24.   int iVar15;
  25.   size_t sVar16;
  26.   undefined **ppuVar17;
  27.   undefined **ppuVar18;
  28.   void *pvVar19;
  29.   uint *__ptr_00;
  30.   long *plVar20;
  31.   long *plVar21;
  32.   long lVar22;
  33.   ulong *puVar23;
  34.   char *pcVar24;
  35.   undefined8 *puVar25;
  36.   undefined **ppuVar26;
  37.   long *plVar27;
  38.   long *plVar28;
  39.   long *plVar29;
  40.   long **pplVar30;
  41.   undefined **ppuVar31;
  42.   undefined **ppuVar32;
  43.   undefined **ppuVar33;
  44.   long *plVar34;
  45.   long **pplVar35;
  46.   uint *puVar36;
  47.   ulong uVar37;
  48.   long lVar38;
  49.   ulong uVar39;
  50.   char *unaff_x20;
  51.   ulong uVar40;
  52.   undefined *puVar41;
  53.   void *pvVar42;
  54.   undefined **ppuVar43;
  55.   long *__dest;
  56.   undefined8 uVar44;
  57.   ulong uVar45;
  58.   ulong uVar46;
  59.   float fVar47;
  60.   ulong uVar48;
  61.   ulong uVar49;
  62.   undefined8 uVar50;
  63.   undefined8 uVar51;
  64.   undefined8 uVar52;
  65.   long *local_420;
  66.   long *plStack1048;
  67.   long *local_410;
  68.   undefined local_408 [8];
  69.   long *local_400;
  70.   long *local_3f8;
  71.   long *plStack1008;
  72.   long *plStack1000;
  73.   long *plStack992;
  74.   long *plStack984;
  75.   long *plStack976;
  76.   long *plStack968;
  77.   undefined8 local_3c0;
  78.   long *plStack952;
  79.   long *local_3b0;
  80.   undefined4 local_3a8;
  81.   undefined4 local_3a4;
  82.   undefined4 local_3a0;
  83.   undefined4 uStack924;
  84.   long *local_398;
  85.   undefined4 local_390;
  86.   undefined8 local_38c;
  87.   undefined4 local_384;
  88.   undefined4 local_380;
  89.   undefined4 local_37c;
  90.   undefined auStack888 [4];
  91.   char local_374 [258];
  92.   undefined2 uStack626;
  93.   char acStack624 [260];
  94.   char acStack364 [260];
  95.   long local_68;
  96.  
  97.   lVar11 = cRead_8(tpidr_el0);
  98.   local_68 = *(long *)(lVar11 + 0x28);
  99.   *(undefined4 *)(param_1 + 0x88) = param_4;
  100.   if (param_5 == 0) {
  101.     sVar16 = strlen(param_2);
  102.     FUN_001b6d10(param_1 + 0x1d8,param_2,sVar16);
  103. LAB_006ca838:
  104.     ppuVar17 = (undefined **)operator.new(0x90);
  105.     *ppuVar17 = (undefined *)&PTR_FUN_009d8820;
  106.     ppuVar17[1] = (undefined *)0x0;
  107.     ppuVar17[0xe] = (undefined *)0x0;
  108.     ppuVar17[0xf] = (undefined *)0x0;
  109.     ppuVar17[0xc] = (undefined *)0x0;
  110.     ppuVar17[0xd] = (undefined *)0x0;
  111.     ppuVar17[0xb] = (undefined *)0x0;
  112.     ppuVar43 = ppuVar17 + 10;
  113.     *ppuVar43 = (undefined *)0x0;
  114.     ppuVar17[3] = (undefined *)0x0;
  115.     ppuVar17[4] = (undefined *)0x0;
  116.     ppuVar17[2] = (undefined *)0x0;
  117.     ppuVar17[5] = (undefined *)0x0;
  118.     ppuVar17[6] = (undefined *)0xffffffffffffffff;
  119.     ppuVar17[7] = (undefined *)0x0;
  120.     ppuVar17[8] = (undefined *)0x0;
  121.     *(undefined4 *)(ppuVar17 + 9) = 0;
  122.     ppuVar31 = ppuVar17 + 0x10;
  123.     *ppuVar31 = (undefined *)0x0;
  124.     ppuVar17[0x11] = (undefined *)0x0;
  125.     if ((*(byte *)(param_1 + 0x1d8) & 1) == 0) {
  126.       lVar38 = param_1 + 0x1d9;
  127.     }
  128.     else {
  129.       lVar38 = *(long *)(param_1 + 0x1e8);
  130.     }
  131.     pcVar24 = "rb";
  132.     if (param_3 != 0) {
  133.       pcVar24 = "wb";
  134.     }
  135.     iVar14 = FUN_0023f6d0(ppuVar17,lVar38,pcVar24);
  136.     if (iVar14 == 0) {
  137.       puVar41 = *ppuVar17;
  138. LAB_006ca908:
  139.       (**(code **)(puVar41 + 8))(ppuVar17);
  140.       if (*(long *)(lVar11 + 0x28) == local_68) {
  141.         return 0;
  142.       }
  143.       goto LAB_006ca924;
  144.     }
  145.     getcwd((char *)(param_1 + 0x8c),0x104);
  146.     FUN_006c7e70(param_1);
  147.     ppuVar32 = *(undefined ***)(param_1 + 0x78);
  148.     if (ppuVar32 == *(undefined ***)(param_1 + 0x80)) {
  149.       pvVar42 = *(void **)(param_1 + 0x70);
  150.       ppuVar32 = (undefined **)((long)ppuVar32 - (long)pvVar42);
  151.       uVar40 = ((long)ppuVar32 >> 3) + 1;
  152.       if (uVar40 >> 0x3d != 0) {
  153. LAB_006cb910:
  154.                     /* WARNING: Subroutine does not return */
  155.         abort();
  156.       }
  157.       ppuVar18 = (undefined **)((long)*(undefined ***)(param_1 + 0x80) - (long)pvVar42);
  158.       if ((ulong)((long)ppuVar18 >> 3) < 0xfffffffffffffff) {
  159.         uVar37 = (long)ppuVar18 >> 2;
  160.         if (uVar40 <= uVar37) {
  161.           uVar40 = uVar37;
  162.         }
  163.         if (uVar40 != 0) {
  164.           if (uVar40 >> 0x3d != 0) goto LAB_006cb910;
  165.           goto LAB_006ca98c;
  166.         }
  167.         pvVar19 = (void *)0x0;
  168.       }
  169.       else {
  170.         uVar40 = 0x1fffffffffffffff;
  171. LAB_006ca98c:
  172.         pvVar19 = operator.new(uVar40 << 3);
  173.       }
  174.       ppuVar18 = (undefined **)((long)pvVar19 + ((long)ppuVar32 >> 3) * 8);
  175.       *ppuVar18 = (undefined *)ppuVar17;
  176.       if (0 < (long)ppuVar32) {
  177.         memcpy(pvVar19,pvVar42,(size_t)ppuVar32);
  178.       }
  179.       *(void **)(param_1 + 0x70) = pvVar19;
  180.       *(undefined ***)(param_1 + 0x78) = ppuVar18 + 1;
  181.       *(void **)(param_1 + 0x80) = (void *)((long)pvVar19 + uVar40 * 8);
  182.       if (pvVar42 != (void *)0x0) {
  183.         _ZdlPv(pvVar42);
  184.       }
  185.     }
  186.     else {
  187.       *ppuVar32 = (undefined *)ppuVar17;
  188.       *(long *)(param_1 + 0x78) = *(long *)(param_1 + 0x78) + 8;
  189.     }
  190.     ppuVar32 = ppuVar17 + 3;
  191.     __ptr = (undefined8 *)(param_1 + 0x38);
  192.     if (*ppuVar32 == (undefined *)0x0) {
  193.       sVar16 = fread(__ptr,0x1c,1,(FILE *)ppuVar17[2]);
  194.       if (sVar16 != 0) goto LAB_006caa34;
  195. LAB_006cae7c:
  196.       if ((*(byte *)ppuVar43 & 1) == 0) {
  197.         puVar41 = (undefined *)((long)ppuVar17 + 0x51);
  198.       }
  199.       else {
  200.         puVar41 = ppuVar17[0xc];
  201.       }
  202.       lVar38 = *DAT_00a09f28;
  203.       pcVar24 = "%s Header Wrong!!\n";
  204.     }
  205.     else {
  206.       puVar25 = (undefined8 *)ppuVar17[4];
  207.       uVar44 = *(undefined8 *)((long)puVar25 + 0xc);
  208.       *(undefined8 *)(param_1 + 0x4c) = *(undefined8 *)((long)puVar25 + 0x14);
  209.       *(undefined8 *)(param_1 + 0x44) = uVar44;
  210.       uVar44 = *puVar25;
  211.       *(undefined8 *)(param_1 + 0x40) = puVar25[1];
  212.       *__ptr = uVar44;
  213.       ppuVar17[4] = (undefined *)((long)puVar25 + 0x1c);
  214. LAB_006caa34:
  215.       if (*(int *)__ptr == 0x1e2393f) {
  216.         if ((param_5 != 0) && (1 < *(int *)(param_1 + 0x4c))) {
  217.           uVar40 = 1;
  218.           do {
  219.             while( true ) {
  220.               snprintf(acStack364,0x104,"%s%02d%s",local_374 + 0x104,uVar40,unaff_x20);
  221.               ppuVar18 = (undefined **)operator.new(0x90);
  222.               ppuVar18[4] = (undefined *)0x0;
  223.               ppuVar18[5] = (undefined *)0x0;
  224.               ppuVar18[2] = (undefined *)0x0;
  225.               ppuVar18[3] = (undefined *)0x0;
  226.               *ppuVar18 = (undefined *)&PTR_FUN_009d8820;
  227.               ppuVar18[1] = (undefined *)0x0;
  228.               ppuVar18[0xe] = (undefined *)0x0;
  229.               ppuVar18[0xf] = (undefined *)0x0;
  230.               ppuVar18[0xc] = (undefined *)0x0;
  231.               ppuVar18[0xd] = (undefined *)0x0;
  232.               ppuVar18[10] = (undefined *)0x0;
  233.               ppuVar18[0xb] = (undefined *)0x0;
  234.               ppuVar18[7] = (undefined *)0x0;
  235.               ppuVar18[8] = (undefined *)0x0;
  236.               ppuVar18[6] = (undefined *)0xffffffffffffffff;
  237.               *(undefined4 *)(ppuVar18 + 9) = 0;
  238.               ppuVar18[0x10] = (undefined *)0x0;
  239.               ppuVar18[0x11] = (undefined *)0x0;
  240.               iVar14 = FUN_0023f6d0(ppuVar18,acStack364,pcVar24);
  241.               if (iVar14 == 0) {
  242.                 FUN_006c7e70(param_1);
  243.                 puVar41 = *ppuVar18;
  244.                 ppuVar17 = ppuVar18;
  245.                 goto LAB_006ca908;
  246.               }
  247.               ppuVar33 = *(undefined ***)(param_1 + 0x78);
  248.               if (ppuVar33 == *(undefined ***)(param_1 + 0x80)) break;
  249.               *ppuVar33 = (undefined *)ppuVar18;
  250.               *(long *)(param_1 + 0x78) = *(long *)(param_1 + 0x78) + 8;
  251.               uVar3 = (int)uVar40 + 1;
  252.               uVar40 = (ulong)uVar3;
  253.               if (*(int *)(param_1 + 0x4c) <= (int)uVar3) goto LAB_006cabf0;
  254.             }
  255.             pvVar42 = *(void **)(param_1 + 0x70);
  256.             ppuVar33 = (undefined **)((long)ppuVar33 - (long)pvVar42);
  257.             uVar37 = ((long)ppuVar33 >> 3) + 1;
  258.             if (uVar37 >> 0x3d != 0) goto LAB_006cb910;
  259.             ppuVar26 = (undefined **)((long)*(undefined ***)(param_1 + 0x80) - (long)pvVar42);
  260.             if ((ulong)((long)ppuVar26 >> 3) < 0xfffffffffffffff) {
  261.               uVar39 = (long)ppuVar26 >> 2;
  262.               if (uVar37 <= uVar39) {
  263.                 uVar37 = uVar39;
  264.               }
  265.               if (uVar37 != 0) {
  266.                 if (uVar37 >> 0x3d == 0) goto LAB_006cab5c;
  267.                 goto LAB_006cb910;
  268.               }
  269.               pvVar19 = (void *)0x0;
  270.             }
  271.             else {
  272.               uVar37 = 0x1fffffffffffffff;
  273. LAB_006cab5c:
  274.               pvVar19 = operator.new(uVar37 << 3);
  275.             }
  276.             ppuVar26 = (undefined **)((long)pvVar19 + ((long)ppuVar33 >> 3) * 8);
  277.             *ppuVar26 = (undefined *)ppuVar18;
  278.             if (0 < (long)ppuVar33) {
  279.               memcpy(pvVar19,pvVar42,(size_t)ppuVar33);
  280.             }
  281.             *(void **)(param_1 + 0x70) = pvVar19;
  282.             *(undefined ***)(param_1 + 0x78) = ppuVar26 + 1;
  283.             *(void **)(param_1 + 0x80) = (void *)((long)pvVar19 + uVar37 * 8);
  284.             if (pvVar42 != (void *)0x0) {
  285.               _ZdlPv(pvVar42);
  286.             }
  287.             uVar3 = (int)uVar40 + 1;
  288.             uVar40 = (ulong)uVar3;
  289.           } while ((int)uVar3 < *(int *)(param_1 + 0x4c));
  290.         }
  291. LAB_006cabf0:
  292.         if (*ppuVar32 == (undefined *)0x0) {
  293.           if ((FILE *)ppuVar17[2] != (FILE *)0x0) {
  294.             iVar14 = fseek((FILE *)ppuVar17[2],(long)*(int *)(param_1 + 0x40),0);
  295.             if (iVar14 == 0) goto LAB_006cac08;
  296.             if ((FILE *)ppuVar17[2] != (FILE *)0x0) {
  297.               fclose((FILE *)ppuVar17[2]);
  298.               ppuVar17[2] = (undefined *)0x0;
  299.             }
  300.             if (ppuVar17[0x11] != (undefined *)0x0) {
  301.               AAssetDir_close();
  302.               ppuVar17[0x11] = (undefined *)0x0;
  303.             }
  304.             if (*ppuVar31 != (undefined *)0x0) {
  305.               AAsset_close();
  306.               *ppuVar31 = (undefined *)0x0;
  307.             }
  308.             *ppuVar32 = (undefined *)0x0;
  309.             ppuVar17[4] = (undefined *)0x0;
  310.             ppuVar17[5] = (undefined *)0x0;
  311.           }
  312.           if ((*(byte *)ppuVar43 & 1) == 0) {
  313.             puVar41 = (undefined *)((long)ppuVar17 + 0x51);
  314.           }
  315.           else {
  316.             puVar41 = ppuVar17[0xc];
  317.           }
  318.           lVar38 = *DAT_00a09f28;
  319.           pcVar24 = "%s Seek Failed!!\n";
  320.         }
  321.         else {
  322.           ppuVar17[4] = *ppuVar32 + *(int *)(param_1 + 0x40);
  323. LAB_006cac08:
  324.           uVar3 = *(uint *)(param_1 + 0x48) ^ 0x771;
  325.           uVar40 = SEXT48((int)uVar3);
  326.           *(uint *)(param_1 + 0x48) = uVar3;
  327.           __ptr_00 = (uint *)_Znam(uVar40);
  328.           if (*ppuVar32 == (undefined *)0x0) {
  329.             sVar16 = fread(__ptr_00,uVar40,1,(FILE *)ppuVar17[2]);
  330.             if (sVar16 == 0) goto LAB_006cae7c;
  331.             uVar40 = SEXT48(*(int *)(param_1 + 0x48));
  332.           }
  333.           else {
  334.             puVar41 = ppuVar17[4];
  335.             memcpy(__ptr_00,puVar41,uVar40);
  336.             ppuVar17[4] = puVar41 + uVar40;
  337.           }
  338.           iVar14 = *(int *)(param_1 + 0x44);
  339.           iVar15 = FUN_001b747c(__ptr_00,uVar40);
  340.           if (iVar14 == iVar15) {
  341.             uVar3 = *(uint *)(param_1 + 0x48);
  342.             uVar8 = uVar3 + 3;
  343.             if (-1 < (int)uVar3) {
  344.               uVar8 = uVar3;
  345.             }
  346.             iVar14 = uVar3 - (uVar8 & 0xfffffffc);
  347.             puVar36 = __ptr_00;
  348.             if (3 < (int)uVar3) {
  349.               uVar8 = (int)uVar8 >> 2;
  350.               uVar10 = uVar8 - 1;
  351.               uVar40 = (ulong)uVar10;
  352.               if ((uVar40 + 1 < 8) || ((uVar3 & 0xff) + (uVar10 & 0xff) >> 8 != 0)) {
  353. LAB_006cada0:
  354.                 lVar38 = 0;
  355.                 uVar37 = (ulong)uVar3;
  356. LAB_006cadac:
  357.                 iVar15 = uVar8 - (int)lVar38;
  358.                 do {
  359.                   uVar39 = uVar37 & 0xff;
  360.                   iVar15 = iVar15 + -1;
  361.                   uVar37 = (ulong)((int)uVar37 + 1);
  362.                   *puVar36 = (&DAT_009fd314)[uVar39] ^ *puVar36;
  363.                   puVar36 = puVar36 + 1;
  364.                 } while (iVar15 != 0);
  365.               }
  366.               else {
  367.                 lVar38 = 0;
  368.                 uVar37 = (ulong)uVar3;
  369.                 if (0xff < uVar10) goto LAB_006cadac;
  370.                 if ((__ptr_00 < &DAT_009fd318 + uVar40 + (uVar3 & 0xff)) &&
  371.                    (&DAT_009fd314 + (uVar3 & 0xff) < __ptr_00 + uVar40 + 1)) goto LAB_006cada0;
  372.                 uVar7 = uVar8 & 7;
  373.                 lVar38 = (uVar40 + 1) - (ulong)uVar7;
  374.                 lVar22 = 0;
  375.                 puVar23 = (ulong *)(__ptr_00 + 4);
  376.                 puVar36 = __ptr_00 + lVar38;
  377.                 uVar37 = (ulong)(uVar3 + (int)lVar38);
  378.                 do {
  379.                   uVar39 = (ulong)(byte)((char)uVar3 + (char)lVar22);
  380.                   uVar46 = puVar23[-1];
  381.                   uVar45 = puVar23[-2];
  382.                   uVar49 = puVar23[1];
  383.                   uVar48 = *puVar23;
  384.                   uVar50 = *(undefined8 *)(&DAT_009fd31c + uVar39);
  385.                   uVar44 = *(undefined8 *)(&DAT_009fd314 + uVar39);
  386.                   uVar52 = *(undefined8 *)(&DAT_009fd32c + uVar39);
  387.                   uVar51 = *(undefined8 *)(&DAT_009fd324 + uVar39);
  388.                   lVar22 = lVar22 + 8;
  389.                   puVar23[-1] = CONCAT17((byte)((ulong)uVar50 >> 0x38) ^
  390.                                          (byte)((uVar46 & 0xffffff0000000000) >> 0x38),
  391.                                          CONCAT16((byte)((ulong)uVar50 >> 0x30) ^
  392.                                                   (byte)((uVar46 & 0xffffff0000000000) >> 0x30),
  393.                                                   CONCAT15((byte)((ulong)uVar50 >> 0x28) ^
  394.                                                            (byte)(uVar46 >> 0x28),
  395.                                                            CONCAT14((byte)((ulong)uVar50 >> 0x20) ^
  396.                                                                     (byte)(uVar46 >> 0x20),
  397.                                                                     CONCAT13((byte)((ulong)uVar50 >>
  398.                                                                                    0x18) ^
  399.                                                                              (byte)(uVar46 >> 0x18),
  400.                                                                              CONCAT12((byte)((ulong)
  401.                                                   uVar50 >> 0x10) ^ (byte)(uVar46 >> 0x10),
  402.                                                   CONCAT11((byte)((ulong)uVar50 >> 8) ^
  403.                                                            (byte)(uVar46 >> 8),
  404.                                                            (byte)uVar50 ^ (byte)uVar46)))))));
  405.                   puVar23[-2] = CONCAT17((byte)((ulong)uVar44 >> 0x38) ^
  406.                                          (byte)((uVar45 & 0xffffff0000000000) >> 0x38),
  407.                                          CONCAT16((byte)((ulong)uVar44 >> 0x30) ^
  408.                                                   (byte)((uVar45 & 0xffffff0000000000) >> 0x30),
  409.                                                   CONCAT15((byte)((ulong)uVar44 >> 0x28) ^
  410.                                                            (byte)(uVar45 >> 0x28),
  411.                                                            CONCAT14((byte)((ulong)uVar44 >> 0x20) ^
  412.                                                                     (byte)(uVar45 >> 0x20),
  413.                                                                     CONCAT13((byte)((ulong)uVar44 >>
  414.                                                                                    0x18) ^
  415.                                                                              (byte)(uVar45 >> 0x18),
  416.                                                                              CONCAT12((byte)((ulong)
  417.                                                   uVar44 >> 0x10) ^ (byte)(uVar45 >> 0x10),
  418.                                                   CONCAT11((byte)((ulong)uVar44 >> 8) ^
  419.                                                            (byte)(uVar45 >> 8),
  420.                                                            (byte)uVar44 ^ (byte)uVar45)))))));
  421.                   puVar23[1] = CONCAT17((byte)((ulong)uVar52 >> 0x38) ^
  422.                                         (byte)((uVar49 & 0xffffff0000000000) >> 0x38),
  423.                                         CONCAT16((byte)((ulong)uVar52 >> 0x30) ^
  424.                                                  (byte)((uVar49 & 0xffffff0000000000) >> 0x30),
  425.                                                  CONCAT15((byte)((ulong)uVar52 >> 0x28) ^
  426.                                                           (byte)(uVar49 >> 0x28),
  427.                                                           CONCAT14((byte)((ulong)uVar52 >> 0x20) ^
  428.                                                                    (byte)(uVar49 >> 0x20),
  429.                                                                    CONCAT13((byte)((ulong)uVar52 >>
  430.                                                                                   0x18) ^
  431.                                                                             (byte)(uVar49 >> 0x18),
  432.                                                                             CONCAT12((byte)((ulong)
  433.                                                   uVar52 >> 0x10) ^ (byte)(uVar49 >> 0x10),
  434.                                                   CONCAT11((byte)((ulong)uVar52 >> 8) ^
  435.                                                            (byte)(uVar49 >> 8),
  436.                                                            (byte)uVar52 ^ (byte)uVar49)))))));
  437.                   *puVar23 = CONCAT17((byte)((ulong)uVar51 >> 0x38) ^
  438.                                       (byte)((uVar48 & 0xffffff0000000000) >> 0x38),
  439.                                       CONCAT16((byte)((ulong)uVar51 >> 0x30) ^
  440.                                                (byte)((uVar48 & 0xffffff0000000000) >> 0x30),
  441.                                                CONCAT15((byte)((ulong)uVar51 >> 0x28) ^
  442.                                                         (byte)(uVar48 >> 0x28),
  443.                                                         CONCAT14((byte)((ulong)uVar51 >> 0x20) ^
  444.                                                                  (byte)(uVar48 >> 0x20),
  445.                                                                  CONCAT13((byte)((ulong)uVar51 >>
  446.                                                                                 0x18) ^
  447.                                                                           (byte)(uVar48 >> 0x18),
  448.                                                                           CONCAT12((byte)((ulong)
  449.                                                   uVar51 >> 0x10) ^ (byte)(uVar48 >> 0x10),
  450.                                                   CONCAT11((byte)((ulong)uVar51 >> 8) ^
  451.                                                            (byte)(uVar48 >> 8),
  452.                                                            (byte)uVar51 ^ (byte)uVar48)))))));
  453.                   puVar23 = puVar23 + 4;
  454.                 } while ((uVar40 + 1) - (ulong)uVar7 != lVar22);
  455.                 if (uVar7 != 0) goto LAB_006cadac;
  456.               }
  457.               puVar36 = __ptr_00 + uVar40 + 1;
  458.               uVar3 = uVar3 + uVar10 + 1;
  459.             }
  460.             if (0 < iVar14) {
  461.               do {
  462.                 uVar40 = (ulong)uVar3;
  463.                 iVar14 = iVar14 + -1;
  464.                 uVar3 = uVar3 + 1;
  465.                 *(byte *)puVar36 = *(byte *)puVar36 ^ (byte)(&DAT_009fd314)[uVar40 & 0xff];
  466.                 puVar36 = (uint *)((long)puVar36 + 1);
  467.               } while (iVar14 != 0);
  468.             }
  469.             if (0 < *(int *)(param_1 + 0x3c)) {
  470.               plVar4 = (long *)(param_1 + 0x10);
  471.               pplVar5 = (long **)(param_1 + 0x20);
  472.               __dest = (long *)((ulong)&local_3c0 | 1);
  473.               plVar34 = (long *)((ulong)&local_420 | 1);
  474.               iVar14 = 0;
  475.               puVar36 = __ptr_00;
  476. LAB_006caf70:
  477.               local_3c0 = (long *)0x0;
  478.               plStack952 = (long *)0x0;
  479.               local_3b0 = (long *)0x0;
  480.               uVar40 = 0;
  481.               do {
  482.                 uVar37 = uVar40 + 1;
  483.                 local_374[uVar40] = *(char *)((long)puVar36 + uVar40);
  484.                 if (0x103 < uVar37) break;
  485.                 pcVar24 = (char *)((long)puVar36 + uVar40);
  486.                 uVar40 = uVar37;
  487.               } while (*pcVar24 != '\0');
  488.               plVar20 = (long *)strlen(local_374);
  489.               if (plVar20 < &DAT_00000017) {
  490.                 if (plVar20 != (long *)0x0) {
  491.                   memcpy(__dest,local_374,(size_t)plVar20);
  492.                 }
  493.                 plVar28 = (long *)0x0;
  494.                 *(undefined *)((long)register0x00000008 + -0x3bf + (long)plVar20) = 0;
  495.                 local_3c0 = (long *)((ulong)local_3c0 & 0xffffffffffffff00 |
  496.                                     (ulong)(byte)((int)plVar20 << 1));
  497.               }
  498.               else {
  499.                 if ((undefined *)0xffffffffffffffd8 < (undefined *)((long)plVar20 + -0x16))
  500.                 goto LAB_006cb910;
  501.                 plVar28 = plVar20;
  502.                 if (plVar20 < (long *)0x2d) {
  503.                   plVar28 = (long *)&DAT_0000002c;
  504.                 }
  505.                 uVar40 = 0x17;
  506.                 if (&DAT_00000016 < plVar28) {
  507.                   uVar40 = (ulong)(plVar28 + 2) & 0xfffffffffffffff0;
  508.                 }
  509.                 plVar21 = (long *)operator.new(uVar40);
  510.                 memcpy(plVar21,local_374,(size_t)plVar20);
  511.                 plVar28 = (long *)(uVar40 | 1);
  512.                 *(undefined *)((long)plVar21 + (long)plVar20) = 0;
  513.                 local_3c0 = plVar28;
  514.                 plStack952 = plVar20;
  515.                 local_3b0 = plVar21;
  516.               }
  517.               puVar2 = (undefined4 *)((long)puVar36 + (uVar37 & 0xffffffff));
  518.               local_3a8 = *puVar2;
  519.               local_3a4 = puVar2[1];
  520.               local_3a0 = puVar2[2];
  521.               local_390 = puVar2[3];
  522.               local_38c = *(undefined8 *)(puVar2 + 4);
  523.               local_384 = puVar2[6];
  524.               local_380 = puVar2[7];
  525.               local_37c = puVar2[8];
  526.               local_398 = (long *)0x0;
  527.               plVar20 = __dest;
  528.               if (((ulong)plVar28 & 1) != 0) {
  529.                 plVar20 = local_3b0;
  530.               }
  531.               iVar15 = strcmp((char *)plVar20,"dkempty");
  532.               plVar21 = local_3b0;
  533.               plVar28 = plStack952;
  534.               if (iVar15 == 0) {
  535.                 pplVar35 = *(long ***)(param_1 + 0x60);
  536.                 if (pplVar35 == *(long ***)(param_1 + 0x68)) {
  537.                   FUN_006cf370(param_1 + 0x58,&local_3c0);
  538.                   if (((ulong)local_3c0 & 1) != 0) goto LAB_006cb754;
  539.                   goto LAB_006cb788;
  540.                 }
  541.                 pplVar35[1] = (long *)0x0;
  542.                 pplVar35[2] = (long *)0x0;
  543.                 *pplVar35 = (long *)0x0;
  544.                 if (((ulong)local_3c0 & 1) == 0) {
  545.                   pplVar35[2] = local_3b0;
  546.                   pplVar35[1] = plStack952;
  547.                   *pplVar35 = local_3c0;
  548.                 }
  549.                 else {
  550.                   if (&DAT_ffffffffffffffef < plStack952) goto LAB_006cb910;
  551.                   if (&DAT_00000016 < plStack952) {
  552.                     plVar20 = plStack952 + 2;
  553.                     plVar27 = (long *)operator.new((ulong)plVar20 & 0xfffffffffffffff0);
  554.                     pplVar35[1] = plVar28;
  555.                     pplVar35[2] = plVar27;
  556.                     *pplVar35 = (long *)((ulong)plVar20 & 0xfffffffffffffff0 | 1);
  557. LAB_006cb5c8:
  558.                     memcpy(plVar27,plVar21,(size_t)plVar28);
  559.                   }
  560.                   else {
  561.                     plVar27 = (long *)((long)pplVar35 + 1);
  562.                     *(char *)pplVar35 = (char)((int)plStack952 << 1);
  563.                     if (plStack952 != (long *)0x0) goto LAB_006cb5c8;
  564.                   }
  565.                   *(undefined *)((long)plVar27 + (long)plVar28) = 0;
  566.                 }
  567.                 pplVar35[8] = (long *)CONCAT44(local_37c,local_380);
  568.                 pplVar35[7] = (long *)CONCAT44(local_384,local_38c._4_4_);
  569.                 pplVar35[6] = (long *)CONCAT84(local_38c,local_390);
  570.                 pplVar35[5] = local_398;
  571.                 pplVar35[4] = (long *)CONCAT44(uStack924,local_3a0);
  572.                 pplVar35[3] = (long *)CONCAT44(local_3a4,local_3a8);
  573.                 *(long *)(param_1 + 0x60) = *(long *)(param_1 + 0x60) + 0x48;
  574.                 goto joined_r0x006cb610;
  575.               }
  576.               sVar16 = strlen((char *)plVar20);
  577.               memset(local_374,0,0x104);
  578.               if (0 < (int)sVar16) {
  579.                 uVar40 = 0;
  580.                 do {
  581.                   cVar13 = *(char *)((long)plVar20 + uVar40);
  582.                   if (-1 < cVar13) {
  583.                     uVar3 = (int)cVar13 & 0xff;
  584.                     iVar15 = isupper(uVar3);
  585.                     if (iVar15 != 0) {
  586.                       iVar15 = _tolower(uVar3);
  587.                       cVar13 = (char)iVar15;
  588.                     }
  589.                   }
  590.                   local_374[uVar40] = cVar13;
  591.                   uVar40 = uVar40 + 1;
  592.                 } while ((uVar40 < 0x104) && ((long)uVar40 < (long)(int)sVar16));
  593.               }
  594.               local_420 = (long *)0x0;
  595.               plStack1048 = (long *)0x0;
  596.               local_410 = (long *)0x0;
  597.               plVar20 = (long *)strlen(local_374);
  598.               if (plVar20 < &DAT_fffffffffffffff0) {
  599.                 if (&DAT_00000016 < plVar20) {
  600.                   plVar28 = (long *)operator.new((ulong)(plVar20 + 2) & 0xfffffffffffffff0);
  601.                   local_420 = (long *)((ulong)(plVar20 + 2) & 0xfffffffffffffff0 | 1);
  602.                   plStack1048 = plVar20;
  603.                   local_410 = plVar28;
  604. LAB_006cb18c:
  605.                   memcpy(plVar28,local_374,(size_t)plVar20);
  606.                 }
  607.                 else {
  608.                   local_420 = (long *)((ulong)local_420 & 0xffffffffffffff00 |
  609.                                       (ulong)(byte)((int)plVar20 << 1));
  610.                   plVar28 = plVar34;
  611.                   if (plVar20 != (long *)0x0) goto LAB_006cb18c;
  612.                 }
  613.                 plVar27 = local_3b0;
  614.                 plVar21 = plStack952;
  615.                 *(undefined *)((long)plVar28 + (long)plVar20) = 0;
  616.                 local_400 = (long *)0x0;
  617.                 local_3f8 = (long *)0x0;
  618.                 local_408 = (long *)0x0;
  619.                 if (((ulong)local_3c0 & 1) == 0) {
  620.                   local_3f8 = local_3b0;
  621.                   local_400 = plStack952;
  622.                   local_408 = local_3c0;
  623.                   plVar21 = plVar20;
  624.                 }
  625.                 else {
  626.                   if (&DAT_ffffffffffffffef < plStack952) goto LAB_006cb910;
  627.                   if (&DAT_00000016 < plStack952) {
  628.                     plVar20 = plStack952 + 2;
  629.                     plVar28 = (long *)operator.new((ulong)plVar20 & 0xfffffffffffffff0);
  630.                     local_408 = (long *)((ulong)plVar20 & 0xfffffffffffffff0 | 1);
  631.                     local_400 = plVar21;
  632.                     local_3f8 = plVar28;
  633. LAB_006cb214:
  634.                     memcpy(plVar28,plVar27,(size_t)plVar21);
  635.                   }
  636.                   else {
  637.                     local_408 = (long *)(ulong)(byte)((int)plStack952 << 1);
  638.                     plVar28 = (long *)(local_408 + 1);
  639.                     if (plStack952 != (long *)0x0) goto LAB_006cb214;
  640.                   }
  641.                   *(undefined *)((long)plVar28 + (long)plVar21) = 0;
  642.                 }
  643.                 plStack984 = (long *)CONCAT84(local_38c,local_390);
  644.                 plStack968 = (long *)CONCAT44(local_37c,local_380);
  645.                 plStack976 = (long *)CONCAT44(local_384,local_38c._4_4_);
  646.                 plStack1000 = (long *)CONCAT44(uStack924,local_3a0);
  647.                 plStack1008 = (long *)CONCAT44(local_3a4,local_3a8);
  648.                 plStack992 = local_398;
  649.                 plVar20 = plVar34;
  650.                 plVar28 = (long *)((ulong)local_420 >> 1 & 0x7f);
  651.                 if (((ulong)local_420 & 1) != 0) {
  652.                   plVar20 = local_410;
  653.                   plVar28 = plStack1048;
  654.                 }
  655.                 plVar20 = (long *)FUN_004eeb9c(auStack888,plVar20,plVar28);
  656.                 plVar28 = *(long **)(param_1 + 0x18);
  657.                 if (plVar28 != (long *)0x0) {
  658.                   uVar40 = (long)plVar28 - 1;
  659.                   if ((uVar40 & (ulong)plVar28) == 0) {
  660.                     plVar21 = (long *)(uVar40 & (ulong)plVar20);
  661.                     pplVar35 = *(long ***)(*plVar4 + (long)plVar21 * 8);
  662.                   }
  663.                   else {
  664.                     plVar21 = plVar20;
  665.                     if (plVar28 <= plVar20) {
  666.                       uVar37 = 0;
  667.                       if (plVar28 != (long *)0x0) {
  668.                         uVar37 = (ulong)plVar20 / (ulong)plVar28;
  669.                       }
  670.                       plVar21 = (long *)((long)plVar20 - uVar37 * (long)plVar28);
  671.                     }
  672.                     pplVar35 = *(long ***)(*plVar4 + (long)plVar21 * 8);
  673.                   }
  674.                   if ((pplVar35 != (long **)0x0) &&
  675.                      (pplVar35 = (long **)*pplVar35, pplVar35 != (long **)0x0)) {
  676.                     plVar27 = plVar34;
  677.                     plVar12 = (long *)((ulong)local_420 >> 1 & 0x7f);
  678.                     if (((ulong)local_420 & 1) != 0) {
  679.                       plVar27 = local_410;
  680.                       plVar12 = plStack1048;
  681.                     }
  682.                     if ((uVar40 & (ulong)plVar28) == 0) {
  683.                       if (plVar12 == (long *)0x0) {
  684.                         do {
  685.                           if ((pplVar35[1] != plVar20) &&
  686.                              ((long *)((ulong)pplVar35[1] & uVar40) != plVar21)) break;
  687.                           plVar27 = (long *)(ulong)(*(byte *)(pplVar35 + 2) >> 1);
  688.                           if ((*(byte *)(pplVar35 + 2) & 1) != 0) {
  689.                             plVar27 = pplVar35[3];
  690.                           }
  691.                           if (plVar27 == (long *)0x0) goto joined_r0x006caf68;
  692.                           pplVar35 = (long **)*pplVar35;
  693.                         } while (pplVar35 != (long **)0x0);
  694.                       }
  695.                       else {
  696.                         do {
  697.                           if ((pplVar35[1] != plVar20) &&
  698.                              ((long *)((ulong)pplVar35[1] & uVar40) != plVar21)) break;
  699.                           bVar9 = *(byte *)(pplVar35 + 2);
  700.                           plVar29 = (long *)(ulong)(bVar9 >> 1);
  701.                           if ((bVar9 & 1) != 0) {
  702.                             plVar29 = pplVar35[3];
  703.                           }
  704.                           if (plVar29 == plVar12) {
  705.                             if ((bVar9 & 1) == 0) {
  706.                               pcVar24 = (char *)((long)pplVar35 + 0x11);
  707.                               lVar38 = -(long)(long *)(ulong)(bVar9 >> 1);
  708.                               plVar29 = plVar27;
  709.                               while (*pcVar24 == *(char *)plVar29) {
  710.                                 pcVar24 = pcVar24 + 1;
  711.                                 lVar38 = lVar38 + 1;
  712.                                 plVar29 = (long *)((long)plVar29 + 1);
  713.                                 if (lVar38 == 0) goto joined_r0x006caf68;
  714.                               }
  715.                             }
  716.                             else {
  717.                               iVar15 = memcmp(pplVar35[4],plVar27,(size_t)plVar12);
  718.                               if (iVar15 == 0) goto joined_r0x006caf68;
  719.                             }
  720.                           }
  721.                           pplVar35 = (long **)*pplVar35;
  722.                         } while (pplVar35 != (long **)0x0);
  723.                       }
  724.                     }
  725.                     else {
  726.                       if (plVar12 == (long *)0x0) {
  727.                         do {
  728.                           plVar27 = pplVar35[1];
  729.                           if (plVar27 != plVar20) {
  730.                             if (plVar28 <= plVar27) {
  731.                               uVar40 = 0;
  732.                               if (plVar28 != (long *)0x0) {
  733.                                 uVar40 = (ulong)plVar27 / (ulong)plVar28;
  734.                               }
  735.                               plVar27 = (long *)((long)plVar27 - uVar40 * (long)plVar28);
  736.                             }
  737.                             if (plVar27 != plVar21) break;
  738.                           }
  739.                           uVar40 = (ulong)(*(byte *)(pplVar35 + 2) >> 1);
  740.                           if ((*(byte *)(pplVar35 + 2) & 1) != 0) {
  741.                             uVar40 = (ulong)pplVar35[3];
  742.                           }
  743.                           if (uVar40 == 0) goto joined_r0x006caf68;
  744.                           pplVar35 = (long **)*pplVar35;
  745.                         } while (pplVar35 != (long **)0x0);
  746.                       }
  747.                       else {
  748.                         do {
  749.                           plVar29 = pplVar35[1];
  750.                           if (plVar29 != plVar20) {
  751.                             if (plVar28 <= plVar29) {
  752.                               uVar40 = 0;
  753.                               if (plVar28 != (long *)0x0) {
  754.                                 uVar40 = (ulong)plVar29 / (ulong)plVar28;
  755.                               }
  756.                               plVar29 = (long *)((long)plVar29 - uVar40 * (long)plVar28);
  757.                             }
  758.                             if (plVar29 != plVar21) break;
  759.                           }
  760.                           bVar9 = *(byte *)(pplVar35 + 2);
  761.                           plVar29 = (long *)(ulong)(bVar9 >> 1);
  762.                           if ((bVar9 & 1) != 0) {
  763.                             plVar29 = pplVar35[3];
  764.                           }
  765.                           if (plVar29 == plVar12) {
  766.                             if ((bVar9 & 1) == 0) {
  767.                               pcVar24 = (char *)((long)pplVar35 + 0x11);
  768.                               lVar38 = -(long)(long *)(ulong)(bVar9 >> 1);
  769.                               plVar29 = plVar27;
  770.                               while (*pcVar24 == *(char *)plVar29) {
  771.                                 pcVar24 = pcVar24 + 1;
  772.                                 lVar38 = lVar38 + 1;
  773.                                 plVar29 = (long *)((long)plVar29 + 1);
  774.                                 if (lVar38 == 0) goto joined_r0x006caf68;
  775.                               }
  776.                             }
  777.                             else {
  778.                               iVar15 = memcmp(pplVar35[4],plVar27,(size_t)plVar12);
  779.                               if (iVar15 == 0) goto joined_r0x006caf68;
  780.                             }
  781.                           }
  782.                           pplVar35 = (long **)*pplVar35;
  783.                         } while (pplVar35 != (long **)0x0);
  784.                       }
  785.                     }
  786.                   }
  787.                 }
  788.                 pplVar35 = (long **)operator.new(0x70);
  789.                 plVar12 = local_410;
  790.                 plVar27 = plStack1048;
  791.                 pplVar35[2] = (long *)0x0;
  792.                 pplVar35[3] = (long *)0x0;
  793.                 pplVar35[4] = (long *)0x0;
  794.                 if (((ulong)local_420 & 1) == 0) {
  795.                   pplVar35[4] = local_410;
  796.                   pplVar35[3] = plStack1048;
  797.                   pplVar35[2] = local_420;
  798.                 }
  799.                 else {
  800.                   if (&DAT_ffffffffffffffef < plStack1048) goto LAB_006cb910;
  801.                   if (&DAT_00000016 < plStack1048) {
  802.                     plVar6 = plStack1048 + 2;
  803.                     plVar29 = (long *)operator.new((ulong)plVar6 & 0xfffffffffffffff0);
  804.                     pplVar35[3] = plVar27;
  805.                     pplVar35[4] = plVar29;
  806.                     pplVar35[2] = (long *)((ulong)plVar6 & 0xfffffffffffffff0 | 1);
  807. LAB_006cb43c:
  808.                     memcpy(plVar29,plVar12,(size_t)plVar27);
  809.                   }
  810.                   else {
  811.                     plVar29 = (long *)((long)pplVar35 + 0x11);
  812.                     *(char *)(pplVar35 + 2) = (char)((int)plStack1048 << 1);
  813.                     if (plStack1048 != (long *)0x0) goto LAB_006cb43c;
  814.                   }
  815.                   *(undefined *)((long)plVar29 + (long)plVar27) = 0;
  816.                 }
  817.                 pplVar35[7] = local_3f8;
  818.                 pplVar35[6] = local_400;
  819.                 pplVar35[5] = local_408;
  820.                 pplVar35[0xb] = plStack984;
  821.                 pplVar35[10] = plStack992;
  822.                 pplVar35[0xd] = plStack968;
  823.                 pplVar35[0xc] = plStack976;
  824.                 pplVar35[9] = plStack1000;
  825.                 pplVar35[8] = plStack1008;
  826.                 *pplVar35 = (long *)0x0;
  827.                 pplVar35[1] = plVar20;
  828.                 fVar47 = (float)(unkuint9)(*(long *)(param_1 + 0x28) + 1);
  829.                 if ((plVar28 == (long *)0x0) ||
  830.                    (*(float *)(param_1 + 0x30) * (float)ZEXT89(plVar28) < fVar47)) {
  831.                   if (plVar28 < (long *)0x3) {
  832.                     uVar40 = 1;
  833.                   }
  834.                   else {
  835.                     uVar40 = (ulong)(((long)plVar28 - 1U & (ulong)plVar28) != 0);
  836.                   }
  837.                   uVar40 = uVar40 | (long)plVar28 << 1;
  838.                   uVar37 = (ulong)(fVar47 / *(float *)(param_1 + 0x30));
  839.                   if (uVar37 <= uVar40) {
  840.                     uVar37 = uVar40;
  841.                   }
  842.                   FUN_006cefd4(plVar4,uVar37);
  843.                   plVar28 = *(long **)(param_1 + 0x18);
  844.                   if (((long)plVar28 - 1U & (ulong)plVar28) != 0) {
  845.                     plVar21 = plVar20;
  846.                     if (plVar28 <= plVar20) {
  847.                       uVar40 = 0;
  848.                       if (plVar28 != (long *)0x0) {
  849.                         uVar40 = (ulong)plVar20 / (ulong)plVar28;
  850.                       }
  851.                       plVar21 = (long *)((long)plVar20 - uVar40 * (long)plVar28);
  852.                     }
  853.                     goto LAB_006cb508;
  854.                   }
  855.                   plVar21 = (long *)((long)plVar28 - 1U & (ulong)plVar20);
  856.                   lVar38 = *plVar4;
  857.                   pplVar30 = *(long ***)(lVar38 + (long)plVar21 * 8);
  858.                   if (pplVar30 != (long **)0x0) goto LAB_006cb518;
  859. LAB_006cb568:
  860.                   *pplVar35 = *pplVar5;
  861.                   *pplVar5 = (long *)pplVar35;
  862.                   *(long ***)(lVar38 + (long)plVar21 * 8) = pplVar5;
  863.                   if (*pplVar35 != (long *)0x0) {
  864.                     plVar20 = *(long **)((long)*pplVar35 + 8);
  865.                     if (((long)plVar28 - 1U & (ulong)plVar28) == 0) {
  866.                       plVar20 = (long *)((ulong)plVar20 & (long)plVar28 - 1U);
  867.                     }
  868.                     else {
  869.                       if (plVar28 <= plVar20) {
  870.                         uVar40 = 0;
  871.                         if (plVar28 != (long *)0x0) {
  872.                           uVar40 = (ulong)plVar20 / (ulong)plVar28;
  873.                         }
  874.                         plVar20 = (long *)((long)plVar20 - uVar40 * (long)plVar28);
  875.                       }
  876.                     }
  877.                     pplVar30 = (long **)(*plVar4 + (long)plVar20 * 8);
  878.                     goto LAB_006cb6e4;
  879.                   }
  880.                 }
  881.                 else {
  882. LAB_006cb508:
  883.                   lVar38 = *plVar4;
  884.                   pplVar30 = *(long ***)(lVar38 + (long)plVar21 * 8);
  885.                   if (pplVar30 == (long **)0x0) goto LAB_006cb568;
  886. LAB_006cb518:
  887.                   *pplVar35 = *pplVar30;
  888. LAB_006cb6e4:
  889.                   *pplVar30 = (long *)pplVar35;
  890.                 }
  891.                 bVar1 = false;
  892.                 *(long *)(param_1 + 0x28) = *(long *)(param_1 + 0x28) + 1;
  893.                 goto joined_r0x006caf68;
  894.               }
  895.               goto LAB_006cb910;
  896.             }
  897. LAB_006cb798:
  898.             _ZdaPv(__ptr_00);
  899.             if ((*(int *)(param_1 + 0x88) == 0) &&
  900.                (lVar38 = *(long *)(param_1 + 0x70), *(long *)(param_1 + 0x78) != lVar38)) {
  901.               uVar40 = 0;
  902.               uVar37 = 1;
  903.               do {
  904.                 lVar38 = *(long *)(lVar38 + uVar40 * 8);
  905.                 if (*(FILE **)(lVar38 + 0x10) != (FILE *)0x0) {
  906.                   fclose(*(FILE **)(lVar38 + 0x10));
  907.                   *(undefined8 *)(lVar38 + 0x10) = 0;
  908.                 }
  909.                 if (*(long *)(lVar38 + 0x88) != 0) {
  910.                   AAssetDir_close();
  911.                   *(undefined8 *)(lVar38 + 0x88) = 0;
  912.                 }
  913.                 if (*(long *)(lVar38 + 0x80) != 0) {
  914.                   AAsset_close();
  915.                   *(undefined8 *)(lVar38 + 0x80) = 0;
  916.                 }
  917.                 *(undefined8 *)(lVar38 + 0x20) = 0;
  918.                 *(undefined8 *)(lVar38 + 0x28) = 0;
  919.                 *(undefined8 *)(lVar38 + 0x18) = 0;
  920.                 lVar38 = *(long *)(param_1 + 0x70);
  921.                 bVar1 = uVar37 < (ulong)(*(long *)(param_1 + 0x78) - lVar38 >> 3);
  922.                 uVar40 = uVar37;
  923.                 uVar37 = (ulong)((int)uVar37 + 1);
  924.               } while (bVar1);
  925.             }
  926.             if (*(long *)(lVar11 + 0x28) == local_68) {
  927.               return 1;
  928.             }
  929.             goto LAB_006ca924;
  930.           }
  931.           if ((*(byte *)ppuVar43 & 1) == 0) {
  932.             puVar41 = (undefined *)((long)ppuVar17 + 0x51);
  933.           }
  934.           else {
  935.             puVar41 = ppuVar17[0xc];
  936.           }
  937.           lVar38 = *DAT_00a09f28;
  938.           pcVar24 = "%s File Modified!!\n";
  939.         }
  940.       }
  941.       else {
  942.         if ((*(byte *)ppuVar43 & 1) == 0) {
  943.           puVar41 = (undefined *)((long)ppuVar17 + 0x51);
  944.         }
  945.         else {
  946.           puVar41 = ppuVar17[0xc];
  947.         }
  948.         lVar38 = *DAT_00a09f28;
  949.         pcVar24 = "%s File Version Wrong!!\n";
  950.       }
  951.     }
  952.     (**(code **)(lVar38 + 200))(DAT_00a09f28,0,pcVar24,puVar41);
  953.     FUN_006c7e70(param_1);
  954.   }
  955.   else {
  956.     unaff_x20 = strrchr(param_2,0x2e);
  957.     if (unaff_x20 == (char *)0x0) {
  958.       snprintf(local_374 + 0x104,0x104,"%s",param_2);
  959.     }
  960.     else {
  961.       memset(local_374 + 0x104,0,0x104);
  962.       strncpy(local_374 + 0x104,param_2,(size_t)(unaff_x20 + -(long)param_2));
  963.     }
  964.     sVar16 = strlen(local_374 + 0x104);
  965.     if (3 < sVar16) {
  966.       *(undefined2 *)(local_374 + sVar16 + 0x102) = 0;
  967.       snprintf(acStack364,0x104,"%s%02d%s",local_374 + 0x104,0,unaff_x20);
  968.       sVar16 = strlen(acStack364);
  969.       FUN_001b6d10(param_1 + 0x1d8,acStack364,sVar16);
  970.       goto LAB_006ca838;
  971.     }
  972.   }
  973.   if (*(long *)(lVar11 + 0x28) == local_68) {
  974.     return 0;
  975.   }
  976. LAB_006ca924:
  977.                     /* WARNING: Subroutine does not return */
  978.   __stack_chk_fail();
  979. joined_r0x006caf68:
  980.   bVar1 = true;
  981. joined_r0x006caf68:
  982.   if (((ulong)local_408 & 1) != 0) {
  983.     _ZdlPv(local_3f8);
  984.   }
  985.   if (((ulong)local_420 & 1) != 0) {
  986.     _ZdlPv(local_410);
  987.   }
  988.   if (bVar1) {
  989.     plVar20 = __dest;
  990.     if (((ulong)local_3c0 & 1) != 0) {
  991.       plVar20 = local_3b0;
  992.     }
  993.     (**(code **)(*DAT_00a09f28 + 200))(DAT_00a09f28,0,"%s File Duplicated!\n",plVar20);
  994.   }
  995. joined_r0x006cb610:
  996.   if (((ulong)local_3c0 & 1) == 0) {
  997. LAB_006cb788:
  998.     puVar36 = puVar2 + 9;
  999.     iVar14 = iVar14 + 1;
  1000.     if (*(int *)(param_1 + 0x3c) <= iVar14) goto LAB_006cb798;
  1001.     goto LAB_006caf70;
  1002.   }
  1003. LAB_006cb754:
  1004.   puVar36 = puVar2 + 9;
  1005.   _ZdlPv(local_3b0);
  1006.   iVar14 = iVar14 + 1;
  1007.   if (*(int *)(param_1 + 0x3c) <= iVar14) goto LAB_006cb798;
  1008.   goto LAB_006caf70;
  1009. }
  1010.  
  1011.  
Advertisement
Add Comment
Please, Sign In to add comment