
/* std::time_get<char, std::istreambuf_iterator<char, std::char_traits<char> >
   >::_M_extract_wday_or_month(std::istreambuf_iterator<char, std::char_traits<char> >,
   std::istreambuf_iterator<char, std::char_traits<char> >, int&, char const**, unsigned long,
   std::ios_base&, std::_Ios_Iostate&) const */

undefined1  [16]
std::time_get<char,std::istreambuf_iterator<char,std::char_traits<char>>>::_M_extract_wday_or_month
          (undefined8 param_1,long *param_2,ulong param_3,long *param_4,int param_5,int *param_6,
          long param_7,ulong param_8,long param_9,uint *param_10)

{
  code *pcVar1;
  char *__s;
  long lVar2;
  long lVar3;
  int iVar4;
  uint uVar5;
  ctype *pcVar6;
  ulong uVar7;
  size_t sVar8;
  bool bVar9;
  byte bVar10;
  byte bVar11;
  byte bVar12;
  bool bVar13;
  ulong uVar14;
  undefined1 *puVar15;
  ulong uVar16;
  uint uVar17;
  ulong uVar18;
  bool bVar19;
  long *plVar20;
  ctype *pcVar21;
  byte bVar22;
  char cVar23;
  undefined1 auVar24 [16];
  undefined8 uStack_80;
  undefined1 auStack_78 [8];
  ctype acStack_70 [3];
  byte local_6d;
  uint local_6c;
  long *local_68;
  int *local_60;
  ctype *local_58;
  ulong local_50;
  long *local_48;
  long *local_40;
  
  iVar4 = (int)param_3;
  local_48 = (long *)CONCAT44(local_48._4_4_,iVar4);
  uStack_80 = 0x2eaabc;
  local_60 = param_6;
  local_50 = param_3;
  local_40 = param_4;
  pcVar6 = use_facet<std::ctype<char>>((locale *)(param_9 + 0xd0));
  lVar2 = -(param_8 * 8 + 0x17 & 0xfffffffffffffff0);
  puVar15 = auStack_78 + lVar2;
  pcVar21 = acStack_70 + lVar2;
  bVar19 = param_2 != (long *)0x0 && iVar4 == -1;
  cVar23 = iVar4 == -1;
  bVar9 = bVar19;
  if ((bVar19) && (cVar23 = '\0', (ulong)param_2[3] <= (ulong)param_2[2])) {
    local_68 = (long *)((ulong)local_68 & 0xffffffffffffff00);
    pcVar1 = *(code **)(*param_2 + 0x48);
    local_58 = pcVar6;
    *(undefined8 *)(auStack_78 + lVar2 + -8) = 0x2eae52;
    iVar4 = (*pcVar1)(param_2);
    pcVar6 = local_58;
    cVar23 = (byte)local_68;
    if (iVar4 == -1) {
      param_2 = (long *)0x0;
      bVar9 = false;
      cVar23 = bVar19;
    }
  }
  bVar22 = param_5 == -1;
  bVar13 = param_4 != (long *)0x0 && (bool)bVar22;
  uVar17 = (uint)local_48;
  bVar19 = (bool)bVar22;
  if (bVar13) {
    if ((ulong)param_4[2] < (ulong)param_4[3]) {
      bVar19 = false;
    }
    else {
      local_6c = CONCAT31(local_6c._1_3_,bVar22);
      local_68 = (long *)CONCAT71(local_68._1_7_,cVar23);
      pcVar1 = *(code **)(*param_4 + 0x48);
      local_58 = pcVar6;
      *(undefined8 *)(auStack_78 + lVar2 + -8) = 0x2eaf99;
      iVar4 = (*pcVar1)(param_4);
      local_40 = (long *)0x0;
      if (iVar4 != -1) {
        local_40 = param_4;
      }
      pcVar6 = local_58;
      uVar17 = (uint)local_48;
      cVar23 = (byte)local_68;
      bVar22 = (byte)local_6c;
      bVar19 = iVar4 == -1 && bVar13;
    }
  }
  if ((bool)cVar23 == bVar19) {
    uVar18 = 0;
    uVar14 = 0;
    puVar15 = auStack_78 + lVar2;
    pcVar6 = (ctype *)0x0;
  }
  else {
    uVar5 = uVar17;
    if (bVar9) {
      if ((byte *)param_2[2] < (byte *)param_2[3]) {
        uVar5 = (uint)*(byte *)param_2[2];
      }
      else {
        local_68 = (long *)CONCAT71(local_68._1_7_,bVar22);
        local_48 = (long *)CONCAT44(local_48._4_4_,uVar17);
        pcVar1 = *(code **)(*param_2 + 0x48);
        local_58 = pcVar6;
        *(undefined8 *)(auStack_78 + lVar2 + -8) = 0x2eafe4;
        uVar5 = (*pcVar1)(param_2);
        pcVar6 = local_58;
        uVar17 = (uint)local_48;
        bVar22 = (byte)local_68;
        if (uVar5 == 0xffffffff) {
          param_2 = (long *)0x0;
          uVar5 = 0xffffffff;
        }
      }
    }
    if ((long *)(param_8 * 2) == (long *)0x0) {
      uVar14 = 0;
      pcVar6 = (ctype *)0x0;
      uVar18 = 0;
    }
    else {
      uVar14 = 0;
      plVar20 = (long *)0x0;
      local_6d = bVar22;
      local_6c = uVar17;
      local_68 = param_2;
      local_58 = pcVar21;
      local_48 = (long *)(param_8 * 2);
      do {
        while (**(char **)(param_7 + (long)plVar20 * 8) == (char)uVar5) {
LAB_002ead54:
          *(int *)(local_58 + uVar14 * 4) = (int)plVar20;
          uVar14 = uVar14 + 1;
          plVar20 = (long *)((long)plVar20 + 1);
          if (local_48 == plVar20) goto LAB_002ead6a;
        }
        pcVar1 = *(code **)(*(long *)pcVar6 + 0x10);
        *(undefined8 *)(auStack_78 + lVar2 + -8) = 0x2ead39;
        cVar23 = (*pcVar1)(pcVar6);
        if (cVar23 == (char)uVar5) goto LAB_002ead54;
        plVar20 = (long *)((long)plVar20 + 1);
      } while (local_48 != plVar20);
LAB_002ead6a:
      pcVar21 = local_58;
      plVar20 = local_68;
      uVar18 = 0;
      puVar15 = auStack_78 + lVar2;
      pcVar6 = (ctype *)0x0;
      param_2 = local_68;
      uVar17 = local_6c;
      bVar22 = local_6d;
      if (uVar14 != 0) {
        if ((ulong)local_68[2] < (ulong)local_68[3]) {
          local_68[2] = local_68[2] + 1;
          local_48._0_1_ = local_6d;
        }
        else {
          local_48 = (long *)CONCAT71(local_48._1_7_,local_6d);
          pcVar1 = *(code **)(*local_68 + 0x50);
          *(undefined8 *)(auStack_78 + lVar2 + -8) = 0x2eb01f;
          (*pcVar1)(plVar20);
        }
        local_68 = (long *)CONCAT71(local_68._1_7_,(byte)local_48);
        local_48 = plVar20;
        lVar3 = -(uVar14 * 8 + 0x17 & 0xfffffffffffffff0);
        puVar15 = auStack_78 + lVar3 + lVar2;
        uVar18 = 0;
        local_58 = acStack_70 + lVar3 + lVar2;
        do {
          __s = *(char **)(param_7 + (long)*(int *)(pcVar21 + uVar18 * 4) * 8);
          *(undefined8 *)(auStack_78 + lVar3 + lVar2 + -8) = 0x2eaded;
          sVar8 = strlen(__s);
          *(size_t *)(acStack_70 + lVar3 + lVar2 + uVar18 * 8) = sVar8;
          uVar18 = uVar18 + 1;
        } while (uVar14 != uVar18);
        uVar17 = 0xffffffff;
        uVar18 = 1;
        pcVar6 = local_58;
        param_2 = local_48;
        bVar22 = (byte)local_68;
      }
    }
  }
  do {
    cVar23 = uVar17 == 0xffffffff;
    bVar9 = param_2 != (long *)0x0 && (bool)cVar23;
    bVar10 = cVar23;
    if (bVar9) {
      if ((ulong)param_2[2] < (ulong)param_2[3]) {
        bVar10 = 0;
      }
      else {
        local_6c = CONCAT31(local_6c._1_3_,bVar22);
        local_68 = (long *)CONCAT44(local_68._4_4_,uVar17);
        local_58 = (ctype *)CONCAT71(local_58._1_7_,cVar23);
        local_48 = (long *)CONCAT71(local_48._1_7_,bVar9);
        pcVar1 = *(code **)(*param_2 + 0x48);
        *(undefined8 *)(puVar15 + -8) = 0x2eae9c;
        iVar4 = (*pcVar1)(param_2);
        if (iVar4 == -1) {
          param_2 = (long *)0x0;
          bVar10 = (byte)local_48;
        }
        else {
          bVar10 = 0;
        }
        uVar17 = (uint)local_68;
        bVar22 = (byte)local_6c;
        cVar23 = (byte)local_58;
      }
    }
    plVar20 = local_40;
    bVar11 = local_40 != (long *)0x0 & bVar22;
    bVar12 = bVar22;
    if (bVar11 == 0) {
LAB_002eab55:
      if (bVar10 == bVar12) break;
    }
    else {
      if ((ulong)local_40[3] <= (ulong)local_40[2]) {
        local_68 = (long *)CONCAT71(local_68._1_7_,cVar23);
        local_58 = (ctype *)CONCAT71(local_58._1_7_,bVar11);
        local_48 = (long *)CONCAT71(local_48._1_7_,bVar10);
        pcVar1 = *(code **)(*local_40 + 0x48);
        local_6d = bVar22;
        local_6c = uVar17;
        *(undefined8 *)(puVar15 + -8) = 0x2eaeec;
        iVar4 = (*pcVar1)(plVar20);
        plVar20 = (long *)0x0;
        bVar12 = (byte)local_58;
        if (iVar4 != -1) {
          bVar12 = 0;
          plVar20 = local_40;
        }
        uVar17 = local_6c;
        local_40 = plVar20;
        bVar22 = local_6d;
        bVar10 = (byte)local_48;
        cVar23 = (byte)local_68;
        goto LAB_002eab55;
      }
      if (bVar10 == 0) break;
    }
    if ((param_2 == (long *)0x0) || (cVar23 == '\0')) {
      cVar23 = (char)uVar17;
    }
    else if ((char *)param_2[2] < (char *)param_2[3]) {
      cVar23 = *(char *)param_2[2];
    }
    else {
      local_58 = (ctype *)CONCAT71(local_58._1_7_,bVar22);
      local_48 = (long *)CONCAT44(local_48._4_4_,uVar17);
      pcVar1 = *(code **)(*param_2 + 0x48);
      *(undefined8 *)(puVar15 + -8) = 0x2eaf38;
      iVar4 = (*pcVar1)(param_2);
      cVar23 = -1;
      uVar17 = (uint)local_48;
      bVar22 = (byte)local_58;
      if (iVar4 == -1) {
        param_2 = (long *)0x0;
      }
      else {
        cVar23 = (char)iVar4;
      }
    }
    if (uVar14 == 0) goto LAB_002eac30;
    uVar7 = 0;
    uVar16 = 0;
    do {
      while (*(ulong *)(pcVar6 + uVar7 * 8) <= uVar18) {
        uVar16 = uVar16 + 1;
LAB_002eab88:
        uVar7 = uVar7 + 1;
        if (uVar14 <= uVar7) goto LAB_002eabbf;
      }
      if (*(char *)(*(long *)(param_7 + (long)*(int *)(pcVar21 + uVar7 * 4) * 8) + uVar18) == cVar23
         ) goto LAB_002eab88;
      uVar14 = uVar14 - 1;
      *(int *)(pcVar21 + uVar7 * 4) = *(int *)(pcVar21 + uVar14 * 4);
      *(ulong *)(pcVar6 + uVar7 * 8) = *(ulong *)(pcVar6 + uVar14 * 8);
    } while (uVar7 < uVar14);
LAB_002eabbf:
    if (uVar16 == uVar14) break;
    if ((ulong)param_2[2] < (ulong)param_2[3]) {
      param_2[2] = param_2[2] + 1;
    }
    else {
      local_48 = (long *)CONCAT71(local_48._1_7_,bVar22);
      pcVar1 = *(code **)(*param_2 + 0x50);
      *(undefined8 *)(puVar15 + -8) = 0x2eaca1;
      (*pcVar1)(param_2);
      bVar22 = (byte)local_48;
    }
    uVar18 = uVar18 + 1;
    uVar17 = 0xffffffff;
  } while( true );
  if (uVar14 == 1) {
    uVar14 = *(ulong *)pcVar6;
joined_r0x002eacc3:
    if (uVar14 == uVar18) {
LAB_002eacc9:
      iVar4 = *(int *)pcVar21;
      if (param_8 <= (ulong)(long)iVar4) {
        iVar4 = iVar4 - (int)param_8;
      }
      *local_60 = iVar4;
      goto LAB_002eac37;
    }
  }
  else if (uVar14 == 2) {
    if (*(ulong *)pcVar6 != uVar18) {
      uVar14 = *(ulong *)(pcVar6 + 8);
      goto joined_r0x002eacc3;
    }
    goto LAB_002eacc9;
  }
LAB_002eac30:
  *param_10 = *param_10 | 4;
LAB_002eac37:
  auVar24._8_8_ = (ulong)uVar17 | local_50 & 0xffffffff00000000;
  auVar24._0_8_ = param_2;
  return auVar24;
}



undefined1  [16]
FUN_002eaa80(undefined8 param_1,long *param_2,ulong param_3,long *param_4,int param_5,int *param_6,
            long param_7,ulong param_8,long param_9,uint *param_10)

{
  int *piVar1;
  code *pcVar2;
  char *__s;
  long lVar3;
  long lVar4;
  int iVar5;
  uint uVar6;
  ulong *puVar7;
  ulong uVar8;
  size_t sVar9;
  bool bVar10;
  byte bVar11;
  byte bVar12;
  byte bVar13;
  bool bVar14;
  ulong uVar15;
  undefined1 *puVar16;
  ulong uVar17;
  uint uVar18;
  ulong uVar19;
  bool bVar20;
  long *plVar21;
  ulong *puVar22;
  byte bVar23;
  char cVar24;
  undefined1 auVar25 [16];
  undefined8 uStack_80;
  undefined1 auStack_78 [8];
  undefined8 uStack_70;
  long *local_68;
  int *local_60;
  ulong *local_58;
  ulong local_50;
  long *local_48;
  long *local_40;
  
  iVar5 = (int)param_3;
  local_48 = (long *)CONCAT44(local_48._4_4_,iVar5);
  uStack_80 = 0x2eaabc;
  local_60 = param_6;
  local_50 = param_3;
  local_40 = param_4;
  puVar7 = (ulong *)FUN_00288720(param_9 + 0xd0);
  lVar3 = -(param_8 * 8 + 0x17 & 0xfffffffffffffff0);
  puVar16 = auStack_78 + lVar3;
  puVar22 = (ulong *)((long)&uStack_70 + lVar3);
  bVar20 = param_2 != (long *)0x0 && iVar5 == -1;
  cVar24 = iVar5 == -1;
  bVar10 = bVar20;
  if ((bVar20) && (cVar24 = '\0', (ulong)param_2[3] <= (ulong)param_2[2])) {
    local_68 = (long *)((ulong)local_68 & 0xffffffffffffff00);
    pcVar2 = *(code **)(*param_2 + 0x48);
    local_58 = puVar7;
    *(undefined8 *)(auStack_78 + lVar3 + -8) = 0x2eae52;
    iVar5 = (*pcVar2)(param_2);
    puVar7 = local_58;
    cVar24 = (byte)local_68;
    if (iVar5 == -1) {
      param_2 = (long *)0x0;
      bVar10 = false;
      cVar24 = bVar20;
    }
  }
  bVar23 = param_5 == -1;
  bVar14 = param_4 != (long *)0x0 && (bool)bVar23;
  uVar18 = (uint)local_48;
  bVar20 = (bool)bVar23;
  if (bVar14) {
    if ((ulong)param_4[2] < (ulong)param_4[3]) {
      bVar20 = false;
    }
    else {
      uStack_70._4_4_ = CONCAT31(uStack_70._5_3_,bVar23);
      local_68 = (long *)CONCAT71(local_68._1_7_,cVar24);
      pcVar2 = *(code **)(*param_4 + 0x48);
      local_58 = puVar7;
      *(undefined8 *)(auStack_78 + lVar3 + -8) = 0x2eaf99;
      iVar5 = (*pcVar2)(param_4);
      local_40 = (long *)0x0;
      if (iVar5 != -1) {
        local_40 = param_4;
      }
      puVar7 = local_58;
      uVar18 = (uint)local_48;
      cVar24 = (byte)local_68;
      bVar23 = uStack_70._4_1_;
      bVar20 = iVar5 == -1 && bVar14;
    }
  }
  if ((bool)cVar24 == bVar20) {
    uVar19 = 0;
    uVar15 = 0;
    puVar16 = auStack_78 + lVar3;
    puVar7 = (ulong *)0x0;
  }
  else {
    uVar6 = uVar18;
    if (bVar10) {
      if ((byte *)param_2[2] < (byte *)param_2[3]) {
        uVar6 = (uint)*(byte *)param_2[2];
      }
      else {
        local_68 = (long *)CONCAT71(local_68._1_7_,bVar23);
        local_48 = (long *)CONCAT44(local_48._4_4_,uVar18);
        pcVar2 = *(code **)(*param_2 + 0x48);
        local_58 = puVar7;
        *(undefined8 *)(auStack_78 + lVar3 + -8) = 0x2eafe4;
        uVar6 = (*pcVar2)(param_2);
        puVar7 = local_58;
        uVar18 = (uint)local_48;
        bVar23 = (byte)local_68;
        if (uVar6 == 0xffffffff) {
          param_2 = (long *)0x0;
          uVar6 = 0xffffffff;
        }
      }
    }
    if ((long *)(param_8 * 2) == (long *)0x0) {
      uVar15 = 0;
      puVar7 = (ulong *)0x0;
      uVar19 = 0;
    }
    else {
      uVar15 = 0;
      plVar21 = (long *)0x0;
      uStack_70._3_1_ = bVar23;
      uStack_70._4_4_ = uVar18;
      local_68 = param_2;
      local_58 = puVar22;
      local_48 = (long *)(param_8 * 2);
      do {
        while (**(char **)(param_7 + (long)plVar21 * 8) == (char)uVar6) {
LAB_002ead54:
          *(int *)((long)local_58 + uVar15 * 4) = (int)plVar21;
          uVar15 = uVar15 + 1;
          plVar21 = (long *)((long)plVar21 + 1);
          if (local_48 == plVar21) goto LAB_002ead6a;
        }
        pcVar2 = *(code **)(*puVar7 + 0x10);
        *(undefined8 *)(auStack_78 + lVar3 + -8) = 0x2ead39;
        cVar24 = (*pcVar2)(puVar7);
        if (cVar24 == (char)uVar6) goto LAB_002ead54;
        plVar21 = (long *)((long)plVar21 + 1);
      } while (local_48 != plVar21);
LAB_002ead6a:
      puVar22 = local_58;
      plVar21 = local_68;
      uVar19 = 0;
      puVar16 = auStack_78 + lVar3;
      puVar7 = (ulong *)0x0;
      param_2 = local_68;
      uVar18 = uStack_70._4_4_;
      bVar23 = uStack_70._3_1_;
      if (uVar15 != 0) {
        if ((ulong)local_68[2] < (ulong)local_68[3]) {
          local_68[2] = local_68[2] + 1;
          local_48._0_1_ = uStack_70._3_1_;
        }
        else {
          local_48 = (long *)CONCAT71(local_48._1_7_,uStack_70._3_1_);
          pcVar2 = *(code **)(*local_68 + 0x50);
          *(undefined8 *)(auStack_78 + lVar3 + -8) = 0x2eb01f;
          (*pcVar2)(plVar21);
        }
        local_68 = (long *)CONCAT71(local_68._1_7_,(byte)local_48);
        local_48 = plVar21;
        lVar4 = -(uVar15 * 8 + 0x17 & 0xfffffffffffffff0);
        puVar16 = auStack_78 + lVar4 + lVar3;
        uVar19 = 0;
        puVar7 = (ulong *)((long)&uStack_70 + lVar4 + lVar3);
        local_58 = puVar7;
        do {
          __s = *(char **)(param_7 + (long)*(int *)((long)puVar22 + uVar19 * 4) * 8);
          *(undefined8 *)(auStack_78 + lVar4 + lVar3 + -8) = 0x2eaded;
          sVar9 = strlen(__s);
          puVar7[uVar19] = sVar9;
          uVar19 = uVar19 + 1;
        } while (uVar15 != uVar19);
        uVar18 = 0xffffffff;
        uVar19 = 1;
        puVar7 = local_58;
        param_2 = local_48;
        bVar23 = (byte)local_68;
      }
    }
  }
  do {
    cVar24 = uVar18 == 0xffffffff;
    bVar10 = param_2 != (long *)0x0 && (bool)cVar24;
    bVar11 = cVar24;
    if (bVar10) {
      if ((ulong)param_2[2] < (ulong)param_2[3]) {
        bVar11 = 0;
      }
      else {
        uStack_70._4_4_ = CONCAT31(uStack_70._5_3_,bVar23);
        local_68 = (long *)CONCAT44(local_68._4_4_,uVar18);
        local_58 = (ulong *)CONCAT71(local_58._1_7_,cVar24);
        local_48 = (long *)CONCAT71(local_48._1_7_,bVar10);
        pcVar2 = *(code **)(*param_2 + 0x48);
        *(undefined8 *)(puVar16 + -8) = 0x2eae9c;
        iVar5 = (*pcVar2)(param_2);
        if (iVar5 == -1) {
          param_2 = (long *)0x0;
          bVar11 = (byte)local_48;
        }
        else {
          bVar11 = 0;
        }
        uVar18 = (uint)local_68;
        bVar23 = uStack_70._4_1_;
        cVar24 = (byte)local_58;
      }
    }
    plVar21 = local_40;
    bVar12 = local_40 != (long *)0x0 & bVar23;
    bVar13 = bVar23;
    if (bVar12 == 0) {
LAB_002eab55:
      if (bVar11 == bVar13) break;
    }
    else {
      if ((ulong)local_40[3] <= (ulong)local_40[2]) {
        local_68 = (long *)CONCAT71(local_68._1_7_,cVar24);
        local_58 = (ulong *)CONCAT71(local_58._1_7_,bVar12);
        local_48 = (long *)CONCAT71(local_48._1_7_,bVar11);
        pcVar2 = *(code **)(*local_40 + 0x48);
        uStack_70._3_1_ = bVar23;
        uStack_70._4_4_ = uVar18;
        *(undefined8 *)(puVar16 + -8) = 0x2eaeec;
        iVar5 = (*pcVar2)(plVar21);
        plVar21 = (long *)0x0;
        bVar13 = (byte)local_58;
        if (iVar5 != -1) {
          bVar13 = 0;
          plVar21 = local_40;
        }
        uVar18 = uStack_70._4_4_;
        local_40 = plVar21;
        bVar23 = uStack_70._3_1_;
        bVar11 = (byte)local_48;
        cVar24 = (byte)local_68;
        goto LAB_002eab55;
      }
      if (bVar11 == 0) break;
    }
    if ((param_2 == (long *)0x0) || (cVar24 == '\0')) {
      cVar24 = (char)uVar18;
    }
    else if ((char *)param_2[2] < (char *)param_2[3]) {
      cVar24 = *(char *)param_2[2];
    }
    else {
      local_58 = (ulong *)CONCAT71(local_58._1_7_,bVar23);
      local_48 = (long *)CONCAT44(local_48._4_4_,uVar18);
      pcVar2 = *(code **)(*param_2 + 0x48);
      *(undefined8 *)(puVar16 + -8) = 0x2eaf38;
      iVar5 = (*pcVar2)(param_2);
      cVar24 = -1;
      uVar18 = (uint)local_48;
      bVar23 = (byte)local_58;
      if (iVar5 == -1) {
        param_2 = (long *)0x0;
      }
      else {
        cVar24 = (char)iVar5;
      }
    }
    if (uVar15 == 0) goto LAB_002eac30;
    uVar8 = 0;
    uVar17 = 0;
    do {
      while (puVar7[uVar8] <= uVar19) {
        uVar17 = uVar17 + 1;
LAB_002eab88:
        uVar8 = uVar8 + 1;
        if (uVar15 <= uVar8) goto LAB_002eabbf;
      }
      piVar1 = (int *)((long)puVar22 + uVar8 * 4);
      if (*(char *)(*(long *)(param_7 + (long)*piVar1 * 8) + uVar19) == cVar24) goto LAB_002eab88;
      uVar15 = uVar15 - 1;
      *piVar1 = *(int *)((long)puVar22 + uVar15 * 4);
      puVar7[uVar8] = puVar7[uVar15];
    } while (uVar8 < uVar15);
LAB_002eabbf:
    if (uVar17 == uVar15) break;
    if ((ulong)param_2[2] < (ulong)param_2[3]) {
      param_2[2] = param_2[2] + 1;
    }
    else {
      local_48 = (long *)CONCAT71(local_48._1_7_,bVar23);
      pcVar2 = *(code **)(*param_2 + 0x50);
      *(undefined8 *)(puVar16 + -8) = 0x2eaca1;
      (*pcVar2)(param_2);
      bVar23 = (byte)local_48;
    }
    uVar19 = uVar19 + 1;
    uVar18 = 0xffffffff;
  } while( true );
  if (uVar15 == 1) {
    uVar15 = *puVar7;
joined_r0x002eacc3:
    if (uVar15 == uVar19) {
LAB_002eacc9:
      iVar5 = (int)*puVar22;
      if (param_8 <= (ulong)(long)iVar5) {
        iVar5 = iVar5 - (int)param_8;
      }
      *local_60 = iVar5;
      goto LAB_002eac37;
    }
  }
  else if (uVar15 == 2) {
    if (*puVar7 != uVar19) {
      uVar15 = puVar7[1];
      goto joined_r0x002eacc3;
    }
    goto LAB_002eacc9;
  }
LAB_002eac30:
  *param_10 = *param_10 | 4;
LAB_002eac37:
  auVar25._8_8_ = (ulong)uVar18 | local_50 & 0xffffffff00000000;
  auVar25._0_8_ = param_2;
  return auVar25;
}


PUSH RBP
MOV RBP,RSP
PUSH R15
MOV R15,RSI
PUSH R14
PUSH R13
MOV R13,RDX
PUSH R12
MOV R12,RCX
PUSH RBX
MOV RBX,R8
SUB RSP,0x48
MOV RAX,qword ptr [RBP + 0x20]
MOV qword ptr [RBP + -0x48],RDX
MOV qword ptr [RBP + -0x58],R9
LEA RDI,[RAX + 0xd0]
MOV dword ptr [RBP + -0x40],EDX
MOV qword ptr [RBP + -0x38],RCX
CALL 0x00288720
MOV R10D,dword ptr [RBP + -0x40]
MOV R9,qword ptr [RBP + 0x10]
MOV RDX,RAX
MOV RAX,qword ptr [RBP + 0x18]
LEA RAX,[0x17 + RAX*0x8]
AND RAX,-0x10
SUB RSP,RAX
LEA R14,[RSP + 0xf]
AND R14,-0x10
CMP R13D,-0x1
SETZ CL
TEST R15,R15
SETNZ R13B
AND R13B,CL
JNZ 0x002eae32
CMP EBX,-0x1
SETZ R8B
TEST R12,R12
SETNZ BL
AND BL,R8B
JNZ 0x002eae1b
MOV EBX,R8D
CMP CL,BL
JNZ 0x002eace6
XOR R12D,R12D
XOR R13D,R13D
XOR EBX,EBX
NOP dword ptr [RAX + RAX*0x1]
CMP R10D,-0x1
SETZ SIL
TEST R15,R15
SETNZ CL
AND CL,SIL
JNZ 0x002eac60
MOV ECX,ESI
CMP qword ptr [RBP + -0x38],0x0
SETNZ DL
AND DL,R8B
JNZ 0x002eac00
MOV EDX,R8D
CMP CL,DL
JZ 0x002eac1c
TEST R15,R15
JZ 0x002eab6b
TEST SIL,SIL
JNZ 0x002eac78
MOV R11D,R10D
TEST RBX,RBX
JZ 0x002eac30
XOR EAX,EAX
XOR ESI,ESI
JMP 0x002eab8d
ADD RSI,0x1
ADD RAX,0x1
CMP RAX,RBX
JNC 0x002eabbf
LEA RDX,[R13 + RAX*0x8]
CMP qword ptr [RDX],R12
JBE 0x002eab80
LEA RCX,[R14 + RAX*0x4]
MOVSXD RDI,dword ptr [RCX]
MOV RDI,qword ptr [R9 + RDI*0x8]
CMP byte ptr [RDI + R12*0x1],R11B
JZ 0x002eabf0
SUB RBX,0x1
MOV EDI,dword ptr [R14 + RBX*0x4]
MOV dword ptr [RCX],EDI
MOV RCX,qword ptr [R13 + RBX*0x8]
MOV qword ptr [RDX],RCX
CMP RAX,RBX
JC 0x002eab8d
CMP RSI,RBX
JZ 0x002eac1c
MOV RAX,qword ptr [R15 + 0x10]
CMP RAX,qword ptr [R15 + 0x18]
JNC 0x002eac90
ADD RAX,0x1
MOV qword ptr [R15 + 0x10],RAX
ADD R12,0x1
MOV R10D,0xffffffff
JMP 0x002eab28
ADD RAX,0x1
JMP 0x002eab88
MOV RAX,qword ptr [RBP + -0x38]
MOV RDI,qword ptr [RAX + 0x18]
CMP qword ptr [RAX + 0x10],RDI
JNC 0x002eaeca
XOR EDX,EDX
CMP CL,DL
JNZ 0x002eab5d
CMP RBX,0x1
JNZ 0x002eacaf
CMP qword ptr [R13],R12
JZ 0x002eacc9
MOV RAX,qword ptr [RBP + 0x28]
OR dword ptr [RAX],0x4
MOV EDX,R10D
MOV RAX,R15
MOV R10,-0x100000000
AND R10,qword ptr [RBP + -0x48]
LEA RSP,[RBP + -0x28]
OR RDX,R10
POP RBX
POP R12
POP R13
POP R14
POP R15
POP RBP
RET
MOV RAX,qword ptr [R15 + 0x18]
CMP qword ptr [R15 + 0x10],RAX
JNC 0x002eae80
XOR ECX,ECX
JMP 0x002eab41
MOV RAX,qword ptr [R15 + 0x10]
CMP RAX,qword ptr [R15 + 0x18]
JNC 0x002eaf23
MOVZX R11D,byte ptr [RAX]
JMP 0x002eab6e
MOV RAX,qword ptr [R15]
MOV qword ptr [RBP + 0x10],R9
MOV RDI,R15
MOV byte ptr [RBP + -0x40],R8B
CALL qword ptr [RAX + 0x50]
MOV R9,qword ptr [RBP + 0x10]
MOVZX R8D,byte ptr [RBP + -0x40]
JMP 0x002eabda
CMP RBX,0x2
JNZ 0x002eac30
CMP qword ptr [R13],R12
JZ 0x002eacc9
CMP qword ptr [R13 + 0x8],R12
JNZ 0x002eac30
MOVSXD RCX,dword ptr [R14]
MOV RSI,qword ptr [RBP + -0x58]
MOV RAX,RCX
MOV EDX,ECX
SUB EDX,dword ptr [RBP + 0x18]
CMP RCX,qword ptr [RBP + 0x18]
CMOVNC EAX,EDX
MOV dword ptr [RSI],EAX
JMP 0x002eac37
MOV ECX,R10D
TEST R13B,R13B
JNZ 0x002eaf60
MOV R12,qword ptr [RBP + 0x18]
ADD R12,R12
JZ 0x002eaf72
XOR EBX,EBX
MOV qword ptr [RBP + -0x60],R15
XOR R13D,R13D
MOV R15D,ECX
MOV qword ptr [RBP + -0x40],R12
MOV R12,R9
MOV qword ptr [RBP + -0x50],R14
MOV R14,RBX
MOV RBX,RDX
MOV dword ptr [RBP + -0x64],R10D
MOV byte ptr [RBP + -0x65],R8B
JMP 0x002ead48
MOV RAX,qword ptr [RBX]
MOV RDI,RBX
CALL qword ptr [RAX + 0x10]
CMP AL,R15B
JZ 0x002ead54
ADD R13,0x1
CMP qword ptr [RBP + -0x40],R13
JZ 0x002ead6a
MOV RAX,qword ptr [R12 + R13*0x8]
MOVSX ESI,byte ptr [RAX]
CMP SIL,R15B
JNZ 0x002ead30
MOV RAX,qword ptr [RBP + -0x50]
MOV dword ptr [RAX + R14*0x4],R13D
ADD R14,0x1
ADD R13,0x1
CMP qword ptr [RBP + -0x40],R13
JNZ 0x002ead48
MOV RBX,R14
MOV R9,R12
MOV R15,qword ptr [RBP + -0x60]
MOV R10D,dword ptr [RBP + -0x64]
MOVZX R8D,byte ptr [RBP + -0x65]
MOV R14,qword ptr [RBP + -0x50]
XOR R12D,R12D
XOR R13D,R13D
TEST RBX,RBX
JZ 0x002eab28
MOV RAX,qword ptr [R15 + 0x10]
CMP RAX,qword ptr [R15 + 0x18]
JNC 0x002eb00e
ADD RAX,0x1
MOV qword ptr [R15 + 0x10],RAX
LEA RAX,[0x17 + RBX*0x8]
MOV byte ptr [RBP + -0x60],R8B
AND RAX,-0x10
MOV qword ptr [RBP + -0x40],R15
MOV R15,R9
SUB RSP,RAX
LEA R12,[RSP + 0xf]
MOV RAX,R12
XOR R12D,R12D
AND RAX,-0x10
MOV R13,R12
MOV qword ptr [RBP + -0x50],RAX
MOV R12,RAX
NOP dword ptr [RAX]
MOVSXD RAX,dword ptr [R14 + R13*0x4]
MOV RDI,qword ptr [R15 + RAX*0x8]
CALL 0x0013e490
MOV qword ptr [R12 + R13*0x8],RAX
ADD R13,0x1
CMP RBX,R13
JNZ 0x002eade0
MOV R9,R15
MOV R13,qword ptr [RBP + -0x50]
MOV R15,qword ptr [RBP + -0x40]
MOV R10D,0xffffffff
MOVZX R8D,byte ptr [RBP + -0x60]
MOV R12D,0x1
JMP 0x002eab28
MOV RAX,qword ptr [R12 + 0x18]
CMP qword ptr [R12 + 0x10],RAX
JNC 0x002eaf7c
XOR EBX,EBX
JMP 0x002eab13
XOR ECX,ECX
MOV RAX,qword ptr [R15 + 0x18]
CMP qword ptr [R15 + 0x10],RAX
JC 0x002eaafa
MOV RAX,qword ptr [R15]
MOV byte ptr [RBP + -0x60],CL
MOV RDI,R15
MOV qword ptr [RBP + -0x50],RDX
CALL qword ptr [RAX + 0x48]
MOV R10D,dword ptr [RBP + -0x40]
MOV RDX,qword ptr [RBP + -0x50]
CMP EAX,-0x1
MOVZX ECX,byte ptr [RBP + -0x60]
MOV R9,qword ptr [RBP + 0x10]
JNZ 0x002eaafa
MOV ECX,R13D
XOR R15D,R15D
XOR R13D,R13D
JMP 0x002eaafa
MOV RAX,qword ptr [R15]
MOV qword ptr [RBP + 0x10],R9
MOV RDI,R15
MOV byte ptr [RBP + -0x64],R8B
MOV dword ptr [RBP + -0x60],R10D
MOV byte ptr [RBP + -0x50],SIL
MOV byte ptr [RBP + -0x40],CL
CALL qword ptr [RAX + 0x48]
MOVZX ECX,byte ptr [RBP + -0x40]
MOV ESI,0x0
MOV R10D,dword ptr [RBP + -0x60]
CMP EAX,-0x1
MOV EAX,0x0
MOVZX R8D,byte ptr [RBP + -0x64]
MOV R9,qword ptr [RBP + 0x10]
CMOVNZ ECX,ESI
CMOVZ R15,RAX
MOVZX ESI,byte ptr [RBP + -0x50]
JMP 0x002eab41
MOV byte ptr [RBP + -0x60],SIL
MOV RSI,RAX
MOV RAX,qword ptr [RAX]
MOV qword ptr [RBP + 0x10],R9
MOV RDI,RSI
MOV byte ptr [RBP + -0x65],R8B
MOV dword ptr [RBP + -0x64],R10D
MOV byte ptr [RBP + -0x50],DL
MOV byte ptr [RBP + -0x40],CL
CALL qword ptr [RAX + 0x48]
MOVZX EDX,byte ptr [RBP + -0x50]
MOV ECX,0x0
MOVZX ESI,byte ptr [RBP + -0x60]
CMP EAX,-0x1
MOV EAX,0x0
MOV R10D,dword ptr [RBP + -0x64]
MOV R9,qword ptr [RBP + 0x10]
CMOVNZ RAX,qword ptr [RBP + -0x38]
CMOVNZ EDX,ECX
MOVZX R8D,byte ptr [RBP + -0x65]
MOVZX ECX,byte ptr [RBP + -0x40]
MOV qword ptr [RBP + -0x38],RAX
JMP 0x002eab55
MOV RAX,qword ptr [R15]
MOV qword ptr [RBP + 0x10],R9
MOV RDI,R15
MOV byte ptr [RBP + -0x50],R8B
MOV dword ptr [RBP + -0x40],R10D
CALL qword ptr [RAX + 0x48]
MOV R11D,0xffffffff
MOV R9,qword ptr [RBP + 0x10]
MOVZX R8D,byte ptr [RBP + -0x50]
CMP EAX,-0x1
MOV R10D,dword ptr [RBP + -0x40]
CMOVNZ R11D,EAX
MOV EAX,0x0
CMOVZ R15,RAX
JMP 0x002eab6e
MOV RAX,qword ptr [R15 + 0x10]
CMP RAX,qword ptr [R15 + 0x18]
JNC 0x002eafcb
MOVZX ECX,byte ptr [RAX]
JMP 0x002eacf2
XOR EBX,EBX
XOR R13D,R13D
JMP 0x002eab28
MOV RAX,qword ptr [R12]
MOV qword ptr [RBP + 0x10],R9
MOV RDI,R12
MOV byte ptr [RBP + -0x64],R8B
MOV byte ptr [RBP + -0x60],CL
MOV qword ptr [RBP + -0x50],RDX
MOV dword ptr [RBP + -0x40],R10D
CALL qword ptr [RAX + 0x48]
MOV ESI,0x0
MOV R10D,dword ptr [RBP + -0x40]
MOV RDX,qword ptr [RBP + -0x50]
CMP EAX,-0x1
MOV EAX,0x0
MOVZX ECX,byte ptr [RBP + -0x60]
MOV R9,qword ptr [RBP + 0x10]
CMOVNZ RAX,R12
CMOVNZ EBX,ESI
MOVZX R8D,byte ptr [RBP + -0x64]
MOV qword ptr [RBP + -0x38],RAX
JMP 0x002eab13
MOV RAX,qword ptr [R15]
MOV qword ptr [RBP + 0x10],R9
MOV RDI,R15
MOV byte ptr [RBP + -0x60],R8B
MOV qword ptr [RBP + -0x50],RDX
MOV dword ptr [RBP + -0x40],R10D
CALL qword ptr [RAX + 0x48]
MOV ECX,0xffffffff
MOV R9,qword ptr [RBP + 0x10]
MOV RDX,qword ptr [RBP + -0x50]
CMP EAX,-0x1
MOVZX R8D,byte ptr [RBP + -0x60]
MOV R10D,dword ptr [RBP + -0x40]
CMOVNZ ECX,EAX
MOV EAX,0x0
CMOVZ R15,RAX
JMP 0x002eacf2
MOV RAX,qword ptr [R15]
MOV qword ptr [RBP + 0x10],R9
MOV RDI,R15
MOV byte ptr [RBP + -0x40],R8B
CALL qword ptr [RAX + 0x50]
MOV R9,qword ptr [RBP + 0x10]
MOVZX R8D,byte ptr [RBP + -0x40]
JMP 0x002eada6
(translation_unit "undefined1  [16]\nFUN_002eaa80(undefined8 param_1,long *param_2,ulong param_3,long *param_4,int param_5,int *param_6,\n            long param_7,ulong param_8,long param_9,uint *param_10)\n\n{\n  int *piVar1;\n  code *pcVar2;\n  char *__s;\n  long lVar3;\n  long lVar4;\n  int iVar5;\n  uint uVar6;\n  ulong *puVar7;\n  ulong uVar8;\n  size_t sVar9;\n  bool bVar10;\n  byte bVar11;\n  byte bVar12;\n  byte bVar13;\n  bool bVar14;\n  ulong uVar15;\n  undefined1 *puVar16;\n  ulong uVar17;\n  uint uVar18;\n  ulong uVar19;\n  bool bVar20;\n  long *plVar21;\n  ulong *puVar22;\n  byte bVar23;\n  char cVar24;\n  undefined1 auVar25 [16];\n  undefined8 uStack_80;\n  undefined1 auStack_78 [8];\n  undefined8 uStack_70;\n  long *local_68;\n  int *local_60;\n  ulong *local_58;\n  ulong local_50;\n  long *local_48;\n  long *local_40;\n  \n  iVar5 = (int)param_3;\n  local_48 = (long *)CONCAT44(local_48._4_4_,iVar5);\n  uStack_80 = 0x2eaabc;\n  local_60 = param_6;\n  local_50 = param_3;\n  local_40 = param_4;\n  puVar7 = (ulong *)FUN_00288720(param_9 + 0xd0);\n  lVar3 = -(param_8 * 8 + 0x17 & 0xfffffffffffffff0);\n  puVar16 = auStack_78 + lVar3;\n  puVar22 = (ulong *)((long)&uStack_70 + lVar3);\n  bVar20 = param_2 != (long *)0x0 && iVar5 == -1;\n  cVar24 = iVar5 == -1;\n  bVar10 = bVar20;\n  if ((bVar20) && (cVar24 = '\0', (ulong)param_2[3] <= (ulong)param_2[2])) {\n    local_68 = (long *)((ulong)local_68 & 0xffffffffffffff00);\n    pcVar2 = *(code **)(*param_2 + 0x48);\n    local_58 = puVar7;\n    *(undefined8 *)(auStack_78 + lVar3 + -8) = 0x2eae52;\n    iVar5 = (*pcVar2)(param_2);\n    puVar7 = local_58;\n    cVar24 = (byte)local_68;\n    if (iVar5 == -1) {\n      param_2 = (long *)0x0;\n      bVar10 = false;\n      cVar24 = bVar20;\n    }\n  }\n  bVar23 = param_5 == -1;\n  bVar14 = param_4 != (long *)0x0 && (bool)bVar23;\n  uVar18 = (uint)local_48;\n  bVar20 = (bool)bVar23;\n  if (bVar14) {\n    if ((ulong)param_4[2] < (ulong)param_4[3]) {\n      bVar20 = false;\n    }\n    else {\n      uStack_70._4_4_ = CONCAT31(uStack_70._5_3_,bVar23);\n      local_68 = (long *)CONCAT71(local_68._1_7_,cVar24);\n      pcVar2 = *(code **)(*param_4 + 0x48);\n      local_58 = puVar7;\n      *(undefined8 *)(auStack_78 + lVar3 + -8) = 0x2eaf99;\n      iVar5 = (*pcVar2)(param_4);\n      local_40 = (long *)0x0;\n      if (iVar5 != -1) {\n        local_40 = param_4;\n      }\n      puVar7 = local_58;\n      uVar18 = (uint)local_48;\n      cVar24 = (byte)local_68;\n      bVar23 = uStack_70._4_1_;\n      bVar20 = iVar5 == -1 && bVar14;\n    }\n  }\n  if ((bool)cVar24 == bVar20) {\n    uVar19 = 0;\n    uVar15 = 0;\n    puVar16 = auStack_78 + lVar3;\n    puVar7 = (ulong *)0x0;\n  }\n  else {\n    uVar6 = uVar18;\n    if (bVar10) {\n      if ((byte *)param_2[2] < (byte *)param_2[3]) {\n        uVar6 = (uint)*(byte *)param_2[2];\n      }\n      else {\n        local_68 = (long *)CONCAT71(local_68._1_7_,bVar23);\n        local_48 = (long *)CONCAT44(local_48._4_4_,uVar18);\n        pcVar2 = *(code **)(*param_2 + 0x48);\n        local_58 = puVar7;\n        *(undefined8 *)(auStack_78 + lVar3 + -8) = 0x2eafe4;\n        uVar6 = (*pcVar2)(param_2);\n        puVar7 = local_58;\n        uVar18 = (uint)local_48;\n        bVar23 = (byte)local_68;\n        if (uVar6 == 0xffffffff) {\n          param_2 = (long *)0x0;\n          uVar6 = 0xffffffff;\n        }\n      }\n    }\n    if ((long *)(param_8 * 2) == (long *)0x0) {\n      uVar15 = 0;\n      puVar7 = (ulong *)0x0;\n      uVar19 = 0;\n    }\n    else {\n      uVar15 = 0;\n      plVar21 = (long *)0x0;\n      uStack_70._3_1_ = bVar23;\n      uStack_70._4_4_ = uVar18;\n      local_68 = param_2;\n      local_58 = puVar22;\n      local_48 = (long *)(param_8 * 2);\n      do {\n        while (**(char **)(param_7 + (long)plVar21 * 8) == (char)uVar6) {\nLAB_002ead54:\n          *(int *)((long)local_58 + uVar15 * 4) = (int)plVar21;\n          uVar15 = uVar15 + 1;\n          plVar21 = (long *)((long)plVar21 + 1);\n          if (local_48 == plVar21) goto LAB_002ead6a;\n        }\n        pcVar2 = *(code **)(*puVar7 + 0x10);\n        *(undefined8 *)(auStack_78 + lVar3 + -8) = 0x2ead39;\n        cVar24 = (*pcVar2)(puVar7);\n        if (cVar24 == (char)uVar6) goto LAB_002ead54;\n        plVar21 = (long *)((long)plVar21 + 1);\n      } while (local_48 != plVar21);\nLAB_002ead6a:\n      puVar22 = local_58;\n      plVar21 = local_68;\n      uVar19 = 0;\n      puVar16 = auStack_78 + lVar3;\n      puVar7 = (ulong *)0x0;\n      param_2 = local_68;\n      uVar18 = uStack_70._4_4_;\n      bVar23 = uStack_70._3_1_;\n      if (uVar15 != 0) {\n        if ((ulong)local_68[2] < (ulong)local_68[3]) {\n          local_68[2] = local_68[2] + 1;\n          local_48._0_1_ = uStack_70._3_1_;\n        }\n        else {\n          local_48 = (long *)CONCAT71(local_48._1_7_,uStack_70._3_1_);\n          pcVar2 = *(code **)(*local_68 + 0x50);\n          *(undefined8 *)(auStack_78 + lVar3 + -8) = 0x2eb01f;\n          (*pcVar2)(plVar21);\n        }\n        local_68 = (long *)CONCAT71(local_68._1_7_,(byte)local_48);\n        local_48 = plVar21;\n        lVar4 = -(uVar15 * 8 + 0x17 & 0xfffffffffffffff0);\n        puVar16 = auStack_78 + lVar4 + lVar3;\n        uVar19 = 0;\n        puVar7 = (ulong *)((long)&uStack_70 + lVar4 + lVar3);\n        local_58 = puVar7;\n        do {\n          __s = *(char **)(param_7 + (long)*(int *)((long)puVar22 + uVar19 * 4) * 8);\n          *(undefined8 *)(auStack_78 + lVar4 + lVar3 + -8) = 0x2eaded;\n          sVar9 = strlen(__s);\n          puVar7[uVar19] = sVar9;\n          uVar19 = uVar19 + 1;\n        } while (uVar15 != uVar19);\n        uVar18 = 0xffffffff;\n        uVar19 = 1;\n        puVar7 = local_58;\n        param_2 = local_48;\n        bVar23 = (byte)local_68;\n      }\n    }\n  }\n  do {\n    cVar24 = uVar18 == 0xffffffff;\n    bVar10 = param_2 != (long *)0x0 && (bool)cVar24;\n    bVar11 = cVar24;\n    if (bVar10) {\n      if ((ulong)param_2[2] < (ulong)param_2[3]) {\n        bVar11 = 0;\n      }\n      else {\n        uStack_70._4_4_ = CONCAT31(uStack_70._5_3_,bVar23);\n        local_68 = (long *)CONCAT44(local_68._4_4_,uVar18);\n        local_58 = (ulong *)CONCAT71(local_58._1_7_,cVar24);\n        local_48 = (long *)CONCAT71(local_48._1_7_,bVar10);\n        pcVar2 = *(code **)(*param_2 + 0x48);\n        *(undefined8 *)(puVar16 + -8) = 0x2eae9c;\n        iVar5 = (*pcVar2)(param_2);\n        if (iVar5 == -1) {\n          param_2 = (long *)0x0;\n          bVar11 = (byte)local_48;\n        }\n        else {\n          bVar11 = 0;\n        }\n        uVar18 = (uint)local_68;\n        bVar23 = uStack_70._4_1_;\n        cVar24 = (byte)local_58;\n      }\n    }\n    plVar21 = local_40;\n    bVar12 = local_40 != (long *)0x0 & bVar23;\n    bVar13 = bVar23;\n    if (bVar12 == 0) {\nLAB_002eab55:\n      if (bVar11 == bVar13) break;\n    }\n    else {\n      if ((ulong)local_40[3] <= (ulong)local_40[2]) {\n        local_68 = (long *)CONCAT71(local_68._1_7_,cVar24);\n        local_58 = (ulong *)CONCAT71(local_58._1_7_,bVar12);\n        local_48 = (long *)CONCAT71(local_48._1_7_,bVar11);\n        pcVar2 = *(code **)(*local_40 + 0x48);\n        uStack_70._3_1_ = bVar23;\n        uStack_70._4_4_ = uVar18;\n        *(undefined8 *)(puVar16 + -8) = 0x2eaeec;\n        iVar5 = (*pcVar2)(plVar21);\n        plVar21 = (long *)0x0;\n        bVar13 = (byte)local_58;\n        if (iVar5 != -1) {\n          bVar13 = 0;\n          plVar21 = local_40;\n        }\n        uVar18 = uStack_70._4_4_;\n        local_40 = plVar21;\n        bVar23 = uStack_70._3_1_;\n        bVar11 = (byte)local_48;\n        cVar24 = (byte)local_68;\n        goto LAB_002eab55;\n      }\n      if (bVar11 == 0) break;\n    }\n    if ((param_2 == (long *)0x0) || (cVar24 == '\0')) {\n      cVar24 = (char)uVar18;\n    }\n    else if ((char *)param_2[2] < (char *)param_2[3]) {\n      cVar24 = *(char *)param_2[2];\n    }\n    else {\n      local_58 = (ulong *)CONCAT71(local_58._1_7_,bVar23);\n      local_48 = (long *)CONCAT44(local_48._4_4_,uVar18);\n      pcVar2 = *(code **)(*param_2 + 0x48);\n      *(undefined8 *)(puVar16 + -8) = 0x2eaf38;\n      iVar5 = (*pcVar2)(param_2);\n      cVar24 = -1;\n      uVar18 = (uint)local_48;\n      bVar23 = (byte)local_58;\n      if (iVar5 == -1) {\n        param_2 = (long *)0x0;\n      }\n      else {\n        cVar24 = (char)iVar5;\n      }\n    }\n    if (uVar15 == 0) goto LAB_002eac30;\n    uVar8 = 0;\n    uVar17 = 0;\n    do {\n      while (puVar7[uVar8] <= uVar19) {\n        uVar17 = uVar17 + 1;\nLAB_002eab88:\n        uVar8 = uVar8 + 1;\n        if (uVar15 <= uVar8) goto LAB_002eabbf;\n      }\n      piVar1 = (int *)((long)puVar22 + uVar8 * 4);\n      if (*(char *)(*(long *)(param_7 + (long)*piVar1 * 8) + uVar19) == cVar24) goto LAB_002eab88;\n      uVar15 = uVar15 - 1;\n      *piVar1 = *(int *)((long)puVar22 + uVar15 * 4);\n      puVar7[uVar8] = puVar7[uVar15];\n    } while (uVar8 < uVar15);\nLAB_002eabbf:\n    if (uVar17 == uVar15) break;\n    if ((ulong)param_2[2] < (ulong)param_2[3]) {\n      param_2[2] = param_2[2] + 1;\n    }\n    else {\n      local_48 = (long *)CONCAT71(local_48._1_7_,bVar23);\n      pcVar2 = *(code **)(*param_2 + 0x50);\n      *(undefined8 *)(puVar16 + -8) = 0x2eaca1;\n      (*pcVar2)(param_2);\n      bVar23 = (byte)local_48;\n    }\n    uVar19 = uVar19 + 1;\n    uVar18 = 0xffffffff;\n  } while( true );\n  if (uVar15 == 1) {\n    uVar15 = *puVar7;\njoined_r0x002eacc3:\n    if (uVar15 == uVar19) {\nLAB_002eacc9:\n      iVar5 = (int)*puVar22;\n      if (param_8 <= (ulong)(long)iVar5) {\n        iVar5 = iVar5 - (int)param_8;\n      }\n      *local_60 = iVar5;\n      goto LAB_002eac37;\n    }\n  }\n  else if (uVar15 == 2) {\n    if (*puVar7 != uVar19) {\n      uVar15 = puVar7[1];\n      goto joined_r0x002eacc3;\n    }\n    goto LAB_002eacc9;\n  }\nLAB_002eac30:\n  *param_10 = *param_10 | 4;\nLAB_002eac37:\n  auVar25._8_8_ = (ulong)uVar18 | local_50 & 0xffffffff00000000;\n  auVar25._0_8_ = param_2;\n  return auVar25;\n}\n\n" (expression_statement "undefined1  [16]" (subscript_expression "undefined1  [16]" identifier [ number_literal ]) ;) (declaration "FUN_002eaa80(undefined8 param_1,long *param_2,ulong param_3,long *param_4,int param_5,int *param_6,\n            long param_7,ulong param_8,long param_9,uint *param_10)\n\n{\n  int *piVar1;" (macro_type_specifier "FUN_002eaa80(undefined8" identifier ( (type_descriptor "undefined8" type_identifier) )) identifier , (ERROR "long" identifier) (pointer_declarator "*param_2" * identifier) , (ERROR "ulong" identifier) identifier , (ERROR "long" identifier) (pointer_declarator "*param_4" * identifier) , (ERROR "int" identifier) identifier , (ERROR "int" identifier) (pointer_declarator "*param_6" * identifier) , (ERROR "long" identifier) identifier , (ERROR "ulong" identifier) identifier , (ERROR "long" identifier) identifier , (ERROR "uint *param_10)\n\n{\n  int" identifier (pointer_declarator "*param_10" * identifier) ) { primitive_type) (pointer_declarator "*piVar1" * identifier) ;) (declaration "code *pcVar2;" type_identifier (pointer_declarator "*pcVar2" * identifier) ;) (declaration "char *__s;" primitive_type (pointer_declarator "*__s" * identifier) ;) (declaration "long lVar3;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar4;" (sized_type_specifier "long" long) identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "ulong *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "ulong uVar8;" type_identifier identifier ;) (declaration "size_t sVar9;" primitive_type identifier ;) (declaration "bool bVar10;" primitive_type identifier ;) (declaration "byte bVar11;" type_identifier identifier ;) (declaration "byte bVar12;" type_identifier identifier ;) (declaration "byte bVar13;" type_identifier identifier ;) (declaration "bool bVar14;" primitive_type identifier ;) (declaration "ulong uVar15;" type_identifier identifier ;) (declaration "undefined1 *puVar16;" type_identifier (pointer_declarator "*puVar16" * identifier) ;) (declaration "ulong uVar17;" type_identifier identifier ;) (declaration "uint uVar18;" type_identifier identifier ;) (declaration "ulong uVar19;" type_identifier identifier ;) (declaration "bool bVar20;" primitive_type identifier ;) (declaration "long *plVar21;" (sized_type_specifier "long" long) (pointer_declarator "*plVar21" * identifier) ;) (declaration "ulong *puVar22;" type_identifier (pointer_declarator "*puVar22" * identifier) ;) (declaration "byte bVar23;" type_identifier identifier ;) (declaration "char cVar24;" primitive_type identifier ;) (declaration "undefined1 auVar25 [16];" type_identifier (array_declarator "auVar25 [16]" identifier [ number_literal ]) ;) (declaration "undefined8 uStack_80;" type_identifier identifier ;) (declaration "undefined1 auStack_78 [8];" type_identifier (array_declarator "auStack_78 [8]" identifier [ number_literal ]) ;) (declaration "undefined8 uStack_70;" type_identifier identifier ;) (declaration "long *local_68;" (sized_type_specifier "long" long) (pointer_declarator "*local_68" * identifier) ;) (declaration "int *local_60;" primitive_type (pointer_declarator "*local_60" * identifier) ;) (declaration "ulong *local_58;" type_identifier (pointer_declarator "*local_58" * identifier) ;) (declaration "ulong local_50;" type_identifier identifier ;) (declaration "long *local_48;" (sized_type_specifier "long" long) (pointer_declarator "*local_48" * identifier) ;) (declaration "long *local_40;" (sized_type_specifier "long" long) (pointer_declarator "*local_40" * identifier) ;) (expression_statement "iVar5 = (int)param_3;" (assignment_expression "iVar5 = (int)param_3" identifier = (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "local_48 = (long *)CONCAT44(local_48._4_4_,iVar5);" (assignment_expression "local_48 = (long *)CONCAT44(local_48._4_4_,iVar5)" identifier = (cast_expression "(long *)CONCAT44(local_48._4_4_,iVar5)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (call_expression "CONCAT44(local_48._4_4_,iVar5)" identifier (argument_list "(local_48._4_4_,iVar5)" ( (field_expression "local_48._4_4_" identifier . field_identifier) , identifier ))))) ;) (expression_statement "uStack_80 = 0x2eaabc;" (assignment_expression "uStack_80 = 0x2eaabc" identifier = number_literal) ;) (expression_statement "local_60 = param_6;" (assignment_expression "local_60 = param_6" identifier = identifier) ;) (expression_statement "local_50 = param_3;" (assignment_expression "local_50 = param_3" identifier = identifier) ;) (expression_statement "local_40 = param_4;" (assignment_expression "local_40 = param_4" identifier = identifier) ;) (expression_statement "puVar7 = (ulong *)FUN_00288720(param_9 + 0xd0);" (assignment_expression "puVar7 = (ulong *)FUN_00288720(param_9 + 0xd0)" identifier = (cast_expression "(ulong *)FUN_00288720(param_9 + 0xd0)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00288720(param_9 + 0xd0)" identifier (argument_list "(param_9 + 0xd0)" ( (binary_expression "param_9 + 0xd0" identifier + number_literal) ))))) ;) (expression_statement "lVar3 = -(param_8 * 8 + 0x17 & 0xfffffffffffffff0);" (assignment_expression "lVar3 = -(param_8 * 8 + 0x17 & 0xfffffffffffffff0)" identifier = (unary_expression "-(param_8 * 8 + 0x17 & 0xfffffffffffffff0)" - (parenthesized_expression "(param_8 * 8 + 0x17 & 0xfffffffffffffff0)" ( (binary_expression "param_8 * 8 + 0x17 & 0xfffffffffffffff0" (binary_expression "param_8 * 8 + 0x17" (binary_expression "param_8 * 8" identifier * number_literal) + number_literal) & number_literal) )))) ;) (expression_statement "puVar16 = auStack_78 + lVar3;" (assignment_expression "puVar16 = auStack_78 + lVar3" identifier = (binary_expression "auStack_78 + lVar3" identifier + identifier)) ;) (expression_statement "puVar22 = (ulong *)((long)&uStack_70 + lVar3);" (assignment_expression "puVar22 = (ulong *)((long)&uStack_70 + lVar3)" identifier = (cast_expression "(ulong *)((long)&uStack_70 + lVar3)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)&uStack_70 + lVar3)" ( (binary_expression "(long)&uStack_70 + lVar3" (cast_expression "(long)&uStack_70" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "&uStack_70" & identifier)) + identifier) )))) ;) (expression_statement "bVar20 = param_2 != (long *)0x0 && iVar5 == -1;" (assignment_expression "bVar20 = param_2 != (long *)0x0 && iVar5 == -1" identifier = (binary_expression "param_2 != (long *)0x0 && iVar5 == -1" (binary_expression "param_2 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) && (binary_expression "iVar5 == -1" identifier == number_literal))) ;) (expression_statement "cVar24 = iVar5 == -1;" (assignment_expression "cVar24 = iVar5 == -1" identifier = (binary_expression "iVar5 == -1" identifier == number_literal)) ;) (expression_statement "bVar10 = bVar20;" (assignment_expression "bVar10 = bVar20" identifier = identifier) ;) (if_statement "if ((bVar20) && (cVar24 = '\0', (ulong)param_2[3] <= (ulong)param_2[2])) {\n    local_68 = (long *)((ulong)local_68 & 0xffffffffffffff00);\n    pcVar2 = *(code **)(*param_2 + 0x48);\n    local_58 = puVar7;\n    *(undefined8 *)(auStack_78 + lVar3 + -8) = 0x2eae52;\n    iVar5 = (*pcVar2)(param_2);\n    puVar7 = local_58;\n    cVar24 = (byte)local_68;\n    if (iVar5 == -1) {\n      param_2 = (long *)0x0;\n      bVar10 = false;\n      cVar24 = bVar20;\n    }\n  }" if (parenthesized_expression "((bVar20) && (cVar24 = '\0', (ulong)param_2[3] <= (ulong)param_2[2]))" ( (binary_expression "(bVar20) && (cVar24 = '\0', (ulong)param_2[3] <= (ulong)param_2[2])" (parenthesized_expression "(bVar20)" ( identifier )) && (parenthesized_expression "(cVar24 = '\0', (ulong)param_2[3] <= (ulong)param_2[2])" ( (comma_expression "cVar24 = '\0', (ulong)param_2[3] <= (ulong)param_2[2]" (assignment_expression "cVar24 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) , (binary_expression "(ulong)param_2[3] <= (ulong)param_2[2]" (cast_expression "(ulong)param_2[3]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_2[3]" identifier [ number_literal ])) <= (cast_expression "(ulong)param_2[2]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_2[2]" identifier [ number_literal ])))) ))) )) (compound_statement "{\n    local_68 = (long *)((ulong)local_68 & 0xffffffffffffff00);\n    pcVar2 = *(code **)(*param_2 + 0x48);\n    local_58 = puVar7;\n    *(undefined8 *)(auStack_78 + lVar3 + -8) = 0x2eae52;\n    iVar5 = (*pcVar2)(param_2);\n    puVar7 = local_58;\n    cVar24 = (byte)local_68;\n    if (iVar5 == -1) {\n      param_2 = (long *)0x0;\n      bVar10 = false;\n      cVar24 = bVar20;\n    }\n  }" { (expression_statement "local_68 = (long *)((ulong)local_68 & 0xffffffffffffff00);" (assignment_expression "local_68 = (long *)((ulong)local_68 & 0xffffffffffffff00)" identifier = (cast_expression "(long *)((ulong)local_68 & 0xffffffffffffff00)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((ulong)local_68 & 0xffffffffffffff00)" ( (binary_expression "(ulong)local_68 & 0xffffffffffffff00" (cast_expression "(ulong)local_68" ( (type_descriptor "ulong" type_identifier) ) identifier) & number_literal) )))) ;) (expression_statement "pcVar2 = *(code **)(*param_2 + 0x48);" (assignment_expression "pcVar2 = *(code **)(*param_2 + 0x48)" identifier = (pointer_expression "*(code **)(*param_2 + 0x48)" * (cast_expression "(code **)(*param_2 + 0x48)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_2 + 0x48)" ( (binary_expression "*param_2 + 0x48" (pointer_expression "*param_2" * identifier) + number_literal) ))))) ;) (expression_statement "local_58 = puVar7;" (assignment_expression "local_58 = puVar7" identifier = identifier) ;) (expression_statement "*(undefined8 *)(auStack_78 + lVar3 + -8) = 0x2eae52;" (assignment_expression "*(undefined8 *)(auStack_78 + lVar3 + -8) = 0x2eae52" (pointer_expression "*(undefined8 *)(auStack_78 + lVar3 + -8)" * (cast_expression "(undefined8 *)(auStack_78 + lVar3 + -8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(auStack_78 + lVar3 + -8)" ( (binary_expression "auStack_78 + lVar3 + -8" (binary_expression "auStack_78 + lVar3" identifier + identifier) + number_literal) )))) = number_literal) ;) (expression_statement "iVar5 = (*pcVar2)(param_2);" (assignment_expression "iVar5 = (*pcVar2)(param_2)" identifier = (call_expression "(*pcVar2)(param_2)" (parenthesized_expression "(*pcVar2)" ( (pointer_expression "*pcVar2" * identifier) )) (argument_list "(param_2)" ( identifier )))) ;) (expression_statement "puVar7 = local_58;" (assignment_expression "puVar7 = local_58" identifier = identifier) ;) (expression_statement "cVar24 = (byte)local_68;" (assignment_expression "cVar24 = (byte)local_68" identifier = (cast_expression "(byte)local_68" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (if_statement "if (iVar5 == -1) {\n      param_2 = (long *)0x0;\n      bVar10 = false;\n      cVar24 = bVar20;\n    }" if (parenthesized_expression "(iVar5 == -1)" ( (binary_expression "iVar5 == -1" identifier == number_literal) )) (compound_statement "{\n      param_2 = (long *)0x0;\n      bVar10 = false;\n      cVar24 = bVar20;\n    }" { (expression_statement "param_2 = (long *)0x0;" (assignment_expression "param_2 = (long *)0x0" identifier = (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "bVar10 = false;" (assignment_expression "bVar10 = false" identifier = false) ;) (expression_statement "cVar24 = bVar20;" (assignment_expression "cVar24 = bVar20" identifier = identifier) ;) })) })) (expression_statement "bVar23 = param_5 == -1;" (assignment_expression "bVar23 = param_5 == -1" identifier = (binary_expression "param_5 == -1" identifier == number_literal)) ;) (expression_statement "bVar14 = param_4 != (long *)0x0 && (bool)bVar23;" (assignment_expression "bVar14 = param_4 != (long *)0x0 && (bool)bVar23" identifier = (binary_expression "param_4 != (long *)0x0 && (bool)bVar23" (binary_expression "param_4 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) && (cast_expression "(bool)bVar23" ( (type_descriptor "bool" primitive_type) ) identifier))) ;) (expression_statement "uVar18 = (uint)local_48;" (assignment_expression "uVar18 = (uint)local_48" identifier = (cast_expression "(uint)local_48" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "bVar20 = (bool)bVar23;" (assignment_expression "bVar20 = (bool)bVar23" identifier = (cast_expression "(bool)bVar23" ( (type_descriptor "bool" primitive_type) ) identifier)) ;) (if_statement "if (bVar14) {\n    if ((ulong)param_4[2] < (ulong)param_4[3]) {\n      bVar20 = false;\n    }\n    else {\n      uStack_70._4_4_ = CONCAT31(uStack_70._5_3_,bVar23);\n      local_68 = (long *)CONCAT71(local_68._1_7_,cVar24);\n      pcVar2 = *(code **)(*param_4 + 0x48);\n      local_58 = puVar7;\n      *(undefined8 *)(auStack_78 + lVar3 + -8) = 0x2eaf99;\n      iVar5 = (*pcVar2)(param_4);\n      local_40 = (long *)0x0;\n      if (iVar5 != -1) {\n        local_40 = param_4;\n      }\n      puVar7 = local_58;\n      uVar18 = (uint)local_48;\n      cVar24 = (byte)local_68;\n      bVar23 = uStack_70._4_1_;\n      bVar20 = iVar5 == -1 && bVar14;\n    }\n  }" if (parenthesized_expression "(bVar14)" ( identifier )) (compound_statement "{\n    if ((ulong)param_4[2] < (ulong)param_4[3]) {\n      bVar20 = false;\n    }\n    else {\n      uStack_70._4_4_ = CONCAT31(uStack_70._5_3_,bVar23);\n      local_68 = (long *)CONCAT71(local_68._1_7_,cVar24);\n      pcVar2 = *(code **)(*param_4 + 0x48);\n      local_58 = puVar7;\n      *(undefined8 *)(auStack_78 + lVar3 + -8) = 0x2eaf99;\n      iVar5 = (*pcVar2)(param_4);\n      local_40 = (long *)0x0;\n      if (iVar5 != -1) {\n        local_40 = param_4;\n      }\n      puVar7 = local_58;\n      uVar18 = (uint)local_48;\n      cVar24 = (byte)local_68;\n      bVar23 = uStack_70._4_1_;\n      bVar20 = iVar5 == -1 && bVar14;\n    }\n  }" { (if_statement "if ((ulong)param_4[2] < (ulong)param_4[3]) {\n      bVar20 = false;\n    }\n    else {\n      uStack_70._4_4_ = CONCAT31(uStack_70._5_3_,bVar23);\n      local_68 = (long *)CONCAT71(local_68._1_7_,cVar24);\n      pcVar2 = *(code **)(*param_4 + 0x48);\n      local_58 = puVar7;\n      *(undefined8 *)(auStack_78 + lVar3 + -8) = 0x2eaf99;\n      iVar5 = (*pcVar2)(param_4);\n      local_40 = (long *)0x0;\n      if (iVar5 != -1) {\n        local_40 = param_4;\n      }\n      puVar7 = local_58;\n      uVar18 = (uint)local_48;\n      cVar24 = (byte)local_68;\n      bVar23 = uStack_70._4_1_;\n      bVar20 = iVar5 == -1 && bVar14;\n    }" if (parenthesized_expression "((ulong)param_4[2] < (ulong)param_4[3])" ( (binary_expression "(ulong)param_4[2] < (ulong)param_4[3]" (cast_expression "(ulong)param_4[2]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_4[2]" identifier [ number_literal ])) < (cast_expression "(ulong)param_4[3]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_4[3]" identifier [ number_literal ]))) )) (compound_statement "{\n      bVar20 = false;\n    }" { (expression_statement "bVar20 = false;" (assignment_expression "bVar20 = false" identifier = false) ;) }) (else_clause "else {\n      uStack_70._4_4_ = CONCAT31(uStack_70._5_3_,bVar23);\n      local_68 = (long *)CONCAT71(local_68._1_7_,cVar24);\n      pcVar2 = *(code **)(*param_4 + 0x48);\n      local_58 = puVar7;\n      *(undefined8 *)(auStack_78 + lVar3 + -8) = 0x2eaf99;\n      iVar5 = (*pcVar2)(param_4);\n      local_40 = (long *)0x0;\n      if (iVar5 != -1) {\n        local_40 = param_4;\n      }\n      puVar7 = local_58;\n      uVar18 = (uint)local_48;\n      cVar24 = (byte)local_68;\n      bVar23 = uStack_70._4_1_;\n      bVar20 = iVar5 == -1 && bVar14;\n    }" else (compound_statement "{\n      uStack_70._4_4_ = CONCAT31(uStack_70._5_3_,bVar23);\n      local_68 = (long *)CONCAT71(local_68._1_7_,cVar24);\n      pcVar2 = *(code **)(*param_4 + 0x48);\n      local_58 = puVar7;\n      *(undefined8 *)(auStack_78 + lVar3 + -8) = 0x2eaf99;\n      iVar5 = (*pcVar2)(param_4);\n      local_40 = (long *)0x0;\n      if (iVar5 != -1) {\n        local_40 = param_4;\n      }\n      puVar7 = local_58;\n      uVar18 = (uint)local_48;\n      cVar24 = (byte)local_68;\n      bVar23 = uStack_70._4_1_;\n      bVar20 = iVar5 == -1 && bVar14;\n    }" { (expression_statement "uStack_70._4_4_ = CONCAT31(uStack_70._5_3_,bVar23);" (assignment_expression "uStack_70._4_4_ = CONCAT31(uStack_70._5_3_,bVar23)" (field_expression "uStack_70._4_4_" identifier . field_identifier) = (call_expression "CONCAT31(uStack_70._5_3_,bVar23)" identifier (argument_list "(uStack_70._5_3_,bVar23)" ( (field_expression "uStack_70._5_3_" identifier . field_identifier) , identifier )))) ;) (expression_statement "local_68 = (long *)CONCAT71(local_68._1_7_,cVar24);" (assignment_expression "local_68 = (long *)CONCAT71(local_68._1_7_,cVar24)" identifier = (cast_expression "(long *)CONCAT71(local_68._1_7_,cVar24)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (call_expression "CONCAT71(local_68._1_7_,cVar24)" identifier (argument_list "(local_68._1_7_,cVar24)" ( (field_expression "local_68._1_7_" identifier . field_identifier) , identifier ))))) ;) (expression_statement "pcVar2 = *(code **)(*param_4 + 0x48);" (assignment_expression "pcVar2 = *(code **)(*param_4 + 0x48)" identifier = (pointer_expression "*(code **)(*param_4 + 0x48)" * (cast_expression "(code **)(*param_4 + 0x48)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_4 + 0x48)" ( (binary_expression "*param_4 + 0x48" (pointer_expression "*param_4" * identifier) + number_literal) ))))) ;) (expression_statement "local_58 = puVar7;" (assignment_expression "local_58 = puVar7" identifier = identifier) ;) (expression_statement "*(undefined8 *)(auStack_78 + lVar3 + -8) = 0x2eaf99;" (assignment_expression "*(undefined8 *)(auStack_78 + lVar3 + -8) = 0x2eaf99" (pointer_expression "*(undefined8 *)(auStack_78 + lVar3 + -8)" * (cast_expression "(undefined8 *)(auStack_78 + lVar3 + -8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(auStack_78 + lVar3 + -8)" ( (binary_expression "auStack_78 + lVar3 + -8" (binary_expression "auStack_78 + lVar3" identifier + identifier) + number_literal) )))) = number_literal) ;) (expression_statement "iVar5 = (*pcVar2)(param_4);" (assignment_expression "iVar5 = (*pcVar2)(param_4)" identifier = (call_expression "(*pcVar2)(param_4)" (parenthesized_expression "(*pcVar2)" ( (pointer_expression "*pcVar2" * identifier) )) (argument_list "(param_4)" ( identifier )))) ;) (expression_statement "local_40 = (long *)0x0;" (assignment_expression "local_40 = (long *)0x0" identifier = (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (iVar5 != -1) {\n        local_40 = param_4;\n      }" if (parenthesized_expression "(iVar5 != -1)" ( (binary_expression "iVar5 != -1" identifier != number_literal) )) (compound_statement "{\n        local_40 = param_4;\n      }" { (expression_statement "local_40 = param_4;" (assignment_expression "local_40 = param_4" identifier = identifier) ;) })) (expression_statement "puVar7 = local_58;" (assignment_expression "puVar7 = local_58" identifier = identifier) ;) (expression_statement "uVar18 = (uint)local_48;" (assignment_expression "uVar18 = (uint)local_48" identifier = (cast_expression "(uint)local_48" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "cVar24 = (byte)local_68;" (assignment_expression "cVar24 = (byte)local_68" identifier = (cast_expression "(byte)local_68" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "bVar23 = uStack_70._4_1_;" (assignment_expression "bVar23 = uStack_70._4_1_" identifier = (field_expression "uStack_70._4_1_" identifier . field_identifier)) ;) (expression_statement "bVar20 = iVar5 == -1 && bVar14;" (assignment_expression "bVar20 = iVar5 == -1 && bVar14" identifier = (binary_expression "iVar5 == -1 && bVar14" (binary_expression "iVar5 == -1" identifier == number_literal) && identifier)) ;) }))) })) (if_statement "if ((bool)cVar24 == bVar20) {\n    uVar19 = 0;\n    uVar15 = 0;\n    puVar16 = auStack_78 + lVar3;\n    puVar7 = (ulong *)0x0;\n  }\n  else {\n    uVar6 = uVar18;\n    if (bVar10) {\n      if ((byte *)param_2[2] < (byte *)param_2[3]) {\n        uVar6 = (uint)*(byte *)param_2[2];\n      }\n      else {\n        local_68 = (long *)CONCAT71(local_68._1_7_,bVar23);\n        local_48 = (long *)CONCAT44(local_48._4_4_,uVar18);\n        pcVar2 = *(code **)(*param_2 + 0x48);\n        local_58 = puVar7;\n        *(undefined8 *)(auStack_78 + lVar3 + -8) = 0x2eafe4;\n        uVar6 = (*pcVar2)(param_2);\n        puVar7 = local_58;\n        uVar18 = (uint)local_48;\n        bVar23 = (byte)local_68;\n        if (uVar6 == 0xffffffff) {\n          param_2 = (long *)0x0;\n          uVar6 = 0xffffffff;\n        }\n      }\n    }\n    if ((long *)(param_8 * 2) == (long *)0x0) {\n      uVar15 = 0;\n      puVar7 = (ulong *)0x0;\n      uVar19 = 0;\n    }\n    else {\n      uVar15 = 0;\n      plVar21 = (long *)0x0;\n      uStack_70._3_1_ = bVar23;\n      uStack_70._4_4_ = uVar18;\n      local_68 = param_2;\n      local_58 = puVar22;\n      local_48 = (long *)(param_8 * 2);\n      do {\n        while (**(char **)(param_7 + (long)plVar21 * 8) == (char)uVar6) {\nLAB_002ead54:\n          *(int *)((long)local_58 + uVar15 * 4) = (int)plVar21;\n          uVar15 = uVar15 + 1;\n          plVar21 = (long *)((long)plVar21 + 1);\n          if (local_48 == plVar21) goto LAB_002ead6a;\n        }\n        pcVar2 = *(code **)(*puVar7 + 0x10);\n        *(undefined8 *)(auStack_78 + lVar3 + -8) = 0x2ead39;\n        cVar24 = (*pcVar2)(puVar7);\n        if (cVar24 == (char)uVar6) goto LAB_002ead54;\n        plVar21 = (long *)((long)plVar21 + 1);\n      } while (local_48 != plVar21);\nLAB_002ead6a:\n      puVar22 = local_58;\n      plVar21 = local_68;\n      uVar19 = 0;\n      puVar16 = auStack_78 + lVar3;\n      puVar7 = (ulong *)0x0;\n      param_2 = local_68;\n      uVar18 = uStack_70._4_4_;\n      bVar23 = uStack_70._3_1_;\n      if (uVar15 != 0) {\n        if ((ulong)local_68[2] < (ulong)local_68[3]) {\n          local_68[2] = local_68[2] + 1;\n          local_48._0_1_ = uStack_70._3_1_;\n        }\n        else {\n          local_48 = (long *)CONCAT71(local_48._1_7_,uStack_70._3_1_);\n          pcVar2 = *(code **)(*local_68 + 0x50);\n          *(undefined8 *)(auStack_78 + lVar3 + -8) = 0x2eb01f;\n          (*pcVar2)(plVar21);\n        }\n        local_68 = (long *)CONCAT71(local_68._1_7_,(byte)local_48);\n        local_48 = plVar21;\n        lVar4 = -(uVar15 * 8 + 0x17 & 0xfffffffffffffff0);\n        puVar16 = auStack_78 + lVar4 + lVar3;\n        uVar19 = 0;\n        puVar7 = (ulong *)((long)&uStack_70 + lVar4 + lVar3);\n        local_58 = puVar7;\n        do {\n          __s = *(char **)(param_7 + (long)*(int *)((long)puVar22 + uVar19 * 4) * 8);\n          *(undefined8 *)(auStack_78 + lVar4 + lVar3 + -8) = 0x2eaded;\n          sVar9 = strlen(__s);\n          puVar7[uVar19] = sVar9;\n          uVar19 = uVar19 + 1;\n        } while (uVar15 != uVar19);\n        uVar18 = 0xffffffff;\n        uVar19 = 1;\n        puVar7 = local_58;\n        param_2 = local_48;\n        bVar23 = (byte)local_68;\n      }\n    }\n  }" if (parenthesized_expression "((bool)cVar24 == bVar20)" ( (binary_expression "(bool)cVar24 == bVar20" (cast_expression "(bool)cVar24" ( (type_descriptor "bool" primitive_type) ) identifier) == identifier) )) (compound_statement "{\n    uVar19 = 0;\n    uVar15 = 0;\n    puVar16 = auStack_78 + lVar3;\n    puVar7 = (ulong *)0x0;\n  }" { (expression_statement "uVar19 = 0;" (assignment_expression "uVar19 = 0" identifier = number_literal) ;) (expression_statement "uVar15 = 0;" (assignment_expression "uVar15 = 0" identifier = number_literal) ;) (expression_statement "puVar16 = auStack_78 + lVar3;" (assignment_expression "puVar16 = auStack_78 + lVar3" identifier = (binary_expression "auStack_78 + lVar3" identifier + identifier)) ;) (expression_statement "puVar7 = (ulong *)0x0;" (assignment_expression "puVar7 = (ulong *)0x0" identifier = (cast_expression "(ulong *)0x0" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else {\n    uVar6 = uVar18;\n    if (bVar10) {\n      if ((byte *)param_2[2] < (byte *)param_2[3]) {\n        uVar6 = (uint)*(byte *)param_2[2];\n      }\n      else {\n        local_68 = (long *)CONCAT71(local_68._1_7_,bVar23);\n        local_48 = (long *)CONCAT44(local_48._4_4_,uVar18);\n        pcVar2 = *(code **)(*param_2 + 0x48);\n        local_58 = puVar7;\n        *(undefined8 *)(auStack_78 + lVar3 + -8) = 0x2eafe4;\n        uVar6 = (*pcVar2)(param_2);\n        puVar7 = local_58;\n        uVar18 = (uint)local_48;\n        bVar23 = (byte)local_68;\n        if (uVar6 == 0xffffffff) {\n          param_2 = (long *)0x0;\n          uVar6 = 0xffffffff;\n        }\n      }\n    }\n    if ((long *)(param_8 * 2) == (long *)0x0) {\n      uVar15 = 0;\n      puVar7 = (ulong *)0x0;\n      uVar19 = 0;\n    }\n    else {\n      uVar15 = 0;\n      plVar21 = (long *)0x0;\n      uStack_70._3_1_ = bVar23;\n      uStack_70._4_4_ = uVar18;\n      local_68 = param_2;\n      local_58 = puVar22;\n      local_48 = (long *)(param_8 * 2);\n      do {\n        while (**(char **)(param_7 + (long)plVar21 * 8) == (char)uVar6) {\nLAB_002ead54:\n          *(int *)((long)local_58 + uVar15 * 4) = (int)plVar21;\n          uVar15 = uVar15 + 1;\n          plVar21 = (long *)((long)plVar21 + 1);\n          if (local_48 == plVar21) goto LAB_002ead6a;\n        }\n        pcVar2 = *(code **)(*puVar7 + 0x10);\n        *(undefined8 *)(auStack_78 + lVar3 + -8) = 0x2ead39;\n        cVar24 = (*pcVar2)(puVar7);\n        if (cVar24 == (char)uVar6) goto LAB_002ead54;\n        plVar21 = (long *)((long)plVar21 + 1);\n      } while (local_48 != plVar21);\nLAB_002ead6a:\n      puVar22 = local_58;\n      plVar21 = local_68;\n      uVar19 = 0;\n      puVar16 = auStack_78 + lVar3;\n      puVar7 = (ulong *)0x0;\n      param_2 = local_68;\n      uVar18 = uStack_70._4_4_;\n      bVar23 = uStack_70._3_1_;\n      if (uVar15 != 0) {\n        if ((ulong)local_68[2] < (ulong)local_68[3]) {\n          local_68[2] = local_68[2] + 1;\n          local_48._0_1_ = uStack_70._3_1_;\n        }\n        else {\n          local_48 = (long *)CONCAT71(local_48._1_7_,uStack_70._3_1_);\n          pcVar2 = *(code **)(*local_68 + 0x50);\n          *(undefined8 *)(auStack_78 + lVar3 + -8) = 0x2eb01f;\n          (*pcVar2)(plVar21);\n        }\n        local_68 = (long *)CONCAT71(local_68._1_7_,(byte)local_48);\n        local_48 = plVar21;\n        lVar4 = -(uVar15 * 8 + 0x17 & 0xfffffffffffffff0);\n        puVar16 = auStack_78 + lVar4 + lVar3;\n        uVar19 = 0;\n        puVar7 = (ulong *)((long)&uStack_70 + lVar4 + lVar3);\n        local_58 = puVar7;\n        do {\n          __s = *(char **)(param_7 + (long)*(int *)((long)puVar22 + uVar19 * 4) * 8);\n          *(undefined8 *)(auStack_78 + lVar4 + lVar3 + -8) = 0x2eaded;\n          sVar9 = strlen(__s);\n          puVar7[uVar19] = sVar9;\n          uVar19 = uVar19 + 1;\n        } while (uVar15 != uVar19);\n        uVar18 = 0xffffffff;\n        uVar19 = 1;\n        puVar7 = local_58;\n        param_2 = local_48;\n        bVar23 = (byte)local_68;\n      }\n    }\n  }" else (compound_statement "{\n    uVar6 = uVar18;\n    if (bVar10) {\n      if ((byte *)param_2[2] < (byte *)param_2[3]) {\n        uVar6 = (uint)*(byte *)param_2[2];\n      }\n      else {\n        local_68 = (long *)CONCAT71(local_68._1_7_,bVar23);\n        local_48 = (long *)CONCAT44(local_48._4_4_,uVar18);\n        pcVar2 = *(code **)(*param_2 + 0x48);\n        local_58 = puVar7;\n        *(undefined8 *)(auStack_78 + lVar3 + -8) = 0x2eafe4;\n        uVar6 = (*pcVar2)(param_2);\n        puVar7 = local_58;\n        uVar18 = (uint)local_48;\n        bVar23 = (byte)local_68;\n        if (uVar6 == 0xffffffff) {\n          param_2 = (long *)0x0;\n          uVar6 = 0xffffffff;\n        }\n      }\n    }\n    if ((long *)(param_8 * 2) == (long *)0x0) {\n      uVar15 = 0;\n      puVar7 = (ulong *)0x0;\n      uVar19 = 0;\n    }\n    else {\n      uVar15 = 0;\n      plVar21 = (long *)0x0;\n      uStack_70._3_1_ = bVar23;\n      uStack_70._4_4_ = uVar18;\n      local_68 = param_2;\n      local_58 = puVar22;\n      local_48 = (long *)(param_8 * 2);\n      do {\n        while (**(char **)(param_7 + (long)plVar21 * 8) == (char)uVar6) {\nLAB_002ead54:\n          *(int *)((long)local_58 + uVar15 * 4) = (int)plVar21;\n          uVar15 = uVar15 + 1;\n          plVar21 = (long *)((long)plVar21 + 1);\n          if (local_48 == plVar21) goto LAB_002ead6a;\n        }\n        pcVar2 = *(code **)(*puVar7 + 0x10);\n        *(undefined8 *)(auStack_78 + lVar3 + -8) = 0x2ead39;\n        cVar24 = (*pcVar2)(puVar7);\n        if (cVar24 == (char)uVar6) goto LAB_002ead54;\n        plVar21 = (long *)((long)plVar21 + 1);\n      } while (local_48 != plVar21);\nLAB_002ead6a:\n      puVar22 = local_58;\n      plVar21 = local_68;\n      uVar19 = 0;\n      puVar16 = auStack_78 + lVar3;\n      puVar7 = (ulong *)0x0;\n      param_2 = local_68;\n      uVar18 = uStack_70._4_4_;\n      bVar23 = uStack_70._3_1_;\n      if (uVar15 != 0) {\n        if ((ulong)local_68[2] < (ulong)local_68[3]) {\n          local_68[2] = local_68[2] + 1;\n          local_48._0_1_ = uStack_70._3_1_;\n        }\n        else {\n          local_48 = (long *)CONCAT71(local_48._1_7_,uStack_70._3_1_);\n          pcVar2 = *(code **)(*local_68 + 0x50);\n          *(undefined8 *)(auStack_78 + lVar3 + -8) = 0x2eb01f;\n          (*pcVar2)(plVar21);\n        }\n        local_68 = (long *)CONCAT71(local_68._1_7_,(byte)local_48);\n        local_48 = plVar21;\n        lVar4 = -(uVar15 * 8 + 0x17 & 0xfffffffffffffff0);\n        puVar16 = auStack_78 + lVar4 + lVar3;\n        uVar19 = 0;\n        puVar7 = (ulong *)((long)&uStack_70 + lVar4 + lVar3);\n        local_58 = puVar7;\n        do {\n          __s = *(char **)(param_7 + (long)*(int *)((long)puVar22 + uVar19 * 4) * 8);\n          *(undefined8 *)(auStack_78 + lVar4 + lVar3 + -8) = 0x2eaded;\n          sVar9 = strlen(__s);\n          puVar7[uVar19] = sVar9;\n          uVar19 = uVar19 + 1;\n        } while (uVar15 != uVar19);\n        uVar18 = 0xffffffff;\n        uVar19 = 1;\n        puVar7 = local_58;\n        param_2 = local_48;\n        bVar23 = (byte)local_68;\n      }\n    }\n  }" { (expression_statement "uVar6 = uVar18;" (assignment_expression "uVar6 = uVar18" identifier = identifier) ;) (if_statement "if (bVar10) {\n      if ((byte *)param_2[2] < (byte *)param_2[3]) {\n        uVar6 = (uint)*(byte *)param_2[2];\n      }\n      else {\n        local_68 = (long *)CONCAT71(local_68._1_7_,bVar23);\n        local_48 = (long *)CONCAT44(local_48._4_4_,uVar18);\n        pcVar2 = *(code **)(*param_2 + 0x48);\n        local_58 = puVar7;\n        *(undefined8 *)(auStack_78 + lVar3 + -8) = 0x2eafe4;\n        uVar6 = (*pcVar2)(param_2);\n        puVar7 = local_58;\n        uVar18 = (uint)local_48;\n        bVar23 = (byte)local_68;\n        if (uVar6 == 0xffffffff) {\n          param_2 = (long *)0x0;\n          uVar6 = 0xffffffff;\n        }\n      }\n    }" if (parenthesized_expression "(bVar10)" ( identifier )) (compound_statement "{\n      if ((byte *)param_2[2] < (byte *)param_2[3]) {\n        uVar6 = (uint)*(byte *)param_2[2];\n      }\n      else {\n        local_68 = (long *)CONCAT71(local_68._1_7_,bVar23);\n        local_48 = (long *)CONCAT44(local_48._4_4_,uVar18);\n        pcVar2 = *(code **)(*param_2 + 0x48);\n        local_58 = puVar7;\n        *(undefined8 *)(auStack_78 + lVar3 + -8) = 0x2eafe4;\n        uVar6 = (*pcVar2)(param_2);\n        puVar7 = local_58;\n        uVar18 = (uint)local_48;\n        bVar23 = (byte)local_68;\n        if (uVar6 == 0xffffffff) {\n          param_2 = (long *)0x0;\n          uVar6 = 0xffffffff;\n        }\n      }\n    }" { (if_statement "if ((byte *)param_2[2] < (byte *)param_2[3]) {\n        uVar6 = (uint)*(byte *)param_2[2];\n      }\n      else {\n        local_68 = (long *)CONCAT71(local_68._1_7_,bVar23);\n        local_48 = (long *)CONCAT44(local_48._4_4_,uVar18);\n        pcVar2 = *(code **)(*param_2 + 0x48);\n        local_58 = puVar7;\n        *(undefined8 *)(auStack_78 + lVar3 + -8) = 0x2eafe4;\n        uVar6 = (*pcVar2)(param_2);\n        puVar7 = local_58;\n        uVar18 = (uint)local_48;\n        bVar23 = (byte)local_68;\n        if (uVar6 == 0xffffffff) {\n          param_2 = (long *)0x0;\n          uVar6 = 0xffffffff;\n        }\n      }" if (parenthesized_expression "((byte *)param_2[2] < (byte *)param_2[3])" ( (binary_expression "(byte *)param_2[2] < (byte *)param_2[3]" (cast_expression "(byte *)param_2[2]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[2]" identifier [ number_literal ])) < (cast_expression "(byte *)param_2[3]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[3]" identifier [ number_literal ]))) )) (compound_statement "{\n        uVar6 = (uint)*(byte *)param_2[2];\n      }" { (expression_statement "uVar6 = (uint)*(byte *)param_2[2];" (assignment_expression "uVar6 = (uint)*(byte *)param_2[2]" identifier = (binary_expression "(uint)*(byte *)param_2[2]" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)param_2[2]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[2]" identifier [ number_literal ])))) ;) }) (else_clause "else {\n        local_68 = (long *)CONCAT71(local_68._1_7_,bVar23);\n        local_48 = (long *)CONCAT44(local_48._4_4_,uVar18);\n        pcVar2 = *(code **)(*param_2 + 0x48);\n        local_58 = puVar7;\n        *(undefined8 *)(auStack_78 + lVar3 + -8) = 0x2eafe4;\n        uVar6 = (*pcVar2)(param_2);\n        puVar7 = local_58;\n        uVar18 = (uint)local_48;\n        bVar23 = (byte)local_68;\n        if (uVar6 == 0xffffffff) {\n          param_2 = (long *)0x0;\n          uVar6 = 0xffffffff;\n        }\n      }" else (compound_statement "{\n        local_68 = (long *)CONCAT71(local_68._1_7_,bVar23);\n        local_48 = (long *)CONCAT44(local_48._4_4_,uVar18);\n        pcVar2 = *(code **)(*param_2 + 0x48);\n        local_58 = puVar7;\n        *(undefined8 *)(auStack_78 + lVar3 + -8) = 0x2eafe4;\n        uVar6 = (*pcVar2)(param_2);\n        puVar7 = local_58;\n        uVar18 = (uint)local_48;\n        bVar23 = (byte)local_68;\n        if (uVar6 == 0xffffffff) {\n          param_2 = (long *)0x0;\n          uVar6 = 0xffffffff;\n        }\n      }" { (expression_statement "local_68 = (long *)CONCAT71(local_68._1_7_,bVar23);" (assignment_expression "local_68 = (long *)CONCAT71(local_68._1_7_,bVar23)" identifier = (cast_expression "(long *)CONCAT71(local_68._1_7_,bVar23)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (call_expression "CONCAT71(local_68._1_7_,bVar23)" identifier (argument_list "(local_68._1_7_,bVar23)" ( (field_expression "local_68._1_7_" identifier . field_identifier) , identifier ))))) ;) (expression_statement "local_48 = (long *)CONCAT44(local_48._4_4_,uVar18);" (assignment_expression "local_48 = (long *)CONCAT44(local_48._4_4_,uVar18)" identifier = (cast_expression "(long *)CONCAT44(local_48._4_4_,uVar18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (call_expression "CONCAT44(local_48._4_4_,uVar18)" identifier (argument_list "(local_48._4_4_,uVar18)" ( (field_expression "local_48._4_4_" identifier . field_identifier) , identifier ))))) ;) (expression_statement "pcVar2 = *(code **)(*param_2 + 0x48);" (assignment_expression "pcVar2 = *(code **)(*param_2 + 0x48)" identifier = (pointer_expression "*(code **)(*param_2 + 0x48)" * (cast_expression "(code **)(*param_2 + 0x48)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_2 + 0x48)" ( (binary_expression "*param_2 + 0x48" (pointer_expression "*param_2" * identifier) + number_literal) ))))) ;) (expression_statement "local_58 = puVar7;" (assignment_expression "local_58 = puVar7" identifier = identifier) ;) (expression_statement "*(undefined8 *)(auStack_78 + lVar3 + -8) = 0x2eafe4;" (assignment_expression "*(undefined8 *)(auStack_78 + lVar3 + -8) = 0x2eafe4" (pointer_expression "*(undefined8 *)(auStack_78 + lVar3 + -8)" * (cast_expression "(undefined8 *)(auStack_78 + lVar3 + -8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(auStack_78 + lVar3 + -8)" ( (binary_expression "auStack_78 + lVar3 + -8" (binary_expression "auStack_78 + lVar3" identifier + identifier) + number_literal) )))) = number_literal) ;) (expression_statement "uVar6 = (*pcVar2)(param_2);" (assignment_expression "uVar6 = (*pcVar2)(param_2)" identifier = (call_expression "(*pcVar2)(param_2)" (parenthesized_expression "(*pcVar2)" ( (pointer_expression "*pcVar2" * identifier) )) (argument_list "(param_2)" ( identifier )))) ;) (expression_statement "puVar7 = local_58;" (assignment_expression "puVar7 = local_58" identifier = identifier) ;) (expression_statement "uVar18 = (uint)local_48;" (assignment_expression "uVar18 = (uint)local_48" identifier = (cast_expression "(uint)local_48" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "bVar23 = (byte)local_68;" (assignment_expression "bVar23 = (byte)local_68" identifier = (cast_expression "(byte)local_68" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (if_statement "if (uVar6 == 0xffffffff) {\n          param_2 = (long *)0x0;\n          uVar6 = 0xffffffff;\n        }" if (parenthesized_expression "(uVar6 == 0xffffffff)" ( (binary_expression "uVar6 == 0xffffffff" identifier == number_literal) )) (compound_statement "{\n          param_2 = (long *)0x0;\n          uVar6 = 0xffffffff;\n        }" { (expression_statement "param_2 = (long *)0x0;" (assignment_expression "param_2 = (long *)0x0" identifier = (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "uVar6 = 0xffffffff;" (assignment_expression "uVar6 = 0xffffffff" identifier = number_literal) ;) })) }))) })) (if_statement "if ((long *)(param_8 * 2) == (long *)0x0) {\n      uVar15 = 0;\n      puVar7 = (ulong *)0x0;\n      uVar19 = 0;\n    }\n    else {\n      uVar15 = 0;\n      plVar21 = (long *)0x0;\n      uStack_70._3_1_ = bVar23;\n      uStack_70._4_4_ = uVar18;\n      local_68 = param_2;\n      local_58 = puVar22;\n      local_48 = (long *)(param_8 * 2);\n      do {\n        while (**(char **)(param_7 + (long)plVar21 * 8) == (char)uVar6) {\nLAB_002ead54:\n          *(int *)((long)local_58 + uVar15 * 4) = (int)plVar21;\n          uVar15 = uVar15 + 1;\n          plVar21 = (long *)((long)plVar21 + 1);\n          if (local_48 == plVar21) goto LAB_002ead6a;\n        }\n        pcVar2 = *(code **)(*puVar7 + 0x10);\n        *(undefined8 *)(auStack_78 + lVar3 + -8) = 0x2ead39;\n        cVar24 = (*pcVar2)(puVar7);\n        if (cVar24 == (char)uVar6) goto LAB_002ead54;\n        plVar21 = (long *)((long)plVar21 + 1);\n      } while (local_48 != plVar21);\nLAB_002ead6a:\n      puVar22 = local_58;\n      plVar21 = local_68;\n      uVar19 = 0;\n      puVar16 = auStack_78 + lVar3;\n      puVar7 = (ulong *)0x0;\n      param_2 = local_68;\n      uVar18 = uStack_70._4_4_;\n      bVar23 = uStack_70._3_1_;\n      if (uVar15 != 0) {\n        if ((ulong)local_68[2] < (ulong)local_68[3]) {\n          local_68[2] = local_68[2] + 1;\n          local_48._0_1_ = uStack_70._3_1_;\n        }\n        else {\n          local_48 = (long *)CONCAT71(local_48._1_7_,uStack_70._3_1_);\n          pcVar2 = *(code **)(*local_68 + 0x50);\n          *(undefined8 *)(auStack_78 + lVar3 + -8) = 0x2eb01f;\n          (*pcVar2)(plVar21);\n        }\n        local_68 = (long *)CONCAT71(local_68._1_7_,(byte)local_48);\n        local_48 = plVar21;\n        lVar4 = -(uVar15 * 8 + 0x17 & 0xfffffffffffffff0);\n        puVar16 = auStack_78 + lVar4 + lVar3;\n        uVar19 = 0;\n        puVar7 = (ulong *)((long)&uStack_70 + lVar4 + lVar3);\n        local_58 = puVar7;\n        do {\n          __s = *(char **)(param_7 + (long)*(int *)((long)puVar22 + uVar19 * 4) * 8);\n          *(undefined8 *)(auStack_78 + lVar4 + lVar3 + -8) = 0x2eaded;\n          sVar9 = strlen(__s);\n          puVar7[uVar19] = sVar9;\n          uVar19 = uVar19 + 1;\n        } while (uVar15 != uVar19);\n        uVar18 = 0xffffffff;\n        uVar19 = 1;\n        puVar7 = local_58;\n        param_2 = local_48;\n        bVar23 = (byte)local_68;\n      }\n    }" if (parenthesized_expression "((long *)(param_8 * 2) == (long *)0x0)" ( (binary_expression "(long *)(param_8 * 2) == (long *)0x0" (cast_expression "(long *)(param_8 * 2)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_8 * 2)" ( (binary_expression "param_8 * 2" identifier * number_literal) ))) == (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      uVar15 = 0;\n      puVar7 = (ulong *)0x0;\n      uVar19 = 0;\n    }" { (expression_statement "uVar15 = 0;" (assignment_expression "uVar15 = 0" identifier = number_literal) ;) (expression_statement "puVar7 = (ulong *)0x0;" (assignment_expression "puVar7 = (ulong *)0x0" identifier = (cast_expression "(ulong *)0x0" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "uVar19 = 0;" (assignment_expression "uVar19 = 0" identifier = number_literal) ;) }) (else_clause "else {\n      uVar15 = 0;\n      plVar21 = (long *)0x0;\n      uStack_70._3_1_ = bVar23;\n      uStack_70._4_4_ = uVar18;\n      local_68 = param_2;\n      local_58 = puVar22;\n      local_48 = (long *)(param_8 * 2);\n      do {\n        while (**(char **)(param_7 + (long)plVar21 * 8) == (char)uVar6) {\nLAB_002ead54:\n          *(int *)((long)local_58 + uVar15 * 4) = (int)plVar21;\n          uVar15 = uVar15 + 1;\n          plVar21 = (long *)((long)plVar21 + 1);\n          if (local_48 == plVar21) goto LAB_002ead6a;\n        }\n        pcVar2 = *(code **)(*puVar7 + 0x10);\n        *(undefined8 *)(auStack_78 + lVar3 + -8) = 0x2ead39;\n        cVar24 = (*pcVar2)(puVar7);\n        if (cVar24 == (char)uVar6) goto LAB_002ead54;\n        plVar21 = (long *)((long)plVar21 + 1);\n      } while (local_48 != plVar21);\nLAB_002ead6a:\n      puVar22 = local_58;\n      plVar21 = local_68;\n      uVar19 = 0;\n      puVar16 = auStack_78 + lVar3;\n      puVar7 = (ulong *)0x0;\n      param_2 = local_68;\n      uVar18 = uStack_70._4_4_;\n      bVar23 = uStack_70._3_1_;\n      if (uVar15 != 0) {\n        if ((ulong)local_68[2] < (ulong)local_68[3]) {\n          local_68[2] = local_68[2] + 1;\n          local_48._0_1_ = uStack_70._3_1_;\n        }\n        else {\n          local_48 = (long *)CONCAT71(local_48._1_7_,uStack_70._3_1_);\n          pcVar2 = *(code **)(*local_68 + 0x50);\n          *(undefined8 *)(auStack_78 + lVar3 + -8) = 0x2eb01f;\n          (*pcVar2)(plVar21);\n        }\n        local_68 = (long *)CONCAT71(local_68._1_7_,(byte)local_48);\n        local_48 = plVar21;\n        lVar4 = -(uVar15 * 8 + 0x17 & 0xfffffffffffffff0);\n        puVar16 = auStack_78 + lVar4 + lVar3;\n        uVar19 = 0;\n        puVar7 = (ulong *)((long)&uStack_70 + lVar4 + lVar3);\n        local_58 = puVar7;\n        do {\n          __s = *(char **)(param_7 + (long)*(int *)((long)puVar22 + uVar19 * 4) * 8);\n          *(undefined8 *)(auStack_78 + lVar4 + lVar3 + -8) = 0x2eaded;\n          sVar9 = strlen(__s);\n          puVar7[uVar19] = sVar9;\n          uVar19 = uVar19 + 1;\n        } while (uVar15 != uVar19);\n        uVar18 = 0xffffffff;\n        uVar19 = 1;\n        puVar7 = local_58;\n        param_2 = local_48;\n        bVar23 = (byte)local_68;\n      }\n    }" else (compound_statement "{\n      uVar15 = 0;\n      plVar21 = (long *)0x0;\n      uStack_70._3_1_ = bVar23;\n      uStack_70._4_4_ = uVar18;\n      local_68 = param_2;\n      local_58 = puVar22;\n      local_48 = (long *)(param_8 * 2);\n      do {\n        while (**(char **)(param_7 + (long)plVar21 * 8) == (char)uVar6) {\nLAB_002ead54:\n          *(int *)((long)local_58 + uVar15 * 4) = (int)plVar21;\n          uVar15 = uVar15 + 1;\n          plVar21 = (long *)((long)plVar21 + 1);\n          if (local_48 == plVar21) goto LAB_002ead6a;\n        }\n        pcVar2 = *(code **)(*puVar7 + 0x10);\n        *(undefined8 *)(auStack_78 + lVar3 + -8) = 0x2ead39;\n        cVar24 = (*pcVar2)(puVar7);\n        if (cVar24 == (char)uVar6) goto LAB_002ead54;\n        plVar21 = (long *)((long)plVar21 + 1);\n      } while (local_48 != plVar21);\nLAB_002ead6a:\n      puVar22 = local_58;\n      plVar21 = local_68;\n      uVar19 = 0;\n      puVar16 = auStack_78 + lVar3;\n      puVar7 = (ulong *)0x0;\n      param_2 = local_68;\n      uVar18 = uStack_70._4_4_;\n      bVar23 = uStack_70._3_1_;\n      if (uVar15 != 0) {\n        if ((ulong)local_68[2] < (ulong)local_68[3]) {\n          local_68[2] = local_68[2] + 1;\n          local_48._0_1_ = uStack_70._3_1_;\n        }\n        else {\n          local_48 = (long *)CONCAT71(local_48._1_7_,uStack_70._3_1_);\n          pcVar2 = *(code **)(*local_68 + 0x50);\n          *(undefined8 *)(auStack_78 + lVar3 + -8) = 0x2eb01f;\n          (*pcVar2)(plVar21);\n        }\n        local_68 = (long *)CONCAT71(local_68._1_7_,(byte)local_48);\n        local_48 = plVar21;\n        lVar4 = -(uVar15 * 8 + 0x17 & 0xfffffffffffffff0);\n        puVar16 = auStack_78 + lVar4 + lVar3;\n        uVar19 = 0;\n        puVar7 = (ulong *)((long)&uStack_70 + lVar4 + lVar3);\n        local_58 = puVar7;\n        do {\n          __s = *(char **)(param_7 + (long)*(int *)((long)puVar22 + uVar19 * 4) * 8);\n          *(undefined8 *)(auStack_78 + lVar4 + lVar3 + -8) = 0x2eaded;\n          sVar9 = strlen(__s);\n          puVar7[uVar19] = sVar9;\n          uVar19 = uVar19 + 1;\n        } while (uVar15 != uVar19);\n        uVar18 = 0xffffffff;\n        uVar19 = 1;\n        puVar7 = local_58;\n        param_2 = local_48;\n        bVar23 = (byte)local_68;\n      }\n    }" { (expression_statement "uVar15 = 0;" (assignment_expression "uVar15 = 0" identifier = number_literal) ;) (expression_statement "plVar21 = (long *)0x0;" (assignment_expression "plVar21 = (long *)0x0" identifier = (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "uStack_70._3_1_ = bVar23;" (assignment_expression "uStack_70._3_1_ = bVar23" (field_expression "uStack_70._3_1_" identifier . field_identifier) = identifier) ;) (expression_statement "uStack_70._4_4_ = uVar18;" (assignment_expression "uStack_70._4_4_ = uVar18" (field_expression "uStack_70._4_4_" identifier . field_identifier) = identifier) ;) (expression_statement "local_68 = param_2;" (assignment_expression "local_68 = param_2" identifier = identifier) ;) (expression_statement "local_58 = puVar22;" (assignment_expression "local_58 = puVar22" identifier = identifier) ;) (expression_statement "local_48 = (long *)(param_8 * 2);" (assignment_expression "local_48 = (long *)(param_8 * 2)" identifier = (cast_expression "(long *)(param_8 * 2)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_8 * 2)" ( (binary_expression "param_8 * 2" identifier * number_literal) )))) ;) (do_statement "do {\n        while (**(char **)(param_7 + (long)plVar21 * 8) == (char)uVar6) {\nLAB_002ead54:\n          *(int *)((long)local_58 + uVar15 * 4) = (int)plVar21;\n          uVar15 = uVar15 + 1;\n          plVar21 = (long *)((long)plVar21 + 1);\n          if (local_48 == plVar21) goto LAB_002ead6a;\n        }\n        pcVar2 = *(code **)(*puVar7 + 0x10);\n        *(undefined8 *)(auStack_78 + lVar3 + -8) = 0x2ead39;\n        cVar24 = (*pcVar2)(puVar7);\n        if (cVar24 == (char)uVar6) goto LAB_002ead54;\n        plVar21 = (long *)((long)plVar21 + 1);\n      } while (local_48 != plVar21);" do (compound_statement "{\n        while (**(char **)(param_7 + (long)plVar21 * 8) == (char)uVar6) {\nLAB_002ead54:\n          *(int *)((long)local_58 + uVar15 * 4) = (int)plVar21;\n          uVar15 = uVar15 + 1;\n          plVar21 = (long *)((long)plVar21 + 1);\n          if (local_48 == plVar21) goto LAB_002ead6a;\n        }\n        pcVar2 = *(code **)(*puVar7 + 0x10);\n        *(undefined8 *)(auStack_78 + lVar3 + -8) = 0x2ead39;\n        cVar24 = (*pcVar2)(puVar7);\n        if (cVar24 == (char)uVar6) goto LAB_002ead54;\n        plVar21 = (long *)((long)plVar21 + 1);\n      }" { (while_statement "while (**(char **)(param_7 + (long)plVar21 * 8) == (char)uVar6) {\nLAB_002ead54:\n          *(int *)((long)local_58 + uVar15 * 4) = (int)plVar21;\n          uVar15 = uVar15 + 1;\n          plVar21 = (long *)((long)plVar21 + 1);\n          if (local_48 == plVar21) goto LAB_002ead6a;\n        }" while (parenthesized_expression "(**(char **)(param_7 + (long)plVar21 * 8) == (char)uVar6)" ( (binary_expression "**(char **)(param_7 + (long)plVar21 * 8) == (char)uVar6" (pointer_expression "**(char **)(param_7 + (long)plVar21 * 8)" * (pointer_expression "*(char **)(param_7 + (long)plVar21 * 8)" * (cast_expression "(char **)(param_7 + (long)plVar21 * 8)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_7 + (long)plVar21 * 8)" ( (binary_expression "param_7 + (long)plVar21 * 8" identifier + (binary_expression "(long)plVar21 * 8" (cast_expression "(long)plVar21" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) * number_literal)) ))))) == (cast_expression "(char)uVar6" ( (type_descriptor "char" primitive_type) ) identifier)) )) (compound_statement "{\nLAB_002ead54:\n          *(int *)((long)local_58 + uVar15 * 4) = (int)plVar21;\n          uVar15 = uVar15 + 1;\n          plVar21 = (long *)((long)plVar21 + 1);\n          if (local_48 == plVar21) goto LAB_002ead6a;\n        }" { (labeled_statement "LAB_002ead54:\n          *(int *)((long)local_58 + uVar15 * 4) = (int)plVar21;" statement_identifier : (expression_statement "*(int *)((long)local_58 + uVar15 * 4) = (int)plVar21;" (assignment_expression "*(int *)((long)local_58 + uVar15 * 4) = (int)plVar21" (pointer_expression "*(int *)((long)local_58 + uVar15 * 4)" * (cast_expression "(int *)((long)local_58 + uVar15 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)local_58 + uVar15 * 4)" ( (binary_expression "(long)local_58 + uVar15 * 4" (cast_expression "(long)local_58" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (binary_expression "uVar15 * 4" identifier * number_literal)) )))) = (cast_expression "(int)plVar21" ( (type_descriptor "int" primitive_type) ) identifier)) ;)) (expression_statement "uVar15 = uVar15 + 1;" (assignment_expression "uVar15 = uVar15 + 1" identifier = (binary_expression "uVar15 + 1" identifier + number_literal)) ;) (expression_statement "plVar21 = (long *)((long)plVar21 + 1);" (assignment_expression "plVar21 = (long *)((long)plVar21 + 1)" identifier = (cast_expression "(long *)((long)plVar21 + 1)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)plVar21 + 1)" ( (binary_expression "(long)plVar21 + 1" (cast_expression "(long)plVar21" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) ;) (if_statement "if (local_48 == plVar21) goto LAB_002ead6a;" if (parenthesized_expression "(local_48 == plVar21)" ( (binary_expression "local_48 == plVar21" identifier == identifier) )) (goto_statement "goto LAB_002ead6a;" goto statement_identifier ;)) })) (expression_statement "pcVar2 = *(code **)(*puVar7 + 0x10);" (assignment_expression "pcVar2 = *(code **)(*puVar7 + 0x10)" identifier = (pointer_expression "*(code **)(*puVar7 + 0x10)" * (cast_expression "(code **)(*puVar7 + 0x10)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*puVar7 + 0x10)" ( (binary_expression "*puVar7 + 0x10" (pointer_expression "*puVar7" * identifier) + number_literal) ))))) ;) (expression_statement "*(undefined8 *)(auStack_78 + lVar3 + -8) = 0x2ead39;" (assignment_expression "*(undefined8 *)(auStack_78 + lVar3 + -8) = 0x2ead39" (pointer_expression "*(undefined8 *)(auStack_78 + lVar3 + -8)" * (cast_expression "(undefined8 *)(auStack_78 + lVar3 + -8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(auStack_78 + lVar3 + -8)" ( (binary_expression "auStack_78 + lVar3 + -8" (binary_expression "auStack_78 + lVar3" identifier + identifier) + number_literal) )))) = number_literal) ;) (expression_statement "cVar24 = (*pcVar2)(puVar7);" (assignment_expression "cVar24 = (*pcVar2)(puVar7)" identifier = (call_expression "(*pcVar2)(puVar7)" (parenthesized_expression "(*pcVar2)" ( (pointer_expression "*pcVar2" * identifier) )) (argument_list "(puVar7)" ( identifier )))) ;) (if_statement "if (cVar24 == (char)uVar6) goto LAB_002ead54;" if (parenthesized_expression "(cVar24 == (char)uVar6)" ( (binary_expression "cVar24 == (char)uVar6" identifier == (cast_expression "(char)uVar6" ( (type_descriptor "char" primitive_type) ) identifier)) )) (goto_statement "goto LAB_002ead54;" goto statement_identifier ;)) (expression_statement "plVar21 = (long *)((long)plVar21 + 1);" (assignment_expression "plVar21 = (long *)((long)plVar21 + 1)" identifier = (cast_expression "(long *)((long)plVar21 + 1)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)plVar21 + 1)" ( (binary_expression "(long)plVar21 + 1" (cast_expression "(long)plVar21" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) ;) }) while (parenthesized_expression "(local_48 != plVar21)" ( (binary_expression "local_48 != plVar21" identifier != identifier) )) ;) (labeled_statement "LAB_002ead6a:\n      puVar22 = local_58;" statement_identifier : (expression_statement "puVar22 = local_58;" (assignment_expression "puVar22 = local_58" identifier = identifier) ;)) (expression_statement "plVar21 = local_68;" (assignment_expression "plVar21 = local_68" identifier = identifier) ;) (expression_statement "uVar19 = 0;" (assignment_expression "uVar19 = 0" identifier = number_literal) ;) (expression_statement "puVar16 = auStack_78 + lVar3;" (assignment_expression "puVar16 = auStack_78 + lVar3" identifier = (binary_expression "auStack_78 + lVar3" identifier + identifier)) ;) (expression_statement "puVar7 = (ulong *)0x0;" (assignment_expression "puVar7 = (ulong *)0x0" identifier = (cast_expression "(ulong *)0x0" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "param_2 = local_68;" (assignment_expression "param_2 = local_68" identifier = identifier) ;) (expression_statement "uVar18 = uStack_70._4_4_;" (assignment_expression "uVar18 = uStack_70._4_4_" identifier = (field_expression "uStack_70._4_4_" identifier . field_identifier)) ;) (expression_statement "bVar23 = uStack_70._3_1_;" (assignment_expression "bVar23 = uStack_70._3_1_" identifier = (field_expression "uStack_70._3_1_" identifier . field_identifier)) ;) (if_statement "if (uVar15 != 0) {\n        if ((ulong)local_68[2] < (ulong)local_68[3]) {\n          local_68[2] = local_68[2] + 1;\n          local_48._0_1_ = uStack_70._3_1_;\n        }\n        else {\n          local_48 = (long *)CONCAT71(local_48._1_7_,uStack_70._3_1_);\n          pcVar2 = *(code **)(*local_68 + 0x50);\n          *(undefined8 *)(auStack_78 + lVar3 + -8) = 0x2eb01f;\n          (*pcVar2)(plVar21);\n        }\n        local_68 = (long *)CONCAT71(local_68._1_7_,(byte)local_48);\n        local_48 = plVar21;\n        lVar4 = -(uVar15 * 8 + 0x17 & 0xfffffffffffffff0);\n        puVar16 = auStack_78 + lVar4 + lVar3;\n        uVar19 = 0;\n        puVar7 = (ulong *)((long)&uStack_70 + lVar4 + lVar3);\n        local_58 = puVar7;\n        do {\n          __s = *(char **)(param_7 + (long)*(int *)((long)puVar22 + uVar19 * 4) * 8);\n          *(undefined8 *)(auStack_78 + lVar4 + lVar3 + -8) = 0x2eaded;\n          sVar9 = strlen(__s);\n          puVar7[uVar19] = sVar9;\n          uVar19 = uVar19 + 1;\n        } while (uVar15 != uVar19);\n        uVar18 = 0xffffffff;\n        uVar19 = 1;\n        puVar7 = local_58;\n        param_2 = local_48;\n        bVar23 = (byte)local_68;\n      }" if (parenthesized_expression "(uVar15 != 0)" ( (binary_expression "uVar15 != 0" identifier != number_literal) )) (compound_statement "{\n        if ((ulong)local_68[2] < (ulong)local_68[3]) {\n          local_68[2] = local_68[2] + 1;\n          local_48._0_1_ = uStack_70._3_1_;\n        }\n        else {\n          local_48 = (long *)CONCAT71(local_48._1_7_,uStack_70._3_1_);\n          pcVar2 = *(code **)(*local_68 + 0x50);\n          *(undefined8 *)(auStack_78 + lVar3 + -8) = 0x2eb01f;\n          (*pcVar2)(plVar21);\n        }\n        local_68 = (long *)CONCAT71(local_68._1_7_,(byte)local_48);\n        local_48 = plVar21;\n        lVar4 = -(uVar15 * 8 + 0x17 & 0xfffffffffffffff0);\n        puVar16 = auStack_78 + lVar4 + lVar3;\n        uVar19 = 0;\n        puVar7 = (ulong *)((long)&uStack_70 + lVar4 + lVar3);\n        local_58 = puVar7;\n        do {\n          __s = *(char **)(param_7 + (long)*(int *)((long)puVar22 + uVar19 * 4) * 8);\n          *(undefined8 *)(auStack_78 + lVar4 + lVar3 + -8) = 0x2eaded;\n          sVar9 = strlen(__s);\n          puVar7[uVar19] = sVar9;\n          uVar19 = uVar19 + 1;\n        } while (uVar15 != uVar19);\n        uVar18 = 0xffffffff;\n        uVar19 = 1;\n        puVar7 = local_58;\n        param_2 = local_48;\n        bVar23 = (byte)local_68;\n      }" { (if_statement "if ((ulong)local_68[2] < (ulong)local_68[3]) {\n          local_68[2] = local_68[2] + 1;\n          local_48._0_1_ = uStack_70._3_1_;\n        }\n        else {\n          local_48 = (long *)CONCAT71(local_48._1_7_,uStack_70._3_1_);\n          pcVar2 = *(code **)(*local_68 + 0x50);\n          *(undefined8 *)(auStack_78 + lVar3 + -8) = 0x2eb01f;\n          (*pcVar2)(plVar21);\n        }" if (parenthesized_expression "((ulong)local_68[2] < (ulong)local_68[3])" ( (binary_expression "(ulong)local_68[2] < (ulong)local_68[3]" (cast_expression "(ulong)local_68[2]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "local_68[2]" identifier [ number_literal ])) < (cast_expression "(ulong)local_68[3]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "local_68[3]" identifier [ number_literal ]))) )) (compound_statement "{\n          local_68[2] = local_68[2] + 1;\n          local_48._0_1_ = uStack_70._3_1_;\n        }" { (expression_statement "local_68[2] = local_68[2] + 1;" (assignment_expression "local_68[2] = local_68[2] + 1" (subscript_expression "local_68[2]" identifier [ number_literal ]) = (binary_expression "local_68[2] + 1" (subscript_expression "local_68[2]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "local_48._0_1_ = uStack_70._3_1_;" (assignment_expression "local_48._0_1_ = uStack_70._3_1_" (field_expression "local_48._0_1_" identifier . field_identifier) = (field_expression "uStack_70._3_1_" identifier . field_identifier)) ;) }) (else_clause "else {\n          local_48 = (long *)CONCAT71(local_48._1_7_,uStack_70._3_1_);\n          pcVar2 = *(code **)(*local_68 + 0x50);\n          *(undefined8 *)(auStack_78 + lVar3 + -8) = 0x2eb01f;\n          (*pcVar2)(plVar21);\n        }" else (compound_statement "{\n          local_48 = (long *)CONCAT71(local_48._1_7_,uStack_70._3_1_);\n          pcVar2 = *(code **)(*local_68 + 0x50);\n          *(undefined8 *)(auStack_78 + lVar3 + -8) = 0x2eb01f;\n          (*pcVar2)(plVar21);\n        }" { (expression_statement "local_48 = (long *)CONCAT71(local_48._1_7_,uStack_70._3_1_);" (assignment_expression "local_48 = (long *)CONCAT71(local_48._1_7_,uStack_70._3_1_)" identifier = (cast_expression "(long *)CONCAT71(local_48._1_7_,uStack_70._3_1_)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (call_expression "CONCAT71(local_48._1_7_,uStack_70._3_1_)" identifier (argument_list "(local_48._1_7_,uStack_70._3_1_)" ( (field_expression "local_48._1_7_" identifier . field_identifier) , (field_expression "uStack_70._3_1_" identifier . field_identifier) ))))) ;) (expression_statement "pcVar2 = *(code **)(*local_68 + 0x50);" (assignment_expression "pcVar2 = *(code **)(*local_68 + 0x50)" identifier = (pointer_expression "*(code **)(*local_68 + 0x50)" * (cast_expression "(code **)(*local_68 + 0x50)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*local_68 + 0x50)" ( (binary_expression "*local_68 + 0x50" (pointer_expression "*local_68" * identifier) + number_literal) ))))) ;) (expression_statement "*(undefined8 *)(auStack_78 + lVar3 + -8) = 0x2eb01f;" (assignment_expression "*(undefined8 *)(auStack_78 + lVar3 + -8) = 0x2eb01f" (pointer_expression "*(undefined8 *)(auStack_78 + lVar3 + -8)" * (cast_expression "(undefined8 *)(auStack_78 + lVar3 + -8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(auStack_78 + lVar3 + -8)" ( (binary_expression "auStack_78 + lVar3 + -8" (binary_expression "auStack_78 + lVar3" identifier + identifier) + number_literal) )))) = number_literal) ;) (expression_statement "(*pcVar2)(plVar21);" (call_expression "(*pcVar2)(plVar21)" (parenthesized_expression "(*pcVar2)" ( (pointer_expression "*pcVar2" * identifier) )) (argument_list "(plVar21)" ( identifier ))) ;) }))) (expression_statement "local_68 = (long *)CONCAT71(local_68._1_7_,(byte)local_48);" (assignment_expression "local_68 = (long *)CONCAT71(local_68._1_7_,(byte)local_48)" identifier = (cast_expression "(long *)CONCAT71(local_68._1_7_,(byte)local_48)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (call_expression "CONCAT71(local_68._1_7_,(byte)local_48)" identifier (argument_list "(local_68._1_7_,(byte)local_48)" ( (field_expression "local_68._1_7_" identifier . field_identifier) , (cast_expression "(byte)local_48" ( (type_descriptor "byte" type_identifier) ) identifier) ))))) ;) (expression_statement "local_48 = plVar21;" (assignment_expression "local_48 = plVar21" identifier = identifier) ;) (expression_statement "lVar4 = -(uVar15 * 8 + 0x17 & 0xfffffffffffffff0);" (assignment_expression "lVar4 = -(uVar15 * 8 + 0x17 & 0xfffffffffffffff0)" identifier = (unary_expression "-(uVar15 * 8 + 0x17 & 0xfffffffffffffff0)" - (parenthesized_expression "(uVar15 * 8 + 0x17 & 0xfffffffffffffff0)" ( (binary_expression "uVar15 * 8 + 0x17 & 0xfffffffffffffff0" (binary_expression "uVar15 * 8 + 0x17" (binary_expression "uVar15 * 8" identifier * number_literal) + number_literal) & number_literal) )))) ;) (expression_statement "puVar16 = auStack_78 + lVar4 + lVar3;" (assignment_expression "puVar16 = auStack_78 + lVar4 + lVar3" identifier = (binary_expression "auStack_78 + lVar4 + lVar3" (binary_expression "auStack_78 + lVar4" identifier + identifier) + identifier)) ;) (expression_statement "uVar19 = 0;" (assignment_expression "uVar19 = 0" identifier = number_literal) ;) (expression_statement "puVar7 = (ulong *)((long)&uStack_70 + lVar4 + lVar3);" (assignment_expression "puVar7 = (ulong *)((long)&uStack_70 + lVar4 + lVar3)" identifier = (cast_expression "(ulong *)((long)&uStack_70 + lVar4 + lVar3)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)&uStack_70 + lVar4 + lVar3)" ( (binary_expression "(long)&uStack_70 + lVar4 + lVar3" (binary_expression "(long)&uStack_70 + lVar4" (cast_expression "(long)&uStack_70" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "&uStack_70" & identifier)) + identifier) + identifier) )))) ;) (expression_statement "local_58 = puVar7;" (assignment_expression "local_58 = puVar7" identifier = identifier) ;) (do_statement "do {\n          __s = *(char **)(param_7 + (long)*(int *)((long)puVar22 + uVar19 * 4) * 8);\n          *(undefined8 *)(auStack_78 + lVar4 + lVar3 + -8) = 0x2eaded;\n          sVar9 = strlen(__s);\n          puVar7[uVar19] = sVar9;\n          uVar19 = uVar19 + 1;\n        } while (uVar15 != uVar19);" do (compound_statement "{\n          __s = *(char **)(param_7 + (long)*(int *)((long)puVar22 + uVar19 * 4) * 8);\n          *(undefined8 *)(auStack_78 + lVar4 + lVar3 + -8) = 0x2eaded;\n          sVar9 = strlen(__s);\n          puVar7[uVar19] = sVar9;\n          uVar19 = uVar19 + 1;\n        }" { (expression_statement "__s = *(char **)(param_7 + (long)*(int *)((long)puVar22 + uVar19 * 4) * 8);" (assignment_expression "__s = *(char **)(param_7 + (long)*(int *)((long)puVar22 + uVar19 * 4) * 8)" identifier = (pointer_expression "*(char **)(param_7 + (long)*(int *)((long)puVar22 + uVar19 * 4) * 8)" * (cast_expression "(char **)(param_7 + (long)*(int *)((long)puVar22 + uVar19 * 4) * 8)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_7 + (long)*(int *)((long)puVar22 + uVar19 * 4) * 8)" ( (binary_expression "param_7 + (long)*(int *)((long)puVar22 + uVar19 * 4) * 8" identifier + (binary_expression "(long)*(int *)((long)puVar22 + uVar19 * 4) * 8" (cast_expression "(long)*(int *)((long)puVar22 + uVar19 * 4)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "*(int *)((long)puVar22 + uVar19 * 4)" * (cast_expression "(int *)((long)puVar22 + uVar19 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar22 + uVar19 * 4)" ( (binary_expression "(long)puVar22 + uVar19 * 4" (cast_expression "(long)puVar22" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (binary_expression "uVar19 * 4" identifier * number_literal)) ))))) * number_literal)) ))))) ;) (expression_statement "*(undefined8 *)(auStack_78 + lVar4 + lVar3 + -8) = 0x2eaded;" (assignment_expression "*(undefined8 *)(auStack_78 + lVar4 + lVar3 + -8) = 0x2eaded" (pointer_expression "*(undefined8 *)(auStack_78 + lVar4 + lVar3 + -8)" * (cast_expression "(undefined8 *)(auStack_78 + lVar4 + lVar3 + -8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(auStack_78 + lVar4 + lVar3 + -8)" ( (binary_expression "auStack_78 + lVar4 + lVar3 + -8" (binary_expression "auStack_78 + lVar4 + lVar3" (binary_expression "auStack_78 + lVar4" identifier + identifier) + identifier) + number_literal) )))) = number_literal) ;) (expression_statement "sVar9 = strlen(__s);" (assignment_expression "sVar9 = strlen(__s)" identifier = (call_expression "strlen(__s)" identifier (argument_list "(__s)" ( identifier )))) ;) (expression_statement "puVar7[uVar19] = sVar9;" (assignment_expression "puVar7[uVar19] = sVar9" (subscript_expression "puVar7[uVar19]" identifier [ identifier ]) = identifier) ;) (expression_statement "uVar19 = uVar19 + 1;" (assignment_expression "uVar19 = uVar19 + 1" identifier = (binary_expression "uVar19 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar15 != uVar19)" ( (binary_expression "uVar15 != uVar19" identifier != identifier) )) ;) (expression_statement "uVar18 = 0xffffffff;" (assignment_expression "uVar18 = 0xffffffff" identifier = number_literal) ;) (expression_statement "uVar19 = 1;" (assignment_expression "uVar19 = 1" identifier = number_literal) ;) (expression_statement "puVar7 = local_58;" (assignment_expression "puVar7 = local_58" identifier = identifier) ;) (expression_statement "param_2 = local_48;" (assignment_expression "param_2 = local_48" identifier = identifier) ;) (expression_statement "bVar23 = (byte)local_68;" (assignment_expression "bVar23 = (byte)local_68" identifier = (cast_expression "(byte)local_68" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) })) }))) }))) (do_statement "do {\n    cVar24 = uVar18 == 0xffffffff;\n    bVar10 = param_2 != (long *)0x0 && (bool)cVar24;\n    bVar11 = cVar24;\n    if (bVar10) {\n      if ((ulong)param_2[2] < (ulong)param_2[3]) {\n        bVar11 = 0;\n      }\n      else {\n        uStack_70._4_4_ = CONCAT31(uStack_70._5_3_,bVar23);\n        local_68 = (long *)CONCAT44(local_68._4_4_,uVar18);\n        local_58 = (ulong *)CONCAT71(local_58._1_7_,cVar24);\n        local_48 = (long *)CONCAT71(local_48._1_7_,bVar10);\n        pcVar2 = *(code **)(*param_2 + 0x48);\n        *(undefined8 *)(puVar16 + -8) = 0x2eae9c;\n        iVar5 = (*pcVar2)(param_2);\n        if (iVar5 == -1) {\n          param_2 = (long *)0x0;\n          bVar11 = (byte)local_48;\n        }\n        else {\n          bVar11 = 0;\n        }\n        uVar18 = (uint)local_68;\n        bVar23 = uStack_70._4_1_;\n        cVar24 = (byte)local_58;\n      }\n    }\n    plVar21 = local_40;\n    bVar12 = local_40 != (long *)0x0 & bVar23;\n    bVar13 = bVar23;\n    if (bVar12 == 0) {\nLAB_002eab55:\n      if (bVar11 == bVar13) break;\n    }\n    else {\n      if ((ulong)local_40[3] <= (ulong)local_40[2]) {\n        local_68 = (long *)CONCAT71(local_68._1_7_,cVar24);\n        local_58 = (ulong *)CONCAT71(local_58._1_7_,bVar12);\n        local_48 = (long *)CONCAT71(local_48._1_7_,bVar11);\n        pcVar2 = *(code **)(*local_40 + 0x48);\n        uStack_70._3_1_ = bVar23;\n        uStack_70._4_4_ = uVar18;\n        *(undefined8 *)(puVar16 + -8) = 0x2eaeec;\n        iVar5 = (*pcVar2)(plVar21);\n        plVar21 = (long *)0x0;\n        bVar13 = (byte)local_58;\n        if (iVar5 != -1) {\n          bVar13 = 0;\n          plVar21 = local_40;\n        }\n        uVar18 = uStack_70._4_4_;\n        local_40 = plVar21;\n        bVar23 = uStack_70._3_1_;\n        bVar11 = (byte)local_48;\n        cVar24 = (byte)local_68;\n        goto LAB_002eab55;\n      }\n      if (bVar11 == 0) break;\n    }\n    if ((param_2 == (long *)0x0) || (cVar24 == '\0')) {\n      cVar24 = (char)uVar18;\n    }\n    else if ((char *)param_2[2] < (char *)param_2[3]) {\n      cVar24 = *(char *)param_2[2];\n    }\n    else {\n      local_58 = (ulong *)CONCAT71(local_58._1_7_,bVar23);\n      local_48 = (long *)CONCAT44(local_48._4_4_,uVar18);\n      pcVar2 = *(code **)(*param_2 + 0x48);\n      *(undefined8 *)(puVar16 + -8) = 0x2eaf38;\n      iVar5 = (*pcVar2)(param_2);\n      cVar24 = -1;\n      uVar18 = (uint)local_48;\n      bVar23 = (byte)local_58;\n      if (iVar5 == -1) {\n        param_2 = (long *)0x0;\n      }\n      else {\n        cVar24 = (char)iVar5;\n      }\n    }\n    if (uVar15 == 0) goto LAB_002eac30;\n    uVar8 = 0;\n    uVar17 = 0;\n    do {\n      while (puVar7[uVar8] <= uVar19) {\n        uVar17 = uVar17 + 1;\nLAB_002eab88:\n        uVar8 = uVar8 + 1;\n        if (uVar15 <= uVar8) goto LAB_002eabbf;\n      }\n      piVar1 = (int *)((long)puVar22 + uVar8 * 4);\n      if (*(char *)(*(long *)(param_7 + (long)*piVar1 * 8) + uVar19) == cVar24) goto LAB_002eab88;\n      uVar15 = uVar15 - 1;\n      *piVar1 = *(int *)((long)puVar22 + uVar15 * 4);\n      puVar7[uVar8] = puVar7[uVar15];\n    } while (uVar8 < uVar15);\nLAB_002eabbf:\n    if (uVar17 == uVar15) break;\n    if ((ulong)param_2[2] < (ulong)param_2[3]) {\n      param_2[2] = param_2[2] + 1;\n    }\n    else {\n      local_48 = (long *)CONCAT71(local_48._1_7_,bVar23);\n      pcVar2 = *(code **)(*param_2 + 0x50);\n      *(undefined8 *)(puVar16 + -8) = 0x2eaca1;\n      (*pcVar2)(param_2);\n      bVar23 = (byte)local_48;\n    }\n    uVar19 = uVar19 + 1;\n    uVar18 = 0xffffffff;\n  } while( true );" do (compound_statement "{\n    cVar24 = uVar18 == 0xffffffff;\n    bVar10 = param_2 != (long *)0x0 && (bool)cVar24;\n    bVar11 = cVar24;\n    if (bVar10) {\n      if ((ulong)param_2[2] < (ulong)param_2[3]) {\n        bVar11 = 0;\n      }\n      else {\n        uStack_70._4_4_ = CONCAT31(uStack_70._5_3_,bVar23);\n        local_68 = (long *)CONCAT44(local_68._4_4_,uVar18);\n        local_58 = (ulong *)CONCAT71(local_58._1_7_,cVar24);\n        local_48 = (long *)CONCAT71(local_48._1_7_,bVar10);\n        pcVar2 = *(code **)(*param_2 + 0x48);\n        *(undefined8 *)(puVar16 + -8) = 0x2eae9c;\n        iVar5 = (*pcVar2)(param_2);\n        if (iVar5 == -1) {\n          param_2 = (long *)0x0;\n          bVar11 = (byte)local_48;\n        }\n        else {\n          bVar11 = 0;\n        }\n        uVar18 = (uint)local_68;\n        bVar23 = uStack_70._4_1_;\n        cVar24 = (byte)local_58;\n      }\n    }\n    plVar21 = local_40;\n    bVar12 = local_40 != (long *)0x0 & bVar23;\n    bVar13 = bVar23;\n    if (bVar12 == 0) {\nLAB_002eab55:\n      if (bVar11 == bVar13) break;\n    }\n    else {\n      if ((ulong)local_40[3] <= (ulong)local_40[2]) {\n        local_68 = (long *)CONCAT71(local_68._1_7_,cVar24);\n        local_58 = (ulong *)CONCAT71(local_58._1_7_,bVar12);\n        local_48 = (long *)CONCAT71(local_48._1_7_,bVar11);\n        pcVar2 = *(code **)(*local_40 + 0x48);\n        uStack_70._3_1_ = bVar23;\n        uStack_70._4_4_ = uVar18;\n        *(undefined8 *)(puVar16 + -8) = 0x2eaeec;\n        iVar5 = (*pcVar2)(plVar21);\n        plVar21 = (long *)0x0;\n        bVar13 = (byte)local_58;\n        if (iVar5 != -1) {\n          bVar13 = 0;\n          plVar21 = local_40;\n        }\n        uVar18 = uStack_70._4_4_;\n        local_40 = plVar21;\n        bVar23 = uStack_70._3_1_;\n        bVar11 = (byte)local_48;\n        cVar24 = (byte)local_68;\n        goto LAB_002eab55;\n      }\n      if (bVar11 == 0) break;\n    }\n    if ((param_2 == (long *)0x0) || (cVar24 == '\0')) {\n      cVar24 = (char)uVar18;\n    }\n    else if ((char *)param_2[2] < (char *)param_2[3]) {\n      cVar24 = *(char *)param_2[2];\n    }\n    else {\n      local_58 = (ulong *)CONCAT71(local_58._1_7_,bVar23);\n      local_48 = (long *)CONCAT44(local_48._4_4_,uVar18);\n      pcVar2 = *(code **)(*param_2 + 0x48);\n      *(undefined8 *)(puVar16 + -8) = 0x2eaf38;\n      iVar5 = (*pcVar2)(param_2);\n      cVar24 = -1;\n      uVar18 = (uint)local_48;\n      bVar23 = (byte)local_58;\n      if (iVar5 == -1) {\n        param_2 = (long *)0x0;\n      }\n      else {\n        cVar24 = (char)iVar5;\n      }\n    }\n    if (uVar15 == 0) goto LAB_002eac30;\n    uVar8 = 0;\n    uVar17 = 0;\n    do {\n      while (puVar7[uVar8] <= uVar19) {\n        uVar17 = uVar17 + 1;\nLAB_002eab88:\n        uVar8 = uVar8 + 1;\n        if (uVar15 <= uVar8) goto LAB_002eabbf;\n      }\n      piVar1 = (int *)((long)puVar22 + uVar8 * 4);\n      if (*(char *)(*(long *)(param_7 + (long)*piVar1 * 8) + uVar19) == cVar24) goto LAB_002eab88;\n      uVar15 = uVar15 - 1;\n      *piVar1 = *(int *)((long)puVar22 + uVar15 * 4);\n      puVar7[uVar8] = puVar7[uVar15];\n    } while (uVar8 < uVar15);\nLAB_002eabbf:\n    if (uVar17 == uVar15) break;\n    if ((ulong)param_2[2] < (ulong)param_2[3]) {\n      param_2[2] = param_2[2] + 1;\n    }\n    else {\n      local_48 = (long *)CONCAT71(local_48._1_7_,bVar23);\n      pcVar2 = *(code **)(*param_2 + 0x50);\n      *(undefined8 *)(puVar16 + -8) = 0x2eaca1;\n      (*pcVar2)(param_2);\n      bVar23 = (byte)local_48;\n    }\n    uVar19 = uVar19 + 1;\n    uVar18 = 0xffffffff;\n  }" { (expression_statement "cVar24 = uVar18 == 0xffffffff;" (assignment_expression "cVar24 = uVar18 == 0xffffffff" identifier = (binary_expression "uVar18 == 0xffffffff" identifier == number_literal)) ;) (expression_statement "bVar10 = param_2 != (long *)0x0 && (bool)cVar24;" (assignment_expression "bVar10 = param_2 != (long *)0x0 && (bool)cVar24" identifier = (binary_expression "param_2 != (long *)0x0 && (bool)cVar24" (binary_expression "param_2 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) && (cast_expression "(bool)cVar24" ( (type_descriptor "bool" primitive_type) ) identifier))) ;) (expression_statement "bVar11 = cVar24;" (assignment_expression "bVar11 = cVar24" identifier = identifier) ;) (if_statement "if (bVar10) {\n      if ((ulong)param_2[2] < (ulong)param_2[3]) {\n        bVar11 = 0;\n      }\n      else {\n        uStack_70._4_4_ = CONCAT31(uStack_70._5_3_,bVar23);\n        local_68 = (long *)CONCAT44(local_68._4_4_,uVar18);\n        local_58 = (ulong *)CONCAT71(local_58._1_7_,cVar24);\n        local_48 = (long *)CONCAT71(local_48._1_7_,bVar10);\n        pcVar2 = *(code **)(*param_2 + 0x48);\n        *(undefined8 *)(puVar16 + -8) = 0x2eae9c;\n        iVar5 = (*pcVar2)(param_2);\n        if (iVar5 == -1) {\n          param_2 = (long *)0x0;\n          bVar11 = (byte)local_48;\n        }\n        else {\n          bVar11 = 0;\n        }\n        uVar18 = (uint)local_68;\n        bVar23 = uStack_70._4_1_;\n        cVar24 = (byte)local_58;\n      }\n    }" if (parenthesized_expression "(bVar10)" ( identifier )) (compound_statement "{\n      if ((ulong)param_2[2] < (ulong)param_2[3]) {\n        bVar11 = 0;\n      }\n      else {\n        uStack_70._4_4_ = CONCAT31(uStack_70._5_3_,bVar23);\n        local_68 = (long *)CONCAT44(local_68._4_4_,uVar18);\n        local_58 = (ulong *)CONCAT71(local_58._1_7_,cVar24);\n        local_48 = (long *)CONCAT71(local_48._1_7_,bVar10);\n        pcVar2 = *(code **)(*param_2 + 0x48);\n        *(undefined8 *)(puVar16 + -8) = 0x2eae9c;\n        iVar5 = (*pcVar2)(param_2);\n        if (iVar5 == -1) {\n          param_2 = (long *)0x0;\n          bVar11 = (byte)local_48;\n        }\n        else {\n          bVar11 = 0;\n        }\n        uVar18 = (uint)local_68;\n        bVar23 = uStack_70._4_1_;\n        cVar24 = (byte)local_58;\n      }\n    }" { (if_statement "if ((ulong)param_2[2] < (ulong)param_2[3]) {\n        bVar11 = 0;\n      }\n      else {\n        uStack_70._4_4_ = CONCAT31(uStack_70._5_3_,bVar23);\n        local_68 = (long *)CONCAT44(local_68._4_4_,uVar18);\n        local_58 = (ulong *)CONCAT71(local_58._1_7_,cVar24);\n        local_48 = (long *)CONCAT71(local_48._1_7_,bVar10);\n        pcVar2 = *(code **)(*param_2 + 0x48);\n        *(undefined8 *)(puVar16 + -8) = 0x2eae9c;\n        iVar5 = (*pcVar2)(param_2);\n        if (iVar5 == -1) {\n          param_2 = (long *)0x0;\n          bVar11 = (byte)local_48;\n        }\n        else {\n          bVar11 = 0;\n        }\n        uVar18 = (uint)local_68;\n        bVar23 = uStack_70._4_1_;\n        cVar24 = (byte)local_58;\n      }" if (parenthesized_expression "((ulong)param_2[2] < (ulong)param_2[3])" ( (binary_expression "(ulong)param_2[2] < (ulong)param_2[3]" (cast_expression "(ulong)param_2[2]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_2[2]" identifier [ number_literal ])) < (cast_expression "(ulong)param_2[3]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_2[3]" identifier [ number_literal ]))) )) (compound_statement "{\n        bVar11 = 0;\n      }" { (expression_statement "bVar11 = 0;" (assignment_expression "bVar11 = 0" identifier = number_literal) ;) }) (else_clause "else {\n        uStack_70._4_4_ = CONCAT31(uStack_70._5_3_,bVar23);\n        local_68 = (long *)CONCAT44(local_68._4_4_,uVar18);\n        local_58 = (ulong *)CONCAT71(local_58._1_7_,cVar24);\n        local_48 = (long *)CONCAT71(local_48._1_7_,bVar10);\n        pcVar2 = *(code **)(*param_2 + 0x48);\n        *(undefined8 *)(puVar16 + -8) = 0x2eae9c;\n        iVar5 = (*pcVar2)(param_2);\n        if (iVar5 == -1) {\n          param_2 = (long *)0x0;\n          bVar11 = (byte)local_48;\n        }\n        else {\n          bVar11 = 0;\n        }\n        uVar18 = (uint)local_68;\n        bVar23 = uStack_70._4_1_;\n        cVar24 = (byte)local_58;\n      }" else (compound_statement "{\n        uStack_70._4_4_ = CONCAT31(uStack_70._5_3_,bVar23);\n        local_68 = (long *)CONCAT44(local_68._4_4_,uVar18);\n        local_58 = (ulong *)CONCAT71(local_58._1_7_,cVar24);\n        local_48 = (long *)CONCAT71(local_48._1_7_,bVar10);\n        pcVar2 = *(code **)(*param_2 + 0x48);\n        *(undefined8 *)(puVar16 + -8) = 0x2eae9c;\n        iVar5 = (*pcVar2)(param_2);\n        if (iVar5 == -1) {\n          param_2 = (long *)0x0;\n          bVar11 = (byte)local_48;\n        }\n        else {\n          bVar11 = 0;\n        }\n        uVar18 = (uint)local_68;\n        bVar23 = uStack_70._4_1_;\n        cVar24 = (byte)local_58;\n      }" { (expression_statement "uStack_70._4_4_ = CONCAT31(uStack_70._5_3_,bVar23);" (assignment_expression "uStack_70._4_4_ = CONCAT31(uStack_70._5_3_,bVar23)" (field_expression "uStack_70._4_4_" identifier . field_identifier) = (call_expression "CONCAT31(uStack_70._5_3_,bVar23)" identifier (argument_list "(uStack_70._5_3_,bVar23)" ( (field_expression "uStack_70._5_3_" identifier . field_identifier) , identifier )))) ;) (expression_statement "local_68 = (long *)CONCAT44(local_68._4_4_,uVar18);" (assignment_expression "local_68 = (long *)CONCAT44(local_68._4_4_,uVar18)" identifier = (cast_expression "(long *)CONCAT44(local_68._4_4_,uVar18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (call_expression "CONCAT44(local_68._4_4_,uVar18)" identifier (argument_list "(local_68._4_4_,uVar18)" ( (field_expression "local_68._4_4_" identifier . field_identifier) , identifier ))))) ;) (expression_statement "local_58 = (ulong *)CONCAT71(local_58._1_7_,cVar24);" (assignment_expression "local_58 = (ulong *)CONCAT71(local_58._1_7_,cVar24)" identifier = (cast_expression "(ulong *)CONCAT71(local_58._1_7_,cVar24)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "CONCAT71(local_58._1_7_,cVar24)" identifier (argument_list "(local_58._1_7_,cVar24)" ( (field_expression "local_58._1_7_" identifier . field_identifier) , identifier ))))) ;) (expression_statement "local_48 = (long *)CONCAT71(local_48._1_7_,bVar10);" (assignment_expression "local_48 = (long *)CONCAT71(local_48._1_7_,bVar10)" identifier = (cast_expression "(long *)CONCAT71(local_48._1_7_,bVar10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (call_expression "CONCAT71(local_48._1_7_,bVar10)" identifier (argument_list "(local_48._1_7_,bVar10)" ( (field_expression "local_48._1_7_" identifier . field_identifier) , identifier ))))) ;) (expression_statement "pcVar2 = *(code **)(*param_2 + 0x48);" (assignment_expression "pcVar2 = *(code **)(*param_2 + 0x48)" identifier = (pointer_expression "*(code **)(*param_2 + 0x48)" * (cast_expression "(code **)(*param_2 + 0x48)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_2 + 0x48)" ( (binary_expression "*param_2 + 0x48" (pointer_expression "*param_2" * identifier) + number_literal) ))))) ;) (expression_statement "*(undefined8 *)(puVar16 + -8) = 0x2eae9c;" (assignment_expression "*(undefined8 *)(puVar16 + -8) = 0x2eae9c" (pointer_expression "*(undefined8 *)(puVar16 + -8)" * (cast_expression "(undefined8 *)(puVar16 + -8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -8)" ( (binary_expression "puVar16 + -8" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar5 = (*pcVar2)(param_2);" (assignment_expression "iVar5 = (*pcVar2)(param_2)" identifier = (call_expression "(*pcVar2)(param_2)" (parenthesized_expression "(*pcVar2)" ( (pointer_expression "*pcVar2" * identifier) )) (argument_list "(param_2)" ( identifier )))) ;) (if_statement "if (iVar5 == -1) {\n          param_2 = (long *)0x0;\n          bVar11 = (byte)local_48;\n        }\n        else {\n          bVar11 = 0;\n        }" if (parenthesized_expression "(iVar5 == -1)" ( (binary_expression "iVar5 == -1" identifier == number_literal) )) (compound_statement "{\n          param_2 = (long *)0x0;\n          bVar11 = (byte)local_48;\n        }" { (expression_statement "param_2 = (long *)0x0;" (assignment_expression "param_2 = (long *)0x0" identifier = (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "bVar11 = (byte)local_48;" (assignment_expression "bVar11 = (byte)local_48" identifier = (cast_expression "(byte)local_48" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) }) (else_clause "else {\n          bVar11 = 0;\n        }" else (compound_statement "{\n          bVar11 = 0;\n        }" { (expression_statement "bVar11 = 0;" (assignment_expression "bVar11 = 0" identifier = number_literal) ;) }))) (expression_statement "uVar18 = (uint)local_68;" (assignment_expression "uVar18 = (uint)local_68" identifier = (cast_expression "(uint)local_68" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "bVar23 = uStack_70._4_1_;" (assignment_expression "bVar23 = uStack_70._4_1_" identifier = (field_expression "uStack_70._4_1_" identifier . field_identifier)) ;) (expression_statement "cVar24 = (byte)local_58;" (assignment_expression "cVar24 = (byte)local_58" identifier = (cast_expression "(byte)local_58" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) }))) })) (expression_statement "plVar21 = local_40;" (assignment_expression "plVar21 = local_40" identifier = identifier) ;) (expression_statement "bVar12 = local_40 != (long *)0x0 & bVar23;" (assignment_expression "bVar12 = local_40 != (long *)0x0 & bVar23" identifier = (binary_expression "local_40 != (long *)0x0 & bVar23" (binary_expression "local_40 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) & identifier)) ;) (expression_statement "bVar13 = bVar23;" (assignment_expression "bVar13 = bVar23" identifier = identifier) ;) (if_statement "if (bVar12 == 0) {\nLAB_002eab55:\n      if (bVar11 == bVar13) break;\n    }\n    else {\n      if ((ulong)local_40[3] <= (ulong)local_40[2]) {\n        local_68 = (long *)CONCAT71(local_68._1_7_,cVar24);\n        local_58 = (ulong *)CONCAT71(local_58._1_7_,bVar12);\n        local_48 = (long *)CONCAT71(local_48._1_7_,bVar11);\n        pcVar2 = *(code **)(*local_40 + 0x48);\n        uStack_70._3_1_ = bVar23;\n        uStack_70._4_4_ = uVar18;\n        *(undefined8 *)(puVar16 + -8) = 0x2eaeec;\n        iVar5 = (*pcVar2)(plVar21);\n        plVar21 = (long *)0x0;\n        bVar13 = (byte)local_58;\n        if (iVar5 != -1) {\n          bVar13 = 0;\n          plVar21 = local_40;\n        }\n        uVar18 = uStack_70._4_4_;\n        local_40 = plVar21;\n        bVar23 = uStack_70._3_1_;\n        bVar11 = (byte)local_48;\n        cVar24 = (byte)local_68;\n        goto LAB_002eab55;\n      }\n      if (bVar11 == 0) break;\n    }" if (parenthesized_expression "(bVar12 == 0)" ( (binary_expression "bVar12 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_002eab55:\n      if (bVar11 == bVar13) break;\n    }" { (labeled_statement "LAB_002eab55:\n      if (bVar11 == bVar13) break;" statement_identifier : (if_statement "if (bVar11 == bVar13) break;" if (parenthesized_expression "(bVar11 == bVar13)" ( (binary_expression "bVar11 == bVar13" identifier == identifier) )) (break_statement "break;" break ;))) }) (else_clause "else {\n      if ((ulong)local_40[3] <= (ulong)local_40[2]) {\n        local_68 = (long *)CONCAT71(local_68._1_7_,cVar24);\n        local_58 = (ulong *)CONCAT71(local_58._1_7_,bVar12);\n        local_48 = (long *)CONCAT71(local_48._1_7_,bVar11);\n        pcVar2 = *(code **)(*local_40 + 0x48);\n        uStack_70._3_1_ = bVar23;\n        uStack_70._4_4_ = uVar18;\n        *(undefined8 *)(puVar16 + -8) = 0x2eaeec;\n        iVar5 = (*pcVar2)(plVar21);\n        plVar21 = (long *)0x0;\n        bVar13 = (byte)local_58;\n        if (iVar5 != -1) {\n          bVar13 = 0;\n          plVar21 = local_40;\n        }\n        uVar18 = uStack_70._4_4_;\n        local_40 = plVar21;\n        bVar23 = uStack_70._3_1_;\n        bVar11 = (byte)local_48;\n        cVar24 = (byte)local_68;\n        goto LAB_002eab55;\n      }\n      if (bVar11 == 0) break;\n    }" else (compound_statement "{\n      if ((ulong)local_40[3] <= (ulong)local_40[2]) {\n        local_68 = (long *)CONCAT71(local_68._1_7_,cVar24);\n        local_58 = (ulong *)CONCAT71(local_58._1_7_,bVar12);\n        local_48 = (long *)CONCAT71(local_48._1_7_,bVar11);\n        pcVar2 = *(code **)(*local_40 + 0x48);\n        uStack_70._3_1_ = bVar23;\n        uStack_70._4_4_ = uVar18;\n        *(undefined8 *)(puVar16 + -8) = 0x2eaeec;\n        iVar5 = (*pcVar2)(plVar21);\n        plVar21 = (long *)0x0;\n        bVar13 = (byte)local_58;\n        if (iVar5 != -1) {\n          bVar13 = 0;\n          plVar21 = local_40;\n        }\n        uVar18 = uStack_70._4_4_;\n        local_40 = plVar21;\n        bVar23 = uStack_70._3_1_;\n        bVar11 = (byte)local_48;\n        cVar24 = (byte)local_68;\n        goto LAB_002eab55;\n      }\n      if (bVar11 == 0) break;\n    }" { (if_statement "if ((ulong)local_40[3] <= (ulong)local_40[2]) {\n        local_68 = (long *)CONCAT71(local_68._1_7_,cVar24);\n        local_58 = (ulong *)CONCAT71(local_58._1_7_,bVar12);\n        local_48 = (long *)CONCAT71(local_48._1_7_,bVar11);\n        pcVar2 = *(code **)(*local_40 + 0x48);\n        uStack_70._3_1_ = bVar23;\n        uStack_70._4_4_ = uVar18;\n        *(undefined8 *)(puVar16 + -8) = 0x2eaeec;\n        iVar5 = (*pcVar2)(plVar21);\n        plVar21 = (long *)0x0;\n        bVar13 = (byte)local_58;\n        if (iVar5 != -1) {\n          bVar13 = 0;\n          plVar21 = local_40;\n        }\n        uVar18 = uStack_70._4_4_;\n        local_40 = plVar21;\n        bVar23 = uStack_70._3_1_;\n        bVar11 = (byte)local_48;\n        cVar24 = (byte)local_68;\n        goto LAB_002eab55;\n      }" if (parenthesized_expression "((ulong)local_40[3] <= (ulong)local_40[2])" ( (binary_expression "(ulong)local_40[3] <= (ulong)local_40[2]" (cast_expression "(ulong)local_40[3]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "local_40[3]" identifier [ number_literal ])) <= (cast_expression "(ulong)local_40[2]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "local_40[2]" identifier [ number_literal ]))) )) (compound_statement "{\n        local_68 = (long *)CONCAT71(local_68._1_7_,cVar24);\n        local_58 = (ulong *)CONCAT71(local_58._1_7_,bVar12);\n        local_48 = (long *)CONCAT71(local_48._1_7_,bVar11);\n        pcVar2 = *(code **)(*local_40 + 0x48);\n        uStack_70._3_1_ = bVar23;\n        uStack_70._4_4_ = uVar18;\n        *(undefined8 *)(puVar16 + -8) = 0x2eaeec;\n        iVar5 = (*pcVar2)(plVar21);\n        plVar21 = (long *)0x0;\n        bVar13 = (byte)local_58;\n        if (iVar5 != -1) {\n          bVar13 = 0;\n          plVar21 = local_40;\n        }\n        uVar18 = uStack_70._4_4_;\n        local_40 = plVar21;\n        bVar23 = uStack_70._3_1_;\n        bVar11 = (byte)local_48;\n        cVar24 = (byte)local_68;\n        goto LAB_002eab55;\n      }" { (expression_statement "local_68 = (long *)CONCAT71(local_68._1_7_,cVar24);" (assignment_expression "local_68 = (long *)CONCAT71(local_68._1_7_,cVar24)" identifier = (cast_expression "(long *)CONCAT71(local_68._1_7_,cVar24)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (call_expression "CONCAT71(local_68._1_7_,cVar24)" identifier (argument_list "(local_68._1_7_,cVar24)" ( (field_expression "local_68._1_7_" identifier . field_identifier) , identifier ))))) ;) (expression_statement "local_58 = (ulong *)CONCAT71(local_58._1_7_,bVar12);" (assignment_expression "local_58 = (ulong *)CONCAT71(local_58._1_7_,bVar12)" identifier = (cast_expression "(ulong *)CONCAT71(local_58._1_7_,bVar12)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "CONCAT71(local_58._1_7_,bVar12)" identifier (argument_list "(local_58._1_7_,bVar12)" ( (field_expression "local_58._1_7_" identifier . field_identifier) , identifier ))))) ;) (expression_statement "local_48 = (long *)CONCAT71(local_48._1_7_,bVar11);" (assignment_expression "local_48 = (long *)CONCAT71(local_48._1_7_,bVar11)" identifier = (cast_expression "(long *)CONCAT71(local_48._1_7_,bVar11)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (call_expression "CONCAT71(local_48._1_7_,bVar11)" identifier (argument_list "(local_48._1_7_,bVar11)" ( (field_expression "local_48._1_7_" identifier . field_identifier) , identifier ))))) ;) (expression_statement "pcVar2 = *(code **)(*local_40 + 0x48);" (assignment_expression "pcVar2 = *(code **)(*local_40 + 0x48)" identifier = (pointer_expression "*(code **)(*local_40 + 0x48)" * (cast_expression "(code **)(*local_40 + 0x48)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*local_40 + 0x48)" ( (binary_expression "*local_40 + 0x48" (pointer_expression "*local_40" * identifier) + number_literal) ))))) ;) (expression_statement "uStack_70._3_1_ = bVar23;" (assignment_expression "uStack_70._3_1_ = bVar23" (field_expression "uStack_70._3_1_" identifier . field_identifier) = identifier) ;) (expression_statement "uStack_70._4_4_ = uVar18;" (assignment_expression "uStack_70._4_4_ = uVar18" (field_expression "uStack_70._4_4_" identifier . field_identifier) = identifier) ;) (expression_statement "*(undefined8 *)(puVar16 + -8) = 0x2eaeec;" (assignment_expression "*(undefined8 *)(puVar16 + -8) = 0x2eaeec" (pointer_expression "*(undefined8 *)(puVar16 + -8)" * (cast_expression "(undefined8 *)(puVar16 + -8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -8)" ( (binary_expression "puVar16 + -8" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar5 = (*pcVar2)(plVar21);" (assignment_expression "iVar5 = (*pcVar2)(plVar21)" identifier = (call_expression "(*pcVar2)(plVar21)" (parenthesized_expression "(*pcVar2)" ( (pointer_expression "*pcVar2" * identifier) )) (argument_list "(plVar21)" ( identifier )))) ;) (expression_statement "plVar21 = (long *)0x0;" (assignment_expression "plVar21 = (long *)0x0" identifier = (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "bVar13 = (byte)local_58;" (assignment_expression "bVar13 = (byte)local_58" identifier = (cast_expression "(byte)local_58" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (if_statement "if (iVar5 != -1) {\n          bVar13 = 0;\n          plVar21 = local_40;\n        }" if (parenthesized_expression "(iVar5 != -1)" ( (binary_expression "iVar5 != -1" identifier != number_literal) )) (compound_statement "{\n          bVar13 = 0;\n          plVar21 = local_40;\n        }" { (expression_statement "bVar13 = 0;" (assignment_expression "bVar13 = 0" identifier = number_literal) ;) (expression_statement "plVar21 = local_40;" (assignment_expression "plVar21 = local_40" identifier = identifier) ;) })) (expression_statement "uVar18 = uStack_70._4_4_;" (assignment_expression "uVar18 = uStack_70._4_4_" identifier = (field_expression "uStack_70._4_4_" identifier . field_identifier)) ;) (expression_statement "local_40 = plVar21;" (assignment_expression "local_40 = plVar21" identifier = identifier) ;) (expression_statement "bVar23 = uStack_70._3_1_;" (assignment_expression "bVar23 = uStack_70._3_1_" identifier = (field_expression "uStack_70._3_1_" identifier . field_identifier)) ;) (expression_statement "bVar11 = (byte)local_48;" (assignment_expression "bVar11 = (byte)local_48" identifier = (cast_expression "(byte)local_48" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "cVar24 = (byte)local_68;" (assignment_expression "cVar24 = (byte)local_68" identifier = (cast_expression "(byte)local_68" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (goto_statement "goto LAB_002eab55;" goto statement_identifier ;) })) (if_statement "if (bVar11 == 0) break;" if (parenthesized_expression "(bVar11 == 0)" ( (binary_expression "bVar11 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) }))) (if_statement "if ((param_2 == (long *)0x0) || (cVar24 == '\0')) {\n      cVar24 = (char)uVar18;\n    }\n    else if ((char *)param_2[2] < (char *)param_2[3]) {\n      cVar24 = *(char *)param_2[2];\n    }\n    else {\n      local_58 = (ulong *)CONCAT71(local_58._1_7_,bVar23);\n      local_48 = (long *)CONCAT44(local_48._4_4_,uVar18);\n      pcVar2 = *(code **)(*param_2 + 0x48);\n      *(undefined8 *)(puVar16 + -8) = 0x2eaf38;\n      iVar5 = (*pcVar2)(param_2);\n      cVar24 = -1;\n      uVar18 = (uint)local_48;\n      bVar23 = (byte)local_58;\n      if (iVar5 == -1) {\n        param_2 = (long *)0x0;\n      }\n      else {\n        cVar24 = (char)iVar5;\n      }\n    }" if (parenthesized_expression "((param_2 == (long *)0x0) || (cVar24 == '\0'))" ( (binary_expression "(param_2 == (long *)0x0) || (cVar24 == '\0')" (parenthesized_expression "(param_2 == (long *)0x0)" ( (binary_expression "param_2 == (long *)0x0" identifier == (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(cVar24 == '\0')" ( (binary_expression "cVar24 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n      cVar24 = (char)uVar18;\n    }" { (expression_statement "cVar24 = (char)uVar18;" (assignment_expression "cVar24 = (char)uVar18" identifier = (cast_expression "(char)uVar18" ( (type_descriptor "char" primitive_type) ) identifier)) ;) }) (else_clause "else if ((char *)param_2[2] < (char *)param_2[3]) {\n      cVar24 = *(char *)param_2[2];\n    }\n    else {\n      local_58 = (ulong *)CONCAT71(local_58._1_7_,bVar23);\n      local_48 = (long *)CONCAT44(local_48._4_4_,uVar18);\n      pcVar2 = *(code **)(*param_2 + 0x48);\n      *(undefined8 *)(puVar16 + -8) = 0x2eaf38;\n      iVar5 = (*pcVar2)(param_2);\n      cVar24 = -1;\n      uVar18 = (uint)local_48;\n      bVar23 = (byte)local_58;\n      if (iVar5 == -1) {\n        param_2 = (long *)0x0;\n      }\n      else {\n        cVar24 = (char)iVar5;\n      }\n    }" else (if_statement "if ((char *)param_2[2] < (char *)param_2[3]) {\n      cVar24 = *(char *)param_2[2];\n    }\n    else {\n      local_58 = (ulong *)CONCAT71(local_58._1_7_,bVar23);\n      local_48 = (long *)CONCAT44(local_48._4_4_,uVar18);\n      pcVar2 = *(code **)(*param_2 + 0x48);\n      *(undefined8 *)(puVar16 + -8) = 0x2eaf38;\n      iVar5 = (*pcVar2)(param_2);\n      cVar24 = -1;\n      uVar18 = (uint)local_48;\n      bVar23 = (byte)local_58;\n      if (iVar5 == -1) {\n        param_2 = (long *)0x0;\n      }\n      else {\n        cVar24 = (char)iVar5;\n      }\n    }" if (parenthesized_expression "((char *)param_2[2] < (char *)param_2[3])" ( (binary_expression "(char *)param_2[2] < (char *)param_2[3]" (cast_expression "(char *)param_2[2]" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[2]" identifier [ number_literal ])) < (cast_expression "(char *)param_2[3]" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[3]" identifier [ number_literal ]))) )) (compound_statement "{\n      cVar24 = *(char *)param_2[2];\n    }" { (expression_statement "cVar24 = *(char *)param_2[2];" (assignment_expression "cVar24 = *(char *)param_2[2]" identifier = (pointer_expression "*(char *)param_2[2]" * (cast_expression "(char *)param_2[2]" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[2]" identifier [ number_literal ])))) ;) }) (else_clause "else {\n      local_58 = (ulong *)CONCAT71(local_58._1_7_,bVar23);\n      local_48 = (long *)CONCAT44(local_48._4_4_,uVar18);\n      pcVar2 = *(code **)(*param_2 + 0x48);\n      *(undefined8 *)(puVar16 + -8) = 0x2eaf38;\n      iVar5 = (*pcVar2)(param_2);\n      cVar24 = -1;\n      uVar18 = (uint)local_48;\n      bVar23 = (byte)local_58;\n      if (iVar5 == -1) {\n        param_2 = (long *)0x0;\n      }\n      else {\n        cVar24 = (char)iVar5;\n      }\n    }" else (compound_statement "{\n      local_58 = (ulong *)CONCAT71(local_58._1_7_,bVar23);\n      local_48 = (long *)CONCAT44(local_48._4_4_,uVar18);\n      pcVar2 = *(code **)(*param_2 + 0x48);\n      *(undefined8 *)(puVar16 + -8) = 0x2eaf38;\n      iVar5 = (*pcVar2)(param_2);\n      cVar24 = -1;\n      uVar18 = (uint)local_48;\n      bVar23 = (byte)local_58;\n      if (iVar5 == -1) {\n        param_2 = (long *)0x0;\n      }\n      else {\n        cVar24 = (char)iVar5;\n      }\n    }" { (expression_statement "local_58 = (ulong *)CONCAT71(local_58._1_7_,bVar23);" (assignment_expression "local_58 = (ulong *)CONCAT71(local_58._1_7_,bVar23)" identifier = (cast_expression "(ulong *)CONCAT71(local_58._1_7_,bVar23)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "CONCAT71(local_58._1_7_,bVar23)" identifier (argument_list "(local_58._1_7_,bVar23)" ( (field_expression "local_58._1_7_" identifier . field_identifier) , identifier ))))) ;) (expression_statement "local_48 = (long *)CONCAT44(local_48._4_4_,uVar18);" (assignment_expression "local_48 = (long *)CONCAT44(local_48._4_4_,uVar18)" identifier = (cast_expression "(long *)CONCAT44(local_48._4_4_,uVar18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (call_expression "CONCAT44(local_48._4_4_,uVar18)" identifier (argument_list "(local_48._4_4_,uVar18)" ( (field_expression "local_48._4_4_" identifier . field_identifier) , identifier ))))) ;) (expression_statement "pcVar2 = *(code **)(*param_2 + 0x48);" (assignment_expression "pcVar2 = *(code **)(*param_2 + 0x48)" identifier = (pointer_expression "*(code **)(*param_2 + 0x48)" * (cast_expression "(code **)(*param_2 + 0x48)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_2 + 0x48)" ( (binary_expression "*param_2 + 0x48" (pointer_expression "*param_2" * identifier) + number_literal) ))))) ;) (expression_statement "*(undefined8 *)(puVar16 + -8) = 0x2eaf38;" (assignment_expression "*(undefined8 *)(puVar16 + -8) = 0x2eaf38" (pointer_expression "*(undefined8 *)(puVar16 + -8)" * (cast_expression "(undefined8 *)(puVar16 + -8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -8)" ( (binary_expression "puVar16 + -8" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar5 = (*pcVar2)(param_2);" (assignment_expression "iVar5 = (*pcVar2)(param_2)" identifier = (call_expression "(*pcVar2)(param_2)" (parenthesized_expression "(*pcVar2)" ( (pointer_expression "*pcVar2" * identifier) )) (argument_list "(param_2)" ( identifier )))) ;) (expression_statement "cVar24 = -1;" (assignment_expression "cVar24 = -1" identifier = number_literal) ;) (expression_statement "uVar18 = (uint)local_48;" (assignment_expression "uVar18 = (uint)local_48" identifier = (cast_expression "(uint)local_48" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "bVar23 = (byte)local_58;" (assignment_expression "bVar23 = (byte)local_58" identifier = (cast_expression "(byte)local_58" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (if_statement "if (iVar5 == -1) {\n        param_2 = (long *)0x0;\n      }\n      else {\n        cVar24 = (char)iVar5;\n      }" if (parenthesized_expression "(iVar5 == -1)" ( (binary_expression "iVar5 == -1" identifier == number_literal) )) (compound_statement "{\n        param_2 = (long *)0x0;\n      }" { (expression_statement "param_2 = (long *)0x0;" (assignment_expression "param_2 = (long *)0x0" identifier = (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else {\n        cVar24 = (char)iVar5;\n      }" else (compound_statement "{\n        cVar24 = (char)iVar5;\n      }" { (expression_statement "cVar24 = (char)iVar5;" (assignment_expression "cVar24 = (char)iVar5" identifier = (cast_expression "(char)iVar5" ( (type_descriptor "char" primitive_type) ) identifier)) ;) }))) }))))) (if_statement "if (uVar15 == 0) goto LAB_002eac30;" if (parenthesized_expression "(uVar15 == 0)" ( (binary_expression "uVar15 == 0" identifier == number_literal) )) (goto_statement "goto LAB_002eac30;" goto statement_identifier ;)) (expression_statement "uVar8 = 0;" (assignment_expression "uVar8 = 0" identifier = number_literal) ;) (expression_statement "uVar17 = 0;" (assignment_expression "uVar17 = 0" identifier = number_literal) ;) (do_statement "do {\n      while (puVar7[uVar8] <= uVar19) {\n        uVar17 = uVar17 + 1;\nLAB_002eab88:\n        uVar8 = uVar8 + 1;\n        if (uVar15 <= uVar8) goto LAB_002eabbf;\n      }\n      piVar1 = (int *)((long)puVar22 + uVar8 * 4);\n      if (*(char *)(*(long *)(param_7 + (long)*piVar1 * 8) + uVar19) == cVar24) goto LAB_002eab88;\n      uVar15 = uVar15 - 1;\n      *piVar1 = *(int *)((long)puVar22 + uVar15 * 4);\n      puVar7[uVar8] = puVar7[uVar15];\n    } while (uVar8 < uVar15);" do (compound_statement "{\n      while (puVar7[uVar8] <= uVar19) {\n        uVar17 = uVar17 + 1;\nLAB_002eab88:\n        uVar8 = uVar8 + 1;\n        if (uVar15 <= uVar8) goto LAB_002eabbf;\n      }\n      piVar1 = (int *)((long)puVar22 + uVar8 * 4);\n      if (*(char *)(*(long *)(param_7 + (long)*piVar1 * 8) + uVar19) == cVar24) goto LAB_002eab88;\n      uVar15 = uVar15 - 1;\n      *piVar1 = *(int *)((long)puVar22 + uVar15 * 4);\n      puVar7[uVar8] = puVar7[uVar15];\n    }" { (while_statement "while (puVar7[uVar8] <= uVar19) {\n        uVar17 = uVar17 + 1;\nLAB_002eab88:\n        uVar8 = uVar8 + 1;\n        if (uVar15 <= uVar8) goto LAB_002eabbf;\n      }" while (parenthesized_expression "(puVar7[uVar8] <= uVar19)" ( (binary_expression "puVar7[uVar8] <= uVar19" (subscript_expression "puVar7[uVar8]" identifier [ identifier ]) <= identifier) )) (compound_statement "{\n        uVar17 = uVar17 + 1;\nLAB_002eab88:\n        uVar8 = uVar8 + 1;\n        if (uVar15 <= uVar8) goto LAB_002eabbf;\n      }" { (expression_statement "uVar17 = uVar17 + 1;" (assignment_expression "uVar17 = uVar17 + 1" identifier = (binary_expression "uVar17 + 1" identifier + number_literal)) ;) (labeled_statement "LAB_002eab88:\n        uVar8 = uVar8 + 1;" statement_identifier : (expression_statement "uVar8 = uVar8 + 1;" (assignment_expression "uVar8 = uVar8 + 1" identifier = (binary_expression "uVar8 + 1" identifier + number_literal)) ;)) (if_statement "if (uVar15 <= uVar8) goto LAB_002eabbf;" if (parenthesized_expression "(uVar15 <= uVar8)" ( (binary_expression "uVar15 <= uVar8" identifier <= identifier) )) (goto_statement "goto LAB_002eabbf;" goto statement_identifier ;)) })) (expression_statement "piVar1 = (int *)((long)puVar22 + uVar8 * 4);" (assignment_expression "piVar1 = (int *)((long)puVar22 + uVar8 * 4)" identifier = (cast_expression "(int *)((long)puVar22 + uVar8 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar22 + uVar8 * 4)" ( (binary_expression "(long)puVar22 + uVar8 * 4" (cast_expression "(long)puVar22" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (binary_expression "uVar8 * 4" identifier * number_literal)) )))) ;) (if_statement "if (*(char *)(*(long *)(param_7 + (long)*piVar1 * 8) + uVar19) == cVar24) goto LAB_002eab88;" if (parenthesized_expression "(*(char *)(*(long *)(param_7 + (long)*piVar1 * 8) + uVar19) == cVar24)" ( (binary_expression "*(char *)(*(long *)(param_7 + (long)*piVar1 * 8) + uVar19) == cVar24" (pointer_expression "*(char *)(*(long *)(param_7 + (long)*piVar1 * 8) + uVar19)" * (cast_expression "(char *)(*(long *)(param_7 + (long)*piVar1 * 8) + uVar19)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_7 + (long)*piVar1 * 8) + uVar19)" ( (binary_expression "*(long *)(param_7 + (long)*piVar1 * 8) + uVar19" (pointer_expression "*(long *)(param_7 + (long)*piVar1 * 8)" * (cast_expression "(long *)(param_7 + (long)*piVar1 * 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_7 + (long)*piVar1 * 8)" ( (binary_expression "param_7 + (long)*piVar1 * 8" identifier + (binary_expression "(long)*piVar1 * 8" (cast_expression "(long)*piVar1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "*piVar1" * identifier)) * number_literal)) )))) + identifier) )))) == identifier) )) (goto_statement "goto LAB_002eab88;" goto statement_identifier ;)) (expression_statement "uVar15 = uVar15 - 1;" (assignment_expression "uVar15 = uVar15 - 1" identifier = (binary_expression "uVar15 - 1" identifier - number_literal)) ;) (expression_statement "*piVar1 = *(int *)((long)puVar22 + uVar15 * 4);" (assignment_expression "*piVar1 = *(int *)((long)puVar22 + uVar15 * 4)" (pointer_expression "*piVar1" * identifier) = (pointer_expression "*(int *)((long)puVar22 + uVar15 * 4)" * (cast_expression "(int *)((long)puVar22 + uVar15 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar22 + uVar15 * 4)" ( (binary_expression "(long)puVar22 + uVar15 * 4" (cast_expression "(long)puVar22" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (binary_expression "uVar15 * 4" identifier * number_literal)) ))))) ;) (expression_statement "puVar7[uVar8] = puVar7[uVar15];" (assignment_expression "puVar7[uVar8] = puVar7[uVar15]" (subscript_expression "puVar7[uVar8]" identifier [ identifier ]) = (subscript_expression "puVar7[uVar15]" identifier [ identifier ])) ;) }) while (parenthesized_expression "(uVar8 < uVar15)" ( (binary_expression "uVar8 < uVar15" identifier < identifier) )) ;) (labeled_statement "LAB_002eabbf:\n    if (uVar17 == uVar15) break;" statement_identifier : (if_statement "if (uVar17 == uVar15) break;" if (parenthesized_expression "(uVar17 == uVar15)" ( (binary_expression "uVar17 == uVar15" identifier == identifier) )) (break_statement "break;" break ;))) (if_statement "if ((ulong)param_2[2] < (ulong)param_2[3]) {\n      param_2[2] = param_2[2] + 1;\n    }\n    else {\n      local_48 = (long *)CONCAT71(local_48._1_7_,bVar23);\n      pcVar2 = *(code **)(*param_2 + 0x50);\n      *(undefined8 *)(puVar16 + -8) = 0x2eaca1;\n      (*pcVar2)(param_2);\n      bVar23 = (byte)local_48;\n    }" if (parenthesized_expression "((ulong)param_2[2] < (ulong)param_2[3])" ( (binary_expression "(ulong)param_2[2] < (ulong)param_2[3]" (cast_expression "(ulong)param_2[2]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_2[2]" identifier [ number_literal ])) < (cast_expression "(ulong)param_2[3]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_2[3]" identifier [ number_literal ]))) )) (compound_statement "{\n      param_2[2] = param_2[2] + 1;\n    }" { (expression_statement "param_2[2] = param_2[2] + 1;" (assignment_expression "param_2[2] = param_2[2] + 1" (subscript_expression "param_2[2]" identifier [ number_literal ]) = (binary_expression "param_2[2] + 1" (subscript_expression "param_2[2]" identifier [ number_literal ]) + number_literal)) ;) }) (else_clause "else {\n      local_48 = (long *)CONCAT71(local_48._1_7_,bVar23);\n      pcVar2 = *(code **)(*param_2 + 0x50);\n      *(undefined8 *)(puVar16 + -8) = 0x2eaca1;\n      (*pcVar2)(param_2);\n      bVar23 = (byte)local_48;\n    }" else (compound_statement "{\n      local_48 = (long *)CONCAT71(local_48._1_7_,bVar23);\n      pcVar2 = *(code **)(*param_2 + 0x50);\n      *(undefined8 *)(puVar16 + -8) = 0x2eaca1;\n      (*pcVar2)(param_2);\n      bVar23 = (byte)local_48;\n    }" { (expression_statement "local_48 = (long *)CONCAT71(local_48._1_7_,bVar23);" (assignment_expression "local_48 = (long *)CONCAT71(local_48._1_7_,bVar23)" identifier = (cast_expression "(long *)CONCAT71(local_48._1_7_,bVar23)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (call_expression "CONCAT71(local_48._1_7_,bVar23)" identifier (argument_list "(local_48._1_7_,bVar23)" ( (field_expression "local_48._1_7_" identifier . field_identifier) , identifier ))))) ;) (expression_statement "pcVar2 = *(code **)(*param_2 + 0x50);" (assignment_expression "pcVar2 = *(code **)(*param_2 + 0x50)" identifier = (pointer_expression "*(code **)(*param_2 + 0x50)" * (cast_expression "(code **)(*param_2 + 0x50)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_2 + 0x50)" ( (binary_expression "*param_2 + 0x50" (pointer_expression "*param_2" * identifier) + number_literal) ))))) ;) (expression_statement "*(undefined8 *)(puVar16 + -8) = 0x2eaca1;" (assignment_expression "*(undefined8 *)(puVar16 + -8) = 0x2eaca1" (pointer_expression "*(undefined8 *)(puVar16 + -8)" * (cast_expression "(undefined8 *)(puVar16 + -8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -8)" ( (binary_expression "puVar16 + -8" identifier + number_literal) )))) = number_literal) ;) (expression_statement "(*pcVar2)(param_2);" (call_expression "(*pcVar2)(param_2)" (parenthesized_expression "(*pcVar2)" ( (pointer_expression "*pcVar2" * identifier) )) (argument_list "(param_2)" ( identifier ))) ;) (expression_statement "bVar23 = (byte)local_48;" (assignment_expression "bVar23 = (byte)local_48" identifier = (cast_expression "(byte)local_48" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) }))) (expression_statement "uVar19 = uVar19 + 1;" (assignment_expression "uVar19 = uVar19 + 1" identifier = (binary_expression "uVar19 + 1" identifier + number_literal)) ;) (expression_statement "uVar18 = 0xffffffff;" (assignment_expression "uVar18 = 0xffffffff" identifier = number_literal) ;) }) while (parenthesized_expression "( true )" ( true )) ;) (if_statement "if (uVar15 == 1) {\n    uVar15 = *puVar7;\njoined_r0x002eacc3:\n    if (uVar15 == uVar19) {\nLAB_002eacc9:\n      iVar5 = (int)*puVar22;\n      if (param_8 <= (ulong)(long)iVar5) {\n        iVar5 = iVar5 - (int)param_8;\n      }\n      *local_60 = iVar5;\n      goto LAB_002eac37;\n    }\n  }\n  else if (uVar15 == 2) {\n    if (*puVar7 != uVar19) {\n      uVar15 = puVar7[1];\n      goto joined_r0x002eacc3;\n    }\n    goto LAB_002eacc9;\n  }" if (parenthesized_expression "(uVar15 == 1)" ( (binary_expression "uVar15 == 1" identifier == number_literal) )) (compound_statement "{\n    uVar15 = *puVar7;\njoined_r0x002eacc3:\n    if (uVar15 == uVar19) {\nLAB_002eacc9:\n      iVar5 = (int)*puVar22;\n      if (param_8 <= (ulong)(long)iVar5) {\n        iVar5 = iVar5 - (int)param_8;\n      }\n      *local_60 = iVar5;\n      goto LAB_002eac37;\n    }\n  }" { (expression_statement "uVar15 = *puVar7;" (assignment_expression "uVar15 = *puVar7" identifier = (pointer_expression "*puVar7" * identifier)) ;) (labeled_statement "joined_r0x002eacc3:\n    if (uVar15 == uVar19) {\nLAB_002eacc9:\n      iVar5 = (int)*puVar22;\n      if (param_8 <= (ulong)(long)iVar5) {\n        iVar5 = iVar5 - (int)param_8;\n      }\n      *local_60 = iVar5;\n      goto LAB_002eac37;\n    }" statement_identifier : (if_statement "if (uVar15 == uVar19) {\nLAB_002eacc9:\n      iVar5 = (int)*puVar22;\n      if (param_8 <= (ulong)(long)iVar5) {\n        iVar5 = iVar5 - (int)param_8;\n      }\n      *local_60 = iVar5;\n      goto LAB_002eac37;\n    }" if (parenthesized_expression "(uVar15 == uVar19)" ( (binary_expression "uVar15 == uVar19" identifier == identifier) )) (compound_statement "{\nLAB_002eacc9:\n      iVar5 = (int)*puVar22;\n      if (param_8 <= (ulong)(long)iVar5) {\n        iVar5 = iVar5 - (int)param_8;\n      }\n      *local_60 = iVar5;\n      goto LAB_002eac37;\n    }" { (labeled_statement "LAB_002eacc9:\n      iVar5 = (int)*puVar22;" statement_identifier : (expression_statement "iVar5 = (int)*puVar22;" (assignment_expression "iVar5 = (int)*puVar22" identifier = (cast_expression "(int)*puVar22" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*puVar22" * identifier))) ;)) (if_statement "if (param_8 <= (ulong)(long)iVar5) {\n        iVar5 = iVar5 - (int)param_8;\n      }" if (parenthesized_expression "(param_8 <= (ulong)(long)iVar5)" ( (binary_expression "param_8 <= (ulong)(long)iVar5" identifier <= (cast_expression "(ulong)(long)iVar5" ( (type_descriptor "ulong" type_identifier) ) (cast_expression "(long)iVar5" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier))) )) (compound_statement "{\n        iVar5 = iVar5 - (int)param_8;\n      }" { (expression_statement "iVar5 = iVar5 - (int)param_8;" (assignment_expression "iVar5 = iVar5 - (int)param_8" identifier = (binary_expression "iVar5 - (int)param_8" identifier - (cast_expression "(int)param_8" ( (type_descriptor "int" primitive_type) ) identifier))) ;) })) (expression_statement "*local_60 = iVar5;" (assignment_expression "*local_60 = iVar5" (pointer_expression "*local_60" * identifier) = identifier) ;) (goto_statement "goto LAB_002eac37;" goto statement_identifier ;) }))) }) (else_clause "else if (uVar15 == 2) {\n    if (*puVar7 != uVar19) {\n      uVar15 = puVar7[1];\n      goto joined_r0x002eacc3;\n    }\n    goto LAB_002eacc9;\n  }" else (if_statement "if (uVar15 == 2) {\n    if (*puVar7 != uVar19) {\n      uVar15 = puVar7[1];\n      goto joined_r0x002eacc3;\n    }\n    goto LAB_002eacc9;\n  }" if (parenthesized_expression "(uVar15 == 2)" ( (binary_expression "uVar15 == 2" identifier == number_literal) )) (compound_statement "{\n    if (*puVar7 != uVar19) {\n      uVar15 = puVar7[1];\n      goto joined_r0x002eacc3;\n    }\n    goto LAB_002eacc9;\n  }" { (if_statement "if (*puVar7 != uVar19) {\n      uVar15 = puVar7[1];\n      goto joined_r0x002eacc3;\n    }" if (parenthesized_expression "(*puVar7 != uVar19)" ( (binary_expression "*puVar7 != uVar19" (pointer_expression "*puVar7" * identifier) != identifier) )) (compound_statement "{\n      uVar15 = puVar7[1];\n      goto joined_r0x002eacc3;\n    }" { (expression_statement "uVar15 = puVar7[1];" (assignment_expression "uVar15 = puVar7[1]" identifier = (subscript_expression "puVar7[1]" identifier [ number_literal ])) ;) (goto_statement "goto joined_r0x002eacc3;" goto statement_identifier ;) })) (goto_statement "goto LAB_002eacc9;" goto statement_identifier ;) })))) (labeled_statement "LAB_002eac30:\n  *param_10 = *param_10 | 4;" statement_identifier : (expression_statement "*param_10 = *param_10 | 4;" (assignment_expression "*param_10 = *param_10 | 4" (pointer_expression "*param_10" * identifier) = (binary_expression "*param_10 | 4" (pointer_expression "*param_10" * identifier) | number_literal)) ;)) (labeled_statement "LAB_002eac37:\n  auVar25._8_8_ = (ulong)uVar18 | local_50 & 0xffffffff00000000;" statement_identifier : (expression_statement "auVar25._8_8_ = (ulong)uVar18 | local_50 & 0xffffffff00000000;" (assignment_expression "auVar25._8_8_ = (ulong)uVar18 | local_50 & 0xffffffff00000000" (field_expression "auVar25._8_8_" identifier . field_identifier) = (binary_expression "(ulong)uVar18 | local_50 & 0xffffffff00000000" (cast_expression "(ulong)uVar18" ( (type_descriptor "ulong" type_identifier) ) identifier) | (binary_expression "local_50 & 0xffffffff00000000" identifier & number_literal))) ;)) (expression_statement "auVar25._0_8_ = param_2;" (assignment_expression "auVar25._0_8_ = param_2" (field_expression "auVar25._0_8_" identifier . field_identifier) = identifier) ;) (return_statement "return auVar25;" return identifier ;) (ERROR "}" }))
(translation_unit "/* std::time_get<char, std::istreambuf_iterator<char, std::char_traits<char> >\n   >::_M_extract_wday_or_month(std::istreambuf_iterator<char, std::char_traits<char> >,\n   std::istreambuf_iterator<char, std::char_traits<char> >, int&, char const**, unsigned long,\n   std::ios_base&, std::_Ios_Iostate&) const */\n\nundefined1  [16]\nstd::time_get<char,std::istreambuf_iterator<char,std::char_traits<char>>>::_M_extract_wday_or_month\n          (undefined8 param_1,long *param_2,ulong param_3,long *param_4,int param_5,int *param_6,\n          long param_7,ulong param_8,long param_9,uint *param_10)\n\n{\n  code *pcVar1;\n  char *__s;\n  long lVar2;\n  long lVar3;\n  int iVar4;\n  uint uVar5;\n  ctype *pcVar6;\n  ulong uVar7;\n  size_t sVar8;\n  bool bVar9;\n  byte bVar10;\n  byte bVar11;\n  byte bVar12;\n  bool bVar13;\n  ulong uVar14;\n  undefined1 *puVar15;\n  ulong uVar16;\n  uint uVar17;\n  ulong uVar18;\n  bool bVar19;\n  long *plVar20;\n  ctype *pcVar21;\n  byte bVar22;\n  char cVar23;\n  undefined1 auVar24 [16];\n  undefined8 uStack_80;\n  undefined1 auStack_78 [8];\n  ctype acStack_70 [3];\n  byte local_6d;\n  uint local_6c;\n  long *local_68;\n  int *local_60;\n  ctype *local_58;\n  ulong local_50;\n  long *local_48;\n  long *local_40;\n  \n  iVar4 = (int)param_3;\n  local_48 = (long *)CONCAT44(local_48._4_4_,iVar4);\n  uStack_80 = 0x2eaabc;\n  local_60 = param_6;\n  local_50 = param_3;\n  local_40 = param_4;\n  pcVar6 = use_facet<std::ctype<char>>((locale *)(param_9 + 0xd0));\n  lVar2 = -(param_8 * 8 + 0x17 & 0xfffffffffffffff0);\n  puVar15 = auStack_78 + lVar2;\n  pcVar21 = acStack_70 + lVar2;\n  bVar19 = param_2 != (long *)0x0 && iVar4 == -1;\n  cVar23 = iVar4 == -1;\n  bVar9 = bVar19;\n  if ((bVar19) && (cVar23 = '\0', (ulong)param_2[3] <= (ulong)param_2[2])) {\n    local_68 = (long *)((ulong)local_68 & 0xffffffffffffff00);\n    pcVar1 = *(code **)(*param_2 + 0x48);\n    local_58 = pcVar6;\n    *(undefined8 *)(auStack_78 + lVar2 + -8) = 0x2eae52;\n    iVar4 = (*pcVar1)(param_2);\n    pcVar6 = local_58;\n    cVar23 = (byte)local_68;\n    if (iVar4 == -1) {\n      param_2 = (long *)0x0;\n      bVar9 = false;\n      cVar23 = bVar19;\n    }\n  }\n  bVar22 = param_5 == -1;\n  bVar13 = param_4 != (long *)0x0 && (bool)bVar22;\n  uVar17 = (uint)local_48;\n  bVar19 = (bool)bVar22;\n  if (bVar13) {\n    if ((ulong)param_4[2] < (ulong)param_4[3]) {\n      bVar19 = false;\n    }\n    else {\n      local_6c = CONCAT31(local_6c._1_3_,bVar22);\n      local_68 = (long *)CONCAT71(local_68._1_7_,cVar23);\n      pcVar1 = *(code **)(*param_4 + 0x48);\n      local_58 = pcVar6;\n      *(undefined8 *)(auStack_78 + lVar2 + -8) = 0x2eaf99;\n      iVar4 = (*pcVar1)(param_4);\n      local_40 = (long *)0x0;\n      if (iVar4 != -1) {\n        local_40 = param_4;\n      }\n      pcVar6 = local_58;\n      uVar17 = (uint)local_48;\n      cVar23 = (byte)local_68;\n      bVar22 = (byte)local_6c;\n      bVar19 = iVar4 == -1 && bVar13;\n    }\n  }\n  if ((bool)cVar23 == bVar19) {\n    uVar18 = 0;\n    uVar14 = 0;\n    puVar15 = auStack_78 + lVar2;\n    pcVar6 = (ctype *)0x0;\n  }\n  else {\n    uVar5 = uVar17;\n    if (bVar9) {\n      if ((byte *)param_2[2] < (byte *)param_2[3]) {\n        uVar5 = (uint)*(byte *)param_2[2];\n      }\n      else {\n        local_68 = (long *)CONCAT71(local_68._1_7_,bVar22);\n        local_48 = (long *)CONCAT44(local_48._4_4_,uVar17);\n        pcVar1 = *(code **)(*param_2 + 0x48);\n        local_58 = pcVar6;\n        *(undefined8 *)(auStack_78 + lVar2 + -8) = 0x2eafe4;\n        uVar5 = (*pcVar1)(param_2);\n        pcVar6 = local_58;\n        uVar17 = (uint)local_48;\n        bVar22 = (byte)local_68;\n        if (uVar5 == 0xffffffff) {\n          param_2 = (long *)0x0;\n          uVar5 = 0xffffffff;\n        }\n      }\n    }\n    if ((long *)(param_8 * 2) == (long *)0x0) {\n      uVar14 = 0;\n      pcVar6 = (ctype *)0x0;\n      uVar18 = 0;\n    }\n    else {\n      uVar14 = 0;\n      plVar20 = (long *)0x0;\n      local_6d = bVar22;\n      local_6c = uVar17;\n      local_68 = param_2;\n      local_58 = pcVar21;\n      local_48 = (long *)(param_8 * 2);\n      do {\n        while (**(char **)(param_7 + (long)plVar20 * 8) == (char)uVar5) {\nLAB_002ead54:\n          *(int *)(local_58 + uVar14 * 4) = (int)plVar20;\n          uVar14 = uVar14 + 1;\n          plVar20 = (long *)((long)plVar20 + 1);\n          if (local_48 == plVar20) goto LAB_002ead6a;\n        }\n        pcVar1 = *(code **)(*(long *)pcVar6 + 0x10);\n        *(undefined8 *)(auStack_78 + lVar2 + -8) = 0x2ead39;\n        cVar23 = (*pcVar1)(pcVar6);\n        if (cVar23 == (char)uVar5) goto LAB_002ead54;\n        plVar20 = (long *)((long)plVar20 + 1);\n      } while (local_48 != plVar20);\nLAB_002ead6a:\n      pcVar21 = local_58;\n      plVar20 = local_68;\n      uVar18 = 0;\n      puVar15 = auStack_78 + lVar2;\n      pcVar6 = (ctype *)0x0;\n      param_2 = local_68;\n      uVar17 = local_6c;\n      bVar22 = local_6d;\n      if (uVar14 != 0) {\n        if ((ulong)local_68[2] < (ulong)local_68[3]) {\n          local_68[2] = local_68[2] + 1;\n          local_48._0_1_ = local_6d;\n        }\n        else {\n          local_48 = (long *)CONCAT71(local_48._1_7_,local_6d);\n          pcVar1 = *(code **)(*local_68 + 0x50);\n          *(undefined8 *)(auStack_78 + lVar2 + -8) = 0x2eb01f;\n          (*pcVar1)(plVar20);\n        }\n        local_68 = (long *)CONCAT71(local_68._1_7_,(byte)local_48);\n        local_48 = plVar20;\n        lVar3 = -(uVar14 * 8 + 0x17 & 0xfffffffffffffff0);\n        puVar15 = auStack_78 + lVar3 + lVar2;\n        uVar18 = 0;\n        local_58 = acStack_70 + lVar3 + lVar2;\n        do {\n          __s = *(char **)(param_7 + (long)*(int *)(pcVar21 + uVar18 * 4) * 8);\n          *(undefined8 *)(auStack_78 + lVar3 + lVar2 + -8) = 0x2eaded;\n          sVar8 = strlen(__s);\n          *(size_t *)(acStack_70 + lVar3 + lVar2 + uVar18 * 8) = sVar8;\n          uVar18 = uVar18 + 1;\n        } while (uVar14 != uVar18);\n        uVar17 = 0xffffffff;\n        uVar18 = 1;\n        pcVar6 = local_58;\n        param_2 = local_48;\n        bVar22 = (byte)local_68;\n      }\n    }\n  }\n  do {\n    cVar23 = uVar17 == 0xffffffff;\n    bVar9 = param_2 != (long *)0x0 && (bool)cVar23;\n    bVar10 = cVar23;\n    if (bVar9) {\n      if ((ulong)param_2[2] < (ulong)param_2[3]) {\n        bVar10 = 0;\n      }\n      else {\n        local_6c = CONCAT31(local_6c._1_3_,bVar22);\n        local_68 = (long *)CONCAT44(local_68._4_4_,uVar17);\n        local_58 = (ctype *)CONCAT71(local_58._1_7_,cVar23);\n        local_48 = (long *)CONCAT71(local_48._1_7_,bVar9);\n        pcVar1 = *(code **)(*param_2 + 0x48);\n        *(undefined8 *)(puVar15 + -8) = 0x2eae9c;\n        iVar4 = (*pcVar1)(param_2);\n        if (iVar4 == -1) {\n          param_2 = (long *)0x0;\n          bVar10 = (byte)local_48;\n        }\n        else {\n          bVar10 = 0;\n        }\n        uVar17 = (uint)local_68;\n        bVar22 = (byte)local_6c;\n        cVar23 = (byte)local_58;\n      }\n    }\n    plVar20 = local_40;\n    bVar11 = local_40 != (long *)0x0 & bVar22;\n    bVar12 = bVar22;\n    if (bVar11 == 0) {\nLAB_002eab55:\n      if (bVar10 == bVar12) break;\n    }\n    else {\n      if ((ulong)local_40[3] <= (ulong)local_40[2]) {\n        local_68 = (long *)CONCAT71(local_68._1_7_,cVar23);\n        local_58 = (ctype *)CONCAT71(local_58._1_7_,bVar11);\n        local_48 = (long *)CONCAT71(local_48._1_7_,bVar10);\n        pcVar1 = *(code **)(*local_40 + 0x48);\n        local_6d = bVar22;\n        local_6c = uVar17;\n        *(undefined8 *)(puVar15 + -8) = 0x2eaeec;\n        iVar4 = (*pcVar1)(plVar20);\n        plVar20 = (long *)0x0;\n        bVar12 = (byte)local_58;\n        if (iVar4 != -1) {\n          bVar12 = 0;\n          plVar20 = local_40;\n        }\n        uVar17 = local_6c;\n        local_40 = plVar20;\n        bVar22 = local_6d;\n        bVar10 = (byte)local_48;\n        cVar23 = (byte)local_68;\n        goto LAB_002eab55;\n      }\n      if (bVar10 == 0) break;\n    }\n    if ((param_2 == (long *)0x0) || (cVar23 == '\0')) {\n      cVar23 = (char)uVar17;\n    }\n    else if ((char *)param_2[2] < (char *)param_2[3]) {\n      cVar23 = *(char *)param_2[2];\n    }\n    else {\n      local_58 = (ctype *)CONCAT71(local_58._1_7_,bVar22);\n      local_48 = (long *)CONCAT44(local_48._4_4_,uVar17);\n      pcVar1 = *(code **)(*param_2 + 0x48);\n      *(undefined8 *)(puVar15 + -8) = 0x2eaf38;\n      iVar4 = (*pcVar1)(param_2);\n      cVar23 = -1;\n      uVar17 = (uint)local_48;\n      bVar22 = (byte)local_58;\n      if (iVar4 == -1) {\n        param_2 = (long *)0x0;\n      }\n      else {\n        cVar23 = (char)iVar4;\n      }\n    }\n    if (uVar14 == 0) goto LAB_002eac30;\n    uVar7 = 0;\n    uVar16 = 0;\n    do {\n      while (*(ulong *)(pcVar6 + uVar7 * 8) <= uVar18) {\n        uVar16 = uVar16 + 1;\nLAB_002eab88:\n        uVar7 = uVar7 + 1;\n        if (uVar14 <= uVar7) goto LAB_002eabbf;\n      }\n      if (*(char *)(*(long *)(param_7 + (long)*(int *)(pcVar21 + uVar7 * 4) * 8) + uVar18) == cVar23\n         ) goto LAB_002eab88;\n      uVar14 = uVar14 - 1;\n      *(int *)(pcVar21 + uVar7 * 4) = *(int *)(pcVar21 + uVar14 * 4);\n      *(ulong *)(pcVar6 + uVar7 * 8) = *(ulong *)(pcVar6 + uVar14 * 8);\n    } while (uVar7 < uVar14);\nLAB_002eabbf:\n    if (uVar16 == uVar14) break;\n    if ((ulong)param_2[2] < (ulong)param_2[3]) {\n      param_2[2] = param_2[2] + 1;\n    }\n    else {\n      local_48 = (long *)CONCAT71(local_48._1_7_,bVar22);\n      pcVar1 = *(code **)(*param_2 + 0x50);\n      *(undefined8 *)(puVar15 + -8) = 0x2eaca1;\n      (*pcVar1)(param_2);\n      bVar22 = (byte)local_48;\n    }\n    uVar18 = uVar18 + 1;\n    uVar17 = 0xffffffff;\n  } while( true );\n  if (uVar14 == 1) {\n    uVar14 = *(ulong *)pcVar6;\njoined_r0x002eacc3:\n    if (uVar14 == uVar18) {\nLAB_002eacc9:\n      iVar4 = *(int *)pcVar21;\n      if (param_8 <= (ulong)(long)iVar4) {\n        iVar4 = iVar4 - (int)param_8;\n      }\n      *local_60 = iVar4;\n      goto LAB_002eac37;\n    }\n  }\n  else if (uVar14 == 2) {\n    if (*(ulong *)pcVar6 != uVar18) {\n      uVar14 = *(ulong *)(pcVar6 + 8);\n      goto joined_r0x002eacc3;\n    }\n    goto LAB_002eacc9;\n  }\nLAB_002eac30:\n  *param_10 = *param_10 | 4;\nLAB_002eac37:\n  auVar24._8_8_ = (ulong)uVar17 | local_50 & 0xffffffff00000000;\n  auVar24._0_8_ = param_2;\n  return auVar24;\n}\n\n" comment (expression_statement "undefined1  [16]" (subscript_expression "undefined1  [16]" identifier [ number_literal ]) ;) (labeled_statement "std::time_get<char,std::istreambuf_iterator<char,std::char_traits<char>>>::_M_extract_wday_or_month\n          (undefined8 param_1,long *param_2,ulong param_3,long *param_4,int param_5,int *param_6,\n          long param_7,ulong param_8,long param_9,uint *param_10)" statement_identifier (ERROR "::time_get<char,std::istreambuf_iterator<char,std:" : : (comma_expression "time_get<char,std" (binary_expression "time_get<char" identifier < identifier) , identifier) : : (comma_expression "istreambuf_iterator<char,std" (binary_expression "istreambuf_iterator<char" identifier < identifier) , identifier) :) : (expression_statement "char_traits<char>>>::_M_extract_wday_or_month\n          (undefined8 param_1,long *param_2,ulong param_3,long *param_4,int param_5,int *param_6,\n          long param_7,ulong param_8,long param_9,uint *param_10)" (binary_expression "char_traits<char>>>::_M_extract_wday_or_month\n          (undefined8 param_1,long *param_2,ulong param_3,long *param_4,int param_5,int *param_6,\n          long param_7,ulong param_8,long param_9,uint *param_10)" identifier < (binary_expression "char>>>::_M_extract_wday_or_month\n          (undefined8 param_1,long *param_2,ulong param_3,long *param_4,int param_5,int *param_6,\n          long param_7,ulong param_8,long param_9,uint *param_10)" identifier >> (ERROR ">::" > : :) (call_expression "_M_extract_wday_or_month\n          (undefined8 param_1,long *param_2,ulong param_3,long *param_4,int param_5,int *param_6,\n          long param_7,ulong param_8,long param_9,uint *param_10)" identifier (argument_list "(undefined8 param_1,long *param_2,ulong param_3,long *param_4,int param_5,int *param_6,\n          long param_7,ulong param_8,long param_9,uint *param_10)" ( identifier (ERROR "param_1" identifier) , (binary_expression "long *param_2" identifier * identifier) , (ERROR "ulong" identifier) identifier , (binary_expression "long *param_4" identifier * identifier) , (ERROR "int" identifier) identifier , (binary_expression "int *param_6" identifier * identifier) , (ERROR "long" identifier) identifier , (ERROR "ulong" identifier) identifier , (ERROR "long" identifier) identifier , (binary_expression "uint *param_10" identifier * identifier) ))))) ;)) (compound_statement "{\n  code *pcVar1;\n  char *__s;\n  long lVar2;\n  long lVar3;\n  int iVar4;\n  uint uVar5;\n  ctype *pcVar6;\n  ulong uVar7;\n  size_t sVar8;\n  bool bVar9;\n  byte bVar10;\n  byte bVar11;\n  byte bVar12;\n  bool bVar13;\n  ulong uVar14;\n  undefined1 *puVar15;\n  ulong uVar16;\n  uint uVar17;\n  ulong uVar18;\n  bool bVar19;\n  long *plVar20;\n  ctype *pcVar21;\n  byte bVar22;\n  char cVar23;\n  undefined1 auVar24 [16];\n  undefined8 uStack_80;\n  undefined1 auStack_78 [8];\n  ctype acStack_70 [3];\n  byte local_6d;\n  uint local_6c;\n  long *local_68;\n  int *local_60;\n  ctype *local_58;\n  ulong local_50;\n  long *local_48;\n  long *local_40;\n  \n  iVar4 = (int)param_3;\n  local_48 = (long *)CONCAT44(local_48._4_4_,iVar4);\n  uStack_80 = 0x2eaabc;\n  local_60 = param_6;\n  local_50 = param_3;\n  local_40 = param_4;\n  pcVar6 = use_facet<std::ctype<char>>((locale *)(param_9 + 0xd0));\n  lVar2 = -(param_8 * 8 + 0x17 & 0xfffffffffffffff0);\n  puVar15 = auStack_78 + lVar2;\n  pcVar21 = acStack_70 + lVar2;\n  bVar19 = param_2 != (long *)0x0 && iVar4 == -1;\n  cVar23 = iVar4 == -1;\n  bVar9 = bVar19;\n  if ((bVar19) && (cVar23 = '\0', (ulong)param_2[3] <= (ulong)param_2[2])) {\n    local_68 = (long *)((ulong)local_68 & 0xffffffffffffff00);\n    pcVar1 = *(code **)(*param_2 + 0x48);\n    local_58 = pcVar6;\n    *(undefined8 *)(auStack_78 + lVar2 + -8) = 0x2eae52;\n    iVar4 = (*pcVar1)(param_2);\n    pcVar6 = local_58;\n    cVar23 = (byte)local_68;\n    if (iVar4 == -1) {\n      param_2 = (long *)0x0;\n      bVar9 = false;\n      cVar23 = bVar19;\n    }\n  }\n  bVar22 = param_5 == -1;\n  bVar13 = param_4 != (long *)0x0 && (bool)bVar22;\n  uVar17 = (uint)local_48;\n  bVar19 = (bool)bVar22;\n  if (bVar13) {\n    if ((ulong)param_4[2] < (ulong)param_4[3]) {\n      bVar19 = false;\n    }\n    else {\n      local_6c = CONCAT31(local_6c._1_3_,bVar22);\n      local_68 = (long *)CONCAT71(local_68._1_7_,cVar23);\n      pcVar1 = *(code **)(*param_4 + 0x48);\n      local_58 = pcVar6;\n      *(undefined8 *)(auStack_78 + lVar2 + -8) = 0x2eaf99;\n      iVar4 = (*pcVar1)(param_4);\n      local_40 = (long *)0x0;\n      if (iVar4 != -1) {\n        local_40 = param_4;\n      }\n      pcVar6 = local_58;\n      uVar17 = (uint)local_48;\n      cVar23 = (byte)local_68;\n      bVar22 = (byte)local_6c;\n      bVar19 = iVar4 == -1 && bVar13;\n    }\n  }\n  if ((bool)cVar23 == bVar19) {\n    uVar18 = 0;\n    uVar14 = 0;\n    puVar15 = auStack_78 + lVar2;\n    pcVar6 = (ctype *)0x0;\n  }\n  else {\n    uVar5 = uVar17;\n    if (bVar9) {\n      if ((byte *)param_2[2] < (byte *)param_2[3]) {\n        uVar5 = (uint)*(byte *)param_2[2];\n      }\n      else {\n        local_68 = (long *)CONCAT71(local_68._1_7_,bVar22);\n        local_48 = (long *)CONCAT44(local_48._4_4_,uVar17);\n        pcVar1 = *(code **)(*param_2 + 0x48);\n        local_58 = pcVar6;\n        *(undefined8 *)(auStack_78 + lVar2 + -8) = 0x2eafe4;\n        uVar5 = (*pcVar1)(param_2);\n        pcVar6 = local_58;\n        uVar17 = (uint)local_48;\n        bVar22 = (byte)local_68;\n        if (uVar5 == 0xffffffff) {\n          param_2 = (long *)0x0;\n          uVar5 = 0xffffffff;\n        }\n      }\n    }\n    if ((long *)(param_8 * 2) == (long *)0x0) {\n      uVar14 = 0;\n      pcVar6 = (ctype *)0x0;\n      uVar18 = 0;\n    }\n    else {\n      uVar14 = 0;\n      plVar20 = (long *)0x0;\n      local_6d = bVar22;\n      local_6c = uVar17;\n      local_68 = param_2;\n      local_58 = pcVar21;\n      local_48 = (long *)(param_8 * 2);\n      do {\n        while (**(char **)(param_7 + (long)plVar20 * 8) == (char)uVar5) {\nLAB_002ead54:\n          *(int *)(local_58 + uVar14 * 4) = (int)plVar20;\n          uVar14 = uVar14 + 1;\n          plVar20 = (long *)((long)plVar20 + 1);\n          if (local_48 == plVar20) goto LAB_002ead6a;\n        }\n        pcVar1 = *(code **)(*(long *)pcVar6 + 0x10);\n        *(undefined8 *)(auStack_78 + lVar2 + -8) = 0x2ead39;\n        cVar23 = (*pcVar1)(pcVar6);\n        if (cVar23 == (char)uVar5) goto LAB_002ead54;\n        plVar20 = (long *)((long)plVar20 + 1);\n      } while (local_48 != plVar20);\nLAB_002ead6a:\n      pcVar21 = local_58;\n      plVar20 = local_68;\n      uVar18 = 0;\n      puVar15 = auStack_78 + lVar2;\n      pcVar6 = (ctype *)0x0;\n      param_2 = local_68;\n      uVar17 = local_6c;\n      bVar22 = local_6d;\n      if (uVar14 != 0) {\n        if ((ulong)local_68[2] < (ulong)local_68[3]) {\n          local_68[2] = local_68[2] + 1;\n          local_48._0_1_ = local_6d;\n        }\n        else {\n          local_48 = (long *)CONCAT71(local_48._1_7_,local_6d);\n          pcVar1 = *(code **)(*local_68 + 0x50);\n          *(undefined8 *)(auStack_78 + lVar2 + -8) = 0x2eb01f;\n          (*pcVar1)(plVar20);\n        }\n        local_68 = (long *)CONCAT71(local_68._1_7_,(byte)local_48);\n        local_48 = plVar20;\n        lVar3 = -(uVar14 * 8 + 0x17 & 0xfffffffffffffff0);\n        puVar15 = auStack_78 + lVar3 + lVar2;\n        uVar18 = 0;\n        local_58 = acStack_70 + lVar3 + lVar2;\n        do {\n          __s = *(char **)(param_7 + (long)*(int *)(pcVar21 + uVar18 * 4) * 8);\n          *(undefined8 *)(auStack_78 + lVar3 + lVar2 + -8) = 0x2eaded;\n          sVar8 = strlen(__s);\n          *(size_t *)(acStack_70 + lVar3 + lVar2 + uVar18 * 8) = sVar8;\n          uVar18 = uVar18 + 1;\n        } while (uVar14 != uVar18);\n        uVar17 = 0xffffffff;\n        uVar18 = 1;\n        pcVar6 = local_58;\n        param_2 = local_48;\n        bVar22 = (byte)local_68;\n      }\n    }\n  }\n  do {\n    cVar23 = uVar17 == 0xffffffff;\n    bVar9 = param_2 != (long *)0x0 && (bool)cVar23;\n    bVar10 = cVar23;\n    if (bVar9) {\n      if ((ulong)param_2[2] < (ulong)param_2[3]) {\n        bVar10 = 0;\n      }\n      else {\n        local_6c = CONCAT31(local_6c._1_3_,bVar22);\n        local_68 = (long *)CONCAT44(local_68._4_4_,uVar17);\n        local_58 = (ctype *)CONCAT71(local_58._1_7_,cVar23);\n        local_48 = (long *)CONCAT71(local_48._1_7_,bVar9);\n        pcVar1 = *(code **)(*param_2 + 0x48);\n        *(undefined8 *)(puVar15 + -8) = 0x2eae9c;\n        iVar4 = (*pcVar1)(param_2);\n        if (iVar4 == -1) {\n          param_2 = (long *)0x0;\n          bVar10 = (byte)local_48;\n        }\n        else {\n          bVar10 = 0;\n        }\n        uVar17 = (uint)local_68;\n        bVar22 = (byte)local_6c;\n        cVar23 = (byte)local_58;\n      }\n    }\n    plVar20 = local_40;\n    bVar11 = local_40 != (long *)0x0 & bVar22;\n    bVar12 = bVar22;\n    if (bVar11 == 0) {\nLAB_002eab55:\n      if (bVar10 == bVar12) break;\n    }\n    else {\n      if ((ulong)local_40[3] <= (ulong)local_40[2]) {\n        local_68 = (long *)CONCAT71(local_68._1_7_,cVar23);\n        local_58 = (ctype *)CONCAT71(local_58._1_7_,bVar11);\n        local_48 = (long *)CONCAT71(local_48._1_7_,bVar10);\n        pcVar1 = *(code **)(*local_40 + 0x48);\n        local_6d = bVar22;\n        local_6c = uVar17;\n        *(undefined8 *)(puVar15 + -8) = 0x2eaeec;\n        iVar4 = (*pcVar1)(plVar20);\n        plVar20 = (long *)0x0;\n        bVar12 = (byte)local_58;\n        if (iVar4 != -1) {\n          bVar12 = 0;\n          plVar20 = local_40;\n        }\n        uVar17 = local_6c;\n        local_40 = plVar20;\n        bVar22 = local_6d;\n        bVar10 = (byte)local_48;\n        cVar23 = (byte)local_68;\n        goto LAB_002eab55;\n      }\n      if (bVar10 == 0) break;\n    }\n    if ((param_2 == (long *)0x0) || (cVar23 == '\0')) {\n      cVar23 = (char)uVar17;\n    }\n    else if ((char *)param_2[2] < (char *)param_2[3]) {\n      cVar23 = *(char *)param_2[2];\n    }\n    else {\n      local_58 = (ctype *)CONCAT71(local_58._1_7_,bVar22);\n      local_48 = (long *)CONCAT44(local_48._4_4_,uVar17);\n      pcVar1 = *(code **)(*param_2 + 0x48);\n      *(undefined8 *)(puVar15 + -8) = 0x2eaf38;\n      iVar4 = (*pcVar1)(param_2);\n      cVar23 = -1;\n      uVar17 = (uint)local_48;\n      bVar22 = (byte)local_58;\n      if (iVar4 == -1) {\n        param_2 = (long *)0x0;\n      }\n      else {\n        cVar23 = (char)iVar4;\n      }\n    }\n    if (uVar14 == 0) goto LAB_002eac30;\n    uVar7 = 0;\n    uVar16 = 0;\n    do {\n      while (*(ulong *)(pcVar6 + uVar7 * 8) <= uVar18) {\n        uVar16 = uVar16 + 1;\nLAB_002eab88:\n        uVar7 = uVar7 + 1;\n        if (uVar14 <= uVar7) goto LAB_002eabbf;\n      }\n      if (*(char *)(*(long *)(param_7 + (long)*(int *)(pcVar21 + uVar7 * 4) * 8) + uVar18) == cVar23\n         ) goto LAB_002eab88;\n      uVar14 = uVar14 - 1;\n      *(int *)(pcVar21 + uVar7 * 4) = *(int *)(pcVar21 + uVar14 * 4);\n      *(ulong *)(pcVar6 + uVar7 * 8) = *(ulong *)(pcVar6 + uVar14 * 8);\n    } while (uVar7 < uVar14);\nLAB_002eabbf:\n    if (uVar16 == uVar14) break;\n    if ((ulong)param_2[2] < (ulong)param_2[3]) {\n      param_2[2] = param_2[2] + 1;\n    }\n    else {\n      local_48 = (long *)CONCAT71(local_48._1_7_,bVar22);\n      pcVar1 = *(code **)(*param_2 + 0x50);\n      *(undefined8 *)(puVar15 + -8) = 0x2eaca1;\n      (*pcVar1)(param_2);\n      bVar22 = (byte)local_48;\n    }\n    uVar18 = uVar18 + 1;\n    uVar17 = 0xffffffff;\n  } while( true );\n  if (uVar14 == 1) {\n    uVar14 = *(ulong *)pcVar6;\njoined_r0x002eacc3:\n    if (uVar14 == uVar18) {\nLAB_002eacc9:\n      iVar4 = *(int *)pcVar21;\n      if (param_8 <= (ulong)(long)iVar4) {\n        iVar4 = iVar4 - (int)param_8;\n      }\n      *local_60 = iVar4;\n      goto LAB_002eac37;\n    }\n  }\n  else if (uVar14 == 2) {\n    if (*(ulong *)pcVar6 != uVar18) {\n      uVar14 = *(ulong *)(pcVar6 + 8);\n      goto joined_r0x002eacc3;\n    }\n    goto LAB_002eacc9;\n  }\nLAB_002eac30:\n  *param_10 = *param_10 | 4;\nLAB_002eac37:\n  auVar24._8_8_ = (ulong)uVar17 | local_50 & 0xffffffff00000000;\n  auVar24._0_8_ = param_2;\n  return auVar24;\n}" { (declaration "code *pcVar1;" type_identifier (pointer_declarator "*pcVar1" * identifier) ;) (declaration "char *__s;" primitive_type (pointer_declarator "*__s" * identifier) ;) (declaration "long lVar2;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar3;" (sized_type_specifier "long" long) identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "ctype *pcVar6;" type_identifier (pointer_declarator "*pcVar6" * identifier) ;) (declaration "ulong uVar7;" type_identifier identifier ;) (declaration "size_t sVar8;" primitive_type identifier ;) (declaration "bool bVar9;" primitive_type identifier ;) (declaration "byte bVar10;" type_identifier identifier ;) (declaration "byte bVar11;" type_identifier identifier ;) (declaration "byte bVar12;" type_identifier identifier ;) (declaration "bool bVar13;" primitive_type identifier ;) (declaration "ulong uVar14;" type_identifier identifier ;) (declaration "undefined1 *puVar15;" type_identifier (pointer_declarator "*puVar15" * identifier) ;) (declaration "ulong uVar16;" type_identifier identifier ;) (declaration "uint uVar17;" type_identifier identifier ;) (declaration "ulong uVar18;" type_identifier identifier ;) (declaration "bool bVar19;" primitive_type identifier ;) (declaration "long *plVar20;" (sized_type_specifier "long" long) (pointer_declarator "*plVar20" * identifier) ;) (declaration "ctype *pcVar21;" type_identifier (pointer_declarator "*pcVar21" * identifier) ;) (declaration "byte bVar22;" type_identifier identifier ;) (declaration "char cVar23;" primitive_type identifier ;) (declaration "undefined1 auVar24 [16];" type_identifier (array_declarator "auVar24 [16]" identifier [ number_literal ]) ;) (declaration "undefined8 uStack_80;" type_identifier identifier ;) (declaration "undefined1 auStack_78 [8];" type_identifier (array_declarator "auStack_78 [8]" identifier [ number_literal ]) ;) (declaration "ctype acStack_70 [3];" type_identifier (array_declarator "acStack_70 [3]" identifier [ number_literal ]) ;) (declaration "byte local_6d;" type_identifier identifier ;) (declaration "uint local_6c;" type_identifier identifier ;) (declaration "long *local_68;" (sized_type_specifier "long" long) (pointer_declarator "*local_68" * identifier) ;) (declaration "int *local_60;" primitive_type (pointer_declarator "*local_60" * identifier) ;) (declaration "ctype *local_58;" type_identifier (pointer_declarator "*local_58" * identifier) ;) (declaration "ulong local_50;" type_identifier identifier ;) (declaration "long *local_48;" (sized_type_specifier "long" long) (pointer_declarator "*local_48" * identifier) ;) (declaration "long *local_40;" (sized_type_specifier "long" long) (pointer_declarator "*local_40" * identifier) ;) (expression_statement "iVar4 = (int)param_3;" (assignment_expression "iVar4 = (int)param_3" identifier = (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "local_48 = (long *)CONCAT44(local_48._4_4_,iVar4);" (assignment_expression "local_48 = (long *)CONCAT44(local_48._4_4_,iVar4)" identifier = (cast_expression "(long *)CONCAT44(local_48._4_4_,iVar4)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (call_expression "CONCAT44(local_48._4_4_,iVar4)" identifier (argument_list "(local_48._4_4_,iVar4)" ( (field_expression "local_48._4_4_" identifier . field_identifier) , identifier ))))) ;) (expression_statement "uStack_80 = 0x2eaabc;" (assignment_expression "uStack_80 = 0x2eaabc" identifier = number_literal) ;) (expression_statement "local_60 = param_6;" (assignment_expression "local_60 = param_6" identifier = identifier) ;) (expression_statement "local_50 = param_3;" (assignment_expression "local_50 = param_3" identifier = identifier) ;) (expression_statement "local_40 = param_4;" (assignment_expression "local_40 = param_4" identifier = identifier) ;) (expression_statement "pcVar6 = use_facet<std::ctype<char>>((locale *)(param_9 + 0xd0));" (binary_expression "pcVar6 = use_facet<std::ctype<char>>((locale *)(param_9 + 0xd0))" (assignment_expression "pcVar6 = use_facet<std" identifier = (binary_expression "use_facet<std" identifier < identifier)) (ERROR "::ctype" : : identifier) < (binary_expression "char>>((locale *)(param_9 + 0xd0))" identifier >> (parenthesized_expression "((locale *)(param_9 + 0xd0))" ( (cast_expression "(locale *)(param_9 + 0xd0)" ( (type_descriptor "locale *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_9 + 0xd0)" ( (binary_expression "param_9 + 0xd0" identifier + number_literal) ))) )))) ;) (expression_statement "lVar2 = -(param_8 * 8 + 0x17 & 0xfffffffffffffff0);" (assignment_expression "lVar2 = -(param_8 * 8 + 0x17 & 0xfffffffffffffff0)" identifier = (unary_expression "-(param_8 * 8 + 0x17 & 0xfffffffffffffff0)" - (parenthesized_expression "(param_8 * 8 + 0x17 & 0xfffffffffffffff0)" ( (binary_expression "param_8 * 8 + 0x17 & 0xfffffffffffffff0" (binary_expression "param_8 * 8 + 0x17" (binary_expression "param_8 * 8" identifier * number_literal) + number_literal) & number_literal) )))) ;) (expression_statement "puVar15 = auStack_78 + lVar2;" (assignment_expression "puVar15 = auStack_78 + lVar2" identifier = (binary_expression "auStack_78 + lVar2" identifier + identifier)) ;) (expression_statement "pcVar21 = acStack_70 + lVar2;" (assignment_expression "pcVar21 = acStack_70 + lVar2" identifier = (binary_expression "acStack_70 + lVar2" identifier + identifier)) ;) (expression_statement "bVar19 = param_2 != (long *)0x0 && iVar4 == -1;" (assignment_expression "bVar19 = param_2 != (long *)0x0 && iVar4 == -1" identifier = (binary_expression "param_2 != (long *)0x0 && iVar4 == -1" (binary_expression "param_2 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) && (binary_expression "iVar4 == -1" identifier == number_literal))) ;) (expression_statement "cVar23 = iVar4 == -1;" (assignment_expression "cVar23 = iVar4 == -1" identifier = (binary_expression "iVar4 == -1" identifier == number_literal)) ;) (expression_statement "bVar9 = bVar19;" (assignment_expression "bVar9 = bVar19" identifier = identifier) ;) (if_statement "if ((bVar19) && (cVar23 = '\0', (ulong)param_2[3] <= (ulong)param_2[2])) {\n    local_68 = (long *)((ulong)local_68 & 0xffffffffffffff00);\n    pcVar1 = *(code **)(*param_2 + 0x48);\n    local_58 = pcVar6;\n    *(undefined8 *)(auStack_78 + lVar2 + -8) = 0x2eae52;\n    iVar4 = (*pcVar1)(param_2);\n    pcVar6 = local_58;\n    cVar23 = (byte)local_68;\n    if (iVar4 == -1) {\n      param_2 = (long *)0x0;\n      bVar9 = false;\n      cVar23 = bVar19;\n    }\n  }" if (parenthesized_expression "((bVar19) && (cVar23 = '\0', (ulong)param_2[3] <= (ulong)param_2[2]))" ( (binary_expression "(bVar19) && (cVar23 = '\0', (ulong)param_2[3] <= (ulong)param_2[2])" (parenthesized_expression "(bVar19)" ( identifier )) && (parenthesized_expression "(cVar23 = '\0', (ulong)param_2[3] <= (ulong)param_2[2])" ( (comma_expression "cVar23 = '\0', (ulong)param_2[3] <= (ulong)param_2[2]" (assignment_expression "cVar23 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) , (binary_expression "(ulong)param_2[3] <= (ulong)param_2[2]" (cast_expression "(ulong)param_2[3]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_2[3]" identifier [ number_literal ])) <= (cast_expression "(ulong)param_2[2]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_2[2]" identifier [ number_literal ])))) ))) )) (compound_statement "{\n    local_68 = (long *)((ulong)local_68 & 0xffffffffffffff00);\n    pcVar1 = *(code **)(*param_2 + 0x48);\n    local_58 = pcVar6;\n    *(undefined8 *)(auStack_78 + lVar2 + -8) = 0x2eae52;\n    iVar4 = (*pcVar1)(param_2);\n    pcVar6 = local_58;\n    cVar23 = (byte)local_68;\n    if (iVar4 == -1) {\n      param_2 = (long *)0x0;\n      bVar9 = false;\n      cVar23 = bVar19;\n    }\n  }" { (expression_statement "local_68 = (long *)((ulong)local_68 & 0xffffffffffffff00);" (assignment_expression "local_68 = (long *)((ulong)local_68 & 0xffffffffffffff00)" identifier = (cast_expression "(long *)((ulong)local_68 & 0xffffffffffffff00)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((ulong)local_68 & 0xffffffffffffff00)" ( (binary_expression "(ulong)local_68 & 0xffffffffffffff00" (cast_expression "(ulong)local_68" ( (type_descriptor "ulong" type_identifier) ) identifier) & number_literal) )))) ;) (expression_statement "pcVar1 = *(code **)(*param_2 + 0x48);" (assignment_expression "pcVar1 = *(code **)(*param_2 + 0x48)" identifier = (pointer_expression "*(code **)(*param_2 + 0x48)" * (cast_expression "(code **)(*param_2 + 0x48)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_2 + 0x48)" ( (binary_expression "*param_2 + 0x48" (pointer_expression "*param_2" * identifier) + number_literal) ))))) ;) (expression_statement "local_58 = pcVar6;" (assignment_expression "local_58 = pcVar6" identifier = identifier) ;) (expression_statement "*(undefined8 *)(auStack_78 + lVar2 + -8) = 0x2eae52;" (assignment_expression "*(undefined8 *)(auStack_78 + lVar2 + -8) = 0x2eae52" (pointer_expression "*(undefined8 *)(auStack_78 + lVar2 + -8)" * (cast_expression "(undefined8 *)(auStack_78 + lVar2 + -8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(auStack_78 + lVar2 + -8)" ( (binary_expression "auStack_78 + lVar2 + -8" (binary_expression "auStack_78 + lVar2" identifier + identifier) + number_literal) )))) = number_literal) ;) (expression_statement "iVar4 = (*pcVar1)(param_2);" (assignment_expression "iVar4 = (*pcVar1)(param_2)" identifier = (call_expression "(*pcVar1)(param_2)" (parenthesized_expression "(*pcVar1)" ( (pointer_expression "*pcVar1" * identifier) )) (argument_list "(param_2)" ( identifier )))) ;) (expression_statement "pcVar6 = local_58;" (assignment_expression "pcVar6 = local_58" identifier = identifier) ;) (expression_statement "cVar23 = (byte)local_68;" (assignment_expression "cVar23 = (byte)local_68" identifier = (cast_expression "(byte)local_68" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (if_statement "if (iVar4 == -1) {\n      param_2 = (long *)0x0;\n      bVar9 = false;\n      cVar23 = bVar19;\n    }" if (parenthesized_expression "(iVar4 == -1)" ( (binary_expression "iVar4 == -1" identifier == number_literal) )) (compound_statement "{\n      param_2 = (long *)0x0;\n      bVar9 = false;\n      cVar23 = bVar19;\n    }" { (expression_statement "param_2 = (long *)0x0;" (assignment_expression "param_2 = (long *)0x0" identifier = (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "bVar9 = false;" (assignment_expression "bVar9 = false" identifier = false) ;) (expression_statement "cVar23 = bVar19;" (assignment_expression "cVar23 = bVar19" identifier = identifier) ;) })) })) (expression_statement "bVar22 = param_5 == -1;" (assignment_expression "bVar22 = param_5 == -1" identifier = (binary_expression "param_5 == -1" identifier == number_literal)) ;) (expression_statement "bVar13 = param_4 != (long *)0x0 && (bool)bVar22;" (assignment_expression "bVar13 = param_4 != (long *)0x0 && (bool)bVar22" identifier = (binary_expression "param_4 != (long *)0x0 && (bool)bVar22" (binary_expression "param_4 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) && (cast_expression "(bool)bVar22" ( (type_descriptor "bool" primitive_type) ) identifier))) ;) (expression_statement "uVar17 = (uint)local_48;" (assignment_expression "uVar17 = (uint)local_48" identifier = (cast_expression "(uint)local_48" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "bVar19 = (bool)bVar22;" (assignment_expression "bVar19 = (bool)bVar22" identifier = (cast_expression "(bool)bVar22" ( (type_descriptor "bool" primitive_type) ) identifier)) ;) (if_statement "if (bVar13) {\n    if ((ulong)param_4[2] < (ulong)param_4[3]) {\n      bVar19 = false;\n    }\n    else {\n      local_6c = CONCAT31(local_6c._1_3_,bVar22);\n      local_68 = (long *)CONCAT71(local_68._1_7_,cVar23);\n      pcVar1 = *(code **)(*param_4 + 0x48);\n      local_58 = pcVar6;\n      *(undefined8 *)(auStack_78 + lVar2 + -8) = 0x2eaf99;\n      iVar4 = (*pcVar1)(param_4);\n      local_40 = (long *)0x0;\n      if (iVar4 != -1) {\n        local_40 = param_4;\n      }\n      pcVar6 = local_58;\n      uVar17 = (uint)local_48;\n      cVar23 = (byte)local_68;\n      bVar22 = (byte)local_6c;\n      bVar19 = iVar4 == -1 && bVar13;\n    }\n  }" if (parenthesized_expression "(bVar13)" ( identifier )) (compound_statement "{\n    if ((ulong)param_4[2] < (ulong)param_4[3]) {\n      bVar19 = false;\n    }\n    else {\n      local_6c = CONCAT31(local_6c._1_3_,bVar22);\n      local_68 = (long *)CONCAT71(local_68._1_7_,cVar23);\n      pcVar1 = *(code **)(*param_4 + 0x48);\n      local_58 = pcVar6;\n      *(undefined8 *)(auStack_78 + lVar2 + -8) = 0x2eaf99;\n      iVar4 = (*pcVar1)(param_4);\n      local_40 = (long *)0x0;\n      if (iVar4 != -1) {\n        local_40 = param_4;\n      }\n      pcVar6 = local_58;\n      uVar17 = (uint)local_48;\n      cVar23 = (byte)local_68;\n      bVar22 = (byte)local_6c;\n      bVar19 = iVar4 == -1 && bVar13;\n    }\n  }" { (if_statement "if ((ulong)param_4[2] < (ulong)param_4[3]) {\n      bVar19 = false;\n    }\n    else {\n      local_6c = CONCAT31(local_6c._1_3_,bVar22);\n      local_68 = (long *)CONCAT71(local_68._1_7_,cVar23);\n      pcVar1 = *(code **)(*param_4 + 0x48);\n      local_58 = pcVar6;\n      *(undefined8 *)(auStack_78 + lVar2 + -8) = 0x2eaf99;\n      iVar4 = (*pcVar1)(param_4);\n      local_40 = (long *)0x0;\n      if (iVar4 != -1) {\n        local_40 = param_4;\n      }\n      pcVar6 = local_58;\n      uVar17 = (uint)local_48;\n      cVar23 = (byte)local_68;\n      bVar22 = (byte)local_6c;\n      bVar19 = iVar4 == -1 && bVar13;\n    }" if (parenthesized_expression "((ulong)param_4[2] < (ulong)param_4[3])" ( (binary_expression "(ulong)param_4[2] < (ulong)param_4[3]" (cast_expression "(ulong)param_4[2]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_4[2]" identifier [ number_literal ])) < (cast_expression "(ulong)param_4[3]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_4[3]" identifier [ number_literal ]))) )) (compound_statement "{\n      bVar19 = false;\n    }" { (expression_statement "bVar19 = false;" (assignment_expression "bVar19 = false" identifier = false) ;) }) (else_clause "else {\n      local_6c = CONCAT31(local_6c._1_3_,bVar22);\n      local_68 = (long *)CONCAT71(local_68._1_7_,cVar23);\n      pcVar1 = *(code **)(*param_4 + 0x48);\n      local_58 = pcVar6;\n      *(undefined8 *)(auStack_78 + lVar2 + -8) = 0x2eaf99;\n      iVar4 = (*pcVar1)(param_4);\n      local_40 = (long *)0x0;\n      if (iVar4 != -1) {\n        local_40 = param_4;\n      }\n      pcVar6 = local_58;\n      uVar17 = (uint)local_48;\n      cVar23 = (byte)local_68;\n      bVar22 = (byte)local_6c;\n      bVar19 = iVar4 == -1 && bVar13;\n    }" else (compound_statement "{\n      local_6c = CONCAT31(local_6c._1_3_,bVar22);\n      local_68 = (long *)CONCAT71(local_68._1_7_,cVar23);\n      pcVar1 = *(code **)(*param_4 + 0x48);\n      local_58 = pcVar6;\n      *(undefined8 *)(auStack_78 + lVar2 + -8) = 0x2eaf99;\n      iVar4 = (*pcVar1)(param_4);\n      local_40 = (long *)0x0;\n      if (iVar4 != -1) {\n        local_40 = param_4;\n      }\n      pcVar6 = local_58;\n      uVar17 = (uint)local_48;\n      cVar23 = (byte)local_68;\n      bVar22 = (byte)local_6c;\n      bVar19 = iVar4 == -1 && bVar13;\n    }" { (expression_statement "local_6c = CONCAT31(local_6c._1_3_,bVar22);" (assignment_expression "local_6c = CONCAT31(local_6c._1_3_,bVar22)" identifier = (call_expression "CONCAT31(local_6c._1_3_,bVar22)" identifier (argument_list "(local_6c._1_3_,bVar22)" ( (field_expression "local_6c._1_3_" identifier . field_identifier) , identifier )))) ;) (expression_statement "local_68 = (long *)CONCAT71(local_68._1_7_,cVar23);" (assignment_expression "local_68 = (long *)CONCAT71(local_68._1_7_,cVar23)" identifier = (cast_expression "(long *)CONCAT71(local_68._1_7_,cVar23)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (call_expression "CONCAT71(local_68._1_7_,cVar23)" identifier (argument_list "(local_68._1_7_,cVar23)" ( (field_expression "local_68._1_7_" identifier . field_identifier) , identifier ))))) ;) (expression_statement "pcVar1 = *(code **)(*param_4 + 0x48);" (assignment_expression "pcVar1 = *(code **)(*param_4 + 0x48)" identifier = (pointer_expression "*(code **)(*param_4 + 0x48)" * (cast_expression "(code **)(*param_4 + 0x48)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_4 + 0x48)" ( (binary_expression "*param_4 + 0x48" (pointer_expression "*param_4" * identifier) + number_literal) ))))) ;) (expression_statement "local_58 = pcVar6;" (assignment_expression "local_58 = pcVar6" identifier = identifier) ;) (expression_statement "*(undefined8 *)(auStack_78 + lVar2 + -8) = 0x2eaf99;" (assignment_expression "*(undefined8 *)(auStack_78 + lVar2 + -8) = 0x2eaf99" (pointer_expression "*(undefined8 *)(auStack_78 + lVar2 + -8)" * (cast_expression "(undefined8 *)(auStack_78 + lVar2 + -8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(auStack_78 + lVar2 + -8)" ( (binary_expression "auStack_78 + lVar2 + -8" (binary_expression "auStack_78 + lVar2" identifier + identifier) + number_literal) )))) = number_literal) ;) (expression_statement "iVar4 = (*pcVar1)(param_4);" (assignment_expression "iVar4 = (*pcVar1)(param_4)" identifier = (call_expression "(*pcVar1)(param_4)" (parenthesized_expression "(*pcVar1)" ( (pointer_expression "*pcVar1" * identifier) )) (argument_list "(param_4)" ( identifier )))) ;) (expression_statement "local_40 = (long *)0x0;" (assignment_expression "local_40 = (long *)0x0" identifier = (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (iVar4 != -1) {\n        local_40 = param_4;\n      }" if (parenthesized_expression "(iVar4 != -1)" ( (binary_expression "iVar4 != -1" identifier != number_literal) )) (compound_statement "{\n        local_40 = param_4;\n      }" { (expression_statement "local_40 = param_4;" (assignment_expression "local_40 = param_4" identifier = identifier) ;) })) (expression_statement "pcVar6 = local_58;" (assignment_expression "pcVar6 = local_58" identifier = identifier) ;) (expression_statement "uVar17 = (uint)local_48;" (assignment_expression "uVar17 = (uint)local_48" identifier = (cast_expression "(uint)local_48" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "cVar23 = (byte)local_68;" (assignment_expression "cVar23 = (byte)local_68" identifier = (cast_expression "(byte)local_68" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "bVar22 = (byte)local_6c;" (assignment_expression "bVar22 = (byte)local_6c" identifier = (cast_expression "(byte)local_6c" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "bVar19 = iVar4 == -1 && bVar13;" (assignment_expression "bVar19 = iVar4 == -1 && bVar13" identifier = (binary_expression "iVar4 == -1 && bVar13" (binary_expression "iVar4 == -1" identifier == number_literal) && identifier)) ;) }))) })) (if_statement "if ((bool)cVar23 == bVar19) {\n    uVar18 = 0;\n    uVar14 = 0;\n    puVar15 = auStack_78 + lVar2;\n    pcVar6 = (ctype *)0x0;\n  }\n  else {\n    uVar5 = uVar17;\n    if (bVar9) {\n      if ((byte *)param_2[2] < (byte *)param_2[3]) {\n        uVar5 = (uint)*(byte *)param_2[2];\n      }\n      else {\n        local_68 = (long *)CONCAT71(local_68._1_7_,bVar22);\n        local_48 = (long *)CONCAT44(local_48._4_4_,uVar17);\n        pcVar1 = *(code **)(*param_2 + 0x48);\n        local_58 = pcVar6;\n        *(undefined8 *)(auStack_78 + lVar2 + -8) = 0x2eafe4;\n        uVar5 = (*pcVar1)(param_2);\n        pcVar6 = local_58;\n        uVar17 = (uint)local_48;\n        bVar22 = (byte)local_68;\n        if (uVar5 == 0xffffffff) {\n          param_2 = (long *)0x0;\n          uVar5 = 0xffffffff;\n        }\n      }\n    }\n    if ((long *)(param_8 * 2) == (long *)0x0) {\n      uVar14 = 0;\n      pcVar6 = (ctype *)0x0;\n      uVar18 = 0;\n    }\n    else {\n      uVar14 = 0;\n      plVar20 = (long *)0x0;\n      local_6d = bVar22;\n      local_6c = uVar17;\n      local_68 = param_2;\n      local_58 = pcVar21;\n      local_48 = (long *)(param_8 * 2);\n      do {\n        while (**(char **)(param_7 + (long)plVar20 * 8) == (char)uVar5) {\nLAB_002ead54:\n          *(int *)(local_58 + uVar14 * 4) = (int)plVar20;\n          uVar14 = uVar14 + 1;\n          plVar20 = (long *)((long)plVar20 + 1);\n          if (local_48 == plVar20) goto LAB_002ead6a;\n        }\n        pcVar1 = *(code **)(*(long *)pcVar6 + 0x10);\n        *(undefined8 *)(auStack_78 + lVar2 + -8) = 0x2ead39;\n        cVar23 = (*pcVar1)(pcVar6);\n        if (cVar23 == (char)uVar5) goto LAB_002ead54;\n        plVar20 = (long *)((long)plVar20 + 1);\n      } while (local_48 != plVar20);\nLAB_002ead6a:\n      pcVar21 = local_58;\n      plVar20 = local_68;\n      uVar18 = 0;\n      puVar15 = auStack_78 + lVar2;\n      pcVar6 = (ctype *)0x0;\n      param_2 = local_68;\n      uVar17 = local_6c;\n      bVar22 = local_6d;\n      if (uVar14 != 0) {\n        if ((ulong)local_68[2] < (ulong)local_68[3]) {\n          local_68[2] = local_68[2] + 1;\n          local_48._0_1_ = local_6d;\n        }\n        else {\n          local_48 = (long *)CONCAT71(local_48._1_7_,local_6d);\n          pcVar1 = *(code **)(*local_68 + 0x50);\n          *(undefined8 *)(auStack_78 + lVar2 + -8) = 0x2eb01f;\n          (*pcVar1)(plVar20);\n        }\n        local_68 = (long *)CONCAT71(local_68._1_7_,(byte)local_48);\n        local_48 = plVar20;\n        lVar3 = -(uVar14 * 8 + 0x17 & 0xfffffffffffffff0);\n        puVar15 = auStack_78 + lVar3 + lVar2;\n        uVar18 = 0;\n        local_58 = acStack_70 + lVar3 + lVar2;\n        do {\n          __s = *(char **)(param_7 + (long)*(int *)(pcVar21 + uVar18 * 4) * 8);\n          *(undefined8 *)(auStack_78 + lVar3 + lVar2 + -8) = 0x2eaded;\n          sVar8 = strlen(__s);\n          *(size_t *)(acStack_70 + lVar3 + lVar2 + uVar18 * 8) = sVar8;\n          uVar18 = uVar18 + 1;\n        } while (uVar14 != uVar18);\n        uVar17 = 0xffffffff;\n        uVar18 = 1;\n        pcVar6 = local_58;\n        param_2 = local_48;\n        bVar22 = (byte)local_68;\n      }\n    }\n  }" if (parenthesized_expression "((bool)cVar23 == bVar19)" ( (binary_expression "(bool)cVar23 == bVar19" (cast_expression "(bool)cVar23" ( (type_descriptor "bool" primitive_type) ) identifier) == identifier) )) (compound_statement "{\n    uVar18 = 0;\n    uVar14 = 0;\n    puVar15 = auStack_78 + lVar2;\n    pcVar6 = (ctype *)0x0;\n  }" { (expression_statement "uVar18 = 0;" (assignment_expression "uVar18 = 0" identifier = number_literal) ;) (expression_statement "uVar14 = 0;" (assignment_expression "uVar14 = 0" identifier = number_literal) ;) (expression_statement "puVar15 = auStack_78 + lVar2;" (assignment_expression "puVar15 = auStack_78 + lVar2" identifier = (binary_expression "auStack_78 + lVar2" identifier + identifier)) ;) (expression_statement "pcVar6 = (ctype *)0x0;" (assignment_expression "pcVar6 = (ctype *)0x0" identifier = (cast_expression "(ctype *)0x0" ( (type_descriptor "ctype *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else {\n    uVar5 = uVar17;\n    if (bVar9) {\n      if ((byte *)param_2[2] < (byte *)param_2[3]) {\n        uVar5 = (uint)*(byte *)param_2[2];\n      }\n      else {\n        local_68 = (long *)CONCAT71(local_68._1_7_,bVar22);\n        local_48 = (long *)CONCAT44(local_48._4_4_,uVar17);\n        pcVar1 = *(code **)(*param_2 + 0x48);\n        local_58 = pcVar6;\n        *(undefined8 *)(auStack_78 + lVar2 + -8) = 0x2eafe4;\n        uVar5 = (*pcVar1)(param_2);\n        pcVar6 = local_58;\n        uVar17 = (uint)local_48;\n        bVar22 = (byte)local_68;\n        if (uVar5 == 0xffffffff) {\n          param_2 = (long *)0x0;\n          uVar5 = 0xffffffff;\n        }\n      }\n    }\n    if ((long *)(param_8 * 2) == (long *)0x0) {\n      uVar14 = 0;\n      pcVar6 = (ctype *)0x0;\n      uVar18 = 0;\n    }\n    else {\n      uVar14 = 0;\n      plVar20 = (long *)0x0;\n      local_6d = bVar22;\n      local_6c = uVar17;\n      local_68 = param_2;\n      local_58 = pcVar21;\n      local_48 = (long *)(param_8 * 2);\n      do {\n        while (**(char **)(param_7 + (long)plVar20 * 8) == (char)uVar5) {\nLAB_002ead54:\n          *(int *)(local_58 + uVar14 * 4) = (int)plVar20;\n          uVar14 = uVar14 + 1;\n          plVar20 = (long *)((long)plVar20 + 1);\n          if (local_48 == plVar20) goto LAB_002ead6a;\n        }\n        pcVar1 = *(code **)(*(long *)pcVar6 + 0x10);\n        *(undefined8 *)(auStack_78 + lVar2 + -8) = 0x2ead39;\n        cVar23 = (*pcVar1)(pcVar6);\n        if (cVar23 == (char)uVar5) goto LAB_002ead54;\n        plVar20 = (long *)((long)plVar20 + 1);\n      } while (local_48 != plVar20);\nLAB_002ead6a:\n      pcVar21 = local_58;\n      plVar20 = local_68;\n      uVar18 = 0;\n      puVar15 = auStack_78 + lVar2;\n      pcVar6 = (ctype *)0x0;\n      param_2 = local_68;\n      uVar17 = local_6c;\n      bVar22 = local_6d;\n      if (uVar14 != 0) {\n        if ((ulong)local_68[2] < (ulong)local_68[3]) {\n          local_68[2] = local_68[2] + 1;\n          local_48._0_1_ = local_6d;\n        }\n        else {\n          local_48 = (long *)CONCAT71(local_48._1_7_,local_6d);\n          pcVar1 = *(code **)(*local_68 + 0x50);\n          *(undefined8 *)(auStack_78 + lVar2 + -8) = 0x2eb01f;\n          (*pcVar1)(plVar20);\n        }\n        local_68 = (long *)CONCAT71(local_68._1_7_,(byte)local_48);\n        local_48 = plVar20;\n        lVar3 = -(uVar14 * 8 + 0x17 & 0xfffffffffffffff0);\n        puVar15 = auStack_78 + lVar3 + lVar2;\n        uVar18 = 0;\n        local_58 = acStack_70 + lVar3 + lVar2;\n        do {\n          __s = *(char **)(param_7 + (long)*(int *)(pcVar21 + uVar18 * 4) * 8);\n          *(undefined8 *)(auStack_78 + lVar3 + lVar2 + -8) = 0x2eaded;\n          sVar8 = strlen(__s);\n          *(size_t *)(acStack_70 + lVar3 + lVar2 + uVar18 * 8) = sVar8;\n          uVar18 = uVar18 + 1;\n        } while (uVar14 != uVar18);\n        uVar17 = 0xffffffff;\n        uVar18 = 1;\n        pcVar6 = local_58;\n        param_2 = local_48;\n        bVar22 = (byte)local_68;\n      }\n    }\n  }" else (compound_statement "{\n    uVar5 = uVar17;\n    if (bVar9) {\n      if ((byte *)param_2[2] < (byte *)param_2[3]) {\n        uVar5 = (uint)*(byte *)param_2[2];\n      }\n      else {\n        local_68 = (long *)CONCAT71(local_68._1_7_,bVar22);\n        local_48 = (long *)CONCAT44(local_48._4_4_,uVar17);\n        pcVar1 = *(code **)(*param_2 + 0x48);\n        local_58 = pcVar6;\n        *(undefined8 *)(auStack_78 + lVar2 + -8) = 0x2eafe4;\n        uVar5 = (*pcVar1)(param_2);\n        pcVar6 = local_58;\n        uVar17 = (uint)local_48;\n        bVar22 = (byte)local_68;\n        if (uVar5 == 0xffffffff) {\n          param_2 = (long *)0x0;\n          uVar5 = 0xffffffff;\n        }\n      }\n    }\n    if ((long *)(param_8 * 2) == (long *)0x0) {\n      uVar14 = 0;\n      pcVar6 = (ctype *)0x0;\n      uVar18 = 0;\n    }\n    else {\n      uVar14 = 0;\n      plVar20 = (long *)0x0;\n      local_6d = bVar22;\n      local_6c = uVar17;\n      local_68 = param_2;\n      local_58 = pcVar21;\n      local_48 = (long *)(param_8 * 2);\n      do {\n        while (**(char **)(param_7 + (long)plVar20 * 8) == (char)uVar5) {\nLAB_002ead54:\n          *(int *)(local_58 + uVar14 * 4) = (int)plVar20;\n          uVar14 = uVar14 + 1;\n          plVar20 = (long *)((long)plVar20 + 1);\n          if (local_48 == plVar20) goto LAB_002ead6a;\n        }\n        pcVar1 = *(code **)(*(long *)pcVar6 + 0x10);\n        *(undefined8 *)(auStack_78 + lVar2 + -8) = 0x2ead39;\n        cVar23 = (*pcVar1)(pcVar6);\n        if (cVar23 == (char)uVar5) goto LAB_002ead54;\n        plVar20 = (long *)((long)plVar20 + 1);\n      } while (local_48 != plVar20);\nLAB_002ead6a:\n      pcVar21 = local_58;\n      plVar20 = local_68;\n      uVar18 = 0;\n      puVar15 = auStack_78 + lVar2;\n      pcVar6 = (ctype *)0x0;\n      param_2 = local_68;\n      uVar17 = local_6c;\n      bVar22 = local_6d;\n      if (uVar14 != 0) {\n        if ((ulong)local_68[2] < (ulong)local_68[3]) {\n          local_68[2] = local_68[2] + 1;\n          local_48._0_1_ = local_6d;\n        }\n        else {\n          local_48 = (long *)CONCAT71(local_48._1_7_,local_6d);\n          pcVar1 = *(code **)(*local_68 + 0x50);\n          *(undefined8 *)(auStack_78 + lVar2 + -8) = 0x2eb01f;\n          (*pcVar1)(plVar20);\n        }\n        local_68 = (long *)CONCAT71(local_68._1_7_,(byte)local_48);\n        local_48 = plVar20;\n        lVar3 = -(uVar14 * 8 + 0x17 & 0xfffffffffffffff0);\n        puVar15 = auStack_78 + lVar3 + lVar2;\n        uVar18 = 0;\n        local_58 = acStack_70 + lVar3 + lVar2;\n        do {\n          __s = *(char **)(param_7 + (long)*(int *)(pcVar21 + uVar18 * 4) * 8);\n          *(undefined8 *)(auStack_78 + lVar3 + lVar2 + -8) = 0x2eaded;\n          sVar8 = strlen(__s);\n          *(size_t *)(acStack_70 + lVar3 + lVar2 + uVar18 * 8) = sVar8;\n          uVar18 = uVar18 + 1;\n        } while (uVar14 != uVar18);\n        uVar17 = 0xffffffff;\n        uVar18 = 1;\n        pcVar6 = local_58;\n        param_2 = local_48;\n        bVar22 = (byte)local_68;\n      }\n    }\n  }" { (expression_statement "uVar5 = uVar17;" (assignment_expression "uVar5 = uVar17" identifier = identifier) ;) (if_statement "if (bVar9) {\n      if ((byte *)param_2[2] < (byte *)param_2[3]) {\n        uVar5 = (uint)*(byte *)param_2[2];\n      }\n      else {\n        local_68 = (long *)CONCAT71(local_68._1_7_,bVar22);\n        local_48 = (long *)CONCAT44(local_48._4_4_,uVar17);\n        pcVar1 = *(code **)(*param_2 + 0x48);\n        local_58 = pcVar6;\n        *(undefined8 *)(auStack_78 + lVar2 + -8) = 0x2eafe4;\n        uVar5 = (*pcVar1)(param_2);\n        pcVar6 = local_58;\n        uVar17 = (uint)local_48;\n        bVar22 = (byte)local_68;\n        if (uVar5 == 0xffffffff) {\n          param_2 = (long *)0x0;\n          uVar5 = 0xffffffff;\n        }\n      }\n    }" if (parenthesized_expression "(bVar9)" ( identifier )) (compound_statement "{\n      if ((byte *)param_2[2] < (byte *)param_2[3]) {\n        uVar5 = (uint)*(byte *)param_2[2];\n      }\n      else {\n        local_68 = (long *)CONCAT71(local_68._1_7_,bVar22);\n        local_48 = (long *)CONCAT44(local_48._4_4_,uVar17);\n        pcVar1 = *(code **)(*param_2 + 0x48);\n        local_58 = pcVar6;\n        *(undefined8 *)(auStack_78 + lVar2 + -8) = 0x2eafe4;\n        uVar5 = (*pcVar1)(param_2);\n        pcVar6 = local_58;\n        uVar17 = (uint)local_48;\n        bVar22 = (byte)local_68;\n        if (uVar5 == 0xffffffff) {\n          param_2 = (long *)0x0;\n          uVar5 = 0xffffffff;\n        }\n      }\n    }" { (if_statement "if ((byte *)param_2[2] < (byte *)param_2[3]) {\n        uVar5 = (uint)*(byte *)param_2[2];\n      }\n      else {\n        local_68 = (long *)CONCAT71(local_68._1_7_,bVar22);\n        local_48 = (long *)CONCAT44(local_48._4_4_,uVar17);\n        pcVar1 = *(code **)(*param_2 + 0x48);\n        local_58 = pcVar6;\n        *(undefined8 *)(auStack_78 + lVar2 + -8) = 0x2eafe4;\n        uVar5 = (*pcVar1)(param_2);\n        pcVar6 = local_58;\n        uVar17 = (uint)local_48;\n        bVar22 = (byte)local_68;\n        if (uVar5 == 0xffffffff) {\n          param_2 = (long *)0x0;\n          uVar5 = 0xffffffff;\n        }\n      }" if (parenthesized_expression "((byte *)param_2[2] < (byte *)param_2[3])" ( (binary_expression "(byte *)param_2[2] < (byte *)param_2[3]" (cast_expression "(byte *)param_2[2]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[2]" identifier [ number_literal ])) < (cast_expression "(byte *)param_2[3]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[3]" identifier [ number_literal ]))) )) (compound_statement "{\n        uVar5 = (uint)*(byte *)param_2[2];\n      }" { (expression_statement "uVar5 = (uint)*(byte *)param_2[2];" (assignment_expression "uVar5 = (uint)*(byte *)param_2[2]" identifier = (binary_expression "(uint)*(byte *)param_2[2]" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)param_2[2]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[2]" identifier [ number_literal ])))) ;) }) (else_clause "else {\n        local_68 = (long *)CONCAT71(local_68._1_7_,bVar22);\n        local_48 = (long *)CONCAT44(local_48._4_4_,uVar17);\n        pcVar1 = *(code **)(*param_2 + 0x48);\n        local_58 = pcVar6;\n        *(undefined8 *)(auStack_78 + lVar2 + -8) = 0x2eafe4;\n        uVar5 = (*pcVar1)(param_2);\n        pcVar6 = local_58;\n        uVar17 = (uint)local_48;\n        bVar22 = (byte)local_68;\n        if (uVar5 == 0xffffffff) {\n          param_2 = (long *)0x0;\n          uVar5 = 0xffffffff;\n        }\n      }" else (compound_statement "{\n        local_68 = (long *)CONCAT71(local_68._1_7_,bVar22);\n        local_48 = (long *)CONCAT44(local_48._4_4_,uVar17);\n        pcVar1 = *(code **)(*param_2 + 0x48);\n        local_58 = pcVar6;\n        *(undefined8 *)(auStack_78 + lVar2 + -8) = 0x2eafe4;\n        uVar5 = (*pcVar1)(param_2);\n        pcVar6 = local_58;\n        uVar17 = (uint)local_48;\n        bVar22 = (byte)local_68;\n        if (uVar5 == 0xffffffff) {\n          param_2 = (long *)0x0;\n          uVar5 = 0xffffffff;\n        }\n      }" { (expression_statement "local_68 = (long *)CONCAT71(local_68._1_7_,bVar22);" (assignment_expression "local_68 = (long *)CONCAT71(local_68._1_7_,bVar22)" identifier = (cast_expression "(long *)CONCAT71(local_68._1_7_,bVar22)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (call_expression "CONCAT71(local_68._1_7_,bVar22)" identifier (argument_list "(local_68._1_7_,bVar22)" ( (field_expression "local_68._1_7_" identifier . field_identifier) , identifier ))))) ;) (expression_statement "local_48 = (long *)CONCAT44(local_48._4_4_,uVar17);" (assignment_expression "local_48 = (long *)CONCAT44(local_48._4_4_,uVar17)" identifier = (cast_expression "(long *)CONCAT44(local_48._4_4_,uVar17)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (call_expression "CONCAT44(local_48._4_4_,uVar17)" identifier (argument_list "(local_48._4_4_,uVar17)" ( (field_expression "local_48._4_4_" identifier . field_identifier) , identifier ))))) ;) (expression_statement "pcVar1 = *(code **)(*param_2 + 0x48);" (assignment_expression "pcVar1 = *(code **)(*param_2 + 0x48)" identifier = (pointer_expression "*(code **)(*param_2 + 0x48)" * (cast_expression "(code **)(*param_2 + 0x48)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_2 + 0x48)" ( (binary_expression "*param_2 + 0x48" (pointer_expression "*param_2" * identifier) + number_literal) ))))) ;) (expression_statement "local_58 = pcVar6;" (assignment_expression "local_58 = pcVar6" identifier = identifier) ;) (expression_statement "*(undefined8 *)(auStack_78 + lVar2 + -8) = 0x2eafe4;" (assignment_expression "*(undefined8 *)(auStack_78 + lVar2 + -8) = 0x2eafe4" (pointer_expression "*(undefined8 *)(auStack_78 + lVar2 + -8)" * (cast_expression "(undefined8 *)(auStack_78 + lVar2 + -8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(auStack_78 + lVar2 + -8)" ( (binary_expression "auStack_78 + lVar2 + -8" (binary_expression "auStack_78 + lVar2" identifier + identifier) + number_literal) )))) = number_literal) ;) (expression_statement "uVar5 = (*pcVar1)(param_2);" (assignment_expression "uVar5 = (*pcVar1)(param_2)" identifier = (call_expression "(*pcVar1)(param_2)" (parenthesized_expression "(*pcVar1)" ( (pointer_expression "*pcVar1" * identifier) )) (argument_list "(param_2)" ( identifier )))) ;) (expression_statement "pcVar6 = local_58;" (assignment_expression "pcVar6 = local_58" identifier = identifier) ;) (expression_statement "uVar17 = (uint)local_48;" (assignment_expression "uVar17 = (uint)local_48" identifier = (cast_expression "(uint)local_48" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "bVar22 = (byte)local_68;" (assignment_expression "bVar22 = (byte)local_68" identifier = (cast_expression "(byte)local_68" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (if_statement "if (uVar5 == 0xffffffff) {\n          param_2 = (long *)0x0;\n          uVar5 = 0xffffffff;\n        }" if (parenthesized_expression "(uVar5 == 0xffffffff)" ( (binary_expression "uVar5 == 0xffffffff" identifier == number_literal) )) (compound_statement "{\n          param_2 = (long *)0x0;\n          uVar5 = 0xffffffff;\n        }" { (expression_statement "param_2 = (long *)0x0;" (assignment_expression "param_2 = (long *)0x0" identifier = (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "uVar5 = 0xffffffff;" (assignment_expression "uVar5 = 0xffffffff" identifier = number_literal) ;) })) }))) })) (if_statement "if ((long *)(param_8 * 2) == (long *)0x0) {\n      uVar14 = 0;\n      pcVar6 = (ctype *)0x0;\n      uVar18 = 0;\n    }\n    else {\n      uVar14 = 0;\n      plVar20 = (long *)0x0;\n      local_6d = bVar22;\n      local_6c = uVar17;\n      local_68 = param_2;\n      local_58 = pcVar21;\n      local_48 = (long *)(param_8 * 2);\n      do {\n        while (**(char **)(param_7 + (long)plVar20 * 8) == (char)uVar5) {\nLAB_002ead54:\n          *(int *)(local_58 + uVar14 * 4) = (int)plVar20;\n          uVar14 = uVar14 + 1;\n          plVar20 = (long *)((long)plVar20 + 1);\n          if (local_48 == plVar20) goto LAB_002ead6a;\n        }\n        pcVar1 = *(code **)(*(long *)pcVar6 + 0x10);\n        *(undefined8 *)(auStack_78 + lVar2 + -8) = 0x2ead39;\n        cVar23 = (*pcVar1)(pcVar6);\n        if (cVar23 == (char)uVar5) goto LAB_002ead54;\n        plVar20 = (long *)((long)plVar20 + 1);\n      } while (local_48 != plVar20);\nLAB_002ead6a:\n      pcVar21 = local_58;\n      plVar20 = local_68;\n      uVar18 = 0;\n      puVar15 = auStack_78 + lVar2;\n      pcVar6 = (ctype *)0x0;\n      param_2 = local_68;\n      uVar17 = local_6c;\n      bVar22 = local_6d;\n      if (uVar14 != 0) {\n        if ((ulong)local_68[2] < (ulong)local_68[3]) {\n          local_68[2] = local_68[2] + 1;\n          local_48._0_1_ = local_6d;\n        }\n        else {\n          local_48 = (long *)CONCAT71(local_48._1_7_,local_6d);\n          pcVar1 = *(code **)(*local_68 + 0x50);\n          *(undefined8 *)(auStack_78 + lVar2 + -8) = 0x2eb01f;\n          (*pcVar1)(plVar20);\n        }\n        local_68 = (long *)CONCAT71(local_68._1_7_,(byte)local_48);\n        local_48 = plVar20;\n        lVar3 = -(uVar14 * 8 + 0x17 & 0xfffffffffffffff0);\n        puVar15 = auStack_78 + lVar3 + lVar2;\n        uVar18 = 0;\n        local_58 = acStack_70 + lVar3 + lVar2;\n        do {\n          __s = *(char **)(param_7 + (long)*(int *)(pcVar21 + uVar18 * 4) * 8);\n          *(undefined8 *)(auStack_78 + lVar3 + lVar2 + -8) = 0x2eaded;\n          sVar8 = strlen(__s);\n          *(size_t *)(acStack_70 + lVar3 + lVar2 + uVar18 * 8) = sVar8;\n          uVar18 = uVar18 + 1;\n        } while (uVar14 != uVar18);\n        uVar17 = 0xffffffff;\n        uVar18 = 1;\n        pcVar6 = local_58;\n        param_2 = local_48;\n        bVar22 = (byte)local_68;\n      }\n    }" if (parenthesized_expression "((long *)(param_8 * 2) == (long *)0x0)" ( (binary_expression "(long *)(param_8 * 2) == (long *)0x0" (cast_expression "(long *)(param_8 * 2)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_8 * 2)" ( (binary_expression "param_8 * 2" identifier * number_literal) ))) == (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      uVar14 = 0;\n      pcVar6 = (ctype *)0x0;\n      uVar18 = 0;\n    }" { (expression_statement "uVar14 = 0;" (assignment_expression "uVar14 = 0" identifier = number_literal) ;) (expression_statement "pcVar6 = (ctype *)0x0;" (assignment_expression "pcVar6 = (ctype *)0x0" identifier = (cast_expression "(ctype *)0x0" ( (type_descriptor "ctype *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "uVar18 = 0;" (assignment_expression "uVar18 = 0" identifier = number_literal) ;) }) (else_clause "else {\n      uVar14 = 0;\n      plVar20 = (long *)0x0;\n      local_6d = bVar22;\n      local_6c = uVar17;\n      local_68 = param_2;\n      local_58 = pcVar21;\n      local_48 = (long *)(param_8 * 2);\n      do {\n        while (**(char **)(param_7 + (long)plVar20 * 8) == (char)uVar5) {\nLAB_002ead54:\n          *(int *)(local_58 + uVar14 * 4) = (int)plVar20;\n          uVar14 = uVar14 + 1;\n          plVar20 = (long *)((long)plVar20 + 1);\n          if (local_48 == plVar20) goto LAB_002ead6a;\n        }\n        pcVar1 = *(code **)(*(long *)pcVar6 + 0x10);\n        *(undefined8 *)(auStack_78 + lVar2 + -8) = 0x2ead39;\n        cVar23 = (*pcVar1)(pcVar6);\n        if (cVar23 == (char)uVar5) goto LAB_002ead54;\n        plVar20 = (long *)((long)plVar20 + 1);\n      } while (local_48 != plVar20);\nLAB_002ead6a:\n      pcVar21 = local_58;\n      plVar20 = local_68;\n      uVar18 = 0;\n      puVar15 = auStack_78 + lVar2;\n      pcVar6 = (ctype *)0x0;\n      param_2 = local_68;\n      uVar17 = local_6c;\n      bVar22 = local_6d;\n      if (uVar14 != 0) {\n        if ((ulong)local_68[2] < (ulong)local_68[3]) {\n          local_68[2] = local_68[2] + 1;\n          local_48._0_1_ = local_6d;\n        }\n        else {\n          local_48 = (long *)CONCAT71(local_48._1_7_,local_6d);\n          pcVar1 = *(code **)(*local_68 + 0x50);\n          *(undefined8 *)(auStack_78 + lVar2 + -8) = 0x2eb01f;\n          (*pcVar1)(plVar20);\n        }\n        local_68 = (long *)CONCAT71(local_68._1_7_,(byte)local_48);\n        local_48 = plVar20;\n        lVar3 = -(uVar14 * 8 + 0x17 & 0xfffffffffffffff0);\n        puVar15 = auStack_78 + lVar3 + lVar2;\n        uVar18 = 0;\n        local_58 = acStack_70 + lVar3 + lVar2;\n        do {\n          __s = *(char **)(param_7 + (long)*(int *)(pcVar21 + uVar18 * 4) * 8);\n          *(undefined8 *)(auStack_78 + lVar3 + lVar2 + -8) = 0x2eaded;\n          sVar8 = strlen(__s);\n          *(size_t *)(acStack_70 + lVar3 + lVar2 + uVar18 * 8) = sVar8;\n          uVar18 = uVar18 + 1;\n        } while (uVar14 != uVar18);\n        uVar17 = 0xffffffff;\n        uVar18 = 1;\n        pcVar6 = local_58;\n        param_2 = local_48;\n        bVar22 = (byte)local_68;\n      }\n    }" else (compound_statement "{\n      uVar14 = 0;\n      plVar20 = (long *)0x0;\n      local_6d = bVar22;\n      local_6c = uVar17;\n      local_68 = param_2;\n      local_58 = pcVar21;\n      local_48 = (long *)(param_8 * 2);\n      do {\n        while (**(char **)(param_7 + (long)plVar20 * 8) == (char)uVar5) {\nLAB_002ead54:\n          *(int *)(local_58 + uVar14 * 4) = (int)plVar20;\n          uVar14 = uVar14 + 1;\n          plVar20 = (long *)((long)plVar20 + 1);\n          if (local_48 == plVar20) goto LAB_002ead6a;\n        }\n        pcVar1 = *(code **)(*(long *)pcVar6 + 0x10);\n        *(undefined8 *)(auStack_78 + lVar2 + -8) = 0x2ead39;\n        cVar23 = (*pcVar1)(pcVar6);\n        if (cVar23 == (char)uVar5) goto LAB_002ead54;\n        plVar20 = (long *)((long)plVar20 + 1);\n      } while (local_48 != plVar20);\nLAB_002ead6a:\n      pcVar21 = local_58;\n      plVar20 = local_68;\n      uVar18 = 0;\n      puVar15 = auStack_78 + lVar2;\n      pcVar6 = (ctype *)0x0;\n      param_2 = local_68;\n      uVar17 = local_6c;\n      bVar22 = local_6d;\n      if (uVar14 != 0) {\n        if ((ulong)local_68[2] < (ulong)local_68[3]) {\n          local_68[2] = local_68[2] + 1;\n          local_48._0_1_ = local_6d;\n        }\n        else {\n          local_48 = (long *)CONCAT71(local_48._1_7_,local_6d);\n          pcVar1 = *(code **)(*local_68 + 0x50);\n          *(undefined8 *)(auStack_78 + lVar2 + -8) = 0x2eb01f;\n          (*pcVar1)(plVar20);\n        }\n        local_68 = (long *)CONCAT71(local_68._1_7_,(byte)local_48);\n        local_48 = plVar20;\n        lVar3 = -(uVar14 * 8 + 0x17 & 0xfffffffffffffff0);\n        puVar15 = auStack_78 + lVar3 + lVar2;\n        uVar18 = 0;\n        local_58 = acStack_70 + lVar3 + lVar2;\n        do {\n          __s = *(char **)(param_7 + (long)*(int *)(pcVar21 + uVar18 * 4) * 8);\n          *(undefined8 *)(auStack_78 + lVar3 + lVar2 + -8) = 0x2eaded;\n          sVar8 = strlen(__s);\n          *(size_t *)(acStack_70 + lVar3 + lVar2 + uVar18 * 8) = sVar8;\n          uVar18 = uVar18 + 1;\n        } while (uVar14 != uVar18);\n        uVar17 = 0xffffffff;\n        uVar18 = 1;\n        pcVar6 = local_58;\n        param_2 = local_48;\n        bVar22 = (byte)local_68;\n      }\n    }" { (expression_statement "uVar14 = 0;" (assignment_expression "uVar14 = 0" identifier = number_literal) ;) (expression_statement "plVar20 = (long *)0x0;" (assignment_expression "plVar20 = (long *)0x0" identifier = (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_6d = bVar22;" (assignment_expression "local_6d = bVar22" identifier = identifier) ;) (expression_statement "local_6c = uVar17;" (assignment_expression "local_6c = uVar17" identifier = identifier) ;) (expression_statement "local_68 = param_2;" (assignment_expression "local_68 = param_2" identifier = identifier) ;) (expression_statement "local_58 = pcVar21;" (assignment_expression "local_58 = pcVar21" identifier = identifier) ;) (expression_statement "local_48 = (long *)(param_8 * 2);" (assignment_expression "local_48 = (long *)(param_8 * 2)" identifier = (cast_expression "(long *)(param_8 * 2)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_8 * 2)" ( (binary_expression "param_8 * 2" identifier * number_literal) )))) ;) (do_statement "do {\n        while (**(char **)(param_7 + (long)plVar20 * 8) == (char)uVar5) {\nLAB_002ead54:\n          *(int *)(local_58 + uVar14 * 4) = (int)plVar20;\n          uVar14 = uVar14 + 1;\n          plVar20 = (long *)((long)plVar20 + 1);\n          if (local_48 == plVar20) goto LAB_002ead6a;\n        }\n        pcVar1 = *(code **)(*(long *)pcVar6 + 0x10);\n        *(undefined8 *)(auStack_78 + lVar2 + -8) = 0x2ead39;\n        cVar23 = (*pcVar1)(pcVar6);\n        if (cVar23 == (char)uVar5) goto LAB_002ead54;\n        plVar20 = (long *)((long)plVar20 + 1);\n      } while (local_48 != plVar20);" do (compound_statement "{\n        while (**(char **)(param_7 + (long)plVar20 * 8) == (char)uVar5) {\nLAB_002ead54:\n          *(int *)(local_58 + uVar14 * 4) = (int)plVar20;\n          uVar14 = uVar14 + 1;\n          plVar20 = (long *)((long)plVar20 + 1);\n          if (local_48 == plVar20) goto LAB_002ead6a;\n        }\n        pcVar1 = *(code **)(*(long *)pcVar6 + 0x10);\n        *(undefined8 *)(auStack_78 + lVar2 + -8) = 0x2ead39;\n        cVar23 = (*pcVar1)(pcVar6);\n        if (cVar23 == (char)uVar5) goto LAB_002ead54;\n        plVar20 = (long *)((long)plVar20 + 1);\n      }" { (while_statement "while (**(char **)(param_7 + (long)plVar20 * 8) == (char)uVar5) {\nLAB_002ead54:\n          *(int *)(local_58 + uVar14 * 4) = (int)plVar20;\n          uVar14 = uVar14 + 1;\n          plVar20 = (long *)((long)plVar20 + 1);\n          if (local_48 == plVar20) goto LAB_002ead6a;\n        }" while (parenthesized_expression "(**(char **)(param_7 + (long)plVar20 * 8) == (char)uVar5)" ( (binary_expression "**(char **)(param_7 + (long)plVar20 * 8) == (char)uVar5" (pointer_expression "**(char **)(param_7 + (long)plVar20 * 8)" * (pointer_expression "*(char **)(param_7 + (long)plVar20 * 8)" * (cast_expression "(char **)(param_7 + (long)plVar20 * 8)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_7 + (long)plVar20 * 8)" ( (binary_expression "param_7 + (long)plVar20 * 8" identifier + (binary_expression "(long)plVar20 * 8" (cast_expression "(long)plVar20" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) * number_literal)) ))))) == (cast_expression "(char)uVar5" ( (type_descriptor "char" primitive_type) ) identifier)) )) (compound_statement "{\nLAB_002ead54:\n          *(int *)(local_58 + uVar14 * 4) = (int)plVar20;\n          uVar14 = uVar14 + 1;\n          plVar20 = (long *)((long)plVar20 + 1);\n          if (local_48 == plVar20) goto LAB_002ead6a;\n        }" { (labeled_statement "LAB_002ead54:\n          *(int *)(local_58 + uVar14 * 4) = (int)plVar20;" statement_identifier : (expression_statement "*(int *)(local_58 + uVar14 * 4) = (int)plVar20;" (assignment_expression "*(int *)(local_58 + uVar14 * 4) = (int)plVar20" (pointer_expression "*(int *)(local_58 + uVar14 * 4)" * (cast_expression "(int *)(local_58 + uVar14 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_58 + uVar14 * 4)" ( (binary_expression "local_58 + uVar14 * 4" identifier + (binary_expression "uVar14 * 4" identifier * number_literal)) )))) = (cast_expression "(int)plVar20" ( (type_descriptor "int" primitive_type) ) identifier)) ;)) (expression_statement "uVar14 = uVar14 + 1;" (assignment_expression "uVar14 = uVar14 + 1" identifier = (binary_expression "uVar14 + 1" identifier + number_literal)) ;) (expression_statement "plVar20 = (long *)((long)plVar20 + 1);" (assignment_expression "plVar20 = (long *)((long)plVar20 + 1)" identifier = (cast_expression "(long *)((long)plVar20 + 1)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)plVar20 + 1)" ( (binary_expression "(long)plVar20 + 1" (cast_expression "(long)plVar20" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) ;) (if_statement "if (local_48 == plVar20) goto LAB_002ead6a;" if (parenthesized_expression "(local_48 == plVar20)" ( (binary_expression "local_48 == plVar20" identifier == identifier) )) (goto_statement "goto LAB_002ead6a;" goto statement_identifier ;)) })) (expression_statement "pcVar1 = *(code **)(*(long *)pcVar6 + 0x10);" (assignment_expression "pcVar1 = *(code **)(*(long *)pcVar6 + 0x10)" identifier = (pointer_expression "*(code **)(*(long *)pcVar6 + 0x10)" * (cast_expression "(code **)(*(long *)pcVar6 + 0x10)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(long *)pcVar6 + 0x10)" ( (binary_expression "*(long *)pcVar6 + 0x10" (pointer_expression "*(long *)pcVar6" * (cast_expression "(long *)pcVar6" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) ))))) ;) (expression_statement "*(undefined8 *)(auStack_78 + lVar2 + -8) = 0x2ead39;" (assignment_expression "*(undefined8 *)(auStack_78 + lVar2 + -8) = 0x2ead39" (pointer_expression "*(undefined8 *)(auStack_78 + lVar2 + -8)" * (cast_expression "(undefined8 *)(auStack_78 + lVar2 + -8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(auStack_78 + lVar2 + -8)" ( (binary_expression "auStack_78 + lVar2 + -8" (binary_expression "auStack_78 + lVar2" identifier + identifier) + number_literal) )))) = number_literal) ;) (expression_statement "cVar23 = (*pcVar1)(pcVar6);" (assignment_expression "cVar23 = (*pcVar1)(pcVar6)" identifier = (call_expression "(*pcVar1)(pcVar6)" (parenthesized_expression "(*pcVar1)" ( (pointer_expression "*pcVar1" * identifier) )) (argument_list "(pcVar6)" ( identifier )))) ;) (if_statement "if (cVar23 == (char)uVar5) goto LAB_002ead54;" if (parenthesized_expression "(cVar23 == (char)uVar5)" ( (binary_expression "cVar23 == (char)uVar5" identifier == (cast_expression "(char)uVar5" ( (type_descriptor "char" primitive_type) ) identifier)) )) (goto_statement "goto LAB_002ead54;" goto statement_identifier ;)) (expression_statement "plVar20 = (long *)((long)plVar20 + 1);" (assignment_expression "plVar20 = (long *)((long)plVar20 + 1)" identifier = (cast_expression "(long *)((long)plVar20 + 1)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)plVar20 + 1)" ( (binary_expression "(long)plVar20 + 1" (cast_expression "(long)plVar20" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) ;) }) while (parenthesized_expression "(local_48 != plVar20)" ( (binary_expression "local_48 != plVar20" identifier != identifier) )) ;) (labeled_statement "LAB_002ead6a:\n      pcVar21 = local_58;" statement_identifier : (expression_statement "pcVar21 = local_58;" (assignment_expression "pcVar21 = local_58" identifier = identifier) ;)) (expression_statement "plVar20 = local_68;" (assignment_expression "plVar20 = local_68" identifier = identifier) ;) (expression_statement "uVar18 = 0;" (assignment_expression "uVar18 = 0" identifier = number_literal) ;) (expression_statement "puVar15 = auStack_78 + lVar2;" (assignment_expression "puVar15 = auStack_78 + lVar2" identifier = (binary_expression "auStack_78 + lVar2" identifier + identifier)) ;) (expression_statement "pcVar6 = (ctype *)0x0;" (assignment_expression "pcVar6 = (ctype *)0x0" identifier = (cast_expression "(ctype *)0x0" ( (type_descriptor "ctype *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "param_2 = local_68;" (assignment_expression "param_2 = local_68" identifier = identifier) ;) (expression_statement "uVar17 = local_6c;" (assignment_expression "uVar17 = local_6c" identifier = identifier) ;) (expression_statement "bVar22 = local_6d;" (assignment_expression "bVar22 = local_6d" identifier = identifier) ;) (if_statement "if (uVar14 != 0) {\n        if ((ulong)local_68[2] < (ulong)local_68[3]) {\n          local_68[2] = local_68[2] + 1;\n          local_48._0_1_ = local_6d;\n        }\n        else {\n          local_48 = (long *)CONCAT71(local_48._1_7_,local_6d);\n          pcVar1 = *(code **)(*local_68 + 0x50);\n          *(undefined8 *)(auStack_78 + lVar2 + -8) = 0x2eb01f;\n          (*pcVar1)(plVar20);\n        }\n        local_68 = (long *)CONCAT71(local_68._1_7_,(byte)local_48);\n        local_48 = plVar20;\n        lVar3 = -(uVar14 * 8 + 0x17 & 0xfffffffffffffff0);\n        puVar15 = auStack_78 + lVar3 + lVar2;\n        uVar18 = 0;\n        local_58 = acStack_70 + lVar3 + lVar2;\n        do {\n          __s = *(char **)(param_7 + (long)*(int *)(pcVar21 + uVar18 * 4) * 8);\n          *(undefined8 *)(auStack_78 + lVar3 + lVar2 + -8) = 0x2eaded;\n          sVar8 = strlen(__s);\n          *(size_t *)(acStack_70 + lVar3 + lVar2 + uVar18 * 8) = sVar8;\n          uVar18 = uVar18 + 1;\n        } while (uVar14 != uVar18);\n        uVar17 = 0xffffffff;\n        uVar18 = 1;\n        pcVar6 = local_58;\n        param_2 = local_48;\n        bVar22 = (byte)local_68;\n      }" if (parenthesized_expression "(uVar14 != 0)" ( (binary_expression "uVar14 != 0" identifier != number_literal) )) (compound_statement "{\n        if ((ulong)local_68[2] < (ulong)local_68[3]) {\n          local_68[2] = local_68[2] + 1;\n          local_48._0_1_ = local_6d;\n        }\n        else {\n          local_48 = (long *)CONCAT71(local_48._1_7_,local_6d);\n          pcVar1 = *(code **)(*local_68 + 0x50);\n          *(undefined8 *)(auStack_78 + lVar2 + -8) = 0x2eb01f;\n          (*pcVar1)(plVar20);\n        }\n        local_68 = (long *)CONCAT71(local_68._1_7_,(byte)local_48);\n        local_48 = plVar20;\n        lVar3 = -(uVar14 * 8 + 0x17 & 0xfffffffffffffff0);\n        puVar15 = auStack_78 + lVar3 + lVar2;\n        uVar18 = 0;\n        local_58 = acStack_70 + lVar3 + lVar2;\n        do {\n          __s = *(char **)(param_7 + (long)*(int *)(pcVar21 + uVar18 * 4) * 8);\n          *(undefined8 *)(auStack_78 + lVar3 + lVar2 + -8) = 0x2eaded;\n          sVar8 = strlen(__s);\n          *(size_t *)(acStack_70 + lVar3 + lVar2 + uVar18 * 8) = sVar8;\n          uVar18 = uVar18 + 1;\n        } while (uVar14 != uVar18);\n        uVar17 = 0xffffffff;\n        uVar18 = 1;\n        pcVar6 = local_58;\n        param_2 = local_48;\n        bVar22 = (byte)local_68;\n      }" { (if_statement "if ((ulong)local_68[2] < (ulong)local_68[3]) {\n          local_68[2] = local_68[2] + 1;\n          local_48._0_1_ = local_6d;\n        }\n        else {\n          local_48 = (long *)CONCAT71(local_48._1_7_,local_6d);\n          pcVar1 = *(code **)(*local_68 + 0x50);\n          *(undefined8 *)(auStack_78 + lVar2 + -8) = 0x2eb01f;\n          (*pcVar1)(plVar20);\n        }" if (parenthesized_expression "((ulong)local_68[2] < (ulong)local_68[3])" ( (binary_expression "(ulong)local_68[2] < (ulong)local_68[3]" (cast_expression "(ulong)local_68[2]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "local_68[2]" identifier [ number_literal ])) < (cast_expression "(ulong)local_68[3]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "local_68[3]" identifier [ number_literal ]))) )) (compound_statement "{\n          local_68[2] = local_68[2] + 1;\n          local_48._0_1_ = local_6d;\n        }" { (expression_statement "local_68[2] = local_68[2] + 1;" (assignment_expression "local_68[2] = local_68[2] + 1" (subscript_expression "local_68[2]" identifier [ number_literal ]) = (binary_expression "local_68[2] + 1" (subscript_expression "local_68[2]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "local_48._0_1_ = local_6d;" (assignment_expression "local_48._0_1_ = local_6d" (field_expression "local_48._0_1_" identifier . field_identifier) = identifier) ;) }) (else_clause "else {\n          local_48 = (long *)CONCAT71(local_48._1_7_,local_6d);\n          pcVar1 = *(code **)(*local_68 + 0x50);\n          *(undefined8 *)(auStack_78 + lVar2 + -8) = 0x2eb01f;\n          (*pcVar1)(plVar20);\n        }" else (compound_statement "{\n          local_48 = (long *)CONCAT71(local_48._1_7_,local_6d);\n          pcVar1 = *(code **)(*local_68 + 0x50);\n          *(undefined8 *)(auStack_78 + lVar2 + -8) = 0x2eb01f;\n          (*pcVar1)(plVar20);\n        }" { (expression_statement "local_48 = (long *)CONCAT71(local_48._1_7_,local_6d);" (assignment_expression "local_48 = (long *)CONCAT71(local_48._1_7_,local_6d)" identifier = (cast_expression "(long *)CONCAT71(local_48._1_7_,local_6d)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (call_expression "CONCAT71(local_48._1_7_,local_6d)" identifier (argument_list "(local_48._1_7_,local_6d)" ( (field_expression "local_48._1_7_" identifier . field_identifier) , identifier ))))) ;) (expression_statement "pcVar1 = *(code **)(*local_68 + 0x50);" (assignment_expression "pcVar1 = *(code **)(*local_68 + 0x50)" identifier = (pointer_expression "*(code **)(*local_68 + 0x50)" * (cast_expression "(code **)(*local_68 + 0x50)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*local_68 + 0x50)" ( (binary_expression "*local_68 + 0x50" (pointer_expression "*local_68" * identifier) + number_literal) ))))) ;) (expression_statement "*(undefined8 *)(auStack_78 + lVar2 + -8) = 0x2eb01f;" (assignment_expression "*(undefined8 *)(auStack_78 + lVar2 + -8) = 0x2eb01f" (pointer_expression "*(undefined8 *)(auStack_78 + lVar2 + -8)" * (cast_expression "(undefined8 *)(auStack_78 + lVar2 + -8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(auStack_78 + lVar2 + -8)" ( (binary_expression "auStack_78 + lVar2 + -8" (binary_expression "auStack_78 + lVar2" identifier + identifier) + number_literal) )))) = number_literal) ;) (expression_statement "(*pcVar1)(plVar20);" (call_expression "(*pcVar1)(plVar20)" (parenthesized_expression "(*pcVar1)" ( (pointer_expression "*pcVar1" * identifier) )) (argument_list "(plVar20)" ( identifier ))) ;) }))) (expression_statement "local_68 = (long *)CONCAT71(local_68._1_7_,(byte)local_48);" (assignment_expression "local_68 = (long *)CONCAT71(local_68._1_7_,(byte)local_48)" identifier = (cast_expression "(long *)CONCAT71(local_68._1_7_,(byte)local_48)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (call_expression "CONCAT71(local_68._1_7_,(byte)local_48)" identifier (argument_list "(local_68._1_7_,(byte)local_48)" ( (field_expression "local_68._1_7_" identifier . field_identifier) , (cast_expression "(byte)local_48" ( (type_descriptor "byte" type_identifier) ) identifier) ))))) ;) (expression_statement "local_48 = plVar20;" (assignment_expression "local_48 = plVar20" identifier = identifier) ;) (expression_statement "lVar3 = -(uVar14 * 8 + 0x17 & 0xfffffffffffffff0);" (assignment_expression "lVar3 = -(uVar14 * 8 + 0x17 & 0xfffffffffffffff0)" identifier = (unary_expression "-(uVar14 * 8 + 0x17 & 0xfffffffffffffff0)" - (parenthesized_expression "(uVar14 * 8 + 0x17 & 0xfffffffffffffff0)" ( (binary_expression "uVar14 * 8 + 0x17 & 0xfffffffffffffff0" (binary_expression "uVar14 * 8 + 0x17" (binary_expression "uVar14 * 8" identifier * number_literal) + number_literal) & number_literal) )))) ;) (expression_statement "puVar15 = auStack_78 + lVar3 + lVar2;" (assignment_expression "puVar15 = auStack_78 + lVar3 + lVar2" identifier = (binary_expression "auStack_78 + lVar3 + lVar2" (binary_expression "auStack_78 + lVar3" identifier + identifier) + identifier)) ;) (expression_statement "uVar18 = 0;" (assignment_expression "uVar18 = 0" identifier = number_literal) ;) (expression_statement "local_58 = acStack_70 + lVar3 + lVar2;" (assignment_expression "local_58 = acStack_70 + lVar3 + lVar2" identifier = (binary_expression "acStack_70 + lVar3 + lVar2" (binary_expression "acStack_70 + lVar3" identifier + identifier) + identifier)) ;) (do_statement "do {\n          __s = *(char **)(param_7 + (long)*(int *)(pcVar21 + uVar18 * 4) * 8);\n          *(undefined8 *)(auStack_78 + lVar3 + lVar2 + -8) = 0x2eaded;\n          sVar8 = strlen(__s);\n          *(size_t *)(acStack_70 + lVar3 + lVar2 + uVar18 * 8) = sVar8;\n          uVar18 = uVar18 + 1;\n        } while (uVar14 != uVar18);" do (compound_statement "{\n          __s = *(char **)(param_7 + (long)*(int *)(pcVar21 + uVar18 * 4) * 8);\n          *(undefined8 *)(auStack_78 + lVar3 + lVar2 + -8) = 0x2eaded;\n          sVar8 = strlen(__s);\n          *(size_t *)(acStack_70 + lVar3 + lVar2 + uVar18 * 8) = sVar8;\n          uVar18 = uVar18 + 1;\n        }" { (expression_statement "__s = *(char **)(param_7 + (long)*(int *)(pcVar21 + uVar18 * 4) * 8);" (assignment_expression "__s = *(char **)(param_7 + (long)*(int *)(pcVar21 + uVar18 * 4) * 8)" identifier = (pointer_expression "*(char **)(param_7 + (long)*(int *)(pcVar21 + uVar18 * 4) * 8)" * (cast_expression "(char **)(param_7 + (long)*(int *)(pcVar21 + uVar18 * 4) * 8)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_7 + (long)*(int *)(pcVar21 + uVar18 * 4) * 8)" ( (binary_expression "param_7 + (long)*(int *)(pcVar21 + uVar18 * 4) * 8" identifier + (binary_expression "(long)*(int *)(pcVar21 + uVar18 * 4) * 8" (cast_expression "(long)*(int *)(pcVar21 + uVar18 * 4)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "*(int *)(pcVar21 + uVar18 * 4)" * (cast_expression "(int *)(pcVar21 + uVar18 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar21 + uVar18 * 4)" ( (binary_expression "pcVar21 + uVar18 * 4" identifier + (binary_expression "uVar18 * 4" identifier * number_literal)) ))))) * number_literal)) ))))) ;) (expression_statement "*(undefined8 *)(auStack_78 + lVar3 + lVar2 + -8) = 0x2eaded;" (assignment_expression "*(undefined8 *)(auStack_78 + lVar3 + lVar2 + -8) = 0x2eaded" (pointer_expression "*(undefined8 *)(auStack_78 + lVar3 + lVar2 + -8)" * (cast_expression "(undefined8 *)(auStack_78 + lVar3 + lVar2 + -8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(auStack_78 + lVar3 + lVar2 + -8)" ( (binary_expression "auStack_78 + lVar3 + lVar2 + -8" (binary_expression "auStack_78 + lVar3 + lVar2" (binary_expression "auStack_78 + lVar3" identifier + identifier) + identifier) + number_literal) )))) = number_literal) ;) (expression_statement "sVar8 = strlen(__s);" (assignment_expression "sVar8 = strlen(__s)" identifier = (call_expression "strlen(__s)" identifier (argument_list "(__s)" ( identifier )))) ;) (expression_statement "*(size_t *)(acStack_70 + lVar3 + lVar2 + uVar18 * 8) = sVar8;" (assignment_expression "*(size_t *)(acStack_70 + lVar3 + lVar2 + uVar18 * 8) = sVar8" (pointer_expression "*(size_t *)(acStack_70 + lVar3 + lVar2 + uVar18 * 8)" * (cast_expression "(size_t *)(acStack_70 + lVar3 + lVar2 + uVar18 * 8)" ( (type_descriptor "size_t *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(acStack_70 + lVar3 + lVar2 + uVar18 * 8)" ( (binary_expression "acStack_70 + lVar3 + lVar2 + uVar18 * 8" (binary_expression "acStack_70 + lVar3 + lVar2" (binary_expression "acStack_70 + lVar3" identifier + identifier) + identifier) + (binary_expression "uVar18 * 8" identifier * number_literal)) )))) = identifier) ;) (expression_statement "uVar18 = uVar18 + 1;" (assignment_expression "uVar18 = uVar18 + 1" identifier = (binary_expression "uVar18 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar14 != uVar18)" ( (binary_expression "uVar14 != uVar18" identifier != identifier) )) ;) (expression_statement "uVar17 = 0xffffffff;" (assignment_expression "uVar17 = 0xffffffff" identifier = number_literal) ;) (expression_statement "uVar18 = 1;" (assignment_expression "uVar18 = 1" identifier = number_literal) ;) (expression_statement "pcVar6 = local_58;" (assignment_expression "pcVar6 = local_58" identifier = identifier) ;) (expression_statement "param_2 = local_48;" (assignment_expression "param_2 = local_48" identifier = identifier) ;) (expression_statement "bVar22 = (byte)local_68;" (assignment_expression "bVar22 = (byte)local_68" identifier = (cast_expression "(byte)local_68" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) })) }))) }))) (do_statement "do {\n    cVar23 = uVar17 == 0xffffffff;\n    bVar9 = param_2 != (long *)0x0 && (bool)cVar23;\n    bVar10 = cVar23;\n    if (bVar9) {\n      if ((ulong)param_2[2] < (ulong)param_2[3]) {\n        bVar10 = 0;\n      }\n      else {\n        local_6c = CONCAT31(local_6c._1_3_,bVar22);\n        local_68 = (long *)CONCAT44(local_68._4_4_,uVar17);\n        local_58 = (ctype *)CONCAT71(local_58._1_7_,cVar23);\n        local_48 = (long *)CONCAT71(local_48._1_7_,bVar9);\n        pcVar1 = *(code **)(*param_2 + 0x48);\n        *(undefined8 *)(puVar15 + -8) = 0x2eae9c;\n        iVar4 = (*pcVar1)(param_2);\n        if (iVar4 == -1) {\n          param_2 = (long *)0x0;\n          bVar10 = (byte)local_48;\n        }\n        else {\n          bVar10 = 0;\n        }\n        uVar17 = (uint)local_68;\n        bVar22 = (byte)local_6c;\n        cVar23 = (byte)local_58;\n      }\n    }\n    plVar20 = local_40;\n    bVar11 = local_40 != (long *)0x0 & bVar22;\n    bVar12 = bVar22;\n    if (bVar11 == 0) {\nLAB_002eab55:\n      if (bVar10 == bVar12) break;\n    }\n    else {\n      if ((ulong)local_40[3] <= (ulong)local_40[2]) {\n        local_68 = (long *)CONCAT71(local_68._1_7_,cVar23);\n        local_58 = (ctype *)CONCAT71(local_58._1_7_,bVar11);\n        local_48 = (long *)CONCAT71(local_48._1_7_,bVar10);\n        pcVar1 = *(code **)(*local_40 + 0x48);\n        local_6d = bVar22;\n        local_6c = uVar17;\n        *(undefined8 *)(puVar15 + -8) = 0x2eaeec;\n        iVar4 = (*pcVar1)(plVar20);\n        plVar20 = (long *)0x0;\n        bVar12 = (byte)local_58;\n        if (iVar4 != -1) {\n          bVar12 = 0;\n          plVar20 = local_40;\n        }\n        uVar17 = local_6c;\n        local_40 = plVar20;\n        bVar22 = local_6d;\n        bVar10 = (byte)local_48;\n        cVar23 = (byte)local_68;\n        goto LAB_002eab55;\n      }\n      if (bVar10 == 0) break;\n    }\n    if ((param_2 == (long *)0x0) || (cVar23 == '\0')) {\n      cVar23 = (char)uVar17;\n    }\n    else if ((char *)param_2[2] < (char *)param_2[3]) {\n      cVar23 = *(char *)param_2[2];\n    }\n    else {\n      local_58 = (ctype *)CONCAT71(local_58._1_7_,bVar22);\n      local_48 = (long *)CONCAT44(local_48._4_4_,uVar17);\n      pcVar1 = *(code **)(*param_2 + 0x48);\n      *(undefined8 *)(puVar15 + -8) = 0x2eaf38;\n      iVar4 = (*pcVar1)(param_2);\n      cVar23 = -1;\n      uVar17 = (uint)local_48;\n      bVar22 = (byte)local_58;\n      if (iVar4 == -1) {\n        param_2 = (long *)0x0;\n      }\n      else {\n        cVar23 = (char)iVar4;\n      }\n    }\n    if (uVar14 == 0) goto LAB_002eac30;\n    uVar7 = 0;\n    uVar16 = 0;\n    do {\n      while (*(ulong *)(pcVar6 + uVar7 * 8) <= uVar18) {\n        uVar16 = uVar16 + 1;\nLAB_002eab88:\n        uVar7 = uVar7 + 1;\n        if (uVar14 <= uVar7) goto LAB_002eabbf;\n      }\n      if (*(char *)(*(long *)(param_7 + (long)*(int *)(pcVar21 + uVar7 * 4) * 8) + uVar18) == cVar23\n         ) goto LAB_002eab88;\n      uVar14 = uVar14 - 1;\n      *(int *)(pcVar21 + uVar7 * 4) = *(int *)(pcVar21 + uVar14 * 4);\n      *(ulong *)(pcVar6 + uVar7 * 8) = *(ulong *)(pcVar6 + uVar14 * 8);\n    } while (uVar7 < uVar14);\nLAB_002eabbf:\n    if (uVar16 == uVar14) break;\n    if ((ulong)param_2[2] < (ulong)param_2[3]) {\n      param_2[2] = param_2[2] + 1;\n    }\n    else {\n      local_48 = (long *)CONCAT71(local_48._1_7_,bVar22);\n      pcVar1 = *(code **)(*param_2 + 0x50);\n      *(undefined8 *)(puVar15 + -8) = 0x2eaca1;\n      (*pcVar1)(param_2);\n      bVar22 = (byte)local_48;\n    }\n    uVar18 = uVar18 + 1;\n    uVar17 = 0xffffffff;\n  } while( true );" do (compound_statement "{\n    cVar23 = uVar17 == 0xffffffff;\n    bVar9 = param_2 != (long *)0x0 && (bool)cVar23;\n    bVar10 = cVar23;\n    if (bVar9) {\n      if ((ulong)param_2[2] < (ulong)param_2[3]) {\n        bVar10 = 0;\n      }\n      else {\n        local_6c = CONCAT31(local_6c._1_3_,bVar22);\n        local_68 = (long *)CONCAT44(local_68._4_4_,uVar17);\n        local_58 = (ctype *)CONCAT71(local_58._1_7_,cVar23);\n        local_48 = (long *)CONCAT71(local_48._1_7_,bVar9);\n        pcVar1 = *(code **)(*param_2 + 0x48);\n        *(undefined8 *)(puVar15 + -8) = 0x2eae9c;\n        iVar4 = (*pcVar1)(param_2);\n        if (iVar4 == -1) {\n          param_2 = (long *)0x0;\n          bVar10 = (byte)local_48;\n        }\n        else {\n          bVar10 = 0;\n        }\n        uVar17 = (uint)local_68;\n        bVar22 = (byte)local_6c;\n        cVar23 = (byte)local_58;\n      }\n    }\n    plVar20 = local_40;\n    bVar11 = local_40 != (long *)0x0 & bVar22;\n    bVar12 = bVar22;\n    if (bVar11 == 0) {\nLAB_002eab55:\n      if (bVar10 == bVar12) break;\n    }\n    else {\n      if ((ulong)local_40[3] <= (ulong)local_40[2]) {\n        local_68 = (long *)CONCAT71(local_68._1_7_,cVar23);\n        local_58 = (ctype *)CONCAT71(local_58._1_7_,bVar11);\n        local_48 = (long *)CONCAT71(local_48._1_7_,bVar10);\n        pcVar1 = *(code **)(*local_40 + 0x48);\n        local_6d = bVar22;\n        local_6c = uVar17;\n        *(undefined8 *)(puVar15 + -8) = 0x2eaeec;\n        iVar4 = (*pcVar1)(plVar20);\n        plVar20 = (long *)0x0;\n        bVar12 = (byte)local_58;\n        if (iVar4 != -1) {\n          bVar12 = 0;\n          plVar20 = local_40;\n        }\n        uVar17 = local_6c;\n        local_40 = plVar20;\n        bVar22 = local_6d;\n        bVar10 = (byte)local_48;\n        cVar23 = (byte)local_68;\n        goto LAB_002eab55;\n      }\n      if (bVar10 == 0) break;\n    }\n    if ((param_2 == (long *)0x0) || (cVar23 == '\0')) {\n      cVar23 = (char)uVar17;\n    }\n    else if ((char *)param_2[2] < (char *)param_2[3]) {\n      cVar23 = *(char *)param_2[2];\n    }\n    else {\n      local_58 = (ctype *)CONCAT71(local_58._1_7_,bVar22);\n      local_48 = (long *)CONCAT44(local_48._4_4_,uVar17);\n      pcVar1 = *(code **)(*param_2 + 0x48);\n      *(undefined8 *)(puVar15 + -8) = 0x2eaf38;\n      iVar4 = (*pcVar1)(param_2);\n      cVar23 = -1;\n      uVar17 = (uint)local_48;\n      bVar22 = (byte)local_58;\n      if (iVar4 == -1) {\n        param_2 = (long *)0x0;\n      }\n      else {\n        cVar23 = (char)iVar4;\n      }\n    }\n    if (uVar14 == 0) goto LAB_002eac30;\n    uVar7 = 0;\n    uVar16 = 0;\n    do {\n      while (*(ulong *)(pcVar6 + uVar7 * 8) <= uVar18) {\n        uVar16 = uVar16 + 1;\nLAB_002eab88:\n        uVar7 = uVar7 + 1;\n        if (uVar14 <= uVar7) goto LAB_002eabbf;\n      }\n      if (*(char *)(*(long *)(param_7 + (long)*(int *)(pcVar21 + uVar7 * 4) * 8) + uVar18) == cVar23\n         ) goto LAB_002eab88;\n      uVar14 = uVar14 - 1;\n      *(int *)(pcVar21 + uVar7 * 4) = *(int *)(pcVar21 + uVar14 * 4);\n      *(ulong *)(pcVar6 + uVar7 * 8) = *(ulong *)(pcVar6 + uVar14 * 8);\n    } while (uVar7 < uVar14);\nLAB_002eabbf:\n    if (uVar16 == uVar14) break;\n    if ((ulong)param_2[2] < (ulong)param_2[3]) {\n      param_2[2] = param_2[2] + 1;\n    }\n    else {\n      local_48 = (long *)CONCAT71(local_48._1_7_,bVar22);\n      pcVar1 = *(code **)(*param_2 + 0x50);\n      *(undefined8 *)(puVar15 + -8) = 0x2eaca1;\n      (*pcVar1)(param_2);\n      bVar22 = (byte)local_48;\n    }\n    uVar18 = uVar18 + 1;\n    uVar17 = 0xffffffff;\n  }" { (expression_statement "cVar23 = uVar17 == 0xffffffff;" (assignment_expression "cVar23 = uVar17 == 0xffffffff" identifier = (binary_expression "uVar17 == 0xffffffff" identifier == number_literal)) ;) (expression_statement "bVar9 = param_2 != (long *)0x0 && (bool)cVar23;" (assignment_expression "bVar9 = param_2 != (long *)0x0 && (bool)cVar23" identifier = (binary_expression "param_2 != (long *)0x0 && (bool)cVar23" (binary_expression "param_2 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) && (cast_expression "(bool)cVar23" ( (type_descriptor "bool" primitive_type) ) identifier))) ;) (expression_statement "bVar10 = cVar23;" (assignment_expression "bVar10 = cVar23" identifier = identifier) ;) (if_statement "if (bVar9) {\n      if ((ulong)param_2[2] < (ulong)param_2[3]) {\n        bVar10 = 0;\n      }\n      else {\n        local_6c = CONCAT31(local_6c._1_3_,bVar22);\n        local_68 = (long *)CONCAT44(local_68._4_4_,uVar17);\n        local_58 = (ctype *)CONCAT71(local_58._1_7_,cVar23);\n        local_48 = (long *)CONCAT71(local_48._1_7_,bVar9);\n        pcVar1 = *(code **)(*param_2 + 0x48);\n        *(undefined8 *)(puVar15 + -8) = 0x2eae9c;\n        iVar4 = (*pcVar1)(param_2);\n        if (iVar4 == -1) {\n          param_2 = (long *)0x0;\n          bVar10 = (byte)local_48;\n        }\n        else {\n          bVar10 = 0;\n        }\n        uVar17 = (uint)local_68;\n        bVar22 = (byte)local_6c;\n        cVar23 = (byte)local_58;\n      }\n    }" if (parenthesized_expression "(bVar9)" ( identifier )) (compound_statement "{\n      if ((ulong)param_2[2] < (ulong)param_2[3]) {\n        bVar10 = 0;\n      }\n      else {\n        local_6c = CONCAT31(local_6c._1_3_,bVar22);\n        local_68 = (long *)CONCAT44(local_68._4_4_,uVar17);\n        local_58 = (ctype *)CONCAT71(local_58._1_7_,cVar23);\n        local_48 = (long *)CONCAT71(local_48._1_7_,bVar9);\n        pcVar1 = *(code **)(*param_2 + 0x48);\n        *(undefined8 *)(puVar15 + -8) = 0x2eae9c;\n        iVar4 = (*pcVar1)(param_2);\n        if (iVar4 == -1) {\n          param_2 = (long *)0x0;\n          bVar10 = (byte)local_48;\n        }\n        else {\n          bVar10 = 0;\n        }\n        uVar17 = (uint)local_68;\n        bVar22 = (byte)local_6c;\n        cVar23 = (byte)local_58;\n      }\n    }" { (if_statement "if ((ulong)param_2[2] < (ulong)param_2[3]) {\n        bVar10 = 0;\n      }\n      else {\n        local_6c = CONCAT31(local_6c._1_3_,bVar22);\n        local_68 = (long *)CONCAT44(local_68._4_4_,uVar17);\n        local_58 = (ctype *)CONCAT71(local_58._1_7_,cVar23);\n        local_48 = (long *)CONCAT71(local_48._1_7_,bVar9);\n        pcVar1 = *(code **)(*param_2 + 0x48);\n        *(undefined8 *)(puVar15 + -8) = 0x2eae9c;\n        iVar4 = (*pcVar1)(param_2);\n        if (iVar4 == -1) {\n          param_2 = (long *)0x0;\n          bVar10 = (byte)local_48;\n        }\n        else {\n          bVar10 = 0;\n        }\n        uVar17 = (uint)local_68;\n        bVar22 = (byte)local_6c;\n        cVar23 = (byte)local_58;\n      }" if (parenthesized_expression "((ulong)param_2[2] < (ulong)param_2[3])" ( (binary_expression "(ulong)param_2[2] < (ulong)param_2[3]" (cast_expression "(ulong)param_2[2]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_2[2]" identifier [ number_literal ])) < (cast_expression "(ulong)param_2[3]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_2[3]" identifier [ number_literal ]))) )) (compound_statement "{\n        bVar10 = 0;\n      }" { (expression_statement "bVar10 = 0;" (assignment_expression "bVar10 = 0" identifier = number_literal) ;) }) (else_clause "else {\n        local_6c = CONCAT31(local_6c._1_3_,bVar22);\n        local_68 = (long *)CONCAT44(local_68._4_4_,uVar17);\n        local_58 = (ctype *)CONCAT71(local_58._1_7_,cVar23);\n        local_48 = (long *)CONCAT71(local_48._1_7_,bVar9);\n        pcVar1 = *(code **)(*param_2 + 0x48);\n        *(undefined8 *)(puVar15 + -8) = 0x2eae9c;\n        iVar4 = (*pcVar1)(param_2);\n        if (iVar4 == -1) {\n          param_2 = (long *)0x0;\n          bVar10 = (byte)local_48;\n        }\n        else {\n          bVar10 = 0;\n        }\n        uVar17 = (uint)local_68;\n        bVar22 = (byte)local_6c;\n        cVar23 = (byte)local_58;\n      }" else (compound_statement "{\n        local_6c = CONCAT31(local_6c._1_3_,bVar22);\n        local_68 = (long *)CONCAT44(local_68._4_4_,uVar17);\n        local_58 = (ctype *)CONCAT71(local_58._1_7_,cVar23);\n        local_48 = (long *)CONCAT71(local_48._1_7_,bVar9);\n        pcVar1 = *(code **)(*param_2 + 0x48);\n        *(undefined8 *)(puVar15 + -8) = 0x2eae9c;\n        iVar4 = (*pcVar1)(param_2);\n        if (iVar4 == -1) {\n          param_2 = (long *)0x0;\n          bVar10 = (byte)local_48;\n        }\n        else {\n          bVar10 = 0;\n        }\n        uVar17 = (uint)local_68;\n        bVar22 = (byte)local_6c;\n        cVar23 = (byte)local_58;\n      }" { (expression_statement "local_6c = CONCAT31(local_6c._1_3_,bVar22);" (assignment_expression "local_6c = CONCAT31(local_6c._1_3_,bVar22)" identifier = (call_expression "CONCAT31(local_6c._1_3_,bVar22)" identifier (argument_list "(local_6c._1_3_,bVar22)" ( (field_expression "local_6c._1_3_" identifier . field_identifier) , identifier )))) ;) (expression_statement "local_68 = (long *)CONCAT44(local_68._4_4_,uVar17);" (assignment_expression "local_68 = (long *)CONCAT44(local_68._4_4_,uVar17)" identifier = (cast_expression "(long *)CONCAT44(local_68._4_4_,uVar17)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (call_expression "CONCAT44(local_68._4_4_,uVar17)" identifier (argument_list "(local_68._4_4_,uVar17)" ( (field_expression "local_68._4_4_" identifier . field_identifier) , identifier ))))) ;) (expression_statement "local_58 = (ctype *)CONCAT71(local_58._1_7_,cVar23);" (assignment_expression "local_58 = (ctype *)CONCAT71(local_58._1_7_,cVar23)" identifier = (cast_expression "(ctype *)CONCAT71(local_58._1_7_,cVar23)" ( (type_descriptor "ctype *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "CONCAT71(local_58._1_7_,cVar23)" identifier (argument_list "(local_58._1_7_,cVar23)" ( (field_expression "local_58._1_7_" identifier . field_identifier) , identifier ))))) ;) (expression_statement "local_48 = (long *)CONCAT71(local_48._1_7_,bVar9);" (assignment_expression "local_48 = (long *)CONCAT71(local_48._1_7_,bVar9)" identifier = (cast_expression "(long *)CONCAT71(local_48._1_7_,bVar9)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (call_expression "CONCAT71(local_48._1_7_,bVar9)" identifier (argument_list "(local_48._1_7_,bVar9)" ( (field_expression "local_48._1_7_" identifier . field_identifier) , identifier ))))) ;) (expression_statement "pcVar1 = *(code **)(*param_2 + 0x48);" (assignment_expression "pcVar1 = *(code **)(*param_2 + 0x48)" identifier = (pointer_expression "*(code **)(*param_2 + 0x48)" * (cast_expression "(code **)(*param_2 + 0x48)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_2 + 0x48)" ( (binary_expression "*param_2 + 0x48" (pointer_expression "*param_2" * identifier) + number_literal) ))))) ;) (expression_statement "*(undefined8 *)(puVar15 + -8) = 0x2eae9c;" (assignment_expression "*(undefined8 *)(puVar15 + -8) = 0x2eae9c" (pointer_expression "*(undefined8 *)(puVar15 + -8)" * (cast_expression "(undefined8 *)(puVar15 + -8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar15 + -8)" ( (binary_expression "puVar15 + -8" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar4 = (*pcVar1)(param_2);" (assignment_expression "iVar4 = (*pcVar1)(param_2)" identifier = (call_expression "(*pcVar1)(param_2)" (parenthesized_expression "(*pcVar1)" ( (pointer_expression "*pcVar1" * identifier) )) (argument_list "(param_2)" ( identifier )))) ;) (if_statement "if (iVar4 == -1) {\n          param_2 = (long *)0x0;\n          bVar10 = (byte)local_48;\n        }\n        else {\n          bVar10 = 0;\n        }" if (parenthesized_expression "(iVar4 == -1)" ( (binary_expression "iVar4 == -1" identifier == number_literal) )) (compound_statement "{\n          param_2 = (long *)0x0;\n          bVar10 = (byte)local_48;\n        }" { (expression_statement "param_2 = (long *)0x0;" (assignment_expression "param_2 = (long *)0x0" identifier = (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "bVar10 = (byte)local_48;" (assignment_expression "bVar10 = (byte)local_48" identifier = (cast_expression "(byte)local_48" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) }) (else_clause "else {\n          bVar10 = 0;\n        }" else (compound_statement "{\n          bVar10 = 0;\n        }" { (expression_statement "bVar10 = 0;" (assignment_expression "bVar10 = 0" identifier = number_literal) ;) }))) (expression_statement "uVar17 = (uint)local_68;" (assignment_expression "uVar17 = (uint)local_68" identifier = (cast_expression "(uint)local_68" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "bVar22 = (byte)local_6c;" (assignment_expression "bVar22 = (byte)local_6c" identifier = (cast_expression "(byte)local_6c" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "cVar23 = (byte)local_58;" (assignment_expression "cVar23 = (byte)local_58" identifier = (cast_expression "(byte)local_58" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) }))) })) (expression_statement "plVar20 = local_40;" (assignment_expression "plVar20 = local_40" identifier = identifier) ;) (expression_statement "bVar11 = local_40 != (long *)0x0 & bVar22;" (assignment_expression "bVar11 = local_40 != (long *)0x0 & bVar22" identifier = (binary_expression "local_40 != (long *)0x0 & bVar22" (binary_expression "local_40 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) & identifier)) ;) (expression_statement "bVar12 = bVar22;" (assignment_expression "bVar12 = bVar22" identifier = identifier) ;) (if_statement "if (bVar11 == 0) {\nLAB_002eab55:\n      if (bVar10 == bVar12) break;\n    }\n    else {\n      if ((ulong)local_40[3] <= (ulong)local_40[2]) {\n        local_68 = (long *)CONCAT71(local_68._1_7_,cVar23);\n        local_58 = (ctype *)CONCAT71(local_58._1_7_,bVar11);\n        local_48 = (long *)CONCAT71(local_48._1_7_,bVar10);\n        pcVar1 = *(code **)(*local_40 + 0x48);\n        local_6d = bVar22;\n        local_6c = uVar17;\n        *(undefined8 *)(puVar15 + -8) = 0x2eaeec;\n        iVar4 = (*pcVar1)(plVar20);\n        plVar20 = (long *)0x0;\n        bVar12 = (byte)local_58;\n        if (iVar4 != -1) {\n          bVar12 = 0;\n          plVar20 = local_40;\n        }\n        uVar17 = local_6c;\n        local_40 = plVar20;\n        bVar22 = local_6d;\n        bVar10 = (byte)local_48;\n        cVar23 = (byte)local_68;\n        goto LAB_002eab55;\n      }\n      if (bVar10 == 0) break;\n    }" if (parenthesized_expression "(bVar11 == 0)" ( (binary_expression "bVar11 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_002eab55:\n      if (bVar10 == bVar12) break;\n    }" { (labeled_statement "LAB_002eab55:\n      if (bVar10 == bVar12) break;" statement_identifier : (if_statement "if (bVar10 == bVar12) break;" if (parenthesized_expression "(bVar10 == bVar12)" ( (binary_expression "bVar10 == bVar12" identifier == identifier) )) (break_statement "break;" break ;))) }) (else_clause "else {\n      if ((ulong)local_40[3] <= (ulong)local_40[2]) {\n        local_68 = (long *)CONCAT71(local_68._1_7_,cVar23);\n        local_58 = (ctype *)CONCAT71(local_58._1_7_,bVar11);\n        local_48 = (long *)CONCAT71(local_48._1_7_,bVar10);\n        pcVar1 = *(code **)(*local_40 + 0x48);\n        local_6d = bVar22;\n        local_6c = uVar17;\n        *(undefined8 *)(puVar15 + -8) = 0x2eaeec;\n        iVar4 = (*pcVar1)(plVar20);\n        plVar20 = (long *)0x0;\n        bVar12 = (byte)local_58;\n        if (iVar4 != -1) {\n          bVar12 = 0;\n          plVar20 = local_40;\n        }\n        uVar17 = local_6c;\n        local_40 = plVar20;\n        bVar22 = local_6d;\n        bVar10 = (byte)local_48;\n        cVar23 = (byte)local_68;\n        goto LAB_002eab55;\n      }\n      if (bVar10 == 0) break;\n    }" else (compound_statement "{\n      if ((ulong)local_40[3] <= (ulong)local_40[2]) {\n        local_68 = (long *)CONCAT71(local_68._1_7_,cVar23);\n        local_58 = (ctype *)CONCAT71(local_58._1_7_,bVar11);\n        local_48 = (long *)CONCAT71(local_48._1_7_,bVar10);\n        pcVar1 = *(code **)(*local_40 + 0x48);\n        local_6d = bVar22;\n        local_6c = uVar17;\n        *(undefined8 *)(puVar15 + -8) = 0x2eaeec;\n        iVar4 = (*pcVar1)(plVar20);\n        plVar20 = (long *)0x0;\n        bVar12 = (byte)local_58;\n        if (iVar4 != -1) {\n          bVar12 = 0;\n          plVar20 = local_40;\n        }\n        uVar17 = local_6c;\n        local_40 = plVar20;\n        bVar22 = local_6d;\n        bVar10 = (byte)local_48;\n        cVar23 = (byte)local_68;\n        goto LAB_002eab55;\n      }\n      if (bVar10 == 0) break;\n    }" { (if_statement "if ((ulong)local_40[3] <= (ulong)local_40[2]) {\n        local_68 = (long *)CONCAT71(local_68._1_7_,cVar23);\n        local_58 = (ctype *)CONCAT71(local_58._1_7_,bVar11);\n        local_48 = (long *)CONCAT71(local_48._1_7_,bVar10);\n        pcVar1 = *(code **)(*local_40 + 0x48);\n        local_6d = bVar22;\n        local_6c = uVar17;\n        *(undefined8 *)(puVar15 + -8) = 0x2eaeec;\n        iVar4 = (*pcVar1)(plVar20);\n        plVar20 = (long *)0x0;\n        bVar12 = (byte)local_58;\n        if (iVar4 != -1) {\n          bVar12 = 0;\n          plVar20 = local_40;\n        }\n        uVar17 = local_6c;\n        local_40 = plVar20;\n        bVar22 = local_6d;\n        bVar10 = (byte)local_48;\n        cVar23 = (byte)local_68;\n        goto LAB_002eab55;\n      }" if (parenthesized_expression "((ulong)local_40[3] <= (ulong)local_40[2])" ( (binary_expression "(ulong)local_40[3] <= (ulong)local_40[2]" (cast_expression "(ulong)local_40[3]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "local_40[3]" identifier [ number_literal ])) <= (cast_expression "(ulong)local_40[2]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "local_40[2]" identifier [ number_literal ]))) )) (compound_statement "{\n        local_68 = (long *)CONCAT71(local_68._1_7_,cVar23);\n        local_58 = (ctype *)CONCAT71(local_58._1_7_,bVar11);\n        local_48 = (long *)CONCAT71(local_48._1_7_,bVar10);\n        pcVar1 = *(code **)(*local_40 + 0x48);\n        local_6d = bVar22;\n        local_6c = uVar17;\n        *(undefined8 *)(puVar15 + -8) = 0x2eaeec;\n        iVar4 = (*pcVar1)(plVar20);\n        plVar20 = (long *)0x0;\n        bVar12 = (byte)local_58;\n        if (iVar4 != -1) {\n          bVar12 = 0;\n          plVar20 = local_40;\n        }\n        uVar17 = local_6c;\n        local_40 = plVar20;\n        bVar22 = local_6d;\n        bVar10 = (byte)local_48;\n        cVar23 = (byte)local_68;\n        goto LAB_002eab55;\n      }" { (expression_statement "local_68 = (long *)CONCAT71(local_68._1_7_,cVar23);" (assignment_expression "local_68 = (long *)CONCAT71(local_68._1_7_,cVar23)" identifier = (cast_expression "(long *)CONCAT71(local_68._1_7_,cVar23)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (call_expression "CONCAT71(local_68._1_7_,cVar23)" identifier (argument_list "(local_68._1_7_,cVar23)" ( (field_expression "local_68._1_7_" identifier . field_identifier) , identifier ))))) ;) (expression_statement "local_58 = (ctype *)CONCAT71(local_58._1_7_,bVar11);" (assignment_expression "local_58 = (ctype *)CONCAT71(local_58._1_7_,bVar11)" identifier = (cast_expression "(ctype *)CONCAT71(local_58._1_7_,bVar11)" ( (type_descriptor "ctype *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "CONCAT71(local_58._1_7_,bVar11)" identifier (argument_list "(local_58._1_7_,bVar11)" ( (field_expression "local_58._1_7_" identifier . field_identifier) , identifier ))))) ;) (expression_statement "local_48 = (long *)CONCAT71(local_48._1_7_,bVar10);" (assignment_expression "local_48 = (long *)CONCAT71(local_48._1_7_,bVar10)" identifier = (cast_expression "(long *)CONCAT71(local_48._1_7_,bVar10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (call_expression "CONCAT71(local_48._1_7_,bVar10)" identifier (argument_list "(local_48._1_7_,bVar10)" ( (field_expression "local_48._1_7_" identifier . field_identifier) , identifier ))))) ;) (expression_statement "pcVar1 = *(code **)(*local_40 + 0x48);" (assignment_expression "pcVar1 = *(code **)(*local_40 + 0x48)" identifier = (pointer_expression "*(code **)(*local_40 + 0x48)" * (cast_expression "(code **)(*local_40 + 0x48)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*local_40 + 0x48)" ( (binary_expression "*local_40 + 0x48" (pointer_expression "*local_40" * identifier) + number_literal) ))))) ;) (expression_statement "local_6d = bVar22;" (assignment_expression "local_6d = bVar22" identifier = identifier) ;) (expression_statement "local_6c = uVar17;" (assignment_expression "local_6c = uVar17" identifier = identifier) ;) (expression_statement "*(undefined8 *)(puVar15 + -8) = 0x2eaeec;" (assignment_expression "*(undefined8 *)(puVar15 + -8) = 0x2eaeec" (pointer_expression "*(undefined8 *)(puVar15 + -8)" * (cast_expression "(undefined8 *)(puVar15 + -8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar15 + -8)" ( (binary_expression "puVar15 + -8" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar4 = (*pcVar1)(plVar20);" (assignment_expression "iVar4 = (*pcVar1)(plVar20)" identifier = (call_expression "(*pcVar1)(plVar20)" (parenthesized_expression "(*pcVar1)" ( (pointer_expression "*pcVar1" * identifier) )) (argument_list "(plVar20)" ( identifier )))) ;) (expression_statement "plVar20 = (long *)0x0;" (assignment_expression "plVar20 = (long *)0x0" identifier = (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "bVar12 = (byte)local_58;" (assignment_expression "bVar12 = (byte)local_58" identifier = (cast_expression "(byte)local_58" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (if_statement "if (iVar4 != -1) {\n          bVar12 = 0;\n          plVar20 = local_40;\n        }" if (parenthesized_expression "(iVar4 != -1)" ( (binary_expression "iVar4 != -1" identifier != number_literal) )) (compound_statement "{\n          bVar12 = 0;\n          plVar20 = local_40;\n        }" { (expression_statement "bVar12 = 0;" (assignment_expression "bVar12 = 0" identifier = number_literal) ;) (expression_statement "plVar20 = local_40;" (assignment_expression "plVar20 = local_40" identifier = identifier) ;) })) (expression_statement "uVar17 = local_6c;" (assignment_expression "uVar17 = local_6c" identifier = identifier) ;) (expression_statement "local_40 = plVar20;" (assignment_expression "local_40 = plVar20" identifier = identifier) ;) (expression_statement "bVar22 = local_6d;" (assignment_expression "bVar22 = local_6d" identifier = identifier) ;) (expression_statement "bVar10 = (byte)local_48;" (assignment_expression "bVar10 = (byte)local_48" identifier = (cast_expression "(byte)local_48" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "cVar23 = (byte)local_68;" (assignment_expression "cVar23 = (byte)local_68" identifier = (cast_expression "(byte)local_68" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (goto_statement "goto LAB_002eab55;" goto statement_identifier ;) })) (if_statement "if (bVar10 == 0) break;" if (parenthesized_expression "(bVar10 == 0)" ( (binary_expression "bVar10 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) }))) (if_statement "if ((param_2 == (long *)0x0) || (cVar23 == '\0')) {\n      cVar23 = (char)uVar17;\n    }\n    else if ((char *)param_2[2] < (char *)param_2[3]) {\n      cVar23 = *(char *)param_2[2];\n    }\n    else {\n      local_58 = (ctype *)CONCAT71(local_58._1_7_,bVar22);\n      local_48 = (long *)CONCAT44(local_48._4_4_,uVar17);\n      pcVar1 = *(code **)(*param_2 + 0x48);\n      *(undefined8 *)(puVar15 + -8) = 0x2eaf38;\n      iVar4 = (*pcVar1)(param_2);\n      cVar23 = -1;\n      uVar17 = (uint)local_48;\n      bVar22 = (byte)local_58;\n      if (iVar4 == -1) {\n        param_2 = (long *)0x0;\n      }\n      else {\n        cVar23 = (char)iVar4;\n      }\n    }" if (parenthesized_expression "((param_2 == (long *)0x0) || (cVar23 == '\0'))" ( (binary_expression "(param_2 == (long *)0x0) || (cVar23 == '\0')" (parenthesized_expression "(param_2 == (long *)0x0)" ( (binary_expression "param_2 == (long *)0x0" identifier == (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(cVar23 == '\0')" ( (binary_expression "cVar23 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n      cVar23 = (char)uVar17;\n    }" { (expression_statement "cVar23 = (char)uVar17;" (assignment_expression "cVar23 = (char)uVar17" identifier = (cast_expression "(char)uVar17" ( (type_descriptor "char" primitive_type) ) identifier)) ;) }) (else_clause "else if ((char *)param_2[2] < (char *)param_2[3]) {\n      cVar23 = *(char *)param_2[2];\n    }\n    else {\n      local_58 = (ctype *)CONCAT71(local_58._1_7_,bVar22);\n      local_48 = (long *)CONCAT44(local_48._4_4_,uVar17);\n      pcVar1 = *(code **)(*param_2 + 0x48);\n      *(undefined8 *)(puVar15 + -8) = 0x2eaf38;\n      iVar4 = (*pcVar1)(param_2);\n      cVar23 = -1;\n      uVar17 = (uint)local_48;\n      bVar22 = (byte)local_58;\n      if (iVar4 == -1) {\n        param_2 = (long *)0x0;\n      }\n      else {\n        cVar23 = (char)iVar4;\n      }\n    }" else (if_statement "if ((char *)param_2[2] < (char *)param_2[3]) {\n      cVar23 = *(char *)param_2[2];\n    }\n    else {\n      local_58 = (ctype *)CONCAT71(local_58._1_7_,bVar22);\n      local_48 = (long *)CONCAT44(local_48._4_4_,uVar17);\n      pcVar1 = *(code **)(*param_2 + 0x48);\n      *(undefined8 *)(puVar15 + -8) = 0x2eaf38;\n      iVar4 = (*pcVar1)(param_2);\n      cVar23 = -1;\n      uVar17 = (uint)local_48;\n      bVar22 = (byte)local_58;\n      if (iVar4 == -1) {\n        param_2 = (long *)0x0;\n      }\n      else {\n        cVar23 = (char)iVar4;\n      }\n    }" if (parenthesized_expression "((char *)param_2[2] < (char *)param_2[3])" ( (binary_expression "(char *)param_2[2] < (char *)param_2[3]" (cast_expression "(char *)param_2[2]" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[2]" identifier [ number_literal ])) < (cast_expression "(char *)param_2[3]" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[3]" identifier [ number_literal ]))) )) (compound_statement "{\n      cVar23 = *(char *)param_2[2];\n    }" { (expression_statement "cVar23 = *(char *)param_2[2];" (assignment_expression "cVar23 = *(char *)param_2[2]" identifier = (pointer_expression "*(char *)param_2[2]" * (cast_expression "(char *)param_2[2]" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[2]" identifier [ number_literal ])))) ;) }) (else_clause "else {\n      local_58 = (ctype *)CONCAT71(local_58._1_7_,bVar22);\n      local_48 = (long *)CONCAT44(local_48._4_4_,uVar17);\n      pcVar1 = *(code **)(*param_2 + 0x48);\n      *(undefined8 *)(puVar15 + -8) = 0x2eaf38;\n      iVar4 = (*pcVar1)(param_2);\n      cVar23 = -1;\n      uVar17 = (uint)local_48;\n      bVar22 = (byte)local_58;\n      if (iVar4 == -1) {\n        param_2 = (long *)0x0;\n      }\n      else {\n        cVar23 = (char)iVar4;\n      }\n    }" else (compound_statement "{\n      local_58 = (ctype *)CONCAT71(local_58._1_7_,bVar22);\n      local_48 = (long *)CONCAT44(local_48._4_4_,uVar17);\n      pcVar1 = *(code **)(*param_2 + 0x48);\n      *(undefined8 *)(puVar15 + -8) = 0x2eaf38;\n      iVar4 = (*pcVar1)(param_2);\n      cVar23 = -1;\n      uVar17 = (uint)local_48;\n      bVar22 = (byte)local_58;\n      if (iVar4 == -1) {\n        param_2 = (long *)0x0;\n      }\n      else {\n        cVar23 = (char)iVar4;\n      }\n    }" { (expression_statement "local_58 = (ctype *)CONCAT71(local_58._1_7_,bVar22);" (assignment_expression "local_58 = (ctype *)CONCAT71(local_58._1_7_,bVar22)" identifier = (cast_expression "(ctype *)CONCAT71(local_58._1_7_,bVar22)" ( (type_descriptor "ctype *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "CONCAT71(local_58._1_7_,bVar22)" identifier (argument_list "(local_58._1_7_,bVar22)" ( (field_expression "local_58._1_7_" identifier . field_identifier) , identifier ))))) ;) (expression_statement "local_48 = (long *)CONCAT44(local_48._4_4_,uVar17);" (assignment_expression "local_48 = (long *)CONCAT44(local_48._4_4_,uVar17)" identifier = (cast_expression "(long *)CONCAT44(local_48._4_4_,uVar17)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (call_expression "CONCAT44(local_48._4_4_,uVar17)" identifier (argument_list "(local_48._4_4_,uVar17)" ( (field_expression "local_48._4_4_" identifier . field_identifier) , identifier ))))) ;) (expression_statement "pcVar1 = *(code **)(*param_2 + 0x48);" (assignment_expression "pcVar1 = *(code **)(*param_2 + 0x48)" identifier = (pointer_expression "*(code **)(*param_2 + 0x48)" * (cast_expression "(code **)(*param_2 + 0x48)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_2 + 0x48)" ( (binary_expression "*param_2 + 0x48" (pointer_expression "*param_2" * identifier) + number_literal) ))))) ;) (expression_statement "*(undefined8 *)(puVar15 + -8) = 0x2eaf38;" (assignment_expression "*(undefined8 *)(puVar15 + -8) = 0x2eaf38" (pointer_expression "*(undefined8 *)(puVar15 + -8)" * (cast_expression "(undefined8 *)(puVar15 + -8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar15 + -8)" ( (binary_expression "puVar15 + -8" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar4 = (*pcVar1)(param_2);" (assignment_expression "iVar4 = (*pcVar1)(param_2)" identifier = (call_expression "(*pcVar1)(param_2)" (parenthesized_expression "(*pcVar1)" ( (pointer_expression "*pcVar1" * identifier) )) (argument_list "(param_2)" ( identifier )))) ;) (expression_statement "cVar23 = -1;" (assignment_expression "cVar23 = -1" identifier = number_literal) ;) (expression_statement "uVar17 = (uint)local_48;" (assignment_expression "uVar17 = (uint)local_48" identifier = (cast_expression "(uint)local_48" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "bVar22 = (byte)local_58;" (assignment_expression "bVar22 = (byte)local_58" identifier = (cast_expression "(byte)local_58" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (if_statement "if (iVar4 == -1) {\n        param_2 = (long *)0x0;\n      }\n      else {\n        cVar23 = (char)iVar4;\n      }" if (parenthesized_expression "(iVar4 == -1)" ( (binary_expression "iVar4 == -1" identifier == number_literal) )) (compound_statement "{\n        param_2 = (long *)0x0;\n      }" { (expression_statement "param_2 = (long *)0x0;" (assignment_expression "param_2 = (long *)0x0" identifier = (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else {\n        cVar23 = (char)iVar4;\n      }" else (compound_statement "{\n        cVar23 = (char)iVar4;\n      }" { (expression_statement "cVar23 = (char)iVar4;" (assignment_expression "cVar23 = (char)iVar4" identifier = (cast_expression "(char)iVar4" ( (type_descriptor "char" primitive_type) ) identifier)) ;) }))) }))))) (if_statement "if (uVar14 == 0) goto LAB_002eac30;" if (parenthesized_expression "(uVar14 == 0)" ( (binary_expression "uVar14 == 0" identifier == number_literal) )) (goto_statement "goto LAB_002eac30;" goto statement_identifier ;)) (expression_statement "uVar7 = 0;" (assignment_expression "uVar7 = 0" identifier = number_literal) ;) (expression_statement "uVar16 = 0;" (assignment_expression "uVar16 = 0" identifier = number_literal) ;) (do_statement "do {\n      while (*(ulong *)(pcVar6 + uVar7 * 8) <= uVar18) {\n        uVar16 = uVar16 + 1;\nLAB_002eab88:\n        uVar7 = uVar7 + 1;\n        if (uVar14 <= uVar7) goto LAB_002eabbf;\n      }\n      if (*(char *)(*(long *)(param_7 + (long)*(int *)(pcVar21 + uVar7 * 4) * 8) + uVar18) == cVar23\n         ) goto LAB_002eab88;\n      uVar14 = uVar14 - 1;\n      *(int *)(pcVar21 + uVar7 * 4) = *(int *)(pcVar21 + uVar14 * 4);\n      *(ulong *)(pcVar6 + uVar7 * 8) = *(ulong *)(pcVar6 + uVar14 * 8);\n    } while (uVar7 < uVar14);" do (compound_statement "{\n      while (*(ulong *)(pcVar6 + uVar7 * 8) <= uVar18) {\n        uVar16 = uVar16 + 1;\nLAB_002eab88:\n        uVar7 = uVar7 + 1;\n        if (uVar14 <= uVar7) goto LAB_002eabbf;\n      }\n      if (*(char *)(*(long *)(param_7 + (long)*(int *)(pcVar21 + uVar7 * 4) * 8) + uVar18) == cVar23\n         ) goto LAB_002eab88;\n      uVar14 = uVar14 - 1;\n      *(int *)(pcVar21 + uVar7 * 4) = *(int *)(pcVar21 + uVar14 * 4);\n      *(ulong *)(pcVar6 + uVar7 * 8) = *(ulong *)(pcVar6 + uVar14 * 8);\n    }" { (while_statement "while (*(ulong *)(pcVar6 + uVar7 * 8) <= uVar18) {\n        uVar16 = uVar16 + 1;\nLAB_002eab88:\n        uVar7 = uVar7 + 1;\n        if (uVar14 <= uVar7) goto LAB_002eabbf;\n      }" while (parenthesized_expression "(*(ulong *)(pcVar6 + uVar7 * 8) <= uVar18)" ( (binary_expression "*(ulong *)(pcVar6 + uVar7 * 8) <= uVar18" (pointer_expression "*(ulong *)(pcVar6 + uVar7 * 8)" * (cast_expression "(ulong *)(pcVar6 + uVar7 * 8)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar6 + uVar7 * 8)" ( (binary_expression "pcVar6 + uVar7 * 8" identifier + (binary_expression "uVar7 * 8" identifier * number_literal)) )))) <= identifier) )) (compound_statement "{\n        uVar16 = uVar16 + 1;\nLAB_002eab88:\n        uVar7 = uVar7 + 1;\n        if (uVar14 <= uVar7) goto LAB_002eabbf;\n      }" { (expression_statement "uVar16 = uVar16 + 1;" (assignment_expression "uVar16 = uVar16 + 1" identifier = (binary_expression "uVar16 + 1" identifier + number_literal)) ;) (labeled_statement "LAB_002eab88:\n        uVar7 = uVar7 + 1;" statement_identifier : (expression_statement "uVar7 = uVar7 + 1;" (assignment_expression "uVar7 = uVar7 + 1" identifier = (binary_expression "uVar7 + 1" identifier + number_literal)) ;)) (if_statement "if (uVar14 <= uVar7) goto LAB_002eabbf;" if (parenthesized_expression "(uVar14 <= uVar7)" ( (binary_expression "uVar14 <= uVar7" identifier <= identifier) )) (goto_statement "goto LAB_002eabbf;" goto statement_identifier ;)) })) (if_statement "if (*(char *)(*(long *)(param_7 + (long)*(int *)(pcVar21 + uVar7 * 4) * 8) + uVar18) == cVar23\n         ) goto LAB_002eab88;" if (parenthesized_expression "(*(char *)(*(long *)(param_7 + (long)*(int *)(pcVar21 + uVar7 * 4) * 8) + uVar18) == cVar23\n         )" ( (binary_expression "*(char *)(*(long *)(param_7 + (long)*(int *)(pcVar21 + uVar7 * 4) * 8) + uVar18) == cVar23" (pointer_expression "*(char *)(*(long *)(param_7 + (long)*(int *)(pcVar21 + uVar7 * 4) * 8) + uVar18)" * (cast_expression "(char *)(*(long *)(param_7 + (long)*(int *)(pcVar21 + uVar7 * 4) * 8) + uVar18)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_7 + (long)*(int *)(pcVar21 + uVar7 * 4) * 8) + uVar18)" ( (binary_expression "*(long *)(param_7 + (long)*(int *)(pcVar21 + uVar7 * 4) * 8) + uVar18" (pointer_expression "*(long *)(param_7 + (long)*(int *)(pcVar21 + uVar7 * 4) * 8)" * (cast_expression "(long *)(param_7 + (long)*(int *)(pcVar21 + uVar7 * 4) * 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_7 + (long)*(int *)(pcVar21 + uVar7 * 4) * 8)" ( (binary_expression "param_7 + (long)*(int *)(pcVar21 + uVar7 * 4) * 8" identifier + (binary_expression "(long)*(int *)(pcVar21 + uVar7 * 4) * 8" (cast_expression "(long)*(int *)(pcVar21 + uVar7 * 4)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "*(int *)(pcVar21 + uVar7 * 4)" * (cast_expression "(int *)(pcVar21 + uVar7 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar21 + uVar7 * 4)" ( (binary_expression "pcVar21 + uVar7 * 4" identifier + (binary_expression "uVar7 * 4" identifier * number_literal)) ))))) * number_literal)) )))) + identifier) )))) == identifier) )) (goto_statement "goto LAB_002eab88;" goto statement_identifier ;)) (expression_statement "uVar14 = uVar14 - 1;" (assignment_expression "uVar14 = uVar14 - 1" identifier = (binary_expression "uVar14 - 1" identifier - number_literal)) ;) (expression_statement "*(int *)(pcVar21 + uVar7 * 4) = *(int *)(pcVar21 + uVar14 * 4);" (assignment_expression "*(int *)(pcVar21 + uVar7 * 4) = *(int *)(pcVar21 + uVar14 * 4)" (pointer_expression "*(int *)(pcVar21 + uVar7 * 4)" * (cast_expression "(int *)(pcVar21 + uVar7 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar21 + uVar7 * 4)" ( (binary_expression "pcVar21 + uVar7 * 4" identifier + (binary_expression "uVar7 * 4" identifier * number_literal)) )))) = (pointer_expression "*(int *)(pcVar21 + uVar14 * 4)" * (cast_expression "(int *)(pcVar21 + uVar14 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar21 + uVar14 * 4)" ( (binary_expression "pcVar21 + uVar14 * 4" identifier + (binary_expression "uVar14 * 4" identifier * number_literal)) ))))) ;) (expression_statement "*(ulong *)(pcVar6 + uVar7 * 8) = *(ulong *)(pcVar6 + uVar14 * 8);" (assignment_expression "*(ulong *)(pcVar6 + uVar7 * 8) = *(ulong *)(pcVar6 + uVar14 * 8)" (pointer_expression "*(ulong *)(pcVar6 + uVar7 * 8)" * (cast_expression "(ulong *)(pcVar6 + uVar7 * 8)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar6 + uVar7 * 8)" ( (binary_expression "pcVar6 + uVar7 * 8" identifier + (binary_expression "uVar7 * 8" identifier * number_literal)) )))) = (pointer_expression "*(ulong *)(pcVar6 + uVar14 * 8)" * (cast_expression "(ulong *)(pcVar6 + uVar14 * 8)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar6 + uVar14 * 8)" ( (binary_expression "pcVar6 + uVar14 * 8" identifier + (binary_expression "uVar14 * 8" identifier * number_literal)) ))))) ;) }) while (parenthesized_expression "(uVar7 < uVar14)" ( (binary_expression "uVar7 < uVar14" identifier < identifier) )) ;) (labeled_statement "LAB_002eabbf:\n    if (uVar16 == uVar14) break;" statement_identifier : (if_statement "if (uVar16 == uVar14) break;" if (parenthesized_expression "(uVar16 == uVar14)" ( (binary_expression "uVar16 == uVar14" identifier == identifier) )) (break_statement "break;" break ;))) (if_statement "if ((ulong)param_2[2] < (ulong)param_2[3]) {\n      param_2[2] = param_2[2] + 1;\n    }\n    else {\n      local_48 = (long *)CONCAT71(local_48._1_7_,bVar22);\n      pcVar1 = *(code **)(*param_2 + 0x50);\n      *(undefined8 *)(puVar15 + -8) = 0x2eaca1;\n      (*pcVar1)(param_2);\n      bVar22 = (byte)local_48;\n    }" if (parenthesized_expression "((ulong)param_2[2] < (ulong)param_2[3])" ( (binary_expression "(ulong)param_2[2] < (ulong)param_2[3]" (cast_expression "(ulong)param_2[2]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_2[2]" identifier [ number_literal ])) < (cast_expression "(ulong)param_2[3]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_2[3]" identifier [ number_literal ]))) )) (compound_statement "{\n      param_2[2] = param_2[2] + 1;\n    }" { (expression_statement "param_2[2] = param_2[2] + 1;" (assignment_expression "param_2[2] = param_2[2] + 1" (subscript_expression "param_2[2]" identifier [ number_literal ]) = (binary_expression "param_2[2] + 1" (subscript_expression "param_2[2]" identifier [ number_literal ]) + number_literal)) ;) }) (else_clause "else {\n      local_48 = (long *)CONCAT71(local_48._1_7_,bVar22);\n      pcVar1 = *(code **)(*param_2 + 0x50);\n      *(undefined8 *)(puVar15 + -8) = 0x2eaca1;\n      (*pcVar1)(param_2);\n      bVar22 = (byte)local_48;\n    }" else (compound_statement "{\n      local_48 = (long *)CONCAT71(local_48._1_7_,bVar22);\n      pcVar1 = *(code **)(*param_2 + 0x50);\n      *(undefined8 *)(puVar15 + -8) = 0x2eaca1;\n      (*pcVar1)(param_2);\n      bVar22 = (byte)local_48;\n    }" { (expression_statement "local_48 = (long *)CONCAT71(local_48._1_7_,bVar22);" (assignment_expression "local_48 = (long *)CONCAT71(local_48._1_7_,bVar22)" identifier = (cast_expression "(long *)CONCAT71(local_48._1_7_,bVar22)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (call_expression "CONCAT71(local_48._1_7_,bVar22)" identifier (argument_list "(local_48._1_7_,bVar22)" ( (field_expression "local_48._1_7_" identifier . field_identifier) , identifier ))))) ;) (expression_statement "pcVar1 = *(code **)(*param_2 + 0x50);" (assignment_expression "pcVar1 = *(code **)(*param_2 + 0x50)" identifier = (pointer_expression "*(code **)(*param_2 + 0x50)" * (cast_expression "(code **)(*param_2 + 0x50)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_2 + 0x50)" ( (binary_expression "*param_2 + 0x50" (pointer_expression "*param_2" * identifier) + number_literal) ))))) ;) (expression_statement "*(undefined8 *)(puVar15 + -8) = 0x2eaca1;" (assignment_expression "*(undefined8 *)(puVar15 + -8) = 0x2eaca1" (pointer_expression "*(undefined8 *)(puVar15 + -8)" * (cast_expression "(undefined8 *)(puVar15 + -8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar15 + -8)" ( (binary_expression "puVar15 + -8" identifier + number_literal) )))) = number_literal) ;) (expression_statement "(*pcVar1)(param_2);" (call_expression "(*pcVar1)(param_2)" (parenthesized_expression "(*pcVar1)" ( (pointer_expression "*pcVar1" * identifier) )) (argument_list "(param_2)" ( identifier ))) ;) (expression_statement "bVar22 = (byte)local_48;" (assignment_expression "bVar22 = (byte)local_48" identifier = (cast_expression "(byte)local_48" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) }))) (expression_statement "uVar18 = uVar18 + 1;" (assignment_expression "uVar18 = uVar18 + 1" identifier = (binary_expression "uVar18 + 1" identifier + number_literal)) ;) (expression_statement "uVar17 = 0xffffffff;" (assignment_expression "uVar17 = 0xffffffff" identifier = number_literal) ;) }) while (parenthesized_expression "( true )" ( true )) ;) (if_statement "if (uVar14 == 1) {\n    uVar14 = *(ulong *)pcVar6;\njoined_r0x002eacc3:\n    if (uVar14 == uVar18) {\nLAB_002eacc9:\n      iVar4 = *(int *)pcVar21;\n      if (param_8 <= (ulong)(long)iVar4) {\n        iVar4 = iVar4 - (int)param_8;\n      }\n      *local_60 = iVar4;\n      goto LAB_002eac37;\n    }\n  }\n  else if (uVar14 == 2) {\n    if (*(ulong *)pcVar6 != uVar18) {\n      uVar14 = *(ulong *)(pcVar6 + 8);\n      goto joined_r0x002eacc3;\n    }\n    goto LAB_002eacc9;\n  }" if (parenthesized_expression "(uVar14 == 1)" ( (binary_expression "uVar14 == 1" identifier == number_literal) )) (compound_statement "{\n    uVar14 = *(ulong *)pcVar6;\njoined_r0x002eacc3:\n    if (uVar14 == uVar18) {\nLAB_002eacc9:\n      iVar4 = *(int *)pcVar21;\n      if (param_8 <= (ulong)(long)iVar4) {\n        iVar4 = iVar4 - (int)param_8;\n      }\n      *local_60 = iVar4;\n      goto LAB_002eac37;\n    }\n  }" { (expression_statement "uVar14 = *(ulong *)pcVar6;" (assignment_expression "uVar14 = *(ulong *)pcVar6" identifier = (pointer_expression "*(ulong *)pcVar6" * (cast_expression "(ulong *)pcVar6" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (labeled_statement "joined_r0x002eacc3:\n    if (uVar14 == uVar18) {\nLAB_002eacc9:\n      iVar4 = *(int *)pcVar21;\n      if (param_8 <= (ulong)(long)iVar4) {\n        iVar4 = iVar4 - (int)param_8;\n      }\n      *local_60 = iVar4;\n      goto LAB_002eac37;\n    }" statement_identifier : (if_statement "if (uVar14 == uVar18) {\nLAB_002eacc9:\n      iVar4 = *(int *)pcVar21;\n      if (param_8 <= (ulong)(long)iVar4) {\n        iVar4 = iVar4 - (int)param_8;\n      }\n      *local_60 = iVar4;\n      goto LAB_002eac37;\n    }" if (parenthesized_expression "(uVar14 == uVar18)" ( (binary_expression "uVar14 == uVar18" identifier == identifier) )) (compound_statement "{\nLAB_002eacc9:\n      iVar4 = *(int *)pcVar21;\n      if (param_8 <= (ulong)(long)iVar4) {\n        iVar4 = iVar4 - (int)param_8;\n      }\n      *local_60 = iVar4;\n      goto LAB_002eac37;\n    }" { (labeled_statement "LAB_002eacc9:\n      iVar4 = *(int *)pcVar21;" statement_identifier : (expression_statement "iVar4 = *(int *)pcVar21;" (assignment_expression "iVar4 = *(int *)pcVar21" identifier = (pointer_expression "*(int *)pcVar21" * (cast_expression "(int *)pcVar21" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;)) (if_statement "if (param_8 <= (ulong)(long)iVar4) {\n        iVar4 = iVar4 - (int)param_8;\n      }" if (parenthesized_expression "(param_8 <= (ulong)(long)iVar4)" ( (binary_expression "param_8 <= (ulong)(long)iVar4" identifier <= (cast_expression "(ulong)(long)iVar4" ( (type_descriptor "ulong" type_identifier) ) (cast_expression "(long)iVar4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier))) )) (compound_statement "{\n        iVar4 = iVar4 - (int)param_8;\n      }" { (expression_statement "iVar4 = iVar4 - (int)param_8;" (assignment_expression "iVar4 = iVar4 - (int)param_8" identifier = (binary_expression "iVar4 - (int)param_8" identifier - (cast_expression "(int)param_8" ( (type_descriptor "int" primitive_type) ) identifier))) ;) })) (expression_statement "*local_60 = iVar4;" (assignment_expression "*local_60 = iVar4" (pointer_expression "*local_60" * identifier) = identifier) ;) (goto_statement "goto LAB_002eac37;" goto statement_identifier ;) }))) }) (else_clause "else if (uVar14 == 2) {\n    if (*(ulong *)pcVar6 != uVar18) {\n      uVar14 = *(ulong *)(pcVar6 + 8);\n      goto joined_r0x002eacc3;\n    }\n    goto LAB_002eacc9;\n  }" else (if_statement "if (uVar14 == 2) {\n    if (*(ulong *)pcVar6 != uVar18) {\n      uVar14 = *(ulong *)(pcVar6 + 8);\n      goto joined_r0x002eacc3;\n    }\n    goto LAB_002eacc9;\n  }" if (parenthesized_expression "(uVar14 == 2)" ( (binary_expression "uVar14 == 2" identifier == number_literal) )) (compound_statement "{\n    if (*(ulong *)pcVar6 != uVar18) {\n      uVar14 = *(ulong *)(pcVar6 + 8);\n      goto joined_r0x002eacc3;\n    }\n    goto LAB_002eacc9;\n  }" { (if_statement "if (*(ulong *)pcVar6 != uVar18) {\n      uVar14 = *(ulong *)(pcVar6 + 8);\n      goto joined_r0x002eacc3;\n    }" if (parenthesized_expression "(*(ulong *)pcVar6 != uVar18)" ( (binary_expression "*(ulong *)pcVar6 != uVar18" (pointer_expression "*(ulong *)pcVar6" * (cast_expression "(ulong *)pcVar6" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) != identifier) )) (compound_statement "{\n      uVar14 = *(ulong *)(pcVar6 + 8);\n      goto joined_r0x002eacc3;\n    }" { (expression_statement "uVar14 = *(ulong *)(pcVar6 + 8);" (assignment_expression "uVar14 = *(ulong *)(pcVar6 + 8)" identifier = (pointer_expression "*(ulong *)(pcVar6 + 8)" * (cast_expression "(ulong *)(pcVar6 + 8)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar6 + 8)" ( (binary_expression "pcVar6 + 8" identifier + number_literal) ))))) ;) (goto_statement "goto joined_r0x002eacc3;" goto statement_identifier ;) })) (goto_statement "goto LAB_002eacc9;" goto statement_identifier ;) })))) (labeled_statement "LAB_002eac30:\n  *param_10 = *param_10 | 4;" statement_identifier : (expression_statement "*param_10 = *param_10 | 4;" (assignment_expression "*param_10 = *param_10 | 4" (pointer_expression "*param_10" * identifier) = (binary_expression "*param_10 | 4" (pointer_expression "*param_10" * identifier) | number_literal)) ;)) (labeled_statement "LAB_002eac37:\n  auVar24._8_8_ = (ulong)uVar17 | local_50 & 0xffffffff00000000;" statement_identifier : (expression_statement "auVar24._8_8_ = (ulong)uVar17 | local_50 & 0xffffffff00000000;" (assignment_expression "auVar24._8_8_ = (ulong)uVar17 | local_50 & 0xffffffff00000000" (field_expression "auVar24._8_8_" identifier . field_identifier) = (binary_expression "(ulong)uVar17 | local_50 & 0xffffffff00000000" (cast_expression "(ulong)uVar17" ( (type_descriptor "ulong" type_identifier) ) identifier) | (binary_expression "local_50 & 0xffffffff00000000" identifier & number_literal))) ;)) (expression_statement "auVar24._0_8_ = param_2;" (assignment_expression "auVar24._0_8_ = param_2" (field_expression "auVar24._0_8_" identifier . field_identifier) = identifier) ;) (return_statement "return auVar24;" return identifier ;) }))
(translation_unit "undefined1  [16]\nFUN_002eaa80(undefined8 param_1,long *param_2,ulong param_3,long *param_4,int param_5,int *param_6,\n            long param_7,ulong param_8,long param_9,uint *param_10)\n\n{\n  int *piVar1;\n  code *pcVar2;\n  char *__s;\n  long lVar3;\n  long lVar4;\n  int iVar5;\n  uint uVar6;\n  ulong *puVar7;\n  ulong uVar8;\n  size_t sVar9;\n  bool bVar10;\n  byte bVar11;\n  byte bVar12;\n  byte bVar13;\n  bool bVar14;\n  ulong uVar15;\n  undefined1 *puVar16;\n  ulong uVar17;\n  uint uVar18;\n  ulong uVar19;\n  bool bVar20;\n  long *plVar21;\n  ulong *puVar22;\n  byte bVar23;\n  char cVar24;\n  undefined1 auVar25 [16];\n  undefined8 uStack_80;\n  undefined1 auStack_78 [8];\n  undefined8 uStack_70;\n  long *local_68;\n  int *local_60;\n  ulong *local_58;\n  ulong local_50;\n  long *local_48;\n  long *local_40;\n  \n  iVar5 = (int)param_3;\n  local_48 = (long *)CONCAT44(local_48._4_4_,iVar5);\n  uStack_80 = 0x2eaabc;\n  local_60 = param_6;\n  local_50 = param_3;\n  local_40 = param_4;\n  puVar7 = (ulong *)FUN_00288720(param_9 + 0xd0);\n  lVar3 = -(param_8 * 8 + 0x17 & 0xfffffffffffffff0);\n  puVar16 = auStack_78 + lVar3;\n  puVar22 = (ulong *)((long)&uStack_70 + lVar3);\n  bVar20 = param_2 != (long *)0x0 && iVar5 == -1;\n  cVar24 = iVar5 == -1;\n  bVar10 = bVar20;\n  if ((bVar20) && (cVar24 = '\0', (ulong)param_2[3] <= (ulong)param_2[2])) {\n    local_68 = (long *)((ulong)local_68 & 0xffffffffffffff00);\n    pcVar2 = *(code **)(*param_2 + 0x48);\n    local_58 = puVar7;\n    *(undefined8 *)(auStack_78 + lVar3 + -8) = 0x2eae52;\n    iVar5 = (*pcVar2)(param_2);\n    puVar7 = local_58;\n    cVar24 = (byte)local_68;\n    if (iVar5 == -1) {\n      param_2 = (long *)0x0;\n      bVar10 = false;\n      cVar24 = bVar20;\n    }\n  }\n  bVar23 = param_5 == -1;\n  bVar14 = param_4 != (long *)0x0 && (bool)bVar23;\n  uVar18 = (uint)local_48;\n  bVar20 = (bool)bVar23;\n  if (bVar14) {\n    if ((ulong)param_4[2] < (ulong)param_4[3]) {\n      bVar20 = false;\n    }\n    else {\n      uStack_70._4_4_ = CONCAT31(uStack_70._5_3_,bVar23);\n      local_68 = (long *)CONCAT71(local_68._1_7_,cVar24);\n      pcVar2 = *(code **)(*param_4 + 0x48);\n      local_58 = puVar7;\n      *(undefined8 *)(auStack_78 + lVar3 + -8) = 0x2eaf99;\n      iVar5 = (*pcVar2)(param_4);\n      local_40 = (long *)0x0;\n      if (iVar5 != -1) {\n        local_40 = param_4;\n      }\n      puVar7 = local_58;\n      uVar18 = (uint)local_48;\n      cVar24 = (byte)local_68;\n      bVar23 = uStack_70._4_1_;\n      bVar20 = iVar5 == -1 && bVar14;\n    }\n  }\n  if ((bool)cVar24 == bVar20) {\n    uVar19 = 0;\n    uVar15 = 0;\n    puVar16 = auStack_78 + lVar3;\n    puVar7 = (ulong *)0x0;\n  }\n  else {\n    uVar6 = uVar18;\n    if (bVar10) {\n      if ((byte *)param_2[2] < (byte *)param_2[3]) {\n        uVar6 = (uint)*(byte *)param_2[2];\n      }\n      else {\n        local_68 = (long *)CONCAT71(local_68._1_7_,bVar23);\n        local_48 = (long *)CONCAT44(local_48._4_4_,uVar18);\n        pcVar2 = *(code **)(*param_2 + 0x48);\n        local_58 = puVar7;\n        *(undefined8 *)(auStack_78 + lVar3 + -8) = 0x2eafe4;\n        uVar6 = (*pcVar2)(param_2);\n        puVar7 = local_58;\n        uVar18 = (uint)local_48;\n        bVar23 = (byte)local_68;\n        if (uVar6 == 0xffffffff) {\n          param_2 = (long *)0x0;\n          uVar6 = 0xffffffff;\n        }\n      }\n    }\n    if ((long *)(param_8 * 2) == (long *)0x0) {\n      uVar15 = 0;\n      puVar7 = (ulong *)0x0;\n      uVar19 = 0;\n    }\n    else {\n      uVar15 = 0;\n      plVar21 = (long *)0x0;\n      uStack_70._3_1_ = bVar23;\n      uStack_70._4_4_ = uVar18;\n      local_68 = param_2;\n      local_58 = puVar22;\n      local_48 = (long *)(param_8 * 2);\n      do {\n        while (**(char **)(param_7 + (long)plVar21 * 8) == (char)uVar6) {\nLAB_002ead54:\n          *(int *)((long)local_58 + uVar15 * 4) = (int)plVar21;\n          uVar15 = uVar15 + 1;\n          plVar21 = (long *)((long)plVar21 + 1);\n          if (local_48 == plVar21) goto LAB_002ead6a;\n        }\n        pcVar2 = *(code **)(*puVar7 + 0x10);\n        *(undefined8 *)(auStack_78 + lVar3 + -8) = 0x2ead39;\n        cVar24 = (*pcVar2)(puVar7);\n        if (cVar24 == (char)uVar6) goto LAB_002ead54;\n        plVar21 = (long *)((long)plVar21 + 1);\n      } while (local_48 != plVar21);\nLAB_002ead6a:\n      puVar22 = local_58;\n      plVar21 = local_68;\n      uVar19 = 0;\n      puVar16 = auStack_78 + lVar3;\n      puVar7 = (ulong *)0x0;\n      param_2 = local_68;\n      uVar18 = uStack_70._4_4_;\n      bVar23 = uStack_70._3_1_;\n      if (uVar15 != 0) {\n        if ((ulong)local_68[2] < (ulong)local_68[3]) {\n          local_68[2] = local_68[2] + 1;\n          local_48._0_1_ = uStack_70._3_1_;\n        }\n        else {\n          local_48 = (long *)CONCAT71(local_48._1_7_,uStack_70._3_1_);\n          pcVar2 = *(code **)(*local_68 + 0x50);\n          *(undefined8 *)(auStack_78 + lVar3 + -8) = 0x2eb01f;\n          (*pcVar2)(plVar21);\n        }\n        local_68 = (long *)CONCAT71(local_68._1_7_,(byte)local_48);\n        local_48 = plVar21;\n        lVar4 = -(uVar15 * 8 + 0x17 & 0xfffffffffffffff0);\n        puVar16 = auStack_78 + lVar4 + lVar3;\n        uVar19 = 0;\n        puVar7 = (ulong *)((long)&uStack_70 + lVar4 + lVar3);\n        local_58 = puVar7;\n        do {\n          __s = *(char **)(param_7 + (long)*(int *)((long)puVar22 + uVar19 * 4) * 8);\n          *(undefined8 *)(auStack_78 + lVar4 + lVar3 + -8) = 0x2eaded;\n          sVar9 = strlen(__s);\n          puVar7[uVar19] = sVar9;\n          uVar19 = uVar19 + 1;\n        } while (uVar15 != uVar19);\n        uVar18 = 0xffffffff;\n        uVar19 = 1;\n        puVar7 = local_58;\n        param_2 = local_48;\n        bVar23 = (byte)local_68;\n      }\n    }\n  }\n  do {\n    cVar24 = uVar18 == 0xffffffff;\n    bVar10 = param_2 != (long *)0x0 && (bool)cVar24;\n    bVar11 = cVar24;\n    if (bVar10) {\n      if ((ulong)param_2[2] < (ulong)param_2[3]) {\n        bVar11 = 0;\n      }\n      else {\n        uStack_70._4_4_ = CONCAT31(uStack_70._5_3_,bVar23);\n        local_68 = (long *)CONCAT44(local_68._4_4_,uVar18);\n        local_58 = (ulong *)CONCAT71(local_58._1_7_,cVar24);\n        local_48 = (long *)CONCAT71(local_48._1_7_,bVar10);\n        pcVar2 = *(code **)(*param_2 + 0x48);\n        *(undefined8 *)(puVar16 + -8) = 0x2eae9c;\n        iVar5 = (*pcVar2)(param_2);\n        if (iVar5 == -1) {\n          param_2 = (long *)0x0;\n          bVar11 = (byte)local_48;\n        }\n        else {\n          bVar11 = 0;\n        }\n        uVar18 = (uint)local_68;\n        bVar23 = uStack_70._4_1_;\n        cVar24 = (byte)local_58;\n      }\n    }\n    plVar21 = local_40;\n    bVar12 = local_40 != (long *)0x0 & bVar23;\n    bVar13 = bVar23;\n    if (bVar12 == 0) {\nLAB_002eab55:\n      if (bVar11 == bVar13) break;\n    }\n    else {\n      if ((ulong)local_40[3] <= (ulong)local_40[2]) {\n        local_68 = (long *)CONCAT71(local_68._1_7_,cVar24);\n        local_58 = (ulong *)CONCAT71(local_58._1_7_,bVar12);\n        local_48 = (long *)CONCAT71(local_48._1_7_,bVar11);\n        pcVar2 = *(code **)(*local_40 + 0x48);\n        uStack_70._3_1_ = bVar23;\n        uStack_70._4_4_ = uVar18;\n        *(undefined8 *)(puVar16 + -8) = 0x2eaeec;\n        iVar5 = (*pcVar2)(plVar21);\n        plVar21 = (long *)0x0;\n        bVar13 = (byte)local_58;\n        if (iVar5 != -1) {\n          bVar13 = 0;\n          plVar21 = local_40;\n        }\n        uVar18 = uStack_70._4_4_;\n        local_40 = plVar21;\n        bVar23 = uStack_70._3_1_;\n        bVar11 = (byte)local_48;\n        cVar24 = (byte)local_68;\n        goto LAB_002eab55;\n      }\n      if (bVar11 == 0) break;\n    }\n    if ((param_2 == (long *)0x0) || (cVar24 == '\0')) {\n      cVar24 = (char)uVar18;\n    }\n    else if ((char *)param_2[2] < (char *)param_2[3]) {\n      cVar24 = *(char *)param_2[2];\n    }\n    else {\n      local_58 = (ulong *)CONCAT71(local_58._1_7_,bVar23);\n      local_48 = (long *)CONCAT44(local_48._4_4_,uVar18);\n      pcVar2 = *(code **)(*param_2 + 0x48);\n      *(undefined8 *)(puVar16 + -8) = 0x2eaf38;\n      iVar5 = (*pcVar2)(param_2);\n      cVar24 = -1;\n      uVar18 = (uint)local_48;\n      bVar23 = (byte)local_58;\n      if (iVar5 == -1) {\n        param_2 = (long *)0x0;\n      }\n      else {\n        cVar24 = (char)iVar5;\n      }\n    }\n    if (uVar15 == 0) goto LAB_002eac30;\n    uVar8 = 0;\n    uVar17 = 0;\n    do {\n      while (puVar7[uVar8] <= uVar19) {\n        uVar17 = uVar17 + 1;\nLAB_002eab88:\n        uVar8 = uVar8 + 1;\n        if (uVar15 <= uVar8) goto LAB_002eabbf;\n      }\n      piVar1 = (int *)((long)puVar22 + uVar8 * 4);\n      if (*(char *)(*(long *)(param_7 + (long)*piVar1 * 8) + uVar19) == cVar24) goto LAB_002eab88;\n      uVar15 = uVar15 - 1;\n      *piVar1 = *(int *)((long)puVar22 + uVar15 * 4);\n      puVar7[uVar8] = puVar7[uVar15];\n    } while (uVar8 < uVar15);\nLAB_002eabbf:\n    if (uVar17 == uVar15) break;\n    if ((ulong)param_2[2] < (ulong)param_2[3]) {\n      param_2[2] = param_2[2] + 1;\n    }\n    else {\n      local_48 = (long *)CONCAT71(local_48._1_7_,bVar23);\n      pcVar2 = *(code **)(*param_2 + 0x50);\n      *(undefined8 *)(puVar16 + -8) = 0x2eaca1;\n      (*pcVar2)(param_2);\n      bVar23 = (byte)local_48;\n    }\n    uVar19 = uVar19 + 1;\n    uVar18 = 0xffffffff;\n  } while( true );\n  if (uVar15 == 1) {\n    uVar15 = *puVar7;\njoined_r0x002eacc3:\n    if (uVar15 == uVar19) {\nLAB_002eacc9:\n      iVar5 = (int)*puVar22;\n      if (param_8 <= (ulong)(long)iVar5) {\n        iVar5 = iVar5 - (int)param_8;\n      }\n      *local_60 = iVar5;\n      goto LAB_002eac37;\n    }\n  }\n  else if (uVar15 == 2) {\n    if (*puVar7 != uVar19) {\n      uVar15 = puVar7[1];\n      goto joined_r0x002eacc3;\n    }\n    goto LAB_002eacc9;\n  }\nLAB_002eac30:\n  *param_10 = *param_10 | 4;\nLAB_002eac37:\n  auVar25._8_8_ = (ulong)uVar18 | local_50 & 0xffffffff00000000;\n  auVar25._0_8_ = param_2;\n  return auVar25;\n}\n\n" (expression_statement "undefined1  [16]" (subscript_expression "undefined1  [16]" identifier [ number_literal ]) ;) (declaration "FUN_002eaa80(undefined8 param_1,long *param_2,ulong param_3,long *param_4,int param_5,int *param_6,\n            long param_7,ulong param_8,long param_9,uint *param_10)\n\n{\n  int *piVar1;" (macro_type_specifier "FUN_002eaa80(undefined8" identifier ( (type_descriptor "undefined8" type_identifier) )) identifier , (ERROR "long" identifier) (pointer_declarator "*param_2" * identifier) , (ERROR "ulong" identifier) identifier , (ERROR "long" identifier) (pointer_declarator "*param_4" * identifier) , (ERROR "int" identifier) identifier , (ERROR "int" identifier) (pointer_declarator "*param_6" * identifier) , (ERROR "long" identifier) identifier , (ERROR "ulong" identifier) identifier , (ERROR "long" identifier) identifier , (ERROR "uint *param_10)\n\n{\n  int" identifier (pointer_declarator "*param_10" * identifier) ) { primitive_type) (pointer_declarator "*piVar1" * identifier) ;) (declaration "code *pcVar2;" type_identifier (pointer_declarator "*pcVar2" * identifier) ;) (declaration "char *__s;" primitive_type (pointer_declarator "*__s" * identifier) ;) (declaration "long lVar3;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar4;" (sized_type_specifier "long" long) identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "ulong *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "ulong uVar8;" type_identifier identifier ;) (declaration "size_t sVar9;" primitive_type identifier ;) (declaration "bool bVar10;" primitive_type identifier ;) (declaration "byte bVar11;" type_identifier identifier ;) (declaration "byte bVar12;" type_identifier identifier ;) (declaration "byte bVar13;" type_identifier identifier ;) (declaration "bool bVar14;" primitive_type identifier ;) (declaration "ulong uVar15;" type_identifier identifier ;) (declaration "undefined1 *puVar16;" type_identifier (pointer_declarator "*puVar16" * identifier) ;) (declaration "ulong uVar17;" type_identifier identifier ;) (declaration "uint uVar18;" type_identifier identifier ;) (declaration "ulong uVar19;" type_identifier identifier ;) (declaration "bool bVar20;" primitive_type identifier ;) (declaration "long *plVar21;" (sized_type_specifier "long" long) (pointer_declarator "*plVar21" * identifier) ;) (declaration "ulong *puVar22;" type_identifier (pointer_declarator "*puVar22" * identifier) ;) (declaration "byte bVar23;" type_identifier identifier ;) (declaration "char cVar24;" primitive_type identifier ;) (declaration "undefined1 auVar25 [16];" type_identifier (array_declarator "auVar25 [16]" identifier [ number_literal ]) ;) (declaration "undefined8 uStack_80;" type_identifier identifier ;) (declaration "undefined1 auStack_78 [8];" type_identifier (array_declarator "auStack_78 [8]" identifier [ number_literal ]) ;) (declaration "undefined8 uStack_70;" type_identifier identifier ;) (declaration "long *local_68;" (sized_type_specifier "long" long) (pointer_declarator "*local_68" * identifier) ;) (declaration "int *local_60;" primitive_type (pointer_declarator "*local_60" * identifier) ;) (declaration "ulong *local_58;" type_identifier (pointer_declarator "*local_58" * identifier) ;) (declaration "ulong local_50;" type_identifier identifier ;) (declaration "long *local_48;" (sized_type_specifier "long" long) (pointer_declarator "*local_48" * identifier) ;) (declaration "long *local_40;" (sized_type_specifier "long" long) (pointer_declarator "*local_40" * identifier) ;) (expression_statement "iVar5 = (int)param_3;" (assignment_expression "iVar5 = (int)param_3" identifier = (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "local_48 = (long *)CONCAT44(local_48._4_4_,iVar5);" (assignment_expression "local_48 = (long *)CONCAT44(local_48._4_4_,iVar5)" identifier = (cast_expression "(long *)CONCAT44(local_48._4_4_,iVar5)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (call_expression "CONCAT44(local_48._4_4_,iVar5)" identifier (argument_list "(local_48._4_4_,iVar5)" ( (field_expression "local_48._4_4_" identifier . field_identifier) , identifier ))))) ;) (expression_statement "uStack_80 = 0x2eaabc;" (assignment_expression "uStack_80 = 0x2eaabc" identifier = number_literal) ;) (expression_statement "local_60 = param_6;" (assignment_expression "local_60 = param_6" identifier = identifier) ;) (expression_statement "local_50 = param_3;" (assignment_expression "local_50 = param_3" identifier = identifier) ;) (expression_statement "local_40 = param_4;" (assignment_expression "local_40 = param_4" identifier = identifier) ;) (expression_statement "puVar7 = (ulong *)FUN_00288720(param_9 + 0xd0);" (assignment_expression "puVar7 = (ulong *)FUN_00288720(param_9 + 0xd0)" identifier = (cast_expression "(ulong *)FUN_00288720(param_9 + 0xd0)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00288720(param_9 + 0xd0)" identifier (argument_list "(param_9 + 0xd0)" ( (binary_expression "param_9 + 0xd0" identifier + number_literal) ))))) ;) (expression_statement "lVar3 = -(param_8 * 8 + 0x17 & 0xfffffffffffffff0);" (assignment_expression "lVar3 = -(param_8 * 8 + 0x17 & 0xfffffffffffffff0)" identifier = (unary_expression "-(param_8 * 8 + 0x17 & 0xfffffffffffffff0)" - (parenthesized_expression "(param_8 * 8 + 0x17 & 0xfffffffffffffff0)" ( (binary_expression "param_8 * 8 + 0x17 & 0xfffffffffffffff0" (binary_expression "param_8 * 8 + 0x17" (binary_expression "param_8 * 8" identifier * number_literal) + number_literal) & number_literal) )))) ;) (expression_statement "puVar16 = auStack_78 + lVar3;" (assignment_expression "puVar16 = auStack_78 + lVar3" identifier = (binary_expression "auStack_78 + lVar3" identifier + identifier)) ;) (expression_statement "puVar22 = (ulong *)((long)&uStack_70 + lVar3);" (assignment_expression "puVar22 = (ulong *)((long)&uStack_70 + lVar3)" identifier = (cast_expression "(ulong *)((long)&uStack_70 + lVar3)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)&uStack_70 + lVar3)" ( (binary_expression "(long)&uStack_70 + lVar3" (cast_expression "(long)&uStack_70" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "&uStack_70" & identifier)) + identifier) )))) ;) (expression_statement "bVar20 = param_2 != (long *)0x0 && iVar5 == -1;" (assignment_expression "bVar20 = param_2 != (long *)0x0 && iVar5 == -1" identifier = (binary_expression "param_2 != (long *)0x0 && iVar5 == -1" (binary_expression "param_2 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) && (binary_expression "iVar5 == -1" identifier == number_literal))) ;) (expression_statement "cVar24 = iVar5 == -1;" (assignment_expression "cVar24 = iVar5 == -1" identifier = (binary_expression "iVar5 == -1" identifier == number_literal)) ;) (expression_statement "bVar10 = bVar20;" (assignment_expression "bVar10 = bVar20" identifier = identifier) ;) (if_statement "if ((bVar20) && (cVar24 = '\0', (ulong)param_2[3] <= (ulong)param_2[2])) {\n    local_68 = (long *)((ulong)local_68 & 0xffffffffffffff00);\n    pcVar2 = *(code **)(*param_2 + 0x48);\n    local_58 = puVar7;\n    *(undefined8 *)(auStack_78 + lVar3 + -8) = 0x2eae52;\n    iVar5 = (*pcVar2)(param_2);\n    puVar7 = local_58;\n    cVar24 = (byte)local_68;\n    if (iVar5 == -1) {\n      param_2 = (long *)0x0;\n      bVar10 = false;\n      cVar24 = bVar20;\n    }\n  }" if (parenthesized_expression "((bVar20) && (cVar24 = '\0', (ulong)param_2[3] <= (ulong)param_2[2]))" ( (binary_expression "(bVar20) && (cVar24 = '\0', (ulong)param_2[3] <= (ulong)param_2[2])" (parenthesized_expression "(bVar20)" ( identifier )) && (parenthesized_expression "(cVar24 = '\0', (ulong)param_2[3] <= (ulong)param_2[2])" ( (comma_expression "cVar24 = '\0', (ulong)param_2[3] <= (ulong)param_2[2]" (assignment_expression "cVar24 = '\0'" identifier = (char_literal "'\0'" ' escape_sequence ')) , (binary_expression "(ulong)param_2[3] <= (ulong)param_2[2]" (cast_expression "(ulong)param_2[3]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_2[3]" identifier [ number_literal ])) <= (cast_expression "(ulong)param_2[2]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_2[2]" identifier [ number_literal ])))) ))) )) (compound_statement "{\n    local_68 = (long *)((ulong)local_68 & 0xffffffffffffff00);\n    pcVar2 = *(code **)(*param_2 + 0x48);\n    local_58 = puVar7;\n    *(undefined8 *)(auStack_78 + lVar3 + -8) = 0x2eae52;\n    iVar5 = (*pcVar2)(param_2);\n    puVar7 = local_58;\n    cVar24 = (byte)local_68;\n    if (iVar5 == -1) {\n      param_2 = (long *)0x0;\n      bVar10 = false;\n      cVar24 = bVar20;\n    }\n  }" { (expression_statement "local_68 = (long *)((ulong)local_68 & 0xffffffffffffff00);" (assignment_expression "local_68 = (long *)((ulong)local_68 & 0xffffffffffffff00)" identifier = (cast_expression "(long *)((ulong)local_68 & 0xffffffffffffff00)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((ulong)local_68 & 0xffffffffffffff00)" ( (binary_expression "(ulong)local_68 & 0xffffffffffffff00" (cast_expression "(ulong)local_68" ( (type_descriptor "ulong" type_identifier) ) identifier) & number_literal) )))) ;) (expression_statement "pcVar2 = *(code **)(*param_2 + 0x48);" (assignment_expression "pcVar2 = *(code **)(*param_2 + 0x48)" identifier = (pointer_expression "*(code **)(*param_2 + 0x48)" * (cast_expression "(code **)(*param_2 + 0x48)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_2 + 0x48)" ( (binary_expression "*param_2 + 0x48" (pointer_expression "*param_2" * identifier) + number_literal) ))))) ;) (expression_statement "local_58 = puVar7;" (assignment_expression "local_58 = puVar7" identifier = identifier) ;) (expression_statement "*(undefined8 *)(auStack_78 + lVar3 + -8) = 0x2eae52;" (assignment_expression "*(undefined8 *)(auStack_78 + lVar3 + -8) = 0x2eae52" (pointer_expression "*(undefined8 *)(auStack_78 + lVar3 + -8)" * (cast_expression "(undefined8 *)(auStack_78 + lVar3 + -8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(auStack_78 + lVar3 + -8)" ( (binary_expression "auStack_78 + lVar3 + -8" (binary_expression "auStack_78 + lVar3" identifier + identifier) + number_literal) )))) = number_literal) ;) (expression_statement "iVar5 = (*pcVar2)(param_2);" (assignment_expression "iVar5 = (*pcVar2)(param_2)" identifier = (call_expression "(*pcVar2)(param_2)" (parenthesized_expression "(*pcVar2)" ( (pointer_expression "*pcVar2" * identifier) )) (argument_list "(param_2)" ( identifier )))) ;) (expression_statement "puVar7 = local_58;" (assignment_expression "puVar7 = local_58" identifier = identifier) ;) (expression_statement "cVar24 = (byte)local_68;" (assignment_expression "cVar24 = (byte)local_68" identifier = (cast_expression "(byte)local_68" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (if_statement "if (iVar5 == -1) {\n      param_2 = (long *)0x0;\n      bVar10 = false;\n      cVar24 = bVar20;\n    }" if (parenthesized_expression "(iVar5 == -1)" ( (binary_expression "iVar5 == -1" identifier == number_literal) )) (compound_statement "{\n      param_2 = (long *)0x0;\n      bVar10 = false;\n      cVar24 = bVar20;\n    }" { (expression_statement "param_2 = (long *)0x0;" (assignment_expression "param_2 = (long *)0x0" identifier = (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "bVar10 = false;" (assignment_expression "bVar10 = false" identifier = false) ;) (expression_statement "cVar24 = bVar20;" (assignment_expression "cVar24 = bVar20" identifier = identifier) ;) })) })) (expression_statement "bVar23 = param_5 == -1;" (assignment_expression "bVar23 = param_5 == -1" identifier = (binary_expression "param_5 == -1" identifier == number_literal)) ;) (expression_statement "bVar14 = param_4 != (long *)0x0 && (bool)bVar23;" (assignment_expression "bVar14 = param_4 != (long *)0x0 && (bool)bVar23" identifier = (binary_expression "param_4 != (long *)0x0 && (bool)bVar23" (binary_expression "param_4 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) && (cast_expression "(bool)bVar23" ( (type_descriptor "bool" primitive_type) ) identifier))) ;) (expression_statement "uVar18 = (uint)local_48;" (assignment_expression "uVar18 = (uint)local_48" identifier = (cast_expression "(uint)local_48" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "bVar20 = (bool)bVar23;" (assignment_expression "bVar20 = (bool)bVar23" identifier = (cast_expression "(bool)bVar23" ( (type_descriptor "bool" primitive_type) ) identifier)) ;) (if_statement "if (bVar14) {\n    if ((ulong)param_4[2] < (ulong)param_4[3]) {\n      bVar20 = false;\n    }\n    else {\n      uStack_70._4_4_ = CONCAT31(uStack_70._5_3_,bVar23);\n      local_68 = (long *)CONCAT71(local_68._1_7_,cVar24);\n      pcVar2 = *(code **)(*param_4 + 0x48);\n      local_58 = puVar7;\n      *(undefined8 *)(auStack_78 + lVar3 + -8) = 0x2eaf99;\n      iVar5 = (*pcVar2)(param_4);\n      local_40 = (long *)0x0;\n      if (iVar5 != -1) {\n        local_40 = param_4;\n      }\n      puVar7 = local_58;\n      uVar18 = (uint)local_48;\n      cVar24 = (byte)local_68;\n      bVar23 = uStack_70._4_1_;\n      bVar20 = iVar5 == -1 && bVar14;\n    }\n  }" if (parenthesized_expression "(bVar14)" ( identifier )) (compound_statement "{\n    if ((ulong)param_4[2] < (ulong)param_4[3]) {\n      bVar20 = false;\n    }\n    else {\n      uStack_70._4_4_ = CONCAT31(uStack_70._5_3_,bVar23);\n      local_68 = (long *)CONCAT71(local_68._1_7_,cVar24);\n      pcVar2 = *(code **)(*param_4 + 0x48);\n      local_58 = puVar7;\n      *(undefined8 *)(auStack_78 + lVar3 + -8) = 0x2eaf99;\n      iVar5 = (*pcVar2)(param_4);\n      local_40 = (long *)0x0;\n      if (iVar5 != -1) {\n        local_40 = param_4;\n      }\n      puVar7 = local_58;\n      uVar18 = (uint)local_48;\n      cVar24 = (byte)local_68;\n      bVar23 = uStack_70._4_1_;\n      bVar20 = iVar5 == -1 && bVar14;\n    }\n  }" { (if_statement "if ((ulong)param_4[2] < (ulong)param_4[3]) {\n      bVar20 = false;\n    }\n    else {\n      uStack_70._4_4_ = CONCAT31(uStack_70._5_3_,bVar23);\n      local_68 = (long *)CONCAT71(local_68._1_7_,cVar24);\n      pcVar2 = *(code **)(*param_4 + 0x48);\n      local_58 = puVar7;\n      *(undefined8 *)(auStack_78 + lVar3 + -8) = 0x2eaf99;\n      iVar5 = (*pcVar2)(param_4);\n      local_40 = (long *)0x0;\n      if (iVar5 != -1) {\n        local_40 = param_4;\n      }\n      puVar7 = local_58;\n      uVar18 = (uint)local_48;\n      cVar24 = (byte)local_68;\n      bVar23 = uStack_70._4_1_;\n      bVar20 = iVar5 == -1 && bVar14;\n    }" if (parenthesized_expression "((ulong)param_4[2] < (ulong)param_4[3])" ( (binary_expression "(ulong)param_4[2] < (ulong)param_4[3]" (cast_expression "(ulong)param_4[2]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_4[2]" identifier [ number_literal ])) < (cast_expression "(ulong)param_4[3]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_4[3]" identifier [ number_literal ]))) )) (compound_statement "{\n      bVar20 = false;\n    }" { (expression_statement "bVar20 = false;" (assignment_expression "bVar20 = false" identifier = false) ;) }) (else_clause "else {\n      uStack_70._4_4_ = CONCAT31(uStack_70._5_3_,bVar23);\n      local_68 = (long *)CONCAT71(local_68._1_7_,cVar24);\n      pcVar2 = *(code **)(*param_4 + 0x48);\n      local_58 = puVar7;\n      *(undefined8 *)(auStack_78 + lVar3 + -8) = 0x2eaf99;\n      iVar5 = (*pcVar2)(param_4);\n      local_40 = (long *)0x0;\n      if (iVar5 != -1) {\n        local_40 = param_4;\n      }\n      puVar7 = local_58;\n      uVar18 = (uint)local_48;\n      cVar24 = (byte)local_68;\n      bVar23 = uStack_70._4_1_;\n      bVar20 = iVar5 == -1 && bVar14;\n    }" else (compound_statement "{\n      uStack_70._4_4_ = CONCAT31(uStack_70._5_3_,bVar23);\n      local_68 = (long *)CONCAT71(local_68._1_7_,cVar24);\n      pcVar2 = *(code **)(*param_4 + 0x48);\n      local_58 = puVar7;\n      *(undefined8 *)(auStack_78 + lVar3 + -8) = 0x2eaf99;\n      iVar5 = (*pcVar2)(param_4);\n      local_40 = (long *)0x0;\n      if (iVar5 != -1) {\n        local_40 = param_4;\n      }\n      puVar7 = local_58;\n      uVar18 = (uint)local_48;\n      cVar24 = (byte)local_68;\n      bVar23 = uStack_70._4_1_;\n      bVar20 = iVar5 == -1 && bVar14;\n    }" { (expression_statement "uStack_70._4_4_ = CONCAT31(uStack_70._5_3_,bVar23);" (assignment_expression "uStack_70._4_4_ = CONCAT31(uStack_70._5_3_,bVar23)" (field_expression "uStack_70._4_4_" identifier . field_identifier) = (call_expression "CONCAT31(uStack_70._5_3_,bVar23)" identifier (argument_list "(uStack_70._5_3_,bVar23)" ( (field_expression "uStack_70._5_3_" identifier . field_identifier) , identifier )))) ;) (expression_statement "local_68 = (long *)CONCAT71(local_68._1_7_,cVar24);" (assignment_expression "local_68 = (long *)CONCAT71(local_68._1_7_,cVar24)" identifier = (cast_expression "(long *)CONCAT71(local_68._1_7_,cVar24)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (call_expression "CONCAT71(local_68._1_7_,cVar24)" identifier (argument_list "(local_68._1_7_,cVar24)" ( (field_expression "local_68._1_7_" identifier . field_identifier) , identifier ))))) ;) (expression_statement "pcVar2 = *(code **)(*param_4 + 0x48);" (assignment_expression "pcVar2 = *(code **)(*param_4 + 0x48)" identifier = (pointer_expression "*(code **)(*param_4 + 0x48)" * (cast_expression "(code **)(*param_4 + 0x48)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_4 + 0x48)" ( (binary_expression "*param_4 + 0x48" (pointer_expression "*param_4" * identifier) + number_literal) ))))) ;) (expression_statement "local_58 = puVar7;" (assignment_expression "local_58 = puVar7" identifier = identifier) ;) (expression_statement "*(undefined8 *)(auStack_78 + lVar3 + -8) = 0x2eaf99;" (assignment_expression "*(undefined8 *)(auStack_78 + lVar3 + -8) = 0x2eaf99" (pointer_expression "*(undefined8 *)(auStack_78 + lVar3 + -8)" * (cast_expression "(undefined8 *)(auStack_78 + lVar3 + -8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(auStack_78 + lVar3 + -8)" ( (binary_expression "auStack_78 + lVar3 + -8" (binary_expression "auStack_78 + lVar3" identifier + identifier) + number_literal) )))) = number_literal) ;) (expression_statement "iVar5 = (*pcVar2)(param_4);" (assignment_expression "iVar5 = (*pcVar2)(param_4)" identifier = (call_expression "(*pcVar2)(param_4)" (parenthesized_expression "(*pcVar2)" ( (pointer_expression "*pcVar2" * identifier) )) (argument_list "(param_4)" ( identifier )))) ;) (expression_statement "local_40 = (long *)0x0;" (assignment_expression "local_40 = (long *)0x0" identifier = (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (iVar5 != -1) {\n        local_40 = param_4;\n      }" if (parenthesized_expression "(iVar5 != -1)" ( (binary_expression "iVar5 != -1" identifier != number_literal) )) (compound_statement "{\n        local_40 = param_4;\n      }" { (expression_statement "local_40 = param_4;" (assignment_expression "local_40 = param_4" identifier = identifier) ;) })) (expression_statement "puVar7 = local_58;" (assignment_expression "puVar7 = local_58" identifier = identifier) ;) (expression_statement "uVar18 = (uint)local_48;" (assignment_expression "uVar18 = (uint)local_48" identifier = (cast_expression "(uint)local_48" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "cVar24 = (byte)local_68;" (assignment_expression "cVar24 = (byte)local_68" identifier = (cast_expression "(byte)local_68" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "bVar23 = uStack_70._4_1_;" (assignment_expression "bVar23 = uStack_70._4_1_" identifier = (field_expression "uStack_70._4_1_" identifier . field_identifier)) ;) (expression_statement "bVar20 = iVar5 == -1 && bVar14;" (assignment_expression "bVar20 = iVar5 == -1 && bVar14" identifier = (binary_expression "iVar5 == -1 && bVar14" (binary_expression "iVar5 == -1" identifier == number_literal) && identifier)) ;) }))) })) (if_statement "if ((bool)cVar24 == bVar20) {\n    uVar19 = 0;\n    uVar15 = 0;\n    puVar16 = auStack_78 + lVar3;\n    puVar7 = (ulong *)0x0;\n  }\n  else {\n    uVar6 = uVar18;\n    if (bVar10) {\n      if ((byte *)param_2[2] < (byte *)param_2[3]) {\n        uVar6 = (uint)*(byte *)param_2[2];\n      }\n      else {\n        local_68 = (long *)CONCAT71(local_68._1_7_,bVar23);\n        local_48 = (long *)CONCAT44(local_48._4_4_,uVar18);\n        pcVar2 = *(code **)(*param_2 + 0x48);\n        local_58 = puVar7;\n        *(undefined8 *)(auStack_78 + lVar3 + -8) = 0x2eafe4;\n        uVar6 = (*pcVar2)(param_2);\n        puVar7 = local_58;\n        uVar18 = (uint)local_48;\n        bVar23 = (byte)local_68;\n        if (uVar6 == 0xffffffff) {\n          param_2 = (long *)0x0;\n          uVar6 = 0xffffffff;\n        }\n      }\n    }\n    if ((long *)(param_8 * 2) == (long *)0x0) {\n      uVar15 = 0;\n      puVar7 = (ulong *)0x0;\n      uVar19 = 0;\n    }\n    else {\n      uVar15 = 0;\n      plVar21 = (long *)0x0;\n      uStack_70._3_1_ = bVar23;\n      uStack_70._4_4_ = uVar18;\n      local_68 = param_2;\n      local_58 = puVar22;\n      local_48 = (long *)(param_8 * 2);\n      do {\n        while (**(char **)(param_7 + (long)plVar21 * 8) == (char)uVar6) {\nLAB_002ead54:\n          *(int *)((long)local_58 + uVar15 * 4) = (int)plVar21;\n          uVar15 = uVar15 + 1;\n          plVar21 = (long *)((long)plVar21 + 1);\n          if (local_48 == plVar21) goto LAB_002ead6a;\n        }\n        pcVar2 = *(code **)(*puVar7 + 0x10);\n        *(undefined8 *)(auStack_78 + lVar3 + -8) = 0x2ead39;\n        cVar24 = (*pcVar2)(puVar7);\n        if (cVar24 == (char)uVar6) goto LAB_002ead54;\n        plVar21 = (long *)((long)plVar21 + 1);\n      } while (local_48 != plVar21);\nLAB_002ead6a:\n      puVar22 = local_58;\n      plVar21 = local_68;\n      uVar19 = 0;\n      puVar16 = auStack_78 + lVar3;\n      puVar7 = (ulong *)0x0;\n      param_2 = local_68;\n      uVar18 = uStack_70._4_4_;\n      bVar23 = uStack_70._3_1_;\n      if (uVar15 != 0) {\n        if ((ulong)local_68[2] < (ulong)local_68[3]) {\n          local_68[2] = local_68[2] + 1;\n          local_48._0_1_ = uStack_70._3_1_;\n        }\n        else {\n          local_48 = (long *)CONCAT71(local_48._1_7_,uStack_70._3_1_);\n          pcVar2 = *(code **)(*local_68 + 0x50);\n          *(undefined8 *)(auStack_78 + lVar3 + -8) = 0x2eb01f;\n          (*pcVar2)(plVar21);\n        }\n        local_68 = (long *)CONCAT71(local_68._1_7_,(byte)local_48);\n        local_48 = plVar21;\n        lVar4 = -(uVar15 * 8 + 0x17 & 0xfffffffffffffff0);\n        puVar16 = auStack_78 + lVar4 + lVar3;\n        uVar19 = 0;\n        puVar7 = (ulong *)((long)&uStack_70 + lVar4 + lVar3);\n        local_58 = puVar7;\n        do {\n          __s = *(char **)(param_7 + (long)*(int *)((long)puVar22 + uVar19 * 4) * 8);\n          *(undefined8 *)(auStack_78 + lVar4 + lVar3 + -8) = 0x2eaded;\n          sVar9 = strlen(__s);\n          puVar7[uVar19] = sVar9;\n          uVar19 = uVar19 + 1;\n        } while (uVar15 != uVar19);\n        uVar18 = 0xffffffff;\n        uVar19 = 1;\n        puVar7 = local_58;\n        param_2 = local_48;\n        bVar23 = (byte)local_68;\n      }\n    }\n  }" if (parenthesized_expression "((bool)cVar24 == bVar20)" ( (binary_expression "(bool)cVar24 == bVar20" (cast_expression "(bool)cVar24" ( (type_descriptor "bool" primitive_type) ) identifier) == identifier) )) (compound_statement "{\n    uVar19 = 0;\n    uVar15 = 0;\n    puVar16 = auStack_78 + lVar3;\n    puVar7 = (ulong *)0x0;\n  }" { (expression_statement "uVar19 = 0;" (assignment_expression "uVar19 = 0" identifier = number_literal) ;) (expression_statement "uVar15 = 0;" (assignment_expression "uVar15 = 0" identifier = number_literal) ;) (expression_statement "puVar16 = auStack_78 + lVar3;" (assignment_expression "puVar16 = auStack_78 + lVar3" identifier = (binary_expression "auStack_78 + lVar3" identifier + identifier)) ;) (expression_statement "puVar7 = (ulong *)0x0;" (assignment_expression "puVar7 = (ulong *)0x0" identifier = (cast_expression "(ulong *)0x0" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else {\n    uVar6 = uVar18;\n    if (bVar10) {\n      if ((byte *)param_2[2] < (byte *)param_2[3]) {\n        uVar6 = (uint)*(byte *)param_2[2];\n      }\n      else {\n        local_68 = (long *)CONCAT71(local_68._1_7_,bVar23);\n        local_48 = (long *)CONCAT44(local_48._4_4_,uVar18);\n        pcVar2 = *(code **)(*param_2 + 0x48);\n        local_58 = puVar7;\n        *(undefined8 *)(auStack_78 + lVar3 + -8) = 0x2eafe4;\n        uVar6 = (*pcVar2)(param_2);\n        puVar7 = local_58;\n        uVar18 = (uint)local_48;\n        bVar23 = (byte)local_68;\n        if (uVar6 == 0xffffffff) {\n          param_2 = (long *)0x0;\n          uVar6 = 0xffffffff;\n        }\n      }\n    }\n    if ((long *)(param_8 * 2) == (long *)0x0) {\n      uVar15 = 0;\n      puVar7 = (ulong *)0x0;\n      uVar19 = 0;\n    }\n    else {\n      uVar15 = 0;\n      plVar21 = (long *)0x0;\n      uStack_70._3_1_ = bVar23;\n      uStack_70._4_4_ = uVar18;\n      local_68 = param_2;\n      local_58 = puVar22;\n      local_48 = (long *)(param_8 * 2);\n      do {\n        while (**(char **)(param_7 + (long)plVar21 * 8) == (char)uVar6) {\nLAB_002ead54:\n          *(int *)((long)local_58 + uVar15 * 4) = (int)plVar21;\n          uVar15 = uVar15 + 1;\n          plVar21 = (long *)((long)plVar21 + 1);\n          if (local_48 == plVar21) goto LAB_002ead6a;\n        }\n        pcVar2 = *(code **)(*puVar7 + 0x10);\n        *(undefined8 *)(auStack_78 + lVar3 + -8) = 0x2ead39;\n        cVar24 = (*pcVar2)(puVar7);\n        if (cVar24 == (char)uVar6) goto LAB_002ead54;\n        plVar21 = (long *)((long)plVar21 + 1);\n      } while (local_48 != plVar21);\nLAB_002ead6a:\n      puVar22 = local_58;\n      plVar21 = local_68;\n      uVar19 = 0;\n      puVar16 = auStack_78 + lVar3;\n      puVar7 = (ulong *)0x0;\n      param_2 = local_68;\n      uVar18 = uStack_70._4_4_;\n      bVar23 = uStack_70._3_1_;\n      if (uVar15 != 0) {\n        if ((ulong)local_68[2] < (ulong)local_68[3]) {\n          local_68[2] = local_68[2] + 1;\n          local_48._0_1_ = uStack_70._3_1_;\n        }\n        else {\n          local_48 = (long *)CONCAT71(local_48._1_7_,uStack_70._3_1_);\n          pcVar2 = *(code **)(*local_68 + 0x50);\n          *(undefined8 *)(auStack_78 + lVar3 + -8) = 0x2eb01f;\n          (*pcVar2)(plVar21);\n        }\n        local_68 = (long *)CONCAT71(local_68._1_7_,(byte)local_48);\n        local_48 = plVar21;\n        lVar4 = -(uVar15 * 8 + 0x17 & 0xfffffffffffffff0);\n        puVar16 = auStack_78 + lVar4 + lVar3;\n        uVar19 = 0;\n        puVar7 = (ulong *)((long)&uStack_70 + lVar4 + lVar3);\n        local_58 = puVar7;\n        do {\n          __s = *(char **)(param_7 + (long)*(int *)((long)puVar22 + uVar19 * 4) * 8);\n          *(undefined8 *)(auStack_78 + lVar4 + lVar3 + -8) = 0x2eaded;\n          sVar9 = strlen(__s);\n          puVar7[uVar19] = sVar9;\n          uVar19 = uVar19 + 1;\n        } while (uVar15 != uVar19);\n        uVar18 = 0xffffffff;\n        uVar19 = 1;\n        puVar7 = local_58;\n        param_2 = local_48;\n        bVar23 = (byte)local_68;\n      }\n    }\n  }" else (compound_statement "{\n    uVar6 = uVar18;\n    if (bVar10) {\n      if ((byte *)param_2[2] < (byte *)param_2[3]) {\n        uVar6 = (uint)*(byte *)param_2[2];\n      }\n      else {\n        local_68 = (long *)CONCAT71(local_68._1_7_,bVar23);\n        local_48 = (long *)CONCAT44(local_48._4_4_,uVar18);\n        pcVar2 = *(code **)(*param_2 + 0x48);\n        local_58 = puVar7;\n        *(undefined8 *)(auStack_78 + lVar3 + -8) = 0x2eafe4;\n        uVar6 = (*pcVar2)(param_2);\n        puVar7 = local_58;\n        uVar18 = (uint)local_48;\n        bVar23 = (byte)local_68;\n        if (uVar6 == 0xffffffff) {\n          param_2 = (long *)0x0;\n          uVar6 = 0xffffffff;\n        }\n      }\n    }\n    if ((long *)(param_8 * 2) == (long *)0x0) {\n      uVar15 = 0;\n      puVar7 = (ulong *)0x0;\n      uVar19 = 0;\n    }\n    else {\n      uVar15 = 0;\n      plVar21 = (long *)0x0;\n      uStack_70._3_1_ = bVar23;\n      uStack_70._4_4_ = uVar18;\n      local_68 = param_2;\n      local_58 = puVar22;\n      local_48 = (long *)(param_8 * 2);\n      do {\n        while (**(char **)(param_7 + (long)plVar21 * 8) == (char)uVar6) {\nLAB_002ead54:\n          *(int *)((long)local_58 + uVar15 * 4) = (int)plVar21;\n          uVar15 = uVar15 + 1;\n          plVar21 = (long *)((long)plVar21 + 1);\n          if (local_48 == plVar21) goto LAB_002ead6a;\n        }\n        pcVar2 = *(code **)(*puVar7 + 0x10);\n        *(undefined8 *)(auStack_78 + lVar3 + -8) = 0x2ead39;\n        cVar24 = (*pcVar2)(puVar7);\n        if (cVar24 == (char)uVar6) goto LAB_002ead54;\n        plVar21 = (long *)((long)plVar21 + 1);\n      } while (local_48 != plVar21);\nLAB_002ead6a:\n      puVar22 = local_58;\n      plVar21 = local_68;\n      uVar19 = 0;\n      puVar16 = auStack_78 + lVar3;\n      puVar7 = (ulong *)0x0;\n      param_2 = local_68;\n      uVar18 = uStack_70._4_4_;\n      bVar23 = uStack_70._3_1_;\n      if (uVar15 != 0) {\n        if ((ulong)local_68[2] < (ulong)local_68[3]) {\n          local_68[2] = local_68[2] + 1;\n          local_48._0_1_ = uStack_70._3_1_;\n        }\n        else {\n          local_48 = (long *)CONCAT71(local_48._1_7_,uStack_70._3_1_);\n          pcVar2 = *(code **)(*local_68 + 0x50);\n          *(undefined8 *)(auStack_78 + lVar3 + -8) = 0x2eb01f;\n          (*pcVar2)(plVar21);\n        }\n        local_68 = (long *)CONCAT71(local_68._1_7_,(byte)local_48);\n        local_48 = plVar21;\n        lVar4 = -(uVar15 * 8 + 0x17 & 0xfffffffffffffff0);\n        puVar16 = auStack_78 + lVar4 + lVar3;\n        uVar19 = 0;\n        puVar7 = (ulong *)((long)&uStack_70 + lVar4 + lVar3);\n        local_58 = puVar7;\n        do {\n          __s = *(char **)(param_7 + (long)*(int *)((long)puVar22 + uVar19 * 4) * 8);\n          *(undefined8 *)(auStack_78 + lVar4 + lVar3 + -8) = 0x2eaded;\n          sVar9 = strlen(__s);\n          puVar7[uVar19] = sVar9;\n          uVar19 = uVar19 + 1;\n        } while (uVar15 != uVar19);\n        uVar18 = 0xffffffff;\n        uVar19 = 1;\n        puVar7 = local_58;\n        param_2 = local_48;\n        bVar23 = (byte)local_68;\n      }\n    }\n  }" { (expression_statement "uVar6 = uVar18;" (assignment_expression "uVar6 = uVar18" identifier = identifier) ;) (if_statement "if (bVar10) {\n      if ((byte *)param_2[2] < (byte *)param_2[3]) {\n        uVar6 = (uint)*(byte *)param_2[2];\n      }\n      else {\n        local_68 = (long *)CONCAT71(local_68._1_7_,bVar23);\n        local_48 = (long *)CONCAT44(local_48._4_4_,uVar18);\n        pcVar2 = *(code **)(*param_2 + 0x48);\n        local_58 = puVar7;\n        *(undefined8 *)(auStack_78 + lVar3 + -8) = 0x2eafe4;\n        uVar6 = (*pcVar2)(param_2);\n        puVar7 = local_58;\n        uVar18 = (uint)local_48;\n        bVar23 = (byte)local_68;\n        if (uVar6 == 0xffffffff) {\n          param_2 = (long *)0x0;\n          uVar6 = 0xffffffff;\n        }\n      }\n    }" if (parenthesized_expression "(bVar10)" ( identifier )) (compound_statement "{\n      if ((byte *)param_2[2] < (byte *)param_2[3]) {\n        uVar6 = (uint)*(byte *)param_2[2];\n      }\n      else {\n        local_68 = (long *)CONCAT71(local_68._1_7_,bVar23);\n        local_48 = (long *)CONCAT44(local_48._4_4_,uVar18);\n        pcVar2 = *(code **)(*param_2 + 0x48);\n        local_58 = puVar7;\n        *(undefined8 *)(auStack_78 + lVar3 + -8) = 0x2eafe4;\n        uVar6 = (*pcVar2)(param_2);\n        puVar7 = local_58;\n        uVar18 = (uint)local_48;\n        bVar23 = (byte)local_68;\n        if (uVar6 == 0xffffffff) {\n          param_2 = (long *)0x0;\n          uVar6 = 0xffffffff;\n        }\n      }\n    }" { (if_statement "if ((byte *)param_2[2] < (byte *)param_2[3]) {\n        uVar6 = (uint)*(byte *)param_2[2];\n      }\n      else {\n        local_68 = (long *)CONCAT71(local_68._1_7_,bVar23);\n        local_48 = (long *)CONCAT44(local_48._4_4_,uVar18);\n        pcVar2 = *(code **)(*param_2 + 0x48);\n        local_58 = puVar7;\n        *(undefined8 *)(auStack_78 + lVar3 + -8) = 0x2eafe4;\n        uVar6 = (*pcVar2)(param_2);\n        puVar7 = local_58;\n        uVar18 = (uint)local_48;\n        bVar23 = (byte)local_68;\n        if (uVar6 == 0xffffffff) {\n          param_2 = (long *)0x0;\n          uVar6 = 0xffffffff;\n        }\n      }" if (parenthesized_expression "((byte *)param_2[2] < (byte *)param_2[3])" ( (binary_expression "(byte *)param_2[2] < (byte *)param_2[3]" (cast_expression "(byte *)param_2[2]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[2]" identifier [ number_literal ])) < (cast_expression "(byte *)param_2[3]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[3]" identifier [ number_literal ]))) )) (compound_statement "{\n        uVar6 = (uint)*(byte *)param_2[2];\n      }" { (expression_statement "uVar6 = (uint)*(byte *)param_2[2];" (assignment_expression "uVar6 = (uint)*(byte *)param_2[2]" identifier = (binary_expression "(uint)*(byte *)param_2[2]" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)param_2[2]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[2]" identifier [ number_literal ])))) ;) }) (else_clause "else {\n        local_68 = (long *)CONCAT71(local_68._1_7_,bVar23);\n        local_48 = (long *)CONCAT44(local_48._4_4_,uVar18);\n        pcVar2 = *(code **)(*param_2 + 0x48);\n        local_58 = puVar7;\n        *(undefined8 *)(auStack_78 + lVar3 + -8) = 0x2eafe4;\n        uVar6 = (*pcVar2)(param_2);\n        puVar7 = local_58;\n        uVar18 = (uint)local_48;\n        bVar23 = (byte)local_68;\n        if (uVar6 == 0xffffffff) {\n          param_2 = (long *)0x0;\n          uVar6 = 0xffffffff;\n        }\n      }" else (compound_statement "{\n        local_68 = (long *)CONCAT71(local_68._1_7_,bVar23);\n        local_48 = (long *)CONCAT44(local_48._4_4_,uVar18);\n        pcVar2 = *(code **)(*param_2 + 0x48);\n        local_58 = puVar7;\n        *(undefined8 *)(auStack_78 + lVar3 + -8) = 0x2eafe4;\n        uVar6 = (*pcVar2)(param_2);\n        puVar7 = local_58;\n        uVar18 = (uint)local_48;\n        bVar23 = (byte)local_68;\n        if (uVar6 == 0xffffffff) {\n          param_2 = (long *)0x0;\n          uVar6 = 0xffffffff;\n        }\n      }" { (expression_statement "local_68 = (long *)CONCAT71(local_68._1_7_,bVar23);" (assignment_expression "local_68 = (long *)CONCAT71(local_68._1_7_,bVar23)" identifier = (cast_expression "(long *)CONCAT71(local_68._1_7_,bVar23)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (call_expression "CONCAT71(local_68._1_7_,bVar23)" identifier (argument_list "(local_68._1_7_,bVar23)" ( (field_expression "local_68._1_7_" identifier . field_identifier) , identifier ))))) ;) (expression_statement "local_48 = (long *)CONCAT44(local_48._4_4_,uVar18);" (assignment_expression "local_48 = (long *)CONCAT44(local_48._4_4_,uVar18)" identifier = (cast_expression "(long *)CONCAT44(local_48._4_4_,uVar18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (call_expression "CONCAT44(local_48._4_4_,uVar18)" identifier (argument_list "(local_48._4_4_,uVar18)" ( (field_expression "local_48._4_4_" identifier . field_identifier) , identifier ))))) ;) (expression_statement "pcVar2 = *(code **)(*param_2 + 0x48);" (assignment_expression "pcVar2 = *(code **)(*param_2 + 0x48)" identifier = (pointer_expression "*(code **)(*param_2 + 0x48)" * (cast_expression "(code **)(*param_2 + 0x48)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_2 + 0x48)" ( (binary_expression "*param_2 + 0x48" (pointer_expression "*param_2" * identifier) + number_literal) ))))) ;) (expression_statement "local_58 = puVar7;" (assignment_expression "local_58 = puVar7" identifier = identifier) ;) (expression_statement "*(undefined8 *)(auStack_78 + lVar3 + -8) = 0x2eafe4;" (assignment_expression "*(undefined8 *)(auStack_78 + lVar3 + -8) = 0x2eafe4" (pointer_expression "*(undefined8 *)(auStack_78 + lVar3 + -8)" * (cast_expression "(undefined8 *)(auStack_78 + lVar3 + -8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(auStack_78 + lVar3 + -8)" ( (binary_expression "auStack_78 + lVar3 + -8" (binary_expression "auStack_78 + lVar3" identifier + identifier) + number_literal) )))) = number_literal) ;) (expression_statement "uVar6 = (*pcVar2)(param_2);" (assignment_expression "uVar6 = (*pcVar2)(param_2)" identifier = (call_expression "(*pcVar2)(param_2)" (parenthesized_expression "(*pcVar2)" ( (pointer_expression "*pcVar2" * identifier) )) (argument_list "(param_2)" ( identifier )))) ;) (expression_statement "puVar7 = local_58;" (assignment_expression "puVar7 = local_58" identifier = identifier) ;) (expression_statement "uVar18 = (uint)local_48;" (assignment_expression "uVar18 = (uint)local_48" identifier = (cast_expression "(uint)local_48" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "bVar23 = (byte)local_68;" (assignment_expression "bVar23 = (byte)local_68" identifier = (cast_expression "(byte)local_68" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (if_statement "if (uVar6 == 0xffffffff) {\n          param_2 = (long *)0x0;\n          uVar6 = 0xffffffff;\n        }" if (parenthesized_expression "(uVar6 == 0xffffffff)" ( (binary_expression "uVar6 == 0xffffffff" identifier == number_literal) )) (compound_statement "{\n          param_2 = (long *)0x0;\n          uVar6 = 0xffffffff;\n        }" { (expression_statement "param_2 = (long *)0x0;" (assignment_expression "param_2 = (long *)0x0" identifier = (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "uVar6 = 0xffffffff;" (assignment_expression "uVar6 = 0xffffffff" identifier = number_literal) ;) })) }))) })) (if_statement "if ((long *)(param_8 * 2) == (long *)0x0) {\n      uVar15 = 0;\n      puVar7 = (ulong *)0x0;\n      uVar19 = 0;\n    }\n    else {\n      uVar15 = 0;\n      plVar21 = (long *)0x0;\n      uStack_70._3_1_ = bVar23;\n      uStack_70._4_4_ = uVar18;\n      local_68 = param_2;\n      local_58 = puVar22;\n      local_48 = (long *)(param_8 * 2);\n      do {\n        while (**(char **)(param_7 + (long)plVar21 * 8) == (char)uVar6) {\nLAB_002ead54:\n          *(int *)((long)local_58 + uVar15 * 4) = (int)plVar21;\n          uVar15 = uVar15 + 1;\n          plVar21 = (long *)((long)plVar21 + 1);\n          if (local_48 == plVar21) goto LAB_002ead6a;\n        }\n        pcVar2 = *(code **)(*puVar7 + 0x10);\n        *(undefined8 *)(auStack_78 + lVar3 + -8) = 0x2ead39;\n        cVar24 = (*pcVar2)(puVar7);\n        if (cVar24 == (char)uVar6) goto LAB_002ead54;\n        plVar21 = (long *)((long)plVar21 + 1);\n      } while (local_48 != plVar21);\nLAB_002ead6a:\n      puVar22 = local_58;\n      plVar21 = local_68;\n      uVar19 = 0;\n      puVar16 = auStack_78 + lVar3;\n      puVar7 = (ulong *)0x0;\n      param_2 = local_68;\n      uVar18 = uStack_70._4_4_;\n      bVar23 = uStack_70._3_1_;\n      if (uVar15 != 0) {\n        if ((ulong)local_68[2] < (ulong)local_68[3]) {\n          local_68[2] = local_68[2] + 1;\n          local_48._0_1_ = uStack_70._3_1_;\n        }\n        else {\n          local_48 = (long *)CONCAT71(local_48._1_7_,uStack_70._3_1_);\n          pcVar2 = *(code **)(*local_68 + 0x50);\n          *(undefined8 *)(auStack_78 + lVar3 + -8) = 0x2eb01f;\n          (*pcVar2)(plVar21);\n        }\n        local_68 = (long *)CONCAT71(local_68._1_7_,(byte)local_48);\n        local_48 = plVar21;\n        lVar4 = -(uVar15 * 8 + 0x17 & 0xfffffffffffffff0);\n        puVar16 = auStack_78 + lVar4 + lVar3;\n        uVar19 = 0;\n        puVar7 = (ulong *)((long)&uStack_70 + lVar4 + lVar3);\n        local_58 = puVar7;\n        do {\n          __s = *(char **)(param_7 + (long)*(int *)((long)puVar22 + uVar19 * 4) * 8);\n          *(undefined8 *)(auStack_78 + lVar4 + lVar3 + -8) = 0x2eaded;\n          sVar9 = strlen(__s);\n          puVar7[uVar19] = sVar9;\n          uVar19 = uVar19 + 1;\n        } while (uVar15 != uVar19);\n        uVar18 = 0xffffffff;\n        uVar19 = 1;\n        puVar7 = local_58;\n        param_2 = local_48;\n        bVar23 = (byte)local_68;\n      }\n    }" if (parenthesized_expression "((long *)(param_8 * 2) == (long *)0x0)" ( (binary_expression "(long *)(param_8 * 2) == (long *)0x0" (cast_expression "(long *)(param_8 * 2)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_8 * 2)" ( (binary_expression "param_8 * 2" identifier * number_literal) ))) == (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      uVar15 = 0;\n      puVar7 = (ulong *)0x0;\n      uVar19 = 0;\n    }" { (expression_statement "uVar15 = 0;" (assignment_expression "uVar15 = 0" identifier = number_literal) ;) (expression_statement "puVar7 = (ulong *)0x0;" (assignment_expression "puVar7 = (ulong *)0x0" identifier = (cast_expression "(ulong *)0x0" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "uVar19 = 0;" (assignment_expression "uVar19 = 0" identifier = number_literal) ;) }) (else_clause "else {\n      uVar15 = 0;\n      plVar21 = (long *)0x0;\n      uStack_70._3_1_ = bVar23;\n      uStack_70._4_4_ = uVar18;\n      local_68 = param_2;\n      local_58 = puVar22;\n      local_48 = (long *)(param_8 * 2);\n      do {\n        while (**(char **)(param_7 + (long)plVar21 * 8) == (char)uVar6) {\nLAB_002ead54:\n          *(int *)((long)local_58 + uVar15 * 4) = (int)plVar21;\n          uVar15 = uVar15 + 1;\n          plVar21 = (long *)((long)plVar21 + 1);\n          if (local_48 == plVar21) goto LAB_002ead6a;\n        }\n        pcVar2 = *(code **)(*puVar7 + 0x10);\n        *(undefined8 *)(auStack_78 + lVar3 + -8) = 0x2ead39;\n        cVar24 = (*pcVar2)(puVar7);\n        if (cVar24 == (char)uVar6) goto LAB_002ead54;\n        plVar21 = (long *)((long)plVar21 + 1);\n      } while (local_48 != plVar21);\nLAB_002ead6a:\n      puVar22 = local_58;\n      plVar21 = local_68;\n      uVar19 = 0;\n      puVar16 = auStack_78 + lVar3;\n      puVar7 = (ulong *)0x0;\n      param_2 = local_68;\n      uVar18 = uStack_70._4_4_;\n      bVar23 = uStack_70._3_1_;\n      if (uVar15 != 0) {\n        if ((ulong)local_68[2] < (ulong)local_68[3]) {\n          local_68[2] = local_68[2] + 1;\n          local_48._0_1_ = uStack_70._3_1_;\n        }\n        else {\n          local_48 = (long *)CONCAT71(local_48._1_7_,uStack_70._3_1_);\n          pcVar2 = *(code **)(*local_68 + 0x50);\n          *(undefined8 *)(auStack_78 + lVar3 + -8) = 0x2eb01f;\n          (*pcVar2)(plVar21);\n        }\n        local_68 = (long *)CONCAT71(local_68._1_7_,(byte)local_48);\n        local_48 = plVar21;\n        lVar4 = -(uVar15 * 8 + 0x17 & 0xfffffffffffffff0);\n        puVar16 = auStack_78 + lVar4 + lVar3;\n        uVar19 = 0;\n        puVar7 = (ulong *)((long)&uStack_70 + lVar4 + lVar3);\n        local_58 = puVar7;\n        do {\n          __s = *(char **)(param_7 + (long)*(int *)((long)puVar22 + uVar19 * 4) * 8);\n          *(undefined8 *)(auStack_78 + lVar4 + lVar3 + -8) = 0x2eaded;\n          sVar9 = strlen(__s);\n          puVar7[uVar19] = sVar9;\n          uVar19 = uVar19 + 1;\n        } while (uVar15 != uVar19);\n        uVar18 = 0xffffffff;\n        uVar19 = 1;\n        puVar7 = local_58;\n        param_2 = local_48;\n        bVar23 = (byte)local_68;\n      }\n    }" else (compound_statement "{\n      uVar15 = 0;\n      plVar21 = (long *)0x0;\n      uStack_70._3_1_ = bVar23;\n      uStack_70._4_4_ = uVar18;\n      local_68 = param_2;\n      local_58 = puVar22;\n      local_48 = (long *)(param_8 * 2);\n      do {\n        while (**(char **)(param_7 + (long)plVar21 * 8) == (char)uVar6) {\nLAB_002ead54:\n          *(int *)((long)local_58 + uVar15 * 4) = (int)plVar21;\n          uVar15 = uVar15 + 1;\n          plVar21 = (long *)((long)plVar21 + 1);\n          if (local_48 == plVar21) goto LAB_002ead6a;\n        }\n        pcVar2 = *(code **)(*puVar7 + 0x10);\n        *(undefined8 *)(auStack_78 + lVar3 + -8) = 0x2ead39;\n        cVar24 = (*pcVar2)(puVar7);\n        if (cVar24 == (char)uVar6) goto LAB_002ead54;\n        plVar21 = (long *)((long)plVar21 + 1);\n      } while (local_48 != plVar21);\nLAB_002ead6a:\n      puVar22 = local_58;\n      plVar21 = local_68;\n      uVar19 = 0;\n      puVar16 = auStack_78 + lVar3;\n      puVar7 = (ulong *)0x0;\n      param_2 = local_68;\n      uVar18 = uStack_70._4_4_;\n      bVar23 = uStack_70._3_1_;\n      if (uVar15 != 0) {\n        if ((ulong)local_68[2] < (ulong)local_68[3]) {\n          local_68[2] = local_68[2] + 1;\n          local_48._0_1_ = uStack_70._3_1_;\n        }\n        else {\n          local_48 = (long *)CONCAT71(local_48._1_7_,uStack_70._3_1_);\n          pcVar2 = *(code **)(*local_68 + 0x50);\n          *(undefined8 *)(auStack_78 + lVar3 + -8) = 0x2eb01f;\n          (*pcVar2)(plVar21);\n        }\n        local_68 = (long *)CONCAT71(local_68._1_7_,(byte)local_48);\n        local_48 = plVar21;\n        lVar4 = -(uVar15 * 8 + 0x17 & 0xfffffffffffffff0);\n        puVar16 = auStack_78 + lVar4 + lVar3;\n        uVar19 = 0;\n        puVar7 = (ulong *)((long)&uStack_70 + lVar4 + lVar3);\n        local_58 = puVar7;\n        do {\n          __s = *(char **)(param_7 + (long)*(int *)((long)puVar22 + uVar19 * 4) * 8);\n          *(undefined8 *)(auStack_78 + lVar4 + lVar3 + -8) = 0x2eaded;\n          sVar9 = strlen(__s);\n          puVar7[uVar19] = sVar9;\n          uVar19 = uVar19 + 1;\n        } while (uVar15 != uVar19);\n        uVar18 = 0xffffffff;\n        uVar19 = 1;\n        puVar7 = local_58;\n        param_2 = local_48;\n        bVar23 = (byte)local_68;\n      }\n    }" { (expression_statement "uVar15 = 0;" (assignment_expression "uVar15 = 0" identifier = number_literal) ;) (expression_statement "plVar21 = (long *)0x0;" (assignment_expression "plVar21 = (long *)0x0" identifier = (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "uStack_70._3_1_ = bVar23;" (assignment_expression "uStack_70._3_1_ = bVar23" (field_expression "uStack_70._3_1_" identifier . field_identifier) = identifier) ;) (expression_statement "uStack_70._4_4_ = uVar18;" (assignment_expression "uStack_70._4_4_ = uVar18" (field_expression "uStack_70._4_4_" identifier . field_identifier) = identifier) ;) (expression_statement "local_68 = param_2;" (assignment_expression "local_68 = param_2" identifier = identifier) ;) (expression_statement "local_58 = puVar22;" (assignment_expression "local_58 = puVar22" identifier = identifier) ;) (expression_statement "local_48 = (long *)(param_8 * 2);" (assignment_expression "local_48 = (long *)(param_8 * 2)" identifier = (cast_expression "(long *)(param_8 * 2)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_8 * 2)" ( (binary_expression "param_8 * 2" identifier * number_literal) )))) ;) (do_statement "do {\n        while (**(char **)(param_7 + (long)plVar21 * 8) == (char)uVar6) {\nLAB_002ead54:\n          *(int *)((long)local_58 + uVar15 * 4) = (int)plVar21;\n          uVar15 = uVar15 + 1;\n          plVar21 = (long *)((long)plVar21 + 1);\n          if (local_48 == plVar21) goto LAB_002ead6a;\n        }\n        pcVar2 = *(code **)(*puVar7 + 0x10);\n        *(undefined8 *)(auStack_78 + lVar3 + -8) = 0x2ead39;\n        cVar24 = (*pcVar2)(puVar7);\n        if (cVar24 == (char)uVar6) goto LAB_002ead54;\n        plVar21 = (long *)((long)plVar21 + 1);\n      } while (local_48 != plVar21);" do (compound_statement "{\n        while (**(char **)(param_7 + (long)plVar21 * 8) == (char)uVar6) {\nLAB_002ead54:\n          *(int *)((long)local_58 + uVar15 * 4) = (int)plVar21;\n          uVar15 = uVar15 + 1;\n          plVar21 = (long *)((long)plVar21 + 1);\n          if (local_48 == plVar21) goto LAB_002ead6a;\n        }\n        pcVar2 = *(code **)(*puVar7 + 0x10);\n        *(undefined8 *)(auStack_78 + lVar3 + -8) = 0x2ead39;\n        cVar24 = (*pcVar2)(puVar7);\n        if (cVar24 == (char)uVar6) goto LAB_002ead54;\n        plVar21 = (long *)((long)plVar21 + 1);\n      }" { (while_statement "while (**(char **)(param_7 + (long)plVar21 * 8) == (char)uVar6) {\nLAB_002ead54:\n          *(int *)((long)local_58 + uVar15 * 4) = (int)plVar21;\n          uVar15 = uVar15 + 1;\n          plVar21 = (long *)((long)plVar21 + 1);\n          if (local_48 == plVar21) goto LAB_002ead6a;\n        }" while (parenthesized_expression "(**(char **)(param_7 + (long)plVar21 * 8) == (char)uVar6)" ( (binary_expression "**(char **)(param_7 + (long)plVar21 * 8) == (char)uVar6" (pointer_expression "**(char **)(param_7 + (long)plVar21 * 8)" * (pointer_expression "*(char **)(param_7 + (long)plVar21 * 8)" * (cast_expression "(char **)(param_7 + (long)plVar21 * 8)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_7 + (long)plVar21 * 8)" ( (binary_expression "param_7 + (long)plVar21 * 8" identifier + (binary_expression "(long)plVar21 * 8" (cast_expression "(long)plVar21" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) * number_literal)) ))))) == (cast_expression "(char)uVar6" ( (type_descriptor "char" primitive_type) ) identifier)) )) (compound_statement "{\nLAB_002ead54:\n          *(int *)((long)local_58 + uVar15 * 4) = (int)plVar21;\n          uVar15 = uVar15 + 1;\n          plVar21 = (long *)((long)plVar21 + 1);\n          if (local_48 == plVar21) goto LAB_002ead6a;\n        }" { (labeled_statement "LAB_002ead54:\n          *(int *)((long)local_58 + uVar15 * 4) = (int)plVar21;" statement_identifier : (expression_statement "*(int *)((long)local_58 + uVar15 * 4) = (int)plVar21;" (assignment_expression "*(int *)((long)local_58 + uVar15 * 4) = (int)plVar21" (pointer_expression "*(int *)((long)local_58 + uVar15 * 4)" * (cast_expression "(int *)((long)local_58 + uVar15 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)local_58 + uVar15 * 4)" ( (binary_expression "(long)local_58 + uVar15 * 4" (cast_expression "(long)local_58" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (binary_expression "uVar15 * 4" identifier * number_literal)) )))) = (cast_expression "(int)plVar21" ( (type_descriptor "int" primitive_type) ) identifier)) ;)) (expression_statement "uVar15 = uVar15 + 1;" (assignment_expression "uVar15 = uVar15 + 1" identifier = (binary_expression "uVar15 + 1" identifier + number_literal)) ;) (expression_statement "plVar21 = (long *)((long)plVar21 + 1);" (assignment_expression "plVar21 = (long *)((long)plVar21 + 1)" identifier = (cast_expression "(long *)((long)plVar21 + 1)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)plVar21 + 1)" ( (binary_expression "(long)plVar21 + 1" (cast_expression "(long)plVar21" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) ;) (if_statement "if (local_48 == plVar21) goto LAB_002ead6a;" if (parenthesized_expression "(local_48 == plVar21)" ( (binary_expression "local_48 == plVar21" identifier == identifier) )) (goto_statement "goto LAB_002ead6a;" goto statement_identifier ;)) })) (expression_statement "pcVar2 = *(code **)(*puVar7 + 0x10);" (assignment_expression "pcVar2 = *(code **)(*puVar7 + 0x10)" identifier = (pointer_expression "*(code **)(*puVar7 + 0x10)" * (cast_expression "(code **)(*puVar7 + 0x10)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*puVar7 + 0x10)" ( (binary_expression "*puVar7 + 0x10" (pointer_expression "*puVar7" * identifier) + number_literal) ))))) ;) (expression_statement "*(undefined8 *)(auStack_78 + lVar3 + -8) = 0x2ead39;" (assignment_expression "*(undefined8 *)(auStack_78 + lVar3 + -8) = 0x2ead39" (pointer_expression "*(undefined8 *)(auStack_78 + lVar3 + -8)" * (cast_expression "(undefined8 *)(auStack_78 + lVar3 + -8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(auStack_78 + lVar3 + -8)" ( (binary_expression "auStack_78 + lVar3 + -8" (binary_expression "auStack_78 + lVar3" identifier + identifier) + number_literal) )))) = number_literal) ;) (expression_statement "cVar24 = (*pcVar2)(puVar7);" (assignment_expression "cVar24 = (*pcVar2)(puVar7)" identifier = (call_expression "(*pcVar2)(puVar7)" (parenthesized_expression "(*pcVar2)" ( (pointer_expression "*pcVar2" * identifier) )) (argument_list "(puVar7)" ( identifier )))) ;) (if_statement "if (cVar24 == (char)uVar6) goto LAB_002ead54;" if (parenthesized_expression "(cVar24 == (char)uVar6)" ( (binary_expression "cVar24 == (char)uVar6" identifier == (cast_expression "(char)uVar6" ( (type_descriptor "char" primitive_type) ) identifier)) )) (goto_statement "goto LAB_002ead54;" goto statement_identifier ;)) (expression_statement "plVar21 = (long *)((long)plVar21 + 1);" (assignment_expression "plVar21 = (long *)((long)plVar21 + 1)" identifier = (cast_expression "(long *)((long)plVar21 + 1)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)plVar21 + 1)" ( (binary_expression "(long)plVar21 + 1" (cast_expression "(long)plVar21" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) ;) }) while (parenthesized_expression "(local_48 != plVar21)" ( (binary_expression "local_48 != plVar21" identifier != identifier) )) ;) (labeled_statement "LAB_002ead6a:\n      puVar22 = local_58;" statement_identifier : (expression_statement "puVar22 = local_58;" (assignment_expression "puVar22 = local_58" identifier = identifier) ;)) (expression_statement "plVar21 = local_68;" (assignment_expression "plVar21 = local_68" identifier = identifier) ;) (expression_statement "uVar19 = 0;" (assignment_expression "uVar19 = 0" identifier = number_literal) ;) (expression_statement "puVar16 = auStack_78 + lVar3;" (assignment_expression "puVar16 = auStack_78 + lVar3" identifier = (binary_expression "auStack_78 + lVar3" identifier + identifier)) ;) (expression_statement "puVar7 = (ulong *)0x0;" (assignment_expression "puVar7 = (ulong *)0x0" identifier = (cast_expression "(ulong *)0x0" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "param_2 = local_68;" (assignment_expression "param_2 = local_68" identifier = identifier) ;) (expression_statement "uVar18 = uStack_70._4_4_;" (assignment_expression "uVar18 = uStack_70._4_4_" identifier = (field_expression "uStack_70._4_4_" identifier . field_identifier)) ;) (expression_statement "bVar23 = uStack_70._3_1_;" (assignment_expression "bVar23 = uStack_70._3_1_" identifier = (field_expression "uStack_70._3_1_" identifier . field_identifier)) ;) (if_statement "if (uVar15 != 0) {\n        if ((ulong)local_68[2] < (ulong)local_68[3]) {\n          local_68[2] = local_68[2] + 1;\n          local_48._0_1_ = uStack_70._3_1_;\n        }\n        else {\n          local_48 = (long *)CONCAT71(local_48._1_7_,uStack_70._3_1_);\n          pcVar2 = *(code **)(*local_68 + 0x50);\n          *(undefined8 *)(auStack_78 + lVar3 + -8) = 0x2eb01f;\n          (*pcVar2)(plVar21);\n        }\n        local_68 = (long *)CONCAT71(local_68._1_7_,(byte)local_48);\n        local_48 = plVar21;\n        lVar4 = -(uVar15 * 8 + 0x17 & 0xfffffffffffffff0);\n        puVar16 = auStack_78 + lVar4 + lVar3;\n        uVar19 = 0;\n        puVar7 = (ulong *)((long)&uStack_70 + lVar4 + lVar3);\n        local_58 = puVar7;\n        do {\n          __s = *(char **)(param_7 + (long)*(int *)((long)puVar22 + uVar19 * 4) * 8);\n          *(undefined8 *)(auStack_78 + lVar4 + lVar3 + -8) = 0x2eaded;\n          sVar9 = strlen(__s);\n          puVar7[uVar19] = sVar9;\n          uVar19 = uVar19 + 1;\n        } while (uVar15 != uVar19);\n        uVar18 = 0xffffffff;\n        uVar19 = 1;\n        puVar7 = local_58;\n        param_2 = local_48;\n        bVar23 = (byte)local_68;\n      }" if (parenthesized_expression "(uVar15 != 0)" ( (binary_expression "uVar15 != 0" identifier != number_literal) )) (compound_statement "{\n        if ((ulong)local_68[2] < (ulong)local_68[3]) {\n          local_68[2] = local_68[2] + 1;\n          local_48._0_1_ = uStack_70._3_1_;\n        }\n        else {\n          local_48 = (long *)CONCAT71(local_48._1_7_,uStack_70._3_1_);\n          pcVar2 = *(code **)(*local_68 + 0x50);\n          *(undefined8 *)(auStack_78 + lVar3 + -8) = 0x2eb01f;\n          (*pcVar2)(plVar21);\n        }\n        local_68 = (long *)CONCAT71(local_68._1_7_,(byte)local_48);\n        local_48 = plVar21;\n        lVar4 = -(uVar15 * 8 + 0x17 & 0xfffffffffffffff0);\n        puVar16 = auStack_78 + lVar4 + lVar3;\n        uVar19 = 0;\n        puVar7 = (ulong *)((long)&uStack_70 + lVar4 + lVar3);\n        local_58 = puVar7;\n        do {\n          __s = *(char **)(param_7 + (long)*(int *)((long)puVar22 + uVar19 * 4) * 8);\n          *(undefined8 *)(auStack_78 + lVar4 + lVar3 + -8) = 0x2eaded;\n          sVar9 = strlen(__s);\n          puVar7[uVar19] = sVar9;\n          uVar19 = uVar19 + 1;\n        } while (uVar15 != uVar19);\n        uVar18 = 0xffffffff;\n        uVar19 = 1;\n        puVar7 = local_58;\n        param_2 = local_48;\n        bVar23 = (byte)local_68;\n      }" { (if_statement "if ((ulong)local_68[2] < (ulong)local_68[3]) {\n          local_68[2] = local_68[2] + 1;\n          local_48._0_1_ = uStack_70._3_1_;\n        }\n        else {\n          local_48 = (long *)CONCAT71(local_48._1_7_,uStack_70._3_1_);\n          pcVar2 = *(code **)(*local_68 + 0x50);\n          *(undefined8 *)(auStack_78 + lVar3 + -8) = 0x2eb01f;\n          (*pcVar2)(plVar21);\n        }" if (parenthesized_expression "((ulong)local_68[2] < (ulong)local_68[3])" ( (binary_expression "(ulong)local_68[2] < (ulong)local_68[3]" (cast_expression "(ulong)local_68[2]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "local_68[2]" identifier [ number_literal ])) < (cast_expression "(ulong)local_68[3]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "local_68[3]" identifier [ number_literal ]))) )) (compound_statement "{\n          local_68[2] = local_68[2] + 1;\n          local_48._0_1_ = uStack_70._3_1_;\n        }" { (expression_statement "local_68[2] = local_68[2] + 1;" (assignment_expression "local_68[2] = local_68[2] + 1" (subscript_expression "local_68[2]" identifier [ number_literal ]) = (binary_expression "local_68[2] + 1" (subscript_expression "local_68[2]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "local_48._0_1_ = uStack_70._3_1_;" (assignment_expression "local_48._0_1_ = uStack_70._3_1_" (field_expression "local_48._0_1_" identifier . field_identifier) = (field_expression "uStack_70._3_1_" identifier . field_identifier)) ;) }) (else_clause "else {\n          local_48 = (long *)CONCAT71(local_48._1_7_,uStack_70._3_1_);\n          pcVar2 = *(code **)(*local_68 + 0x50);\n          *(undefined8 *)(auStack_78 + lVar3 + -8) = 0x2eb01f;\n          (*pcVar2)(plVar21);\n        }" else (compound_statement "{\n          local_48 = (long *)CONCAT71(local_48._1_7_,uStack_70._3_1_);\n          pcVar2 = *(code **)(*local_68 + 0x50);\n          *(undefined8 *)(auStack_78 + lVar3 + -8) = 0x2eb01f;\n          (*pcVar2)(plVar21);\n        }" { (expression_statement "local_48 = (long *)CONCAT71(local_48._1_7_,uStack_70._3_1_);" (assignment_expression "local_48 = (long *)CONCAT71(local_48._1_7_,uStack_70._3_1_)" identifier = (cast_expression "(long *)CONCAT71(local_48._1_7_,uStack_70._3_1_)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (call_expression "CONCAT71(local_48._1_7_,uStack_70._3_1_)" identifier (argument_list "(local_48._1_7_,uStack_70._3_1_)" ( (field_expression "local_48._1_7_" identifier . field_identifier) , (field_expression "uStack_70._3_1_" identifier . field_identifier) ))))) ;) (expression_statement "pcVar2 = *(code **)(*local_68 + 0x50);" (assignment_expression "pcVar2 = *(code **)(*local_68 + 0x50)" identifier = (pointer_expression "*(code **)(*local_68 + 0x50)" * (cast_expression "(code **)(*local_68 + 0x50)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*local_68 + 0x50)" ( (binary_expression "*local_68 + 0x50" (pointer_expression "*local_68" * identifier) + number_literal) ))))) ;) (expression_statement "*(undefined8 *)(auStack_78 + lVar3 + -8) = 0x2eb01f;" (assignment_expression "*(undefined8 *)(auStack_78 + lVar3 + -8) = 0x2eb01f" (pointer_expression "*(undefined8 *)(auStack_78 + lVar3 + -8)" * (cast_expression "(undefined8 *)(auStack_78 + lVar3 + -8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(auStack_78 + lVar3 + -8)" ( (binary_expression "auStack_78 + lVar3 + -8" (binary_expression "auStack_78 + lVar3" identifier + identifier) + number_literal) )))) = number_literal) ;) (expression_statement "(*pcVar2)(plVar21);" (call_expression "(*pcVar2)(plVar21)" (parenthesized_expression "(*pcVar2)" ( (pointer_expression "*pcVar2" * identifier) )) (argument_list "(plVar21)" ( identifier ))) ;) }))) (expression_statement "local_68 = (long *)CONCAT71(local_68._1_7_,(byte)local_48);" (assignment_expression "local_68 = (long *)CONCAT71(local_68._1_7_,(byte)local_48)" identifier = (cast_expression "(long *)CONCAT71(local_68._1_7_,(byte)local_48)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (call_expression "CONCAT71(local_68._1_7_,(byte)local_48)" identifier (argument_list "(local_68._1_7_,(byte)local_48)" ( (field_expression "local_68._1_7_" identifier . field_identifier) , (cast_expression "(byte)local_48" ( (type_descriptor "byte" type_identifier) ) identifier) ))))) ;) (expression_statement "local_48 = plVar21;" (assignment_expression "local_48 = plVar21" identifier = identifier) ;) (expression_statement "lVar4 = -(uVar15 * 8 + 0x17 & 0xfffffffffffffff0);" (assignment_expression "lVar4 = -(uVar15 * 8 + 0x17 & 0xfffffffffffffff0)" identifier = (unary_expression "-(uVar15 * 8 + 0x17 & 0xfffffffffffffff0)" - (parenthesized_expression "(uVar15 * 8 + 0x17 & 0xfffffffffffffff0)" ( (binary_expression "uVar15 * 8 + 0x17 & 0xfffffffffffffff0" (binary_expression "uVar15 * 8 + 0x17" (binary_expression "uVar15 * 8" identifier * number_literal) + number_literal) & number_literal) )))) ;) (expression_statement "puVar16 = auStack_78 + lVar4 + lVar3;" (assignment_expression "puVar16 = auStack_78 + lVar4 + lVar3" identifier = (binary_expression "auStack_78 + lVar4 + lVar3" (binary_expression "auStack_78 + lVar4" identifier + identifier) + identifier)) ;) (expression_statement "uVar19 = 0;" (assignment_expression "uVar19 = 0" identifier = number_literal) ;) (expression_statement "puVar7 = (ulong *)((long)&uStack_70 + lVar4 + lVar3);" (assignment_expression "puVar7 = (ulong *)((long)&uStack_70 + lVar4 + lVar3)" identifier = (cast_expression "(ulong *)((long)&uStack_70 + lVar4 + lVar3)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)&uStack_70 + lVar4 + lVar3)" ( (binary_expression "(long)&uStack_70 + lVar4 + lVar3" (binary_expression "(long)&uStack_70 + lVar4" (cast_expression "(long)&uStack_70" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "&uStack_70" & identifier)) + identifier) + identifier) )))) ;) (expression_statement "local_58 = puVar7;" (assignment_expression "local_58 = puVar7" identifier = identifier) ;) (do_statement "do {\n          __s = *(char **)(param_7 + (long)*(int *)((long)puVar22 + uVar19 * 4) * 8);\n          *(undefined8 *)(auStack_78 + lVar4 + lVar3 + -8) = 0x2eaded;\n          sVar9 = strlen(__s);\n          puVar7[uVar19] = sVar9;\n          uVar19 = uVar19 + 1;\n        } while (uVar15 != uVar19);" do (compound_statement "{\n          __s = *(char **)(param_7 + (long)*(int *)((long)puVar22 + uVar19 * 4) * 8);\n          *(undefined8 *)(auStack_78 + lVar4 + lVar3 + -8) = 0x2eaded;\n          sVar9 = strlen(__s);\n          puVar7[uVar19] = sVar9;\n          uVar19 = uVar19 + 1;\n        }" { (expression_statement "__s = *(char **)(param_7 + (long)*(int *)((long)puVar22 + uVar19 * 4) * 8);" (assignment_expression "__s = *(char **)(param_7 + (long)*(int *)((long)puVar22 + uVar19 * 4) * 8)" identifier = (pointer_expression "*(char **)(param_7 + (long)*(int *)((long)puVar22 + uVar19 * 4) * 8)" * (cast_expression "(char **)(param_7 + (long)*(int *)((long)puVar22 + uVar19 * 4) * 8)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_7 + (long)*(int *)((long)puVar22 + uVar19 * 4) * 8)" ( (binary_expression "param_7 + (long)*(int *)((long)puVar22 + uVar19 * 4) * 8" identifier + (binary_expression "(long)*(int *)((long)puVar22 + uVar19 * 4) * 8" (cast_expression "(long)*(int *)((long)puVar22 + uVar19 * 4)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "*(int *)((long)puVar22 + uVar19 * 4)" * (cast_expression "(int *)((long)puVar22 + uVar19 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar22 + uVar19 * 4)" ( (binary_expression "(long)puVar22 + uVar19 * 4" (cast_expression "(long)puVar22" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (binary_expression "uVar19 * 4" identifier * number_literal)) ))))) * number_literal)) ))))) ;) (expression_statement "*(undefined8 *)(auStack_78 + lVar4 + lVar3 + -8) = 0x2eaded;" (assignment_expression "*(undefined8 *)(auStack_78 + lVar4 + lVar3 + -8) = 0x2eaded" (pointer_expression "*(undefined8 *)(auStack_78 + lVar4 + lVar3 + -8)" * (cast_expression "(undefined8 *)(auStack_78 + lVar4 + lVar3 + -8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(auStack_78 + lVar4 + lVar3 + -8)" ( (binary_expression "auStack_78 + lVar4 + lVar3 + -8" (binary_expression "auStack_78 + lVar4 + lVar3" (binary_expression "auStack_78 + lVar4" identifier + identifier) + identifier) + number_literal) )))) = number_literal) ;) (expression_statement "sVar9 = strlen(__s);" (assignment_expression "sVar9 = strlen(__s)" identifier = (call_expression "strlen(__s)" identifier (argument_list "(__s)" ( identifier )))) ;) (expression_statement "puVar7[uVar19] = sVar9;" (assignment_expression "puVar7[uVar19] = sVar9" (subscript_expression "puVar7[uVar19]" identifier [ identifier ]) = identifier) ;) (expression_statement "uVar19 = uVar19 + 1;" (assignment_expression "uVar19 = uVar19 + 1" identifier = (binary_expression "uVar19 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar15 != uVar19)" ( (binary_expression "uVar15 != uVar19" identifier != identifier) )) ;) (expression_statement "uVar18 = 0xffffffff;" (assignment_expression "uVar18 = 0xffffffff" identifier = number_literal) ;) (expression_statement "uVar19 = 1;" (assignment_expression "uVar19 = 1" identifier = number_literal) ;) (expression_statement "puVar7 = local_58;" (assignment_expression "puVar7 = local_58" identifier = identifier) ;) (expression_statement "param_2 = local_48;" (assignment_expression "param_2 = local_48" identifier = identifier) ;) (expression_statement "bVar23 = (byte)local_68;" (assignment_expression "bVar23 = (byte)local_68" identifier = (cast_expression "(byte)local_68" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) })) }))) }))) (do_statement "do {\n    cVar24 = uVar18 == 0xffffffff;\n    bVar10 = param_2 != (long *)0x0 && (bool)cVar24;\n    bVar11 = cVar24;\n    if (bVar10) {\n      if ((ulong)param_2[2] < (ulong)param_2[3]) {\n        bVar11 = 0;\n      }\n      else {\n        uStack_70._4_4_ = CONCAT31(uStack_70._5_3_,bVar23);\n        local_68 = (long *)CONCAT44(local_68._4_4_,uVar18);\n        local_58 = (ulong *)CONCAT71(local_58._1_7_,cVar24);\n        local_48 = (long *)CONCAT71(local_48._1_7_,bVar10);\n        pcVar2 = *(code **)(*param_2 + 0x48);\n        *(undefined8 *)(puVar16 + -8) = 0x2eae9c;\n        iVar5 = (*pcVar2)(param_2);\n        if (iVar5 == -1) {\n          param_2 = (long *)0x0;\n          bVar11 = (byte)local_48;\n        }\n        else {\n          bVar11 = 0;\n        }\n        uVar18 = (uint)local_68;\n        bVar23 = uStack_70._4_1_;\n        cVar24 = (byte)local_58;\n      }\n    }\n    plVar21 = local_40;\n    bVar12 = local_40 != (long *)0x0 & bVar23;\n    bVar13 = bVar23;\n    if (bVar12 == 0) {\nLAB_002eab55:\n      if (bVar11 == bVar13) break;\n    }\n    else {\n      if ((ulong)local_40[3] <= (ulong)local_40[2]) {\n        local_68 = (long *)CONCAT71(local_68._1_7_,cVar24);\n        local_58 = (ulong *)CONCAT71(local_58._1_7_,bVar12);\n        local_48 = (long *)CONCAT71(local_48._1_7_,bVar11);\n        pcVar2 = *(code **)(*local_40 + 0x48);\n        uStack_70._3_1_ = bVar23;\n        uStack_70._4_4_ = uVar18;\n        *(undefined8 *)(puVar16 + -8) = 0x2eaeec;\n        iVar5 = (*pcVar2)(plVar21);\n        plVar21 = (long *)0x0;\n        bVar13 = (byte)local_58;\n        if (iVar5 != -1) {\n          bVar13 = 0;\n          plVar21 = local_40;\n        }\n        uVar18 = uStack_70._4_4_;\n        local_40 = plVar21;\n        bVar23 = uStack_70._3_1_;\n        bVar11 = (byte)local_48;\n        cVar24 = (byte)local_68;\n        goto LAB_002eab55;\n      }\n      if (bVar11 == 0) break;\n    }\n    if ((param_2 == (long *)0x0) || (cVar24 == '\0')) {\n      cVar24 = (char)uVar18;\n    }\n    else if ((char *)param_2[2] < (char *)param_2[3]) {\n      cVar24 = *(char *)param_2[2];\n    }\n    else {\n      local_58 = (ulong *)CONCAT71(local_58._1_7_,bVar23);\n      local_48 = (long *)CONCAT44(local_48._4_4_,uVar18);\n      pcVar2 = *(code **)(*param_2 + 0x48);\n      *(undefined8 *)(puVar16 + -8) = 0x2eaf38;\n      iVar5 = (*pcVar2)(param_2);\n      cVar24 = -1;\n      uVar18 = (uint)local_48;\n      bVar23 = (byte)local_58;\n      if (iVar5 == -1) {\n        param_2 = (long *)0x0;\n      }\n      else {\n        cVar24 = (char)iVar5;\n      }\n    }\n    if (uVar15 == 0) goto LAB_002eac30;\n    uVar8 = 0;\n    uVar17 = 0;\n    do {\n      while (puVar7[uVar8] <= uVar19) {\n        uVar17 = uVar17 + 1;\nLAB_002eab88:\n        uVar8 = uVar8 + 1;\n        if (uVar15 <= uVar8) goto LAB_002eabbf;\n      }\n      piVar1 = (int *)((long)puVar22 + uVar8 * 4);\n      if (*(char *)(*(long *)(param_7 + (long)*piVar1 * 8) + uVar19) == cVar24) goto LAB_002eab88;\n      uVar15 = uVar15 - 1;\n      *piVar1 = *(int *)((long)puVar22 + uVar15 * 4);\n      puVar7[uVar8] = puVar7[uVar15];\n    } while (uVar8 < uVar15);\nLAB_002eabbf:\n    if (uVar17 == uVar15) break;\n    if ((ulong)param_2[2] < (ulong)param_2[3]) {\n      param_2[2] = param_2[2] + 1;\n    }\n    else {\n      local_48 = (long *)CONCAT71(local_48._1_7_,bVar23);\n      pcVar2 = *(code **)(*param_2 + 0x50);\n      *(undefined8 *)(puVar16 + -8) = 0x2eaca1;\n      (*pcVar2)(param_2);\n      bVar23 = (byte)local_48;\n    }\n    uVar19 = uVar19 + 1;\n    uVar18 = 0xffffffff;\n  } while( true );" do (compound_statement "{\n    cVar24 = uVar18 == 0xffffffff;\n    bVar10 = param_2 != (long *)0x0 && (bool)cVar24;\n    bVar11 = cVar24;\n    if (bVar10) {\n      if ((ulong)param_2[2] < (ulong)param_2[3]) {\n        bVar11 = 0;\n      }\n      else {\n        uStack_70._4_4_ = CONCAT31(uStack_70._5_3_,bVar23);\n        local_68 = (long *)CONCAT44(local_68._4_4_,uVar18);\n        local_58 = (ulong *)CONCAT71(local_58._1_7_,cVar24);\n        local_48 = (long *)CONCAT71(local_48._1_7_,bVar10);\n        pcVar2 = *(code **)(*param_2 + 0x48);\n        *(undefined8 *)(puVar16 + -8) = 0x2eae9c;\n        iVar5 = (*pcVar2)(param_2);\n        if (iVar5 == -1) {\n          param_2 = (long *)0x0;\n          bVar11 = (byte)local_48;\n        }\n        else {\n          bVar11 = 0;\n        }\n        uVar18 = (uint)local_68;\n        bVar23 = uStack_70._4_1_;\n        cVar24 = (byte)local_58;\n      }\n    }\n    plVar21 = local_40;\n    bVar12 = local_40 != (long *)0x0 & bVar23;\n    bVar13 = bVar23;\n    if (bVar12 == 0) {\nLAB_002eab55:\n      if (bVar11 == bVar13) break;\n    }\n    else {\n      if ((ulong)local_40[3] <= (ulong)local_40[2]) {\n        local_68 = (long *)CONCAT71(local_68._1_7_,cVar24);\n        local_58 = (ulong *)CONCAT71(local_58._1_7_,bVar12);\n        local_48 = (long *)CONCAT71(local_48._1_7_,bVar11);\n        pcVar2 = *(code **)(*local_40 + 0x48);\n        uStack_70._3_1_ = bVar23;\n        uStack_70._4_4_ = uVar18;\n        *(undefined8 *)(puVar16 + -8) = 0x2eaeec;\n        iVar5 = (*pcVar2)(plVar21);\n        plVar21 = (long *)0x0;\n        bVar13 = (byte)local_58;\n        if (iVar5 != -1) {\n          bVar13 = 0;\n          plVar21 = local_40;\n        }\n        uVar18 = uStack_70._4_4_;\n        local_40 = plVar21;\n        bVar23 = uStack_70._3_1_;\n        bVar11 = (byte)local_48;\n        cVar24 = (byte)local_68;\n        goto LAB_002eab55;\n      }\n      if (bVar11 == 0) break;\n    }\n    if ((param_2 == (long *)0x0) || (cVar24 == '\0')) {\n      cVar24 = (char)uVar18;\n    }\n    else if ((char *)param_2[2] < (char *)param_2[3]) {\n      cVar24 = *(char *)param_2[2];\n    }\n    else {\n      local_58 = (ulong *)CONCAT71(local_58._1_7_,bVar23);\n      local_48 = (long *)CONCAT44(local_48._4_4_,uVar18);\n      pcVar2 = *(code **)(*param_2 + 0x48);\n      *(undefined8 *)(puVar16 + -8) = 0x2eaf38;\n      iVar5 = (*pcVar2)(param_2);\n      cVar24 = -1;\n      uVar18 = (uint)local_48;\n      bVar23 = (byte)local_58;\n      if (iVar5 == -1) {\n        param_2 = (long *)0x0;\n      }\n      else {\n        cVar24 = (char)iVar5;\n      }\n    }\n    if (uVar15 == 0) goto LAB_002eac30;\n    uVar8 = 0;\n    uVar17 = 0;\n    do {\n      while (puVar7[uVar8] <= uVar19) {\n        uVar17 = uVar17 + 1;\nLAB_002eab88:\n        uVar8 = uVar8 + 1;\n        if (uVar15 <= uVar8) goto LAB_002eabbf;\n      }\n      piVar1 = (int *)((long)puVar22 + uVar8 * 4);\n      if (*(char *)(*(long *)(param_7 + (long)*piVar1 * 8) + uVar19) == cVar24) goto LAB_002eab88;\n      uVar15 = uVar15 - 1;\n      *piVar1 = *(int *)((long)puVar22 + uVar15 * 4);\n      puVar7[uVar8] = puVar7[uVar15];\n    } while (uVar8 < uVar15);\nLAB_002eabbf:\n    if (uVar17 == uVar15) break;\n    if ((ulong)param_2[2] < (ulong)param_2[3]) {\n      param_2[2] = param_2[2] + 1;\n    }\n    else {\n      local_48 = (long *)CONCAT71(local_48._1_7_,bVar23);\n      pcVar2 = *(code **)(*param_2 + 0x50);\n      *(undefined8 *)(puVar16 + -8) = 0x2eaca1;\n      (*pcVar2)(param_2);\n      bVar23 = (byte)local_48;\n    }\n    uVar19 = uVar19 + 1;\n    uVar18 = 0xffffffff;\n  }" { (expression_statement "cVar24 = uVar18 == 0xffffffff;" (assignment_expression "cVar24 = uVar18 == 0xffffffff" identifier = (binary_expression "uVar18 == 0xffffffff" identifier == number_literal)) ;) (expression_statement "bVar10 = param_2 != (long *)0x0 && (bool)cVar24;" (assignment_expression "bVar10 = param_2 != (long *)0x0 && (bool)cVar24" identifier = (binary_expression "param_2 != (long *)0x0 && (bool)cVar24" (binary_expression "param_2 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) && (cast_expression "(bool)cVar24" ( (type_descriptor "bool" primitive_type) ) identifier))) ;) (expression_statement "bVar11 = cVar24;" (assignment_expression "bVar11 = cVar24" identifier = identifier) ;) (if_statement "if (bVar10) {\n      if ((ulong)param_2[2] < (ulong)param_2[3]) {\n        bVar11 = 0;\n      }\n      else {\n        uStack_70._4_4_ = CONCAT31(uStack_70._5_3_,bVar23);\n        local_68 = (long *)CONCAT44(local_68._4_4_,uVar18);\n        local_58 = (ulong *)CONCAT71(local_58._1_7_,cVar24);\n        local_48 = (long *)CONCAT71(local_48._1_7_,bVar10);\n        pcVar2 = *(code **)(*param_2 + 0x48);\n        *(undefined8 *)(puVar16 + -8) = 0x2eae9c;\n        iVar5 = (*pcVar2)(param_2);\n        if (iVar5 == -1) {\n          param_2 = (long *)0x0;\n          bVar11 = (byte)local_48;\n        }\n        else {\n          bVar11 = 0;\n        }\n        uVar18 = (uint)local_68;\n        bVar23 = uStack_70._4_1_;\n        cVar24 = (byte)local_58;\n      }\n    }" if (parenthesized_expression "(bVar10)" ( identifier )) (compound_statement "{\n      if ((ulong)param_2[2] < (ulong)param_2[3]) {\n        bVar11 = 0;\n      }\n      else {\n        uStack_70._4_4_ = CONCAT31(uStack_70._5_3_,bVar23);\n        local_68 = (long *)CONCAT44(local_68._4_4_,uVar18);\n        local_58 = (ulong *)CONCAT71(local_58._1_7_,cVar24);\n        local_48 = (long *)CONCAT71(local_48._1_7_,bVar10);\n        pcVar2 = *(code **)(*param_2 + 0x48);\n        *(undefined8 *)(puVar16 + -8) = 0x2eae9c;\n        iVar5 = (*pcVar2)(param_2);\n        if (iVar5 == -1) {\n          param_2 = (long *)0x0;\n          bVar11 = (byte)local_48;\n        }\n        else {\n          bVar11 = 0;\n        }\n        uVar18 = (uint)local_68;\n        bVar23 = uStack_70._4_1_;\n        cVar24 = (byte)local_58;\n      }\n    }" { (if_statement "if ((ulong)param_2[2] < (ulong)param_2[3]) {\n        bVar11 = 0;\n      }\n      else {\n        uStack_70._4_4_ = CONCAT31(uStack_70._5_3_,bVar23);\n        local_68 = (long *)CONCAT44(local_68._4_4_,uVar18);\n        local_58 = (ulong *)CONCAT71(local_58._1_7_,cVar24);\n        local_48 = (long *)CONCAT71(local_48._1_7_,bVar10);\n        pcVar2 = *(code **)(*param_2 + 0x48);\n        *(undefined8 *)(puVar16 + -8) = 0x2eae9c;\n        iVar5 = (*pcVar2)(param_2);\n        if (iVar5 == -1) {\n          param_2 = (long *)0x0;\n          bVar11 = (byte)local_48;\n        }\n        else {\n          bVar11 = 0;\n        }\n        uVar18 = (uint)local_68;\n        bVar23 = uStack_70._4_1_;\n        cVar24 = (byte)local_58;\n      }" if (parenthesized_expression "((ulong)param_2[2] < (ulong)param_2[3])" ( (binary_expression "(ulong)param_2[2] < (ulong)param_2[3]" (cast_expression "(ulong)param_2[2]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_2[2]" identifier [ number_literal ])) < (cast_expression "(ulong)param_2[3]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_2[3]" identifier [ number_literal ]))) )) (compound_statement "{\n        bVar11 = 0;\n      }" { (expression_statement "bVar11 = 0;" (assignment_expression "bVar11 = 0" identifier = number_literal) ;) }) (else_clause "else {\n        uStack_70._4_4_ = CONCAT31(uStack_70._5_3_,bVar23);\n        local_68 = (long *)CONCAT44(local_68._4_4_,uVar18);\n        local_58 = (ulong *)CONCAT71(local_58._1_7_,cVar24);\n        local_48 = (long *)CONCAT71(local_48._1_7_,bVar10);\n        pcVar2 = *(code **)(*param_2 + 0x48);\n        *(undefined8 *)(puVar16 + -8) = 0x2eae9c;\n        iVar5 = (*pcVar2)(param_2);\n        if (iVar5 == -1) {\n          param_2 = (long *)0x0;\n          bVar11 = (byte)local_48;\n        }\n        else {\n          bVar11 = 0;\n        }\n        uVar18 = (uint)local_68;\n        bVar23 = uStack_70._4_1_;\n        cVar24 = (byte)local_58;\n      }" else (compound_statement "{\n        uStack_70._4_4_ = CONCAT31(uStack_70._5_3_,bVar23);\n        local_68 = (long *)CONCAT44(local_68._4_4_,uVar18);\n        local_58 = (ulong *)CONCAT71(local_58._1_7_,cVar24);\n        local_48 = (long *)CONCAT71(local_48._1_7_,bVar10);\n        pcVar2 = *(code **)(*param_2 + 0x48);\n        *(undefined8 *)(puVar16 + -8) = 0x2eae9c;\n        iVar5 = (*pcVar2)(param_2);\n        if (iVar5 == -1) {\n          param_2 = (long *)0x0;\n          bVar11 = (byte)local_48;\n        }\n        else {\n          bVar11 = 0;\n        }\n        uVar18 = (uint)local_68;\n        bVar23 = uStack_70._4_1_;\n        cVar24 = (byte)local_58;\n      }" { (expression_statement "uStack_70._4_4_ = CONCAT31(uStack_70._5_3_,bVar23);" (assignment_expression "uStack_70._4_4_ = CONCAT31(uStack_70._5_3_,bVar23)" (field_expression "uStack_70._4_4_" identifier . field_identifier) = (call_expression "CONCAT31(uStack_70._5_3_,bVar23)" identifier (argument_list "(uStack_70._5_3_,bVar23)" ( (field_expression "uStack_70._5_3_" identifier . field_identifier) , identifier )))) ;) (expression_statement "local_68 = (long *)CONCAT44(local_68._4_4_,uVar18);" (assignment_expression "local_68 = (long *)CONCAT44(local_68._4_4_,uVar18)" identifier = (cast_expression "(long *)CONCAT44(local_68._4_4_,uVar18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (call_expression "CONCAT44(local_68._4_4_,uVar18)" identifier (argument_list "(local_68._4_4_,uVar18)" ( (field_expression "local_68._4_4_" identifier . field_identifier) , identifier ))))) ;) (expression_statement "local_58 = (ulong *)CONCAT71(local_58._1_7_,cVar24);" (assignment_expression "local_58 = (ulong *)CONCAT71(local_58._1_7_,cVar24)" identifier = (cast_expression "(ulong *)CONCAT71(local_58._1_7_,cVar24)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "CONCAT71(local_58._1_7_,cVar24)" identifier (argument_list "(local_58._1_7_,cVar24)" ( (field_expression "local_58._1_7_" identifier . field_identifier) , identifier ))))) ;) (expression_statement "local_48 = (long *)CONCAT71(local_48._1_7_,bVar10);" (assignment_expression "local_48 = (long *)CONCAT71(local_48._1_7_,bVar10)" identifier = (cast_expression "(long *)CONCAT71(local_48._1_7_,bVar10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (call_expression "CONCAT71(local_48._1_7_,bVar10)" identifier (argument_list "(local_48._1_7_,bVar10)" ( (field_expression "local_48._1_7_" identifier . field_identifier) , identifier ))))) ;) (expression_statement "pcVar2 = *(code **)(*param_2 + 0x48);" (assignment_expression "pcVar2 = *(code **)(*param_2 + 0x48)" identifier = (pointer_expression "*(code **)(*param_2 + 0x48)" * (cast_expression "(code **)(*param_2 + 0x48)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_2 + 0x48)" ( (binary_expression "*param_2 + 0x48" (pointer_expression "*param_2" * identifier) + number_literal) ))))) ;) (expression_statement "*(undefined8 *)(puVar16 + -8) = 0x2eae9c;" (assignment_expression "*(undefined8 *)(puVar16 + -8) = 0x2eae9c" (pointer_expression "*(undefined8 *)(puVar16 + -8)" * (cast_expression "(undefined8 *)(puVar16 + -8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -8)" ( (binary_expression "puVar16 + -8" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar5 = (*pcVar2)(param_2);" (assignment_expression "iVar5 = (*pcVar2)(param_2)" identifier = (call_expression "(*pcVar2)(param_2)" (parenthesized_expression "(*pcVar2)" ( (pointer_expression "*pcVar2" * identifier) )) (argument_list "(param_2)" ( identifier )))) ;) (if_statement "if (iVar5 == -1) {\n          param_2 = (long *)0x0;\n          bVar11 = (byte)local_48;\n        }\n        else {\n          bVar11 = 0;\n        }" if (parenthesized_expression "(iVar5 == -1)" ( (binary_expression "iVar5 == -1" identifier == number_literal) )) (compound_statement "{\n          param_2 = (long *)0x0;\n          bVar11 = (byte)local_48;\n        }" { (expression_statement "param_2 = (long *)0x0;" (assignment_expression "param_2 = (long *)0x0" identifier = (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "bVar11 = (byte)local_48;" (assignment_expression "bVar11 = (byte)local_48" identifier = (cast_expression "(byte)local_48" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) }) (else_clause "else {\n          bVar11 = 0;\n        }" else (compound_statement "{\n          bVar11 = 0;\n        }" { (expression_statement "bVar11 = 0;" (assignment_expression "bVar11 = 0" identifier = number_literal) ;) }))) (expression_statement "uVar18 = (uint)local_68;" (assignment_expression "uVar18 = (uint)local_68" identifier = (cast_expression "(uint)local_68" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "bVar23 = uStack_70._4_1_;" (assignment_expression "bVar23 = uStack_70._4_1_" identifier = (field_expression "uStack_70._4_1_" identifier . field_identifier)) ;) (expression_statement "cVar24 = (byte)local_58;" (assignment_expression "cVar24 = (byte)local_58" identifier = (cast_expression "(byte)local_58" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) }))) })) (expression_statement "plVar21 = local_40;" (assignment_expression "plVar21 = local_40" identifier = identifier) ;) (expression_statement "bVar12 = local_40 != (long *)0x0 & bVar23;" (assignment_expression "bVar12 = local_40 != (long *)0x0 & bVar23" identifier = (binary_expression "local_40 != (long *)0x0 & bVar23" (binary_expression "local_40 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) & identifier)) ;) (expression_statement "bVar13 = bVar23;" (assignment_expression "bVar13 = bVar23" identifier = identifier) ;) (if_statement "if (bVar12 == 0) {\nLAB_002eab55:\n      if (bVar11 == bVar13) break;\n    }\n    else {\n      if ((ulong)local_40[3] <= (ulong)local_40[2]) {\n        local_68 = (long *)CONCAT71(local_68._1_7_,cVar24);\n        local_58 = (ulong *)CONCAT71(local_58._1_7_,bVar12);\n        local_48 = (long *)CONCAT71(local_48._1_7_,bVar11);\n        pcVar2 = *(code **)(*local_40 + 0x48);\n        uStack_70._3_1_ = bVar23;\n        uStack_70._4_4_ = uVar18;\n        *(undefined8 *)(puVar16 + -8) = 0x2eaeec;\n        iVar5 = (*pcVar2)(plVar21);\n        plVar21 = (long *)0x0;\n        bVar13 = (byte)local_58;\n        if (iVar5 != -1) {\n          bVar13 = 0;\n          plVar21 = local_40;\n        }\n        uVar18 = uStack_70._4_4_;\n        local_40 = plVar21;\n        bVar23 = uStack_70._3_1_;\n        bVar11 = (byte)local_48;\n        cVar24 = (byte)local_68;\n        goto LAB_002eab55;\n      }\n      if (bVar11 == 0) break;\n    }" if (parenthesized_expression "(bVar12 == 0)" ( (binary_expression "bVar12 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_002eab55:\n      if (bVar11 == bVar13) break;\n    }" { (labeled_statement "LAB_002eab55:\n      if (bVar11 == bVar13) break;" statement_identifier : (if_statement "if (bVar11 == bVar13) break;" if (parenthesized_expression "(bVar11 == bVar13)" ( (binary_expression "bVar11 == bVar13" identifier == identifier) )) (break_statement "break;" break ;))) }) (else_clause "else {\n      if ((ulong)local_40[3] <= (ulong)local_40[2]) {\n        local_68 = (long *)CONCAT71(local_68._1_7_,cVar24);\n        local_58 = (ulong *)CONCAT71(local_58._1_7_,bVar12);\n        local_48 = (long *)CONCAT71(local_48._1_7_,bVar11);\n        pcVar2 = *(code **)(*local_40 + 0x48);\n        uStack_70._3_1_ = bVar23;\n        uStack_70._4_4_ = uVar18;\n        *(undefined8 *)(puVar16 + -8) = 0x2eaeec;\n        iVar5 = (*pcVar2)(plVar21);\n        plVar21 = (long *)0x0;\n        bVar13 = (byte)local_58;\n        if (iVar5 != -1) {\n          bVar13 = 0;\n          plVar21 = local_40;\n        }\n        uVar18 = uStack_70._4_4_;\n        local_40 = plVar21;\n        bVar23 = uStack_70._3_1_;\n        bVar11 = (byte)local_48;\n        cVar24 = (byte)local_68;\n        goto LAB_002eab55;\n      }\n      if (bVar11 == 0) break;\n    }" else (compound_statement "{\n      if ((ulong)local_40[3] <= (ulong)local_40[2]) {\n        local_68 = (long *)CONCAT71(local_68._1_7_,cVar24);\n        local_58 = (ulong *)CONCAT71(local_58._1_7_,bVar12);\n        local_48 = (long *)CONCAT71(local_48._1_7_,bVar11);\n        pcVar2 = *(code **)(*local_40 + 0x48);\n        uStack_70._3_1_ = bVar23;\n        uStack_70._4_4_ = uVar18;\n        *(undefined8 *)(puVar16 + -8) = 0x2eaeec;\n        iVar5 = (*pcVar2)(plVar21);\n        plVar21 = (long *)0x0;\n        bVar13 = (byte)local_58;\n        if (iVar5 != -1) {\n          bVar13 = 0;\n          plVar21 = local_40;\n        }\n        uVar18 = uStack_70._4_4_;\n        local_40 = plVar21;\n        bVar23 = uStack_70._3_1_;\n        bVar11 = (byte)local_48;\n        cVar24 = (byte)local_68;\n        goto LAB_002eab55;\n      }\n      if (bVar11 == 0) break;\n    }" { (if_statement "if ((ulong)local_40[3] <= (ulong)local_40[2]) {\n        local_68 = (long *)CONCAT71(local_68._1_7_,cVar24);\n        local_58 = (ulong *)CONCAT71(local_58._1_7_,bVar12);\n        local_48 = (long *)CONCAT71(local_48._1_7_,bVar11);\n        pcVar2 = *(code **)(*local_40 + 0x48);\n        uStack_70._3_1_ = bVar23;\n        uStack_70._4_4_ = uVar18;\n        *(undefined8 *)(puVar16 + -8) = 0x2eaeec;\n        iVar5 = (*pcVar2)(plVar21);\n        plVar21 = (long *)0x0;\n        bVar13 = (byte)local_58;\n        if (iVar5 != -1) {\n          bVar13 = 0;\n          plVar21 = local_40;\n        }\n        uVar18 = uStack_70._4_4_;\n        local_40 = plVar21;\n        bVar23 = uStack_70._3_1_;\n        bVar11 = (byte)local_48;\n        cVar24 = (byte)local_68;\n        goto LAB_002eab55;\n      }" if (parenthesized_expression "((ulong)local_40[3] <= (ulong)local_40[2])" ( (binary_expression "(ulong)local_40[3] <= (ulong)local_40[2]" (cast_expression "(ulong)local_40[3]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "local_40[3]" identifier [ number_literal ])) <= (cast_expression "(ulong)local_40[2]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "local_40[2]" identifier [ number_literal ]))) )) (compound_statement "{\n        local_68 = (long *)CONCAT71(local_68._1_7_,cVar24);\n        local_58 = (ulong *)CONCAT71(local_58._1_7_,bVar12);\n        local_48 = (long *)CONCAT71(local_48._1_7_,bVar11);\n        pcVar2 = *(code **)(*local_40 + 0x48);\n        uStack_70._3_1_ = bVar23;\n        uStack_70._4_4_ = uVar18;\n        *(undefined8 *)(puVar16 + -8) = 0x2eaeec;\n        iVar5 = (*pcVar2)(plVar21);\n        plVar21 = (long *)0x0;\n        bVar13 = (byte)local_58;\n        if (iVar5 != -1) {\n          bVar13 = 0;\n          plVar21 = local_40;\n        }\n        uVar18 = uStack_70._4_4_;\n        local_40 = plVar21;\n        bVar23 = uStack_70._3_1_;\n        bVar11 = (byte)local_48;\n        cVar24 = (byte)local_68;\n        goto LAB_002eab55;\n      }" { (expression_statement "local_68 = (long *)CONCAT71(local_68._1_7_,cVar24);" (assignment_expression "local_68 = (long *)CONCAT71(local_68._1_7_,cVar24)" identifier = (cast_expression "(long *)CONCAT71(local_68._1_7_,cVar24)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (call_expression "CONCAT71(local_68._1_7_,cVar24)" identifier (argument_list "(local_68._1_7_,cVar24)" ( (field_expression "local_68._1_7_" identifier . field_identifier) , identifier ))))) ;) (expression_statement "local_58 = (ulong *)CONCAT71(local_58._1_7_,bVar12);" (assignment_expression "local_58 = (ulong *)CONCAT71(local_58._1_7_,bVar12)" identifier = (cast_expression "(ulong *)CONCAT71(local_58._1_7_,bVar12)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "CONCAT71(local_58._1_7_,bVar12)" identifier (argument_list "(local_58._1_7_,bVar12)" ( (field_expression "local_58._1_7_" identifier . field_identifier) , identifier ))))) ;) (expression_statement "local_48 = (long *)CONCAT71(local_48._1_7_,bVar11);" (assignment_expression "local_48 = (long *)CONCAT71(local_48._1_7_,bVar11)" identifier = (cast_expression "(long *)CONCAT71(local_48._1_7_,bVar11)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (call_expression "CONCAT71(local_48._1_7_,bVar11)" identifier (argument_list "(local_48._1_7_,bVar11)" ( (field_expression "local_48._1_7_" identifier . field_identifier) , identifier ))))) ;) (expression_statement "pcVar2 = *(code **)(*local_40 + 0x48);" (assignment_expression "pcVar2 = *(code **)(*local_40 + 0x48)" identifier = (pointer_expression "*(code **)(*local_40 + 0x48)" * (cast_expression "(code **)(*local_40 + 0x48)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*local_40 + 0x48)" ( (binary_expression "*local_40 + 0x48" (pointer_expression "*local_40" * identifier) + number_literal) ))))) ;) (expression_statement "uStack_70._3_1_ = bVar23;" (assignment_expression "uStack_70._3_1_ = bVar23" (field_expression "uStack_70._3_1_" identifier . field_identifier) = identifier) ;) (expression_statement "uStack_70._4_4_ = uVar18;" (assignment_expression "uStack_70._4_4_ = uVar18" (field_expression "uStack_70._4_4_" identifier . field_identifier) = identifier) ;) (expression_statement "*(undefined8 *)(puVar16 + -8) = 0x2eaeec;" (assignment_expression "*(undefined8 *)(puVar16 + -8) = 0x2eaeec" (pointer_expression "*(undefined8 *)(puVar16 + -8)" * (cast_expression "(undefined8 *)(puVar16 + -8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -8)" ( (binary_expression "puVar16 + -8" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar5 = (*pcVar2)(plVar21);" (assignment_expression "iVar5 = (*pcVar2)(plVar21)" identifier = (call_expression "(*pcVar2)(plVar21)" (parenthesized_expression "(*pcVar2)" ( (pointer_expression "*pcVar2" * identifier) )) (argument_list "(plVar21)" ( identifier )))) ;) (expression_statement "plVar21 = (long *)0x0;" (assignment_expression "plVar21 = (long *)0x0" identifier = (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "bVar13 = (byte)local_58;" (assignment_expression "bVar13 = (byte)local_58" identifier = (cast_expression "(byte)local_58" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (if_statement "if (iVar5 != -1) {\n          bVar13 = 0;\n          plVar21 = local_40;\n        }" if (parenthesized_expression "(iVar5 != -1)" ( (binary_expression "iVar5 != -1" identifier != number_literal) )) (compound_statement "{\n          bVar13 = 0;\n          plVar21 = local_40;\n        }" { (expression_statement "bVar13 = 0;" (assignment_expression "bVar13 = 0" identifier = number_literal) ;) (expression_statement "plVar21 = local_40;" (assignment_expression "plVar21 = local_40" identifier = identifier) ;) })) (expression_statement "uVar18 = uStack_70._4_4_;" (assignment_expression "uVar18 = uStack_70._4_4_" identifier = (field_expression "uStack_70._4_4_" identifier . field_identifier)) ;) (expression_statement "local_40 = plVar21;" (assignment_expression "local_40 = plVar21" identifier = identifier) ;) (expression_statement "bVar23 = uStack_70._3_1_;" (assignment_expression "bVar23 = uStack_70._3_1_" identifier = (field_expression "uStack_70._3_1_" identifier . field_identifier)) ;) (expression_statement "bVar11 = (byte)local_48;" (assignment_expression "bVar11 = (byte)local_48" identifier = (cast_expression "(byte)local_48" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "cVar24 = (byte)local_68;" (assignment_expression "cVar24 = (byte)local_68" identifier = (cast_expression "(byte)local_68" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (goto_statement "goto LAB_002eab55;" goto statement_identifier ;) })) (if_statement "if (bVar11 == 0) break;" if (parenthesized_expression "(bVar11 == 0)" ( (binary_expression "bVar11 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) }))) (if_statement "if ((param_2 == (long *)0x0) || (cVar24 == '\0')) {\n      cVar24 = (char)uVar18;\n    }\n    else if ((char *)param_2[2] < (char *)param_2[3]) {\n      cVar24 = *(char *)param_2[2];\n    }\n    else {\n      local_58 = (ulong *)CONCAT71(local_58._1_7_,bVar23);\n      local_48 = (long *)CONCAT44(local_48._4_4_,uVar18);\n      pcVar2 = *(code **)(*param_2 + 0x48);\n      *(undefined8 *)(puVar16 + -8) = 0x2eaf38;\n      iVar5 = (*pcVar2)(param_2);\n      cVar24 = -1;\n      uVar18 = (uint)local_48;\n      bVar23 = (byte)local_58;\n      if (iVar5 == -1) {\n        param_2 = (long *)0x0;\n      }\n      else {\n        cVar24 = (char)iVar5;\n      }\n    }" if (parenthesized_expression "((param_2 == (long *)0x0) || (cVar24 == '\0'))" ( (binary_expression "(param_2 == (long *)0x0) || (cVar24 == '\0')" (parenthesized_expression "(param_2 == (long *)0x0)" ( (binary_expression "param_2 == (long *)0x0" identifier == (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(cVar24 == '\0')" ( (binary_expression "cVar24 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n      cVar24 = (char)uVar18;\n    }" { (expression_statement "cVar24 = (char)uVar18;" (assignment_expression "cVar24 = (char)uVar18" identifier = (cast_expression "(char)uVar18" ( (type_descriptor "char" primitive_type) ) identifier)) ;) }) (else_clause "else if ((char *)param_2[2] < (char *)param_2[3]) {\n      cVar24 = *(char *)param_2[2];\n    }\n    else {\n      local_58 = (ulong *)CONCAT71(local_58._1_7_,bVar23);\n      local_48 = (long *)CONCAT44(local_48._4_4_,uVar18);\n      pcVar2 = *(code **)(*param_2 + 0x48);\n      *(undefined8 *)(puVar16 + -8) = 0x2eaf38;\n      iVar5 = (*pcVar2)(param_2);\n      cVar24 = -1;\n      uVar18 = (uint)local_48;\n      bVar23 = (byte)local_58;\n      if (iVar5 == -1) {\n        param_2 = (long *)0x0;\n      }\n      else {\n        cVar24 = (char)iVar5;\n      }\n    }" else (if_statement "if ((char *)param_2[2] < (char *)param_2[3]) {\n      cVar24 = *(char *)param_2[2];\n    }\n    else {\n      local_58 = (ulong *)CONCAT71(local_58._1_7_,bVar23);\n      local_48 = (long *)CONCAT44(local_48._4_4_,uVar18);\n      pcVar2 = *(code **)(*param_2 + 0x48);\n      *(undefined8 *)(puVar16 + -8) = 0x2eaf38;\n      iVar5 = (*pcVar2)(param_2);\n      cVar24 = -1;\n      uVar18 = (uint)local_48;\n      bVar23 = (byte)local_58;\n      if (iVar5 == -1) {\n        param_2 = (long *)0x0;\n      }\n      else {\n        cVar24 = (char)iVar5;\n      }\n    }" if (parenthesized_expression "((char *)param_2[2] < (char *)param_2[3])" ( (binary_expression "(char *)param_2[2] < (char *)param_2[3]" (cast_expression "(char *)param_2[2]" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[2]" identifier [ number_literal ])) < (cast_expression "(char *)param_2[3]" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[3]" identifier [ number_literal ]))) )) (compound_statement "{\n      cVar24 = *(char *)param_2[2];\n    }" { (expression_statement "cVar24 = *(char *)param_2[2];" (assignment_expression "cVar24 = *(char *)param_2[2]" identifier = (pointer_expression "*(char *)param_2[2]" * (cast_expression "(char *)param_2[2]" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[2]" identifier [ number_literal ])))) ;) }) (else_clause "else {\n      local_58 = (ulong *)CONCAT71(local_58._1_7_,bVar23);\n      local_48 = (long *)CONCAT44(local_48._4_4_,uVar18);\n      pcVar2 = *(code **)(*param_2 + 0x48);\n      *(undefined8 *)(puVar16 + -8) = 0x2eaf38;\n      iVar5 = (*pcVar2)(param_2);\n      cVar24 = -1;\n      uVar18 = (uint)local_48;\n      bVar23 = (byte)local_58;\n      if (iVar5 == -1) {\n        param_2 = (long *)0x0;\n      }\n      else {\n        cVar24 = (char)iVar5;\n      }\n    }" else (compound_statement "{\n      local_58 = (ulong *)CONCAT71(local_58._1_7_,bVar23);\n      local_48 = (long *)CONCAT44(local_48._4_4_,uVar18);\n      pcVar2 = *(code **)(*param_2 + 0x48);\n      *(undefined8 *)(puVar16 + -8) = 0x2eaf38;\n      iVar5 = (*pcVar2)(param_2);\n      cVar24 = -1;\n      uVar18 = (uint)local_48;\n      bVar23 = (byte)local_58;\n      if (iVar5 == -1) {\n        param_2 = (long *)0x0;\n      }\n      else {\n        cVar24 = (char)iVar5;\n      }\n    }" { (expression_statement "local_58 = (ulong *)CONCAT71(local_58._1_7_,bVar23);" (assignment_expression "local_58 = (ulong *)CONCAT71(local_58._1_7_,bVar23)" identifier = (cast_expression "(ulong *)CONCAT71(local_58._1_7_,bVar23)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "CONCAT71(local_58._1_7_,bVar23)" identifier (argument_list "(local_58._1_7_,bVar23)" ( (field_expression "local_58._1_7_" identifier . field_identifier) , identifier ))))) ;) (expression_statement "local_48 = (long *)CONCAT44(local_48._4_4_,uVar18);" (assignment_expression "local_48 = (long *)CONCAT44(local_48._4_4_,uVar18)" identifier = (cast_expression "(long *)CONCAT44(local_48._4_4_,uVar18)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (call_expression "CONCAT44(local_48._4_4_,uVar18)" identifier (argument_list "(local_48._4_4_,uVar18)" ( (field_expression "local_48._4_4_" identifier . field_identifier) , identifier ))))) ;) (expression_statement "pcVar2 = *(code **)(*param_2 + 0x48);" (assignment_expression "pcVar2 = *(code **)(*param_2 + 0x48)" identifier = (pointer_expression "*(code **)(*param_2 + 0x48)" * (cast_expression "(code **)(*param_2 + 0x48)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_2 + 0x48)" ( (binary_expression "*param_2 + 0x48" (pointer_expression "*param_2" * identifier) + number_literal) ))))) ;) (expression_statement "*(undefined8 *)(puVar16 + -8) = 0x2eaf38;" (assignment_expression "*(undefined8 *)(puVar16 + -8) = 0x2eaf38" (pointer_expression "*(undefined8 *)(puVar16 + -8)" * (cast_expression "(undefined8 *)(puVar16 + -8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -8)" ( (binary_expression "puVar16 + -8" identifier + number_literal) )))) = number_literal) ;) (expression_statement "iVar5 = (*pcVar2)(param_2);" (assignment_expression "iVar5 = (*pcVar2)(param_2)" identifier = (call_expression "(*pcVar2)(param_2)" (parenthesized_expression "(*pcVar2)" ( (pointer_expression "*pcVar2" * identifier) )) (argument_list "(param_2)" ( identifier )))) ;) (expression_statement "cVar24 = -1;" (assignment_expression "cVar24 = -1" identifier = number_literal) ;) (expression_statement "uVar18 = (uint)local_48;" (assignment_expression "uVar18 = (uint)local_48" identifier = (cast_expression "(uint)local_48" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "bVar23 = (byte)local_58;" (assignment_expression "bVar23 = (byte)local_58" identifier = (cast_expression "(byte)local_58" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (if_statement "if (iVar5 == -1) {\n        param_2 = (long *)0x0;\n      }\n      else {\n        cVar24 = (char)iVar5;\n      }" if (parenthesized_expression "(iVar5 == -1)" ( (binary_expression "iVar5 == -1" identifier == number_literal) )) (compound_statement "{\n        param_2 = (long *)0x0;\n      }" { (expression_statement "param_2 = (long *)0x0;" (assignment_expression "param_2 = (long *)0x0" identifier = (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else {\n        cVar24 = (char)iVar5;\n      }" else (compound_statement "{\n        cVar24 = (char)iVar5;\n      }" { (expression_statement "cVar24 = (char)iVar5;" (assignment_expression "cVar24 = (char)iVar5" identifier = (cast_expression "(char)iVar5" ( (type_descriptor "char" primitive_type) ) identifier)) ;) }))) }))))) (if_statement "if (uVar15 == 0) goto LAB_002eac30;" if (parenthesized_expression "(uVar15 == 0)" ( (binary_expression "uVar15 == 0" identifier == number_literal) )) (goto_statement "goto LAB_002eac30;" goto statement_identifier ;)) (expression_statement "uVar8 = 0;" (assignment_expression "uVar8 = 0" identifier = number_literal) ;) (expression_statement "uVar17 = 0;" (assignment_expression "uVar17 = 0" identifier = number_literal) ;) (do_statement "do {\n      while (puVar7[uVar8] <= uVar19) {\n        uVar17 = uVar17 + 1;\nLAB_002eab88:\n        uVar8 = uVar8 + 1;\n        if (uVar15 <= uVar8) goto LAB_002eabbf;\n      }\n      piVar1 = (int *)((long)puVar22 + uVar8 * 4);\n      if (*(char *)(*(long *)(param_7 + (long)*piVar1 * 8) + uVar19) == cVar24) goto LAB_002eab88;\n      uVar15 = uVar15 - 1;\n      *piVar1 = *(int *)((long)puVar22 + uVar15 * 4);\n      puVar7[uVar8] = puVar7[uVar15];\n    } while (uVar8 < uVar15);" do (compound_statement "{\n      while (puVar7[uVar8] <= uVar19) {\n        uVar17 = uVar17 + 1;\nLAB_002eab88:\n        uVar8 = uVar8 + 1;\n        if (uVar15 <= uVar8) goto LAB_002eabbf;\n      }\n      piVar1 = (int *)((long)puVar22 + uVar8 * 4);\n      if (*(char *)(*(long *)(param_7 + (long)*piVar1 * 8) + uVar19) == cVar24) goto LAB_002eab88;\n      uVar15 = uVar15 - 1;\n      *piVar1 = *(int *)((long)puVar22 + uVar15 * 4);\n      puVar7[uVar8] = puVar7[uVar15];\n    }" { (while_statement "while (puVar7[uVar8] <= uVar19) {\n        uVar17 = uVar17 + 1;\nLAB_002eab88:\n        uVar8 = uVar8 + 1;\n        if (uVar15 <= uVar8) goto LAB_002eabbf;\n      }" while (parenthesized_expression "(puVar7[uVar8] <= uVar19)" ( (binary_expression "puVar7[uVar8] <= uVar19" (subscript_expression "puVar7[uVar8]" identifier [ identifier ]) <= identifier) )) (compound_statement "{\n        uVar17 = uVar17 + 1;\nLAB_002eab88:\n        uVar8 = uVar8 + 1;\n        if (uVar15 <= uVar8) goto LAB_002eabbf;\n      }" { (expression_statement "uVar17 = uVar17 + 1;" (assignment_expression "uVar17 = uVar17 + 1" identifier = (binary_expression "uVar17 + 1" identifier + number_literal)) ;) (labeled_statement "LAB_002eab88:\n        uVar8 = uVar8 + 1;" statement_identifier : (expression_statement "uVar8 = uVar8 + 1;" (assignment_expression "uVar8 = uVar8 + 1" identifier = (binary_expression "uVar8 + 1" identifier + number_literal)) ;)) (if_statement "if (uVar15 <= uVar8) goto LAB_002eabbf;" if (parenthesized_expression "(uVar15 <= uVar8)" ( (binary_expression "uVar15 <= uVar8" identifier <= identifier) )) (goto_statement "goto LAB_002eabbf;" goto statement_identifier ;)) })) (expression_statement "piVar1 = (int *)((long)puVar22 + uVar8 * 4);" (assignment_expression "piVar1 = (int *)((long)puVar22 + uVar8 * 4)" identifier = (cast_expression "(int *)((long)puVar22 + uVar8 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar22 + uVar8 * 4)" ( (binary_expression "(long)puVar22 + uVar8 * 4" (cast_expression "(long)puVar22" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (binary_expression "uVar8 * 4" identifier * number_literal)) )))) ;) (if_statement "if (*(char *)(*(long *)(param_7 + (long)*piVar1 * 8) + uVar19) == cVar24) goto LAB_002eab88;" if (parenthesized_expression "(*(char *)(*(long *)(param_7 + (long)*piVar1 * 8) + uVar19) == cVar24)" ( (binary_expression "*(char *)(*(long *)(param_7 + (long)*piVar1 * 8) + uVar19) == cVar24" (pointer_expression "*(char *)(*(long *)(param_7 + (long)*piVar1 * 8) + uVar19)" * (cast_expression "(char *)(*(long *)(param_7 + (long)*piVar1 * 8) + uVar19)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_7 + (long)*piVar1 * 8) + uVar19)" ( (binary_expression "*(long *)(param_7 + (long)*piVar1 * 8) + uVar19" (pointer_expression "*(long *)(param_7 + (long)*piVar1 * 8)" * (cast_expression "(long *)(param_7 + (long)*piVar1 * 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_7 + (long)*piVar1 * 8)" ( (binary_expression "param_7 + (long)*piVar1 * 8" identifier + (binary_expression "(long)*piVar1 * 8" (cast_expression "(long)*piVar1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "*piVar1" * identifier)) * number_literal)) )))) + identifier) )))) == identifier) )) (goto_statement "goto LAB_002eab88;" goto statement_identifier ;)) (expression_statement "uVar15 = uVar15 - 1;" (assignment_expression "uVar15 = uVar15 - 1" identifier = (binary_expression "uVar15 - 1" identifier - number_literal)) ;) (expression_statement "*piVar1 = *(int *)((long)puVar22 + uVar15 * 4);" (assignment_expression "*piVar1 = *(int *)((long)puVar22 + uVar15 * 4)" (pointer_expression "*piVar1" * identifier) = (pointer_expression "*(int *)((long)puVar22 + uVar15 * 4)" * (cast_expression "(int *)((long)puVar22 + uVar15 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar22 + uVar15 * 4)" ( (binary_expression "(long)puVar22 + uVar15 * 4" (cast_expression "(long)puVar22" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (binary_expression "uVar15 * 4" identifier * number_literal)) ))))) ;) (expression_statement "puVar7[uVar8] = puVar7[uVar15];" (assignment_expression "puVar7[uVar8] = puVar7[uVar15]" (subscript_expression "puVar7[uVar8]" identifier [ identifier ]) = (subscript_expression "puVar7[uVar15]" identifier [ identifier ])) ;) }) while (parenthesized_expression "(uVar8 < uVar15)" ( (binary_expression "uVar8 < uVar15" identifier < identifier) )) ;) (labeled_statement "LAB_002eabbf:\n    if (uVar17 == uVar15) break;" statement_identifier : (if_statement "if (uVar17 == uVar15) break;" if (parenthesized_expression "(uVar17 == uVar15)" ( (binary_expression "uVar17 == uVar15" identifier == identifier) )) (break_statement "break;" break ;))) (if_statement "if ((ulong)param_2[2] < (ulong)param_2[3]) {\n      param_2[2] = param_2[2] + 1;\n    }\n    else {\n      local_48 = (long *)CONCAT71(local_48._1_7_,bVar23);\n      pcVar2 = *(code **)(*param_2 + 0x50);\n      *(undefined8 *)(puVar16 + -8) = 0x2eaca1;\n      (*pcVar2)(param_2);\n      bVar23 = (byte)local_48;\n    }" if (parenthesized_expression "((ulong)param_2[2] < (ulong)param_2[3])" ( (binary_expression "(ulong)param_2[2] < (ulong)param_2[3]" (cast_expression "(ulong)param_2[2]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_2[2]" identifier [ number_literal ])) < (cast_expression "(ulong)param_2[3]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "param_2[3]" identifier [ number_literal ]))) )) (compound_statement "{\n      param_2[2] = param_2[2] + 1;\n    }" { (expression_statement "param_2[2] = param_2[2] + 1;" (assignment_expression "param_2[2] = param_2[2] + 1" (subscript_expression "param_2[2]" identifier [ number_literal ]) = (binary_expression "param_2[2] + 1" (subscript_expression "param_2[2]" identifier [ number_literal ]) + number_literal)) ;) }) (else_clause "else {\n      local_48 = (long *)CONCAT71(local_48._1_7_,bVar23);\n      pcVar2 = *(code **)(*param_2 + 0x50);\n      *(undefined8 *)(puVar16 + -8) = 0x2eaca1;\n      (*pcVar2)(param_2);\n      bVar23 = (byte)local_48;\n    }" else (compound_statement "{\n      local_48 = (long *)CONCAT71(local_48._1_7_,bVar23);\n      pcVar2 = *(code **)(*param_2 + 0x50);\n      *(undefined8 *)(puVar16 + -8) = 0x2eaca1;\n      (*pcVar2)(param_2);\n      bVar23 = (byte)local_48;\n    }" { (expression_statement "local_48 = (long *)CONCAT71(local_48._1_7_,bVar23);" (assignment_expression "local_48 = (long *)CONCAT71(local_48._1_7_,bVar23)" identifier = (cast_expression "(long *)CONCAT71(local_48._1_7_,bVar23)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (call_expression "CONCAT71(local_48._1_7_,bVar23)" identifier (argument_list "(local_48._1_7_,bVar23)" ( (field_expression "local_48._1_7_" identifier . field_identifier) , identifier ))))) ;) (expression_statement "pcVar2 = *(code **)(*param_2 + 0x50);" (assignment_expression "pcVar2 = *(code **)(*param_2 + 0x50)" identifier = (pointer_expression "*(code **)(*param_2 + 0x50)" * (cast_expression "(code **)(*param_2 + 0x50)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_2 + 0x50)" ( (binary_expression "*param_2 + 0x50" (pointer_expression "*param_2" * identifier) + number_literal) ))))) ;) (expression_statement "*(undefined8 *)(puVar16 + -8) = 0x2eaca1;" (assignment_expression "*(undefined8 *)(puVar16 + -8) = 0x2eaca1" (pointer_expression "*(undefined8 *)(puVar16 + -8)" * (cast_expression "(undefined8 *)(puVar16 + -8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + -8)" ( (binary_expression "puVar16 + -8" identifier + number_literal) )))) = number_literal) ;) (expression_statement "(*pcVar2)(param_2);" (call_expression "(*pcVar2)(param_2)" (parenthesized_expression "(*pcVar2)" ( (pointer_expression "*pcVar2" * identifier) )) (argument_list "(param_2)" ( identifier ))) ;) (expression_statement "bVar23 = (byte)local_48;" (assignment_expression "bVar23 = (byte)local_48" identifier = (cast_expression "(byte)local_48" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) }))) (expression_statement "uVar19 = uVar19 + 1;" (assignment_expression "uVar19 = uVar19 + 1" identifier = (binary_expression "uVar19 + 1" identifier + number_literal)) ;) (expression_statement "uVar18 = 0xffffffff;" (assignment_expression "uVar18 = 0xffffffff" identifier = number_literal) ;) }) while (parenthesized_expression "( true )" ( true )) ;) (if_statement "if (uVar15 == 1) {\n    uVar15 = *puVar7;\njoined_r0x002eacc3:\n    if (uVar15 == uVar19) {\nLAB_002eacc9:\n      iVar5 = (int)*puVar22;\n      if (param_8 <= (ulong)(long)iVar5) {\n        iVar5 = iVar5 - (int)param_8;\n      }\n      *local_60 = iVar5;\n      goto LAB_002eac37;\n    }\n  }\n  else if (uVar15 == 2) {\n    if (*puVar7 != uVar19) {\n      uVar15 = puVar7[1];\n      goto joined_r0x002eacc3;\n    }\n    goto LAB_002eacc9;\n  }" if (parenthesized_expression "(uVar15 == 1)" ( (binary_expression "uVar15 == 1" identifier == number_literal) )) (compound_statement "{\n    uVar15 = *puVar7;\njoined_r0x002eacc3:\n    if (uVar15 == uVar19) {\nLAB_002eacc9:\n      iVar5 = (int)*puVar22;\n      if (param_8 <= (ulong)(long)iVar5) {\n        iVar5 = iVar5 - (int)param_8;\n      }\n      *local_60 = iVar5;\n      goto LAB_002eac37;\n    }\n  }" { (expression_statement "uVar15 = *puVar7;" (assignment_expression "uVar15 = *puVar7" identifier = (pointer_expression "*puVar7" * identifier)) ;) (labeled_statement "joined_r0x002eacc3:\n    if (uVar15 == uVar19) {\nLAB_002eacc9:\n      iVar5 = (int)*puVar22;\n      if (param_8 <= (ulong)(long)iVar5) {\n        iVar5 = iVar5 - (int)param_8;\n      }\n      *local_60 = iVar5;\n      goto LAB_002eac37;\n    }" statement_identifier : (if_statement "if (uVar15 == uVar19) {\nLAB_002eacc9:\n      iVar5 = (int)*puVar22;\n      if (param_8 <= (ulong)(long)iVar5) {\n        iVar5 = iVar5 - (int)param_8;\n      }\n      *local_60 = iVar5;\n      goto LAB_002eac37;\n    }" if (parenthesized_expression "(uVar15 == uVar19)" ( (binary_expression "uVar15 == uVar19" identifier == identifier) )) (compound_statement "{\nLAB_002eacc9:\n      iVar5 = (int)*puVar22;\n      if (param_8 <= (ulong)(long)iVar5) {\n        iVar5 = iVar5 - (int)param_8;\n      }\n      *local_60 = iVar5;\n      goto LAB_002eac37;\n    }" { (labeled_statement "LAB_002eacc9:\n      iVar5 = (int)*puVar22;" statement_identifier : (expression_statement "iVar5 = (int)*puVar22;" (assignment_expression "iVar5 = (int)*puVar22" identifier = (cast_expression "(int)*puVar22" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*puVar22" * identifier))) ;)) (if_statement "if (param_8 <= (ulong)(long)iVar5) {\n        iVar5 = iVar5 - (int)param_8;\n      }" if (parenthesized_expression "(param_8 <= (ulong)(long)iVar5)" ( (binary_expression "param_8 <= (ulong)(long)iVar5" identifier <= (cast_expression "(ulong)(long)iVar5" ( (type_descriptor "ulong" type_identifier) ) (cast_expression "(long)iVar5" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier))) )) (compound_statement "{\n        iVar5 = iVar5 - (int)param_8;\n      }" { (expression_statement "iVar5 = iVar5 - (int)param_8;" (assignment_expression "iVar5 = iVar5 - (int)param_8" identifier = (binary_expression "iVar5 - (int)param_8" identifier - (cast_expression "(int)param_8" ( (type_descriptor "int" primitive_type) ) identifier))) ;) })) (expression_statement "*local_60 = iVar5;" (assignment_expression "*local_60 = iVar5" (pointer_expression "*local_60" * identifier) = identifier) ;) (goto_statement "goto LAB_002eac37;" goto statement_identifier ;) }))) }) (else_clause "else if (uVar15 == 2) {\n    if (*puVar7 != uVar19) {\n      uVar15 = puVar7[1];\n      goto joined_r0x002eacc3;\n    }\n    goto LAB_002eacc9;\n  }" else (if_statement "if (uVar15 == 2) {\n    if (*puVar7 != uVar19) {\n      uVar15 = puVar7[1];\n      goto joined_r0x002eacc3;\n    }\n    goto LAB_002eacc9;\n  }" if (parenthesized_expression "(uVar15 == 2)" ( (binary_expression "uVar15 == 2" identifier == number_literal) )) (compound_statement "{\n    if (*puVar7 != uVar19) {\n      uVar15 = puVar7[1];\n      goto joined_r0x002eacc3;\n    }\n    goto LAB_002eacc9;\n  }" { (if_statement "if (*puVar7 != uVar19) {\n      uVar15 = puVar7[1];\n      goto joined_r0x002eacc3;\n    }" if (parenthesized_expression "(*puVar7 != uVar19)" ( (binary_expression "*puVar7 != uVar19" (pointer_expression "*puVar7" * identifier) != identifier) )) (compound_statement "{\n      uVar15 = puVar7[1];\n      goto joined_r0x002eacc3;\n    }" { (expression_statement "uVar15 = puVar7[1];" (assignment_expression "uVar15 = puVar7[1]" identifier = (subscript_expression "puVar7[1]" identifier [ number_literal ])) ;) (goto_statement "goto joined_r0x002eacc3;" goto statement_identifier ;) })) (goto_statement "goto LAB_002eacc9;" goto statement_identifier ;) })))) (labeled_statement "LAB_002eac30:\n  *param_10 = *param_10 | 4;" statement_identifier : (expression_statement "*param_10 = *param_10 | 4;" (assignment_expression "*param_10 = *param_10 | 4" (pointer_expression "*param_10" * identifier) = (binary_expression "*param_10 | 4" (pointer_expression "*param_10" * identifier) | number_literal)) ;)) (labeled_statement "LAB_002eac37:\n  auVar25._8_8_ = (ulong)uVar18 | local_50 & 0xffffffff00000000;" statement_identifier : (expression_statement "auVar25._8_8_ = (ulong)uVar18 | local_50 & 0xffffffff00000000;" (assignment_expression "auVar25._8_8_ = (ulong)uVar18 | local_50 & 0xffffffff00000000" (field_expression "auVar25._8_8_" identifier . field_identifier) = (binary_expression "(ulong)uVar18 | local_50 & 0xffffffff00000000" (cast_expression "(ulong)uVar18" ( (type_descriptor "ulong" type_identifier) ) identifier) | (binary_expression "local_50 & 0xffffffff00000000" identifier & number_literal))) ;)) (expression_statement "auVar25._0_8_ = param_2;" (assignment_expression "auVar25._0_8_ = param_2" (field_expression "auVar25._0_8_" identifier . field_identifier) = identifier) ;) (return_statement "return auVar25;" return identifier ;) (ERROR "}" }))
(translation_unit (expression_statement (subscript_expression IDENT [ LIT ]) ;) (declaration (macro_type_specifier IDENT ( (type_descriptor TYPE) )) IDENT , (ERROR IDENT) (pointer_declarator * IDENT) , (ERROR IDENT) IDENT , (ERROR IDENT) (pointer_declarator * IDENT) , (ERROR IDENT) IDENT , (ERROR IDENT) (pointer_declarator * IDENT) , (ERROR IDENT) IDENT , (ERROR IDENT) IDENT , (ERROR IDENT) IDENT , (ERROR IDENT (pointer_declarator * IDENT) ) { TYPE) (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) (pointer_declarator * IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (field_expression IDENT . field_identifier) , IDENT ))))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (unary_expression - (parenthesized_expression ( (binary_expression (binary_expression (binary_expression IDENT * LIT) + LIT) & LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) (pointer_expression & IDENT)) + IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT != (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT)) && (binary_expression IDENT == LIT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT == LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( IDENT )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (char_literal ' escape_sequence ')) , (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) <= (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])))) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) })) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT == LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT != (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT)) && (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) < (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) )) (compound_statement { (expression_statement (assignment_expression IDENT = BOOL) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = (call_expression IDENT (argument_list ( (field_expression IDENT . field_identifier) , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (field_expression IDENT . field_identifier) , IDENT ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (field_expression IDENT . field_identifier)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT == LIT) && IDENT)) ;) }))) })) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) == IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) < (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (field_expression IDENT . field_identifier) , IDENT ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (field_expression IDENT . field_identifier) , IDENT ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) })) }))) })) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT * LIT) ))) == (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = IDENT) ;) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT * LIT) )))) ;) (do_statement do (compound_statement { (while_statement while (parenthesized_expression ( (binary_expression (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) * LIT)) ))))) == (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + (binary_expression IDENT * LIT)) )))) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (goto_statement goto statement_identifier ;)) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = IDENT) ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (field_expression IDENT . field_identifier)) ;) (expression_statement (assignment_expression IDENT = (field_expression IDENT . field_identifier)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) < (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (subscript_expression IDENT [ LIT ]) + LIT)) ;) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = (field_expression IDENT . field_identifier)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (field_expression IDENT . field_identifier) , (field_expression IDENT . field_identifier) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) + LIT) )))) = LIT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT ))) ;) }))) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (field_expression IDENT . field_identifier) , (cast_expression ( (type_descriptor TYPE) ) IDENT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (unary_expression - (parenthesized_expression ( (binary_expression (binary_expression (binary_expression IDENT * LIT) + LIT) & LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + IDENT) + IDENT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) (pointer_expression & IDENT)) + IDENT) + IDENT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + (binary_expression IDENT * LIT)) ))))) * LIT)) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (binary_expression IDENT + IDENT) + IDENT) + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ IDENT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) })) }))) }))) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT == LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT != (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT)) && (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) < (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = (call_expression IDENT (argument_list ( (field_expression IDENT . field_identifier) , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (field_expression IDENT . field_identifier) , IDENT ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (field_expression IDENT . field_identifier) , IDENT ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (field_expression IDENT . field_identifier) , IDENT ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }))) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (field_expression IDENT . field_identifier)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) }))) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT != (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT)) & IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (break_statement break ;))) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) <= (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (field_expression IDENT . field_identifier) , IDENT ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (field_expression IDENT . field_identifier) , IDENT ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (field_expression IDENT . field_identifier) , IDENT ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) ;) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = IDENT) ;) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (field_expression IDENT . field_identifier)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (field_expression IDENT . field_identifier)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) }))) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT)) )) || (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) < (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (field_expression IDENT . field_identifier) , IDENT ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (field_expression IDENT . field_identifier) , IDENT ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) }))) }))))) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (while_statement while (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ IDENT ]) <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (goto_statement goto statement_identifier ;)) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + (binary_expression IDENT * LIT)) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) (pointer_expression * IDENT)) * LIT)) )))) + IDENT) )))) == IDENT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + (binary_expression IDENT * LIT)) ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ IDENT ]) = (subscript_expression IDENT [ IDENT ])) ;) }) while (parenthesized_expression ( (binary_expression IDENT < IDENT) )) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (break_statement break ;))) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) < (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (subscript_expression IDENT [ LIT ]) + LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (field_expression IDENT . field_identifier) , IDENT ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }) while (parenthesized_expression ( BOOL )) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * IDENT))) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT - (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (goto_statement goto statement_identifier ;) }))) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (goto_statement goto statement_identifier ;) })) (goto_statement goto statement_identifier ;) })))) (labeled_statement statement_identifier : (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (pointer_expression * IDENT) | LIT)) ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) | (binary_expression IDENT & LIT))) ;)) (expression_statement (assignment_expression (field_expression IDENT . field_identifier) = IDENT) ;) (return_statement return IDENT ;) (ERROR }))
(expression_statement "undefined1  [16]" (subscript_expression "undefined1  [16]" (identifier "undefined1") ([ "[") (number_literal "16") (] "]")) (; "")) (declaration "FUN_002eaa80(undefined8 param_1,long *param_2,ulong param_3,long *param_4,int param_5,int *param_6,\n            long param_7,ulong param_8,long param_9,uint *param_10)\n\n{\n  int *piVar1;" (macro_type_specifier "FUN_002eaa80(undefined8" (identifier "FUN_002eaa80") (( "(") (type_descriptor "undefined8" (type_identifier "undefined8")) () "")) (identifier "param_1") (, ",") (ERROR "long" (identifier "long")) (pointer_declarator "*param_2" (* "*") (identifier "param_2")) (, ",") (ERROR "ulong" (identifier "ulong")) (identifier "param_3") (, ",") (ERROR "long" (identifier "long")) (pointer_declarator "*param_4" (* "*") (identifier "param_4")) (, ",") (ERROR "int" (identifier "int")) (identifier "param_5") (, ",") (ERROR "int" (identifier "int")) (pointer_declarator "*param_6" (* "*") (identifier "param_6")) (, ",") (ERROR "long" (identifier "long")) (identifier "param_7") (, ",") (ERROR "ulong" (identifier "ulong")) (identifier "param_8") (, ",") (ERROR "long" (identifier "long")) (identifier "param_9") (, ",") (ERROR "uint *param_10)\n\n{\n  int" (identifier "uint") (pointer_declarator "*param_10" (* "*") (identifier "param_10")) () ")") ({ "{") (primitive_type "int")) (pointer_declarator "*piVar1" (* "*") (identifier "piVar1")) (; ";")) (declaration "code *pcVar2;" (type_identifier "code") (pointer_declarator "*pcVar2" (* "*") (identifier "pcVar2")) (; ";")) (declaration "char *__s;" (primitive_type "char") (pointer_declarator "*__s" (* "*") (identifier "__s")) (; ";")) (declaration "long lVar3;" (sized_type_specifier "long" (long "long")) (identifier "lVar3") (; ";")) (declaration "long lVar4;" (sized_type_specifier "long" (long "long")) (identifier "lVar4") (; ";")) (declaration "int iVar5;" (primitive_type "int") (identifier "iVar5") (; ";")) (declaration "uint uVar6;" (type_identifier "uint") (identifier "uVar6") (; ";")) (declaration "ulong *puVar7;" (type_identifier "ulong") (pointer_declarator "*puVar7" (* "*") (identifier "puVar7")) (; ";")) (declaration "ulong uVar8;" (type_identifier "ulong") (identifier "uVar8") (; ";")) (declaration "size_t sVar9;" (primitive_type "size_t") (identifier "sVar9") (; ";")) (declaration "bool bVar10;" (primitive_type "bool") (identifier "bVar10") (; ";")) (declaration "byte bVar11;" (type_identifier "byte") (identifier "bVar11") (; ";")) (declaration "byte bVar12;" (type_identifier "byte") (identifier "bVar12") (; ";")) (declaration "byte bVar13;" (type_identifier "byte") (identifier "bVar13") (; ";")) (declaration "bool bVar14;" (primitive_type "bool") (identifier "bVar14") (; ";")) (declaration "ulong uVar15;" (type_identifier "ulong") (identifier "uVar15") (; ";")) (declaration "undefined1 *puVar16;" (type_identifier "undefined1") (pointer_declarator "*puVar16" (* "*") (identifier "puVar16")) (; ";")) (declaration "ulong uVar17;" (type_identifier "ulong") (identifier "uVar17") (; ";")) (declaration "uint uVar18;" (type_identifier "uint") (identifier "uVar18") (; ";")) (declaration "ulong uVar19;" (type_identifier "ulong") (identifier "uVar19") (; ";")) (declaration "bool bVar20;" (primitive_type "bool") (identifier "bVar20") (; ";")) (declaration "long *plVar21;" (sized_type_specifier "long" (long "long")) (pointer_declarator "*plVar21" (* "*") (identifier "plVar21")) (; ";")) (declaration "ulong *puVar22;" (type_identifier "ulong") (pointer_declarator "*puVar22" (* "*") (identifier "puVar22")) (; ";")) (declaration "byte bVar23;" (type_identifier "byte") (identifier "bVar23") (; ";")) (declaration "char cVar24;" (primitive_type "char") (identifier "cVar24") (; ";")) (declaration "undefined1 auVar25 [16];" (type_identifier "undefined1") (array_declarator "auVar25 [16]" (identifier "auVar25") ([ "[") (number_literal "16") (] "]")) (; ";")) (declaration "undefined8 uStack_80;" (type_identifier "undefined8") (identifier "uStack_80") (; ";")) (declaration "undefined1 auStack_78 [8];" (type_identifier "undefined1") (array_declarator "auStack_78 [8]" (identifier "auStack_78") ([ "[") (number_literal "8") (] "]")) (; ";")) (declaration "undefined8 uStack_70;" (type_identifier "undefined8") (identifier "uStack_70") (; ";")) (declaration "long *local_68;" (sized_type_specifier "long" (long "long")) (pointer_declarator "*local_68" (* "*") (identifier "local_68")) (; ";")) (declaration "int *local_60;" (primitive_type "int") (pointer_declarator "*local_60" (* "*") (identifier "local_60")) (; ";")) (declaration "ulong *local_58;" (type_identifier "ulong") (pointer_declarator "*local_58" (* "*") (identifier "local_58")) (; ";")) (declaration "ulong local_50;" (type_identifier "ulong") (identifier "local_50") (; ";")) (declaration "long *local_48;" (sized_type_specifier "long" (long "long")) (pointer_declarator "*local_48" (* "*") (identifier "local_48")) (; ";")) (declaration "long *local_40;" (sized_type_specifier "long" (long "long")) (pointer_declarator "*local_40" (* "*") (identifier "local_40")) (; ";")) (expression_statement "iVar5 = (int)param_3;" (assignment_expression "iVar5 = (int)param_3" (identifier "iVar5") (= "=") (cast_expression "(int)param_3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_3"))) (; ";")) (expression_statement "local_48 = (long *)CONCAT44(local_48._4_4_,iVar5);" (assignment_expression "local_48 = (long *)CONCAT44(local_48._4_4_,iVar5)" (identifier "local_48") (= "=") (cast_expression "(long *)CONCAT44(local_48._4_4_,iVar5)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "CONCAT44(local_48._4_4_,iVar5)" (identifier "CONCAT44") (argument_list "(local_48._4_4_,iVar5)" (( "(") (field_expression "local_48._4_4_" (identifier "local_48") (. ".") (field_identifier "_4_4_")) (, ",") (identifier "iVar5") () ")"))))) (; ";")) (expression_statement "uStack_80 = 0x2eaabc;" (assignment_expression "uStack_80 = 0x2eaabc" (identifier "uStack_80") (= "=") (number_literal "0x2eaabc")) (; ";")) (expression_statement "local_60 = param_6;" (assignment_expression "local_60 = param_6" (identifier "local_60") (= "=") (identifier "param_6")) (; ";")) (expression_statement "local_50 = param_3;" (assignment_expression "local_50 = param_3" (identifier "local_50") (= "=") (identifier "param_3")) (; ";")) (expression_statement "local_40 = param_4;" (assignment_expression "local_40 = param_4" (identifier "local_40") (= "=") (identifier "param_4")) (; ";")) (expression_statement "puVar7 = (ulong *)FUN_00288720(param_9 + 0xd0);" (assignment_expression "puVar7 = (ulong *)FUN_00288720(param_9 + 0xd0)" (identifier "puVar7") (= "=") (cast_expression "(ulong *)FUN_00288720(param_9 + 0xd0)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00288720(param_9 + 0xd0)" (identifier "FUN_00288720") (argument_list "(param_9 + 0xd0)" (( "(") (binary_expression "param_9 + 0xd0" (identifier "param_9") (+ "+") (number_literal "0xd0")) () ")"))))) (; ";")) (expression_statement "lVar3 = -(param_8 * 8 + 0x17 & 0xfffffffffffffff0);" (assignment_expression "lVar3 = -(param_8 * 8 + 0x17 & 0xfffffffffffffff0)" (identifier "lVar3") (= "=") (unary_expression "-(param_8 * 8 + 0x17 & 0xfffffffffffffff0)" (- "-") (parenthesized_expression "(param_8 * 8 + 0x17 & 0xfffffffffffffff0)" (( "(") (binary_expression "param_8 * 8 + 0x17 & 0xfffffffffffffff0" (binary_expression "param_8 * 8 + 0x17" (binary_expression "param_8 * 8" (identifier "param_8") (* "*") (number_literal "8")) (+ "+") (number_literal "0x17")) (& "&") (number_literal "0xfffffffffffffff0")) () ")")))) (; ";")) (expression_statement "puVar16 = auStack_78 + lVar3;" (assignment_expression "puVar16 = auStack_78 + lVar3" (identifier "puVar16") (= "=") (binary_expression "auStack_78 + lVar3" (identifier "auStack_78") (+ "+") (identifier "lVar3"))) (; ";")) (expression_statement "puVar22 = (ulong *)((long)&uStack_70 + lVar3);" (assignment_expression "puVar22 = (ulong *)((long)&uStack_70 + lVar3)" (identifier "puVar22") (= "=") (cast_expression "(ulong *)((long)&uStack_70 + lVar3)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)&uStack_70 + lVar3)" (( "(") (binary_expression "(long)&uStack_70 + lVar3" (cast_expression "(long)&uStack_70" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (pointer_expression "&uStack_70" (& "&") (identifier "uStack_70"))) (+ "+") (identifier "lVar3")) () ")")))) (; ";")) (expression_statement "bVar20 = param_2 != (long *)0x0 && iVar5 == -1;" (assignment_expression "bVar20 = param_2 != (long *)0x0 && iVar5 == -1" (identifier "bVar20") (= "=") (binary_expression "param_2 != (long *)0x0 && iVar5 == -1" (binary_expression "param_2 != (long *)0x0" (identifier "param_2") (!= "!=") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (&& "&&") (binary_expression "iVar5 == -1" (identifier "iVar5") (== "==") (number_literal "-1")))) (; ";")) (expression_statement "cVar24 = iVar5 == -1;" (assignment_expression "cVar24 = iVar5 == -1" (identifier "cVar24") (= "=") (binary_expression "iVar5 == -1" (identifier "iVar5") (== "==") (number_literal "-1"))) (; ";")) (expression_statement "bVar10 = bVar20;" (assignment_expression "bVar10 = bVar20" (identifier "bVar10") (= "=") (identifier "bVar20")) (; ";")) (if_statement "if ((bVar20) && (cVar24 = '\0', (ulong)param_2[3] <= (ulong)param_2[2])) {\n    local_68 = (long *)((ulong)local_68 & 0xffffffffffffff00);\n    pcVar2 = *(code **)(*param_2 + 0x48);\n    local_58 = puVar7;\n    *(undefined8 *)(auStack_78 + lVar3 + -8) = 0x2eae52;\n    iVar5 = (*pcVar2)(param_2);\n    puVar7 = local_58;\n    cVar24 = (byte)local_68;\n    if (iVar5 == -1) {\n      param_2 = (long *)0x0;\n      bVar10 = false;\n      cVar24 = bVar20;\n    }\n  }" (if "if") (parenthesized_expression "((bVar20) && (cVar24 = '\0', (ulong)param_2[3] <= (ulong)param_2[2]))" (( "(") (binary_expression "(bVar20) && (cVar24 = '\0', (ulong)param_2[3] <= (ulong)param_2[2])" (parenthesized_expression "(bVar20)" (( "(") (identifier "bVar20") () ")")) (&& "&&") (parenthesized_expression "(cVar24 = '\0', (ulong)param_2[3] <= (ulong)param_2[2])" (( "(") (comma_expression "cVar24 = '\0', (ulong)param_2[3] <= (ulong)param_2[2]" (assignment_expression "cVar24 = '\0'" (identifier "cVar24") (= "=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (, ",") (binary_expression "(ulong)param_2[3] <= (ulong)param_2[2]" (cast_expression "(ulong)param_2[3]" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (subscript_expression "param_2[3]" (identifier "param_2") ([ "[") (number_literal "3") (] "]"))) (<= "<=") (cast_expression "(ulong)param_2[2]" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (subscript_expression "param_2[2]" (identifier "param_2") ([ "[") (number_literal "2") (] "]"))))) () ")"))) () ")")) (compound_statement "{\n    local_68 = (long *)((ulong)local_68 & 0xffffffffffffff00);\n    pcVar2 = *(code **)(*param_2 + 0x48);\n    local_58 = puVar7;\n    *(undefined8 *)(auStack_78 + lVar3 + -8) = 0x2eae52;\n    iVar5 = (*pcVar2)(param_2);\n    puVar7 = local_58;\n    cVar24 = (byte)local_68;\n    if (iVar5 == -1) {\n      param_2 = (long *)0x0;\n      bVar10 = false;\n      cVar24 = bVar20;\n    }\n  }" ({ "{") (expression_statement "local_68 = (long *)((ulong)local_68 & 0xffffffffffffff00);" (assignment_expression "local_68 = (long *)((ulong)local_68 & 0xffffffffffffff00)" (identifier "local_68") (= "=") (cast_expression "(long *)((ulong)local_68 & 0xffffffffffffff00)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((ulong)local_68 & 0xffffffffffffff00)" (( "(") (binary_expression "(ulong)local_68 & 0xffffffffffffff00" (cast_expression "(ulong)local_68" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "local_68")) (& "&") (number_literal "0xffffffffffffff00")) () ")")))) (; ";")) (expression_statement "pcVar2 = *(code **)(*param_2 + 0x48);" (assignment_expression "pcVar2 = *(code **)(*param_2 + 0x48)" (identifier "pcVar2") (= "=") (pointer_expression "*(code **)(*param_2 + 0x48)" (* "*") (cast_expression "(code **)(*param_2 + 0x48)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*param_2 + 0x48)" (( "(") (binary_expression "*param_2 + 0x48" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (+ "+") (number_literal "0x48")) () ")"))))) (; ";")) (expression_statement "local_58 = puVar7;" (assignment_expression "local_58 = puVar7" (identifier "local_58") (= "=") (identifier "puVar7")) (; ";")) (expression_statement "*(undefined8 *)(auStack_78 + lVar3 + -8) = 0x2eae52;" (assignment_expression "*(undefined8 *)(auStack_78 + lVar3 + -8) = 0x2eae52" (pointer_expression "*(undefined8 *)(auStack_78 + lVar3 + -8)" (* "*") (cast_expression "(undefined8 *)(auStack_78 + lVar3 + -8)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(auStack_78 + lVar3 + -8)" (( "(") (binary_expression "auStack_78 + lVar3 + -8" (binary_expression "auStack_78 + lVar3" (identifier "auStack_78") (+ "+") (identifier "lVar3")) (+ "+") (number_literal "-8")) () ")")))) (= "=") (number_literal "0x2eae52")) (; ";")) (expression_statement "iVar5 = (*pcVar2)(param_2);" (assignment_expression "iVar5 = (*pcVar2)(param_2)" (identifier "iVar5") (= "=") (call_expression "(*pcVar2)(param_2)" (parenthesized_expression "(*pcVar2)" (( "(") (pointer_expression "*pcVar2" (* "*") (identifier "pcVar2")) () ")")) (argument_list "(param_2)" (( "(") (identifier "param_2") () ")")))) (; ";")) (expression_statement "puVar7 = local_58;" (assignment_expression "puVar7 = local_58" (identifier "puVar7") (= "=") (identifier "local_58")) (; ";")) (expression_statement "cVar24 = (byte)local_68;" (assignment_expression "cVar24 = (byte)local_68" (identifier "cVar24") (= "=") (cast_expression "(byte)local_68" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "local_68"))) (; ";")) (if_statement "if (iVar5 == -1) {\n      param_2 = (long *)0x0;\n      bVar10 = false;\n      cVar24 = bVar20;\n    }" (if "if") (parenthesized_expression "(iVar5 == -1)" (( "(") (binary_expression "iVar5 == -1" (identifier "iVar5") (== "==") (number_literal "-1")) () ")")) (compound_statement "{\n      param_2 = (long *)0x0;\n      bVar10 = false;\n      cVar24 = bVar20;\n    }" ({ "{") (expression_statement "param_2 = (long *)0x0;" (assignment_expression "param_2 = (long *)0x0" (identifier "param_2") (= "=") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "bVar10 = false;" (assignment_expression "bVar10 = false" (identifier "bVar10") (= "=") (false "false")) (; ";")) (expression_statement "cVar24 = bVar20;" (assignment_expression "cVar24 = bVar20" (identifier "cVar24") (= "=") (identifier "bVar20")) (; ";")) (} "}"))) (} "}"))) (expression_statement "bVar23 = param_5 == -1;" (assignment_expression "bVar23 = param_5 == -1" (identifier "bVar23") (= "=") (binary_expression "param_5 == -1" (identifier "param_5") (== "==") (number_literal "-1"))) (; ";")) (expression_statement "bVar14 = param_4 != (long *)0x0 && (bool)bVar23;" (assignment_expression "bVar14 = param_4 != (long *)0x0 && (bool)bVar23" (identifier "bVar14") (= "=") (binary_expression "param_4 != (long *)0x0 && (bool)bVar23" (binary_expression "param_4 != (long *)0x0" (identifier "param_4") (!= "!=") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (&& "&&") (cast_expression "(bool)bVar23" (( "(") (type_descriptor "bool" (primitive_type "bool")) () ")") (identifier "bVar23")))) (; ";")) (expression_statement "uVar18 = (uint)local_48;" (assignment_expression "uVar18 = (uint)local_48" (identifier "uVar18") (= "=") (cast_expression "(uint)local_48" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "local_48"))) (; ";")) (expression_statement "bVar20 = (bool)bVar23;" (assignment_expression "bVar20 = (bool)bVar23" (identifier "bVar20") (= "=") (cast_expression "(bool)bVar23" (( "(") (type_descriptor "bool" (primitive_type "bool")) () ")") (identifier "bVar23"))) (; ";")) (if_statement "if (bVar14) {\n    if ((ulong)param_4[2] < (ulong)param_4[3]) {\n      bVar20 = false;\n    }\n    else {\n      uStack_70._4_4_ = CONCAT31(uStack_70._5_3_,bVar23);\n      local_68 = (long *)CONCAT71(local_68._1_7_,cVar24);\n      pcVar2 = *(code **)(*param_4 + 0x48);\n      local_58 = puVar7;\n      *(undefined8 *)(auStack_78 + lVar3 + -8) = 0x2eaf99;\n      iVar5 = (*pcVar2)(param_4);\n      local_40 = (long *)0x0;\n      if (iVar5 != -1) {\n        local_40 = param_4;\n      }\n      puVar7 = local_58;\n      uVar18 = (uint)local_48;\n      cVar24 = (byte)local_68;\n      bVar23 = uStack_70._4_1_;\n      bVar20 = iVar5 == -1 && bVar14;\n    }\n  }" (if "if") (parenthesized_expression "(bVar14)" (( "(") (identifier "bVar14") () ")")) (compound_statement "{\n    if ((ulong)param_4[2] < (ulong)param_4[3]) {\n      bVar20 = false;\n    }\n    else {\n      uStack_70._4_4_ = CONCAT31(uStack_70._5_3_,bVar23);\n      local_68 = (long *)CONCAT71(local_68._1_7_,cVar24);\n      pcVar2 = *(code **)(*param_4 + 0x48);\n      local_58 = puVar7;\n      *(undefined8 *)(auStack_78 + lVar3 + -8) = 0x2eaf99;\n      iVar5 = (*pcVar2)(param_4);\n      local_40 = (long *)0x0;\n      if (iVar5 != -1) {\n        local_40 = param_4;\n      }\n      puVar7 = local_58;\n      uVar18 = (uint)local_48;\n      cVar24 = (byte)local_68;\n      bVar23 = uStack_70._4_1_;\n      bVar20 = iVar5 == -1 && bVar14;\n    }\n  }" ({ "{") (if_statement "if ((ulong)param_4[2] < (ulong)param_4[3]) {\n      bVar20 = false;\n    }\n    else {\n      uStack_70._4_4_ = CONCAT31(uStack_70._5_3_,bVar23);\n      local_68 = (long *)CONCAT71(local_68._1_7_,cVar24);\n      pcVar2 = *(code **)(*param_4 + 0x48);\n      local_58 = puVar7;\n      *(undefined8 *)(auStack_78 + lVar3 + -8) = 0x2eaf99;\n      iVar5 = (*pcVar2)(param_4);\n      local_40 = (long *)0x0;\n      if (iVar5 != -1) {\n        local_40 = param_4;\n      }\n      puVar7 = local_58;\n      uVar18 = (uint)local_48;\n      cVar24 = (byte)local_68;\n      bVar23 = uStack_70._4_1_;\n      bVar20 = iVar5 == -1 && bVar14;\n    }" (if "if") (parenthesized_expression "((ulong)param_4[2] < (ulong)param_4[3])" (( "(") (binary_expression "(ulong)param_4[2] < (ulong)param_4[3]" (cast_expression "(ulong)param_4[2]" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (subscript_expression "param_4[2]" (identifier "param_4") ([ "[") (number_literal "2") (] "]"))) (< "<") (cast_expression "(ulong)param_4[3]" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (subscript_expression "param_4[3]" (identifier "param_4") ([ "[") (number_literal "3") (] "]")))) () ")")) (compound_statement "{\n      bVar20 = false;\n    }" ({ "{") (expression_statement "bVar20 = false;" (assignment_expression "bVar20 = false" (identifier "bVar20") (= "=") (false "false")) (; ";")) (} "}")) (else_clause "else {\n      uStack_70._4_4_ = CONCAT31(uStack_70._5_3_,bVar23);\n      local_68 = (long *)CONCAT71(local_68._1_7_,cVar24);\n      pcVar2 = *(code **)(*param_4 + 0x48);\n      local_58 = puVar7;\n      *(undefined8 *)(auStack_78 + lVar3 + -8) = 0x2eaf99;\n      iVar5 = (*pcVar2)(param_4);\n      local_40 = (long *)0x0;\n      if (iVar5 != -1) {\n        local_40 = param_4;\n      }\n      puVar7 = local_58;\n      uVar18 = (uint)local_48;\n      cVar24 = (byte)local_68;\n      bVar23 = uStack_70._4_1_;\n      bVar20 = iVar5 == -1 && bVar14;\n    }" (else "else") (compound_statement "{\n      uStack_70._4_4_ = CONCAT31(uStack_70._5_3_,bVar23);\n      local_68 = (long *)CONCAT71(local_68._1_7_,cVar24);\n      pcVar2 = *(code **)(*param_4 + 0x48);\n      local_58 = puVar7;\n      *(undefined8 *)(auStack_78 + lVar3 + -8) = 0x2eaf99;\n      iVar5 = (*pcVar2)(param_4);\n      local_40 = (long *)0x0;\n      if (iVar5 != -1) {\n        local_40 = param_4;\n      }\n      puVar7 = local_58;\n      uVar18 = (uint)local_48;\n      cVar24 = (byte)local_68;\n      bVar23 = uStack_70._4_1_;\n      bVar20 = iVar5 == -1 && bVar14;\n    }" ({ "{") (expression_statement "uStack_70._4_4_ = CONCAT31(uStack_70._5_3_,bVar23);" (assignment_expression "uStack_70._4_4_ = CONCAT31(uStack_70._5_3_,bVar23)" (field_expression "uStack_70._4_4_" (identifier "uStack_70") (. ".") (field_identifier "_4_4_")) (= "=") (call_expression "CONCAT31(uStack_70._5_3_,bVar23)" (identifier "CONCAT31") (argument_list "(uStack_70._5_3_,bVar23)" (( "(") (field_expression "uStack_70._5_3_" (identifier "uStack_70") (. ".") (field_identifier "_5_3_")) (, ",") (identifier "bVar23") () ")")))) (; ";")) (expression_statement "local_68 = (long *)CONCAT71(local_68._1_7_,cVar24);" (assignment_expression "local_68 = (long *)CONCAT71(local_68._1_7_,cVar24)" (identifier "local_68") (= "=") (cast_expression "(long *)CONCAT71(local_68._1_7_,cVar24)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "CONCAT71(local_68._1_7_,cVar24)" (identifier "CONCAT71") (argument_list "(local_68._1_7_,cVar24)" (( "(") (field_expression "local_68._1_7_" (identifier "local_68") (. ".") (field_identifier "_1_7_")) (, ",") (identifier "cVar24") () ")"))))) (; ";")) (expression_statement "pcVar2 = *(code **)(*param_4 + 0x48);" (assignment_expression "pcVar2 = *(code **)(*param_4 + 0x48)" (identifier "pcVar2") (= "=") (pointer_expression "*(code **)(*param_4 + 0x48)" (* "*") (cast_expression "(code **)(*param_4 + 0x48)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*param_4 + 0x48)" (( "(") (binary_expression "*param_4 + 0x48" (pointer_expression "*param_4" (* "*") (identifier "param_4")) (+ "+") (number_literal "0x48")) () ")"))))) (; ";")) (expression_statement "local_58 = puVar7;" (assignment_expression "local_58 = puVar7" (identifier "local_58") (= "=") (identifier "puVar7")) (; ";")) (expression_statement "*(undefined8 *)(auStack_78 + lVar3 + -8) = 0x2eaf99;" (assignment_expression "*(undefined8 *)(auStack_78 + lVar3 + -8) = 0x2eaf99" (pointer_expression "*(undefined8 *)(auStack_78 + lVar3 + -8)" (* "*") (cast_expression "(undefined8 *)(auStack_78 + lVar3 + -8)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(auStack_78 + lVar3 + -8)" (( "(") (binary_expression "auStack_78 + lVar3 + -8" (binary_expression "auStack_78 + lVar3" (identifier "auStack_78") (+ "+") (identifier "lVar3")) (+ "+") (number_literal "-8")) () ")")))) (= "=") (number_literal "0x2eaf99")) (; ";")) (expression_statement "iVar5 = (*pcVar2)(param_4);" (assignment_expression "iVar5 = (*pcVar2)(param_4)" (identifier "iVar5") (= "=") (call_expression "(*pcVar2)(param_4)" (parenthesized_expression "(*pcVar2)" (( "(") (pointer_expression "*pcVar2" (* "*") (identifier "pcVar2")) () ")")) (argument_list "(param_4)" (( "(") (identifier "param_4") () ")")))) (; ";")) (expression_statement "local_40 = (long *)0x0;" (assignment_expression "local_40 = (long *)0x0" (identifier "local_40") (= "=") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (if_statement "if (iVar5 != -1) {\n        local_40 = param_4;\n      }" (if "if") (parenthesized_expression "(iVar5 != -1)" (( "(") (binary_expression "iVar5 != -1" (identifier "iVar5") (!= "!=") (number_literal "-1")) () ")")) (compound_statement "{\n        local_40 = param_4;\n      }" ({ "{") (expression_statement "local_40 = param_4;" (assignment_expression "local_40 = param_4" (identifier "local_40") (= "=") (identifier "param_4")) (; ";")) (} "}"))) (expression_statement "puVar7 = local_58;" (assignment_expression "puVar7 = local_58" (identifier "puVar7") (= "=") (identifier "local_58")) (; ";")) (expression_statement "uVar18 = (uint)local_48;" (assignment_expression "uVar18 = (uint)local_48" (identifier "uVar18") (= "=") (cast_expression "(uint)local_48" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "local_48"))) (; ";")) (expression_statement "cVar24 = (byte)local_68;" (assignment_expression "cVar24 = (byte)local_68" (identifier "cVar24") (= "=") (cast_expression "(byte)local_68" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "local_68"))) (; ";")) (expression_statement "bVar23 = uStack_70._4_1_;" (assignment_expression "bVar23 = uStack_70._4_1_" (identifier "bVar23") (= "=") (field_expression "uStack_70._4_1_" (identifier "uStack_70") (. ".") (field_identifier "_4_1_"))) (; ";")) (expression_statement "bVar20 = iVar5 == -1 && bVar14;" (assignment_expression "bVar20 = iVar5 == -1 && bVar14" (identifier "bVar20") (= "=") (binary_expression "iVar5 == -1 && bVar14" (binary_expression "iVar5 == -1" (identifier "iVar5") (== "==") (number_literal "-1")) (&& "&&") (identifier "bVar14"))) (; ";")) (} "}")))) (} "}"))) (if_statement "if ((bool)cVar24 == bVar20) {\n    uVar19 = 0;\n    uVar15 = 0;\n    puVar16 = auStack_78 + lVar3;\n    puVar7 = (ulong *)0x0;\n  }\n  else {\n    uVar6 = uVar18;\n    if (bVar10) {\n      if ((byte *)param_2[2] < (byte *)param_2[3]) {\n        uVar6 = (uint)*(byte *)param_2[2];\n      }\n      else {\n        local_68 = (long *)CONCAT71(local_68._1_7_,bVar23);\n        local_48 = (long *)CONCAT44(local_48._4_4_,uVar18);\n        pcVar2 = *(code **)(*param_2 + 0x48);\n        local_58 = puVar7;\n        *(undefined8 *)(auStack_78 + lVar3 + -8) = 0x2eafe4;\n        uVar6 = (*pcVar2)(param_2);\n        puVar7 = local_58;\n        uVar18 = (uint)local_48;\n        bVar23 = (byte)local_68;\n        if (uVar6 == 0xffffffff) {\n          param_2 = (long *)0x0;\n          uVar6 = 0xffffffff;\n        }\n      }\n    }\n    if ((long *)(param_8 * 2) == (long *)0x0) {\n      uVar15 = 0;\n      puVar7 = (ulong *)0x0;\n      uVar19 = 0;\n    }\n    else {\n      uVar15 = 0;\n      plVar21 = (long *)0x0;\n      uStack_70._3_1_ = bVar23;\n      uStack_70._4_4_ = uVar18;\n      local_68 = param_2;\n      local_58 = puVar22;\n      local_48 = (long *)(param_8 * 2);\n      do {\n        while (**(char **)(param_7 + (long)plVar21 * 8) == (char)uVar6) {\nLAB_002ead54:\n          *(int *)((long)local_58 + uVar15 * 4) = (int)plVar21;\n          uVar15 = uVar15 + 1;\n          plVar21 = (long *)((long)plVar21 + 1);\n          if (local_48 == plVar21) goto LAB_002ead6a;\n        }\n        pcVar2 = *(code **)(*puVar7 + 0x10);\n        *(undefined8 *)(auStack_78 + lVar3 + -8) = 0x2ead39;\n        cVar24 = (*pcVar2)(puVar7);\n        if (cVar24 == (char)uVar6) goto LAB_002ead54;\n        plVar21 = (long *)((long)plVar21 + 1);\n      } while (local_48 != plVar21);\nLAB_002ead6a:\n      puVar22 = local_58;\n      plVar21 = local_68;\n      uVar19 = 0;\n      puVar16 = auStack_78 + lVar3;\n      puVar7 = (ulong *)0x0;\n      param_2 = local_68;\n      uVar18 = uStack_70._4_4_;\n      bVar23 = uStack_70._3_1_;\n      if (uVar15 != 0) {\n        if ((ulong)local_68[2] < (ulong)local_68[3]) {\n          local_68[2] = local_68[2] + 1;\n          local_48._0_1_ = uStack_70._3_1_;\n        }\n        else {\n          local_48 = (long *)CONCAT71(local_48._1_7_,uStack_70._3_1_);\n          pcVar2 = *(code **)(*local_68 + 0x50);\n          *(undefined8 *)(auStack_78 + lVar3 + -8) = 0x2eb01f;\n          (*pcVar2)(plVar21);\n        }\n        local_68 = (long *)CONCAT71(local_68._1_7_,(byte)local_48);\n        local_48 = plVar21;\n        lVar4 = -(uVar15 * 8 + 0x17 & 0xfffffffffffffff0);\n        puVar16 = auStack_78 + lVar4 + lVar3;\n        uVar19 = 0;\n        puVar7 = (ulong *)((long)&uStack_70 + lVar4 + lVar3);\n        local_58 = puVar7;\n        do {\n          __s = *(char **)(param_7 + (long)*(int *)((long)puVar22 + uVar19 * 4) * 8);\n          *(undefined8 *)(auStack_78 + lVar4 + lVar3 + -8) = 0x2eaded;\n          sVar9 = strlen(__s);\n          puVar7[uVar19] = sVar9;\n          uVar19 = uVar19 + 1;\n        } while (uVar15 != uVar19);\n        uVar18 = 0xffffffff;\n        uVar19 = 1;\n        puVar7 = local_58;\n        param_2 = local_48;\n        bVar23 = (byte)local_68;\n      }\n    }\n  }" (if "if") (parenthesized_expression "((bool)cVar24 == bVar20)" (( "(") (binary_expression "(bool)cVar24 == bVar20" (cast_expression "(bool)cVar24" (( "(") (type_descriptor "bool" (primitive_type "bool")) () ")") (identifier "cVar24")) (== "==") (identifier "bVar20")) () ")")) (compound_statement "{\n    uVar19 = 0;\n    uVar15 = 0;\n    puVar16 = auStack_78 + lVar3;\n    puVar7 = (ulong *)0x0;\n  }" ({ "{") (expression_statement "uVar19 = 0;" (assignment_expression "uVar19 = 0" (identifier "uVar19") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar15 = 0;" (assignment_expression "uVar15 = 0" (identifier "uVar15") (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar16 = auStack_78 + lVar3;" (assignment_expression "puVar16 = auStack_78 + lVar3" (identifier "puVar16") (= "=") (binary_expression "auStack_78 + lVar3" (identifier "auStack_78") (+ "+") (identifier "lVar3"))) (; ";")) (expression_statement "puVar7 = (ulong *)0x0;" (assignment_expression "puVar7 = (ulong *)0x0" (identifier "puVar7") (= "=") (cast_expression "(ulong *)0x0" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (} "}")) (else_clause "else {\n    uVar6 = uVar18;\n    if (bVar10) {\n      if ((byte *)param_2[2] < (byte *)param_2[3]) {\n        uVar6 = (uint)*(byte *)param_2[2];\n      }\n      else {\n        local_68 = (long *)CONCAT71(local_68._1_7_,bVar23);\n        local_48 = (long *)CONCAT44(local_48._4_4_,uVar18);\n        pcVar2 = *(code **)(*param_2 + 0x48);\n        local_58 = puVar7;\n        *(undefined8 *)(auStack_78 + lVar3 + -8) = 0x2eafe4;\n        uVar6 = (*pcVar2)(param_2);\n        puVar7 = local_58;\n        uVar18 = (uint)local_48;\n        bVar23 = (byte)local_68;\n        if (uVar6 == 0xffffffff) {\n          param_2 = (long *)0x0;\n          uVar6 = 0xffffffff;\n        }\n      }\n    }\n    if ((long *)(param_8 * 2) == (long *)0x0) {\n      uVar15 = 0;\n      puVar7 = (ulong *)0x0;\n      uVar19 = 0;\n    }\n    else {\n      uVar15 = 0;\n      plVar21 = (long *)0x0;\n      uStack_70._3_1_ = bVar23;\n      uStack_70._4_4_ = uVar18;\n      local_68 = param_2;\n      local_58 = puVar22;\n      local_48 = (long *)(param_8 * 2);\n      do {\n        while (**(char **)(param_7 + (long)plVar21 * 8) == (char)uVar6) {\nLAB_002ead54:\n          *(int *)((long)local_58 + uVar15 * 4) = (int)plVar21;\n          uVar15 = uVar15 + 1;\n          plVar21 = (long *)((long)plVar21 + 1);\n          if (local_48 == plVar21) goto LAB_002ead6a;\n        }\n        pcVar2 = *(code **)(*puVar7 + 0x10);\n        *(undefined8 *)(auStack_78 + lVar3 + -8) = 0x2ead39;\n        cVar24 = (*pcVar2)(puVar7);\n        if (cVar24 == (char)uVar6) goto LAB_002ead54;\n        plVar21 = (long *)((long)plVar21 + 1);\n      } while (local_48 != plVar21);\nLAB_002ead6a:\n      puVar22 = local_58;\n      plVar21 = local_68;\n      uVar19 = 0;\n      puVar16 = auStack_78 + lVar3;\n      puVar7 = (ulong *)0x0;\n      param_2 = local_68;\n      uVar18 = uStack_70._4_4_;\n      bVar23 = uStack_70._3_1_;\n      if (uVar15 != 0) {\n        if ((ulong)local_68[2] < (ulong)local_68[3]) {\n          local_68[2] = local_68[2] + 1;\n          local_48._0_1_ = uStack_70._3_1_;\n        }\n        else {\n          local_48 = (long *)CONCAT71(local_48._1_7_,uStack_70._3_1_);\n          pcVar2 = *(code **)(*local_68 + 0x50);\n          *(undefined8 *)(auStack_78 + lVar3 + -8) = 0x2eb01f;\n          (*pcVar2)(plVar21);\n        }\n        local_68 = (long *)CONCAT71(local_68._1_7_,(byte)local_48);\n        local_48 = plVar21;\n        lVar4 = -(uVar15 * 8 + 0x17 & 0xfffffffffffffff0);\n        puVar16 = auStack_78 + lVar4 + lVar3;\n        uVar19 = 0;\n        puVar7 = (ulong *)((long)&uStack_70 + lVar4 + lVar3);\n        local_58 = puVar7;\n        do {\n          __s = *(char **)(param_7 + (long)*(int *)((long)puVar22 + uVar19 * 4) * 8);\n          *(undefined8 *)(auStack_78 + lVar4 + lVar3 + -8) = 0x2eaded;\n          sVar9 = strlen(__s);\n          puVar7[uVar19] = sVar9;\n          uVar19 = uVar19 + 1;\n        } while (uVar15 != uVar19);\n        uVar18 = 0xffffffff;\n        uVar19 = 1;\n        puVar7 = local_58;\n        param_2 = local_48;\n        bVar23 = (byte)local_68;\n      }\n    }\n  }" (else "else") (compound_statement "{\n    uVar6 = uVar18;\n    if (bVar10) {\n      if ((byte *)param_2[2] < (byte *)param_2[3]) {\n        uVar6 = (uint)*(byte *)param_2[2];\n      }\n      else {\n        local_68 = (long *)CONCAT71(local_68._1_7_,bVar23);\n        local_48 = (long *)CONCAT44(local_48._4_4_,uVar18);\n        pcVar2 = *(code **)(*param_2 + 0x48);\n        local_58 = puVar7;\n        *(undefined8 *)(auStack_78 + lVar3 + -8) = 0x2eafe4;\n        uVar6 = (*pcVar2)(param_2);\n        puVar7 = local_58;\n        uVar18 = (uint)local_48;\n        bVar23 = (byte)local_68;\n        if (uVar6 == 0xffffffff) {\n          param_2 = (long *)0x0;\n          uVar6 = 0xffffffff;\n        }\n      }\n    }\n    if ((long *)(param_8 * 2) == (long *)0x0) {\n      uVar15 = 0;\n      puVar7 = (ulong *)0x0;\n      uVar19 = 0;\n    }\n    else {\n      uVar15 = 0;\n      plVar21 = (long *)0x0;\n      uStack_70._3_1_ = bVar23;\n      uStack_70._4_4_ = uVar18;\n      local_68 = param_2;\n      local_58 = puVar22;\n      local_48 = (long *)(param_8 * 2);\n      do {\n        while (**(char **)(param_7 + (long)plVar21 * 8) == (char)uVar6) {\nLAB_002ead54:\n          *(int *)((long)local_58 + uVar15 * 4) = (int)plVar21;\n          uVar15 = uVar15 + 1;\n          plVar21 = (long *)((long)plVar21 + 1);\n          if (local_48 == plVar21) goto LAB_002ead6a;\n        }\n        pcVar2 = *(code **)(*puVar7 + 0x10);\n        *(undefined8 *)(auStack_78 + lVar3 + -8) = 0x2ead39;\n        cVar24 = (*pcVar2)(puVar7);\n        if (cVar24 == (char)uVar6) goto LAB_002ead54;\n        plVar21 = (long *)((long)plVar21 + 1);\n      } while (local_48 != plVar21);\nLAB_002ead6a:\n      puVar22 = local_58;\n      plVar21 = local_68;\n      uVar19 = 0;\n      puVar16 = auStack_78 + lVar3;\n      puVar7 = (ulong *)0x0;\n      param_2 = local_68;\n      uVar18 = uStack_70._4_4_;\n      bVar23 = uStack_70._3_1_;\n      if (uVar15 != 0) {\n        if ((ulong)local_68[2] < (ulong)local_68[3]) {\n          local_68[2] = local_68[2] + 1;\n          local_48._0_1_ = uStack_70._3_1_;\n        }\n        else {\n          local_48 = (long *)CONCAT71(local_48._1_7_,uStack_70._3_1_);\n          pcVar2 = *(code **)(*local_68 + 0x50);\n          *(undefined8 *)(auStack_78 + lVar3 + -8) = 0x2eb01f;\n          (*pcVar2)(plVar21);\n        }\n        local_68 = (long *)CONCAT71(local_68._1_7_,(byte)local_48);\n        local_48 = plVar21;\n        lVar4 = -(uVar15 * 8 + 0x17 & 0xfffffffffffffff0);\n        puVar16 = auStack_78 + lVar4 + lVar3;\n        uVar19 = 0;\n        puVar7 = (ulong *)((long)&uStack_70 + lVar4 + lVar3);\n        local_58 = puVar7;\n        do {\n          __s = *(char **)(param_7 + (long)*(int *)((long)puVar22 + uVar19 * 4) * 8);\n          *(undefined8 *)(auStack_78 + lVar4 + lVar3 + -8) = 0x2eaded;\n          sVar9 = strlen(__s);\n          puVar7[uVar19] = sVar9;\n          uVar19 = uVar19 + 1;\n        } while (uVar15 != uVar19);\n        uVar18 = 0xffffffff;\n        uVar19 = 1;\n        puVar7 = local_58;\n        param_2 = local_48;\n        bVar23 = (byte)local_68;\n      }\n    }\n  }" ({ "{") (expression_statement "uVar6 = uVar18;" (assignment_expression "uVar6 = uVar18" (identifier "uVar6") (= "=") (identifier "uVar18")) (; ";")) (if_statement "if (bVar10) {\n      if ((byte *)param_2[2] < (byte *)param_2[3]) {\n        uVar6 = (uint)*(byte *)param_2[2];\n      }\n      else {\n        local_68 = (long *)CONCAT71(local_68._1_7_,bVar23);\n        local_48 = (long *)CONCAT44(local_48._4_4_,uVar18);\n        pcVar2 = *(code **)(*param_2 + 0x48);\n        local_58 = puVar7;\n        *(undefined8 *)(auStack_78 + lVar3 + -8) = 0x2eafe4;\n        uVar6 = (*pcVar2)(param_2);\n        puVar7 = local_58;\n        uVar18 = (uint)local_48;\n        bVar23 = (byte)local_68;\n        if (uVar6 == 0xffffffff) {\n          param_2 = (long *)0x0;\n          uVar6 = 0xffffffff;\n        }\n      }\n    }" (if "if") (parenthesized_expression "(bVar10)" (( "(") (identifier "bVar10") () ")")) (compound_statement "{\n      if ((byte *)param_2[2] < (byte *)param_2[3]) {\n        uVar6 = (uint)*(byte *)param_2[2];\n      }\n      else {\n        local_68 = (long *)CONCAT71(local_68._1_7_,bVar23);\n        local_48 = (long *)CONCAT44(local_48._4_4_,uVar18);\n        pcVar2 = *(code **)(*param_2 + 0x48);\n        local_58 = puVar7;\n        *(undefined8 *)(auStack_78 + lVar3 + -8) = 0x2eafe4;\n        uVar6 = (*pcVar2)(param_2);\n        puVar7 = local_58;\n        uVar18 = (uint)local_48;\n        bVar23 = (byte)local_68;\n        if (uVar6 == 0xffffffff) {\n          param_2 = (long *)0x0;\n          uVar6 = 0xffffffff;\n        }\n      }\n    }" ({ "{") (if_statement "if ((byte *)param_2[2] < (byte *)param_2[3]) {\n        uVar6 = (uint)*(byte *)param_2[2];\n      }\n      else {\n        local_68 = (long *)CONCAT71(local_68._1_7_,bVar23);\n        local_48 = (long *)CONCAT44(local_48._4_4_,uVar18);\n        pcVar2 = *(code **)(*param_2 + 0x48);\n        local_58 = puVar7;\n        *(undefined8 *)(auStack_78 + lVar3 + -8) = 0x2eafe4;\n        uVar6 = (*pcVar2)(param_2);\n        puVar7 = local_58;\n        uVar18 = (uint)local_48;\n        bVar23 = (byte)local_68;\n        if (uVar6 == 0xffffffff) {\n          param_2 = (long *)0x0;\n          uVar6 = 0xffffffff;\n        }\n      }" (if "if") (parenthesized_expression "((byte *)param_2[2] < (byte *)param_2[3])" (( "(") (binary_expression "(byte *)param_2[2] < (byte *)param_2[3]" (cast_expression "(byte *)param_2[2]" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_2[2]" (identifier "param_2") ([ "[") (number_literal "2") (] "]"))) (< "<") (cast_expression "(byte *)param_2[3]" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_2[3]" (identifier "param_2") ([ "[") (number_literal "3") (] "]")))) () ")")) (compound_statement "{\n        uVar6 = (uint)*(byte *)param_2[2];\n      }" ({ "{") (expression_statement "uVar6 = (uint)*(byte *)param_2[2];" (assignment_expression "uVar6 = (uint)*(byte *)param_2[2]" (identifier "uVar6") (= "=") (binary_expression "(uint)*(byte *)param_2[2]" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(byte *)param_2[2]" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_2[2]" (identifier "param_2") ([ "[") (number_literal "2") (] "]"))))) (; ";")) (} "}")) (else_clause "else {\n        local_68 = (long *)CONCAT71(local_68._1_7_,bVar23);\n        local_48 = (long *)CONCAT44(local_48._4_4_,uVar18);\n        pcVar2 = *(code **)(*param_2 + 0x48);\n        local_58 = puVar7;\n        *(undefined8 *)(auStack_78 + lVar3 + -8) = 0x2eafe4;\n        uVar6 = (*pcVar2)(param_2);\n        puVar7 = local_58;\n        uVar18 = (uint)local_48;\n        bVar23 = (byte)local_68;\n        if (uVar6 == 0xffffffff) {\n          param_2 = (long *)0x0;\n          uVar6 = 0xffffffff;\n        }\n      }" (else "else") (compound_statement "{\n        local_68 = (long *)CONCAT71(local_68._1_7_,bVar23);\n        local_48 = (long *)CONCAT44(local_48._4_4_,uVar18);\n        pcVar2 = *(code **)(*param_2 + 0x48);\n        local_58 = puVar7;\n        *(undefined8 *)(auStack_78 + lVar3 + -8) = 0x2eafe4;\n        uVar6 = (*pcVar2)(param_2);\n        puVar7 = local_58;\n        uVar18 = (uint)local_48;\n        bVar23 = (byte)local_68;\n        if (uVar6 == 0xffffffff) {\n          param_2 = (long *)0x0;\n          uVar6 = 0xffffffff;\n        }\n      }" ({ "{") (expression_statement "local_68 = (long *)CONCAT71(local_68._1_7_,bVar23);" (assignment_expression "local_68 = (long *)CONCAT71(local_68._1_7_,bVar23)" (identifier "local_68") (= "=") (cast_expression "(long *)CONCAT71(local_68._1_7_,bVar23)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "CONCAT71(local_68._1_7_,bVar23)" (identifier "CONCAT71") (argument_list "(local_68._1_7_,bVar23)" (( "(") (field_expression "local_68._1_7_" (identifier "local_68") (. ".") (field_identifier "_1_7_")) (, ",") (identifier "bVar23") () ")"))))) (; ";")) (expression_statement "local_48 = (long *)CONCAT44(local_48._4_4_,uVar18);" (assignment_expression "local_48 = (long *)CONCAT44(local_48._4_4_,uVar18)" (identifier "local_48") (= "=") (cast_expression "(long *)CONCAT44(local_48._4_4_,uVar18)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "CONCAT44(local_48._4_4_,uVar18)" (identifier "CONCAT44") (argument_list "(local_48._4_4_,uVar18)" (( "(") (field_expression "local_48._4_4_" (identifier "local_48") (. ".") (field_identifier "_4_4_")) (, ",") (identifier "uVar18") () ")"))))) (; ";")) (expression_statement "pcVar2 = *(code **)(*param_2 + 0x48);" (assignment_expression "pcVar2 = *(code **)(*param_2 + 0x48)" (identifier "pcVar2") (= "=") (pointer_expression "*(code **)(*param_2 + 0x48)" (* "*") (cast_expression "(code **)(*param_2 + 0x48)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*param_2 + 0x48)" (( "(") (binary_expression "*param_2 + 0x48" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (+ "+") (number_literal "0x48")) () ")"))))) (; ";")) (expression_statement "local_58 = puVar7;" (assignment_expression "local_58 = puVar7" (identifier "local_58") (= "=") (identifier "puVar7")) (; ";")) (expression_statement "*(undefined8 *)(auStack_78 + lVar3 + -8) = 0x2eafe4;" (assignment_expression "*(undefined8 *)(auStack_78 + lVar3 + -8) = 0x2eafe4" (pointer_expression "*(undefined8 *)(auStack_78 + lVar3 + -8)" (* "*") (cast_expression "(undefined8 *)(auStack_78 + lVar3 + -8)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(auStack_78 + lVar3 + -8)" (( "(") (binary_expression "auStack_78 + lVar3 + -8" (binary_expression "auStack_78 + lVar3" (identifier "auStack_78") (+ "+") (identifier "lVar3")) (+ "+") (number_literal "-8")) () ")")))) (= "=") (number_literal "0x2eafe4")) (; ";")) (expression_statement "uVar6 = (*pcVar2)(param_2);" (assignment_expression "uVar6 = (*pcVar2)(param_2)" (identifier "uVar6") (= "=") (call_expression "(*pcVar2)(param_2)" (parenthesized_expression "(*pcVar2)" (( "(") (pointer_expression "*pcVar2" (* "*") (identifier "pcVar2")) () ")")) (argument_list "(param_2)" (( "(") (identifier "param_2") () ")")))) (; ";")) (expression_statement "puVar7 = local_58;" (assignment_expression "puVar7 = local_58" (identifier "puVar7") (= "=") (identifier "local_58")) (; ";")) (expression_statement "uVar18 = (uint)local_48;" (assignment_expression "uVar18 = (uint)local_48" (identifier "uVar18") (= "=") (cast_expression "(uint)local_48" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "local_48"))) (; ";")) (expression_statement "bVar23 = (byte)local_68;" (assignment_expression "bVar23 = (byte)local_68" (identifier "bVar23") (= "=") (cast_expression "(byte)local_68" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "local_68"))) (; ";")) (if_statement "if (uVar6 == 0xffffffff) {\n          param_2 = (long *)0x0;\n          uVar6 = 0xffffffff;\n        }" (if "if") (parenthesized_expression "(uVar6 == 0xffffffff)" (( "(") (binary_expression "uVar6 == 0xffffffff" (identifier "uVar6") (== "==") (number_literal "0xffffffff")) () ")")) (compound_statement "{\n          param_2 = (long *)0x0;\n          uVar6 = 0xffffffff;\n        }" ({ "{") (expression_statement "param_2 = (long *)0x0;" (assignment_expression "param_2 = (long *)0x0" (identifier "param_2") (= "=") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "uVar6 = 0xffffffff;" (assignment_expression "uVar6 = 0xffffffff" (identifier "uVar6") (= "=") (number_literal "0xffffffff")) (; ";")) (} "}"))) (} "}")))) (} "}"))) (if_statement "if ((long *)(param_8 * 2) == (long *)0x0) {\n      uVar15 = 0;\n      puVar7 = (ulong *)0x0;\n      uVar19 = 0;\n    }\n    else {\n      uVar15 = 0;\n      plVar21 = (long *)0x0;\n      uStack_70._3_1_ = bVar23;\n      uStack_70._4_4_ = uVar18;\n      local_68 = param_2;\n      local_58 = puVar22;\n      local_48 = (long *)(param_8 * 2);\n      do {\n        while (**(char **)(param_7 + (long)plVar21 * 8) == (char)uVar6) {\nLAB_002ead54:\n          *(int *)((long)local_58 + uVar15 * 4) = (int)plVar21;\n          uVar15 = uVar15 + 1;\n          plVar21 = (long *)((long)plVar21 + 1);\n          if (local_48 == plVar21) goto LAB_002ead6a;\n        }\n        pcVar2 = *(code **)(*puVar7 + 0x10);\n        *(undefined8 *)(auStack_78 + lVar3 + -8) = 0x2ead39;\n        cVar24 = (*pcVar2)(puVar7);\n        if (cVar24 == (char)uVar6) goto LAB_002ead54;\n        plVar21 = (long *)((long)plVar21 + 1);\n      } while (local_48 != plVar21);\nLAB_002ead6a:\n      puVar22 = local_58;\n      plVar21 = local_68;\n      uVar19 = 0;\n      puVar16 = auStack_78 + lVar3;\n      puVar7 = (ulong *)0x0;\n      param_2 = local_68;\n      uVar18 = uStack_70._4_4_;\n      bVar23 = uStack_70._3_1_;\n      if (uVar15 != 0) {\n        if ((ulong)local_68[2] < (ulong)local_68[3]) {\n          local_68[2] = local_68[2] + 1;\n          local_48._0_1_ = uStack_70._3_1_;\n        }\n        else {\n          local_48 = (long *)CONCAT71(local_48._1_7_,uStack_70._3_1_);\n          pcVar2 = *(code **)(*local_68 + 0x50);\n          *(undefined8 *)(auStack_78 + lVar3 + -8) = 0x2eb01f;\n          (*pcVar2)(plVar21);\n        }\n        local_68 = (long *)CONCAT71(local_68._1_7_,(byte)local_48);\n        local_48 = plVar21;\n        lVar4 = -(uVar15 * 8 + 0x17 & 0xfffffffffffffff0);\n        puVar16 = auStack_78 + lVar4 + lVar3;\n        uVar19 = 0;\n        puVar7 = (ulong *)((long)&uStack_70 + lVar4 + lVar3);\n        local_58 = puVar7;\n        do {\n          __s = *(char **)(param_7 + (long)*(int *)((long)puVar22 + uVar19 * 4) * 8);\n          *(undefined8 *)(auStack_78 + lVar4 + lVar3 + -8) = 0x2eaded;\n          sVar9 = strlen(__s);\n          puVar7[uVar19] = sVar9;\n          uVar19 = uVar19 + 1;\n        } while (uVar15 != uVar19);\n        uVar18 = 0xffffffff;\n        uVar19 = 1;\n        puVar7 = local_58;\n        param_2 = local_48;\n        bVar23 = (byte)local_68;\n      }\n    }" (if "if") (parenthesized_expression "((long *)(param_8 * 2) == (long *)0x0)" (( "(") (binary_expression "(long *)(param_8 * 2) == (long *)0x0" (cast_expression "(long *)(param_8 * 2)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_8 * 2)" (( "(") (binary_expression "param_8 * 2" (identifier "param_8") (* "*") (number_literal "2")) () ")"))) (== "==") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      uVar15 = 0;\n      puVar7 = (ulong *)0x0;\n      uVar19 = 0;\n    }" ({ "{") (expression_statement "uVar15 = 0;" (assignment_expression "uVar15 = 0" (identifier "uVar15") (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar7 = (ulong *)0x0;" (assignment_expression "puVar7 = (ulong *)0x0" (identifier "puVar7") (= "=") (cast_expression "(ulong *)0x0" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "uVar19 = 0;" (assignment_expression "uVar19 = 0" (identifier "uVar19") (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n      uVar15 = 0;\n      plVar21 = (long *)0x0;\n      uStack_70._3_1_ = bVar23;\n      uStack_70._4_4_ = uVar18;\n      local_68 = param_2;\n      local_58 = puVar22;\n      local_48 = (long *)(param_8 * 2);\n      do {\n        while (**(char **)(param_7 + (long)plVar21 * 8) == (char)uVar6) {\nLAB_002ead54:\n          *(int *)((long)local_58 + uVar15 * 4) = (int)plVar21;\n          uVar15 = uVar15 + 1;\n          plVar21 = (long *)((long)plVar21 + 1);\n          if (local_48 == plVar21) goto LAB_002ead6a;\n        }\n        pcVar2 = *(code **)(*puVar7 + 0x10);\n        *(undefined8 *)(auStack_78 + lVar3 + -8) = 0x2ead39;\n        cVar24 = (*pcVar2)(puVar7);\n        if (cVar24 == (char)uVar6) goto LAB_002ead54;\n        plVar21 = (long *)((long)plVar21 + 1);\n      } while (local_48 != plVar21);\nLAB_002ead6a:\n      puVar22 = local_58;\n      plVar21 = local_68;\n      uVar19 = 0;\n      puVar16 = auStack_78 + lVar3;\n      puVar7 = (ulong *)0x0;\n      param_2 = local_68;\n      uVar18 = uStack_70._4_4_;\n      bVar23 = uStack_70._3_1_;\n      if (uVar15 != 0) {\n        if ((ulong)local_68[2] < (ulong)local_68[3]) {\n          local_68[2] = local_68[2] + 1;\n          local_48._0_1_ = uStack_70._3_1_;\n        }\n        else {\n          local_48 = (long *)CONCAT71(local_48._1_7_,uStack_70._3_1_);\n          pcVar2 = *(code **)(*local_68 + 0x50);\n          *(undefined8 *)(auStack_78 + lVar3 + -8) = 0x2eb01f;\n          (*pcVar2)(plVar21);\n        }\n        local_68 = (long *)CONCAT71(local_68._1_7_,(byte)local_48);\n        local_48 = plVar21;\n        lVar4 = -(uVar15 * 8 + 0x17 & 0xfffffffffffffff0);\n        puVar16 = auStack_78 + lVar4 + lVar3;\n        uVar19 = 0;\n        puVar7 = (ulong *)((long)&uStack_70 + lVar4 + lVar3);\n        local_58 = puVar7;\n        do {\n          __s = *(char **)(param_7 + (long)*(int *)((long)puVar22 + uVar19 * 4) * 8);\n          *(undefined8 *)(auStack_78 + lVar4 + lVar3 + -8) = 0x2eaded;\n          sVar9 = strlen(__s);\n          puVar7[uVar19] = sVar9;\n          uVar19 = uVar19 + 1;\n        } while (uVar15 != uVar19);\n        uVar18 = 0xffffffff;\n        uVar19 = 1;\n        puVar7 = local_58;\n        param_2 = local_48;\n        bVar23 = (byte)local_68;\n      }\n    }" (else "else") (compound_statement "{\n      uVar15 = 0;\n      plVar21 = (long *)0x0;\n      uStack_70._3_1_ = bVar23;\n      uStack_70._4_4_ = uVar18;\n      local_68 = param_2;\n      local_58 = puVar22;\n      local_48 = (long *)(param_8 * 2);\n      do {\n        while (**(char **)(param_7 + (long)plVar21 * 8) == (char)uVar6) {\nLAB_002ead54:\n          *(int *)((long)local_58 + uVar15 * 4) = (int)plVar21;\n          uVar15 = uVar15 + 1;\n          plVar21 = (long *)((long)plVar21 + 1);\n          if (local_48 == plVar21) goto LAB_002ead6a;\n        }\n        pcVar2 = *(code **)(*puVar7 + 0x10);\n        *(undefined8 *)(auStack_78 + lVar3 + -8) = 0x2ead39;\n        cVar24 = (*pcVar2)(puVar7);\n        if (cVar24 == (char)uVar6) goto LAB_002ead54;\n        plVar21 = (long *)((long)plVar21 + 1);\n      } while (local_48 != plVar21);\nLAB_002ead6a:\n      puVar22 = local_58;\n      plVar21 = local_68;\n      uVar19 = 0;\n      puVar16 = auStack_78 + lVar3;\n      puVar7 = (ulong *)0x0;\n      param_2 = local_68;\n      uVar18 = uStack_70._4_4_;\n      bVar23 = uStack_70._3_1_;\n      if (uVar15 != 0) {\n        if ((ulong)local_68[2] < (ulong)local_68[3]) {\n          local_68[2] = local_68[2] + 1;\n          local_48._0_1_ = uStack_70._3_1_;\n        }\n        else {\n          local_48 = (long *)CONCAT71(local_48._1_7_,uStack_70._3_1_);\n          pcVar2 = *(code **)(*local_68 + 0x50);\n          *(undefined8 *)(auStack_78 + lVar3 + -8) = 0x2eb01f;\n          (*pcVar2)(plVar21);\n        }\n        local_68 = (long *)CONCAT71(local_68._1_7_,(byte)local_48);\n        local_48 = plVar21;\n        lVar4 = -(uVar15 * 8 + 0x17 & 0xfffffffffffffff0);\n        puVar16 = auStack_78 + lVar4 + lVar3;\n        uVar19 = 0;\n        puVar7 = (ulong *)((long)&uStack_70 + lVar4 + lVar3);\n        local_58 = puVar7;\n        do {\n          __s = *(char **)(param_7 + (long)*(int *)((long)puVar22 + uVar19 * 4) * 8);\n          *(undefined8 *)(auStack_78 + lVar4 + lVar3 + -8) = 0x2eaded;\n          sVar9 = strlen(__s);\n          puVar7[uVar19] = sVar9;\n          uVar19 = uVar19 + 1;\n        } while (uVar15 != uVar19);\n        uVar18 = 0xffffffff;\n        uVar19 = 1;\n        puVar7 = local_58;\n        param_2 = local_48;\n        bVar23 = (byte)local_68;\n      }\n    }" ({ "{") (expression_statement "uVar15 = 0;" (assignment_expression "uVar15 = 0" (identifier "uVar15") (= "=") (number_literal "0")) (; ";")) (expression_statement "plVar21 = (long *)0x0;" (assignment_expression "plVar21 = (long *)0x0" (identifier "plVar21") (= "=") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "uStack_70._3_1_ = bVar23;" (assignment_expression "uStack_70._3_1_ = bVar23" (field_expression "uStack_70._3_1_" (identifier "uStack_70") (. ".") (field_identifier "_3_1_")) (= "=") (identifier "bVar23")) (; ";")) (expression_statement "uStack_70._4_4_ = uVar18;" (assignment_expression "uStack_70._4_4_ = uVar18" (field_expression "uStack_70._4_4_" (identifier "uStack_70") (. ".") (field_identifier "_4_4_")) (= "=") (identifier "uVar18")) (; ";")) (expression_statement "local_68 = param_2;" (assignment_expression "local_68 = param_2" (identifier "local_68") (= "=") (identifier "param_2")) (; ";")) (expression_statement "local_58 = puVar22;" (assignment_expression "local_58 = puVar22" (identifier "local_58") (= "=") (identifier "puVar22")) (; ";")) (expression_statement "local_48 = (long *)(param_8 * 2);" (assignment_expression "local_48 = (long *)(param_8 * 2)" (identifier "local_48") (= "=") (cast_expression "(long *)(param_8 * 2)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_8 * 2)" (( "(") (binary_expression "param_8 * 2" (identifier "param_8") (* "*") (number_literal "2")) () ")")))) (; ";")) (do_statement "do {\n        while (**(char **)(param_7 + (long)plVar21 * 8) == (char)uVar6) {\nLAB_002ead54:\n          *(int *)((long)local_58 + uVar15 * 4) = (int)plVar21;\n          uVar15 = uVar15 + 1;\n          plVar21 = (long *)((long)plVar21 + 1);\n          if (local_48 == plVar21) goto LAB_002ead6a;\n        }\n        pcVar2 = *(code **)(*puVar7 + 0x10);\n        *(undefined8 *)(auStack_78 + lVar3 + -8) = 0x2ead39;\n        cVar24 = (*pcVar2)(puVar7);\n        if (cVar24 == (char)uVar6) goto LAB_002ead54;\n        plVar21 = (long *)((long)plVar21 + 1);\n      } while (local_48 != plVar21);" (do "do") (compound_statement "{\n        while (**(char **)(param_7 + (long)plVar21 * 8) == (char)uVar6) {\nLAB_002ead54:\n          *(int *)((long)local_58 + uVar15 * 4) = (int)plVar21;\n          uVar15 = uVar15 + 1;\n          plVar21 = (long *)((long)plVar21 + 1);\n          if (local_48 == plVar21) goto LAB_002ead6a;\n        }\n        pcVar2 = *(code **)(*puVar7 + 0x10);\n        *(undefined8 *)(auStack_78 + lVar3 + -8) = 0x2ead39;\n        cVar24 = (*pcVar2)(puVar7);\n        if (cVar24 == (char)uVar6) goto LAB_002ead54;\n        plVar21 = (long *)((long)plVar21 + 1);\n      }" ({ "{") (while_statement "while (**(char **)(param_7 + (long)plVar21 * 8) == (char)uVar6) {\nLAB_002ead54:\n          *(int *)((long)local_58 + uVar15 * 4) = (int)plVar21;\n          uVar15 = uVar15 + 1;\n          plVar21 = (long *)((long)plVar21 + 1);\n          if (local_48 == plVar21) goto LAB_002ead6a;\n        }" (while "while") (parenthesized_expression "(**(char **)(param_7 + (long)plVar21 * 8) == (char)uVar6)" (( "(") (binary_expression "**(char **)(param_7 + (long)plVar21 * 8) == (char)uVar6" (pointer_expression "**(char **)(param_7 + (long)plVar21 * 8)" (* "*") (pointer_expression "*(char **)(param_7 + (long)plVar21 * 8)" (* "*") (cast_expression "(char **)(param_7 + (long)plVar21 * 8)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_7 + (long)plVar21 * 8)" (( "(") (binary_expression "param_7 + (long)plVar21 * 8" (identifier "param_7") (+ "+") (binary_expression "(long)plVar21 * 8" (cast_expression "(long)plVar21" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "plVar21")) (* "*") (number_literal "8"))) () ")"))))) (== "==") (cast_expression "(char)uVar6" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "uVar6"))) () ")")) (compound_statement "{\nLAB_002ead54:\n          *(int *)((long)local_58 + uVar15 * 4) = (int)plVar21;\n          uVar15 = uVar15 + 1;\n          plVar21 = (long *)((long)plVar21 + 1);\n          if (local_48 == plVar21) goto LAB_002ead6a;\n        }" ({ "{") (labeled_statement "LAB_002ead54:\n          *(int *)((long)local_58 + uVar15 * 4) = (int)plVar21;" (statement_identifier "LAB_002ead54") (: ":") (expression_statement "*(int *)((long)local_58 + uVar15 * 4) = (int)plVar21;" (assignment_expression "*(int *)((long)local_58 + uVar15 * 4) = (int)plVar21" (pointer_expression "*(int *)((long)local_58 + uVar15 * 4)" (* "*") (cast_expression "(int *)((long)local_58 + uVar15 * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)local_58 + uVar15 * 4)" (( "(") (binary_expression "(long)local_58 + uVar15 * 4" (cast_expression "(long)local_58" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "local_58")) (+ "+") (binary_expression "uVar15 * 4" (identifier "uVar15") (* "*") (number_literal "4"))) () ")")))) (= "=") (cast_expression "(int)plVar21" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "plVar21"))) (; ";"))) (expression_statement "uVar15 = uVar15 + 1;" (assignment_expression "uVar15 = uVar15 + 1" (identifier "uVar15") (= "=") (binary_expression "uVar15 + 1" (identifier "uVar15") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "plVar21 = (long *)((long)plVar21 + 1);" (assignment_expression "plVar21 = (long *)((long)plVar21 + 1)" (identifier "plVar21") (= "=") (cast_expression "(long *)((long)plVar21 + 1)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)plVar21 + 1)" (( "(") (binary_expression "(long)plVar21 + 1" (cast_expression "(long)plVar21" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "plVar21")) (+ "+") (number_literal "1")) () ")")))) (; ";")) (if_statement "if (local_48 == plVar21) goto LAB_002ead6a;" (if "if") (parenthesized_expression "(local_48 == plVar21)" (( "(") (binary_expression "local_48 == plVar21" (identifier "local_48") (== "==") (identifier "plVar21")) () ")")) (goto_statement "goto LAB_002ead6a;" (goto "goto") (statement_identifier "LAB_002ead6a") (; ";"))) (} "}"))) (expression_statement "pcVar2 = *(code **)(*puVar7 + 0x10);" (assignment_expression "pcVar2 = *(code **)(*puVar7 + 0x10)" (identifier "pcVar2") (= "=") (pointer_expression "*(code **)(*puVar7 + 0x10)" (* "*") (cast_expression "(code **)(*puVar7 + 0x10)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*puVar7 + 0x10)" (( "(") (binary_expression "*puVar7 + 0x10" (pointer_expression "*puVar7" (* "*") (identifier "puVar7")) (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (expression_statement "*(undefined8 *)(auStack_78 + lVar3 + -8) = 0x2ead39;" (assignment_expression "*(undefined8 *)(auStack_78 + lVar3 + -8) = 0x2ead39" (pointer_expression "*(undefined8 *)(auStack_78 + lVar3 + -8)" (* "*") (cast_expression "(undefined8 *)(auStack_78 + lVar3 + -8)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(auStack_78 + lVar3 + -8)" (( "(") (binary_expression "auStack_78 + lVar3 + -8" (binary_expression "auStack_78 + lVar3" (identifier "auStack_78") (+ "+") (identifier "lVar3")) (+ "+") (number_literal "-8")) () ")")))) (= "=") (number_literal "0x2ead39")) (; ";")) (expression_statement "cVar24 = (*pcVar2)(puVar7);" (assignment_expression "cVar24 = (*pcVar2)(puVar7)" (identifier "cVar24") (= "=") (call_expression "(*pcVar2)(puVar7)" (parenthesized_expression "(*pcVar2)" (( "(") (pointer_expression "*pcVar2" (* "*") (identifier "pcVar2")) () ")")) (argument_list "(puVar7)" (( "(") (identifier "puVar7") () ")")))) (; ";")) (if_statement "if (cVar24 == (char)uVar6) goto LAB_002ead54;" (if "if") (parenthesized_expression "(cVar24 == (char)uVar6)" (( "(") (binary_expression "cVar24 == (char)uVar6" (identifier "cVar24") (== "==") (cast_expression "(char)uVar6" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "uVar6"))) () ")")) (goto_statement "goto LAB_002ead54;" (goto "goto") (statement_identifier "LAB_002ead54") (; ";"))) (expression_statement "plVar21 = (long *)((long)plVar21 + 1);" (assignment_expression "plVar21 = (long *)((long)plVar21 + 1)" (identifier "plVar21") (= "=") (cast_expression "(long *)((long)plVar21 + 1)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)plVar21 + 1)" (( "(") (binary_expression "(long)plVar21 + 1" (cast_expression "(long)plVar21" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "plVar21")) (+ "+") (number_literal "1")) () ")")))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(local_48 != plVar21)" (( "(") (binary_expression "local_48 != plVar21" (identifier "local_48") (!= "!=") (identifier "plVar21")) () ")")) (; ";")) (labeled_statement "LAB_002ead6a:\n      puVar22 = local_58;" (statement_identifier "LAB_002ead6a") (: ":") (expression_statement "puVar22 = local_58;" (assignment_expression "puVar22 = local_58" (identifier "puVar22") (= "=") (identifier "local_58")) (; ";"))) (expression_statement "plVar21 = local_68;" (assignment_expression "plVar21 = local_68" (identifier "plVar21") (= "=") (identifier "local_68")) (; ";")) (expression_statement "uVar19 = 0;" (assignment_expression "uVar19 = 0" (identifier "uVar19") (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar16 = auStack_78 + lVar3;" (assignment_expression "puVar16 = auStack_78 + lVar3" (identifier "puVar16") (= "=") (binary_expression "auStack_78 + lVar3" (identifier "auStack_78") (+ "+") (identifier "lVar3"))) (; ";")) (expression_statement "puVar7 = (ulong *)0x0;" (assignment_expression "puVar7 = (ulong *)0x0" (identifier "puVar7") (= "=") (cast_expression "(ulong *)0x0" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "param_2 = local_68;" (assignment_expression "param_2 = local_68" (identifier "param_2") (= "=") (identifier "local_68")) (; ";")) (expression_statement "uVar18 = uStack_70._4_4_;" (assignment_expression "uVar18 = uStack_70._4_4_" (identifier "uVar18") (= "=") (field_expression "uStack_70._4_4_" (identifier "uStack_70") (. ".") (field_identifier "_4_4_"))) (; ";")) (expression_statement "bVar23 = uStack_70._3_1_;" (assignment_expression "bVar23 = uStack_70._3_1_" (identifier "bVar23") (= "=") (field_expression "uStack_70._3_1_" (identifier "uStack_70") (. ".") (field_identifier "_3_1_"))) (; ";")) (if_statement "if (uVar15 != 0) {\n        if ((ulong)local_68[2] < (ulong)local_68[3]) {\n          local_68[2] = local_68[2] + 1;\n          local_48._0_1_ = uStack_70._3_1_;\n        }\n        else {\n          local_48 = (long *)CONCAT71(local_48._1_7_,uStack_70._3_1_);\n          pcVar2 = *(code **)(*local_68 + 0x50);\n          *(undefined8 *)(auStack_78 + lVar3 + -8) = 0x2eb01f;\n          (*pcVar2)(plVar21);\n        }\n        local_68 = (long *)CONCAT71(local_68._1_7_,(byte)local_48);\n        local_48 = plVar21;\n        lVar4 = -(uVar15 * 8 + 0x17 & 0xfffffffffffffff0);\n        puVar16 = auStack_78 + lVar4 + lVar3;\n        uVar19 = 0;\n        puVar7 = (ulong *)((long)&uStack_70 + lVar4 + lVar3);\n        local_58 = puVar7;\n        do {\n          __s = *(char **)(param_7 + (long)*(int *)((long)puVar22 + uVar19 * 4) * 8);\n          *(undefined8 *)(auStack_78 + lVar4 + lVar3 + -8) = 0x2eaded;\n          sVar9 = strlen(__s);\n          puVar7[uVar19] = sVar9;\n          uVar19 = uVar19 + 1;\n        } while (uVar15 != uVar19);\n        uVar18 = 0xffffffff;\n        uVar19 = 1;\n        puVar7 = local_58;\n        param_2 = local_48;\n        bVar23 = (byte)local_68;\n      }" (if "if") (parenthesized_expression "(uVar15 != 0)" (( "(") (binary_expression "uVar15 != 0" (identifier "uVar15") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        if ((ulong)local_68[2] < (ulong)local_68[3]) {\n          local_68[2] = local_68[2] + 1;\n          local_48._0_1_ = uStack_70._3_1_;\n        }\n        else {\n          local_48 = (long *)CONCAT71(local_48._1_7_,uStack_70._3_1_);\n          pcVar2 = *(code **)(*local_68 + 0x50);\n          *(undefined8 *)(auStack_78 + lVar3 + -8) = 0x2eb01f;\n          (*pcVar2)(plVar21);\n        }\n        local_68 = (long *)CONCAT71(local_68._1_7_,(byte)local_48);\n        local_48 = plVar21;\n        lVar4 = -(uVar15 * 8 + 0x17 & 0xfffffffffffffff0);\n        puVar16 = auStack_78 + lVar4 + lVar3;\n        uVar19 = 0;\n        puVar7 = (ulong *)((long)&uStack_70 + lVar4 + lVar3);\n        local_58 = puVar7;\n        do {\n          __s = *(char **)(param_7 + (long)*(int *)((long)puVar22 + uVar19 * 4) * 8);\n          *(undefined8 *)(auStack_78 + lVar4 + lVar3 + -8) = 0x2eaded;\n          sVar9 = strlen(__s);\n          puVar7[uVar19] = sVar9;\n          uVar19 = uVar19 + 1;\n        } while (uVar15 != uVar19);\n        uVar18 = 0xffffffff;\n        uVar19 = 1;\n        puVar7 = local_58;\n        param_2 = local_48;\n        bVar23 = (byte)local_68;\n      }" ({ "{") (if_statement "if ((ulong)local_68[2] < (ulong)local_68[3]) {\n          local_68[2] = local_68[2] + 1;\n          local_48._0_1_ = uStack_70._3_1_;\n        }\n        else {\n          local_48 = (long *)CONCAT71(local_48._1_7_,uStack_70._3_1_);\n          pcVar2 = *(code **)(*local_68 + 0x50);\n          *(undefined8 *)(auStack_78 + lVar3 + -8) = 0x2eb01f;\n          (*pcVar2)(plVar21);\n        }" (if "if") (parenthesized_expression "((ulong)local_68[2] < (ulong)local_68[3])" (( "(") (binary_expression "(ulong)local_68[2] < (ulong)local_68[3]" (cast_expression "(ulong)local_68[2]" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (subscript_expression "local_68[2]" (identifier "local_68") ([ "[") (number_literal "2") (] "]"))) (< "<") (cast_expression "(ulong)local_68[3]" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (subscript_expression "local_68[3]" (identifier "local_68") ([ "[") (number_literal "3") (] "]")))) () ")")) (compound_statement "{\n          local_68[2] = local_68[2] + 1;\n          local_48._0_1_ = uStack_70._3_1_;\n        }" ({ "{") (expression_statement "local_68[2] = local_68[2] + 1;" (assignment_expression "local_68[2] = local_68[2] + 1" (subscript_expression "local_68[2]" (identifier "local_68") ([ "[") (number_literal "2") (] "]")) (= "=") (binary_expression "local_68[2] + 1" (subscript_expression "local_68[2]" (identifier "local_68") ([ "[") (number_literal "2") (] "]")) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "local_48._0_1_ = uStack_70._3_1_;" (assignment_expression "local_48._0_1_ = uStack_70._3_1_" (field_expression "local_48._0_1_" (identifier "local_48") (. ".") (field_identifier "_0_1_")) (= "=") (field_expression "uStack_70._3_1_" (identifier "uStack_70") (. ".") (field_identifier "_3_1_"))) (; ";")) (} "}")) (else_clause "else {\n          local_48 = (long *)CONCAT71(local_48._1_7_,uStack_70._3_1_);\n          pcVar2 = *(code **)(*local_68 + 0x50);\n          *(undefined8 *)(auStack_78 + lVar3 + -8) = 0x2eb01f;\n          (*pcVar2)(plVar21);\n        }" (else "else") (compound_statement "{\n          local_48 = (long *)CONCAT71(local_48._1_7_,uStack_70._3_1_);\n          pcVar2 = *(code **)(*local_68 + 0x50);\n          *(undefined8 *)(auStack_78 + lVar3 + -8) = 0x2eb01f;\n          (*pcVar2)(plVar21);\n        }" ({ "{") (expression_statement "local_48 = (long *)CONCAT71(local_48._1_7_,uStack_70._3_1_);" (assignment_expression "local_48 = (long *)CONCAT71(local_48._1_7_,uStack_70._3_1_)" (identifier "local_48") (= "=") (cast_expression "(long *)CONCAT71(local_48._1_7_,uStack_70._3_1_)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "CONCAT71(local_48._1_7_,uStack_70._3_1_)" (identifier "CONCAT71") (argument_list "(local_48._1_7_,uStack_70._3_1_)" (( "(") (field_expression "local_48._1_7_" (identifier "local_48") (. ".") (field_identifier "_1_7_")) (, ",") (field_expression "uStack_70._3_1_" (identifier "uStack_70") (. ".") (field_identifier "_3_1_")) () ")"))))) (; ";")) (expression_statement "pcVar2 = *(code **)(*local_68 + 0x50);" (assignment_expression "pcVar2 = *(code **)(*local_68 + 0x50)" (identifier "pcVar2") (= "=") (pointer_expression "*(code **)(*local_68 + 0x50)" (* "*") (cast_expression "(code **)(*local_68 + 0x50)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*local_68 + 0x50)" (( "(") (binary_expression "*local_68 + 0x50" (pointer_expression "*local_68" (* "*") (identifier "local_68")) (+ "+") (number_literal "0x50")) () ")"))))) (; ";")) (expression_statement "*(undefined8 *)(auStack_78 + lVar3 + -8) = 0x2eb01f;" (assignment_expression "*(undefined8 *)(auStack_78 + lVar3 + -8) = 0x2eb01f" (pointer_expression "*(undefined8 *)(auStack_78 + lVar3 + -8)" (* "*") (cast_expression "(undefined8 *)(auStack_78 + lVar3 + -8)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(auStack_78 + lVar3 + -8)" (( "(") (binary_expression "auStack_78 + lVar3 + -8" (binary_expression "auStack_78 + lVar3" (identifier "auStack_78") (+ "+") (identifier "lVar3")) (+ "+") (number_literal "-8")) () ")")))) (= "=") (number_literal "0x2eb01f")) (; ";")) (expression_statement "(*pcVar2)(plVar21);" (call_expression "(*pcVar2)(plVar21)" (parenthesized_expression "(*pcVar2)" (( "(") (pointer_expression "*pcVar2" (* "*") (identifier "pcVar2")) () ")")) (argument_list "(plVar21)" (( "(") (identifier "plVar21") () ")"))) (; ";")) (} "}")))) (expression_statement "local_68 = (long *)CONCAT71(local_68._1_7_,(byte)local_48);" (assignment_expression "local_68 = (long *)CONCAT71(local_68._1_7_,(byte)local_48)" (identifier "local_68") (= "=") (cast_expression "(long *)CONCAT71(local_68._1_7_,(byte)local_48)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "CONCAT71(local_68._1_7_,(byte)local_48)" (identifier "CONCAT71") (argument_list "(local_68._1_7_,(byte)local_48)" (( "(") (field_expression "local_68._1_7_" (identifier "local_68") (. ".") (field_identifier "_1_7_")) (, ",") (cast_expression "(byte)local_48" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "local_48")) () ")"))))) (; ";")) (expression_statement "local_48 = plVar21;" (assignment_expression "local_48 = plVar21" (identifier "local_48") (= "=") (identifier "plVar21")) (; ";")) (expression_statement "lVar4 = -(uVar15 * 8 + 0x17 & 0xfffffffffffffff0);" (assignment_expression "lVar4 = -(uVar15 * 8 + 0x17 & 0xfffffffffffffff0)" (identifier "lVar4") (= "=") (unary_expression "-(uVar15 * 8 + 0x17 & 0xfffffffffffffff0)" (- "-") (parenthesized_expression "(uVar15 * 8 + 0x17 & 0xfffffffffffffff0)" (( "(") (binary_expression "uVar15 * 8 + 0x17 & 0xfffffffffffffff0" (binary_expression "uVar15 * 8 + 0x17" (binary_expression "uVar15 * 8" (identifier "uVar15") (* "*") (number_literal "8")) (+ "+") (number_literal "0x17")) (& "&") (number_literal "0xfffffffffffffff0")) () ")")))) (; ";")) (expression_statement "puVar16 = auStack_78 + lVar4 + lVar3;" (assignment_expression "puVar16 = auStack_78 + lVar4 + lVar3" (identifier "puVar16") (= "=") (binary_expression "auStack_78 + lVar4 + lVar3" (binary_expression "auStack_78 + lVar4" (identifier "auStack_78") (+ "+") (identifier "lVar4")) (+ "+") (identifier "lVar3"))) (; ";")) (expression_statement "uVar19 = 0;" (assignment_expression "uVar19 = 0" (identifier "uVar19") (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar7 = (ulong *)((long)&uStack_70 + lVar4 + lVar3);" (assignment_expression "puVar7 = (ulong *)((long)&uStack_70 + lVar4 + lVar3)" (identifier "puVar7") (= "=") (cast_expression "(ulong *)((long)&uStack_70 + lVar4 + lVar3)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)&uStack_70 + lVar4 + lVar3)" (( "(") (binary_expression "(long)&uStack_70 + lVar4 + lVar3" (binary_expression "(long)&uStack_70 + lVar4" (cast_expression "(long)&uStack_70" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (pointer_expression "&uStack_70" (& "&") (identifier "uStack_70"))) (+ "+") (identifier "lVar4")) (+ "+") (identifier "lVar3")) () ")")))) (; ";")) (expression_statement "local_58 = puVar7;" (assignment_expression "local_58 = puVar7" (identifier "local_58") (= "=") (identifier "puVar7")) (; ";")) (do_statement "do {\n          __s = *(char **)(param_7 + (long)*(int *)((long)puVar22 + uVar19 * 4) * 8);\n          *(undefined8 *)(auStack_78 + lVar4 + lVar3 + -8) = 0x2eaded;\n          sVar9 = strlen(__s);\n          puVar7[uVar19] = sVar9;\n          uVar19 = uVar19 + 1;\n        } while (uVar15 != uVar19);" (do "do") (compound_statement "{\n          __s = *(char **)(param_7 + (long)*(int *)((long)puVar22 + uVar19 * 4) * 8);\n          *(undefined8 *)(auStack_78 + lVar4 + lVar3 + -8) = 0x2eaded;\n          sVar9 = strlen(__s);\n          puVar7[uVar19] = sVar9;\n          uVar19 = uVar19 + 1;\n        }" ({ "{") (expression_statement "__s = *(char **)(param_7 + (long)*(int *)((long)puVar22 + uVar19 * 4) * 8);" (assignment_expression "__s = *(char **)(param_7 + (long)*(int *)((long)puVar22 + uVar19 * 4) * 8)" (identifier "__s") (= "=") (pointer_expression "*(char **)(param_7 + (long)*(int *)((long)puVar22 + uVar19 * 4) * 8)" (* "*") (cast_expression "(char **)(param_7 + (long)*(int *)((long)puVar22 + uVar19 * 4) * 8)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_7 + (long)*(int *)((long)puVar22 + uVar19 * 4) * 8)" (( "(") (binary_expression "param_7 + (long)*(int *)((long)puVar22 + uVar19 * 4) * 8" (identifier "param_7") (+ "+") (binary_expression "(long)*(int *)((long)puVar22 + uVar19 * 4) * 8" (cast_expression "(long)*(int *)((long)puVar22 + uVar19 * 4)" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (pointer_expression "*(int *)((long)puVar22 + uVar19 * 4)" (* "*") (cast_expression "(int *)((long)puVar22 + uVar19 * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)puVar22 + uVar19 * 4)" (( "(") (binary_expression "(long)puVar22 + uVar19 * 4" (cast_expression "(long)puVar22" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar22")) (+ "+") (binary_expression "uVar19 * 4" (identifier "uVar19") (* "*") (number_literal "4"))) () ")"))))) (* "*") (number_literal "8"))) () ")"))))) (; ";")) (expression_statement "*(undefined8 *)(auStack_78 + lVar4 + lVar3 + -8) = 0x2eaded;" (assignment_expression "*(undefined8 *)(auStack_78 + lVar4 + lVar3 + -8) = 0x2eaded" (pointer_expression "*(undefined8 *)(auStack_78 + lVar4 + lVar3 + -8)" (* "*") (cast_expression "(undefined8 *)(auStack_78 + lVar4 + lVar3 + -8)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(auStack_78 + lVar4 + lVar3 + -8)" (( "(") (binary_expression "auStack_78 + lVar4 + lVar3 + -8" (binary_expression "auStack_78 + lVar4 + lVar3" (binary_expression "auStack_78 + lVar4" (identifier "auStack_78") (+ "+") (identifier "lVar4")) (+ "+") (identifier "lVar3")) (+ "+") (number_literal "-8")) () ")")))) (= "=") (number_literal "0x2eaded")) (; ";")) (expression_statement "sVar9 = strlen(__s);" (assignment_expression "sVar9 = strlen(__s)" (identifier "sVar9") (= "=") (call_expression "strlen(__s)" (identifier "strlen") (argument_list "(__s)" (( "(") (identifier "__s") () ")")))) (; ";")) (expression_statement "puVar7[uVar19] = sVar9;" (assignment_expression "puVar7[uVar19] = sVar9" (subscript_expression "puVar7[uVar19]" (identifier "puVar7") ([ "[") (identifier "uVar19") (] "]")) (= "=") (identifier "sVar9")) (; ";")) (expression_statement "uVar19 = uVar19 + 1;" (assignment_expression "uVar19 = uVar19 + 1" (identifier "uVar19") (= "=") (binary_expression "uVar19 + 1" (identifier "uVar19") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar15 != uVar19)" (( "(") (binary_expression "uVar15 != uVar19" (identifier "uVar15") (!= "!=") (identifier "uVar19")) () ")")) (; ";")) (expression_statement "uVar18 = 0xffffffff;" (assignment_expression "uVar18 = 0xffffffff" (identifier "uVar18") (= "=") (number_literal "0xffffffff")) (; ";")) (expression_statement "uVar19 = 1;" (assignment_expression "uVar19 = 1" (identifier "uVar19") (= "=") (number_literal "1")) (; ";")) (expression_statement "puVar7 = local_58;" (assignment_expression "puVar7 = local_58" (identifier "puVar7") (= "=") (identifier "local_58")) (; ";")) (expression_statement "param_2 = local_48;" (assignment_expression "param_2 = local_48" (identifier "param_2") (= "=") (identifier "local_48")) (; ";")) (expression_statement "bVar23 = (byte)local_68;" (assignment_expression "bVar23 = (byte)local_68" (identifier "bVar23") (= "=") (cast_expression "(byte)local_68" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "local_68"))) (; ";")) (} "}"))) (} "}")))) (} "}")))) (do_statement "do {\n    cVar24 = uVar18 == 0xffffffff;\n    bVar10 = param_2 != (long *)0x0 && (bool)cVar24;\n    bVar11 = cVar24;\n    if (bVar10) {\n      if ((ulong)param_2[2] < (ulong)param_2[3]) {\n        bVar11 = 0;\n      }\n      else {\n        uStack_70._4_4_ = CONCAT31(uStack_70._5_3_,bVar23);\n        local_68 = (long *)CONCAT44(local_68._4_4_,uVar18);\n        local_58 = (ulong *)CONCAT71(local_58._1_7_,cVar24);\n        local_48 = (long *)CONCAT71(local_48._1_7_,bVar10);\n        pcVar2 = *(code **)(*param_2 + 0x48);\n        *(undefined8 *)(puVar16 + -8) = 0x2eae9c;\n        iVar5 = (*pcVar2)(param_2);\n        if (iVar5 == -1) {\n          param_2 = (long *)0x0;\n          bVar11 = (byte)local_48;\n        }\n        else {\n          bVar11 = 0;\n        }\n        uVar18 = (uint)local_68;\n        bVar23 = uStack_70._4_1_;\n        cVar24 = (byte)local_58;\n      }\n    }\n    plVar21 = local_40;\n    bVar12 = local_40 != (long *)0x0 & bVar23;\n    bVar13 = bVar23;\n    if (bVar12 == 0) {\nLAB_002eab55:\n      if (bVar11 == bVar13) break;\n    }\n    else {\n      if ((ulong)local_40[3] <= (ulong)local_40[2]) {\n        local_68 = (long *)CONCAT71(local_68._1_7_,cVar24);\n        local_58 = (ulong *)CONCAT71(local_58._1_7_,bVar12);\n        local_48 = (long *)CONCAT71(local_48._1_7_,bVar11);\n        pcVar2 = *(code **)(*local_40 + 0x48);\n        uStack_70._3_1_ = bVar23;\n        uStack_70._4_4_ = uVar18;\n        *(undefined8 *)(puVar16 + -8) = 0x2eaeec;\n        iVar5 = (*pcVar2)(plVar21);\n        plVar21 = (long *)0x0;\n        bVar13 = (byte)local_58;\n        if (iVar5 != -1) {\n          bVar13 = 0;\n          plVar21 = local_40;\n        }\n        uVar18 = uStack_70._4_4_;\n        local_40 = plVar21;\n        bVar23 = uStack_70._3_1_;\n        bVar11 = (byte)local_48;\n        cVar24 = (byte)local_68;\n        goto LAB_002eab55;\n      }\n      if (bVar11 == 0) break;\n    }\n    if ((param_2 == (long *)0x0) || (cVar24 == '\0')) {\n      cVar24 = (char)uVar18;\n    }\n    else if ((char *)param_2[2] < (char *)param_2[3]) {\n      cVar24 = *(char *)param_2[2];\n    }\n    else {\n      local_58 = (ulong *)CONCAT71(local_58._1_7_,bVar23);\n      local_48 = (long *)CONCAT44(local_48._4_4_,uVar18);\n      pcVar2 = *(code **)(*param_2 + 0x48);\n      *(undefined8 *)(puVar16 + -8) = 0x2eaf38;\n      iVar5 = (*pcVar2)(param_2);\n      cVar24 = -1;\n      uVar18 = (uint)local_48;\n      bVar23 = (byte)local_58;\n      if (iVar5 == -1) {\n        param_2 = (long *)0x0;\n      }\n      else {\n        cVar24 = (char)iVar5;\n      }\n    }\n    if (uVar15 == 0) goto LAB_002eac30;\n    uVar8 = 0;\n    uVar17 = 0;\n    do {\n      while (puVar7[uVar8] <= uVar19) {\n        uVar17 = uVar17 + 1;\nLAB_002eab88:\n        uVar8 = uVar8 + 1;\n        if (uVar15 <= uVar8) goto LAB_002eabbf;\n      }\n      piVar1 = (int *)((long)puVar22 + uVar8 * 4);\n      if (*(char *)(*(long *)(param_7 + (long)*piVar1 * 8) + uVar19) == cVar24) goto LAB_002eab88;\n      uVar15 = uVar15 - 1;\n      *piVar1 = *(int *)((long)puVar22 + uVar15 * 4);\n      puVar7[uVar8] = puVar7[uVar15];\n    } while (uVar8 < uVar15);\nLAB_002eabbf:\n    if (uVar17 == uVar15) break;\n    if ((ulong)param_2[2] < (ulong)param_2[3]) {\n      param_2[2] = param_2[2] + 1;\n    }\n    else {\n      local_48 = (long *)CONCAT71(local_48._1_7_,bVar23);\n      pcVar2 = *(code **)(*param_2 + 0x50);\n      *(undefined8 *)(puVar16 + -8) = 0x2eaca1;\n      (*pcVar2)(param_2);\n      bVar23 = (byte)local_48;\n    }\n    uVar19 = uVar19 + 1;\n    uVar18 = 0xffffffff;\n  } while( true );" (do "do") (compound_statement "{\n    cVar24 = uVar18 == 0xffffffff;\n    bVar10 = param_2 != (long *)0x0 && (bool)cVar24;\n    bVar11 = cVar24;\n    if (bVar10) {\n      if ((ulong)param_2[2] < (ulong)param_2[3]) {\n        bVar11 = 0;\n      }\n      else {\n        uStack_70._4_4_ = CONCAT31(uStack_70._5_3_,bVar23);\n        local_68 = (long *)CONCAT44(local_68._4_4_,uVar18);\n        local_58 = (ulong *)CONCAT71(local_58._1_7_,cVar24);\n        local_48 = (long *)CONCAT71(local_48._1_7_,bVar10);\n        pcVar2 = *(code **)(*param_2 + 0x48);\n        *(undefined8 *)(puVar16 + -8) = 0x2eae9c;\n        iVar5 = (*pcVar2)(param_2);\n        if (iVar5 == -1) {\n          param_2 = (long *)0x0;\n          bVar11 = (byte)local_48;\n        }\n        else {\n          bVar11 = 0;\n        }\n        uVar18 = (uint)local_68;\n        bVar23 = uStack_70._4_1_;\n        cVar24 = (byte)local_58;\n      }\n    }\n    plVar21 = local_40;\n    bVar12 = local_40 != (long *)0x0 & bVar23;\n    bVar13 = bVar23;\n    if (bVar12 == 0) {\nLAB_002eab55:\n      if (bVar11 == bVar13) break;\n    }\n    else {\n      if ((ulong)local_40[3] <= (ulong)local_40[2]) {\n        local_68 = (long *)CONCAT71(local_68._1_7_,cVar24);\n        local_58 = (ulong *)CONCAT71(local_58._1_7_,bVar12);\n        local_48 = (long *)CONCAT71(local_48._1_7_,bVar11);\n        pcVar2 = *(code **)(*local_40 + 0x48);\n        uStack_70._3_1_ = bVar23;\n        uStack_70._4_4_ = uVar18;\n        *(undefined8 *)(puVar16 + -8) = 0x2eaeec;\n        iVar5 = (*pcVar2)(plVar21);\n        plVar21 = (long *)0x0;\n        bVar13 = (byte)local_58;\n        if (iVar5 != -1) {\n          bVar13 = 0;\n          plVar21 = local_40;\n        }\n        uVar18 = uStack_70._4_4_;\n        local_40 = plVar21;\n        bVar23 = uStack_70._3_1_;\n        bVar11 = (byte)local_48;\n        cVar24 = (byte)local_68;\n        goto LAB_002eab55;\n      }\n      if (bVar11 == 0) break;\n    }\n    if ((param_2 == (long *)0x0) || (cVar24 == '\0')) {\n      cVar24 = (char)uVar18;\n    }\n    else if ((char *)param_2[2] < (char *)param_2[3]) {\n      cVar24 = *(char *)param_2[2];\n    }\n    else {\n      local_58 = (ulong *)CONCAT71(local_58._1_7_,bVar23);\n      local_48 = (long *)CONCAT44(local_48._4_4_,uVar18);\n      pcVar2 = *(code **)(*param_2 + 0x48);\n      *(undefined8 *)(puVar16 + -8) = 0x2eaf38;\n      iVar5 = (*pcVar2)(param_2);\n      cVar24 = -1;\n      uVar18 = (uint)local_48;\n      bVar23 = (byte)local_58;\n      if (iVar5 == -1) {\n        param_2 = (long *)0x0;\n      }\n      else {\n        cVar24 = (char)iVar5;\n      }\n    }\n    if (uVar15 == 0) goto LAB_002eac30;\n    uVar8 = 0;\n    uVar17 = 0;\n    do {\n      while (puVar7[uVar8] <= uVar19) {\n        uVar17 = uVar17 + 1;\nLAB_002eab88:\n        uVar8 = uVar8 + 1;\n        if (uVar15 <= uVar8) goto LAB_002eabbf;\n      }\n      piVar1 = (int *)((long)puVar22 + uVar8 * 4);\n      if (*(char *)(*(long *)(param_7 + (long)*piVar1 * 8) + uVar19) == cVar24) goto LAB_002eab88;\n      uVar15 = uVar15 - 1;\n      *piVar1 = *(int *)((long)puVar22 + uVar15 * 4);\n      puVar7[uVar8] = puVar7[uVar15];\n    } while (uVar8 < uVar15);\nLAB_002eabbf:\n    if (uVar17 == uVar15) break;\n    if ((ulong)param_2[2] < (ulong)param_2[3]) {\n      param_2[2] = param_2[2] + 1;\n    }\n    else {\n      local_48 = (long *)CONCAT71(local_48._1_7_,bVar23);\n      pcVar2 = *(code **)(*param_2 + 0x50);\n      *(undefined8 *)(puVar16 + -8) = 0x2eaca1;\n      (*pcVar2)(param_2);\n      bVar23 = (byte)local_48;\n    }\n    uVar19 = uVar19 + 1;\n    uVar18 = 0xffffffff;\n  }" ({ "{") (expression_statement "cVar24 = uVar18 == 0xffffffff;" (assignment_expression "cVar24 = uVar18 == 0xffffffff" (identifier "cVar24") (= "=") (binary_expression "uVar18 == 0xffffffff" (identifier "uVar18") (== "==") (number_literal "0xffffffff"))) (; ";")) (expression_statement "bVar10 = param_2 != (long *)0x0 && (bool)cVar24;" (assignment_expression "bVar10 = param_2 != (long *)0x0 && (bool)cVar24" (identifier "bVar10") (= "=") (binary_expression "param_2 != (long *)0x0 && (bool)cVar24" (binary_expression "param_2 != (long *)0x0" (identifier "param_2") (!= "!=") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (&& "&&") (cast_expression "(bool)cVar24" (( "(") (type_descriptor "bool" (primitive_type "bool")) () ")") (identifier "cVar24")))) (; ";")) (expression_statement "bVar11 = cVar24;" (assignment_expression "bVar11 = cVar24" (identifier "bVar11") (= "=") (identifier "cVar24")) (; ";")) (if_statement "if (bVar10) {\n      if ((ulong)param_2[2] < (ulong)param_2[3]) {\n        bVar11 = 0;\n      }\n      else {\n        uStack_70._4_4_ = CONCAT31(uStack_70._5_3_,bVar23);\n        local_68 = (long *)CONCAT44(local_68._4_4_,uVar18);\n        local_58 = (ulong *)CONCAT71(local_58._1_7_,cVar24);\n        local_48 = (long *)CONCAT71(local_48._1_7_,bVar10);\n        pcVar2 = *(code **)(*param_2 + 0x48);\n        *(undefined8 *)(puVar16 + -8) = 0x2eae9c;\n        iVar5 = (*pcVar2)(param_2);\n        if (iVar5 == -1) {\n          param_2 = (long *)0x0;\n          bVar11 = (byte)local_48;\n        }\n        else {\n          bVar11 = 0;\n        }\n        uVar18 = (uint)local_68;\n        bVar23 = uStack_70._4_1_;\n        cVar24 = (byte)local_58;\n      }\n    }" (if "if") (parenthesized_expression "(bVar10)" (( "(") (identifier "bVar10") () ")")) (compound_statement "{\n      if ((ulong)param_2[2] < (ulong)param_2[3]) {\n        bVar11 = 0;\n      }\n      else {\n        uStack_70._4_4_ = CONCAT31(uStack_70._5_3_,bVar23);\n        local_68 = (long *)CONCAT44(local_68._4_4_,uVar18);\n        local_58 = (ulong *)CONCAT71(local_58._1_7_,cVar24);\n        local_48 = (long *)CONCAT71(local_48._1_7_,bVar10);\n        pcVar2 = *(code **)(*param_2 + 0x48);\n        *(undefined8 *)(puVar16 + -8) = 0x2eae9c;\n        iVar5 = (*pcVar2)(param_2);\n        if (iVar5 == -1) {\n          param_2 = (long *)0x0;\n          bVar11 = (byte)local_48;\n        }\n        else {\n          bVar11 = 0;\n        }\n        uVar18 = (uint)local_68;\n        bVar23 = uStack_70._4_1_;\n        cVar24 = (byte)local_58;\n      }\n    }" ({ "{") (if_statement "if ((ulong)param_2[2] < (ulong)param_2[3]) {\n        bVar11 = 0;\n      }\n      else {\n        uStack_70._4_4_ = CONCAT31(uStack_70._5_3_,bVar23);\n        local_68 = (long *)CONCAT44(local_68._4_4_,uVar18);\n        local_58 = (ulong *)CONCAT71(local_58._1_7_,cVar24);\n        local_48 = (long *)CONCAT71(local_48._1_7_,bVar10);\n        pcVar2 = *(code **)(*param_2 + 0x48);\n        *(undefined8 *)(puVar16 + -8) = 0x2eae9c;\n        iVar5 = (*pcVar2)(param_2);\n        if (iVar5 == -1) {\n          param_2 = (long *)0x0;\n          bVar11 = (byte)local_48;\n        }\n        else {\n          bVar11 = 0;\n        }\n        uVar18 = (uint)local_68;\n        bVar23 = uStack_70._4_1_;\n        cVar24 = (byte)local_58;\n      }" (if "if") (parenthesized_expression "((ulong)param_2[2] < (ulong)param_2[3])" (( "(") (binary_expression "(ulong)param_2[2] < (ulong)param_2[3]" (cast_expression "(ulong)param_2[2]" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (subscript_expression "param_2[2]" (identifier "param_2") ([ "[") (number_literal "2") (] "]"))) (< "<") (cast_expression "(ulong)param_2[3]" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (subscript_expression "param_2[3]" (identifier "param_2") ([ "[") (number_literal "3") (] "]")))) () ")")) (compound_statement "{\n        bVar11 = 0;\n      }" ({ "{") (expression_statement "bVar11 = 0;" (assignment_expression "bVar11 = 0" (identifier "bVar11") (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n        uStack_70._4_4_ = CONCAT31(uStack_70._5_3_,bVar23);\n        local_68 = (long *)CONCAT44(local_68._4_4_,uVar18);\n        local_58 = (ulong *)CONCAT71(local_58._1_7_,cVar24);\n        local_48 = (long *)CONCAT71(local_48._1_7_,bVar10);\n        pcVar2 = *(code **)(*param_2 + 0x48);\n        *(undefined8 *)(puVar16 + -8) = 0x2eae9c;\n        iVar5 = (*pcVar2)(param_2);\n        if (iVar5 == -1) {\n          param_2 = (long *)0x0;\n          bVar11 = (byte)local_48;\n        }\n        else {\n          bVar11 = 0;\n        }\n        uVar18 = (uint)local_68;\n        bVar23 = uStack_70._4_1_;\n        cVar24 = (byte)local_58;\n      }" (else "else") (compound_statement "{\n        uStack_70._4_4_ = CONCAT31(uStack_70._5_3_,bVar23);\n        local_68 = (long *)CONCAT44(local_68._4_4_,uVar18);\n        local_58 = (ulong *)CONCAT71(local_58._1_7_,cVar24);\n        local_48 = (long *)CONCAT71(local_48._1_7_,bVar10);\n        pcVar2 = *(code **)(*param_2 + 0x48);\n        *(undefined8 *)(puVar16 + -8) = 0x2eae9c;\n        iVar5 = (*pcVar2)(param_2);\n        if (iVar5 == -1) {\n          param_2 = (long *)0x0;\n          bVar11 = (byte)local_48;\n        }\n        else {\n          bVar11 = 0;\n        }\n        uVar18 = (uint)local_68;\n        bVar23 = uStack_70._4_1_;\n        cVar24 = (byte)local_58;\n      }" ({ "{") (expression_statement "uStack_70._4_4_ = CONCAT31(uStack_70._5_3_,bVar23);" (assignment_expression "uStack_70._4_4_ = CONCAT31(uStack_70._5_3_,bVar23)" (field_expression "uStack_70._4_4_" (identifier "uStack_70") (. ".") (field_identifier "_4_4_")) (= "=") (call_expression "CONCAT31(uStack_70._5_3_,bVar23)" (identifier "CONCAT31") (argument_list "(uStack_70._5_3_,bVar23)" (( "(") (field_expression "uStack_70._5_3_" (identifier "uStack_70") (. ".") (field_identifier "_5_3_")) (, ",") (identifier "bVar23") () ")")))) (; ";")) (expression_statement "local_68 = (long *)CONCAT44(local_68._4_4_,uVar18);" (assignment_expression "local_68 = (long *)CONCAT44(local_68._4_4_,uVar18)" (identifier "local_68") (= "=") (cast_expression "(long *)CONCAT44(local_68._4_4_,uVar18)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "CONCAT44(local_68._4_4_,uVar18)" (identifier "CONCAT44") (argument_list "(local_68._4_4_,uVar18)" (( "(") (field_expression "local_68._4_4_" (identifier "local_68") (. ".") (field_identifier "_4_4_")) (, ",") (identifier "uVar18") () ")"))))) (; ";")) (expression_statement "local_58 = (ulong *)CONCAT71(local_58._1_7_,cVar24);" (assignment_expression "local_58 = (ulong *)CONCAT71(local_58._1_7_,cVar24)" (identifier "local_58") (= "=") (cast_expression "(ulong *)CONCAT71(local_58._1_7_,cVar24)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "CONCAT71(local_58._1_7_,cVar24)" (identifier "CONCAT71") (argument_list "(local_58._1_7_,cVar24)" (( "(") (field_expression "local_58._1_7_" (identifier "local_58") (. ".") (field_identifier "_1_7_")) (, ",") (identifier "cVar24") () ")"))))) (; ";")) (expression_statement "local_48 = (long *)CONCAT71(local_48._1_7_,bVar10);" (assignment_expression "local_48 = (long *)CONCAT71(local_48._1_7_,bVar10)" (identifier "local_48") (= "=") (cast_expression "(long *)CONCAT71(local_48._1_7_,bVar10)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "CONCAT71(local_48._1_7_,bVar10)" (identifier "CONCAT71") (argument_list "(local_48._1_7_,bVar10)" (( "(") (field_expression "local_48._1_7_" (identifier "local_48") (. ".") (field_identifier "_1_7_")) (, ",") (identifier "bVar10") () ")"))))) (; ";")) (expression_statement "pcVar2 = *(code **)(*param_2 + 0x48);" (assignment_expression "pcVar2 = *(code **)(*param_2 + 0x48)" (identifier "pcVar2") (= "=") (pointer_expression "*(code **)(*param_2 + 0x48)" (* "*") (cast_expression "(code **)(*param_2 + 0x48)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*param_2 + 0x48)" (( "(") (binary_expression "*param_2 + 0x48" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (+ "+") (number_literal "0x48")) () ")"))))) (; ";")) (expression_statement "*(undefined8 *)(puVar16 + -8) = 0x2eae9c;" (assignment_expression "*(undefined8 *)(puVar16 + -8) = 0x2eae9c" (pointer_expression "*(undefined8 *)(puVar16 + -8)" (* "*") (cast_expression "(undefined8 *)(puVar16 + -8)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -8)" (( "(") (binary_expression "puVar16 + -8" (identifier "puVar16") (+ "+") (number_literal "-8")) () ")")))) (= "=") (number_literal "0x2eae9c")) (; ";")) (expression_statement "iVar5 = (*pcVar2)(param_2);" (assignment_expression "iVar5 = (*pcVar2)(param_2)" (identifier "iVar5") (= "=") (call_expression "(*pcVar2)(param_2)" (parenthesized_expression "(*pcVar2)" (( "(") (pointer_expression "*pcVar2" (* "*") (identifier "pcVar2")) () ")")) (argument_list "(param_2)" (( "(") (identifier "param_2") () ")")))) (; ";")) (if_statement "if (iVar5 == -1) {\n          param_2 = (long *)0x0;\n          bVar11 = (byte)local_48;\n        }\n        else {\n          bVar11 = 0;\n        }" (if "if") (parenthesized_expression "(iVar5 == -1)" (( "(") (binary_expression "iVar5 == -1" (identifier "iVar5") (== "==") (number_literal "-1")) () ")")) (compound_statement "{\n          param_2 = (long *)0x0;\n          bVar11 = (byte)local_48;\n        }" ({ "{") (expression_statement "param_2 = (long *)0x0;" (assignment_expression "param_2 = (long *)0x0" (identifier "param_2") (= "=") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "bVar11 = (byte)local_48;" (assignment_expression "bVar11 = (byte)local_48" (identifier "bVar11") (= "=") (cast_expression "(byte)local_48" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "local_48"))) (; ";")) (} "}")) (else_clause "else {\n          bVar11 = 0;\n        }" (else "else") (compound_statement "{\n          bVar11 = 0;\n        }" ({ "{") (expression_statement "bVar11 = 0;" (assignment_expression "bVar11 = 0" (identifier "bVar11") (= "=") (number_literal "0")) (; ";")) (} "}")))) (expression_statement "uVar18 = (uint)local_68;" (assignment_expression "uVar18 = (uint)local_68" (identifier "uVar18") (= "=") (cast_expression "(uint)local_68" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "local_68"))) (; ";")) (expression_statement "bVar23 = uStack_70._4_1_;" (assignment_expression "bVar23 = uStack_70._4_1_" (identifier "bVar23") (= "=") (field_expression "uStack_70._4_1_" (identifier "uStack_70") (. ".") (field_identifier "_4_1_"))) (; ";")) (expression_statement "cVar24 = (byte)local_58;" (assignment_expression "cVar24 = (byte)local_58" (identifier "cVar24") (= "=") (cast_expression "(byte)local_58" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "local_58"))) (; ";")) (} "}")))) (} "}"))) (expression_statement "plVar21 = local_40;" (assignment_expression "plVar21 = local_40" (identifier "plVar21") (= "=") (identifier "local_40")) (; ";")) (expression_statement "bVar12 = local_40 != (long *)0x0 & bVar23;" (assignment_expression "bVar12 = local_40 != (long *)0x0 & bVar23" (identifier "bVar12") (= "=") (binary_expression "local_40 != (long *)0x0 & bVar23" (binary_expression "local_40 != (long *)0x0" (identifier "local_40") (!= "!=") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (& "&") (identifier "bVar23"))) (; ";")) (expression_statement "bVar13 = bVar23;" (assignment_expression "bVar13 = bVar23" (identifier "bVar13") (= "=") (identifier "bVar23")) (; ";")) (if_statement "if (bVar12 == 0) {\nLAB_002eab55:\n      if (bVar11 == bVar13) break;\n    }\n    else {\n      if ((ulong)local_40[3] <= (ulong)local_40[2]) {\n        local_68 = (long *)CONCAT71(local_68._1_7_,cVar24);\n        local_58 = (ulong *)CONCAT71(local_58._1_7_,bVar12);\n        local_48 = (long *)CONCAT71(local_48._1_7_,bVar11);\n        pcVar2 = *(code **)(*local_40 + 0x48);\n        uStack_70._3_1_ = bVar23;\n        uStack_70._4_4_ = uVar18;\n        *(undefined8 *)(puVar16 + -8) = 0x2eaeec;\n        iVar5 = (*pcVar2)(plVar21);\n        plVar21 = (long *)0x0;\n        bVar13 = (byte)local_58;\n        if (iVar5 != -1) {\n          bVar13 = 0;\n          plVar21 = local_40;\n        }\n        uVar18 = uStack_70._4_4_;\n        local_40 = plVar21;\n        bVar23 = uStack_70._3_1_;\n        bVar11 = (byte)local_48;\n        cVar24 = (byte)local_68;\n        goto LAB_002eab55;\n      }\n      if (bVar11 == 0) break;\n    }" (if "if") (parenthesized_expression "(bVar12 == 0)" (( "(") (binary_expression "bVar12 == 0" (identifier "bVar12") (== "==") (number_literal "0")) () ")")) (compound_statement "{\nLAB_002eab55:\n      if (bVar11 == bVar13) break;\n    }" ({ "{") (labeled_statement "LAB_002eab55:\n      if (bVar11 == bVar13) break;" (statement_identifier "LAB_002eab55") (: ":") (if_statement "if (bVar11 == bVar13) break;" (if "if") (parenthesized_expression "(bVar11 == bVar13)" (( "(") (binary_expression "bVar11 == bVar13" (identifier "bVar11") (== "==") (identifier "bVar13")) () ")")) (break_statement "break;" (break "break") (; ";")))) (} "}")) (else_clause "else {\n      if ((ulong)local_40[3] <= (ulong)local_40[2]) {\n        local_68 = (long *)CONCAT71(local_68._1_7_,cVar24);\n        local_58 = (ulong *)CONCAT71(local_58._1_7_,bVar12);\n        local_48 = (long *)CONCAT71(local_48._1_7_,bVar11);\n        pcVar2 = *(code **)(*local_40 + 0x48);\n        uStack_70._3_1_ = bVar23;\n        uStack_70._4_4_ = uVar18;\n        *(undefined8 *)(puVar16 + -8) = 0x2eaeec;\n        iVar5 = (*pcVar2)(plVar21);\n        plVar21 = (long *)0x0;\n        bVar13 = (byte)local_58;\n        if (iVar5 != -1) {\n          bVar13 = 0;\n          plVar21 = local_40;\n        }\n        uVar18 = uStack_70._4_4_;\n        local_40 = plVar21;\n        bVar23 = uStack_70._3_1_;\n        bVar11 = (byte)local_48;\n        cVar24 = (byte)local_68;\n        goto LAB_002eab55;\n      }\n      if (bVar11 == 0) break;\n    }" (else "else") (compound_statement "{\n      if ((ulong)local_40[3] <= (ulong)local_40[2]) {\n        local_68 = (long *)CONCAT71(local_68._1_7_,cVar24);\n        local_58 = (ulong *)CONCAT71(local_58._1_7_,bVar12);\n        local_48 = (long *)CONCAT71(local_48._1_7_,bVar11);\n        pcVar2 = *(code **)(*local_40 + 0x48);\n        uStack_70._3_1_ = bVar23;\n        uStack_70._4_4_ = uVar18;\n        *(undefined8 *)(puVar16 + -8) = 0x2eaeec;\n        iVar5 = (*pcVar2)(plVar21);\n        plVar21 = (long *)0x0;\n        bVar13 = (byte)local_58;\n        if (iVar5 != -1) {\n          bVar13 = 0;\n          plVar21 = local_40;\n        }\n        uVar18 = uStack_70._4_4_;\n        local_40 = plVar21;\n        bVar23 = uStack_70._3_1_;\n        bVar11 = (byte)local_48;\n        cVar24 = (byte)local_68;\n        goto LAB_002eab55;\n      }\n      if (bVar11 == 0) break;\n    }" ({ "{") (if_statement "if ((ulong)local_40[3] <= (ulong)local_40[2]) {\n        local_68 = (long *)CONCAT71(local_68._1_7_,cVar24);\n        local_58 = (ulong *)CONCAT71(local_58._1_7_,bVar12);\n        local_48 = (long *)CONCAT71(local_48._1_7_,bVar11);\n        pcVar2 = *(code **)(*local_40 + 0x48);\n        uStack_70._3_1_ = bVar23;\n        uStack_70._4_4_ = uVar18;\n        *(undefined8 *)(puVar16 + -8) = 0x2eaeec;\n        iVar5 = (*pcVar2)(plVar21);\n        plVar21 = (long *)0x0;\n        bVar13 = (byte)local_58;\n        if (iVar5 != -1) {\n          bVar13 = 0;\n          plVar21 = local_40;\n        }\n        uVar18 = uStack_70._4_4_;\n        local_40 = plVar21;\n        bVar23 = uStack_70._3_1_;\n        bVar11 = (byte)local_48;\n        cVar24 = (byte)local_68;\n        goto LAB_002eab55;\n      }" (if "if") (parenthesized_expression "((ulong)local_40[3] <= (ulong)local_40[2])" (( "(") (binary_expression "(ulong)local_40[3] <= (ulong)local_40[2]" (cast_expression "(ulong)local_40[3]" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (subscript_expression "local_40[3]" (identifier "local_40") ([ "[") (number_literal "3") (] "]"))) (<= "<=") (cast_expression "(ulong)local_40[2]" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (subscript_expression "local_40[2]" (identifier "local_40") ([ "[") (number_literal "2") (] "]")))) () ")")) (compound_statement "{\n        local_68 = (long *)CONCAT71(local_68._1_7_,cVar24);\n        local_58 = (ulong *)CONCAT71(local_58._1_7_,bVar12);\n        local_48 = (long *)CONCAT71(local_48._1_7_,bVar11);\n        pcVar2 = *(code **)(*local_40 + 0x48);\n        uStack_70._3_1_ = bVar23;\n        uStack_70._4_4_ = uVar18;\n        *(undefined8 *)(puVar16 + -8) = 0x2eaeec;\n        iVar5 = (*pcVar2)(plVar21);\n        plVar21 = (long *)0x0;\n        bVar13 = (byte)local_58;\n        if (iVar5 != -1) {\n          bVar13 = 0;\n          plVar21 = local_40;\n        }\n        uVar18 = uStack_70._4_4_;\n        local_40 = plVar21;\n        bVar23 = uStack_70._3_1_;\n        bVar11 = (byte)local_48;\n        cVar24 = (byte)local_68;\n        goto LAB_002eab55;\n      }" ({ "{") (expression_statement "local_68 = (long *)CONCAT71(local_68._1_7_,cVar24);" (assignment_expression "local_68 = (long *)CONCAT71(local_68._1_7_,cVar24)" (identifier "local_68") (= "=") (cast_expression "(long *)CONCAT71(local_68._1_7_,cVar24)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "CONCAT71(local_68._1_7_,cVar24)" (identifier "CONCAT71") (argument_list "(local_68._1_7_,cVar24)" (( "(") (field_expression "local_68._1_7_" (identifier "local_68") (. ".") (field_identifier "_1_7_")) (, ",") (identifier "cVar24") () ")"))))) (; ";")) (expression_statement "local_58 = (ulong *)CONCAT71(local_58._1_7_,bVar12);" (assignment_expression "local_58 = (ulong *)CONCAT71(local_58._1_7_,bVar12)" (identifier "local_58") (= "=") (cast_expression "(ulong *)CONCAT71(local_58._1_7_,bVar12)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "CONCAT71(local_58._1_7_,bVar12)" (identifier "CONCAT71") (argument_list "(local_58._1_7_,bVar12)" (( "(") (field_expression "local_58._1_7_" (identifier "local_58") (. ".") (field_identifier "_1_7_")) (, ",") (identifier "bVar12") () ")"))))) (; ";")) (expression_statement "local_48 = (long *)CONCAT71(local_48._1_7_,bVar11);" (assignment_expression "local_48 = (long *)CONCAT71(local_48._1_7_,bVar11)" (identifier "local_48") (= "=") (cast_expression "(long *)CONCAT71(local_48._1_7_,bVar11)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "CONCAT71(local_48._1_7_,bVar11)" (identifier "CONCAT71") (argument_list "(local_48._1_7_,bVar11)" (( "(") (field_expression "local_48._1_7_" (identifier "local_48") (. ".") (field_identifier "_1_7_")) (, ",") (identifier "bVar11") () ")"))))) (; ";")) (expression_statement "pcVar2 = *(code **)(*local_40 + 0x48);" (assignment_expression "pcVar2 = *(code **)(*local_40 + 0x48)" (identifier "pcVar2") (= "=") (pointer_expression "*(code **)(*local_40 + 0x48)" (* "*") (cast_expression "(code **)(*local_40 + 0x48)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*local_40 + 0x48)" (( "(") (binary_expression "*local_40 + 0x48" (pointer_expression "*local_40" (* "*") (identifier "local_40")) (+ "+") (number_literal "0x48")) () ")"))))) (; ";")) (expression_statement "uStack_70._3_1_ = bVar23;" (assignment_expression "uStack_70._3_1_ = bVar23" (field_expression "uStack_70._3_1_" (identifier "uStack_70") (. ".") (field_identifier "_3_1_")) (= "=") (identifier "bVar23")) (; ";")) (expression_statement "uStack_70._4_4_ = uVar18;" (assignment_expression "uStack_70._4_4_ = uVar18" (field_expression "uStack_70._4_4_" (identifier "uStack_70") (. ".") (field_identifier "_4_4_")) (= "=") (identifier "uVar18")) (; ";")) (expression_statement "*(undefined8 *)(puVar16 + -8) = 0x2eaeec;" (assignment_expression "*(undefined8 *)(puVar16 + -8) = 0x2eaeec" (pointer_expression "*(undefined8 *)(puVar16 + -8)" (* "*") (cast_expression "(undefined8 *)(puVar16 + -8)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -8)" (( "(") (binary_expression "puVar16 + -8" (identifier "puVar16") (+ "+") (number_literal "-8")) () ")")))) (= "=") (number_literal "0x2eaeec")) (; ";")) (expression_statement "iVar5 = (*pcVar2)(plVar21);" (assignment_expression "iVar5 = (*pcVar2)(plVar21)" (identifier "iVar5") (= "=") (call_expression "(*pcVar2)(plVar21)" (parenthesized_expression "(*pcVar2)" (( "(") (pointer_expression "*pcVar2" (* "*") (identifier "pcVar2")) () ")")) (argument_list "(plVar21)" (( "(") (identifier "plVar21") () ")")))) (; ";")) (expression_statement "plVar21 = (long *)0x0;" (assignment_expression "plVar21 = (long *)0x0" (identifier "plVar21") (= "=") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "bVar13 = (byte)local_58;" (assignment_expression "bVar13 = (byte)local_58" (identifier "bVar13") (= "=") (cast_expression "(byte)local_58" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "local_58"))) (; ";")) (if_statement "if (iVar5 != -1) {\n          bVar13 = 0;\n          plVar21 = local_40;\n        }" (if "if") (parenthesized_expression "(iVar5 != -1)" (( "(") (binary_expression "iVar5 != -1" (identifier "iVar5") (!= "!=") (number_literal "-1")) () ")")) (compound_statement "{\n          bVar13 = 0;\n          plVar21 = local_40;\n        }" ({ "{") (expression_statement "bVar13 = 0;" (assignment_expression "bVar13 = 0" (identifier "bVar13") (= "=") (number_literal "0")) (; ";")) (expression_statement "plVar21 = local_40;" (assignment_expression "plVar21 = local_40" (identifier "plVar21") (= "=") (identifier "local_40")) (; ";")) (} "}"))) (expression_statement "uVar18 = uStack_70._4_4_;" (assignment_expression "uVar18 = uStack_70._4_4_" (identifier "uVar18") (= "=") (field_expression "uStack_70._4_4_" (identifier "uStack_70") (. ".") (field_identifier "_4_4_"))) (; ";")) (expression_statement "local_40 = plVar21;" (assignment_expression "local_40 = plVar21" (identifier "local_40") (= "=") (identifier "plVar21")) (; ";")) (expression_statement "bVar23 = uStack_70._3_1_;" (assignment_expression "bVar23 = uStack_70._3_1_" (identifier "bVar23") (= "=") (field_expression "uStack_70._3_1_" (identifier "uStack_70") (. ".") (field_identifier "_3_1_"))) (; ";")) (expression_statement "bVar11 = (byte)local_48;" (assignment_expression "bVar11 = (byte)local_48" (identifier "bVar11") (= "=") (cast_expression "(byte)local_48" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "local_48"))) (; ";")) (expression_statement "cVar24 = (byte)local_68;" (assignment_expression "cVar24 = (byte)local_68" (identifier "cVar24") (= "=") (cast_expression "(byte)local_68" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "local_68"))) (; ";")) (goto_statement "goto LAB_002eab55;" (goto "goto") (statement_identifier "LAB_002eab55") (; ";")) (} "}"))) (if_statement "if (bVar11 == 0) break;" (if "if") (parenthesized_expression "(bVar11 == 0)" (( "(") (binary_expression "bVar11 == 0" (identifier "bVar11") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (} "}")))) (if_statement "if ((param_2 == (long *)0x0) || (cVar24 == '\0')) {\n      cVar24 = (char)uVar18;\n    }\n    else if ((char *)param_2[2] < (char *)param_2[3]) {\n      cVar24 = *(char *)param_2[2];\n    }\n    else {\n      local_58 = (ulong *)CONCAT71(local_58._1_7_,bVar23);\n      local_48 = (long *)CONCAT44(local_48._4_4_,uVar18);\n      pcVar2 = *(code **)(*param_2 + 0x48);\n      *(undefined8 *)(puVar16 + -8) = 0x2eaf38;\n      iVar5 = (*pcVar2)(param_2);\n      cVar24 = -1;\n      uVar18 = (uint)local_48;\n      bVar23 = (byte)local_58;\n      if (iVar5 == -1) {\n        param_2 = (long *)0x0;\n      }\n      else {\n        cVar24 = (char)iVar5;\n      }\n    }" (if "if") (parenthesized_expression "((param_2 == (long *)0x0) || (cVar24 == '\0'))" (( "(") (binary_expression "(param_2 == (long *)0x0) || (cVar24 == '\0')" (parenthesized_expression "(param_2 == (long *)0x0)" (( "(") (binary_expression "param_2 == (long *)0x0" (identifier "param_2") (== "==") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (|| "||") (parenthesized_expression "(cVar24 == '\0')" (( "(") (binary_expression "cVar24 == '\0'" (identifier "cVar24") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")"))) () ")")) (compound_statement "{\n      cVar24 = (char)uVar18;\n    }" ({ "{") (expression_statement "cVar24 = (char)uVar18;" (assignment_expression "cVar24 = (char)uVar18" (identifier "cVar24") (= "=") (cast_expression "(char)uVar18" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "uVar18"))) (; ";")) (} "}")) (else_clause "else if ((char *)param_2[2] < (char *)param_2[3]) {\n      cVar24 = *(char *)param_2[2];\n    }\n    else {\n      local_58 = (ulong *)CONCAT71(local_58._1_7_,bVar23);\n      local_48 = (long *)CONCAT44(local_48._4_4_,uVar18);\n      pcVar2 = *(code **)(*param_2 + 0x48);\n      *(undefined8 *)(puVar16 + -8) = 0x2eaf38;\n      iVar5 = (*pcVar2)(param_2);\n      cVar24 = -1;\n      uVar18 = (uint)local_48;\n      bVar23 = (byte)local_58;\n      if (iVar5 == -1) {\n        param_2 = (long *)0x0;\n      }\n      else {\n        cVar24 = (char)iVar5;\n      }\n    }" (else "else") (if_statement "if ((char *)param_2[2] < (char *)param_2[3]) {\n      cVar24 = *(char *)param_2[2];\n    }\n    else {\n      local_58 = (ulong *)CONCAT71(local_58._1_7_,bVar23);\n      local_48 = (long *)CONCAT44(local_48._4_4_,uVar18);\n      pcVar2 = *(code **)(*param_2 + 0x48);\n      *(undefined8 *)(puVar16 + -8) = 0x2eaf38;\n      iVar5 = (*pcVar2)(param_2);\n      cVar24 = -1;\n      uVar18 = (uint)local_48;\n      bVar23 = (byte)local_58;\n      if (iVar5 == -1) {\n        param_2 = (long *)0x0;\n      }\n      else {\n        cVar24 = (char)iVar5;\n      }\n    }" (if "if") (parenthesized_expression "((char *)param_2[2] < (char *)param_2[3])" (( "(") (binary_expression "(char *)param_2[2] < (char *)param_2[3]" (cast_expression "(char *)param_2[2]" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_2[2]" (identifier "param_2") ([ "[") (number_literal "2") (] "]"))) (< "<") (cast_expression "(char *)param_2[3]" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_2[3]" (identifier "param_2") ([ "[") (number_literal "3") (] "]")))) () ")")) (compound_statement "{\n      cVar24 = *(char *)param_2[2];\n    }" ({ "{") (expression_statement "cVar24 = *(char *)param_2[2];" (assignment_expression "cVar24 = *(char *)param_2[2]" (identifier "cVar24") (= "=") (pointer_expression "*(char *)param_2[2]" (* "*") (cast_expression "(char *)param_2[2]" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_2[2]" (identifier "param_2") ([ "[") (number_literal "2") (] "]"))))) (; ";")) (} "}")) (else_clause "else {\n      local_58 = (ulong *)CONCAT71(local_58._1_7_,bVar23);\n      local_48 = (long *)CONCAT44(local_48._4_4_,uVar18);\n      pcVar2 = *(code **)(*param_2 + 0x48);\n      *(undefined8 *)(puVar16 + -8) = 0x2eaf38;\n      iVar5 = (*pcVar2)(param_2);\n      cVar24 = -1;\n      uVar18 = (uint)local_48;\n      bVar23 = (byte)local_58;\n      if (iVar5 == -1) {\n        param_2 = (long *)0x0;\n      }\n      else {\n        cVar24 = (char)iVar5;\n      }\n    }" (else "else") (compound_statement "{\n      local_58 = (ulong *)CONCAT71(local_58._1_7_,bVar23);\n      local_48 = (long *)CONCAT44(local_48._4_4_,uVar18);\n      pcVar2 = *(code **)(*param_2 + 0x48);\n      *(undefined8 *)(puVar16 + -8) = 0x2eaf38;\n      iVar5 = (*pcVar2)(param_2);\n      cVar24 = -1;\n      uVar18 = (uint)local_48;\n      bVar23 = (byte)local_58;\n      if (iVar5 == -1) {\n        param_2 = (long *)0x0;\n      }\n      else {\n        cVar24 = (char)iVar5;\n      }\n    }" ({ "{") (expression_statement "local_58 = (ulong *)CONCAT71(local_58._1_7_,bVar23);" (assignment_expression "local_58 = (ulong *)CONCAT71(local_58._1_7_,bVar23)" (identifier "local_58") (= "=") (cast_expression "(ulong *)CONCAT71(local_58._1_7_,bVar23)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "CONCAT71(local_58._1_7_,bVar23)" (identifier "CONCAT71") (argument_list "(local_58._1_7_,bVar23)" (( "(") (field_expression "local_58._1_7_" (identifier "local_58") (. ".") (field_identifier "_1_7_")) (, ",") (identifier "bVar23") () ")"))))) (; ";")) (expression_statement "local_48 = (long *)CONCAT44(local_48._4_4_,uVar18);" (assignment_expression "local_48 = (long *)CONCAT44(local_48._4_4_,uVar18)" (identifier "local_48") (= "=") (cast_expression "(long *)CONCAT44(local_48._4_4_,uVar18)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "CONCAT44(local_48._4_4_,uVar18)" (identifier "CONCAT44") (argument_list "(local_48._4_4_,uVar18)" (( "(") (field_expression "local_48._4_4_" (identifier "local_48") (. ".") (field_identifier "_4_4_")) (, ",") (identifier "uVar18") () ")"))))) (; ";")) (expression_statement "pcVar2 = *(code **)(*param_2 + 0x48);" (assignment_expression "pcVar2 = *(code **)(*param_2 + 0x48)" (identifier "pcVar2") (= "=") (pointer_expression "*(code **)(*param_2 + 0x48)" (* "*") (cast_expression "(code **)(*param_2 + 0x48)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*param_2 + 0x48)" (( "(") (binary_expression "*param_2 + 0x48" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (+ "+") (number_literal "0x48")) () ")"))))) (; ";")) (expression_statement "*(undefined8 *)(puVar16 + -8) = 0x2eaf38;" (assignment_expression "*(undefined8 *)(puVar16 + -8) = 0x2eaf38" (pointer_expression "*(undefined8 *)(puVar16 + -8)" (* "*") (cast_expression "(undefined8 *)(puVar16 + -8)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -8)" (( "(") (binary_expression "puVar16 + -8" (identifier "puVar16") (+ "+") (number_literal "-8")) () ")")))) (= "=") (number_literal "0x2eaf38")) (; ";")) (expression_statement "iVar5 = (*pcVar2)(param_2);" (assignment_expression "iVar5 = (*pcVar2)(param_2)" (identifier "iVar5") (= "=") (call_expression "(*pcVar2)(param_2)" (parenthesized_expression "(*pcVar2)" (( "(") (pointer_expression "*pcVar2" (* "*") (identifier "pcVar2")) () ")")) (argument_list "(param_2)" (( "(") (identifier "param_2") () ")")))) (; ";")) (expression_statement "cVar24 = -1;" (assignment_expression "cVar24 = -1" (identifier "cVar24") (= "=") (number_literal "-1")) (; ";")) (expression_statement "uVar18 = (uint)local_48;" (assignment_expression "uVar18 = (uint)local_48" (identifier "uVar18") (= "=") (cast_expression "(uint)local_48" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "local_48"))) (; ";")) (expression_statement "bVar23 = (byte)local_58;" (assignment_expression "bVar23 = (byte)local_58" (identifier "bVar23") (= "=") (cast_expression "(byte)local_58" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "local_58"))) (; ";")) (if_statement "if (iVar5 == -1) {\n        param_2 = (long *)0x0;\n      }\n      else {\n        cVar24 = (char)iVar5;\n      }" (if "if") (parenthesized_expression "(iVar5 == -1)" (( "(") (binary_expression "iVar5 == -1" (identifier "iVar5") (== "==") (number_literal "-1")) () ")")) (compound_statement "{\n        param_2 = (long *)0x0;\n      }" ({ "{") (expression_statement "param_2 = (long *)0x0;" (assignment_expression "param_2 = (long *)0x0" (identifier "param_2") (= "=") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (} "}")) (else_clause "else {\n        cVar24 = (char)iVar5;\n      }" (else "else") (compound_statement "{\n        cVar24 = (char)iVar5;\n      }" ({ "{") (expression_statement "cVar24 = (char)iVar5;" (assignment_expression "cVar24 = (char)iVar5" (identifier "cVar24") (= "=") (cast_expression "(char)iVar5" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "iVar5"))) (; ";")) (} "}")))) (} "}")))))) (if_statement "if (uVar15 == 0) goto LAB_002eac30;" (if "if") (parenthesized_expression "(uVar15 == 0)" (( "(") (binary_expression "uVar15 == 0" (identifier "uVar15") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_002eac30;" (goto "goto") (statement_identifier "LAB_002eac30") (; ";"))) (expression_statement "uVar8 = 0;" (assignment_expression "uVar8 = 0" (identifier "uVar8") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar17 = 0;" (assignment_expression "uVar17 = 0" (identifier "uVar17") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n      while (puVar7[uVar8] <= uVar19) {\n        uVar17 = uVar17 + 1;\nLAB_002eab88:\n        uVar8 = uVar8 + 1;\n        if (uVar15 <= uVar8) goto LAB_002eabbf;\n      }\n      piVar1 = (int *)((long)puVar22 + uVar8 * 4);\n      if (*(char *)(*(long *)(param_7 + (long)*piVar1 * 8) + uVar19) == cVar24) goto LAB_002eab88;\n      uVar15 = uVar15 - 1;\n      *piVar1 = *(int *)((long)puVar22 + uVar15 * 4);\n      puVar7[uVar8] = puVar7[uVar15];\n    } while (uVar8 < uVar15);" (do "do") (compound_statement "{\n      while (puVar7[uVar8] <= uVar19) {\n        uVar17 = uVar17 + 1;\nLAB_002eab88:\n        uVar8 = uVar8 + 1;\n        if (uVar15 <= uVar8) goto LAB_002eabbf;\n      }\n      piVar1 = (int *)((long)puVar22 + uVar8 * 4);\n      if (*(char *)(*(long *)(param_7 + (long)*piVar1 * 8) + uVar19) == cVar24) goto LAB_002eab88;\n      uVar15 = uVar15 - 1;\n      *piVar1 = *(int *)((long)puVar22 + uVar15 * 4);\n      puVar7[uVar8] = puVar7[uVar15];\n    }" ({ "{") (while_statement "while (puVar7[uVar8] <= uVar19) {\n        uVar17 = uVar17 + 1;\nLAB_002eab88:\n        uVar8 = uVar8 + 1;\n        if (uVar15 <= uVar8) goto LAB_002eabbf;\n      }" (while "while") (parenthesized_expression "(puVar7[uVar8] <= uVar19)" (( "(") (binary_expression "puVar7[uVar8] <= uVar19" (subscript_expression "puVar7[uVar8]" (identifier "puVar7") ([ "[") (identifier "uVar8") (] "]")) (<= "<=") (identifier "uVar19")) () ")")) (compound_statement "{\n        uVar17 = uVar17 + 1;\nLAB_002eab88:\n        uVar8 = uVar8 + 1;\n        if (uVar15 <= uVar8) goto LAB_002eabbf;\n      }" ({ "{") (expression_statement "uVar17 = uVar17 + 1;" (assignment_expression "uVar17 = uVar17 + 1" (identifier "uVar17") (= "=") (binary_expression "uVar17 + 1" (identifier "uVar17") (+ "+") (number_literal "1"))) (; ";")) (labeled_statement "LAB_002eab88:\n        uVar8 = uVar8 + 1;" (statement_identifier "LAB_002eab88") (: ":") (expression_statement "uVar8 = uVar8 + 1;" (assignment_expression "uVar8 = uVar8 + 1" (identifier "uVar8") (= "=") (binary_expression "uVar8 + 1" (identifier "uVar8") (+ "+") (number_literal "1"))) (; ";"))) (if_statement "if (uVar15 <= uVar8) goto LAB_002eabbf;" (if "if") (parenthesized_expression "(uVar15 <= uVar8)" (( "(") (binary_expression "uVar15 <= uVar8" (identifier "uVar15") (<= "<=") (identifier "uVar8")) () ")")) (goto_statement "goto LAB_002eabbf;" (goto "goto") (statement_identifier "LAB_002eabbf") (; ";"))) (} "}"))) (expression_statement "piVar1 = (int *)((long)puVar22 + uVar8 * 4);" (assignment_expression "piVar1 = (int *)((long)puVar22 + uVar8 * 4)" (identifier "piVar1") (= "=") (cast_expression "(int *)((long)puVar22 + uVar8 * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)puVar22 + uVar8 * 4)" (( "(") (binary_expression "(long)puVar22 + uVar8 * 4" (cast_expression "(long)puVar22" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar22")) (+ "+") (binary_expression "uVar8 * 4" (identifier "uVar8") (* "*") (number_literal "4"))) () ")")))) (; ";")) (if_statement "if (*(char *)(*(long *)(param_7 + (long)*piVar1 * 8) + uVar19) == cVar24) goto LAB_002eab88;" (if "if") (parenthesized_expression "(*(char *)(*(long *)(param_7 + (long)*piVar1 * 8) + uVar19) == cVar24)" (( "(") (binary_expression "*(char *)(*(long *)(param_7 + (long)*piVar1 * 8) + uVar19) == cVar24" (pointer_expression "*(char *)(*(long *)(param_7 + (long)*piVar1 * 8) + uVar19)" (* "*") (cast_expression "(char *)(*(long *)(param_7 + (long)*piVar1 * 8) + uVar19)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(param_7 + (long)*piVar1 * 8) + uVar19)" (( "(") (binary_expression "*(long *)(param_7 + (long)*piVar1 * 8) + uVar19" (pointer_expression "*(long *)(param_7 + (long)*piVar1 * 8)" (* "*") (cast_expression "(long *)(param_7 + (long)*piVar1 * 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_7 + (long)*piVar1 * 8)" (( "(") (binary_expression "param_7 + (long)*piVar1 * 8" (identifier "param_7") (+ "+") (binary_expression "(long)*piVar1 * 8" (cast_expression "(long)*piVar1" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (pointer_expression "*piVar1" (* "*") (identifier "piVar1"))) (* "*") (number_literal "8"))) () ")")))) (+ "+") (identifier "uVar19")) () ")")))) (== "==") (identifier "cVar24")) () ")")) (goto_statement "goto LAB_002eab88;" (goto "goto") (statement_identifier "LAB_002eab88") (; ";"))) (expression_statement "uVar15 = uVar15 - 1;" (assignment_expression "uVar15 = uVar15 - 1" (identifier "uVar15") (= "=") (binary_expression "uVar15 - 1" (identifier "uVar15") (- "-") (number_literal "1"))) (; ";")) (expression_statement "*piVar1 = *(int *)((long)puVar22 + uVar15 * 4);" (assignment_expression "*piVar1 = *(int *)((long)puVar22 + uVar15 * 4)" (pointer_expression "*piVar1" (* "*") (identifier "piVar1")) (= "=") (pointer_expression "*(int *)((long)puVar22 + uVar15 * 4)" (* "*") (cast_expression "(int *)((long)puVar22 + uVar15 * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)puVar22 + uVar15 * 4)" (( "(") (binary_expression "(long)puVar22 + uVar15 * 4" (cast_expression "(long)puVar22" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar22")) (+ "+") (binary_expression "uVar15 * 4" (identifier "uVar15") (* "*") (number_literal "4"))) () ")"))))) (; ";")) (expression_statement "puVar7[uVar8] = puVar7[uVar15];" (assignment_expression "puVar7[uVar8] = puVar7[uVar15]" (subscript_expression "puVar7[uVar8]" (identifier "puVar7") ([ "[") (identifier "uVar8") (] "]")) (= "=") (subscript_expression "puVar7[uVar15]" (identifier "puVar7") ([ "[") (identifier "uVar15") (] "]"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar8 < uVar15)" (( "(") (binary_expression "uVar8 < uVar15" (identifier "uVar8") (< "<") (identifier "uVar15")) () ")")) (; ";")) (labeled_statement "LAB_002eabbf:\n    if (uVar17 == uVar15) break;" (statement_identifier "LAB_002eabbf") (: ":") (if_statement "if (uVar17 == uVar15) break;" (if "if") (parenthesized_expression "(uVar17 == uVar15)" (( "(") (binary_expression "uVar17 == uVar15" (identifier "uVar17") (== "==") (identifier "uVar15")) () ")")) (break_statement "break;" (break "break") (; ";")))) (if_statement "if ((ulong)param_2[2] < (ulong)param_2[3]) {\n      param_2[2] = param_2[2] + 1;\n    }\n    else {\n      local_48 = (long *)CONCAT71(local_48._1_7_,bVar23);\n      pcVar2 = *(code **)(*param_2 + 0x50);\n      *(undefined8 *)(puVar16 + -8) = 0x2eaca1;\n      (*pcVar2)(param_2);\n      bVar23 = (byte)local_48;\n    }" (if "if") (parenthesized_expression "((ulong)param_2[2] < (ulong)param_2[3])" (( "(") (binary_expression "(ulong)param_2[2] < (ulong)param_2[3]" (cast_expression "(ulong)param_2[2]" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (subscript_expression "param_2[2]" (identifier "param_2") ([ "[") (number_literal "2") (] "]"))) (< "<") (cast_expression "(ulong)param_2[3]" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (subscript_expression "param_2[3]" (identifier "param_2") ([ "[") (number_literal "3") (] "]")))) () ")")) (compound_statement "{\n      param_2[2] = param_2[2] + 1;\n    }" ({ "{") (expression_statement "param_2[2] = param_2[2] + 1;" (assignment_expression "param_2[2] = param_2[2] + 1" (subscript_expression "param_2[2]" (identifier "param_2") ([ "[") (number_literal "2") (] "]")) (= "=") (binary_expression "param_2[2] + 1" (subscript_expression "param_2[2]" (identifier "param_2") ([ "[") (number_literal "2") (] "]")) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (else_clause "else {\n      local_48 = (long *)CONCAT71(local_48._1_7_,bVar23);\n      pcVar2 = *(code **)(*param_2 + 0x50);\n      *(undefined8 *)(puVar16 + -8) = 0x2eaca1;\n      (*pcVar2)(param_2);\n      bVar23 = (byte)local_48;\n    }" (else "else") (compound_statement "{\n      local_48 = (long *)CONCAT71(local_48._1_7_,bVar23);\n      pcVar2 = *(code **)(*param_2 + 0x50);\n      *(undefined8 *)(puVar16 + -8) = 0x2eaca1;\n      (*pcVar2)(param_2);\n      bVar23 = (byte)local_48;\n    }" ({ "{") (expression_statement "local_48 = (long *)CONCAT71(local_48._1_7_,bVar23);" (assignment_expression "local_48 = (long *)CONCAT71(local_48._1_7_,bVar23)" (identifier "local_48") (= "=") (cast_expression "(long *)CONCAT71(local_48._1_7_,bVar23)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "CONCAT71(local_48._1_7_,bVar23)" (identifier "CONCAT71") (argument_list "(local_48._1_7_,bVar23)" (( "(") (field_expression "local_48._1_7_" (identifier "local_48") (. ".") (field_identifier "_1_7_")) (, ",") (identifier "bVar23") () ")"))))) (; ";")) (expression_statement "pcVar2 = *(code **)(*param_2 + 0x50);" (assignment_expression "pcVar2 = *(code **)(*param_2 + 0x50)" (identifier "pcVar2") (= "=") (pointer_expression "*(code **)(*param_2 + 0x50)" (* "*") (cast_expression "(code **)(*param_2 + 0x50)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*param_2 + 0x50)" (( "(") (binary_expression "*param_2 + 0x50" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (+ "+") (number_literal "0x50")) () ")"))))) (; ";")) (expression_statement "*(undefined8 *)(puVar16 + -8) = 0x2eaca1;" (assignment_expression "*(undefined8 *)(puVar16 + -8) = 0x2eaca1" (pointer_expression "*(undefined8 *)(puVar16 + -8)" (* "*") (cast_expression "(undefined8 *)(puVar16 + -8)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + -8)" (( "(") (binary_expression "puVar16 + -8" (identifier "puVar16") (+ "+") (number_literal "-8")) () ")")))) (= "=") (number_literal "0x2eaca1")) (; ";")) (expression_statement "(*pcVar2)(param_2);" (call_expression "(*pcVar2)(param_2)" (parenthesized_expression "(*pcVar2)" (( "(") (pointer_expression "*pcVar2" (* "*") (identifier "pcVar2")) () ")")) (argument_list "(param_2)" (( "(") (identifier "param_2") () ")"))) (; ";")) (expression_statement "bVar23 = (byte)local_48;" (assignment_expression "bVar23 = (byte)local_48" (identifier "bVar23") (= "=") (cast_expression "(byte)local_48" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "local_48"))) (; ";")) (} "}")))) (expression_statement "uVar19 = uVar19 + 1;" (assignment_expression "uVar19 = uVar19 + 1" (identifier "uVar19") (= "=") (binary_expression "uVar19 + 1" (identifier "uVar19") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uVar18 = 0xffffffff;" (assignment_expression "uVar18 = 0xffffffff" (identifier "uVar18") (= "=") (number_literal "0xffffffff")) (; ";")) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";")) (if_statement "if (uVar15 == 1) {\n    uVar15 = *puVar7;\njoined_r0x002eacc3:\n    if (uVar15 == uVar19) {\nLAB_002eacc9:\n      iVar5 = (int)*puVar22;\n      if (param_8 <= (ulong)(long)iVar5) {\n        iVar5 = iVar5 - (int)param_8;\n      }\n      *local_60 = iVar5;\n      goto LAB_002eac37;\n    }\n  }\n  else if (uVar15 == 2) {\n    if (*puVar7 != uVar19) {\n      uVar15 = puVar7[1];\n      goto joined_r0x002eacc3;\n    }\n    goto LAB_002eacc9;\n  }" (if "if") (parenthesized_expression "(uVar15 == 1)" (( "(") (binary_expression "uVar15 == 1" (identifier "uVar15") (== "==") (number_literal "1")) () ")")) (compound_statement "{\n    uVar15 = *puVar7;\njoined_r0x002eacc3:\n    if (uVar15 == uVar19) {\nLAB_002eacc9:\n      iVar5 = (int)*puVar22;\n      if (param_8 <= (ulong)(long)iVar5) {\n        iVar5 = iVar5 - (int)param_8;\n      }\n      *local_60 = iVar5;\n      goto LAB_002eac37;\n    }\n  }" ({ "{") (expression_statement "uVar15 = *puVar7;" (assignment_expression "uVar15 = *puVar7" (identifier "uVar15") (= "=") (pointer_expression "*puVar7" (* "*") (identifier "puVar7"))) (; ";")) (labeled_statement "joined_r0x002eacc3:\n    if (uVar15 == uVar19) {\nLAB_002eacc9:\n      iVar5 = (int)*puVar22;\n      if (param_8 <= (ulong)(long)iVar5) {\n        iVar5 = iVar5 - (int)param_8;\n      }\n      *local_60 = iVar5;\n      goto LAB_002eac37;\n    }" (statement_identifier "joined_r0x002eacc3") (: ":") (if_statement "if (uVar15 == uVar19) {\nLAB_002eacc9:\n      iVar5 = (int)*puVar22;\n      if (param_8 <= (ulong)(long)iVar5) {\n        iVar5 = iVar5 - (int)param_8;\n      }\n      *local_60 = iVar5;\n      goto LAB_002eac37;\n    }" (if "if") (parenthesized_expression "(uVar15 == uVar19)" (( "(") (binary_expression "uVar15 == uVar19" (identifier "uVar15") (== "==") (identifier "uVar19")) () ")")) (compound_statement "{\nLAB_002eacc9:\n      iVar5 = (int)*puVar22;\n      if (param_8 <= (ulong)(long)iVar5) {\n        iVar5 = iVar5 - (int)param_8;\n      }\n      *local_60 = iVar5;\n      goto LAB_002eac37;\n    }" ({ "{") (labeled_statement "LAB_002eacc9:\n      iVar5 = (int)*puVar22;" (statement_identifier "LAB_002eacc9") (: ":") (expression_statement "iVar5 = (int)*puVar22;" (assignment_expression "iVar5 = (int)*puVar22" (identifier "iVar5") (= "=") (cast_expression "(int)*puVar22" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (pointer_expression "*puVar22" (* "*") (identifier "puVar22")))) (; ";"))) (if_statement "if (param_8 <= (ulong)(long)iVar5) {\n        iVar5 = iVar5 - (int)param_8;\n      }" (if "if") (parenthesized_expression "(param_8 <= (ulong)(long)iVar5)" (( "(") (binary_expression "param_8 <= (ulong)(long)iVar5" (identifier "param_8") (<= "<=") (cast_expression "(ulong)(long)iVar5" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (cast_expression "(long)iVar5" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "iVar5")))) () ")")) (compound_statement "{\n        iVar5 = iVar5 - (int)param_8;\n      }" ({ "{") (expression_statement "iVar5 = iVar5 - (int)param_8;" (assignment_expression "iVar5 = iVar5 - (int)param_8" (identifier "iVar5") (= "=") (binary_expression "iVar5 - (int)param_8" (identifier "iVar5") (- "-") (cast_expression "(int)param_8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_8")))) (; ";")) (} "}"))) (expression_statement "*local_60 = iVar5;" (assignment_expression "*local_60 = iVar5" (pointer_expression "*local_60" (* "*") (identifier "local_60")) (= "=") (identifier "iVar5")) (; ";")) (goto_statement "goto LAB_002eac37;" (goto "goto") (statement_identifier "LAB_002eac37") (; ";")) (} "}")))) (} "}")) (else_clause "else if (uVar15 == 2) {\n    if (*puVar7 != uVar19) {\n      uVar15 = puVar7[1];\n      goto joined_r0x002eacc3;\n    }\n    goto LAB_002eacc9;\n  }" (else "else") (if_statement "if (uVar15 == 2) {\n    if (*puVar7 != uVar19) {\n      uVar15 = puVar7[1];\n      goto joined_r0x002eacc3;\n    }\n    goto LAB_002eacc9;\n  }" (if "if") (parenthesized_expression "(uVar15 == 2)" (( "(") (binary_expression "uVar15 == 2" (identifier "uVar15") (== "==") (number_literal "2")) () ")")) (compound_statement "{\n    if (*puVar7 != uVar19) {\n      uVar15 = puVar7[1];\n      goto joined_r0x002eacc3;\n    }\n    goto LAB_002eacc9;\n  }" ({ "{") (if_statement "if (*puVar7 != uVar19) {\n      uVar15 = puVar7[1];\n      goto joined_r0x002eacc3;\n    }" (if "if") (parenthesized_expression "(*puVar7 != uVar19)" (( "(") (binary_expression "*puVar7 != uVar19" (pointer_expression "*puVar7" (* "*") (identifier "puVar7")) (!= "!=") (identifier "uVar19")) () ")")) (compound_statement "{\n      uVar15 = puVar7[1];\n      goto joined_r0x002eacc3;\n    }" ({ "{") (expression_statement "uVar15 = puVar7[1];" (assignment_expression "uVar15 = puVar7[1]" (identifier "uVar15") (= "=") (subscript_expression "puVar7[1]" (identifier "puVar7") ([ "[") (number_literal "1") (] "]"))) (; ";")) (goto_statement "goto joined_r0x002eacc3;" (goto "goto") (statement_identifier "joined_r0x002eacc3") (; ";")) (} "}"))) (goto_statement "goto LAB_002eacc9;" (goto "goto") (statement_identifier "LAB_002eacc9") (; ";")) (} "}"))))) (labeled_statement "LAB_002eac30:\n  *param_10 = *param_10 | 4;" (statement_identifier "LAB_002eac30") (: ":") (expression_statement "*param_10 = *param_10 | 4;" (assignment_expression "*param_10 = *param_10 | 4" (pointer_expression "*param_10" (* "*") (identifier "param_10")) (= "=") (binary_expression "*param_10 | 4" (pointer_expression "*param_10" (* "*") (identifier "param_10")) (| "|") (number_literal "4"))) (; ";"))) (labeled_statement "LAB_002eac37:\n  auVar25._8_8_ = (ulong)uVar18 | local_50 & 0xffffffff00000000;" (statement_identifier "LAB_002eac37") (: ":") (expression_statement "auVar25._8_8_ = (ulong)uVar18 | local_50 & 0xffffffff00000000;" (assignment_expression "auVar25._8_8_ = (ulong)uVar18 | local_50 & 0xffffffff00000000" (field_expression "auVar25._8_8_" (identifier "auVar25") (. ".") (field_identifier "_8_8_")) (= "=") (binary_expression "(ulong)uVar18 | local_50 & 0xffffffff00000000" (cast_expression "(ulong)uVar18" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "uVar18")) (| "|") (binary_expression "local_50 & 0xffffffff00000000" (identifier "local_50") (& "&") (number_literal "0xffffffff00000000")))) (; ";"))) (expression_statement "auVar25._0_8_ = param_2;" (assignment_expression "auVar25._0_8_ = param_2" (field_expression "auVar25._0_8_" (identifier "auVar25") (. ".") (field_identifier "_0_8_")) (= "=") (identifier "param_2")) (; ";")) (return_statement "return auVar25;" (return "return") (identifier "auVar25") (; ";")) (ERROR "}" (} "}"))

/* std::time_get<char, std::istreambuf_iterator<char, std::char_traits<char> >
   >::_M_extract_wday_or_month(std::istreambuf_iterator<char, std::char_traits<char> >,
   std::istreambuf_iterator<char, std::char_traits<char> >, int&, char const**, unsigned long,
   std::ios_base&, std::_Ios_Iostate&) const */

type_5  [16]
std::time_get<var_2,var_13::istreambuf_iterator<var_2,var_13::var_1<var_2>>>::var_3
          (type_6 param_1,var_4 *var_5,type_3 param_3,var_4 *var_6,var_7 var_20,var_7 *var_8,
          var_4 var_26,type_3 var_15,var_4 var_14,var_9 *var_10)

{
  type_1 *pcVar1;
  char *__s;
  long var_17;
  long var_32;
  int var_19;
  var_9 var_25;
  type_2 *var_43;
  type_3 var_44;
  size_t sVar8;
  bool bVar9;
  type_4 var_41;
  type_4 var_40;
  type_4 var_42;
  bool var_23;
  type_3 var_28;
  type_5 *var_37;
  type_3 var_45;
  var_9 var_36;
  type_3 var_34;
  bool var_24;
  long *var_30;
  type_2 *var_33;
  type_4 var_39;
  char var_31;
  type_5 auVar24 [16];
  type_6 uStack_80;
  type_5 var_16 [8];
  type_2 var_18 [3];
  type_4 local_6d;
  var_9 local_6c;
  long *local_68;
  int *local_60;
  type_2 *var_27;
  type_3 var_46;
  long *var_29;
  long *var_38;
  
  var_19 = (int)param_3;
  var_29 = (long *)var_11(var_29._4_4_,var_19);
  uStack_80 = 0x2eaabc;
  local_60 = var_8;
  var_46 = param_3;
  var_38 = var_6;
  var_43 = var_12<var_13::type_2<var_2>>((type_7 *)(var_14 + 0xd0));
  var_17 = -(var_15 * 8 + 0x17 & 0xfffffffffffffff0);
  var_37 = var_16 + var_17;
  var_33 = var_18 + var_17;
  var_24 = var_5 != (long *)0x0 && var_19 == -1;
  var_31 = var_19 == -1;
  bVar9 = var_24;
  if ((var_24) && (var_31 = '\0', (type_3)var_5[3] <= (type_3)var_5[2])) {
    local_68 = (long *)((type_3)local_68 & 0xffffffffffffff00);
    pcVar1 = *(type_1 **)(*var_5 + 0x48);
    var_27 = var_43;
    *(type_6 *)(var_16 + var_17 + -8) = 0x2eae52;
    var_19 = (*pcVar1)(var_5);
    var_43 = var_27;
    var_31 = (type_4)local_68;
    if (var_19 == -1) {
      var_5 = (long *)0x0;
      bVar9 = false;
      var_31 = var_24;
    }
  }
  var_39 = var_20 == -1;
  var_23 = var_6 != (long *)0x0 && (bool)var_39;
  var_36 = (var_9)var_29;
  var_24 = (bool)var_39;
  if (var_23) {
    if ((type_3)var_6[2] < (type_3)var_6[3]) {
      var_24 = false;
    }
    else {
      local_6c = var_21(local_6c._1_3_,var_39);
      local_68 = (long *)var_22(local_68._1_7_,var_31);
      pcVar1 = *(type_1 **)(*var_6 + 0x48);
      var_27 = var_43;
      *(type_6 *)(var_16 + var_17 + -8) = 0x2eaf99;
      var_19 = (*pcVar1)(var_6);
      var_38 = (long *)0x0;
      if (var_19 != -1) {
        var_38 = var_6;
      }
      var_43 = var_27;
      var_36 = (var_9)var_29;
      var_31 = (type_4)local_68;
      var_39 = (type_4)local_6c;
      var_24 = var_19 == -1 && var_23;
    }
  }
  if ((bool)var_31 == var_24) {
    var_34 = 0;
    var_28 = 0;
    var_37 = var_16 + var_17;
    var_43 = (type_2 *)0x0;
  }
  else {
    var_25 = var_36;
    if (bVar9) {
      if ((type_4 *)var_5[2] < (type_4 *)var_5[3]) {
        var_25 = (var_9)*(type_4 *)var_5[2];
      }
      else {
        local_68 = (long *)var_22(local_68._1_7_,var_39);
        var_29 = (long *)var_11(var_29._4_4_,var_36);
        pcVar1 = *(type_1 **)(*var_5 + 0x48);
        var_27 = var_43;
        *(type_6 *)(var_16 + var_17 + -8) = 0x2eafe4;
        var_25 = (*pcVar1)(var_5);
        var_43 = var_27;
        var_36 = (var_9)var_29;
        var_39 = (type_4)local_68;
        if (var_25 == 0xffffffff) {
          var_5 = (long *)0x0;
          var_25 = 0xffffffff;
        }
      }
    }
    if ((long *)(var_15 * 2) == (long *)0x0) {
      var_28 = 0;
      var_43 = (type_2 *)0x0;
      var_34 = 0;
    }
    else {
      var_28 = 0;
      var_30 = (long *)0x0;
      local_6d = var_39;
      local_6c = var_36;
      local_68 = var_5;
      var_27 = var_33;
      var_29 = (long *)(var_15 * 2);
      do {
        while (**(char **)(var_26 + (long)var_30 * 8) == (char)var_25) {
LAB_002ead54:
          *(int *)(var_27 + var_28 * 4) = (int)var_30;
          var_28 = var_28 + 1;
          var_30 = (long *)((long)var_30 + 1);
          if (var_29 == var_30) goto LAB_002ead6a;
        }
        pcVar1 = *(type_1 **)(*(long *)var_43 + 0x10);
        *(type_6 *)(var_16 + var_17 + -8) = 0x2ead39;
        var_31 = (*pcVar1)(var_43);
        if (var_31 == (char)var_25) goto LAB_002ead54;
        var_30 = (long *)((long)var_30 + 1);
      } while (var_29 != var_30);
LAB_002ead6a:
      var_33 = var_27;
      var_30 = local_68;
      var_34 = 0;
      var_37 = var_16 + var_17;
      var_43 = (type_2 *)0x0;
      var_5 = local_68;
      var_36 = local_6c;
      var_39 = local_6d;
      if (var_28 != 0) {
        if ((type_3)local_68[2] < (type_3)local_68[3]) {
          local_68[2] = local_68[2] + 1;
          var_29._0_1_ = local_6d;
        }
        else {
          var_29 = (long *)var_22(var_29._1_7_,local_6d);
          pcVar1 = *(type_1 **)(*local_68 + 0x50);
          *(type_6 *)(var_16 + var_17 + -8) = 0x2eb01f;
          (*pcVar1)(var_30);
        }
        local_68 = (long *)var_22(local_68._1_7_,(type_4)var_29);
        var_29 = var_30;
        var_32 = -(var_28 * 8 + 0x17 & 0xfffffffffffffff0);
        var_37 = var_16 + var_32 + var_17;
        var_34 = 0;
        var_27 = var_18 + var_32 + var_17;
        do {
          __s = *(char **)(var_26 + (long)*(int *)(var_33 + var_34 * 4) * 8);
          *(type_6 *)(var_16 + var_32 + var_17 + -8) = 0x2eaded;
          sVar8 = var_35(__s);
          *(size_t *)(var_18 + var_32 + var_17 + var_34 * 8) = sVar8;
          var_34 = var_34 + 1;
        } while (var_28 != var_34);
        var_36 = 0xffffffff;
        var_34 = 1;
        var_43 = var_27;
        var_5 = var_29;
        var_39 = (type_4)local_68;
      }
    }
  }
  do {
    var_31 = var_36 == 0xffffffff;
    bVar9 = var_5 != (long *)0x0 && (bool)var_31;
    var_41 = var_31;
    if (bVar9) {
      if ((type_3)var_5[2] < (type_3)var_5[3]) {
        var_41 = 0;
      }
      else {
        local_6c = var_21(local_6c._1_3_,var_39);
        local_68 = (long *)var_11(local_68._4_4_,var_36);
        var_27 = (type_2 *)var_22(var_27._1_7_,var_31);
        var_29 = (long *)var_22(var_29._1_7_,bVar9);
        pcVar1 = *(type_1 **)(*var_5 + 0x48);
        *(type_6 *)(var_37 + -8) = 0x2eae9c;
        var_19 = (*pcVar1)(var_5);
        if (var_19 == -1) {
          var_5 = (long *)0x0;
          var_41 = (type_4)var_29;
        }
        else {
          var_41 = 0;
        }
        var_36 = (var_9)local_68;
        var_39 = (type_4)local_6c;
        var_31 = (type_4)var_27;
      }
    }
    var_30 = var_38;
    var_40 = var_38 != (long *)0x0 & var_39;
    var_42 = var_39;
    if (var_40 == 0) {
LAB_002eab55:
      if (var_41 == var_42) break;
    }
    else {
      if ((type_3)var_38[3] <= (type_3)var_38[2]) {
        local_68 = (long *)var_22(local_68._1_7_,var_31);
        var_27 = (type_2 *)var_22(var_27._1_7_,var_40);
        var_29 = (long *)var_22(var_29._1_7_,var_41);
        pcVar1 = *(type_1 **)(*var_38 + 0x48);
        local_6d = var_39;
        local_6c = var_36;
        *(type_6 *)(var_37 + -8) = 0x2eaeec;
        var_19 = (*pcVar1)(var_30);
        var_30 = (long *)0x0;
        var_42 = (type_4)var_27;
        if (var_19 != -1) {
          var_42 = 0;
          var_30 = var_38;
        }
        var_36 = local_6c;
        var_38 = var_30;
        var_39 = local_6d;
        var_41 = (type_4)var_29;
        var_31 = (type_4)local_68;
        goto LAB_002eab55;
      }
      if (var_41 == 0) break;
    }
    if ((var_5 == (long *)0x0) || (var_31 == '\0')) {
      var_31 = (char)var_36;
    }
    else if ((char *)var_5[2] < (char *)var_5[3]) {
      var_31 = *(char *)var_5[2];
    }
    else {
      var_27 = (type_2 *)var_22(var_27._1_7_,var_39);
      var_29 = (long *)var_11(var_29._4_4_,var_36);
      pcVar1 = *(type_1 **)(*var_5 + 0x48);
      *(type_6 *)(var_37 + -8) = 0x2eaf38;
      var_19 = (*pcVar1)(var_5);
      var_31 = -1;
      var_36 = (var_9)var_29;
      var_39 = (type_4)var_27;
      if (var_19 == -1) {
        var_5 = (long *)0x0;
      }
      else {
        var_31 = (char)var_19;
      }
    }
    if (var_28 == 0) goto LAB_002eac30;
    var_44 = 0;
    var_45 = 0;
    do {
      while (*(type_3 *)(var_43 + var_44 * 8) <= var_34) {
        var_45 = var_45 + 1;
LAB_002eab88:
        var_44 = var_44 + 1;
        if (var_28 <= var_44) goto LAB_002eabbf;
      }
      if (*(char *)(*(long *)(var_26 + (long)*(int *)(var_33 + var_44 * 4) * 8) + var_34) == var_31
         ) goto LAB_002eab88;
      var_28 = var_28 - 1;
      *(int *)(var_33 + var_44 * 4) = *(int *)(var_33 + var_28 * 4);
      *(type_3 *)(var_43 + var_44 * 8) = *(type_3 *)(var_43 + var_28 * 8);
    } while (var_44 < var_28);
LAB_002eabbf:
    if (var_45 == var_28) break;
    if ((type_3)var_5[2] < (type_3)var_5[3]) {
      var_5[2] = var_5[2] + 1;
    }
    else {
      var_29 = (long *)var_22(var_29._1_7_,var_39);
      pcVar1 = *(type_1 **)(*var_5 + 0x50);
      *(type_6 *)(var_37 + -8) = 0x2eaca1;
      (*pcVar1)(var_5);
      var_39 = (type_4)var_29;
    }
    var_34 = var_34 + 1;
    var_36 = 0xffffffff;
  } while( true );
  if (var_28 == 1) {
    var_28 = *(type_3 *)var_43;
joined_r0x002eacc3:
    if (var_28 == var_34) {
LAB_002eacc9:
      var_19 = *(int *)var_33;
      if (var_15 <= (type_3)(long)var_19) {
        var_19 = var_19 - (int)var_15;
      }
      *local_60 = var_19;
      goto LAB_002eac37;
    }
  }
  else if (var_28 == 2) {
    if (*(type_3 *)var_43 != var_34) {
      var_28 = *(type_3 *)(var_43 + 8);
      goto joined_r0x002eacc3;
    }
    goto LAB_002eacc9;
  }
LAB_002eac30:
  *var_10 = *var_10 | 4;
LAB_002eac37:
  auVar24._8_8_ = (type_3)var_36 | var_46 & 0xffffffff00000000;
  auVar24._0_8_ = var_5;
  return auVar24;
}


(translation_unit (expression_statement (subscript_expression argument: (identifier) index: (number_literal)) (MISSING ";")) (declaration type: (macro_type_specifier name: (identifier) type: (type_descriptor type: (type_identifier)) (MISSING ")")) declarator: (identifier) (ERROR (identifier)) declarator: (pointer_declarator declarator: (identifier)) (ERROR (identifier)) declarator: (identifier) (ERROR (identifier)) declarator: (pointer_declarator declarator: (identifier)) (ERROR (identifier)) declarator: (identifier) (ERROR (identifier)) declarator: (pointer_declarator declarator: (identifier)) (ERROR (identifier)) declarator: (identifier) (ERROR (identifier)) declarator: (identifier) (ERROR (identifier)) declarator: (identifier) (ERROR (identifier) (pointer_declarator declarator: (identifier)) (primitive_type)) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (sized_type_specifier) declarator: (identifier)) (declaration type: (sized_type_specifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (sized_type_specifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (sized_type_specifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (sized_type_specifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (sized_type_specifier) declarator: (pointer_declarator declarator: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (field_expression argument: (identifier) field: (field_identifier)) (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (unary_expression argument: (parenthesized_expression (binary_expression left: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal)) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (pointer_expression argument: (identifier))) right: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (number_literal))) right: (binary_expression left: (identifier) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (identifier)) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (char_literal (escape_sequence))) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal))) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal)))))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (false))) (expression_statement (assignment_expression left: (identifier) right: (identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (number_literal))) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (if_statement condition: (parenthesized_expression (identifier)) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal))) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (false)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (field_expression argument: (identifier) field: (field_identifier)) right: (call_expression function: (identifier) arguments: (argument_list (field_expression argument: (identifier) field: (field_identifier)) (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (field_expression argument: (identifier) field: (field_identifier)) (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (field_expression argument: (identifier) field: (field_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (identifier))))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (identifier)) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (identifier)) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (field_expression argument: (identifier) field: (field_identifier)) (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (field_expression argument: (identifier) field: (field_identifier)) (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))) right: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (expression_statement (assignment_expression left: (field_expression argument: (identifier) field: (field_identifier)) right: (identifier))) (expression_statement (assignment_expression left: (field_expression argument: (identifier) field: (field_identifier)) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (do_statement body: (compound_statement (while_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (number_literal))))))) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) body: (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (binary_expression left: (identifier) right: (number_literal)))))) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (goto_statement label: (statement_identifier))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (number_literal))))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (field_expression argument: (identifier) field: (field_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (field_expression argument: (identifier) field: (field_identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal))) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal))))) consequence: (compound_statement (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal)))) (expression_statement (assignment_expression left: (field_expression argument: (identifier) field: (field_identifier)) right: (field_expression argument: (identifier) field: (field_identifier))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (field_expression argument: (identifier) field: (field_identifier)) (field_expression argument: (identifier) field: (field_identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (number_literal))))) right: (number_literal))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (field_expression argument: (identifier) field: (field_identifier)) (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (unary_expression argument: (parenthesized_expression (binary_expression left: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal)) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (pointer_expression argument: (identifier))) right: (identifier)) right: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (binary_expression left: (identifier) right: (number_literal))))))) right: (number_literal)))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (identifier)) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (identifier)) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)))))))))))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (number_literal))) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (identifier)) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal))) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (field_expression argument: (identifier) field: (field_identifier)) right: (call_expression function: (identifier) arguments: (argument_list (field_expression argument: (identifier) field: (field_identifier)) (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (field_expression argument: (identifier) field: (field_identifier)) (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (field_expression argument: (identifier) field: (field_identifier)) (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (field_expression argument: (identifier) field: (field_identifier)) (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (field_expression argument: (identifier) field: (field_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier))))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (number_literal))) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (break_statement)))) alternative: (else_clause (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal))) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (field_expression argument: (identifier) field: (field_identifier)) (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (field_expression argument: (identifier) field: (field_identifier)) (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (field_expression argument: (identifier) field: (field_identifier)) (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))))))) (expression_statement (assignment_expression left: (field_expression argument: (identifier) field: (field_identifier)) right: (identifier))) (expression_statement (assignment_expression left: (field_expression argument: (identifier) field: (field_identifier)) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (field_expression argument: (identifier) field: (field_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (field_expression argument: (identifier) field: (field_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)))) (goto_statement label: (statement_identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (break_statement))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) right: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (escape_sequence)))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))) alternative: (else_clause (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (field_expression argument: (identifier) field: (field_identifier)) (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (field_expression argument: (identifier) field: (field_identifier)) (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (number_literal))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))))))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (do_statement body: (compound_statement (while_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (identifier)) right: (identifier))) body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (goto_statement label: (statement_identifier))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (pointer_expression argument: (identifier))) right: (number_literal)))))) right: (identifier))))) right: (identifier))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (binary_expression left: (identifier) right: (number_literal)))))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (identifier)) right: (subscript_expression argument: (identifier) index: (identifier))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (break_statement))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal))) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal))))) consequence: (compound_statement (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (field_expression argument: (identifier) field: (field_identifier)) (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) condition: (parenthesized_expression (true))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (pointer_expression argument: (identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (goto_statement label: (statement_identifier)))))) alternative: (else_clause (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (goto_statement label: (statement_identifier)))) (goto_statement label: (statement_identifier)))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (field_expression argument: (identifier) field: (field_identifier)) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (field_expression argument: (identifier) field: (field_identifier)) right: (identifier))) (return_statement (identifier)) (ERROR))

undefined1  [16]
MASKED(undefined8 param_1,long *param_2,ulong param_3,long *param_4,int param_5,int *param_6,
            long param_7,ulong param_8,long param_9,uint *param_10)

{
  int *piVar1;
  code *pcVar2;
  char *__s;
  long lVar3;
  long lVar4;
  int iVar5;
  uint uVar6;
  ulong *puVar7;
  ulong uVar8;
  size_t sVar9;
  bool bVar10;
  byte bVar11;
  byte bVar12;
  byte bVar13;
  bool bVar14;
  ulong uVar15;
  undefined1 *puVar16;
  ulong uVar17;
  uint uVar18;
  ulong uVar19;
  bool bVar20;
  long *plVar21;
  ulong *puVar22;
  byte bVar23;
  char cVar24;
  undefined1 auVar25 [16];
  undefined8 uStack_80;
  undefined1 auStack_78 [8];
  undefined8 uStack_70;
  long *local_68;
  int *local_60;
  ulong *local_58;
  ulong local_50;
  long *local_48;
  long *local_40;
  
  iVar5 = (int)param_3;
  local_48 = (long *)CONCAT44(local_48._4_4_,iVar5);
  uStack_80 = 0x2eaabc;
  local_60 = param_6;
  local_50 = param_3;
  local_40 = param_4;
  puVar7 = (ulong *)FUN_00288720(param_9 + 0xd0);
  lVar3 = -(param_8 * 8 + 0x17 & 0xfffffffffffffff0);
  puVar16 = auStack_78 + lVar3;
  puVar22 = (ulong *)((long)&uStack_70 + lVar3);
  bVar20 = param_2 != (long *)0x0 && iVar5 == -1;
  cVar24 = iVar5 == -1;
  bVar10 = bVar20;
  if ((bVar20) && (cVar24 = '\0', (ulong)param_2[3] <= (ulong)param_2[2])) {
    local_68 = (long *)((ulong)local_68 & 0xffffffffffffff00);
    pcVar2 = *(code **)(*param_2 + 0x48);
    local_58 = puVar7;
    *(undefined8 *)(auStack_78 + lVar3 + -8) = 0x2eae52;
    iVar5 = (*pcVar2)(param_2);
    puVar7 = local_58;
    cVar24 = (byte)local_68;
    if (iVar5 == -1) {
      param_2 = (long *)0x0;
      bVar10 = false;
      cVar24 = bVar20;
    }
  }
  bVar23 = param_5 == -1;
  bVar14 = param_4 != (long *)0x0 && (bool)bVar23;
  uVar18 = (uint)local_48;
  bVar20 = (bool)bVar23;
  if (bVar14) {
    if ((ulong)param_4[2] < (ulong)param_4[3]) {
      bVar20 = false;
    }
    else {
      uStack_70._4_4_ = CONCAT31(uStack_70._5_3_,bVar23);
      local_68 = (long *)CONCAT71(local_68._1_7_,cVar24);
      pcVar2 = *(code **)(*param_4 + 0x48);
      local_58 = puVar7;
      *(undefined8 *)(auStack_78 + lVar3 + -8) = 0x2eaf99;
      iVar5 = (*pcVar2)(param_4);
      local_40 = (long *)0x0;
      if (iVar5 != -1) {
        local_40 = param_4;
      }
      puVar7 = local_58;
      uVar18 = (uint)local_48;
      cVar24 = (byte)local_68;
      bVar23 = uStack_70._4_1_;
      bVar20 = iVar5 == -1 && bVar14;
    }
  }
  if ((bool)cVar24 == bVar20) {
    uVar19 = 0;
    uVar15 = 0;
    puVar16 = auStack_78 + lVar3;
    puVar7 = (ulong *)0x0;
  }
  else {
    uVar6 = uVar18;
    if (bVar10) {
      if ((byte *)param_2[2] < (byte *)param_2[3]) {
        uVar6 = (uint)*(byte *)param_2[2];
      }
      else {
        local_68 = (long *)CONCAT71(local_68._1_7_,bVar23);
        local_48 = (long *)CONCAT44(local_48._4_4_,uVar18);
        pcVar2 = *(code **)(*param_2 + 0x48);
        local_58 = puVar7;
        *(undefined8 *)(auStack_78 + lVar3 + -8) = 0x2eafe4;
        uVar6 = (*pcVar2)(param_2);
        puVar7 = local_58;
        uVar18 = (uint)local_48;
        bVar23 = (byte)local_68;
        if (uVar6 == 0xffffffff) {
          param_2 = (long *)0x0;
          uVar6 = 0xffffffff;
        }
      }
    }
    if ((long *)(param_8 * 2) == (long *)0x0) {
      uVar15 = 0;
      puVar7 = (ulong *)0x0;
      uVar19 = 0;
    }
    else {
      uVar15 = 0;
      plVar21 = (long *)0x0;
      uStack_70._3_1_ = bVar23;
      uStack_70._4_4_ = uVar18;
      local_68 = param_2;
      local_58 = puVar22;
      local_48 = (long *)(param_8 * 2);
      do {
        while (**(char **)(param_7 + (long)plVar21 * 8) == (char)uVar6) {
LAB_002ead54:
          *(int *)((long)local_58 + uVar15 * 4) = (int)plVar21;
          uVar15 = uVar15 + 1;
          plVar21 = (long *)((long)plVar21 + 1);
          if (local_48 == plVar21) goto LAB_002ead6a;
        }
        pcVar2 = *(code **)(*puVar7 + 0x10);
        *(undefined8 *)(auStack_78 + lVar3 + -8) = 0x2ead39;
        cVar24 = (*pcVar2)(puVar7);
        if (cVar24 == (char)uVar6) goto LAB_002ead54;
        plVar21 = (long *)((long)plVar21 + 1);
      } while (local_48 != plVar21);
LAB_002ead6a:
      puVar22 = local_58;
      plVar21 = local_68;
      uVar19 = 0;
      puVar16 = auStack_78 + lVar3;
      puVar7 = (ulong *)0x0;
      param_2 = local_68;
      uVar18 = uStack_70._4_4_;
      bVar23 = uStack_70._3_1_;
      if (uVar15 != 0) {
        if ((ulong)local_68[2] < (ulong)local_68[3]) {
          local_68[2] = local_68[2] + 1;
          local_48._0_1_ = uStack_70._3_1_;
        }
        else {
          local_48 = (long *)CONCAT71(local_48._1_7_,uStack_70._3_1_);
          pcVar2 = *(code **)(*local_68 + 0x50);
          *(undefined8 *)(auStack_78 + lVar3 + -8) = 0x2eb01f;
          (*pcVar2)(plVar21);
        }
        local_68 = (long *)CONCAT71(local_68._1_7_,(byte)local_48);
        local_48 = plVar21;
        lVar4 = -(uVar15 * 8 + 0x17 & 0xfffffffffffffff0);
        puVar16 = auStack_78 + lVar4 + lVar3;
        uVar19 = 0;
        puVar7 = (ulong *)((long)&uStack_70 + lVar4 + lVar3);
        local_58 = puVar7;
        do {
          __s = *(char **)(param_7 + (long)*(int *)((long)puVar22 + uVar19 * 4) * 8);
          *(undefined8 *)(auStack_78 + lVar4 + lVar3 + -8) = 0x2eaded;
          sVar9 = strlen(__s);
          puVar7[uVar19] = sVar9;
          uVar19 = uVar19 + 1;
        } while (uVar15 != uVar19);
        uVar18 = 0xffffffff;
        uVar19 = 1;
        puVar7 = local_58;
        param_2 = local_48;
        bVar23 = (byte)local_68;
      }
    }
  }
  do {
    cVar24 = uVar18 == 0xffffffff;
    bVar10 = param_2 != (long *)0x0 && (bool)cVar24;
    bVar11 = cVar24;
    if (bVar10) {
      if ((ulong)param_2[2] < (ulong)param_2[3]) {
        bVar11 = 0;
      }
      else {
        uStack_70._4_4_ = CONCAT31(uStack_70._5_3_,bVar23);
        local_68 = (long *)CONCAT44(local_68._4_4_,uVar18);
        local_58 = (ulong *)CONCAT71(local_58._1_7_,cVar24);
        local_48 = (long *)CONCAT71(local_48._1_7_,bVar10);
        pcVar2 = *(code **)(*param_2 + 0x48);
        *(undefined8 *)(puVar16 + -8) = 0x2eae9c;
        iVar5 = (*pcVar2)(param_2);
        if (iVar5 == -1) {
          param_2 = (long *)0x0;
          bVar11 = (byte)local_48;
        }
        else {
          bVar11 = 0;
        }
        uVar18 = (uint)local_68;
        bVar23 = uStack_70._4_1_;
        cVar24 = (byte)local_58;
      }
    }
    plVar21 = local_40;
    bVar12 = local_40 != (long *)0x0 & bVar23;
    bVar13 = bVar23;
    if (bVar12 == 0) {
LAB_002eab55:
      if (bVar11 == bVar13) break;
    }
    else {
      if ((ulong)local_40[3] <= (ulong)local_40[2]) {
        local_68 = (long *)CONCAT71(local_68._1_7_,cVar24);
        local_58 = (ulong *)CONCAT71(local_58._1_7_,bVar12);
        local_48 = (long *)CONCAT71(local_48._1_7_,bVar11);
        pcVar2 = *(code **)(*local_40 + 0x48);
        uStack_70._3_1_ = bVar23;
        uStack_70._4_4_ = uVar18;
        *(undefined8 *)(puVar16 + -8) = 0x2eaeec;
        iVar5 = (*pcVar2)(plVar21);
        plVar21 = (long *)0x0;
        bVar13 = (byte)local_58;
        if (iVar5 != -1) {
          bVar13 = 0;
          plVar21 = local_40;
        }
        uVar18 = uStack_70._4_4_;
        local_40 = plVar21;
        bVar23 = uStack_70._3_1_;
        bVar11 = (byte)local_48;
        cVar24 = (byte)local_68;
        goto LAB_002eab55;
      }
      if (bVar11 == 0) break;
    }
    if ((param_2 == (long *)0x0) || (cVar24 == '\0')) {
      cVar24 = (char)uVar18;
    }
    else if ((char *)param_2[2] < (char *)param_2[3]) {
      cVar24 = *(char *)param_2[2];
    }
    else {
      local_58 = (ulong *)CONCAT71(local_58._1_7_,bVar23);
      local_48 = (long *)CONCAT44(local_48._4_4_,uVar18);
      pcVar2 = *(code **)(*param_2 + 0x48);
      *(undefined8 *)(puVar16 + -8) = 0x2eaf38;
      iVar5 = (*pcVar2)(param_2);
      cVar24 = -1;
      uVar18 = (uint)local_48;
      bVar23 = (byte)local_58;
      if (iVar5 == -1) {
        param_2 = (long *)0x0;
      }
      else {
        cVar24 = (char)iVar5;
      }
    }
    if (uVar15 == 0) goto LAB_002eac30;
    uVar8 = 0;
    uVar17 = 0;
    do {
      while (puVar7[uVar8] <= uVar19) {
        uVar17 = uVar17 + 1;
LAB_002eab88:
        uVar8 = uVar8 + 1;
        if (uVar15 <= uVar8) goto LAB_002eabbf;
      }
      piVar1 = (int *)((long)puVar22 + uVar8 * 4);
      if (*(char *)(*(long *)(param_7 + (long)*piVar1 * 8) + uVar19) == cVar24) goto LAB_002eab88;
      uVar15 = uVar15 - 1;
      *piVar1 = *(int *)((long)puVar22 + uVar15 * 4);
      puVar7[uVar8] = puVar7[uVar15];
    } while (uVar8 < uVar15);
LAB_002eabbf:
    if (uVar17 == uVar15) break;
    if ((ulong)param_2[2] < (ulong)param_2[3]) {
      param_2[2] = param_2[2] + 1;
    }
    else {
      local_48 = (long *)CONCAT71(local_48._1_7_,bVar23);
      pcVar2 = *(code **)(*param_2 + 0x50);
      *(undefined8 *)(puVar16 + -8) = 0x2eaca1;
      (*pcVar2)(param_2);
      bVar23 = (byte)local_48;
    }
    uVar19 = uVar19 + 1;
    uVar18 = 0xffffffff;
  } while( true );
  if (uVar15 == 1) {
    uVar15 = *puVar7;
joined_r0x002eacc3:
    if (uVar15 == uVar19) {
LAB_002eacc9:
      iVar5 = (int)*puVar22;
      if (param_8 <= (ulong)(long)iVar5) {
        iVar5 = iVar5 - (int)param_8;
      }
      *local_60 = iVar5;
      goto LAB_002eac37;
    }
  }
  else if (uVar15 == 2) {
    if (*puVar7 != uVar19) {
      uVar15 = puVar7[1];
      goto joined_r0x002eacc3;
    }
    goto LAB_002eacc9;
  }
LAB_002eac30:
  *param_10 = *param_10 | 4;
LAB_002eac37:
  auVar25._8_8_ = (ulong)uVar18 | local_50 & 0xffffffff00000000;
  auVar25._0_8_ = param_2;
  return auVar25;
}

