############ FUN_ 1800246e0 size=14313 ############

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

undefined8 *
FUN_1800246e0(longlong param_1,int param_2,longlong param_3,undefined4 param_4,int param_5,
             undefined8 param_6,undefined8 param_7)

{
  int iVar1;
  int iVar2;
  int iVar3;
  undefined4 uVar4;
  int iVar5;
  char cVar6;
  char cVar7;
  int iVar8;
  uint uVar9;
  uint uVar10;
  int iVar11;
  int iVar12;
  int iVar13;
  int iVar14;
  int iVar15;
  int iVar16;
  int iVar17;
  int iVar18;
  int iVar19;
  int iVar20;
  int iVar21;
  int iVar22;
  int iVar23;
  int iVar24;
  int iVar25;
  int iVar26;
  int iVar27;
  int iVar28;
  int iVar29;
  int iVar30;
  int iVar31;
  int iVar32;
  int iVar33;
  int iVar34;
  uint uVar35;
  int iVar36;
  int iVar37;
  int iVar38;
  int iVar39;
  int iVar40;
  int iVar41;
  int iVar42;
  uint uVar43;
  int iVar44;
  int iVar45;
  int iVar46;
  int iVar47;
  int iVar48;
  int iVar49;
  int iVar50;
  int iVar51;
  int iVar52;
  uint uVar53;
  int iVar54;
  int iVar55;
  int iVar56;
  int iVar57;
  int iVar58;
  int iVar59;
  int iVar60;
  int iVar61;
  int iVar62;
  int iVar63;
  int iVar64;
  int iVar65;
  int iVar66;
  int iVar67;
  int iVar68;
  int iVar69;
  uint uVar70;
  int iVar71;
  int iVar72;
  int iVar73;
  int iVar74;
  int iVar75;
  int iVar76;
  int iVar77;
  uint uVar78;
  int iVar79;
  int iVar80;
  int iVar81;
  int iVar82;
  int iVar83;
  undefined8 uVar84;
  undefined8 *local_c68;
  undefined8 *local_3e8;
  byte local_1b0;
  
  iVar3 = *(int *)(&DAT_181c5de7c + (longlong)param_2 * 4);
  iVar49 = param_2 - iVar3;
  if (iVar49 < 0x11) {
    *(undefined8 *)(param_1 + 0x38) = param_6;
    local_c68 = (undefined8 *)FUN_180023860(iVar49,param_3,param_4);
    iVar44 = 1 << ((byte)iVar49 & 0x1f);
    *(uint *)(param_1 + 0x1c) = iVar44 * 0x10 + 0x3fU & 0xffffffc0;
  }
  else {
    local_c68 = (undefined8 *)
                FUN_1800246e0(param_1,iVar49,param_3,param_4,param_5 + 1,param_6,param_7);
    iVar44 = 1 << ((byte)iVar49 & 0x1f);
  }
  uVar4 = *(undefined4 *)(&DAT_181c5dedc + (longlong)param_2 * 4);
  uVar43 = 0;
  local_3e8 = local_c68;
  *(undefined8 **)(param_1 + 0x78 + (longlong)param_5 * 8) = local_c68;
  if (0 < iVar44) {
    iVar5 = iVar44 * 2;
    iVar8 = iVar44 * 3;
    uVar53 = 1 << ((byte)uVar4 - (char)iVar3 & 0x1f);
    uVar9 = (int)((uVar53 - ((int)(uVar53 + 1) >> 0x1f)) + 1) >> 1;
    uVar10 = (iVar44 + uVar53) - 1;
    if (((uVar10 | uVar53) & 0xffffff00) == 0) {
      local_1b0 = (byte)uVar53;
      uVar10 = (uint)(byte)((ushort)uVar10 / (ushort)local_1b0);
    }
    else {
      uVar10 = (int)uVar10 / (int)uVar53;
    }
    iVar26 = 0;
    iVar25 = 0;
    iVar54 = 0;
    iVar57 = 0;
    iVar60 = 0;
    iVar65 = 0;
    iVar75 = iVar65;
    do {
      uVar35 = 1;
      iVar45 = -iVar49;
      iVar59 = iVar49;
      if (-iVar3 < 0) {
        do {
          iVar27 = iVar59 + 2;
          cVar6 = (char)(iVar45 + -2);
          cVar7 = (char)param_4;
          if (iVar27 == param_2) {
            iVar59 = 1 << ((byte)iVar27 & 0x1f);
            iVar64 = 1 << (cVar6 + cVar7 & 0x1fU);
            if (0 < (int)uVar35 >> 1) {
              iVar36 = iVar64 * iVar65;
              iVar32 = iVar64 * iVar75;
              iVar23 = (int)(((uint)(iVar59 >> 1) >> 0x1e) + iVar59) >> 2;
              iVar39 = iVar64 * iVar23;
              iVar28 = iVar64 + iVar36;
              iVar52 = iVar59 / 2;
              iVar31 = iVar64 * iVar52;
              iVar24 = (int)(((uint)(iVar59 * 3 >> 1) >> 0x1e) + iVar59 * 3) >> 2;
              iVar42 = iVar64 * iVar24;
              iVar2 = iVar64 * 2;
              iVar1 = iVar2 + iVar32;
              iVar46 = iVar59 * iVar64 - iVar32;
              iVar59 = iVar59 * iVar64 - iVar36;
              iVar51 = iVar64 * 4;
              uVar78 = 0;
              do {
                uVar70 = 0;
                if (0 < (int)uVar53) {
                  iVar66 = iVar64 * iVar5 * uVar78;
                  iVar63 = iVar64 * iVar44 * uVar78;
                  iVar50 = (iVar32 - iVar31) + iVar66;
                  iVar55 = (iVar36 - iVar31) + iVar63;
                  iVar56 = (iVar36 - iVar42) + iVar63;
                  iVar58 = (iVar32 - iVar42) + iVar66;
                  iVar61 = iVar66 - (iVar39 - iVar32);
                  iVar62 = iVar63 - (iVar39 - iVar36);
                  do {
                    iVar67 = uVar70 * 2 + iVar44 * uVar78 + iVar65;
                    if (iVar23 < iVar67) {
                      iVar68 = iVar2 * uVar70;
                      if (iVar52 < iVar67) {
                        if (iVar24 < iVar67) {
                          *local_3e8 = *(undefined8 *)(param_3 + (longlong)(iVar56 + iVar68) * 8);
                          uVar84 = *(undefined8 *)
                                    (param_3 + (longlong)((iVar59 - iVar63) - iVar68) * 8);
                        }
                        else {
                          uVar84 = *(undefined8 *)(param_3 + (longlong)-(iVar56 + iVar68) * 8);
                          *local_3e8 = CONCAT44((uint)((ulonglong)uVar84 >> 0x20) ^ _UNK_181c5df64,
                                                (uint)uVar84 ^ _DAT_181c5df60);
                          uVar84 = *(undefined8 *)(param_3 + (longlong)(iVar68 + iVar55) * 8);
                        }
                      }
                      else {
                        uVar84 = *(undefined8 *)(param_3 + (longlong)(iVar68 + iVar62) * 8);
                        *local_3e8 = CONCAT44((uint)((ulonglong)uVar84 >> 0x20) ^ _UNK_181c5df64,
                                              (uint)uVar84 ^ _DAT_181c5df60);
                        uVar84 = *(undefined8 *)(param_3 + (longlong)-(iVar68 + iVar55) * 8);
                        uVar84 = CONCAT44((uint)((ulonglong)uVar84 >> 0x20) ^ _UNK_181c5df64,
                                          (uint)uVar84 ^ _DAT_181c5df60);
                      }
                    }
                    else {
                      *local_3e8 = *(undefined8 *)
                                    (param_3 + (longlong)(int)-(iVar62 + iVar2 * uVar70) * 8);
                      uVar84 = *(undefined8 *)
                                (param_3 + (longlong)(int)(iVar36 + iVar63 + iVar2 * uVar70) * 8);
                      uVar84 = CONCAT44((uint)((ulonglong)uVar84 >> 0x20) ^ _UNK_181c5df64,
                                        (uint)uVar84 ^ _DAT_181c5df60);
                    }
                    iVar68 = iVar2 * uVar70;
                    iVar67 = iVar67 + 1;
                    local_3e8[2] = uVar84;
                    if (iVar23 < iVar67) {
                      if (iVar52 < iVar67) {
                        if (iVar24 < iVar67) {
                          local_3e8[1] = *(undefined8 *)
                                          (param_3 +
                                          (longlong)(iVar68 + (iVar28 - iVar42) + iVar63) * 8);
                          uVar84 = *(undefined8 *)
                                    (param_3 + (longlong)(((iVar59 - iVar64) - iVar63) - iVar68) * 8
                                    );
                        }
                        else {
                          uVar84 = *(undefined8 *)
                                    (param_3 +
                                    (longlong)-(iVar68 + iVar64 + (iVar36 - iVar42) + iVar63) * 8);
                          local_3e8[1] = CONCAT44((uint)((ulonglong)uVar84 >> 0x20) ^ _UNK_181c5df64
                                                  ,(uint)uVar84 ^ _DAT_181c5df60);
                          uVar84 = *(undefined8 *)
                                    (param_3 + (longlong)(iVar68 + (iVar28 - iVar31) + iVar63) * 8);
                        }
                      }
                      else {
                        uVar84 = *(undefined8 *)
                                  (param_3 + (longlong)(iVar68 + (iVar28 - iVar39) + iVar63) * 8);
                        local_3e8[1] = CONCAT44((uint)((ulonglong)uVar84 >> 0x20) ^ _UNK_181c5df64,
                                                (uint)uVar84 ^ _DAT_181c5df60);
                        uVar84 = *(undefined8 *)
                                  (param_3 +
                                  (longlong)-(iVar68 + iVar64 + (iVar36 - iVar31) + iVar63) * 8);
                        uVar84 = CONCAT44((uint)((ulonglong)uVar84 >> 0x20) ^ _UNK_181c5df64,
                                          (uint)uVar84 ^ _DAT_181c5df60);
                      }
                    }
                    else {
                      local_3e8[1] = *(undefined8 *)
                                      (param_3 +
                                      (longlong)((((iVar39 - iVar36) - iVar64) - iVar63) - iVar68) *
                                      8);
                      uVar84 = *(undefined8 *)(param_3 + (longlong)(iVar68 + iVar28 + iVar63) * 8);
                      uVar84 = CONCAT44((uint)((ulonglong)uVar84 >> 0x20) ^ _UNK_181c5df64,
                                        (uint)uVar84 ^ _DAT_181c5df60);
                    }
                    local_3e8[3] = uVar84;
                    iVar67 = uVar70 * 4 + iVar5 * uVar78 + iVar75;
                    if (iVar23 < iVar67) {
                      iVar68 = iVar51 * uVar70;
                      if (iVar52 < iVar67) {
                        if (iVar24 < iVar67) {
                          local_3e8[4] = *(undefined8 *)(param_3 + (longlong)(iVar58 + iVar68) * 8);
                          uVar84 = *(undefined8 *)
                                    (param_3 + (longlong)((iVar46 - iVar66) - iVar68) * 8);
                        }
                        else {
                          uVar84 = *(undefined8 *)(param_3 + (longlong)-(iVar58 + iVar68) * 8);
                          local_3e8[4] = CONCAT44((uint)((ulonglong)uVar84 >> 0x20) ^ _UNK_181c5df64
                                                  ,(uint)uVar84 ^ _DAT_181c5df60);
                          uVar84 = *(undefined8 *)(param_3 + (longlong)(iVar68 + iVar50) * 8);
                        }
                      }
                      else {
                        uVar84 = *(undefined8 *)(param_3 + (longlong)(iVar68 + iVar61) * 8);
                        local_3e8[4] = CONCAT44((uint)((ulonglong)uVar84 >> 0x20) ^ _UNK_181c5df64,
                                                (uint)uVar84 ^ _DAT_181c5df60);
                        uVar84 = *(undefined8 *)(param_3 + (longlong)-(iVar68 + iVar50) * 8);
                        uVar84 = CONCAT44((uint)((ulonglong)uVar84 >> 0x20) ^ _UNK_181c5df64,
                                          (uint)uVar84 ^ _DAT_181c5df60);
                      }
                    }
                    else {
                      local_3e8[4] = *(undefined8 *)
                                      (param_3 + (longlong)(int)-(iVar61 + iVar51 * uVar70) * 8);
                      uVar84 = *(undefined8 *)
                                (param_3 + (longlong)(int)(iVar32 + iVar66 + iVar51 * uVar70) * 8);
                      uVar84 = CONCAT44((uint)((ulonglong)uVar84 >> 0x20) ^ _UNK_181c5df64,
                                        (uint)uVar84 ^ _DAT_181c5df60);
                    }
                    iVar68 = iVar51 * uVar70;
                    iVar67 = iVar67 + 2;
                    local_3e8[6] = uVar84;
                    if (iVar23 < iVar67) {
                      if (iVar52 < iVar67) {
                        if (iVar24 < iVar67) {
                          local_3e8[5] = *(undefined8 *)
                                          (param_3 +
                                          (longlong)(iVar68 + (iVar1 - iVar42) + iVar66) * 8);
                          uVar84 = *(undefined8 *)
                                    (param_3 +
                                    (longlong)(((iVar46 + iVar64 * -2) - iVar66) - iVar68) * 8);
                        }
                        else {
                          uVar84 = *(undefined8 *)
                                    (param_3 +
                                    (longlong)-(iVar68 + (iVar32 - iVar42) + iVar2 + iVar66) * 8);
                          local_3e8[5] = CONCAT44((uint)((ulonglong)uVar84 >> 0x20) ^ _UNK_181c5df64
                                                  ,(uint)uVar84 ^ _DAT_181c5df60);
                          uVar84 = *(undefined8 *)
                                    (param_3 + (longlong)(iVar68 + (iVar1 - iVar31) + iVar66) * 8);
                        }
                      }
                      else {
                        uVar84 = *(undefined8 *)
                                  (param_3 + (longlong)(iVar68 + (iVar1 - iVar39) + iVar66) * 8);
                        local_3e8[5] = CONCAT44((uint)((ulonglong)uVar84 >> 0x20) ^ _UNK_181c5df64,
                                                (uint)uVar84 ^ _DAT_181c5df60);
                        uVar84 = *(undefined8 *)
                                  (param_3 +
                                  (longlong)-(iVar68 + (iVar32 - iVar31) + iVar2 + iVar66) * 8);
                        uVar84 = CONCAT44((uint)((ulonglong)uVar84 >> 0x20) ^ _UNK_181c5df64,
                                          (uint)uVar84 ^ _DAT_181c5df60);
                      }
                    }
                    else {
                      local_3e8[5] = *(undefined8 *)
                                      (param_3 +
                                      (longlong)
                                      ((((iVar39 - iVar32) + iVar64 * -2) - iVar66) - iVar68) * 8);
                      uVar84 = *(undefined8 *)(param_3 + (longlong)(iVar68 + iVar1 + iVar66) * 8);
                      uVar84 = CONCAT44((uint)((ulonglong)uVar84 >> 0x20) ^ _UNK_181c5df64,
                                        (uint)uVar84 ^ _DAT_181c5df60);
                    }
                    uVar70 = uVar70 + 1;
                    local_3e8[7] = uVar84;
                    local_3e8 = local_3e8 + 8;
                  } while (uVar70 < uVar9);
                }
                uVar78 = uVar78 + 1;
              } while (uVar78 < (uint)((int)uVar35 >> 1));
            }
LAB_180027d9d:
            uVar35 = uVar35 << 2;
            iVar45 = iVar45 + -2;
          }
          else {
            if ((iVar59 + 4 == param_2) || (iVar59 + 6 == param_2)) {
              iVar59 = 1 << ((byte)iVar27 & 0x1f);
              iVar64 = 1 << (cVar6 + cVar7 & 0x1fU);
              if (0 < (int)uVar35) {
                iVar32 = (int)(((uint)(iVar59 >> 1) >> 0x1e) + iVar59) >> 2;
                iVar46 = iVar64 * iVar65;
                iVar23 = iVar64 * iVar32;
                iVar51 = iVar64 * iVar75;
                iVar56 = iVar64 + iVar46;
                iVar36 = iVar59 / 2;
                iVar39 = iVar64 * iVar36;
                iVar31 = (int)(((uint)(iVar59 * 3 >> 1) >> 0x1e) + iVar59 * 3) >> 2;
                iVar55 = iVar64 * iVar31;
                iVar59 = iVar59 * iVar64;
                iVar28 = iVar64 * iVar60;
                iVar24 = iVar64 * 2;
                iVar1 = iVar24 + iVar51;
                iVar2 = iVar64 * 4;
                iVar52 = iVar64 * 3;
                iVar42 = iVar64 * 6;
                iVar50 = iVar52 + iVar28;
                uVar78 = 0;
                do {
                  uVar70 = 0;
                  if (0 < (int)uVar53) {
                    iVar71 = iVar64 * iVar8 * uVar78;
                    iVar76 = iVar64 * iVar5 * uVar78;
                    iVar79 = iVar64 * iVar44 * uVar78;
                    iVar69 = iVar71 - (iVar23 - iVar28);
                    iVar11 = iVar76 - (iVar23 - iVar51);
                    iVar58 = (iVar28 - iVar39) + iVar71;
                    iVar68 = iVar79 - (iVar23 - iVar46);
                    iVar61 = (iVar51 - iVar39) + iVar76;
                    iVar62 = (iVar46 - iVar39) + iVar79;
                    iVar63 = (iVar51 - iVar55) + iVar76;
                    iVar66 = (iVar28 - iVar55) + iVar71;
                    iVar67 = (iVar46 - iVar55) + iVar79;
                    do {
                      iVar12 = uVar70 * 2 + iVar44 * uVar78 + iVar65;
                      if (iVar32 < iVar12) {
                        iVar13 = iVar24 * uVar70;
                        if (iVar36 < iVar12) {
                          if (iVar31 < iVar12) {
                            *local_3e8 = *(undefined8 *)(param_3 + (longlong)(iVar67 + iVar13) * 8);
                            uVar84 = *(undefined8 *)
                                      (param_3 +
                                      (longlong)(((iVar59 - iVar46) - iVar79) - iVar13) * 8);
                          }
                          else {
                            uVar84 = *(undefined8 *)(param_3 + (longlong)-(iVar67 + iVar13) * 8);
                            *local_3e8 = CONCAT44((uint)((ulonglong)uVar84 >> 0x20) ^ _UNK_181c5df64
                                                  ,(uint)uVar84 ^ _DAT_181c5df60);
                            uVar84 = *(undefined8 *)(param_3 + (longlong)(iVar13 + iVar62) * 8);
                          }
                        }
                        else {
                          uVar84 = *(undefined8 *)(param_3 + (longlong)(iVar13 + iVar68) * 8);
                          *local_3e8 = CONCAT44((uint)((ulonglong)uVar84 >> 0x20) ^ _UNK_181c5df64,
                                                (uint)uVar84 ^ _DAT_181c5df60);
                          uVar84 = *(undefined8 *)(param_3 + (longlong)-(iVar13 + iVar62) * 8);
                          uVar84 = CONCAT44((uint)((ulonglong)uVar84 >> 0x20) ^ _UNK_181c5df64,
                                            (uint)uVar84 ^ _DAT_181c5df60);
                        }
                      }
                      else {
                        *local_3e8 = *(undefined8 *)
                                      (param_3 + (longlong)(int)-(iVar68 + iVar24 * uVar70) * 8);
                        uVar84 = *(undefined8 *)
                                  (param_3 + (longlong)(int)(iVar46 + iVar79 + iVar24 * uVar70) * 8)
                        ;
                        uVar84 = CONCAT44((uint)((ulonglong)uVar84 >> 0x20) ^ _UNK_181c5df64,
                                          (uint)uVar84 ^ _DAT_181c5df60);
                      }
                      iVar13 = iVar24 * uVar70;
                      iVar12 = iVar12 + 1;
                      local_3e8[2] = uVar84;
                      if (iVar32 < iVar12) {
                        if (iVar36 < iVar12) {
                          if (iVar31 < iVar12) {
                            local_3e8[1] = *(undefined8 *)
                                            (param_3 +
                                            (longlong)(iVar13 + (iVar56 - iVar55) + iVar79) * 8);
                            uVar84 = *(undefined8 *)
                                      (param_3 +
                                      (longlong)((((iVar59 - iVar46) - iVar64) - iVar79) - iVar13) *
                                      8);
                          }
                          else {
                            uVar84 = *(undefined8 *)
                                      (param_3 +
                                      (longlong)-(iVar13 + iVar64 + (iVar46 - iVar55) + iVar79) * 8)
                            ;
                            local_3e8[1] = CONCAT44((uint)((ulonglong)uVar84 >> 0x20) ^
                                                    _UNK_181c5df64,(uint)uVar84 ^ _DAT_181c5df60);
                            uVar84 = *(undefined8 *)
                                      (param_3 + (longlong)(iVar13 + (iVar56 - iVar39) + iVar79) * 8
                                      );
                          }
                        }
                        else {
                          uVar84 = *(undefined8 *)
                                    (param_3 + (longlong)(iVar13 + (iVar56 - iVar23) + iVar79) * 8);
                          local_3e8[1] = CONCAT44((uint)((ulonglong)uVar84 >> 0x20) ^ _UNK_181c5df64
                                                  ,(uint)uVar84 ^ _DAT_181c5df60);
                          uVar84 = *(undefined8 *)
                                    (param_3 +
                                    (longlong)-(iVar13 + iVar64 + (iVar46 - iVar39) + iVar79) * 8);
                          uVar84 = CONCAT44((uint)((ulonglong)uVar84 >> 0x20) ^ _UNK_181c5df64,
                                            (uint)uVar84 ^ _DAT_181c5df60);
                        }
                      }
                      else {
                        local_3e8[1] = *(undefined8 *)
                                        (param_3 +
                                        (longlong)((((iVar23 - iVar46) - iVar64) - iVar79) - iVar13)
                                        * 8);
                        uVar84 = *(undefined8 *)(param_3 + (longlong)(iVar13 + iVar56 + iVar79) * 8)
                        ;
                        uVar84 = CONCAT44((uint)((ulonglong)uVar84 >> 0x20) ^ _UNK_181c5df64,
                                          (uint)uVar84 ^ _DAT_181c5df60);
                      }
                      local_3e8[3] = uVar84;
                      iVar12 = uVar70 * 4 + iVar5 * uVar78 + iVar75;
                      if (iVar32 < iVar12) {
                        iVar13 = iVar2 * uVar70;
                        if (iVar36 < iVar12) {
                          if (iVar31 < iVar12) {
                            local_3e8[4] = *(undefined8 *)
                                            (param_3 + (longlong)(iVar63 + iVar13) * 8);
                            uVar84 = *(undefined8 *)
                                      (param_3 +
                                      (longlong)(((iVar59 - iVar51) - iVar76) - iVar13) * 8);
                          }
                          else {
                            uVar84 = *(undefined8 *)(param_3 + (longlong)-(iVar63 + iVar13) * 8);
                            local_3e8[4] = CONCAT44((uint)((ulonglong)uVar84 >> 0x20) ^
                                                    _UNK_181c5df64,(uint)uVar84 ^ _DAT_181c5df60);
                            uVar84 = *(undefined8 *)(param_3 + (longlong)(iVar13 + iVar61) * 8);
                          }
                        }
                        else {
                          uVar84 = *(undefined8 *)(param_3 + (longlong)(iVar13 + iVar11) * 8);
                          local_3e8[4] = CONCAT44((uint)((ulonglong)uVar84 >> 0x20) ^ _UNK_181c5df64
                                                  ,(uint)uVar84 ^ _DAT_181c5df60);
                          uVar84 = *(undefined8 *)(param_3 + (longlong)-(iVar13 + iVar61) * 8);
                          uVar84 = CONCAT44((uint)((ulonglong)uVar84 >> 0x20) ^ _UNK_181c5df64,
                                            (uint)uVar84 ^ _DAT_181c5df60);
                        }
                      }
                      else {
                        local_3e8[4] = *(undefined8 *)
                                        (param_3 + (longlong)(int)-(iVar11 + iVar2 * uVar70) * 8);
                        uVar84 = *(undefined8 *)
                                  (param_3 + (longlong)(int)(iVar51 + iVar76 + iVar2 * uVar70) * 8);
                        uVar84 = CONCAT44((uint)((ulonglong)uVar84 >> 0x20) ^ _UNK_181c5df64,
                                          (uint)uVar84 ^ _DAT_181c5df60);
                      }
                      iVar13 = iVar2 * uVar70;
                      iVar12 = iVar12 + 2;
                      local_3e8[6] = uVar84;
                      if (iVar32 < iVar12) {
                        if (iVar36 < iVar12) {
                          if (iVar31 < iVar12) {
                            local_3e8[5] = *(undefined8 *)
                                            (param_3 +
                                            (longlong)(iVar13 + (iVar1 - iVar55) + iVar76) * 8);
                            uVar84 = *(undefined8 *)
                                      (param_3 +
                                      (longlong)
                                      ((((iVar59 - iVar51) + iVar64 * -2) - iVar76) - iVar13) * 8);
                          }
                          else {
                            uVar84 = *(undefined8 *)
                                      (param_3 +
                                      (longlong)-(iVar13 + (iVar51 - iVar55) + iVar24 + iVar76) * 8)
                            ;
                            local_3e8[5] = CONCAT44((uint)((ulonglong)uVar84 >> 0x20) ^
                                                    _UNK_181c5df64,(uint)uVar84 ^ _DAT_181c5df60);
                            uVar84 = *(undefined8 *)
                                      (param_3 + (longlong)(iVar13 + (iVar1 - iVar39) + iVar76) * 8)
                            ;
                          }
                        }
                        else {
                          uVar84 = *(undefined8 *)
                                    (param_3 + (longlong)(iVar13 + (iVar1 - iVar23) + iVar76) * 8);
                          local_3e8[5] = CONCAT44((uint)((ulonglong)uVar84 >> 0x20) ^ _UNK_181c5df64
                                                  ,(uint)uVar84 ^ _DAT_181c5df60);
                          uVar84 = *(undefined8 *)
                                    (param_3 +
                                    (longlong)-(iVar13 + (iVar51 - iVar39) + iVar24 + iVar76) * 8);
                          uVar84 = CONCAT44((uint)((ulonglong)uVar84 >> 0x20) ^ _UNK_181c5df64,
                                            (uint)uVar84 ^ _DAT_181c5df60);
                        }
                      }
                      else {
                        local_3e8[5] = *(undefined8 *)
                                        (param_3 +
                                        (longlong)
                                        ((((iVar23 - iVar51) + iVar64 * -2) - iVar76) - iVar13) * 8)
                        ;
                        uVar84 = *(undefined8 *)(param_3 + (longlong)(iVar13 + iVar1 + iVar76) * 8);
                        uVar84 = CONCAT44((uint)((ulonglong)uVar84 >> 0x20) ^ _UNK_181c5df64,
                                          (uint)uVar84 ^ _DAT_181c5df60);
                      }
                      local_3e8[7] = uVar84;
                      iVar12 = uVar70 * 6 + iVar8 * uVar78 + iVar60;
                      if (iVar32 < iVar12) {
                        iVar13 = iVar42 * uVar70;
                        if (iVar36 < iVar12) {
                          if (iVar31 < iVar12) {
                            local_3e8[8] = *(undefined8 *)
                                            (param_3 + (longlong)(iVar66 + iVar13) * 8);
                            uVar84 = *(undefined8 *)
                                      (param_3 +
                                      (longlong)(((iVar59 - iVar28) - iVar71) - iVar13) * 8);
                          }
                          else {
                            uVar84 = *(undefined8 *)(param_3 + (longlong)-(iVar66 + iVar13) * 8);
                            local_3e8[8] = CONCAT44((uint)((ulonglong)uVar84 >> 0x20) ^
                                                    _UNK_181c5df64,(uint)uVar84 ^ _DAT_181c5df60);
                            uVar84 = *(undefined8 *)(param_3 + (longlong)(iVar13 + iVar58) * 8);
                          }
                        }
                        else {
                          uVar84 = *(undefined8 *)(param_3 + (longlong)(iVar13 + iVar69) * 8);
                          local_3e8[8] = CONCAT44((uint)((ulonglong)uVar84 >> 0x20) ^ _UNK_181c5df64
                                                  ,(uint)uVar84 ^ _DAT_181c5df60);
                          uVar84 = *(undefined8 *)(param_3 + (longlong)-(iVar13 + iVar58) * 8);
                          uVar84 = CONCAT44((uint)((ulonglong)uVar84 >> 0x20) ^ _UNK_181c5df64,
                                            (uint)uVar84 ^ _DAT_181c5df60);
                        }
                      }
                      else {
                        local_3e8[8] = *(undefined8 *)
                                        (param_3 + (longlong)(int)-(iVar69 + iVar42 * uVar70) * 8);
                        uVar84 = *(undefined8 *)
                                  (param_3 + (longlong)(int)(iVar28 + iVar71 + iVar42 * uVar70) * 8)
                        ;
                        uVar84 = CONCAT44((uint)((ulonglong)uVar84 >> 0x20) ^ _UNK_181c5df64,
                                          (uint)uVar84 ^ _DAT_181c5df60);
                      }
                      iVar13 = iVar42 * uVar70;
                      iVar12 = iVar12 + 3;
                      local_3e8[10] = uVar84;
                      if (iVar32 < iVar12) {
                        if (iVar36 < iVar12) {
                          if (iVar31 < iVar12) {
                            local_3e8[9] = *(undefined8 *)
                                            (param_3 +
                                            (longlong)(iVar13 + iVar71 + (iVar50 - iVar55)) * 8);
                            uVar84 = *(undefined8 *)
                                      (param_3 +
                                      (longlong)
                                      ((((iVar59 - iVar28) + iVar64 * -3) - iVar71) - iVar13) * 8);
                          }
                          else {
                            uVar84 = *(undefined8 *)
                                      (param_3 +
                                      (longlong)-(iVar13 + (iVar28 - iVar55) + iVar52 + iVar71) * 8)
                            ;
                            local_3e8[9] = CONCAT44((uint)((ulonglong)uVar84 >> 0x20) ^
                                                    _UNK_181c5df64,(uint)uVar84 ^ _DAT_181c5df60);
                            uVar84 = *(undefined8 *)
                                      (param_3 + (longlong)(iVar13 + (iVar50 - iVar39) + iVar71) * 8
                                      );
                          }
                        }
                        else {
                          uVar84 = *(undefined8 *)
                                    (param_3 + (longlong)(iVar13 + (iVar50 - iVar23) + iVar71) * 8);
                          local_3e8[9] = CONCAT44((uint)((ulonglong)uVar84 >> 0x20) ^ _UNK_181c5df64
                                                  ,(uint)uVar84 ^ _DAT_181c5df60);
                          uVar84 = *(undefined8 *)
                                    (param_3 +
                                    (longlong)-(iVar13 + (iVar28 - iVar39) + iVar52 + iVar71) * 8);
                          uVar84 = CONCAT44((uint)((ulonglong)uVar84 >> 0x20) ^ _UNK_181c5df64,
                                            (uint)uVar84 ^ _DAT_181c5df60);
                        }
                      }
                      else {
                        local_3e8[9] = *(undefined8 *)
                                        (param_3 +
                                        (longlong)
                                        ((((iVar23 - iVar28) + iVar64 * -3) - iVar71) - iVar13) * 8)
                        ;
                        uVar84 = *(undefined8 *)(param_3 + (longlong)(iVar13 + iVar50 + iVar71) * 8)
                        ;
                        uVar84 = CONCAT44((uint)((ulonglong)uVar84 >> 0x20) ^ _UNK_181c5df64,
                                          (uint)uVar84 ^ _DAT_181c5df60);
                      }
                      uVar70 = uVar70 + 1;
                      local_3e8[0xb] = uVar84;
                      local_3e8 = local_3e8 + 0xc;
                    } while (uVar70 < uVar9);
                  }
                  uVar78 = uVar78 + 1;
                } while (uVar78 < uVar35);
              }
              goto LAB_180027d9d;
            }
            iVar27 = iVar59 + 3;
            if (0 < (int)uVar35) {
              iVar50 = 1 << ((byte)iVar27 & 0x1f);
              iVar71 = 1 << (cVar7 + (char)(iVar45 + -3) & 0x1fU);
              iVar66 = (int)(((uint)(iVar50 * 3 >> 1) >> 0x1e) + iVar50 * 3) >> 2;
              iVar2 = iVar71 * 4;
              iVar42 = iVar71 * 10;
              iVar58 = iVar50 / 2;
              iVar52 = iVar71 * 2;
              iVar46 = iVar26 * iVar71;
              iVar51 = iVar60 * iVar71;
              iVar61 = (int)(((uint)(iVar50 >> 1) >> 0x1e) + iVar50) >> 2;
              iVar36 = iVar71 * 0xc;
              iVar67 = iVar71 * iVar61;
              iVar32 = iVar25 * iVar71;
              iVar23 = iVar71 * 0xe;
              iVar39 = iVar54 * iVar71;
              iVar31 = iVar71 * 6;
              iVar69 = iVar71 * 3 + iVar51;
              iVar59 = iVar2 + iVar46;
              iVar62 = iVar71 * 5 + iVar32;
              iVar76 = iVar57 * iVar71;
              iVar28 = iVar71 * 8;
              iVar64 = iVar31 + iVar39;
              iVar55 = iVar75 * iVar71;
              iVar79 = iVar71 * 7 + iVar76;
              iVar68 = iVar71 * iVar58;
              iVar50 = iVar50 * iVar71;
              iVar1 = iVar52 + iVar55;
              iVar63 = iVar71 * iVar66;
              iVar56 = iVar65 * iVar71;
              iVar24 = iVar71 + iVar56;
              uVar78 = 0;
              do {
                uVar70 = 0;
                if (0 < (int)uVar53) {
                  iVar72 = iVar44 * 7 * iVar71 * uVar78;
                  iVar40 = iVar44 * 5 * iVar71 * uVar78;
                  iVar47 = iVar44 * 6 * iVar71 * uVar78;
                  iVar29 = iVar8 * iVar71 * uVar78;
                  iVar37 = iVar44 * 4 * iVar71 * uVar78;
                  iVar33 = iVar5 * iVar71 * uVar78;
                  iVar11 = iVar72 - (iVar67 - iVar76);
                  iVar12 = iVar47 - (iVar67 - iVar39);
                  iVar13 = iVar40 - (iVar67 - iVar32);
                  iVar14 = iVar37 - (iVar67 - iVar46);
                  iVar80 = iVar33 - (iVar67 - iVar55);
                  iVar15 = iVar29 - (iVar67 - iVar51);
                  iVar16 = iVar33 - (iVar68 - iVar55);
                  iVar17 = iVar29 - (iVar68 - iVar51);
                  iVar18 = iVar37 - (iVar68 - iVar46);
                  iVar19 = iVar40 - (iVar68 - iVar32);
                  iVar20 = iVar47 - (iVar68 - iVar39);
                  iVar21 = iVar72 - (iVar68 - iVar76);
                  iVar22 = iVar44 * iVar71 * uVar78;
                  iVar34 = iVar33 - (iVar63 - iVar55);
                  iVar30 = iVar29 - (iVar63 - iVar51);
                  iVar38 = iVar37 - (iVar63 - iVar46);
                  iVar41 = iVar40 - (iVar63 - iVar32);
                  iVar48 = iVar47 - (iVar63 - iVar39);
                  iVar81 = iVar22 - (iVar63 - iVar56);
                  iVar82 = iVar22 - (iVar68 - iVar56);
                  iVar73 = iVar72 - (iVar63 - iVar76);
                  iVar83 = iVar22 - (iVar67 - iVar56);
                  do {
                    iVar77 = uVar70 * 2 + iVar44 * uVar78 + iVar65;
                    if (iVar61 < iVar77) {
                      iVar74 = iVar52 * uVar70;
                      if (iVar58 < iVar77) {
                        if (iVar66 < iVar77) {
                          *local_3e8 = *(undefined8 *)(param_3 + (longlong)(iVar81 + iVar74) * 8);
                          uVar84 = *(undefined8 *)
                                    (param_3 + (longlong)(((iVar50 - iVar56) - iVar22) - iVar74) * 8
                                    );
                        }
                        else {
                          uVar84 = *(undefined8 *)(param_3 + (longlong)-(iVar81 + iVar74) * 8);
                          *local_3e8 = CONCAT44((uint)((ulonglong)uVar84 >> 0x20) ^ _UNK_181c5df64,
                                                (uint)uVar84 ^ _DAT_181c5df60);
                          uVar84 = *(undefined8 *)(param_3 + (longlong)(iVar74 + iVar82) * 8);
                        }
                      }
                      else {
                        uVar84 = *(undefined8 *)(param_3 + (longlong)(iVar74 + iVar83) * 8);
                        *local_3e8 = CONCAT44((uint)((ulonglong)uVar84 >> 0x20) ^ _UNK_181c5df64,
                                              (uint)uVar84 ^ _DAT_181c5df60);
                        uVar84 = *(undefined8 *)(param_3 + (longlong)-(iVar74 + iVar82) * 8);
                        uVar84 = CONCAT44((uint)((ulonglong)uVar84 >> 0x20) ^ _UNK_181c5df64,
                                          (uint)uVar84 ^ _DAT_181c5df60);
                      }
                    }
                    else {
                      *local_3e8 = *(undefined8 *)
                                    (param_3 + (longlong)(int)-(iVar83 + iVar52 * uVar70) * 8);
                      uVar84 = *(undefined8 *)
                                (param_3 + (longlong)(int)(iVar22 + iVar56 + iVar52 * uVar70) * 8);
                      uVar84 = CONCAT44((uint)((ulonglong)uVar84 >> 0x20) ^ _UNK_181c5df64,
                                        (uint)uVar84 ^ _DAT_181c5df60);
                    }
                    iVar74 = iVar52 * uVar70;
                    iVar77 = iVar77 + 1;
                    local_3e8[2] = uVar84;
                    if (iVar61 < iVar77) {
                      if (iVar58 < iVar77) {
                        if (iVar66 < iVar77) {
                          local_3e8[1] = *(undefined8 *)
                                          (param_3 +
                                          (longlong)(iVar74 + (iVar24 - iVar63) + iVar22) * 8);
                          uVar84 = *(undefined8 *)
                                    (param_3 +
                                    (longlong)((((iVar50 - iVar56) - iVar71) - iVar22) - iVar74) * 8
                                    );
                        }
                        else {
                          uVar84 = *(undefined8 *)
                                    (param_3 +
                                    (longlong)((((iVar63 - iVar56) - iVar71) - iVar22) - iVar74) * 8
                                    );
                          local_3e8[1] = CONCAT44((uint)((ulonglong)uVar84 >> 0x20) ^ _UNK_181c5df64
                                                  ,(uint)uVar84 ^ _DAT_181c5df60);
                          uVar84 = *(undefined8 *)
                                    (param_3 + (longlong)(iVar74 + (iVar24 - iVar68) + iVar22) * 8);
                        }
                      }
                      else {
                        uVar84 = *(undefined8 *)
                                  (param_3 + (longlong)(iVar74 + (iVar24 - iVar67) + iVar22) * 8);
                        local_3e8[1] = CONCAT44((uint)((ulonglong)uVar84 >> 0x20) ^ _UNK_181c5df64,
                                                (uint)uVar84 ^ _DAT_181c5df60);
                        uVar84 = *(undefined8 *)
                                  (param_3 +
                                  (longlong)((((iVar68 - iVar56) - iVar71) - iVar22) - iVar74) * 8);
                        uVar84 = CONCAT44((uint)((ulonglong)uVar84 >> 0x20) ^ _UNK_181c5df64,
                                          (uint)uVar84 ^ _DAT_181c5df60);
                      }
                    }
                    else {
                      local_3e8[1] = *(undefined8 *)
                                      (param_3 +
                                      (longlong)((((iVar67 - iVar56) - iVar71) - iVar22) - iVar74) *
                                      8);
                      uVar84 = *(undefined8 *)(param_3 + (longlong)(iVar74 + iVar24 + iVar22) * 8);
                      uVar84 = CONCAT44((uint)((ulonglong)uVar84 >> 0x20) ^ _UNK_181c5df64,
                                        (uint)uVar84 ^ _DAT_181c5df60);
                    }
                    local_3e8[3] = uVar84;
                    iVar77 = uVar70 * 4 + iVar5 * uVar78 + iVar75;
                    if (iVar61 < iVar77) {
                      iVar74 = iVar2 * uVar70;
                      if (iVar58 < iVar77) {
                        if (iVar66 < iVar77) {
                          local_3e8[4] = *(undefined8 *)(param_3 + (longlong)(iVar74 + iVar34) * 8);
                          uVar84 = *(undefined8 *)
                                    (param_3 + (longlong)(((iVar50 - iVar55) - iVar33) - iVar74) * 8
                                    );
                        }
                        else {
                          uVar84 = *(undefined8 *)(param_3 + (longlong)-(iVar74 + iVar34) * 8);
                          local_3e8[4] = CONCAT44((uint)((ulonglong)uVar84 >> 0x20) ^ _UNK_181c5df64
                                                  ,(uint)uVar84 ^ _DAT_181c5df60);
                          uVar84 = *(undefined8 *)(param_3 + (longlong)(iVar74 + iVar16) * 8);
                        }
                      }
                      else {
                        uVar84 = *(undefined8 *)(param_3 + (longlong)(iVar74 + iVar80) * 8);
                        local_3e8[4] = CONCAT44((uint)((ulonglong)uVar84 >> 0x20) ^ _UNK_181c5df64,
                                                (uint)uVar84 ^ _DAT_181c5df60);
                        uVar84 = *(undefined8 *)(param_3 + (longlong)-(iVar74 + iVar16) * 8);
                        uVar84 = CONCAT44((uint)((ulonglong)uVar84 >> 0x20) ^ _UNK_181c5df64,
                                          (uint)uVar84 ^ _DAT_181c5df60);
                      }
                    }
                    else {
                      local_3e8[4] = *(undefined8 *)
                                      (param_3 + (longlong)(int)-(iVar80 + iVar2 * uVar70) * 8);
                      uVar84 = *(undefined8 *)
                                (param_3 + (longlong)(int)(iVar55 + iVar33 + iVar2 * uVar70) * 8);
                      uVar84 = CONCAT44((uint)((ulonglong)uVar84 >> 0x20) ^ _UNK_181c5df64,
                                        (uint)uVar84 ^ _DAT_181c5df60);
                    }
                    iVar74 = iVar2 * uVar70;
                    iVar77 = iVar77 + 2;
                    local_3e8[6] = uVar84;
                    if (iVar61 < iVar77) {
                      if (iVar58 < iVar77) {
                        if (iVar66 < iVar77) {
                          local_3e8[5] = *(undefined8 *)
                                          (param_3 +
                                          (longlong)(iVar74 + (iVar1 - iVar63) + iVar33) * 8);
                          uVar84 = *(undefined8 *)
                                    (param_3 +
                                    (longlong)
                                    ((((iVar50 - iVar55) + iVar71 * -2) - iVar33) - iVar74) * 8);
                        }
                        else {
                          uVar84 = *(undefined8 *)
                                    (param_3 +
                                    (longlong)
                                    ((((iVar63 - iVar55) + iVar71 * -2) - iVar33) - iVar74) * 8);
                          local_3e8[5] = CONCAT44((uint)((ulonglong)uVar84 >> 0x20) ^ _UNK_181c5df64
                                                  ,(uint)uVar84 ^ _DAT_181c5df60);
                          uVar84 = *(undefined8 *)
                                    (param_3 + (longlong)(iVar74 + (iVar1 - iVar68) + iVar33) * 8);
                        }
                      }
                      else {
                        uVar84 = *(undefined8 *)
                                  (param_3 + (longlong)(iVar74 + (iVar1 - iVar67) + iVar33) * 8);
                        local_3e8[5] = CONCAT44((uint)((ulonglong)uVar84 >> 0x20) ^ _UNK_181c5df64,
                                                (uint)uVar84 ^ _DAT_181c5df60);
                        uVar84 = *(undefined8 *)
                                  (param_3 +
                                  (longlong)((((iVar68 - iVar55) + iVar71 * -2) - iVar33) - iVar74)
                                  * 8);
                        uVar84 = CONCAT44((uint)((ulonglong)uVar84 >> 0x20) ^ _UNK_181c5df64,
                                          (uint)uVar84 ^ _DAT_181c5df60);
                      }
                    }
                    else {
                      local_3e8[5] = *(undefined8 *)
                                      (param_3 +
                                      (longlong)
                                      ((((iVar67 - iVar55) + iVar71 * -2) - iVar33) - iVar74) * 8);
                      uVar84 = *(undefined8 *)(param_3 + (longlong)(iVar74 + iVar1 + iVar33) * 8);
                      uVar84 = CONCAT44((uint)((ulonglong)uVar84 >> 0x20) ^ _UNK_181c5df64,
                                        (uint)uVar84 ^ _DAT_181c5df60);
                    }
                    local_3e8[7] = uVar84;
                    iVar77 = uVar70 * 6 + iVar8 * uVar78 + iVar60;
                    if (iVar61 < iVar77) {
                      iVar74 = iVar31 * uVar70;
                      if (iVar58 < iVar77) {
                        if (iVar66 < iVar77) {
                          local_3e8[8] = *(undefined8 *)(param_3 + (longlong)(iVar74 + iVar30) * 8);
                          uVar84 = *(undefined8 *)
                                    (param_3 + (longlong)(((iVar50 - iVar51) - iVar29) - iVar74) * 8
                                    );
                        }
                        else {
                          uVar84 = *(undefined8 *)(param_3 + (longlong)-(iVar74 + iVar30) * 8);
                          local_3e8[8] = CONCAT44((uint)((ulonglong)uVar84 >> 0x20) ^ _UNK_181c5df64
                                                  ,(uint)uVar84 ^ _DAT_181c5df60);
                          uVar84 = *(undefined8 *)(param_3 + (longlong)(iVar74 + iVar17) * 8);
                        }
                      }
                      else {
                        uVar84 = *(undefined8 *)(param_3 + (longlong)(iVar74 + iVar15) * 8);
                        local_3e8[8] = CONCAT44((uint)((ulonglong)uVar84 >> 0x20) ^ _UNK_181c5df64,
                                                (uint)uVar84 ^ _DAT_181c5df60);
                        uVar84 = *(undefined8 *)(param_3 + (longlong)-(iVar74 + iVar17) * 8);
                        uVar84 = CONCAT44((uint)((ulonglong)uVar84 >> 0x20) ^ _UNK_181c5df64,
                                          (uint)uVar84 ^ _DAT_181c5df60);
                      }
                    }
                    else {
                      local_3e8[8] = *(undefined8 *)
                                      (param_3 + (longlong)(int)-(iVar15 + iVar31 * uVar70) * 8);
                      uVar84 = *(undefined8 *)
                                (param_3 + (longlong)(int)(iVar51 + iVar29 + iVar31 * uVar70) * 8);
                      uVar84 = CONCAT44((uint)((ulonglong)uVar84 >> 0x20) ^ _UNK_181c5df64,
                                        (uint)uVar84 ^ _DAT_181c5df60);
                    }
                    iVar74 = iVar31 * uVar70;
                    iVar77 = iVar77 + 3;
                    local_3e8[10] = uVar84;
                    if (iVar61 < iVar77) {
                      if (iVar58 < iVar77) {
                        if (iVar66 < iVar77) {
                          local_3e8[9] = *(undefined8 *)
                                          (param_3 +
                                          (longlong)(iVar74 + (iVar69 - iVar63) + iVar29) * 8);
                          uVar84 = *(undefined8 *)
                                    (param_3 +
                                    (longlong)
                                    ((((iVar50 - iVar51) + iVar71 * -3) - iVar29) - iVar74) * 8);
                        }
                        else {
                          uVar84 = *(undefined8 *)
                                    (param_3 +
                                    (longlong)
                                    (((iVar71 * -3 + (iVar63 - iVar51)) - iVar29) - iVar74) * 8);
                          local_3e8[9] = CONCAT44((uint)((ulonglong)uVar84 >> 0x20) ^ _UNK_181c5df64
                                                  ,(uint)uVar84 ^ _DAT_181c5df60);
                          uVar84 = *(undefined8 *)
                                    (param_3 + (longlong)(iVar74 + (iVar69 - iVar68) + iVar29) * 8);
                        }
                      }
                      else {
                        uVar84 = *(undefined8 *)
                                  (param_3 + (longlong)(iVar74 + (iVar69 - iVar67) + iVar29) * 8);
                        local_3e8[9] = CONCAT44((uint)((ulonglong)uVar84 >> 0x20) ^ _UNK_181c5df64,
                                                (uint)uVar84 ^ _DAT_181c5df60);
                        uVar84 = *(undefined8 *)
                                  (param_3 +
                                  (longlong)((((iVar68 - iVar51) + iVar71 * -3) - iVar29) - iVar74)
                                  * 8);
                        uVar84 = CONCAT44((uint)((ulonglong)uVar84 >> 0x20) ^ _UNK_181c5df64,
                                          (uint)uVar84 ^ _DAT_181c5df60);
                      }
                    }
                    else {
                      local_3e8[9] = *(undefined8 *)
                                      (param_3 +
                                      (longlong)
                                      ((((iVar67 - iVar51) + iVar71 * -3) - iVar29) - iVar74) * 8);
                      uVar84 = *(undefined8 *)(param_3 + (longlong)(iVar74 + iVar69 + iVar29) * 8);
                      uVar84 = CONCAT44((uint)((ulonglong)uVar84 >> 0x20) ^ _UNK_181c5df64,
                                        (uint)uVar84 ^ _DAT_181c5df60);
                    }
                    local_3e8[0xb] = uVar84;
                    iVar77 = uVar70 * 8 + iVar44 * 4 * uVar78 + iVar26;
                    if (iVar61 < iVar77) {
                      iVar74 = iVar28 * uVar70;
                      if (iVar58 < iVar77) {
                        if (iVar66 < iVar77) {
                          local_3e8[0xc] =
                               *(undefined8 *)(param_3 + (longlong)(iVar74 + iVar38) * 8);
                          uVar84 = *(undefined8 *)
                                    (param_3 + (longlong)(((iVar50 - iVar46) - iVar37) - iVar74) * 8
                                    );
                        }
                        else {
                          uVar84 = *(undefined8 *)(param_3 + (longlong)-(iVar74 + iVar38) * 8);
                          local_3e8[0xc] =
                               CONCAT44((uint)((ulonglong)uVar84 >> 0x20) ^ _UNK_181c5df64,
                                        (uint)uVar84 ^ _DAT_181c5df60);
                          uVar84 = *(undefined8 *)(param_3 + (longlong)(iVar74 + iVar18) * 8);
                        }
                      }
                      else {
                        uVar84 = *(undefined8 *)(param_3 + (longlong)(iVar74 + iVar14) * 8);
                        local_3e8[0xc] =
                             CONCAT44((uint)((ulonglong)uVar84 >> 0x20) ^ _UNK_181c5df64,
                                      (uint)uVar84 ^ _DAT_181c5df60);
                        uVar84 = *(undefined8 *)(param_3 + (longlong)-(iVar74 + iVar18) * 8);
                        uVar84 = CONCAT44((uint)((ulonglong)uVar84 >> 0x20) ^ _UNK_181c5df64,
                                          (uint)uVar84 ^ _DAT_181c5df60);
                      }
                    }
                    else {
                      local_3e8[0xc] =
                           *(undefined8 *)(param_3 + (longlong)(int)-(iVar14 + iVar28 * uVar70) * 8)
                      ;
                      uVar84 = *(undefined8 *)
                                (param_3 + (longlong)(int)(iVar46 + iVar37 + iVar28 * uVar70) * 8);
                      uVar84 = CONCAT44((uint)((ulonglong)uVar84 >> 0x20) ^ _UNK_181c5df64,
                                        (uint)uVar84 ^ _DAT_181c5df60);
                    }
                    iVar74 = iVar28 * uVar70;
                    iVar77 = iVar77 + 4;
                    local_3e8[0xe] = uVar84;
                    if (iVar61 < iVar77) {
                      if (iVar58 < iVar77) {
                        if (iVar66 < iVar77) {
                          local_3e8[0xd] =
                               *(undefined8 *)
                                (param_3 + (longlong)(iVar74 + (iVar59 - iVar63) + iVar37) * 8);
                          uVar84 = *(undefined8 *)
                                    (param_3 +
                                    (longlong)
                                    ((((iVar50 - iVar46) + iVar71 * -4) - iVar37) - iVar74) * 8);
                        }
                        else {
                          uVar84 = *(undefined8 *)
                                    (param_3 +
                                    (longlong)
                                    ((((iVar63 - iVar46) + iVar71 * -4) - iVar37) - iVar74) * 8);
                          local_3e8[0xd] =
                               CONCAT44((uint)((ulonglong)uVar84 >> 0x20) ^ _UNK_181c5df64,
                                        (uint)uVar84 ^ _DAT_181c5df60);
                          uVar84 = *(undefined8 *)
                                    (param_3 + (longlong)(iVar74 + (iVar59 - iVar68) + iVar37) * 8);
                        }
                      }
                      else {
                        uVar84 = *(undefined8 *)
                                  (param_3 + (longlong)(iVar74 + (iVar59 - iVar67) + iVar37) * 8);
                        local_3e8[0xd] =
                             CONCAT44((uint)((ulonglong)uVar84 >> 0x20) ^ _UNK_181c5df64,
                                      (uint)uVar84 ^ _DAT_181c5df60);
                        uVar84 = *(undefined8 *)
                                  (param_3 +
                                  (longlong)((((iVar68 - iVar46) + iVar71 * -4) - iVar37) - iVar74)
                                  * 8);
                        uVar84 = CONCAT44((uint)((ulonglong)uVar84 >> 0x20) ^ _UNK_181c5df64,
                                          (uint)uVar84 ^ _DAT_181c5df60);
                      }
                    }
                    else {
                      local_3e8[0xd] =
                           *(undefined8 *)
                            (param_3 +
                            (longlong)((((iVar67 - iVar46) + iVar71 * -4) - iVar37) - iVar74) * 8);
                      uVar84 = *(undefined8 *)(param_3 + (longlong)(iVar74 + iVar59 + iVar37) * 8);
                      uVar84 = CONCAT44((uint)((ulonglong)uVar84 >> 0x20) ^ _UNK_181c5df64,
                                        (uint)uVar84 ^ _DAT_181c5df60);
                    }
                    local_3e8[0xf] = uVar84;
                    iVar77 = uVar70 * 10 + iVar44 * 5 * uVar78 + iVar25;
                    if (iVar61 < iVar77) {
                      iVar74 = iVar42 * uVar70;
                      if (iVar58 < iVar77) {
                        if (iVar66 < iVar77) {
                          local_3e8[0x10] =
                               *(undefined8 *)(param_3 + (longlong)(iVar74 + iVar41) * 8);
                          uVar84 = *(undefined8 *)
                                    (param_3 + (longlong)(((iVar50 - iVar32) - iVar40) - iVar74) * 8
                                    );
                        }
                        else {
                          uVar84 = *(undefined8 *)(param_3 + (longlong)-(iVar74 + iVar41) * 8);
                          local_3e8[0x10] =
                               CONCAT44((uint)((ulonglong)uVar84 >> 0x20) ^ _UNK_181c5df64,
                                        (uint)uVar84 ^ _DAT_181c5df60);
                          uVar84 = *(undefined8 *)(param_3 + (longlong)(iVar74 + iVar19) * 8);
                        }
                      }
                      else {
                        uVar84 = *(undefined8 *)(param_3 + (longlong)(iVar74 + iVar13) * 8);
                        local_3e8[0x10] =
                             CONCAT44((uint)((ulonglong)uVar84 >> 0x20) ^ _UNK_181c5df64,
                                      (uint)uVar84 ^ _DAT_181c5df60);
                        uVar84 = *(undefined8 *)(param_3 + (longlong)-(iVar74 + iVar19) * 8);
                        uVar84 = CONCAT44((uint)((ulonglong)uVar84 >> 0x20) ^ _UNK_181c5df64,
                                          (uint)uVar84 ^ _DAT_181c5df60);
                      }
                    }
                    else {
                      local_3e8[0x10] =
                           *(undefined8 *)(param_3 + (longlong)(int)-(iVar13 + iVar42 * uVar70) * 8)
                      ;
                      uVar84 = *(undefined8 *)
                                (param_3 + (longlong)(int)(iVar32 + iVar40 + iVar42 * uVar70) * 8);
                      uVar84 = CONCAT44((uint)((ulonglong)uVar84 >> 0x20) ^ _UNK_181c5df64,
                                        (uint)uVar84 ^ _DAT_181c5df60);
                    }
                    iVar74 = iVar42 * uVar70;
                    iVar77 = iVar77 + 5;
                    local_3e8[0x12] = uVar84;
                    if (iVar61 < iVar77) {
                      if (iVar58 < iVar77) {
                        if (iVar66 < iVar77) {
                          local_3e8[0x11] =
                               *(undefined8 *)
                                (param_3 + (longlong)(iVar74 + (iVar62 - iVar63) + iVar40) * 8);
                          uVar84 = *(undefined8 *)
                                    (param_3 +
                                    (longlong)
                                    ((((iVar50 - iVar32) + iVar71 * -5) - iVar40) - iVar74) * 8);
                        }
                        else {
                          uVar84 = *(undefined8 *)
                                    (param_3 +
                                    (longlong)
                                    (((iVar71 * -5 + (iVar63 - iVar32)) - iVar40) - iVar74) * 8);
                          local_3e8[0x11] =
                               CONCAT44((uint)((ulonglong)uVar84 >> 0x20) ^ _UNK_181c5df64,
                                        (uint)uVar84 ^ _DAT_181c5df60);
                          uVar84 = *(undefined8 *)
                                    (param_3 + (longlong)(iVar74 + (iVar62 - iVar68) + iVar40) * 8);
                        }
                      }
                      else {
                        uVar84 = *(undefined8 *)
                                  (param_3 + (longlong)(iVar74 + (iVar62 - iVar67) + iVar40) * 8);
                        local_3e8[0x11] =
                             CONCAT44((uint)((ulonglong)uVar84 >> 0x20) ^ _UNK_181c5df64,
                                      (uint)uVar84 ^ _DAT_181c5df60);
                        uVar84 = *(undefined8 *)
                                  (param_3 +
                                  (longlong)((((iVar68 - iVar32) + iVar71 * -5) - iVar40) - iVar74)
                                  * 8);
                        uVar84 = CONCAT44((uint)((ulonglong)uVar84 >> 0x20) ^ _UNK_181c5df64,
                                          (uint)uVar84 ^ _DAT_181c5df60);
                      }
                    }
                    else {
                      local_3e8[0x11] =
                           *(undefined8 *)
                            (param_3 +
                            (longlong)((((iVar67 - iVar32) + iVar71 * -5) - iVar40) - iVar74) * 8);
                      uVar84 = *(undefined8 *)(param_3 + (longlong)(iVar74 + iVar62 + iVar40) * 8);
                      uVar84 = CONCAT44((uint)((ulonglong)uVar84 >> 0x20) ^ _UNK_181c5df64,
                                        (uint)uVar84 ^ _DAT_181c5df60);
                    }
                    local_3e8[0x13] = uVar84;
                    iVar77 = uVar70 * 0xc + iVar44 * 6 * uVar78 + iVar54;
                    if (iVar61 < iVar77) {
                      iVar74 = iVar36 * uVar70;
                      if (iVar58 < iVar77) {
                        if (iVar66 < iVar77) {
                          local_3e8[0x14] =
                               *(undefined8 *)(param_3 + (longlong)(iVar74 + iVar48) * 8);
                          uVar84 = *(undefined8 *)
                                    (param_3 + (longlong)(((iVar50 - iVar39) - iVar47) - iVar74) * 8
                                    );
                        }
                        else {
                          uVar84 = *(undefined8 *)(param_3 + (longlong)-(iVar74 + iVar48) * 8);
                          local_3e8[0x14] =
                               CONCAT44((uint)((ulonglong)uVar84 >> 0x20) ^ _UNK_181c5df64,
                                        (uint)uVar84 ^ _DAT_181c5df60);
                          uVar84 = *(undefined8 *)(param_3 + (longlong)(iVar74 + iVar20) * 8);
                        }
                      }
                      else {
                        uVar84 = *(undefined8 *)(param_3 + (longlong)(iVar74 + iVar12) * 8);
                        local_3e8[0x14] =
                             CONCAT44((uint)((ulonglong)uVar84 >> 0x20) ^ _UNK_181c5df64,
                                      (uint)uVar84 ^ _DAT_181c5df60);
                        uVar84 = *(undefined8 *)(param_3 + (longlong)-(iVar74 + iVar20) * 8);
                        uVar84 = CONCAT44((uint)((ulonglong)uVar84 >> 0x20) ^ _UNK_181c5df64,
                                          (uint)uVar84 ^ _DAT_181c5df60);
                      }
                    }
                    else {
                      local_3e8[0x14] =
                           *(undefined8 *)(param_3 + (longlong)(int)-(iVar12 + iVar36 * uVar70) * 8)
                      ;
                      uVar84 = *(undefined8 *)
                                (param_3 + (longlong)(int)(iVar39 + iVar47 + iVar36 * uVar70) * 8);
                      uVar84 = CONCAT44((uint)((ulonglong)uVar84 >> 0x20) ^ _UNK_181c5df64,
                                        (uint)uVar84 ^ _DAT_181c5df60);
                    }
                    iVar74 = iVar36 * uVar70;
                    iVar77 = iVar77 + 6;
                    local_3e8[0x16] = uVar84;
                    if (iVar61 < iVar77) {
                      if (iVar58 < iVar77) {
                        if (iVar66 < iVar77) {
                          local_3e8[0x15] =
                               *(undefined8 *)
                                (param_3 + (longlong)(iVar74 + (iVar64 - iVar63) + iVar47) * 8);
                          uVar84 = *(undefined8 *)
                                    (param_3 +
                                    (longlong)
                                    ((((iVar50 - iVar39) + iVar71 * -6) - iVar47) - iVar74) * 8);
                        }
                        else {
                          uVar84 = *(undefined8 *)
                                    (param_3 +
                                    (longlong)
                                    ((((iVar63 - iVar39) + iVar71 * -6) - iVar47) - iVar74) * 8);
                          local_3e8[0x15] =
                               CONCAT44((uint)((ulonglong)uVar84 >> 0x20) ^ _UNK_181c5df64,
                                        (uint)uVar84 ^ _DAT_181c5df60);
                          uVar84 = *(undefined8 *)
                                    (param_3 + (longlong)(iVar74 + (iVar64 - iVar68) + iVar47) * 8);
                        }
                      }
                      else {
                        uVar84 = *(undefined8 *)
                                  (param_3 + (longlong)(iVar74 + (iVar64 - iVar67) + iVar47) * 8);
                        local_3e8[0x15] =
                             CONCAT44((uint)((ulonglong)uVar84 >> 0x20) ^ _UNK_181c5df64,
                                      (uint)uVar84 ^ _DAT_181c5df60);
                        uVar84 = *(undefined8 *)
                                  (param_3 +
                                  (longlong)((((iVar68 - iVar39) + iVar71 * -6) - iVar47) - iVar74)
                                  * 8);
                        uVar84 = CONCAT44((uint)((ulonglong)uVar84 >> 0x20) ^ _UNK_181c5df64,
                                          (uint)uVar84 ^ _DAT_181c5df60);
                      }
                    }
                    else {
                      local_3e8[0x15] =
                           *(undefined8 *)
                            (param_3 +
                            (longlong)((((iVar67 - iVar39) + iVar71 * -6) - iVar47) - iVar74) * 8);
                      uVar84 = *(undefined8 *)(param_3 + (longlong)(iVar74 + iVar64 + iVar47) * 8);
                      uVar84 = CONCAT44((uint)((ulonglong)uVar84 >> 0x20) ^ _UNK_181c5df64,
                                        (uint)uVar84 ^ _DAT_181c5df60);
                    }
                    iVar77 = uVar70 * 0xe + iVar44 * 7 * uVar78 + iVar57;
                    local_3e8[0x17] = uVar84;
                    if (iVar61 < iVar77) {
                      iVar74 = iVar23 * uVar70;
                      if (iVar58 < iVar77) {
                        if (iVar66 < iVar77) {
                          local_3e8[0x18] =
                               *(undefined8 *)(param_3 + (longlong)(iVar74 + iVar73) * 8);
                          uVar84 = *(undefined8 *)
                                    (param_3 + (longlong)(((iVar50 - iVar76) - iVar72) - iVar74) * 8
                                    );
                        }
                        else {
                          uVar84 = *(undefined8 *)(param_3 + (longlong)-(iVar74 + iVar73) * 8);
                          local_3e8[0x18] =
                               CONCAT44((uint)((ulonglong)uVar84 >> 0x20) ^ _UNK_181c5df64,
                                        (uint)uVar84 ^ _DAT_181c5df60);
                          uVar84 = *(undefined8 *)(param_3 + (longlong)(iVar74 + iVar21) * 8);
                        }
                      }
                      else {
                        uVar84 = *(undefined8 *)(param_3 + (longlong)(iVar74 + iVar11) * 8);
                        local_3e8[0x18] =
                             CONCAT44((uint)((ulonglong)uVar84 >> 0x20) ^ _UNK_181c5df64,
                                      (uint)uVar84 ^ _DAT_181c5df60);
                        uVar84 = *(undefined8 *)(param_3 + (longlong)-(iVar74 + iVar21) * 8);
                        uVar84 = CONCAT44((uint)((ulonglong)uVar84 >> 0x20) ^ _UNK_181c5df64,
                                          (uint)uVar84 ^ _DAT_181c5df60);
                      }
                    }
                    else {
                      local_3e8[0x18] =
                           *(undefined8 *)(param_3 + (longlong)(int)-(iVar11 + iVar23 * uVar70) * 8)
                      ;
                      uVar84 = *(undefined8 *)
                                (param_3 + (longlong)(int)(iVar76 + iVar72 + iVar23 * uVar70) * 8);
                      uVar84 = CONCAT44((uint)((ulonglong)uVar84 >> 0x20) ^ _UNK_181c5df64,
                                        (uint)uVar84 ^ _DAT_181c5df60);
                    }
                    iVar74 = iVar23 * uVar70;
                    iVar77 = iVar77 + 7;
                    local_3e8[0x1a] = uVar84;
                    if (iVar61 < iVar77) {
                      if (iVar58 < iVar77) {
                        if (iVar66 < iVar77) {
                          local_3e8[0x19] =
                               *(undefined8 *)
                                (param_3 + (longlong)(iVar74 + (iVar79 - iVar63) + iVar72) * 8);
                          uVar84 = *(undefined8 *)
                                    (param_3 +
                                    (longlong)
                                    ((((iVar50 - iVar76) + iVar71 * -7) - iVar72) - iVar74) * 8);
                        }
                        else {
                          uVar84 = *(undefined8 *)
                                    (param_3 +
                                    (longlong)
                                    (((iVar71 * -7 + (iVar63 - iVar76)) - iVar72) - iVar74) * 8);
                          local_3e8[0x19] =
                               CONCAT44((uint)((ulonglong)uVar84 >> 0x20) ^ _UNK_181c5df64,
                                        (uint)uVar84 ^ _DAT_181c5df60);
                          uVar84 = *(undefined8 *)
                                    (param_3 + (longlong)(iVar74 + (iVar79 - iVar68) + iVar72) * 8);
                        }
                      }
                      else {
                        uVar84 = *(undefined8 *)
                                  (param_3 + (longlong)(iVar74 + (iVar79 - iVar67) + iVar72) * 8);
                        local_3e8[0x19] =
                             CONCAT44((uint)((ulonglong)uVar84 >> 0x20) ^ _UNK_181c5df64,
                                      (uint)uVar84 ^ _DAT_181c5df60);
                        uVar84 = *(undefined8 *)
                                  (param_3 +
                                  (longlong)((((iVar68 - iVar76) + iVar71 * -7) - iVar72) - iVar74)
                                  * 8);
                        uVar84 = CONCAT44((uint)((ulonglong)uVar84 >> 0x20) ^ _UNK_181c5df64,
                                          (uint)uVar84 ^ _DAT_181c5df60);
                      }
                    }
                    else {
                      local_3e8[0x19] =
                           *(undefined8 *)
                            (param_3 +
                            (longlong)((((iVar67 - iVar76) + iVar71 * -7) - iVar72) - iVar74) * 8);
                      uVar84 = *(undefined8 *)(param_3 + (longlong)(iVar74 + iVar79 + iVar72) * 8);
                      uVar84 = CONCAT44((uint)((ulonglong)uVar84 >> 0x20) ^ _UNK_181c5df64,
                                        (uint)uVar84 ^ _DAT_181c5df60);
                    }
                    uVar70 = uVar70 + 1;
                    local_3e8[0x1b] = uVar84;
                    local_3e8 = local_3e8 + 0x1c;
                  } while (uVar70 < uVar9);
                }
                uVar78 = uVar78 + 1;
              } while (uVar78 < uVar35);
            }
            uVar35 = uVar35 << 3;
            iVar45 = iVar45 + -3;
          }
          iVar59 = iVar27;
        } while (iVar27 < param_2);
      }
      uVar43 = uVar43 + 1;
      iVar60 = iVar60 + uVar53 * 3;
      iVar26 = iVar26 + uVar53 * 4;
      iVar75 = iVar75 + uVar53 * 2;
      iVar25 = iVar25 + uVar53 * 5;
      iVar54 = iVar54 + uVar53 * 6;
      iVar57 = iVar57 + uVar53 * 7;
      iVar65 = iVar65 + uVar53;
    } while (uVar43 < uVar10);
  }
  iVar49 = (1 << ((byte)uVar4 & 0x1f)) * 0x10;
  iVar3 = *(int *)(param_1 + 0x1c);
  if (*(int *)(param_1 + 0x1c) <= iVar49) {
    iVar3 = iVar49;
  }
  *(int *)(param_1 + 0x1c) = iVar3;
  return local_c68 + (longlong)(1 << ((char)param_2 + 0x1fU & 0x1f)) * 2;
}



