
/* WARNING: Function: __x86.get_pc_thunk.bp replaced with injection: get_pc_thunk.bp */
/* WARNING: Type propagation algorithm not settling */
/* WARNING: Unknown calling convention */

int check_macro(char *line,sb *expand,char **error,macro_entry **info)

{
  byte bVar1;
  undefined4 uVar2;
  bool bVar3;
  byte *pbVar4;
  formal_entry *pfVar5;
  formal_entry *formal;
  undefined *puVar6;
  formal_struct *pfVar7;
  byte bVar8;
  char cVar9;
  void *pvVar10;
  byte *key;
  macro_entry *macro;
  size_t sVar11;
  char *pcVar12;
  char *pcVar13;
  char *pcVar14;
  formal_entry *pfVar15;
  size_t __n;
  int iVar16;
  size_t idx;
  formal_struct *pfVar17;
  byte *pbVar18;
  int local_58;
  sb line_sb;
  sb t;
  char buffer [20];
  
  if (((lex_type[(byte)*line] & 2) == 0) && ((macro_mri == 0 || (*line != 0x2e)))) {
    return 0;
  }
  pbVar18 = (byte *)(line + 1);
  bVar1 = lex_type[(byte)line[1]];
  while ((bVar1 & 1) != 0) {
    pbVar18 = pbVar18 + 1;
    bVar1 = lex_type[*pbVar18];
  }
  pbVar18 = pbVar18 + ((bVar1 & 4) != 0);
  __n = (int)pbVar18 - (int)line;
  pvVar10 = (void *)xmalloc(__n + 1);
  *(undefined1 *)((int)pvVar10 + __n) = 0;
  key = (byte *)memcpy(pvVar10,line,__n);
  puVar6 = PTR__sch_tolower_0007ffd0;
  bVar1 = *key;
  pbVar4 = key;
  while (bVar1 != 0) {
    *pbVar4 = puVar6[bVar1];
    bVar1 = pbVar4[1];
    pbVar4 = pbVar4 + 1;
  }
  macro = (macro_entry *)hash_find(macro_hash,(char *)key);
  free(key);
  if (macro == (macro_entry *)0x0) {
    return 0;
  }
  sb_new(&line_sb);
  bVar1 = *pbVar18;
  while ((0xd < bVar1 || ((0x2401U >> ((int)(char)bVar1 & 0x1fU) & 1) == 0))) {
    pbVar18 = pbVar18 + 1;
    sb_add_char(&line_sb,(int)(char)bVar1);
    bVar1 = *pbVar18;
  }
  sb_new(expand);
  sb_new(&t);
  pfVar17 = macro->formals;
  if (pfVar17 != (formal_entry *)0x0) {
    do {
      sb_reset(&pfVar17->actual);
      pfVar17 = pfVar17->next;
    } while (pfVar17 != (formal_struct *)0x0);
    for (pfVar17 = macro->formals; pfVar17 != (formal_struct *)0x0; pfVar17 = pfVar17->next) {
      if (-1 < pfVar17->index) goto LAB_0002adc1;
    }
  }
  pfVar17 = (formal_struct *)0x0;
LAB_0002adc1:
  sVar11 = 0;
  if ((macro_mri != 0) && (sVar11 = line_sb.len, line_sb.len != 0)) {
    if (*line_sb.ptr == '.') {
      if (((line_sb.len < 2) || (line_sb.ptr[1] == ' ')) || (line_sb.ptr[1] == '\t')) {
        sVar11 = 1;
      }
      else {
        pfVar15 = new_formal();
        pfVar15->index = -1;
        pfVar15->next = macro->formals;
        macro->formals = pfVar15;
        sVar11 = get_any_string(1,&line_sb,&pfVar15->actual);
      }
    }
    else {
      sVar11 = 0;
    }
  }
  sVar11 = sb_skip_white(sVar11,&line_sb);
  local_58 = 0;
  bVar3 = false;
  do {
    idx = sVar11;
    if (line_sb.len <= sVar11) {
LAB_0002b19c:
      pfVar17 = macro->formals;
      goto joined_r0x0002b1a5;
    }
LAB_0002ae30:
    bVar1 = line_sb.ptr[sVar11];
    bVar8 = 1;
    if ((byte)(bVar1 - 0x20) < 0x1c) {
      bVar8 = ~(byte)(0x8001305 >> (bVar1 - 0x20 & 0x1f)) & 1;
    }
    if ((bVar1 != 9) && (bVar8 != 0)) {
      if (macro_alternate != 0) goto joined_r0x0002b05a;
      if (macro_mri != 0) {
        if ((bVar1 & 0xfd) == 0x3c) {
          if (sVar11 < line_sb.len) goto LAB_0002b0c6;
        }
        else if (bVar1 != 0x27) goto LAB_0002b03e;
        goto joined_r0x0002b05a;
      }
LAB_0002b03e:
      if (bVar1 == 0x3d) {
        if (sVar11 < line_sb.len) goto LAB_0002b0cf;
        goto joined_r0x0002b05a;
      }
      sVar11 = sVar11 + 1;
      if (sVar11 != line_sb.len) goto LAB_0002ae30;
joined_r0x0002b05a:
      if (!bVar3) {
        if (pfVar17 == (formal_struct *)0x0) {
          if (macro_mri == 0) {
            pcVar13 = (char *)dcgettext(0,"too many positional arguments",5);
            if (pcVar13 == (char *)0x0) {
              pfVar17 = macro->formals;
              if (pfVar17 != (formal_entry *)0x0) goto LAB_0002af0e;
              pfVar15 = (formal_entry *)0x0;
              goto LAB_0002af6d;
            }
            goto LAB_0002b090;
          }
          pfVar17 = new_formal();
          iVar16 = -1;
          pfVar7 = macro->formals;
          if (macro->formals == (formal_entry *)0x0) {
            iVar16 = 0;
            pfVar15 = (formal_entry *)&macro->formals;
          }
          else {
            do {
              pfVar15 = pfVar7;
              if (iVar16 <= pfVar15->index) {
                iVar16 = pfVar15->index + 1;
              }
              pfVar7 = pfVar15->next;
            } while (pfVar15->next != (formal_struct *)0x0);
            if (iVar16 == -1) {
              iVar16 = 0;
            }
          }
          pfVar15->next = pfVar17;
          pfVar17->index = iVar16;
        }
        if (pfVar17->type == FORMAL_VARARG) {
          sb_add_buffer(&pfVar17->actual,line_sb.ptr + idx,line_sb.len - idx);
          sVar11 = line_sb.len;
        }
        else {
          sVar11 = get_any_string(idx,&line_sb,&pfVar17->actual);
        }
        local_58 = (local_58 + 1) - (uint)((pfVar17->actual).len == 0);
        do {
          pfVar17 = pfVar17->next;
          if (pfVar17 == (formal_struct *)0x0) break;
        } while (pfVar17->index < 0);
LAB_0002aebd:
        if (macro_mri != 0) goto LAB_0002aecb;
LAB_0002b178:
        sVar11 = sb_skip_comma(sVar11,&line_sb);
        idx = sVar11;
        if (line_sb.len <= sVar11) goto LAB_0002b19c;
        goto LAB_0002ae30;
      }
      pcVar13 = (char *)dcgettext(0,"can\'t mix positional and keyword arguments",5);
LAB_0002b07a:
      if (pcVar13 == (char *)0x0) goto LAB_0002b19c;
      if (macro_mri != 0) goto LAB_0002af93;
LAB_0002b090:
      sb_kill(&t);
      goto LAB_0002afd9;
    }
    if ((line_sb.len <= sVar11) || (macro_alternate != 0)) goto joined_r0x0002b05a;
LAB_0002b0c6:
    if (bVar1 != 0x3d) goto joined_r0x0002b05a;
LAB_0002b0cf:
    sb_reset(&t);
    sVar11 = get_token(idx,&line_sb,(sb *)&line_sb.len,&t);
    if (line_sb.ptr[sVar11] != '=') {
      pcVar13 = (char *)dcgettext(0,"confusion in formal parameters",5);
      goto LAB_0002b07a;
    }
    pcVar13 = sb_terminate(&t);
    pvVar10 = hash_find(macro->formal_hash,pcVar13);
    pcVar13 = t.ptr;
    if (pvVar10 == (void *)0x0) {
      pcVar14 = macro->name;
      pcVar12 = (char *)dcgettext(0,"Parameter named `%s\' does not exist for macro `%s\'",5);
      as_bad(pcVar12,pcVar13,pcVar14);
      sb_reset(&t);
      sVar11 = get_any_string(sVar11 + 1,&line_sb,&t);
      bVar3 = true;
      goto LAB_0002aebd;
    }
    if (*(int *)((int)pvVar10 + 0x20) != 0) {
      pcVar13 = macro->name;
      uVar2 = *(undefined4 *)((int)pvVar10 + 4);
      pcVar14 = (char *)dcgettext(0,"Value for parameter `%s\' of macro `%s\' was already specified"
                                  ,5);
      as_warn(pcVar14,uVar2,pcVar13);
      sb_reset((sb *)((int)pvVar10 + 0x1c));
    }
    sVar11 = get_any_string(sVar11 + 1,&line_sb,(sb *)((int)pvVar10 + 0x1c));
    bVar3 = true;
    local_58 = (local_58 + 1) - (uint)(*(int *)((int)pvVar10 + 0x20) == 0);
    if (macro_mri == 0) goto LAB_0002b178;
LAB_0002aecb:
    cVar9 = line_sb.ptr[sVar11];
    if (cVar9 == ',') {
      sVar11 = sVar11 + 1;
      cVar9 = line_sb.ptr[sVar11];
    }
  } while ((cVar9 != ' ') && (cVar9 != '\t'));
  pfVar17 = macro->formals;
  if (pfVar17 != (formal_entry *)0x0) {
LAB_0002af0e:
    do {
      if ((pfVar17->type != FORMAL_REQUIRED) || ((pfVar17->actual).len != 0)) {
        pfVar17 = pfVar17->next;
joined_r0x0002b1a5:
        if (pfVar17 == (formal_struct *)0x0) break;
        goto LAB_0002af0e;
      }
      pcVar13 = (pfVar17->name).ptr;
      pcVar14 = macro->name;
      pcVar12 = (char *)dcgettext(0,"Missing value for required parameter `%s\' of macro `%s\'",5);
      as_bad(pcVar12,pcVar13,pcVar14);
      pfVar17 = pfVar17->next;
    } while (pfVar17 != (formal_struct *)0x0);
    if (macro_mri == 0) goto LAB_0002af66;
  }
  sb_reset(&t);
  pcVar13 = "$NARG";
  if (macro_strip_at == 0) {
    pcVar13 = "NARG";
  }
  sb_add_string(&t,pcVar13);
  pcVar13 = sb_terminate(&t);
  pvVar10 = hash_find(macro->formal_hash,pcVar13);
  sprintf(buffer,"%d",local_58);
  sb_add_string((sb *)((int)pvVar10 + 0x1c),buffer);
LAB_0002af66:
  pfVar15 = macro->formals;
LAB_0002af6d:
  pcVar13 = macro_expand_body((sb *)macro,expand,pfVar15,macro->formal_hash,macro);
  if (macro_mri != 0) {
LAB_0002af93:
    pfVar15 = (formal_entry *)&macro->formals;
    pfVar17 = macro->formals;
    while (formal = pfVar17, pfVar5 = pfVar15, formal != (formal_entry *)0x0) {
      pfVar17 = formal->next;
      pfVar15 = formal;
      if ((formal->name).len == 0) {
        del_formal(formal);
        pfVar5->next = pfVar17;
        pfVar15 = pfVar5;
      }
    }
  }
  sb_kill(&t);
  if (pcVar13 == (char *)0x0) {
    macro_number = macro_number + 1;
  }
LAB_0002afd9:
  *error = pcVar13;
  sb_kill(&line_sb);
  if (info != (macro_entry **)0x0) {
    *info = macro;
    return 1;
  }
  return 1;
}



/* WARNING: Type propagation algorithm not settling */

undefined4 FUN_0002ac00(byte *param_1,undefined4 param_2,int *param_3,int *param_4)

{
  byte bVar1;
  int iVar2;
  undefined4 *puVar3;
  bool bVar4;
  byte *pbVar5;
  byte bVar6;
  char cVar7;
  void *__dest;
  byte *__ptr;
  int iVar8;
  uint uVar9;
  undefined4 uVar10;
  int iVar11;
  undefined4 uVar12;
  undefined4 uVar13;
  undefined4 *puVar14;
  undefined4 *puVar15;
  size_t __n;
  uint uVar16;
  int unaff_EBP;
  int *piVar17;
  undefined4 *puVar18;
  byte *pbVar19;
  int local_58;
  char *local_48;
  uint local_44;
  undefined4 local_3c [3];
  char local_30 [32];
  
  FUN_0001fe10();
  iVar8 = unaff_EBP + 0x557ba;
  if (((*(byte *)(iVar8 + (uint)*param_1) & 2) != 0) ||
     ((*(int *)(&DAT_0005e002 + unaff_EBP) != 0 && (*param_1 == 0x2e)))) {
    pbVar19 = param_1 + 1;
    bVar1 = *(byte *)(iVar8 + (uint)param_1[1]);
    while ((bVar1 & 1) != 0) {
      pbVar19 = pbVar19 + 1;
      bVar1 = *(byte *)(iVar8 + (uint)*pbVar19);
    }
    pbVar19 = pbVar19 + ((bVar1 & 4) != 0);
    __n = (int)pbVar19 - (int)param_1;
    __dest = (void *)xmalloc(__n + 1);
    *(undefined1 *)((int)__dest + __n) = 0;
    __ptr = (byte *)memcpy(__dest,param_1,__n);
    iVar8 = *(int *)(unaff_EBP + 0x553ca);
    bVar1 = *__ptr;
    pbVar5 = __ptr;
    while (bVar1 != 0) {
      *pbVar5 = *(byte *)(iVar8 + (uint)bVar1);
      bVar1 = pbVar5[1];
      pbVar5 = pbVar5 + 1;
    }
    iVar8 = FUN_000254b0(*(undefined4 *)("%S.000%z" + unaff_EBP),__ptr);
    free(__ptr);
    if (iVar8 != 0) {
      FUN_00035790(&local_48);
      bVar1 = *pbVar19;
      while ((0xd < bVar1 || ((0x2401U >> ((int)(char)bVar1 & 0x1fU) & 1) == 0))) {
        pbVar19 = pbVar19 + 1;
        FUN_000358b0(&local_48,(int)(char)bVar1);
        bVar1 = *pbVar19;
      }
      FUN_00035790(param_2);
      FUN_00035790(local_3c);
      piVar17 = *(int **)(iVar8 + 0x10);
      if (piVar17 != (int *)0x0) {
        do {
          FUN_000358a0(piVar17 + 7);
          piVar17 = (int *)*piVar17;
        } while (piVar17 != (int *)0x0);
        for (puVar18 = *(undefined4 **)(iVar8 + 0x10); puVar18 != (undefined4 *)0x0;
            puVar18 = (undefined4 *)*puVar18) {
          if (-1 < (int)puVar18[10]) goto LAB_0002adc1;
        }
      }
      puVar18 = (undefined4 *)0x0;
LAB_0002adc1:
      uVar9 = 0;
      if ((*(int *)(&DAT_0005e002 + unaff_EBP) != 0) && (uVar9 = local_44, local_44 != 0)) {
        if (*local_48 == '.') {
          if (((local_44 < 2) || (local_48[1] == ' ')) || (local_48[1] == '\t')) {
            uVar9 = 1;
          }
          else {
            puVar14 = (undefined4 *)FUN_00028ba0();
            puVar14[10] = 0xffffffff;
            *puVar14 = *(undefined4 *)(iVar8 + 0x10);
            *(undefined4 **)(iVar8 + 0x10) = puVar14;
            uVar9 = FUN_00029a00();
          }
        }
        else {
          uVar9 = 0;
        }
      }
      uVar9 = FUN_00035980(uVar9,&local_48);
      local_58 = 0;
      bVar4 = false;
LAB_0002ae00:
      if (uVar9 < local_44) {
        do {
          uVar16 = uVar9;
          do {
            bVar1 = local_48[uVar16];
            bVar6 = 1;
            if ((byte)(bVar1 - 0x20) < 0x1c) {
              bVar6 = ~(byte)(0x8001305 >> (bVar1 - 0x20 & 0x1f)) & 1;
            }
            if ((bVar1 == 9) || (bVar6 == 0)) {
              if ((uVar16 < local_44) && (*(int *)(&DAT_0005e006 + unaff_EBP) == 0)) {
LAB_0002b0c6:
                if (bVar1 == 0x3d) {
LAB_0002b0cf:
                  FUN_000358a0(local_3c);
                  iVar11 = FUN_00028c80(local_3c);
                  if (local_48[iVar11] != '=') {
                    iVar11 = dcgettext(0,unaff_EBP + 0x3457a,5);
                    goto LAB_0002b07a;
                  }
                  uVar13 = FUN_00035970(local_3c);
                  iVar11 = FUN_000254b0(*(undefined4 *)(iVar8 + 0x14),uVar13);
                  uVar13 = local_3c[0];
                  if (iVar11 == 0) {
                    uVar10 = *(undefined4 *)(iVar8 + 0x18);
                    uVar12 = dcgettext(0,unaff_EBP + 0x3459a,5);
                    FUN_0002bd60(uVar12,uVar13,uVar10);
                    FUN_000358a0(local_3c);
                    uVar9 = FUN_00029a00();
                    bVar4 = true;
                    goto LAB_0002aebd;
                  }
                  if (*(int *)(iVar11 + 0x20) != 0) {
                    uVar13 = *(undefined4 *)(iVar8 + 0x18);
                    uVar10 = *(undefined4 *)(iVar11 + 4);
                    uVar12 = dcgettext(0,unaff_EBP + 0x345ce,5);
                    FUN_0002bc80(uVar12,uVar10,uVar13);
                    FUN_000358a0(iVar11 + 0x1c);
                  }
                  uVar9 = FUN_00029a00();
                  bVar4 = true;
                  iVar2 = *(int *)(&DAT_0005e002 + unaff_EBP);
                  local_58 = (local_58 + 1) - (uint)(*(int *)(iVar11 + 0x20) == 0);
                  goto joined_r0x0002b16d;
                }
              }
              break;
            }
            if (*(int *)(&DAT_0005e006 + unaff_EBP) != 0) break;
            if (*(int *)(&DAT_0005e002 + unaff_EBP) != 0) {
              if ((bVar1 & 0xfd) == 0x3c) {
                if (uVar16 < local_44) goto LAB_0002b0c6;
                break;
              }
              if (bVar1 == 0x27) break;
            }
            if (bVar1 == 0x3d) {
              if (uVar16 < local_44) goto LAB_0002b0cf;
              break;
            }
            uVar16 = uVar16 + 1;
          } while (uVar16 != local_44);
          if (bVar4) {
            iVar11 = dcgettext(0,unaff_EBP + 0x3460e,5);
LAB_0002b07a:
            if (iVar11 == 0) break;
            if (*(int *)(&DAT_0005e002 + unaff_EBP) != 0) goto LAB_0002af93;
LAB_0002b090:
            FUN_000357d0(local_3c);
            goto LAB_0002afd9;
          }
          if (puVar18 == (undefined4 *)0x0) {
            if (*(int *)(&DAT_0005e002 + unaff_EBP) == 0) {
              iVar11 = dcgettext(0,unaff_EBP + 0x34312,5);
              if (iVar11 != 0) goto LAB_0002b090;
              piVar17 = *(int **)(iVar8 + 0x10);
              if (piVar17 == (int *)0x0) goto LAB_0002af6d;
              goto LAB_0002aef9;
            }
            puVar18 = (undefined4 *)FUN_00028ba0();
            iVar11 = -1;
            puVar14 = *(undefined4 **)(iVar8 + 0x10);
            if (*(undefined4 **)(iVar8 + 0x10) == (undefined4 *)0x0) {
              iVar11 = 0;
              puVar15 = (undefined4 *)(iVar8 + 0x10);
            }
            else {
              do {
                puVar15 = puVar14;
                if (iVar11 <= (int)puVar15[10]) {
                  iVar11 = puVar15[10] + 1;
                }
                puVar14 = (undefined4 *)*puVar15;
              } while ((undefined4 *)*puVar15 != (undefined4 *)0x0);
              if (iVar11 == -1) {
                iVar11 = 0;
              }
            }
            *puVar15 = puVar18;
            puVar18[10] = iVar11;
          }
          if (puVar18[0xb] == 2) {
            FUN_00035930(puVar18 + 7,local_48 + uVar9,local_44 - uVar9);
            uVar9 = local_44;
          }
          else {
            uVar9 = FUN_00029a00();
          }
          local_58 = (local_58 + 1) - (uint)(puVar18[8] == 0);
          do {
            puVar18 = (undefined4 *)*puVar18;
            if (puVar18 == (undefined4 *)0x0) break;
          } while ((int)puVar18[10] < 0);
LAB_0002aebd:
          iVar2 = *(int *)(&DAT_0005e002 + unaff_EBP);
joined_r0x0002b16d:
          if (iVar2 != 0) goto LAB_0002aecb;
          uVar9 = FUN_000359c0(uVar9,&local_48);
          if (local_44 <= uVar9) break;
        } while( true );
      }
      piVar17 = *(int **)(iVar8 + 0x10);
      if (piVar17 != (int *)0x0) goto LAB_0002aef9;
      goto LAB_0002af58;
    }
  }
  return 0;
LAB_0002aecb:
  cVar7 = local_48[uVar9];
  if (cVar7 == ',') {
    uVar9 = uVar9 + 1;
    cVar7 = local_48[uVar9];
  }
  if ((cVar7 == ' ') || (cVar7 == '\t')) goto LAB_0002aeea;
  goto LAB_0002ae00;
LAB_0002aeea:
  piVar17 = *(int **)(iVar8 + 0x10);
  if (piVar17 != (int *)0x0) {
LAB_0002aef9:
    do {
      while ((piVar17[0xb] != 1 || (piVar17[8] != 0))) {
        piVar17 = (int *)*piVar17;
        if (piVar17 == (int *)0x0) goto LAB_0002af58;
      }
      iVar11 = piVar17[1];
      uVar13 = *(undefined4 *)(iVar8 + 0x18);
      uVar10 = dcgettext(0,unaff_EBP + 0x3463a,5);
      FUN_0002bd60(uVar10,iVar11,uVar13);
      piVar17 = (int *)*piVar17;
    } while (piVar17 != (int *)0x0);
LAB_0002af58:
    if (*(int *)(&DAT_0005e002 + unaff_EBP) == 0) goto LAB_0002af6d;
  }
  FUN_000358a0(local_3c);
  iVar11 = unaff_EBP + 0x342bc;
  if (*(int *)(&DAT_0005dffe + unaff_EBP) == 0) {
    iVar11 = unaff_EBP + 0x342bd;
  }
  FUN_000358e0(local_3c,iVar11);
  uVar13 = FUN_00035970(local_3c);
  iVar11 = FUN_000254b0(*(undefined4 *)(iVar8 + 0x14),uVar13);
  sprintf(local_30,(char *)(FUN_000357f0 + unaff_EBP + 4),local_58);
  FUN_000358e0(iVar11 + 0x1c,local_30);
LAB_0002af6d:
  iVar11 = FUN_00028f30(*(undefined4 *)(iVar8 + 0x14),iVar8);
  if (*(int *)(&DAT_0005e002 + unaff_EBP) != 0) {
LAB_0002af93:
    puVar14 = (undefined4 *)(iVar8 + 0x10);
    puVar18 = *(undefined4 **)(iVar8 + 0x10);
    while (puVar15 = puVar14, puVar18 != (undefined4 *)0x0) {
      piVar17 = puVar18 + 2;
      puVar3 = (undefined4 *)*puVar18;
      puVar14 = puVar18;
      puVar18 = puVar3;
      if (*piVar17 == 0) {
        FUN_00028bf0();
        *puVar15 = puVar3;
        puVar14 = puVar15;
      }
    }
  }
  FUN_000357d0(local_3c);
  if (iVar11 == 0) {
    *(int *)(&DAT_0005dff6 + unaff_EBP) = *(int *)(&DAT_0005dff6 + unaff_EBP) + 1;
  }
LAB_0002afd9:
  *param_3 = iVar11;
  FUN_000357d0(&local_48);
  if (param_4 == (int *)0x0) {
    return 1;
  }
  *param_4 = iVar8;
  return 1;
}


PUSH EBP
CALL 0x0001fe10
ADD EBP,0x553fa
PUSH EDI
PUSH ESI
PUSH EBX
SUB ESP,0x6c
MOV ESI,dword ptr [ESP + 0x80]
LEA EDX,[EBP + 0x3c0]
MOVZX ECX,byte ptr [ESI]
TEST byte ptr [EDX + ECX*0x1],0x2
JNZ 0x0002ac48
MOV EAX,dword ptr [EBP + 0x8c08]
TEST EAX,EAX
JZ 0x0002ac37
CMP CL,0x2e
JZ 0x0002ac48
XOR EAX,EAX
ADD ESP,0x6c
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOVZX EAX,byte ptr [ESI + 0x1]
LEA EDI,[ESI + 0x1]
MOVZX EAX,byte ptr [EDX + EAX*0x1]
TEST AL,0x1
JZ 0x0002ac6e
LEA ESI,[ESI]
NOP
ADD EDI,0x1
MOVZX EAX,byte ptr [EDI]
MOVZX EAX,byte ptr [EDX + EAX*0x1]
TEST AL,0x1
JNZ 0x0002ac60
AND EAX,0x4
MOV EBX,EBP
CMP AL,0x1
SBB EDI,-0x1
SUB ESP,0xc
MOV EDX,EDI
SUB EDX,ESI
LEA EAX,[EDX + 0x1]
MOV dword ptr [ESP + 0x18],EDX
PUSH EAX
CALL 0x00014790
MOV EDX,dword ptr [ESP + 0x1c]
ADD ESP,0xc
MOV byte ptr [EAX + EDX*0x1],0x0
PUSH EDX
PUSH ESI
PUSH EAX
CALL 0x000140f0
ADD ESP,0x10
MOV ECX,dword ptr [EBP + 0xffffffd0]
MOV ESI,EAX
MOVZX EAX,byte ptr [EAX]
MOV EDX,ESI
TEST AL,AL
JZ 0x0002acc9
LEA ESI,[ESI]
NOP
MOVZX EAX,byte ptr [ECX + EAX*0x1]
ADD EDX,0x1
MOV byte ptr [EDX + -0x1],AL
MOVZX EAX,byte ptr [EDX]
TEST AL,AL
JNZ 0x0002acb8
LEA EAX,[EBP + 0x9940]
SUB ESP,0x8
MOV EBX,EBP
PUSH ESI
PUSH dword ptr [EAX]
CALL 0x000254b0
MOV dword ptr [ESP],ESI
MOV dword ptr [ESP + 0x38],EAX
CALL 0x00014780
ADD ESP,0x10
MOV EAX,dword ptr [ESP + 0x28]
TEST EAX,EAX
JZ 0x0002ac37
SUB ESP,0xc
LEA EAX,[ESP + 0x40]
MOV dword ptr [ESP + 0x24],EAX
PUSH EAX
CALL 0x00035790
MOVSX EAX,byte ptr [EDI]
ADD ESP,0x10
CMP AL,0xd
JA 0x0002ad1c
MOV EDX,0x2401
BT EDX,EAX
JC 0x0002ad49
MOV ESI,0x2401
LEA ESI,[ESI]
SUB ESP,0x8
ADD EDI,0x1
MOV EBX,EBP
PUSH EAX
PUSH dword ptr [ESP + 0x24]
CALL 0x000358b0
MOVSX EAX,byte ptr [EDI]
ADD ESP,0x10
CMP AL,0xd
JA 0x0002ad28
BT ESI,EAX
JNC 0x0002ad28
SUB ESP,0xc
MOV EBX,EBP
PUSH dword ptr [ESP + 0x90]
CALL 0x00035790
POP ESI
LEA EAX,[ESP + 0x4c]
MOV dword ptr [ESP + 0x38],EAX
PUSH EAX
CALL 0x00035790
MOV EAX,dword ptr [ESP + 0x38]
ADD ESP,0x10
MOV ESI,dword ptr [EAX + 0x10]
TEST ESI,ESI
JZ 0x0002b240
LEA ESI,[ESI]
NOP
SUB ESP,0xc
LEA EAX,[ESI + 0x1c]
MOV EBX,EBP
PUSH EAX
CALL 0x000358a0
MOV ESI,dword ptr [ESI]
ADD ESP,0x10
TEST ESI,ESI
JNZ 0x0002ad80
MOV EAX,dword ptr [ESP + 0x28]
MOV ESI,dword ptr [EAX + 0x10]
TEST ESI,ESI
JNZ 0x0002adba
JMP 0x0002b240
MOV ESI,dword ptr [ESI]
TEST ESI,ESI
JZ 0x0002b240
MOV ECX,dword ptr [ESI + 0x28]
TEST ECX,ECX
JS 0x0002adb0
MOV EDX,dword ptr [EBP + 0x8c08]
XOR EAX,EAX
TEST EDX,EDX
JZ 0x0002add9
MOV EAX,dword ptr [ESP + 0x38]
TEST EAX,EAX
JNZ 0x0002b260
SUB ESP,0x8
MOV EBX,EBP
MOV EDI,ESI
PUSH dword ptr [ESP + 0x20]
PUSH EAX
CALL 0x00035980
ADD ESP,0x10
MOV dword ptr [ESP + 0x24],0x0
MOV ESI,EAX
MOV dword ptr [ESP + 0x20],0x0
NOP
MOV EAX,dword ptr [ESP + 0x38]
MOV dword ptr [ESP + 0xc],EAX
CMP EAX,ESI
JBE 0x0002b19c
MOV EAX,dword ptr [ESP + 0x34]
MOV EBX,ESI
MOV dword ptr [ESP + 0x1c],EAX
MOV EAX,dword ptr [EBP + 0x8c0c]
MOV dword ptr [ESP + 0x10],EAX
MOV EAX,dword ptr [EBP + 0x8c08]
MOV dword ptr [ESP + 0x14],EAX
NOP
MOV EAX,dword ptr [ESP + 0x1c]
MOVZX EDX,byte ptr [EAX + EBX*0x1]
MOV EAX,0x1
LEA ECX,[EDX + -0x20]
CMP CL,0x1b
JA 0x0002ae51
MOV EAX,0x8001305
SHR EAX,CL
NOT EAX
AND EAX,0x1
CMP DL,0x9
JZ 0x0002b0b0
TEST AL,AL
JZ 0x0002b0b0
MOV EAX,dword ptr [ESP + 0x10]
TEST EAX,EAX
JZ 0x0002b020
MOV EAX,dword ptr [ESP + 0x20]
TEST EAX,EAX
JNZ 0x0002b060
TEST EDI,EDI
JZ 0x0002b1d8
CMP dword ptr [EDI + 0x2c],0x2
LEA ECX,[EDI + 0x1c]
JZ 0x0002b1b0
MOV EDX,dword ptr [ESP + 0x18]
MOV EAX,ESI
CALL 0x00029a00
MOV ESI,EAX
CMP dword ptr [EDI + 0x20],0x1
SBB dword ptr [ESP + 0x24],-0x1
JMP 0x0002aeb7
MOV EAX,dword ptr [EDI + 0x28]
TEST EAX,EAX
JNS 0x0002aebd
MOV EDI,dword ptr [EDI]
TEST EDI,EDI
JNZ 0x0002aeb0
MOV EAX,dword ptr [EBP + 0x8c08]
TEST EAX,EAX
JZ 0x0002b178
MOV EDX,dword ptr [ESP + 0x34]
MOVZX EAX,byte ptr [EDX + ESI*0x1]
CMP AL,0x2c
JNZ 0x0002aede
ADD ESI,0x1
MOVZX EAX,byte ptr [EDX + ESI*0x1]
CMP AL,0x20
JZ 0x0002aeea
CMP AL,0x9
JNZ 0x0002ae00
MOV EAX,dword ptr [ESP + 0x28]
MOV ESI,dword ptr [EAX + 0x10]
TEST ESI,ESI
JZ 0x0002b364
LEA EDI,[EBP + 0xfffdf240]
MOV dword ptr [ESP + 0xc],EDI
JMP 0x0002af0e
MOV ESI,dword ptr [ESI]
TEST ESI,ESI
JZ 0x0002af58
CMP dword ptr [ESI + 0x2c],0x1
JNZ 0x0002af08
MOV EDI,dword ptr [ESI + 0x20]
TEST EDI,EDI
JNZ 0x0002af08
MOV EAX,dword ptr [ESP + 0x28]
SUB ESP,0x4
MOV EDI,dword ptr [ESI + 0x4]
MOV EBX,EBP
MOV EDX,dword ptr [EAX + 0x18]
MOV dword ptr [ESP + 0x14],EDX
PUSH 0x5
PUSH dword ptr [ESP + 0x14]
PUSH 0x0
CALL 0x000141a0
ADD ESP,0xc
MOV EDX,dword ptr [ESP + 0x14]
PUSH EDX
PUSH EDI
PUSH EAX
CALL 0x0002bd60
MOV ESI,dword ptr [ESI]
ADD ESP,0x10
TEST ESI,ESI
JNZ 0x0002af0e
LEA ESI,[ESI]
NOP
MOV EBX,dword ptr [EBP + 0x8c08]
TEST EBX,EBX
JNZ 0x0002b364
MOV EAX,dword ptr [ESP + 0x28]
MOV ECX,dword ptr [EAX + 0x10]
SUB ESP,0x8
MOV EAX,dword ptr [ESP + 0x30]
PUSH EAX
PUSH dword ptr [EAX + 0x14]
MOV EDX,dword ptr [ESP + 0x94]
CALL 0x00028f30
MOV EBX,dword ptr [EBP + 0x8c08]
ADD ESP,0x10
MOV ESI,EAX
TEST EBX,EBX
JZ 0x0002afbd
MOV EAX,dword ptr [ESP + 0x28]
LEA EDI,[EAX + 0x10]
MOV EAX,dword ptr [EAX + 0x10]
TEST EAX,EAX
JZ 0x0002afbd
LEA ESI,[ESI]
MOV ECX,dword ptr [EAX + 0x8]
MOV EBX,dword ptr [EAX]
TEST ECX,ECX
JZ 0x0002b2f0
MOV EDI,EAX
MOV EAX,EBX
TEST EAX,EAX
JNZ 0x0002afa8
SUB ESP,0xc
MOV EBX,EBP
PUSH dword ptr [ESP + 0x38]
CALL 0x000357d0
ADD ESP,0x10
TEST ESI,ESI
JNZ 0x0002afd9
ADD dword ptr [EBP + 0x8bfc],0x1
MOV EAX,dword ptr [ESP + 0x88]
SUB ESP,0xc
MOV EBX,EBP
MOV dword ptr [EAX],ESI
PUSH dword ptr [ESP + 0x24]
CALL 0x000357d0
ADD ESP,0x10
MOV EAX,0x1
MOV EDX,dword ptr [ESP + 0x8c]
TEST EDX,EDX
JZ 0x0002ac39
MOV EBX,dword ptr [ESP + 0x28]
MOV ECX,dword ptr [ESP + 0x8c]
MOV dword ptr [ECX],EBX
ADD ESP,0x6c
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV EAX,dword ptr [ESP + 0x14]
TEST EAX,EAX
JZ 0x0002b03e
MOV EAX,EDX
AND EAX,0xfffffffd
CMP AL,0x3c
JZ 0x0002b2d8
CMP DL,0x27
JZ 0x0002ae6e
CMP DL,0x3d
JZ 0x0002b228
ADD EBX,0x1
CMP EBX,dword ptr [ESP + 0xc]
JNZ 0x0002ae30
MOV EAX,dword ptr [ESP + 0x20]
TEST EAX,EAX
JZ 0x0002ae7a
SUB ESP,0x4
LEA EAX,[EBP + 0xfffdf214]
MOV EBX,EBP
PUSH 0x5
PUSH EAX
PUSH 0x0
CALL 0x000141a0
ADD ESP,0x10
MOV ESI,EAX
TEST ESI,ESI
JZ 0x0002b19c
MOV EAX,dword ptr [EBP + 0x8c08]
TEST EAX,EAX
JNZ 0x0002af93
SUB ESP,0xc
MOV EBX,EBP
PUSH dword ptr [ESP + 0x38]
CALL 0x000357d0
ADD ESP,0x10
JMP 0x0002afd9
CMP dword ptr [ESP + 0xc],EBX
JBE 0x0002ae6e
MOV EAX,dword ptr [ESP + 0x10]
TEST EAX,EAX
JNZ 0x0002ae6e
CMP DL,0x3d
JNZ 0x0002ae6e
SUB ESP,0xc
MOV EBX,EBP
PUSH dword ptr [ESP + 0x38]
CALL 0x000358a0
LEA ECX,[ESP + 0x48]
POP EAX
PUSH dword ptr [ESP + 0x38]
MOV EDX,dword ptr [ESP + 0x28]
MOV EAX,ESI
CALL 0x00028c80
ADD ESP,0x10
MOV ESI,EAX
MOV EAX,dword ptr [ESP + 0x34]
CMP byte ptr [EAX + ESI*0x1],0x3d
JNZ 0x0002b469
SUB ESP,0xc
ADD ESI,0x1
PUSH dword ptr [ESP + 0x38]
CALL 0x00035970
POP EDX
POP ECX
PUSH EAX
MOV EAX,dword ptr [ESP + 0x34]
PUSH dword ptr [EAX + 0x14]
CALL 0x000254b0
MOV dword ptr [ESP + 0x1c],EAX
ADD ESP,0x10
TEST EAX,EAX
JZ 0x0002b300
MOV EAX,dword ptr [ESP + 0xc]
LEA ECX,[EAX + 0x1c]
MOV EAX,dword ptr [EAX + 0x20]
TEST EAX,EAX
JNZ 0x0002b278
MOV EDX,dword ptr [ESP + 0x18]
MOV EAX,ESI
CALL 0x00029a00
MOV dword ptr [ESP + 0x20],0x1
MOV ESI,EAX
MOV EAX,dword ptr [ESP + 0xc]
CMP dword ptr [EAX + 0x20],0x1
MOV EAX,dword ptr [EBP + 0x8c08]
SBB dword ptr [ESP + 0x24],-0x1
TEST EAX,EAX
JNZ 0x0002aecb
LEA ESI,[ESI]
NOP
SUB ESP,0x8
MOV EBX,EBP
PUSH dword ptr [ESP + 0x20]
PUSH ESI
CALL 0x000359c0
ADD ESP,0x10
MOV ESI,EAX
MOV EAX,dword ptr [ESP + 0x38]
MOV dword ptr [ESP + 0xc],EAX
CMP EAX,ESI
JA 0x0002ae10
MOV EAX,dword ptr [ESP + 0x28]
MOV ESI,dword ptr [EAX + 0x10]
TEST ESI,ESI
JNZ 0x0002aef9
JMP 0x0002af58
SUB ESP,0x4
MOV EBX,EBP
MOV EAX,dword ptr [ESP + 0x3c]
SUB EAX,ESI
PUSH EAX
MOV EAX,dword ptr [ESP + 0x3c]
ADD EAX,ESI
PUSH EAX
PUSH ECX
CALL 0x00035930
MOV ESI,dword ptr [ESP + 0x48]
ADD ESP,0x10
JMP 0x0002ae9c
MOV EAX,dword ptr [ESP + 0x14]
TEST EAX,EAX
JZ 0x0002b3e0
CALL 0x00028ba0
MOV EDX,0xffffffff
MOV EDI,EAX
MOV EAX,dword ptr [ESP + 0x28]
MOV EAX,dword ptr [EAX + 0x10]
TEST EAX,EAX
JZ 0x0002b250
LEA ESI,[ESI]
NOP
MOV ECX,dword ptr [EAX + 0x28]
LEA EBX,[ECX + 0x1]
CMP ECX,EDX
MOV ECX,EAX
MOV EAX,dword ptr [EAX]
CMOVGE EDX,EBX
TEST EAX,EAX
JNZ 0x0002b200
CMP EDX,-0x1
CMOVZ EDX,EAX
MOV dword ptr [ECX],EDI
MOV dword ptr [EDI + 0x28],EDX
JMP 0x0002ae82
CMP dword ptr [ESP + 0xc],EBX
JA 0x0002b0cf
JMP 0x0002ae6e
XOR ESI,ESI
JMP 0x0002adc1
MOV EAX,dword ptr [ESP + 0x28]
XOR EDX,EDX
LEA ECX,[EAX + 0x10]
JMP 0x0002b219
MOV EDX,dword ptr [ESP + 0x34]
CMP byte ptr [EDX],0x2e
JZ 0x0002b420
XOR EAX,EAX
JMP 0x0002add9
MOV EAX,dword ptr [ESP + 0x28]
MOV dword ptr [ESP + 0x1c],ECX
SUB ESP,0x4
MOV EDX,dword ptr [EAX + 0x18]
MOV EAX,dword ptr [ESP + 0x10]
MOV EAX,dword ptr [EAX + 0x4]
MOV dword ptr [ESP + 0x18],EDX
MOV dword ptr [ESP + 0x14],EAX
LEA EAX,[EBP + 0xfffdf1d4]
PUSH 0x5
PUSH EAX
PUSH 0x0
CALL 0x000141a0
ADD ESP,0xc
MOV EDX,dword ptr [ESP + 0x18]
PUSH EDX
PUSH dword ptr [ESP + 0x18]
PUSH EAX
CALL 0x0002bc80
MOV ECX,dword ptr [ESP + 0x2c]
MOV dword ptr [ESP],ECX
MOV dword ptr [ESP + 0x20],ECX
CALL 0x000358a0
ADD ESP,0x10
MOV ECX,dword ptr [ESP + 0x10]
JMP 0x0002b143
CMP dword ptr [ESP + 0xc],EBX
JA 0x0002b0c6
JMP 0x0002ae6e
CALL 0x00028bf0
MOV dword ptr [EDI],EBX
MOV EAX,EBX
JMP 0x0002afb9
MOV EAX,dword ptr [ESP + 0x28]
MOV EDX,dword ptr [ESP + 0x40]
SUB ESP,0x4
MOV ECX,dword ptr [EAX + 0x18]
MOV dword ptr [ESP + 0x10],EDX
LEA EAX,[EBP + 0xfffdf1a0]
MOV dword ptr [ESP + 0x14],ECX
PUSH 0x5
PUSH EAX
PUSH 0x0
CALL 0x000141a0
ADD ESP,0xc
MOV ECX,dword ptr [ESP + 0x14]
PUSH ECX
MOV EDX,dword ptr [ESP + 0x14]
PUSH EDX
PUSH EAX
CALL 0x0002bd60
POP EAX
PUSH dword ptr [ESP + 0x38]
CALL 0x000358a0
MOV ECX,dword ptr [ESP + 0x3c]
MOV EDX,dword ptr [ESP + 0x28]
MOV EAX,ESI
CALL 0x00029a00
ADD ESP,0x10
MOV ESI,EAX
MOV dword ptr [ESP + 0x20],0x1
JMP 0x0002aebd
SUB ESP,0xc
MOV EBX,EBP
PUSH dword ptr [ESP + 0x38]
CALL 0x000358a0
MOV ECX,dword ptr [EBP + 0x8c04]
ADD ESP,0x10
LEA EAX,[EBP + 0xfffdeec2]
TEST ECX,ECX
JNZ 0x0002b38b
LEA EAX,[EBP + 0xfffdeec3]
SUB ESP,0x8
MOV EBX,EBP
PUSH EAX
MOV EDI,dword ptr [ESP + 0x38]
PUSH EDI
CALL 0x000358e0
MOV dword ptr [ESP],EDI
CALL 0x00035970
POP ESI
POP EDI
PUSH EAX
MOV EAX,dword ptr [ESP + 0x34]
PUSH dword ptr [EAX + 0x14]
CALL 0x000254b0
ADD ESP,0xc
MOV ESI,EAX
LEA EAX,[EBP + 0xfffe03fa]
PUSH dword ptr [ESP + 0x28]
PUSH EAX
ADD ESI,0x1c
LEA EDI,[ESP + 0x58]
PUSH EDI
CALL 0x00014670
POP EAX
POP EDX
PUSH EDI
PUSH ESI
CALL 0x000358e0
ADD ESP,0x10
JMP 0x0002af66
SUB ESP,0x4
LEA EAX,[EBP + 0xfffdef18]
MOV EBX,EBP
PUSH 0x5
PUSH EAX
PUSH 0x0
CALL 0x000141a0
ADD ESP,0x10
MOV ESI,EAX
TEST EAX,EAX
JNZ 0x0002b090
MOV EAX,dword ptr [ESP + 0x28]
MOV ECX,dword ptr [EAX + 0x10]
MOV ESI,ECX
TEST ECX,ECX
JNZ 0x0002aef9
JMP 0x0002af6d
CMP EAX,0x1
JBE 0x0002b45f
MOVZX EAX,byte ptr [EDX + 0x1]
CMP AL,0x20
JZ 0x0002b45f
CMP AL,0x9
JZ 0x0002b45f
CALL 0x00028ba0
MOV ECX,dword ptr [ESP + 0x28]
MOV dword ptr [EAX + 0x28],0xffffffff
MOV EDX,dword ptr [ECX + 0x10]
MOV dword ptr [EAX],EDX
MOV EDX,dword ptr [ESP + 0x18]
MOV dword ptr [ECX + 0x10],EAX
LEA ECX,[EAX + 0x1c]
MOV EAX,0x1
CALL 0x00029a00
JMP 0x0002add9
MOV EAX,0x1
JMP 0x0002add9
SUB ESP,0x4
LEA EAX,[EBP + 0xfffdf180]
PUSH 0x5
PUSH EAX
PUSH 0x0
CALL 0x000141a0
ADD ESP,0x10
MOV ESI,EAX
JMP 0x0002b07a
(translation_unit "/* WARNING: Type propagation algorithm not settling */\n\nundefined4 FUN_0002ac00(byte *param_1,undefined4 param_2,int *param_3,int *param_4)\n\n{\n  byte bVar1;\n  int iVar2;\n  undefined4 *puVar3;\n  bool bVar4;\n  byte *pbVar5;\n  byte bVar6;\n  char cVar7;\n  void *__dest;\n  byte *__ptr;\n  int iVar8;\n  uint uVar9;\n  undefined4 uVar10;\n  int iVar11;\n  undefined4 uVar12;\n  undefined4 uVar13;\n  undefined4 *puVar14;\n  undefined4 *puVar15;\n  size_t __n;\n  uint uVar16;\n  int unaff_EBP;\n  int *piVar17;\n  undefined4 *puVar18;\n  byte *pbVar19;\n  int local_58;\n  char *local_48;\n  uint local_44;\n  undefined4 local_3c [3];\n  char local_30 [32];\n  \n  FUN_0001fe10();\n  iVar8 = unaff_EBP + 0x557ba;\n  if (((*(byte *)(iVar8 + (uint)*param_1) & 2) != 0) ||\n     ((*(int *)(&DAT_0005e002 + unaff_EBP) != 0 && (*param_1 == 0x2e)))) {\n    pbVar19 = param_1 + 1;\n    bVar1 = *(byte *)(iVar8 + (uint)param_1[1]);\n    while ((bVar1 & 1) != 0) {\n      pbVar19 = pbVar19 + 1;\n      bVar1 = *(byte *)(iVar8 + (uint)*pbVar19);\n    }\n    pbVar19 = pbVar19 + ((bVar1 & 4) != 0);\n    __n = (int)pbVar19 - (int)param_1;\n    __dest = (void *)xmalloc(__n + 1);\n    *(undefined1 *)((int)__dest + __n) = 0;\n    __ptr = (byte *)memcpy(__dest,param_1,__n);\n    iVar8 = *(int *)(unaff_EBP + 0x553ca);\n    bVar1 = *__ptr;\n    pbVar5 = __ptr;\n    while (bVar1 != 0) {\n      *pbVar5 = *(byte *)(iVar8 + (uint)bVar1);\n      bVar1 = pbVar5[1];\n      pbVar5 = pbVar5 + 1;\n    }\n    iVar8 = FUN_000254b0(*(undefined4 *)("%S.000%z" + unaff_EBP),__ptr);\n    free(__ptr);\n    if (iVar8 != 0) {\n      FUN_00035790(&local_48);\n      bVar1 = *pbVar19;\n      while ((0xd < bVar1 || ((0x2401U >> ((int)(char)bVar1 & 0x1fU) & 1) == 0))) {\n        pbVar19 = pbVar19 + 1;\n        FUN_000358b0(&local_48,(int)(char)bVar1);\n        bVar1 = *pbVar19;\n      }\n      FUN_00035790(param_2);\n      FUN_00035790(local_3c);\n      piVar17 = *(int **)(iVar8 + 0x10);\n      if (piVar17 != (int *)0x0) {\n        do {\n          FUN_000358a0(piVar17 + 7);\n          piVar17 = (int *)*piVar17;\n        } while (piVar17 != (int *)0x0);\n        for (puVar18 = *(undefined4 **)(iVar8 + 0x10); puVar18 != (undefined4 *)0x0;\n            puVar18 = (undefined4 *)*puVar18) {\n          if (-1 < (int)puVar18[10]) goto LAB_0002adc1;\n        }\n      }\n      puVar18 = (undefined4 *)0x0;\nLAB_0002adc1:\n      uVar9 = 0;\n      if ((*(int *)(&DAT_0005e002 + unaff_EBP) != 0) && (uVar9 = local_44, local_44 != 0)) {\n        if (*local_48 == '.') {\n          if (((local_44 < 2) || (local_48[1] == ' ')) || (local_48[1] == '\t')) {\n            uVar9 = 1;\n          }\n          else {\n            puVar14 = (undefined4 *)FUN_00028ba0();\n            puVar14[10] = 0xffffffff;\n            *puVar14 = *(undefined4 *)(iVar8 + 0x10);\n            *(undefined4 **)(iVar8 + 0x10) = puVar14;\n            uVar9 = FUN_00029a00();\n          }\n        }\n        else {\n          uVar9 = 0;\n        }\n      }\n      uVar9 = FUN_00035980(uVar9,&local_48);\n      local_58 = 0;\n      bVar4 = false;\nLAB_0002ae00:\n      if (uVar9 < local_44) {\n        do {\n          uVar16 = uVar9;\n          do {\n            bVar1 = local_48[uVar16];\n            bVar6 = 1;\n            if ((byte)(bVar1 - 0x20) < 0x1c) {\n              bVar6 = ~(byte)(0x8001305 >> (bVar1 - 0x20 & 0x1f)) & 1;\n            }\n            if ((bVar1 == 9) || (bVar6 == 0)) {\n              if ((uVar16 < local_44) && (*(int *)(&DAT_0005e006 + unaff_EBP) == 0)) {\nLAB_0002b0c6:\n                if (bVar1 == 0x3d) {\nLAB_0002b0cf:\n                  FUN_000358a0(local_3c);\n                  iVar11 = FUN_00028c80(local_3c);\n                  if (local_48[iVar11] != '=') {\n                    iVar11 = dcgettext(0,unaff_EBP + 0x3457a,5);\n                    goto LAB_0002b07a;\n                  }\n                  uVar13 = FUN_00035970(local_3c);\n                  iVar11 = FUN_000254b0(*(undefined4 *)(iVar8 + 0x14),uVar13);\n                  uVar13 = local_3c[0];\n                  if (iVar11 == 0) {\n                    uVar10 = *(undefined4 *)(iVar8 + 0x18);\n                    uVar12 = dcgettext(0,unaff_EBP + 0x3459a,5);\n                    FUN_0002bd60(uVar12,uVar13,uVar10);\n                    FUN_000358a0(local_3c);\n                    uVar9 = FUN_00029a00();\n                    bVar4 = true;\n                    goto LAB_0002aebd;\n                  }\n                  if (*(int *)(iVar11 + 0x20) != 0) {\n                    uVar13 = *(undefined4 *)(iVar8 + 0x18);\n                    uVar10 = *(undefined4 *)(iVar11 + 4);\n                    uVar12 = dcgettext(0,unaff_EBP + 0x345ce,5);\n                    FUN_0002bc80(uVar12,uVar10,uVar13);\n                    FUN_000358a0(iVar11 + 0x1c);\n                  }\n                  uVar9 = FUN_00029a00();\n                  bVar4 = true;\n                  iVar2 = *(int *)(&DAT_0005e002 + unaff_EBP);\n                  local_58 = (local_58 + 1) - (uint)(*(int *)(iVar11 + 0x20) == 0);\n                  goto joined_r0x0002b16d;\n                }\n              }\n              break;\n            }\n            if (*(int *)(&DAT_0005e006 + unaff_EBP) != 0) break;\n            if (*(int *)(&DAT_0005e002 + unaff_EBP) != 0) {\n              if ((bVar1 & 0xfd) == 0x3c) {\n                if (uVar16 < local_44) goto LAB_0002b0c6;\n                break;\n              }\n              if (bVar1 == 0x27) break;\n            }\n            if (bVar1 == 0x3d) {\n              if (uVar16 < local_44) goto LAB_0002b0cf;\n              break;\n            }\n            uVar16 = uVar16 + 1;\n          } while (uVar16 != local_44);\n          if (bVar4) {\n            iVar11 = dcgettext(0,unaff_EBP + 0x3460e,5);\nLAB_0002b07a:\n            if (iVar11 == 0) break;\n            if (*(int *)(&DAT_0005e002 + unaff_EBP) != 0) goto LAB_0002af93;\nLAB_0002b090:\n            FUN_000357d0(local_3c);\n            goto LAB_0002afd9;\n          }\n          if (puVar18 == (undefined4 *)0x0) {\n            if (*(int *)(&DAT_0005e002 + unaff_EBP) == 0) {\n              iVar11 = dcgettext(0,unaff_EBP + 0x34312,5);\n              if (iVar11 != 0) goto LAB_0002b090;\n              piVar17 = *(int **)(iVar8 + 0x10);\n              if (piVar17 == (int *)0x0) goto LAB_0002af6d;\n              goto LAB_0002aef9;\n            }\n            puVar18 = (undefined4 *)FUN_00028ba0();\n            iVar11 = -1;\n            puVar14 = *(undefined4 **)(iVar8 + 0x10);\n            if (*(undefined4 **)(iVar8 + 0x10) == (undefined4 *)0x0) {\n              iVar11 = 0;\n              puVar15 = (undefined4 *)(iVar8 + 0x10);\n            }\n            else {\n              do {\n                puVar15 = puVar14;\n                if (iVar11 <= (int)puVar15[10]) {\n                  iVar11 = puVar15[10] + 1;\n                }\n                puVar14 = (undefined4 *)*puVar15;\n              } while ((undefined4 *)*puVar15 != (undefined4 *)0x0);\n              if (iVar11 == -1) {\n                iVar11 = 0;\n              }\n            }\n            *puVar15 = puVar18;\n            puVar18[10] = iVar11;\n          }\n          if (puVar18[0xb] == 2) {\n            FUN_00035930(puVar18 + 7,local_48 + uVar9,local_44 - uVar9);\n            uVar9 = local_44;\n          }\n          else {\n            uVar9 = FUN_00029a00();\n          }\n          local_58 = (local_58 + 1) - (uint)(puVar18[8] == 0);\n          do {\n            puVar18 = (undefined4 *)*puVar18;\n            if (puVar18 == (undefined4 *)0x0) break;\n          } while ((int)puVar18[10] < 0);\nLAB_0002aebd:\n          iVar2 = *(int *)(&DAT_0005e002 + unaff_EBP);\njoined_r0x0002b16d:\n          if (iVar2 != 0) goto LAB_0002aecb;\n          uVar9 = FUN_000359c0(uVar9,&local_48);\n          if (local_44 <= uVar9) break;\n        } while( true );\n      }\n      piVar17 = *(int **)(iVar8 + 0x10);\n      if (piVar17 != (int *)0x0) goto LAB_0002aef9;\n      goto LAB_0002af58;\n    }\n  }\n  return 0;\nLAB_0002aecb:\n  cVar7 = local_48[uVar9];\n  if (cVar7 == ',') {\n    uVar9 = uVar9 + 1;\n    cVar7 = local_48[uVar9];\n  }\n  if ((cVar7 == ' ') || (cVar7 == '\t')) goto LAB_0002aeea;\n  goto LAB_0002ae00;\nLAB_0002aeea:\n  piVar17 = *(int **)(iVar8 + 0x10);\n  if (piVar17 != (int *)0x0) {\nLAB_0002aef9:\n    do {\n      while ((piVar17[0xb] != 1 || (piVar17[8] != 0))) {\n        piVar17 = (int *)*piVar17;\n        if (piVar17 == (int *)0x0) goto LAB_0002af58;\n      }\n      iVar11 = piVar17[1];\n      uVar13 = *(undefined4 *)(iVar8 + 0x18);\n      uVar10 = dcgettext(0,unaff_EBP + 0x3463a,5);\n      FUN_0002bd60(uVar10,iVar11,uVar13);\n      piVar17 = (int *)*piVar17;\n    } while (piVar17 != (int *)0x0);\nLAB_0002af58:\n    if (*(int *)(&DAT_0005e002 + unaff_EBP) == 0) goto LAB_0002af6d;\n  }\n  FUN_000358a0(local_3c);\n  iVar11 = unaff_EBP + 0x342bc;\n  if (*(int *)(&DAT_0005dffe + unaff_EBP) == 0) {\n    iVar11 = unaff_EBP + 0x342bd;\n  }\n  FUN_000358e0(local_3c,iVar11);\n  uVar13 = FUN_00035970(local_3c);\n  iVar11 = FUN_000254b0(*(undefined4 *)(iVar8 + 0x14),uVar13);\n  sprintf(local_30,(char *)(FUN_000357f0 + unaff_EBP + 4),local_58);\n  FUN_000358e0(iVar11 + 0x1c,local_30);\nLAB_0002af6d:\n  iVar11 = FUN_00028f30(*(undefined4 *)(iVar8 + 0x14),iVar8);\n  if (*(int *)(&DAT_0005e002 + unaff_EBP) != 0) {\nLAB_0002af93:\n    puVar14 = (undefined4 *)(iVar8 + 0x10);\n    puVar18 = *(undefined4 **)(iVar8 + 0x10);\n    while (puVar15 = puVar14, puVar18 != (undefined4 *)0x0) {\n      piVar17 = puVar18 + 2;\n      puVar3 = (undefined4 *)*puVar18;\n      puVar14 = puVar18;\n      puVar18 = puVar3;\n      if (*piVar17 == 0) {\n        FUN_00028bf0();\n        *puVar15 = puVar3;\n        puVar14 = puVar15;\n      }\n    }\n  }\n  FUN_000357d0(local_3c);\n  if (iVar11 == 0) {\n    *(int *)(&DAT_0005dff6 + unaff_EBP) = *(int *)(&DAT_0005dff6 + unaff_EBP) + 1;\n  }\nLAB_0002afd9:\n  *param_3 = iVar11;\n  FUN_000357d0(&local_48);\n  if (param_4 == (int *)0x0) {\n    return 1;\n  }\n  *param_4 = iVar8;\n  return 1;\n}\n\n" comment (function_definition "undefined4 FUN_0002ac00(byte *param_1,undefined4 param_2,int *param_3,int *param_4)\n\n{\n  byte bVar1;\n  int iVar2;\n  undefined4 *puVar3;\n  bool bVar4;\n  byte *pbVar5;\n  byte bVar6;\n  char cVar7;\n  void *__dest;\n  byte *__ptr;\n  int iVar8;\n  uint uVar9;\n  undefined4 uVar10;\n  int iVar11;\n  undefined4 uVar12;\n  undefined4 uVar13;\n  undefined4 *puVar14;\n  undefined4 *puVar15;\n  size_t __n;\n  uint uVar16;\n  int unaff_EBP;\n  int *piVar17;\n  undefined4 *puVar18;\n  byte *pbVar19;\n  int local_58;\n  char *local_48;\n  uint local_44;\n  undefined4 local_3c [3];\n  char local_30 [32];\n  \n  FUN_0001fe10();\n  iVar8 = unaff_EBP + 0x557ba;\n  if (((*(byte *)(iVar8 + (uint)*param_1) & 2) != 0) ||\n     ((*(int *)(&DAT_0005e002 + unaff_EBP) != 0 && (*param_1 == 0x2e)))) {\n    pbVar19 = param_1 + 1;\n    bVar1 = *(byte *)(iVar8 + (uint)param_1[1]);\n    while ((bVar1 & 1) != 0) {\n      pbVar19 = pbVar19 + 1;\n      bVar1 = *(byte *)(iVar8 + (uint)*pbVar19);\n    }\n    pbVar19 = pbVar19 + ((bVar1 & 4) != 0);\n    __n = (int)pbVar19 - (int)param_1;\n    __dest = (void *)xmalloc(__n + 1);\n    *(undefined1 *)((int)__dest + __n) = 0;\n    __ptr = (byte *)memcpy(__dest,param_1,__n);\n    iVar8 = *(int *)(unaff_EBP + 0x553ca);\n    bVar1 = *__ptr;\n    pbVar5 = __ptr;\n    while (bVar1 != 0) {\n      *pbVar5 = *(byte *)(iVar8 + (uint)bVar1);\n      bVar1 = pbVar5[1];\n      pbVar5 = pbVar5 + 1;\n    }\n    iVar8 = FUN_000254b0(*(undefined4 *)("%S.000%z" + unaff_EBP),__ptr);\n    free(__ptr);\n    if (iVar8 != 0) {\n      FUN_00035790(&local_48);\n      bVar1 = *pbVar19;\n      while ((0xd < bVar1 || ((0x2401U >> ((int)(char)bVar1 & 0x1fU) & 1) == 0))) {\n        pbVar19 = pbVar19 + 1;\n        FUN_000358b0(&local_48,(int)(char)bVar1);\n        bVar1 = *pbVar19;\n      }\n      FUN_00035790(param_2);\n      FUN_00035790(local_3c);\n      piVar17 = *(int **)(iVar8 + 0x10);\n      if (piVar17 != (int *)0x0) {\n        do {\n          FUN_000358a0(piVar17 + 7);\n          piVar17 = (int *)*piVar17;\n        } while (piVar17 != (int *)0x0);\n        for (puVar18 = *(undefined4 **)(iVar8 + 0x10); puVar18 != (undefined4 *)0x0;\n            puVar18 = (undefined4 *)*puVar18) {\n          if (-1 < (int)puVar18[10]) goto LAB_0002adc1;\n        }\n      }\n      puVar18 = (undefined4 *)0x0;\nLAB_0002adc1:\n      uVar9 = 0;\n      if ((*(int *)(&DAT_0005e002 + unaff_EBP) != 0) && (uVar9 = local_44, local_44 != 0)) {\n        if (*local_48 == '.') {\n          if (((local_44 < 2) || (local_48[1] == ' ')) || (local_48[1] == '\t')) {\n            uVar9 = 1;\n          }\n          else {\n            puVar14 = (undefined4 *)FUN_00028ba0();\n            puVar14[10] = 0xffffffff;\n            *puVar14 = *(undefined4 *)(iVar8 + 0x10);\n            *(undefined4 **)(iVar8 + 0x10) = puVar14;\n            uVar9 = FUN_00029a00();\n          }\n        }\n        else {\n          uVar9 = 0;\n        }\n      }\n      uVar9 = FUN_00035980(uVar9,&local_48);\n      local_58 = 0;\n      bVar4 = false;\nLAB_0002ae00:\n      if (uVar9 < local_44) {\n        do {\n          uVar16 = uVar9;\n          do {\n            bVar1 = local_48[uVar16];\n            bVar6 = 1;\n            if ((byte)(bVar1 - 0x20) < 0x1c) {\n              bVar6 = ~(byte)(0x8001305 >> (bVar1 - 0x20 & 0x1f)) & 1;\n            }\n            if ((bVar1 == 9) || (bVar6 == 0)) {\n              if ((uVar16 < local_44) && (*(int *)(&DAT_0005e006 + unaff_EBP) == 0)) {\nLAB_0002b0c6:\n                if (bVar1 == 0x3d) {\nLAB_0002b0cf:\n                  FUN_000358a0(local_3c);\n                  iVar11 = FUN_00028c80(local_3c);\n                  if (local_48[iVar11] != '=') {\n                    iVar11 = dcgettext(0,unaff_EBP + 0x3457a,5);\n                    goto LAB_0002b07a;\n                  }\n                  uVar13 = FUN_00035970(local_3c);\n                  iVar11 = FUN_000254b0(*(undefined4 *)(iVar8 + 0x14),uVar13);\n                  uVar13 = local_3c[0];\n                  if (iVar11 == 0) {\n                    uVar10 = *(undefined4 *)(iVar8 + 0x18);\n                    uVar12 = dcgettext(0,unaff_EBP + 0x3459a,5);\n                    FUN_0002bd60(uVar12,uVar13,uVar10);\n                    FUN_000358a0(local_3c);\n                    uVar9 = FUN_00029a00();\n                    bVar4 = true;\n                    goto LAB_0002aebd;\n                  }\n                  if (*(int *)(iVar11 + 0x20) != 0) {\n                    uVar13 = *(undefined4 *)(iVar8 + 0x18);\n                    uVar10 = *(undefined4 *)(iVar11 + 4);\n                    uVar12 = dcgettext(0,unaff_EBP + 0x345ce,5);\n                    FUN_0002bc80(uVar12,uVar10,uVar13);\n                    FUN_000358a0(iVar11 + 0x1c);\n                  }\n                  uVar9 = FUN_00029a00();\n                  bVar4 = true;\n                  iVar2 = *(int *)(&DAT_0005e002 + unaff_EBP);\n                  local_58 = (local_58 + 1) - (uint)(*(int *)(iVar11 + 0x20) == 0);\n                  goto joined_r0x0002b16d;\n                }\n              }\n              break;\n            }\n            if (*(int *)(&DAT_0005e006 + unaff_EBP) != 0) break;\n            if (*(int *)(&DAT_0005e002 + unaff_EBP) != 0) {\n              if ((bVar1 & 0xfd) == 0x3c) {\n                if (uVar16 < local_44) goto LAB_0002b0c6;\n                break;\n              }\n              if (bVar1 == 0x27) break;\n            }\n            if (bVar1 == 0x3d) {\n              if (uVar16 < local_44) goto LAB_0002b0cf;\n              break;\n            }\n            uVar16 = uVar16 + 1;\n          } while (uVar16 != local_44);\n          if (bVar4) {\n            iVar11 = dcgettext(0,unaff_EBP + 0x3460e,5);\nLAB_0002b07a:\n            if (iVar11 == 0) break;\n            if (*(int *)(&DAT_0005e002 + unaff_EBP) != 0) goto LAB_0002af93;\nLAB_0002b090:\n            FUN_000357d0(local_3c);\n            goto LAB_0002afd9;\n          }\n          if (puVar18 == (undefined4 *)0x0) {\n            if (*(int *)(&DAT_0005e002 + unaff_EBP) == 0) {\n              iVar11 = dcgettext(0,unaff_EBP + 0x34312,5);\n              if (iVar11 != 0) goto LAB_0002b090;\n              piVar17 = *(int **)(iVar8 + 0x10);\n              if (piVar17 == (int *)0x0) goto LAB_0002af6d;\n              goto LAB_0002aef9;\n            }\n            puVar18 = (undefined4 *)FUN_00028ba0();\n            iVar11 = -1;\n            puVar14 = *(undefined4 **)(iVar8 + 0x10);\n            if (*(undefined4 **)(iVar8 + 0x10) == (undefined4 *)0x0) {\n              iVar11 = 0;\n              puVar15 = (undefined4 *)(iVar8 + 0x10);\n            }\n            else {\n              do {\n                puVar15 = puVar14;\n                if (iVar11 <= (int)puVar15[10]) {\n                  iVar11 = puVar15[10] + 1;\n                }\n                puVar14 = (undefined4 *)*puVar15;\n              } while ((undefined4 *)*puVar15 != (undefined4 *)0x0);\n              if (iVar11 == -1) {\n                iVar11 = 0;\n              }\n            }\n            *puVar15 = puVar18;\n            puVar18[10] = iVar11;\n          }\n          if (puVar18[0xb] == 2) {\n            FUN_00035930(puVar18 + 7,local_48 + uVar9,local_44 - uVar9);\n            uVar9 = local_44;\n          }\n          else {\n            uVar9 = FUN_00029a00();\n          }\n          local_58 = (local_58 + 1) - (uint)(puVar18[8] == 0);\n          do {\n            puVar18 = (undefined4 *)*puVar18;\n            if (puVar18 == (undefined4 *)0x0) break;\n          } while ((int)puVar18[10] < 0);\nLAB_0002aebd:\n          iVar2 = *(int *)(&DAT_0005e002 + unaff_EBP);\njoined_r0x0002b16d:\n          if (iVar2 != 0) goto LAB_0002aecb;\n          uVar9 = FUN_000359c0(uVar9,&local_48);\n          if (local_44 <= uVar9) break;\n        } while( true );\n      }\n      piVar17 = *(int **)(iVar8 + 0x10);\n      if (piVar17 != (int *)0x0) goto LAB_0002aef9;\n      goto LAB_0002af58;\n    }\n  }\n  return 0;\nLAB_0002aecb:\n  cVar7 = local_48[uVar9];\n  if (cVar7 == ',') {\n    uVar9 = uVar9 + 1;\n    cVar7 = local_48[uVar9];\n  }\n  if ((cVar7 == ' ') || (cVar7 == '\t')) goto LAB_0002aeea;\n  goto LAB_0002ae00;\nLAB_0002aeea:\n  piVar17 = *(int **)(iVar8 + 0x10);\n  if (piVar17 != (int *)0x0) {\nLAB_0002aef9:\n    do {\n      while ((piVar17[0xb] != 1 || (piVar17[8] != 0))) {\n        piVar17 = (int *)*piVar17;\n        if (piVar17 == (int *)0x0) goto LAB_0002af58;\n      }\n      iVar11 = piVar17[1];\n      uVar13 = *(undefined4 *)(iVar8 + 0x18);\n      uVar10 = dcgettext(0,unaff_EBP + 0x3463a,5);\n      FUN_0002bd60(uVar10,iVar11,uVar13);\n      piVar17 = (int *)*piVar17;\n    } while (piVar17 != (int *)0x0);\nLAB_0002af58:\n    if (*(int *)(&DAT_0005e002 + unaff_EBP) == 0) goto LAB_0002af6d;\n  }\n  FUN_000358a0(local_3c);\n  iVar11 = unaff_EBP + 0x342bc;\n  if (*(int *)(&DAT_0005dffe + unaff_EBP) == 0) {\n    iVar11 = unaff_EBP + 0x342bd;\n  }\n  FUN_000358e0(local_3c,iVar11);\n  uVar13 = FUN_00035970(local_3c);\n  iVar11 = FUN_000254b0(*(undefined4 *)(iVar8 + 0x14),uVar13);\n  sprintf(local_30,(char *)(FUN_000357f0 + unaff_EBP + 4),local_58);\n  FUN_000358e0(iVar11 + 0x1c,local_30);\nLAB_0002af6d:\n  iVar11 = FUN_00028f30(*(undefined4 *)(iVar8 + 0x14),iVar8);\n  if (*(int *)(&DAT_0005e002 + unaff_EBP) != 0) {\nLAB_0002af93:\n    puVar14 = (undefined4 *)(iVar8 + 0x10);\n    puVar18 = *(undefined4 **)(iVar8 + 0x10);\n    while (puVar15 = puVar14, puVar18 != (undefined4 *)0x0) {\n      piVar17 = puVar18 + 2;\n      puVar3 = (undefined4 *)*puVar18;\n      puVar14 = puVar18;\n      puVar18 = puVar3;\n      if (*piVar17 == 0) {\n        FUN_00028bf0();\n        *puVar15 = puVar3;\n        puVar14 = puVar15;\n      }\n    }\n  }\n  FUN_000357d0(local_3c);\n  if (iVar11 == 0) {\n    *(int *)(&DAT_0005dff6 + unaff_EBP) = *(int *)(&DAT_0005dff6 + unaff_EBP) + 1;\n  }\nLAB_0002afd9:\n  *param_3 = iVar11;\n  FUN_000357d0(&local_48);\n  if (param_4 == (int *)0x0) {\n    return 1;\n  }\n  *param_4 = iVar8;\n  return 1;\n}" type_identifier (function_declarator "FUN_0002ac00(byte *param_1,undefined4 param_2,int *param_3,int *param_4)" identifier (parameter_list "(byte *param_1,undefined4 param_2,int *param_3,int *param_4)" ( (parameter_declaration "byte *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "undefined4 param_2" type_identifier identifier) , (parameter_declaration "int *param_3" primitive_type (pointer_declarator "*param_3" * identifier)) , (parameter_declaration "int *param_4" primitive_type (pointer_declarator "*param_4" * identifier)) ))) (compound_statement "{\n  byte bVar1;\n  int iVar2;\n  undefined4 *puVar3;\n  bool bVar4;\n  byte *pbVar5;\n  byte bVar6;\n  char cVar7;\n  void *__dest;\n  byte *__ptr;\n  int iVar8;\n  uint uVar9;\n  undefined4 uVar10;\n  int iVar11;\n  undefined4 uVar12;\n  undefined4 uVar13;\n  undefined4 *puVar14;\n  undefined4 *puVar15;\n  size_t __n;\n  uint uVar16;\n  int unaff_EBP;\n  int *piVar17;\n  undefined4 *puVar18;\n  byte *pbVar19;\n  int local_58;\n  char *local_48;\n  uint local_44;\n  undefined4 local_3c [3];\n  char local_30 [32];\n  \n  FUN_0001fe10();\n  iVar8 = unaff_EBP + 0x557ba;\n  if (((*(byte *)(iVar8 + (uint)*param_1) & 2) != 0) ||\n     ((*(int *)(&DAT_0005e002 + unaff_EBP) != 0 && (*param_1 == 0x2e)))) {\n    pbVar19 = param_1 + 1;\n    bVar1 = *(byte *)(iVar8 + (uint)param_1[1]);\n    while ((bVar1 & 1) != 0) {\n      pbVar19 = pbVar19 + 1;\n      bVar1 = *(byte *)(iVar8 + (uint)*pbVar19);\n    }\n    pbVar19 = pbVar19 + ((bVar1 & 4) != 0);\n    __n = (int)pbVar19 - (int)param_1;\n    __dest = (void *)xmalloc(__n + 1);\n    *(undefined1 *)((int)__dest + __n) = 0;\n    __ptr = (byte *)memcpy(__dest,param_1,__n);\n    iVar8 = *(int *)(unaff_EBP + 0x553ca);\n    bVar1 = *__ptr;\n    pbVar5 = __ptr;\n    while (bVar1 != 0) {\n      *pbVar5 = *(byte *)(iVar8 + (uint)bVar1);\n      bVar1 = pbVar5[1];\n      pbVar5 = pbVar5 + 1;\n    }\n    iVar8 = FUN_000254b0(*(undefined4 *)("%S.000%z" + unaff_EBP),__ptr);\n    free(__ptr);\n    if (iVar8 != 0) {\n      FUN_00035790(&local_48);\n      bVar1 = *pbVar19;\n      while ((0xd < bVar1 || ((0x2401U >> ((int)(char)bVar1 & 0x1fU) & 1) == 0))) {\n        pbVar19 = pbVar19 + 1;\n        FUN_000358b0(&local_48,(int)(char)bVar1);\n        bVar1 = *pbVar19;\n      }\n      FUN_00035790(param_2);\n      FUN_00035790(local_3c);\n      piVar17 = *(int **)(iVar8 + 0x10);\n      if (piVar17 != (int *)0x0) {\n        do {\n          FUN_000358a0(piVar17 + 7);\n          piVar17 = (int *)*piVar17;\n        } while (piVar17 != (int *)0x0);\n        for (puVar18 = *(undefined4 **)(iVar8 + 0x10); puVar18 != (undefined4 *)0x0;\n            puVar18 = (undefined4 *)*puVar18) {\n          if (-1 < (int)puVar18[10]) goto LAB_0002adc1;\n        }\n      }\n      puVar18 = (undefined4 *)0x0;\nLAB_0002adc1:\n      uVar9 = 0;\n      if ((*(int *)(&DAT_0005e002 + unaff_EBP) != 0) && (uVar9 = local_44, local_44 != 0)) {\n        if (*local_48 == '.') {\n          if (((local_44 < 2) || (local_48[1] == ' ')) || (local_48[1] == '\t')) {\n            uVar9 = 1;\n          }\n          else {\n            puVar14 = (undefined4 *)FUN_00028ba0();\n            puVar14[10] = 0xffffffff;\n            *puVar14 = *(undefined4 *)(iVar8 + 0x10);\n            *(undefined4 **)(iVar8 + 0x10) = puVar14;\n            uVar9 = FUN_00029a00();\n          }\n        }\n        else {\n          uVar9 = 0;\n        }\n      }\n      uVar9 = FUN_00035980(uVar9,&local_48);\n      local_58 = 0;\n      bVar4 = false;\nLAB_0002ae00:\n      if (uVar9 < local_44) {\n        do {\n          uVar16 = uVar9;\n          do {\n            bVar1 = local_48[uVar16];\n            bVar6 = 1;\n            if ((byte)(bVar1 - 0x20) < 0x1c) {\n              bVar6 = ~(byte)(0x8001305 >> (bVar1 - 0x20 & 0x1f)) & 1;\n            }\n            if ((bVar1 == 9) || (bVar6 == 0)) {\n              if ((uVar16 < local_44) && (*(int *)(&DAT_0005e006 + unaff_EBP) == 0)) {\nLAB_0002b0c6:\n                if (bVar1 == 0x3d) {\nLAB_0002b0cf:\n                  FUN_000358a0(local_3c);\n                  iVar11 = FUN_00028c80(local_3c);\n                  if (local_48[iVar11] != '=') {\n                    iVar11 = dcgettext(0,unaff_EBP + 0x3457a,5);\n                    goto LAB_0002b07a;\n                  }\n                  uVar13 = FUN_00035970(local_3c);\n                  iVar11 = FUN_000254b0(*(undefined4 *)(iVar8 + 0x14),uVar13);\n                  uVar13 = local_3c[0];\n                  if (iVar11 == 0) {\n                    uVar10 = *(undefined4 *)(iVar8 + 0x18);\n                    uVar12 = dcgettext(0,unaff_EBP + 0x3459a,5);\n                    FUN_0002bd60(uVar12,uVar13,uVar10);\n                    FUN_000358a0(local_3c);\n                    uVar9 = FUN_00029a00();\n                    bVar4 = true;\n                    goto LAB_0002aebd;\n                  }\n                  if (*(int *)(iVar11 + 0x20) != 0) {\n                    uVar13 = *(undefined4 *)(iVar8 + 0x18);\n                    uVar10 = *(undefined4 *)(iVar11 + 4);\n                    uVar12 = dcgettext(0,unaff_EBP + 0x345ce,5);\n                    FUN_0002bc80(uVar12,uVar10,uVar13);\n                    FUN_000358a0(iVar11 + 0x1c);\n                  }\n                  uVar9 = FUN_00029a00();\n                  bVar4 = true;\n                  iVar2 = *(int *)(&DAT_0005e002 + unaff_EBP);\n                  local_58 = (local_58 + 1) - (uint)(*(int *)(iVar11 + 0x20) == 0);\n                  goto joined_r0x0002b16d;\n                }\n              }\n              break;\n            }\n            if (*(int *)(&DAT_0005e006 + unaff_EBP) != 0) break;\n            if (*(int *)(&DAT_0005e002 + unaff_EBP) != 0) {\n              if ((bVar1 & 0xfd) == 0x3c) {\n                if (uVar16 < local_44) goto LAB_0002b0c6;\n                break;\n              }\n              if (bVar1 == 0x27) break;\n            }\n            if (bVar1 == 0x3d) {\n              if (uVar16 < local_44) goto LAB_0002b0cf;\n              break;\n            }\n            uVar16 = uVar16 + 1;\n          } while (uVar16 != local_44);\n          if (bVar4) {\n            iVar11 = dcgettext(0,unaff_EBP + 0x3460e,5);\nLAB_0002b07a:\n            if (iVar11 == 0) break;\n            if (*(int *)(&DAT_0005e002 + unaff_EBP) != 0) goto LAB_0002af93;\nLAB_0002b090:\n            FUN_000357d0(local_3c);\n            goto LAB_0002afd9;\n          }\n          if (puVar18 == (undefined4 *)0x0) {\n            if (*(int *)(&DAT_0005e002 + unaff_EBP) == 0) {\n              iVar11 = dcgettext(0,unaff_EBP + 0x34312,5);\n              if (iVar11 != 0) goto LAB_0002b090;\n              piVar17 = *(int **)(iVar8 + 0x10);\n              if (piVar17 == (int *)0x0) goto LAB_0002af6d;\n              goto LAB_0002aef9;\n            }\n            puVar18 = (undefined4 *)FUN_00028ba0();\n            iVar11 = -1;\n            puVar14 = *(undefined4 **)(iVar8 + 0x10);\n            if (*(undefined4 **)(iVar8 + 0x10) == (undefined4 *)0x0) {\n              iVar11 = 0;\n              puVar15 = (undefined4 *)(iVar8 + 0x10);\n            }\n            else {\n              do {\n                puVar15 = puVar14;\n                if (iVar11 <= (int)puVar15[10]) {\n                  iVar11 = puVar15[10] + 1;\n                }\n                puVar14 = (undefined4 *)*puVar15;\n              } while ((undefined4 *)*puVar15 != (undefined4 *)0x0);\n              if (iVar11 == -1) {\n                iVar11 = 0;\n              }\n            }\n            *puVar15 = puVar18;\n            puVar18[10] = iVar11;\n          }\n          if (puVar18[0xb] == 2) {\n            FUN_00035930(puVar18 + 7,local_48 + uVar9,local_44 - uVar9);\n            uVar9 = local_44;\n          }\n          else {\n            uVar9 = FUN_00029a00();\n          }\n          local_58 = (local_58 + 1) - (uint)(puVar18[8] == 0);\n          do {\n            puVar18 = (undefined4 *)*puVar18;\n            if (puVar18 == (undefined4 *)0x0) break;\n          } while ((int)puVar18[10] < 0);\nLAB_0002aebd:\n          iVar2 = *(int *)(&DAT_0005e002 + unaff_EBP);\njoined_r0x0002b16d:\n          if (iVar2 != 0) goto LAB_0002aecb;\n          uVar9 = FUN_000359c0(uVar9,&local_48);\n          if (local_44 <= uVar9) break;\n        } while( true );\n      }\n      piVar17 = *(int **)(iVar8 + 0x10);\n      if (piVar17 != (int *)0x0) goto LAB_0002aef9;\n      goto LAB_0002af58;\n    }\n  }\n  return 0;\nLAB_0002aecb:\n  cVar7 = local_48[uVar9];\n  if (cVar7 == ',') {\n    uVar9 = uVar9 + 1;\n    cVar7 = local_48[uVar9];\n  }\n  if ((cVar7 == ' ') || (cVar7 == '\t')) goto LAB_0002aeea;\n  goto LAB_0002ae00;\nLAB_0002aeea:\n  piVar17 = *(int **)(iVar8 + 0x10);\n  if (piVar17 != (int *)0x0) {\nLAB_0002aef9:\n    do {\n      while ((piVar17[0xb] != 1 || (piVar17[8] != 0))) {\n        piVar17 = (int *)*piVar17;\n        if (piVar17 == (int *)0x0) goto LAB_0002af58;\n      }\n      iVar11 = piVar17[1];\n      uVar13 = *(undefined4 *)(iVar8 + 0x18);\n      uVar10 = dcgettext(0,unaff_EBP + 0x3463a,5);\n      FUN_0002bd60(uVar10,iVar11,uVar13);\n      piVar17 = (int *)*piVar17;\n    } while (piVar17 != (int *)0x0);\nLAB_0002af58:\n    if (*(int *)(&DAT_0005e002 + unaff_EBP) == 0) goto LAB_0002af6d;\n  }\n  FUN_000358a0(local_3c);\n  iVar11 = unaff_EBP + 0x342bc;\n  if (*(int *)(&DAT_0005dffe + unaff_EBP) == 0) {\n    iVar11 = unaff_EBP + 0x342bd;\n  }\n  FUN_000358e0(local_3c,iVar11);\n  uVar13 = FUN_00035970(local_3c);\n  iVar11 = FUN_000254b0(*(undefined4 *)(iVar8 + 0x14),uVar13);\n  sprintf(local_30,(char *)(FUN_000357f0 + unaff_EBP + 4),local_58);\n  FUN_000358e0(iVar11 + 0x1c,local_30);\nLAB_0002af6d:\n  iVar11 = FUN_00028f30(*(undefined4 *)(iVar8 + 0x14),iVar8);\n  if (*(int *)(&DAT_0005e002 + unaff_EBP) != 0) {\nLAB_0002af93:\n    puVar14 = (undefined4 *)(iVar8 + 0x10);\n    puVar18 = *(undefined4 **)(iVar8 + 0x10);\n    while (puVar15 = puVar14, puVar18 != (undefined4 *)0x0) {\n      piVar17 = puVar18 + 2;\n      puVar3 = (undefined4 *)*puVar18;\n      puVar14 = puVar18;\n      puVar18 = puVar3;\n      if (*piVar17 == 0) {\n        FUN_00028bf0();\n        *puVar15 = puVar3;\n        puVar14 = puVar15;\n      }\n    }\n  }\n  FUN_000357d0(local_3c);\n  if (iVar11 == 0) {\n    *(int *)(&DAT_0005dff6 + unaff_EBP) = *(int *)(&DAT_0005dff6 + unaff_EBP) + 1;\n  }\nLAB_0002afd9:\n  *param_3 = iVar11;\n  FUN_000357d0(&local_48);\n  if (param_4 == (int *)0x0) {\n    return 1;\n  }\n  *param_4 = iVar8;\n  return 1;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "undefined4 *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "bool bVar4;" primitive_type identifier ;) (declaration "byte *pbVar5;" type_identifier (pointer_declarator "*pbVar5" * identifier) ;) (declaration "byte bVar6;" type_identifier identifier ;) (declaration "char cVar7;" primitive_type identifier ;) (declaration "void *__dest;" primitive_type (pointer_declarator "*__dest" * identifier) ;) (declaration "byte *__ptr;" type_identifier (pointer_declarator "*__ptr" * identifier) ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "undefined4 uVar10;" type_identifier identifier ;) (declaration "int iVar11;" primitive_type identifier ;) (declaration "undefined4 uVar12;" type_identifier identifier ;) (declaration "undefined4 uVar13;" type_identifier identifier ;) (declaration "undefined4 *puVar14;" type_identifier (pointer_declarator "*puVar14" * identifier) ;) (declaration "undefined4 *puVar15;" type_identifier (pointer_declarator "*puVar15" * identifier) ;) (declaration "size_t __n;" primitive_type identifier ;) (declaration "uint uVar16;" type_identifier identifier ;) (declaration "int unaff_EBP;" primitive_type identifier ;) (declaration "int *piVar17;" primitive_type (pointer_declarator "*piVar17" * identifier) ;) (declaration "undefined4 *puVar18;" type_identifier (pointer_declarator "*puVar18" * identifier) ;) (declaration "byte *pbVar19;" type_identifier (pointer_declarator "*pbVar19" * identifier) ;) (declaration "int local_58;" primitive_type identifier ;) (declaration "char *local_48;" primitive_type (pointer_declarator "*local_48" * identifier) ;) (declaration "uint local_44;" type_identifier identifier ;) (declaration "undefined4 local_3c [3];" type_identifier (array_declarator "local_3c [3]" identifier [ number_literal ]) ;) (declaration "char local_30 [32];" primitive_type (array_declarator "local_30 [32]" identifier [ number_literal ]) ;) (expression_statement "FUN_0001fe10();" (call_expression "FUN_0001fe10()" identifier (argument_list "()" ( ))) ;) (expression_statement "iVar8 = unaff_EBP + 0x557ba;" (assignment_expression "iVar8 = unaff_EBP + 0x557ba" identifier = (binary_expression "unaff_EBP + 0x557ba" identifier + number_literal)) ;) (if_statement "if (((*(byte *)(iVar8 + (uint)*param_1) & 2) != 0) ||\n     ((*(int *)(&DAT_0005e002 + unaff_EBP) != 0 && (*param_1 == 0x2e)))) {\n    pbVar19 = param_1 + 1;\n    bVar1 = *(byte *)(iVar8 + (uint)param_1[1]);\n    while ((bVar1 & 1) != 0) {\n      pbVar19 = pbVar19 + 1;\n      bVar1 = *(byte *)(iVar8 + (uint)*pbVar19);\n    }\n    pbVar19 = pbVar19 + ((bVar1 & 4) != 0);\n    __n = (int)pbVar19 - (int)param_1;\n    __dest = (void *)xmalloc(__n + 1);\n    *(undefined1 *)((int)__dest + __n) = 0;\n    __ptr = (byte *)memcpy(__dest,param_1,__n);\n    iVar8 = *(int *)(unaff_EBP + 0x553ca);\n    bVar1 = *__ptr;\n    pbVar5 = __ptr;\n    while (bVar1 != 0) {\n      *pbVar5 = *(byte *)(iVar8 + (uint)bVar1);\n      bVar1 = pbVar5[1];\n      pbVar5 = pbVar5 + 1;\n    }\n    iVar8 = FUN_000254b0(*(undefined4 *)("%S.000%z" + unaff_EBP),__ptr);\n    free(__ptr);\n    if (iVar8 != 0) {\n      FUN_00035790(&local_48);\n      bVar1 = *pbVar19;\n      while ((0xd < bVar1 || ((0x2401U >> ((int)(char)bVar1 & 0x1fU) & 1) == 0))) {\n        pbVar19 = pbVar19 + 1;\n        FUN_000358b0(&local_48,(int)(char)bVar1);\n        bVar1 = *pbVar19;\n      }\n      FUN_00035790(param_2);\n      FUN_00035790(local_3c);\n      piVar17 = *(int **)(iVar8 + 0x10);\n      if (piVar17 != (int *)0x0) {\n        do {\n          FUN_000358a0(piVar17 + 7);\n          piVar17 = (int *)*piVar17;\n        } while (piVar17 != (int *)0x0);\n        for (puVar18 = *(undefined4 **)(iVar8 + 0x10); puVar18 != (undefined4 *)0x0;\n            puVar18 = (undefined4 *)*puVar18) {\n          if (-1 < (int)puVar18[10]) goto LAB_0002adc1;\n        }\n      }\n      puVar18 = (undefined4 *)0x0;\nLAB_0002adc1:\n      uVar9 = 0;\n      if ((*(int *)(&DAT_0005e002 + unaff_EBP) != 0) && (uVar9 = local_44, local_44 != 0)) {\n        if (*local_48 == '.') {\n          if (((local_44 < 2) || (local_48[1] == ' ')) || (local_48[1] == '\t')) {\n            uVar9 = 1;\n          }\n          else {\n            puVar14 = (undefined4 *)FUN_00028ba0();\n            puVar14[10] = 0xffffffff;\n            *puVar14 = *(undefined4 *)(iVar8 + 0x10);\n            *(undefined4 **)(iVar8 + 0x10) = puVar14;\n            uVar9 = FUN_00029a00();\n          }\n        }\n        else {\n          uVar9 = 0;\n        }\n      }\n      uVar9 = FUN_00035980(uVar9,&local_48);\n      local_58 = 0;\n      bVar4 = false;\nLAB_0002ae00:\n      if (uVar9 < local_44) {\n        do {\n          uVar16 = uVar9;\n          do {\n            bVar1 = local_48[uVar16];\n            bVar6 = 1;\n            if ((byte)(bVar1 - 0x20) < 0x1c) {\n              bVar6 = ~(byte)(0x8001305 >> (bVar1 - 0x20 & 0x1f)) & 1;\n            }\n            if ((bVar1 == 9) || (bVar6 == 0)) {\n              if ((uVar16 < local_44) && (*(int *)(&DAT_0005e006 + unaff_EBP) == 0)) {\nLAB_0002b0c6:\n                if (bVar1 == 0x3d) {\nLAB_0002b0cf:\n                  FUN_000358a0(local_3c);\n                  iVar11 = FUN_00028c80(local_3c);\n                  if (local_48[iVar11] != '=') {\n                    iVar11 = dcgettext(0,unaff_EBP + 0x3457a,5);\n                    goto LAB_0002b07a;\n                  }\n                  uVar13 = FUN_00035970(local_3c);\n                  iVar11 = FUN_000254b0(*(undefined4 *)(iVar8 + 0x14),uVar13);\n                  uVar13 = local_3c[0];\n                  if (iVar11 == 0) {\n                    uVar10 = *(undefined4 *)(iVar8 + 0x18);\n                    uVar12 = dcgettext(0,unaff_EBP + 0x3459a,5);\n                    FUN_0002bd60(uVar12,uVar13,uVar10);\n                    FUN_000358a0(local_3c);\n                    uVar9 = FUN_00029a00();\n                    bVar4 = true;\n                    goto LAB_0002aebd;\n                  }\n                  if (*(int *)(iVar11 + 0x20) != 0) {\n                    uVar13 = *(undefined4 *)(iVar8 + 0x18);\n                    uVar10 = *(undefined4 *)(iVar11 + 4);\n                    uVar12 = dcgettext(0,unaff_EBP + 0x345ce,5);\n                    FUN_0002bc80(uVar12,uVar10,uVar13);\n                    FUN_000358a0(iVar11 + 0x1c);\n                  }\n                  uVar9 = FUN_00029a00();\n                  bVar4 = true;\n                  iVar2 = *(int *)(&DAT_0005e002 + unaff_EBP);\n                  local_58 = (local_58 + 1) - (uint)(*(int *)(iVar11 + 0x20) == 0);\n                  goto joined_r0x0002b16d;\n                }\n              }\n              break;\n            }\n            if (*(int *)(&DAT_0005e006 + unaff_EBP) != 0) break;\n            if (*(int *)(&DAT_0005e002 + unaff_EBP) != 0) {\n              if ((bVar1 & 0xfd) == 0x3c) {\n                if (uVar16 < local_44) goto LAB_0002b0c6;\n                break;\n              }\n              if (bVar1 == 0x27) break;\n            }\n            if (bVar1 == 0x3d) {\n              if (uVar16 < local_44) goto LAB_0002b0cf;\n              break;\n            }\n            uVar16 = uVar16 + 1;\n          } while (uVar16 != local_44);\n          if (bVar4) {\n            iVar11 = dcgettext(0,unaff_EBP + 0x3460e,5);\nLAB_0002b07a:\n            if (iVar11 == 0) break;\n            if (*(int *)(&DAT_0005e002 + unaff_EBP) != 0) goto LAB_0002af93;\nLAB_0002b090:\n            FUN_000357d0(local_3c);\n            goto LAB_0002afd9;\n          }\n          if (puVar18 == (undefined4 *)0x0) {\n            if (*(int *)(&DAT_0005e002 + unaff_EBP) == 0) {\n              iVar11 = dcgettext(0,unaff_EBP + 0x34312,5);\n              if (iVar11 != 0) goto LAB_0002b090;\n              piVar17 = *(int **)(iVar8 + 0x10);\n              if (piVar17 == (int *)0x0) goto LAB_0002af6d;\n              goto LAB_0002aef9;\n            }\n            puVar18 = (undefined4 *)FUN_00028ba0();\n            iVar11 = -1;\n            puVar14 = *(undefined4 **)(iVar8 + 0x10);\n            if (*(undefined4 **)(iVar8 + 0x10) == (undefined4 *)0x0) {\n              iVar11 = 0;\n              puVar15 = (undefined4 *)(iVar8 + 0x10);\n            }\n            else {\n              do {\n                puVar15 = puVar14;\n                if (iVar11 <= (int)puVar15[10]) {\n                  iVar11 = puVar15[10] + 1;\n                }\n                puVar14 = (undefined4 *)*puVar15;\n              } while ((undefined4 *)*puVar15 != (undefined4 *)0x0);\n              if (iVar11 == -1) {\n                iVar11 = 0;\n              }\n            }\n            *puVar15 = puVar18;\n            puVar18[10] = iVar11;\n          }\n          if (puVar18[0xb] == 2) {\n            FUN_00035930(puVar18 + 7,local_48 + uVar9,local_44 - uVar9);\n            uVar9 = local_44;\n          }\n          else {\n            uVar9 = FUN_00029a00();\n          }\n          local_58 = (local_58 + 1) - (uint)(puVar18[8] == 0);\n          do {\n            puVar18 = (undefined4 *)*puVar18;\n            if (puVar18 == (undefined4 *)0x0) break;\n          } while ((int)puVar18[10] < 0);\nLAB_0002aebd:\n          iVar2 = *(int *)(&DAT_0005e002 + unaff_EBP);\njoined_r0x0002b16d:\n          if (iVar2 != 0) goto LAB_0002aecb;\n          uVar9 = FUN_000359c0(uVar9,&local_48);\n          if (local_44 <= uVar9) break;\n        } while( true );\n      }\n      piVar17 = *(int **)(iVar8 + 0x10);\n      if (piVar17 != (int *)0x0) goto LAB_0002aef9;\n      goto LAB_0002af58;\n    }\n  }" if (parenthesized_expression "(((*(byte *)(iVar8 + (uint)*param_1) & 2) != 0) ||\n     ((*(int *)(&DAT_0005e002 + unaff_EBP) != 0 && (*param_1 == 0x2e))))" ( (binary_expression "((*(byte *)(iVar8 + (uint)*param_1) & 2) != 0) ||\n     ((*(int *)(&DAT_0005e002 + unaff_EBP) != 0 && (*param_1 == 0x2e)))" (parenthesized_expression "((*(byte *)(iVar8 + (uint)*param_1) & 2) != 0)" ( (binary_expression "(*(byte *)(iVar8 + (uint)*param_1) & 2) != 0" (parenthesized_expression "(*(byte *)(iVar8 + (uint)*param_1) & 2)" ( (binary_expression "*(byte *)(iVar8 + (uint)*param_1) & 2" (pointer_expression "*(byte *)(iVar8 + (uint)*param_1)" * (cast_expression "(byte *)(iVar8 + (uint)*param_1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + (uint)*param_1)" ( (binary_expression "iVar8 + (uint)*param_1" identifier + (binary_expression "(uint)*param_1" (parenthesized_expression "(uint)" ( identifier )) * identifier)) )))) & number_literal) )) != number_literal) )) || (parenthesized_expression "((*(int *)(&DAT_0005e002 + unaff_EBP) != 0 && (*param_1 == 0x2e)))" ( (parenthesized_expression "(*(int *)(&DAT_0005e002 + unaff_EBP) != 0 && (*param_1 == 0x2e))" ( (binary_expression "*(int *)(&DAT_0005e002 + unaff_EBP) != 0 && (*param_1 == 0x2e)" (binary_expression "*(int *)(&DAT_0005e002 + unaff_EBP) != 0" (pointer_expression "*(int *)(&DAT_0005e002 + unaff_EBP)" * (cast_expression "(int *)(&DAT_0005e002 + unaff_EBP)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_0005e002 + unaff_EBP)" ( (binary_expression "&DAT_0005e002 + unaff_EBP" (pointer_expression "&DAT_0005e002" & identifier) + identifier) )))) != number_literal) && (parenthesized_expression "(*param_1 == 0x2e)" ( (binary_expression "*param_1 == 0x2e" (pointer_expression "*param_1" * identifier) == number_literal) ))) )) ))) )) (compound_statement "{\n    pbVar19 = param_1 + 1;\n    bVar1 = *(byte *)(iVar8 + (uint)param_1[1]);\n    while ((bVar1 & 1) != 0) {\n      pbVar19 = pbVar19 + 1;\n      bVar1 = *(byte *)(iVar8 + (uint)*pbVar19);\n    }\n    pbVar19 = pbVar19 + ((bVar1 & 4) != 0);\n    __n = (int)pbVar19 - (int)param_1;\n    __dest = (void *)xmalloc(__n + 1);\n    *(undefined1 *)((int)__dest + __n) = 0;\n    __ptr = (byte *)memcpy(__dest,param_1,__n);\n    iVar8 = *(int *)(unaff_EBP + 0x553ca);\n    bVar1 = *__ptr;\n    pbVar5 = __ptr;\n    while (bVar1 != 0) {\n      *pbVar5 = *(byte *)(iVar8 + (uint)bVar1);\n      bVar1 = pbVar5[1];\n      pbVar5 = pbVar5 + 1;\n    }\n    iVar8 = FUN_000254b0(*(undefined4 *)("%S.000%z" + unaff_EBP),__ptr);\n    free(__ptr);\n    if (iVar8 != 0) {\n      FUN_00035790(&local_48);\n      bVar1 = *pbVar19;\n      while ((0xd < bVar1 || ((0x2401U >> ((int)(char)bVar1 & 0x1fU) & 1) == 0))) {\n        pbVar19 = pbVar19 + 1;\n        FUN_000358b0(&local_48,(int)(char)bVar1);\n        bVar1 = *pbVar19;\n      }\n      FUN_00035790(param_2);\n      FUN_00035790(local_3c);\n      piVar17 = *(int **)(iVar8 + 0x10);\n      if (piVar17 != (int *)0x0) {\n        do {\n          FUN_000358a0(piVar17 + 7);\n          piVar17 = (int *)*piVar17;\n        } while (piVar17 != (int *)0x0);\n        for (puVar18 = *(undefined4 **)(iVar8 + 0x10); puVar18 != (undefined4 *)0x0;\n            puVar18 = (undefined4 *)*puVar18) {\n          if (-1 < (int)puVar18[10]) goto LAB_0002adc1;\n        }\n      }\n      puVar18 = (undefined4 *)0x0;\nLAB_0002adc1:\n      uVar9 = 0;\n      if ((*(int *)(&DAT_0005e002 + unaff_EBP) != 0) && (uVar9 = local_44, local_44 != 0)) {\n        if (*local_48 == '.') {\n          if (((local_44 < 2) || (local_48[1] == ' ')) || (local_48[1] == '\t')) {\n            uVar9 = 1;\n          }\n          else {\n            puVar14 = (undefined4 *)FUN_00028ba0();\n            puVar14[10] = 0xffffffff;\n            *puVar14 = *(undefined4 *)(iVar8 + 0x10);\n            *(undefined4 **)(iVar8 + 0x10) = puVar14;\n            uVar9 = FUN_00029a00();\n          }\n        }\n        else {\n          uVar9 = 0;\n        }\n      }\n      uVar9 = FUN_00035980(uVar9,&local_48);\n      local_58 = 0;\n      bVar4 = false;\nLAB_0002ae00:\n      if (uVar9 < local_44) {\n        do {\n          uVar16 = uVar9;\n          do {\n            bVar1 = local_48[uVar16];\n            bVar6 = 1;\n            if ((byte)(bVar1 - 0x20) < 0x1c) {\n              bVar6 = ~(byte)(0x8001305 >> (bVar1 - 0x20 & 0x1f)) & 1;\n            }\n            if ((bVar1 == 9) || (bVar6 == 0)) {\n              if ((uVar16 < local_44) && (*(int *)(&DAT_0005e006 + unaff_EBP) == 0)) {\nLAB_0002b0c6:\n                if (bVar1 == 0x3d) {\nLAB_0002b0cf:\n                  FUN_000358a0(local_3c);\n                  iVar11 = FUN_00028c80(local_3c);\n                  if (local_48[iVar11] != '=') {\n                    iVar11 = dcgettext(0,unaff_EBP + 0x3457a,5);\n                    goto LAB_0002b07a;\n                  }\n                  uVar13 = FUN_00035970(local_3c);\n                  iVar11 = FUN_000254b0(*(undefined4 *)(iVar8 + 0x14),uVar13);\n                  uVar13 = local_3c[0];\n                  if (iVar11 == 0) {\n                    uVar10 = *(undefined4 *)(iVar8 + 0x18);\n                    uVar12 = dcgettext(0,unaff_EBP + 0x3459a,5);\n                    FUN_0002bd60(uVar12,uVar13,uVar10);\n                    FUN_000358a0(local_3c);\n                    uVar9 = FUN_00029a00();\n                    bVar4 = true;\n                    goto LAB_0002aebd;\n                  }\n                  if (*(int *)(iVar11 + 0x20) != 0) {\n                    uVar13 = *(undefined4 *)(iVar8 + 0x18);\n                    uVar10 = *(undefined4 *)(iVar11 + 4);\n                    uVar12 = dcgettext(0,unaff_EBP + 0x345ce,5);\n                    FUN_0002bc80(uVar12,uVar10,uVar13);\n                    FUN_000358a0(iVar11 + 0x1c);\n                  }\n                  uVar9 = FUN_00029a00();\n                  bVar4 = true;\n                  iVar2 = *(int *)(&DAT_0005e002 + unaff_EBP);\n                  local_58 = (local_58 + 1) - (uint)(*(int *)(iVar11 + 0x20) == 0);\n                  goto joined_r0x0002b16d;\n                }\n              }\n              break;\n            }\n            if (*(int *)(&DAT_0005e006 + unaff_EBP) != 0) break;\n            if (*(int *)(&DAT_0005e002 + unaff_EBP) != 0) {\n              if ((bVar1 & 0xfd) == 0x3c) {\n                if (uVar16 < local_44) goto LAB_0002b0c6;\n                break;\n              }\n              if (bVar1 == 0x27) break;\n            }\n            if (bVar1 == 0x3d) {\n              if (uVar16 < local_44) goto LAB_0002b0cf;\n              break;\n            }\n            uVar16 = uVar16 + 1;\n          } while (uVar16 != local_44);\n          if (bVar4) {\n            iVar11 = dcgettext(0,unaff_EBP + 0x3460e,5);\nLAB_0002b07a:\n            if (iVar11 == 0) break;\n            if (*(int *)(&DAT_0005e002 + unaff_EBP) != 0) goto LAB_0002af93;\nLAB_0002b090:\n            FUN_000357d0(local_3c);\n            goto LAB_0002afd9;\n          }\n          if (puVar18 == (undefined4 *)0x0) {\n            if (*(int *)(&DAT_0005e002 + unaff_EBP) == 0) {\n              iVar11 = dcgettext(0,unaff_EBP + 0x34312,5);\n              if (iVar11 != 0) goto LAB_0002b090;\n              piVar17 = *(int **)(iVar8 + 0x10);\n              if (piVar17 == (int *)0x0) goto LAB_0002af6d;\n              goto LAB_0002aef9;\n            }\n            puVar18 = (undefined4 *)FUN_00028ba0();\n            iVar11 = -1;\n            puVar14 = *(undefined4 **)(iVar8 + 0x10);\n            if (*(undefined4 **)(iVar8 + 0x10) == (undefined4 *)0x0) {\n              iVar11 = 0;\n              puVar15 = (undefined4 *)(iVar8 + 0x10);\n            }\n            else {\n              do {\n                puVar15 = puVar14;\n                if (iVar11 <= (int)puVar15[10]) {\n                  iVar11 = puVar15[10] + 1;\n                }\n                puVar14 = (undefined4 *)*puVar15;\n              } while ((undefined4 *)*puVar15 != (undefined4 *)0x0);\n              if (iVar11 == -1) {\n                iVar11 = 0;\n              }\n            }\n            *puVar15 = puVar18;\n            puVar18[10] = iVar11;\n          }\n          if (puVar18[0xb] == 2) {\n            FUN_00035930(puVar18 + 7,local_48 + uVar9,local_44 - uVar9);\n            uVar9 = local_44;\n          }\n          else {\n            uVar9 = FUN_00029a00();\n          }\n          local_58 = (local_58 + 1) - (uint)(puVar18[8] == 0);\n          do {\n            puVar18 = (undefined4 *)*puVar18;\n            if (puVar18 == (undefined4 *)0x0) break;\n          } while ((int)puVar18[10] < 0);\nLAB_0002aebd:\n          iVar2 = *(int *)(&DAT_0005e002 + unaff_EBP);\njoined_r0x0002b16d:\n          if (iVar2 != 0) goto LAB_0002aecb;\n          uVar9 = FUN_000359c0(uVar9,&local_48);\n          if (local_44 <= uVar9) break;\n        } while( true );\n      }\n      piVar17 = *(int **)(iVar8 + 0x10);\n      if (piVar17 != (int *)0x0) goto LAB_0002aef9;\n      goto LAB_0002af58;\n    }\n  }" { (expression_statement "pbVar19 = param_1 + 1;" (assignment_expression "pbVar19 = param_1 + 1" identifier = (binary_expression "param_1 + 1" identifier + number_literal)) ;) (expression_statement "bVar1 = *(byte *)(iVar8 + (uint)param_1[1]);" (assignment_expression "bVar1 = *(byte *)(iVar8 + (uint)param_1[1])" identifier = (pointer_expression "*(byte *)(iVar8 + (uint)param_1[1])" * (cast_expression "(byte *)(iVar8 + (uint)param_1[1])" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + (uint)param_1[1])" ( (binary_expression "iVar8 + (uint)param_1[1]" identifier + (cast_expression "(uint)param_1[1]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_1[1]" identifier [ number_literal ]))) ))))) ;) (while_statement "while ((bVar1 & 1) != 0) {\n      pbVar19 = pbVar19 + 1;\n      bVar1 = *(byte *)(iVar8 + (uint)*pbVar19);\n    }" while (parenthesized_expression "((bVar1 & 1) != 0)" ( (binary_expression "(bVar1 & 1) != 0" (parenthesized_expression "(bVar1 & 1)" ( (binary_expression "bVar1 & 1" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n      pbVar19 = pbVar19 + 1;\n      bVar1 = *(byte *)(iVar8 + (uint)*pbVar19);\n    }" { (expression_statement "pbVar19 = pbVar19 + 1;" (assignment_expression "pbVar19 = pbVar19 + 1" identifier = (binary_expression "pbVar19 + 1" identifier + number_literal)) ;) (expression_statement "bVar1 = *(byte *)(iVar8 + (uint)*pbVar19);" (assignment_expression "bVar1 = *(byte *)(iVar8 + (uint)*pbVar19)" identifier = (pointer_expression "*(byte *)(iVar8 + (uint)*pbVar19)" * (cast_expression "(byte *)(iVar8 + (uint)*pbVar19)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + (uint)*pbVar19)" ( (binary_expression "iVar8 + (uint)*pbVar19" identifier + (binary_expression "(uint)*pbVar19" (parenthesized_expression "(uint)" ( identifier )) * identifier)) ))))) ;) })) (expression_statement "pbVar19 = pbVar19 + ((bVar1 & 4) != 0);" (assignment_expression "pbVar19 = pbVar19 + ((bVar1 & 4) != 0)" identifier = (binary_expression "pbVar19 + ((bVar1 & 4) != 0)" identifier + (parenthesized_expression "((bVar1 & 4) != 0)" ( (binary_expression "(bVar1 & 4) != 0" (parenthesized_expression "(bVar1 & 4)" ( (binary_expression "bVar1 & 4" identifier & number_literal) )) != number_literal) )))) ;) (expression_statement "__n = (int)pbVar19 - (int)param_1;" (assignment_expression "__n = (int)pbVar19 - (int)param_1" identifier = (binary_expression "(int)pbVar19 - (int)param_1" (cast_expression "(int)pbVar19" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "__dest = (void *)xmalloc(__n + 1);" (assignment_expression "__dest = (void *)xmalloc(__n + 1)" identifier = (cast_expression "(void *)xmalloc(__n + 1)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(__n + 1)" identifier (argument_list "(__n + 1)" ( (binary_expression "__n + 1" identifier + number_literal) ))))) ;) (expression_statement "*(undefined1 *)((int)__dest + __n) = 0;" (assignment_expression "*(undefined1 *)((int)__dest + __n) = 0" (pointer_expression "*(undefined1 *)((int)__dest + __n)" * (cast_expression "(undefined1 *)((int)__dest + __n)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)__dest + __n)" ( (binary_expression "(int)__dest + __n" (cast_expression "(int)__dest" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) = number_literal) ;) (expression_statement "__ptr = (byte *)memcpy(__dest,param_1,__n);" (assignment_expression "__ptr = (byte *)memcpy(__dest,param_1,__n)" identifier = (cast_expression "(byte *)memcpy(__dest,param_1,__n)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "memcpy(__dest,param_1,__n)" identifier (argument_list "(__dest,param_1,__n)" ( identifier , identifier , identifier ))))) ;) (expression_statement "iVar8 = *(int *)(unaff_EBP + 0x553ca);" (assignment_expression "iVar8 = *(int *)(unaff_EBP + 0x553ca)" identifier = (pointer_expression "*(int *)(unaff_EBP + 0x553ca)" * (cast_expression "(int *)(unaff_EBP + 0x553ca)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EBP + 0x553ca)" ( (binary_expression "unaff_EBP + 0x553ca" identifier + number_literal) ))))) ;) (expression_statement "bVar1 = *__ptr;" (assignment_expression "bVar1 = *__ptr" identifier = (pointer_expression "*__ptr" * identifier)) ;) (expression_statement "pbVar5 = __ptr;" (assignment_expression "pbVar5 = __ptr" identifier = identifier) ;) (while_statement "while (bVar1 != 0) {\n      *pbVar5 = *(byte *)(iVar8 + (uint)bVar1);\n      bVar1 = pbVar5[1];\n      pbVar5 = pbVar5 + 1;\n    }" while (parenthesized_expression "(bVar1 != 0)" ( (binary_expression "bVar1 != 0" identifier != number_literal) )) (compound_statement "{\n      *pbVar5 = *(byte *)(iVar8 + (uint)bVar1);\n      bVar1 = pbVar5[1];\n      pbVar5 = pbVar5 + 1;\n    }" { (expression_statement "*pbVar5 = *(byte *)(iVar8 + (uint)bVar1);" (assignment_expression "*pbVar5 = *(byte *)(iVar8 + (uint)bVar1)" (pointer_expression "*pbVar5" * identifier) = (pointer_expression "*(byte *)(iVar8 + (uint)bVar1)" * (cast_expression "(byte *)(iVar8 + (uint)bVar1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + (uint)bVar1)" ( (binary_expression "iVar8 + (uint)bVar1" identifier + (cast_expression "(uint)bVar1" ( (type_descriptor "uint" type_identifier) ) identifier)) ))))) ;) (expression_statement "bVar1 = pbVar5[1];" (assignment_expression "bVar1 = pbVar5[1]" identifier = (subscript_expression "pbVar5[1]" identifier [ number_literal ])) ;) (expression_statement "pbVar5 = pbVar5 + 1;" (assignment_expression "pbVar5 = pbVar5 + 1" identifier = (binary_expression "pbVar5 + 1" identifier + number_literal)) ;) })) (expression_statement "iVar8 = FUN_000254b0(*(undefined4 *)("%S.000%z" + unaff_EBP),__ptr);" (assignment_expression "iVar8 = FUN_000254b0(*(undefined4 *)("%S.000%z" + unaff_EBP),__ptr)" identifier = (call_expression "FUN_000254b0(*(undefined4 *)("%S.000%z" + unaff_EBP),__ptr)" identifier (argument_list "(*(undefined4 *)("%S.000%z" + unaff_EBP),__ptr)" ( (pointer_expression "*(undefined4 *)("%S.000%z" + unaff_EBP)" * (cast_expression "(undefined4 *)("%S.000%z" + unaff_EBP)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "("%S.000%z" + unaff_EBP)" ( (binary_expression ""%S.000%z" + unaff_EBP" (string_literal ""%S.000%z"" " string_content ") + identifier) )))) , identifier )))) ;) (expression_statement "free(__ptr);" (call_expression "free(__ptr)" identifier (argument_list "(__ptr)" ( identifier ))) ;) (if_statement "if (iVar8 != 0) {\n      FUN_00035790(&local_48);\n      bVar1 = *pbVar19;\n      while ((0xd < bVar1 || ((0x2401U >> ((int)(char)bVar1 & 0x1fU) & 1) == 0))) {\n        pbVar19 = pbVar19 + 1;\n        FUN_000358b0(&local_48,(int)(char)bVar1);\n        bVar1 = *pbVar19;\n      }\n      FUN_00035790(param_2);\n      FUN_00035790(local_3c);\n      piVar17 = *(int **)(iVar8 + 0x10);\n      if (piVar17 != (int *)0x0) {\n        do {\n          FUN_000358a0(piVar17 + 7);\n          piVar17 = (int *)*piVar17;\n        } while (piVar17 != (int *)0x0);\n        for (puVar18 = *(undefined4 **)(iVar8 + 0x10); puVar18 != (undefined4 *)0x0;\n            puVar18 = (undefined4 *)*puVar18) {\n          if (-1 < (int)puVar18[10]) goto LAB_0002adc1;\n        }\n      }\n      puVar18 = (undefined4 *)0x0;\nLAB_0002adc1:\n      uVar9 = 0;\n      if ((*(int *)(&DAT_0005e002 + unaff_EBP) != 0) && (uVar9 = local_44, local_44 != 0)) {\n        if (*local_48 == '.') {\n          if (((local_44 < 2) || (local_48[1] == ' ')) || (local_48[1] == '\t')) {\n            uVar9 = 1;\n          }\n          else {\n            puVar14 = (undefined4 *)FUN_00028ba0();\n            puVar14[10] = 0xffffffff;\n            *puVar14 = *(undefined4 *)(iVar8 + 0x10);\n            *(undefined4 **)(iVar8 + 0x10) = puVar14;\n            uVar9 = FUN_00029a00();\n          }\n        }\n        else {\n          uVar9 = 0;\n        }\n      }\n      uVar9 = FUN_00035980(uVar9,&local_48);\n      local_58 = 0;\n      bVar4 = false;\nLAB_0002ae00:\n      if (uVar9 < local_44) {\n        do {\n          uVar16 = uVar9;\n          do {\n            bVar1 = local_48[uVar16];\n            bVar6 = 1;\n            if ((byte)(bVar1 - 0x20) < 0x1c) {\n              bVar6 = ~(byte)(0x8001305 >> (bVar1 - 0x20 & 0x1f)) & 1;\n            }\n            if ((bVar1 == 9) || (bVar6 == 0)) {\n              if ((uVar16 < local_44) && (*(int *)(&DAT_0005e006 + unaff_EBP) == 0)) {\nLAB_0002b0c6:\n                if (bVar1 == 0x3d) {\nLAB_0002b0cf:\n                  FUN_000358a0(local_3c);\n                  iVar11 = FUN_00028c80(local_3c);\n                  if (local_48[iVar11] != '=') {\n                    iVar11 = dcgettext(0,unaff_EBP + 0x3457a,5);\n                    goto LAB_0002b07a;\n                  }\n                  uVar13 = FUN_00035970(local_3c);\n                  iVar11 = FUN_000254b0(*(undefined4 *)(iVar8 + 0x14),uVar13);\n                  uVar13 = local_3c[0];\n                  if (iVar11 == 0) {\n                    uVar10 = *(undefined4 *)(iVar8 + 0x18);\n                    uVar12 = dcgettext(0,unaff_EBP + 0x3459a,5);\n                    FUN_0002bd60(uVar12,uVar13,uVar10);\n                    FUN_000358a0(local_3c);\n                    uVar9 = FUN_00029a00();\n                    bVar4 = true;\n                    goto LAB_0002aebd;\n                  }\n                  if (*(int *)(iVar11 + 0x20) != 0) {\n                    uVar13 = *(undefined4 *)(iVar8 + 0x18);\n                    uVar10 = *(undefined4 *)(iVar11 + 4);\n                    uVar12 = dcgettext(0,unaff_EBP + 0x345ce,5);\n                    FUN_0002bc80(uVar12,uVar10,uVar13);\n                    FUN_000358a0(iVar11 + 0x1c);\n                  }\n                  uVar9 = FUN_00029a00();\n                  bVar4 = true;\n                  iVar2 = *(int *)(&DAT_0005e002 + unaff_EBP);\n                  local_58 = (local_58 + 1) - (uint)(*(int *)(iVar11 + 0x20) == 0);\n                  goto joined_r0x0002b16d;\n                }\n              }\n              break;\n            }\n            if (*(int *)(&DAT_0005e006 + unaff_EBP) != 0) break;\n            if (*(int *)(&DAT_0005e002 + unaff_EBP) != 0) {\n              if ((bVar1 & 0xfd) == 0x3c) {\n                if (uVar16 < local_44) goto LAB_0002b0c6;\n                break;\n              }\n              if (bVar1 == 0x27) break;\n            }\n            if (bVar1 == 0x3d) {\n              if (uVar16 < local_44) goto LAB_0002b0cf;\n              break;\n            }\n            uVar16 = uVar16 + 1;\n          } while (uVar16 != local_44);\n          if (bVar4) {\n            iVar11 = dcgettext(0,unaff_EBP + 0x3460e,5);\nLAB_0002b07a:\n            if (iVar11 == 0) break;\n            if (*(int *)(&DAT_0005e002 + unaff_EBP) != 0) goto LAB_0002af93;\nLAB_0002b090:\n            FUN_000357d0(local_3c);\n            goto LAB_0002afd9;\n          }\n          if (puVar18 == (undefined4 *)0x0) {\n            if (*(int *)(&DAT_0005e002 + unaff_EBP) == 0) {\n              iVar11 = dcgettext(0,unaff_EBP + 0x34312,5);\n              if (iVar11 != 0) goto LAB_0002b090;\n              piVar17 = *(int **)(iVar8 + 0x10);\n              if (piVar17 == (int *)0x0) goto LAB_0002af6d;\n              goto LAB_0002aef9;\n            }\n            puVar18 = (undefined4 *)FUN_00028ba0();\n            iVar11 = -1;\n            puVar14 = *(undefined4 **)(iVar8 + 0x10);\n            if (*(undefined4 **)(iVar8 + 0x10) == (undefined4 *)0x0) {\n              iVar11 = 0;\n              puVar15 = (undefined4 *)(iVar8 + 0x10);\n            }\n            else {\n              do {\n                puVar15 = puVar14;\n                if (iVar11 <= (int)puVar15[10]) {\n                  iVar11 = puVar15[10] + 1;\n                }\n                puVar14 = (undefined4 *)*puVar15;\n              } while ((undefined4 *)*puVar15 != (undefined4 *)0x0);\n              if (iVar11 == -1) {\n                iVar11 = 0;\n              }\n            }\n            *puVar15 = puVar18;\n            puVar18[10] = iVar11;\n          }\n          if (puVar18[0xb] == 2) {\n            FUN_00035930(puVar18 + 7,local_48 + uVar9,local_44 - uVar9);\n            uVar9 = local_44;\n          }\n          else {\n            uVar9 = FUN_00029a00();\n          }\n          local_58 = (local_58 + 1) - (uint)(puVar18[8] == 0);\n          do {\n            puVar18 = (undefined4 *)*puVar18;\n            if (puVar18 == (undefined4 *)0x0) break;\n          } while ((int)puVar18[10] < 0);\nLAB_0002aebd:\n          iVar2 = *(int *)(&DAT_0005e002 + unaff_EBP);\njoined_r0x0002b16d:\n          if (iVar2 != 0) goto LAB_0002aecb;\n          uVar9 = FUN_000359c0(uVar9,&local_48);\n          if (local_44 <= uVar9) break;\n        } while( true );\n      }\n      piVar17 = *(int **)(iVar8 + 0x10);\n      if (piVar17 != (int *)0x0) goto LAB_0002aef9;\n      goto LAB_0002af58;\n    }" if (parenthesized_expression "(iVar8 != 0)" ( (binary_expression "iVar8 != 0" identifier != number_literal) )) (compound_statement "{\n      FUN_00035790(&local_48);\n      bVar1 = *pbVar19;\n      while ((0xd < bVar1 || ((0x2401U >> ((int)(char)bVar1 & 0x1fU) & 1) == 0))) {\n        pbVar19 = pbVar19 + 1;\n        FUN_000358b0(&local_48,(int)(char)bVar1);\n        bVar1 = *pbVar19;\n      }\n      FUN_00035790(param_2);\n      FUN_00035790(local_3c);\n      piVar17 = *(int **)(iVar8 + 0x10);\n      if (piVar17 != (int *)0x0) {\n        do {\n          FUN_000358a0(piVar17 + 7);\n          piVar17 = (int *)*piVar17;\n        } while (piVar17 != (int *)0x0);\n        for (puVar18 = *(undefined4 **)(iVar8 + 0x10); puVar18 != (undefined4 *)0x0;\n            puVar18 = (undefined4 *)*puVar18) {\n          if (-1 < (int)puVar18[10]) goto LAB_0002adc1;\n        }\n      }\n      puVar18 = (undefined4 *)0x0;\nLAB_0002adc1:\n      uVar9 = 0;\n      if ((*(int *)(&DAT_0005e002 + unaff_EBP) != 0) && (uVar9 = local_44, local_44 != 0)) {\n        if (*local_48 == '.') {\n          if (((local_44 < 2) || (local_48[1] == ' ')) || (local_48[1] == '\t')) {\n            uVar9 = 1;\n          }\n          else {\n            puVar14 = (undefined4 *)FUN_00028ba0();\n            puVar14[10] = 0xffffffff;\n            *puVar14 = *(undefined4 *)(iVar8 + 0x10);\n            *(undefined4 **)(iVar8 + 0x10) = puVar14;\n            uVar9 = FUN_00029a00();\n          }\n        }\n        else {\n          uVar9 = 0;\n        }\n      }\n      uVar9 = FUN_00035980(uVar9,&local_48);\n      local_58 = 0;\n      bVar4 = false;\nLAB_0002ae00:\n      if (uVar9 < local_44) {\n        do {\n          uVar16 = uVar9;\n          do {\n            bVar1 = local_48[uVar16];\n            bVar6 = 1;\n            if ((byte)(bVar1 - 0x20) < 0x1c) {\n              bVar6 = ~(byte)(0x8001305 >> (bVar1 - 0x20 & 0x1f)) & 1;\n            }\n            if ((bVar1 == 9) || (bVar6 == 0)) {\n              if ((uVar16 < local_44) && (*(int *)(&DAT_0005e006 + unaff_EBP) == 0)) {\nLAB_0002b0c6:\n                if (bVar1 == 0x3d) {\nLAB_0002b0cf:\n                  FUN_000358a0(local_3c);\n                  iVar11 = FUN_00028c80(local_3c);\n                  if (local_48[iVar11] != '=') {\n                    iVar11 = dcgettext(0,unaff_EBP + 0x3457a,5);\n                    goto LAB_0002b07a;\n                  }\n                  uVar13 = FUN_00035970(local_3c);\n                  iVar11 = FUN_000254b0(*(undefined4 *)(iVar8 + 0x14),uVar13);\n                  uVar13 = local_3c[0];\n                  if (iVar11 == 0) {\n                    uVar10 = *(undefined4 *)(iVar8 + 0x18);\n                    uVar12 = dcgettext(0,unaff_EBP + 0x3459a,5);\n                    FUN_0002bd60(uVar12,uVar13,uVar10);\n                    FUN_000358a0(local_3c);\n                    uVar9 = FUN_00029a00();\n                    bVar4 = true;\n                    goto LAB_0002aebd;\n                  }\n                  if (*(int *)(iVar11 + 0x20) != 0) {\n                    uVar13 = *(undefined4 *)(iVar8 + 0x18);\n                    uVar10 = *(undefined4 *)(iVar11 + 4);\n                    uVar12 = dcgettext(0,unaff_EBP + 0x345ce,5);\n                    FUN_0002bc80(uVar12,uVar10,uVar13);\n                    FUN_000358a0(iVar11 + 0x1c);\n                  }\n                  uVar9 = FUN_00029a00();\n                  bVar4 = true;\n                  iVar2 = *(int *)(&DAT_0005e002 + unaff_EBP);\n                  local_58 = (local_58 + 1) - (uint)(*(int *)(iVar11 + 0x20) == 0);\n                  goto joined_r0x0002b16d;\n                }\n              }\n              break;\n            }\n            if (*(int *)(&DAT_0005e006 + unaff_EBP) != 0) break;\n            if (*(int *)(&DAT_0005e002 + unaff_EBP) != 0) {\n              if ((bVar1 & 0xfd) == 0x3c) {\n                if (uVar16 < local_44) goto LAB_0002b0c6;\n                break;\n              }\n              if (bVar1 == 0x27) break;\n            }\n            if (bVar1 == 0x3d) {\n              if (uVar16 < local_44) goto LAB_0002b0cf;\n              break;\n            }\n            uVar16 = uVar16 + 1;\n          } while (uVar16 != local_44);\n          if (bVar4) {\n            iVar11 = dcgettext(0,unaff_EBP + 0x3460e,5);\nLAB_0002b07a:\n            if (iVar11 == 0) break;\n            if (*(int *)(&DAT_0005e002 + unaff_EBP) != 0) goto LAB_0002af93;\nLAB_0002b090:\n            FUN_000357d0(local_3c);\n            goto LAB_0002afd9;\n          }\n          if (puVar18 == (undefined4 *)0x0) {\n            if (*(int *)(&DAT_0005e002 + unaff_EBP) == 0) {\n              iVar11 = dcgettext(0,unaff_EBP + 0x34312,5);\n              if (iVar11 != 0) goto LAB_0002b090;\n              piVar17 = *(int **)(iVar8 + 0x10);\n              if (piVar17 == (int *)0x0) goto LAB_0002af6d;\n              goto LAB_0002aef9;\n            }\n            puVar18 = (undefined4 *)FUN_00028ba0();\n            iVar11 = -1;\n            puVar14 = *(undefined4 **)(iVar8 + 0x10);\n            if (*(undefined4 **)(iVar8 + 0x10) == (undefined4 *)0x0) {\n              iVar11 = 0;\n              puVar15 = (undefined4 *)(iVar8 + 0x10);\n            }\n            else {\n              do {\n                puVar15 = puVar14;\n                if (iVar11 <= (int)puVar15[10]) {\n                  iVar11 = puVar15[10] + 1;\n                }\n                puVar14 = (undefined4 *)*puVar15;\n              } while ((undefined4 *)*puVar15 != (undefined4 *)0x0);\n              if (iVar11 == -1) {\n                iVar11 = 0;\n              }\n            }\n            *puVar15 = puVar18;\n            puVar18[10] = iVar11;\n          }\n          if (puVar18[0xb] == 2) {\n            FUN_00035930(puVar18 + 7,local_48 + uVar9,local_44 - uVar9);\n            uVar9 = local_44;\n          }\n          else {\n            uVar9 = FUN_00029a00();\n          }\n          local_58 = (local_58 + 1) - (uint)(puVar18[8] == 0);\n          do {\n            puVar18 = (undefined4 *)*puVar18;\n            if (puVar18 == (undefined4 *)0x0) break;\n          } while ((int)puVar18[10] < 0);\nLAB_0002aebd:\n          iVar2 = *(int *)(&DAT_0005e002 + unaff_EBP);\njoined_r0x0002b16d:\n          if (iVar2 != 0) goto LAB_0002aecb;\n          uVar9 = FUN_000359c0(uVar9,&local_48);\n          if (local_44 <= uVar9) break;\n        } while( true );\n      }\n      piVar17 = *(int **)(iVar8 + 0x10);\n      if (piVar17 != (int *)0x0) goto LAB_0002aef9;\n      goto LAB_0002af58;\n    }" { (expression_statement "FUN_00035790(&local_48);" (call_expression "FUN_00035790(&local_48)" identifier (argument_list "(&local_48)" ( (pointer_expression "&local_48" & identifier) ))) ;) (expression_statement "bVar1 = *pbVar19;" (assignment_expression "bVar1 = *pbVar19" identifier = (pointer_expression "*pbVar19" * identifier)) ;) (while_statement "while ((0xd < bVar1 || ((0x2401U >> ((int)(char)bVar1 & 0x1fU) & 1) == 0))) {\n        pbVar19 = pbVar19 + 1;\n        FUN_000358b0(&local_48,(int)(char)bVar1);\n        bVar1 = *pbVar19;\n      }" while (parenthesized_expression "((0xd < bVar1 || ((0x2401U >> ((int)(char)bVar1 & 0x1fU) & 1) == 0)))" ( (parenthesized_expression "(0xd < bVar1 || ((0x2401U >> ((int)(char)bVar1 & 0x1fU) & 1) == 0))" ( (binary_expression "0xd < bVar1 || ((0x2401U >> ((int)(char)bVar1 & 0x1fU) & 1) == 0)" (binary_expression "0xd < bVar1" number_literal < identifier) || (parenthesized_expression "((0x2401U >> ((int)(char)bVar1 & 0x1fU) & 1) == 0)" ( (binary_expression "(0x2401U >> ((int)(char)bVar1 & 0x1fU) & 1) == 0" (parenthesized_expression "(0x2401U >> ((int)(char)bVar1 & 0x1fU) & 1)" ( (binary_expression "0x2401U >> ((int)(char)bVar1 & 0x1fU) & 1" (binary_expression "0x2401U >> ((int)(char)bVar1 & 0x1fU)" number_literal >> (parenthesized_expression "((int)(char)bVar1 & 0x1fU)" ( (binary_expression "(int)(char)bVar1 & 0x1fU" (cast_expression "(int)(char)bVar1" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)bVar1" ( (type_descriptor "char" primitive_type) ) identifier)) & number_literal) ))) & number_literal) )) == number_literal) ))) )) )) (compound_statement "{\n        pbVar19 = pbVar19 + 1;\n        FUN_000358b0(&local_48,(int)(char)bVar1);\n        bVar1 = *pbVar19;\n      }" { (expression_statement "pbVar19 = pbVar19 + 1;" (assignment_expression "pbVar19 = pbVar19 + 1" identifier = (binary_expression "pbVar19 + 1" identifier + number_literal)) ;) (expression_statement "FUN_000358b0(&local_48,(int)(char)bVar1);" (call_expression "FUN_000358b0(&local_48,(int)(char)bVar1)" identifier (argument_list "(&local_48,(int)(char)bVar1)" ( (pointer_expression "&local_48" & identifier) , (cast_expression "(int)(char)bVar1" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)bVar1" ( (type_descriptor "char" primitive_type) ) identifier)) ))) ;) (expression_statement "bVar1 = *pbVar19;" (assignment_expression "bVar1 = *pbVar19" identifier = (pointer_expression "*pbVar19" * identifier)) ;) })) (expression_statement "FUN_00035790(param_2);" (call_expression "FUN_00035790(param_2)" identifier (argument_list "(param_2)" ( identifier ))) ;) (expression_statement "FUN_00035790(local_3c);" (call_expression "FUN_00035790(local_3c)" identifier (argument_list "(local_3c)" ( identifier ))) ;) (expression_statement "piVar17 = *(int **)(iVar8 + 0x10);" (assignment_expression "piVar17 = *(int **)(iVar8 + 0x10)" identifier = (pointer_expression "*(int **)(iVar8 + 0x10)" * (cast_expression "(int **)(iVar8 + 0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar8 + 0x10)" ( (binary_expression "iVar8 + 0x10" identifier + number_literal) ))))) ;) (if_statement "if (piVar17 != (int *)0x0) {\n        do {\n          FUN_000358a0(piVar17 + 7);\n          piVar17 = (int *)*piVar17;\n        } while (piVar17 != (int *)0x0);\n        for (puVar18 = *(undefined4 **)(iVar8 + 0x10); puVar18 != (undefined4 *)0x0;\n            puVar18 = (undefined4 *)*puVar18) {\n          if (-1 < (int)puVar18[10]) goto LAB_0002adc1;\n        }\n      }" if (parenthesized_expression "(piVar17 != (int *)0x0)" ( (binary_expression "piVar17 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        do {\n          FUN_000358a0(piVar17 + 7);\n          piVar17 = (int *)*piVar17;\n        } while (piVar17 != (int *)0x0);\n        for (puVar18 = *(undefined4 **)(iVar8 + 0x10); puVar18 != (undefined4 *)0x0;\n            puVar18 = (undefined4 *)*puVar18) {\n          if (-1 < (int)puVar18[10]) goto LAB_0002adc1;\n        }\n      }" { (do_statement "do {\n          FUN_000358a0(piVar17 + 7);\n          piVar17 = (int *)*piVar17;\n        } while (piVar17 != (int *)0x0);" do (compound_statement "{\n          FUN_000358a0(piVar17 + 7);\n          piVar17 = (int *)*piVar17;\n        }" { (expression_statement "FUN_000358a0(piVar17 + 7);" (call_expression "FUN_000358a0(piVar17 + 7)" identifier (argument_list "(piVar17 + 7)" ( (binary_expression "piVar17 + 7" identifier + number_literal) ))) ;) (expression_statement "piVar17 = (int *)*piVar17;" (assignment_expression "piVar17 = (int *)*piVar17" identifier = (cast_expression "(int *)*piVar17" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar17" * identifier))) ;) }) while (parenthesized_expression "(piVar17 != (int *)0x0)" ( (binary_expression "piVar17 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (for_statement "for (puVar18 = *(undefined4 **)(iVar8 + 0x10); puVar18 != (undefined4 *)0x0;\n            puVar18 = (undefined4 *)*puVar18) {\n          if (-1 < (int)puVar18[10]) goto LAB_0002adc1;\n        }" for ( (assignment_expression "puVar18 = *(undefined4 **)(iVar8 + 0x10)" identifier = (pointer_expression "*(undefined4 **)(iVar8 + 0x10)" * (cast_expression "(undefined4 **)(iVar8 + 0x10)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar8 + 0x10)" ( (binary_expression "iVar8 + 0x10" identifier + number_literal) ))))) ; (binary_expression "puVar18 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ; (assignment_expression "puVar18 = (undefined4 *)*puVar18" identifier = (cast_expression "(undefined4 *)*puVar18" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar18" * identifier))) ) (compound_statement "{\n          if (-1 < (int)puVar18[10]) goto LAB_0002adc1;\n        }" { (if_statement "if (-1 < (int)puVar18[10]) goto LAB_0002adc1;" if (parenthesized_expression "(-1 < (int)puVar18[10])" ( (binary_expression "-1 < (int)puVar18[10]" number_literal < (cast_expression "(int)puVar18[10]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "puVar18[10]" identifier [ number_literal ]))) )) (goto_statement "goto LAB_0002adc1;" goto statement_identifier ;)) })) })) (expression_statement "puVar18 = (undefined4 *)0x0;" (assignment_expression "puVar18 = (undefined4 *)0x0" identifier = (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (labeled_statement "LAB_0002adc1:\n      uVar9 = 0;" statement_identifier : (expression_statement "uVar9 = 0;" (assignment_expression "uVar9 = 0" identifier = number_literal) ;)) (if_statement "if ((*(int *)(&DAT_0005e002 + unaff_EBP) != 0) && (uVar9 = local_44, local_44 != 0)) {\n        if (*local_48 == '.') {\n          if (((local_44 < 2) || (local_48[1] == ' ')) || (local_48[1] == '\t')) {\n            uVar9 = 1;\n          }\n          else {\n            puVar14 = (undefined4 *)FUN_00028ba0();\n            puVar14[10] = 0xffffffff;\n            *puVar14 = *(undefined4 *)(iVar8 + 0x10);\n            *(undefined4 **)(iVar8 + 0x10) = puVar14;\n            uVar9 = FUN_00029a00();\n          }\n        }\n        else {\n          uVar9 = 0;\n        }\n      }" if (parenthesized_expression "((*(int *)(&DAT_0005e002 + unaff_EBP) != 0) && (uVar9 = local_44, local_44 != 0))" ( (binary_expression "(*(int *)(&DAT_0005e002 + unaff_EBP) != 0) && (uVar9 = local_44, local_44 != 0)" (parenthesized_expression "(*(int *)(&DAT_0005e002 + unaff_EBP) != 0)" ( (binary_expression "*(int *)(&DAT_0005e002 + unaff_EBP) != 0" (pointer_expression "*(int *)(&DAT_0005e002 + unaff_EBP)" * (cast_expression "(int *)(&DAT_0005e002 + unaff_EBP)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_0005e002 + unaff_EBP)" ( (binary_expression "&DAT_0005e002 + unaff_EBP" (pointer_expression "&DAT_0005e002" & identifier) + identifier) )))) != number_literal) )) && (parenthesized_expression "(uVar9 = local_44, local_44 != 0)" ( (comma_expression "uVar9 = local_44, local_44 != 0" (assignment_expression "uVar9 = local_44" identifier = identifier) , (binary_expression "local_44 != 0" identifier != number_literal)) ))) )) (compound_statement "{\n        if (*local_48 == '.') {\n          if (((local_44 < 2) || (local_48[1] == ' ')) || (local_48[1] == '\t')) {\n            uVar9 = 1;\n          }\n          else {\n            puVar14 = (undefined4 *)FUN_00028ba0();\n            puVar14[10] = 0xffffffff;\n            *puVar14 = *(undefined4 *)(iVar8 + 0x10);\n            *(undefined4 **)(iVar8 + 0x10) = puVar14;\n            uVar9 = FUN_00029a00();\n          }\n        }\n        else {\n          uVar9 = 0;\n        }\n      }" { (if_statement "if (*local_48 == '.') {\n          if (((local_44 < 2) || (local_48[1] == ' ')) || (local_48[1] == '\t')) {\n            uVar9 = 1;\n          }\n          else {\n            puVar14 = (undefined4 *)FUN_00028ba0();\n            puVar14[10] = 0xffffffff;\n            *puVar14 = *(undefined4 *)(iVar8 + 0x10);\n            *(undefined4 **)(iVar8 + 0x10) = puVar14;\n            uVar9 = FUN_00029a00();\n          }\n        }\n        else {\n          uVar9 = 0;\n        }" if (parenthesized_expression "(*local_48 == '.')" ( (binary_expression "*local_48 == '.'" (pointer_expression "*local_48" * identifier) == (char_literal "'.'" ' character ')) )) (compound_statement "{\n          if (((local_44 < 2) || (local_48[1] == ' ')) || (local_48[1] == '\t')) {\n            uVar9 = 1;\n          }\n          else {\n            puVar14 = (undefined4 *)FUN_00028ba0();\n            puVar14[10] = 0xffffffff;\n            *puVar14 = *(undefined4 *)(iVar8 + 0x10);\n            *(undefined4 **)(iVar8 + 0x10) = puVar14;\n            uVar9 = FUN_00029a00();\n          }\n        }" { (if_statement "if (((local_44 < 2) || (local_48[1] == ' ')) || (local_48[1] == '\t')) {\n            uVar9 = 1;\n          }\n          else {\n            puVar14 = (undefined4 *)FUN_00028ba0();\n            puVar14[10] = 0xffffffff;\n            *puVar14 = *(undefined4 *)(iVar8 + 0x10);\n            *(undefined4 **)(iVar8 + 0x10) = puVar14;\n            uVar9 = FUN_00029a00();\n          }" if (parenthesized_expression "(((local_44 < 2) || (local_48[1] == ' ')) || (local_48[1] == '\t'))" ( (binary_expression "((local_44 < 2) || (local_48[1] == ' ')) || (local_48[1] == '\t')" (parenthesized_expression "((local_44 < 2) || (local_48[1] == ' '))" ( (binary_expression "(local_44 < 2) || (local_48[1] == ' ')" (parenthesized_expression "(local_44 < 2)" ( (binary_expression "local_44 < 2" identifier < number_literal) )) || (parenthesized_expression "(local_48[1] == ' ')" ( (binary_expression "local_48[1] == ' '" (subscript_expression "local_48[1]" identifier [ number_literal ]) == (char_literal "' '" ' character ')) ))) )) || (parenthesized_expression "(local_48[1] == '\t')" ( (binary_expression "local_48[1] == '\t'" (subscript_expression "local_48[1]" identifier [ number_literal ]) == (char_literal "'\t'" ' escape_sequence ')) ))) )) (compound_statement "{\n            uVar9 = 1;\n          }" { (expression_statement "uVar9 = 1;" (assignment_expression "uVar9 = 1" identifier = number_literal) ;) }) (else_clause "else {\n            puVar14 = (undefined4 *)FUN_00028ba0();\n            puVar14[10] = 0xffffffff;\n            *puVar14 = *(undefined4 *)(iVar8 + 0x10);\n            *(undefined4 **)(iVar8 + 0x10) = puVar14;\n            uVar9 = FUN_00029a00();\n          }" else (compound_statement "{\n            puVar14 = (undefined4 *)FUN_00028ba0();\n            puVar14[10] = 0xffffffff;\n            *puVar14 = *(undefined4 *)(iVar8 + 0x10);\n            *(undefined4 **)(iVar8 + 0x10) = puVar14;\n            uVar9 = FUN_00029a00();\n          }" { (expression_statement "puVar14 = (undefined4 *)FUN_00028ba0();" (assignment_expression "puVar14 = (undefined4 *)FUN_00028ba0()" identifier = (cast_expression "(undefined4 *)FUN_00028ba0()" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00028ba0()" identifier (argument_list "()" ( ))))) ;) (expression_statement "puVar14[10] = 0xffffffff;" (assignment_expression "puVar14[10] = 0xffffffff" (subscript_expression "puVar14[10]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*puVar14 = *(undefined4 *)(iVar8 + 0x10);" (assignment_expression "*puVar14 = *(undefined4 *)(iVar8 + 0x10)" (pointer_expression "*puVar14" * identifier) = (pointer_expression "*(undefined4 *)(iVar8 + 0x10)" * (cast_expression "(undefined4 *)(iVar8 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x10)" ( (binary_expression "iVar8 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 **)(iVar8 + 0x10) = puVar14;" (assignment_expression "*(undefined4 **)(iVar8 + 0x10) = puVar14" (pointer_expression "*(undefined4 **)(iVar8 + 0x10)" * (cast_expression "(undefined4 **)(iVar8 + 0x10)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar8 + 0x10)" ( (binary_expression "iVar8 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "uVar9 = FUN_00029a00();" (assignment_expression "uVar9 = FUN_00029a00()" identifier = (call_expression "FUN_00029a00()" identifier (argument_list "()" ( )))) ;) }))) }) (else_clause "else {\n          uVar9 = 0;\n        }" else (compound_statement "{\n          uVar9 = 0;\n        }" { (expression_statement "uVar9 = 0;" (assignment_expression "uVar9 = 0" identifier = number_literal) ;) }))) })) (expression_statement "uVar9 = FUN_00035980(uVar9,&local_48);" (assignment_expression "uVar9 = FUN_00035980(uVar9,&local_48)" identifier = (call_expression "FUN_00035980(uVar9,&local_48)" identifier (argument_list "(uVar9,&local_48)" ( identifier , (pointer_expression "&local_48" & identifier) )))) ;) (expression_statement "local_58 = 0;" (assignment_expression "local_58 = 0" identifier = number_literal) ;) (expression_statement "bVar4 = false;" (assignment_expression "bVar4 = false" identifier = false) ;) (labeled_statement "LAB_0002ae00:\n      if (uVar9 < local_44) {\n        do {\n          uVar16 = uVar9;\n          do {\n            bVar1 = local_48[uVar16];\n            bVar6 = 1;\n            if ((byte)(bVar1 - 0x20) < 0x1c) {\n              bVar6 = ~(byte)(0x8001305 >> (bVar1 - 0x20 & 0x1f)) & 1;\n            }\n            if ((bVar1 == 9) || (bVar6 == 0)) {\n              if ((uVar16 < local_44) && (*(int *)(&DAT_0005e006 + unaff_EBP) == 0)) {\nLAB_0002b0c6:\n                if (bVar1 == 0x3d) {\nLAB_0002b0cf:\n                  FUN_000358a0(local_3c);\n                  iVar11 = FUN_00028c80(local_3c);\n                  if (local_48[iVar11] != '=') {\n                    iVar11 = dcgettext(0,unaff_EBP + 0x3457a,5);\n                    goto LAB_0002b07a;\n                  }\n                  uVar13 = FUN_00035970(local_3c);\n                  iVar11 = FUN_000254b0(*(undefined4 *)(iVar8 + 0x14),uVar13);\n                  uVar13 = local_3c[0];\n                  if (iVar11 == 0) {\n                    uVar10 = *(undefined4 *)(iVar8 + 0x18);\n                    uVar12 = dcgettext(0,unaff_EBP + 0x3459a,5);\n                    FUN_0002bd60(uVar12,uVar13,uVar10);\n                    FUN_000358a0(local_3c);\n                    uVar9 = FUN_00029a00();\n                    bVar4 = true;\n                    goto LAB_0002aebd;\n                  }\n                  if (*(int *)(iVar11 + 0x20) != 0) {\n                    uVar13 = *(undefined4 *)(iVar8 + 0x18);\n                    uVar10 = *(undefined4 *)(iVar11 + 4);\n                    uVar12 = dcgettext(0,unaff_EBP + 0x345ce,5);\n                    FUN_0002bc80(uVar12,uVar10,uVar13);\n                    FUN_000358a0(iVar11 + 0x1c);\n                  }\n                  uVar9 = FUN_00029a00();\n                  bVar4 = true;\n                  iVar2 = *(int *)(&DAT_0005e002 + unaff_EBP);\n                  local_58 = (local_58 + 1) - (uint)(*(int *)(iVar11 + 0x20) == 0);\n                  goto joined_r0x0002b16d;\n                }\n              }\n              break;\n            }\n            if (*(int *)(&DAT_0005e006 + unaff_EBP) != 0) break;\n            if (*(int *)(&DAT_0005e002 + unaff_EBP) != 0) {\n              if ((bVar1 & 0xfd) == 0x3c) {\n                if (uVar16 < local_44) goto LAB_0002b0c6;\n                break;\n              }\n              if (bVar1 == 0x27) break;\n            }\n            if (bVar1 == 0x3d) {\n              if (uVar16 < local_44) goto LAB_0002b0cf;\n              break;\n            }\n            uVar16 = uVar16 + 1;\n          } while (uVar16 != local_44);\n          if (bVar4) {\n            iVar11 = dcgettext(0,unaff_EBP + 0x3460e,5);\nLAB_0002b07a:\n            if (iVar11 == 0) break;\n            if (*(int *)(&DAT_0005e002 + unaff_EBP) != 0) goto LAB_0002af93;\nLAB_0002b090:\n            FUN_000357d0(local_3c);\n            goto LAB_0002afd9;\n          }\n          if (puVar18 == (undefined4 *)0x0) {\n            if (*(int *)(&DAT_0005e002 + unaff_EBP) == 0) {\n              iVar11 = dcgettext(0,unaff_EBP + 0x34312,5);\n              if (iVar11 != 0) goto LAB_0002b090;\n              piVar17 = *(int **)(iVar8 + 0x10);\n              if (piVar17 == (int *)0x0) goto LAB_0002af6d;\n              goto LAB_0002aef9;\n            }\n            puVar18 = (undefined4 *)FUN_00028ba0();\n            iVar11 = -1;\n            puVar14 = *(undefined4 **)(iVar8 + 0x10);\n            if (*(undefined4 **)(iVar8 + 0x10) == (undefined4 *)0x0) {\n              iVar11 = 0;\n              puVar15 = (undefined4 *)(iVar8 + 0x10);\n            }\n            else {\n              do {\n                puVar15 = puVar14;\n                if (iVar11 <= (int)puVar15[10]) {\n                  iVar11 = puVar15[10] + 1;\n                }\n                puVar14 = (undefined4 *)*puVar15;\n              } while ((undefined4 *)*puVar15 != (undefined4 *)0x0);\n              if (iVar11 == -1) {\n                iVar11 = 0;\n              }\n            }\n            *puVar15 = puVar18;\n            puVar18[10] = iVar11;\n          }\n          if (puVar18[0xb] == 2) {\n            FUN_00035930(puVar18 + 7,local_48 + uVar9,local_44 - uVar9);\n            uVar9 = local_44;\n          }\n          else {\n            uVar9 = FUN_00029a00();\n          }\n          local_58 = (local_58 + 1) - (uint)(puVar18[8] == 0);\n          do {\n            puVar18 = (undefined4 *)*puVar18;\n            if (puVar18 == (undefined4 *)0x0) break;\n          } while ((int)puVar18[10] < 0);\nLAB_0002aebd:\n          iVar2 = *(int *)(&DAT_0005e002 + unaff_EBP);\njoined_r0x0002b16d:\n          if (iVar2 != 0) goto LAB_0002aecb;\n          uVar9 = FUN_000359c0(uVar9,&local_48);\n          if (local_44 <= uVar9) break;\n        } while( true );\n      }" statement_identifier : (if_statement "if (uVar9 < local_44) {\n        do {\n          uVar16 = uVar9;\n          do {\n            bVar1 = local_48[uVar16];\n            bVar6 = 1;\n            if ((byte)(bVar1 - 0x20) < 0x1c) {\n              bVar6 = ~(byte)(0x8001305 >> (bVar1 - 0x20 & 0x1f)) & 1;\n            }\n            if ((bVar1 == 9) || (bVar6 == 0)) {\n              if ((uVar16 < local_44) && (*(int *)(&DAT_0005e006 + unaff_EBP) == 0)) {\nLAB_0002b0c6:\n                if (bVar1 == 0x3d) {\nLAB_0002b0cf:\n                  FUN_000358a0(local_3c);\n                  iVar11 = FUN_00028c80(local_3c);\n                  if (local_48[iVar11] != '=') {\n                    iVar11 = dcgettext(0,unaff_EBP + 0x3457a,5);\n                    goto LAB_0002b07a;\n                  }\n                  uVar13 = FUN_00035970(local_3c);\n                  iVar11 = FUN_000254b0(*(undefined4 *)(iVar8 + 0x14),uVar13);\n                  uVar13 = local_3c[0];\n                  if (iVar11 == 0) {\n                    uVar10 = *(undefined4 *)(iVar8 + 0x18);\n                    uVar12 = dcgettext(0,unaff_EBP + 0x3459a,5);\n                    FUN_0002bd60(uVar12,uVar13,uVar10);\n                    FUN_000358a0(local_3c);\n                    uVar9 = FUN_00029a00();\n                    bVar4 = true;\n                    goto LAB_0002aebd;\n                  }\n                  if (*(int *)(iVar11 + 0x20) != 0) {\n                    uVar13 = *(undefined4 *)(iVar8 + 0x18);\n                    uVar10 = *(undefined4 *)(iVar11 + 4);\n                    uVar12 = dcgettext(0,unaff_EBP + 0x345ce,5);\n                    FUN_0002bc80(uVar12,uVar10,uVar13);\n                    FUN_000358a0(iVar11 + 0x1c);\n                  }\n                  uVar9 = FUN_00029a00();\n                  bVar4 = true;\n                  iVar2 = *(int *)(&DAT_0005e002 + unaff_EBP);\n                  local_58 = (local_58 + 1) - (uint)(*(int *)(iVar11 + 0x20) == 0);\n                  goto joined_r0x0002b16d;\n                }\n              }\n              break;\n            }\n            if (*(int *)(&DAT_0005e006 + unaff_EBP) != 0) break;\n            if (*(int *)(&DAT_0005e002 + unaff_EBP) != 0) {\n              if ((bVar1 & 0xfd) == 0x3c) {\n                if (uVar16 < local_44) goto LAB_0002b0c6;\n                break;\n              }\n              if (bVar1 == 0x27) break;\n            }\n            if (bVar1 == 0x3d) {\n              if (uVar16 < local_44) goto LAB_0002b0cf;\n              break;\n            }\n            uVar16 = uVar16 + 1;\n          } while (uVar16 != local_44);\n          if (bVar4) {\n            iVar11 = dcgettext(0,unaff_EBP + 0x3460e,5);\nLAB_0002b07a:\n            if (iVar11 == 0) break;\n            if (*(int *)(&DAT_0005e002 + unaff_EBP) != 0) goto LAB_0002af93;\nLAB_0002b090:\n            FUN_000357d0(local_3c);\n            goto LAB_0002afd9;\n          }\n          if (puVar18 == (undefined4 *)0x0) {\n            if (*(int *)(&DAT_0005e002 + unaff_EBP) == 0) {\n              iVar11 = dcgettext(0,unaff_EBP + 0x34312,5);\n              if (iVar11 != 0) goto LAB_0002b090;\n              piVar17 = *(int **)(iVar8 + 0x10);\n              if (piVar17 == (int *)0x0) goto LAB_0002af6d;\n              goto LAB_0002aef9;\n            }\n            puVar18 = (undefined4 *)FUN_00028ba0();\n            iVar11 = -1;\n            puVar14 = *(undefined4 **)(iVar8 + 0x10);\n            if (*(undefined4 **)(iVar8 + 0x10) == (undefined4 *)0x0) {\n              iVar11 = 0;\n              puVar15 = (undefined4 *)(iVar8 + 0x10);\n            }\n            else {\n              do {\n                puVar15 = puVar14;\n                if (iVar11 <= (int)puVar15[10]) {\n                  iVar11 = puVar15[10] + 1;\n                }\n                puVar14 = (undefined4 *)*puVar15;\n              } while ((undefined4 *)*puVar15 != (undefined4 *)0x0);\n              if (iVar11 == -1) {\n                iVar11 = 0;\n              }\n            }\n            *puVar15 = puVar18;\n            puVar18[10] = iVar11;\n          }\n          if (puVar18[0xb] == 2) {\n            FUN_00035930(puVar18 + 7,local_48 + uVar9,local_44 - uVar9);\n            uVar9 = local_44;\n          }\n          else {\n            uVar9 = FUN_00029a00();\n          }\n          local_58 = (local_58 + 1) - (uint)(puVar18[8] == 0);\n          do {\n            puVar18 = (undefined4 *)*puVar18;\n            if (puVar18 == (undefined4 *)0x0) break;\n          } while ((int)puVar18[10] < 0);\nLAB_0002aebd:\n          iVar2 = *(int *)(&DAT_0005e002 + unaff_EBP);\njoined_r0x0002b16d:\n          if (iVar2 != 0) goto LAB_0002aecb;\n          uVar9 = FUN_000359c0(uVar9,&local_48);\n          if (local_44 <= uVar9) break;\n        } while( true );\n      }" if (parenthesized_expression "(uVar9 < local_44)" ( (binary_expression "uVar9 < local_44" identifier < identifier) )) (compound_statement "{\n        do {\n          uVar16 = uVar9;\n          do {\n            bVar1 = local_48[uVar16];\n            bVar6 = 1;\n            if ((byte)(bVar1 - 0x20) < 0x1c) {\n              bVar6 = ~(byte)(0x8001305 >> (bVar1 - 0x20 & 0x1f)) & 1;\n            }\n            if ((bVar1 == 9) || (bVar6 == 0)) {\n              if ((uVar16 < local_44) && (*(int *)(&DAT_0005e006 + unaff_EBP) == 0)) {\nLAB_0002b0c6:\n                if (bVar1 == 0x3d) {\nLAB_0002b0cf:\n                  FUN_000358a0(local_3c);\n                  iVar11 = FUN_00028c80(local_3c);\n                  if (local_48[iVar11] != '=') {\n                    iVar11 = dcgettext(0,unaff_EBP + 0x3457a,5);\n                    goto LAB_0002b07a;\n                  }\n                  uVar13 = FUN_00035970(local_3c);\n                  iVar11 = FUN_000254b0(*(undefined4 *)(iVar8 + 0x14),uVar13);\n                  uVar13 = local_3c[0];\n                  if (iVar11 == 0) {\n                    uVar10 = *(undefined4 *)(iVar8 + 0x18);\n                    uVar12 = dcgettext(0,unaff_EBP + 0x3459a,5);\n                    FUN_0002bd60(uVar12,uVar13,uVar10);\n                    FUN_000358a0(local_3c);\n                    uVar9 = FUN_00029a00();\n                    bVar4 = true;\n                    goto LAB_0002aebd;\n                  }\n                  if (*(int *)(iVar11 + 0x20) != 0) {\n                    uVar13 = *(undefined4 *)(iVar8 + 0x18);\n                    uVar10 = *(undefined4 *)(iVar11 + 4);\n                    uVar12 = dcgettext(0,unaff_EBP + 0x345ce,5);\n                    FUN_0002bc80(uVar12,uVar10,uVar13);\n                    FUN_000358a0(iVar11 + 0x1c);\n                  }\n                  uVar9 = FUN_00029a00();\n                  bVar4 = true;\n                  iVar2 = *(int *)(&DAT_0005e002 + unaff_EBP);\n                  local_58 = (local_58 + 1) - (uint)(*(int *)(iVar11 + 0x20) == 0);\n                  goto joined_r0x0002b16d;\n                }\n              }\n              break;\n            }\n            if (*(int *)(&DAT_0005e006 + unaff_EBP) != 0) break;\n            if (*(int *)(&DAT_0005e002 + unaff_EBP) != 0) {\n              if ((bVar1 & 0xfd) == 0x3c) {\n                if (uVar16 < local_44) goto LAB_0002b0c6;\n                break;\n              }\n              if (bVar1 == 0x27) break;\n            }\n            if (bVar1 == 0x3d) {\n              if (uVar16 < local_44) goto LAB_0002b0cf;\n              break;\n            }\n            uVar16 = uVar16 + 1;\n          } while (uVar16 != local_44);\n          if (bVar4) {\n            iVar11 = dcgettext(0,unaff_EBP + 0x3460e,5);\nLAB_0002b07a:\n            if (iVar11 == 0) break;\n            if (*(int *)(&DAT_0005e002 + unaff_EBP) != 0) goto LAB_0002af93;\nLAB_0002b090:\n            FUN_000357d0(local_3c);\n            goto LAB_0002afd9;\n          }\n          if (puVar18 == (undefined4 *)0x0) {\n            if (*(int *)(&DAT_0005e002 + unaff_EBP) == 0) {\n              iVar11 = dcgettext(0,unaff_EBP + 0x34312,5);\n              if (iVar11 != 0) goto LAB_0002b090;\n              piVar17 = *(int **)(iVar8 + 0x10);\n              if (piVar17 == (int *)0x0) goto LAB_0002af6d;\n              goto LAB_0002aef9;\n            }\n            puVar18 = (undefined4 *)FUN_00028ba0();\n            iVar11 = -1;\n            puVar14 = *(undefined4 **)(iVar8 + 0x10);\n            if (*(undefined4 **)(iVar8 + 0x10) == (undefined4 *)0x0) {\n              iVar11 = 0;\n              puVar15 = (undefined4 *)(iVar8 + 0x10);\n            }\n            else {\n              do {\n                puVar15 = puVar14;\n                if (iVar11 <= (int)puVar15[10]) {\n                  iVar11 = puVar15[10] + 1;\n                }\n                puVar14 = (undefined4 *)*puVar15;\n              } while ((undefined4 *)*puVar15 != (undefined4 *)0x0);\n              if (iVar11 == -1) {\n                iVar11 = 0;\n              }\n            }\n            *puVar15 = puVar18;\n            puVar18[10] = iVar11;\n          }\n          if (puVar18[0xb] == 2) {\n            FUN_00035930(puVar18 + 7,local_48 + uVar9,local_44 - uVar9);\n            uVar9 = local_44;\n          }\n          else {\n            uVar9 = FUN_00029a00();\n          }\n          local_58 = (local_58 + 1) - (uint)(puVar18[8] == 0);\n          do {\n            puVar18 = (undefined4 *)*puVar18;\n            if (puVar18 == (undefined4 *)0x0) break;\n          } while ((int)puVar18[10] < 0);\nLAB_0002aebd:\n          iVar2 = *(int *)(&DAT_0005e002 + unaff_EBP);\njoined_r0x0002b16d:\n          if (iVar2 != 0) goto LAB_0002aecb;\n          uVar9 = FUN_000359c0(uVar9,&local_48);\n          if (local_44 <= uVar9) break;\n        } while( true );\n      }" { (do_statement "do {\n          uVar16 = uVar9;\n          do {\n            bVar1 = local_48[uVar16];\n            bVar6 = 1;\n            if ((byte)(bVar1 - 0x20) < 0x1c) {\n              bVar6 = ~(byte)(0x8001305 >> (bVar1 - 0x20 & 0x1f)) & 1;\n            }\n            if ((bVar1 == 9) || (bVar6 == 0)) {\n              if ((uVar16 < local_44) && (*(int *)(&DAT_0005e006 + unaff_EBP) == 0)) {\nLAB_0002b0c6:\n                if (bVar1 == 0x3d) {\nLAB_0002b0cf:\n                  FUN_000358a0(local_3c);\n                  iVar11 = FUN_00028c80(local_3c);\n                  if (local_48[iVar11] != '=') {\n                    iVar11 = dcgettext(0,unaff_EBP + 0x3457a,5);\n                    goto LAB_0002b07a;\n                  }\n                  uVar13 = FUN_00035970(local_3c);\n                  iVar11 = FUN_000254b0(*(undefined4 *)(iVar8 + 0x14),uVar13);\n                  uVar13 = local_3c[0];\n                  if (iVar11 == 0) {\n                    uVar10 = *(undefined4 *)(iVar8 + 0x18);\n                    uVar12 = dcgettext(0,unaff_EBP + 0x3459a,5);\n                    FUN_0002bd60(uVar12,uVar13,uVar10);\n                    FUN_000358a0(local_3c);\n                    uVar9 = FUN_00029a00();\n                    bVar4 = true;\n                    goto LAB_0002aebd;\n                  }\n                  if (*(int *)(iVar11 + 0x20) != 0) {\n                    uVar13 = *(undefined4 *)(iVar8 + 0x18);\n                    uVar10 = *(undefined4 *)(iVar11 + 4);\n                    uVar12 = dcgettext(0,unaff_EBP + 0x345ce,5);\n                    FUN_0002bc80(uVar12,uVar10,uVar13);\n                    FUN_000358a0(iVar11 + 0x1c);\n                  }\n                  uVar9 = FUN_00029a00();\n                  bVar4 = true;\n                  iVar2 = *(int *)(&DAT_0005e002 + unaff_EBP);\n                  local_58 = (local_58 + 1) - (uint)(*(int *)(iVar11 + 0x20) == 0);\n                  goto joined_r0x0002b16d;\n                }\n              }\n              break;\n            }\n            if (*(int *)(&DAT_0005e006 + unaff_EBP) != 0) break;\n            if (*(int *)(&DAT_0005e002 + unaff_EBP) != 0) {\n              if ((bVar1 & 0xfd) == 0x3c) {\n                if (uVar16 < local_44) goto LAB_0002b0c6;\n                break;\n              }\n              if (bVar1 == 0x27) break;\n            }\n            if (bVar1 == 0x3d) {\n              if (uVar16 < local_44) goto LAB_0002b0cf;\n              break;\n            }\n            uVar16 = uVar16 + 1;\n          } while (uVar16 != local_44);\n          if (bVar4) {\n            iVar11 = dcgettext(0,unaff_EBP + 0x3460e,5);\nLAB_0002b07a:\n            if (iVar11 == 0) break;\n            if (*(int *)(&DAT_0005e002 + unaff_EBP) != 0) goto LAB_0002af93;\nLAB_0002b090:\n            FUN_000357d0(local_3c);\n            goto LAB_0002afd9;\n          }\n          if (puVar18 == (undefined4 *)0x0) {\n            if (*(int *)(&DAT_0005e002 + unaff_EBP) == 0) {\n              iVar11 = dcgettext(0,unaff_EBP + 0x34312,5);\n              if (iVar11 != 0) goto LAB_0002b090;\n              piVar17 = *(int **)(iVar8 + 0x10);\n              if (piVar17 == (int *)0x0) goto LAB_0002af6d;\n              goto LAB_0002aef9;\n            }\n            puVar18 = (undefined4 *)FUN_00028ba0();\n            iVar11 = -1;\n            puVar14 = *(undefined4 **)(iVar8 + 0x10);\n            if (*(undefined4 **)(iVar8 + 0x10) == (undefined4 *)0x0) {\n              iVar11 = 0;\n              puVar15 = (undefined4 *)(iVar8 + 0x10);\n            }\n            else {\n              do {\n                puVar15 = puVar14;\n                if (iVar11 <= (int)puVar15[10]) {\n                  iVar11 = puVar15[10] + 1;\n                }\n                puVar14 = (undefined4 *)*puVar15;\n              } while ((undefined4 *)*puVar15 != (undefined4 *)0x0);\n              if (iVar11 == -1) {\n                iVar11 = 0;\n              }\n            }\n            *puVar15 = puVar18;\n            puVar18[10] = iVar11;\n          }\n          if (puVar18[0xb] == 2) {\n            FUN_00035930(puVar18 + 7,local_48 + uVar9,local_44 - uVar9);\n            uVar9 = local_44;\n          }\n          else {\n            uVar9 = FUN_00029a00();\n          }\n          local_58 = (local_58 + 1) - (uint)(puVar18[8] == 0);\n          do {\n            puVar18 = (undefined4 *)*puVar18;\n            if (puVar18 == (undefined4 *)0x0) break;\n          } while ((int)puVar18[10] < 0);\nLAB_0002aebd:\n          iVar2 = *(int *)(&DAT_0005e002 + unaff_EBP);\njoined_r0x0002b16d:\n          if (iVar2 != 0) goto LAB_0002aecb;\n          uVar9 = FUN_000359c0(uVar9,&local_48);\n          if (local_44 <= uVar9) break;\n        } while( true );" do (compound_statement "{\n          uVar16 = uVar9;\n          do {\n            bVar1 = local_48[uVar16];\n            bVar6 = 1;\n            if ((byte)(bVar1 - 0x20) < 0x1c) {\n              bVar6 = ~(byte)(0x8001305 >> (bVar1 - 0x20 & 0x1f)) & 1;\n            }\n            if ((bVar1 == 9) || (bVar6 == 0)) {\n              if ((uVar16 < local_44) && (*(int *)(&DAT_0005e006 + unaff_EBP) == 0)) {\nLAB_0002b0c6:\n                if (bVar1 == 0x3d) {\nLAB_0002b0cf:\n                  FUN_000358a0(local_3c);\n                  iVar11 = FUN_00028c80(local_3c);\n                  if (local_48[iVar11] != '=') {\n                    iVar11 = dcgettext(0,unaff_EBP + 0x3457a,5);\n                    goto LAB_0002b07a;\n                  }\n                  uVar13 = FUN_00035970(local_3c);\n                  iVar11 = FUN_000254b0(*(undefined4 *)(iVar8 + 0x14),uVar13);\n                  uVar13 = local_3c[0];\n                  if (iVar11 == 0) {\n                    uVar10 = *(undefined4 *)(iVar8 + 0x18);\n                    uVar12 = dcgettext(0,unaff_EBP + 0x3459a,5);\n                    FUN_0002bd60(uVar12,uVar13,uVar10);\n                    FUN_000358a0(local_3c);\n                    uVar9 = FUN_00029a00();\n                    bVar4 = true;\n                    goto LAB_0002aebd;\n                  }\n                  if (*(int *)(iVar11 + 0x20) != 0) {\n                    uVar13 = *(undefined4 *)(iVar8 + 0x18);\n                    uVar10 = *(undefined4 *)(iVar11 + 4);\n                    uVar12 = dcgettext(0,unaff_EBP + 0x345ce,5);\n                    FUN_0002bc80(uVar12,uVar10,uVar13);\n                    FUN_000358a0(iVar11 + 0x1c);\n                  }\n                  uVar9 = FUN_00029a00();\n                  bVar4 = true;\n                  iVar2 = *(int *)(&DAT_0005e002 + unaff_EBP);\n                  local_58 = (local_58 + 1) - (uint)(*(int *)(iVar11 + 0x20) == 0);\n                  goto joined_r0x0002b16d;\n                }\n              }\n              break;\n            }\n            if (*(int *)(&DAT_0005e006 + unaff_EBP) != 0) break;\n            if (*(int *)(&DAT_0005e002 + unaff_EBP) != 0) {\n              if ((bVar1 & 0xfd) == 0x3c) {\n                if (uVar16 < local_44) goto LAB_0002b0c6;\n                break;\n              }\n              if (bVar1 == 0x27) break;\n            }\n            if (bVar1 == 0x3d) {\n              if (uVar16 < local_44) goto LAB_0002b0cf;\n              break;\n            }\n            uVar16 = uVar16 + 1;\n          } while (uVar16 != local_44);\n          if (bVar4) {\n            iVar11 = dcgettext(0,unaff_EBP + 0x3460e,5);\nLAB_0002b07a:\n            if (iVar11 == 0) break;\n            if (*(int *)(&DAT_0005e002 + unaff_EBP) != 0) goto LAB_0002af93;\nLAB_0002b090:\n            FUN_000357d0(local_3c);\n            goto LAB_0002afd9;\n          }\n          if (puVar18 == (undefined4 *)0x0) {\n            if (*(int *)(&DAT_0005e002 + unaff_EBP) == 0) {\n              iVar11 = dcgettext(0,unaff_EBP + 0x34312,5);\n              if (iVar11 != 0) goto LAB_0002b090;\n              piVar17 = *(int **)(iVar8 + 0x10);\n              if (piVar17 == (int *)0x0) goto LAB_0002af6d;\n              goto LAB_0002aef9;\n            }\n            puVar18 = (undefined4 *)FUN_00028ba0();\n            iVar11 = -1;\n            puVar14 = *(undefined4 **)(iVar8 + 0x10);\n            if (*(undefined4 **)(iVar8 + 0x10) == (undefined4 *)0x0) {\n              iVar11 = 0;\n              puVar15 = (undefined4 *)(iVar8 + 0x10);\n            }\n            else {\n              do {\n                puVar15 = puVar14;\n                if (iVar11 <= (int)puVar15[10]) {\n                  iVar11 = puVar15[10] + 1;\n                }\n                puVar14 = (undefined4 *)*puVar15;\n              } while ((undefined4 *)*puVar15 != (undefined4 *)0x0);\n              if (iVar11 == -1) {\n                iVar11 = 0;\n              }\n            }\n            *puVar15 = puVar18;\n            puVar18[10] = iVar11;\n          }\n          if (puVar18[0xb] == 2) {\n            FUN_00035930(puVar18 + 7,local_48 + uVar9,local_44 - uVar9);\n            uVar9 = local_44;\n          }\n          else {\n            uVar9 = FUN_00029a00();\n          }\n          local_58 = (local_58 + 1) - (uint)(puVar18[8] == 0);\n          do {\n            puVar18 = (undefined4 *)*puVar18;\n            if (puVar18 == (undefined4 *)0x0) break;\n          } while ((int)puVar18[10] < 0);\nLAB_0002aebd:\n          iVar2 = *(int *)(&DAT_0005e002 + unaff_EBP);\njoined_r0x0002b16d:\n          if (iVar2 != 0) goto LAB_0002aecb;\n          uVar9 = FUN_000359c0(uVar9,&local_48);\n          if (local_44 <= uVar9) break;\n        }" { (expression_statement "uVar16 = uVar9;" (assignment_expression "uVar16 = uVar9" identifier = identifier) ;) (do_statement "do {\n            bVar1 = local_48[uVar16];\n            bVar6 = 1;\n            if ((byte)(bVar1 - 0x20) < 0x1c) {\n              bVar6 = ~(byte)(0x8001305 >> (bVar1 - 0x20 & 0x1f)) & 1;\n            }\n            if ((bVar1 == 9) || (bVar6 == 0)) {\n              if ((uVar16 < local_44) && (*(int *)(&DAT_0005e006 + unaff_EBP) == 0)) {\nLAB_0002b0c6:\n                if (bVar1 == 0x3d) {\nLAB_0002b0cf:\n                  FUN_000358a0(local_3c);\n                  iVar11 = FUN_00028c80(local_3c);\n                  if (local_48[iVar11] != '=') {\n                    iVar11 = dcgettext(0,unaff_EBP + 0x3457a,5);\n                    goto LAB_0002b07a;\n                  }\n                  uVar13 = FUN_00035970(local_3c);\n                  iVar11 = FUN_000254b0(*(undefined4 *)(iVar8 + 0x14),uVar13);\n                  uVar13 = local_3c[0];\n                  if (iVar11 == 0) {\n                    uVar10 = *(undefined4 *)(iVar8 + 0x18);\n                    uVar12 = dcgettext(0,unaff_EBP + 0x3459a,5);\n                    FUN_0002bd60(uVar12,uVar13,uVar10);\n                    FUN_000358a0(local_3c);\n                    uVar9 = FUN_00029a00();\n                    bVar4 = true;\n                    goto LAB_0002aebd;\n                  }\n                  if (*(int *)(iVar11 + 0x20) != 0) {\n                    uVar13 = *(undefined4 *)(iVar8 + 0x18);\n                    uVar10 = *(undefined4 *)(iVar11 + 4);\n                    uVar12 = dcgettext(0,unaff_EBP + 0x345ce,5);\n                    FUN_0002bc80(uVar12,uVar10,uVar13);\n                    FUN_000358a0(iVar11 + 0x1c);\n                  }\n                  uVar9 = FUN_00029a00();\n                  bVar4 = true;\n                  iVar2 = *(int *)(&DAT_0005e002 + unaff_EBP);\n                  local_58 = (local_58 + 1) - (uint)(*(int *)(iVar11 + 0x20) == 0);\n                  goto joined_r0x0002b16d;\n                }\n              }\n              break;\n            }\n            if (*(int *)(&DAT_0005e006 + unaff_EBP) != 0) break;\n            if (*(int *)(&DAT_0005e002 + unaff_EBP) != 0) {\n              if ((bVar1 & 0xfd) == 0x3c) {\n                if (uVar16 < local_44) goto LAB_0002b0c6;\n                break;\n              }\n              if (bVar1 == 0x27) break;\n            }\n            if (bVar1 == 0x3d) {\n              if (uVar16 < local_44) goto LAB_0002b0cf;\n              break;\n            }\n            uVar16 = uVar16 + 1;\n          } while (uVar16 != local_44);" do (compound_statement "{\n            bVar1 = local_48[uVar16];\n            bVar6 = 1;\n            if ((byte)(bVar1 - 0x20) < 0x1c) {\n              bVar6 = ~(byte)(0x8001305 >> (bVar1 - 0x20 & 0x1f)) & 1;\n            }\n            if ((bVar1 == 9) || (bVar6 == 0)) {\n              if ((uVar16 < local_44) && (*(int *)(&DAT_0005e006 + unaff_EBP) == 0)) {\nLAB_0002b0c6:\n                if (bVar1 == 0x3d) {\nLAB_0002b0cf:\n                  FUN_000358a0(local_3c);\n                  iVar11 = FUN_00028c80(local_3c);\n                  if (local_48[iVar11] != '=') {\n                    iVar11 = dcgettext(0,unaff_EBP + 0x3457a,5);\n                    goto LAB_0002b07a;\n                  }\n                  uVar13 = FUN_00035970(local_3c);\n                  iVar11 = FUN_000254b0(*(undefined4 *)(iVar8 + 0x14),uVar13);\n                  uVar13 = local_3c[0];\n                  if (iVar11 == 0) {\n                    uVar10 = *(undefined4 *)(iVar8 + 0x18);\n                    uVar12 = dcgettext(0,unaff_EBP + 0x3459a,5);\n                    FUN_0002bd60(uVar12,uVar13,uVar10);\n                    FUN_000358a0(local_3c);\n                    uVar9 = FUN_00029a00();\n                    bVar4 = true;\n                    goto LAB_0002aebd;\n                  }\n                  if (*(int *)(iVar11 + 0x20) != 0) {\n                    uVar13 = *(undefined4 *)(iVar8 + 0x18);\n                    uVar10 = *(undefined4 *)(iVar11 + 4);\n                    uVar12 = dcgettext(0,unaff_EBP + 0x345ce,5);\n                    FUN_0002bc80(uVar12,uVar10,uVar13);\n                    FUN_000358a0(iVar11 + 0x1c);\n                  }\n                  uVar9 = FUN_00029a00();\n                  bVar4 = true;\n                  iVar2 = *(int *)(&DAT_0005e002 + unaff_EBP);\n                  local_58 = (local_58 + 1) - (uint)(*(int *)(iVar11 + 0x20) == 0);\n                  goto joined_r0x0002b16d;\n                }\n              }\n              break;\n            }\n            if (*(int *)(&DAT_0005e006 + unaff_EBP) != 0) break;\n            if (*(int *)(&DAT_0005e002 + unaff_EBP) != 0) {\n              if ((bVar1 & 0xfd) == 0x3c) {\n                if (uVar16 < local_44) goto LAB_0002b0c6;\n                break;\n              }\n              if (bVar1 == 0x27) break;\n            }\n            if (bVar1 == 0x3d) {\n              if (uVar16 < local_44) goto LAB_0002b0cf;\n              break;\n            }\n            uVar16 = uVar16 + 1;\n          }" { (expression_statement "bVar1 = local_48[uVar16];" (assignment_expression "bVar1 = local_48[uVar16]" identifier = (subscript_expression "local_48[uVar16]" identifier [ identifier ])) ;) (expression_statement "bVar6 = 1;" (assignment_expression "bVar6 = 1" identifier = number_literal) ;) (if_statement "if ((byte)(bVar1 - 0x20) < 0x1c) {\n              bVar6 = ~(byte)(0x8001305 >> (bVar1 - 0x20 & 0x1f)) & 1;\n            }" if (parenthesized_expression "((byte)(bVar1 - 0x20) < 0x1c)" ( (binary_expression "(byte)(bVar1 - 0x20) < 0x1c" (call_expression "(byte)(bVar1 - 0x20)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(bVar1 - 0x20)" ( (binary_expression "bVar1 - 0x20" identifier - number_literal) ))) < number_literal) )) (compound_statement "{\n              bVar6 = ~(byte)(0x8001305 >> (bVar1 - 0x20 & 0x1f)) & 1;\n            }" { (expression_statement "bVar6 = ~(byte)(0x8001305 >> (bVar1 - 0x20 & 0x1f)) & 1;" (assignment_expression "bVar6 = ~(byte)(0x8001305 >> (bVar1 - 0x20 & 0x1f)) & 1" identifier = (binary_expression "~(byte)(0x8001305 >> (bVar1 - 0x20 & 0x1f)) & 1" (unary_expression "~(byte)(0x8001305 >> (bVar1 - 0x20 & 0x1f))" ~ (call_expression "(byte)(0x8001305 >> (bVar1 - 0x20 & 0x1f))" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(0x8001305 >> (bVar1 - 0x20 & 0x1f))" ( (binary_expression "0x8001305 >> (bVar1 - 0x20 & 0x1f)" number_literal >> (parenthesized_expression "(bVar1 - 0x20 & 0x1f)" ( (binary_expression "bVar1 - 0x20 & 0x1f" (binary_expression "bVar1 - 0x20" identifier - number_literal) & number_literal) ))) )))) & number_literal)) ;) })) (if_statement "if ((bVar1 == 9) || (bVar6 == 0)) {\n              if ((uVar16 < local_44) && (*(int *)(&DAT_0005e006 + unaff_EBP) == 0)) {\nLAB_0002b0c6:\n                if (bVar1 == 0x3d) {\nLAB_0002b0cf:\n                  FUN_000358a0(local_3c);\n                  iVar11 = FUN_00028c80(local_3c);\n                  if (local_48[iVar11] != '=') {\n                    iVar11 = dcgettext(0,unaff_EBP + 0x3457a,5);\n                    goto LAB_0002b07a;\n                  }\n                  uVar13 = FUN_00035970(local_3c);\n                  iVar11 = FUN_000254b0(*(undefined4 *)(iVar8 + 0x14),uVar13);\n                  uVar13 = local_3c[0];\n                  if (iVar11 == 0) {\n                    uVar10 = *(undefined4 *)(iVar8 + 0x18);\n                    uVar12 = dcgettext(0,unaff_EBP + 0x3459a,5);\n                    FUN_0002bd60(uVar12,uVar13,uVar10);\n                    FUN_000358a0(local_3c);\n                    uVar9 = FUN_00029a00();\n                    bVar4 = true;\n                    goto LAB_0002aebd;\n                  }\n                  if (*(int *)(iVar11 + 0x20) != 0) {\n                    uVar13 = *(undefined4 *)(iVar8 + 0x18);\n                    uVar10 = *(undefined4 *)(iVar11 + 4);\n                    uVar12 = dcgettext(0,unaff_EBP + 0x345ce,5);\n                    FUN_0002bc80(uVar12,uVar10,uVar13);\n                    FUN_000358a0(iVar11 + 0x1c);\n                  }\n                  uVar9 = FUN_00029a00();\n                  bVar4 = true;\n                  iVar2 = *(int *)(&DAT_0005e002 + unaff_EBP);\n                  local_58 = (local_58 + 1) - (uint)(*(int *)(iVar11 + 0x20) == 0);\n                  goto joined_r0x0002b16d;\n                }\n              }\n              break;\n            }" if (parenthesized_expression "((bVar1 == 9) || (bVar6 == 0))" ( (binary_expression "(bVar1 == 9) || (bVar6 == 0)" (parenthesized_expression "(bVar1 == 9)" ( (binary_expression "bVar1 == 9" identifier == number_literal) )) || (parenthesized_expression "(bVar6 == 0)" ( (binary_expression "bVar6 == 0" identifier == number_literal) ))) )) (compound_statement "{\n              if ((uVar16 < local_44) && (*(int *)(&DAT_0005e006 + unaff_EBP) == 0)) {\nLAB_0002b0c6:\n                if (bVar1 == 0x3d) {\nLAB_0002b0cf:\n                  FUN_000358a0(local_3c);\n                  iVar11 = FUN_00028c80(local_3c);\n                  if (local_48[iVar11] != '=') {\n                    iVar11 = dcgettext(0,unaff_EBP + 0x3457a,5);\n                    goto LAB_0002b07a;\n                  }\n                  uVar13 = FUN_00035970(local_3c);\n                  iVar11 = FUN_000254b0(*(undefined4 *)(iVar8 + 0x14),uVar13);\n                  uVar13 = local_3c[0];\n                  if (iVar11 == 0) {\n                    uVar10 = *(undefined4 *)(iVar8 + 0x18);\n                    uVar12 = dcgettext(0,unaff_EBP + 0x3459a,5);\n                    FUN_0002bd60(uVar12,uVar13,uVar10);\n                    FUN_000358a0(local_3c);\n                    uVar9 = FUN_00029a00();\n                    bVar4 = true;\n                    goto LAB_0002aebd;\n                  }\n                  if (*(int *)(iVar11 + 0x20) != 0) {\n                    uVar13 = *(undefined4 *)(iVar8 + 0x18);\n                    uVar10 = *(undefined4 *)(iVar11 + 4);\n                    uVar12 = dcgettext(0,unaff_EBP + 0x345ce,5);\n                    FUN_0002bc80(uVar12,uVar10,uVar13);\n                    FUN_000358a0(iVar11 + 0x1c);\n                  }\n                  uVar9 = FUN_00029a00();\n                  bVar4 = true;\n                  iVar2 = *(int *)(&DAT_0005e002 + unaff_EBP);\n                  local_58 = (local_58 + 1) - (uint)(*(int *)(iVar11 + 0x20) == 0);\n                  goto joined_r0x0002b16d;\n                }\n              }\n              break;\n            }" { (if_statement "if ((uVar16 < local_44) && (*(int *)(&DAT_0005e006 + unaff_EBP) == 0)) {\nLAB_0002b0c6:\n                if (bVar1 == 0x3d) {\nLAB_0002b0cf:\n                  FUN_000358a0(local_3c);\n                  iVar11 = FUN_00028c80(local_3c);\n                  if (local_48[iVar11] != '=') {\n                    iVar11 = dcgettext(0,unaff_EBP + 0x3457a,5);\n                    goto LAB_0002b07a;\n                  }\n                  uVar13 = FUN_00035970(local_3c);\n                  iVar11 = FUN_000254b0(*(undefined4 *)(iVar8 + 0x14),uVar13);\n                  uVar13 = local_3c[0];\n                  if (iVar11 == 0) {\n                    uVar10 = *(undefined4 *)(iVar8 + 0x18);\n                    uVar12 = dcgettext(0,unaff_EBP + 0x3459a,5);\n                    FUN_0002bd60(uVar12,uVar13,uVar10);\n                    FUN_000358a0(local_3c);\n                    uVar9 = FUN_00029a00();\n                    bVar4 = true;\n                    goto LAB_0002aebd;\n                  }\n                  if (*(int *)(iVar11 + 0x20) != 0) {\n                    uVar13 = *(undefined4 *)(iVar8 + 0x18);\n                    uVar10 = *(undefined4 *)(iVar11 + 4);\n                    uVar12 = dcgettext(0,unaff_EBP + 0x345ce,5);\n                    FUN_0002bc80(uVar12,uVar10,uVar13);\n                    FUN_000358a0(iVar11 + 0x1c);\n                  }\n                  uVar9 = FUN_00029a00();\n                  bVar4 = true;\n                  iVar2 = *(int *)(&DAT_0005e002 + unaff_EBP);\n                  local_58 = (local_58 + 1) - (uint)(*(int *)(iVar11 + 0x20) == 0);\n                  goto joined_r0x0002b16d;\n                }\n              }" if (parenthesized_expression "((uVar16 < local_44) && (*(int *)(&DAT_0005e006 + unaff_EBP) == 0))" ( (binary_expression "(uVar16 < local_44) && (*(int *)(&DAT_0005e006 + unaff_EBP) == 0)" (parenthesized_expression "(uVar16 < local_44)" ( (binary_expression "uVar16 < local_44" identifier < identifier) )) && (parenthesized_expression "(*(int *)(&DAT_0005e006 + unaff_EBP) == 0)" ( (binary_expression "*(int *)(&DAT_0005e006 + unaff_EBP) == 0" (pointer_expression "*(int *)(&DAT_0005e006 + unaff_EBP)" * (cast_expression "(int *)(&DAT_0005e006 + unaff_EBP)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_0005e006 + unaff_EBP)" ( (binary_expression "&DAT_0005e006 + unaff_EBP" (pointer_expression "&DAT_0005e006" & identifier) + identifier) )))) == number_literal) ))) )) (compound_statement "{\nLAB_0002b0c6:\n                if (bVar1 == 0x3d) {\nLAB_0002b0cf:\n                  FUN_000358a0(local_3c);\n                  iVar11 = FUN_00028c80(local_3c);\n                  if (local_48[iVar11] != '=') {\n                    iVar11 = dcgettext(0,unaff_EBP + 0x3457a,5);\n                    goto LAB_0002b07a;\n                  }\n                  uVar13 = FUN_00035970(local_3c);\n                  iVar11 = FUN_000254b0(*(undefined4 *)(iVar8 + 0x14),uVar13);\n                  uVar13 = local_3c[0];\n                  if (iVar11 == 0) {\n                    uVar10 = *(undefined4 *)(iVar8 + 0x18);\n                    uVar12 = dcgettext(0,unaff_EBP + 0x3459a,5);\n                    FUN_0002bd60(uVar12,uVar13,uVar10);\n                    FUN_000358a0(local_3c);\n                    uVar9 = FUN_00029a00();\n                    bVar4 = true;\n                    goto LAB_0002aebd;\n                  }\n                  if (*(int *)(iVar11 + 0x20) != 0) {\n                    uVar13 = *(undefined4 *)(iVar8 + 0x18);\n                    uVar10 = *(undefined4 *)(iVar11 + 4);\n                    uVar12 = dcgettext(0,unaff_EBP + 0x345ce,5);\n                    FUN_0002bc80(uVar12,uVar10,uVar13);\n                    FUN_000358a0(iVar11 + 0x1c);\n                  }\n                  uVar9 = FUN_00029a00();\n                  bVar4 = true;\n                  iVar2 = *(int *)(&DAT_0005e002 + unaff_EBP);\n                  local_58 = (local_58 + 1) - (uint)(*(int *)(iVar11 + 0x20) == 0);\n                  goto joined_r0x0002b16d;\n                }\n              }" { (labeled_statement "LAB_0002b0c6:\n                if (bVar1 == 0x3d) {\nLAB_0002b0cf:\n                  FUN_000358a0(local_3c);\n                  iVar11 = FUN_00028c80(local_3c);\n                  if (local_48[iVar11] != '=') {\n                    iVar11 = dcgettext(0,unaff_EBP + 0x3457a,5);\n                    goto LAB_0002b07a;\n                  }\n                  uVar13 = FUN_00035970(local_3c);\n                  iVar11 = FUN_000254b0(*(undefined4 *)(iVar8 + 0x14),uVar13);\n                  uVar13 = local_3c[0];\n                  if (iVar11 == 0) {\n                    uVar10 = *(undefined4 *)(iVar8 + 0x18);\n                    uVar12 = dcgettext(0,unaff_EBP + 0x3459a,5);\n                    FUN_0002bd60(uVar12,uVar13,uVar10);\n                    FUN_000358a0(local_3c);\n                    uVar9 = FUN_00029a00();\n                    bVar4 = true;\n                    goto LAB_0002aebd;\n                  }\n                  if (*(int *)(iVar11 + 0x20) != 0) {\n                    uVar13 = *(undefined4 *)(iVar8 + 0x18);\n                    uVar10 = *(undefined4 *)(iVar11 + 4);\n                    uVar12 = dcgettext(0,unaff_EBP + 0x345ce,5);\n                    FUN_0002bc80(uVar12,uVar10,uVar13);\n                    FUN_000358a0(iVar11 + 0x1c);\n                  }\n                  uVar9 = FUN_00029a00();\n                  bVar4 = true;\n                  iVar2 = *(int *)(&DAT_0005e002 + unaff_EBP);\n                  local_58 = (local_58 + 1) - (uint)(*(int *)(iVar11 + 0x20) == 0);\n                  goto joined_r0x0002b16d;\n                }" statement_identifier : (if_statement "if (bVar1 == 0x3d) {\nLAB_0002b0cf:\n                  FUN_000358a0(local_3c);\n                  iVar11 = FUN_00028c80(local_3c);\n                  if (local_48[iVar11] != '=') {\n                    iVar11 = dcgettext(0,unaff_EBP + 0x3457a,5);\n                    goto LAB_0002b07a;\n                  }\n                  uVar13 = FUN_00035970(local_3c);\n                  iVar11 = FUN_000254b0(*(undefined4 *)(iVar8 + 0x14),uVar13);\n                  uVar13 = local_3c[0];\n                  if (iVar11 == 0) {\n                    uVar10 = *(undefined4 *)(iVar8 + 0x18);\n                    uVar12 = dcgettext(0,unaff_EBP + 0x3459a,5);\n                    FUN_0002bd60(uVar12,uVar13,uVar10);\n                    FUN_000358a0(local_3c);\n                    uVar9 = FUN_00029a00();\n                    bVar4 = true;\n                    goto LAB_0002aebd;\n                  }\n                  if (*(int *)(iVar11 + 0x20) != 0) {\n                    uVar13 = *(undefined4 *)(iVar8 + 0x18);\n                    uVar10 = *(undefined4 *)(iVar11 + 4);\n                    uVar12 = dcgettext(0,unaff_EBP + 0x345ce,5);\n                    FUN_0002bc80(uVar12,uVar10,uVar13);\n                    FUN_000358a0(iVar11 + 0x1c);\n                  }\n                  uVar9 = FUN_00029a00();\n                  bVar4 = true;\n                  iVar2 = *(int *)(&DAT_0005e002 + unaff_EBP);\n                  local_58 = (local_58 + 1) - (uint)(*(int *)(iVar11 + 0x20) == 0);\n                  goto joined_r0x0002b16d;\n                }" if (parenthesized_expression "(bVar1 == 0x3d)" ( (binary_expression "bVar1 == 0x3d" identifier == number_literal) )) (compound_statement "{\nLAB_0002b0cf:\n                  FUN_000358a0(local_3c);\n                  iVar11 = FUN_00028c80(local_3c);\n                  if (local_48[iVar11] != '=') {\n                    iVar11 = dcgettext(0,unaff_EBP + 0x3457a,5);\n                    goto LAB_0002b07a;\n                  }\n                  uVar13 = FUN_00035970(local_3c);\n                  iVar11 = FUN_000254b0(*(undefined4 *)(iVar8 + 0x14),uVar13);\n                  uVar13 = local_3c[0];\n                  if (iVar11 == 0) {\n                    uVar10 = *(undefined4 *)(iVar8 + 0x18);\n                    uVar12 = dcgettext(0,unaff_EBP + 0x3459a,5);\n                    FUN_0002bd60(uVar12,uVar13,uVar10);\n                    FUN_000358a0(local_3c);\n                    uVar9 = FUN_00029a00();\n                    bVar4 = true;\n                    goto LAB_0002aebd;\n                  }\n                  if (*(int *)(iVar11 + 0x20) != 0) {\n                    uVar13 = *(undefined4 *)(iVar8 + 0x18);\n                    uVar10 = *(undefined4 *)(iVar11 + 4);\n                    uVar12 = dcgettext(0,unaff_EBP + 0x345ce,5);\n                    FUN_0002bc80(uVar12,uVar10,uVar13);\n                    FUN_000358a0(iVar11 + 0x1c);\n                  }\n                  uVar9 = FUN_00029a00();\n                  bVar4 = true;\n                  iVar2 = *(int *)(&DAT_0005e002 + unaff_EBP);\n                  local_58 = (local_58 + 1) - (uint)(*(int *)(iVar11 + 0x20) == 0);\n                  goto joined_r0x0002b16d;\n                }" { (labeled_statement "LAB_0002b0cf:\n                  FUN_000358a0(local_3c);" statement_identifier : (expression_statement "FUN_000358a0(local_3c);" (call_expression "FUN_000358a0(local_3c)" identifier (argument_list "(local_3c)" ( identifier ))) ;)) (expression_statement "iVar11 = FUN_00028c80(local_3c);" (assignment_expression "iVar11 = FUN_00028c80(local_3c)" identifier = (call_expression "FUN_00028c80(local_3c)" identifier (argument_list "(local_3c)" ( identifier )))) ;) (if_statement "if (local_48[iVar11] != '=') {\n                    iVar11 = dcgettext(0,unaff_EBP + 0x3457a,5);\n                    goto LAB_0002b07a;\n                  }" if (parenthesized_expression "(local_48[iVar11] != '=')" ( (binary_expression "local_48[iVar11] != '='" (subscript_expression "local_48[iVar11]" identifier [ identifier ]) != (char_literal "'='" ' character ')) )) (compound_statement "{\n                    iVar11 = dcgettext(0,unaff_EBP + 0x3457a,5);\n                    goto LAB_0002b07a;\n                  }" { (expression_statement "iVar11 = dcgettext(0,unaff_EBP + 0x3457a,5);" (assignment_expression "iVar11 = dcgettext(0,unaff_EBP + 0x3457a,5)" identifier = (call_expression "dcgettext(0,unaff_EBP + 0x3457a,5)" identifier (argument_list "(0,unaff_EBP + 0x3457a,5)" ( number_literal , (binary_expression "unaff_EBP + 0x3457a" identifier + number_literal) , number_literal )))) ;) (goto_statement "goto LAB_0002b07a;" goto statement_identifier ;) })) (expression_statement "uVar13 = FUN_00035970(local_3c);" (assignment_expression "uVar13 = FUN_00035970(local_3c)" identifier = (call_expression "FUN_00035970(local_3c)" identifier (argument_list "(local_3c)" ( identifier )))) ;) (expression_statement "iVar11 = FUN_000254b0(*(undefined4 *)(iVar8 + 0x14),uVar13);" (assignment_expression "iVar11 = FUN_000254b0(*(undefined4 *)(iVar8 + 0x14),uVar13)" identifier = (call_expression "FUN_000254b0(*(undefined4 *)(iVar8 + 0x14),uVar13)" identifier (argument_list "(*(undefined4 *)(iVar8 + 0x14),uVar13)" ( (pointer_expression "*(undefined4 *)(iVar8 + 0x14)" * (cast_expression "(undefined4 *)(iVar8 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x14)" ( (binary_expression "iVar8 + 0x14" identifier + number_literal) )))) , identifier )))) ;) (expression_statement "uVar13 = local_3c[0];" (assignment_expression "uVar13 = local_3c[0]" identifier = (subscript_expression "local_3c[0]" identifier [ number_literal ])) ;) (if_statement "if (iVar11 == 0) {\n                    uVar10 = *(undefined4 *)(iVar8 + 0x18);\n                    uVar12 = dcgettext(0,unaff_EBP + 0x3459a,5);\n                    FUN_0002bd60(uVar12,uVar13,uVar10);\n                    FUN_000358a0(local_3c);\n                    uVar9 = FUN_00029a00();\n                    bVar4 = true;\n                    goto LAB_0002aebd;\n                  }" if (parenthesized_expression "(iVar11 == 0)" ( (binary_expression "iVar11 == 0" identifier == number_literal) )) (compound_statement "{\n                    uVar10 = *(undefined4 *)(iVar8 + 0x18);\n                    uVar12 = dcgettext(0,unaff_EBP + 0x3459a,5);\n                    FUN_0002bd60(uVar12,uVar13,uVar10);\n                    FUN_000358a0(local_3c);\n                    uVar9 = FUN_00029a00();\n                    bVar4 = true;\n                    goto LAB_0002aebd;\n                  }" { (expression_statement "uVar10 = *(undefined4 *)(iVar8 + 0x18);" (assignment_expression "uVar10 = *(undefined4 *)(iVar8 + 0x18)" identifier = (pointer_expression "*(undefined4 *)(iVar8 + 0x18)" * (cast_expression "(undefined4 *)(iVar8 + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x18)" ( (binary_expression "iVar8 + 0x18" identifier + number_literal) ))))) ;) (expression_statement "uVar12 = dcgettext(0,unaff_EBP + 0x3459a,5);" (assignment_expression "uVar12 = dcgettext(0,unaff_EBP + 0x3459a,5)" identifier = (call_expression "dcgettext(0,unaff_EBP + 0x3459a,5)" identifier (argument_list "(0,unaff_EBP + 0x3459a,5)" ( number_literal , (binary_expression "unaff_EBP + 0x3459a" identifier + number_literal) , number_literal )))) ;) (expression_statement "FUN_0002bd60(uVar12,uVar13,uVar10);" (call_expression "FUN_0002bd60(uVar12,uVar13,uVar10)" identifier (argument_list "(uVar12,uVar13,uVar10)" ( identifier , identifier , identifier ))) ;) (expression_statement "FUN_000358a0(local_3c);" (call_expression "FUN_000358a0(local_3c)" identifier (argument_list "(local_3c)" ( identifier ))) ;) (expression_statement "uVar9 = FUN_00029a00();" (assignment_expression "uVar9 = FUN_00029a00()" identifier = (call_expression "FUN_00029a00()" identifier (argument_list "()" ( )))) ;) (expression_statement "bVar4 = true;" (assignment_expression "bVar4 = true" identifier = true) ;) (goto_statement "goto LAB_0002aebd;" goto statement_identifier ;) })) (if_statement "if (*(int *)(iVar11 + 0x20) != 0) {\n                    uVar13 = *(undefined4 *)(iVar8 + 0x18);\n                    uVar10 = *(undefined4 *)(iVar11 + 4);\n                    uVar12 = dcgettext(0,unaff_EBP + 0x345ce,5);\n                    FUN_0002bc80(uVar12,uVar10,uVar13);\n                    FUN_000358a0(iVar11 + 0x1c);\n                  }" if (parenthesized_expression "(*(int *)(iVar11 + 0x20) != 0)" ( (binary_expression "*(int *)(iVar11 + 0x20) != 0" (pointer_expression "*(int *)(iVar11 + 0x20)" * (cast_expression "(int *)(iVar11 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar11 + 0x20)" ( (binary_expression "iVar11 + 0x20" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n                    uVar13 = *(undefined4 *)(iVar8 + 0x18);\n                    uVar10 = *(undefined4 *)(iVar11 + 4);\n                    uVar12 = dcgettext(0,unaff_EBP + 0x345ce,5);\n                    FUN_0002bc80(uVar12,uVar10,uVar13);\n                    FUN_000358a0(iVar11 + 0x1c);\n                  }" { (expression_statement "uVar13 = *(undefined4 *)(iVar8 + 0x18);" (assignment_expression "uVar13 = *(undefined4 *)(iVar8 + 0x18)" identifier = (pointer_expression "*(undefined4 *)(iVar8 + 0x18)" * (cast_expression "(undefined4 *)(iVar8 + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x18)" ( (binary_expression "iVar8 + 0x18" identifier + number_literal) ))))) ;) (expression_statement "uVar10 = *(undefined4 *)(iVar11 + 4);" (assignment_expression "uVar10 = *(undefined4 *)(iVar11 + 4)" identifier = (pointer_expression "*(undefined4 *)(iVar11 + 4)" * (cast_expression "(undefined4 *)(iVar11 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar11 + 4)" ( (binary_expression "iVar11 + 4" identifier + number_literal) ))))) ;) (expression_statement "uVar12 = dcgettext(0,unaff_EBP + 0x345ce,5);" (assignment_expression "uVar12 = dcgettext(0,unaff_EBP + 0x345ce,5)" identifier = (call_expression "dcgettext(0,unaff_EBP + 0x345ce,5)" identifier (argument_list "(0,unaff_EBP + 0x345ce,5)" ( number_literal , (binary_expression "unaff_EBP + 0x345ce" identifier + number_literal) , number_literal )))) ;) (expression_statement "FUN_0002bc80(uVar12,uVar10,uVar13);" (call_expression "FUN_0002bc80(uVar12,uVar10,uVar13)" identifier (argument_list "(uVar12,uVar10,uVar13)" ( identifier , identifier , identifier ))) ;) (expression_statement "FUN_000358a0(iVar11 + 0x1c);" (call_expression "FUN_000358a0(iVar11 + 0x1c)" identifier (argument_list "(iVar11 + 0x1c)" ( (binary_expression "iVar11 + 0x1c" identifier + number_literal) ))) ;) })) (expression_statement "uVar9 = FUN_00029a00();" (assignment_expression "uVar9 = FUN_00029a00()" identifier = (call_expression "FUN_00029a00()" identifier (argument_list "()" ( )))) ;) (expression_statement "bVar4 = true;" (assignment_expression "bVar4 = true" identifier = true) ;) (expression_statement "iVar2 = *(int *)(&DAT_0005e002 + unaff_EBP);" (assignment_expression "iVar2 = *(int *)(&DAT_0005e002 + unaff_EBP)" identifier = (pointer_expression "*(int *)(&DAT_0005e002 + unaff_EBP)" * (cast_expression "(int *)(&DAT_0005e002 + unaff_EBP)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_0005e002 + unaff_EBP)" ( (binary_expression "&DAT_0005e002 + unaff_EBP" (pointer_expression "&DAT_0005e002" & identifier) + identifier) ))))) ;) (expression_statement "local_58 = (local_58 + 1) - (uint)(*(int *)(iVar11 + 0x20) == 0);" (assignment_expression "local_58 = (local_58 + 1) - (uint)(*(int *)(iVar11 + 0x20) == 0)" identifier = (binary_expression "(local_58 + 1) - (uint)(*(int *)(iVar11 + 0x20) == 0)" (parenthesized_expression "(local_58 + 1)" ( (binary_expression "local_58 + 1" identifier + number_literal) )) - (call_expression "(uint)(*(int *)(iVar11 + 0x20) == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*(int *)(iVar11 + 0x20) == 0)" ( (binary_expression "*(int *)(iVar11 + 0x20) == 0" (pointer_expression "*(int *)(iVar11 + 0x20)" * (cast_expression "(int *)(iVar11 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar11 + 0x20)" ( (binary_expression "iVar11 + 0x20" identifier + number_literal) )))) == number_literal) ))))) ;) (goto_statement "goto joined_r0x0002b16d;" goto statement_identifier ;) }))) })) (break_statement "break;" break ;) })) (if_statement "if (*(int *)(&DAT_0005e006 + unaff_EBP) != 0) break;" if (parenthesized_expression "(*(int *)(&DAT_0005e006 + unaff_EBP) != 0)" ( (binary_expression "*(int *)(&DAT_0005e006 + unaff_EBP) != 0" (pointer_expression "*(int *)(&DAT_0005e006 + unaff_EBP)" * (cast_expression "(int *)(&DAT_0005e006 + unaff_EBP)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_0005e006 + unaff_EBP)" ( (binary_expression "&DAT_0005e006 + unaff_EBP" (pointer_expression "&DAT_0005e006" & identifier) + identifier) )))) != number_literal) )) (break_statement "break;" break ;)) (if_statement "if (*(int *)(&DAT_0005e002 + unaff_EBP) != 0) {\n              if ((bVar1 & 0xfd) == 0x3c) {\n                if (uVar16 < local_44) goto LAB_0002b0c6;\n                break;\n              }\n              if (bVar1 == 0x27) break;\n            }" if (parenthesized_expression "(*(int *)(&DAT_0005e002 + unaff_EBP) != 0)" ( (binary_expression "*(int *)(&DAT_0005e002 + unaff_EBP) != 0" (pointer_expression "*(int *)(&DAT_0005e002 + unaff_EBP)" * (cast_expression "(int *)(&DAT_0005e002 + unaff_EBP)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_0005e002 + unaff_EBP)" ( (binary_expression "&DAT_0005e002 + unaff_EBP" (pointer_expression "&DAT_0005e002" & identifier) + identifier) )))) != number_literal) )) (compound_statement "{\n              if ((bVar1 & 0xfd) == 0x3c) {\n                if (uVar16 < local_44) goto LAB_0002b0c6;\n                break;\n              }\n              if (bVar1 == 0x27) break;\n            }" { (if_statement "if ((bVar1 & 0xfd) == 0x3c) {\n                if (uVar16 < local_44) goto LAB_0002b0c6;\n                break;\n              }" if (parenthesized_expression "((bVar1 & 0xfd) == 0x3c)" ( (binary_expression "(bVar1 & 0xfd) == 0x3c" (parenthesized_expression "(bVar1 & 0xfd)" ( (binary_expression "bVar1 & 0xfd" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n                if (uVar16 < local_44) goto LAB_0002b0c6;\n                break;\n              }" { (if_statement "if (uVar16 < local_44) goto LAB_0002b0c6;" if (parenthesized_expression "(uVar16 < local_44)" ( (binary_expression "uVar16 < local_44" identifier < identifier) )) (goto_statement "goto LAB_0002b0c6;" goto statement_identifier ;)) (break_statement "break;" break ;) })) (if_statement "if (bVar1 == 0x27) break;" if (parenthesized_expression "(bVar1 == 0x27)" ( (binary_expression "bVar1 == 0x27" identifier == number_literal) )) (break_statement "break;" break ;)) })) (if_statement "if (bVar1 == 0x3d) {\n              if (uVar16 < local_44) goto LAB_0002b0cf;\n              break;\n            }" if (parenthesized_expression "(bVar1 == 0x3d)" ( (binary_expression "bVar1 == 0x3d" identifier == number_literal) )) (compound_statement "{\n              if (uVar16 < local_44) goto LAB_0002b0cf;\n              break;\n            }" { (if_statement "if (uVar16 < local_44) goto LAB_0002b0cf;" if (parenthesized_expression "(uVar16 < local_44)" ( (binary_expression "uVar16 < local_44" identifier < identifier) )) (goto_statement "goto LAB_0002b0cf;" goto statement_identifier ;)) (break_statement "break;" break ;) })) (expression_statement "uVar16 = uVar16 + 1;" (assignment_expression "uVar16 = uVar16 + 1" identifier = (binary_expression "uVar16 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar16 != local_44)" ( (binary_expression "uVar16 != local_44" identifier != identifier) )) ;) (if_statement "if (bVar4) {\n            iVar11 = dcgettext(0,unaff_EBP + 0x3460e,5);\nLAB_0002b07a:\n            if (iVar11 == 0) break;\n            if (*(int *)(&DAT_0005e002 + unaff_EBP) != 0) goto LAB_0002af93;\nLAB_0002b090:\n            FUN_000357d0(local_3c);\n            goto LAB_0002afd9;\n          }" if (parenthesized_expression "(bVar4)" ( identifier )) (compound_statement "{\n            iVar11 = dcgettext(0,unaff_EBP + 0x3460e,5);\nLAB_0002b07a:\n            if (iVar11 == 0) break;\n            if (*(int *)(&DAT_0005e002 + unaff_EBP) != 0) goto LAB_0002af93;\nLAB_0002b090:\n            FUN_000357d0(local_3c);\n            goto LAB_0002afd9;\n          }" { (expression_statement "iVar11 = dcgettext(0,unaff_EBP + 0x3460e,5);" (assignment_expression "iVar11 = dcgettext(0,unaff_EBP + 0x3460e,5)" identifier = (call_expression "dcgettext(0,unaff_EBP + 0x3460e,5)" identifier (argument_list "(0,unaff_EBP + 0x3460e,5)" ( number_literal , (binary_expression "unaff_EBP + 0x3460e" identifier + number_literal) , number_literal )))) ;) (labeled_statement "LAB_0002b07a:\n            if (iVar11 == 0) break;" statement_identifier : (if_statement "if (iVar11 == 0) break;" if (parenthesized_expression "(iVar11 == 0)" ( (binary_expression "iVar11 == 0" identifier == number_literal) )) (break_statement "break;" break ;))) (if_statement "if (*(int *)(&DAT_0005e002 + unaff_EBP) != 0) goto LAB_0002af93;" if (parenthesized_expression "(*(int *)(&DAT_0005e002 + unaff_EBP) != 0)" ( (binary_expression "*(int *)(&DAT_0005e002 + unaff_EBP) != 0" (pointer_expression "*(int *)(&DAT_0005e002 + unaff_EBP)" * (cast_expression "(int *)(&DAT_0005e002 + unaff_EBP)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_0005e002 + unaff_EBP)" ( (binary_expression "&DAT_0005e002 + unaff_EBP" (pointer_expression "&DAT_0005e002" & identifier) + identifier) )))) != number_literal) )) (goto_statement "goto LAB_0002af93;" goto statement_identifier ;)) (labeled_statement "LAB_0002b090:\n            FUN_000357d0(local_3c);" statement_identifier : (expression_statement "FUN_000357d0(local_3c);" (call_expression "FUN_000357d0(local_3c)" identifier (argument_list "(local_3c)" ( identifier ))) ;)) (goto_statement "goto LAB_0002afd9;" goto statement_identifier ;) })) (if_statement "if (puVar18 == (undefined4 *)0x0) {\n            if (*(int *)(&DAT_0005e002 + unaff_EBP) == 0) {\n              iVar11 = dcgettext(0,unaff_EBP + 0x34312,5);\n              if (iVar11 != 0) goto LAB_0002b090;\n              piVar17 = *(int **)(iVar8 + 0x10);\n              if (piVar17 == (int *)0x0) goto LAB_0002af6d;\n              goto LAB_0002aef9;\n            }\n            puVar18 = (undefined4 *)FUN_00028ba0();\n            iVar11 = -1;\n            puVar14 = *(undefined4 **)(iVar8 + 0x10);\n            if (*(undefined4 **)(iVar8 + 0x10) == (undefined4 *)0x0) {\n              iVar11 = 0;\n              puVar15 = (undefined4 *)(iVar8 + 0x10);\n            }\n            else {\n              do {\n                puVar15 = puVar14;\n                if (iVar11 <= (int)puVar15[10]) {\n                  iVar11 = puVar15[10] + 1;\n                }\n                puVar14 = (undefined4 *)*puVar15;\n              } while ((undefined4 *)*puVar15 != (undefined4 *)0x0);\n              if (iVar11 == -1) {\n                iVar11 = 0;\n              }\n            }\n            *puVar15 = puVar18;\n            puVar18[10] = iVar11;\n          }" if (parenthesized_expression "(puVar18 == (undefined4 *)0x0)" ( (binary_expression "puVar18 == (undefined4 *)0x0" identifier == (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            if (*(int *)(&DAT_0005e002 + unaff_EBP) == 0) {\n              iVar11 = dcgettext(0,unaff_EBP + 0x34312,5);\n              if (iVar11 != 0) goto LAB_0002b090;\n              piVar17 = *(int **)(iVar8 + 0x10);\n              if (piVar17 == (int *)0x0) goto LAB_0002af6d;\n              goto LAB_0002aef9;\n            }\n            puVar18 = (undefined4 *)FUN_00028ba0();\n            iVar11 = -1;\n            puVar14 = *(undefined4 **)(iVar8 + 0x10);\n            if (*(undefined4 **)(iVar8 + 0x10) == (undefined4 *)0x0) {\n              iVar11 = 0;\n              puVar15 = (undefined4 *)(iVar8 + 0x10);\n            }\n            else {\n              do {\n                puVar15 = puVar14;\n                if (iVar11 <= (int)puVar15[10]) {\n                  iVar11 = puVar15[10] + 1;\n                }\n                puVar14 = (undefined4 *)*puVar15;\n              } while ((undefined4 *)*puVar15 != (undefined4 *)0x0);\n              if (iVar11 == -1) {\n                iVar11 = 0;\n              }\n            }\n            *puVar15 = puVar18;\n            puVar18[10] = iVar11;\n          }" { (if_statement "if (*(int *)(&DAT_0005e002 + unaff_EBP) == 0) {\n              iVar11 = dcgettext(0,unaff_EBP + 0x34312,5);\n              if (iVar11 != 0) goto LAB_0002b090;\n              piVar17 = *(int **)(iVar8 + 0x10);\n              if (piVar17 == (int *)0x0) goto LAB_0002af6d;\n              goto LAB_0002aef9;\n            }" if (parenthesized_expression "(*(int *)(&DAT_0005e002 + unaff_EBP) == 0)" ( (binary_expression "*(int *)(&DAT_0005e002 + unaff_EBP) == 0" (pointer_expression "*(int *)(&DAT_0005e002 + unaff_EBP)" * (cast_expression "(int *)(&DAT_0005e002 + unaff_EBP)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_0005e002 + unaff_EBP)" ( (binary_expression "&DAT_0005e002 + unaff_EBP" (pointer_expression "&DAT_0005e002" & identifier) + identifier) )))) == number_literal) )) (compound_statement "{\n              iVar11 = dcgettext(0,unaff_EBP + 0x34312,5);\n              if (iVar11 != 0) goto LAB_0002b090;\n              piVar17 = *(int **)(iVar8 + 0x10);\n              if (piVar17 == (int *)0x0) goto LAB_0002af6d;\n              goto LAB_0002aef9;\n            }" { (expression_statement "iVar11 = dcgettext(0,unaff_EBP + 0x34312,5);" (assignment_expression "iVar11 = dcgettext(0,unaff_EBP + 0x34312,5)" identifier = (call_expression "dcgettext(0,unaff_EBP + 0x34312,5)" identifier (argument_list "(0,unaff_EBP + 0x34312,5)" ( number_literal , (binary_expression "unaff_EBP + 0x34312" identifier + number_literal) , number_literal )))) ;) (if_statement "if (iVar11 != 0) goto LAB_0002b090;" if (parenthesized_expression "(iVar11 != 0)" ( (binary_expression "iVar11 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0002b090;" goto statement_identifier ;)) (expression_statement "piVar17 = *(int **)(iVar8 + 0x10);" (assignment_expression "piVar17 = *(int **)(iVar8 + 0x10)" identifier = (pointer_expression "*(int **)(iVar8 + 0x10)" * (cast_expression "(int **)(iVar8 + 0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar8 + 0x10)" ( (binary_expression "iVar8 + 0x10" identifier + number_literal) ))))) ;) (if_statement "if (piVar17 == (int *)0x0) goto LAB_0002af6d;" if (parenthesized_expression "(piVar17 == (int *)0x0)" ( (binary_expression "piVar17 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0002af6d;" goto statement_identifier ;)) (goto_statement "goto LAB_0002aef9;" goto statement_identifier ;) })) (expression_statement "puVar18 = (undefined4 *)FUN_00028ba0();" (assignment_expression "puVar18 = (undefined4 *)FUN_00028ba0()" identifier = (cast_expression "(undefined4 *)FUN_00028ba0()" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00028ba0()" identifier (argument_list "()" ( ))))) ;) (expression_statement "iVar11 = -1;" (assignment_expression "iVar11 = -1" identifier = number_literal) ;) (expression_statement "puVar14 = *(undefined4 **)(iVar8 + 0x10);" (assignment_expression "puVar14 = *(undefined4 **)(iVar8 + 0x10)" identifier = (pointer_expression "*(undefined4 **)(iVar8 + 0x10)" * (cast_expression "(undefined4 **)(iVar8 + 0x10)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar8 + 0x10)" ( (binary_expression "iVar8 + 0x10" identifier + number_literal) ))))) ;) (if_statement "if (*(undefined4 **)(iVar8 + 0x10) == (undefined4 *)0x0) {\n              iVar11 = 0;\n              puVar15 = (undefined4 *)(iVar8 + 0x10);\n            }\n            else {\n              do {\n                puVar15 = puVar14;\n                if (iVar11 <= (int)puVar15[10]) {\n                  iVar11 = puVar15[10] + 1;\n                }\n                puVar14 = (undefined4 *)*puVar15;\n              } while ((undefined4 *)*puVar15 != (undefined4 *)0x0);\n              if (iVar11 == -1) {\n                iVar11 = 0;\n              }\n            }" if (parenthesized_expression "(*(undefined4 **)(iVar8 + 0x10) == (undefined4 *)0x0)" ( (binary_expression "*(undefined4 **)(iVar8 + 0x10) == (undefined4 *)0x0" (pointer_expression "*(undefined4 **)(iVar8 + 0x10)" * (cast_expression "(undefined4 **)(iVar8 + 0x10)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar8 + 0x10)" ( (binary_expression "iVar8 + 0x10" identifier + number_literal) )))) == (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              iVar11 = 0;\n              puVar15 = (undefined4 *)(iVar8 + 0x10);\n            }" { (expression_statement "iVar11 = 0;" (assignment_expression "iVar11 = 0" identifier = number_literal) ;) (expression_statement "puVar15 = (undefined4 *)(iVar8 + 0x10);" (assignment_expression "puVar15 = (undefined4 *)(iVar8 + 0x10)" identifier = (cast_expression "(undefined4 *)(iVar8 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x10)" ( (binary_expression "iVar8 + 0x10" identifier + number_literal) )))) ;) }) (else_clause "else {\n              do {\n                puVar15 = puVar14;\n                if (iVar11 <= (int)puVar15[10]) {\n                  iVar11 = puVar15[10] + 1;\n                }\n                puVar14 = (undefined4 *)*puVar15;\n              } while ((undefined4 *)*puVar15 != (undefined4 *)0x0);\n              if (iVar11 == -1) {\n                iVar11 = 0;\n              }\n            }" else (compound_statement "{\n              do {\n                puVar15 = puVar14;\n                if (iVar11 <= (int)puVar15[10]) {\n                  iVar11 = puVar15[10] + 1;\n                }\n                puVar14 = (undefined4 *)*puVar15;\n              } while ((undefined4 *)*puVar15 != (undefined4 *)0x0);\n              if (iVar11 == -1) {\n                iVar11 = 0;\n              }\n            }" { (do_statement "do {\n                puVar15 = puVar14;\n                if (iVar11 <= (int)puVar15[10]) {\n                  iVar11 = puVar15[10] + 1;\n                }\n                puVar14 = (undefined4 *)*puVar15;\n              } while ((undefined4 *)*puVar15 != (undefined4 *)0x0);" do (compound_statement "{\n                puVar15 = puVar14;\n                if (iVar11 <= (int)puVar15[10]) {\n                  iVar11 = puVar15[10] + 1;\n                }\n                puVar14 = (undefined4 *)*puVar15;\n              }" { (expression_statement "puVar15 = puVar14;" (assignment_expression "puVar15 = puVar14" identifier = identifier) ;) (if_statement "if (iVar11 <= (int)puVar15[10]) {\n                  iVar11 = puVar15[10] + 1;\n                }" if (parenthesized_expression "(iVar11 <= (int)puVar15[10])" ( (binary_expression "iVar11 <= (int)puVar15[10]" identifier <= (cast_expression "(int)puVar15[10]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "puVar15[10]" identifier [ number_literal ]))) )) (compound_statement "{\n                  iVar11 = puVar15[10] + 1;\n                }" { (expression_statement "iVar11 = puVar15[10] + 1;" (assignment_expression "iVar11 = puVar15[10] + 1" identifier = (binary_expression "puVar15[10] + 1" (subscript_expression "puVar15[10]" identifier [ number_literal ]) + number_literal)) ;) })) (expression_statement "puVar14 = (undefined4 *)*puVar15;" (assignment_expression "puVar14 = (undefined4 *)*puVar15" identifier = (cast_expression "(undefined4 *)*puVar15" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar15" * identifier))) ;) }) while (parenthesized_expression "((undefined4 *)*puVar15 != (undefined4 *)0x0)" ( (binary_expression "(undefined4 *)*puVar15 != (undefined4 *)0x0" (cast_expression "(undefined4 *)*puVar15" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar15" * identifier)) != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (if_statement "if (iVar11 == -1) {\n                iVar11 = 0;\n              }" if (parenthesized_expression "(iVar11 == -1)" ( (binary_expression "iVar11 == -1" identifier == number_literal) )) (compound_statement "{\n                iVar11 = 0;\n              }" { (expression_statement "iVar11 = 0;" (assignment_expression "iVar11 = 0" identifier = number_literal) ;) })) }))) (expression_statement "*puVar15 = puVar18;" (assignment_expression "*puVar15 = puVar18" (pointer_expression "*puVar15" * identifier) = identifier) ;) (expression_statement "puVar18[10] = iVar11;" (assignment_expression "puVar18[10] = iVar11" (subscript_expression "puVar18[10]" identifier [ number_literal ]) = identifier) ;) })) (if_statement "if (puVar18[0xb] == 2) {\n            FUN_00035930(puVar18 + 7,local_48 + uVar9,local_44 - uVar9);\n            uVar9 = local_44;\n          }\n          else {\n            uVar9 = FUN_00029a00();\n          }" if (parenthesized_expression "(puVar18[0xb] == 2)" ( (binary_expression "puVar18[0xb] == 2" (subscript_expression "puVar18[0xb]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n            FUN_00035930(puVar18 + 7,local_48 + uVar9,local_44 - uVar9);\n            uVar9 = local_44;\n          }" { (expression_statement "FUN_00035930(puVar18 + 7,local_48 + uVar9,local_44 - uVar9);" (call_expression "FUN_00035930(puVar18 + 7,local_48 + uVar9,local_44 - uVar9)" identifier (argument_list "(puVar18 + 7,local_48 + uVar9,local_44 - uVar9)" ( (binary_expression "puVar18 + 7" identifier + number_literal) , (binary_expression "local_48 + uVar9" identifier + identifier) , (binary_expression "local_44 - uVar9" identifier - identifier) ))) ;) (expression_statement "uVar9 = local_44;" (assignment_expression "uVar9 = local_44" identifier = identifier) ;) }) (else_clause "else {\n            uVar9 = FUN_00029a00();\n          }" else (compound_statement "{\n            uVar9 = FUN_00029a00();\n          }" { (expression_statement "uVar9 = FUN_00029a00();" (assignment_expression "uVar9 = FUN_00029a00()" identifier = (call_expression "FUN_00029a00()" identifier (argument_list "()" ( )))) ;) }))) (expression_statement "local_58 = (local_58 + 1) - (uint)(puVar18[8] == 0);" (assignment_expression "local_58 = (local_58 + 1) - (uint)(puVar18[8] == 0)" identifier = (binary_expression "(local_58 + 1) - (uint)(puVar18[8] == 0)" (parenthesized_expression "(local_58 + 1)" ( (binary_expression "local_58 + 1" identifier + number_literal) )) - (call_expression "(uint)(puVar18[8] == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(puVar18[8] == 0)" ( (binary_expression "puVar18[8] == 0" (subscript_expression "puVar18[8]" identifier [ number_literal ]) == number_literal) ))))) ;) (do_statement "do {\n            puVar18 = (undefined4 *)*puVar18;\n            if (puVar18 == (undefined4 *)0x0) break;\n          } while ((int)puVar18[10] < 0);" do (compound_statement "{\n            puVar18 = (undefined4 *)*puVar18;\n            if (puVar18 == (undefined4 *)0x0) break;\n          }" { (expression_statement "puVar18 = (undefined4 *)*puVar18;" (assignment_expression "puVar18 = (undefined4 *)*puVar18" identifier = (cast_expression "(undefined4 *)*puVar18" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar18" * identifier))) ;) (if_statement "if (puVar18 == (undefined4 *)0x0) break;" if (parenthesized_expression "(puVar18 == (undefined4 *)0x0)" ( (binary_expression "puVar18 == (undefined4 *)0x0" identifier == (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (break_statement "break;" break ;)) }) while (parenthesized_expression "((int)puVar18[10] < 0)" ( (binary_expression "(int)puVar18[10] < 0" (cast_expression "(int)puVar18[10]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "puVar18[10]" identifier [ number_literal ])) < number_literal) )) ;) (labeled_statement "LAB_0002aebd:\n          iVar2 = *(int *)(&DAT_0005e002 + unaff_EBP);" statement_identifier : (expression_statement "iVar2 = *(int *)(&DAT_0005e002 + unaff_EBP);" (assignment_expression "iVar2 = *(int *)(&DAT_0005e002 + unaff_EBP)" identifier = (pointer_expression "*(int *)(&DAT_0005e002 + unaff_EBP)" * (cast_expression "(int *)(&DAT_0005e002 + unaff_EBP)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_0005e002 + unaff_EBP)" ( (binary_expression "&DAT_0005e002 + unaff_EBP" (pointer_expression "&DAT_0005e002" & identifier) + identifier) ))))) ;)) (labeled_statement "joined_r0x0002b16d:\n          if (iVar2 != 0) goto LAB_0002aecb;" statement_identifier : (if_statement "if (iVar2 != 0) goto LAB_0002aecb;" if (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0002aecb;" goto statement_identifier ;))) (expression_statement "uVar9 = FUN_000359c0(uVar9,&local_48);" (assignment_expression "uVar9 = FUN_000359c0(uVar9,&local_48)" identifier = (call_expression "FUN_000359c0(uVar9,&local_48)" identifier (argument_list "(uVar9,&local_48)" ( identifier , (pointer_expression "&local_48" & identifier) )))) ;) (if_statement "if (local_44 <= uVar9) break;" if (parenthesized_expression "(local_44 <= uVar9)" ( (binary_expression "local_44 <= uVar9" identifier <= identifier) )) (break_statement "break;" break ;)) }) while (parenthesized_expression "( true )" ( true )) ;) }))) (expression_statement "piVar17 = *(int **)(iVar8 + 0x10);" (assignment_expression "piVar17 = *(int **)(iVar8 + 0x10)" identifier = (pointer_expression "*(int **)(iVar8 + 0x10)" * (cast_expression "(int **)(iVar8 + 0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar8 + 0x10)" ( (binary_expression "iVar8 + 0x10" identifier + number_literal) ))))) ;) (if_statement "if (piVar17 != (int *)0x0) goto LAB_0002aef9;" if (parenthesized_expression "(piVar17 != (int *)0x0)" ( (binary_expression "piVar17 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0002aef9;" goto statement_identifier ;)) (goto_statement "goto LAB_0002af58;" goto statement_identifier ;) })) })) (return_statement "return 0;" return number_literal ;) (labeled_statement "LAB_0002aecb:\n  cVar7 = local_48[uVar9];" statement_identifier : (expression_statement "cVar7 = local_48[uVar9];" (assignment_expression "cVar7 = local_48[uVar9]" identifier = (subscript_expression "local_48[uVar9]" identifier [ identifier ])) ;)) (if_statement "if (cVar7 == ',') {\n    uVar9 = uVar9 + 1;\n    cVar7 = local_48[uVar9];\n  }" if (parenthesized_expression "(cVar7 == ',')" ( (binary_expression "cVar7 == ','" identifier == (char_literal "','" ' character ')) )) (compound_statement "{\n    uVar9 = uVar9 + 1;\n    cVar7 = local_48[uVar9];\n  }" { (expression_statement "uVar9 = uVar9 + 1;" (assignment_expression "uVar9 = uVar9 + 1" identifier = (binary_expression "uVar9 + 1" identifier + number_literal)) ;) (expression_statement "cVar7 = local_48[uVar9];" (assignment_expression "cVar7 = local_48[uVar9]" identifier = (subscript_expression "local_48[uVar9]" identifier [ identifier ])) ;) })) (if_statement "if ((cVar7 == ' ') || (cVar7 == '\t')) goto LAB_0002aeea;" if (parenthesized_expression "((cVar7 == ' ') || (cVar7 == '\t'))" ( (binary_expression "(cVar7 == ' ') || (cVar7 == '\t')" (parenthesized_expression "(cVar7 == ' ')" ( (binary_expression "cVar7 == ' '" identifier == (char_literal "' '" ' character ')) )) || (parenthesized_expression "(cVar7 == '\t')" ( (binary_expression "cVar7 == '\t'" identifier == (char_literal "'\t'" ' escape_sequence ')) ))) )) (goto_statement "goto LAB_0002aeea;" goto statement_identifier ;)) (goto_statement "goto LAB_0002ae00;" goto statement_identifier ;) (labeled_statement "LAB_0002aeea:\n  piVar17 = *(int **)(iVar8 + 0x10);" statement_identifier : (expression_statement "piVar17 = *(int **)(iVar8 + 0x10);" (assignment_expression "piVar17 = *(int **)(iVar8 + 0x10)" identifier = (pointer_expression "*(int **)(iVar8 + 0x10)" * (cast_expression "(int **)(iVar8 + 0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar8 + 0x10)" ( (binary_expression "iVar8 + 0x10" identifier + number_literal) ))))) ;)) (if_statement "if (piVar17 != (int *)0x0) {\nLAB_0002aef9:\n    do {\n      while ((piVar17[0xb] != 1 || (piVar17[8] != 0))) {\n        piVar17 = (int *)*piVar17;\n        if (piVar17 == (int *)0x0) goto LAB_0002af58;\n      }\n      iVar11 = piVar17[1];\n      uVar13 = *(undefined4 *)(iVar8 + 0x18);\n      uVar10 = dcgettext(0,unaff_EBP + 0x3463a,5);\n      FUN_0002bd60(uVar10,iVar11,uVar13);\n      piVar17 = (int *)*piVar17;\n    } while (piVar17 != (int *)0x0);\nLAB_0002af58:\n    if (*(int *)(&DAT_0005e002 + unaff_EBP) == 0) goto LAB_0002af6d;\n  }" if (parenthesized_expression "(piVar17 != (int *)0x0)" ( (binary_expression "piVar17 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_0002aef9:\n    do {\n      while ((piVar17[0xb] != 1 || (piVar17[8] != 0))) {\n        piVar17 = (int *)*piVar17;\n        if (piVar17 == (int *)0x0) goto LAB_0002af58;\n      }\n      iVar11 = piVar17[1];\n      uVar13 = *(undefined4 *)(iVar8 + 0x18);\n      uVar10 = dcgettext(0,unaff_EBP + 0x3463a,5);\n      FUN_0002bd60(uVar10,iVar11,uVar13);\n      piVar17 = (int *)*piVar17;\n    } while (piVar17 != (int *)0x0);\nLAB_0002af58:\n    if (*(int *)(&DAT_0005e002 + unaff_EBP) == 0) goto LAB_0002af6d;\n  }" { (labeled_statement "LAB_0002aef9:\n    do {\n      while ((piVar17[0xb] != 1 || (piVar17[8] != 0))) {\n        piVar17 = (int *)*piVar17;\n        if (piVar17 == (int *)0x0) goto LAB_0002af58;\n      }\n      iVar11 = piVar17[1];\n      uVar13 = *(undefined4 *)(iVar8 + 0x18);\n      uVar10 = dcgettext(0,unaff_EBP + 0x3463a,5);\n      FUN_0002bd60(uVar10,iVar11,uVar13);\n      piVar17 = (int *)*piVar17;\n    } while (piVar17 != (int *)0x0);" statement_identifier : (do_statement "do {\n      while ((piVar17[0xb] != 1 || (piVar17[8] != 0))) {\n        piVar17 = (int *)*piVar17;\n        if (piVar17 == (int *)0x0) goto LAB_0002af58;\n      }\n      iVar11 = piVar17[1];\n      uVar13 = *(undefined4 *)(iVar8 + 0x18);\n      uVar10 = dcgettext(0,unaff_EBP + 0x3463a,5);\n      FUN_0002bd60(uVar10,iVar11,uVar13);\n      piVar17 = (int *)*piVar17;\n    } while (piVar17 != (int *)0x0);" do (compound_statement "{\n      while ((piVar17[0xb] != 1 || (piVar17[8] != 0))) {\n        piVar17 = (int *)*piVar17;\n        if (piVar17 == (int *)0x0) goto LAB_0002af58;\n      }\n      iVar11 = piVar17[1];\n      uVar13 = *(undefined4 *)(iVar8 + 0x18);\n      uVar10 = dcgettext(0,unaff_EBP + 0x3463a,5);\n      FUN_0002bd60(uVar10,iVar11,uVar13);\n      piVar17 = (int *)*piVar17;\n    }" { (while_statement "while ((piVar17[0xb] != 1 || (piVar17[8] != 0))) {\n        piVar17 = (int *)*piVar17;\n        if (piVar17 == (int *)0x0) goto LAB_0002af58;\n      }" while (parenthesized_expression "((piVar17[0xb] != 1 || (piVar17[8] != 0)))" ( (parenthesized_expression "(piVar17[0xb] != 1 || (piVar17[8] != 0))" ( (binary_expression "piVar17[0xb] != 1 || (piVar17[8] != 0)" (binary_expression "piVar17[0xb] != 1" (subscript_expression "piVar17[0xb]" identifier [ number_literal ]) != number_literal) || (parenthesized_expression "(piVar17[8] != 0)" ( (binary_expression "piVar17[8] != 0" (subscript_expression "piVar17[8]" identifier [ number_literal ]) != number_literal) ))) )) )) (compound_statement "{\n        piVar17 = (int *)*piVar17;\n        if (piVar17 == (int *)0x0) goto LAB_0002af58;\n      }" { (expression_statement "piVar17 = (int *)*piVar17;" (assignment_expression "piVar17 = (int *)*piVar17" identifier = (cast_expression "(int *)*piVar17" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar17" * identifier))) ;) (if_statement "if (piVar17 == (int *)0x0) goto LAB_0002af58;" if (parenthesized_expression "(piVar17 == (int *)0x0)" ( (binary_expression "piVar17 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0002af58;" goto statement_identifier ;)) })) (expression_statement "iVar11 = piVar17[1];" (assignment_expression "iVar11 = piVar17[1]" identifier = (subscript_expression "piVar17[1]" identifier [ number_literal ])) ;) (expression_statement "uVar13 = *(undefined4 *)(iVar8 + 0x18);" (assignment_expression "uVar13 = *(undefined4 *)(iVar8 + 0x18)" identifier = (pointer_expression "*(undefined4 *)(iVar8 + 0x18)" * (cast_expression "(undefined4 *)(iVar8 + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x18)" ( (binary_expression "iVar8 + 0x18" identifier + number_literal) ))))) ;) (expression_statement "uVar10 = dcgettext(0,unaff_EBP + 0x3463a,5);" (assignment_expression "uVar10 = dcgettext(0,unaff_EBP + 0x3463a,5)" identifier = (call_expression "dcgettext(0,unaff_EBP + 0x3463a,5)" identifier (argument_list "(0,unaff_EBP + 0x3463a,5)" ( number_literal , (binary_expression "unaff_EBP + 0x3463a" identifier + number_literal) , number_literal )))) ;) (expression_statement "FUN_0002bd60(uVar10,iVar11,uVar13);" (call_expression "FUN_0002bd60(uVar10,iVar11,uVar13)" identifier (argument_list "(uVar10,iVar11,uVar13)" ( identifier , identifier , identifier ))) ;) (expression_statement "piVar17 = (int *)*piVar17;" (assignment_expression "piVar17 = (int *)*piVar17" identifier = (cast_expression "(int *)*piVar17" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar17" * identifier))) ;) }) while (parenthesized_expression "(piVar17 != (int *)0x0)" ( (binary_expression "piVar17 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;)) (labeled_statement "LAB_0002af58:\n    if (*(int *)(&DAT_0005e002 + unaff_EBP) == 0) goto LAB_0002af6d;" statement_identifier : (if_statement "if (*(int *)(&DAT_0005e002 + unaff_EBP) == 0) goto LAB_0002af6d;" if (parenthesized_expression "(*(int *)(&DAT_0005e002 + unaff_EBP) == 0)" ( (binary_expression "*(int *)(&DAT_0005e002 + unaff_EBP) == 0" (pointer_expression "*(int *)(&DAT_0005e002 + unaff_EBP)" * (cast_expression "(int *)(&DAT_0005e002 + unaff_EBP)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_0005e002 + unaff_EBP)" ( (binary_expression "&DAT_0005e002 + unaff_EBP" (pointer_expression "&DAT_0005e002" & identifier) + identifier) )))) == number_literal) )) (goto_statement "goto LAB_0002af6d;" goto statement_identifier ;))) })) (expression_statement "FUN_000358a0(local_3c);" (call_expression "FUN_000358a0(local_3c)" identifier (argument_list "(local_3c)" ( identifier ))) ;) (expression_statement "iVar11 = unaff_EBP + 0x342bc;" (assignment_expression "iVar11 = unaff_EBP + 0x342bc" identifier = (binary_expression "unaff_EBP + 0x342bc" identifier + number_literal)) ;) (if_statement "if (*(int *)(&DAT_0005dffe + unaff_EBP) == 0) {\n    iVar11 = unaff_EBP + 0x342bd;\n  }" if (parenthesized_expression "(*(int *)(&DAT_0005dffe + unaff_EBP) == 0)" ( (binary_expression "*(int *)(&DAT_0005dffe + unaff_EBP) == 0" (pointer_expression "*(int *)(&DAT_0005dffe + unaff_EBP)" * (cast_expression "(int *)(&DAT_0005dffe + unaff_EBP)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_0005dffe + unaff_EBP)" ( (binary_expression "&DAT_0005dffe + unaff_EBP" (pointer_expression "&DAT_0005dffe" & identifier) + identifier) )))) == number_literal) )) (compound_statement "{\n    iVar11 = unaff_EBP + 0x342bd;\n  }" { (expression_statement "iVar11 = unaff_EBP + 0x342bd;" (assignment_expression "iVar11 = unaff_EBP + 0x342bd" identifier = (binary_expression "unaff_EBP + 0x342bd" identifier + number_literal)) ;) })) (expression_statement "FUN_000358e0(local_3c,iVar11);" (call_expression "FUN_000358e0(local_3c,iVar11)" identifier (argument_list "(local_3c,iVar11)" ( identifier , identifier ))) ;) (expression_statement "uVar13 = FUN_00035970(local_3c);" (assignment_expression "uVar13 = FUN_00035970(local_3c)" identifier = (call_expression "FUN_00035970(local_3c)" identifier (argument_list "(local_3c)" ( identifier )))) ;) (expression_statement "iVar11 = FUN_000254b0(*(undefined4 *)(iVar8 + 0x14),uVar13);" (assignment_expression "iVar11 = FUN_000254b0(*(undefined4 *)(iVar8 + 0x14),uVar13)" identifier = (call_expression "FUN_000254b0(*(undefined4 *)(iVar8 + 0x14),uVar13)" identifier (argument_list "(*(undefined4 *)(iVar8 + 0x14),uVar13)" ( (pointer_expression "*(undefined4 *)(iVar8 + 0x14)" * (cast_expression "(undefined4 *)(iVar8 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x14)" ( (binary_expression "iVar8 + 0x14" identifier + number_literal) )))) , identifier )))) ;) (expression_statement "sprintf(local_30,(char *)(FUN_000357f0 + unaff_EBP + 4),local_58);" (call_expression "sprintf(local_30,(char *)(FUN_000357f0 + unaff_EBP + 4),local_58)" identifier (argument_list "(local_30,(char *)(FUN_000357f0 + unaff_EBP + 4),local_58)" ( identifier , (cast_expression "(char *)(FUN_000357f0 + unaff_EBP + 4)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(FUN_000357f0 + unaff_EBP + 4)" ( (binary_expression "FUN_000357f0 + unaff_EBP + 4" (binary_expression "FUN_000357f0 + unaff_EBP" identifier + identifier) + number_literal) ))) , identifier ))) ;) (expression_statement "FUN_000358e0(iVar11 + 0x1c,local_30);" (call_expression "FUN_000358e0(iVar11 + 0x1c,local_30)" identifier (argument_list "(iVar11 + 0x1c,local_30)" ( (binary_expression "iVar11 + 0x1c" identifier + number_literal) , identifier ))) ;) (labeled_statement "LAB_0002af6d:\n  iVar11 = FUN_00028f30(*(undefined4 *)(iVar8 + 0x14),iVar8);" statement_identifier : (expression_statement "iVar11 = FUN_00028f30(*(undefined4 *)(iVar8 + 0x14),iVar8);" (assignment_expression "iVar11 = FUN_00028f30(*(undefined4 *)(iVar8 + 0x14),iVar8)" identifier = (call_expression "FUN_00028f30(*(undefined4 *)(iVar8 + 0x14),iVar8)" identifier (argument_list "(*(undefined4 *)(iVar8 + 0x14),iVar8)" ( (pointer_expression "*(undefined4 *)(iVar8 + 0x14)" * (cast_expression "(undefined4 *)(iVar8 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x14)" ( (binary_expression "iVar8 + 0x14" identifier + number_literal) )))) , identifier )))) ;)) (if_statement "if (*(int *)(&DAT_0005e002 + unaff_EBP) != 0) {\nLAB_0002af93:\n    puVar14 = (undefined4 *)(iVar8 + 0x10);\n    puVar18 = *(undefined4 **)(iVar8 + 0x10);\n    while (puVar15 = puVar14, puVar18 != (undefined4 *)0x0) {\n      piVar17 = puVar18 + 2;\n      puVar3 = (undefined4 *)*puVar18;\n      puVar14 = puVar18;\n      puVar18 = puVar3;\n      if (*piVar17 == 0) {\n        FUN_00028bf0();\n        *puVar15 = puVar3;\n        puVar14 = puVar15;\n      }\n    }\n  }" if (parenthesized_expression "(*(int *)(&DAT_0005e002 + unaff_EBP) != 0)" ( (binary_expression "*(int *)(&DAT_0005e002 + unaff_EBP) != 0" (pointer_expression "*(int *)(&DAT_0005e002 + unaff_EBP)" * (cast_expression "(int *)(&DAT_0005e002 + unaff_EBP)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_0005e002 + unaff_EBP)" ( (binary_expression "&DAT_0005e002 + unaff_EBP" (pointer_expression "&DAT_0005e002" & identifier) + identifier) )))) != number_literal) )) (compound_statement "{\nLAB_0002af93:\n    puVar14 = (undefined4 *)(iVar8 + 0x10);\n    puVar18 = *(undefined4 **)(iVar8 + 0x10);\n    while (puVar15 = puVar14, puVar18 != (undefined4 *)0x0) {\n      piVar17 = puVar18 + 2;\n      puVar3 = (undefined4 *)*puVar18;\n      puVar14 = puVar18;\n      puVar18 = puVar3;\n      if (*piVar17 == 0) {\n        FUN_00028bf0();\n        *puVar15 = puVar3;\n        puVar14 = puVar15;\n      }\n    }\n  }" { (labeled_statement "LAB_0002af93:\n    puVar14 = (undefined4 *)(iVar8 + 0x10);" statement_identifier : (expression_statement "puVar14 = (undefined4 *)(iVar8 + 0x10);" (assignment_expression "puVar14 = (undefined4 *)(iVar8 + 0x10)" identifier = (cast_expression "(undefined4 *)(iVar8 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x10)" ( (binary_expression "iVar8 + 0x10" identifier + number_literal) )))) ;)) (expression_statement "puVar18 = *(undefined4 **)(iVar8 + 0x10);" (assignment_expression "puVar18 = *(undefined4 **)(iVar8 + 0x10)" identifier = (pointer_expression "*(undefined4 **)(iVar8 + 0x10)" * (cast_expression "(undefined4 **)(iVar8 + 0x10)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar8 + 0x10)" ( (binary_expression "iVar8 + 0x10" identifier + number_literal) ))))) ;) (while_statement "while (puVar15 = puVar14, puVar18 != (undefined4 *)0x0) {\n      piVar17 = puVar18 + 2;\n      puVar3 = (undefined4 *)*puVar18;\n      puVar14 = puVar18;\n      puVar18 = puVar3;\n      if (*piVar17 == 0) {\n        FUN_00028bf0();\n        *puVar15 = puVar3;\n        puVar14 = puVar15;\n      }\n    }" while (parenthesized_expression "(puVar15 = puVar14, puVar18 != (undefined4 *)0x0)" ( (comma_expression "puVar15 = puVar14, puVar18 != (undefined4 *)0x0" (assignment_expression "puVar15 = puVar14" identifier = identifier) , (binary_expression "puVar18 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) )) (compound_statement "{\n      piVar17 = puVar18 + 2;\n      puVar3 = (undefined4 *)*puVar18;\n      puVar14 = puVar18;\n      puVar18 = puVar3;\n      if (*piVar17 == 0) {\n        FUN_00028bf0();\n        *puVar15 = puVar3;\n        puVar14 = puVar15;\n      }\n    }" { (expression_statement "piVar17 = puVar18 + 2;" (assignment_expression "piVar17 = puVar18 + 2" identifier = (binary_expression "puVar18 + 2" identifier + number_literal)) ;) (expression_statement "puVar3 = (undefined4 *)*puVar18;" (assignment_expression "puVar3 = (undefined4 *)*puVar18" identifier = (cast_expression "(undefined4 *)*puVar18" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar18" * identifier))) ;) (expression_statement "puVar14 = puVar18;" (assignment_expression "puVar14 = puVar18" identifier = identifier) ;) (expression_statement "puVar18 = puVar3;" (assignment_expression "puVar18 = puVar3" identifier = identifier) ;) (if_statement "if (*piVar17 == 0) {\n        FUN_00028bf0();\n        *puVar15 = puVar3;\n        puVar14 = puVar15;\n      }" if (parenthesized_expression "(*piVar17 == 0)" ( (binary_expression "*piVar17 == 0" (pointer_expression "*piVar17" * identifier) == number_literal) )) (compound_statement "{\n        FUN_00028bf0();\n        *puVar15 = puVar3;\n        puVar14 = puVar15;\n      }" { (expression_statement "FUN_00028bf0();" (call_expression "FUN_00028bf0()" identifier (argument_list "()" ( ))) ;) (expression_statement "*puVar15 = puVar3;" (assignment_expression "*puVar15 = puVar3" (pointer_expression "*puVar15" * identifier) = identifier) ;) (expression_statement "puVar14 = puVar15;" (assignment_expression "puVar14 = puVar15" identifier = identifier) ;) })) })) })) (expression_statement "FUN_000357d0(local_3c);" (call_expression "FUN_000357d0(local_3c)" identifier (argument_list "(local_3c)" ( identifier ))) ;) (if_statement "if (iVar11 == 0) {\n    *(int *)(&DAT_0005dff6 + unaff_EBP) = *(int *)(&DAT_0005dff6 + unaff_EBP) + 1;\n  }" if (parenthesized_expression "(iVar11 == 0)" ( (binary_expression "iVar11 == 0" identifier == number_literal) )) (compound_statement "{\n    *(int *)(&DAT_0005dff6 + unaff_EBP) = *(int *)(&DAT_0005dff6 + unaff_EBP) + 1;\n  }" { (expression_statement "*(int *)(&DAT_0005dff6 + unaff_EBP) = *(int *)(&DAT_0005dff6 + unaff_EBP) + 1;" (assignment_expression "*(int *)(&DAT_0005dff6 + unaff_EBP) = *(int *)(&DAT_0005dff6 + unaff_EBP) + 1" (pointer_expression "*(int *)(&DAT_0005dff6 + unaff_EBP)" * (cast_expression "(int *)(&DAT_0005dff6 + unaff_EBP)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_0005dff6 + unaff_EBP)" ( (binary_expression "&DAT_0005dff6 + unaff_EBP" (pointer_expression "&DAT_0005dff6" & identifier) + identifier) )))) = (binary_expression "*(int *)(&DAT_0005dff6 + unaff_EBP) + 1" (pointer_expression "*(int *)(&DAT_0005dff6 + unaff_EBP)" * (cast_expression "(int *)(&DAT_0005dff6 + unaff_EBP)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_0005dff6 + unaff_EBP)" ( (binary_expression "&DAT_0005dff6 + unaff_EBP" (pointer_expression "&DAT_0005dff6" & identifier) + identifier) )))) + number_literal)) ;) })) (labeled_statement "LAB_0002afd9:\n  *param_3 = iVar11;" statement_identifier : (expression_statement "*param_3 = iVar11;" (assignment_expression "*param_3 = iVar11" (pointer_expression "*param_3" * identifier) = identifier) ;)) (expression_statement "FUN_000357d0(&local_48);" (call_expression "FUN_000357d0(&local_48)" identifier (argument_list "(&local_48)" ( (pointer_expression "&local_48" & identifier) ))) ;) (if_statement "if (param_4 == (int *)0x0) {\n    return 1;\n  }" if (parenthesized_expression "(param_4 == (int *)0x0)" ( (binary_expression "param_4 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    return 1;\n  }" { (return_statement "return 1;" return number_literal ;) })) (expression_statement "*param_4 = iVar8;" (assignment_expression "*param_4 = iVar8" (pointer_expression "*param_4" * identifier) = identifier) ;) (return_statement "return 1;" return number_literal ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bp replaced with injection: get_pc_thunk.bp */\n/* WARNING: Type propagation algorithm not settling */\n/* WARNING: Unknown calling convention */\n\nint check_macro(char *line,sb *expand,char **error,macro_entry **info)\n\n{\n  byte bVar1;\n  undefined4 uVar2;\n  bool bVar3;\n  byte *pbVar4;\n  formal_entry *pfVar5;\n  formal_entry *formal;\n  undefined *puVar6;\n  formal_struct *pfVar7;\n  byte bVar8;\n  char cVar9;\n  void *pvVar10;\n  byte *key;\n  macro_entry *macro;\n  size_t sVar11;\n  char *pcVar12;\n  char *pcVar13;\n  char *pcVar14;\n  formal_entry *pfVar15;\n  size_t __n;\n  int iVar16;\n  size_t idx;\n  formal_struct *pfVar17;\n  byte *pbVar18;\n  int local_58;\n  sb line_sb;\n  sb t;\n  char buffer [20];\n  \n  if (((lex_type[(byte)*line] & 2) == 0) && ((macro_mri == 0 || (*line != 0x2e)))) {\n    return 0;\n  }\n  pbVar18 = (byte *)(line + 1);\n  bVar1 = lex_type[(byte)line[1]];\n  while ((bVar1 & 1) != 0) {\n    pbVar18 = pbVar18 + 1;\n    bVar1 = lex_type[*pbVar18];\n  }\n  pbVar18 = pbVar18 + ((bVar1 & 4) != 0);\n  __n = (int)pbVar18 - (int)line;\n  pvVar10 = (void *)xmalloc(__n + 1);\n  *(undefined1 *)((int)pvVar10 + __n) = 0;\n  key = (byte *)memcpy(pvVar10,line,__n);\n  puVar6 = PTR__sch_tolower_0007ffd0;\n  bVar1 = *key;\n  pbVar4 = key;\n  while (bVar1 != 0) {\n    *pbVar4 = puVar6[bVar1];\n    bVar1 = pbVar4[1];\n    pbVar4 = pbVar4 + 1;\n  }\n  macro = (macro_entry *)hash_find(macro_hash,(char *)key);\n  free(key);\n  if (macro == (macro_entry *)0x0) {\n    return 0;\n  }\n  sb_new(&line_sb);\n  bVar1 = *pbVar18;\n  while ((0xd < bVar1 || ((0x2401U >> ((int)(char)bVar1 & 0x1fU) & 1) == 0))) {\n    pbVar18 = pbVar18 + 1;\n    sb_add_char(&line_sb,(int)(char)bVar1);\n    bVar1 = *pbVar18;\n  }\n  sb_new(expand);\n  sb_new(&t);\n  pfVar17 = macro->formals;\n  if (pfVar17 != (formal_entry *)0x0) {\n    do {\n      sb_reset(&pfVar17->actual);\n      pfVar17 = pfVar17->next;\n    } while (pfVar17 != (formal_struct *)0x0);\n    for (pfVar17 = macro->formals; pfVar17 != (formal_struct *)0x0; pfVar17 = pfVar17->next) {\n      if (-1 < pfVar17->index) goto LAB_0002adc1;\n    }\n  }\n  pfVar17 = (formal_struct *)0x0;\nLAB_0002adc1:\n  sVar11 = 0;\n  if ((macro_mri != 0) && (sVar11 = line_sb.len, line_sb.len != 0)) {\n    if (*line_sb.ptr == '.') {\n      if (((line_sb.len < 2) || (line_sb.ptr[1] == ' ')) || (line_sb.ptr[1] == '\t')) {\n        sVar11 = 1;\n      }\n      else {\n        pfVar15 = new_formal();\n        pfVar15->index = -1;\n        pfVar15->next = macro->formals;\n        macro->formals = pfVar15;\n        sVar11 = get_any_string(1,&line_sb,&pfVar15->actual);\n      }\n    }\n    else {\n      sVar11 = 0;\n    }\n  }\n  sVar11 = sb_skip_white(sVar11,&line_sb);\n  local_58 = 0;\n  bVar3 = false;\n  do {\n    idx = sVar11;\n    if (line_sb.len <= sVar11) {\nLAB_0002b19c:\n      pfVar17 = macro->formals;\n      goto joined_r0x0002b1a5;\n    }\nLAB_0002ae30:\n    bVar1 = line_sb.ptr[sVar11];\n    bVar8 = 1;\n    if ((byte)(bVar1 - 0x20) < 0x1c) {\n      bVar8 = ~(byte)(0x8001305 >> (bVar1 - 0x20 & 0x1f)) & 1;\n    }\n    if ((bVar1 != 9) && (bVar8 != 0)) {\n      if (macro_alternate != 0) goto joined_r0x0002b05a;\n      if (macro_mri != 0) {\n        if ((bVar1 & 0xfd) == 0x3c) {\n          if (sVar11 < line_sb.len) goto LAB_0002b0c6;\n        }\n        else if (bVar1 != 0x27) goto LAB_0002b03e;\n        goto joined_r0x0002b05a;\n      }\nLAB_0002b03e:\n      if (bVar1 == 0x3d) {\n        if (sVar11 < line_sb.len) goto LAB_0002b0cf;\n        goto joined_r0x0002b05a;\n      }\n      sVar11 = sVar11 + 1;\n      if (sVar11 != line_sb.len) goto LAB_0002ae30;\njoined_r0x0002b05a:\n      if (!bVar3) {\n        if (pfVar17 == (formal_struct *)0x0) {\n          if (macro_mri == 0) {\n            pcVar13 = (char *)dcgettext(0,"too many positional arguments",5);\n            if (pcVar13 == (char *)0x0) {\n              pfVar17 = macro->formals;\n              if (pfVar17 != (formal_entry *)0x0) goto LAB_0002af0e;\n              pfVar15 = (formal_entry *)0x0;\n              goto LAB_0002af6d;\n            }\n            goto LAB_0002b090;\n          }\n          pfVar17 = new_formal();\n          iVar16 = -1;\n          pfVar7 = macro->formals;\n          if (macro->formals == (formal_entry *)0x0) {\n            iVar16 = 0;\n            pfVar15 = (formal_entry *)&macro->formals;\n          }\n          else {\n            do {\n              pfVar15 = pfVar7;\n              if (iVar16 <= pfVar15->index) {\n                iVar16 = pfVar15->index + 1;\n              }\n              pfVar7 = pfVar15->next;\n            } while (pfVar15->next != (formal_struct *)0x0);\n            if (iVar16 == -1) {\n              iVar16 = 0;\n            }\n          }\n          pfVar15->next = pfVar17;\n          pfVar17->index = iVar16;\n        }\n        if (pfVar17->type == FORMAL_VARARG) {\n          sb_add_buffer(&pfVar17->actual,line_sb.ptr + idx,line_sb.len - idx);\n          sVar11 = line_sb.len;\n        }\n        else {\n          sVar11 = get_any_string(idx,&line_sb,&pfVar17->actual);\n        }\n        local_58 = (local_58 + 1) - (uint)((pfVar17->actual).len == 0);\n        do {\n          pfVar17 = pfVar17->next;\n          if (pfVar17 == (formal_struct *)0x0) break;\n        } while (pfVar17->index < 0);\nLAB_0002aebd:\n        if (macro_mri != 0) goto LAB_0002aecb;\nLAB_0002b178:\n        sVar11 = sb_skip_comma(sVar11,&line_sb);\n        idx = sVar11;\n        if (line_sb.len <= sVar11) goto LAB_0002b19c;\n        goto LAB_0002ae30;\n      }\n      pcVar13 = (char *)dcgettext(0,"can\'t mix positional and keyword arguments",5);\nLAB_0002b07a:\n      if (pcVar13 == (char *)0x0) goto LAB_0002b19c;\n      if (macro_mri != 0) goto LAB_0002af93;\nLAB_0002b090:\n      sb_kill(&t);\n      goto LAB_0002afd9;\n    }\n    if ((line_sb.len <= sVar11) || (macro_alternate != 0)) goto joined_r0x0002b05a;\nLAB_0002b0c6:\n    if (bVar1 != 0x3d) goto joined_r0x0002b05a;\nLAB_0002b0cf:\n    sb_reset(&t);\n    sVar11 = get_token(idx,&line_sb,(sb *)&line_sb.len,&t);\n    if (line_sb.ptr[sVar11] != '=') {\n      pcVar13 = (char *)dcgettext(0,"confusion in formal parameters",5);\n      goto LAB_0002b07a;\n    }\n    pcVar13 = sb_terminate(&t);\n    pvVar10 = hash_find(macro->formal_hash,pcVar13);\n    pcVar13 = t.ptr;\n    if (pvVar10 == (void *)0x0) {\n      pcVar14 = macro->name;\n      pcVar12 = (char *)dcgettext(0,"Parameter named `%s\' does not exist for macro `%s\'",5);\n      as_bad(pcVar12,pcVar13,pcVar14);\n      sb_reset(&t);\n      sVar11 = get_any_string(sVar11 + 1,&line_sb,&t);\n      bVar3 = true;\n      goto LAB_0002aebd;\n    }\n    if (*(int *)((int)pvVar10 + 0x20) != 0) {\n      pcVar13 = macro->name;\n      uVar2 = *(undefined4 *)((int)pvVar10 + 4);\n      pcVar14 = (char *)dcgettext(0,"Value for parameter `%s\' of macro `%s\' was already specified"\n                                  ,5);\n      as_warn(pcVar14,uVar2,pcVar13);\n      sb_reset((sb *)((int)pvVar10 + 0x1c));\n    }\n    sVar11 = get_any_string(sVar11 + 1,&line_sb,(sb *)((int)pvVar10 + 0x1c));\n    bVar3 = true;\n    local_58 = (local_58 + 1) - (uint)(*(int *)((int)pvVar10 + 0x20) == 0);\n    if (macro_mri == 0) goto LAB_0002b178;\nLAB_0002aecb:\n    cVar9 = line_sb.ptr[sVar11];\n    if (cVar9 == ',') {\n      sVar11 = sVar11 + 1;\n      cVar9 = line_sb.ptr[sVar11];\n    }\n  } while ((cVar9 != ' ') && (cVar9 != '\t'));\n  pfVar17 = macro->formals;\n  if (pfVar17 != (formal_entry *)0x0) {\nLAB_0002af0e:\n    do {\n      if ((pfVar17->type != FORMAL_REQUIRED) || ((pfVar17->actual).len != 0)) {\n        pfVar17 = pfVar17->next;\njoined_r0x0002b1a5:\n        if (pfVar17 == (formal_struct *)0x0) break;\n        goto LAB_0002af0e;\n      }\n      pcVar13 = (pfVar17->name).ptr;\n      pcVar14 = macro->name;\n      pcVar12 = (char *)dcgettext(0,"Missing value for required parameter `%s\' of macro `%s\'",5);\n      as_bad(pcVar12,pcVar13,pcVar14);\n      pfVar17 = pfVar17->next;\n    } while (pfVar17 != (formal_struct *)0x0);\n    if (macro_mri == 0) goto LAB_0002af66;\n  }\n  sb_reset(&t);\n  pcVar13 = "$NARG";\n  if (macro_strip_at == 0) {\n    pcVar13 = "NARG";\n  }\n  sb_add_string(&t,pcVar13);\n  pcVar13 = sb_terminate(&t);\n  pvVar10 = hash_find(macro->formal_hash,pcVar13);\n  sprintf(buffer,"%d",local_58);\n  sb_add_string((sb *)((int)pvVar10 + 0x1c),buffer);\nLAB_0002af66:\n  pfVar15 = macro->formals;\nLAB_0002af6d:\n  pcVar13 = macro_expand_body((sb *)macro,expand,pfVar15,macro->formal_hash,macro);\n  if (macro_mri != 0) {\nLAB_0002af93:\n    pfVar15 = (formal_entry *)&macro->formals;\n    pfVar17 = macro->formals;\n    while (formal = pfVar17, pfVar5 = pfVar15, formal != (formal_entry *)0x0) {\n      pfVar17 = formal->next;\n      pfVar15 = formal;\n      if ((formal->name).len == 0) {\n        del_formal(formal);\n        pfVar5->next = pfVar17;\n        pfVar15 = pfVar5;\n      }\n    }\n  }\n  sb_kill(&t);\n  if (pcVar13 == (char *)0x0) {\n    macro_number = macro_number + 1;\n  }\nLAB_0002afd9:\n  *error = pcVar13;\n  sb_kill(&line_sb);\n  if (info != (macro_entry **)0x0) {\n    *info = macro;\n    return 1;\n  }\n  return 1;\n}\n\n" comment comment comment (function_definition "int check_macro(char *line,sb *expand,char **error,macro_entry **info)\n\n{\n  byte bVar1;\n  undefined4 uVar2;\n  bool bVar3;\n  byte *pbVar4;\n  formal_entry *pfVar5;\n  formal_entry *formal;\n  undefined *puVar6;\n  formal_struct *pfVar7;\n  byte bVar8;\n  char cVar9;\n  void *pvVar10;\n  byte *key;\n  macro_entry *macro;\n  size_t sVar11;\n  char *pcVar12;\n  char *pcVar13;\n  char *pcVar14;\n  formal_entry *pfVar15;\n  size_t __n;\n  int iVar16;\n  size_t idx;\n  formal_struct *pfVar17;\n  byte *pbVar18;\n  int local_58;\n  sb line_sb;\n  sb t;\n  char buffer [20];\n  \n  if (((lex_type[(byte)*line] & 2) == 0) && ((macro_mri == 0 || (*line != 0x2e)))) {\n    return 0;\n  }\n  pbVar18 = (byte *)(line + 1);\n  bVar1 = lex_type[(byte)line[1]];\n  while ((bVar1 & 1) != 0) {\n    pbVar18 = pbVar18 + 1;\n    bVar1 = lex_type[*pbVar18];\n  }\n  pbVar18 = pbVar18 + ((bVar1 & 4) != 0);\n  __n = (int)pbVar18 - (int)line;\n  pvVar10 = (void *)xmalloc(__n + 1);\n  *(undefined1 *)((int)pvVar10 + __n) = 0;\n  key = (byte *)memcpy(pvVar10,line,__n);\n  puVar6 = PTR__sch_tolower_0007ffd0;\n  bVar1 = *key;\n  pbVar4 = key;\n  while (bVar1 != 0) {\n    *pbVar4 = puVar6[bVar1];\n    bVar1 = pbVar4[1];\n    pbVar4 = pbVar4 + 1;\n  }\n  macro = (macro_entry *)hash_find(macro_hash,(char *)key);\n  free(key);\n  if (macro == (macro_entry *)0x0) {\n    return 0;\n  }\n  sb_new(&line_sb);\n  bVar1 = *pbVar18;\n  while ((0xd < bVar1 || ((0x2401U >> ((int)(char)bVar1 & 0x1fU) & 1) == 0))) {\n    pbVar18 = pbVar18 + 1;\n    sb_add_char(&line_sb,(int)(char)bVar1);\n    bVar1 = *pbVar18;\n  }\n  sb_new(expand);\n  sb_new(&t);\n  pfVar17 = macro->formals;\n  if (pfVar17 != (formal_entry *)0x0) {\n    do {\n      sb_reset(&pfVar17->actual);\n      pfVar17 = pfVar17->next;\n    } while (pfVar17 != (formal_struct *)0x0);\n    for (pfVar17 = macro->formals; pfVar17 != (formal_struct *)0x0; pfVar17 = pfVar17->next) {\n      if (-1 < pfVar17->index) goto LAB_0002adc1;\n    }\n  }\n  pfVar17 = (formal_struct *)0x0;\nLAB_0002adc1:\n  sVar11 = 0;\n  if ((macro_mri != 0) && (sVar11 = line_sb.len, line_sb.len != 0)) {\n    if (*line_sb.ptr == '.') {\n      if (((line_sb.len < 2) || (line_sb.ptr[1] == ' ')) || (line_sb.ptr[1] == '\t')) {\n        sVar11 = 1;\n      }\n      else {\n        pfVar15 = new_formal();\n        pfVar15->index = -1;\n        pfVar15->next = macro->formals;\n        macro->formals = pfVar15;\n        sVar11 = get_any_string(1,&line_sb,&pfVar15->actual);\n      }\n    }\n    else {\n      sVar11 = 0;\n    }\n  }\n  sVar11 = sb_skip_white(sVar11,&line_sb);\n  local_58 = 0;\n  bVar3 = false;\n  do {\n    idx = sVar11;\n    if (line_sb.len <= sVar11) {\nLAB_0002b19c:\n      pfVar17 = macro->formals;\n      goto joined_r0x0002b1a5;\n    }\nLAB_0002ae30:\n    bVar1 = line_sb.ptr[sVar11];\n    bVar8 = 1;\n    if ((byte)(bVar1 - 0x20) < 0x1c) {\n      bVar8 = ~(byte)(0x8001305 >> (bVar1 - 0x20 & 0x1f)) & 1;\n    }\n    if ((bVar1 != 9) && (bVar8 != 0)) {\n      if (macro_alternate != 0) goto joined_r0x0002b05a;\n      if (macro_mri != 0) {\n        if ((bVar1 & 0xfd) == 0x3c) {\n          if (sVar11 < line_sb.len) goto LAB_0002b0c6;\n        }\n        else if (bVar1 != 0x27) goto LAB_0002b03e;\n        goto joined_r0x0002b05a;\n      }\nLAB_0002b03e:\n      if (bVar1 == 0x3d) {\n        if (sVar11 < line_sb.len) goto LAB_0002b0cf;\n        goto joined_r0x0002b05a;\n      }\n      sVar11 = sVar11 + 1;\n      if (sVar11 != line_sb.len) goto LAB_0002ae30;\njoined_r0x0002b05a:\n      if (!bVar3) {\n        if (pfVar17 == (formal_struct *)0x0) {\n          if (macro_mri == 0) {\n            pcVar13 = (char *)dcgettext(0,"too many positional arguments",5);\n            if (pcVar13 == (char *)0x0) {\n              pfVar17 = macro->formals;\n              if (pfVar17 != (formal_entry *)0x0) goto LAB_0002af0e;\n              pfVar15 = (formal_entry *)0x0;\n              goto LAB_0002af6d;\n            }\n            goto LAB_0002b090;\n          }\n          pfVar17 = new_formal();\n          iVar16 = -1;\n          pfVar7 = macro->formals;\n          if (macro->formals == (formal_entry *)0x0) {\n            iVar16 = 0;\n            pfVar15 = (formal_entry *)&macro->formals;\n          }\n          else {\n            do {\n              pfVar15 = pfVar7;\n              if (iVar16 <= pfVar15->index) {\n                iVar16 = pfVar15->index + 1;\n              }\n              pfVar7 = pfVar15->next;\n            } while (pfVar15->next != (formal_struct *)0x0);\n            if (iVar16 == -1) {\n              iVar16 = 0;\n            }\n          }\n          pfVar15->next = pfVar17;\n          pfVar17->index = iVar16;\n        }\n        if (pfVar17->type == FORMAL_VARARG) {\n          sb_add_buffer(&pfVar17->actual,line_sb.ptr + idx,line_sb.len - idx);\n          sVar11 = line_sb.len;\n        }\n        else {\n          sVar11 = get_any_string(idx,&line_sb,&pfVar17->actual);\n        }\n        local_58 = (local_58 + 1) - (uint)((pfVar17->actual).len == 0);\n        do {\n          pfVar17 = pfVar17->next;\n          if (pfVar17 == (formal_struct *)0x0) break;\n        } while (pfVar17->index < 0);\nLAB_0002aebd:\n        if (macro_mri != 0) goto LAB_0002aecb;\nLAB_0002b178:\n        sVar11 = sb_skip_comma(sVar11,&line_sb);\n        idx = sVar11;\n        if (line_sb.len <= sVar11) goto LAB_0002b19c;\n        goto LAB_0002ae30;\n      }\n      pcVar13 = (char *)dcgettext(0,"can\'t mix positional and keyword arguments",5);\nLAB_0002b07a:\n      if (pcVar13 == (char *)0x0) goto LAB_0002b19c;\n      if (macro_mri != 0) goto LAB_0002af93;\nLAB_0002b090:\n      sb_kill(&t);\n      goto LAB_0002afd9;\n    }\n    if ((line_sb.len <= sVar11) || (macro_alternate != 0)) goto joined_r0x0002b05a;\nLAB_0002b0c6:\n    if (bVar1 != 0x3d) goto joined_r0x0002b05a;\nLAB_0002b0cf:\n    sb_reset(&t);\n    sVar11 = get_token(idx,&line_sb,(sb *)&line_sb.len,&t);\n    if (line_sb.ptr[sVar11] != '=') {\n      pcVar13 = (char *)dcgettext(0,"confusion in formal parameters",5);\n      goto LAB_0002b07a;\n    }\n    pcVar13 = sb_terminate(&t);\n    pvVar10 = hash_find(macro->formal_hash,pcVar13);\n    pcVar13 = t.ptr;\n    if (pvVar10 == (void *)0x0) {\n      pcVar14 = macro->name;\n      pcVar12 = (char *)dcgettext(0,"Parameter named `%s\' does not exist for macro `%s\'",5);\n      as_bad(pcVar12,pcVar13,pcVar14);\n      sb_reset(&t);\n      sVar11 = get_any_string(sVar11 + 1,&line_sb,&t);\n      bVar3 = true;\n      goto LAB_0002aebd;\n    }\n    if (*(int *)((int)pvVar10 + 0x20) != 0) {\n      pcVar13 = macro->name;\n      uVar2 = *(undefined4 *)((int)pvVar10 + 4);\n      pcVar14 = (char *)dcgettext(0,"Value for parameter `%s\' of macro `%s\' was already specified"\n                                  ,5);\n      as_warn(pcVar14,uVar2,pcVar13);\n      sb_reset((sb *)((int)pvVar10 + 0x1c));\n    }\n    sVar11 = get_any_string(sVar11 + 1,&line_sb,(sb *)((int)pvVar10 + 0x1c));\n    bVar3 = true;\n    local_58 = (local_58 + 1) - (uint)(*(int *)((int)pvVar10 + 0x20) == 0);\n    if (macro_mri == 0) goto LAB_0002b178;\nLAB_0002aecb:\n    cVar9 = line_sb.ptr[sVar11];\n    if (cVar9 == ',') {\n      sVar11 = sVar11 + 1;\n      cVar9 = line_sb.ptr[sVar11];\n    }\n  } while ((cVar9 != ' ') && (cVar9 != '\t'));\n  pfVar17 = macro->formals;\n  if (pfVar17 != (formal_entry *)0x0) {\nLAB_0002af0e:\n    do {\n      if ((pfVar17->type != FORMAL_REQUIRED) || ((pfVar17->actual).len != 0)) {\n        pfVar17 = pfVar17->next;\njoined_r0x0002b1a5:\n        if (pfVar17 == (formal_struct *)0x0) break;\n        goto LAB_0002af0e;\n      }\n      pcVar13 = (pfVar17->name).ptr;\n      pcVar14 = macro->name;\n      pcVar12 = (char *)dcgettext(0,"Missing value for required parameter `%s\' of macro `%s\'",5);\n      as_bad(pcVar12,pcVar13,pcVar14);\n      pfVar17 = pfVar17->next;\n    } while (pfVar17 != (formal_struct *)0x0);\n    if (macro_mri == 0) goto LAB_0002af66;\n  }\n  sb_reset(&t);\n  pcVar13 = "$NARG";\n  if (macro_strip_at == 0) {\n    pcVar13 = "NARG";\n  }\n  sb_add_string(&t,pcVar13);\n  pcVar13 = sb_terminate(&t);\n  pvVar10 = hash_find(macro->formal_hash,pcVar13);\n  sprintf(buffer,"%d",local_58);\n  sb_add_string((sb *)((int)pvVar10 + 0x1c),buffer);\nLAB_0002af66:\n  pfVar15 = macro->formals;\nLAB_0002af6d:\n  pcVar13 = macro_expand_body((sb *)macro,expand,pfVar15,macro->formal_hash,macro);\n  if (macro_mri != 0) {\nLAB_0002af93:\n    pfVar15 = (formal_entry *)&macro->formals;\n    pfVar17 = macro->formals;\n    while (formal = pfVar17, pfVar5 = pfVar15, formal != (formal_entry *)0x0) {\n      pfVar17 = formal->next;\n      pfVar15 = formal;\n      if ((formal->name).len == 0) {\n        del_formal(formal);\n        pfVar5->next = pfVar17;\n        pfVar15 = pfVar5;\n      }\n    }\n  }\n  sb_kill(&t);\n  if (pcVar13 == (char *)0x0) {\n    macro_number = macro_number + 1;\n  }\nLAB_0002afd9:\n  *error = pcVar13;\n  sb_kill(&line_sb);\n  if (info != (macro_entry **)0x0) {\n    *info = macro;\n    return 1;\n  }\n  return 1;\n}" primitive_type (function_declarator "check_macro(char *line,sb *expand,char **error,macro_entry **info)" identifier (parameter_list "(char *line,sb *expand,char **error,macro_entry **info)" ( (parameter_declaration "char *line" primitive_type (pointer_declarator "*line" * identifier)) , (parameter_declaration "sb *expand" type_identifier (pointer_declarator "*expand" * identifier)) , (parameter_declaration "char **error" primitive_type (pointer_declarator "**error" * (pointer_declarator "*error" * identifier))) , (parameter_declaration "macro_entry **info" type_identifier (pointer_declarator "**info" * (pointer_declarator "*info" * identifier))) ))) (compound_statement "{\n  byte bVar1;\n  undefined4 uVar2;\n  bool bVar3;\n  byte *pbVar4;\n  formal_entry *pfVar5;\n  formal_entry *formal;\n  undefined *puVar6;\n  formal_struct *pfVar7;\n  byte bVar8;\n  char cVar9;\n  void *pvVar10;\n  byte *key;\n  macro_entry *macro;\n  size_t sVar11;\n  char *pcVar12;\n  char *pcVar13;\n  char *pcVar14;\n  formal_entry *pfVar15;\n  size_t __n;\n  int iVar16;\n  size_t idx;\n  formal_struct *pfVar17;\n  byte *pbVar18;\n  int local_58;\n  sb line_sb;\n  sb t;\n  char buffer [20];\n  \n  if (((lex_type[(byte)*line] & 2) == 0) && ((macro_mri == 0 || (*line != 0x2e)))) {\n    return 0;\n  }\n  pbVar18 = (byte *)(line + 1);\n  bVar1 = lex_type[(byte)line[1]];\n  while ((bVar1 & 1) != 0) {\n    pbVar18 = pbVar18 + 1;\n    bVar1 = lex_type[*pbVar18];\n  }\n  pbVar18 = pbVar18 + ((bVar1 & 4) != 0);\n  __n = (int)pbVar18 - (int)line;\n  pvVar10 = (void *)xmalloc(__n + 1);\n  *(undefined1 *)((int)pvVar10 + __n) = 0;\n  key = (byte *)memcpy(pvVar10,line,__n);\n  puVar6 = PTR__sch_tolower_0007ffd0;\n  bVar1 = *key;\n  pbVar4 = key;\n  while (bVar1 != 0) {\n    *pbVar4 = puVar6[bVar1];\n    bVar1 = pbVar4[1];\n    pbVar4 = pbVar4 + 1;\n  }\n  macro = (macro_entry *)hash_find(macro_hash,(char *)key);\n  free(key);\n  if (macro == (macro_entry *)0x0) {\n    return 0;\n  }\n  sb_new(&line_sb);\n  bVar1 = *pbVar18;\n  while ((0xd < bVar1 || ((0x2401U >> ((int)(char)bVar1 & 0x1fU) & 1) == 0))) {\n    pbVar18 = pbVar18 + 1;\n    sb_add_char(&line_sb,(int)(char)bVar1);\n    bVar1 = *pbVar18;\n  }\n  sb_new(expand);\n  sb_new(&t);\n  pfVar17 = macro->formals;\n  if (pfVar17 != (formal_entry *)0x0) {\n    do {\n      sb_reset(&pfVar17->actual);\n      pfVar17 = pfVar17->next;\n    } while (pfVar17 != (formal_struct *)0x0);\n    for (pfVar17 = macro->formals; pfVar17 != (formal_struct *)0x0; pfVar17 = pfVar17->next) {\n      if (-1 < pfVar17->index) goto LAB_0002adc1;\n    }\n  }\n  pfVar17 = (formal_struct *)0x0;\nLAB_0002adc1:\n  sVar11 = 0;\n  if ((macro_mri != 0) && (sVar11 = line_sb.len, line_sb.len != 0)) {\n    if (*line_sb.ptr == '.') {\n      if (((line_sb.len < 2) || (line_sb.ptr[1] == ' ')) || (line_sb.ptr[1] == '\t')) {\n        sVar11 = 1;\n      }\n      else {\n        pfVar15 = new_formal();\n        pfVar15->index = -1;\n        pfVar15->next = macro->formals;\n        macro->formals = pfVar15;\n        sVar11 = get_any_string(1,&line_sb,&pfVar15->actual);\n      }\n    }\n    else {\n      sVar11 = 0;\n    }\n  }\n  sVar11 = sb_skip_white(sVar11,&line_sb);\n  local_58 = 0;\n  bVar3 = false;\n  do {\n    idx = sVar11;\n    if (line_sb.len <= sVar11) {\nLAB_0002b19c:\n      pfVar17 = macro->formals;\n      goto joined_r0x0002b1a5;\n    }\nLAB_0002ae30:\n    bVar1 = line_sb.ptr[sVar11];\n    bVar8 = 1;\n    if ((byte)(bVar1 - 0x20) < 0x1c) {\n      bVar8 = ~(byte)(0x8001305 >> (bVar1 - 0x20 & 0x1f)) & 1;\n    }\n    if ((bVar1 != 9) && (bVar8 != 0)) {\n      if (macro_alternate != 0) goto joined_r0x0002b05a;\n      if (macro_mri != 0) {\n        if ((bVar1 & 0xfd) == 0x3c) {\n          if (sVar11 < line_sb.len) goto LAB_0002b0c6;\n        }\n        else if (bVar1 != 0x27) goto LAB_0002b03e;\n        goto joined_r0x0002b05a;\n      }\nLAB_0002b03e:\n      if (bVar1 == 0x3d) {\n        if (sVar11 < line_sb.len) goto LAB_0002b0cf;\n        goto joined_r0x0002b05a;\n      }\n      sVar11 = sVar11 + 1;\n      if (sVar11 != line_sb.len) goto LAB_0002ae30;\njoined_r0x0002b05a:\n      if (!bVar3) {\n        if (pfVar17 == (formal_struct *)0x0) {\n          if (macro_mri == 0) {\n            pcVar13 = (char *)dcgettext(0,"too many positional arguments",5);\n            if (pcVar13 == (char *)0x0) {\n              pfVar17 = macro->formals;\n              if (pfVar17 != (formal_entry *)0x0) goto LAB_0002af0e;\n              pfVar15 = (formal_entry *)0x0;\n              goto LAB_0002af6d;\n            }\n            goto LAB_0002b090;\n          }\n          pfVar17 = new_formal();\n          iVar16 = -1;\n          pfVar7 = macro->formals;\n          if (macro->formals == (formal_entry *)0x0) {\n            iVar16 = 0;\n            pfVar15 = (formal_entry *)&macro->formals;\n          }\n          else {\n            do {\n              pfVar15 = pfVar7;\n              if (iVar16 <= pfVar15->index) {\n                iVar16 = pfVar15->index + 1;\n              }\n              pfVar7 = pfVar15->next;\n            } while (pfVar15->next != (formal_struct *)0x0);\n            if (iVar16 == -1) {\n              iVar16 = 0;\n            }\n          }\n          pfVar15->next = pfVar17;\n          pfVar17->index = iVar16;\n        }\n        if (pfVar17->type == FORMAL_VARARG) {\n          sb_add_buffer(&pfVar17->actual,line_sb.ptr + idx,line_sb.len - idx);\n          sVar11 = line_sb.len;\n        }\n        else {\n          sVar11 = get_any_string(idx,&line_sb,&pfVar17->actual);\n        }\n        local_58 = (local_58 + 1) - (uint)((pfVar17->actual).len == 0);\n        do {\n          pfVar17 = pfVar17->next;\n          if (pfVar17 == (formal_struct *)0x0) break;\n        } while (pfVar17->index < 0);\nLAB_0002aebd:\n        if (macro_mri != 0) goto LAB_0002aecb;\nLAB_0002b178:\n        sVar11 = sb_skip_comma(sVar11,&line_sb);\n        idx = sVar11;\n        if (line_sb.len <= sVar11) goto LAB_0002b19c;\n        goto LAB_0002ae30;\n      }\n      pcVar13 = (char *)dcgettext(0,"can\'t mix positional and keyword arguments",5);\nLAB_0002b07a:\n      if (pcVar13 == (char *)0x0) goto LAB_0002b19c;\n      if (macro_mri != 0) goto LAB_0002af93;\nLAB_0002b090:\n      sb_kill(&t);\n      goto LAB_0002afd9;\n    }\n    if ((line_sb.len <= sVar11) || (macro_alternate != 0)) goto joined_r0x0002b05a;\nLAB_0002b0c6:\n    if (bVar1 != 0x3d) goto joined_r0x0002b05a;\nLAB_0002b0cf:\n    sb_reset(&t);\n    sVar11 = get_token(idx,&line_sb,(sb *)&line_sb.len,&t);\n    if (line_sb.ptr[sVar11] != '=') {\n      pcVar13 = (char *)dcgettext(0,"confusion in formal parameters",5);\n      goto LAB_0002b07a;\n    }\n    pcVar13 = sb_terminate(&t);\n    pvVar10 = hash_find(macro->formal_hash,pcVar13);\n    pcVar13 = t.ptr;\n    if (pvVar10 == (void *)0x0) {\n      pcVar14 = macro->name;\n      pcVar12 = (char *)dcgettext(0,"Parameter named `%s\' does not exist for macro `%s\'",5);\n      as_bad(pcVar12,pcVar13,pcVar14);\n      sb_reset(&t);\n      sVar11 = get_any_string(sVar11 + 1,&line_sb,&t);\n      bVar3 = true;\n      goto LAB_0002aebd;\n    }\n    if (*(int *)((int)pvVar10 + 0x20) != 0) {\n      pcVar13 = macro->name;\n      uVar2 = *(undefined4 *)((int)pvVar10 + 4);\n      pcVar14 = (char *)dcgettext(0,"Value for parameter `%s\' of macro `%s\' was already specified"\n                                  ,5);\n      as_warn(pcVar14,uVar2,pcVar13);\n      sb_reset((sb *)((int)pvVar10 + 0x1c));\n    }\n    sVar11 = get_any_string(sVar11 + 1,&line_sb,(sb *)((int)pvVar10 + 0x1c));\n    bVar3 = true;\n    local_58 = (local_58 + 1) - (uint)(*(int *)((int)pvVar10 + 0x20) == 0);\n    if (macro_mri == 0) goto LAB_0002b178;\nLAB_0002aecb:\n    cVar9 = line_sb.ptr[sVar11];\n    if (cVar9 == ',') {\n      sVar11 = sVar11 + 1;\n      cVar9 = line_sb.ptr[sVar11];\n    }\n  } while ((cVar9 != ' ') && (cVar9 != '\t'));\n  pfVar17 = macro->formals;\n  if (pfVar17 != (formal_entry *)0x0) {\nLAB_0002af0e:\n    do {\n      if ((pfVar17->type != FORMAL_REQUIRED) || ((pfVar17->actual).len != 0)) {\n        pfVar17 = pfVar17->next;\njoined_r0x0002b1a5:\n        if (pfVar17 == (formal_struct *)0x0) break;\n        goto LAB_0002af0e;\n      }\n      pcVar13 = (pfVar17->name).ptr;\n      pcVar14 = macro->name;\n      pcVar12 = (char *)dcgettext(0,"Missing value for required parameter `%s\' of macro `%s\'",5);\n      as_bad(pcVar12,pcVar13,pcVar14);\n      pfVar17 = pfVar17->next;\n    } while (pfVar17 != (formal_struct *)0x0);\n    if (macro_mri == 0) goto LAB_0002af66;\n  }\n  sb_reset(&t);\n  pcVar13 = "$NARG";\n  if (macro_strip_at == 0) {\n    pcVar13 = "NARG";\n  }\n  sb_add_string(&t,pcVar13);\n  pcVar13 = sb_terminate(&t);\n  pvVar10 = hash_find(macro->formal_hash,pcVar13);\n  sprintf(buffer,"%d",local_58);\n  sb_add_string((sb *)((int)pvVar10 + 0x1c),buffer);\nLAB_0002af66:\n  pfVar15 = macro->formals;\nLAB_0002af6d:\n  pcVar13 = macro_expand_body((sb *)macro,expand,pfVar15,macro->formal_hash,macro);\n  if (macro_mri != 0) {\nLAB_0002af93:\n    pfVar15 = (formal_entry *)&macro->formals;\n    pfVar17 = macro->formals;\n    while (formal = pfVar17, pfVar5 = pfVar15, formal != (formal_entry *)0x0) {\n      pfVar17 = formal->next;\n      pfVar15 = formal;\n      if ((formal->name).len == 0) {\n        del_formal(formal);\n        pfVar5->next = pfVar17;\n        pfVar15 = pfVar5;\n      }\n    }\n  }\n  sb_kill(&t);\n  if (pcVar13 == (char *)0x0) {\n    macro_number = macro_number + 1;\n  }\nLAB_0002afd9:\n  *error = pcVar13;\n  sb_kill(&line_sb);\n  if (info != (macro_entry **)0x0) {\n    *info = macro;\n    return 1;\n  }\n  return 1;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "undefined4 uVar2;" type_identifier identifier ;) (declaration "bool bVar3;" primitive_type identifier ;) (declaration "byte *pbVar4;" type_identifier (pointer_declarator "*pbVar4" * identifier) ;) (declaration "formal_entry *pfVar5;" type_identifier (pointer_declarator "*pfVar5" * identifier) ;) (declaration "formal_entry *formal;" type_identifier (pointer_declarator "*formal" * identifier) ;) (declaration "undefined *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "formal_struct *pfVar7;" type_identifier (pointer_declarator "*pfVar7" * identifier) ;) (declaration "byte bVar8;" type_identifier identifier ;) (declaration "char cVar9;" primitive_type identifier ;) (declaration "void *pvVar10;" primitive_type (pointer_declarator "*pvVar10" * identifier) ;) (declaration "byte *key;" type_identifier (pointer_declarator "*key" * identifier) ;) (declaration "macro_entry *macro;" type_identifier (pointer_declarator "*macro" * identifier) ;) (declaration "size_t sVar11;" primitive_type identifier ;) (declaration "char *pcVar12;" primitive_type (pointer_declarator "*pcVar12" * identifier) ;) (declaration "char *pcVar13;" primitive_type (pointer_declarator "*pcVar13" * identifier) ;) (declaration "char *pcVar14;" primitive_type (pointer_declarator "*pcVar14" * identifier) ;) (declaration "formal_entry *pfVar15;" type_identifier (pointer_declarator "*pfVar15" * identifier) ;) (declaration "size_t __n;" primitive_type identifier ;) (declaration "int iVar16;" primitive_type identifier ;) (declaration "size_t idx;" primitive_type identifier ;) (declaration "formal_struct *pfVar17;" type_identifier (pointer_declarator "*pfVar17" * identifier) ;) (declaration "byte *pbVar18;" type_identifier (pointer_declarator "*pbVar18" * identifier) ;) (declaration "int local_58;" primitive_type identifier ;) (declaration "sb line_sb;" type_identifier identifier ;) (declaration "sb t;" type_identifier identifier ;) (declaration "char buffer [20];" primitive_type (array_declarator "buffer [20]" identifier [ number_literal ]) ;) (if_statement "if (((lex_type[(byte)*line] & 2) == 0) && ((macro_mri == 0 || (*line != 0x2e)))) {\n    return 0;\n  }" if (parenthesized_expression "(((lex_type[(byte)*line] & 2) == 0) && ((macro_mri == 0 || (*line != 0x2e))))" ( (binary_expression "((lex_type[(byte)*line] & 2) == 0) && ((macro_mri == 0 || (*line != 0x2e)))" (parenthesized_expression "((lex_type[(byte)*line] & 2) == 0)" ( (binary_expression "(lex_type[(byte)*line] & 2) == 0" (parenthesized_expression "(lex_type[(byte)*line] & 2)" ( (binary_expression "lex_type[(byte)*line] & 2" (subscript_expression "lex_type[(byte)*line]" identifier [ (binary_expression "(byte)*line" (parenthesized_expression "(byte)" ( identifier )) * identifier) ]) & number_literal) )) == number_literal) )) && (parenthesized_expression "((macro_mri == 0 || (*line != 0x2e)))" ( (parenthesized_expression "(macro_mri == 0 || (*line != 0x2e))" ( (binary_expression "macro_mri == 0 || (*line != 0x2e)" (binary_expression "macro_mri == 0" identifier == number_literal) || (parenthesized_expression "(*line != 0x2e)" ( (binary_expression "*line != 0x2e" (pointer_expression "*line" * identifier) != number_literal) ))) )) ))) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "pbVar18 = (byte *)(line + 1);" (assignment_expression "pbVar18 = (byte *)(line + 1)" identifier = (cast_expression "(byte *)(line + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(line + 1)" ( (binary_expression "line + 1" identifier + number_literal) )))) ;) (expression_statement "bVar1 = lex_type[(byte)line[1]];" (assignment_expression "bVar1 = lex_type[(byte)line[1]]" identifier = (subscript_expression "lex_type[(byte)line[1]]" identifier [ (cast_expression "(byte)line[1]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "line[1]" identifier [ number_literal ])) ])) ;) (while_statement "while ((bVar1 & 1) != 0) {\n    pbVar18 = pbVar18 + 1;\n    bVar1 = lex_type[*pbVar18];\n  }" while (parenthesized_expression "((bVar1 & 1) != 0)" ( (binary_expression "(bVar1 & 1) != 0" (parenthesized_expression "(bVar1 & 1)" ( (binary_expression "bVar1 & 1" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    pbVar18 = pbVar18 + 1;\n    bVar1 = lex_type[*pbVar18];\n  }" { (expression_statement "pbVar18 = pbVar18 + 1;" (assignment_expression "pbVar18 = pbVar18 + 1" identifier = (binary_expression "pbVar18 + 1" identifier + number_literal)) ;) (expression_statement "bVar1 = lex_type[*pbVar18];" (assignment_expression "bVar1 = lex_type[*pbVar18]" identifier = (subscript_expression "lex_type[*pbVar18]" identifier [ (pointer_expression "*pbVar18" * identifier) ])) ;) })) (expression_statement "pbVar18 = pbVar18 + ((bVar1 & 4) != 0);" (assignment_expression "pbVar18 = pbVar18 + ((bVar1 & 4) != 0)" identifier = (binary_expression "pbVar18 + ((bVar1 & 4) != 0)" identifier + (parenthesized_expression "((bVar1 & 4) != 0)" ( (binary_expression "(bVar1 & 4) != 0" (parenthesized_expression "(bVar1 & 4)" ( (binary_expression "bVar1 & 4" identifier & number_literal) )) != number_literal) )))) ;) (expression_statement "__n = (int)pbVar18 - (int)line;" (assignment_expression "__n = (int)pbVar18 - (int)line" identifier = (binary_expression "(int)pbVar18 - (int)line" (cast_expression "(int)pbVar18" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)line" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "pvVar10 = (void *)xmalloc(__n + 1);" (assignment_expression "pvVar10 = (void *)xmalloc(__n + 1)" identifier = (cast_expression "(void *)xmalloc(__n + 1)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(__n + 1)" identifier (argument_list "(__n + 1)" ( (binary_expression "__n + 1" identifier + number_literal) ))))) ;) (expression_statement "*(undefined1 *)((int)pvVar10 + __n) = 0;" (assignment_expression "*(undefined1 *)((int)pvVar10 + __n) = 0" (pointer_expression "*(undefined1 *)((int)pvVar10 + __n)" * (cast_expression "(undefined1 *)((int)pvVar10 + __n)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pvVar10 + __n)" ( (binary_expression "(int)pvVar10 + __n" (cast_expression "(int)pvVar10" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) = number_literal) ;) (expression_statement "key = (byte *)memcpy(pvVar10,line,__n);" (assignment_expression "key = (byte *)memcpy(pvVar10,line,__n)" identifier = (cast_expression "(byte *)memcpy(pvVar10,line,__n)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "memcpy(pvVar10,line,__n)" identifier (argument_list "(pvVar10,line,__n)" ( identifier , identifier , identifier ))))) ;) (expression_statement "puVar6 = PTR__sch_tolower_0007ffd0;" (assignment_expression "puVar6 = PTR__sch_tolower_0007ffd0" identifier = identifier) ;) (expression_statement "bVar1 = *key;" (assignment_expression "bVar1 = *key" identifier = (pointer_expression "*key" * identifier)) ;) (expression_statement "pbVar4 = key;" (assignment_expression "pbVar4 = key" identifier = identifier) ;) (while_statement "while (bVar1 != 0) {\n    *pbVar4 = puVar6[bVar1];\n    bVar1 = pbVar4[1];\n    pbVar4 = pbVar4 + 1;\n  }" while (parenthesized_expression "(bVar1 != 0)" ( (binary_expression "bVar1 != 0" identifier != number_literal) )) (compound_statement "{\n    *pbVar4 = puVar6[bVar1];\n    bVar1 = pbVar4[1];\n    pbVar4 = pbVar4 + 1;\n  }" { (expression_statement "*pbVar4 = puVar6[bVar1];" (assignment_expression "*pbVar4 = puVar6[bVar1]" (pointer_expression "*pbVar4" * identifier) = (subscript_expression "puVar6[bVar1]" identifier [ identifier ])) ;) (expression_statement "bVar1 = pbVar4[1];" (assignment_expression "bVar1 = pbVar4[1]" identifier = (subscript_expression "pbVar4[1]" identifier [ number_literal ])) ;) (expression_statement "pbVar4 = pbVar4 + 1;" (assignment_expression "pbVar4 = pbVar4 + 1" identifier = (binary_expression "pbVar4 + 1" identifier + number_literal)) ;) })) (expression_statement "macro = (macro_entry *)hash_find(macro_hash,(char *)key);" (assignment_expression "macro = (macro_entry *)hash_find(macro_hash,(char *)key)" identifier = (cast_expression "(macro_entry *)hash_find(macro_hash,(char *)key)" ( (type_descriptor "macro_entry *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "hash_find(macro_hash,(char *)key)" identifier (argument_list "(macro_hash,(char *)key)" ( identifier , (cast_expression "(char *)key" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) ))))) ;) (expression_statement "free(key);" (call_expression "free(key)" identifier (argument_list "(key)" ( identifier ))) ;) (if_statement "if (macro == (macro_entry *)0x0) {\n    return 0;\n  }" if (parenthesized_expression "(macro == (macro_entry *)0x0)" ( (binary_expression "macro == (macro_entry *)0x0" identifier == (cast_expression "(macro_entry *)0x0" ( (type_descriptor "macro_entry *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "sb_new(&line_sb);" (call_expression "sb_new(&line_sb)" identifier (argument_list "(&line_sb)" ( (pointer_expression "&line_sb" & identifier) ))) ;) (expression_statement "bVar1 = *pbVar18;" (assignment_expression "bVar1 = *pbVar18" identifier = (pointer_expression "*pbVar18" * identifier)) ;) (while_statement "while ((0xd < bVar1 || ((0x2401U >> ((int)(char)bVar1 & 0x1fU) & 1) == 0))) {\n    pbVar18 = pbVar18 + 1;\n    sb_add_char(&line_sb,(int)(char)bVar1);\n    bVar1 = *pbVar18;\n  }" while (parenthesized_expression "((0xd < bVar1 || ((0x2401U >> ((int)(char)bVar1 & 0x1fU) & 1) == 0)))" ( (parenthesized_expression "(0xd < bVar1 || ((0x2401U >> ((int)(char)bVar1 & 0x1fU) & 1) == 0))" ( (binary_expression "0xd < bVar1 || ((0x2401U >> ((int)(char)bVar1 & 0x1fU) & 1) == 0)" (binary_expression "0xd < bVar1" number_literal < identifier) || (parenthesized_expression "((0x2401U >> ((int)(char)bVar1 & 0x1fU) & 1) == 0)" ( (binary_expression "(0x2401U >> ((int)(char)bVar1 & 0x1fU) & 1) == 0" (parenthesized_expression "(0x2401U >> ((int)(char)bVar1 & 0x1fU) & 1)" ( (binary_expression "0x2401U >> ((int)(char)bVar1 & 0x1fU) & 1" (binary_expression "0x2401U >> ((int)(char)bVar1 & 0x1fU)" number_literal >> (parenthesized_expression "((int)(char)bVar1 & 0x1fU)" ( (binary_expression "(int)(char)bVar1 & 0x1fU" (cast_expression "(int)(char)bVar1" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)bVar1" ( (type_descriptor "char" primitive_type) ) identifier)) & number_literal) ))) & number_literal) )) == number_literal) ))) )) )) (compound_statement "{\n    pbVar18 = pbVar18 + 1;\n    sb_add_char(&line_sb,(int)(char)bVar1);\n    bVar1 = *pbVar18;\n  }" { (expression_statement "pbVar18 = pbVar18 + 1;" (assignment_expression "pbVar18 = pbVar18 + 1" identifier = (binary_expression "pbVar18 + 1" identifier + number_literal)) ;) (expression_statement "sb_add_char(&line_sb,(int)(char)bVar1);" (call_expression "sb_add_char(&line_sb,(int)(char)bVar1)" identifier (argument_list "(&line_sb,(int)(char)bVar1)" ( (pointer_expression "&line_sb" & identifier) , (cast_expression "(int)(char)bVar1" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)bVar1" ( (type_descriptor "char" primitive_type) ) identifier)) ))) ;) (expression_statement "bVar1 = *pbVar18;" (assignment_expression "bVar1 = *pbVar18" identifier = (pointer_expression "*pbVar18" * identifier)) ;) })) (expression_statement "sb_new(expand);" (call_expression "sb_new(expand)" identifier (argument_list "(expand)" ( identifier ))) ;) (expression_statement "sb_new(&t);" (call_expression "sb_new(&t)" identifier (argument_list "(&t)" ( (pointer_expression "&t" & identifier) ))) ;) (expression_statement "pfVar17 = macro->formals;" (assignment_expression "pfVar17 = macro->formals" identifier = (field_expression "macro->formals" identifier -> field_identifier)) ;) (if_statement "if (pfVar17 != (formal_entry *)0x0) {\n    do {\n      sb_reset(&pfVar17->actual);\n      pfVar17 = pfVar17->next;\n    } while (pfVar17 != (formal_struct *)0x0);\n    for (pfVar17 = macro->formals; pfVar17 != (formal_struct *)0x0; pfVar17 = pfVar17->next) {\n      if (-1 < pfVar17->index) goto LAB_0002adc1;\n    }\n  }" if (parenthesized_expression "(pfVar17 != (formal_entry *)0x0)" ( (binary_expression "pfVar17 != (formal_entry *)0x0" identifier != (cast_expression "(formal_entry *)0x0" ( (type_descriptor "formal_entry *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    do {\n      sb_reset(&pfVar17->actual);\n      pfVar17 = pfVar17->next;\n    } while (pfVar17 != (formal_struct *)0x0);\n    for (pfVar17 = macro->formals; pfVar17 != (formal_struct *)0x0; pfVar17 = pfVar17->next) {\n      if (-1 < pfVar17->index) goto LAB_0002adc1;\n    }\n  }" { (do_statement "do {\n      sb_reset(&pfVar17->actual);\n      pfVar17 = pfVar17->next;\n    } while (pfVar17 != (formal_struct *)0x0);" do (compound_statement "{\n      sb_reset(&pfVar17->actual);\n      pfVar17 = pfVar17->next;\n    }" { (expression_statement "sb_reset(&pfVar17->actual);" (call_expression "sb_reset(&pfVar17->actual)" identifier (argument_list "(&pfVar17->actual)" ( (pointer_expression "&pfVar17->actual" & (field_expression "pfVar17->actual" identifier -> field_identifier)) ))) ;) (expression_statement "pfVar17 = pfVar17->next;" (assignment_expression "pfVar17 = pfVar17->next" identifier = (field_expression "pfVar17->next" identifier -> field_identifier)) ;) }) while (parenthesized_expression "(pfVar17 != (formal_struct *)0x0)" ( (binary_expression "pfVar17 != (formal_struct *)0x0" identifier != (cast_expression "(formal_struct *)0x0" ( (type_descriptor "formal_struct *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (for_statement "for (pfVar17 = macro->formals; pfVar17 != (formal_struct *)0x0; pfVar17 = pfVar17->next) {\n      if (-1 < pfVar17->index) goto LAB_0002adc1;\n    }" for ( (assignment_expression "pfVar17 = macro->formals" identifier = (field_expression "macro->formals" identifier -> field_identifier)) ; (binary_expression "pfVar17 != (formal_struct *)0x0" identifier != (cast_expression "(formal_struct *)0x0" ( (type_descriptor "formal_struct *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ; (assignment_expression "pfVar17 = pfVar17->next" identifier = (field_expression "pfVar17->next" identifier -> field_identifier)) ) (compound_statement "{\n      if (-1 < pfVar17->index) goto LAB_0002adc1;\n    }" { (if_statement "if (-1 < pfVar17->index) goto LAB_0002adc1;" if (parenthesized_expression "(-1 < pfVar17->index)" ( (binary_expression "-1 < pfVar17->index" number_literal < (field_expression "pfVar17->index" identifier -> field_identifier)) )) (goto_statement "goto LAB_0002adc1;" goto statement_identifier ;)) })) })) (expression_statement "pfVar17 = (formal_struct *)0x0;" (assignment_expression "pfVar17 = (formal_struct *)0x0" identifier = (cast_expression "(formal_struct *)0x0" ( (type_descriptor "formal_struct *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (labeled_statement "LAB_0002adc1:\n  sVar11 = 0;" statement_identifier : (expression_statement "sVar11 = 0;" (assignment_expression "sVar11 = 0" identifier = number_literal) ;)) (if_statement "if ((macro_mri != 0) && (sVar11 = line_sb.len, line_sb.len != 0)) {\n    if (*line_sb.ptr == '.') {\n      if (((line_sb.len < 2) || (line_sb.ptr[1] == ' ')) || (line_sb.ptr[1] == '\t')) {\n        sVar11 = 1;\n      }\n      else {\n        pfVar15 = new_formal();\n        pfVar15->index = -1;\n        pfVar15->next = macro->formals;\n        macro->formals = pfVar15;\n        sVar11 = get_any_string(1,&line_sb,&pfVar15->actual);\n      }\n    }\n    else {\n      sVar11 = 0;\n    }\n  }" if (parenthesized_expression "((macro_mri != 0) && (sVar11 = line_sb.len, line_sb.len != 0))" ( (binary_expression "(macro_mri != 0) && (sVar11 = line_sb.len, line_sb.len != 0)" (parenthesized_expression "(macro_mri != 0)" ( (binary_expression "macro_mri != 0" identifier != number_literal) )) && (parenthesized_expression "(sVar11 = line_sb.len, line_sb.len != 0)" ( (comma_expression "sVar11 = line_sb.len, line_sb.len != 0" (assignment_expression "sVar11 = line_sb.len" identifier = (field_expression "line_sb.len" identifier . field_identifier)) , (binary_expression "line_sb.len != 0" (field_expression "line_sb.len" identifier . field_identifier) != number_literal)) ))) )) (compound_statement "{\n    if (*line_sb.ptr == '.') {\n      if (((line_sb.len < 2) || (line_sb.ptr[1] == ' ')) || (line_sb.ptr[1] == '\t')) {\n        sVar11 = 1;\n      }\n      else {\n        pfVar15 = new_formal();\n        pfVar15->index = -1;\n        pfVar15->next = macro->formals;\n        macro->formals = pfVar15;\n        sVar11 = get_any_string(1,&line_sb,&pfVar15->actual);\n      }\n    }\n    else {\n      sVar11 = 0;\n    }\n  }" { (if_statement "if (*line_sb.ptr == '.') {\n      if (((line_sb.len < 2) || (line_sb.ptr[1] == ' ')) || (line_sb.ptr[1] == '\t')) {\n        sVar11 = 1;\n      }\n      else {\n        pfVar15 = new_formal();\n        pfVar15->index = -1;\n        pfVar15->next = macro->formals;\n        macro->formals = pfVar15;\n        sVar11 = get_any_string(1,&line_sb,&pfVar15->actual);\n      }\n    }\n    else {\n      sVar11 = 0;\n    }" if (parenthesized_expression "(*line_sb.ptr == '.')" ( (binary_expression "*line_sb.ptr == '.'" (pointer_expression "*line_sb.ptr" * (field_expression "line_sb.ptr" identifier . field_identifier)) == (char_literal "'.'" ' character ')) )) (compound_statement "{\n      if (((line_sb.len < 2) || (line_sb.ptr[1] == ' ')) || (line_sb.ptr[1] == '\t')) {\n        sVar11 = 1;\n      }\n      else {\n        pfVar15 = new_formal();\n        pfVar15->index = -1;\n        pfVar15->next = macro->formals;\n        macro->formals = pfVar15;\n        sVar11 = get_any_string(1,&line_sb,&pfVar15->actual);\n      }\n    }" { (if_statement "if (((line_sb.len < 2) || (line_sb.ptr[1] == ' ')) || (line_sb.ptr[1] == '\t')) {\n        sVar11 = 1;\n      }\n      else {\n        pfVar15 = new_formal();\n        pfVar15->index = -1;\n        pfVar15->next = macro->formals;\n        macro->formals = pfVar15;\n        sVar11 = get_any_string(1,&line_sb,&pfVar15->actual);\n      }" if (parenthesized_expression "(((line_sb.len < 2) || (line_sb.ptr[1] == ' ')) || (line_sb.ptr[1] == '\t'))" ( (binary_expression "((line_sb.len < 2) || (line_sb.ptr[1] == ' ')) || (line_sb.ptr[1] == '\t')" (parenthesized_expression "((line_sb.len < 2) || (line_sb.ptr[1] == ' '))" ( (binary_expression "(line_sb.len < 2) || (line_sb.ptr[1] == ' ')" (parenthesized_expression "(line_sb.len < 2)" ( (binary_expression "line_sb.len < 2" (field_expression "line_sb.len" identifier . field_identifier) < number_literal) )) || (parenthesized_expression "(line_sb.ptr[1] == ' ')" ( (binary_expression "line_sb.ptr[1] == ' '" (subscript_expression "line_sb.ptr[1]" (field_expression "line_sb.ptr" identifier . field_identifier) [ number_literal ]) == (char_literal "' '" ' character ')) ))) )) || (parenthesized_expression "(line_sb.ptr[1] == '\t')" ( (binary_expression "line_sb.ptr[1] == '\t'" (subscript_expression "line_sb.ptr[1]" (field_expression "line_sb.ptr" identifier . field_identifier) [ number_literal ]) == (char_literal "'\t'" ' escape_sequence ')) ))) )) (compound_statement "{\n        sVar11 = 1;\n      }" { (expression_statement "sVar11 = 1;" (assignment_expression "sVar11 = 1" identifier = number_literal) ;) }) (else_clause "else {\n        pfVar15 = new_formal();\n        pfVar15->index = -1;\n        pfVar15->next = macro->formals;\n        macro->formals = pfVar15;\n        sVar11 = get_any_string(1,&line_sb,&pfVar15->actual);\n      }" else (compound_statement "{\n        pfVar15 = new_formal();\n        pfVar15->index = -1;\n        pfVar15->next = macro->formals;\n        macro->formals = pfVar15;\n        sVar11 = get_any_string(1,&line_sb,&pfVar15->actual);\n      }" { (expression_statement "pfVar15 = new_formal();" (assignment_expression "pfVar15 = new_formal()" identifier = (call_expression "new_formal()" identifier (argument_list "()" ( )))) ;) (expression_statement "pfVar15->index = -1;" (assignment_expression "pfVar15->index = -1" (field_expression "pfVar15->index" identifier -> field_identifier) = number_literal) ;) (expression_statement "pfVar15->next = macro->formals;" (assignment_expression "pfVar15->next = macro->formals" (field_expression "pfVar15->next" identifier -> field_identifier) = (field_expression "macro->formals" identifier -> field_identifier)) ;) (expression_statement "macro->formals = pfVar15;" (assignment_expression "macro->formals = pfVar15" (field_expression "macro->formals" identifier -> field_identifier) = identifier) ;) (expression_statement "sVar11 = get_any_string(1,&line_sb,&pfVar15->actual);" (assignment_expression "sVar11 = get_any_string(1,&line_sb,&pfVar15->actual)" identifier = (call_expression "get_any_string(1,&line_sb,&pfVar15->actual)" identifier (argument_list "(1,&line_sb,&pfVar15->actual)" ( number_literal , (pointer_expression "&line_sb" & identifier) , (pointer_expression "&pfVar15->actual" & (field_expression "pfVar15->actual" identifier -> field_identifier)) )))) ;) }))) }) (else_clause "else {\n      sVar11 = 0;\n    }" else (compound_statement "{\n      sVar11 = 0;\n    }" { (expression_statement "sVar11 = 0;" (assignment_expression "sVar11 = 0" identifier = number_literal) ;) }))) })) (expression_statement "sVar11 = sb_skip_white(sVar11,&line_sb);" (assignment_expression "sVar11 = sb_skip_white(sVar11,&line_sb)" identifier = (call_expression "sb_skip_white(sVar11,&line_sb)" identifier (argument_list "(sVar11,&line_sb)" ( identifier , (pointer_expression "&line_sb" & identifier) )))) ;) (expression_statement "local_58 = 0;" (assignment_expression "local_58 = 0" identifier = number_literal) ;) (expression_statement "bVar3 = false;" (assignment_expression "bVar3 = false" identifier = false) ;) (do_statement "do {\n    idx = sVar11;\n    if (line_sb.len <= sVar11) {\nLAB_0002b19c:\n      pfVar17 = macro->formals;\n      goto joined_r0x0002b1a5;\n    }\nLAB_0002ae30:\n    bVar1 = line_sb.ptr[sVar11];\n    bVar8 = 1;\n    if ((byte)(bVar1 - 0x20) < 0x1c) {\n      bVar8 = ~(byte)(0x8001305 >> (bVar1 - 0x20 & 0x1f)) & 1;\n    }\n    if ((bVar1 != 9) && (bVar8 != 0)) {\n      if (macro_alternate != 0) goto joined_r0x0002b05a;\n      if (macro_mri != 0) {\n        if ((bVar1 & 0xfd) == 0x3c) {\n          if (sVar11 < line_sb.len) goto LAB_0002b0c6;\n        }\n        else if (bVar1 != 0x27) goto LAB_0002b03e;\n        goto joined_r0x0002b05a;\n      }\nLAB_0002b03e:\n      if (bVar1 == 0x3d) {\n        if (sVar11 < line_sb.len) goto LAB_0002b0cf;\n        goto joined_r0x0002b05a;\n      }\n      sVar11 = sVar11 + 1;\n      if (sVar11 != line_sb.len) goto LAB_0002ae30;\njoined_r0x0002b05a:\n      if (!bVar3) {\n        if (pfVar17 == (formal_struct *)0x0) {\n          if (macro_mri == 0) {\n            pcVar13 = (char *)dcgettext(0,"too many positional arguments",5);\n            if (pcVar13 == (char *)0x0) {\n              pfVar17 = macro->formals;\n              if (pfVar17 != (formal_entry *)0x0) goto LAB_0002af0e;\n              pfVar15 = (formal_entry *)0x0;\n              goto LAB_0002af6d;\n            }\n            goto LAB_0002b090;\n          }\n          pfVar17 = new_formal();\n          iVar16 = -1;\n          pfVar7 = macro->formals;\n          if (macro->formals == (formal_entry *)0x0) {\n            iVar16 = 0;\n            pfVar15 = (formal_entry *)&macro->formals;\n          }\n          else {\n            do {\n              pfVar15 = pfVar7;\n              if (iVar16 <= pfVar15->index) {\n                iVar16 = pfVar15->index + 1;\n              }\n              pfVar7 = pfVar15->next;\n            } while (pfVar15->next != (formal_struct *)0x0);\n            if (iVar16 == -1) {\n              iVar16 = 0;\n            }\n          }\n          pfVar15->next = pfVar17;\n          pfVar17->index = iVar16;\n        }\n        if (pfVar17->type == FORMAL_VARARG) {\n          sb_add_buffer(&pfVar17->actual,line_sb.ptr + idx,line_sb.len - idx);\n          sVar11 = line_sb.len;\n        }\n        else {\n          sVar11 = get_any_string(idx,&line_sb,&pfVar17->actual);\n        }\n        local_58 = (local_58 + 1) - (uint)((pfVar17->actual).len == 0);\n        do {\n          pfVar17 = pfVar17->next;\n          if (pfVar17 == (formal_struct *)0x0) break;\n        } while (pfVar17->index < 0);\nLAB_0002aebd:\n        if (macro_mri != 0) goto LAB_0002aecb;\nLAB_0002b178:\n        sVar11 = sb_skip_comma(sVar11,&line_sb);\n        idx = sVar11;\n        if (line_sb.len <= sVar11) goto LAB_0002b19c;\n        goto LAB_0002ae30;\n      }\n      pcVar13 = (char *)dcgettext(0,"can\'t mix positional and keyword arguments",5);\nLAB_0002b07a:\n      if (pcVar13 == (char *)0x0) goto LAB_0002b19c;\n      if (macro_mri != 0) goto LAB_0002af93;\nLAB_0002b090:\n      sb_kill(&t);\n      goto LAB_0002afd9;\n    }\n    if ((line_sb.len <= sVar11) || (macro_alternate != 0)) goto joined_r0x0002b05a;\nLAB_0002b0c6:\n    if (bVar1 != 0x3d) goto joined_r0x0002b05a;\nLAB_0002b0cf:\n    sb_reset(&t);\n    sVar11 = get_token(idx,&line_sb,(sb *)&line_sb.len,&t);\n    if (line_sb.ptr[sVar11] != '=') {\n      pcVar13 = (char *)dcgettext(0,"confusion in formal parameters",5);\n      goto LAB_0002b07a;\n    }\n    pcVar13 = sb_terminate(&t);\n    pvVar10 = hash_find(macro->formal_hash,pcVar13);\n    pcVar13 = t.ptr;\n    if (pvVar10 == (void *)0x0) {\n      pcVar14 = macro->name;\n      pcVar12 = (char *)dcgettext(0,"Parameter named `%s\' does not exist for macro `%s\'",5);\n      as_bad(pcVar12,pcVar13,pcVar14);\n      sb_reset(&t);\n      sVar11 = get_any_string(sVar11 + 1,&line_sb,&t);\n      bVar3 = true;\n      goto LAB_0002aebd;\n    }\n    if (*(int *)((int)pvVar10 + 0x20) != 0) {\n      pcVar13 = macro->name;\n      uVar2 = *(undefined4 *)((int)pvVar10 + 4);\n      pcVar14 = (char *)dcgettext(0,"Value for parameter `%s\' of macro `%s\' was already specified"\n                                  ,5);\n      as_warn(pcVar14,uVar2,pcVar13);\n      sb_reset((sb *)((int)pvVar10 + 0x1c));\n    }\n    sVar11 = get_any_string(sVar11 + 1,&line_sb,(sb *)((int)pvVar10 + 0x1c));\n    bVar3 = true;\n    local_58 = (local_58 + 1) - (uint)(*(int *)((int)pvVar10 + 0x20) == 0);\n    if (macro_mri == 0) goto LAB_0002b178;\nLAB_0002aecb:\n    cVar9 = line_sb.ptr[sVar11];\n    if (cVar9 == ',') {\n      sVar11 = sVar11 + 1;\n      cVar9 = line_sb.ptr[sVar11];\n    }\n  } while ((cVar9 != ' ') && (cVar9 != '\t'));" do (compound_statement "{\n    idx = sVar11;\n    if (line_sb.len <= sVar11) {\nLAB_0002b19c:\n      pfVar17 = macro->formals;\n      goto joined_r0x0002b1a5;\n    }\nLAB_0002ae30:\n    bVar1 = line_sb.ptr[sVar11];\n    bVar8 = 1;\n    if ((byte)(bVar1 - 0x20) < 0x1c) {\n      bVar8 = ~(byte)(0x8001305 >> (bVar1 - 0x20 & 0x1f)) & 1;\n    }\n    if ((bVar1 != 9) && (bVar8 != 0)) {\n      if (macro_alternate != 0) goto joined_r0x0002b05a;\n      if (macro_mri != 0) {\n        if ((bVar1 & 0xfd) == 0x3c) {\n          if (sVar11 < line_sb.len) goto LAB_0002b0c6;\n        }\n        else if (bVar1 != 0x27) goto LAB_0002b03e;\n        goto joined_r0x0002b05a;\n      }\nLAB_0002b03e:\n      if (bVar1 == 0x3d) {\n        if (sVar11 < line_sb.len) goto LAB_0002b0cf;\n        goto joined_r0x0002b05a;\n      }\n      sVar11 = sVar11 + 1;\n      if (sVar11 != line_sb.len) goto LAB_0002ae30;\njoined_r0x0002b05a:\n      if (!bVar3) {\n        if (pfVar17 == (formal_struct *)0x0) {\n          if (macro_mri == 0) {\n            pcVar13 = (char *)dcgettext(0,"too many positional arguments",5);\n            if (pcVar13 == (char *)0x0) {\n              pfVar17 = macro->formals;\n              if (pfVar17 != (formal_entry *)0x0) goto LAB_0002af0e;\n              pfVar15 = (formal_entry *)0x0;\n              goto LAB_0002af6d;\n            }\n            goto LAB_0002b090;\n          }\n          pfVar17 = new_formal();\n          iVar16 = -1;\n          pfVar7 = macro->formals;\n          if (macro->formals == (formal_entry *)0x0) {\n            iVar16 = 0;\n            pfVar15 = (formal_entry *)&macro->formals;\n          }\n          else {\n            do {\n              pfVar15 = pfVar7;\n              if (iVar16 <= pfVar15->index) {\n                iVar16 = pfVar15->index + 1;\n              }\n              pfVar7 = pfVar15->next;\n            } while (pfVar15->next != (formal_struct *)0x0);\n            if (iVar16 == -1) {\n              iVar16 = 0;\n            }\n          }\n          pfVar15->next = pfVar17;\n          pfVar17->index = iVar16;\n        }\n        if (pfVar17->type == FORMAL_VARARG) {\n          sb_add_buffer(&pfVar17->actual,line_sb.ptr + idx,line_sb.len - idx);\n          sVar11 = line_sb.len;\n        }\n        else {\n          sVar11 = get_any_string(idx,&line_sb,&pfVar17->actual);\n        }\n        local_58 = (local_58 + 1) - (uint)((pfVar17->actual).len == 0);\n        do {\n          pfVar17 = pfVar17->next;\n          if (pfVar17 == (formal_struct *)0x0) break;\n        } while (pfVar17->index < 0);\nLAB_0002aebd:\n        if (macro_mri != 0) goto LAB_0002aecb;\nLAB_0002b178:\n        sVar11 = sb_skip_comma(sVar11,&line_sb);\n        idx = sVar11;\n        if (line_sb.len <= sVar11) goto LAB_0002b19c;\n        goto LAB_0002ae30;\n      }\n      pcVar13 = (char *)dcgettext(0,"can\'t mix positional and keyword arguments",5);\nLAB_0002b07a:\n      if (pcVar13 == (char *)0x0) goto LAB_0002b19c;\n      if (macro_mri != 0) goto LAB_0002af93;\nLAB_0002b090:\n      sb_kill(&t);\n      goto LAB_0002afd9;\n    }\n    if ((line_sb.len <= sVar11) || (macro_alternate != 0)) goto joined_r0x0002b05a;\nLAB_0002b0c6:\n    if (bVar1 != 0x3d) goto joined_r0x0002b05a;\nLAB_0002b0cf:\n    sb_reset(&t);\n    sVar11 = get_token(idx,&line_sb,(sb *)&line_sb.len,&t);\n    if (line_sb.ptr[sVar11] != '=') {\n      pcVar13 = (char *)dcgettext(0,"confusion in formal parameters",5);\n      goto LAB_0002b07a;\n    }\n    pcVar13 = sb_terminate(&t);\n    pvVar10 = hash_find(macro->formal_hash,pcVar13);\n    pcVar13 = t.ptr;\n    if (pvVar10 == (void *)0x0) {\n      pcVar14 = macro->name;\n      pcVar12 = (char *)dcgettext(0,"Parameter named `%s\' does not exist for macro `%s\'",5);\n      as_bad(pcVar12,pcVar13,pcVar14);\n      sb_reset(&t);\n      sVar11 = get_any_string(sVar11 + 1,&line_sb,&t);\n      bVar3 = true;\n      goto LAB_0002aebd;\n    }\n    if (*(int *)((int)pvVar10 + 0x20) != 0) {\n      pcVar13 = macro->name;\n      uVar2 = *(undefined4 *)((int)pvVar10 + 4);\n      pcVar14 = (char *)dcgettext(0,"Value for parameter `%s\' of macro `%s\' was already specified"\n                                  ,5);\n      as_warn(pcVar14,uVar2,pcVar13);\n      sb_reset((sb *)((int)pvVar10 + 0x1c));\n    }\n    sVar11 = get_any_string(sVar11 + 1,&line_sb,(sb *)((int)pvVar10 + 0x1c));\n    bVar3 = true;\n    local_58 = (local_58 + 1) - (uint)(*(int *)((int)pvVar10 + 0x20) == 0);\n    if (macro_mri == 0) goto LAB_0002b178;\nLAB_0002aecb:\n    cVar9 = line_sb.ptr[sVar11];\n    if (cVar9 == ',') {\n      sVar11 = sVar11 + 1;\n      cVar9 = line_sb.ptr[sVar11];\n    }\n  }" { (expression_statement "idx = sVar11;" (assignment_expression "idx = sVar11" identifier = identifier) ;) (if_statement "if (line_sb.len <= sVar11) {\nLAB_0002b19c:\n      pfVar17 = macro->formals;\n      goto joined_r0x0002b1a5;\n    }" if (parenthesized_expression "(line_sb.len <= sVar11)" ( (binary_expression "line_sb.len <= sVar11" (field_expression "line_sb.len" identifier . field_identifier) <= identifier) )) (compound_statement "{\nLAB_0002b19c:\n      pfVar17 = macro->formals;\n      goto joined_r0x0002b1a5;\n    }" { (labeled_statement "LAB_0002b19c:\n      pfVar17 = macro->formals;" statement_identifier : (expression_statement "pfVar17 = macro->formals;" (assignment_expression "pfVar17 = macro->formals" identifier = (field_expression "macro->formals" identifier -> field_identifier)) ;)) (goto_statement "goto joined_r0x0002b1a5;" goto statement_identifier ;) })) (labeled_statement "LAB_0002ae30:\n    bVar1 = line_sb.ptr[sVar11];" statement_identifier : (expression_statement "bVar1 = line_sb.ptr[sVar11];" (assignment_expression "bVar1 = line_sb.ptr[sVar11]" identifier = (subscript_expression "line_sb.ptr[sVar11]" (field_expression "line_sb.ptr" identifier . field_identifier) [ identifier ])) ;)) (expression_statement "bVar8 = 1;" (assignment_expression "bVar8 = 1" identifier = number_literal) ;) (if_statement "if ((byte)(bVar1 - 0x20) < 0x1c) {\n      bVar8 = ~(byte)(0x8001305 >> (bVar1 - 0x20 & 0x1f)) & 1;\n    }" if (parenthesized_expression "((byte)(bVar1 - 0x20) < 0x1c)" ( (binary_expression "(byte)(bVar1 - 0x20) < 0x1c" (call_expression "(byte)(bVar1 - 0x20)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(bVar1 - 0x20)" ( (binary_expression "bVar1 - 0x20" identifier - number_literal) ))) < number_literal) )) (compound_statement "{\n      bVar8 = ~(byte)(0x8001305 >> (bVar1 - 0x20 & 0x1f)) & 1;\n    }" { (expression_statement "bVar8 = ~(byte)(0x8001305 >> (bVar1 - 0x20 & 0x1f)) & 1;" (assignment_expression "bVar8 = ~(byte)(0x8001305 >> (bVar1 - 0x20 & 0x1f)) & 1" identifier = (binary_expression "~(byte)(0x8001305 >> (bVar1 - 0x20 & 0x1f)) & 1" (unary_expression "~(byte)(0x8001305 >> (bVar1 - 0x20 & 0x1f))" ~ (call_expression "(byte)(0x8001305 >> (bVar1 - 0x20 & 0x1f))" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(0x8001305 >> (bVar1 - 0x20 & 0x1f))" ( (binary_expression "0x8001305 >> (bVar1 - 0x20 & 0x1f)" number_literal >> (parenthesized_expression "(bVar1 - 0x20 & 0x1f)" ( (binary_expression "bVar1 - 0x20 & 0x1f" (binary_expression "bVar1 - 0x20" identifier - number_literal) & number_literal) ))) )))) & number_literal)) ;) })) (if_statement "if ((bVar1 != 9) && (bVar8 != 0)) {\n      if (macro_alternate != 0) goto joined_r0x0002b05a;\n      if (macro_mri != 0) {\n        if ((bVar1 & 0xfd) == 0x3c) {\n          if (sVar11 < line_sb.len) goto LAB_0002b0c6;\n        }\n        else if (bVar1 != 0x27) goto LAB_0002b03e;\n        goto joined_r0x0002b05a;\n      }\nLAB_0002b03e:\n      if (bVar1 == 0x3d) {\n        if (sVar11 < line_sb.len) goto LAB_0002b0cf;\n        goto joined_r0x0002b05a;\n      }\n      sVar11 = sVar11 + 1;\n      if (sVar11 != line_sb.len) goto LAB_0002ae30;\njoined_r0x0002b05a:\n      if (!bVar3) {\n        if (pfVar17 == (formal_struct *)0x0) {\n          if (macro_mri == 0) {\n            pcVar13 = (char *)dcgettext(0,"too many positional arguments",5);\n            if (pcVar13 == (char *)0x0) {\n              pfVar17 = macro->formals;\n              if (pfVar17 != (formal_entry *)0x0) goto LAB_0002af0e;\n              pfVar15 = (formal_entry *)0x0;\n              goto LAB_0002af6d;\n            }\n            goto LAB_0002b090;\n          }\n          pfVar17 = new_formal();\n          iVar16 = -1;\n          pfVar7 = macro->formals;\n          if (macro->formals == (formal_entry *)0x0) {\n            iVar16 = 0;\n            pfVar15 = (formal_entry *)&macro->formals;\n          }\n          else {\n            do {\n              pfVar15 = pfVar7;\n              if (iVar16 <= pfVar15->index) {\n                iVar16 = pfVar15->index + 1;\n              }\n              pfVar7 = pfVar15->next;\n            } while (pfVar15->next != (formal_struct *)0x0);\n            if (iVar16 == -1) {\n              iVar16 = 0;\n            }\n          }\n          pfVar15->next = pfVar17;\n          pfVar17->index = iVar16;\n        }\n        if (pfVar17->type == FORMAL_VARARG) {\n          sb_add_buffer(&pfVar17->actual,line_sb.ptr + idx,line_sb.len - idx);\n          sVar11 = line_sb.len;\n        }\n        else {\n          sVar11 = get_any_string(idx,&line_sb,&pfVar17->actual);\n        }\n        local_58 = (local_58 + 1) - (uint)((pfVar17->actual).len == 0);\n        do {\n          pfVar17 = pfVar17->next;\n          if (pfVar17 == (formal_struct *)0x0) break;\n        } while (pfVar17->index < 0);\nLAB_0002aebd:\n        if (macro_mri != 0) goto LAB_0002aecb;\nLAB_0002b178:\n        sVar11 = sb_skip_comma(sVar11,&line_sb);\n        idx = sVar11;\n        if (line_sb.len <= sVar11) goto LAB_0002b19c;\n        goto LAB_0002ae30;\n      }\n      pcVar13 = (char *)dcgettext(0,"can\'t mix positional and keyword arguments",5);\nLAB_0002b07a:\n      if (pcVar13 == (char *)0x0) goto LAB_0002b19c;\n      if (macro_mri != 0) goto LAB_0002af93;\nLAB_0002b090:\n      sb_kill(&t);\n      goto LAB_0002afd9;\n    }" if (parenthesized_expression "((bVar1 != 9) && (bVar8 != 0))" ( (binary_expression "(bVar1 != 9) && (bVar8 != 0)" (parenthesized_expression "(bVar1 != 9)" ( (binary_expression "bVar1 != 9" identifier != number_literal) )) && (parenthesized_expression "(bVar8 != 0)" ( (binary_expression "bVar8 != 0" identifier != number_literal) ))) )) (compound_statement "{\n      if (macro_alternate != 0) goto joined_r0x0002b05a;\n      if (macro_mri != 0) {\n        if ((bVar1 & 0xfd) == 0x3c) {\n          if (sVar11 < line_sb.len) goto LAB_0002b0c6;\n        }\n        else if (bVar1 != 0x27) goto LAB_0002b03e;\n        goto joined_r0x0002b05a;\n      }\nLAB_0002b03e:\n      if (bVar1 == 0x3d) {\n        if (sVar11 < line_sb.len) goto LAB_0002b0cf;\n        goto joined_r0x0002b05a;\n      }\n      sVar11 = sVar11 + 1;\n      if (sVar11 != line_sb.len) goto LAB_0002ae30;\njoined_r0x0002b05a:\n      if (!bVar3) {\n        if (pfVar17 == (formal_struct *)0x0) {\n          if (macro_mri == 0) {\n            pcVar13 = (char *)dcgettext(0,"too many positional arguments",5);\n            if (pcVar13 == (char *)0x0) {\n              pfVar17 = macro->formals;\n              if (pfVar17 != (formal_entry *)0x0) goto LAB_0002af0e;\n              pfVar15 = (formal_entry *)0x0;\n              goto LAB_0002af6d;\n            }\n            goto LAB_0002b090;\n          }\n          pfVar17 = new_formal();\n          iVar16 = -1;\n          pfVar7 = macro->formals;\n          if (macro->formals == (formal_entry *)0x0) {\n            iVar16 = 0;\n            pfVar15 = (formal_entry *)&macro->formals;\n          }\n          else {\n            do {\n              pfVar15 = pfVar7;\n              if (iVar16 <= pfVar15->index) {\n                iVar16 = pfVar15->index + 1;\n              }\n              pfVar7 = pfVar15->next;\n            } while (pfVar15->next != (formal_struct *)0x0);\n            if (iVar16 == -1) {\n              iVar16 = 0;\n            }\n          }\n          pfVar15->next = pfVar17;\n          pfVar17->index = iVar16;\n        }\n        if (pfVar17->type == FORMAL_VARARG) {\n          sb_add_buffer(&pfVar17->actual,line_sb.ptr + idx,line_sb.len - idx);\n          sVar11 = line_sb.len;\n        }\n        else {\n          sVar11 = get_any_string(idx,&line_sb,&pfVar17->actual);\n        }\n        local_58 = (local_58 + 1) - (uint)((pfVar17->actual).len == 0);\n        do {\n          pfVar17 = pfVar17->next;\n          if (pfVar17 == (formal_struct *)0x0) break;\n        } while (pfVar17->index < 0);\nLAB_0002aebd:\n        if (macro_mri != 0) goto LAB_0002aecb;\nLAB_0002b178:\n        sVar11 = sb_skip_comma(sVar11,&line_sb);\n        idx = sVar11;\n        if (line_sb.len <= sVar11) goto LAB_0002b19c;\n        goto LAB_0002ae30;\n      }\n      pcVar13 = (char *)dcgettext(0,"can\'t mix positional and keyword arguments",5);\nLAB_0002b07a:\n      if (pcVar13 == (char *)0x0) goto LAB_0002b19c;\n      if (macro_mri != 0) goto LAB_0002af93;\nLAB_0002b090:\n      sb_kill(&t);\n      goto LAB_0002afd9;\n    }" { (if_statement "if (macro_alternate != 0) goto joined_r0x0002b05a;" if (parenthesized_expression "(macro_alternate != 0)" ( (binary_expression "macro_alternate != 0" identifier != number_literal) )) (goto_statement "goto joined_r0x0002b05a;" goto statement_identifier ;)) (if_statement "if (macro_mri != 0) {\n        if ((bVar1 & 0xfd) == 0x3c) {\n          if (sVar11 < line_sb.len) goto LAB_0002b0c6;\n        }\n        else if (bVar1 != 0x27) goto LAB_0002b03e;\n        goto joined_r0x0002b05a;\n      }" if (parenthesized_expression "(macro_mri != 0)" ( (binary_expression "macro_mri != 0" identifier != number_literal) )) (compound_statement "{\n        if ((bVar1 & 0xfd) == 0x3c) {\n          if (sVar11 < line_sb.len) goto LAB_0002b0c6;\n        }\n        else if (bVar1 != 0x27) goto LAB_0002b03e;\n        goto joined_r0x0002b05a;\n      }" { (if_statement "if ((bVar1 & 0xfd) == 0x3c) {\n          if (sVar11 < line_sb.len) goto LAB_0002b0c6;\n        }\n        else if (bVar1 != 0x27) goto LAB_0002b03e;" if (parenthesized_expression "((bVar1 & 0xfd) == 0x3c)" ( (binary_expression "(bVar1 & 0xfd) == 0x3c" (parenthesized_expression "(bVar1 & 0xfd)" ( (binary_expression "bVar1 & 0xfd" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n          if (sVar11 < line_sb.len) goto LAB_0002b0c6;\n        }" { (if_statement "if (sVar11 < line_sb.len) goto LAB_0002b0c6;" if (parenthesized_expression "(sVar11 < line_sb.len)" ( (binary_expression "sVar11 < line_sb.len" identifier < (field_expression "line_sb.len" identifier . field_identifier)) )) (goto_statement "goto LAB_0002b0c6;" goto statement_identifier ;)) }) (else_clause "else if (bVar1 != 0x27) goto LAB_0002b03e;" else (if_statement "if (bVar1 != 0x27) goto LAB_0002b03e;" if (parenthesized_expression "(bVar1 != 0x27)" ( (binary_expression "bVar1 != 0x27" identifier != number_literal) )) (goto_statement "goto LAB_0002b03e;" goto statement_identifier ;)))) (goto_statement "goto joined_r0x0002b05a;" goto statement_identifier ;) })) (labeled_statement "LAB_0002b03e:\n      if (bVar1 == 0x3d) {\n        if (sVar11 < line_sb.len) goto LAB_0002b0cf;\n        goto joined_r0x0002b05a;\n      }" statement_identifier : (if_statement "if (bVar1 == 0x3d) {\n        if (sVar11 < line_sb.len) goto LAB_0002b0cf;\n        goto joined_r0x0002b05a;\n      }" if (parenthesized_expression "(bVar1 == 0x3d)" ( (binary_expression "bVar1 == 0x3d" identifier == number_literal) )) (compound_statement "{\n        if (sVar11 < line_sb.len) goto LAB_0002b0cf;\n        goto joined_r0x0002b05a;\n      }" { (if_statement "if (sVar11 < line_sb.len) goto LAB_0002b0cf;" if (parenthesized_expression "(sVar11 < line_sb.len)" ( (binary_expression "sVar11 < line_sb.len" identifier < (field_expression "line_sb.len" identifier . field_identifier)) )) (goto_statement "goto LAB_0002b0cf;" goto statement_identifier ;)) (goto_statement "goto joined_r0x0002b05a;" goto statement_identifier ;) }))) (expression_statement "sVar11 = sVar11 + 1;" (assignment_expression "sVar11 = sVar11 + 1" identifier = (binary_expression "sVar11 + 1" identifier + number_literal)) ;) (if_statement "if (sVar11 != line_sb.len) goto LAB_0002ae30;" if (parenthesized_expression "(sVar11 != line_sb.len)" ( (binary_expression "sVar11 != line_sb.len" identifier != (field_expression "line_sb.len" identifier . field_identifier)) )) (goto_statement "goto LAB_0002ae30;" goto statement_identifier ;)) (labeled_statement "joined_r0x0002b05a:\n      if (!bVar3) {\n        if (pfVar17 == (formal_struct *)0x0) {\n          if (macro_mri == 0) {\n            pcVar13 = (char *)dcgettext(0,"too many positional arguments",5);\n            if (pcVar13 == (char *)0x0) {\n              pfVar17 = macro->formals;\n              if (pfVar17 != (formal_entry *)0x0) goto LAB_0002af0e;\n              pfVar15 = (formal_entry *)0x0;\n              goto LAB_0002af6d;\n            }\n            goto LAB_0002b090;\n          }\n          pfVar17 = new_formal();\n          iVar16 = -1;\n          pfVar7 = macro->formals;\n          if (macro->formals == (formal_entry *)0x0) {\n            iVar16 = 0;\n            pfVar15 = (formal_entry *)&macro->formals;\n          }\n          else {\n            do {\n              pfVar15 = pfVar7;\n              if (iVar16 <= pfVar15->index) {\n                iVar16 = pfVar15->index + 1;\n              }\n              pfVar7 = pfVar15->next;\n            } while (pfVar15->next != (formal_struct *)0x0);\n            if (iVar16 == -1) {\n              iVar16 = 0;\n            }\n          }\n          pfVar15->next = pfVar17;\n          pfVar17->index = iVar16;\n        }\n        if (pfVar17->type == FORMAL_VARARG) {\n          sb_add_buffer(&pfVar17->actual,line_sb.ptr + idx,line_sb.len - idx);\n          sVar11 = line_sb.len;\n        }\n        else {\n          sVar11 = get_any_string(idx,&line_sb,&pfVar17->actual);\n        }\n        local_58 = (local_58 + 1) - (uint)((pfVar17->actual).len == 0);\n        do {\n          pfVar17 = pfVar17->next;\n          if (pfVar17 == (formal_struct *)0x0) break;\n        } while (pfVar17->index < 0);\nLAB_0002aebd:\n        if (macro_mri != 0) goto LAB_0002aecb;\nLAB_0002b178:\n        sVar11 = sb_skip_comma(sVar11,&line_sb);\n        idx = sVar11;\n        if (line_sb.len <= sVar11) goto LAB_0002b19c;\n        goto LAB_0002ae30;\n      }" statement_identifier : (if_statement "if (!bVar3) {\n        if (pfVar17 == (formal_struct *)0x0) {\n          if (macro_mri == 0) {\n            pcVar13 = (char *)dcgettext(0,"too many positional arguments",5);\n            if (pcVar13 == (char *)0x0) {\n              pfVar17 = macro->formals;\n              if (pfVar17 != (formal_entry *)0x0) goto LAB_0002af0e;\n              pfVar15 = (formal_entry *)0x0;\n              goto LAB_0002af6d;\n            }\n            goto LAB_0002b090;\n          }\n          pfVar17 = new_formal();\n          iVar16 = -1;\n          pfVar7 = macro->formals;\n          if (macro->formals == (formal_entry *)0x0) {\n            iVar16 = 0;\n            pfVar15 = (formal_entry *)&macro->formals;\n          }\n          else {\n            do {\n              pfVar15 = pfVar7;\n              if (iVar16 <= pfVar15->index) {\n                iVar16 = pfVar15->index + 1;\n              }\n              pfVar7 = pfVar15->next;\n            } while (pfVar15->next != (formal_struct *)0x0);\n            if (iVar16 == -1) {\n              iVar16 = 0;\n            }\n          }\n          pfVar15->next = pfVar17;\n          pfVar17->index = iVar16;\n        }\n        if (pfVar17->type == FORMAL_VARARG) {\n          sb_add_buffer(&pfVar17->actual,line_sb.ptr + idx,line_sb.len - idx);\n          sVar11 = line_sb.len;\n        }\n        else {\n          sVar11 = get_any_string(idx,&line_sb,&pfVar17->actual);\n        }\n        local_58 = (local_58 + 1) - (uint)((pfVar17->actual).len == 0);\n        do {\n          pfVar17 = pfVar17->next;\n          if (pfVar17 == (formal_struct *)0x0) break;\n        } while (pfVar17->index < 0);\nLAB_0002aebd:\n        if (macro_mri != 0) goto LAB_0002aecb;\nLAB_0002b178:\n        sVar11 = sb_skip_comma(sVar11,&line_sb);\n        idx = sVar11;\n        if (line_sb.len <= sVar11) goto LAB_0002b19c;\n        goto LAB_0002ae30;\n      }" if (parenthesized_expression "(!bVar3)" ( (unary_expression "!bVar3" ! identifier) )) (compound_statement "{\n        if (pfVar17 == (formal_struct *)0x0) {\n          if (macro_mri == 0) {\n            pcVar13 = (char *)dcgettext(0,"too many positional arguments",5);\n            if (pcVar13 == (char *)0x0) {\n              pfVar17 = macro->formals;\n              if (pfVar17 != (formal_entry *)0x0) goto LAB_0002af0e;\n              pfVar15 = (formal_entry *)0x0;\n              goto LAB_0002af6d;\n            }\n            goto LAB_0002b090;\n          }\n          pfVar17 = new_formal();\n          iVar16 = -1;\n          pfVar7 = macro->formals;\n          if (macro->formals == (formal_entry *)0x0) {\n            iVar16 = 0;\n            pfVar15 = (formal_entry *)&macro->formals;\n          }\n          else {\n            do {\n              pfVar15 = pfVar7;\n              if (iVar16 <= pfVar15->index) {\n                iVar16 = pfVar15->index + 1;\n              }\n              pfVar7 = pfVar15->next;\n            } while (pfVar15->next != (formal_struct *)0x0);\n            if (iVar16 == -1) {\n              iVar16 = 0;\n            }\n          }\n          pfVar15->next = pfVar17;\n          pfVar17->index = iVar16;\n        }\n        if (pfVar17->type == FORMAL_VARARG) {\n          sb_add_buffer(&pfVar17->actual,line_sb.ptr + idx,line_sb.len - idx);\n          sVar11 = line_sb.len;\n        }\n        else {\n          sVar11 = get_any_string(idx,&line_sb,&pfVar17->actual);\n        }\n        local_58 = (local_58 + 1) - (uint)((pfVar17->actual).len == 0);\n        do {\n          pfVar17 = pfVar17->next;\n          if (pfVar17 == (formal_struct *)0x0) break;\n        } while (pfVar17->index < 0);\nLAB_0002aebd:\n        if (macro_mri != 0) goto LAB_0002aecb;\nLAB_0002b178:\n        sVar11 = sb_skip_comma(sVar11,&line_sb);\n        idx = sVar11;\n        if (line_sb.len <= sVar11) goto LAB_0002b19c;\n        goto LAB_0002ae30;\n      }" { (if_statement "if (pfVar17 == (formal_struct *)0x0) {\n          if (macro_mri == 0) {\n            pcVar13 = (char *)dcgettext(0,"too many positional arguments",5);\n            if (pcVar13 == (char *)0x0) {\n              pfVar17 = macro->formals;\n              if (pfVar17 != (formal_entry *)0x0) goto LAB_0002af0e;\n              pfVar15 = (formal_entry *)0x0;\n              goto LAB_0002af6d;\n            }\n            goto LAB_0002b090;\n          }\n          pfVar17 = new_formal();\n          iVar16 = -1;\n          pfVar7 = macro->formals;\n          if (macro->formals == (formal_entry *)0x0) {\n            iVar16 = 0;\n            pfVar15 = (formal_entry *)&macro->formals;\n          }\n          else {\n            do {\n              pfVar15 = pfVar7;\n              if (iVar16 <= pfVar15->index) {\n                iVar16 = pfVar15->index + 1;\n              }\n              pfVar7 = pfVar15->next;\n            } while (pfVar15->next != (formal_struct *)0x0);\n            if (iVar16 == -1) {\n              iVar16 = 0;\n            }\n          }\n          pfVar15->next = pfVar17;\n          pfVar17->index = iVar16;\n        }" if (parenthesized_expression "(pfVar17 == (formal_struct *)0x0)" ( (binary_expression "pfVar17 == (formal_struct *)0x0" identifier == (cast_expression "(formal_struct *)0x0" ( (type_descriptor "formal_struct *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          if (macro_mri == 0) {\n            pcVar13 = (char *)dcgettext(0,"too many positional arguments",5);\n            if (pcVar13 == (char *)0x0) {\n              pfVar17 = macro->formals;\n              if (pfVar17 != (formal_entry *)0x0) goto LAB_0002af0e;\n              pfVar15 = (formal_entry *)0x0;\n              goto LAB_0002af6d;\n            }\n            goto LAB_0002b090;\n          }\n          pfVar17 = new_formal();\n          iVar16 = -1;\n          pfVar7 = macro->formals;\n          if (macro->formals == (formal_entry *)0x0) {\n            iVar16 = 0;\n            pfVar15 = (formal_entry *)&macro->formals;\n          }\n          else {\n            do {\n              pfVar15 = pfVar7;\n              if (iVar16 <= pfVar15->index) {\n                iVar16 = pfVar15->index + 1;\n              }\n              pfVar7 = pfVar15->next;\n            } while (pfVar15->next != (formal_struct *)0x0);\n            if (iVar16 == -1) {\n              iVar16 = 0;\n            }\n          }\n          pfVar15->next = pfVar17;\n          pfVar17->index = iVar16;\n        }" { (if_statement "if (macro_mri == 0) {\n            pcVar13 = (char *)dcgettext(0,"too many positional arguments",5);\n            if (pcVar13 == (char *)0x0) {\n              pfVar17 = macro->formals;\n              if (pfVar17 != (formal_entry *)0x0) goto LAB_0002af0e;\n              pfVar15 = (formal_entry *)0x0;\n              goto LAB_0002af6d;\n            }\n            goto LAB_0002b090;\n          }" if (parenthesized_expression "(macro_mri == 0)" ( (binary_expression "macro_mri == 0" identifier == number_literal) )) (compound_statement "{\n            pcVar13 = (char *)dcgettext(0,"too many positional arguments",5);\n            if (pcVar13 == (char *)0x0) {\n              pfVar17 = macro->formals;\n              if (pfVar17 != (formal_entry *)0x0) goto LAB_0002af0e;\n              pfVar15 = (formal_entry *)0x0;\n              goto LAB_0002af6d;\n            }\n            goto LAB_0002b090;\n          }" { (expression_statement "pcVar13 = (char *)dcgettext(0,"too many positional arguments",5);" (assignment_expression "pcVar13 = (char *)dcgettext(0,"too many positional arguments",5)" identifier = (cast_expression "(char *)dcgettext(0,"too many positional arguments",5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "dcgettext(0,"too many positional arguments",5)" identifier (argument_list "(0,"too many positional arguments",5)" ( number_literal , (string_literal ""too many positional arguments"" " string_content ") , number_literal ))))) ;) (if_statement "if (pcVar13 == (char *)0x0) {\n              pfVar17 = macro->formals;\n              if (pfVar17 != (formal_entry *)0x0) goto LAB_0002af0e;\n              pfVar15 = (formal_entry *)0x0;\n              goto LAB_0002af6d;\n            }" if (parenthesized_expression "(pcVar13 == (char *)0x0)" ( (binary_expression "pcVar13 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              pfVar17 = macro->formals;\n              if (pfVar17 != (formal_entry *)0x0) goto LAB_0002af0e;\n              pfVar15 = (formal_entry *)0x0;\n              goto LAB_0002af6d;\n            }" { (expression_statement "pfVar17 = macro->formals;" (assignment_expression "pfVar17 = macro->formals" identifier = (field_expression "macro->formals" identifier -> field_identifier)) ;) (if_statement "if (pfVar17 != (formal_entry *)0x0) goto LAB_0002af0e;" if (parenthesized_expression "(pfVar17 != (formal_entry *)0x0)" ( (binary_expression "pfVar17 != (formal_entry *)0x0" identifier != (cast_expression "(formal_entry *)0x0" ( (type_descriptor "formal_entry *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0002af0e;" goto statement_identifier ;)) (expression_statement "pfVar15 = (formal_entry *)0x0;" (assignment_expression "pfVar15 = (formal_entry *)0x0" identifier = (cast_expression "(formal_entry *)0x0" ( (type_descriptor "formal_entry *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (goto_statement "goto LAB_0002af6d;" goto statement_identifier ;) })) (goto_statement "goto LAB_0002b090;" goto statement_identifier ;) })) (expression_statement "pfVar17 = new_formal();" (assignment_expression "pfVar17 = new_formal()" identifier = (call_expression "new_formal()" identifier (argument_list "()" ( )))) ;) (expression_statement "iVar16 = -1;" (assignment_expression "iVar16 = -1" identifier = number_literal) ;) (expression_statement "pfVar7 = macro->formals;" (assignment_expression "pfVar7 = macro->formals" identifier = (field_expression "macro->formals" identifier -> field_identifier)) ;) (if_statement "if (macro->formals == (formal_entry *)0x0) {\n            iVar16 = 0;\n            pfVar15 = (formal_entry *)&macro->formals;\n          }\n          else {\n            do {\n              pfVar15 = pfVar7;\n              if (iVar16 <= pfVar15->index) {\n                iVar16 = pfVar15->index + 1;\n              }\n              pfVar7 = pfVar15->next;\n            } while (pfVar15->next != (formal_struct *)0x0);\n            if (iVar16 == -1) {\n              iVar16 = 0;\n            }\n          }" if (parenthesized_expression "(macro->formals == (formal_entry *)0x0)" ( (binary_expression "macro->formals == (formal_entry *)0x0" (field_expression "macro->formals" identifier -> field_identifier) == (cast_expression "(formal_entry *)0x0" ( (type_descriptor "formal_entry *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            iVar16 = 0;\n            pfVar15 = (formal_entry *)&macro->formals;\n          }" { (expression_statement "iVar16 = 0;" (assignment_expression "iVar16 = 0" identifier = number_literal) ;) (expression_statement "pfVar15 = (formal_entry *)&macro->formals;" (assignment_expression "pfVar15 = (formal_entry *)&macro->formals" identifier = (cast_expression "(formal_entry *)&macro->formals" ( (type_descriptor "formal_entry *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&macro->formals" & (field_expression "macro->formals" identifier -> field_identifier)))) ;) }) (else_clause "else {\n            do {\n              pfVar15 = pfVar7;\n              if (iVar16 <= pfVar15->index) {\n                iVar16 = pfVar15->index + 1;\n              }\n              pfVar7 = pfVar15->next;\n            } while (pfVar15->next != (formal_struct *)0x0);\n            if (iVar16 == -1) {\n              iVar16 = 0;\n            }\n          }" else (compound_statement "{\n            do {\n              pfVar15 = pfVar7;\n              if (iVar16 <= pfVar15->index) {\n                iVar16 = pfVar15->index + 1;\n              }\n              pfVar7 = pfVar15->next;\n            } while (pfVar15->next != (formal_struct *)0x0);\n            if (iVar16 == -1) {\n              iVar16 = 0;\n            }\n          }" { (do_statement "do {\n              pfVar15 = pfVar7;\n              if (iVar16 <= pfVar15->index) {\n                iVar16 = pfVar15->index + 1;\n              }\n              pfVar7 = pfVar15->next;\n            } while (pfVar15->next != (formal_struct *)0x0);" do (compound_statement "{\n              pfVar15 = pfVar7;\n              if (iVar16 <= pfVar15->index) {\n                iVar16 = pfVar15->index + 1;\n              }\n              pfVar7 = pfVar15->next;\n            }" { (expression_statement "pfVar15 = pfVar7;" (assignment_expression "pfVar15 = pfVar7" identifier = identifier) ;) (if_statement "if (iVar16 <= pfVar15->index) {\n                iVar16 = pfVar15->index + 1;\n              }" if (parenthesized_expression "(iVar16 <= pfVar15->index)" ( (binary_expression "iVar16 <= pfVar15->index" identifier <= (field_expression "pfVar15->index" identifier -> field_identifier)) )) (compound_statement "{\n                iVar16 = pfVar15->index + 1;\n              }" { (expression_statement "iVar16 = pfVar15->index + 1;" (assignment_expression "iVar16 = pfVar15->index + 1" identifier = (binary_expression "pfVar15->index + 1" (field_expression "pfVar15->index" identifier -> field_identifier) + number_literal)) ;) })) (expression_statement "pfVar7 = pfVar15->next;" (assignment_expression "pfVar7 = pfVar15->next" identifier = (field_expression "pfVar15->next" identifier -> field_identifier)) ;) }) while (parenthesized_expression "(pfVar15->next != (formal_struct *)0x0)" ( (binary_expression "pfVar15->next != (formal_struct *)0x0" (field_expression "pfVar15->next" identifier -> field_identifier) != (cast_expression "(formal_struct *)0x0" ( (type_descriptor "formal_struct *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (if_statement "if (iVar16 == -1) {\n              iVar16 = 0;\n            }" if (parenthesized_expression "(iVar16 == -1)" ( (binary_expression "iVar16 == -1" identifier == number_literal) )) (compound_statement "{\n              iVar16 = 0;\n            }" { (expression_statement "iVar16 = 0;" (assignment_expression "iVar16 = 0" identifier = number_literal) ;) })) }))) (expression_statement "pfVar15->next = pfVar17;" (assignment_expression "pfVar15->next = pfVar17" (field_expression "pfVar15->next" identifier -> field_identifier) = identifier) ;) (expression_statement "pfVar17->index = iVar16;" (assignment_expression "pfVar17->index = iVar16" (field_expression "pfVar17->index" identifier -> field_identifier) = identifier) ;) })) (if_statement "if (pfVar17->type == FORMAL_VARARG) {\n          sb_add_buffer(&pfVar17->actual,line_sb.ptr + idx,line_sb.len - idx);\n          sVar11 = line_sb.len;\n        }\n        else {\n          sVar11 = get_any_string(idx,&line_sb,&pfVar17->actual);\n        }" if (parenthesized_expression "(pfVar17->type == FORMAL_VARARG)" ( (binary_expression "pfVar17->type == FORMAL_VARARG" (field_expression "pfVar17->type" identifier -> field_identifier) == identifier) )) (compound_statement "{\n          sb_add_buffer(&pfVar17->actual,line_sb.ptr + idx,line_sb.len - idx);\n          sVar11 = line_sb.len;\n        }" { (expression_statement "sb_add_buffer(&pfVar17->actual,line_sb.ptr + idx,line_sb.len - idx);" (call_expression "sb_add_buffer(&pfVar17->actual,line_sb.ptr + idx,line_sb.len - idx)" identifier (argument_list "(&pfVar17->actual,line_sb.ptr + idx,line_sb.len - idx)" ( (pointer_expression "&pfVar17->actual" & (field_expression "pfVar17->actual" identifier -> field_identifier)) , (binary_expression "line_sb.ptr + idx" (field_expression "line_sb.ptr" identifier . field_identifier) + identifier) , (binary_expression "line_sb.len - idx" (field_expression "line_sb.len" identifier . field_identifier) - identifier) ))) ;) (expression_statement "sVar11 = line_sb.len;" (assignment_expression "sVar11 = line_sb.len" identifier = (field_expression "line_sb.len" identifier . field_identifier)) ;) }) (else_clause "else {\n          sVar11 = get_any_string(idx,&line_sb,&pfVar17->actual);\n        }" else (compound_statement "{\n          sVar11 = get_any_string(idx,&line_sb,&pfVar17->actual);\n        }" { (expression_statement "sVar11 = get_any_string(idx,&line_sb,&pfVar17->actual);" (assignment_expression "sVar11 = get_any_string(idx,&line_sb,&pfVar17->actual)" identifier = (call_expression "get_any_string(idx,&line_sb,&pfVar17->actual)" identifier (argument_list "(idx,&line_sb,&pfVar17->actual)" ( identifier , (pointer_expression "&line_sb" & identifier) , (pointer_expression "&pfVar17->actual" & (field_expression "pfVar17->actual" identifier -> field_identifier)) )))) ;) }))) (expression_statement "local_58 = (local_58 + 1) - (uint)((pfVar17->actual).len == 0);" (assignment_expression "local_58 = (local_58 + 1) - (uint)((pfVar17->actual).len == 0)" identifier = (binary_expression "(local_58 + 1) - (uint)((pfVar17->actual).len == 0)" (parenthesized_expression "(local_58 + 1)" ( (binary_expression "local_58 + 1" identifier + number_literal) )) - (call_expression "(uint)((pfVar17->actual).len == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((pfVar17->actual).len == 0)" ( (binary_expression "(pfVar17->actual).len == 0" (field_expression "(pfVar17->actual).len" (parenthesized_expression "(pfVar17->actual)" ( (field_expression "pfVar17->actual" identifier -> field_identifier) )) . field_identifier) == number_literal) ))))) ;) (do_statement "do {\n          pfVar17 = pfVar17->next;\n          if (pfVar17 == (formal_struct *)0x0) break;\n        } while (pfVar17->index < 0);" do (compound_statement "{\n          pfVar17 = pfVar17->next;\n          if (pfVar17 == (formal_struct *)0x0) break;\n        }" { (expression_statement "pfVar17 = pfVar17->next;" (assignment_expression "pfVar17 = pfVar17->next" identifier = (field_expression "pfVar17->next" identifier -> field_identifier)) ;) (if_statement "if (pfVar17 == (formal_struct *)0x0) break;" if (parenthesized_expression "(pfVar17 == (formal_struct *)0x0)" ( (binary_expression "pfVar17 == (formal_struct *)0x0" identifier == (cast_expression "(formal_struct *)0x0" ( (type_descriptor "formal_struct *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (break_statement "break;" break ;)) }) while (parenthesized_expression "(pfVar17->index < 0)" ( (binary_expression "pfVar17->index < 0" (field_expression "pfVar17->index" identifier -> field_identifier) < number_literal) )) ;) (labeled_statement "LAB_0002aebd:\n        if (macro_mri != 0) goto LAB_0002aecb;" statement_identifier : (if_statement "if (macro_mri != 0) goto LAB_0002aecb;" if (parenthesized_expression "(macro_mri != 0)" ( (binary_expression "macro_mri != 0" identifier != number_literal) )) (goto_statement "goto LAB_0002aecb;" goto statement_identifier ;))) (labeled_statement "LAB_0002b178:\n        sVar11 = sb_skip_comma(sVar11,&line_sb);" statement_identifier : (expression_statement "sVar11 = sb_skip_comma(sVar11,&line_sb);" (assignment_expression "sVar11 = sb_skip_comma(sVar11,&line_sb)" identifier = (call_expression "sb_skip_comma(sVar11,&line_sb)" identifier (argument_list "(sVar11,&line_sb)" ( identifier , (pointer_expression "&line_sb" & identifier) )))) ;)) (expression_statement "idx = sVar11;" (assignment_expression "idx = sVar11" identifier = identifier) ;) (if_statement "if (line_sb.len <= sVar11) goto LAB_0002b19c;" if (parenthesized_expression "(line_sb.len <= sVar11)" ( (binary_expression "line_sb.len <= sVar11" (field_expression "line_sb.len" identifier . field_identifier) <= identifier) )) (goto_statement "goto LAB_0002b19c;" goto statement_identifier ;)) (goto_statement "goto LAB_0002ae30;" goto statement_identifier ;) }))) (expression_statement "pcVar13 = (char *)dcgettext(0,"can\'t mix positional and keyword arguments",5);" (assignment_expression "pcVar13 = (char *)dcgettext(0,"can\'t mix positional and keyword arguments",5)" identifier = (cast_expression "(char *)dcgettext(0,"can\'t mix positional and keyword arguments",5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "dcgettext(0,"can\'t mix positional and keyword arguments",5)" identifier (argument_list "(0,"can\'t mix positional and keyword arguments",5)" ( number_literal , (string_literal ""can\'t mix positional and keyword arguments"" " string_content escape_sequence string_content ") , number_literal ))))) ;) (labeled_statement "LAB_0002b07a:\n      if (pcVar13 == (char *)0x0) goto LAB_0002b19c;" statement_identifier : (if_statement "if (pcVar13 == (char *)0x0) goto LAB_0002b19c;" if (parenthesized_expression "(pcVar13 == (char *)0x0)" ( (binary_expression "pcVar13 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0002b19c;" goto statement_identifier ;))) (if_statement "if (macro_mri != 0) goto LAB_0002af93;" if (parenthesized_expression "(macro_mri != 0)" ( (binary_expression "macro_mri != 0" identifier != number_literal) )) (goto_statement "goto LAB_0002af93;" goto statement_identifier ;)) (labeled_statement "LAB_0002b090:\n      sb_kill(&t);" statement_identifier : (expression_statement "sb_kill(&t);" (call_expression "sb_kill(&t)" identifier (argument_list "(&t)" ( (pointer_expression "&t" & identifier) ))) ;)) (goto_statement "goto LAB_0002afd9;" goto statement_identifier ;) })) (if_statement "if ((line_sb.len <= sVar11) || (macro_alternate != 0)) goto joined_r0x0002b05a;" if (parenthesized_expression "((line_sb.len <= sVar11) || (macro_alternate != 0))" ( (binary_expression "(line_sb.len <= sVar11) || (macro_alternate != 0)" (parenthesized_expression "(line_sb.len <= sVar11)" ( (binary_expression "line_sb.len <= sVar11" (field_expression "line_sb.len" identifier . field_identifier) <= identifier) )) || (parenthesized_expression "(macro_alternate != 0)" ( (binary_expression "macro_alternate != 0" identifier != number_literal) ))) )) (goto_statement "goto joined_r0x0002b05a;" goto statement_identifier ;)) (labeled_statement "LAB_0002b0c6:\n    if (bVar1 != 0x3d) goto joined_r0x0002b05a;" statement_identifier : (if_statement "if (bVar1 != 0x3d) goto joined_r0x0002b05a;" if (parenthesized_expression "(bVar1 != 0x3d)" ( (binary_expression "bVar1 != 0x3d" identifier != number_literal) )) (goto_statement "goto joined_r0x0002b05a;" goto statement_identifier ;))) (labeled_statement "LAB_0002b0cf:\n    sb_reset(&t);" statement_identifier : (expression_statement "sb_reset(&t);" (call_expression "sb_reset(&t)" identifier (argument_list "(&t)" ( (pointer_expression "&t" & identifier) ))) ;)) (expression_statement "sVar11 = get_token(idx,&line_sb,(sb *)&line_sb.len,&t);" (assignment_expression "sVar11 = get_token(idx,&line_sb,(sb *)&line_sb.len,&t)" identifier = (call_expression "get_token(idx,&line_sb,(sb *)&line_sb.len,&t)" identifier (argument_list "(idx,&line_sb,(sb *)&line_sb.len,&t)" ( identifier , (pointer_expression "&line_sb" & identifier) , (cast_expression "(sb *)&line_sb.len" ( (type_descriptor "sb *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&line_sb.len" & (field_expression "line_sb.len" identifier . field_identifier))) , (pointer_expression "&t" & identifier) )))) ;) (if_statement "if (line_sb.ptr[sVar11] != '=') {\n      pcVar13 = (char *)dcgettext(0,"confusion in formal parameters",5);\n      goto LAB_0002b07a;\n    }" if (parenthesized_expression "(line_sb.ptr[sVar11] != '=')" ( (binary_expression "line_sb.ptr[sVar11] != '='" (subscript_expression "line_sb.ptr[sVar11]" (field_expression "line_sb.ptr" identifier . field_identifier) [ identifier ]) != (char_literal "'='" ' character ')) )) (compound_statement "{\n      pcVar13 = (char *)dcgettext(0,"confusion in formal parameters",5);\n      goto LAB_0002b07a;\n    }" { (expression_statement "pcVar13 = (char *)dcgettext(0,"confusion in formal parameters",5);" (assignment_expression "pcVar13 = (char *)dcgettext(0,"confusion in formal parameters",5)" identifier = (cast_expression "(char *)dcgettext(0,"confusion in formal parameters",5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "dcgettext(0,"confusion in formal parameters",5)" identifier (argument_list "(0,"confusion in formal parameters",5)" ( number_literal , (string_literal ""confusion in formal parameters"" " string_content ") , number_literal ))))) ;) (goto_statement "goto LAB_0002b07a;" goto statement_identifier ;) })) (expression_statement "pcVar13 = sb_terminate(&t);" (assignment_expression "pcVar13 = sb_terminate(&t)" identifier = (call_expression "sb_terminate(&t)" identifier (argument_list "(&t)" ( (pointer_expression "&t" & identifier) )))) ;) (expression_statement "pvVar10 = hash_find(macro->formal_hash,pcVar13);" (assignment_expression "pvVar10 = hash_find(macro->formal_hash,pcVar13)" identifier = (call_expression "hash_find(macro->formal_hash,pcVar13)" identifier (argument_list "(macro->formal_hash,pcVar13)" ( (field_expression "macro->formal_hash" identifier -> field_identifier) , identifier )))) ;) (expression_statement "pcVar13 = t.ptr;" (assignment_expression "pcVar13 = t.ptr" identifier = (field_expression "t.ptr" identifier . field_identifier)) ;) (if_statement "if (pvVar10 == (void *)0x0) {\n      pcVar14 = macro->name;\n      pcVar12 = (char *)dcgettext(0,"Parameter named `%s\' does not exist for macro `%s\'",5);\n      as_bad(pcVar12,pcVar13,pcVar14);\n      sb_reset(&t);\n      sVar11 = get_any_string(sVar11 + 1,&line_sb,&t);\n      bVar3 = true;\n      goto LAB_0002aebd;\n    }" if (parenthesized_expression "(pvVar10 == (void *)0x0)" ( (binary_expression "pvVar10 == (void *)0x0" identifier == (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      pcVar14 = macro->name;\n      pcVar12 = (char *)dcgettext(0,"Parameter named `%s\' does not exist for macro `%s\'",5);\n      as_bad(pcVar12,pcVar13,pcVar14);\n      sb_reset(&t);\n      sVar11 = get_any_string(sVar11 + 1,&line_sb,&t);\n      bVar3 = true;\n      goto LAB_0002aebd;\n    }" { (expression_statement "pcVar14 = macro->name;" (assignment_expression "pcVar14 = macro->name" identifier = (field_expression "macro->name" identifier -> field_identifier)) ;) (expression_statement "pcVar12 = (char *)dcgettext(0,"Parameter named `%s\' does not exist for macro `%s\'",5);" (assignment_expression "pcVar12 = (char *)dcgettext(0,"Parameter named `%s\' does not exist for macro `%s\'",5)" identifier = (cast_expression "(char *)dcgettext(0,"Parameter named `%s\' does not exist for macro `%s\'",5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "dcgettext(0,"Parameter named `%s\' does not exist for macro `%s\'",5)" identifier (argument_list "(0,"Parameter named `%s\' does not exist for macro `%s\'",5)" ( number_literal , (string_literal ""Parameter named `%s\' does not exist for macro `%s\'"" " string_content escape_sequence string_content escape_sequence ") , number_literal ))))) ;) (expression_statement "as_bad(pcVar12,pcVar13,pcVar14);" (call_expression "as_bad(pcVar12,pcVar13,pcVar14)" identifier (argument_list "(pcVar12,pcVar13,pcVar14)" ( identifier , identifier , identifier ))) ;) (expression_statement "sb_reset(&t);" (call_expression "sb_reset(&t)" identifier (argument_list "(&t)" ( (pointer_expression "&t" & identifier) ))) ;) (expression_statement "sVar11 = get_any_string(sVar11 + 1,&line_sb,&t);" (assignment_expression "sVar11 = get_any_string(sVar11 + 1,&line_sb,&t)" identifier = (call_expression "get_any_string(sVar11 + 1,&line_sb,&t)" identifier (argument_list "(sVar11 + 1,&line_sb,&t)" ( (binary_expression "sVar11 + 1" identifier + number_literal) , (pointer_expression "&line_sb" & identifier) , (pointer_expression "&t" & identifier) )))) ;) (expression_statement "bVar3 = true;" (assignment_expression "bVar3 = true" identifier = true) ;) (goto_statement "goto LAB_0002aebd;" goto statement_identifier ;) })) (if_statement "if (*(int *)((int)pvVar10 + 0x20) != 0) {\n      pcVar13 = macro->name;\n      uVar2 = *(undefined4 *)((int)pvVar10 + 4);\n      pcVar14 = (char *)dcgettext(0,"Value for parameter `%s\' of macro `%s\' was already specified"\n                                  ,5);\n      as_warn(pcVar14,uVar2,pcVar13);\n      sb_reset((sb *)((int)pvVar10 + 0x1c));\n    }" if (parenthesized_expression "(*(int *)((int)pvVar10 + 0x20) != 0)" ( (binary_expression "*(int *)((int)pvVar10 + 0x20) != 0" (pointer_expression "*(int *)((int)pvVar10 + 0x20)" * (cast_expression "(int *)((int)pvVar10 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pvVar10 + 0x20)" ( (binary_expression "(int)pvVar10 + 0x20" (cast_expression "(int)pvVar10" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) != number_literal) )) (compound_statement "{\n      pcVar13 = macro->name;\n      uVar2 = *(undefined4 *)((int)pvVar10 + 4);\n      pcVar14 = (char *)dcgettext(0,"Value for parameter `%s\' of macro `%s\' was already specified"\n                                  ,5);\n      as_warn(pcVar14,uVar2,pcVar13);\n      sb_reset((sb *)((int)pvVar10 + 0x1c));\n    }" { (expression_statement "pcVar13 = macro->name;" (assignment_expression "pcVar13 = macro->name" identifier = (field_expression "macro->name" identifier -> field_identifier)) ;) (expression_statement "uVar2 = *(undefined4 *)((int)pvVar10 + 4);" (assignment_expression "uVar2 = *(undefined4 *)((int)pvVar10 + 4)" identifier = (pointer_expression "*(undefined4 *)((int)pvVar10 + 4)" * (cast_expression "(undefined4 *)((int)pvVar10 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pvVar10 + 4)" ( (binary_expression "(int)pvVar10 + 4" (cast_expression "(int)pvVar10" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "pcVar14 = (char *)dcgettext(0,"Value for parameter `%s\' of macro `%s\' was already specified"\n                                  ,5);" (assignment_expression "pcVar14 = (char *)dcgettext(0,"Value for parameter `%s\' of macro `%s\' was already specified"\n                                  ,5)" identifier = (cast_expression "(char *)dcgettext(0,"Value for parameter `%s\' of macro `%s\' was already specified"\n                                  ,5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "dcgettext(0,"Value for parameter `%s\' of macro `%s\' was already specified"\n                                  ,5)" identifier (argument_list "(0,"Value for parameter `%s\' of macro `%s\' was already specified"\n                                  ,5)" ( number_literal , (string_literal ""Value for parameter `%s\' of macro `%s\' was already specified"" " string_content escape_sequence string_content escape_sequence string_content ") , number_literal ))))) ;) (expression_statement "as_warn(pcVar14,uVar2,pcVar13);" (call_expression "as_warn(pcVar14,uVar2,pcVar13)" identifier (argument_list "(pcVar14,uVar2,pcVar13)" ( identifier , identifier , identifier ))) ;) (expression_statement "sb_reset((sb *)((int)pvVar10 + 0x1c));" (call_expression "sb_reset((sb *)((int)pvVar10 + 0x1c))" identifier (argument_list "((sb *)((int)pvVar10 + 0x1c))" ( (cast_expression "(sb *)((int)pvVar10 + 0x1c)" ( (type_descriptor "sb *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pvVar10 + 0x1c)" ( (binary_expression "(int)pvVar10 + 0x1c" (cast_expression "(int)pvVar10" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))) ))) ;) })) (expression_statement "sVar11 = get_any_string(sVar11 + 1,&line_sb,(sb *)((int)pvVar10 + 0x1c));" (assignment_expression "sVar11 = get_any_string(sVar11 + 1,&line_sb,(sb *)((int)pvVar10 + 0x1c))" identifier = (call_expression "get_any_string(sVar11 + 1,&line_sb,(sb *)((int)pvVar10 + 0x1c))" identifier (argument_list "(sVar11 + 1,&line_sb,(sb *)((int)pvVar10 + 0x1c))" ( (binary_expression "sVar11 + 1" identifier + number_literal) , (pointer_expression "&line_sb" & identifier) , (cast_expression "(sb *)((int)pvVar10 + 0x1c)" ( (type_descriptor "sb *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pvVar10 + 0x1c)" ( (binary_expression "(int)pvVar10 + 0x1c" (cast_expression "(int)pvVar10" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))) )))) ;) (expression_statement "bVar3 = true;" (assignment_expression "bVar3 = true" identifier = true) ;) (expression_statement "local_58 = (local_58 + 1) - (uint)(*(int *)((int)pvVar10 + 0x20) == 0);" (assignment_expression "local_58 = (local_58 + 1) - (uint)(*(int *)((int)pvVar10 + 0x20) == 0)" identifier = (binary_expression "(local_58 + 1) - (uint)(*(int *)((int)pvVar10 + 0x20) == 0)" (parenthesized_expression "(local_58 + 1)" ( (binary_expression "local_58 + 1" identifier + number_literal) )) - (call_expression "(uint)(*(int *)((int)pvVar10 + 0x20) == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*(int *)((int)pvVar10 + 0x20) == 0)" ( (binary_expression "*(int *)((int)pvVar10 + 0x20) == 0" (pointer_expression "*(int *)((int)pvVar10 + 0x20)" * (cast_expression "(int *)((int)pvVar10 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pvVar10 + 0x20)" ( (binary_expression "(int)pvVar10 + 0x20" (cast_expression "(int)pvVar10" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) == number_literal) ))))) ;) (if_statement "if (macro_mri == 0) goto LAB_0002b178;" if (parenthesized_expression "(macro_mri == 0)" ( (binary_expression "macro_mri == 0" identifier == number_literal) )) (goto_statement "goto LAB_0002b178;" goto statement_identifier ;)) (labeled_statement "LAB_0002aecb:\n    cVar9 = line_sb.ptr[sVar11];" statement_identifier : (expression_statement "cVar9 = line_sb.ptr[sVar11];" (assignment_expression "cVar9 = line_sb.ptr[sVar11]" identifier = (subscript_expression "line_sb.ptr[sVar11]" (field_expression "line_sb.ptr" identifier . field_identifier) [ identifier ])) ;)) (if_statement "if (cVar9 == ',') {\n      sVar11 = sVar11 + 1;\n      cVar9 = line_sb.ptr[sVar11];\n    }" if (parenthesized_expression "(cVar9 == ',')" ( (binary_expression "cVar9 == ','" identifier == (char_literal "','" ' character ')) )) (compound_statement "{\n      sVar11 = sVar11 + 1;\n      cVar9 = line_sb.ptr[sVar11];\n    }" { (expression_statement "sVar11 = sVar11 + 1;" (assignment_expression "sVar11 = sVar11 + 1" identifier = (binary_expression "sVar11 + 1" identifier + number_literal)) ;) (expression_statement "cVar9 = line_sb.ptr[sVar11];" (assignment_expression "cVar9 = line_sb.ptr[sVar11]" identifier = (subscript_expression "line_sb.ptr[sVar11]" (field_expression "line_sb.ptr" identifier . field_identifier) [ identifier ])) ;) })) }) while (parenthesized_expression "((cVar9 != ' ') && (cVar9 != '\t'))" ( (binary_expression "(cVar9 != ' ') && (cVar9 != '\t')" (parenthesized_expression "(cVar9 != ' ')" ( (binary_expression "cVar9 != ' '" identifier != (char_literal "' '" ' character ')) )) && (parenthesized_expression "(cVar9 != '\t')" ( (binary_expression "cVar9 != '\t'" identifier != (char_literal "'\t'" ' escape_sequence ')) ))) )) ;) (expression_statement "pfVar17 = macro->formals;" (assignment_expression "pfVar17 = macro->formals" identifier = (field_expression "macro->formals" identifier -> field_identifier)) ;) (if_statement "if (pfVar17 != (formal_entry *)0x0) {\nLAB_0002af0e:\n    do {\n      if ((pfVar17->type != FORMAL_REQUIRED) || ((pfVar17->actual).len != 0)) {\n        pfVar17 = pfVar17->next;\njoined_r0x0002b1a5:\n        if (pfVar17 == (formal_struct *)0x0) break;\n        goto LAB_0002af0e;\n      }\n      pcVar13 = (pfVar17->name).ptr;\n      pcVar14 = macro->name;\n      pcVar12 = (char *)dcgettext(0,"Missing value for required parameter `%s\' of macro `%s\'",5);\n      as_bad(pcVar12,pcVar13,pcVar14);\n      pfVar17 = pfVar17->next;\n    } while (pfVar17 != (formal_struct *)0x0);\n    if (macro_mri == 0) goto LAB_0002af66;\n  }" if (parenthesized_expression "(pfVar17 != (formal_entry *)0x0)" ( (binary_expression "pfVar17 != (formal_entry *)0x0" identifier != (cast_expression "(formal_entry *)0x0" ( (type_descriptor "formal_entry *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_0002af0e:\n    do {\n      if ((pfVar17->type != FORMAL_REQUIRED) || ((pfVar17->actual).len != 0)) {\n        pfVar17 = pfVar17->next;\njoined_r0x0002b1a5:\n        if (pfVar17 == (formal_struct *)0x0) break;\n        goto LAB_0002af0e;\n      }\n      pcVar13 = (pfVar17->name).ptr;\n      pcVar14 = macro->name;\n      pcVar12 = (char *)dcgettext(0,"Missing value for required parameter `%s\' of macro `%s\'",5);\n      as_bad(pcVar12,pcVar13,pcVar14);\n      pfVar17 = pfVar17->next;\n    } while (pfVar17 != (formal_struct *)0x0);\n    if (macro_mri == 0) goto LAB_0002af66;\n  }" { (labeled_statement "LAB_0002af0e:\n    do {\n      if ((pfVar17->type != FORMAL_REQUIRED) || ((pfVar17->actual).len != 0)) {\n        pfVar17 = pfVar17->next;\njoined_r0x0002b1a5:\n        if (pfVar17 == (formal_struct *)0x0) break;\n        goto LAB_0002af0e;\n      }\n      pcVar13 = (pfVar17->name).ptr;\n      pcVar14 = macro->name;\n      pcVar12 = (char *)dcgettext(0,"Missing value for required parameter `%s\' of macro `%s\'",5);\n      as_bad(pcVar12,pcVar13,pcVar14);\n      pfVar17 = pfVar17->next;\n    } while (pfVar17 != (formal_struct *)0x0);" statement_identifier : (do_statement "do {\n      if ((pfVar17->type != FORMAL_REQUIRED) || ((pfVar17->actual).len != 0)) {\n        pfVar17 = pfVar17->next;\njoined_r0x0002b1a5:\n        if (pfVar17 == (formal_struct *)0x0) break;\n        goto LAB_0002af0e;\n      }\n      pcVar13 = (pfVar17->name).ptr;\n      pcVar14 = macro->name;\n      pcVar12 = (char *)dcgettext(0,"Missing value for required parameter `%s\' of macro `%s\'",5);\n      as_bad(pcVar12,pcVar13,pcVar14);\n      pfVar17 = pfVar17->next;\n    } while (pfVar17 != (formal_struct *)0x0);" do (compound_statement "{\n      if ((pfVar17->type != FORMAL_REQUIRED) || ((pfVar17->actual).len != 0)) {\n        pfVar17 = pfVar17->next;\njoined_r0x0002b1a5:\n        if (pfVar17 == (formal_struct *)0x0) break;\n        goto LAB_0002af0e;\n      }\n      pcVar13 = (pfVar17->name).ptr;\n      pcVar14 = macro->name;\n      pcVar12 = (char *)dcgettext(0,"Missing value for required parameter `%s\' of macro `%s\'",5);\n      as_bad(pcVar12,pcVar13,pcVar14);\n      pfVar17 = pfVar17->next;\n    }" { (if_statement "if ((pfVar17->type != FORMAL_REQUIRED) || ((pfVar17->actual).len != 0)) {\n        pfVar17 = pfVar17->next;\njoined_r0x0002b1a5:\n        if (pfVar17 == (formal_struct *)0x0) break;\n        goto LAB_0002af0e;\n      }" if (parenthesized_expression "((pfVar17->type != FORMAL_REQUIRED) || ((pfVar17->actual).len != 0))" ( (binary_expression "(pfVar17->type != FORMAL_REQUIRED) || ((pfVar17->actual).len != 0)" (parenthesized_expression "(pfVar17->type != FORMAL_REQUIRED)" ( (binary_expression "pfVar17->type != FORMAL_REQUIRED" (field_expression "pfVar17->type" identifier -> field_identifier) != identifier) )) || (parenthesized_expression "((pfVar17->actual).len != 0)" ( (binary_expression "(pfVar17->actual).len != 0" (field_expression "(pfVar17->actual).len" (parenthesized_expression "(pfVar17->actual)" ( (field_expression "pfVar17->actual" identifier -> field_identifier) )) . field_identifier) != number_literal) ))) )) (compound_statement "{\n        pfVar17 = pfVar17->next;\njoined_r0x0002b1a5:\n        if (pfVar17 == (formal_struct *)0x0) break;\n        goto LAB_0002af0e;\n      }" { (expression_statement "pfVar17 = pfVar17->next;" (assignment_expression "pfVar17 = pfVar17->next" identifier = (field_expression "pfVar17->next" identifier -> field_identifier)) ;) (labeled_statement "joined_r0x0002b1a5:\n        if (pfVar17 == (formal_struct *)0x0) break;" statement_identifier : (if_statement "if (pfVar17 == (formal_struct *)0x0) break;" if (parenthesized_expression "(pfVar17 == (formal_struct *)0x0)" ( (binary_expression "pfVar17 == (formal_struct *)0x0" identifier == (cast_expression "(formal_struct *)0x0" ( (type_descriptor "formal_struct *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (break_statement "break;" break ;))) (goto_statement "goto LAB_0002af0e;" goto statement_identifier ;) })) (expression_statement "pcVar13 = (pfVar17->name).ptr;" (assignment_expression "pcVar13 = (pfVar17->name).ptr" identifier = (field_expression "(pfVar17->name).ptr" (parenthesized_expression "(pfVar17->name)" ( (field_expression "pfVar17->name" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "pcVar14 = macro->name;" (assignment_expression "pcVar14 = macro->name" identifier = (field_expression "macro->name" identifier -> field_identifier)) ;) (expression_statement "pcVar12 = (char *)dcgettext(0,"Missing value for required parameter `%s\' of macro `%s\'",5);" (assignment_expression "pcVar12 = (char *)dcgettext(0,"Missing value for required parameter `%s\' of macro `%s\'",5)" identifier = (cast_expression "(char *)dcgettext(0,"Missing value for required parameter `%s\' of macro `%s\'",5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "dcgettext(0,"Missing value for required parameter `%s\' of macro `%s\'",5)" identifier (argument_list "(0,"Missing value for required parameter `%s\' of macro `%s\'",5)" ( number_literal , (string_literal ""Missing value for required parameter `%s\' of macro `%s\'"" " string_content escape_sequence string_content escape_sequence ") , number_literal ))))) ;) (expression_statement "as_bad(pcVar12,pcVar13,pcVar14);" (call_expression "as_bad(pcVar12,pcVar13,pcVar14)" identifier (argument_list "(pcVar12,pcVar13,pcVar14)" ( identifier , identifier , identifier ))) ;) (expression_statement "pfVar17 = pfVar17->next;" (assignment_expression "pfVar17 = pfVar17->next" identifier = (field_expression "pfVar17->next" identifier -> field_identifier)) ;) }) while (parenthesized_expression "(pfVar17 != (formal_struct *)0x0)" ( (binary_expression "pfVar17 != (formal_struct *)0x0" identifier != (cast_expression "(formal_struct *)0x0" ( (type_descriptor "formal_struct *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;)) (if_statement "if (macro_mri == 0) goto LAB_0002af66;" if (parenthesized_expression "(macro_mri == 0)" ( (binary_expression "macro_mri == 0" identifier == number_literal) )) (goto_statement "goto LAB_0002af66;" goto statement_identifier ;)) })) (expression_statement "sb_reset(&t);" (call_expression "sb_reset(&t)" identifier (argument_list "(&t)" ( (pointer_expression "&t" & identifier) ))) ;) (expression_statement "pcVar13 = "$NARG";" (assignment_expression "pcVar13 = "$NARG"" identifier = (string_literal ""$NARG"" " string_content ")) ;) (if_statement "if (macro_strip_at == 0) {\n    pcVar13 = "NARG";\n  }" if (parenthesized_expression "(macro_strip_at == 0)" ( (binary_expression "macro_strip_at == 0" identifier == number_literal) )) (compound_statement "{\n    pcVar13 = "NARG";\n  }" { (expression_statement "pcVar13 = "NARG";" (assignment_expression "pcVar13 = "NARG"" identifier = (string_literal ""NARG"" " string_content ")) ;) })) (expression_statement "sb_add_string(&t,pcVar13);" (call_expression "sb_add_string(&t,pcVar13)" identifier (argument_list "(&t,pcVar13)" ( (pointer_expression "&t" & identifier) , identifier ))) ;) (expression_statement "pcVar13 = sb_terminate(&t);" (assignment_expression "pcVar13 = sb_terminate(&t)" identifier = (call_expression "sb_terminate(&t)" identifier (argument_list "(&t)" ( (pointer_expression "&t" & identifier) )))) ;) (expression_statement "pvVar10 = hash_find(macro->formal_hash,pcVar13);" (assignment_expression "pvVar10 = hash_find(macro->formal_hash,pcVar13)" identifier = (call_expression "hash_find(macro->formal_hash,pcVar13)" identifier (argument_list "(macro->formal_hash,pcVar13)" ( (field_expression "macro->formal_hash" identifier -> field_identifier) , identifier )))) ;) (expression_statement "sprintf(buffer,"%d",local_58);" (call_expression "sprintf(buffer,"%d",local_58)" identifier (argument_list "(buffer,"%d",local_58)" ( identifier , (string_literal ""%d"" " string_content ") , identifier ))) ;) (expression_statement "sb_add_string((sb *)((int)pvVar10 + 0x1c),buffer);" (call_expression "sb_add_string((sb *)((int)pvVar10 + 0x1c),buffer)" identifier (argument_list "((sb *)((int)pvVar10 + 0x1c),buffer)" ( (cast_expression "(sb *)((int)pvVar10 + 0x1c)" ( (type_descriptor "sb *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pvVar10 + 0x1c)" ( (binary_expression "(int)pvVar10 + 0x1c" (cast_expression "(int)pvVar10" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))) , identifier ))) ;) (labeled_statement "LAB_0002af66:\n  pfVar15 = macro->formals;" statement_identifier : (expression_statement "pfVar15 = macro->formals;" (assignment_expression "pfVar15 = macro->formals" identifier = (field_expression "macro->formals" identifier -> field_identifier)) ;)) (labeled_statement "LAB_0002af6d:\n  pcVar13 = macro_expand_body((sb *)macro,expand,pfVar15,macro->formal_hash,macro);" statement_identifier : (expression_statement "pcVar13 = macro_expand_body((sb *)macro,expand,pfVar15,macro->formal_hash,macro);" (assignment_expression "pcVar13 = macro_expand_body((sb *)macro,expand,pfVar15,macro->formal_hash,macro)" identifier = (call_expression "macro_expand_body((sb *)macro,expand,pfVar15,macro->formal_hash,macro)" identifier (argument_list "((sb *)macro,expand,pfVar15,macro->formal_hash,macro)" ( (cast_expression "(sb *)macro" ( (type_descriptor "sb *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , identifier , identifier , (field_expression "macro->formal_hash" identifier -> field_identifier) , identifier )))) ;)) (if_statement "if (macro_mri != 0) {\nLAB_0002af93:\n    pfVar15 = (formal_entry *)&macro->formals;\n    pfVar17 = macro->formals;\n    while (formal = pfVar17, pfVar5 = pfVar15, formal != (formal_entry *)0x0) {\n      pfVar17 = formal->next;\n      pfVar15 = formal;\n      if ((formal->name).len == 0) {\n        del_formal(formal);\n        pfVar5->next = pfVar17;\n        pfVar15 = pfVar5;\n      }\n    }\n  }" if (parenthesized_expression "(macro_mri != 0)" ( (binary_expression "macro_mri != 0" identifier != number_literal) )) (compound_statement "{\nLAB_0002af93:\n    pfVar15 = (formal_entry *)&macro->formals;\n    pfVar17 = macro->formals;\n    while (formal = pfVar17, pfVar5 = pfVar15, formal != (formal_entry *)0x0) {\n      pfVar17 = formal->next;\n      pfVar15 = formal;\n      if ((formal->name).len == 0) {\n        del_formal(formal);\n        pfVar5->next = pfVar17;\n        pfVar15 = pfVar5;\n      }\n    }\n  }" { (labeled_statement "LAB_0002af93:\n    pfVar15 = (formal_entry *)&macro->formals;" statement_identifier : (expression_statement "pfVar15 = (formal_entry *)&macro->formals;" (assignment_expression "pfVar15 = (formal_entry *)&macro->formals" identifier = (cast_expression "(formal_entry *)&macro->formals" ( (type_descriptor "formal_entry *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&macro->formals" & (field_expression "macro->formals" identifier -> field_identifier)))) ;)) (expression_statement "pfVar17 = macro->formals;" (assignment_expression "pfVar17 = macro->formals" identifier = (field_expression "macro->formals" identifier -> field_identifier)) ;) (while_statement "while (formal = pfVar17, pfVar5 = pfVar15, formal != (formal_entry *)0x0) {\n      pfVar17 = formal->next;\n      pfVar15 = formal;\n      if ((formal->name).len == 0) {\n        del_formal(formal);\n        pfVar5->next = pfVar17;\n        pfVar15 = pfVar5;\n      }\n    }" while (parenthesized_expression "(formal = pfVar17, pfVar5 = pfVar15, formal != (formal_entry *)0x0)" ( (comma_expression "formal = pfVar17, pfVar5 = pfVar15, formal != (formal_entry *)0x0" (assignment_expression "formal = pfVar17" identifier = identifier) , (comma_expression "pfVar5 = pfVar15, formal != (formal_entry *)0x0" (assignment_expression "pfVar5 = pfVar15" identifier = identifier) , (binary_expression "formal != (formal_entry *)0x0" identifier != (cast_expression "(formal_entry *)0x0" ( (type_descriptor "formal_entry *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)))) )) (compound_statement "{\n      pfVar17 = formal->next;\n      pfVar15 = formal;\n      if ((formal->name).len == 0) {\n        del_formal(formal);\n        pfVar5->next = pfVar17;\n        pfVar15 = pfVar5;\n      }\n    }" { (expression_statement "pfVar17 = formal->next;" (assignment_expression "pfVar17 = formal->next" identifier = (field_expression "formal->next" identifier -> field_identifier)) ;) (expression_statement "pfVar15 = formal;" (assignment_expression "pfVar15 = formal" identifier = identifier) ;) (if_statement "if ((formal->name).len == 0) {\n        del_formal(formal);\n        pfVar5->next = pfVar17;\n        pfVar15 = pfVar5;\n      }" if (parenthesized_expression "((formal->name).len == 0)" ( (binary_expression "(formal->name).len == 0" (field_expression "(formal->name).len" (parenthesized_expression "(formal->name)" ( (field_expression "formal->name" identifier -> field_identifier) )) . field_identifier) == number_literal) )) (compound_statement "{\n        del_formal(formal);\n        pfVar5->next = pfVar17;\n        pfVar15 = pfVar5;\n      }" { (expression_statement "del_formal(formal);" (call_expression "del_formal(formal)" identifier (argument_list "(formal)" ( identifier ))) ;) (expression_statement "pfVar5->next = pfVar17;" (assignment_expression "pfVar5->next = pfVar17" (field_expression "pfVar5->next" identifier -> field_identifier) = identifier) ;) (expression_statement "pfVar15 = pfVar5;" (assignment_expression "pfVar15 = pfVar5" identifier = identifier) ;) })) })) })) (expression_statement "sb_kill(&t);" (call_expression "sb_kill(&t)" identifier (argument_list "(&t)" ( (pointer_expression "&t" & identifier) ))) ;) (if_statement "if (pcVar13 == (char *)0x0) {\n    macro_number = macro_number + 1;\n  }" if (parenthesized_expression "(pcVar13 == (char *)0x0)" ( (binary_expression "pcVar13 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    macro_number = macro_number + 1;\n  }" { (expression_statement "macro_number = macro_number + 1;" (assignment_expression "macro_number = macro_number + 1" identifier = (binary_expression "macro_number + 1" identifier + number_literal)) ;) })) (labeled_statement "LAB_0002afd9:\n  *error = pcVar13;" statement_identifier : (expression_statement "*error = pcVar13;" (assignment_expression "*error = pcVar13" (pointer_expression "*error" * identifier) = identifier) ;)) (expression_statement "sb_kill(&line_sb);" (call_expression "sb_kill(&line_sb)" identifier (argument_list "(&line_sb)" ( (pointer_expression "&line_sb" & identifier) ))) ;) (if_statement "if (info != (macro_entry **)0x0) {\n    *info = macro;\n    return 1;\n  }" if (parenthesized_expression "(info != (macro_entry **)0x0)" ( (binary_expression "info != (macro_entry **)0x0" identifier != (cast_expression "(macro_entry **)0x0" ( (type_descriptor "macro_entry **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal)) )) (compound_statement "{\n    *info = macro;\n    return 1;\n  }" { (expression_statement "*info = macro;" (assignment_expression "*info = macro" (pointer_expression "*info" * identifier) = identifier) ;) (return_statement "return 1;" return number_literal ;) })) (return_statement "return 1;" return number_literal ;) })))
(translation_unit "undefined4 FUN_0002ac00(byte *param_1,undefined4 param_2,int *param_3,int *param_4)\n\n{\n  byte bVar1;\n  int iVar2;\n  undefined4 *puVar3;\n  bool bVar4;\n  byte *pbVar5;\n  byte bVar6;\n  char cVar7;\n  void *__dest;\n  byte *__ptr;\n  int iVar8;\n  uint uVar9;\n  undefined4 uVar10;\n  int iVar11;\n  undefined4 uVar12;\n  undefined4 uVar13;\n  undefined4 *puVar14;\n  undefined4 *puVar15;\n  size_t __n;\n  uint uVar16;\n  int unaff_EBP;\n  int *piVar17;\n  undefined4 *puVar18;\n  byte *pbVar19;\n  int local_58;\n  char *local_48;\n  uint local_44;\n  undefined4 local_3c [3];\n  char local_30 [32];\n  \n  FUN_0001fe10();\n  iVar8 = unaff_EBP + 0x557ba;\n  if (((*(byte *)(iVar8 + (uint)*param_1) & 2) != 0) ||\n     ((*(int *)(&DAT_0005e002 + unaff_EBP) != 0 && (*param_1 == 0x2e)))) {\n    pbVar19 = param_1 + 1;\n    bVar1 = *(byte *)(iVar8 + (uint)param_1[1]);\n    while ((bVar1 & 1) != 0) {\n      pbVar19 = pbVar19 + 1;\n      bVar1 = *(byte *)(iVar8 + (uint)*pbVar19);\n    }\n    pbVar19 = pbVar19 + ((bVar1 & 4) != 0);\n    __n = (int)pbVar19 - (int)param_1;\n    __dest = (void *)xmalloc(__n + 1);\n    *(undefined1 *)((int)__dest + __n) = 0;\n    __ptr = (byte *)memcpy(__dest,param_1,__n);\n    iVar8 = *(int *)(unaff_EBP + 0x553ca);\n    bVar1 = *__ptr;\n    pbVar5 = __ptr;\n    while (bVar1 != 0) {\n      *pbVar5 = *(byte *)(iVar8 + (uint)bVar1);\n      bVar1 = pbVar5[1];\n      pbVar5 = pbVar5 + 1;\n    }\n    iVar8 = FUN_000254b0(*(undefined4 *)("%S.000%z" + unaff_EBP),__ptr);\n    free(__ptr);\n    if (iVar8 != 0) {\n      FUN_00035790(&local_48);\n      bVar1 = *pbVar19;\n      while ((0xd < bVar1 || ((0x2401U >> ((int)(char)bVar1 & 0x1fU) & 1) == 0))) {\n        pbVar19 = pbVar19 + 1;\n        FUN_000358b0(&local_48,(int)(char)bVar1);\n        bVar1 = *pbVar19;\n      }\n      FUN_00035790(param_2);\n      FUN_00035790(local_3c);\n      piVar17 = *(int **)(iVar8 + 0x10);\n      if (piVar17 != (int *)0x0) {\n        do {\n          FUN_000358a0(piVar17 + 7);\n          piVar17 = (int *)*piVar17;\n        } while (piVar17 != (int *)0x0);\n        for (puVar18 = *(undefined4 **)(iVar8 + 0x10); puVar18 != (undefined4 *)0x0;\n            puVar18 = (undefined4 *)*puVar18) {\n          if (-1 < (int)puVar18[10]) goto LAB_0002adc1;\n        }\n      }\n      puVar18 = (undefined4 *)0x0;\nLAB_0002adc1:\n      uVar9 = 0;\n      if ((*(int *)(&DAT_0005e002 + unaff_EBP) != 0) && (uVar9 = local_44, local_44 != 0)) {\n        if (*local_48 == '.') {\n          if (((local_44 < 2) || (local_48[1] == ' ')) || (local_48[1] == '\t')) {\n            uVar9 = 1;\n          }\n          else {\n            puVar14 = (undefined4 *)FUN_00028ba0();\n            puVar14[10] = 0xffffffff;\n            *puVar14 = *(undefined4 *)(iVar8 + 0x10);\n            *(undefined4 **)(iVar8 + 0x10) = puVar14;\n            uVar9 = FUN_00029a00();\n          }\n        }\n        else {\n          uVar9 = 0;\n        }\n      }\n      uVar9 = FUN_00035980(uVar9,&local_48);\n      local_58 = 0;\n      bVar4 = false;\nLAB_0002ae00:\n      if (uVar9 < local_44) {\n        do {\n          uVar16 = uVar9;\n          do {\n            bVar1 = local_48[uVar16];\n            bVar6 = 1;\n            if ((byte)(bVar1 - 0x20) < 0x1c) {\n              bVar6 = ~(byte)(0x8001305 >> (bVar1 - 0x20 & 0x1f)) & 1;\n            }\n            if ((bVar1 == 9) || (bVar6 == 0)) {\n              if ((uVar16 < local_44) && (*(int *)(&DAT_0005e006 + unaff_EBP) == 0)) {\nLAB_0002b0c6:\n                if (bVar1 == 0x3d) {\nLAB_0002b0cf:\n                  FUN_000358a0(local_3c);\n                  iVar11 = FUN_00028c80(local_3c);\n                  if (local_48[iVar11] != '=') {\n                    iVar11 = dcgettext(0,unaff_EBP + 0x3457a,5);\n                    goto LAB_0002b07a;\n                  }\n                  uVar13 = FUN_00035970(local_3c);\n                  iVar11 = FUN_000254b0(*(undefined4 *)(iVar8 + 0x14),uVar13);\n                  uVar13 = local_3c[0];\n                  if (iVar11 == 0) {\n                    uVar10 = *(undefined4 *)(iVar8 + 0x18);\n                    uVar12 = dcgettext(0,unaff_EBP + 0x3459a,5);\n                    FUN_0002bd60(uVar12,uVar13,uVar10);\n                    FUN_000358a0(local_3c);\n                    uVar9 = FUN_00029a00();\n                    bVar4 = true;\n                    goto LAB_0002aebd;\n                  }\n                  if (*(int *)(iVar11 + 0x20) != 0) {\n                    uVar13 = *(undefined4 *)(iVar8 + 0x18);\n                    uVar10 = *(undefined4 *)(iVar11 + 4);\n                    uVar12 = dcgettext(0,unaff_EBP + 0x345ce,5);\n                    FUN_0002bc80(uVar12,uVar10,uVar13);\n                    FUN_000358a0(iVar11 + 0x1c);\n                  }\n                  uVar9 = FUN_00029a00();\n                  bVar4 = true;\n                  iVar2 = *(int *)(&DAT_0005e002 + unaff_EBP);\n                  local_58 = (local_58 + 1) - (uint)(*(int *)(iVar11 + 0x20) == 0);\n                  goto joined_r0x0002b16d;\n                }\n              }\n              break;\n            }\n            if (*(int *)(&DAT_0005e006 + unaff_EBP) != 0) break;\n            if (*(int *)(&DAT_0005e002 + unaff_EBP) != 0) {\n              if ((bVar1 & 0xfd) == 0x3c) {\n                if (uVar16 < local_44) goto LAB_0002b0c6;\n                break;\n              }\n              if (bVar1 == 0x27) break;\n            }\n            if (bVar1 == 0x3d) {\n              if (uVar16 < local_44) goto LAB_0002b0cf;\n              break;\n            }\n            uVar16 = uVar16 + 1;\n          } while (uVar16 != local_44);\n          if (bVar4) {\n            iVar11 = dcgettext(0,unaff_EBP + 0x3460e,5);\nLAB_0002b07a:\n            if (iVar11 == 0) break;\n            if (*(int *)(&DAT_0005e002 + unaff_EBP) != 0) goto LAB_0002af93;\nLAB_0002b090:\n            FUN_000357d0(local_3c);\n            goto LAB_0002afd9;\n          }\n          if (puVar18 == (undefined4 *)0x0) {\n            if (*(int *)(&DAT_0005e002 + unaff_EBP) == 0) {\n              iVar11 = dcgettext(0,unaff_EBP + 0x34312,5);\n              if (iVar11 != 0) goto LAB_0002b090;\n              piVar17 = *(int **)(iVar8 + 0x10);\n              if (piVar17 == (int *)0x0) goto LAB_0002af6d;\n              goto LAB_0002aef9;\n            }\n            puVar18 = (undefined4 *)FUN_00028ba0();\n            iVar11 = -1;\n            puVar14 = *(undefined4 **)(iVar8 + 0x10);\n            if (*(undefined4 **)(iVar8 + 0x10) == (undefined4 *)0x0) {\n              iVar11 = 0;\n              puVar15 = (undefined4 *)(iVar8 + 0x10);\n            }\n            else {\n              do {\n                puVar15 = puVar14;\n                if (iVar11 <= (int)puVar15[10]) {\n                  iVar11 = puVar15[10] + 1;\n                }\n                puVar14 = (undefined4 *)*puVar15;\n              } while ((undefined4 *)*puVar15 != (undefined4 *)0x0);\n              if (iVar11 == -1) {\n                iVar11 = 0;\n              }\n            }\n            *puVar15 = puVar18;\n            puVar18[10] = iVar11;\n          }\n          if (puVar18[0xb] == 2) {\n            FUN_00035930(puVar18 + 7,local_48 + uVar9,local_44 - uVar9);\n            uVar9 = local_44;\n          }\n          else {\n            uVar9 = FUN_00029a00();\n          }\n          local_58 = (local_58 + 1) - (uint)(puVar18[8] == 0);\n          do {\n            puVar18 = (undefined4 *)*puVar18;\n            if (puVar18 == (undefined4 *)0x0) break;\n          } while ((int)puVar18[10] < 0);\nLAB_0002aebd:\n          iVar2 = *(int *)(&DAT_0005e002 + unaff_EBP);\njoined_r0x0002b16d:\n          if (iVar2 != 0) goto LAB_0002aecb;\n          uVar9 = FUN_000359c0(uVar9,&local_48);\n          if (local_44 <= uVar9) break;\n        } while( true );\n      }\n      piVar17 = *(int **)(iVar8 + 0x10);\n      if (piVar17 != (int *)0x0) goto LAB_0002aef9;\n      goto LAB_0002af58;\n    }\n  }\n  return 0;\nLAB_0002aecb:\n  cVar7 = local_48[uVar9];\n  if (cVar7 == ',') {\n    uVar9 = uVar9 + 1;\n    cVar7 = local_48[uVar9];\n  }\n  if ((cVar7 == ' ') || (cVar7 == '\t')) goto LAB_0002aeea;\n  goto LAB_0002ae00;\nLAB_0002aeea:\n  piVar17 = *(int **)(iVar8 + 0x10);\n  if (piVar17 != (int *)0x0) {\nLAB_0002aef9:\n    do {\n      while ((piVar17[0xb] != 1 || (piVar17[8] != 0))) {\n        piVar17 = (int *)*piVar17;\n        if (piVar17 == (int *)0x0) goto LAB_0002af58;\n      }\n      iVar11 = piVar17[1];\n      uVar13 = *(undefined4 *)(iVar8 + 0x18);\n      uVar10 = dcgettext(0,unaff_EBP + 0x3463a,5);\n      FUN_0002bd60(uVar10,iVar11,uVar13);\n      piVar17 = (int *)*piVar17;\n    } while (piVar17 != (int *)0x0);\nLAB_0002af58:\n    if (*(int *)(&DAT_0005e002 + unaff_EBP) == 0) goto LAB_0002af6d;\n  }\n  FUN_000358a0(local_3c);\n  iVar11 = unaff_EBP + 0x342bc;\n  if (*(int *)(&DAT_0005dffe + unaff_EBP) == 0) {\n    iVar11 = unaff_EBP + 0x342bd;\n  }\n  FUN_000358e0(local_3c,iVar11);\n  uVar13 = FUN_00035970(local_3c);\n  iVar11 = FUN_000254b0(*(undefined4 *)(iVar8 + 0x14),uVar13);\n  sprintf(local_30,(char *)(FUN_000357f0 + unaff_EBP + 4),local_58);\n  FUN_000358e0(iVar11 + 0x1c,local_30);\nLAB_0002af6d:\n  iVar11 = FUN_00028f30(*(undefined4 *)(iVar8 + 0x14),iVar8);\n  if (*(int *)(&DAT_0005e002 + unaff_EBP) != 0) {\nLAB_0002af93:\n    puVar14 = (undefined4 *)(iVar8 + 0x10);\n    puVar18 = *(undefined4 **)(iVar8 + 0x10);\n    while (puVar15 = puVar14, puVar18 != (undefined4 *)0x0) {\n      piVar17 = puVar18 + 2;\n      puVar3 = (undefined4 *)*puVar18;\n      puVar14 = puVar18;\n      puVar18 = puVar3;\n      if (*piVar17 == 0) {\n        FUN_00028bf0();\n        *puVar15 = puVar3;\n        puVar14 = puVar15;\n      }\n    }\n  }\n  FUN_000357d0(local_3c);\n  if (iVar11 == 0) {\n    *(int *)(&DAT_0005dff6 + unaff_EBP) = *(int *)(&DAT_0005dff6 + unaff_EBP) + 1;\n  }\nLAB_0002afd9:\n  *param_3 = iVar11;\n  FUN_000357d0(&local_48);\n  if (param_4 == (int *)0x0) {\n    return 1;\n  }\n  *param_4 = iVar8;\n  return 1;\n}\n\n" (function_definition "undefined4 FUN_0002ac00(byte *param_1,undefined4 param_2,int *param_3,int *param_4)\n\n{\n  byte bVar1;\n  int iVar2;\n  undefined4 *puVar3;\n  bool bVar4;\n  byte *pbVar5;\n  byte bVar6;\n  char cVar7;\n  void *__dest;\n  byte *__ptr;\n  int iVar8;\n  uint uVar9;\n  undefined4 uVar10;\n  int iVar11;\n  undefined4 uVar12;\n  undefined4 uVar13;\n  undefined4 *puVar14;\n  undefined4 *puVar15;\n  size_t __n;\n  uint uVar16;\n  int unaff_EBP;\n  int *piVar17;\n  undefined4 *puVar18;\n  byte *pbVar19;\n  int local_58;\n  char *local_48;\n  uint local_44;\n  undefined4 local_3c [3];\n  char local_30 [32];\n  \n  FUN_0001fe10();\n  iVar8 = unaff_EBP + 0x557ba;\n  if (((*(byte *)(iVar8 + (uint)*param_1) & 2) != 0) ||\n     ((*(int *)(&DAT_0005e002 + unaff_EBP) != 0 && (*param_1 == 0x2e)))) {\n    pbVar19 = param_1 + 1;\n    bVar1 = *(byte *)(iVar8 + (uint)param_1[1]);\n    while ((bVar1 & 1) != 0) {\n      pbVar19 = pbVar19 + 1;\n      bVar1 = *(byte *)(iVar8 + (uint)*pbVar19);\n    }\n    pbVar19 = pbVar19 + ((bVar1 & 4) != 0);\n    __n = (int)pbVar19 - (int)param_1;\n    __dest = (void *)xmalloc(__n + 1);\n    *(undefined1 *)((int)__dest + __n) = 0;\n    __ptr = (byte *)memcpy(__dest,param_1,__n);\n    iVar8 = *(int *)(unaff_EBP + 0x553ca);\n    bVar1 = *__ptr;\n    pbVar5 = __ptr;\n    while (bVar1 != 0) {\n      *pbVar5 = *(byte *)(iVar8 + (uint)bVar1);\n      bVar1 = pbVar5[1];\n      pbVar5 = pbVar5 + 1;\n    }\n    iVar8 = FUN_000254b0(*(undefined4 *)("%S.000%z" + unaff_EBP),__ptr);\n    free(__ptr);\n    if (iVar8 != 0) {\n      FUN_00035790(&local_48);\n      bVar1 = *pbVar19;\n      while ((0xd < bVar1 || ((0x2401U >> ((int)(char)bVar1 & 0x1fU) & 1) == 0))) {\n        pbVar19 = pbVar19 + 1;\n        FUN_000358b0(&local_48,(int)(char)bVar1);\n        bVar1 = *pbVar19;\n      }\n      FUN_00035790(param_2);\n      FUN_00035790(local_3c);\n      piVar17 = *(int **)(iVar8 + 0x10);\n      if (piVar17 != (int *)0x0) {\n        do {\n          FUN_000358a0(piVar17 + 7);\n          piVar17 = (int *)*piVar17;\n        } while (piVar17 != (int *)0x0);\n        for (puVar18 = *(undefined4 **)(iVar8 + 0x10); puVar18 != (undefined4 *)0x0;\n            puVar18 = (undefined4 *)*puVar18) {\n          if (-1 < (int)puVar18[10]) goto LAB_0002adc1;\n        }\n      }\n      puVar18 = (undefined4 *)0x0;\nLAB_0002adc1:\n      uVar9 = 0;\n      if ((*(int *)(&DAT_0005e002 + unaff_EBP) != 0) && (uVar9 = local_44, local_44 != 0)) {\n        if (*local_48 == '.') {\n          if (((local_44 < 2) || (local_48[1] == ' ')) || (local_48[1] == '\t')) {\n            uVar9 = 1;\n          }\n          else {\n            puVar14 = (undefined4 *)FUN_00028ba0();\n            puVar14[10] = 0xffffffff;\n            *puVar14 = *(undefined4 *)(iVar8 + 0x10);\n            *(undefined4 **)(iVar8 + 0x10) = puVar14;\n            uVar9 = FUN_00029a00();\n          }\n        }\n        else {\n          uVar9 = 0;\n        }\n      }\n      uVar9 = FUN_00035980(uVar9,&local_48);\n      local_58 = 0;\n      bVar4 = false;\nLAB_0002ae00:\n      if (uVar9 < local_44) {\n        do {\n          uVar16 = uVar9;\n          do {\n            bVar1 = local_48[uVar16];\n            bVar6 = 1;\n            if ((byte)(bVar1 - 0x20) < 0x1c) {\n              bVar6 = ~(byte)(0x8001305 >> (bVar1 - 0x20 & 0x1f)) & 1;\n            }\n            if ((bVar1 == 9) || (bVar6 == 0)) {\n              if ((uVar16 < local_44) && (*(int *)(&DAT_0005e006 + unaff_EBP) == 0)) {\nLAB_0002b0c6:\n                if (bVar1 == 0x3d) {\nLAB_0002b0cf:\n                  FUN_000358a0(local_3c);\n                  iVar11 = FUN_00028c80(local_3c);\n                  if (local_48[iVar11] != '=') {\n                    iVar11 = dcgettext(0,unaff_EBP + 0x3457a,5);\n                    goto LAB_0002b07a;\n                  }\n                  uVar13 = FUN_00035970(local_3c);\n                  iVar11 = FUN_000254b0(*(undefined4 *)(iVar8 + 0x14),uVar13);\n                  uVar13 = local_3c[0];\n                  if (iVar11 == 0) {\n                    uVar10 = *(undefined4 *)(iVar8 + 0x18);\n                    uVar12 = dcgettext(0,unaff_EBP + 0x3459a,5);\n                    FUN_0002bd60(uVar12,uVar13,uVar10);\n                    FUN_000358a0(local_3c);\n                    uVar9 = FUN_00029a00();\n                    bVar4 = true;\n                    goto LAB_0002aebd;\n                  }\n                  if (*(int *)(iVar11 + 0x20) != 0) {\n                    uVar13 = *(undefined4 *)(iVar8 + 0x18);\n                    uVar10 = *(undefined4 *)(iVar11 + 4);\n                    uVar12 = dcgettext(0,unaff_EBP + 0x345ce,5);\n                    FUN_0002bc80(uVar12,uVar10,uVar13);\n                    FUN_000358a0(iVar11 + 0x1c);\n                  }\n                  uVar9 = FUN_00029a00();\n                  bVar4 = true;\n                  iVar2 = *(int *)(&DAT_0005e002 + unaff_EBP);\n                  local_58 = (local_58 + 1) - (uint)(*(int *)(iVar11 + 0x20) == 0);\n                  goto joined_r0x0002b16d;\n                }\n              }\n              break;\n            }\n            if (*(int *)(&DAT_0005e006 + unaff_EBP) != 0) break;\n            if (*(int *)(&DAT_0005e002 + unaff_EBP) != 0) {\n              if ((bVar1 & 0xfd) == 0x3c) {\n                if (uVar16 < local_44) goto LAB_0002b0c6;\n                break;\n              }\n              if (bVar1 == 0x27) break;\n            }\n            if (bVar1 == 0x3d) {\n              if (uVar16 < local_44) goto LAB_0002b0cf;\n              break;\n            }\n            uVar16 = uVar16 + 1;\n          } while (uVar16 != local_44);\n          if (bVar4) {\n            iVar11 = dcgettext(0,unaff_EBP + 0x3460e,5);\nLAB_0002b07a:\n            if (iVar11 == 0) break;\n            if (*(int *)(&DAT_0005e002 + unaff_EBP) != 0) goto LAB_0002af93;\nLAB_0002b090:\n            FUN_000357d0(local_3c);\n            goto LAB_0002afd9;\n          }\n          if (puVar18 == (undefined4 *)0x0) {\n            if (*(int *)(&DAT_0005e002 + unaff_EBP) == 0) {\n              iVar11 = dcgettext(0,unaff_EBP + 0x34312,5);\n              if (iVar11 != 0) goto LAB_0002b090;\n              piVar17 = *(int **)(iVar8 + 0x10);\n              if (piVar17 == (int *)0x0) goto LAB_0002af6d;\n              goto LAB_0002aef9;\n            }\n            puVar18 = (undefined4 *)FUN_00028ba0();\n            iVar11 = -1;\n            puVar14 = *(undefined4 **)(iVar8 + 0x10);\n            if (*(undefined4 **)(iVar8 + 0x10) == (undefined4 *)0x0) {\n              iVar11 = 0;\n              puVar15 = (undefined4 *)(iVar8 + 0x10);\n            }\n            else {\n              do {\n                puVar15 = puVar14;\n                if (iVar11 <= (int)puVar15[10]) {\n                  iVar11 = puVar15[10] + 1;\n                }\n                puVar14 = (undefined4 *)*puVar15;\n              } while ((undefined4 *)*puVar15 != (undefined4 *)0x0);\n              if (iVar11 == -1) {\n                iVar11 = 0;\n              }\n            }\n            *puVar15 = puVar18;\n            puVar18[10] = iVar11;\n          }\n          if (puVar18[0xb] == 2) {\n            FUN_00035930(puVar18 + 7,local_48 + uVar9,local_44 - uVar9);\n            uVar9 = local_44;\n          }\n          else {\n            uVar9 = FUN_00029a00();\n          }\n          local_58 = (local_58 + 1) - (uint)(puVar18[8] == 0);\n          do {\n            puVar18 = (undefined4 *)*puVar18;\n            if (puVar18 == (undefined4 *)0x0) break;\n          } while ((int)puVar18[10] < 0);\nLAB_0002aebd:\n          iVar2 = *(int *)(&DAT_0005e002 + unaff_EBP);\njoined_r0x0002b16d:\n          if (iVar2 != 0) goto LAB_0002aecb;\n          uVar9 = FUN_000359c0(uVar9,&local_48);\n          if (local_44 <= uVar9) break;\n        } while( true );\n      }\n      piVar17 = *(int **)(iVar8 + 0x10);\n      if (piVar17 != (int *)0x0) goto LAB_0002aef9;\n      goto LAB_0002af58;\n    }\n  }\n  return 0;\nLAB_0002aecb:\n  cVar7 = local_48[uVar9];\n  if (cVar7 == ',') {\n    uVar9 = uVar9 + 1;\n    cVar7 = local_48[uVar9];\n  }\n  if ((cVar7 == ' ') || (cVar7 == '\t')) goto LAB_0002aeea;\n  goto LAB_0002ae00;\nLAB_0002aeea:\n  piVar17 = *(int **)(iVar8 + 0x10);\n  if (piVar17 != (int *)0x0) {\nLAB_0002aef9:\n    do {\n      while ((piVar17[0xb] != 1 || (piVar17[8] != 0))) {\n        piVar17 = (int *)*piVar17;\n        if (piVar17 == (int *)0x0) goto LAB_0002af58;\n      }\n      iVar11 = piVar17[1];\n      uVar13 = *(undefined4 *)(iVar8 + 0x18);\n      uVar10 = dcgettext(0,unaff_EBP + 0x3463a,5);\n      FUN_0002bd60(uVar10,iVar11,uVar13);\n      piVar17 = (int *)*piVar17;\n    } while (piVar17 != (int *)0x0);\nLAB_0002af58:\n    if (*(int *)(&DAT_0005e002 + unaff_EBP) == 0) goto LAB_0002af6d;\n  }\n  FUN_000358a0(local_3c);\n  iVar11 = unaff_EBP + 0x342bc;\n  if (*(int *)(&DAT_0005dffe + unaff_EBP) == 0) {\n    iVar11 = unaff_EBP + 0x342bd;\n  }\n  FUN_000358e0(local_3c,iVar11);\n  uVar13 = FUN_00035970(local_3c);\n  iVar11 = FUN_000254b0(*(undefined4 *)(iVar8 + 0x14),uVar13);\n  sprintf(local_30,(char *)(FUN_000357f0 + unaff_EBP + 4),local_58);\n  FUN_000358e0(iVar11 + 0x1c,local_30);\nLAB_0002af6d:\n  iVar11 = FUN_00028f30(*(undefined4 *)(iVar8 + 0x14),iVar8);\n  if (*(int *)(&DAT_0005e002 + unaff_EBP) != 0) {\nLAB_0002af93:\n    puVar14 = (undefined4 *)(iVar8 + 0x10);\n    puVar18 = *(undefined4 **)(iVar8 + 0x10);\n    while (puVar15 = puVar14, puVar18 != (undefined4 *)0x0) {\n      piVar17 = puVar18 + 2;\n      puVar3 = (undefined4 *)*puVar18;\n      puVar14 = puVar18;\n      puVar18 = puVar3;\n      if (*piVar17 == 0) {\n        FUN_00028bf0();\n        *puVar15 = puVar3;\n        puVar14 = puVar15;\n      }\n    }\n  }\n  FUN_000357d0(local_3c);\n  if (iVar11 == 0) {\n    *(int *)(&DAT_0005dff6 + unaff_EBP) = *(int *)(&DAT_0005dff6 + unaff_EBP) + 1;\n  }\nLAB_0002afd9:\n  *param_3 = iVar11;\n  FUN_000357d0(&local_48);\n  if (param_4 == (int *)0x0) {\n    return 1;\n  }\n  *param_4 = iVar8;\n  return 1;\n}" type_identifier (function_declarator "FUN_0002ac00(byte *param_1,undefined4 param_2,int *param_3,int *param_4)" identifier (parameter_list "(byte *param_1,undefined4 param_2,int *param_3,int *param_4)" ( (parameter_declaration "byte *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "undefined4 param_2" type_identifier identifier) , (parameter_declaration "int *param_3" primitive_type (pointer_declarator "*param_3" * identifier)) , (parameter_declaration "int *param_4" primitive_type (pointer_declarator "*param_4" * identifier)) ))) (compound_statement "{\n  byte bVar1;\n  int iVar2;\n  undefined4 *puVar3;\n  bool bVar4;\n  byte *pbVar5;\n  byte bVar6;\n  char cVar7;\n  void *__dest;\n  byte *__ptr;\n  int iVar8;\n  uint uVar9;\n  undefined4 uVar10;\n  int iVar11;\n  undefined4 uVar12;\n  undefined4 uVar13;\n  undefined4 *puVar14;\n  undefined4 *puVar15;\n  size_t __n;\n  uint uVar16;\n  int unaff_EBP;\n  int *piVar17;\n  undefined4 *puVar18;\n  byte *pbVar19;\n  int local_58;\n  char *local_48;\n  uint local_44;\n  undefined4 local_3c [3];\n  char local_30 [32];\n  \n  FUN_0001fe10();\n  iVar8 = unaff_EBP + 0x557ba;\n  if (((*(byte *)(iVar8 + (uint)*param_1) & 2) != 0) ||\n     ((*(int *)(&DAT_0005e002 + unaff_EBP) != 0 && (*param_1 == 0x2e)))) {\n    pbVar19 = param_1 + 1;\n    bVar1 = *(byte *)(iVar8 + (uint)param_1[1]);\n    while ((bVar1 & 1) != 0) {\n      pbVar19 = pbVar19 + 1;\n      bVar1 = *(byte *)(iVar8 + (uint)*pbVar19);\n    }\n    pbVar19 = pbVar19 + ((bVar1 & 4) != 0);\n    __n = (int)pbVar19 - (int)param_1;\n    __dest = (void *)xmalloc(__n + 1);\n    *(undefined1 *)((int)__dest + __n) = 0;\n    __ptr = (byte *)memcpy(__dest,param_1,__n);\n    iVar8 = *(int *)(unaff_EBP + 0x553ca);\n    bVar1 = *__ptr;\n    pbVar5 = __ptr;\n    while (bVar1 != 0) {\n      *pbVar5 = *(byte *)(iVar8 + (uint)bVar1);\n      bVar1 = pbVar5[1];\n      pbVar5 = pbVar5 + 1;\n    }\n    iVar8 = FUN_000254b0(*(undefined4 *)("%S.000%z" + unaff_EBP),__ptr);\n    free(__ptr);\n    if (iVar8 != 0) {\n      FUN_00035790(&local_48);\n      bVar1 = *pbVar19;\n      while ((0xd < bVar1 || ((0x2401U >> ((int)(char)bVar1 & 0x1fU) & 1) == 0))) {\n        pbVar19 = pbVar19 + 1;\n        FUN_000358b0(&local_48,(int)(char)bVar1);\n        bVar1 = *pbVar19;\n      }\n      FUN_00035790(param_2);\n      FUN_00035790(local_3c);\n      piVar17 = *(int **)(iVar8 + 0x10);\n      if (piVar17 != (int *)0x0) {\n        do {\n          FUN_000358a0(piVar17 + 7);\n          piVar17 = (int *)*piVar17;\n        } while (piVar17 != (int *)0x0);\n        for (puVar18 = *(undefined4 **)(iVar8 + 0x10); puVar18 != (undefined4 *)0x0;\n            puVar18 = (undefined4 *)*puVar18) {\n          if (-1 < (int)puVar18[10]) goto LAB_0002adc1;\n        }\n      }\n      puVar18 = (undefined4 *)0x0;\nLAB_0002adc1:\n      uVar9 = 0;\n      if ((*(int *)(&DAT_0005e002 + unaff_EBP) != 0) && (uVar9 = local_44, local_44 != 0)) {\n        if (*local_48 == '.') {\n          if (((local_44 < 2) || (local_48[1] == ' ')) || (local_48[1] == '\t')) {\n            uVar9 = 1;\n          }\n          else {\n            puVar14 = (undefined4 *)FUN_00028ba0();\n            puVar14[10] = 0xffffffff;\n            *puVar14 = *(undefined4 *)(iVar8 + 0x10);\n            *(undefined4 **)(iVar8 + 0x10) = puVar14;\n            uVar9 = FUN_00029a00();\n          }\n        }\n        else {\n          uVar9 = 0;\n        }\n      }\n      uVar9 = FUN_00035980(uVar9,&local_48);\n      local_58 = 0;\n      bVar4 = false;\nLAB_0002ae00:\n      if (uVar9 < local_44) {\n        do {\n          uVar16 = uVar9;\n          do {\n            bVar1 = local_48[uVar16];\n            bVar6 = 1;\n            if ((byte)(bVar1 - 0x20) < 0x1c) {\n              bVar6 = ~(byte)(0x8001305 >> (bVar1 - 0x20 & 0x1f)) & 1;\n            }\n            if ((bVar1 == 9) || (bVar6 == 0)) {\n              if ((uVar16 < local_44) && (*(int *)(&DAT_0005e006 + unaff_EBP) == 0)) {\nLAB_0002b0c6:\n                if (bVar1 == 0x3d) {\nLAB_0002b0cf:\n                  FUN_000358a0(local_3c);\n                  iVar11 = FUN_00028c80(local_3c);\n                  if (local_48[iVar11] != '=') {\n                    iVar11 = dcgettext(0,unaff_EBP + 0x3457a,5);\n                    goto LAB_0002b07a;\n                  }\n                  uVar13 = FUN_00035970(local_3c);\n                  iVar11 = FUN_000254b0(*(undefined4 *)(iVar8 + 0x14),uVar13);\n                  uVar13 = local_3c[0];\n                  if (iVar11 == 0) {\n                    uVar10 = *(undefined4 *)(iVar8 + 0x18);\n                    uVar12 = dcgettext(0,unaff_EBP + 0x3459a,5);\n                    FUN_0002bd60(uVar12,uVar13,uVar10);\n                    FUN_000358a0(local_3c);\n                    uVar9 = FUN_00029a00();\n                    bVar4 = true;\n                    goto LAB_0002aebd;\n                  }\n                  if (*(int *)(iVar11 + 0x20) != 0) {\n                    uVar13 = *(undefined4 *)(iVar8 + 0x18);\n                    uVar10 = *(undefined4 *)(iVar11 + 4);\n                    uVar12 = dcgettext(0,unaff_EBP + 0x345ce,5);\n                    FUN_0002bc80(uVar12,uVar10,uVar13);\n                    FUN_000358a0(iVar11 + 0x1c);\n                  }\n                  uVar9 = FUN_00029a00();\n                  bVar4 = true;\n                  iVar2 = *(int *)(&DAT_0005e002 + unaff_EBP);\n                  local_58 = (local_58 + 1) - (uint)(*(int *)(iVar11 + 0x20) == 0);\n                  goto joined_r0x0002b16d;\n                }\n              }\n              break;\n            }\n            if (*(int *)(&DAT_0005e006 + unaff_EBP) != 0) break;\n            if (*(int *)(&DAT_0005e002 + unaff_EBP) != 0) {\n              if ((bVar1 & 0xfd) == 0x3c) {\n                if (uVar16 < local_44) goto LAB_0002b0c6;\n                break;\n              }\n              if (bVar1 == 0x27) break;\n            }\n            if (bVar1 == 0x3d) {\n              if (uVar16 < local_44) goto LAB_0002b0cf;\n              break;\n            }\n            uVar16 = uVar16 + 1;\n          } while (uVar16 != local_44);\n          if (bVar4) {\n            iVar11 = dcgettext(0,unaff_EBP + 0x3460e,5);\nLAB_0002b07a:\n            if (iVar11 == 0) break;\n            if (*(int *)(&DAT_0005e002 + unaff_EBP) != 0) goto LAB_0002af93;\nLAB_0002b090:\n            FUN_000357d0(local_3c);\n            goto LAB_0002afd9;\n          }\n          if (puVar18 == (undefined4 *)0x0) {\n            if (*(int *)(&DAT_0005e002 + unaff_EBP) == 0) {\n              iVar11 = dcgettext(0,unaff_EBP + 0x34312,5);\n              if (iVar11 != 0) goto LAB_0002b090;\n              piVar17 = *(int **)(iVar8 + 0x10);\n              if (piVar17 == (int *)0x0) goto LAB_0002af6d;\n              goto LAB_0002aef9;\n            }\n            puVar18 = (undefined4 *)FUN_00028ba0();\n            iVar11 = -1;\n            puVar14 = *(undefined4 **)(iVar8 + 0x10);\n            if (*(undefined4 **)(iVar8 + 0x10) == (undefined4 *)0x0) {\n              iVar11 = 0;\n              puVar15 = (undefined4 *)(iVar8 + 0x10);\n            }\n            else {\n              do {\n                puVar15 = puVar14;\n                if (iVar11 <= (int)puVar15[10]) {\n                  iVar11 = puVar15[10] + 1;\n                }\n                puVar14 = (undefined4 *)*puVar15;\n              } while ((undefined4 *)*puVar15 != (undefined4 *)0x0);\n              if (iVar11 == -1) {\n                iVar11 = 0;\n              }\n            }\n            *puVar15 = puVar18;\n            puVar18[10] = iVar11;\n          }\n          if (puVar18[0xb] == 2) {\n            FUN_00035930(puVar18 + 7,local_48 + uVar9,local_44 - uVar9);\n            uVar9 = local_44;\n          }\n          else {\n            uVar9 = FUN_00029a00();\n          }\n          local_58 = (local_58 + 1) - (uint)(puVar18[8] == 0);\n          do {\n            puVar18 = (undefined4 *)*puVar18;\n            if (puVar18 == (undefined4 *)0x0) break;\n          } while ((int)puVar18[10] < 0);\nLAB_0002aebd:\n          iVar2 = *(int *)(&DAT_0005e002 + unaff_EBP);\njoined_r0x0002b16d:\n          if (iVar2 != 0) goto LAB_0002aecb;\n          uVar9 = FUN_000359c0(uVar9,&local_48);\n          if (local_44 <= uVar9) break;\n        } while( true );\n      }\n      piVar17 = *(int **)(iVar8 + 0x10);\n      if (piVar17 != (int *)0x0) goto LAB_0002aef9;\n      goto LAB_0002af58;\n    }\n  }\n  return 0;\nLAB_0002aecb:\n  cVar7 = local_48[uVar9];\n  if (cVar7 == ',') {\n    uVar9 = uVar9 + 1;\n    cVar7 = local_48[uVar9];\n  }\n  if ((cVar7 == ' ') || (cVar7 == '\t')) goto LAB_0002aeea;\n  goto LAB_0002ae00;\nLAB_0002aeea:\n  piVar17 = *(int **)(iVar8 + 0x10);\n  if (piVar17 != (int *)0x0) {\nLAB_0002aef9:\n    do {\n      while ((piVar17[0xb] != 1 || (piVar17[8] != 0))) {\n        piVar17 = (int *)*piVar17;\n        if (piVar17 == (int *)0x0) goto LAB_0002af58;\n      }\n      iVar11 = piVar17[1];\n      uVar13 = *(undefined4 *)(iVar8 + 0x18);\n      uVar10 = dcgettext(0,unaff_EBP + 0x3463a,5);\n      FUN_0002bd60(uVar10,iVar11,uVar13);\n      piVar17 = (int *)*piVar17;\n    } while (piVar17 != (int *)0x0);\nLAB_0002af58:\n    if (*(int *)(&DAT_0005e002 + unaff_EBP) == 0) goto LAB_0002af6d;\n  }\n  FUN_000358a0(local_3c);\n  iVar11 = unaff_EBP + 0x342bc;\n  if (*(int *)(&DAT_0005dffe + unaff_EBP) == 0) {\n    iVar11 = unaff_EBP + 0x342bd;\n  }\n  FUN_000358e0(local_3c,iVar11);\n  uVar13 = FUN_00035970(local_3c);\n  iVar11 = FUN_000254b0(*(undefined4 *)(iVar8 + 0x14),uVar13);\n  sprintf(local_30,(char *)(FUN_000357f0 + unaff_EBP + 4),local_58);\n  FUN_000358e0(iVar11 + 0x1c,local_30);\nLAB_0002af6d:\n  iVar11 = FUN_00028f30(*(undefined4 *)(iVar8 + 0x14),iVar8);\n  if (*(int *)(&DAT_0005e002 + unaff_EBP) != 0) {\nLAB_0002af93:\n    puVar14 = (undefined4 *)(iVar8 + 0x10);\n    puVar18 = *(undefined4 **)(iVar8 + 0x10);\n    while (puVar15 = puVar14, puVar18 != (undefined4 *)0x0) {\n      piVar17 = puVar18 + 2;\n      puVar3 = (undefined4 *)*puVar18;\n      puVar14 = puVar18;\n      puVar18 = puVar3;\n      if (*piVar17 == 0) {\n        FUN_00028bf0();\n        *puVar15 = puVar3;\n        puVar14 = puVar15;\n      }\n    }\n  }\n  FUN_000357d0(local_3c);\n  if (iVar11 == 0) {\n    *(int *)(&DAT_0005dff6 + unaff_EBP) = *(int *)(&DAT_0005dff6 + unaff_EBP) + 1;\n  }\nLAB_0002afd9:\n  *param_3 = iVar11;\n  FUN_000357d0(&local_48);\n  if (param_4 == (int *)0x0) {\n    return 1;\n  }\n  *param_4 = iVar8;\n  return 1;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "undefined4 *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "bool bVar4;" primitive_type identifier ;) (declaration "byte *pbVar5;" type_identifier (pointer_declarator "*pbVar5" * identifier) ;) (declaration "byte bVar6;" type_identifier identifier ;) (declaration "char cVar7;" primitive_type identifier ;) (declaration "void *__dest;" primitive_type (pointer_declarator "*__dest" * identifier) ;) (declaration "byte *__ptr;" type_identifier (pointer_declarator "*__ptr" * identifier) ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "undefined4 uVar10;" type_identifier identifier ;) (declaration "int iVar11;" primitive_type identifier ;) (declaration "undefined4 uVar12;" type_identifier identifier ;) (declaration "undefined4 uVar13;" type_identifier identifier ;) (declaration "undefined4 *puVar14;" type_identifier (pointer_declarator "*puVar14" * identifier) ;) (declaration "undefined4 *puVar15;" type_identifier (pointer_declarator "*puVar15" * identifier) ;) (declaration "size_t __n;" primitive_type identifier ;) (declaration "uint uVar16;" type_identifier identifier ;) (declaration "int unaff_EBP;" primitive_type identifier ;) (declaration "int *piVar17;" primitive_type (pointer_declarator "*piVar17" * identifier) ;) (declaration "undefined4 *puVar18;" type_identifier (pointer_declarator "*puVar18" * identifier) ;) (declaration "byte *pbVar19;" type_identifier (pointer_declarator "*pbVar19" * identifier) ;) (declaration "int local_58;" primitive_type identifier ;) (declaration "char *local_48;" primitive_type (pointer_declarator "*local_48" * identifier) ;) (declaration "uint local_44;" type_identifier identifier ;) (declaration "undefined4 local_3c [3];" type_identifier (array_declarator "local_3c [3]" identifier [ number_literal ]) ;) (declaration "char local_30 [32];" primitive_type (array_declarator "local_30 [32]" identifier [ number_literal ]) ;) (expression_statement "FUN_0001fe10();" (call_expression "FUN_0001fe10()" identifier (argument_list "()" ( ))) ;) (expression_statement "iVar8 = unaff_EBP + 0x557ba;" (assignment_expression "iVar8 = unaff_EBP + 0x557ba" identifier = (binary_expression "unaff_EBP + 0x557ba" identifier + number_literal)) ;) (if_statement "if (((*(byte *)(iVar8 + (uint)*param_1) & 2) != 0) ||\n     ((*(int *)(&DAT_0005e002 + unaff_EBP) != 0 && (*param_1 == 0x2e)))) {\n    pbVar19 = param_1 + 1;\n    bVar1 = *(byte *)(iVar8 + (uint)param_1[1]);\n    while ((bVar1 & 1) != 0) {\n      pbVar19 = pbVar19 + 1;\n      bVar1 = *(byte *)(iVar8 + (uint)*pbVar19);\n    }\n    pbVar19 = pbVar19 + ((bVar1 & 4) != 0);\n    __n = (int)pbVar19 - (int)param_1;\n    __dest = (void *)xmalloc(__n + 1);\n    *(undefined1 *)((int)__dest + __n) = 0;\n    __ptr = (byte *)memcpy(__dest,param_1,__n);\n    iVar8 = *(int *)(unaff_EBP + 0x553ca);\n    bVar1 = *__ptr;\n    pbVar5 = __ptr;\n    while (bVar1 != 0) {\n      *pbVar5 = *(byte *)(iVar8 + (uint)bVar1);\n      bVar1 = pbVar5[1];\n      pbVar5 = pbVar5 + 1;\n    }\n    iVar8 = FUN_000254b0(*(undefined4 *)("%S.000%z" + unaff_EBP),__ptr);\n    free(__ptr);\n    if (iVar8 != 0) {\n      FUN_00035790(&local_48);\n      bVar1 = *pbVar19;\n      while ((0xd < bVar1 || ((0x2401U >> ((int)(char)bVar1 & 0x1fU) & 1) == 0))) {\n        pbVar19 = pbVar19 + 1;\n        FUN_000358b0(&local_48,(int)(char)bVar1);\n        bVar1 = *pbVar19;\n      }\n      FUN_00035790(param_2);\n      FUN_00035790(local_3c);\n      piVar17 = *(int **)(iVar8 + 0x10);\n      if (piVar17 != (int *)0x0) {\n        do {\n          FUN_000358a0(piVar17 + 7);\n          piVar17 = (int *)*piVar17;\n        } while (piVar17 != (int *)0x0);\n        for (puVar18 = *(undefined4 **)(iVar8 + 0x10); puVar18 != (undefined4 *)0x0;\n            puVar18 = (undefined4 *)*puVar18) {\n          if (-1 < (int)puVar18[10]) goto LAB_0002adc1;\n        }\n      }\n      puVar18 = (undefined4 *)0x0;\nLAB_0002adc1:\n      uVar9 = 0;\n      if ((*(int *)(&DAT_0005e002 + unaff_EBP) != 0) && (uVar9 = local_44, local_44 != 0)) {\n        if (*local_48 == '.') {\n          if (((local_44 < 2) || (local_48[1] == ' ')) || (local_48[1] == '\t')) {\n            uVar9 = 1;\n          }\n          else {\n            puVar14 = (undefined4 *)FUN_00028ba0();\n            puVar14[10] = 0xffffffff;\n            *puVar14 = *(undefined4 *)(iVar8 + 0x10);\n            *(undefined4 **)(iVar8 + 0x10) = puVar14;\n            uVar9 = FUN_00029a00();\n          }\n        }\n        else {\n          uVar9 = 0;\n        }\n      }\n      uVar9 = FUN_00035980(uVar9,&local_48);\n      local_58 = 0;\n      bVar4 = false;\nLAB_0002ae00:\n      if (uVar9 < local_44) {\n        do {\n          uVar16 = uVar9;\n          do {\n            bVar1 = local_48[uVar16];\n            bVar6 = 1;\n            if ((byte)(bVar1 - 0x20) < 0x1c) {\n              bVar6 = ~(byte)(0x8001305 >> (bVar1 - 0x20 & 0x1f)) & 1;\n            }\n            if ((bVar1 == 9) || (bVar6 == 0)) {\n              if ((uVar16 < local_44) && (*(int *)(&DAT_0005e006 + unaff_EBP) == 0)) {\nLAB_0002b0c6:\n                if (bVar1 == 0x3d) {\nLAB_0002b0cf:\n                  FUN_000358a0(local_3c);\n                  iVar11 = FUN_00028c80(local_3c);\n                  if (local_48[iVar11] != '=') {\n                    iVar11 = dcgettext(0,unaff_EBP + 0x3457a,5);\n                    goto LAB_0002b07a;\n                  }\n                  uVar13 = FUN_00035970(local_3c);\n                  iVar11 = FUN_000254b0(*(undefined4 *)(iVar8 + 0x14),uVar13);\n                  uVar13 = local_3c[0];\n                  if (iVar11 == 0) {\n                    uVar10 = *(undefined4 *)(iVar8 + 0x18);\n                    uVar12 = dcgettext(0,unaff_EBP + 0x3459a,5);\n                    FUN_0002bd60(uVar12,uVar13,uVar10);\n                    FUN_000358a0(local_3c);\n                    uVar9 = FUN_00029a00();\n                    bVar4 = true;\n                    goto LAB_0002aebd;\n                  }\n                  if (*(int *)(iVar11 + 0x20) != 0) {\n                    uVar13 = *(undefined4 *)(iVar8 + 0x18);\n                    uVar10 = *(undefined4 *)(iVar11 + 4);\n                    uVar12 = dcgettext(0,unaff_EBP + 0x345ce,5);\n                    FUN_0002bc80(uVar12,uVar10,uVar13);\n                    FUN_000358a0(iVar11 + 0x1c);\n                  }\n                  uVar9 = FUN_00029a00();\n                  bVar4 = true;\n                  iVar2 = *(int *)(&DAT_0005e002 + unaff_EBP);\n                  local_58 = (local_58 + 1) - (uint)(*(int *)(iVar11 + 0x20) == 0);\n                  goto joined_r0x0002b16d;\n                }\n              }\n              break;\n            }\n            if (*(int *)(&DAT_0005e006 + unaff_EBP) != 0) break;\n            if (*(int *)(&DAT_0005e002 + unaff_EBP) != 0) {\n              if ((bVar1 & 0xfd) == 0x3c) {\n                if (uVar16 < local_44) goto LAB_0002b0c6;\n                break;\n              }\n              if (bVar1 == 0x27) break;\n            }\n            if (bVar1 == 0x3d) {\n              if (uVar16 < local_44) goto LAB_0002b0cf;\n              break;\n            }\n            uVar16 = uVar16 + 1;\n          } while (uVar16 != local_44);\n          if (bVar4) {\n            iVar11 = dcgettext(0,unaff_EBP + 0x3460e,5);\nLAB_0002b07a:\n            if (iVar11 == 0) break;\n            if (*(int *)(&DAT_0005e002 + unaff_EBP) != 0) goto LAB_0002af93;\nLAB_0002b090:\n            FUN_000357d0(local_3c);\n            goto LAB_0002afd9;\n          }\n          if (puVar18 == (undefined4 *)0x0) {\n            if (*(int *)(&DAT_0005e002 + unaff_EBP) == 0) {\n              iVar11 = dcgettext(0,unaff_EBP + 0x34312,5);\n              if (iVar11 != 0) goto LAB_0002b090;\n              piVar17 = *(int **)(iVar8 + 0x10);\n              if (piVar17 == (int *)0x0) goto LAB_0002af6d;\n              goto LAB_0002aef9;\n            }\n            puVar18 = (undefined4 *)FUN_00028ba0();\n            iVar11 = -1;\n            puVar14 = *(undefined4 **)(iVar8 + 0x10);\n            if (*(undefined4 **)(iVar8 + 0x10) == (undefined4 *)0x0) {\n              iVar11 = 0;\n              puVar15 = (undefined4 *)(iVar8 + 0x10);\n            }\n            else {\n              do {\n                puVar15 = puVar14;\n                if (iVar11 <= (int)puVar15[10]) {\n                  iVar11 = puVar15[10] + 1;\n                }\n                puVar14 = (undefined4 *)*puVar15;\n              } while ((undefined4 *)*puVar15 != (undefined4 *)0x0);\n              if (iVar11 == -1) {\n                iVar11 = 0;\n              }\n            }\n            *puVar15 = puVar18;\n            puVar18[10] = iVar11;\n          }\n          if (puVar18[0xb] == 2) {\n            FUN_00035930(puVar18 + 7,local_48 + uVar9,local_44 - uVar9);\n            uVar9 = local_44;\n          }\n          else {\n            uVar9 = FUN_00029a00();\n          }\n          local_58 = (local_58 + 1) - (uint)(puVar18[8] == 0);\n          do {\n            puVar18 = (undefined4 *)*puVar18;\n            if (puVar18 == (undefined4 *)0x0) break;\n          } while ((int)puVar18[10] < 0);\nLAB_0002aebd:\n          iVar2 = *(int *)(&DAT_0005e002 + unaff_EBP);\njoined_r0x0002b16d:\n          if (iVar2 != 0) goto LAB_0002aecb;\n          uVar9 = FUN_000359c0(uVar9,&local_48);\n          if (local_44 <= uVar9) break;\n        } while( true );\n      }\n      piVar17 = *(int **)(iVar8 + 0x10);\n      if (piVar17 != (int *)0x0) goto LAB_0002aef9;\n      goto LAB_0002af58;\n    }\n  }" if (parenthesized_expression "(((*(byte *)(iVar8 + (uint)*param_1) & 2) != 0) ||\n     ((*(int *)(&DAT_0005e002 + unaff_EBP) != 0 && (*param_1 == 0x2e))))" ( (binary_expression "((*(byte *)(iVar8 + (uint)*param_1) & 2) != 0) ||\n     ((*(int *)(&DAT_0005e002 + unaff_EBP) != 0 && (*param_1 == 0x2e)))" (parenthesized_expression "((*(byte *)(iVar8 + (uint)*param_1) & 2) != 0)" ( (binary_expression "(*(byte *)(iVar8 + (uint)*param_1) & 2) != 0" (parenthesized_expression "(*(byte *)(iVar8 + (uint)*param_1) & 2)" ( (binary_expression "*(byte *)(iVar8 + (uint)*param_1) & 2" (pointer_expression "*(byte *)(iVar8 + (uint)*param_1)" * (cast_expression "(byte *)(iVar8 + (uint)*param_1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + (uint)*param_1)" ( (binary_expression "iVar8 + (uint)*param_1" identifier + (binary_expression "(uint)*param_1" (parenthesized_expression "(uint)" ( identifier )) * identifier)) )))) & number_literal) )) != number_literal) )) || (parenthesized_expression "((*(int *)(&DAT_0005e002 + unaff_EBP) != 0 && (*param_1 == 0x2e)))" ( (parenthesized_expression "(*(int *)(&DAT_0005e002 + unaff_EBP) != 0 && (*param_1 == 0x2e))" ( (binary_expression "*(int *)(&DAT_0005e002 + unaff_EBP) != 0 && (*param_1 == 0x2e)" (binary_expression "*(int *)(&DAT_0005e002 + unaff_EBP) != 0" (pointer_expression "*(int *)(&DAT_0005e002 + unaff_EBP)" * (cast_expression "(int *)(&DAT_0005e002 + unaff_EBP)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_0005e002 + unaff_EBP)" ( (binary_expression "&DAT_0005e002 + unaff_EBP" (pointer_expression "&DAT_0005e002" & identifier) + identifier) )))) != number_literal) && (parenthesized_expression "(*param_1 == 0x2e)" ( (binary_expression "*param_1 == 0x2e" (pointer_expression "*param_1" * identifier) == number_literal) ))) )) ))) )) (compound_statement "{\n    pbVar19 = param_1 + 1;\n    bVar1 = *(byte *)(iVar8 + (uint)param_1[1]);\n    while ((bVar1 & 1) != 0) {\n      pbVar19 = pbVar19 + 1;\n      bVar1 = *(byte *)(iVar8 + (uint)*pbVar19);\n    }\n    pbVar19 = pbVar19 + ((bVar1 & 4) != 0);\n    __n = (int)pbVar19 - (int)param_1;\n    __dest = (void *)xmalloc(__n + 1);\n    *(undefined1 *)((int)__dest + __n) = 0;\n    __ptr = (byte *)memcpy(__dest,param_1,__n);\n    iVar8 = *(int *)(unaff_EBP + 0x553ca);\n    bVar1 = *__ptr;\n    pbVar5 = __ptr;\n    while (bVar1 != 0) {\n      *pbVar5 = *(byte *)(iVar8 + (uint)bVar1);\n      bVar1 = pbVar5[1];\n      pbVar5 = pbVar5 + 1;\n    }\n    iVar8 = FUN_000254b0(*(undefined4 *)("%S.000%z" + unaff_EBP),__ptr);\n    free(__ptr);\n    if (iVar8 != 0) {\n      FUN_00035790(&local_48);\n      bVar1 = *pbVar19;\n      while ((0xd < bVar1 || ((0x2401U >> ((int)(char)bVar1 & 0x1fU) & 1) == 0))) {\n        pbVar19 = pbVar19 + 1;\n        FUN_000358b0(&local_48,(int)(char)bVar1);\n        bVar1 = *pbVar19;\n      }\n      FUN_00035790(param_2);\n      FUN_00035790(local_3c);\n      piVar17 = *(int **)(iVar8 + 0x10);\n      if (piVar17 != (int *)0x0) {\n        do {\n          FUN_000358a0(piVar17 + 7);\n          piVar17 = (int *)*piVar17;\n        } while (piVar17 != (int *)0x0);\n        for (puVar18 = *(undefined4 **)(iVar8 + 0x10); puVar18 != (undefined4 *)0x0;\n            puVar18 = (undefined4 *)*puVar18) {\n          if (-1 < (int)puVar18[10]) goto LAB_0002adc1;\n        }\n      }\n      puVar18 = (undefined4 *)0x0;\nLAB_0002adc1:\n      uVar9 = 0;\n      if ((*(int *)(&DAT_0005e002 + unaff_EBP) != 0) && (uVar9 = local_44, local_44 != 0)) {\n        if (*local_48 == '.') {\n          if (((local_44 < 2) || (local_48[1] == ' ')) || (local_48[1] == '\t')) {\n            uVar9 = 1;\n          }\n          else {\n            puVar14 = (undefined4 *)FUN_00028ba0();\n            puVar14[10] = 0xffffffff;\n            *puVar14 = *(undefined4 *)(iVar8 + 0x10);\n            *(undefined4 **)(iVar8 + 0x10) = puVar14;\n            uVar9 = FUN_00029a00();\n          }\n        }\n        else {\n          uVar9 = 0;\n        }\n      }\n      uVar9 = FUN_00035980(uVar9,&local_48);\n      local_58 = 0;\n      bVar4 = false;\nLAB_0002ae00:\n      if (uVar9 < local_44) {\n        do {\n          uVar16 = uVar9;\n          do {\n            bVar1 = local_48[uVar16];\n            bVar6 = 1;\n            if ((byte)(bVar1 - 0x20) < 0x1c) {\n              bVar6 = ~(byte)(0x8001305 >> (bVar1 - 0x20 & 0x1f)) & 1;\n            }\n            if ((bVar1 == 9) || (bVar6 == 0)) {\n              if ((uVar16 < local_44) && (*(int *)(&DAT_0005e006 + unaff_EBP) == 0)) {\nLAB_0002b0c6:\n                if (bVar1 == 0x3d) {\nLAB_0002b0cf:\n                  FUN_000358a0(local_3c);\n                  iVar11 = FUN_00028c80(local_3c);\n                  if (local_48[iVar11] != '=') {\n                    iVar11 = dcgettext(0,unaff_EBP + 0x3457a,5);\n                    goto LAB_0002b07a;\n                  }\n                  uVar13 = FUN_00035970(local_3c);\n                  iVar11 = FUN_000254b0(*(undefined4 *)(iVar8 + 0x14),uVar13);\n                  uVar13 = local_3c[0];\n                  if (iVar11 == 0) {\n                    uVar10 = *(undefined4 *)(iVar8 + 0x18);\n                    uVar12 = dcgettext(0,unaff_EBP + 0x3459a,5);\n                    FUN_0002bd60(uVar12,uVar13,uVar10);\n                    FUN_000358a0(local_3c);\n                    uVar9 = FUN_00029a00();\n                    bVar4 = true;\n                    goto LAB_0002aebd;\n                  }\n                  if (*(int *)(iVar11 + 0x20) != 0) {\n                    uVar13 = *(undefined4 *)(iVar8 + 0x18);\n                    uVar10 = *(undefined4 *)(iVar11 + 4);\n                    uVar12 = dcgettext(0,unaff_EBP + 0x345ce,5);\n                    FUN_0002bc80(uVar12,uVar10,uVar13);\n                    FUN_000358a0(iVar11 + 0x1c);\n                  }\n                  uVar9 = FUN_00029a00();\n                  bVar4 = true;\n                  iVar2 = *(int *)(&DAT_0005e002 + unaff_EBP);\n                  local_58 = (local_58 + 1) - (uint)(*(int *)(iVar11 + 0x20) == 0);\n                  goto joined_r0x0002b16d;\n                }\n              }\n              break;\n            }\n            if (*(int *)(&DAT_0005e006 + unaff_EBP) != 0) break;\n            if (*(int *)(&DAT_0005e002 + unaff_EBP) != 0) {\n              if ((bVar1 & 0xfd) == 0x3c) {\n                if (uVar16 < local_44) goto LAB_0002b0c6;\n                break;\n              }\n              if (bVar1 == 0x27) break;\n            }\n            if (bVar1 == 0x3d) {\n              if (uVar16 < local_44) goto LAB_0002b0cf;\n              break;\n            }\n            uVar16 = uVar16 + 1;\n          } while (uVar16 != local_44);\n          if (bVar4) {\n            iVar11 = dcgettext(0,unaff_EBP + 0x3460e,5);\nLAB_0002b07a:\n            if (iVar11 == 0) break;\n            if (*(int *)(&DAT_0005e002 + unaff_EBP) != 0) goto LAB_0002af93;\nLAB_0002b090:\n            FUN_000357d0(local_3c);\n            goto LAB_0002afd9;\n          }\n          if (puVar18 == (undefined4 *)0x0) {\n            if (*(int *)(&DAT_0005e002 + unaff_EBP) == 0) {\n              iVar11 = dcgettext(0,unaff_EBP + 0x34312,5);\n              if (iVar11 != 0) goto LAB_0002b090;\n              piVar17 = *(int **)(iVar8 + 0x10);\n              if (piVar17 == (int *)0x0) goto LAB_0002af6d;\n              goto LAB_0002aef9;\n            }\n            puVar18 = (undefined4 *)FUN_00028ba0();\n            iVar11 = -1;\n            puVar14 = *(undefined4 **)(iVar8 + 0x10);\n            if (*(undefined4 **)(iVar8 + 0x10) == (undefined4 *)0x0) {\n              iVar11 = 0;\n              puVar15 = (undefined4 *)(iVar8 + 0x10);\n            }\n            else {\n              do {\n                puVar15 = puVar14;\n                if (iVar11 <= (int)puVar15[10]) {\n                  iVar11 = puVar15[10] + 1;\n                }\n                puVar14 = (undefined4 *)*puVar15;\n              } while ((undefined4 *)*puVar15 != (undefined4 *)0x0);\n              if (iVar11 == -1) {\n                iVar11 = 0;\n              }\n            }\n            *puVar15 = puVar18;\n            puVar18[10] = iVar11;\n          }\n          if (puVar18[0xb] == 2) {\n            FUN_00035930(puVar18 + 7,local_48 + uVar9,local_44 - uVar9);\n            uVar9 = local_44;\n          }\n          else {\n            uVar9 = FUN_00029a00();\n          }\n          local_58 = (local_58 + 1) - (uint)(puVar18[8] == 0);\n          do {\n            puVar18 = (undefined4 *)*puVar18;\n            if (puVar18 == (undefined4 *)0x0) break;\n          } while ((int)puVar18[10] < 0);\nLAB_0002aebd:\n          iVar2 = *(int *)(&DAT_0005e002 + unaff_EBP);\njoined_r0x0002b16d:\n          if (iVar2 != 0) goto LAB_0002aecb;\n          uVar9 = FUN_000359c0(uVar9,&local_48);\n          if (local_44 <= uVar9) break;\n        } while( true );\n      }\n      piVar17 = *(int **)(iVar8 + 0x10);\n      if (piVar17 != (int *)0x0) goto LAB_0002aef9;\n      goto LAB_0002af58;\n    }\n  }" { (expression_statement "pbVar19 = param_1 + 1;" (assignment_expression "pbVar19 = param_1 + 1" identifier = (binary_expression "param_1 + 1" identifier + number_literal)) ;) (expression_statement "bVar1 = *(byte *)(iVar8 + (uint)param_1[1]);" (assignment_expression "bVar1 = *(byte *)(iVar8 + (uint)param_1[1])" identifier = (pointer_expression "*(byte *)(iVar8 + (uint)param_1[1])" * (cast_expression "(byte *)(iVar8 + (uint)param_1[1])" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + (uint)param_1[1])" ( (binary_expression "iVar8 + (uint)param_1[1]" identifier + (cast_expression "(uint)param_1[1]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "param_1[1]" identifier [ number_literal ]))) ))))) ;) (while_statement "while ((bVar1 & 1) != 0) {\n      pbVar19 = pbVar19 + 1;\n      bVar1 = *(byte *)(iVar8 + (uint)*pbVar19);\n    }" while (parenthesized_expression "((bVar1 & 1) != 0)" ( (binary_expression "(bVar1 & 1) != 0" (parenthesized_expression "(bVar1 & 1)" ( (binary_expression "bVar1 & 1" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n      pbVar19 = pbVar19 + 1;\n      bVar1 = *(byte *)(iVar8 + (uint)*pbVar19);\n    }" { (expression_statement "pbVar19 = pbVar19 + 1;" (assignment_expression "pbVar19 = pbVar19 + 1" identifier = (binary_expression "pbVar19 + 1" identifier + number_literal)) ;) (expression_statement "bVar1 = *(byte *)(iVar8 + (uint)*pbVar19);" (assignment_expression "bVar1 = *(byte *)(iVar8 + (uint)*pbVar19)" identifier = (pointer_expression "*(byte *)(iVar8 + (uint)*pbVar19)" * (cast_expression "(byte *)(iVar8 + (uint)*pbVar19)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + (uint)*pbVar19)" ( (binary_expression "iVar8 + (uint)*pbVar19" identifier + (binary_expression "(uint)*pbVar19" (parenthesized_expression "(uint)" ( identifier )) * identifier)) ))))) ;) })) (expression_statement "pbVar19 = pbVar19 + ((bVar1 & 4) != 0);" (assignment_expression "pbVar19 = pbVar19 + ((bVar1 & 4) != 0)" identifier = (binary_expression "pbVar19 + ((bVar1 & 4) != 0)" identifier + (parenthesized_expression "((bVar1 & 4) != 0)" ( (binary_expression "(bVar1 & 4) != 0" (parenthesized_expression "(bVar1 & 4)" ( (binary_expression "bVar1 & 4" identifier & number_literal) )) != number_literal) )))) ;) (expression_statement "__n = (int)pbVar19 - (int)param_1;" (assignment_expression "__n = (int)pbVar19 - (int)param_1" identifier = (binary_expression "(int)pbVar19 - (int)param_1" (cast_expression "(int)pbVar19" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "__dest = (void *)xmalloc(__n + 1);" (assignment_expression "__dest = (void *)xmalloc(__n + 1)" identifier = (cast_expression "(void *)xmalloc(__n + 1)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(__n + 1)" identifier (argument_list "(__n + 1)" ( (binary_expression "__n + 1" identifier + number_literal) ))))) ;) (expression_statement "*(undefined1 *)((int)__dest + __n) = 0;" (assignment_expression "*(undefined1 *)((int)__dest + __n) = 0" (pointer_expression "*(undefined1 *)((int)__dest + __n)" * (cast_expression "(undefined1 *)((int)__dest + __n)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)__dest + __n)" ( (binary_expression "(int)__dest + __n" (cast_expression "(int)__dest" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) = number_literal) ;) (expression_statement "__ptr = (byte *)memcpy(__dest,param_1,__n);" (assignment_expression "__ptr = (byte *)memcpy(__dest,param_1,__n)" identifier = (cast_expression "(byte *)memcpy(__dest,param_1,__n)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "memcpy(__dest,param_1,__n)" identifier (argument_list "(__dest,param_1,__n)" ( identifier , identifier , identifier ))))) ;) (expression_statement "iVar8 = *(int *)(unaff_EBP + 0x553ca);" (assignment_expression "iVar8 = *(int *)(unaff_EBP + 0x553ca)" identifier = (pointer_expression "*(int *)(unaff_EBP + 0x553ca)" * (cast_expression "(int *)(unaff_EBP + 0x553ca)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EBP + 0x553ca)" ( (binary_expression "unaff_EBP + 0x553ca" identifier + number_literal) ))))) ;) (expression_statement "bVar1 = *__ptr;" (assignment_expression "bVar1 = *__ptr" identifier = (pointer_expression "*__ptr" * identifier)) ;) (expression_statement "pbVar5 = __ptr;" (assignment_expression "pbVar5 = __ptr" identifier = identifier) ;) (while_statement "while (bVar1 != 0) {\n      *pbVar5 = *(byte *)(iVar8 + (uint)bVar1);\n      bVar1 = pbVar5[1];\n      pbVar5 = pbVar5 + 1;\n    }" while (parenthesized_expression "(bVar1 != 0)" ( (binary_expression "bVar1 != 0" identifier != number_literal) )) (compound_statement "{\n      *pbVar5 = *(byte *)(iVar8 + (uint)bVar1);\n      bVar1 = pbVar5[1];\n      pbVar5 = pbVar5 + 1;\n    }" { (expression_statement "*pbVar5 = *(byte *)(iVar8 + (uint)bVar1);" (assignment_expression "*pbVar5 = *(byte *)(iVar8 + (uint)bVar1)" (pointer_expression "*pbVar5" * identifier) = (pointer_expression "*(byte *)(iVar8 + (uint)bVar1)" * (cast_expression "(byte *)(iVar8 + (uint)bVar1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + (uint)bVar1)" ( (binary_expression "iVar8 + (uint)bVar1" identifier + (cast_expression "(uint)bVar1" ( (type_descriptor "uint" type_identifier) ) identifier)) ))))) ;) (expression_statement "bVar1 = pbVar5[1];" (assignment_expression "bVar1 = pbVar5[1]" identifier = (subscript_expression "pbVar5[1]" identifier [ number_literal ])) ;) (expression_statement "pbVar5 = pbVar5 + 1;" (assignment_expression "pbVar5 = pbVar5 + 1" identifier = (binary_expression "pbVar5 + 1" identifier + number_literal)) ;) })) (expression_statement "iVar8 = FUN_000254b0(*(undefined4 *)("%S.000%z" + unaff_EBP),__ptr);" (assignment_expression "iVar8 = FUN_000254b0(*(undefined4 *)("%S.000%z" + unaff_EBP),__ptr)" identifier = (call_expression "FUN_000254b0(*(undefined4 *)("%S.000%z" + unaff_EBP),__ptr)" identifier (argument_list "(*(undefined4 *)("%S.000%z" + unaff_EBP),__ptr)" ( (pointer_expression "*(undefined4 *)("%S.000%z" + unaff_EBP)" * (cast_expression "(undefined4 *)("%S.000%z" + unaff_EBP)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "("%S.000%z" + unaff_EBP)" ( (binary_expression ""%S.000%z" + unaff_EBP" (string_literal ""%S.000%z"" " string_content ") + identifier) )))) , identifier )))) ;) (expression_statement "free(__ptr);" (call_expression "free(__ptr)" identifier (argument_list "(__ptr)" ( identifier ))) ;) (if_statement "if (iVar8 != 0) {\n      FUN_00035790(&local_48);\n      bVar1 = *pbVar19;\n      while ((0xd < bVar1 || ((0x2401U >> ((int)(char)bVar1 & 0x1fU) & 1) == 0))) {\n        pbVar19 = pbVar19 + 1;\n        FUN_000358b0(&local_48,(int)(char)bVar1);\n        bVar1 = *pbVar19;\n      }\n      FUN_00035790(param_2);\n      FUN_00035790(local_3c);\n      piVar17 = *(int **)(iVar8 + 0x10);\n      if (piVar17 != (int *)0x0) {\n        do {\n          FUN_000358a0(piVar17 + 7);\n          piVar17 = (int *)*piVar17;\n        } while (piVar17 != (int *)0x0);\n        for (puVar18 = *(undefined4 **)(iVar8 + 0x10); puVar18 != (undefined4 *)0x0;\n            puVar18 = (undefined4 *)*puVar18) {\n          if (-1 < (int)puVar18[10]) goto LAB_0002adc1;\n        }\n      }\n      puVar18 = (undefined4 *)0x0;\nLAB_0002adc1:\n      uVar9 = 0;\n      if ((*(int *)(&DAT_0005e002 + unaff_EBP) != 0) && (uVar9 = local_44, local_44 != 0)) {\n        if (*local_48 == '.') {\n          if (((local_44 < 2) || (local_48[1] == ' ')) || (local_48[1] == '\t')) {\n            uVar9 = 1;\n          }\n          else {\n            puVar14 = (undefined4 *)FUN_00028ba0();\n            puVar14[10] = 0xffffffff;\n            *puVar14 = *(undefined4 *)(iVar8 + 0x10);\n            *(undefined4 **)(iVar8 + 0x10) = puVar14;\n            uVar9 = FUN_00029a00();\n          }\n        }\n        else {\n          uVar9 = 0;\n        }\n      }\n      uVar9 = FUN_00035980(uVar9,&local_48);\n      local_58 = 0;\n      bVar4 = false;\nLAB_0002ae00:\n      if (uVar9 < local_44) {\n        do {\n          uVar16 = uVar9;\n          do {\n            bVar1 = local_48[uVar16];\n            bVar6 = 1;\n            if ((byte)(bVar1 - 0x20) < 0x1c) {\n              bVar6 = ~(byte)(0x8001305 >> (bVar1 - 0x20 & 0x1f)) & 1;\n            }\n            if ((bVar1 == 9) || (bVar6 == 0)) {\n              if ((uVar16 < local_44) && (*(int *)(&DAT_0005e006 + unaff_EBP) == 0)) {\nLAB_0002b0c6:\n                if (bVar1 == 0x3d) {\nLAB_0002b0cf:\n                  FUN_000358a0(local_3c);\n                  iVar11 = FUN_00028c80(local_3c);\n                  if (local_48[iVar11] != '=') {\n                    iVar11 = dcgettext(0,unaff_EBP + 0x3457a,5);\n                    goto LAB_0002b07a;\n                  }\n                  uVar13 = FUN_00035970(local_3c);\n                  iVar11 = FUN_000254b0(*(undefined4 *)(iVar8 + 0x14),uVar13);\n                  uVar13 = local_3c[0];\n                  if (iVar11 == 0) {\n                    uVar10 = *(undefined4 *)(iVar8 + 0x18);\n                    uVar12 = dcgettext(0,unaff_EBP + 0x3459a,5);\n                    FUN_0002bd60(uVar12,uVar13,uVar10);\n                    FUN_000358a0(local_3c);\n                    uVar9 = FUN_00029a00();\n                    bVar4 = true;\n                    goto LAB_0002aebd;\n                  }\n                  if (*(int *)(iVar11 + 0x20) != 0) {\n                    uVar13 = *(undefined4 *)(iVar8 + 0x18);\n                    uVar10 = *(undefined4 *)(iVar11 + 4);\n                    uVar12 = dcgettext(0,unaff_EBP + 0x345ce,5);\n                    FUN_0002bc80(uVar12,uVar10,uVar13);\n                    FUN_000358a0(iVar11 + 0x1c);\n                  }\n                  uVar9 = FUN_00029a00();\n                  bVar4 = true;\n                  iVar2 = *(int *)(&DAT_0005e002 + unaff_EBP);\n                  local_58 = (local_58 + 1) - (uint)(*(int *)(iVar11 + 0x20) == 0);\n                  goto joined_r0x0002b16d;\n                }\n              }\n              break;\n            }\n            if (*(int *)(&DAT_0005e006 + unaff_EBP) != 0) break;\n            if (*(int *)(&DAT_0005e002 + unaff_EBP) != 0) {\n              if ((bVar1 & 0xfd) == 0x3c) {\n                if (uVar16 < local_44) goto LAB_0002b0c6;\n                break;\n              }\n              if (bVar1 == 0x27) break;\n            }\n            if (bVar1 == 0x3d) {\n              if (uVar16 < local_44) goto LAB_0002b0cf;\n              break;\n            }\n            uVar16 = uVar16 + 1;\n          } while (uVar16 != local_44);\n          if (bVar4) {\n            iVar11 = dcgettext(0,unaff_EBP + 0x3460e,5);\nLAB_0002b07a:\n            if (iVar11 == 0) break;\n            if (*(int *)(&DAT_0005e002 + unaff_EBP) != 0) goto LAB_0002af93;\nLAB_0002b090:\n            FUN_000357d0(local_3c);\n            goto LAB_0002afd9;\n          }\n          if (puVar18 == (undefined4 *)0x0) {\n            if (*(int *)(&DAT_0005e002 + unaff_EBP) == 0) {\n              iVar11 = dcgettext(0,unaff_EBP + 0x34312,5);\n              if (iVar11 != 0) goto LAB_0002b090;\n              piVar17 = *(int **)(iVar8 + 0x10);\n              if (piVar17 == (int *)0x0) goto LAB_0002af6d;\n              goto LAB_0002aef9;\n            }\n            puVar18 = (undefined4 *)FUN_00028ba0();\n            iVar11 = -1;\n            puVar14 = *(undefined4 **)(iVar8 + 0x10);\n            if (*(undefined4 **)(iVar8 + 0x10) == (undefined4 *)0x0) {\n              iVar11 = 0;\n              puVar15 = (undefined4 *)(iVar8 + 0x10);\n            }\n            else {\n              do {\n                puVar15 = puVar14;\n                if (iVar11 <= (int)puVar15[10]) {\n                  iVar11 = puVar15[10] + 1;\n                }\n                puVar14 = (undefined4 *)*puVar15;\n              } while ((undefined4 *)*puVar15 != (undefined4 *)0x0);\n              if (iVar11 == -1) {\n                iVar11 = 0;\n              }\n            }\n            *puVar15 = puVar18;\n            puVar18[10] = iVar11;\n          }\n          if (puVar18[0xb] == 2) {\n            FUN_00035930(puVar18 + 7,local_48 + uVar9,local_44 - uVar9);\n            uVar9 = local_44;\n          }\n          else {\n            uVar9 = FUN_00029a00();\n          }\n          local_58 = (local_58 + 1) - (uint)(puVar18[8] == 0);\n          do {\n            puVar18 = (undefined4 *)*puVar18;\n            if (puVar18 == (undefined4 *)0x0) break;\n          } while ((int)puVar18[10] < 0);\nLAB_0002aebd:\n          iVar2 = *(int *)(&DAT_0005e002 + unaff_EBP);\njoined_r0x0002b16d:\n          if (iVar2 != 0) goto LAB_0002aecb;\n          uVar9 = FUN_000359c0(uVar9,&local_48);\n          if (local_44 <= uVar9) break;\n        } while( true );\n      }\n      piVar17 = *(int **)(iVar8 + 0x10);\n      if (piVar17 != (int *)0x0) goto LAB_0002aef9;\n      goto LAB_0002af58;\n    }" if (parenthesized_expression "(iVar8 != 0)" ( (binary_expression "iVar8 != 0" identifier != number_literal) )) (compound_statement "{\n      FUN_00035790(&local_48);\n      bVar1 = *pbVar19;\n      while ((0xd < bVar1 || ((0x2401U >> ((int)(char)bVar1 & 0x1fU) & 1) == 0))) {\n        pbVar19 = pbVar19 + 1;\n        FUN_000358b0(&local_48,(int)(char)bVar1);\n        bVar1 = *pbVar19;\n      }\n      FUN_00035790(param_2);\n      FUN_00035790(local_3c);\n      piVar17 = *(int **)(iVar8 + 0x10);\n      if (piVar17 != (int *)0x0) {\n        do {\n          FUN_000358a0(piVar17 + 7);\n          piVar17 = (int *)*piVar17;\n        } while (piVar17 != (int *)0x0);\n        for (puVar18 = *(undefined4 **)(iVar8 + 0x10); puVar18 != (undefined4 *)0x0;\n            puVar18 = (undefined4 *)*puVar18) {\n          if (-1 < (int)puVar18[10]) goto LAB_0002adc1;\n        }\n      }\n      puVar18 = (undefined4 *)0x0;\nLAB_0002adc1:\n      uVar9 = 0;\n      if ((*(int *)(&DAT_0005e002 + unaff_EBP) != 0) && (uVar9 = local_44, local_44 != 0)) {\n        if (*local_48 == '.') {\n          if (((local_44 < 2) || (local_48[1] == ' ')) || (local_48[1] == '\t')) {\n            uVar9 = 1;\n          }\n          else {\n            puVar14 = (undefined4 *)FUN_00028ba0();\n            puVar14[10] = 0xffffffff;\n            *puVar14 = *(undefined4 *)(iVar8 + 0x10);\n            *(undefined4 **)(iVar8 + 0x10) = puVar14;\n            uVar9 = FUN_00029a00();\n          }\n        }\n        else {\n          uVar9 = 0;\n        }\n      }\n      uVar9 = FUN_00035980(uVar9,&local_48);\n      local_58 = 0;\n      bVar4 = false;\nLAB_0002ae00:\n      if (uVar9 < local_44) {\n        do {\n          uVar16 = uVar9;\n          do {\n            bVar1 = local_48[uVar16];\n            bVar6 = 1;\n            if ((byte)(bVar1 - 0x20) < 0x1c) {\n              bVar6 = ~(byte)(0x8001305 >> (bVar1 - 0x20 & 0x1f)) & 1;\n            }\n            if ((bVar1 == 9) || (bVar6 == 0)) {\n              if ((uVar16 < local_44) && (*(int *)(&DAT_0005e006 + unaff_EBP) == 0)) {\nLAB_0002b0c6:\n                if (bVar1 == 0x3d) {\nLAB_0002b0cf:\n                  FUN_000358a0(local_3c);\n                  iVar11 = FUN_00028c80(local_3c);\n                  if (local_48[iVar11] != '=') {\n                    iVar11 = dcgettext(0,unaff_EBP + 0x3457a,5);\n                    goto LAB_0002b07a;\n                  }\n                  uVar13 = FUN_00035970(local_3c);\n                  iVar11 = FUN_000254b0(*(undefined4 *)(iVar8 + 0x14),uVar13);\n                  uVar13 = local_3c[0];\n                  if (iVar11 == 0) {\n                    uVar10 = *(undefined4 *)(iVar8 + 0x18);\n                    uVar12 = dcgettext(0,unaff_EBP + 0x3459a,5);\n                    FUN_0002bd60(uVar12,uVar13,uVar10);\n                    FUN_000358a0(local_3c);\n                    uVar9 = FUN_00029a00();\n                    bVar4 = true;\n                    goto LAB_0002aebd;\n                  }\n                  if (*(int *)(iVar11 + 0x20) != 0) {\n                    uVar13 = *(undefined4 *)(iVar8 + 0x18);\n                    uVar10 = *(undefined4 *)(iVar11 + 4);\n                    uVar12 = dcgettext(0,unaff_EBP + 0x345ce,5);\n                    FUN_0002bc80(uVar12,uVar10,uVar13);\n                    FUN_000358a0(iVar11 + 0x1c);\n                  }\n                  uVar9 = FUN_00029a00();\n                  bVar4 = true;\n                  iVar2 = *(int *)(&DAT_0005e002 + unaff_EBP);\n                  local_58 = (local_58 + 1) - (uint)(*(int *)(iVar11 + 0x20) == 0);\n                  goto joined_r0x0002b16d;\n                }\n              }\n              break;\n            }\n            if (*(int *)(&DAT_0005e006 + unaff_EBP) != 0) break;\n            if (*(int *)(&DAT_0005e002 + unaff_EBP) != 0) {\n              if ((bVar1 & 0xfd) == 0x3c) {\n                if (uVar16 < local_44) goto LAB_0002b0c6;\n                break;\n              }\n              if (bVar1 == 0x27) break;\n            }\n            if (bVar1 == 0x3d) {\n              if (uVar16 < local_44) goto LAB_0002b0cf;\n              break;\n            }\n            uVar16 = uVar16 + 1;\n          } while (uVar16 != local_44);\n          if (bVar4) {\n            iVar11 = dcgettext(0,unaff_EBP + 0x3460e,5);\nLAB_0002b07a:\n            if (iVar11 == 0) break;\n            if (*(int *)(&DAT_0005e002 + unaff_EBP) != 0) goto LAB_0002af93;\nLAB_0002b090:\n            FUN_000357d0(local_3c);\n            goto LAB_0002afd9;\n          }\n          if (puVar18 == (undefined4 *)0x0) {\n            if (*(int *)(&DAT_0005e002 + unaff_EBP) == 0) {\n              iVar11 = dcgettext(0,unaff_EBP + 0x34312,5);\n              if (iVar11 != 0) goto LAB_0002b090;\n              piVar17 = *(int **)(iVar8 + 0x10);\n              if (piVar17 == (int *)0x0) goto LAB_0002af6d;\n              goto LAB_0002aef9;\n            }\n            puVar18 = (undefined4 *)FUN_00028ba0();\n            iVar11 = -1;\n            puVar14 = *(undefined4 **)(iVar8 + 0x10);\n            if (*(undefined4 **)(iVar8 + 0x10) == (undefined4 *)0x0) {\n              iVar11 = 0;\n              puVar15 = (undefined4 *)(iVar8 + 0x10);\n            }\n            else {\n              do {\n                puVar15 = puVar14;\n                if (iVar11 <= (int)puVar15[10]) {\n                  iVar11 = puVar15[10] + 1;\n                }\n                puVar14 = (undefined4 *)*puVar15;\n              } while ((undefined4 *)*puVar15 != (undefined4 *)0x0);\n              if (iVar11 == -1) {\n                iVar11 = 0;\n              }\n            }\n            *puVar15 = puVar18;\n            puVar18[10] = iVar11;\n          }\n          if (puVar18[0xb] == 2) {\n            FUN_00035930(puVar18 + 7,local_48 + uVar9,local_44 - uVar9);\n            uVar9 = local_44;\n          }\n          else {\n            uVar9 = FUN_00029a00();\n          }\n          local_58 = (local_58 + 1) - (uint)(puVar18[8] == 0);\n          do {\n            puVar18 = (undefined4 *)*puVar18;\n            if (puVar18 == (undefined4 *)0x0) break;\n          } while ((int)puVar18[10] < 0);\nLAB_0002aebd:\n          iVar2 = *(int *)(&DAT_0005e002 + unaff_EBP);\njoined_r0x0002b16d:\n          if (iVar2 != 0) goto LAB_0002aecb;\n          uVar9 = FUN_000359c0(uVar9,&local_48);\n          if (local_44 <= uVar9) break;\n        } while( true );\n      }\n      piVar17 = *(int **)(iVar8 + 0x10);\n      if (piVar17 != (int *)0x0) goto LAB_0002aef9;\n      goto LAB_0002af58;\n    }" { (expression_statement "FUN_00035790(&local_48);" (call_expression "FUN_00035790(&local_48)" identifier (argument_list "(&local_48)" ( (pointer_expression "&local_48" & identifier) ))) ;) (expression_statement "bVar1 = *pbVar19;" (assignment_expression "bVar1 = *pbVar19" identifier = (pointer_expression "*pbVar19" * identifier)) ;) (while_statement "while ((0xd < bVar1 || ((0x2401U >> ((int)(char)bVar1 & 0x1fU) & 1) == 0))) {\n        pbVar19 = pbVar19 + 1;\n        FUN_000358b0(&local_48,(int)(char)bVar1);\n        bVar1 = *pbVar19;\n      }" while (parenthesized_expression "((0xd < bVar1 || ((0x2401U >> ((int)(char)bVar1 & 0x1fU) & 1) == 0)))" ( (parenthesized_expression "(0xd < bVar1 || ((0x2401U >> ((int)(char)bVar1 & 0x1fU) & 1) == 0))" ( (binary_expression "0xd < bVar1 || ((0x2401U >> ((int)(char)bVar1 & 0x1fU) & 1) == 0)" (binary_expression "0xd < bVar1" number_literal < identifier) || (parenthesized_expression "((0x2401U >> ((int)(char)bVar1 & 0x1fU) & 1) == 0)" ( (binary_expression "(0x2401U >> ((int)(char)bVar1 & 0x1fU) & 1) == 0" (parenthesized_expression "(0x2401U >> ((int)(char)bVar1 & 0x1fU) & 1)" ( (binary_expression "0x2401U >> ((int)(char)bVar1 & 0x1fU) & 1" (binary_expression "0x2401U >> ((int)(char)bVar1 & 0x1fU)" number_literal >> (parenthesized_expression "((int)(char)bVar1 & 0x1fU)" ( (binary_expression "(int)(char)bVar1 & 0x1fU" (cast_expression "(int)(char)bVar1" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)bVar1" ( (type_descriptor "char" primitive_type) ) identifier)) & number_literal) ))) & number_literal) )) == number_literal) ))) )) )) (compound_statement "{\n        pbVar19 = pbVar19 + 1;\n        FUN_000358b0(&local_48,(int)(char)bVar1);\n        bVar1 = *pbVar19;\n      }" { (expression_statement "pbVar19 = pbVar19 + 1;" (assignment_expression "pbVar19 = pbVar19 + 1" identifier = (binary_expression "pbVar19 + 1" identifier + number_literal)) ;) (expression_statement "FUN_000358b0(&local_48,(int)(char)bVar1);" (call_expression "FUN_000358b0(&local_48,(int)(char)bVar1)" identifier (argument_list "(&local_48,(int)(char)bVar1)" ( (pointer_expression "&local_48" & identifier) , (cast_expression "(int)(char)bVar1" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)bVar1" ( (type_descriptor "char" primitive_type) ) identifier)) ))) ;) (expression_statement "bVar1 = *pbVar19;" (assignment_expression "bVar1 = *pbVar19" identifier = (pointer_expression "*pbVar19" * identifier)) ;) })) (expression_statement "FUN_00035790(param_2);" (call_expression "FUN_00035790(param_2)" identifier (argument_list "(param_2)" ( identifier ))) ;) (expression_statement "FUN_00035790(local_3c);" (call_expression "FUN_00035790(local_3c)" identifier (argument_list "(local_3c)" ( identifier ))) ;) (expression_statement "piVar17 = *(int **)(iVar8 + 0x10);" (assignment_expression "piVar17 = *(int **)(iVar8 + 0x10)" identifier = (pointer_expression "*(int **)(iVar8 + 0x10)" * (cast_expression "(int **)(iVar8 + 0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar8 + 0x10)" ( (binary_expression "iVar8 + 0x10" identifier + number_literal) ))))) ;) (if_statement "if (piVar17 != (int *)0x0) {\n        do {\n          FUN_000358a0(piVar17 + 7);\n          piVar17 = (int *)*piVar17;\n        } while (piVar17 != (int *)0x0);\n        for (puVar18 = *(undefined4 **)(iVar8 + 0x10); puVar18 != (undefined4 *)0x0;\n            puVar18 = (undefined4 *)*puVar18) {\n          if (-1 < (int)puVar18[10]) goto LAB_0002adc1;\n        }\n      }" if (parenthesized_expression "(piVar17 != (int *)0x0)" ( (binary_expression "piVar17 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        do {\n          FUN_000358a0(piVar17 + 7);\n          piVar17 = (int *)*piVar17;\n        } while (piVar17 != (int *)0x0);\n        for (puVar18 = *(undefined4 **)(iVar8 + 0x10); puVar18 != (undefined4 *)0x0;\n            puVar18 = (undefined4 *)*puVar18) {\n          if (-1 < (int)puVar18[10]) goto LAB_0002adc1;\n        }\n      }" { (do_statement "do {\n          FUN_000358a0(piVar17 + 7);\n          piVar17 = (int *)*piVar17;\n        } while (piVar17 != (int *)0x0);" do (compound_statement "{\n          FUN_000358a0(piVar17 + 7);\n          piVar17 = (int *)*piVar17;\n        }" { (expression_statement "FUN_000358a0(piVar17 + 7);" (call_expression "FUN_000358a0(piVar17 + 7)" identifier (argument_list "(piVar17 + 7)" ( (binary_expression "piVar17 + 7" identifier + number_literal) ))) ;) (expression_statement "piVar17 = (int *)*piVar17;" (assignment_expression "piVar17 = (int *)*piVar17" identifier = (cast_expression "(int *)*piVar17" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar17" * identifier))) ;) }) while (parenthesized_expression "(piVar17 != (int *)0x0)" ( (binary_expression "piVar17 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (for_statement "for (puVar18 = *(undefined4 **)(iVar8 + 0x10); puVar18 != (undefined4 *)0x0;\n            puVar18 = (undefined4 *)*puVar18) {\n          if (-1 < (int)puVar18[10]) goto LAB_0002adc1;\n        }" for ( (assignment_expression "puVar18 = *(undefined4 **)(iVar8 + 0x10)" identifier = (pointer_expression "*(undefined4 **)(iVar8 + 0x10)" * (cast_expression "(undefined4 **)(iVar8 + 0x10)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar8 + 0x10)" ( (binary_expression "iVar8 + 0x10" identifier + number_literal) ))))) ; (binary_expression "puVar18 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ; (assignment_expression "puVar18 = (undefined4 *)*puVar18" identifier = (cast_expression "(undefined4 *)*puVar18" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar18" * identifier))) ) (compound_statement "{\n          if (-1 < (int)puVar18[10]) goto LAB_0002adc1;\n        }" { (if_statement "if (-1 < (int)puVar18[10]) goto LAB_0002adc1;" if (parenthesized_expression "(-1 < (int)puVar18[10])" ( (binary_expression "-1 < (int)puVar18[10]" number_literal < (cast_expression "(int)puVar18[10]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "puVar18[10]" identifier [ number_literal ]))) )) (goto_statement "goto LAB_0002adc1;" goto statement_identifier ;)) })) })) (expression_statement "puVar18 = (undefined4 *)0x0;" (assignment_expression "puVar18 = (undefined4 *)0x0" identifier = (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (labeled_statement "LAB_0002adc1:\n      uVar9 = 0;" statement_identifier : (expression_statement "uVar9 = 0;" (assignment_expression "uVar9 = 0" identifier = number_literal) ;)) (if_statement "if ((*(int *)(&DAT_0005e002 + unaff_EBP) != 0) && (uVar9 = local_44, local_44 != 0)) {\n        if (*local_48 == '.') {\n          if (((local_44 < 2) || (local_48[1] == ' ')) || (local_48[1] == '\t')) {\n            uVar9 = 1;\n          }\n          else {\n            puVar14 = (undefined4 *)FUN_00028ba0();\n            puVar14[10] = 0xffffffff;\n            *puVar14 = *(undefined4 *)(iVar8 + 0x10);\n            *(undefined4 **)(iVar8 + 0x10) = puVar14;\n            uVar9 = FUN_00029a00();\n          }\n        }\n        else {\n          uVar9 = 0;\n        }\n      }" if (parenthesized_expression "((*(int *)(&DAT_0005e002 + unaff_EBP) != 0) && (uVar9 = local_44, local_44 != 0))" ( (binary_expression "(*(int *)(&DAT_0005e002 + unaff_EBP) != 0) && (uVar9 = local_44, local_44 != 0)" (parenthesized_expression "(*(int *)(&DAT_0005e002 + unaff_EBP) != 0)" ( (binary_expression "*(int *)(&DAT_0005e002 + unaff_EBP) != 0" (pointer_expression "*(int *)(&DAT_0005e002 + unaff_EBP)" * (cast_expression "(int *)(&DAT_0005e002 + unaff_EBP)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_0005e002 + unaff_EBP)" ( (binary_expression "&DAT_0005e002 + unaff_EBP" (pointer_expression "&DAT_0005e002" & identifier) + identifier) )))) != number_literal) )) && (parenthesized_expression "(uVar9 = local_44, local_44 != 0)" ( (comma_expression "uVar9 = local_44, local_44 != 0" (assignment_expression "uVar9 = local_44" identifier = identifier) , (binary_expression "local_44 != 0" identifier != number_literal)) ))) )) (compound_statement "{\n        if (*local_48 == '.') {\n          if (((local_44 < 2) || (local_48[1] == ' ')) || (local_48[1] == '\t')) {\n            uVar9 = 1;\n          }\n          else {\n            puVar14 = (undefined4 *)FUN_00028ba0();\n            puVar14[10] = 0xffffffff;\n            *puVar14 = *(undefined4 *)(iVar8 + 0x10);\n            *(undefined4 **)(iVar8 + 0x10) = puVar14;\n            uVar9 = FUN_00029a00();\n          }\n        }\n        else {\n          uVar9 = 0;\n        }\n      }" { (if_statement "if (*local_48 == '.') {\n          if (((local_44 < 2) || (local_48[1] == ' ')) || (local_48[1] == '\t')) {\n            uVar9 = 1;\n          }\n          else {\n            puVar14 = (undefined4 *)FUN_00028ba0();\n            puVar14[10] = 0xffffffff;\n            *puVar14 = *(undefined4 *)(iVar8 + 0x10);\n            *(undefined4 **)(iVar8 + 0x10) = puVar14;\n            uVar9 = FUN_00029a00();\n          }\n        }\n        else {\n          uVar9 = 0;\n        }" if (parenthesized_expression "(*local_48 == '.')" ( (binary_expression "*local_48 == '.'" (pointer_expression "*local_48" * identifier) == (char_literal "'.'" ' character ')) )) (compound_statement "{\n          if (((local_44 < 2) || (local_48[1] == ' ')) || (local_48[1] == '\t')) {\n            uVar9 = 1;\n          }\n          else {\n            puVar14 = (undefined4 *)FUN_00028ba0();\n            puVar14[10] = 0xffffffff;\n            *puVar14 = *(undefined4 *)(iVar8 + 0x10);\n            *(undefined4 **)(iVar8 + 0x10) = puVar14;\n            uVar9 = FUN_00029a00();\n          }\n        }" { (if_statement "if (((local_44 < 2) || (local_48[1] == ' ')) || (local_48[1] == '\t')) {\n            uVar9 = 1;\n          }\n          else {\n            puVar14 = (undefined4 *)FUN_00028ba0();\n            puVar14[10] = 0xffffffff;\n            *puVar14 = *(undefined4 *)(iVar8 + 0x10);\n            *(undefined4 **)(iVar8 + 0x10) = puVar14;\n            uVar9 = FUN_00029a00();\n          }" if (parenthesized_expression "(((local_44 < 2) || (local_48[1] == ' ')) || (local_48[1] == '\t'))" ( (binary_expression "((local_44 < 2) || (local_48[1] == ' ')) || (local_48[1] == '\t')" (parenthesized_expression "((local_44 < 2) || (local_48[1] == ' '))" ( (binary_expression "(local_44 < 2) || (local_48[1] == ' ')" (parenthesized_expression "(local_44 < 2)" ( (binary_expression "local_44 < 2" identifier < number_literal) )) || (parenthesized_expression "(local_48[1] == ' ')" ( (binary_expression "local_48[1] == ' '" (subscript_expression "local_48[1]" identifier [ number_literal ]) == (char_literal "' '" ' character ')) ))) )) || (parenthesized_expression "(local_48[1] == '\t')" ( (binary_expression "local_48[1] == '\t'" (subscript_expression "local_48[1]" identifier [ number_literal ]) == (char_literal "'\t'" ' escape_sequence ')) ))) )) (compound_statement "{\n            uVar9 = 1;\n          }" { (expression_statement "uVar9 = 1;" (assignment_expression "uVar9 = 1" identifier = number_literal) ;) }) (else_clause "else {\n            puVar14 = (undefined4 *)FUN_00028ba0();\n            puVar14[10] = 0xffffffff;\n            *puVar14 = *(undefined4 *)(iVar8 + 0x10);\n            *(undefined4 **)(iVar8 + 0x10) = puVar14;\n            uVar9 = FUN_00029a00();\n          }" else (compound_statement "{\n            puVar14 = (undefined4 *)FUN_00028ba0();\n            puVar14[10] = 0xffffffff;\n            *puVar14 = *(undefined4 *)(iVar8 + 0x10);\n            *(undefined4 **)(iVar8 + 0x10) = puVar14;\n            uVar9 = FUN_00029a00();\n          }" { (expression_statement "puVar14 = (undefined4 *)FUN_00028ba0();" (assignment_expression "puVar14 = (undefined4 *)FUN_00028ba0()" identifier = (cast_expression "(undefined4 *)FUN_00028ba0()" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00028ba0()" identifier (argument_list "()" ( ))))) ;) (expression_statement "puVar14[10] = 0xffffffff;" (assignment_expression "puVar14[10] = 0xffffffff" (subscript_expression "puVar14[10]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*puVar14 = *(undefined4 *)(iVar8 + 0x10);" (assignment_expression "*puVar14 = *(undefined4 *)(iVar8 + 0x10)" (pointer_expression "*puVar14" * identifier) = (pointer_expression "*(undefined4 *)(iVar8 + 0x10)" * (cast_expression "(undefined4 *)(iVar8 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x10)" ( (binary_expression "iVar8 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 **)(iVar8 + 0x10) = puVar14;" (assignment_expression "*(undefined4 **)(iVar8 + 0x10) = puVar14" (pointer_expression "*(undefined4 **)(iVar8 + 0x10)" * (cast_expression "(undefined4 **)(iVar8 + 0x10)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar8 + 0x10)" ( (binary_expression "iVar8 + 0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "uVar9 = FUN_00029a00();" (assignment_expression "uVar9 = FUN_00029a00()" identifier = (call_expression "FUN_00029a00()" identifier (argument_list "()" ( )))) ;) }))) }) (else_clause "else {\n          uVar9 = 0;\n        }" else (compound_statement "{\n          uVar9 = 0;\n        }" { (expression_statement "uVar9 = 0;" (assignment_expression "uVar9 = 0" identifier = number_literal) ;) }))) })) (expression_statement "uVar9 = FUN_00035980(uVar9,&local_48);" (assignment_expression "uVar9 = FUN_00035980(uVar9,&local_48)" identifier = (call_expression "FUN_00035980(uVar9,&local_48)" identifier (argument_list "(uVar9,&local_48)" ( identifier , (pointer_expression "&local_48" & identifier) )))) ;) (expression_statement "local_58 = 0;" (assignment_expression "local_58 = 0" identifier = number_literal) ;) (expression_statement "bVar4 = false;" (assignment_expression "bVar4 = false" identifier = false) ;) (labeled_statement "LAB_0002ae00:\n      if (uVar9 < local_44) {\n        do {\n          uVar16 = uVar9;\n          do {\n            bVar1 = local_48[uVar16];\n            bVar6 = 1;\n            if ((byte)(bVar1 - 0x20) < 0x1c) {\n              bVar6 = ~(byte)(0x8001305 >> (bVar1 - 0x20 & 0x1f)) & 1;\n            }\n            if ((bVar1 == 9) || (bVar6 == 0)) {\n              if ((uVar16 < local_44) && (*(int *)(&DAT_0005e006 + unaff_EBP) == 0)) {\nLAB_0002b0c6:\n                if (bVar1 == 0x3d) {\nLAB_0002b0cf:\n                  FUN_000358a0(local_3c);\n                  iVar11 = FUN_00028c80(local_3c);\n                  if (local_48[iVar11] != '=') {\n                    iVar11 = dcgettext(0,unaff_EBP + 0x3457a,5);\n                    goto LAB_0002b07a;\n                  }\n                  uVar13 = FUN_00035970(local_3c);\n                  iVar11 = FUN_000254b0(*(undefined4 *)(iVar8 + 0x14),uVar13);\n                  uVar13 = local_3c[0];\n                  if (iVar11 == 0) {\n                    uVar10 = *(undefined4 *)(iVar8 + 0x18);\n                    uVar12 = dcgettext(0,unaff_EBP + 0x3459a,5);\n                    FUN_0002bd60(uVar12,uVar13,uVar10);\n                    FUN_000358a0(local_3c);\n                    uVar9 = FUN_00029a00();\n                    bVar4 = true;\n                    goto LAB_0002aebd;\n                  }\n                  if (*(int *)(iVar11 + 0x20) != 0) {\n                    uVar13 = *(undefined4 *)(iVar8 + 0x18);\n                    uVar10 = *(undefined4 *)(iVar11 + 4);\n                    uVar12 = dcgettext(0,unaff_EBP + 0x345ce,5);\n                    FUN_0002bc80(uVar12,uVar10,uVar13);\n                    FUN_000358a0(iVar11 + 0x1c);\n                  }\n                  uVar9 = FUN_00029a00();\n                  bVar4 = true;\n                  iVar2 = *(int *)(&DAT_0005e002 + unaff_EBP);\n                  local_58 = (local_58 + 1) - (uint)(*(int *)(iVar11 + 0x20) == 0);\n                  goto joined_r0x0002b16d;\n                }\n              }\n              break;\n            }\n            if (*(int *)(&DAT_0005e006 + unaff_EBP) != 0) break;\n            if (*(int *)(&DAT_0005e002 + unaff_EBP) != 0) {\n              if ((bVar1 & 0xfd) == 0x3c) {\n                if (uVar16 < local_44) goto LAB_0002b0c6;\n                break;\n              }\n              if (bVar1 == 0x27) break;\n            }\n            if (bVar1 == 0x3d) {\n              if (uVar16 < local_44) goto LAB_0002b0cf;\n              break;\n            }\n            uVar16 = uVar16 + 1;\n          } while (uVar16 != local_44);\n          if (bVar4) {\n            iVar11 = dcgettext(0,unaff_EBP + 0x3460e,5);\nLAB_0002b07a:\n            if (iVar11 == 0) break;\n            if (*(int *)(&DAT_0005e002 + unaff_EBP) != 0) goto LAB_0002af93;\nLAB_0002b090:\n            FUN_000357d0(local_3c);\n            goto LAB_0002afd9;\n          }\n          if (puVar18 == (undefined4 *)0x0) {\n            if (*(int *)(&DAT_0005e002 + unaff_EBP) == 0) {\n              iVar11 = dcgettext(0,unaff_EBP + 0x34312,5);\n              if (iVar11 != 0) goto LAB_0002b090;\n              piVar17 = *(int **)(iVar8 + 0x10);\n              if (piVar17 == (int *)0x0) goto LAB_0002af6d;\n              goto LAB_0002aef9;\n            }\n            puVar18 = (undefined4 *)FUN_00028ba0();\n            iVar11 = -1;\n            puVar14 = *(undefined4 **)(iVar8 + 0x10);\n            if (*(undefined4 **)(iVar8 + 0x10) == (undefined4 *)0x0) {\n              iVar11 = 0;\n              puVar15 = (undefined4 *)(iVar8 + 0x10);\n            }\n            else {\n              do {\n                puVar15 = puVar14;\n                if (iVar11 <= (int)puVar15[10]) {\n                  iVar11 = puVar15[10] + 1;\n                }\n                puVar14 = (undefined4 *)*puVar15;\n              } while ((undefined4 *)*puVar15 != (undefined4 *)0x0);\n              if (iVar11 == -1) {\n                iVar11 = 0;\n              }\n            }\n            *puVar15 = puVar18;\n            puVar18[10] = iVar11;\n          }\n          if (puVar18[0xb] == 2) {\n            FUN_00035930(puVar18 + 7,local_48 + uVar9,local_44 - uVar9);\n            uVar9 = local_44;\n          }\n          else {\n            uVar9 = FUN_00029a00();\n          }\n          local_58 = (local_58 + 1) - (uint)(puVar18[8] == 0);\n          do {\n            puVar18 = (undefined4 *)*puVar18;\n            if (puVar18 == (undefined4 *)0x0) break;\n          } while ((int)puVar18[10] < 0);\nLAB_0002aebd:\n          iVar2 = *(int *)(&DAT_0005e002 + unaff_EBP);\njoined_r0x0002b16d:\n          if (iVar2 != 0) goto LAB_0002aecb;\n          uVar9 = FUN_000359c0(uVar9,&local_48);\n          if (local_44 <= uVar9) break;\n        } while( true );\n      }" statement_identifier : (if_statement "if (uVar9 < local_44) {\n        do {\n          uVar16 = uVar9;\n          do {\n            bVar1 = local_48[uVar16];\n            bVar6 = 1;\n            if ((byte)(bVar1 - 0x20) < 0x1c) {\n              bVar6 = ~(byte)(0x8001305 >> (bVar1 - 0x20 & 0x1f)) & 1;\n            }\n            if ((bVar1 == 9) || (bVar6 == 0)) {\n              if ((uVar16 < local_44) && (*(int *)(&DAT_0005e006 + unaff_EBP) == 0)) {\nLAB_0002b0c6:\n                if (bVar1 == 0x3d) {\nLAB_0002b0cf:\n                  FUN_000358a0(local_3c);\n                  iVar11 = FUN_00028c80(local_3c);\n                  if (local_48[iVar11] != '=') {\n                    iVar11 = dcgettext(0,unaff_EBP + 0x3457a,5);\n                    goto LAB_0002b07a;\n                  }\n                  uVar13 = FUN_00035970(local_3c);\n                  iVar11 = FUN_000254b0(*(undefined4 *)(iVar8 + 0x14),uVar13);\n                  uVar13 = local_3c[0];\n                  if (iVar11 == 0) {\n                    uVar10 = *(undefined4 *)(iVar8 + 0x18);\n                    uVar12 = dcgettext(0,unaff_EBP + 0x3459a,5);\n                    FUN_0002bd60(uVar12,uVar13,uVar10);\n                    FUN_000358a0(local_3c);\n                    uVar9 = FUN_00029a00();\n                    bVar4 = true;\n                    goto LAB_0002aebd;\n                  }\n                  if (*(int *)(iVar11 + 0x20) != 0) {\n                    uVar13 = *(undefined4 *)(iVar8 + 0x18);\n                    uVar10 = *(undefined4 *)(iVar11 + 4);\n                    uVar12 = dcgettext(0,unaff_EBP + 0x345ce,5);\n                    FUN_0002bc80(uVar12,uVar10,uVar13);\n                    FUN_000358a0(iVar11 + 0x1c);\n                  }\n                  uVar9 = FUN_00029a00();\n                  bVar4 = true;\n                  iVar2 = *(int *)(&DAT_0005e002 + unaff_EBP);\n                  local_58 = (local_58 + 1) - (uint)(*(int *)(iVar11 + 0x20) == 0);\n                  goto joined_r0x0002b16d;\n                }\n              }\n              break;\n            }\n            if (*(int *)(&DAT_0005e006 + unaff_EBP) != 0) break;\n            if (*(int *)(&DAT_0005e002 + unaff_EBP) != 0) {\n              if ((bVar1 & 0xfd) == 0x3c) {\n                if (uVar16 < local_44) goto LAB_0002b0c6;\n                break;\n              }\n              if (bVar1 == 0x27) break;\n            }\n            if (bVar1 == 0x3d) {\n              if (uVar16 < local_44) goto LAB_0002b0cf;\n              break;\n            }\n            uVar16 = uVar16 + 1;\n          } while (uVar16 != local_44);\n          if (bVar4) {\n            iVar11 = dcgettext(0,unaff_EBP + 0x3460e,5);\nLAB_0002b07a:\n            if (iVar11 == 0) break;\n            if (*(int *)(&DAT_0005e002 + unaff_EBP) != 0) goto LAB_0002af93;\nLAB_0002b090:\n            FUN_000357d0(local_3c);\n            goto LAB_0002afd9;\n          }\n          if (puVar18 == (undefined4 *)0x0) {\n            if (*(int *)(&DAT_0005e002 + unaff_EBP) == 0) {\n              iVar11 = dcgettext(0,unaff_EBP + 0x34312,5);\n              if (iVar11 != 0) goto LAB_0002b090;\n              piVar17 = *(int **)(iVar8 + 0x10);\n              if (piVar17 == (int *)0x0) goto LAB_0002af6d;\n              goto LAB_0002aef9;\n            }\n            puVar18 = (undefined4 *)FUN_00028ba0();\n            iVar11 = -1;\n            puVar14 = *(undefined4 **)(iVar8 + 0x10);\n            if (*(undefined4 **)(iVar8 + 0x10) == (undefined4 *)0x0) {\n              iVar11 = 0;\n              puVar15 = (undefined4 *)(iVar8 + 0x10);\n            }\n            else {\n              do {\n                puVar15 = puVar14;\n                if (iVar11 <= (int)puVar15[10]) {\n                  iVar11 = puVar15[10] + 1;\n                }\n                puVar14 = (undefined4 *)*puVar15;\n              } while ((undefined4 *)*puVar15 != (undefined4 *)0x0);\n              if (iVar11 == -1) {\n                iVar11 = 0;\n              }\n            }\n            *puVar15 = puVar18;\n            puVar18[10] = iVar11;\n          }\n          if (puVar18[0xb] == 2) {\n            FUN_00035930(puVar18 + 7,local_48 + uVar9,local_44 - uVar9);\n            uVar9 = local_44;\n          }\n          else {\n            uVar9 = FUN_00029a00();\n          }\n          local_58 = (local_58 + 1) - (uint)(puVar18[8] == 0);\n          do {\n            puVar18 = (undefined4 *)*puVar18;\n            if (puVar18 == (undefined4 *)0x0) break;\n          } while ((int)puVar18[10] < 0);\nLAB_0002aebd:\n          iVar2 = *(int *)(&DAT_0005e002 + unaff_EBP);\njoined_r0x0002b16d:\n          if (iVar2 != 0) goto LAB_0002aecb;\n          uVar9 = FUN_000359c0(uVar9,&local_48);\n          if (local_44 <= uVar9) break;\n        } while( true );\n      }" if (parenthesized_expression "(uVar9 < local_44)" ( (binary_expression "uVar9 < local_44" identifier < identifier) )) (compound_statement "{\n        do {\n          uVar16 = uVar9;\n          do {\n            bVar1 = local_48[uVar16];\n            bVar6 = 1;\n            if ((byte)(bVar1 - 0x20) < 0x1c) {\n              bVar6 = ~(byte)(0x8001305 >> (bVar1 - 0x20 & 0x1f)) & 1;\n            }\n            if ((bVar1 == 9) || (bVar6 == 0)) {\n              if ((uVar16 < local_44) && (*(int *)(&DAT_0005e006 + unaff_EBP) == 0)) {\nLAB_0002b0c6:\n                if (bVar1 == 0x3d) {\nLAB_0002b0cf:\n                  FUN_000358a0(local_3c);\n                  iVar11 = FUN_00028c80(local_3c);\n                  if (local_48[iVar11] != '=') {\n                    iVar11 = dcgettext(0,unaff_EBP + 0x3457a,5);\n                    goto LAB_0002b07a;\n                  }\n                  uVar13 = FUN_00035970(local_3c);\n                  iVar11 = FUN_000254b0(*(undefined4 *)(iVar8 + 0x14),uVar13);\n                  uVar13 = local_3c[0];\n                  if (iVar11 == 0) {\n                    uVar10 = *(undefined4 *)(iVar8 + 0x18);\n                    uVar12 = dcgettext(0,unaff_EBP + 0x3459a,5);\n                    FUN_0002bd60(uVar12,uVar13,uVar10);\n                    FUN_000358a0(local_3c);\n                    uVar9 = FUN_00029a00();\n                    bVar4 = true;\n                    goto LAB_0002aebd;\n                  }\n                  if (*(int *)(iVar11 + 0x20) != 0) {\n                    uVar13 = *(undefined4 *)(iVar8 + 0x18);\n                    uVar10 = *(undefined4 *)(iVar11 + 4);\n                    uVar12 = dcgettext(0,unaff_EBP + 0x345ce,5);\n                    FUN_0002bc80(uVar12,uVar10,uVar13);\n                    FUN_000358a0(iVar11 + 0x1c);\n                  }\n                  uVar9 = FUN_00029a00();\n                  bVar4 = true;\n                  iVar2 = *(int *)(&DAT_0005e002 + unaff_EBP);\n                  local_58 = (local_58 + 1) - (uint)(*(int *)(iVar11 + 0x20) == 0);\n                  goto joined_r0x0002b16d;\n                }\n              }\n              break;\n            }\n            if (*(int *)(&DAT_0005e006 + unaff_EBP) != 0) break;\n            if (*(int *)(&DAT_0005e002 + unaff_EBP) != 0) {\n              if ((bVar1 & 0xfd) == 0x3c) {\n                if (uVar16 < local_44) goto LAB_0002b0c6;\n                break;\n              }\n              if (bVar1 == 0x27) break;\n            }\n            if (bVar1 == 0x3d) {\n              if (uVar16 < local_44) goto LAB_0002b0cf;\n              break;\n            }\n            uVar16 = uVar16 + 1;\n          } while (uVar16 != local_44);\n          if (bVar4) {\n            iVar11 = dcgettext(0,unaff_EBP + 0x3460e,5);\nLAB_0002b07a:\n            if (iVar11 == 0) break;\n            if (*(int *)(&DAT_0005e002 + unaff_EBP) != 0) goto LAB_0002af93;\nLAB_0002b090:\n            FUN_000357d0(local_3c);\n            goto LAB_0002afd9;\n          }\n          if (puVar18 == (undefined4 *)0x0) {\n            if (*(int *)(&DAT_0005e002 + unaff_EBP) == 0) {\n              iVar11 = dcgettext(0,unaff_EBP + 0x34312,5);\n              if (iVar11 != 0) goto LAB_0002b090;\n              piVar17 = *(int **)(iVar8 + 0x10);\n              if (piVar17 == (int *)0x0) goto LAB_0002af6d;\n              goto LAB_0002aef9;\n            }\n            puVar18 = (undefined4 *)FUN_00028ba0();\n            iVar11 = -1;\n            puVar14 = *(undefined4 **)(iVar8 + 0x10);\n            if (*(undefined4 **)(iVar8 + 0x10) == (undefined4 *)0x0) {\n              iVar11 = 0;\n              puVar15 = (undefined4 *)(iVar8 + 0x10);\n            }\n            else {\n              do {\n                puVar15 = puVar14;\n                if (iVar11 <= (int)puVar15[10]) {\n                  iVar11 = puVar15[10] + 1;\n                }\n                puVar14 = (undefined4 *)*puVar15;\n              } while ((undefined4 *)*puVar15 != (undefined4 *)0x0);\n              if (iVar11 == -1) {\n                iVar11 = 0;\n              }\n            }\n            *puVar15 = puVar18;\n            puVar18[10] = iVar11;\n          }\n          if (puVar18[0xb] == 2) {\n            FUN_00035930(puVar18 + 7,local_48 + uVar9,local_44 - uVar9);\n            uVar9 = local_44;\n          }\n          else {\n            uVar9 = FUN_00029a00();\n          }\n          local_58 = (local_58 + 1) - (uint)(puVar18[8] == 0);\n          do {\n            puVar18 = (undefined4 *)*puVar18;\n            if (puVar18 == (undefined4 *)0x0) break;\n          } while ((int)puVar18[10] < 0);\nLAB_0002aebd:\n          iVar2 = *(int *)(&DAT_0005e002 + unaff_EBP);\njoined_r0x0002b16d:\n          if (iVar2 != 0) goto LAB_0002aecb;\n          uVar9 = FUN_000359c0(uVar9,&local_48);\n          if (local_44 <= uVar9) break;\n        } while( true );\n      }" { (do_statement "do {\n          uVar16 = uVar9;\n          do {\n            bVar1 = local_48[uVar16];\n            bVar6 = 1;\n            if ((byte)(bVar1 - 0x20) < 0x1c) {\n              bVar6 = ~(byte)(0x8001305 >> (bVar1 - 0x20 & 0x1f)) & 1;\n            }\n            if ((bVar1 == 9) || (bVar6 == 0)) {\n              if ((uVar16 < local_44) && (*(int *)(&DAT_0005e006 + unaff_EBP) == 0)) {\nLAB_0002b0c6:\n                if (bVar1 == 0x3d) {\nLAB_0002b0cf:\n                  FUN_000358a0(local_3c);\n                  iVar11 = FUN_00028c80(local_3c);\n                  if (local_48[iVar11] != '=') {\n                    iVar11 = dcgettext(0,unaff_EBP + 0x3457a,5);\n                    goto LAB_0002b07a;\n                  }\n                  uVar13 = FUN_00035970(local_3c);\n                  iVar11 = FUN_000254b0(*(undefined4 *)(iVar8 + 0x14),uVar13);\n                  uVar13 = local_3c[0];\n                  if (iVar11 == 0) {\n                    uVar10 = *(undefined4 *)(iVar8 + 0x18);\n                    uVar12 = dcgettext(0,unaff_EBP + 0x3459a,5);\n                    FUN_0002bd60(uVar12,uVar13,uVar10);\n                    FUN_000358a0(local_3c);\n                    uVar9 = FUN_00029a00();\n                    bVar4 = true;\n                    goto LAB_0002aebd;\n                  }\n                  if (*(int *)(iVar11 + 0x20) != 0) {\n                    uVar13 = *(undefined4 *)(iVar8 + 0x18);\n                    uVar10 = *(undefined4 *)(iVar11 + 4);\n                    uVar12 = dcgettext(0,unaff_EBP + 0x345ce,5);\n                    FUN_0002bc80(uVar12,uVar10,uVar13);\n                    FUN_000358a0(iVar11 + 0x1c);\n                  }\n                  uVar9 = FUN_00029a00();\n                  bVar4 = true;\n                  iVar2 = *(int *)(&DAT_0005e002 + unaff_EBP);\n                  local_58 = (local_58 + 1) - (uint)(*(int *)(iVar11 + 0x20) == 0);\n                  goto joined_r0x0002b16d;\n                }\n              }\n              break;\n            }\n            if (*(int *)(&DAT_0005e006 + unaff_EBP) != 0) break;\n            if (*(int *)(&DAT_0005e002 + unaff_EBP) != 0) {\n              if ((bVar1 & 0xfd) == 0x3c) {\n                if (uVar16 < local_44) goto LAB_0002b0c6;\n                break;\n              }\n              if (bVar1 == 0x27) break;\n            }\n            if (bVar1 == 0x3d) {\n              if (uVar16 < local_44) goto LAB_0002b0cf;\n              break;\n            }\n            uVar16 = uVar16 + 1;\n          } while (uVar16 != local_44);\n          if (bVar4) {\n            iVar11 = dcgettext(0,unaff_EBP + 0x3460e,5);\nLAB_0002b07a:\n            if (iVar11 == 0) break;\n            if (*(int *)(&DAT_0005e002 + unaff_EBP) != 0) goto LAB_0002af93;\nLAB_0002b090:\n            FUN_000357d0(local_3c);\n            goto LAB_0002afd9;\n          }\n          if (puVar18 == (undefined4 *)0x0) {\n            if (*(int *)(&DAT_0005e002 + unaff_EBP) == 0) {\n              iVar11 = dcgettext(0,unaff_EBP + 0x34312,5);\n              if (iVar11 != 0) goto LAB_0002b090;\n              piVar17 = *(int **)(iVar8 + 0x10);\n              if (piVar17 == (int *)0x0) goto LAB_0002af6d;\n              goto LAB_0002aef9;\n            }\n            puVar18 = (undefined4 *)FUN_00028ba0();\n            iVar11 = -1;\n            puVar14 = *(undefined4 **)(iVar8 + 0x10);\n            if (*(undefined4 **)(iVar8 + 0x10) == (undefined4 *)0x0) {\n              iVar11 = 0;\n              puVar15 = (undefined4 *)(iVar8 + 0x10);\n            }\n            else {\n              do {\n                puVar15 = puVar14;\n                if (iVar11 <= (int)puVar15[10]) {\n                  iVar11 = puVar15[10] + 1;\n                }\n                puVar14 = (undefined4 *)*puVar15;\n              } while ((undefined4 *)*puVar15 != (undefined4 *)0x0);\n              if (iVar11 == -1) {\n                iVar11 = 0;\n              }\n            }\n            *puVar15 = puVar18;\n            puVar18[10] = iVar11;\n          }\n          if (puVar18[0xb] == 2) {\n            FUN_00035930(puVar18 + 7,local_48 + uVar9,local_44 - uVar9);\n            uVar9 = local_44;\n          }\n          else {\n            uVar9 = FUN_00029a00();\n          }\n          local_58 = (local_58 + 1) - (uint)(puVar18[8] == 0);\n          do {\n            puVar18 = (undefined4 *)*puVar18;\n            if (puVar18 == (undefined4 *)0x0) break;\n          } while ((int)puVar18[10] < 0);\nLAB_0002aebd:\n          iVar2 = *(int *)(&DAT_0005e002 + unaff_EBP);\njoined_r0x0002b16d:\n          if (iVar2 != 0) goto LAB_0002aecb;\n          uVar9 = FUN_000359c0(uVar9,&local_48);\n          if (local_44 <= uVar9) break;\n        } while( true );" do (compound_statement "{\n          uVar16 = uVar9;\n          do {\n            bVar1 = local_48[uVar16];\n            bVar6 = 1;\n            if ((byte)(bVar1 - 0x20) < 0x1c) {\n              bVar6 = ~(byte)(0x8001305 >> (bVar1 - 0x20 & 0x1f)) & 1;\n            }\n            if ((bVar1 == 9) || (bVar6 == 0)) {\n              if ((uVar16 < local_44) && (*(int *)(&DAT_0005e006 + unaff_EBP) == 0)) {\nLAB_0002b0c6:\n                if (bVar1 == 0x3d) {\nLAB_0002b0cf:\n                  FUN_000358a0(local_3c);\n                  iVar11 = FUN_00028c80(local_3c);\n                  if (local_48[iVar11] != '=') {\n                    iVar11 = dcgettext(0,unaff_EBP + 0x3457a,5);\n                    goto LAB_0002b07a;\n                  }\n                  uVar13 = FUN_00035970(local_3c);\n                  iVar11 = FUN_000254b0(*(undefined4 *)(iVar8 + 0x14),uVar13);\n                  uVar13 = local_3c[0];\n                  if (iVar11 == 0) {\n                    uVar10 = *(undefined4 *)(iVar8 + 0x18);\n                    uVar12 = dcgettext(0,unaff_EBP + 0x3459a,5);\n                    FUN_0002bd60(uVar12,uVar13,uVar10);\n                    FUN_000358a0(local_3c);\n                    uVar9 = FUN_00029a00();\n                    bVar4 = true;\n                    goto LAB_0002aebd;\n                  }\n                  if (*(int *)(iVar11 + 0x20) != 0) {\n                    uVar13 = *(undefined4 *)(iVar8 + 0x18);\n                    uVar10 = *(undefined4 *)(iVar11 + 4);\n                    uVar12 = dcgettext(0,unaff_EBP + 0x345ce,5);\n                    FUN_0002bc80(uVar12,uVar10,uVar13);\n                    FUN_000358a0(iVar11 + 0x1c);\n                  }\n                  uVar9 = FUN_00029a00();\n                  bVar4 = true;\n                  iVar2 = *(int *)(&DAT_0005e002 + unaff_EBP);\n                  local_58 = (local_58 + 1) - (uint)(*(int *)(iVar11 + 0x20) == 0);\n                  goto joined_r0x0002b16d;\n                }\n              }\n              break;\n            }\n            if (*(int *)(&DAT_0005e006 + unaff_EBP) != 0) break;\n            if (*(int *)(&DAT_0005e002 + unaff_EBP) != 0) {\n              if ((bVar1 & 0xfd) == 0x3c) {\n                if (uVar16 < local_44) goto LAB_0002b0c6;\n                break;\n              }\n              if (bVar1 == 0x27) break;\n            }\n            if (bVar1 == 0x3d) {\n              if (uVar16 < local_44) goto LAB_0002b0cf;\n              break;\n            }\n            uVar16 = uVar16 + 1;\n          } while (uVar16 != local_44);\n          if (bVar4) {\n            iVar11 = dcgettext(0,unaff_EBP + 0x3460e,5);\nLAB_0002b07a:\n            if (iVar11 == 0) break;\n            if (*(int *)(&DAT_0005e002 + unaff_EBP) != 0) goto LAB_0002af93;\nLAB_0002b090:\n            FUN_000357d0(local_3c);\n            goto LAB_0002afd9;\n          }\n          if (puVar18 == (undefined4 *)0x0) {\n            if (*(int *)(&DAT_0005e002 + unaff_EBP) == 0) {\n              iVar11 = dcgettext(0,unaff_EBP + 0x34312,5);\n              if (iVar11 != 0) goto LAB_0002b090;\n              piVar17 = *(int **)(iVar8 + 0x10);\n              if (piVar17 == (int *)0x0) goto LAB_0002af6d;\n              goto LAB_0002aef9;\n            }\n            puVar18 = (undefined4 *)FUN_00028ba0();\n            iVar11 = -1;\n            puVar14 = *(undefined4 **)(iVar8 + 0x10);\n            if (*(undefined4 **)(iVar8 + 0x10) == (undefined4 *)0x0) {\n              iVar11 = 0;\n              puVar15 = (undefined4 *)(iVar8 + 0x10);\n            }\n            else {\n              do {\n                puVar15 = puVar14;\n                if (iVar11 <= (int)puVar15[10]) {\n                  iVar11 = puVar15[10] + 1;\n                }\n                puVar14 = (undefined4 *)*puVar15;\n              } while ((undefined4 *)*puVar15 != (undefined4 *)0x0);\n              if (iVar11 == -1) {\n                iVar11 = 0;\n              }\n            }\n            *puVar15 = puVar18;\n            puVar18[10] = iVar11;\n          }\n          if (puVar18[0xb] == 2) {\n            FUN_00035930(puVar18 + 7,local_48 + uVar9,local_44 - uVar9);\n            uVar9 = local_44;\n          }\n          else {\n            uVar9 = FUN_00029a00();\n          }\n          local_58 = (local_58 + 1) - (uint)(puVar18[8] == 0);\n          do {\n            puVar18 = (undefined4 *)*puVar18;\n            if (puVar18 == (undefined4 *)0x0) break;\n          } while ((int)puVar18[10] < 0);\nLAB_0002aebd:\n          iVar2 = *(int *)(&DAT_0005e002 + unaff_EBP);\njoined_r0x0002b16d:\n          if (iVar2 != 0) goto LAB_0002aecb;\n          uVar9 = FUN_000359c0(uVar9,&local_48);\n          if (local_44 <= uVar9) break;\n        }" { (expression_statement "uVar16 = uVar9;" (assignment_expression "uVar16 = uVar9" identifier = identifier) ;) (do_statement "do {\n            bVar1 = local_48[uVar16];\n            bVar6 = 1;\n            if ((byte)(bVar1 - 0x20) < 0x1c) {\n              bVar6 = ~(byte)(0x8001305 >> (bVar1 - 0x20 & 0x1f)) & 1;\n            }\n            if ((bVar1 == 9) || (bVar6 == 0)) {\n              if ((uVar16 < local_44) && (*(int *)(&DAT_0005e006 + unaff_EBP) == 0)) {\nLAB_0002b0c6:\n                if (bVar1 == 0x3d) {\nLAB_0002b0cf:\n                  FUN_000358a0(local_3c);\n                  iVar11 = FUN_00028c80(local_3c);\n                  if (local_48[iVar11] != '=') {\n                    iVar11 = dcgettext(0,unaff_EBP + 0x3457a,5);\n                    goto LAB_0002b07a;\n                  }\n                  uVar13 = FUN_00035970(local_3c);\n                  iVar11 = FUN_000254b0(*(undefined4 *)(iVar8 + 0x14),uVar13);\n                  uVar13 = local_3c[0];\n                  if (iVar11 == 0) {\n                    uVar10 = *(undefined4 *)(iVar8 + 0x18);\n                    uVar12 = dcgettext(0,unaff_EBP + 0x3459a,5);\n                    FUN_0002bd60(uVar12,uVar13,uVar10);\n                    FUN_000358a0(local_3c);\n                    uVar9 = FUN_00029a00();\n                    bVar4 = true;\n                    goto LAB_0002aebd;\n                  }\n                  if (*(int *)(iVar11 + 0x20) != 0) {\n                    uVar13 = *(undefined4 *)(iVar8 + 0x18);\n                    uVar10 = *(undefined4 *)(iVar11 + 4);\n                    uVar12 = dcgettext(0,unaff_EBP + 0x345ce,5);\n                    FUN_0002bc80(uVar12,uVar10,uVar13);\n                    FUN_000358a0(iVar11 + 0x1c);\n                  }\n                  uVar9 = FUN_00029a00();\n                  bVar4 = true;\n                  iVar2 = *(int *)(&DAT_0005e002 + unaff_EBP);\n                  local_58 = (local_58 + 1) - (uint)(*(int *)(iVar11 + 0x20) == 0);\n                  goto joined_r0x0002b16d;\n                }\n              }\n              break;\n            }\n            if (*(int *)(&DAT_0005e006 + unaff_EBP) != 0) break;\n            if (*(int *)(&DAT_0005e002 + unaff_EBP) != 0) {\n              if ((bVar1 & 0xfd) == 0x3c) {\n                if (uVar16 < local_44) goto LAB_0002b0c6;\n                break;\n              }\n              if (bVar1 == 0x27) break;\n            }\n            if (bVar1 == 0x3d) {\n              if (uVar16 < local_44) goto LAB_0002b0cf;\n              break;\n            }\n            uVar16 = uVar16 + 1;\n          } while (uVar16 != local_44);" do (compound_statement "{\n            bVar1 = local_48[uVar16];\n            bVar6 = 1;\n            if ((byte)(bVar1 - 0x20) < 0x1c) {\n              bVar6 = ~(byte)(0x8001305 >> (bVar1 - 0x20 & 0x1f)) & 1;\n            }\n            if ((bVar1 == 9) || (bVar6 == 0)) {\n              if ((uVar16 < local_44) && (*(int *)(&DAT_0005e006 + unaff_EBP) == 0)) {\nLAB_0002b0c6:\n                if (bVar1 == 0x3d) {\nLAB_0002b0cf:\n                  FUN_000358a0(local_3c);\n                  iVar11 = FUN_00028c80(local_3c);\n                  if (local_48[iVar11] != '=') {\n                    iVar11 = dcgettext(0,unaff_EBP + 0x3457a,5);\n                    goto LAB_0002b07a;\n                  }\n                  uVar13 = FUN_00035970(local_3c);\n                  iVar11 = FUN_000254b0(*(undefined4 *)(iVar8 + 0x14),uVar13);\n                  uVar13 = local_3c[0];\n                  if (iVar11 == 0) {\n                    uVar10 = *(undefined4 *)(iVar8 + 0x18);\n                    uVar12 = dcgettext(0,unaff_EBP + 0x3459a,5);\n                    FUN_0002bd60(uVar12,uVar13,uVar10);\n                    FUN_000358a0(local_3c);\n                    uVar9 = FUN_00029a00();\n                    bVar4 = true;\n                    goto LAB_0002aebd;\n                  }\n                  if (*(int *)(iVar11 + 0x20) != 0) {\n                    uVar13 = *(undefined4 *)(iVar8 + 0x18);\n                    uVar10 = *(undefined4 *)(iVar11 + 4);\n                    uVar12 = dcgettext(0,unaff_EBP + 0x345ce,5);\n                    FUN_0002bc80(uVar12,uVar10,uVar13);\n                    FUN_000358a0(iVar11 + 0x1c);\n                  }\n                  uVar9 = FUN_00029a00();\n                  bVar4 = true;\n                  iVar2 = *(int *)(&DAT_0005e002 + unaff_EBP);\n                  local_58 = (local_58 + 1) - (uint)(*(int *)(iVar11 + 0x20) == 0);\n                  goto joined_r0x0002b16d;\n                }\n              }\n              break;\n            }\n            if (*(int *)(&DAT_0005e006 + unaff_EBP) != 0) break;\n            if (*(int *)(&DAT_0005e002 + unaff_EBP) != 0) {\n              if ((bVar1 & 0xfd) == 0x3c) {\n                if (uVar16 < local_44) goto LAB_0002b0c6;\n                break;\n              }\n              if (bVar1 == 0x27) break;\n            }\n            if (bVar1 == 0x3d) {\n              if (uVar16 < local_44) goto LAB_0002b0cf;\n              break;\n            }\n            uVar16 = uVar16 + 1;\n          }" { (expression_statement "bVar1 = local_48[uVar16];" (assignment_expression "bVar1 = local_48[uVar16]" identifier = (subscript_expression "local_48[uVar16]" identifier [ identifier ])) ;) (expression_statement "bVar6 = 1;" (assignment_expression "bVar6 = 1" identifier = number_literal) ;) (if_statement "if ((byte)(bVar1 - 0x20) < 0x1c) {\n              bVar6 = ~(byte)(0x8001305 >> (bVar1 - 0x20 & 0x1f)) & 1;\n            }" if (parenthesized_expression "((byte)(bVar1 - 0x20) < 0x1c)" ( (binary_expression "(byte)(bVar1 - 0x20) < 0x1c" (call_expression "(byte)(bVar1 - 0x20)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(bVar1 - 0x20)" ( (binary_expression "bVar1 - 0x20" identifier - number_literal) ))) < number_literal) )) (compound_statement "{\n              bVar6 = ~(byte)(0x8001305 >> (bVar1 - 0x20 & 0x1f)) & 1;\n            }" { (expression_statement "bVar6 = ~(byte)(0x8001305 >> (bVar1 - 0x20 & 0x1f)) & 1;" (assignment_expression "bVar6 = ~(byte)(0x8001305 >> (bVar1 - 0x20 & 0x1f)) & 1" identifier = (binary_expression "~(byte)(0x8001305 >> (bVar1 - 0x20 & 0x1f)) & 1" (unary_expression "~(byte)(0x8001305 >> (bVar1 - 0x20 & 0x1f))" ~ (call_expression "(byte)(0x8001305 >> (bVar1 - 0x20 & 0x1f))" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(0x8001305 >> (bVar1 - 0x20 & 0x1f))" ( (binary_expression "0x8001305 >> (bVar1 - 0x20 & 0x1f)" number_literal >> (parenthesized_expression "(bVar1 - 0x20 & 0x1f)" ( (binary_expression "bVar1 - 0x20 & 0x1f" (binary_expression "bVar1 - 0x20" identifier - number_literal) & number_literal) ))) )))) & number_literal)) ;) })) (if_statement "if ((bVar1 == 9) || (bVar6 == 0)) {\n              if ((uVar16 < local_44) && (*(int *)(&DAT_0005e006 + unaff_EBP) == 0)) {\nLAB_0002b0c6:\n                if (bVar1 == 0x3d) {\nLAB_0002b0cf:\n                  FUN_000358a0(local_3c);\n                  iVar11 = FUN_00028c80(local_3c);\n                  if (local_48[iVar11] != '=') {\n                    iVar11 = dcgettext(0,unaff_EBP + 0x3457a,5);\n                    goto LAB_0002b07a;\n                  }\n                  uVar13 = FUN_00035970(local_3c);\n                  iVar11 = FUN_000254b0(*(undefined4 *)(iVar8 + 0x14),uVar13);\n                  uVar13 = local_3c[0];\n                  if (iVar11 == 0) {\n                    uVar10 = *(undefined4 *)(iVar8 + 0x18);\n                    uVar12 = dcgettext(0,unaff_EBP + 0x3459a,5);\n                    FUN_0002bd60(uVar12,uVar13,uVar10);\n                    FUN_000358a0(local_3c);\n                    uVar9 = FUN_00029a00();\n                    bVar4 = true;\n                    goto LAB_0002aebd;\n                  }\n                  if (*(int *)(iVar11 + 0x20) != 0) {\n                    uVar13 = *(undefined4 *)(iVar8 + 0x18);\n                    uVar10 = *(undefined4 *)(iVar11 + 4);\n                    uVar12 = dcgettext(0,unaff_EBP + 0x345ce,5);\n                    FUN_0002bc80(uVar12,uVar10,uVar13);\n                    FUN_000358a0(iVar11 + 0x1c);\n                  }\n                  uVar9 = FUN_00029a00();\n                  bVar4 = true;\n                  iVar2 = *(int *)(&DAT_0005e002 + unaff_EBP);\n                  local_58 = (local_58 + 1) - (uint)(*(int *)(iVar11 + 0x20) == 0);\n                  goto joined_r0x0002b16d;\n                }\n              }\n              break;\n            }" if (parenthesized_expression "((bVar1 == 9) || (bVar6 == 0))" ( (binary_expression "(bVar1 == 9) || (bVar6 == 0)" (parenthesized_expression "(bVar1 == 9)" ( (binary_expression "bVar1 == 9" identifier == number_literal) )) || (parenthesized_expression "(bVar6 == 0)" ( (binary_expression "bVar6 == 0" identifier == number_literal) ))) )) (compound_statement "{\n              if ((uVar16 < local_44) && (*(int *)(&DAT_0005e006 + unaff_EBP) == 0)) {\nLAB_0002b0c6:\n                if (bVar1 == 0x3d) {\nLAB_0002b0cf:\n                  FUN_000358a0(local_3c);\n                  iVar11 = FUN_00028c80(local_3c);\n                  if (local_48[iVar11] != '=') {\n                    iVar11 = dcgettext(0,unaff_EBP + 0x3457a,5);\n                    goto LAB_0002b07a;\n                  }\n                  uVar13 = FUN_00035970(local_3c);\n                  iVar11 = FUN_000254b0(*(undefined4 *)(iVar8 + 0x14),uVar13);\n                  uVar13 = local_3c[0];\n                  if (iVar11 == 0) {\n                    uVar10 = *(undefined4 *)(iVar8 + 0x18);\n                    uVar12 = dcgettext(0,unaff_EBP + 0x3459a,5);\n                    FUN_0002bd60(uVar12,uVar13,uVar10);\n                    FUN_000358a0(local_3c);\n                    uVar9 = FUN_00029a00();\n                    bVar4 = true;\n                    goto LAB_0002aebd;\n                  }\n                  if (*(int *)(iVar11 + 0x20) != 0) {\n                    uVar13 = *(undefined4 *)(iVar8 + 0x18);\n                    uVar10 = *(undefined4 *)(iVar11 + 4);\n                    uVar12 = dcgettext(0,unaff_EBP + 0x345ce,5);\n                    FUN_0002bc80(uVar12,uVar10,uVar13);\n                    FUN_000358a0(iVar11 + 0x1c);\n                  }\n                  uVar9 = FUN_00029a00();\n                  bVar4 = true;\n                  iVar2 = *(int *)(&DAT_0005e002 + unaff_EBP);\n                  local_58 = (local_58 + 1) - (uint)(*(int *)(iVar11 + 0x20) == 0);\n                  goto joined_r0x0002b16d;\n                }\n              }\n              break;\n            }" { (if_statement "if ((uVar16 < local_44) && (*(int *)(&DAT_0005e006 + unaff_EBP) == 0)) {\nLAB_0002b0c6:\n                if (bVar1 == 0x3d) {\nLAB_0002b0cf:\n                  FUN_000358a0(local_3c);\n                  iVar11 = FUN_00028c80(local_3c);\n                  if (local_48[iVar11] != '=') {\n                    iVar11 = dcgettext(0,unaff_EBP + 0x3457a,5);\n                    goto LAB_0002b07a;\n                  }\n                  uVar13 = FUN_00035970(local_3c);\n                  iVar11 = FUN_000254b0(*(undefined4 *)(iVar8 + 0x14),uVar13);\n                  uVar13 = local_3c[0];\n                  if (iVar11 == 0) {\n                    uVar10 = *(undefined4 *)(iVar8 + 0x18);\n                    uVar12 = dcgettext(0,unaff_EBP + 0x3459a,5);\n                    FUN_0002bd60(uVar12,uVar13,uVar10);\n                    FUN_000358a0(local_3c);\n                    uVar9 = FUN_00029a00();\n                    bVar4 = true;\n                    goto LAB_0002aebd;\n                  }\n                  if (*(int *)(iVar11 + 0x20) != 0) {\n                    uVar13 = *(undefined4 *)(iVar8 + 0x18);\n                    uVar10 = *(undefined4 *)(iVar11 + 4);\n                    uVar12 = dcgettext(0,unaff_EBP + 0x345ce,5);\n                    FUN_0002bc80(uVar12,uVar10,uVar13);\n                    FUN_000358a0(iVar11 + 0x1c);\n                  }\n                  uVar9 = FUN_00029a00();\n                  bVar4 = true;\n                  iVar2 = *(int *)(&DAT_0005e002 + unaff_EBP);\n                  local_58 = (local_58 + 1) - (uint)(*(int *)(iVar11 + 0x20) == 0);\n                  goto joined_r0x0002b16d;\n                }\n              }" if (parenthesized_expression "((uVar16 < local_44) && (*(int *)(&DAT_0005e006 + unaff_EBP) == 0))" ( (binary_expression "(uVar16 < local_44) && (*(int *)(&DAT_0005e006 + unaff_EBP) == 0)" (parenthesized_expression "(uVar16 < local_44)" ( (binary_expression "uVar16 < local_44" identifier < identifier) )) && (parenthesized_expression "(*(int *)(&DAT_0005e006 + unaff_EBP) == 0)" ( (binary_expression "*(int *)(&DAT_0005e006 + unaff_EBP) == 0" (pointer_expression "*(int *)(&DAT_0005e006 + unaff_EBP)" * (cast_expression "(int *)(&DAT_0005e006 + unaff_EBP)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_0005e006 + unaff_EBP)" ( (binary_expression "&DAT_0005e006 + unaff_EBP" (pointer_expression "&DAT_0005e006" & identifier) + identifier) )))) == number_literal) ))) )) (compound_statement "{\nLAB_0002b0c6:\n                if (bVar1 == 0x3d) {\nLAB_0002b0cf:\n                  FUN_000358a0(local_3c);\n                  iVar11 = FUN_00028c80(local_3c);\n                  if (local_48[iVar11] != '=') {\n                    iVar11 = dcgettext(0,unaff_EBP + 0x3457a,5);\n                    goto LAB_0002b07a;\n                  }\n                  uVar13 = FUN_00035970(local_3c);\n                  iVar11 = FUN_000254b0(*(undefined4 *)(iVar8 + 0x14),uVar13);\n                  uVar13 = local_3c[0];\n                  if (iVar11 == 0) {\n                    uVar10 = *(undefined4 *)(iVar8 + 0x18);\n                    uVar12 = dcgettext(0,unaff_EBP + 0x3459a,5);\n                    FUN_0002bd60(uVar12,uVar13,uVar10);\n                    FUN_000358a0(local_3c);\n                    uVar9 = FUN_00029a00();\n                    bVar4 = true;\n                    goto LAB_0002aebd;\n                  }\n                  if (*(int *)(iVar11 + 0x20) != 0) {\n                    uVar13 = *(undefined4 *)(iVar8 + 0x18);\n                    uVar10 = *(undefined4 *)(iVar11 + 4);\n                    uVar12 = dcgettext(0,unaff_EBP + 0x345ce,5);\n                    FUN_0002bc80(uVar12,uVar10,uVar13);\n                    FUN_000358a0(iVar11 + 0x1c);\n                  }\n                  uVar9 = FUN_00029a00();\n                  bVar4 = true;\n                  iVar2 = *(int *)(&DAT_0005e002 + unaff_EBP);\n                  local_58 = (local_58 + 1) - (uint)(*(int *)(iVar11 + 0x20) == 0);\n                  goto joined_r0x0002b16d;\n                }\n              }" { (labeled_statement "LAB_0002b0c6:\n                if (bVar1 == 0x3d) {\nLAB_0002b0cf:\n                  FUN_000358a0(local_3c);\n                  iVar11 = FUN_00028c80(local_3c);\n                  if (local_48[iVar11] != '=') {\n                    iVar11 = dcgettext(0,unaff_EBP + 0x3457a,5);\n                    goto LAB_0002b07a;\n                  }\n                  uVar13 = FUN_00035970(local_3c);\n                  iVar11 = FUN_000254b0(*(undefined4 *)(iVar8 + 0x14),uVar13);\n                  uVar13 = local_3c[0];\n                  if (iVar11 == 0) {\n                    uVar10 = *(undefined4 *)(iVar8 + 0x18);\n                    uVar12 = dcgettext(0,unaff_EBP + 0x3459a,5);\n                    FUN_0002bd60(uVar12,uVar13,uVar10);\n                    FUN_000358a0(local_3c);\n                    uVar9 = FUN_00029a00();\n                    bVar4 = true;\n                    goto LAB_0002aebd;\n                  }\n                  if (*(int *)(iVar11 + 0x20) != 0) {\n                    uVar13 = *(undefined4 *)(iVar8 + 0x18);\n                    uVar10 = *(undefined4 *)(iVar11 + 4);\n                    uVar12 = dcgettext(0,unaff_EBP + 0x345ce,5);\n                    FUN_0002bc80(uVar12,uVar10,uVar13);\n                    FUN_000358a0(iVar11 + 0x1c);\n                  }\n                  uVar9 = FUN_00029a00();\n                  bVar4 = true;\n                  iVar2 = *(int *)(&DAT_0005e002 + unaff_EBP);\n                  local_58 = (local_58 + 1) - (uint)(*(int *)(iVar11 + 0x20) == 0);\n                  goto joined_r0x0002b16d;\n                }" statement_identifier : (if_statement "if (bVar1 == 0x3d) {\nLAB_0002b0cf:\n                  FUN_000358a0(local_3c);\n                  iVar11 = FUN_00028c80(local_3c);\n                  if (local_48[iVar11] != '=') {\n                    iVar11 = dcgettext(0,unaff_EBP + 0x3457a,5);\n                    goto LAB_0002b07a;\n                  }\n                  uVar13 = FUN_00035970(local_3c);\n                  iVar11 = FUN_000254b0(*(undefined4 *)(iVar8 + 0x14),uVar13);\n                  uVar13 = local_3c[0];\n                  if (iVar11 == 0) {\n                    uVar10 = *(undefined4 *)(iVar8 + 0x18);\n                    uVar12 = dcgettext(0,unaff_EBP + 0x3459a,5);\n                    FUN_0002bd60(uVar12,uVar13,uVar10);\n                    FUN_000358a0(local_3c);\n                    uVar9 = FUN_00029a00();\n                    bVar4 = true;\n                    goto LAB_0002aebd;\n                  }\n                  if (*(int *)(iVar11 + 0x20) != 0) {\n                    uVar13 = *(undefined4 *)(iVar8 + 0x18);\n                    uVar10 = *(undefined4 *)(iVar11 + 4);\n                    uVar12 = dcgettext(0,unaff_EBP + 0x345ce,5);\n                    FUN_0002bc80(uVar12,uVar10,uVar13);\n                    FUN_000358a0(iVar11 + 0x1c);\n                  }\n                  uVar9 = FUN_00029a00();\n                  bVar4 = true;\n                  iVar2 = *(int *)(&DAT_0005e002 + unaff_EBP);\n                  local_58 = (local_58 + 1) - (uint)(*(int *)(iVar11 + 0x20) == 0);\n                  goto joined_r0x0002b16d;\n                }" if (parenthesized_expression "(bVar1 == 0x3d)" ( (binary_expression "bVar1 == 0x3d" identifier == number_literal) )) (compound_statement "{\nLAB_0002b0cf:\n                  FUN_000358a0(local_3c);\n                  iVar11 = FUN_00028c80(local_3c);\n                  if (local_48[iVar11] != '=') {\n                    iVar11 = dcgettext(0,unaff_EBP + 0x3457a,5);\n                    goto LAB_0002b07a;\n                  }\n                  uVar13 = FUN_00035970(local_3c);\n                  iVar11 = FUN_000254b0(*(undefined4 *)(iVar8 + 0x14),uVar13);\n                  uVar13 = local_3c[0];\n                  if (iVar11 == 0) {\n                    uVar10 = *(undefined4 *)(iVar8 + 0x18);\n                    uVar12 = dcgettext(0,unaff_EBP + 0x3459a,5);\n                    FUN_0002bd60(uVar12,uVar13,uVar10);\n                    FUN_000358a0(local_3c);\n                    uVar9 = FUN_00029a00();\n                    bVar4 = true;\n                    goto LAB_0002aebd;\n                  }\n                  if (*(int *)(iVar11 + 0x20) != 0) {\n                    uVar13 = *(undefined4 *)(iVar8 + 0x18);\n                    uVar10 = *(undefined4 *)(iVar11 + 4);\n                    uVar12 = dcgettext(0,unaff_EBP + 0x345ce,5);\n                    FUN_0002bc80(uVar12,uVar10,uVar13);\n                    FUN_000358a0(iVar11 + 0x1c);\n                  }\n                  uVar9 = FUN_00029a00();\n                  bVar4 = true;\n                  iVar2 = *(int *)(&DAT_0005e002 + unaff_EBP);\n                  local_58 = (local_58 + 1) - (uint)(*(int *)(iVar11 + 0x20) == 0);\n                  goto joined_r0x0002b16d;\n                }" { (labeled_statement "LAB_0002b0cf:\n                  FUN_000358a0(local_3c);" statement_identifier : (expression_statement "FUN_000358a0(local_3c);" (call_expression "FUN_000358a0(local_3c)" identifier (argument_list "(local_3c)" ( identifier ))) ;)) (expression_statement "iVar11 = FUN_00028c80(local_3c);" (assignment_expression "iVar11 = FUN_00028c80(local_3c)" identifier = (call_expression "FUN_00028c80(local_3c)" identifier (argument_list "(local_3c)" ( identifier )))) ;) (if_statement "if (local_48[iVar11] != '=') {\n                    iVar11 = dcgettext(0,unaff_EBP + 0x3457a,5);\n                    goto LAB_0002b07a;\n                  }" if (parenthesized_expression "(local_48[iVar11] != '=')" ( (binary_expression "local_48[iVar11] != '='" (subscript_expression "local_48[iVar11]" identifier [ identifier ]) != (char_literal "'='" ' character ')) )) (compound_statement "{\n                    iVar11 = dcgettext(0,unaff_EBP + 0x3457a,5);\n                    goto LAB_0002b07a;\n                  }" { (expression_statement "iVar11 = dcgettext(0,unaff_EBP + 0x3457a,5);" (assignment_expression "iVar11 = dcgettext(0,unaff_EBP + 0x3457a,5)" identifier = (call_expression "dcgettext(0,unaff_EBP + 0x3457a,5)" identifier (argument_list "(0,unaff_EBP + 0x3457a,5)" ( number_literal , (binary_expression "unaff_EBP + 0x3457a" identifier + number_literal) , number_literal )))) ;) (goto_statement "goto LAB_0002b07a;" goto statement_identifier ;) })) (expression_statement "uVar13 = FUN_00035970(local_3c);" (assignment_expression "uVar13 = FUN_00035970(local_3c)" identifier = (call_expression "FUN_00035970(local_3c)" identifier (argument_list "(local_3c)" ( identifier )))) ;) (expression_statement "iVar11 = FUN_000254b0(*(undefined4 *)(iVar8 + 0x14),uVar13);" (assignment_expression "iVar11 = FUN_000254b0(*(undefined4 *)(iVar8 + 0x14),uVar13)" identifier = (call_expression "FUN_000254b0(*(undefined4 *)(iVar8 + 0x14),uVar13)" identifier (argument_list "(*(undefined4 *)(iVar8 + 0x14),uVar13)" ( (pointer_expression "*(undefined4 *)(iVar8 + 0x14)" * (cast_expression "(undefined4 *)(iVar8 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x14)" ( (binary_expression "iVar8 + 0x14" identifier + number_literal) )))) , identifier )))) ;) (expression_statement "uVar13 = local_3c[0];" (assignment_expression "uVar13 = local_3c[0]" identifier = (subscript_expression "local_3c[0]" identifier [ number_literal ])) ;) (if_statement "if (iVar11 == 0) {\n                    uVar10 = *(undefined4 *)(iVar8 + 0x18);\n                    uVar12 = dcgettext(0,unaff_EBP + 0x3459a,5);\n                    FUN_0002bd60(uVar12,uVar13,uVar10);\n                    FUN_000358a0(local_3c);\n                    uVar9 = FUN_00029a00();\n                    bVar4 = true;\n                    goto LAB_0002aebd;\n                  }" if (parenthesized_expression "(iVar11 == 0)" ( (binary_expression "iVar11 == 0" identifier == number_literal) )) (compound_statement "{\n                    uVar10 = *(undefined4 *)(iVar8 + 0x18);\n                    uVar12 = dcgettext(0,unaff_EBP + 0x3459a,5);\n                    FUN_0002bd60(uVar12,uVar13,uVar10);\n                    FUN_000358a0(local_3c);\n                    uVar9 = FUN_00029a00();\n                    bVar4 = true;\n                    goto LAB_0002aebd;\n                  }" { (expression_statement "uVar10 = *(undefined4 *)(iVar8 + 0x18);" (assignment_expression "uVar10 = *(undefined4 *)(iVar8 + 0x18)" identifier = (pointer_expression "*(undefined4 *)(iVar8 + 0x18)" * (cast_expression "(undefined4 *)(iVar8 + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x18)" ( (binary_expression "iVar8 + 0x18" identifier + number_literal) ))))) ;) (expression_statement "uVar12 = dcgettext(0,unaff_EBP + 0x3459a,5);" (assignment_expression "uVar12 = dcgettext(0,unaff_EBP + 0x3459a,5)" identifier = (call_expression "dcgettext(0,unaff_EBP + 0x3459a,5)" identifier (argument_list "(0,unaff_EBP + 0x3459a,5)" ( number_literal , (binary_expression "unaff_EBP + 0x3459a" identifier + number_literal) , number_literal )))) ;) (expression_statement "FUN_0002bd60(uVar12,uVar13,uVar10);" (call_expression "FUN_0002bd60(uVar12,uVar13,uVar10)" identifier (argument_list "(uVar12,uVar13,uVar10)" ( identifier , identifier , identifier ))) ;) (expression_statement "FUN_000358a0(local_3c);" (call_expression "FUN_000358a0(local_3c)" identifier (argument_list "(local_3c)" ( identifier ))) ;) (expression_statement "uVar9 = FUN_00029a00();" (assignment_expression "uVar9 = FUN_00029a00()" identifier = (call_expression "FUN_00029a00()" identifier (argument_list "()" ( )))) ;) (expression_statement "bVar4 = true;" (assignment_expression "bVar4 = true" identifier = true) ;) (goto_statement "goto LAB_0002aebd;" goto statement_identifier ;) })) (if_statement "if (*(int *)(iVar11 + 0x20) != 0) {\n                    uVar13 = *(undefined4 *)(iVar8 + 0x18);\n                    uVar10 = *(undefined4 *)(iVar11 + 4);\n                    uVar12 = dcgettext(0,unaff_EBP + 0x345ce,5);\n                    FUN_0002bc80(uVar12,uVar10,uVar13);\n                    FUN_000358a0(iVar11 + 0x1c);\n                  }" if (parenthesized_expression "(*(int *)(iVar11 + 0x20) != 0)" ( (binary_expression "*(int *)(iVar11 + 0x20) != 0" (pointer_expression "*(int *)(iVar11 + 0x20)" * (cast_expression "(int *)(iVar11 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar11 + 0x20)" ( (binary_expression "iVar11 + 0x20" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n                    uVar13 = *(undefined4 *)(iVar8 + 0x18);\n                    uVar10 = *(undefined4 *)(iVar11 + 4);\n                    uVar12 = dcgettext(0,unaff_EBP + 0x345ce,5);\n                    FUN_0002bc80(uVar12,uVar10,uVar13);\n                    FUN_000358a0(iVar11 + 0x1c);\n                  }" { (expression_statement "uVar13 = *(undefined4 *)(iVar8 + 0x18);" (assignment_expression "uVar13 = *(undefined4 *)(iVar8 + 0x18)" identifier = (pointer_expression "*(undefined4 *)(iVar8 + 0x18)" * (cast_expression "(undefined4 *)(iVar8 + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x18)" ( (binary_expression "iVar8 + 0x18" identifier + number_literal) ))))) ;) (expression_statement "uVar10 = *(undefined4 *)(iVar11 + 4);" (assignment_expression "uVar10 = *(undefined4 *)(iVar11 + 4)" identifier = (pointer_expression "*(undefined4 *)(iVar11 + 4)" * (cast_expression "(undefined4 *)(iVar11 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar11 + 4)" ( (binary_expression "iVar11 + 4" identifier + number_literal) ))))) ;) (expression_statement "uVar12 = dcgettext(0,unaff_EBP + 0x345ce,5);" (assignment_expression "uVar12 = dcgettext(0,unaff_EBP + 0x345ce,5)" identifier = (call_expression "dcgettext(0,unaff_EBP + 0x345ce,5)" identifier (argument_list "(0,unaff_EBP + 0x345ce,5)" ( number_literal , (binary_expression "unaff_EBP + 0x345ce" identifier + number_literal) , number_literal )))) ;) (expression_statement "FUN_0002bc80(uVar12,uVar10,uVar13);" (call_expression "FUN_0002bc80(uVar12,uVar10,uVar13)" identifier (argument_list "(uVar12,uVar10,uVar13)" ( identifier , identifier , identifier ))) ;) (expression_statement "FUN_000358a0(iVar11 + 0x1c);" (call_expression "FUN_000358a0(iVar11 + 0x1c)" identifier (argument_list "(iVar11 + 0x1c)" ( (binary_expression "iVar11 + 0x1c" identifier + number_literal) ))) ;) })) (expression_statement "uVar9 = FUN_00029a00();" (assignment_expression "uVar9 = FUN_00029a00()" identifier = (call_expression "FUN_00029a00()" identifier (argument_list "()" ( )))) ;) (expression_statement "bVar4 = true;" (assignment_expression "bVar4 = true" identifier = true) ;) (expression_statement "iVar2 = *(int *)(&DAT_0005e002 + unaff_EBP);" (assignment_expression "iVar2 = *(int *)(&DAT_0005e002 + unaff_EBP)" identifier = (pointer_expression "*(int *)(&DAT_0005e002 + unaff_EBP)" * (cast_expression "(int *)(&DAT_0005e002 + unaff_EBP)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_0005e002 + unaff_EBP)" ( (binary_expression "&DAT_0005e002 + unaff_EBP" (pointer_expression "&DAT_0005e002" & identifier) + identifier) ))))) ;) (expression_statement "local_58 = (local_58 + 1) - (uint)(*(int *)(iVar11 + 0x20) == 0);" (assignment_expression "local_58 = (local_58 + 1) - (uint)(*(int *)(iVar11 + 0x20) == 0)" identifier = (binary_expression "(local_58 + 1) - (uint)(*(int *)(iVar11 + 0x20) == 0)" (parenthesized_expression "(local_58 + 1)" ( (binary_expression "local_58 + 1" identifier + number_literal) )) - (call_expression "(uint)(*(int *)(iVar11 + 0x20) == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*(int *)(iVar11 + 0x20) == 0)" ( (binary_expression "*(int *)(iVar11 + 0x20) == 0" (pointer_expression "*(int *)(iVar11 + 0x20)" * (cast_expression "(int *)(iVar11 + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar11 + 0x20)" ( (binary_expression "iVar11 + 0x20" identifier + number_literal) )))) == number_literal) ))))) ;) (goto_statement "goto joined_r0x0002b16d;" goto statement_identifier ;) }))) })) (break_statement "break;" break ;) })) (if_statement "if (*(int *)(&DAT_0005e006 + unaff_EBP) != 0) break;" if (parenthesized_expression "(*(int *)(&DAT_0005e006 + unaff_EBP) != 0)" ( (binary_expression "*(int *)(&DAT_0005e006 + unaff_EBP) != 0" (pointer_expression "*(int *)(&DAT_0005e006 + unaff_EBP)" * (cast_expression "(int *)(&DAT_0005e006 + unaff_EBP)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_0005e006 + unaff_EBP)" ( (binary_expression "&DAT_0005e006 + unaff_EBP" (pointer_expression "&DAT_0005e006" & identifier) + identifier) )))) != number_literal) )) (break_statement "break;" break ;)) (if_statement "if (*(int *)(&DAT_0005e002 + unaff_EBP) != 0) {\n              if ((bVar1 & 0xfd) == 0x3c) {\n                if (uVar16 < local_44) goto LAB_0002b0c6;\n                break;\n              }\n              if (bVar1 == 0x27) break;\n            }" if (parenthesized_expression "(*(int *)(&DAT_0005e002 + unaff_EBP) != 0)" ( (binary_expression "*(int *)(&DAT_0005e002 + unaff_EBP) != 0" (pointer_expression "*(int *)(&DAT_0005e002 + unaff_EBP)" * (cast_expression "(int *)(&DAT_0005e002 + unaff_EBP)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_0005e002 + unaff_EBP)" ( (binary_expression "&DAT_0005e002 + unaff_EBP" (pointer_expression "&DAT_0005e002" & identifier) + identifier) )))) != number_literal) )) (compound_statement "{\n              if ((bVar1 & 0xfd) == 0x3c) {\n                if (uVar16 < local_44) goto LAB_0002b0c6;\n                break;\n              }\n              if (bVar1 == 0x27) break;\n            }" { (if_statement "if ((bVar1 & 0xfd) == 0x3c) {\n                if (uVar16 < local_44) goto LAB_0002b0c6;\n                break;\n              }" if (parenthesized_expression "((bVar1 & 0xfd) == 0x3c)" ( (binary_expression "(bVar1 & 0xfd) == 0x3c" (parenthesized_expression "(bVar1 & 0xfd)" ( (binary_expression "bVar1 & 0xfd" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n                if (uVar16 < local_44) goto LAB_0002b0c6;\n                break;\n              }" { (if_statement "if (uVar16 < local_44) goto LAB_0002b0c6;" if (parenthesized_expression "(uVar16 < local_44)" ( (binary_expression "uVar16 < local_44" identifier < identifier) )) (goto_statement "goto LAB_0002b0c6;" goto statement_identifier ;)) (break_statement "break;" break ;) })) (if_statement "if (bVar1 == 0x27) break;" if (parenthesized_expression "(bVar1 == 0x27)" ( (binary_expression "bVar1 == 0x27" identifier == number_literal) )) (break_statement "break;" break ;)) })) (if_statement "if (bVar1 == 0x3d) {\n              if (uVar16 < local_44) goto LAB_0002b0cf;\n              break;\n            }" if (parenthesized_expression "(bVar1 == 0x3d)" ( (binary_expression "bVar1 == 0x3d" identifier == number_literal) )) (compound_statement "{\n              if (uVar16 < local_44) goto LAB_0002b0cf;\n              break;\n            }" { (if_statement "if (uVar16 < local_44) goto LAB_0002b0cf;" if (parenthesized_expression "(uVar16 < local_44)" ( (binary_expression "uVar16 < local_44" identifier < identifier) )) (goto_statement "goto LAB_0002b0cf;" goto statement_identifier ;)) (break_statement "break;" break ;) })) (expression_statement "uVar16 = uVar16 + 1;" (assignment_expression "uVar16 = uVar16 + 1" identifier = (binary_expression "uVar16 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar16 != local_44)" ( (binary_expression "uVar16 != local_44" identifier != identifier) )) ;) (if_statement "if (bVar4) {\n            iVar11 = dcgettext(0,unaff_EBP + 0x3460e,5);\nLAB_0002b07a:\n            if (iVar11 == 0) break;\n            if (*(int *)(&DAT_0005e002 + unaff_EBP) != 0) goto LAB_0002af93;\nLAB_0002b090:\n            FUN_000357d0(local_3c);\n            goto LAB_0002afd9;\n          }" if (parenthesized_expression "(bVar4)" ( identifier )) (compound_statement "{\n            iVar11 = dcgettext(0,unaff_EBP + 0x3460e,5);\nLAB_0002b07a:\n            if (iVar11 == 0) break;\n            if (*(int *)(&DAT_0005e002 + unaff_EBP) != 0) goto LAB_0002af93;\nLAB_0002b090:\n            FUN_000357d0(local_3c);\n            goto LAB_0002afd9;\n          }" { (expression_statement "iVar11 = dcgettext(0,unaff_EBP + 0x3460e,5);" (assignment_expression "iVar11 = dcgettext(0,unaff_EBP + 0x3460e,5)" identifier = (call_expression "dcgettext(0,unaff_EBP + 0x3460e,5)" identifier (argument_list "(0,unaff_EBP + 0x3460e,5)" ( number_literal , (binary_expression "unaff_EBP + 0x3460e" identifier + number_literal) , number_literal )))) ;) (labeled_statement "LAB_0002b07a:\n            if (iVar11 == 0) break;" statement_identifier : (if_statement "if (iVar11 == 0) break;" if (parenthesized_expression "(iVar11 == 0)" ( (binary_expression "iVar11 == 0" identifier == number_literal) )) (break_statement "break;" break ;))) (if_statement "if (*(int *)(&DAT_0005e002 + unaff_EBP) != 0) goto LAB_0002af93;" if (parenthesized_expression "(*(int *)(&DAT_0005e002 + unaff_EBP) != 0)" ( (binary_expression "*(int *)(&DAT_0005e002 + unaff_EBP) != 0" (pointer_expression "*(int *)(&DAT_0005e002 + unaff_EBP)" * (cast_expression "(int *)(&DAT_0005e002 + unaff_EBP)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_0005e002 + unaff_EBP)" ( (binary_expression "&DAT_0005e002 + unaff_EBP" (pointer_expression "&DAT_0005e002" & identifier) + identifier) )))) != number_literal) )) (goto_statement "goto LAB_0002af93;" goto statement_identifier ;)) (labeled_statement "LAB_0002b090:\n            FUN_000357d0(local_3c);" statement_identifier : (expression_statement "FUN_000357d0(local_3c);" (call_expression "FUN_000357d0(local_3c)" identifier (argument_list "(local_3c)" ( identifier ))) ;)) (goto_statement "goto LAB_0002afd9;" goto statement_identifier ;) })) (if_statement "if (puVar18 == (undefined4 *)0x0) {\n            if (*(int *)(&DAT_0005e002 + unaff_EBP) == 0) {\n              iVar11 = dcgettext(0,unaff_EBP + 0x34312,5);\n              if (iVar11 != 0) goto LAB_0002b090;\n              piVar17 = *(int **)(iVar8 + 0x10);\n              if (piVar17 == (int *)0x0) goto LAB_0002af6d;\n              goto LAB_0002aef9;\n            }\n            puVar18 = (undefined4 *)FUN_00028ba0();\n            iVar11 = -1;\n            puVar14 = *(undefined4 **)(iVar8 + 0x10);\n            if (*(undefined4 **)(iVar8 + 0x10) == (undefined4 *)0x0) {\n              iVar11 = 0;\n              puVar15 = (undefined4 *)(iVar8 + 0x10);\n            }\n            else {\n              do {\n                puVar15 = puVar14;\n                if (iVar11 <= (int)puVar15[10]) {\n                  iVar11 = puVar15[10] + 1;\n                }\n                puVar14 = (undefined4 *)*puVar15;\n              } while ((undefined4 *)*puVar15 != (undefined4 *)0x0);\n              if (iVar11 == -1) {\n                iVar11 = 0;\n              }\n            }\n            *puVar15 = puVar18;\n            puVar18[10] = iVar11;\n          }" if (parenthesized_expression "(puVar18 == (undefined4 *)0x0)" ( (binary_expression "puVar18 == (undefined4 *)0x0" identifier == (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            if (*(int *)(&DAT_0005e002 + unaff_EBP) == 0) {\n              iVar11 = dcgettext(0,unaff_EBP + 0x34312,5);\n              if (iVar11 != 0) goto LAB_0002b090;\n              piVar17 = *(int **)(iVar8 + 0x10);\n              if (piVar17 == (int *)0x0) goto LAB_0002af6d;\n              goto LAB_0002aef9;\n            }\n            puVar18 = (undefined4 *)FUN_00028ba0();\n            iVar11 = -1;\n            puVar14 = *(undefined4 **)(iVar8 + 0x10);\n            if (*(undefined4 **)(iVar8 + 0x10) == (undefined4 *)0x0) {\n              iVar11 = 0;\n              puVar15 = (undefined4 *)(iVar8 + 0x10);\n            }\n            else {\n              do {\n                puVar15 = puVar14;\n                if (iVar11 <= (int)puVar15[10]) {\n                  iVar11 = puVar15[10] + 1;\n                }\n                puVar14 = (undefined4 *)*puVar15;\n              } while ((undefined4 *)*puVar15 != (undefined4 *)0x0);\n              if (iVar11 == -1) {\n                iVar11 = 0;\n              }\n            }\n            *puVar15 = puVar18;\n            puVar18[10] = iVar11;\n          }" { (if_statement "if (*(int *)(&DAT_0005e002 + unaff_EBP) == 0) {\n              iVar11 = dcgettext(0,unaff_EBP + 0x34312,5);\n              if (iVar11 != 0) goto LAB_0002b090;\n              piVar17 = *(int **)(iVar8 + 0x10);\n              if (piVar17 == (int *)0x0) goto LAB_0002af6d;\n              goto LAB_0002aef9;\n            }" if (parenthesized_expression "(*(int *)(&DAT_0005e002 + unaff_EBP) == 0)" ( (binary_expression "*(int *)(&DAT_0005e002 + unaff_EBP) == 0" (pointer_expression "*(int *)(&DAT_0005e002 + unaff_EBP)" * (cast_expression "(int *)(&DAT_0005e002 + unaff_EBP)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_0005e002 + unaff_EBP)" ( (binary_expression "&DAT_0005e002 + unaff_EBP" (pointer_expression "&DAT_0005e002" & identifier) + identifier) )))) == number_literal) )) (compound_statement "{\n              iVar11 = dcgettext(0,unaff_EBP + 0x34312,5);\n              if (iVar11 != 0) goto LAB_0002b090;\n              piVar17 = *(int **)(iVar8 + 0x10);\n              if (piVar17 == (int *)0x0) goto LAB_0002af6d;\n              goto LAB_0002aef9;\n            }" { (expression_statement "iVar11 = dcgettext(0,unaff_EBP + 0x34312,5);" (assignment_expression "iVar11 = dcgettext(0,unaff_EBP + 0x34312,5)" identifier = (call_expression "dcgettext(0,unaff_EBP + 0x34312,5)" identifier (argument_list "(0,unaff_EBP + 0x34312,5)" ( number_literal , (binary_expression "unaff_EBP + 0x34312" identifier + number_literal) , number_literal )))) ;) (if_statement "if (iVar11 != 0) goto LAB_0002b090;" if (parenthesized_expression "(iVar11 != 0)" ( (binary_expression "iVar11 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0002b090;" goto statement_identifier ;)) (expression_statement "piVar17 = *(int **)(iVar8 + 0x10);" (assignment_expression "piVar17 = *(int **)(iVar8 + 0x10)" identifier = (pointer_expression "*(int **)(iVar8 + 0x10)" * (cast_expression "(int **)(iVar8 + 0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar8 + 0x10)" ( (binary_expression "iVar8 + 0x10" identifier + number_literal) ))))) ;) (if_statement "if (piVar17 == (int *)0x0) goto LAB_0002af6d;" if (parenthesized_expression "(piVar17 == (int *)0x0)" ( (binary_expression "piVar17 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0002af6d;" goto statement_identifier ;)) (goto_statement "goto LAB_0002aef9;" goto statement_identifier ;) })) (expression_statement "puVar18 = (undefined4 *)FUN_00028ba0();" (assignment_expression "puVar18 = (undefined4 *)FUN_00028ba0()" identifier = (cast_expression "(undefined4 *)FUN_00028ba0()" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00028ba0()" identifier (argument_list "()" ( ))))) ;) (expression_statement "iVar11 = -1;" (assignment_expression "iVar11 = -1" identifier = number_literal) ;) (expression_statement "puVar14 = *(undefined4 **)(iVar8 + 0x10);" (assignment_expression "puVar14 = *(undefined4 **)(iVar8 + 0x10)" identifier = (pointer_expression "*(undefined4 **)(iVar8 + 0x10)" * (cast_expression "(undefined4 **)(iVar8 + 0x10)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar8 + 0x10)" ( (binary_expression "iVar8 + 0x10" identifier + number_literal) ))))) ;) (if_statement "if (*(undefined4 **)(iVar8 + 0x10) == (undefined4 *)0x0) {\n              iVar11 = 0;\n              puVar15 = (undefined4 *)(iVar8 + 0x10);\n            }\n            else {\n              do {\n                puVar15 = puVar14;\n                if (iVar11 <= (int)puVar15[10]) {\n                  iVar11 = puVar15[10] + 1;\n                }\n                puVar14 = (undefined4 *)*puVar15;\n              } while ((undefined4 *)*puVar15 != (undefined4 *)0x0);\n              if (iVar11 == -1) {\n                iVar11 = 0;\n              }\n            }" if (parenthesized_expression "(*(undefined4 **)(iVar8 + 0x10) == (undefined4 *)0x0)" ( (binary_expression "*(undefined4 **)(iVar8 + 0x10) == (undefined4 *)0x0" (pointer_expression "*(undefined4 **)(iVar8 + 0x10)" * (cast_expression "(undefined4 **)(iVar8 + 0x10)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar8 + 0x10)" ( (binary_expression "iVar8 + 0x10" identifier + number_literal) )))) == (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              iVar11 = 0;\n              puVar15 = (undefined4 *)(iVar8 + 0x10);\n            }" { (expression_statement "iVar11 = 0;" (assignment_expression "iVar11 = 0" identifier = number_literal) ;) (expression_statement "puVar15 = (undefined4 *)(iVar8 + 0x10);" (assignment_expression "puVar15 = (undefined4 *)(iVar8 + 0x10)" identifier = (cast_expression "(undefined4 *)(iVar8 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x10)" ( (binary_expression "iVar8 + 0x10" identifier + number_literal) )))) ;) }) (else_clause "else {\n              do {\n                puVar15 = puVar14;\n                if (iVar11 <= (int)puVar15[10]) {\n                  iVar11 = puVar15[10] + 1;\n                }\n                puVar14 = (undefined4 *)*puVar15;\n              } while ((undefined4 *)*puVar15 != (undefined4 *)0x0);\n              if (iVar11 == -1) {\n                iVar11 = 0;\n              }\n            }" else (compound_statement "{\n              do {\n                puVar15 = puVar14;\n                if (iVar11 <= (int)puVar15[10]) {\n                  iVar11 = puVar15[10] + 1;\n                }\n                puVar14 = (undefined4 *)*puVar15;\n              } while ((undefined4 *)*puVar15 != (undefined4 *)0x0);\n              if (iVar11 == -1) {\n                iVar11 = 0;\n              }\n            }" { (do_statement "do {\n                puVar15 = puVar14;\n                if (iVar11 <= (int)puVar15[10]) {\n                  iVar11 = puVar15[10] + 1;\n                }\n                puVar14 = (undefined4 *)*puVar15;\n              } while ((undefined4 *)*puVar15 != (undefined4 *)0x0);" do (compound_statement "{\n                puVar15 = puVar14;\n                if (iVar11 <= (int)puVar15[10]) {\n                  iVar11 = puVar15[10] + 1;\n                }\n                puVar14 = (undefined4 *)*puVar15;\n              }" { (expression_statement "puVar15 = puVar14;" (assignment_expression "puVar15 = puVar14" identifier = identifier) ;) (if_statement "if (iVar11 <= (int)puVar15[10]) {\n                  iVar11 = puVar15[10] + 1;\n                }" if (parenthesized_expression "(iVar11 <= (int)puVar15[10])" ( (binary_expression "iVar11 <= (int)puVar15[10]" identifier <= (cast_expression "(int)puVar15[10]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "puVar15[10]" identifier [ number_literal ]))) )) (compound_statement "{\n                  iVar11 = puVar15[10] + 1;\n                }" { (expression_statement "iVar11 = puVar15[10] + 1;" (assignment_expression "iVar11 = puVar15[10] + 1" identifier = (binary_expression "puVar15[10] + 1" (subscript_expression "puVar15[10]" identifier [ number_literal ]) + number_literal)) ;) })) (expression_statement "puVar14 = (undefined4 *)*puVar15;" (assignment_expression "puVar14 = (undefined4 *)*puVar15" identifier = (cast_expression "(undefined4 *)*puVar15" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar15" * identifier))) ;) }) while (parenthesized_expression "((undefined4 *)*puVar15 != (undefined4 *)0x0)" ( (binary_expression "(undefined4 *)*puVar15 != (undefined4 *)0x0" (cast_expression "(undefined4 *)*puVar15" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar15" * identifier)) != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (if_statement "if (iVar11 == -1) {\n                iVar11 = 0;\n              }" if (parenthesized_expression "(iVar11 == -1)" ( (binary_expression "iVar11 == -1" identifier == number_literal) )) (compound_statement "{\n                iVar11 = 0;\n              }" { (expression_statement "iVar11 = 0;" (assignment_expression "iVar11 = 0" identifier = number_literal) ;) })) }))) (expression_statement "*puVar15 = puVar18;" (assignment_expression "*puVar15 = puVar18" (pointer_expression "*puVar15" * identifier) = identifier) ;) (expression_statement "puVar18[10] = iVar11;" (assignment_expression "puVar18[10] = iVar11" (subscript_expression "puVar18[10]" identifier [ number_literal ]) = identifier) ;) })) (if_statement "if (puVar18[0xb] == 2) {\n            FUN_00035930(puVar18 + 7,local_48 + uVar9,local_44 - uVar9);\n            uVar9 = local_44;\n          }\n          else {\n            uVar9 = FUN_00029a00();\n          }" if (parenthesized_expression "(puVar18[0xb] == 2)" ( (binary_expression "puVar18[0xb] == 2" (subscript_expression "puVar18[0xb]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n            FUN_00035930(puVar18 + 7,local_48 + uVar9,local_44 - uVar9);\n            uVar9 = local_44;\n          }" { (expression_statement "FUN_00035930(puVar18 + 7,local_48 + uVar9,local_44 - uVar9);" (call_expression "FUN_00035930(puVar18 + 7,local_48 + uVar9,local_44 - uVar9)" identifier (argument_list "(puVar18 + 7,local_48 + uVar9,local_44 - uVar9)" ( (binary_expression "puVar18 + 7" identifier + number_literal) , (binary_expression "local_48 + uVar9" identifier + identifier) , (binary_expression "local_44 - uVar9" identifier - identifier) ))) ;) (expression_statement "uVar9 = local_44;" (assignment_expression "uVar9 = local_44" identifier = identifier) ;) }) (else_clause "else {\n            uVar9 = FUN_00029a00();\n          }" else (compound_statement "{\n            uVar9 = FUN_00029a00();\n          }" { (expression_statement "uVar9 = FUN_00029a00();" (assignment_expression "uVar9 = FUN_00029a00()" identifier = (call_expression "FUN_00029a00()" identifier (argument_list "()" ( )))) ;) }))) (expression_statement "local_58 = (local_58 + 1) - (uint)(puVar18[8] == 0);" (assignment_expression "local_58 = (local_58 + 1) - (uint)(puVar18[8] == 0)" identifier = (binary_expression "(local_58 + 1) - (uint)(puVar18[8] == 0)" (parenthesized_expression "(local_58 + 1)" ( (binary_expression "local_58 + 1" identifier + number_literal) )) - (call_expression "(uint)(puVar18[8] == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(puVar18[8] == 0)" ( (binary_expression "puVar18[8] == 0" (subscript_expression "puVar18[8]" identifier [ number_literal ]) == number_literal) ))))) ;) (do_statement "do {\n            puVar18 = (undefined4 *)*puVar18;\n            if (puVar18 == (undefined4 *)0x0) break;\n          } while ((int)puVar18[10] < 0);" do (compound_statement "{\n            puVar18 = (undefined4 *)*puVar18;\n            if (puVar18 == (undefined4 *)0x0) break;\n          }" { (expression_statement "puVar18 = (undefined4 *)*puVar18;" (assignment_expression "puVar18 = (undefined4 *)*puVar18" identifier = (cast_expression "(undefined4 *)*puVar18" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar18" * identifier))) ;) (if_statement "if (puVar18 == (undefined4 *)0x0) break;" if (parenthesized_expression "(puVar18 == (undefined4 *)0x0)" ( (binary_expression "puVar18 == (undefined4 *)0x0" identifier == (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (break_statement "break;" break ;)) }) while (parenthesized_expression "((int)puVar18[10] < 0)" ( (binary_expression "(int)puVar18[10] < 0" (cast_expression "(int)puVar18[10]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "puVar18[10]" identifier [ number_literal ])) < number_literal) )) ;) (labeled_statement "LAB_0002aebd:\n          iVar2 = *(int *)(&DAT_0005e002 + unaff_EBP);" statement_identifier : (expression_statement "iVar2 = *(int *)(&DAT_0005e002 + unaff_EBP);" (assignment_expression "iVar2 = *(int *)(&DAT_0005e002 + unaff_EBP)" identifier = (pointer_expression "*(int *)(&DAT_0005e002 + unaff_EBP)" * (cast_expression "(int *)(&DAT_0005e002 + unaff_EBP)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_0005e002 + unaff_EBP)" ( (binary_expression "&DAT_0005e002 + unaff_EBP" (pointer_expression "&DAT_0005e002" & identifier) + identifier) ))))) ;)) (labeled_statement "joined_r0x0002b16d:\n          if (iVar2 != 0) goto LAB_0002aecb;" statement_identifier : (if_statement "if (iVar2 != 0) goto LAB_0002aecb;" if (parenthesized_expression "(iVar2 != 0)" ( (binary_expression "iVar2 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0002aecb;" goto statement_identifier ;))) (expression_statement "uVar9 = FUN_000359c0(uVar9,&local_48);" (assignment_expression "uVar9 = FUN_000359c0(uVar9,&local_48)" identifier = (call_expression "FUN_000359c0(uVar9,&local_48)" identifier (argument_list "(uVar9,&local_48)" ( identifier , (pointer_expression "&local_48" & identifier) )))) ;) (if_statement "if (local_44 <= uVar9) break;" if (parenthesized_expression "(local_44 <= uVar9)" ( (binary_expression "local_44 <= uVar9" identifier <= identifier) )) (break_statement "break;" break ;)) }) while (parenthesized_expression "( true )" ( true )) ;) }))) (expression_statement "piVar17 = *(int **)(iVar8 + 0x10);" (assignment_expression "piVar17 = *(int **)(iVar8 + 0x10)" identifier = (pointer_expression "*(int **)(iVar8 + 0x10)" * (cast_expression "(int **)(iVar8 + 0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar8 + 0x10)" ( (binary_expression "iVar8 + 0x10" identifier + number_literal) ))))) ;) (if_statement "if (piVar17 != (int *)0x0) goto LAB_0002aef9;" if (parenthesized_expression "(piVar17 != (int *)0x0)" ( (binary_expression "piVar17 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0002aef9;" goto statement_identifier ;)) (goto_statement "goto LAB_0002af58;" goto statement_identifier ;) })) })) (return_statement "return 0;" return number_literal ;) (labeled_statement "LAB_0002aecb:\n  cVar7 = local_48[uVar9];" statement_identifier : (expression_statement "cVar7 = local_48[uVar9];" (assignment_expression "cVar7 = local_48[uVar9]" identifier = (subscript_expression "local_48[uVar9]" identifier [ identifier ])) ;)) (if_statement "if (cVar7 == ',') {\n    uVar9 = uVar9 + 1;\n    cVar7 = local_48[uVar9];\n  }" if (parenthesized_expression "(cVar7 == ',')" ( (binary_expression "cVar7 == ','" identifier == (char_literal "','" ' character ')) )) (compound_statement "{\n    uVar9 = uVar9 + 1;\n    cVar7 = local_48[uVar9];\n  }" { (expression_statement "uVar9 = uVar9 + 1;" (assignment_expression "uVar9 = uVar9 + 1" identifier = (binary_expression "uVar9 + 1" identifier + number_literal)) ;) (expression_statement "cVar7 = local_48[uVar9];" (assignment_expression "cVar7 = local_48[uVar9]" identifier = (subscript_expression "local_48[uVar9]" identifier [ identifier ])) ;) })) (if_statement "if ((cVar7 == ' ') || (cVar7 == '\t')) goto LAB_0002aeea;" if (parenthesized_expression "((cVar7 == ' ') || (cVar7 == '\t'))" ( (binary_expression "(cVar7 == ' ') || (cVar7 == '\t')" (parenthesized_expression "(cVar7 == ' ')" ( (binary_expression "cVar7 == ' '" identifier == (char_literal "' '" ' character ')) )) || (parenthesized_expression "(cVar7 == '\t')" ( (binary_expression "cVar7 == '\t'" identifier == (char_literal "'\t'" ' escape_sequence ')) ))) )) (goto_statement "goto LAB_0002aeea;" goto statement_identifier ;)) (goto_statement "goto LAB_0002ae00;" goto statement_identifier ;) (labeled_statement "LAB_0002aeea:\n  piVar17 = *(int **)(iVar8 + 0x10);" statement_identifier : (expression_statement "piVar17 = *(int **)(iVar8 + 0x10);" (assignment_expression "piVar17 = *(int **)(iVar8 + 0x10)" identifier = (pointer_expression "*(int **)(iVar8 + 0x10)" * (cast_expression "(int **)(iVar8 + 0x10)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar8 + 0x10)" ( (binary_expression "iVar8 + 0x10" identifier + number_literal) ))))) ;)) (if_statement "if (piVar17 != (int *)0x0) {\nLAB_0002aef9:\n    do {\n      while ((piVar17[0xb] != 1 || (piVar17[8] != 0))) {\n        piVar17 = (int *)*piVar17;\n        if (piVar17 == (int *)0x0) goto LAB_0002af58;\n      }\n      iVar11 = piVar17[1];\n      uVar13 = *(undefined4 *)(iVar8 + 0x18);\n      uVar10 = dcgettext(0,unaff_EBP + 0x3463a,5);\n      FUN_0002bd60(uVar10,iVar11,uVar13);\n      piVar17 = (int *)*piVar17;\n    } while (piVar17 != (int *)0x0);\nLAB_0002af58:\n    if (*(int *)(&DAT_0005e002 + unaff_EBP) == 0) goto LAB_0002af6d;\n  }" if (parenthesized_expression "(piVar17 != (int *)0x0)" ( (binary_expression "piVar17 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_0002aef9:\n    do {\n      while ((piVar17[0xb] != 1 || (piVar17[8] != 0))) {\n        piVar17 = (int *)*piVar17;\n        if (piVar17 == (int *)0x0) goto LAB_0002af58;\n      }\n      iVar11 = piVar17[1];\n      uVar13 = *(undefined4 *)(iVar8 + 0x18);\n      uVar10 = dcgettext(0,unaff_EBP + 0x3463a,5);\n      FUN_0002bd60(uVar10,iVar11,uVar13);\n      piVar17 = (int *)*piVar17;\n    } while (piVar17 != (int *)0x0);\nLAB_0002af58:\n    if (*(int *)(&DAT_0005e002 + unaff_EBP) == 0) goto LAB_0002af6d;\n  }" { (labeled_statement "LAB_0002aef9:\n    do {\n      while ((piVar17[0xb] != 1 || (piVar17[8] != 0))) {\n        piVar17 = (int *)*piVar17;\n        if (piVar17 == (int *)0x0) goto LAB_0002af58;\n      }\n      iVar11 = piVar17[1];\n      uVar13 = *(undefined4 *)(iVar8 + 0x18);\n      uVar10 = dcgettext(0,unaff_EBP + 0x3463a,5);\n      FUN_0002bd60(uVar10,iVar11,uVar13);\n      piVar17 = (int *)*piVar17;\n    } while (piVar17 != (int *)0x0);" statement_identifier : (do_statement "do {\n      while ((piVar17[0xb] != 1 || (piVar17[8] != 0))) {\n        piVar17 = (int *)*piVar17;\n        if (piVar17 == (int *)0x0) goto LAB_0002af58;\n      }\n      iVar11 = piVar17[1];\n      uVar13 = *(undefined4 *)(iVar8 + 0x18);\n      uVar10 = dcgettext(0,unaff_EBP + 0x3463a,5);\n      FUN_0002bd60(uVar10,iVar11,uVar13);\n      piVar17 = (int *)*piVar17;\n    } while (piVar17 != (int *)0x0);" do (compound_statement "{\n      while ((piVar17[0xb] != 1 || (piVar17[8] != 0))) {\n        piVar17 = (int *)*piVar17;\n        if (piVar17 == (int *)0x0) goto LAB_0002af58;\n      }\n      iVar11 = piVar17[1];\n      uVar13 = *(undefined4 *)(iVar8 + 0x18);\n      uVar10 = dcgettext(0,unaff_EBP + 0x3463a,5);\n      FUN_0002bd60(uVar10,iVar11,uVar13);\n      piVar17 = (int *)*piVar17;\n    }" { (while_statement "while ((piVar17[0xb] != 1 || (piVar17[8] != 0))) {\n        piVar17 = (int *)*piVar17;\n        if (piVar17 == (int *)0x0) goto LAB_0002af58;\n      }" while (parenthesized_expression "((piVar17[0xb] != 1 || (piVar17[8] != 0)))" ( (parenthesized_expression "(piVar17[0xb] != 1 || (piVar17[8] != 0))" ( (binary_expression "piVar17[0xb] != 1 || (piVar17[8] != 0)" (binary_expression "piVar17[0xb] != 1" (subscript_expression "piVar17[0xb]" identifier [ number_literal ]) != number_literal) || (parenthesized_expression "(piVar17[8] != 0)" ( (binary_expression "piVar17[8] != 0" (subscript_expression "piVar17[8]" identifier [ number_literal ]) != number_literal) ))) )) )) (compound_statement "{\n        piVar17 = (int *)*piVar17;\n        if (piVar17 == (int *)0x0) goto LAB_0002af58;\n      }" { (expression_statement "piVar17 = (int *)*piVar17;" (assignment_expression "piVar17 = (int *)*piVar17" identifier = (cast_expression "(int *)*piVar17" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar17" * identifier))) ;) (if_statement "if (piVar17 == (int *)0x0) goto LAB_0002af58;" if (parenthesized_expression "(piVar17 == (int *)0x0)" ( (binary_expression "piVar17 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0002af58;" goto statement_identifier ;)) })) (expression_statement "iVar11 = piVar17[1];" (assignment_expression "iVar11 = piVar17[1]" identifier = (subscript_expression "piVar17[1]" identifier [ number_literal ])) ;) (expression_statement "uVar13 = *(undefined4 *)(iVar8 + 0x18);" (assignment_expression "uVar13 = *(undefined4 *)(iVar8 + 0x18)" identifier = (pointer_expression "*(undefined4 *)(iVar8 + 0x18)" * (cast_expression "(undefined4 *)(iVar8 + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x18)" ( (binary_expression "iVar8 + 0x18" identifier + number_literal) ))))) ;) (expression_statement "uVar10 = dcgettext(0,unaff_EBP + 0x3463a,5);" (assignment_expression "uVar10 = dcgettext(0,unaff_EBP + 0x3463a,5)" identifier = (call_expression "dcgettext(0,unaff_EBP + 0x3463a,5)" identifier (argument_list "(0,unaff_EBP + 0x3463a,5)" ( number_literal , (binary_expression "unaff_EBP + 0x3463a" identifier + number_literal) , number_literal )))) ;) (expression_statement "FUN_0002bd60(uVar10,iVar11,uVar13);" (call_expression "FUN_0002bd60(uVar10,iVar11,uVar13)" identifier (argument_list "(uVar10,iVar11,uVar13)" ( identifier , identifier , identifier ))) ;) (expression_statement "piVar17 = (int *)*piVar17;" (assignment_expression "piVar17 = (int *)*piVar17" identifier = (cast_expression "(int *)*piVar17" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar17" * identifier))) ;) }) while (parenthesized_expression "(piVar17 != (int *)0x0)" ( (binary_expression "piVar17 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;)) (labeled_statement "LAB_0002af58:\n    if (*(int *)(&DAT_0005e002 + unaff_EBP) == 0) goto LAB_0002af6d;" statement_identifier : (if_statement "if (*(int *)(&DAT_0005e002 + unaff_EBP) == 0) goto LAB_0002af6d;" if (parenthesized_expression "(*(int *)(&DAT_0005e002 + unaff_EBP) == 0)" ( (binary_expression "*(int *)(&DAT_0005e002 + unaff_EBP) == 0" (pointer_expression "*(int *)(&DAT_0005e002 + unaff_EBP)" * (cast_expression "(int *)(&DAT_0005e002 + unaff_EBP)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_0005e002 + unaff_EBP)" ( (binary_expression "&DAT_0005e002 + unaff_EBP" (pointer_expression "&DAT_0005e002" & identifier) + identifier) )))) == number_literal) )) (goto_statement "goto LAB_0002af6d;" goto statement_identifier ;))) })) (expression_statement "FUN_000358a0(local_3c);" (call_expression "FUN_000358a0(local_3c)" identifier (argument_list "(local_3c)" ( identifier ))) ;) (expression_statement "iVar11 = unaff_EBP + 0x342bc;" (assignment_expression "iVar11 = unaff_EBP + 0x342bc" identifier = (binary_expression "unaff_EBP + 0x342bc" identifier + number_literal)) ;) (if_statement "if (*(int *)(&DAT_0005dffe + unaff_EBP) == 0) {\n    iVar11 = unaff_EBP + 0x342bd;\n  }" if (parenthesized_expression "(*(int *)(&DAT_0005dffe + unaff_EBP) == 0)" ( (binary_expression "*(int *)(&DAT_0005dffe + unaff_EBP) == 0" (pointer_expression "*(int *)(&DAT_0005dffe + unaff_EBP)" * (cast_expression "(int *)(&DAT_0005dffe + unaff_EBP)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_0005dffe + unaff_EBP)" ( (binary_expression "&DAT_0005dffe + unaff_EBP" (pointer_expression "&DAT_0005dffe" & identifier) + identifier) )))) == number_literal) )) (compound_statement "{\n    iVar11 = unaff_EBP + 0x342bd;\n  }" { (expression_statement "iVar11 = unaff_EBP + 0x342bd;" (assignment_expression "iVar11 = unaff_EBP + 0x342bd" identifier = (binary_expression "unaff_EBP + 0x342bd" identifier + number_literal)) ;) })) (expression_statement "FUN_000358e0(local_3c,iVar11);" (call_expression "FUN_000358e0(local_3c,iVar11)" identifier (argument_list "(local_3c,iVar11)" ( identifier , identifier ))) ;) (expression_statement "uVar13 = FUN_00035970(local_3c);" (assignment_expression "uVar13 = FUN_00035970(local_3c)" identifier = (call_expression "FUN_00035970(local_3c)" identifier (argument_list "(local_3c)" ( identifier )))) ;) (expression_statement "iVar11 = FUN_000254b0(*(undefined4 *)(iVar8 + 0x14),uVar13);" (assignment_expression "iVar11 = FUN_000254b0(*(undefined4 *)(iVar8 + 0x14),uVar13)" identifier = (call_expression "FUN_000254b0(*(undefined4 *)(iVar8 + 0x14),uVar13)" identifier (argument_list "(*(undefined4 *)(iVar8 + 0x14),uVar13)" ( (pointer_expression "*(undefined4 *)(iVar8 + 0x14)" * (cast_expression "(undefined4 *)(iVar8 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x14)" ( (binary_expression "iVar8 + 0x14" identifier + number_literal) )))) , identifier )))) ;) (expression_statement "sprintf(local_30,(char *)(FUN_000357f0 + unaff_EBP + 4),local_58);" (call_expression "sprintf(local_30,(char *)(FUN_000357f0 + unaff_EBP + 4),local_58)" identifier (argument_list "(local_30,(char *)(FUN_000357f0 + unaff_EBP + 4),local_58)" ( identifier , (cast_expression "(char *)(FUN_000357f0 + unaff_EBP + 4)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(FUN_000357f0 + unaff_EBP + 4)" ( (binary_expression "FUN_000357f0 + unaff_EBP + 4" (binary_expression "FUN_000357f0 + unaff_EBP" identifier + identifier) + number_literal) ))) , identifier ))) ;) (expression_statement "FUN_000358e0(iVar11 + 0x1c,local_30);" (call_expression "FUN_000358e0(iVar11 + 0x1c,local_30)" identifier (argument_list "(iVar11 + 0x1c,local_30)" ( (binary_expression "iVar11 + 0x1c" identifier + number_literal) , identifier ))) ;) (labeled_statement "LAB_0002af6d:\n  iVar11 = FUN_00028f30(*(undefined4 *)(iVar8 + 0x14),iVar8);" statement_identifier : (expression_statement "iVar11 = FUN_00028f30(*(undefined4 *)(iVar8 + 0x14),iVar8);" (assignment_expression "iVar11 = FUN_00028f30(*(undefined4 *)(iVar8 + 0x14),iVar8)" identifier = (call_expression "FUN_00028f30(*(undefined4 *)(iVar8 + 0x14),iVar8)" identifier (argument_list "(*(undefined4 *)(iVar8 + 0x14),iVar8)" ( (pointer_expression "*(undefined4 *)(iVar8 + 0x14)" * (cast_expression "(undefined4 *)(iVar8 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x14)" ( (binary_expression "iVar8 + 0x14" identifier + number_literal) )))) , identifier )))) ;)) (if_statement "if (*(int *)(&DAT_0005e002 + unaff_EBP) != 0) {\nLAB_0002af93:\n    puVar14 = (undefined4 *)(iVar8 + 0x10);\n    puVar18 = *(undefined4 **)(iVar8 + 0x10);\n    while (puVar15 = puVar14, puVar18 != (undefined4 *)0x0) {\n      piVar17 = puVar18 + 2;\n      puVar3 = (undefined4 *)*puVar18;\n      puVar14 = puVar18;\n      puVar18 = puVar3;\n      if (*piVar17 == 0) {\n        FUN_00028bf0();\n        *puVar15 = puVar3;\n        puVar14 = puVar15;\n      }\n    }\n  }" if (parenthesized_expression "(*(int *)(&DAT_0005e002 + unaff_EBP) != 0)" ( (binary_expression "*(int *)(&DAT_0005e002 + unaff_EBP) != 0" (pointer_expression "*(int *)(&DAT_0005e002 + unaff_EBP)" * (cast_expression "(int *)(&DAT_0005e002 + unaff_EBP)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_0005e002 + unaff_EBP)" ( (binary_expression "&DAT_0005e002 + unaff_EBP" (pointer_expression "&DAT_0005e002" & identifier) + identifier) )))) != number_literal) )) (compound_statement "{\nLAB_0002af93:\n    puVar14 = (undefined4 *)(iVar8 + 0x10);\n    puVar18 = *(undefined4 **)(iVar8 + 0x10);\n    while (puVar15 = puVar14, puVar18 != (undefined4 *)0x0) {\n      piVar17 = puVar18 + 2;\n      puVar3 = (undefined4 *)*puVar18;\n      puVar14 = puVar18;\n      puVar18 = puVar3;\n      if (*piVar17 == 0) {\n        FUN_00028bf0();\n        *puVar15 = puVar3;\n        puVar14 = puVar15;\n      }\n    }\n  }" { (labeled_statement "LAB_0002af93:\n    puVar14 = (undefined4 *)(iVar8 + 0x10);" statement_identifier : (expression_statement "puVar14 = (undefined4 *)(iVar8 + 0x10);" (assignment_expression "puVar14 = (undefined4 *)(iVar8 + 0x10)" identifier = (cast_expression "(undefined4 *)(iVar8 + 0x10)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x10)" ( (binary_expression "iVar8 + 0x10" identifier + number_literal) )))) ;)) (expression_statement "puVar18 = *(undefined4 **)(iVar8 + 0x10);" (assignment_expression "puVar18 = *(undefined4 **)(iVar8 + 0x10)" identifier = (pointer_expression "*(undefined4 **)(iVar8 + 0x10)" * (cast_expression "(undefined4 **)(iVar8 + 0x10)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar8 + 0x10)" ( (binary_expression "iVar8 + 0x10" identifier + number_literal) ))))) ;) (while_statement "while (puVar15 = puVar14, puVar18 != (undefined4 *)0x0) {\n      piVar17 = puVar18 + 2;\n      puVar3 = (undefined4 *)*puVar18;\n      puVar14 = puVar18;\n      puVar18 = puVar3;\n      if (*piVar17 == 0) {\n        FUN_00028bf0();\n        *puVar15 = puVar3;\n        puVar14 = puVar15;\n      }\n    }" while (parenthesized_expression "(puVar15 = puVar14, puVar18 != (undefined4 *)0x0)" ( (comma_expression "puVar15 = puVar14, puVar18 != (undefined4 *)0x0" (assignment_expression "puVar15 = puVar14" identifier = identifier) , (binary_expression "puVar18 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) )) (compound_statement "{\n      piVar17 = puVar18 + 2;\n      puVar3 = (undefined4 *)*puVar18;\n      puVar14 = puVar18;\n      puVar18 = puVar3;\n      if (*piVar17 == 0) {\n        FUN_00028bf0();\n        *puVar15 = puVar3;\n        puVar14 = puVar15;\n      }\n    }" { (expression_statement "piVar17 = puVar18 + 2;" (assignment_expression "piVar17 = puVar18 + 2" identifier = (binary_expression "puVar18 + 2" identifier + number_literal)) ;) (expression_statement "puVar3 = (undefined4 *)*puVar18;" (assignment_expression "puVar3 = (undefined4 *)*puVar18" identifier = (cast_expression "(undefined4 *)*puVar18" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar18" * identifier))) ;) (expression_statement "puVar14 = puVar18;" (assignment_expression "puVar14 = puVar18" identifier = identifier) ;) (expression_statement "puVar18 = puVar3;" (assignment_expression "puVar18 = puVar3" identifier = identifier) ;) (if_statement "if (*piVar17 == 0) {\n        FUN_00028bf0();\n        *puVar15 = puVar3;\n        puVar14 = puVar15;\n      }" if (parenthesized_expression "(*piVar17 == 0)" ( (binary_expression "*piVar17 == 0" (pointer_expression "*piVar17" * identifier) == number_literal) )) (compound_statement "{\n        FUN_00028bf0();\n        *puVar15 = puVar3;\n        puVar14 = puVar15;\n      }" { (expression_statement "FUN_00028bf0();" (call_expression "FUN_00028bf0()" identifier (argument_list "()" ( ))) ;) (expression_statement "*puVar15 = puVar3;" (assignment_expression "*puVar15 = puVar3" (pointer_expression "*puVar15" * identifier) = identifier) ;) (expression_statement "puVar14 = puVar15;" (assignment_expression "puVar14 = puVar15" identifier = identifier) ;) })) })) })) (expression_statement "FUN_000357d0(local_3c);" (call_expression "FUN_000357d0(local_3c)" identifier (argument_list "(local_3c)" ( identifier ))) ;) (if_statement "if (iVar11 == 0) {\n    *(int *)(&DAT_0005dff6 + unaff_EBP) = *(int *)(&DAT_0005dff6 + unaff_EBP) + 1;\n  }" if (parenthesized_expression "(iVar11 == 0)" ( (binary_expression "iVar11 == 0" identifier == number_literal) )) (compound_statement "{\n    *(int *)(&DAT_0005dff6 + unaff_EBP) = *(int *)(&DAT_0005dff6 + unaff_EBP) + 1;\n  }" { (expression_statement "*(int *)(&DAT_0005dff6 + unaff_EBP) = *(int *)(&DAT_0005dff6 + unaff_EBP) + 1;" (assignment_expression "*(int *)(&DAT_0005dff6 + unaff_EBP) = *(int *)(&DAT_0005dff6 + unaff_EBP) + 1" (pointer_expression "*(int *)(&DAT_0005dff6 + unaff_EBP)" * (cast_expression "(int *)(&DAT_0005dff6 + unaff_EBP)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_0005dff6 + unaff_EBP)" ( (binary_expression "&DAT_0005dff6 + unaff_EBP" (pointer_expression "&DAT_0005dff6" & identifier) + identifier) )))) = (binary_expression "*(int *)(&DAT_0005dff6 + unaff_EBP) + 1" (pointer_expression "*(int *)(&DAT_0005dff6 + unaff_EBP)" * (cast_expression "(int *)(&DAT_0005dff6 + unaff_EBP)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&DAT_0005dff6 + unaff_EBP)" ( (binary_expression "&DAT_0005dff6 + unaff_EBP" (pointer_expression "&DAT_0005dff6" & identifier) + identifier) )))) + number_literal)) ;) })) (labeled_statement "LAB_0002afd9:\n  *param_3 = iVar11;" statement_identifier : (expression_statement "*param_3 = iVar11;" (assignment_expression "*param_3 = iVar11" (pointer_expression "*param_3" * identifier) = identifier) ;)) (expression_statement "FUN_000357d0(&local_48);" (call_expression "FUN_000357d0(&local_48)" identifier (argument_list "(&local_48)" ( (pointer_expression "&local_48" & identifier) ))) ;) (if_statement "if (param_4 == (int *)0x0) {\n    return 1;\n  }" if (parenthesized_expression "(param_4 == (int *)0x0)" ( (binary_expression "param_4 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    return 1;\n  }" { (return_statement "return 1;" return number_literal ;) })) (expression_statement "*param_4 = iVar8;" (assignment_expression "*param_4 = iVar8" (pointer_expression "*param_4" * identifier) = identifier) ;) (return_statement "return 1;" return number_literal ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * 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 (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (parenthesized_expression ( IDENT )) * IDENT)) )))) & LIT) )) != LIT) )) || (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression & IDENT) + IDENT) )))) != LIT) && (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == LIT) ))) )) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) ))))) ;) (while_statement while (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (parenthesized_expression ( IDENT )) * IDENT)) ))))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (cast_expression ( (type_descriptor TYPE) ) 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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (while_statement while (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT)) ))))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (string_literal " string_content ") + IDENT) )))) , IDENT )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (pointer_expression & IDENT) ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (while_statement while (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression LIT < IDENT) || (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression LIT >> (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) IDENT)) & LIT) ))) & LIT) )) == LIT) ))) )) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) IDENT)) ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) ;) (for_statement for ( (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ; (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ; (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) )) (goto_statement goto statement_identifier ;)) })) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression & IDENT) + IDENT) )))) != LIT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = IDENT) , (binary_expression IDENT != LIT)) ))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == (char_literal ' character ')) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT < LIT) )) || (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == (char_literal ' character ')) ))) )) || (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == (char_literal ' escape_sequence ')) ))) )) (compound_statement { (expression_statement (assignment_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 ( ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) }))) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }))) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (pointer_expression & IDENT) )))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ IDENT ])) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT - LIT) ))) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (unary_expression ~ (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression LIT >> (parenthesized_expression ( (binary_expression (binary_expression IDENT - LIT) & LIT) ))) )))) & LIT)) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) || (parenthesized_expression ( (binary_expression IDENT == LIT) ))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT < IDENT) )) && (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression & IDENT) + IDENT) )))) == LIT) ))) )) (compound_statement { (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;)) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ IDENT ]) != (char_literal ' character ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , (binary_expression IDENT + LIT) , LIT )))) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , (binary_expression IDENT + LIT) , LIT )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , (binary_expression IDENT + LIT) , LIT )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) ))) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression & IDENT) + IDENT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT + LIT) )) - (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) ))))) ;) (goto_statement goto statement_identifier ;) }))) })) (break_statement break ;) })) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression & IDENT) + IDENT) )))) != LIT) )) (break_statement break ;)) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression & IDENT) + IDENT) )))) != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (goto_statement goto statement_identifier ;)) (break_statement break ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (goto_statement goto statement_identifier ;)) (break_statement break ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , (binary_expression IDENT + LIT) , LIT )))) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;))) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression & IDENT) + IDENT) )))) != LIT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;)) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression & IDENT) + IDENT) )))) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , (binary_expression IDENT + LIT) , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (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 IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( ))))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (cast_expression ( (type_descriptor TYPE (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 *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) }) (else_clause else (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ LIT ]) + LIT)) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) }) while (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT)) != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) })) }))) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , (binary_expression IDENT + IDENT) , (binary_expression IDENT - IDENT) ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT + LIT) )) - (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) ))))) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (break_statement break ;)) }) while (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) < LIT) )) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression & IDENT) + IDENT) ))))) ;)) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;))) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (pointer_expression & IDENT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (break_statement break ;)) }) while (parenthesized_expression ( BOOL )) ;) }))) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) (goto_statement goto statement_identifier ;) })) })) (return_statement return LIT ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ IDENT ])) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' character ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ IDENT ])) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == (char_literal ' character ')) )) || (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) ))) )) (goto_statement goto statement_identifier ;)) (goto_statement goto statement_identifier ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (labeled_statement statement_identifier : (do_statement do (compound_statement { (while_statement while (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) || (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) ))) )) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) })) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , (binary_expression IDENT + LIT) , LIT )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) ;)) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression & IDENT) + IDENT) )))) == LIT) )) (goto_statement goto statement_identifier ;))) })) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression 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 & IDENT) + IDENT) )))) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , IDENT )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) + LIT) ))) , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , IDENT ))) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , IDENT )))) ;)) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression & IDENT) + IDENT) )))) != LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (while_statement while (parenthesized_expression ( (comma_expression (assignment_expression IDENT = IDENT) , (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) })) })) })) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression & IDENT) + IDENT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression & IDENT) + IDENT) )))) + LIT)) ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;)) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression & IDENT) ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (return_statement return LIT ;) })))
(function_definition "undefined4 FUN_0002ac00(byte *param_1,undefined4 param_2,int *param_3,int *param_4)\n\n{\n  byte bVar1;\n  int iVar2;\n  undefined4 *puVar3;\n  bool bVar4;\n  byte *pbVar5;\n  byte bVar6;\n  char cVar7;\n  void *__dest;\n  byte *__ptr;\n  int iVar8;\n  uint uVar9;\n  undefined4 uVar10;\n  int iVar11;\n  undefined4 uVar12;\n  undefined4 uVar13;\n  undefined4 *puVar14;\n  undefined4 *puVar15;\n  size_t __n;\n  uint uVar16;\n  int unaff_EBP;\n  int *piVar17;\n  undefined4 *puVar18;\n  byte *pbVar19;\n  int local_58;\n  char *local_48;\n  uint local_44;\n  undefined4 local_3c [3];\n  char local_30 [32];\n  \n  FUN_0001fe10();\n  iVar8 = unaff_EBP + 0x557ba;\n  if (((*(byte *)(iVar8 + (uint)*param_1) & 2) != 0) ||\n     ((*(int *)(&DAT_0005e002 + unaff_EBP) != 0 && (*param_1 == 0x2e)))) {\n    pbVar19 = param_1 + 1;\n    bVar1 = *(byte *)(iVar8 + (uint)param_1[1]);\n    while ((bVar1 & 1) != 0) {\n      pbVar19 = pbVar19 + 1;\n      bVar1 = *(byte *)(iVar8 + (uint)*pbVar19);\n    }\n    pbVar19 = pbVar19 + ((bVar1 & 4) != 0);\n    __n = (int)pbVar19 - (int)param_1;\n    __dest = (void *)xmalloc(__n + 1);\n    *(undefined1 *)((int)__dest + __n) = 0;\n    __ptr = (byte *)memcpy(__dest,param_1,__n);\n    iVar8 = *(int *)(unaff_EBP + 0x553ca);\n    bVar1 = *__ptr;\n    pbVar5 = __ptr;\n    while (bVar1 != 0) {\n      *pbVar5 = *(byte *)(iVar8 + (uint)bVar1);\n      bVar1 = pbVar5[1];\n      pbVar5 = pbVar5 + 1;\n    }\n    iVar8 = FUN_000254b0(*(undefined4 *)("%S.000%z" + unaff_EBP),__ptr);\n    free(__ptr);\n    if (iVar8 != 0) {\n      FUN_00035790(&local_48);\n      bVar1 = *pbVar19;\n      while ((0xd < bVar1 || ((0x2401U >> ((int)(char)bVar1 & 0x1fU) & 1) == 0))) {\n        pbVar19 = pbVar19 + 1;\n        FUN_000358b0(&local_48,(int)(char)bVar1);\n        bVar1 = *pbVar19;\n      }\n      FUN_00035790(param_2);\n      FUN_00035790(local_3c);\n      piVar17 = *(int **)(iVar8 + 0x10);\n      if (piVar17 != (int *)0x0) {\n        do {\n          FUN_000358a0(piVar17 + 7);\n          piVar17 = (int *)*piVar17;\n        } while (piVar17 != (int *)0x0);\n        for (puVar18 = *(undefined4 **)(iVar8 + 0x10); puVar18 != (undefined4 *)0x0;\n            puVar18 = (undefined4 *)*puVar18) {\n          if (-1 < (int)puVar18[10]) goto LAB_0002adc1;\n        }\n      }\n      puVar18 = (undefined4 *)0x0;\nLAB_0002adc1:\n      uVar9 = 0;\n      if ((*(int *)(&DAT_0005e002 + unaff_EBP) != 0) && (uVar9 = local_44, local_44 != 0)) {\n        if (*local_48 == '.') {\n          if (((local_44 < 2) || (local_48[1] == ' ')) || (local_48[1] == '\t')) {\n            uVar9 = 1;\n          }\n          else {\n            puVar14 = (undefined4 *)FUN_00028ba0();\n            puVar14[10] = 0xffffffff;\n            *puVar14 = *(undefined4 *)(iVar8 + 0x10);\n            *(undefined4 **)(iVar8 + 0x10) = puVar14;\n            uVar9 = FUN_00029a00();\n          }\n        }\n        else {\n          uVar9 = 0;\n        }\n      }\n      uVar9 = FUN_00035980(uVar9,&local_48);\n      local_58 = 0;\n      bVar4 = false;\nLAB_0002ae00:\n      if (uVar9 < local_44) {\n        do {\n          uVar16 = uVar9;\n          do {\n            bVar1 = local_48[uVar16];\n            bVar6 = 1;\n            if ((byte)(bVar1 - 0x20) < 0x1c) {\n              bVar6 = ~(byte)(0x8001305 >> (bVar1 - 0x20 & 0x1f)) & 1;\n            }\n            if ((bVar1 == 9) || (bVar6 == 0)) {\n              if ((uVar16 < local_44) && (*(int *)(&DAT_0005e006 + unaff_EBP) == 0)) {\nLAB_0002b0c6:\n                if (bVar1 == 0x3d) {\nLAB_0002b0cf:\n                  FUN_000358a0(local_3c);\n                  iVar11 = FUN_00028c80(local_3c);\n                  if (local_48[iVar11] != '=') {\n                    iVar11 = dcgettext(0,unaff_EBP + 0x3457a,5);\n                    goto LAB_0002b07a;\n                  }\n                  uVar13 = FUN_00035970(local_3c);\n                  iVar11 = FUN_000254b0(*(undefined4 *)(iVar8 + 0x14),uVar13);\n                  uVar13 = local_3c[0];\n                  if (iVar11 == 0) {\n                    uVar10 = *(undefined4 *)(iVar8 + 0x18);\n                    uVar12 = dcgettext(0,unaff_EBP + 0x3459a,5);\n                    FUN_0002bd60(uVar12,uVar13,uVar10);\n                    FUN_000358a0(local_3c);\n                    uVar9 = FUN_00029a00();\n                    bVar4 = true;\n                    goto LAB_0002aebd;\n                  }\n                  if (*(int *)(iVar11 + 0x20) != 0) {\n                    uVar13 = *(undefined4 *)(iVar8 + 0x18);\n                    uVar10 = *(undefined4 *)(iVar11 + 4);\n                    uVar12 = dcgettext(0,unaff_EBP + 0x345ce,5);\n                    FUN_0002bc80(uVar12,uVar10,uVar13);\n                    FUN_000358a0(iVar11 + 0x1c);\n                  }\n                  uVar9 = FUN_00029a00();\n                  bVar4 = true;\n                  iVar2 = *(int *)(&DAT_0005e002 + unaff_EBP);\n                  local_58 = (local_58 + 1) - (uint)(*(int *)(iVar11 + 0x20) == 0);\n                  goto joined_r0x0002b16d;\n                }\n              }\n              break;\n            }\n            if (*(int *)(&DAT_0005e006 + unaff_EBP) != 0) break;\n            if (*(int *)(&DAT_0005e002 + unaff_EBP) != 0) {\n              if ((bVar1 & 0xfd) == 0x3c) {\n                if (uVar16 < local_44) goto LAB_0002b0c6;\n                break;\n              }\n              if (bVar1 == 0x27) break;\n            }\n            if (bVar1 == 0x3d) {\n              if (uVar16 < local_44) goto LAB_0002b0cf;\n              break;\n            }\n            uVar16 = uVar16 + 1;\n          } while (uVar16 != local_44);\n          if (bVar4) {\n            iVar11 = dcgettext(0,unaff_EBP + 0x3460e,5);\nLAB_0002b07a:\n            if (iVar11 == 0) break;\n            if (*(int *)(&DAT_0005e002 + unaff_EBP) != 0) goto LAB_0002af93;\nLAB_0002b090:\n            FUN_000357d0(local_3c);\n            goto LAB_0002afd9;\n          }\n          if (puVar18 == (undefined4 *)0x0) {\n            if (*(int *)(&DAT_0005e002 + unaff_EBP) == 0) {\n              iVar11 = dcgettext(0,unaff_EBP + 0x34312,5);\n              if (iVar11 != 0) goto LAB_0002b090;\n              piVar17 = *(int **)(iVar8 + 0x10);\n              if (piVar17 == (int *)0x0) goto LAB_0002af6d;\n              goto LAB_0002aef9;\n            }\n            puVar18 = (undefined4 *)FUN_00028ba0();\n            iVar11 = -1;\n            puVar14 = *(undefined4 **)(iVar8 + 0x10);\n            if (*(undefined4 **)(iVar8 + 0x10) == (undefined4 *)0x0) {\n              iVar11 = 0;\n              puVar15 = (undefined4 *)(iVar8 + 0x10);\n            }\n            else {\n              do {\n                puVar15 = puVar14;\n                if (iVar11 <= (int)puVar15[10]) {\n                  iVar11 = puVar15[10] + 1;\n                }\n                puVar14 = (undefined4 *)*puVar15;\n              } while ((undefined4 *)*puVar15 != (undefined4 *)0x0);\n              if (iVar11 == -1) {\n                iVar11 = 0;\n              }\n            }\n            *puVar15 = puVar18;\n            puVar18[10] = iVar11;\n          }\n          if (puVar18[0xb] == 2) {\n            FUN_00035930(puVar18 + 7,local_48 + uVar9,local_44 - uVar9);\n            uVar9 = local_44;\n          }\n          else {\n            uVar9 = FUN_00029a00();\n          }\n          local_58 = (local_58 + 1) - (uint)(puVar18[8] == 0);\n          do {\n            puVar18 = (undefined4 *)*puVar18;\n            if (puVar18 == (undefined4 *)0x0) break;\n          } while ((int)puVar18[10] < 0);\nLAB_0002aebd:\n          iVar2 = *(int *)(&DAT_0005e002 + unaff_EBP);\njoined_r0x0002b16d:\n          if (iVar2 != 0) goto LAB_0002aecb;\n          uVar9 = FUN_000359c0(uVar9,&local_48);\n          if (local_44 <= uVar9) break;\n        } while( true );\n      }\n      piVar17 = *(int **)(iVar8 + 0x10);\n      if (piVar17 != (int *)0x0) goto LAB_0002aef9;\n      goto LAB_0002af58;\n    }\n  }\n  return 0;\nLAB_0002aecb:\n  cVar7 = local_48[uVar9];\n  if (cVar7 == ',') {\n    uVar9 = uVar9 + 1;\n    cVar7 = local_48[uVar9];\n  }\n  if ((cVar7 == ' ') || (cVar7 == '\t')) goto LAB_0002aeea;\n  goto LAB_0002ae00;\nLAB_0002aeea:\n  piVar17 = *(int **)(iVar8 + 0x10);\n  if (piVar17 != (int *)0x0) {\nLAB_0002aef9:\n    do {\n      while ((piVar17[0xb] != 1 || (piVar17[8] != 0))) {\n        piVar17 = (int *)*piVar17;\n        if (piVar17 == (int *)0x0) goto LAB_0002af58;\n      }\n      iVar11 = piVar17[1];\n      uVar13 = *(undefined4 *)(iVar8 + 0x18);\n      uVar10 = dcgettext(0,unaff_EBP + 0x3463a,5);\n      FUN_0002bd60(uVar10,iVar11,uVar13);\n      piVar17 = (int *)*piVar17;\n    } while (piVar17 != (int *)0x0);\nLAB_0002af58:\n    if (*(int *)(&DAT_0005e002 + unaff_EBP) == 0) goto LAB_0002af6d;\n  }\n  FUN_000358a0(local_3c);\n  iVar11 = unaff_EBP + 0x342bc;\n  if (*(int *)(&DAT_0005dffe + unaff_EBP) == 0) {\n    iVar11 = unaff_EBP + 0x342bd;\n  }\n  FUN_000358e0(local_3c,iVar11);\n  uVar13 = FUN_00035970(local_3c);\n  iVar11 = FUN_000254b0(*(undefined4 *)(iVar8 + 0x14),uVar13);\n  sprintf(local_30,(char *)(FUN_000357f0 + unaff_EBP + 4),local_58);\n  FUN_000358e0(iVar11 + 0x1c,local_30);\nLAB_0002af6d:\n  iVar11 = FUN_00028f30(*(undefined4 *)(iVar8 + 0x14),iVar8);\n  if (*(int *)(&DAT_0005e002 + unaff_EBP) != 0) {\nLAB_0002af93:\n    puVar14 = (undefined4 *)(iVar8 + 0x10);\n    puVar18 = *(undefined4 **)(iVar8 + 0x10);\n    while (puVar15 = puVar14, puVar18 != (undefined4 *)0x0) {\n      piVar17 = puVar18 + 2;\n      puVar3 = (undefined4 *)*puVar18;\n      puVar14 = puVar18;\n      puVar18 = puVar3;\n      if (*piVar17 == 0) {\n        FUN_00028bf0();\n        *puVar15 = puVar3;\n        puVar14 = puVar15;\n      }\n    }\n  }\n  FUN_000357d0(local_3c);\n  if (iVar11 == 0) {\n    *(int *)(&DAT_0005dff6 + unaff_EBP) = *(int *)(&DAT_0005dff6 + unaff_EBP) + 1;\n  }\nLAB_0002afd9:\n  *param_3 = iVar11;\n  FUN_000357d0(&local_48);\n  if (param_4 == (int *)0x0) {\n    return 1;\n  }\n  *param_4 = iVar8;\n  return 1;\n}" (type_identifier "undefined4") (function_declarator "FUN_0002ac00(byte *param_1,undefined4 param_2,int *param_3,int *param_4)" (identifier "FUN_0002ac00") (parameter_list "(byte *param_1,undefined4 param_2,int *param_3,int *param_4)" (( "(") (parameter_declaration "byte *param_1" (type_identifier "byte") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "undefined4 param_2" (type_identifier "undefined4") (identifier "param_2")) (, ",") (parameter_declaration "int *param_3" (primitive_type "int") (pointer_declarator "*param_3" (* "*") (identifier "param_3"))) (, ",") (parameter_declaration "int *param_4" (primitive_type "int") (pointer_declarator "*param_4" (* "*") (identifier "param_4"))) () ")"))) (compound_statement "{\n  byte bVar1;\n  int iVar2;\n  undefined4 *puVar3;\n  bool bVar4;\n  byte *pbVar5;\n  byte bVar6;\n  char cVar7;\n  void *__dest;\n  byte *__ptr;\n  int iVar8;\n  uint uVar9;\n  undefined4 uVar10;\n  int iVar11;\n  undefined4 uVar12;\n  undefined4 uVar13;\n  undefined4 *puVar14;\n  undefined4 *puVar15;\n  size_t __n;\n  uint uVar16;\n  int unaff_EBP;\n  int *piVar17;\n  undefined4 *puVar18;\n  byte *pbVar19;\n  int local_58;\n  char *local_48;\n  uint local_44;\n  undefined4 local_3c [3];\n  char local_30 [32];\n  \n  FUN_0001fe10();\n  iVar8 = unaff_EBP + 0x557ba;\n  if (((*(byte *)(iVar8 + (uint)*param_1) & 2) != 0) ||\n     ((*(int *)(&DAT_0005e002 + unaff_EBP) != 0 && (*param_1 == 0x2e)))) {\n    pbVar19 = param_1 + 1;\n    bVar1 = *(byte *)(iVar8 + (uint)param_1[1]);\n    while ((bVar1 & 1) != 0) {\n      pbVar19 = pbVar19 + 1;\n      bVar1 = *(byte *)(iVar8 + (uint)*pbVar19);\n    }\n    pbVar19 = pbVar19 + ((bVar1 & 4) != 0);\n    __n = (int)pbVar19 - (int)param_1;\n    __dest = (void *)xmalloc(__n + 1);\n    *(undefined1 *)((int)__dest + __n) = 0;\n    __ptr = (byte *)memcpy(__dest,param_1,__n);\n    iVar8 = *(int *)(unaff_EBP + 0x553ca);\n    bVar1 = *__ptr;\n    pbVar5 = __ptr;\n    while (bVar1 != 0) {\n      *pbVar5 = *(byte *)(iVar8 + (uint)bVar1);\n      bVar1 = pbVar5[1];\n      pbVar5 = pbVar5 + 1;\n    }\n    iVar8 = FUN_000254b0(*(undefined4 *)("%S.000%z" + unaff_EBP),__ptr);\n    free(__ptr);\n    if (iVar8 != 0) {\n      FUN_00035790(&local_48);\n      bVar1 = *pbVar19;\n      while ((0xd < bVar1 || ((0x2401U >> ((int)(char)bVar1 & 0x1fU) & 1) == 0))) {\n        pbVar19 = pbVar19 + 1;\n        FUN_000358b0(&local_48,(int)(char)bVar1);\n        bVar1 = *pbVar19;\n      }\n      FUN_00035790(param_2);\n      FUN_00035790(local_3c);\n      piVar17 = *(int **)(iVar8 + 0x10);\n      if (piVar17 != (int *)0x0) {\n        do {\n          FUN_000358a0(piVar17 + 7);\n          piVar17 = (int *)*piVar17;\n        } while (piVar17 != (int *)0x0);\n        for (puVar18 = *(undefined4 **)(iVar8 + 0x10); puVar18 != (undefined4 *)0x0;\n            puVar18 = (undefined4 *)*puVar18) {\n          if (-1 < (int)puVar18[10]) goto LAB_0002adc1;\n        }\n      }\n      puVar18 = (undefined4 *)0x0;\nLAB_0002adc1:\n      uVar9 = 0;\n      if ((*(int *)(&DAT_0005e002 + unaff_EBP) != 0) && (uVar9 = local_44, local_44 != 0)) {\n        if (*local_48 == '.') {\n          if (((local_44 < 2) || (local_48[1] == ' ')) || (local_48[1] == '\t')) {\n            uVar9 = 1;\n          }\n          else {\n            puVar14 = (undefined4 *)FUN_00028ba0();\n            puVar14[10] = 0xffffffff;\n            *puVar14 = *(undefined4 *)(iVar8 + 0x10);\n            *(undefined4 **)(iVar8 + 0x10) = puVar14;\n            uVar9 = FUN_00029a00();\n          }\n        }\n        else {\n          uVar9 = 0;\n        }\n      }\n      uVar9 = FUN_00035980(uVar9,&local_48);\n      local_58 = 0;\n      bVar4 = false;\nLAB_0002ae00:\n      if (uVar9 < local_44) {\n        do {\n          uVar16 = uVar9;\n          do {\n            bVar1 = local_48[uVar16];\n            bVar6 = 1;\n            if ((byte)(bVar1 - 0x20) < 0x1c) {\n              bVar6 = ~(byte)(0x8001305 >> (bVar1 - 0x20 & 0x1f)) & 1;\n            }\n            if ((bVar1 == 9) || (bVar6 == 0)) {\n              if ((uVar16 < local_44) && (*(int *)(&DAT_0005e006 + unaff_EBP) == 0)) {\nLAB_0002b0c6:\n                if (bVar1 == 0x3d) {\nLAB_0002b0cf:\n                  FUN_000358a0(local_3c);\n                  iVar11 = FUN_00028c80(local_3c);\n                  if (local_48[iVar11] != '=') {\n                    iVar11 = dcgettext(0,unaff_EBP + 0x3457a,5);\n                    goto LAB_0002b07a;\n                  }\n                  uVar13 = FUN_00035970(local_3c);\n                  iVar11 = FUN_000254b0(*(undefined4 *)(iVar8 + 0x14),uVar13);\n                  uVar13 = local_3c[0];\n                  if (iVar11 == 0) {\n                    uVar10 = *(undefined4 *)(iVar8 + 0x18);\n                    uVar12 = dcgettext(0,unaff_EBP + 0x3459a,5);\n                    FUN_0002bd60(uVar12,uVar13,uVar10);\n                    FUN_000358a0(local_3c);\n                    uVar9 = FUN_00029a00();\n                    bVar4 = true;\n                    goto LAB_0002aebd;\n                  }\n                  if (*(int *)(iVar11 + 0x20) != 0) {\n                    uVar13 = *(undefined4 *)(iVar8 + 0x18);\n                    uVar10 = *(undefined4 *)(iVar11 + 4);\n                    uVar12 = dcgettext(0,unaff_EBP + 0x345ce,5);\n                    FUN_0002bc80(uVar12,uVar10,uVar13);\n                    FUN_000358a0(iVar11 + 0x1c);\n                  }\n                  uVar9 = FUN_00029a00();\n                  bVar4 = true;\n                  iVar2 = *(int *)(&DAT_0005e002 + unaff_EBP);\n                  local_58 = (local_58 + 1) - (uint)(*(int *)(iVar11 + 0x20) == 0);\n                  goto joined_r0x0002b16d;\n                }\n              }\n              break;\n            }\n            if (*(int *)(&DAT_0005e006 + unaff_EBP) != 0) break;\n            if (*(int *)(&DAT_0005e002 + unaff_EBP) != 0) {\n              if ((bVar1 & 0xfd) == 0x3c) {\n                if (uVar16 < local_44) goto LAB_0002b0c6;\n                break;\n              }\n              if (bVar1 == 0x27) break;\n            }\n            if (bVar1 == 0x3d) {\n              if (uVar16 < local_44) goto LAB_0002b0cf;\n              break;\n            }\n            uVar16 = uVar16 + 1;\n          } while (uVar16 != local_44);\n          if (bVar4) {\n            iVar11 = dcgettext(0,unaff_EBP + 0x3460e,5);\nLAB_0002b07a:\n            if (iVar11 == 0) break;\n            if (*(int *)(&DAT_0005e002 + unaff_EBP) != 0) goto LAB_0002af93;\nLAB_0002b090:\n            FUN_000357d0(local_3c);\n            goto LAB_0002afd9;\n          }\n          if (puVar18 == (undefined4 *)0x0) {\n            if (*(int *)(&DAT_0005e002 + unaff_EBP) == 0) {\n              iVar11 = dcgettext(0,unaff_EBP + 0x34312,5);\n              if (iVar11 != 0) goto LAB_0002b090;\n              piVar17 = *(int **)(iVar8 + 0x10);\n              if (piVar17 == (int *)0x0) goto LAB_0002af6d;\n              goto LAB_0002aef9;\n            }\n            puVar18 = (undefined4 *)FUN_00028ba0();\n            iVar11 = -1;\n            puVar14 = *(undefined4 **)(iVar8 + 0x10);\n            if (*(undefined4 **)(iVar8 + 0x10) == (undefined4 *)0x0) {\n              iVar11 = 0;\n              puVar15 = (undefined4 *)(iVar8 + 0x10);\n            }\n            else {\n              do {\n                puVar15 = puVar14;\n                if (iVar11 <= (int)puVar15[10]) {\n                  iVar11 = puVar15[10] + 1;\n                }\n                puVar14 = (undefined4 *)*puVar15;\n              } while ((undefined4 *)*puVar15 != (undefined4 *)0x0);\n              if (iVar11 == -1) {\n                iVar11 = 0;\n              }\n            }\n            *puVar15 = puVar18;\n            puVar18[10] = iVar11;\n          }\n          if (puVar18[0xb] == 2) {\n            FUN_00035930(puVar18 + 7,local_48 + uVar9,local_44 - uVar9);\n            uVar9 = local_44;\n          }\n          else {\n            uVar9 = FUN_00029a00();\n          }\n          local_58 = (local_58 + 1) - (uint)(puVar18[8] == 0);\n          do {\n            puVar18 = (undefined4 *)*puVar18;\n            if (puVar18 == (undefined4 *)0x0) break;\n          } while ((int)puVar18[10] < 0);\nLAB_0002aebd:\n          iVar2 = *(int *)(&DAT_0005e002 + unaff_EBP);\njoined_r0x0002b16d:\n          if (iVar2 != 0) goto LAB_0002aecb;\n          uVar9 = FUN_000359c0(uVar9,&local_48);\n          if (local_44 <= uVar9) break;\n        } while( true );\n      }\n      piVar17 = *(int **)(iVar8 + 0x10);\n      if (piVar17 != (int *)0x0) goto LAB_0002aef9;\n      goto LAB_0002af58;\n    }\n  }\n  return 0;\nLAB_0002aecb:\n  cVar7 = local_48[uVar9];\n  if (cVar7 == ',') {\n    uVar9 = uVar9 + 1;\n    cVar7 = local_48[uVar9];\n  }\n  if ((cVar7 == ' ') || (cVar7 == '\t')) goto LAB_0002aeea;\n  goto LAB_0002ae00;\nLAB_0002aeea:\n  piVar17 = *(int **)(iVar8 + 0x10);\n  if (piVar17 != (int *)0x0) {\nLAB_0002aef9:\n    do {\n      while ((piVar17[0xb] != 1 || (piVar17[8] != 0))) {\n        piVar17 = (int *)*piVar17;\n        if (piVar17 == (int *)0x0) goto LAB_0002af58;\n      }\n      iVar11 = piVar17[1];\n      uVar13 = *(undefined4 *)(iVar8 + 0x18);\n      uVar10 = dcgettext(0,unaff_EBP + 0x3463a,5);\n      FUN_0002bd60(uVar10,iVar11,uVar13);\n      piVar17 = (int *)*piVar17;\n    } while (piVar17 != (int *)0x0);\nLAB_0002af58:\n    if (*(int *)(&DAT_0005e002 + unaff_EBP) == 0) goto LAB_0002af6d;\n  }\n  FUN_000358a0(local_3c);\n  iVar11 = unaff_EBP + 0x342bc;\n  if (*(int *)(&DAT_0005dffe + unaff_EBP) == 0) {\n    iVar11 = unaff_EBP + 0x342bd;\n  }\n  FUN_000358e0(local_3c,iVar11);\n  uVar13 = FUN_00035970(local_3c);\n  iVar11 = FUN_000254b0(*(undefined4 *)(iVar8 + 0x14),uVar13);\n  sprintf(local_30,(char *)(FUN_000357f0 + unaff_EBP + 4),local_58);\n  FUN_000358e0(iVar11 + 0x1c,local_30);\nLAB_0002af6d:\n  iVar11 = FUN_00028f30(*(undefined4 *)(iVar8 + 0x14),iVar8);\n  if (*(int *)(&DAT_0005e002 + unaff_EBP) != 0) {\nLAB_0002af93:\n    puVar14 = (undefined4 *)(iVar8 + 0x10);\n    puVar18 = *(undefined4 **)(iVar8 + 0x10);\n    while (puVar15 = puVar14, puVar18 != (undefined4 *)0x0) {\n      piVar17 = puVar18 + 2;\n      puVar3 = (undefined4 *)*puVar18;\n      puVar14 = puVar18;\n      puVar18 = puVar3;\n      if (*piVar17 == 0) {\n        FUN_00028bf0();\n        *puVar15 = puVar3;\n        puVar14 = puVar15;\n      }\n    }\n  }\n  FUN_000357d0(local_3c);\n  if (iVar11 == 0) {\n    *(int *)(&DAT_0005dff6 + unaff_EBP) = *(int *)(&DAT_0005dff6 + unaff_EBP) + 1;\n  }\nLAB_0002afd9:\n  *param_3 = iVar11;\n  FUN_000357d0(&local_48);\n  if (param_4 == (int *)0x0) {\n    return 1;\n  }\n  *param_4 = iVar8;\n  return 1;\n}" ({ "{") (declaration "byte bVar1;" (type_identifier "byte") (identifier "bVar1") (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "undefined4 *puVar3;" (type_identifier "undefined4") (pointer_declarator "*puVar3" (* "*") (identifier "puVar3")) (; ";")) (declaration "bool bVar4;" (primitive_type "bool") (identifier "bVar4") (; ";")) (declaration "byte *pbVar5;" (type_identifier "byte") (pointer_declarator "*pbVar5" (* "*") (identifier "pbVar5")) (; ";")) (declaration "byte bVar6;" (type_identifier "byte") (identifier "bVar6") (; ";")) (declaration "char cVar7;" (primitive_type "char") (identifier "cVar7") (; ";")) (declaration "void *__dest;" (primitive_type "void") (pointer_declarator "*__dest" (* "*") (identifier "__dest")) (; ";")) (declaration "byte *__ptr;" (type_identifier "byte") (pointer_declarator "*__ptr" (* "*") (identifier "__ptr")) (; ";")) (declaration "int iVar8;" (primitive_type "int") (identifier "iVar8") (; ";")) (declaration "uint uVar9;" (type_identifier "uint") (identifier "uVar9") (; ";")) (declaration "undefined4 uVar10;" (type_identifier "undefined4") (identifier "uVar10") (; ";")) (declaration "int iVar11;" (primitive_type "int") (identifier "iVar11") (; ";")) (declaration "undefined4 uVar12;" (type_identifier "undefined4") (identifier "uVar12") (; ";")) (declaration "undefined4 uVar13;" (type_identifier "undefined4") (identifier "uVar13") (; ";")) (declaration "undefined4 *puVar14;" (type_identifier "undefined4") (pointer_declarator "*puVar14" (* "*") (identifier "puVar14")) (; ";")) (declaration "undefined4 *puVar15;" (type_identifier "undefined4") (pointer_declarator "*puVar15" (* "*") (identifier "puVar15")) (; ";")) (declaration "size_t __n;" (primitive_type "size_t") (identifier "__n") (; ";")) (declaration "uint uVar16;" (type_identifier "uint") (identifier "uVar16") (; ";")) (declaration "int unaff_EBP;" (primitive_type "int") (identifier "unaff_EBP") (; ";")) (declaration "int *piVar17;" (primitive_type "int") (pointer_declarator "*piVar17" (* "*") (identifier "piVar17")) (; ";")) (declaration "undefined4 *puVar18;" (type_identifier "undefined4") (pointer_declarator "*puVar18" (* "*") (identifier "puVar18")) (; ";")) (declaration "byte *pbVar19;" (type_identifier "byte") (pointer_declarator "*pbVar19" (* "*") (identifier "pbVar19")) (; ";")) (declaration "int local_58;" (primitive_type "int") (identifier "local_58") (; ";")) (declaration "char *local_48;" (primitive_type "char") (pointer_declarator "*local_48" (* "*") (identifier "local_48")) (; ";")) (declaration "uint local_44;" (type_identifier "uint") (identifier "local_44") (; ";")) (declaration "undefined4 local_3c [3];" (type_identifier "undefined4") (array_declarator "local_3c [3]" (identifier "local_3c") ([ "[") (number_literal "3") (] "]")) (; ";")) (declaration "char local_30 [32];" (primitive_type "char") (array_declarator "local_30 [32]" (identifier "local_30") ([ "[") (number_literal "32") (] "]")) (; ";")) (expression_statement "FUN_0001fe10();" (call_expression "FUN_0001fe10()" (identifier "FUN_0001fe10") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "iVar8 = unaff_EBP + 0x557ba;" (assignment_expression "iVar8 = unaff_EBP + 0x557ba" (identifier "iVar8") (= "=") (binary_expression "unaff_EBP + 0x557ba" (identifier "unaff_EBP") (+ "+") (number_literal "0x557ba"))) (; ";")) (if_statement "if (((*(byte *)(iVar8 + (uint)*param_1) & 2) != 0) ||\n     ((*(int *)(&DAT_0005e002 + unaff_EBP) != 0 && (*param_1 == 0x2e)))) {\n    pbVar19 = param_1 + 1;\n    bVar1 = *(byte *)(iVar8 + (uint)param_1[1]);\n    while ((bVar1 & 1) != 0) {\n      pbVar19 = pbVar19 + 1;\n      bVar1 = *(byte *)(iVar8 + (uint)*pbVar19);\n    }\n    pbVar19 = pbVar19 + ((bVar1 & 4) != 0);\n    __n = (int)pbVar19 - (int)param_1;\n    __dest = (void *)xmalloc(__n + 1);\n    *(undefined1 *)((int)__dest + __n) = 0;\n    __ptr = (byte *)memcpy(__dest,param_1,__n);\n    iVar8 = *(int *)(unaff_EBP + 0x553ca);\n    bVar1 = *__ptr;\n    pbVar5 = __ptr;\n    while (bVar1 != 0) {\n      *pbVar5 = *(byte *)(iVar8 + (uint)bVar1);\n      bVar1 = pbVar5[1];\n      pbVar5 = pbVar5 + 1;\n    }\n    iVar8 = FUN_000254b0(*(undefined4 *)("%S.000%z" + unaff_EBP),__ptr);\n    free(__ptr);\n    if (iVar8 != 0) {\n      FUN_00035790(&local_48);\n      bVar1 = *pbVar19;\n      while ((0xd < bVar1 || ((0x2401U >> ((int)(char)bVar1 & 0x1fU) & 1) == 0))) {\n        pbVar19 = pbVar19 + 1;\n        FUN_000358b0(&local_48,(int)(char)bVar1);\n        bVar1 = *pbVar19;\n      }\n      FUN_00035790(param_2);\n      FUN_00035790(local_3c);\n      piVar17 = *(int **)(iVar8 + 0x10);\n      if (piVar17 != (int *)0x0) {\n        do {\n          FUN_000358a0(piVar17 + 7);\n          piVar17 = (int *)*piVar17;\n        } while (piVar17 != (int *)0x0);\n        for (puVar18 = *(undefined4 **)(iVar8 + 0x10); puVar18 != (undefined4 *)0x0;\n            puVar18 = (undefined4 *)*puVar18) {\n          if (-1 < (int)puVar18[10]) goto LAB_0002adc1;\n        }\n      }\n      puVar18 = (undefined4 *)0x0;\nLAB_0002adc1:\n      uVar9 = 0;\n      if ((*(int *)(&DAT_0005e002 + unaff_EBP) != 0) && (uVar9 = local_44, local_44 != 0)) {\n        if (*local_48 == '.') {\n          if (((local_44 < 2) || (local_48[1] == ' ')) || (local_48[1] == '\t')) {\n            uVar9 = 1;\n          }\n          else {\n            puVar14 = (undefined4 *)FUN_00028ba0();\n            puVar14[10] = 0xffffffff;\n            *puVar14 = *(undefined4 *)(iVar8 + 0x10);\n            *(undefined4 **)(iVar8 + 0x10) = puVar14;\n            uVar9 = FUN_00029a00();\n          }\n        }\n        else {\n          uVar9 = 0;\n        }\n      }\n      uVar9 = FUN_00035980(uVar9,&local_48);\n      local_58 = 0;\n      bVar4 = false;\nLAB_0002ae00:\n      if (uVar9 < local_44) {\n        do {\n          uVar16 = uVar9;\n          do {\n            bVar1 = local_48[uVar16];\n            bVar6 = 1;\n            if ((byte)(bVar1 - 0x20) < 0x1c) {\n              bVar6 = ~(byte)(0x8001305 >> (bVar1 - 0x20 & 0x1f)) & 1;\n            }\n            if ((bVar1 == 9) || (bVar6 == 0)) {\n              if ((uVar16 < local_44) && (*(int *)(&DAT_0005e006 + unaff_EBP) == 0)) {\nLAB_0002b0c6:\n                if (bVar1 == 0x3d) {\nLAB_0002b0cf:\n                  FUN_000358a0(local_3c);\n                  iVar11 = FUN_00028c80(local_3c);\n                  if (local_48[iVar11] != '=') {\n                    iVar11 = dcgettext(0,unaff_EBP + 0x3457a,5);\n                    goto LAB_0002b07a;\n                  }\n                  uVar13 = FUN_00035970(local_3c);\n                  iVar11 = FUN_000254b0(*(undefined4 *)(iVar8 + 0x14),uVar13);\n                  uVar13 = local_3c[0];\n                  if (iVar11 == 0) {\n                    uVar10 = *(undefined4 *)(iVar8 + 0x18);\n                    uVar12 = dcgettext(0,unaff_EBP + 0x3459a,5);\n                    FUN_0002bd60(uVar12,uVar13,uVar10);\n                    FUN_000358a0(local_3c);\n                    uVar9 = FUN_00029a00();\n                    bVar4 = true;\n                    goto LAB_0002aebd;\n                  }\n                  if (*(int *)(iVar11 + 0x20) != 0) {\n                    uVar13 = *(undefined4 *)(iVar8 + 0x18);\n                    uVar10 = *(undefined4 *)(iVar11 + 4);\n                    uVar12 = dcgettext(0,unaff_EBP + 0x345ce,5);\n                    FUN_0002bc80(uVar12,uVar10,uVar13);\n                    FUN_000358a0(iVar11 + 0x1c);\n                  }\n                  uVar9 = FUN_00029a00();\n                  bVar4 = true;\n                  iVar2 = *(int *)(&DAT_0005e002 + unaff_EBP);\n                  local_58 = (local_58 + 1) - (uint)(*(int *)(iVar11 + 0x20) == 0);\n                  goto joined_r0x0002b16d;\n                }\n              }\n              break;\n            }\n            if (*(int *)(&DAT_0005e006 + unaff_EBP) != 0) break;\n            if (*(int *)(&DAT_0005e002 + unaff_EBP) != 0) {\n              if ((bVar1 & 0xfd) == 0x3c) {\n                if (uVar16 < local_44) goto LAB_0002b0c6;\n                break;\n              }\n              if (bVar1 == 0x27) break;\n            }\n            if (bVar1 == 0x3d) {\n              if (uVar16 < local_44) goto LAB_0002b0cf;\n              break;\n            }\n            uVar16 = uVar16 + 1;\n          } while (uVar16 != local_44);\n          if (bVar4) {\n            iVar11 = dcgettext(0,unaff_EBP + 0x3460e,5);\nLAB_0002b07a:\n            if (iVar11 == 0) break;\n            if (*(int *)(&DAT_0005e002 + unaff_EBP) != 0) goto LAB_0002af93;\nLAB_0002b090:\n            FUN_000357d0(local_3c);\n            goto LAB_0002afd9;\n          }\n          if (puVar18 == (undefined4 *)0x0) {\n            if (*(int *)(&DAT_0005e002 + unaff_EBP) == 0) {\n              iVar11 = dcgettext(0,unaff_EBP + 0x34312,5);\n              if (iVar11 != 0) goto LAB_0002b090;\n              piVar17 = *(int **)(iVar8 + 0x10);\n              if (piVar17 == (int *)0x0) goto LAB_0002af6d;\n              goto LAB_0002aef9;\n            }\n            puVar18 = (undefined4 *)FUN_00028ba0();\n            iVar11 = -1;\n            puVar14 = *(undefined4 **)(iVar8 + 0x10);\n            if (*(undefined4 **)(iVar8 + 0x10) == (undefined4 *)0x0) {\n              iVar11 = 0;\n              puVar15 = (undefined4 *)(iVar8 + 0x10);\n            }\n            else {\n              do {\n                puVar15 = puVar14;\n                if (iVar11 <= (int)puVar15[10]) {\n                  iVar11 = puVar15[10] + 1;\n                }\n                puVar14 = (undefined4 *)*puVar15;\n              } while ((undefined4 *)*puVar15 != (undefined4 *)0x0);\n              if (iVar11 == -1) {\n                iVar11 = 0;\n              }\n            }\n            *puVar15 = puVar18;\n            puVar18[10] = iVar11;\n          }\n          if (puVar18[0xb] == 2) {\n            FUN_00035930(puVar18 + 7,local_48 + uVar9,local_44 - uVar9);\n            uVar9 = local_44;\n          }\n          else {\n            uVar9 = FUN_00029a00();\n          }\n          local_58 = (local_58 + 1) - (uint)(puVar18[8] == 0);\n          do {\n            puVar18 = (undefined4 *)*puVar18;\n            if (puVar18 == (undefined4 *)0x0) break;\n          } while ((int)puVar18[10] < 0);\nLAB_0002aebd:\n          iVar2 = *(int *)(&DAT_0005e002 + unaff_EBP);\njoined_r0x0002b16d:\n          if (iVar2 != 0) goto LAB_0002aecb;\n          uVar9 = FUN_000359c0(uVar9,&local_48);\n          if (local_44 <= uVar9) break;\n        } while( true );\n      }\n      piVar17 = *(int **)(iVar8 + 0x10);\n      if (piVar17 != (int *)0x0) goto LAB_0002aef9;\n      goto LAB_0002af58;\n    }\n  }" (if "if") (parenthesized_expression "(((*(byte *)(iVar8 + (uint)*param_1) & 2) != 0) ||\n     ((*(int *)(&DAT_0005e002 + unaff_EBP) != 0 && (*param_1 == 0x2e))))" (( "(") (binary_expression "((*(byte *)(iVar8 + (uint)*param_1) & 2) != 0) ||\n     ((*(int *)(&DAT_0005e002 + unaff_EBP) != 0 && (*param_1 == 0x2e)))" (parenthesized_expression "((*(byte *)(iVar8 + (uint)*param_1) & 2) != 0)" (( "(") (binary_expression "(*(byte *)(iVar8 + (uint)*param_1) & 2) != 0" (parenthesized_expression "(*(byte *)(iVar8 + (uint)*param_1) & 2)" (( "(") (binary_expression "*(byte *)(iVar8 + (uint)*param_1) & 2" (pointer_expression "*(byte *)(iVar8 + (uint)*param_1)" (* "*") (cast_expression "(byte *)(iVar8 + (uint)*param_1)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + (uint)*param_1)" (( "(") (binary_expression "iVar8 + (uint)*param_1" (identifier "iVar8") (+ "+") (binary_expression "(uint)*param_1" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (identifier "param_1"))) () ")")))) (& "&") (number_literal "2")) () ")")) (!= "!=") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "((*(int *)(&DAT_0005e002 + unaff_EBP) != 0 && (*param_1 == 0x2e)))" (( "(") (parenthesized_expression "(*(int *)(&DAT_0005e002 + unaff_EBP) != 0 && (*param_1 == 0x2e))" (( "(") (binary_expression "*(int *)(&DAT_0005e002 + unaff_EBP) != 0 && (*param_1 == 0x2e)" (binary_expression "*(int *)(&DAT_0005e002 + unaff_EBP) != 0" (pointer_expression "*(int *)(&DAT_0005e002 + unaff_EBP)" (* "*") (cast_expression "(int *)(&DAT_0005e002 + unaff_EBP)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&DAT_0005e002 + unaff_EBP)" (( "(") (binary_expression "&DAT_0005e002 + unaff_EBP" (pointer_expression "&DAT_0005e002" (& "&") (identifier "DAT_0005e002")) (+ "+") (identifier "unaff_EBP")) () ")")))) (!= "!=") (number_literal "0")) (&& "&&") (parenthesized_expression "(*param_1 == 0x2e)" (( "(") (binary_expression "*param_1 == 0x2e" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (== "==") (number_literal "0x2e")) () ")"))) () ")")) () ")"))) () ")")) (compound_statement "{\n    pbVar19 = param_1 + 1;\n    bVar1 = *(byte *)(iVar8 + (uint)param_1[1]);\n    while ((bVar1 & 1) != 0) {\n      pbVar19 = pbVar19 + 1;\n      bVar1 = *(byte *)(iVar8 + (uint)*pbVar19);\n    }\n    pbVar19 = pbVar19 + ((bVar1 & 4) != 0);\n    __n = (int)pbVar19 - (int)param_1;\n    __dest = (void *)xmalloc(__n + 1);\n    *(undefined1 *)((int)__dest + __n) = 0;\n    __ptr = (byte *)memcpy(__dest,param_1,__n);\n    iVar8 = *(int *)(unaff_EBP + 0x553ca);\n    bVar1 = *__ptr;\n    pbVar5 = __ptr;\n    while (bVar1 != 0) {\n      *pbVar5 = *(byte *)(iVar8 + (uint)bVar1);\n      bVar1 = pbVar5[1];\n      pbVar5 = pbVar5 + 1;\n    }\n    iVar8 = FUN_000254b0(*(undefined4 *)("%S.000%z" + unaff_EBP),__ptr);\n    free(__ptr);\n    if (iVar8 != 0) {\n      FUN_00035790(&local_48);\n      bVar1 = *pbVar19;\n      while ((0xd < bVar1 || ((0x2401U >> ((int)(char)bVar1 & 0x1fU) & 1) == 0))) {\n        pbVar19 = pbVar19 + 1;\n        FUN_000358b0(&local_48,(int)(char)bVar1);\n        bVar1 = *pbVar19;\n      }\n      FUN_00035790(param_2);\n      FUN_00035790(local_3c);\n      piVar17 = *(int **)(iVar8 + 0x10);\n      if (piVar17 != (int *)0x0) {\n        do {\n          FUN_000358a0(piVar17 + 7);\n          piVar17 = (int *)*piVar17;\n        } while (piVar17 != (int *)0x0);\n        for (puVar18 = *(undefined4 **)(iVar8 + 0x10); puVar18 != (undefined4 *)0x0;\n            puVar18 = (undefined4 *)*puVar18) {\n          if (-1 < (int)puVar18[10]) goto LAB_0002adc1;\n        }\n      }\n      puVar18 = (undefined4 *)0x0;\nLAB_0002adc1:\n      uVar9 = 0;\n      if ((*(int *)(&DAT_0005e002 + unaff_EBP) != 0) && (uVar9 = local_44, local_44 != 0)) {\n        if (*local_48 == '.') {\n          if (((local_44 < 2) || (local_48[1] == ' ')) || (local_48[1] == '\t')) {\n            uVar9 = 1;\n          }\n          else {\n            puVar14 = (undefined4 *)FUN_00028ba0();\n            puVar14[10] = 0xffffffff;\n            *puVar14 = *(undefined4 *)(iVar8 + 0x10);\n            *(undefined4 **)(iVar8 + 0x10) = puVar14;\n            uVar9 = FUN_00029a00();\n          }\n        }\n        else {\n          uVar9 = 0;\n        }\n      }\n      uVar9 = FUN_00035980(uVar9,&local_48);\n      local_58 = 0;\n      bVar4 = false;\nLAB_0002ae00:\n      if (uVar9 < local_44) {\n        do {\n          uVar16 = uVar9;\n          do {\n            bVar1 = local_48[uVar16];\n            bVar6 = 1;\n            if ((byte)(bVar1 - 0x20) < 0x1c) {\n              bVar6 = ~(byte)(0x8001305 >> (bVar1 - 0x20 & 0x1f)) & 1;\n            }\n            if ((bVar1 == 9) || (bVar6 == 0)) {\n              if ((uVar16 < local_44) && (*(int *)(&DAT_0005e006 + unaff_EBP) == 0)) {\nLAB_0002b0c6:\n                if (bVar1 == 0x3d) {\nLAB_0002b0cf:\n                  FUN_000358a0(local_3c);\n                  iVar11 = FUN_00028c80(local_3c);\n                  if (local_48[iVar11] != '=') {\n                    iVar11 = dcgettext(0,unaff_EBP + 0x3457a,5);\n                    goto LAB_0002b07a;\n                  }\n                  uVar13 = FUN_00035970(local_3c);\n                  iVar11 = FUN_000254b0(*(undefined4 *)(iVar8 + 0x14),uVar13);\n                  uVar13 = local_3c[0];\n                  if (iVar11 == 0) {\n                    uVar10 = *(undefined4 *)(iVar8 + 0x18);\n                    uVar12 = dcgettext(0,unaff_EBP + 0x3459a,5);\n                    FUN_0002bd60(uVar12,uVar13,uVar10);\n                    FUN_000358a0(local_3c);\n                    uVar9 = FUN_00029a00();\n                    bVar4 = true;\n                    goto LAB_0002aebd;\n                  }\n                  if (*(int *)(iVar11 + 0x20) != 0) {\n                    uVar13 = *(undefined4 *)(iVar8 + 0x18);\n                    uVar10 = *(undefined4 *)(iVar11 + 4);\n                    uVar12 = dcgettext(0,unaff_EBP + 0x345ce,5);\n                    FUN_0002bc80(uVar12,uVar10,uVar13);\n                    FUN_000358a0(iVar11 + 0x1c);\n                  }\n                  uVar9 = FUN_00029a00();\n                  bVar4 = true;\n                  iVar2 = *(int *)(&DAT_0005e002 + unaff_EBP);\n                  local_58 = (local_58 + 1) - (uint)(*(int *)(iVar11 + 0x20) == 0);\n                  goto joined_r0x0002b16d;\n                }\n              }\n              break;\n            }\n            if (*(int *)(&DAT_0005e006 + unaff_EBP) != 0) break;\n            if (*(int *)(&DAT_0005e002 + unaff_EBP) != 0) {\n              if ((bVar1 & 0xfd) == 0x3c) {\n                if (uVar16 < local_44) goto LAB_0002b0c6;\n                break;\n              }\n              if (bVar1 == 0x27) break;\n            }\n            if (bVar1 == 0x3d) {\n              if (uVar16 < local_44) goto LAB_0002b0cf;\n              break;\n            }\n            uVar16 = uVar16 + 1;\n          } while (uVar16 != local_44);\n          if (bVar4) {\n            iVar11 = dcgettext(0,unaff_EBP + 0x3460e,5);\nLAB_0002b07a:\n            if (iVar11 == 0) break;\n            if (*(int *)(&DAT_0005e002 + unaff_EBP) != 0) goto LAB_0002af93;\nLAB_0002b090:\n            FUN_000357d0(local_3c);\n            goto LAB_0002afd9;\n          }\n          if (puVar18 == (undefined4 *)0x0) {\n            if (*(int *)(&DAT_0005e002 + unaff_EBP) == 0) {\n              iVar11 = dcgettext(0,unaff_EBP + 0x34312,5);\n              if (iVar11 != 0) goto LAB_0002b090;\n              piVar17 = *(int **)(iVar8 + 0x10);\n              if (piVar17 == (int *)0x0) goto LAB_0002af6d;\n              goto LAB_0002aef9;\n            }\n            puVar18 = (undefined4 *)FUN_00028ba0();\n            iVar11 = -1;\n            puVar14 = *(undefined4 **)(iVar8 + 0x10);\n            if (*(undefined4 **)(iVar8 + 0x10) == (undefined4 *)0x0) {\n              iVar11 = 0;\n              puVar15 = (undefined4 *)(iVar8 + 0x10);\n            }\n            else {\n              do {\n                puVar15 = puVar14;\n                if (iVar11 <= (int)puVar15[10]) {\n                  iVar11 = puVar15[10] + 1;\n                }\n                puVar14 = (undefined4 *)*puVar15;\n              } while ((undefined4 *)*puVar15 != (undefined4 *)0x0);\n              if (iVar11 == -1) {\n                iVar11 = 0;\n              }\n            }\n            *puVar15 = puVar18;\n            puVar18[10] = iVar11;\n          }\n          if (puVar18[0xb] == 2) {\n            FUN_00035930(puVar18 + 7,local_48 + uVar9,local_44 - uVar9);\n            uVar9 = local_44;\n          }\n          else {\n            uVar9 = FUN_00029a00();\n          }\n          local_58 = (local_58 + 1) - (uint)(puVar18[8] == 0);\n          do {\n            puVar18 = (undefined4 *)*puVar18;\n            if (puVar18 == (undefined4 *)0x0) break;\n          } while ((int)puVar18[10] < 0);\nLAB_0002aebd:\n          iVar2 = *(int *)(&DAT_0005e002 + unaff_EBP);\njoined_r0x0002b16d:\n          if (iVar2 != 0) goto LAB_0002aecb;\n          uVar9 = FUN_000359c0(uVar9,&local_48);\n          if (local_44 <= uVar9) break;\n        } while( true );\n      }\n      piVar17 = *(int **)(iVar8 + 0x10);\n      if (piVar17 != (int *)0x0) goto LAB_0002aef9;\n      goto LAB_0002af58;\n    }\n  }" ({ "{") (expression_statement "pbVar19 = param_1 + 1;" (assignment_expression "pbVar19 = param_1 + 1" (identifier "pbVar19") (= "=") (binary_expression "param_1 + 1" (identifier "param_1") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "bVar1 = *(byte *)(iVar8 + (uint)param_1[1]);" (assignment_expression "bVar1 = *(byte *)(iVar8 + (uint)param_1[1])" (identifier "bVar1") (= "=") (pointer_expression "*(byte *)(iVar8 + (uint)param_1[1])" (* "*") (cast_expression "(byte *)(iVar8 + (uint)param_1[1])" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + (uint)param_1[1])" (( "(") (binary_expression "iVar8 + (uint)param_1[1]" (identifier "iVar8") (+ "+") (cast_expression "(uint)param_1[1]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")))) () ")"))))) (; ";")) (while_statement "while ((bVar1 & 1) != 0) {\n      pbVar19 = pbVar19 + 1;\n      bVar1 = *(byte *)(iVar8 + (uint)*pbVar19);\n    }" (while "while") (parenthesized_expression "((bVar1 & 1) != 0)" (( "(") (binary_expression "(bVar1 & 1) != 0" (parenthesized_expression "(bVar1 & 1)" (( "(") (binary_expression "bVar1 & 1" (identifier "bVar1") (& "&") (number_literal "1")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      pbVar19 = pbVar19 + 1;\n      bVar1 = *(byte *)(iVar8 + (uint)*pbVar19);\n    }" ({ "{") (expression_statement "pbVar19 = pbVar19 + 1;" (assignment_expression "pbVar19 = pbVar19 + 1" (identifier "pbVar19") (= "=") (binary_expression "pbVar19 + 1" (identifier "pbVar19") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "bVar1 = *(byte *)(iVar8 + (uint)*pbVar19);" (assignment_expression "bVar1 = *(byte *)(iVar8 + (uint)*pbVar19)" (identifier "bVar1") (= "=") (pointer_expression "*(byte *)(iVar8 + (uint)*pbVar19)" (* "*") (cast_expression "(byte *)(iVar8 + (uint)*pbVar19)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + (uint)*pbVar19)" (( "(") (binary_expression "iVar8 + (uint)*pbVar19" (identifier "iVar8") (+ "+") (binary_expression "(uint)*pbVar19" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (identifier "pbVar19"))) () ")"))))) (; ";")) (} "}"))) (expression_statement "pbVar19 = pbVar19 + ((bVar1 & 4) != 0);" (assignment_expression "pbVar19 = pbVar19 + ((bVar1 & 4) != 0)" (identifier "pbVar19") (= "=") (binary_expression "pbVar19 + ((bVar1 & 4) != 0)" (identifier "pbVar19") (+ "+") (parenthesized_expression "((bVar1 & 4) != 0)" (( "(") (binary_expression "(bVar1 & 4) != 0" (parenthesized_expression "(bVar1 & 4)" (( "(") (binary_expression "bVar1 & 4" (identifier "bVar1") (& "&") (number_literal "4")) () ")")) (!= "!=") (number_literal "0")) () ")")))) (; ";")) (expression_statement "__n = (int)pbVar19 - (int)param_1;" (assignment_expression "__n = (int)pbVar19 - (int)param_1" (identifier "__n") (= "=") (binary_expression "(int)pbVar19 - (int)param_1" (cast_expression "(int)pbVar19" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pbVar19")) (- "-") (cast_expression "(int)param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_1")))) (; ";")) (expression_statement "__dest = (void *)xmalloc(__n + 1);" (assignment_expression "__dest = (void *)xmalloc(__n + 1)" (identifier "__dest") (= "=") (cast_expression "(void *)xmalloc(__n + 1)" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "xmalloc(__n + 1)" (identifier "xmalloc") (argument_list "(__n + 1)" (( "(") (binary_expression "__n + 1" (identifier "__n") (+ "+") (number_literal "1")) () ")"))))) (; ";")) (expression_statement "*(undefined1 *)((int)__dest + __n) = 0;" (assignment_expression "*(undefined1 *)((int)__dest + __n) = 0" (pointer_expression "*(undefined1 *)((int)__dest + __n)" (* "*") (cast_expression "(undefined1 *)((int)__dest + __n)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)__dest + __n)" (( "(") (binary_expression "(int)__dest + __n" (cast_expression "(int)__dest" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "__dest")) (+ "+") (identifier "__n")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "__ptr = (byte *)memcpy(__dest,param_1,__n);" (assignment_expression "__ptr = (byte *)memcpy(__dest,param_1,__n)" (identifier "__ptr") (= "=") (cast_expression "(byte *)memcpy(__dest,param_1,__n)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "memcpy(__dest,param_1,__n)" (identifier "memcpy") (argument_list "(__dest,param_1,__n)" (( "(") (identifier "__dest") (, ",") (identifier "param_1") (, ",") (identifier "__n") () ")"))))) (; ";")) (expression_statement "iVar8 = *(int *)(unaff_EBP + 0x553ca);" (assignment_expression "iVar8 = *(int *)(unaff_EBP + 0x553ca)" (identifier "iVar8") (= "=") (pointer_expression "*(int *)(unaff_EBP + 0x553ca)" (* "*") (cast_expression "(int *)(unaff_EBP + 0x553ca)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_EBP + 0x553ca)" (( "(") (binary_expression "unaff_EBP + 0x553ca" (identifier "unaff_EBP") (+ "+") (number_literal "0x553ca")) () ")"))))) (; ";")) (expression_statement "bVar1 = *__ptr;" (assignment_expression "bVar1 = *__ptr" (identifier "bVar1") (= "=") (pointer_expression "*__ptr" (* "*") (identifier "__ptr"))) (; ";")) (expression_statement "pbVar5 = __ptr;" (assignment_expression "pbVar5 = __ptr" (identifier "pbVar5") (= "=") (identifier "__ptr")) (; ";")) (while_statement "while (bVar1 != 0) {\n      *pbVar5 = *(byte *)(iVar8 + (uint)bVar1);\n      bVar1 = pbVar5[1];\n      pbVar5 = pbVar5 + 1;\n    }" (while "while") (parenthesized_expression "(bVar1 != 0)" (( "(") (binary_expression "bVar1 != 0" (identifier "bVar1") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      *pbVar5 = *(byte *)(iVar8 + (uint)bVar1);\n      bVar1 = pbVar5[1];\n      pbVar5 = pbVar5 + 1;\n    }" ({ "{") (expression_statement "*pbVar5 = *(byte *)(iVar8 + (uint)bVar1);" (assignment_expression "*pbVar5 = *(byte *)(iVar8 + (uint)bVar1)" (pointer_expression "*pbVar5" (* "*") (identifier "pbVar5")) (= "=") (pointer_expression "*(byte *)(iVar8 + (uint)bVar1)" (* "*") (cast_expression "(byte *)(iVar8 + (uint)bVar1)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + (uint)bVar1)" (( "(") (binary_expression "iVar8 + (uint)bVar1" (identifier "iVar8") (+ "+") (cast_expression "(uint)bVar1" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar1"))) () ")"))))) (; ";")) (expression_statement "bVar1 = pbVar5[1];" (assignment_expression "bVar1 = pbVar5[1]" (identifier "bVar1") (= "=") (subscript_expression "pbVar5[1]" (identifier "pbVar5") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "pbVar5 = pbVar5 + 1;" (assignment_expression "pbVar5 = pbVar5 + 1" (identifier "pbVar5") (= "=") (binary_expression "pbVar5 + 1" (identifier "pbVar5") (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (expression_statement "iVar8 = FUN_000254b0(*(undefined4 *)("%S.000%z" + unaff_EBP),__ptr);" (assignment_expression "iVar8 = FUN_000254b0(*(undefined4 *)("%S.000%z" + unaff_EBP),__ptr)" (identifier "iVar8") (= "=") (call_expression "FUN_000254b0(*(undefined4 *)("%S.000%z" + unaff_EBP),__ptr)" (identifier "FUN_000254b0") (argument_list "(*(undefined4 *)("%S.000%z" + unaff_EBP),__ptr)" (( "(") (pointer_expression "*(undefined4 *)("%S.000%z" + unaff_EBP)" (* "*") (cast_expression "(undefined4 *)("%S.000%z" + unaff_EBP)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "("%S.000%z" + unaff_EBP)" (( "(") (binary_expression ""%S.000%z" + unaff_EBP" (string_literal ""%S.000%z"" (" """) (string_content "%S.000%z") (" """)) (+ "+") (identifier "unaff_EBP")) () ")")))) (, ",") (identifier "__ptr") () ")")))) (; ";")) (expression_statement "free(__ptr);" (call_expression "free(__ptr)" (identifier "free") (argument_list "(__ptr)" (( "(") (identifier "__ptr") () ")"))) (; ";")) (if_statement "if (iVar8 != 0) {\n      FUN_00035790(&local_48);\n      bVar1 = *pbVar19;\n      while ((0xd < bVar1 || ((0x2401U >> ((int)(char)bVar1 & 0x1fU) & 1) == 0))) {\n        pbVar19 = pbVar19 + 1;\n        FUN_000358b0(&local_48,(int)(char)bVar1);\n        bVar1 = *pbVar19;\n      }\n      FUN_00035790(param_2);\n      FUN_00035790(local_3c);\n      piVar17 = *(int **)(iVar8 + 0x10);\n      if (piVar17 != (int *)0x0) {\n        do {\n          FUN_000358a0(piVar17 + 7);\n          piVar17 = (int *)*piVar17;\n        } while (piVar17 != (int *)0x0);\n        for (puVar18 = *(undefined4 **)(iVar8 + 0x10); puVar18 != (undefined4 *)0x0;\n            puVar18 = (undefined4 *)*puVar18) {\n          if (-1 < (int)puVar18[10]) goto LAB_0002adc1;\n        }\n      }\n      puVar18 = (undefined4 *)0x0;\nLAB_0002adc1:\n      uVar9 = 0;\n      if ((*(int *)(&DAT_0005e002 + unaff_EBP) != 0) && (uVar9 = local_44, local_44 != 0)) {\n        if (*local_48 == '.') {\n          if (((local_44 < 2) || (local_48[1] == ' ')) || (local_48[1] == '\t')) {\n            uVar9 = 1;\n          }\n          else {\n            puVar14 = (undefined4 *)FUN_00028ba0();\n            puVar14[10] = 0xffffffff;\n            *puVar14 = *(undefined4 *)(iVar8 + 0x10);\n            *(undefined4 **)(iVar8 + 0x10) = puVar14;\n            uVar9 = FUN_00029a00();\n          }\n        }\n        else {\n          uVar9 = 0;\n        }\n      }\n      uVar9 = FUN_00035980(uVar9,&local_48);\n      local_58 = 0;\n      bVar4 = false;\nLAB_0002ae00:\n      if (uVar9 < local_44) {\n        do {\n          uVar16 = uVar9;\n          do {\n            bVar1 = local_48[uVar16];\n            bVar6 = 1;\n            if ((byte)(bVar1 - 0x20) < 0x1c) {\n              bVar6 = ~(byte)(0x8001305 >> (bVar1 - 0x20 & 0x1f)) & 1;\n            }\n            if ((bVar1 == 9) || (bVar6 == 0)) {\n              if ((uVar16 < local_44) && (*(int *)(&DAT_0005e006 + unaff_EBP) == 0)) {\nLAB_0002b0c6:\n                if (bVar1 == 0x3d) {\nLAB_0002b0cf:\n                  FUN_000358a0(local_3c);\n                  iVar11 = FUN_00028c80(local_3c);\n                  if (local_48[iVar11] != '=') {\n                    iVar11 = dcgettext(0,unaff_EBP + 0x3457a,5);\n                    goto LAB_0002b07a;\n                  }\n                  uVar13 = FUN_00035970(local_3c);\n                  iVar11 = FUN_000254b0(*(undefined4 *)(iVar8 + 0x14),uVar13);\n                  uVar13 = local_3c[0];\n                  if (iVar11 == 0) {\n                    uVar10 = *(undefined4 *)(iVar8 + 0x18);\n                    uVar12 = dcgettext(0,unaff_EBP + 0x3459a,5);\n                    FUN_0002bd60(uVar12,uVar13,uVar10);\n                    FUN_000358a0(local_3c);\n                    uVar9 = FUN_00029a00();\n                    bVar4 = true;\n                    goto LAB_0002aebd;\n                  }\n                  if (*(int *)(iVar11 + 0x20) != 0) {\n                    uVar13 = *(undefined4 *)(iVar8 + 0x18);\n                    uVar10 = *(undefined4 *)(iVar11 + 4);\n                    uVar12 = dcgettext(0,unaff_EBP + 0x345ce,5);\n                    FUN_0002bc80(uVar12,uVar10,uVar13);\n                    FUN_000358a0(iVar11 + 0x1c);\n                  }\n                  uVar9 = FUN_00029a00();\n                  bVar4 = true;\n                  iVar2 = *(int *)(&DAT_0005e002 + unaff_EBP);\n                  local_58 = (local_58 + 1) - (uint)(*(int *)(iVar11 + 0x20) == 0);\n                  goto joined_r0x0002b16d;\n                }\n              }\n              break;\n            }\n            if (*(int *)(&DAT_0005e006 + unaff_EBP) != 0) break;\n            if (*(int *)(&DAT_0005e002 + unaff_EBP) != 0) {\n              if ((bVar1 & 0xfd) == 0x3c) {\n                if (uVar16 < local_44) goto LAB_0002b0c6;\n                break;\n              }\n              if (bVar1 == 0x27) break;\n            }\n            if (bVar1 == 0x3d) {\n              if (uVar16 < local_44) goto LAB_0002b0cf;\n              break;\n            }\n            uVar16 = uVar16 + 1;\n          } while (uVar16 != local_44);\n          if (bVar4) {\n            iVar11 = dcgettext(0,unaff_EBP + 0x3460e,5);\nLAB_0002b07a:\n            if (iVar11 == 0) break;\n            if (*(int *)(&DAT_0005e002 + unaff_EBP) != 0) goto LAB_0002af93;\nLAB_0002b090:\n            FUN_000357d0(local_3c);\n            goto LAB_0002afd9;\n          }\n          if (puVar18 == (undefined4 *)0x0) {\n            if (*(int *)(&DAT_0005e002 + unaff_EBP) == 0) {\n              iVar11 = dcgettext(0,unaff_EBP + 0x34312,5);\n              if (iVar11 != 0) goto LAB_0002b090;\n              piVar17 = *(int **)(iVar8 + 0x10);\n              if (piVar17 == (int *)0x0) goto LAB_0002af6d;\n              goto LAB_0002aef9;\n            }\n            puVar18 = (undefined4 *)FUN_00028ba0();\n            iVar11 = -1;\n            puVar14 = *(undefined4 **)(iVar8 + 0x10);\n            if (*(undefined4 **)(iVar8 + 0x10) == (undefined4 *)0x0) {\n              iVar11 = 0;\n              puVar15 = (undefined4 *)(iVar8 + 0x10);\n            }\n            else {\n              do {\n                puVar15 = puVar14;\n                if (iVar11 <= (int)puVar15[10]) {\n                  iVar11 = puVar15[10] + 1;\n                }\n                puVar14 = (undefined4 *)*puVar15;\n              } while ((undefined4 *)*puVar15 != (undefined4 *)0x0);\n              if (iVar11 == -1) {\n                iVar11 = 0;\n              }\n            }\n            *puVar15 = puVar18;\n            puVar18[10] = iVar11;\n          }\n          if (puVar18[0xb] == 2) {\n            FUN_00035930(puVar18 + 7,local_48 + uVar9,local_44 - uVar9);\n            uVar9 = local_44;\n          }\n          else {\n            uVar9 = FUN_00029a00();\n          }\n          local_58 = (local_58 + 1) - (uint)(puVar18[8] == 0);\n          do {\n            puVar18 = (undefined4 *)*puVar18;\n            if (puVar18 == (undefined4 *)0x0) break;\n          } while ((int)puVar18[10] < 0);\nLAB_0002aebd:\n          iVar2 = *(int *)(&DAT_0005e002 + unaff_EBP);\njoined_r0x0002b16d:\n          if (iVar2 != 0) goto LAB_0002aecb;\n          uVar9 = FUN_000359c0(uVar9,&local_48);\n          if (local_44 <= uVar9) break;\n        } while( true );\n      }\n      piVar17 = *(int **)(iVar8 + 0x10);\n      if (piVar17 != (int *)0x0) goto LAB_0002aef9;\n      goto LAB_0002af58;\n    }" (if "if") (parenthesized_expression "(iVar8 != 0)" (( "(") (binary_expression "iVar8 != 0" (identifier "iVar8") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      FUN_00035790(&local_48);\n      bVar1 = *pbVar19;\n      while ((0xd < bVar1 || ((0x2401U >> ((int)(char)bVar1 & 0x1fU) & 1) == 0))) {\n        pbVar19 = pbVar19 + 1;\n        FUN_000358b0(&local_48,(int)(char)bVar1);\n        bVar1 = *pbVar19;\n      }\n      FUN_00035790(param_2);\n      FUN_00035790(local_3c);\n      piVar17 = *(int **)(iVar8 + 0x10);\n      if (piVar17 != (int *)0x0) {\n        do {\n          FUN_000358a0(piVar17 + 7);\n          piVar17 = (int *)*piVar17;\n        } while (piVar17 != (int *)0x0);\n        for (puVar18 = *(undefined4 **)(iVar8 + 0x10); puVar18 != (undefined4 *)0x0;\n            puVar18 = (undefined4 *)*puVar18) {\n          if (-1 < (int)puVar18[10]) goto LAB_0002adc1;\n        }\n      }\n      puVar18 = (undefined4 *)0x0;\nLAB_0002adc1:\n      uVar9 = 0;\n      if ((*(int *)(&DAT_0005e002 + unaff_EBP) != 0) && (uVar9 = local_44, local_44 != 0)) {\n        if (*local_48 == '.') {\n          if (((local_44 < 2) || (local_48[1] == ' ')) || (local_48[1] == '\t')) {\n            uVar9 = 1;\n          }\n          else {\n            puVar14 = (undefined4 *)FUN_00028ba0();\n            puVar14[10] = 0xffffffff;\n            *puVar14 = *(undefined4 *)(iVar8 + 0x10);\n            *(undefined4 **)(iVar8 + 0x10) = puVar14;\n            uVar9 = FUN_00029a00();\n          }\n        }\n        else {\n          uVar9 = 0;\n        }\n      }\n      uVar9 = FUN_00035980(uVar9,&local_48);\n      local_58 = 0;\n      bVar4 = false;\nLAB_0002ae00:\n      if (uVar9 < local_44) {\n        do {\n          uVar16 = uVar9;\n          do {\n            bVar1 = local_48[uVar16];\n            bVar6 = 1;\n            if ((byte)(bVar1 - 0x20) < 0x1c) {\n              bVar6 = ~(byte)(0x8001305 >> (bVar1 - 0x20 & 0x1f)) & 1;\n            }\n            if ((bVar1 == 9) || (bVar6 == 0)) {\n              if ((uVar16 < local_44) && (*(int *)(&DAT_0005e006 + unaff_EBP) == 0)) {\nLAB_0002b0c6:\n                if (bVar1 == 0x3d) {\nLAB_0002b0cf:\n                  FUN_000358a0(local_3c);\n                  iVar11 = FUN_00028c80(local_3c);\n                  if (local_48[iVar11] != '=') {\n                    iVar11 = dcgettext(0,unaff_EBP + 0x3457a,5);\n                    goto LAB_0002b07a;\n                  }\n                  uVar13 = FUN_00035970(local_3c);\n                  iVar11 = FUN_000254b0(*(undefined4 *)(iVar8 + 0x14),uVar13);\n                  uVar13 = local_3c[0];\n                  if (iVar11 == 0) {\n                    uVar10 = *(undefined4 *)(iVar8 + 0x18);\n                    uVar12 = dcgettext(0,unaff_EBP + 0x3459a,5);\n                    FUN_0002bd60(uVar12,uVar13,uVar10);\n                    FUN_000358a0(local_3c);\n                    uVar9 = FUN_00029a00();\n                    bVar4 = true;\n                    goto LAB_0002aebd;\n                  }\n                  if (*(int *)(iVar11 + 0x20) != 0) {\n                    uVar13 = *(undefined4 *)(iVar8 + 0x18);\n                    uVar10 = *(undefined4 *)(iVar11 + 4);\n                    uVar12 = dcgettext(0,unaff_EBP + 0x345ce,5);\n                    FUN_0002bc80(uVar12,uVar10,uVar13);\n                    FUN_000358a0(iVar11 + 0x1c);\n                  }\n                  uVar9 = FUN_00029a00();\n                  bVar4 = true;\n                  iVar2 = *(int *)(&DAT_0005e002 + unaff_EBP);\n                  local_58 = (local_58 + 1) - (uint)(*(int *)(iVar11 + 0x20) == 0);\n                  goto joined_r0x0002b16d;\n                }\n              }\n              break;\n            }\n            if (*(int *)(&DAT_0005e006 + unaff_EBP) != 0) break;\n            if (*(int *)(&DAT_0005e002 + unaff_EBP) != 0) {\n              if ((bVar1 & 0xfd) == 0x3c) {\n                if (uVar16 < local_44) goto LAB_0002b0c6;\n                break;\n              }\n              if (bVar1 == 0x27) break;\n            }\n            if (bVar1 == 0x3d) {\n              if (uVar16 < local_44) goto LAB_0002b0cf;\n              break;\n            }\n            uVar16 = uVar16 + 1;\n          } while (uVar16 != local_44);\n          if (bVar4) {\n            iVar11 = dcgettext(0,unaff_EBP + 0x3460e,5);\nLAB_0002b07a:\n            if (iVar11 == 0) break;\n            if (*(int *)(&DAT_0005e002 + unaff_EBP) != 0) goto LAB_0002af93;\nLAB_0002b090:\n            FUN_000357d0(local_3c);\n            goto LAB_0002afd9;\n          }\n          if (puVar18 == (undefined4 *)0x0) {\n            if (*(int *)(&DAT_0005e002 + unaff_EBP) == 0) {\n              iVar11 = dcgettext(0,unaff_EBP + 0x34312,5);\n              if (iVar11 != 0) goto LAB_0002b090;\n              piVar17 = *(int **)(iVar8 + 0x10);\n              if (piVar17 == (int *)0x0) goto LAB_0002af6d;\n              goto LAB_0002aef9;\n            }\n            puVar18 = (undefined4 *)FUN_00028ba0();\n            iVar11 = -1;\n            puVar14 = *(undefined4 **)(iVar8 + 0x10);\n            if (*(undefined4 **)(iVar8 + 0x10) == (undefined4 *)0x0) {\n              iVar11 = 0;\n              puVar15 = (undefined4 *)(iVar8 + 0x10);\n            }\n            else {\n              do {\n                puVar15 = puVar14;\n                if (iVar11 <= (int)puVar15[10]) {\n                  iVar11 = puVar15[10] + 1;\n                }\n                puVar14 = (undefined4 *)*puVar15;\n              } while ((undefined4 *)*puVar15 != (undefined4 *)0x0);\n              if (iVar11 == -1) {\n                iVar11 = 0;\n              }\n            }\n            *puVar15 = puVar18;\n            puVar18[10] = iVar11;\n          }\n          if (puVar18[0xb] == 2) {\n            FUN_00035930(puVar18 + 7,local_48 + uVar9,local_44 - uVar9);\n            uVar9 = local_44;\n          }\n          else {\n            uVar9 = FUN_00029a00();\n          }\n          local_58 = (local_58 + 1) - (uint)(puVar18[8] == 0);\n          do {\n            puVar18 = (undefined4 *)*puVar18;\n            if (puVar18 == (undefined4 *)0x0) break;\n          } while ((int)puVar18[10] < 0);\nLAB_0002aebd:\n          iVar2 = *(int *)(&DAT_0005e002 + unaff_EBP);\njoined_r0x0002b16d:\n          if (iVar2 != 0) goto LAB_0002aecb;\n          uVar9 = FUN_000359c0(uVar9,&local_48);\n          if (local_44 <= uVar9) break;\n        } while( true );\n      }\n      piVar17 = *(int **)(iVar8 + 0x10);\n      if (piVar17 != (int *)0x0) goto LAB_0002aef9;\n      goto LAB_0002af58;\n    }" ({ "{") (expression_statement "FUN_00035790(&local_48);" (call_expression "FUN_00035790(&local_48)" (identifier "FUN_00035790") (argument_list "(&local_48)" (( "(") (pointer_expression "&local_48" (& "&") (identifier "local_48")) () ")"))) (; ";")) (expression_statement "bVar1 = *pbVar19;" (assignment_expression "bVar1 = *pbVar19" (identifier "bVar1") (= "=") (pointer_expression "*pbVar19" (* "*") (identifier "pbVar19"))) (; ";")) (while_statement "while ((0xd < bVar1 || ((0x2401U >> ((int)(char)bVar1 & 0x1fU) & 1) == 0))) {\n        pbVar19 = pbVar19 + 1;\n        FUN_000358b0(&local_48,(int)(char)bVar1);\n        bVar1 = *pbVar19;\n      }" (while "while") (parenthesized_expression "((0xd < bVar1 || ((0x2401U >> ((int)(char)bVar1 & 0x1fU) & 1) == 0)))" (( "(") (parenthesized_expression "(0xd < bVar1 || ((0x2401U >> ((int)(char)bVar1 & 0x1fU) & 1) == 0))" (( "(") (binary_expression "0xd < bVar1 || ((0x2401U >> ((int)(char)bVar1 & 0x1fU) & 1) == 0)" (binary_expression "0xd < bVar1" (number_literal "0xd") (< "<") (identifier "bVar1")) (|| "||") (parenthesized_expression "((0x2401U >> ((int)(char)bVar1 & 0x1fU) & 1) == 0)" (( "(") (binary_expression "(0x2401U >> ((int)(char)bVar1 & 0x1fU) & 1) == 0" (parenthesized_expression "(0x2401U >> ((int)(char)bVar1 & 0x1fU) & 1)" (( "(") (binary_expression "0x2401U >> ((int)(char)bVar1 & 0x1fU) & 1" (binary_expression "0x2401U >> ((int)(char)bVar1 & 0x1fU)" (number_literal "0x2401U") (>> ">>") (parenthesized_expression "((int)(char)bVar1 & 0x1fU)" (( "(") (binary_expression "(int)(char)bVar1 & 0x1fU" (cast_expression "(int)(char)bVar1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (cast_expression "(char)bVar1" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "bVar1"))) (& "&") (number_literal "0x1fU")) () ")"))) (& "&") (number_literal "1")) () ")")) (== "==") (number_literal "0")) () ")"))) () ")")) () ")")) (compound_statement "{\n        pbVar19 = pbVar19 + 1;\n        FUN_000358b0(&local_48,(int)(char)bVar1);\n        bVar1 = *pbVar19;\n      }" ({ "{") (expression_statement "pbVar19 = pbVar19 + 1;" (assignment_expression "pbVar19 = pbVar19 + 1" (identifier "pbVar19") (= "=") (binary_expression "pbVar19 + 1" (identifier "pbVar19") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "FUN_000358b0(&local_48,(int)(char)bVar1);" (call_expression "FUN_000358b0(&local_48,(int)(char)bVar1)" (identifier "FUN_000358b0") (argument_list "(&local_48,(int)(char)bVar1)" (( "(") (pointer_expression "&local_48" (& "&") (identifier "local_48")) (, ",") (cast_expression "(int)(char)bVar1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (cast_expression "(char)bVar1" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "bVar1"))) () ")"))) (; ";")) (expression_statement "bVar1 = *pbVar19;" (assignment_expression "bVar1 = *pbVar19" (identifier "bVar1") (= "=") (pointer_expression "*pbVar19" (* "*") (identifier "pbVar19"))) (; ";")) (} "}"))) (expression_statement "FUN_00035790(param_2);" (call_expression "FUN_00035790(param_2)" (identifier "FUN_00035790") (argument_list "(param_2)" (( "(") (identifier "param_2") () ")"))) (; ";")) (expression_statement "FUN_00035790(local_3c);" (call_expression "FUN_00035790(local_3c)" (identifier "FUN_00035790") (argument_list "(local_3c)" (( "(") (identifier "local_3c") () ")"))) (; ";")) (expression_statement "piVar17 = *(int **)(iVar8 + 0x10);" (assignment_expression "piVar17 = *(int **)(iVar8 + 0x10)" (identifier "piVar17") (= "=") (pointer_expression "*(int **)(iVar8 + 0x10)" (* "*") (cast_expression "(int **)(iVar8 + 0x10)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar8 + 0x10)" (( "(") (binary_expression "iVar8 + 0x10" (identifier "iVar8") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (if_statement "if (piVar17 != (int *)0x0) {\n        do {\n          FUN_000358a0(piVar17 + 7);\n          piVar17 = (int *)*piVar17;\n        } while (piVar17 != (int *)0x0);\n        for (puVar18 = *(undefined4 **)(iVar8 + 0x10); puVar18 != (undefined4 *)0x0;\n            puVar18 = (undefined4 *)*puVar18) {\n          if (-1 < (int)puVar18[10]) goto LAB_0002adc1;\n        }\n      }" (if "if") (parenthesized_expression "(piVar17 != (int *)0x0)" (( "(") (binary_expression "piVar17 != (int *)0x0" (identifier "piVar17") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        do {\n          FUN_000358a0(piVar17 + 7);\n          piVar17 = (int *)*piVar17;\n        } while (piVar17 != (int *)0x0);\n        for (puVar18 = *(undefined4 **)(iVar8 + 0x10); puVar18 != (undefined4 *)0x0;\n            puVar18 = (undefined4 *)*puVar18) {\n          if (-1 < (int)puVar18[10]) goto LAB_0002adc1;\n        }\n      }" ({ "{") (do_statement "do {\n          FUN_000358a0(piVar17 + 7);\n          piVar17 = (int *)*piVar17;\n        } while (piVar17 != (int *)0x0);" (do "do") (compound_statement "{\n          FUN_000358a0(piVar17 + 7);\n          piVar17 = (int *)*piVar17;\n        }" ({ "{") (expression_statement "FUN_000358a0(piVar17 + 7);" (call_expression "FUN_000358a0(piVar17 + 7)" (identifier "FUN_000358a0") (argument_list "(piVar17 + 7)" (( "(") (binary_expression "piVar17 + 7" (identifier "piVar17") (+ "+") (number_literal "7")) () ")"))) (; ";")) (expression_statement "piVar17 = (int *)*piVar17;" (assignment_expression "piVar17 = (int *)*piVar17" (identifier "piVar17") (= "=") (cast_expression "(int *)*piVar17" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*piVar17" (* "*") (identifier "piVar17")))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(piVar17 != (int *)0x0)" (( "(") (binary_expression "piVar17 != (int *)0x0" (identifier "piVar17") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (; ";")) (for_statement "for (puVar18 = *(undefined4 **)(iVar8 + 0x10); puVar18 != (undefined4 *)0x0;\n            puVar18 = (undefined4 *)*puVar18) {\n          if (-1 < (int)puVar18[10]) goto LAB_0002adc1;\n        }" (for "for") (( "(") (assignment_expression "puVar18 = *(undefined4 **)(iVar8 + 0x10)" (identifier "puVar18") (= "=") (pointer_expression "*(undefined4 **)(iVar8 + 0x10)" (* "*") (cast_expression "(undefined4 **)(iVar8 + 0x10)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar8 + 0x10)" (( "(") (binary_expression "iVar8 + 0x10" (identifier "iVar8") (+ "+") (number_literal "0x10")) () ")"))))) (; ";") (binary_expression "puVar18 != (undefined4 *)0x0" (identifier "puVar18") (!= "!=") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";") (assignment_expression "puVar18 = (undefined4 *)*puVar18" (identifier "puVar18") (= "=") (cast_expression "(undefined4 *)*puVar18" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar18" (* "*") (identifier "puVar18")))) () ")") (compound_statement "{\n          if (-1 < (int)puVar18[10]) goto LAB_0002adc1;\n        }" ({ "{") (if_statement "if (-1 < (int)puVar18[10]) goto LAB_0002adc1;" (if "if") (parenthesized_expression "(-1 < (int)puVar18[10])" (( "(") (binary_expression "-1 < (int)puVar18[10]" (number_literal "-1") (< "<") (cast_expression "(int)puVar18[10]" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (subscript_expression "puVar18[10]" (identifier "puVar18") ([ "[") (number_literal "10") (] "]")))) () ")")) (goto_statement "goto LAB_0002adc1;" (goto "goto") (statement_identifier "LAB_0002adc1") (; ";"))) (} "}"))) (} "}"))) (expression_statement "puVar18 = (undefined4 *)0x0;" (assignment_expression "puVar18 = (undefined4 *)0x0" (identifier "puVar18") (= "=") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (labeled_statement "LAB_0002adc1:\n      uVar9 = 0;" (statement_identifier "LAB_0002adc1") (: ":") (expression_statement "uVar9 = 0;" (assignment_expression "uVar9 = 0" (identifier "uVar9") (= "=") (number_literal "0")) (; ";"))) (if_statement "if ((*(int *)(&DAT_0005e002 + unaff_EBP) != 0) && (uVar9 = local_44, local_44 != 0)) {\n        if (*local_48 == '.') {\n          if (((local_44 < 2) || (local_48[1] == ' ')) || (local_48[1] == '\t')) {\n            uVar9 = 1;\n          }\n          else {\n            puVar14 = (undefined4 *)FUN_00028ba0();\n            puVar14[10] = 0xffffffff;\n            *puVar14 = *(undefined4 *)(iVar8 + 0x10);\n            *(undefined4 **)(iVar8 + 0x10) = puVar14;\n            uVar9 = FUN_00029a00();\n          }\n        }\n        else {\n          uVar9 = 0;\n        }\n      }" (if "if") (parenthesized_expression "((*(int *)(&DAT_0005e002 + unaff_EBP) != 0) && (uVar9 = local_44, local_44 != 0))" (( "(") (binary_expression "(*(int *)(&DAT_0005e002 + unaff_EBP) != 0) && (uVar9 = local_44, local_44 != 0)" (parenthesized_expression "(*(int *)(&DAT_0005e002 + unaff_EBP) != 0)" (( "(") (binary_expression "*(int *)(&DAT_0005e002 + unaff_EBP) != 0" (pointer_expression "*(int *)(&DAT_0005e002 + unaff_EBP)" (* "*") (cast_expression "(int *)(&DAT_0005e002 + unaff_EBP)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&DAT_0005e002 + unaff_EBP)" (( "(") (binary_expression "&DAT_0005e002 + unaff_EBP" (pointer_expression "&DAT_0005e002" (& "&") (identifier "DAT_0005e002")) (+ "+") (identifier "unaff_EBP")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(uVar9 = local_44, local_44 != 0)" (( "(") (comma_expression "uVar9 = local_44, local_44 != 0" (assignment_expression "uVar9 = local_44" (identifier "uVar9") (= "=") (identifier "local_44")) (, ",") (binary_expression "local_44 != 0" (identifier "local_44") (!= "!=") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\n        if (*local_48 == '.') {\n          if (((local_44 < 2) || (local_48[1] == ' ')) || (local_48[1] == '\t')) {\n            uVar9 = 1;\n          }\n          else {\n            puVar14 = (undefined4 *)FUN_00028ba0();\n            puVar14[10] = 0xffffffff;\n            *puVar14 = *(undefined4 *)(iVar8 + 0x10);\n            *(undefined4 **)(iVar8 + 0x10) = puVar14;\n            uVar9 = FUN_00029a00();\n          }\n        }\n        else {\n          uVar9 = 0;\n        }\n      }" ({ "{") (if_statement "if (*local_48 == '.') {\n          if (((local_44 < 2) || (local_48[1] == ' ')) || (local_48[1] == '\t')) {\n            uVar9 = 1;\n          }\n          else {\n            puVar14 = (undefined4 *)FUN_00028ba0();\n            puVar14[10] = 0xffffffff;\n            *puVar14 = *(undefined4 *)(iVar8 + 0x10);\n            *(undefined4 **)(iVar8 + 0x10) = puVar14;\n            uVar9 = FUN_00029a00();\n          }\n        }\n        else {\n          uVar9 = 0;\n        }" (if "if") (parenthesized_expression "(*local_48 == '.')" (( "(") (binary_expression "*local_48 == '.'" (pointer_expression "*local_48" (* "*") (identifier "local_48")) (== "==") (char_literal "'.'" (' "'") (character ".") (' "'"))) () ")")) (compound_statement "{\n          if (((local_44 < 2) || (local_48[1] == ' ')) || (local_48[1] == '\t')) {\n            uVar9 = 1;\n          }\n          else {\n            puVar14 = (undefined4 *)FUN_00028ba0();\n            puVar14[10] = 0xffffffff;\n            *puVar14 = *(undefined4 *)(iVar8 + 0x10);\n            *(undefined4 **)(iVar8 + 0x10) = puVar14;\n            uVar9 = FUN_00029a00();\n          }\n        }" ({ "{") (if_statement "if (((local_44 < 2) || (local_48[1] == ' ')) || (local_48[1] == '\t')) {\n            uVar9 = 1;\n          }\n          else {\n            puVar14 = (undefined4 *)FUN_00028ba0();\n            puVar14[10] = 0xffffffff;\n            *puVar14 = *(undefined4 *)(iVar8 + 0x10);\n            *(undefined4 **)(iVar8 + 0x10) = puVar14;\n            uVar9 = FUN_00029a00();\n          }" (if "if") (parenthesized_expression "(((local_44 < 2) || (local_48[1] == ' ')) || (local_48[1] == '\t'))" (( "(") (binary_expression "((local_44 < 2) || (local_48[1] == ' ')) || (local_48[1] == '\t')" (parenthesized_expression "((local_44 < 2) || (local_48[1] == ' '))" (( "(") (binary_expression "(local_44 < 2) || (local_48[1] == ' ')" (parenthesized_expression "(local_44 < 2)" (( "(") (binary_expression "local_44 < 2" (identifier "local_44") (< "<") (number_literal "2")) () ")")) (|| "||") (parenthesized_expression "(local_48[1] == ' ')" (( "(") (binary_expression "local_48[1] == ' '" (subscript_expression "local_48[1]" (identifier "local_48") ([ "[") (number_literal "1") (] "]")) (== "==") (char_literal "' '" (' "'") (character " ") (' "'"))) () ")"))) () ")")) (|| "||") (parenthesized_expression "(local_48[1] == '\t')" (( "(") (binary_expression "local_48[1] == '\t'" (subscript_expression "local_48[1]" (identifier "local_48") ([ "[") (number_literal "1") (] "]")) (== "==") (char_literal "'\t'" (' "'") (escape_sequence "\t") (' "'"))) () ")"))) () ")")) (compound_statement "{\n            uVar9 = 1;\n          }" ({ "{") (expression_statement "uVar9 = 1;" (assignment_expression "uVar9 = 1" (identifier "uVar9") (= "=") (number_literal "1")) (; ";")) (} "}")) (else_clause "else {\n            puVar14 = (undefined4 *)FUN_00028ba0();\n            puVar14[10] = 0xffffffff;\n            *puVar14 = *(undefined4 *)(iVar8 + 0x10);\n            *(undefined4 **)(iVar8 + 0x10) = puVar14;\n            uVar9 = FUN_00029a00();\n          }" (else "else") (compound_statement "{\n            puVar14 = (undefined4 *)FUN_00028ba0();\n            puVar14[10] = 0xffffffff;\n            *puVar14 = *(undefined4 *)(iVar8 + 0x10);\n            *(undefined4 **)(iVar8 + 0x10) = puVar14;\n            uVar9 = FUN_00029a00();\n          }" ({ "{") (expression_statement "puVar14 = (undefined4 *)FUN_00028ba0();" (assignment_expression "puVar14 = (undefined4 *)FUN_00028ba0()" (identifier "puVar14") (= "=") (cast_expression "(undefined4 *)FUN_00028ba0()" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00028ba0()" (identifier "FUN_00028ba0") (argument_list "()" (( "(") () ")"))))) (; ";")) (expression_statement "puVar14[10] = 0xffffffff;" (assignment_expression "puVar14[10] = 0xffffffff" (subscript_expression "puVar14[10]" (identifier "puVar14") ([ "[") (number_literal "10") (] "]")) (= "=") (number_literal "0xffffffff")) (; ";")) (expression_statement "*puVar14 = *(undefined4 *)(iVar8 + 0x10);" (assignment_expression "*puVar14 = *(undefined4 *)(iVar8 + 0x10)" (pointer_expression "*puVar14" (* "*") (identifier "puVar14")) (= "=") (pointer_expression "*(undefined4 *)(iVar8 + 0x10)" (* "*") (cast_expression "(undefined4 *)(iVar8 + 0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 0x10)" (( "(") (binary_expression "iVar8 + 0x10" (identifier "iVar8") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (expression_statement "*(undefined4 **)(iVar8 + 0x10) = puVar14;" (assignment_expression "*(undefined4 **)(iVar8 + 0x10) = puVar14" (pointer_expression "*(undefined4 **)(iVar8 + 0x10)" (* "*") (cast_expression "(undefined4 **)(iVar8 + 0x10)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar8 + 0x10)" (( "(") (binary_expression "iVar8 + 0x10" (identifier "iVar8") (+ "+") (number_literal "0x10")) () ")")))) (= "=") (identifier "puVar14")) (; ";")) (expression_statement "uVar9 = FUN_00029a00();" (assignment_expression "uVar9 = FUN_00029a00()" (identifier "uVar9") (= "=") (call_expression "FUN_00029a00()" (identifier "FUN_00029a00") (argument_list "()" (( "(") () ")")))) (; ";")) (} "}")))) (} "}")) (else_clause "else {\n          uVar9 = 0;\n        }" (else "else") (compound_statement "{\n          uVar9 = 0;\n        }" ({ "{") (expression_statement "uVar9 = 0;" (assignment_expression "uVar9 = 0" (identifier "uVar9") (= "=") (number_literal "0")) (; ";")) (} "}")))) (} "}"))) (expression_statement "uVar9 = FUN_00035980(uVar9,&local_48);" (assignment_expression "uVar9 = FUN_00035980(uVar9,&local_48)" (identifier "uVar9") (= "=") (call_expression "FUN_00035980(uVar9,&local_48)" (identifier "FUN_00035980") (argument_list "(uVar9,&local_48)" (( "(") (identifier "uVar9") (, ",") (pointer_expression "&local_48" (& "&") (identifier "local_48")) () ")")))) (; ";")) (expression_statement "local_58 = 0;" (assignment_expression "local_58 = 0" (identifier "local_58") (= "=") (number_literal "0")) (; ";")) (expression_statement "bVar4 = false;" (assignment_expression "bVar4 = false" (identifier "bVar4") (= "=") (false "false")) (; ";")) (labeled_statement "LAB_0002ae00:\n      if (uVar9 < local_44) {\n        do {\n          uVar16 = uVar9;\n          do {\n            bVar1 = local_48[uVar16];\n            bVar6 = 1;\n            if ((byte)(bVar1 - 0x20) < 0x1c) {\n              bVar6 = ~(byte)(0x8001305 >> (bVar1 - 0x20 & 0x1f)) & 1;\n            }\n            if ((bVar1 == 9) || (bVar6 == 0)) {\n              if ((uVar16 < local_44) && (*(int *)(&DAT_0005e006 + unaff_EBP) == 0)) {\nLAB_0002b0c6:\n                if (bVar1 == 0x3d) {\nLAB_0002b0cf:\n                  FUN_000358a0(local_3c);\n                  iVar11 = FUN_00028c80(local_3c);\n                  if (local_48[iVar11] != '=') {\n                    iVar11 = dcgettext(0,unaff_EBP + 0x3457a,5);\n                    goto LAB_0002b07a;\n                  }\n                  uVar13 = FUN_00035970(local_3c);\n                  iVar11 = FUN_000254b0(*(undefined4 *)(iVar8 + 0x14),uVar13);\n                  uVar13 = local_3c[0];\n                  if (iVar11 == 0) {\n                    uVar10 = *(undefined4 *)(iVar8 + 0x18);\n                    uVar12 = dcgettext(0,unaff_EBP + 0x3459a,5);\n                    FUN_0002bd60(uVar12,uVar13,uVar10);\n                    FUN_000358a0(local_3c);\n                    uVar9 = FUN_00029a00();\n                    bVar4 = true;\n                    goto LAB_0002aebd;\n                  }\n                  if (*(int *)(iVar11 + 0x20) != 0) {\n                    uVar13 = *(undefined4 *)(iVar8 + 0x18);\n                    uVar10 = *(undefined4 *)(iVar11 + 4);\n                    uVar12 = dcgettext(0,unaff_EBP + 0x345ce,5);\n                    FUN_0002bc80(uVar12,uVar10,uVar13);\n                    FUN_000358a0(iVar11 + 0x1c);\n                  }\n                  uVar9 = FUN_00029a00();\n                  bVar4 = true;\n                  iVar2 = *(int *)(&DAT_0005e002 + unaff_EBP);\n                  local_58 = (local_58 + 1) - (uint)(*(int *)(iVar11 + 0x20) == 0);\n                  goto joined_r0x0002b16d;\n                }\n              }\n              break;\n            }\n            if (*(int *)(&DAT_0005e006 + unaff_EBP) != 0) break;\n            if (*(int *)(&DAT_0005e002 + unaff_EBP) != 0) {\n              if ((bVar1 & 0xfd) == 0x3c) {\n                if (uVar16 < local_44) goto LAB_0002b0c6;\n                break;\n              }\n              if (bVar1 == 0x27) break;\n            }\n            if (bVar1 == 0x3d) {\n              if (uVar16 < local_44) goto LAB_0002b0cf;\n              break;\n            }\n            uVar16 = uVar16 + 1;\n          } while (uVar16 != local_44);\n          if (bVar4) {\n            iVar11 = dcgettext(0,unaff_EBP + 0x3460e,5);\nLAB_0002b07a:\n            if (iVar11 == 0) break;\n            if (*(int *)(&DAT_0005e002 + unaff_EBP) != 0) goto LAB_0002af93;\nLAB_0002b090:\n            FUN_000357d0(local_3c);\n            goto LAB_0002afd9;\n          }\n          if (puVar18 == (undefined4 *)0x0) {\n            if (*(int *)(&DAT_0005e002 + unaff_EBP) == 0) {\n              iVar11 = dcgettext(0,unaff_EBP + 0x34312,5);\n              if (iVar11 != 0) goto LAB_0002b090;\n              piVar17 = *(int **)(iVar8 + 0x10);\n              if (piVar17 == (int *)0x0) goto LAB_0002af6d;\n              goto LAB_0002aef9;\n            }\n            puVar18 = (undefined4 *)FUN_00028ba0();\n            iVar11 = -1;\n            puVar14 = *(undefined4 **)(iVar8 + 0x10);\n            if (*(undefined4 **)(iVar8 + 0x10) == (undefined4 *)0x0) {\n              iVar11 = 0;\n              puVar15 = (undefined4 *)(iVar8 + 0x10);\n            }\n            else {\n              do {\n                puVar15 = puVar14;\n                if (iVar11 <= (int)puVar15[10]) {\n                  iVar11 = puVar15[10] + 1;\n                }\n                puVar14 = (undefined4 *)*puVar15;\n              } while ((undefined4 *)*puVar15 != (undefined4 *)0x0);\n              if (iVar11 == -1) {\n                iVar11 = 0;\n              }\n            }\n            *puVar15 = puVar18;\n            puVar18[10] = iVar11;\n          }\n          if (puVar18[0xb] == 2) {\n            FUN_00035930(puVar18 + 7,local_48 + uVar9,local_44 - uVar9);\n            uVar9 = local_44;\n          }\n          else {\n            uVar9 = FUN_00029a00();\n          }\n          local_58 = (local_58 + 1) - (uint)(puVar18[8] == 0);\n          do {\n            puVar18 = (undefined4 *)*puVar18;\n            if (puVar18 == (undefined4 *)0x0) break;\n          } while ((int)puVar18[10] < 0);\nLAB_0002aebd:\n          iVar2 = *(int *)(&DAT_0005e002 + unaff_EBP);\njoined_r0x0002b16d:\n          if (iVar2 != 0) goto LAB_0002aecb;\n          uVar9 = FUN_000359c0(uVar9,&local_48);\n          if (local_44 <= uVar9) break;\n        } while( true );\n      }" (statement_identifier "LAB_0002ae00") (: ":") (if_statement "if (uVar9 < local_44) {\n        do {\n          uVar16 = uVar9;\n          do {\n            bVar1 = local_48[uVar16];\n            bVar6 = 1;\n            if ((byte)(bVar1 - 0x20) < 0x1c) {\n              bVar6 = ~(byte)(0x8001305 >> (bVar1 - 0x20 & 0x1f)) & 1;\n            }\n            if ((bVar1 == 9) || (bVar6 == 0)) {\n              if ((uVar16 < local_44) && (*(int *)(&DAT_0005e006 + unaff_EBP) == 0)) {\nLAB_0002b0c6:\n                if (bVar1 == 0x3d) {\nLAB_0002b0cf:\n                  FUN_000358a0(local_3c);\n                  iVar11 = FUN_00028c80(local_3c);\n                  if (local_48[iVar11] != '=') {\n                    iVar11 = dcgettext(0,unaff_EBP + 0x3457a,5);\n                    goto LAB_0002b07a;\n                  }\n                  uVar13 = FUN_00035970(local_3c);\n                  iVar11 = FUN_000254b0(*(undefined4 *)(iVar8 + 0x14),uVar13);\n                  uVar13 = local_3c[0];\n                  if (iVar11 == 0) {\n                    uVar10 = *(undefined4 *)(iVar8 + 0x18);\n                    uVar12 = dcgettext(0,unaff_EBP + 0x3459a,5);\n                    FUN_0002bd60(uVar12,uVar13,uVar10);\n                    FUN_000358a0(local_3c);\n                    uVar9 = FUN_00029a00();\n                    bVar4 = true;\n                    goto LAB_0002aebd;\n                  }\n                  if (*(int *)(iVar11 + 0x20) != 0) {\n                    uVar13 = *(undefined4 *)(iVar8 + 0x18);\n                    uVar10 = *(undefined4 *)(iVar11 + 4);\n                    uVar12 = dcgettext(0,unaff_EBP + 0x345ce,5);\n                    FUN_0002bc80(uVar12,uVar10,uVar13);\n                    FUN_000358a0(iVar11 + 0x1c);\n                  }\n                  uVar9 = FUN_00029a00();\n                  bVar4 = true;\n                  iVar2 = *(int *)(&DAT_0005e002 + unaff_EBP);\n                  local_58 = (local_58 + 1) - (uint)(*(int *)(iVar11 + 0x20) == 0);\n                  goto joined_r0x0002b16d;\n                }\n              }\n              break;\n            }\n            if (*(int *)(&DAT_0005e006 + unaff_EBP) != 0) break;\n            if (*(int *)(&DAT_0005e002 + unaff_EBP) != 0) {\n              if ((bVar1 & 0xfd) == 0x3c) {\n                if (uVar16 < local_44) goto LAB_0002b0c6;\n                break;\n              }\n              if (bVar1 == 0x27) break;\n            }\n            if (bVar1 == 0x3d) {\n              if (uVar16 < local_44) goto LAB_0002b0cf;\n              break;\n            }\n            uVar16 = uVar16 + 1;\n          } while (uVar16 != local_44);\n          if (bVar4) {\n            iVar11 = dcgettext(0,unaff_EBP + 0x3460e,5);\nLAB_0002b07a:\n            if (iVar11 == 0) break;\n            if (*(int *)(&DAT_0005e002 + unaff_EBP) != 0) goto LAB_0002af93;\nLAB_0002b090:\n            FUN_000357d0(local_3c);\n            goto LAB_0002afd9;\n          }\n          if (puVar18 == (undefined4 *)0x0) {\n            if (*(int *)(&DAT_0005e002 + unaff_EBP) == 0) {\n              iVar11 = dcgettext(0,unaff_EBP + 0x34312,5);\n              if (iVar11 != 0) goto LAB_0002b090;\n              piVar17 = *(int **)(iVar8 + 0x10);\n              if (piVar17 == (int *)0x0) goto LAB_0002af6d;\n              goto LAB_0002aef9;\n            }\n            puVar18 = (undefined4 *)FUN_00028ba0();\n            iVar11 = -1;\n            puVar14 = *(undefined4 **)(iVar8 + 0x10);\n            if (*(undefined4 **)(iVar8 + 0x10) == (undefined4 *)0x0) {\n              iVar11 = 0;\n              puVar15 = (undefined4 *)(iVar8 + 0x10);\n            }\n            else {\n              do {\n                puVar15 = puVar14;\n                if (iVar11 <= (int)puVar15[10]) {\n                  iVar11 = puVar15[10] + 1;\n                }\n                puVar14 = (undefined4 *)*puVar15;\n              } while ((undefined4 *)*puVar15 != (undefined4 *)0x0);\n              if (iVar11 == -1) {\n                iVar11 = 0;\n              }\n            }\n            *puVar15 = puVar18;\n            puVar18[10] = iVar11;\n          }\n          if (puVar18[0xb] == 2) {\n            FUN_00035930(puVar18 + 7,local_48 + uVar9,local_44 - uVar9);\n            uVar9 = local_44;\n          }\n          else {\n            uVar9 = FUN_00029a00();\n          }\n          local_58 = (local_58 + 1) - (uint)(puVar18[8] == 0);\n          do {\n            puVar18 = (undefined4 *)*puVar18;\n            if (puVar18 == (undefined4 *)0x0) break;\n          } while ((int)puVar18[10] < 0);\nLAB_0002aebd:\n          iVar2 = *(int *)(&DAT_0005e002 + unaff_EBP);\njoined_r0x0002b16d:\n          if (iVar2 != 0) goto LAB_0002aecb;\n          uVar9 = FUN_000359c0(uVar9,&local_48);\n          if (local_44 <= uVar9) break;\n        } while( true );\n      }" (if "if") (parenthesized_expression "(uVar9 < local_44)" (( "(") (binary_expression "uVar9 < local_44" (identifier "uVar9") (< "<") (identifier "local_44")) () ")")) (compound_statement "{\n        do {\n          uVar16 = uVar9;\n          do {\n            bVar1 = local_48[uVar16];\n            bVar6 = 1;\n            if ((byte)(bVar1 - 0x20) < 0x1c) {\n              bVar6 = ~(byte)(0x8001305 >> (bVar1 - 0x20 & 0x1f)) & 1;\n            }\n            if ((bVar1 == 9) || (bVar6 == 0)) {\n              if ((uVar16 < local_44) && (*(int *)(&DAT_0005e006 + unaff_EBP) == 0)) {\nLAB_0002b0c6:\n                if (bVar1 == 0x3d) {\nLAB_0002b0cf:\n                  FUN_000358a0(local_3c);\n                  iVar11 = FUN_00028c80(local_3c);\n                  if (local_48[iVar11] != '=') {\n                    iVar11 = dcgettext(0,unaff_EBP + 0x3457a,5);\n                    goto LAB_0002b07a;\n                  }\n                  uVar13 = FUN_00035970(local_3c);\n                  iVar11 = FUN_000254b0(*(undefined4 *)(iVar8 + 0x14),uVar13);\n                  uVar13 = local_3c[0];\n                  if (iVar11 == 0) {\n                    uVar10 = *(undefined4 *)(iVar8 + 0x18);\n                    uVar12 = dcgettext(0,unaff_EBP + 0x3459a,5);\n                    FUN_0002bd60(uVar12,uVar13,uVar10);\n                    FUN_000358a0(local_3c);\n                    uVar9 = FUN_00029a00();\n                    bVar4 = true;\n                    goto LAB_0002aebd;\n                  }\n                  if (*(int *)(iVar11 + 0x20) != 0) {\n                    uVar13 = *(undefined4 *)(iVar8 + 0x18);\n                    uVar10 = *(undefined4 *)(iVar11 + 4);\n                    uVar12 = dcgettext(0,unaff_EBP + 0x345ce,5);\n                    FUN_0002bc80(uVar12,uVar10,uVar13);\n                    FUN_000358a0(iVar11 + 0x1c);\n                  }\n                  uVar9 = FUN_00029a00();\n                  bVar4 = true;\n                  iVar2 = *(int *)(&DAT_0005e002 + unaff_EBP);\n                  local_58 = (local_58 + 1) - (uint)(*(int *)(iVar11 + 0x20) == 0);\n                  goto joined_r0x0002b16d;\n                }\n              }\n              break;\n            }\n            if (*(int *)(&DAT_0005e006 + unaff_EBP) != 0) break;\n            if (*(int *)(&DAT_0005e002 + unaff_EBP) != 0) {\n              if ((bVar1 & 0xfd) == 0x3c) {\n                if (uVar16 < local_44) goto LAB_0002b0c6;\n                break;\n              }\n              if (bVar1 == 0x27) break;\n            }\n            if (bVar1 == 0x3d) {\n              if (uVar16 < local_44) goto LAB_0002b0cf;\n              break;\n            }\n            uVar16 = uVar16 + 1;\n          } while (uVar16 != local_44);\n          if (bVar4) {\n            iVar11 = dcgettext(0,unaff_EBP + 0x3460e,5);\nLAB_0002b07a:\n            if (iVar11 == 0) break;\n            if (*(int *)(&DAT_0005e002 + unaff_EBP) != 0) goto LAB_0002af93;\nLAB_0002b090:\n            FUN_000357d0(local_3c);\n            goto LAB_0002afd9;\n          }\n          if (puVar18 == (undefined4 *)0x0) {\n            if (*(int *)(&DAT_0005e002 + unaff_EBP) == 0) {\n              iVar11 = dcgettext(0,unaff_EBP + 0x34312,5);\n              if (iVar11 != 0) goto LAB_0002b090;\n              piVar17 = *(int **)(iVar8 + 0x10);\n              if (piVar17 == (int *)0x0) goto LAB_0002af6d;\n              goto LAB_0002aef9;\n            }\n            puVar18 = (undefined4 *)FUN_00028ba0();\n            iVar11 = -1;\n            puVar14 = *(undefined4 **)(iVar8 + 0x10);\n            if (*(undefined4 **)(iVar8 + 0x10) == (undefined4 *)0x0) {\n              iVar11 = 0;\n              puVar15 = (undefined4 *)(iVar8 + 0x10);\n            }\n            else {\n              do {\n                puVar15 = puVar14;\n                if (iVar11 <= (int)puVar15[10]) {\n                  iVar11 = puVar15[10] + 1;\n                }\n                puVar14 = (undefined4 *)*puVar15;\n              } while ((undefined4 *)*puVar15 != (undefined4 *)0x0);\n              if (iVar11 == -1) {\n                iVar11 = 0;\n              }\n            }\n            *puVar15 = puVar18;\n            puVar18[10] = iVar11;\n          }\n          if (puVar18[0xb] == 2) {\n            FUN_00035930(puVar18 + 7,local_48 + uVar9,local_44 - uVar9);\n            uVar9 = local_44;\n          }\n          else {\n            uVar9 = FUN_00029a00();\n          }\n          local_58 = (local_58 + 1) - (uint)(puVar18[8] == 0);\n          do {\n            puVar18 = (undefined4 *)*puVar18;\n            if (puVar18 == (undefined4 *)0x0) break;\n          } while ((int)puVar18[10] < 0);\nLAB_0002aebd:\n          iVar2 = *(int *)(&DAT_0005e002 + unaff_EBP);\njoined_r0x0002b16d:\n          if (iVar2 != 0) goto LAB_0002aecb;\n          uVar9 = FUN_000359c0(uVar9,&local_48);\n          if (local_44 <= uVar9) break;\n        } while( true );\n      }" ({ "{") (do_statement "do {\n          uVar16 = uVar9;\n          do {\n            bVar1 = local_48[uVar16];\n            bVar6 = 1;\n            if ((byte)(bVar1 - 0x20) < 0x1c) {\n              bVar6 = ~(byte)(0x8001305 >> (bVar1 - 0x20 & 0x1f)) & 1;\n            }\n            if ((bVar1 == 9) || (bVar6 == 0)) {\n              if ((uVar16 < local_44) && (*(int *)(&DAT_0005e006 + unaff_EBP) == 0)) {\nLAB_0002b0c6:\n                if (bVar1 == 0x3d) {\nLAB_0002b0cf:\n                  FUN_000358a0(local_3c);\n                  iVar11 = FUN_00028c80(local_3c);\n                  if (local_48[iVar11] != '=') {\n                    iVar11 = dcgettext(0,unaff_EBP + 0x3457a,5);\n                    goto LAB_0002b07a;\n                  }\n                  uVar13 = FUN_00035970(local_3c);\n                  iVar11 = FUN_000254b0(*(undefined4 *)(iVar8 + 0x14),uVar13);\n                  uVar13 = local_3c[0];\n                  if (iVar11 == 0) {\n                    uVar10 = *(undefined4 *)(iVar8 + 0x18);\n                    uVar12 = dcgettext(0,unaff_EBP + 0x3459a,5);\n                    FUN_0002bd60(uVar12,uVar13,uVar10);\n                    FUN_000358a0(local_3c);\n                    uVar9 = FUN_00029a00();\n                    bVar4 = true;\n                    goto LAB_0002aebd;\n                  }\n                  if (*(int *)(iVar11 + 0x20) != 0) {\n                    uVar13 = *(undefined4 *)(iVar8 + 0x18);\n                    uVar10 = *(undefined4 *)(iVar11 + 4);\n                    uVar12 = dcgettext(0,unaff_EBP + 0x345ce,5);\n                    FUN_0002bc80(uVar12,uVar10,uVar13);\n                    FUN_000358a0(iVar11 + 0x1c);\n                  }\n                  uVar9 = FUN_00029a00();\n                  bVar4 = true;\n                  iVar2 = *(int *)(&DAT_0005e002 + unaff_EBP);\n                  local_58 = (local_58 + 1) - (uint)(*(int *)(iVar11 + 0x20) == 0);\n                  goto joined_r0x0002b16d;\n                }\n              }\n              break;\n            }\n            if (*(int *)(&DAT_0005e006 + unaff_EBP) != 0) break;\n            if (*(int *)(&DAT_0005e002 + unaff_EBP) != 0) {\n              if ((bVar1 & 0xfd) == 0x3c) {\n                if (uVar16 < local_44) goto LAB_0002b0c6;\n                break;\n              }\n              if (bVar1 == 0x27) break;\n            }\n            if (bVar1 == 0x3d) {\n              if (uVar16 < local_44) goto LAB_0002b0cf;\n              break;\n            }\n            uVar16 = uVar16 + 1;\n          } while (uVar16 != local_44);\n          if (bVar4) {\n            iVar11 = dcgettext(0,unaff_EBP + 0x3460e,5);\nLAB_0002b07a:\n            if (iVar11 == 0) break;\n            if (*(int *)(&DAT_0005e002 + unaff_EBP) != 0) goto LAB_0002af93;\nLAB_0002b090:\n            FUN_000357d0(local_3c);\n            goto LAB_0002afd9;\n          }\n          if (puVar18 == (undefined4 *)0x0) {\n            if (*(int *)(&DAT_0005e002 + unaff_EBP) == 0) {\n              iVar11 = dcgettext(0,unaff_EBP + 0x34312,5);\n              if (iVar11 != 0) goto LAB_0002b090;\n              piVar17 = *(int **)(iVar8 + 0x10);\n              if (piVar17 == (int *)0x0) goto LAB_0002af6d;\n              goto LAB_0002aef9;\n            }\n            puVar18 = (undefined4 *)FUN_00028ba0();\n            iVar11 = -1;\n            puVar14 = *(undefined4 **)(iVar8 + 0x10);\n            if (*(undefined4 **)(iVar8 + 0x10) == (undefined4 *)0x0) {\n              iVar11 = 0;\n              puVar15 = (undefined4 *)(iVar8 + 0x10);\n            }\n            else {\n              do {\n                puVar15 = puVar14;\n                if (iVar11 <= (int)puVar15[10]) {\n                  iVar11 = puVar15[10] + 1;\n                }\n                puVar14 = (undefined4 *)*puVar15;\n              } while ((undefined4 *)*puVar15 != (undefined4 *)0x0);\n              if (iVar11 == -1) {\n                iVar11 = 0;\n              }\n            }\n            *puVar15 = puVar18;\n            puVar18[10] = iVar11;\n          }\n          if (puVar18[0xb] == 2) {\n            FUN_00035930(puVar18 + 7,local_48 + uVar9,local_44 - uVar9);\n            uVar9 = local_44;\n          }\n          else {\n            uVar9 = FUN_00029a00();\n          }\n          local_58 = (local_58 + 1) - (uint)(puVar18[8] == 0);\n          do {\n            puVar18 = (undefined4 *)*puVar18;\n            if (puVar18 == (undefined4 *)0x0) break;\n          } while ((int)puVar18[10] < 0);\nLAB_0002aebd:\n          iVar2 = *(int *)(&DAT_0005e002 + unaff_EBP);\njoined_r0x0002b16d:\n          if (iVar2 != 0) goto LAB_0002aecb;\n          uVar9 = FUN_000359c0(uVar9,&local_48);\n          if (local_44 <= uVar9) break;\n        } while( true );" (do "do") (compound_statement "{\n          uVar16 = uVar9;\n          do {\n            bVar1 = local_48[uVar16];\n            bVar6 = 1;\n            if ((byte)(bVar1 - 0x20) < 0x1c) {\n              bVar6 = ~(byte)(0x8001305 >> (bVar1 - 0x20 & 0x1f)) & 1;\n            }\n            if ((bVar1 == 9) || (bVar6 == 0)) {\n              if ((uVar16 < local_44) && (*(int *)(&DAT_0005e006 + unaff_EBP) == 0)) {\nLAB_0002b0c6:\n                if (bVar1 == 0x3d) {\nLAB_0002b0cf:\n                  FUN_000358a0(local_3c);\n                  iVar11 = FUN_00028c80(local_3c);\n                  if (local_48[iVar11] != '=') {\n                    iVar11 = dcgettext(0,unaff_EBP + 0x3457a,5);\n                    goto LAB_0002b07a;\n                  }\n                  uVar13 = FUN_00035970(local_3c);\n                  iVar11 = FUN_000254b0(*(undefined4 *)(iVar8 + 0x14),uVar13);\n                  uVar13 = local_3c[0];\n                  if (iVar11 == 0) {\n                    uVar10 = *(undefined4 *)(iVar8 + 0x18);\n                    uVar12 = dcgettext(0,unaff_EBP + 0x3459a,5);\n                    FUN_0002bd60(uVar12,uVar13,uVar10);\n                    FUN_000358a0(local_3c);\n                    uVar9 = FUN_00029a00();\n                    bVar4 = true;\n                    goto LAB_0002aebd;\n                  }\n                  if (*(int *)(iVar11 + 0x20) != 0) {\n                    uVar13 = *(undefined4 *)(iVar8 + 0x18);\n                    uVar10 = *(undefined4 *)(iVar11 + 4);\n                    uVar12 = dcgettext(0,unaff_EBP + 0x345ce,5);\n                    FUN_0002bc80(uVar12,uVar10,uVar13);\n                    FUN_000358a0(iVar11 + 0x1c);\n                  }\n                  uVar9 = FUN_00029a00();\n                  bVar4 = true;\n                  iVar2 = *(int *)(&DAT_0005e002 + unaff_EBP);\n                  local_58 = (local_58 + 1) - (uint)(*(int *)(iVar11 + 0x20) == 0);\n                  goto joined_r0x0002b16d;\n                }\n              }\n              break;\n            }\n            if (*(int *)(&DAT_0005e006 + unaff_EBP) != 0) break;\n            if (*(int *)(&DAT_0005e002 + unaff_EBP) != 0) {\n              if ((bVar1 & 0xfd) == 0x3c) {\n                if (uVar16 < local_44) goto LAB_0002b0c6;\n                break;\n              }\n              if (bVar1 == 0x27) break;\n            }\n            if (bVar1 == 0x3d) {\n              if (uVar16 < local_44) goto LAB_0002b0cf;\n              break;\n            }\n            uVar16 = uVar16 + 1;\n          } while (uVar16 != local_44);\n          if (bVar4) {\n            iVar11 = dcgettext(0,unaff_EBP + 0x3460e,5);\nLAB_0002b07a:\n            if (iVar11 == 0) break;\n            if (*(int *)(&DAT_0005e002 + unaff_EBP) != 0) goto LAB_0002af93;\nLAB_0002b090:\n            FUN_000357d0(local_3c);\n            goto LAB_0002afd9;\n          }\n          if (puVar18 == (undefined4 *)0x0) {\n            if (*(int *)(&DAT_0005e002 + unaff_EBP) == 0) {\n              iVar11 = dcgettext(0,unaff_EBP + 0x34312,5);\n              if (iVar11 != 0) goto LAB_0002b090;\n              piVar17 = *(int **)(iVar8 + 0x10);\n              if (piVar17 == (int *)0x0) goto LAB_0002af6d;\n              goto LAB_0002aef9;\n            }\n            puVar18 = (undefined4 *)FUN_00028ba0();\n            iVar11 = -1;\n            puVar14 = *(undefined4 **)(iVar8 + 0x10);\n            if (*(undefined4 **)(iVar8 + 0x10) == (undefined4 *)0x0) {\n              iVar11 = 0;\n              puVar15 = (undefined4 *)(iVar8 + 0x10);\n            }\n            else {\n              do {\n                puVar15 = puVar14;\n                if (iVar11 <= (int)puVar15[10]) {\n                  iVar11 = puVar15[10] + 1;\n                }\n                puVar14 = (undefined4 *)*puVar15;\n              } while ((undefined4 *)*puVar15 != (undefined4 *)0x0);\n              if (iVar11 == -1) {\n                iVar11 = 0;\n              }\n            }\n            *puVar15 = puVar18;\n            puVar18[10] = iVar11;\n          }\n          if (puVar18[0xb] == 2) {\n            FUN_00035930(puVar18 + 7,local_48 + uVar9,local_44 - uVar9);\n            uVar9 = local_44;\n          }\n          else {\n            uVar9 = FUN_00029a00();\n          }\n          local_58 = (local_58 + 1) - (uint)(puVar18[8] == 0);\n          do {\n            puVar18 = (undefined4 *)*puVar18;\n            if (puVar18 == (undefined4 *)0x0) break;\n          } while ((int)puVar18[10] < 0);\nLAB_0002aebd:\n          iVar2 = *(int *)(&DAT_0005e002 + unaff_EBP);\njoined_r0x0002b16d:\n          if (iVar2 != 0) goto LAB_0002aecb;\n          uVar9 = FUN_000359c0(uVar9,&local_48);\n          if (local_44 <= uVar9) break;\n        }" ({ "{") (expression_statement "uVar16 = uVar9;" (assignment_expression "uVar16 = uVar9" (identifier "uVar16") (= "=") (identifier "uVar9")) (; ";")) (do_statement "do {\n            bVar1 = local_48[uVar16];\n            bVar6 = 1;\n            if ((byte)(bVar1 - 0x20) < 0x1c) {\n              bVar6 = ~(byte)(0x8001305 >> (bVar1 - 0x20 & 0x1f)) & 1;\n            }\n            if ((bVar1 == 9) || (bVar6 == 0)) {\n              if ((uVar16 < local_44) && (*(int *)(&DAT_0005e006 + unaff_EBP) == 0)) {\nLAB_0002b0c6:\n                if (bVar1 == 0x3d) {\nLAB_0002b0cf:\n                  FUN_000358a0(local_3c);\n                  iVar11 = FUN_00028c80(local_3c);\n                  if (local_48[iVar11] != '=') {\n                    iVar11 = dcgettext(0,unaff_EBP + 0x3457a,5);\n                    goto LAB_0002b07a;\n                  }\n                  uVar13 = FUN_00035970(local_3c);\n                  iVar11 = FUN_000254b0(*(undefined4 *)(iVar8 + 0x14),uVar13);\n                  uVar13 = local_3c[0];\n                  if (iVar11 == 0) {\n                    uVar10 = *(undefined4 *)(iVar8 + 0x18);\n                    uVar12 = dcgettext(0,unaff_EBP + 0x3459a,5);\n                    FUN_0002bd60(uVar12,uVar13,uVar10);\n                    FUN_000358a0(local_3c);\n                    uVar9 = FUN_00029a00();\n                    bVar4 = true;\n                    goto LAB_0002aebd;\n                  }\n                  if (*(int *)(iVar11 + 0x20) != 0) {\n                    uVar13 = *(undefined4 *)(iVar8 + 0x18);\n                    uVar10 = *(undefined4 *)(iVar11 + 4);\n                    uVar12 = dcgettext(0,unaff_EBP + 0x345ce,5);\n                    FUN_0002bc80(uVar12,uVar10,uVar13);\n                    FUN_000358a0(iVar11 + 0x1c);\n                  }\n                  uVar9 = FUN_00029a00();\n                  bVar4 = true;\n                  iVar2 = *(int *)(&DAT_0005e002 + unaff_EBP);\n                  local_58 = (local_58 + 1) - (uint)(*(int *)(iVar11 + 0x20) == 0);\n                  goto joined_r0x0002b16d;\n                }\n              }\n              break;\n            }\n            if (*(int *)(&DAT_0005e006 + unaff_EBP) != 0) break;\n            if (*(int *)(&DAT_0005e002 + unaff_EBP) != 0) {\n              if ((bVar1 & 0xfd) == 0x3c) {\n                if (uVar16 < local_44) goto LAB_0002b0c6;\n                break;\n              }\n              if (bVar1 == 0x27) break;\n            }\n            if (bVar1 == 0x3d) {\n              if (uVar16 < local_44) goto LAB_0002b0cf;\n              break;\n            }\n            uVar16 = uVar16 + 1;\n          } while (uVar16 != local_44);" (do "do") (compound_statement "{\n            bVar1 = local_48[uVar16];\n            bVar6 = 1;\n            if ((byte)(bVar1 - 0x20) < 0x1c) {\n              bVar6 = ~(byte)(0x8001305 >> (bVar1 - 0x20 & 0x1f)) & 1;\n            }\n            if ((bVar1 == 9) || (bVar6 == 0)) {\n              if ((uVar16 < local_44) && (*(int *)(&DAT_0005e006 + unaff_EBP) == 0)) {\nLAB_0002b0c6:\n                if (bVar1 == 0x3d) {\nLAB_0002b0cf:\n                  FUN_000358a0(local_3c);\n                  iVar11 = FUN_00028c80(local_3c);\n                  if (local_48[iVar11] != '=') {\n                    iVar11 = dcgettext(0,unaff_EBP + 0x3457a,5);\n                    goto LAB_0002b07a;\n                  }\n                  uVar13 = FUN_00035970(local_3c);\n                  iVar11 = FUN_000254b0(*(undefined4 *)(iVar8 + 0x14),uVar13);\n                  uVar13 = local_3c[0];\n                  if (iVar11 == 0) {\n                    uVar10 = *(undefined4 *)(iVar8 + 0x18);\n                    uVar12 = dcgettext(0,unaff_EBP + 0x3459a,5);\n                    FUN_0002bd60(uVar12,uVar13,uVar10);\n                    FUN_000358a0(local_3c);\n                    uVar9 = FUN_00029a00();\n                    bVar4 = true;\n                    goto LAB_0002aebd;\n                  }\n                  if (*(int *)(iVar11 + 0x20) != 0) {\n                    uVar13 = *(undefined4 *)(iVar8 + 0x18);\n                    uVar10 = *(undefined4 *)(iVar11 + 4);\n                    uVar12 = dcgettext(0,unaff_EBP + 0x345ce,5);\n                    FUN_0002bc80(uVar12,uVar10,uVar13);\n                    FUN_000358a0(iVar11 + 0x1c);\n                  }\n                  uVar9 = FUN_00029a00();\n                  bVar4 = true;\n                  iVar2 = *(int *)(&DAT_0005e002 + unaff_EBP);\n                  local_58 = (local_58 + 1) - (uint)(*(int *)(iVar11 + 0x20) == 0);\n                  goto joined_r0x0002b16d;\n                }\n              }\n              break;\n            }\n            if (*(int *)(&DAT_0005e006 + unaff_EBP) != 0) break;\n            if (*(int *)(&DAT_0005e002 + unaff_EBP) != 0) {\n              if ((bVar1 & 0xfd) == 0x3c) {\n                if (uVar16 < local_44) goto LAB_0002b0c6;\n                break;\n              }\n              if (bVar1 == 0x27) break;\n            }\n            if (bVar1 == 0x3d) {\n              if (uVar16 < local_44) goto LAB_0002b0cf;\n              break;\n            }\n            uVar16 = uVar16 + 1;\n          }" ({ "{") (expression_statement "bVar1 = local_48[uVar16];" (assignment_expression "bVar1 = local_48[uVar16]" (identifier "bVar1") (= "=") (subscript_expression "local_48[uVar16]" (identifier "local_48") ([ "[") (identifier "uVar16") (] "]"))) (; ";")) (expression_statement "bVar6 = 1;" (assignment_expression "bVar6 = 1" (identifier "bVar6") (= "=") (number_literal "1")) (; ";")) (if_statement "if ((byte)(bVar1 - 0x20) < 0x1c) {\n              bVar6 = ~(byte)(0x8001305 >> (bVar1 - 0x20 & 0x1f)) & 1;\n            }" (if "if") (parenthesized_expression "((byte)(bVar1 - 0x20) < 0x1c)" (( "(") (binary_expression "(byte)(bVar1 - 0x20) < 0x1c" (call_expression "(byte)(bVar1 - 0x20)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(bVar1 - 0x20)" (( "(") (binary_expression "bVar1 - 0x20" (identifier "bVar1") (- "-") (number_literal "0x20")) () ")"))) (< "<") (number_literal "0x1c")) () ")")) (compound_statement "{\n              bVar6 = ~(byte)(0x8001305 >> (bVar1 - 0x20 & 0x1f)) & 1;\n            }" ({ "{") (expression_statement "bVar6 = ~(byte)(0x8001305 >> (bVar1 - 0x20 & 0x1f)) & 1;" (assignment_expression "bVar6 = ~(byte)(0x8001305 >> (bVar1 - 0x20 & 0x1f)) & 1" (identifier "bVar6") (= "=") (binary_expression "~(byte)(0x8001305 >> (bVar1 - 0x20 & 0x1f)) & 1" (unary_expression "~(byte)(0x8001305 >> (bVar1 - 0x20 & 0x1f))" (~ "~") (call_expression "(byte)(0x8001305 >> (bVar1 - 0x20 & 0x1f))" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(0x8001305 >> (bVar1 - 0x20 & 0x1f))" (( "(") (binary_expression "0x8001305 >> (bVar1 - 0x20 & 0x1f)" (number_literal "0x8001305") (>> ">>") (parenthesized_expression "(bVar1 - 0x20 & 0x1f)" (( "(") (binary_expression "bVar1 - 0x20 & 0x1f" (binary_expression "bVar1 - 0x20" (identifier "bVar1") (- "-") (number_literal "0x20")) (& "&") (number_literal "0x1f")) () ")"))) () ")")))) (& "&") (number_literal "1"))) (; ";")) (} "}"))) (if_statement "if ((bVar1 == 9) || (bVar6 == 0)) {\n              if ((uVar16 < local_44) && (*(int *)(&DAT_0005e006 + unaff_EBP) == 0)) {\nLAB_0002b0c6:\n                if (bVar1 == 0x3d) {\nLAB_0002b0cf:\n                  FUN_000358a0(local_3c);\n                  iVar11 = FUN_00028c80(local_3c);\n                  if (local_48[iVar11] != '=') {\n                    iVar11 = dcgettext(0,unaff_EBP + 0x3457a,5);\n                    goto LAB_0002b07a;\n                  }\n                  uVar13 = FUN_00035970(local_3c);\n                  iVar11 = FUN_000254b0(*(undefined4 *)(iVar8 + 0x14),uVar13);\n                  uVar13 = local_3c[0];\n                  if (iVar11 == 0) {\n                    uVar10 = *(undefined4 *)(iVar8 + 0x18);\n                    uVar12 = dcgettext(0,unaff_EBP + 0x3459a,5);\n                    FUN_0002bd60(uVar12,uVar13,uVar10);\n                    FUN_000358a0(local_3c);\n                    uVar9 = FUN_00029a00();\n                    bVar4 = true;\n                    goto LAB_0002aebd;\n                  }\n                  if (*(int *)(iVar11 + 0x20) != 0) {\n                    uVar13 = *(undefined4 *)(iVar8 + 0x18);\n                    uVar10 = *(undefined4 *)(iVar11 + 4);\n                    uVar12 = dcgettext(0,unaff_EBP + 0x345ce,5);\n                    FUN_0002bc80(uVar12,uVar10,uVar13);\n                    FUN_000358a0(iVar11 + 0x1c);\n                  }\n                  uVar9 = FUN_00029a00();\n                  bVar4 = true;\n                  iVar2 = *(int *)(&DAT_0005e002 + unaff_EBP);\n                  local_58 = (local_58 + 1) - (uint)(*(int *)(iVar11 + 0x20) == 0);\n                  goto joined_r0x0002b16d;\n                }\n              }\n              break;\n            }" (if "if") (parenthesized_expression "((bVar1 == 9) || (bVar6 == 0))" (( "(") (binary_expression "(bVar1 == 9) || (bVar6 == 0)" (parenthesized_expression "(bVar1 == 9)" (( "(") (binary_expression "bVar1 == 9" (identifier "bVar1") (== "==") (number_literal "9")) () ")")) (|| "||") (parenthesized_expression "(bVar6 == 0)" (( "(") (binary_expression "bVar6 == 0" (identifier "bVar6") (== "==") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n              if ((uVar16 < local_44) && (*(int *)(&DAT_0005e006 + unaff_EBP) == 0)) {\nLAB_0002b0c6:\n                if (bVar1 == 0x3d) {\nLAB_0002b0cf:\n                  FUN_000358a0(local_3c);\n                  iVar11 = FUN_00028c80(local_3c);\n                  if (local_48[iVar11] != '=') {\n                    iVar11 = dcgettext(0,unaff_EBP + 0x3457a,5);\n                    goto LAB_0002b07a;\n                  }\n                  uVar13 = FUN_00035970(local_3c);\n                  iVar11 = FUN_000254b0(*(undefined4 *)(iVar8 + 0x14),uVar13);\n                  uVar13 = local_3c[0];\n                  if (iVar11 == 0) {\n                    uVar10 = *(undefined4 *)(iVar8 + 0x18);\n                    uVar12 = dcgettext(0,unaff_EBP + 0x3459a,5);\n                    FUN_0002bd60(uVar12,uVar13,uVar10);\n                    FUN_000358a0(local_3c);\n                    uVar9 = FUN_00029a00();\n                    bVar4 = true;\n                    goto LAB_0002aebd;\n                  }\n                  if (*(int *)(iVar11 + 0x20) != 0) {\n                    uVar13 = *(undefined4 *)(iVar8 + 0x18);\n                    uVar10 = *(undefined4 *)(iVar11 + 4);\n                    uVar12 = dcgettext(0,unaff_EBP + 0x345ce,5);\n                    FUN_0002bc80(uVar12,uVar10,uVar13);\n                    FUN_000358a0(iVar11 + 0x1c);\n                  }\n                  uVar9 = FUN_00029a00();\n                  bVar4 = true;\n                  iVar2 = *(int *)(&DAT_0005e002 + unaff_EBP);\n                  local_58 = (local_58 + 1) - (uint)(*(int *)(iVar11 + 0x20) == 0);\n                  goto joined_r0x0002b16d;\n                }\n              }\n              break;\n            }" ({ "{") (if_statement "if ((uVar16 < local_44) && (*(int *)(&DAT_0005e006 + unaff_EBP) == 0)) {\nLAB_0002b0c6:\n                if (bVar1 == 0x3d) {\nLAB_0002b0cf:\n                  FUN_000358a0(local_3c);\n                  iVar11 = FUN_00028c80(local_3c);\n                  if (local_48[iVar11] != '=') {\n                    iVar11 = dcgettext(0,unaff_EBP + 0x3457a,5);\n                    goto LAB_0002b07a;\n                  }\n                  uVar13 = FUN_00035970(local_3c);\n                  iVar11 = FUN_000254b0(*(undefined4 *)(iVar8 + 0x14),uVar13);\n                  uVar13 = local_3c[0];\n                  if (iVar11 == 0) {\n                    uVar10 = *(undefined4 *)(iVar8 + 0x18);\n                    uVar12 = dcgettext(0,unaff_EBP + 0x3459a,5);\n                    FUN_0002bd60(uVar12,uVar13,uVar10);\n                    FUN_000358a0(local_3c);\n                    uVar9 = FUN_00029a00();\n                    bVar4 = true;\n                    goto LAB_0002aebd;\n                  }\n                  if (*(int *)(iVar11 + 0x20) != 0) {\n                    uVar13 = *(undefined4 *)(iVar8 + 0x18);\n                    uVar10 = *(undefined4 *)(iVar11 + 4);\n                    uVar12 = dcgettext(0,unaff_EBP + 0x345ce,5);\n                    FUN_0002bc80(uVar12,uVar10,uVar13);\n                    FUN_000358a0(iVar11 + 0x1c);\n                  }\n                  uVar9 = FUN_00029a00();\n                  bVar4 = true;\n                  iVar2 = *(int *)(&DAT_0005e002 + unaff_EBP);\n                  local_58 = (local_58 + 1) - (uint)(*(int *)(iVar11 + 0x20) == 0);\n                  goto joined_r0x0002b16d;\n                }\n              }" (if "if") (parenthesized_expression "((uVar16 < local_44) && (*(int *)(&DAT_0005e006 + unaff_EBP) == 0))" (( "(") (binary_expression "(uVar16 < local_44) && (*(int *)(&DAT_0005e006 + unaff_EBP) == 0)" (parenthesized_expression "(uVar16 < local_44)" (( "(") (binary_expression "uVar16 < local_44" (identifier "uVar16") (< "<") (identifier "local_44")) () ")")) (&& "&&") (parenthesized_expression "(*(int *)(&DAT_0005e006 + unaff_EBP) == 0)" (( "(") (binary_expression "*(int *)(&DAT_0005e006 + unaff_EBP) == 0" (pointer_expression "*(int *)(&DAT_0005e006 + unaff_EBP)" (* "*") (cast_expression "(int *)(&DAT_0005e006 + unaff_EBP)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&DAT_0005e006 + unaff_EBP)" (( "(") (binary_expression "&DAT_0005e006 + unaff_EBP" (pointer_expression "&DAT_0005e006" (& "&") (identifier "DAT_0005e006")) (+ "+") (identifier "unaff_EBP")) () ")")))) (== "==") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\nLAB_0002b0c6:\n                if (bVar1 == 0x3d) {\nLAB_0002b0cf:\n                  FUN_000358a0(local_3c);\n                  iVar11 = FUN_00028c80(local_3c);\n                  if (local_48[iVar11] != '=') {\n                    iVar11 = dcgettext(0,unaff_EBP + 0x3457a,5);\n                    goto LAB_0002b07a;\n                  }\n                  uVar13 = FUN_00035970(local_3c);\n                  iVar11 = FUN_000254b0(*(undefined4 *)(iVar8 + 0x14),uVar13);\n                  uVar13 = local_3c[0];\n                  if (iVar11 == 0) {\n                    uVar10 = *(undefined4 *)(iVar8 + 0x18);\n                    uVar12 = dcgettext(0,unaff_EBP + 0x3459a,5);\n                    FUN_0002bd60(uVar12,uVar13,uVar10);\n                    FUN_000358a0(local_3c);\n                    uVar9 = FUN_00029a00();\n                    bVar4 = true;\n                    goto LAB_0002aebd;\n                  }\n                  if (*(int *)(iVar11 + 0x20) != 0) {\n                    uVar13 = *(undefined4 *)(iVar8 + 0x18);\n                    uVar10 = *(undefined4 *)(iVar11 + 4);\n                    uVar12 = dcgettext(0,unaff_EBP + 0x345ce,5);\n                    FUN_0002bc80(uVar12,uVar10,uVar13);\n                    FUN_000358a0(iVar11 + 0x1c);\n                  }\n                  uVar9 = FUN_00029a00();\n                  bVar4 = true;\n                  iVar2 = *(int *)(&DAT_0005e002 + unaff_EBP);\n                  local_58 = (local_58 + 1) - (uint)(*(int *)(iVar11 + 0x20) == 0);\n                  goto joined_r0x0002b16d;\n                }\n              }" ({ "{") (labeled_statement "LAB_0002b0c6:\n                if (bVar1 == 0x3d) {\nLAB_0002b0cf:\n                  FUN_000358a0(local_3c);\n                  iVar11 = FUN_00028c80(local_3c);\n                  if (local_48[iVar11] != '=') {\n                    iVar11 = dcgettext(0,unaff_EBP + 0x3457a,5);\n                    goto LAB_0002b07a;\n                  }\n                  uVar13 = FUN_00035970(local_3c);\n                  iVar11 = FUN_000254b0(*(undefined4 *)(iVar8 + 0x14),uVar13);\n                  uVar13 = local_3c[0];\n                  if (iVar11 == 0) {\n                    uVar10 = *(undefined4 *)(iVar8 + 0x18);\n                    uVar12 = dcgettext(0,unaff_EBP + 0x3459a,5);\n                    FUN_0002bd60(uVar12,uVar13,uVar10);\n                    FUN_000358a0(local_3c);\n                    uVar9 = FUN_00029a00();\n                    bVar4 = true;\n                    goto LAB_0002aebd;\n                  }\n                  if (*(int *)(iVar11 + 0x20) != 0) {\n                    uVar13 = *(undefined4 *)(iVar8 + 0x18);\n                    uVar10 = *(undefined4 *)(iVar11 + 4);\n                    uVar12 = dcgettext(0,unaff_EBP + 0x345ce,5);\n                    FUN_0002bc80(uVar12,uVar10,uVar13);\n                    FUN_000358a0(iVar11 + 0x1c);\n                  }\n                  uVar9 = FUN_00029a00();\n                  bVar4 = true;\n                  iVar2 = *(int *)(&DAT_0005e002 + unaff_EBP);\n                  local_58 = (local_58 + 1) - (uint)(*(int *)(iVar11 + 0x20) == 0);\n                  goto joined_r0x0002b16d;\n                }" (statement_identifier "LAB_0002b0c6") (: ":") (if_statement "if (bVar1 == 0x3d) {\nLAB_0002b0cf:\n                  FUN_000358a0(local_3c);\n                  iVar11 = FUN_00028c80(local_3c);\n                  if (local_48[iVar11] != '=') {\n                    iVar11 = dcgettext(0,unaff_EBP + 0x3457a,5);\n                    goto LAB_0002b07a;\n                  }\n                  uVar13 = FUN_00035970(local_3c);\n                  iVar11 = FUN_000254b0(*(undefined4 *)(iVar8 + 0x14),uVar13);\n                  uVar13 = local_3c[0];\n                  if (iVar11 == 0) {\n                    uVar10 = *(undefined4 *)(iVar8 + 0x18);\n                    uVar12 = dcgettext(0,unaff_EBP + 0x3459a,5);\n                    FUN_0002bd60(uVar12,uVar13,uVar10);\n                    FUN_000358a0(local_3c);\n                    uVar9 = FUN_00029a00();\n                    bVar4 = true;\n                    goto LAB_0002aebd;\n                  }\n                  if (*(int *)(iVar11 + 0x20) != 0) {\n                    uVar13 = *(undefined4 *)(iVar8 + 0x18);\n                    uVar10 = *(undefined4 *)(iVar11 + 4);\n                    uVar12 = dcgettext(0,unaff_EBP + 0x345ce,5);\n                    FUN_0002bc80(uVar12,uVar10,uVar13);\n                    FUN_000358a0(iVar11 + 0x1c);\n                  }\n                  uVar9 = FUN_00029a00();\n                  bVar4 = true;\n                  iVar2 = *(int *)(&DAT_0005e002 + unaff_EBP);\n                  local_58 = (local_58 + 1) - (uint)(*(int *)(iVar11 + 0x20) == 0);\n                  goto joined_r0x0002b16d;\n                }" (if "if") (parenthesized_expression "(bVar1 == 0x3d)" (( "(") (binary_expression "bVar1 == 0x3d" (identifier "bVar1") (== "==") (number_literal "0x3d")) () ")")) (compound_statement "{\nLAB_0002b0cf:\n                  FUN_000358a0(local_3c);\n                  iVar11 = FUN_00028c80(local_3c);\n                  if (local_48[iVar11] != '=') {\n                    iVar11 = dcgettext(0,unaff_EBP + 0x3457a,5);\n                    goto LAB_0002b07a;\n                  }\n                  uVar13 = FUN_00035970(local_3c);\n                  iVar11 = FUN_000254b0(*(undefined4 *)(iVar8 + 0x14),uVar13);\n                  uVar13 = local_3c[0];\n                  if (iVar11 == 0) {\n                    uVar10 = *(undefined4 *)(iVar8 + 0x18);\n                    uVar12 = dcgettext(0,unaff_EBP + 0x3459a,5);\n                    FUN_0002bd60(uVar12,uVar13,uVar10);\n                    FUN_000358a0(local_3c);\n                    uVar9 = FUN_00029a00();\n                    bVar4 = true;\n                    goto LAB_0002aebd;\n                  }\n                  if (*(int *)(iVar11 + 0x20) != 0) {\n                    uVar13 = *(undefined4 *)(iVar8 + 0x18);\n                    uVar10 = *(undefined4 *)(iVar11 + 4);\n                    uVar12 = dcgettext(0,unaff_EBP + 0x345ce,5);\n                    FUN_0002bc80(uVar12,uVar10,uVar13);\n                    FUN_000358a0(iVar11 + 0x1c);\n                  }\n                  uVar9 = FUN_00029a00();\n                  bVar4 = true;\n                  iVar2 = *(int *)(&DAT_0005e002 + unaff_EBP);\n                  local_58 = (local_58 + 1) - (uint)(*(int *)(iVar11 + 0x20) == 0);\n                  goto joined_r0x0002b16d;\n                }" ({ "{") (labeled_statement "LAB_0002b0cf:\n                  FUN_000358a0(local_3c);" (statement_identifier "LAB_0002b0cf") (: ":") (expression_statement "FUN_000358a0(local_3c);" (call_expression "FUN_000358a0(local_3c)" (identifier "FUN_000358a0") (argument_list "(local_3c)" (( "(") (identifier "local_3c") () ")"))) (; ";"))) (expression_statement "iVar11 = FUN_00028c80(local_3c);" (assignment_expression "iVar11 = FUN_00028c80(local_3c)" (identifier "iVar11") (= "=") (call_expression "FUN_00028c80(local_3c)" (identifier "FUN_00028c80") (argument_list "(local_3c)" (( "(") (identifier "local_3c") () ")")))) (; ";")) (if_statement "if (local_48[iVar11] != '=') {\n                    iVar11 = dcgettext(0,unaff_EBP + 0x3457a,5);\n                    goto LAB_0002b07a;\n                  }" (if "if") (parenthesized_expression "(local_48[iVar11] != '=')" (( "(") (binary_expression "local_48[iVar11] != '='" (subscript_expression "local_48[iVar11]" (identifier "local_48") ([ "[") (identifier "iVar11") (] "]")) (!= "!=") (char_literal "'='" (' "'") (character "=") (' "'"))) () ")")) (compound_statement "{\n                    iVar11 = dcgettext(0,unaff_EBP + 0x3457a,5);\n                    goto LAB_0002b07a;\n                  }" ({ "{") (expression_statement "iVar11 = dcgettext(0,unaff_EBP + 0x3457a,5);" (assignment_expression "iVar11 = dcgettext(0,unaff_EBP + 0x3457a,5)" (identifier "iVar11") (= "=") (call_expression "dcgettext(0,unaff_EBP + 0x3457a,5)" (identifier "dcgettext") (argument_list "(0,unaff_EBP + 0x3457a,5)" (( "(") (number_literal "0") (, ",") (binary_expression "unaff_EBP + 0x3457a" (identifier "unaff_EBP") (+ "+") (number_literal "0x3457a")) (, ",") (number_literal "5") () ")")))) (; ";")) (goto_statement "goto LAB_0002b07a;" (goto "goto") (statement_identifier "LAB_0002b07a") (; ";")) (} "}"))) (expression_statement "uVar13 = FUN_00035970(local_3c);" (assignment_expression "uVar13 = FUN_00035970(local_3c)" (identifier "uVar13") (= "=") (call_expression "FUN_00035970(local_3c)" (identifier "FUN_00035970") (argument_list "(local_3c)" (( "(") (identifier "local_3c") () ")")))) (; ";")) (expression_statement "iVar11 = FUN_000254b0(*(undefined4 *)(iVar8 + 0x14),uVar13);" (assignment_expression "iVar11 = FUN_000254b0(*(undefined4 *)(iVar8 + 0x14),uVar13)" (identifier "iVar11") (= "=") (call_expression "FUN_000254b0(*(undefined4 *)(iVar8 + 0x14),uVar13)" (identifier "FUN_000254b0") (argument_list "(*(undefined4 *)(iVar8 + 0x14),uVar13)" (( "(") (pointer_expression "*(undefined4 *)(iVar8 + 0x14)" (* "*") (cast_expression "(undefined4 *)(iVar8 + 0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 0x14)" (( "(") (binary_expression "iVar8 + 0x14" (identifier "iVar8") (+ "+") (number_literal "0x14")) () ")")))) (, ",") (identifier "uVar13") () ")")))) (; ";")) (expression_statement "uVar13 = local_3c[0];" (assignment_expression "uVar13 = local_3c[0]" (identifier "uVar13") (= "=") (subscript_expression "local_3c[0]" (identifier "local_3c") ([ "[") (number_literal "0") (] "]"))) (; ";")) (if_statement "if (iVar11 == 0) {\n                    uVar10 = *(undefined4 *)(iVar8 + 0x18);\n                    uVar12 = dcgettext(0,unaff_EBP + 0x3459a,5);\n                    FUN_0002bd60(uVar12,uVar13,uVar10);\n                    FUN_000358a0(local_3c);\n                    uVar9 = FUN_00029a00();\n                    bVar4 = true;\n                    goto LAB_0002aebd;\n                  }" (if "if") (parenthesized_expression "(iVar11 == 0)" (( "(") (binary_expression "iVar11 == 0" (identifier "iVar11") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                    uVar10 = *(undefined4 *)(iVar8 + 0x18);\n                    uVar12 = dcgettext(0,unaff_EBP + 0x3459a,5);\n                    FUN_0002bd60(uVar12,uVar13,uVar10);\n                    FUN_000358a0(local_3c);\n                    uVar9 = FUN_00029a00();\n                    bVar4 = true;\n                    goto LAB_0002aebd;\n                  }" ({ "{") (expression_statement "uVar10 = *(undefined4 *)(iVar8 + 0x18);" (assignment_expression "uVar10 = *(undefined4 *)(iVar8 + 0x18)" (identifier "uVar10") (= "=") (pointer_expression "*(undefined4 *)(iVar8 + 0x18)" (* "*") (cast_expression "(undefined4 *)(iVar8 + 0x18)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 0x18)" (( "(") (binary_expression "iVar8 + 0x18" (identifier "iVar8") (+ "+") (number_literal "0x18")) () ")"))))) (; ";")) (expression_statement "uVar12 = dcgettext(0,unaff_EBP + 0x3459a,5);" (assignment_expression "uVar12 = dcgettext(0,unaff_EBP + 0x3459a,5)" (identifier "uVar12") (= "=") (call_expression "dcgettext(0,unaff_EBP + 0x3459a,5)" (identifier "dcgettext") (argument_list "(0,unaff_EBP + 0x3459a,5)" (( "(") (number_literal "0") (, ",") (binary_expression "unaff_EBP + 0x3459a" (identifier "unaff_EBP") (+ "+") (number_literal "0x3459a")) (, ",") (number_literal "5") () ")")))) (; ";")) (expression_statement "FUN_0002bd60(uVar12,uVar13,uVar10);" (call_expression "FUN_0002bd60(uVar12,uVar13,uVar10)" (identifier "FUN_0002bd60") (argument_list "(uVar12,uVar13,uVar10)" (( "(") (identifier "uVar12") (, ",") (identifier "uVar13") (, ",") (identifier "uVar10") () ")"))) (; ";")) (expression_statement "FUN_000358a0(local_3c);" (call_expression "FUN_000358a0(local_3c)" (identifier "FUN_000358a0") (argument_list "(local_3c)" (( "(") (identifier "local_3c") () ")"))) (; ";")) (expression_statement "uVar9 = FUN_00029a00();" (assignment_expression "uVar9 = FUN_00029a00()" (identifier "uVar9") (= "=") (call_expression "FUN_00029a00()" (identifier "FUN_00029a00") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "bVar4 = true;" (assignment_expression "bVar4 = true" (identifier "bVar4") (= "=") (true "true")) (; ";")) (goto_statement "goto LAB_0002aebd;" (goto "goto") (statement_identifier "LAB_0002aebd") (; ";")) (} "}"))) (if_statement "if (*(int *)(iVar11 + 0x20) != 0) {\n                    uVar13 = *(undefined4 *)(iVar8 + 0x18);\n                    uVar10 = *(undefined4 *)(iVar11 + 4);\n                    uVar12 = dcgettext(0,unaff_EBP + 0x345ce,5);\n                    FUN_0002bc80(uVar12,uVar10,uVar13);\n                    FUN_000358a0(iVar11 + 0x1c);\n                  }" (if "if") (parenthesized_expression "(*(int *)(iVar11 + 0x20) != 0)" (( "(") (binary_expression "*(int *)(iVar11 + 0x20) != 0" (pointer_expression "*(int *)(iVar11 + 0x20)" (* "*") (cast_expression "(int *)(iVar11 + 0x20)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar11 + 0x20)" (( "(") (binary_expression "iVar11 + 0x20" (identifier "iVar11") (+ "+") (number_literal "0x20")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                    uVar13 = *(undefined4 *)(iVar8 + 0x18);\n                    uVar10 = *(undefined4 *)(iVar11 + 4);\n                    uVar12 = dcgettext(0,unaff_EBP + 0x345ce,5);\n                    FUN_0002bc80(uVar12,uVar10,uVar13);\n                    FUN_000358a0(iVar11 + 0x1c);\n                  }" ({ "{") (expression_statement "uVar13 = *(undefined4 *)(iVar8 + 0x18);" (assignment_expression "uVar13 = *(undefined4 *)(iVar8 + 0x18)" (identifier "uVar13") (= "=") (pointer_expression "*(undefined4 *)(iVar8 + 0x18)" (* "*") (cast_expression "(undefined4 *)(iVar8 + 0x18)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 0x18)" (( "(") (binary_expression "iVar8 + 0x18" (identifier "iVar8") (+ "+") (number_literal "0x18")) () ")"))))) (; ";")) (expression_statement "uVar10 = *(undefined4 *)(iVar11 + 4);" (assignment_expression "uVar10 = *(undefined4 *)(iVar11 + 4)" (identifier "uVar10") (= "=") (pointer_expression "*(undefined4 *)(iVar11 + 4)" (* "*") (cast_expression "(undefined4 *)(iVar11 + 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar11 + 4)" (( "(") (binary_expression "iVar11 + 4" (identifier "iVar11") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "uVar12 = dcgettext(0,unaff_EBP + 0x345ce,5);" (assignment_expression "uVar12 = dcgettext(0,unaff_EBP + 0x345ce,5)" (identifier "uVar12") (= "=") (call_expression "dcgettext(0,unaff_EBP + 0x345ce,5)" (identifier "dcgettext") (argument_list "(0,unaff_EBP + 0x345ce,5)" (( "(") (number_literal "0") (, ",") (binary_expression "unaff_EBP + 0x345ce" (identifier "unaff_EBP") (+ "+") (number_literal "0x345ce")) (, ",") (number_literal "5") () ")")))) (; ";")) (expression_statement "FUN_0002bc80(uVar12,uVar10,uVar13);" (call_expression "FUN_0002bc80(uVar12,uVar10,uVar13)" (identifier "FUN_0002bc80") (argument_list "(uVar12,uVar10,uVar13)" (( "(") (identifier "uVar12") (, ",") (identifier "uVar10") (, ",") (identifier "uVar13") () ")"))) (; ";")) (expression_statement "FUN_000358a0(iVar11 + 0x1c);" (call_expression "FUN_000358a0(iVar11 + 0x1c)" (identifier "FUN_000358a0") (argument_list "(iVar11 + 0x1c)" (( "(") (binary_expression "iVar11 + 0x1c" (identifier "iVar11") (+ "+") (number_literal "0x1c")) () ")"))) (; ";")) (} "}"))) (expression_statement "uVar9 = FUN_00029a00();" (assignment_expression "uVar9 = FUN_00029a00()" (identifier "uVar9") (= "=") (call_expression "FUN_00029a00()" (identifier "FUN_00029a00") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "bVar4 = true;" (assignment_expression "bVar4 = true" (identifier "bVar4") (= "=") (true "true")) (; ";")) (expression_statement "iVar2 = *(int *)(&DAT_0005e002 + unaff_EBP);" (assignment_expression "iVar2 = *(int *)(&DAT_0005e002 + unaff_EBP)" (identifier "iVar2") (= "=") (pointer_expression "*(int *)(&DAT_0005e002 + unaff_EBP)" (* "*") (cast_expression "(int *)(&DAT_0005e002 + unaff_EBP)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&DAT_0005e002 + unaff_EBP)" (( "(") (binary_expression "&DAT_0005e002 + unaff_EBP" (pointer_expression "&DAT_0005e002" (& "&") (identifier "DAT_0005e002")) (+ "+") (identifier "unaff_EBP")) () ")"))))) (; ";")) (expression_statement "local_58 = (local_58 + 1) - (uint)(*(int *)(iVar11 + 0x20) == 0);" (assignment_expression "local_58 = (local_58 + 1) - (uint)(*(int *)(iVar11 + 0x20) == 0)" (identifier "local_58") (= "=") (binary_expression "(local_58 + 1) - (uint)(*(int *)(iVar11 + 0x20) == 0)" (parenthesized_expression "(local_58 + 1)" (( "(") (binary_expression "local_58 + 1" (identifier "local_58") (+ "+") (number_literal "1")) () ")")) (- "-") (call_expression "(uint)(*(int *)(iVar11 + 0x20) == 0)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(*(int *)(iVar11 + 0x20) == 0)" (( "(") (binary_expression "*(int *)(iVar11 + 0x20) == 0" (pointer_expression "*(int *)(iVar11 + 0x20)" (* "*") (cast_expression "(int *)(iVar11 + 0x20)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar11 + 0x20)" (( "(") (binary_expression "iVar11 + 0x20" (identifier "iVar11") (+ "+") (number_literal "0x20")) () ")")))) (== "==") (number_literal "0")) () ")"))))) (; ";")) (goto_statement "goto joined_r0x0002b16d;" (goto "goto") (statement_identifier "joined_r0x0002b16d") (; ";")) (} "}")))) (} "}"))) (break_statement "break;" (break "break") (; ";")) (} "}"))) (if_statement "if (*(int *)(&DAT_0005e006 + unaff_EBP) != 0) break;" (if "if") (parenthesized_expression "(*(int *)(&DAT_0005e006 + unaff_EBP) != 0)" (( "(") (binary_expression "*(int *)(&DAT_0005e006 + unaff_EBP) != 0" (pointer_expression "*(int *)(&DAT_0005e006 + unaff_EBP)" (* "*") (cast_expression "(int *)(&DAT_0005e006 + unaff_EBP)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&DAT_0005e006 + unaff_EBP)" (( "(") (binary_expression "&DAT_0005e006 + unaff_EBP" (pointer_expression "&DAT_0005e006" (& "&") (identifier "DAT_0005e006")) (+ "+") (identifier "unaff_EBP")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (if_statement "if (*(int *)(&DAT_0005e002 + unaff_EBP) != 0) {\n              if ((bVar1 & 0xfd) == 0x3c) {\n                if (uVar16 < local_44) goto LAB_0002b0c6;\n                break;\n              }\n              if (bVar1 == 0x27) break;\n            }" (if "if") (parenthesized_expression "(*(int *)(&DAT_0005e002 + unaff_EBP) != 0)" (( "(") (binary_expression "*(int *)(&DAT_0005e002 + unaff_EBP) != 0" (pointer_expression "*(int *)(&DAT_0005e002 + unaff_EBP)" (* "*") (cast_expression "(int *)(&DAT_0005e002 + unaff_EBP)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&DAT_0005e002 + unaff_EBP)" (( "(") (binary_expression "&DAT_0005e002 + unaff_EBP" (pointer_expression "&DAT_0005e002" (& "&") (identifier "DAT_0005e002")) (+ "+") (identifier "unaff_EBP")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n              if ((bVar1 & 0xfd) == 0x3c) {\n                if (uVar16 < local_44) goto LAB_0002b0c6;\n                break;\n              }\n              if (bVar1 == 0x27) break;\n            }" ({ "{") (if_statement "if ((bVar1 & 0xfd) == 0x3c) {\n                if (uVar16 < local_44) goto LAB_0002b0c6;\n                break;\n              }" (if "if") (parenthesized_expression "((bVar1 & 0xfd) == 0x3c)" (( "(") (binary_expression "(bVar1 & 0xfd) == 0x3c" (parenthesized_expression "(bVar1 & 0xfd)" (( "(") (binary_expression "bVar1 & 0xfd" (identifier "bVar1") (& "&") (number_literal "0xfd")) () ")")) (== "==") (number_literal "0x3c")) () ")")) (compound_statement "{\n                if (uVar16 < local_44) goto LAB_0002b0c6;\n                break;\n              }" ({ "{") (if_statement "if (uVar16 < local_44) goto LAB_0002b0c6;" (if "if") (parenthesized_expression "(uVar16 < local_44)" (( "(") (binary_expression "uVar16 < local_44" (identifier "uVar16") (< "<") (identifier "local_44")) () ")")) (goto_statement "goto LAB_0002b0c6;" (goto "goto") (statement_identifier "LAB_0002b0c6") (; ";"))) (break_statement "break;" (break "break") (; ";")) (} "}"))) (if_statement "if (bVar1 == 0x27) break;" (if "if") (parenthesized_expression "(bVar1 == 0x27)" (( "(") (binary_expression "bVar1 == 0x27" (identifier "bVar1") (== "==") (number_literal "0x27")) () ")")) (break_statement "break;" (break "break") (; ";"))) (} "}"))) (if_statement "if (bVar1 == 0x3d) {\n              if (uVar16 < local_44) goto LAB_0002b0cf;\n              break;\n            }" (if "if") (parenthesized_expression "(bVar1 == 0x3d)" (( "(") (binary_expression "bVar1 == 0x3d" (identifier "bVar1") (== "==") (number_literal "0x3d")) () ")")) (compound_statement "{\n              if (uVar16 < local_44) goto LAB_0002b0cf;\n              break;\n            }" ({ "{") (if_statement "if (uVar16 < local_44) goto LAB_0002b0cf;" (if "if") (parenthesized_expression "(uVar16 < local_44)" (( "(") (binary_expression "uVar16 < local_44" (identifier "uVar16") (< "<") (identifier "local_44")) () ")")) (goto_statement "goto LAB_0002b0cf;" (goto "goto") (statement_identifier "LAB_0002b0cf") (; ";"))) (break_statement "break;" (break "break") (; ";")) (} "}"))) (expression_statement "uVar16 = uVar16 + 1;" (assignment_expression "uVar16 = uVar16 + 1" (identifier "uVar16") (= "=") (binary_expression "uVar16 + 1" (identifier "uVar16") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar16 != local_44)" (( "(") (binary_expression "uVar16 != local_44" (identifier "uVar16") (!= "!=") (identifier "local_44")) () ")")) (; ";")) (if_statement "if (bVar4) {\n            iVar11 = dcgettext(0,unaff_EBP + 0x3460e,5);\nLAB_0002b07a:\n            if (iVar11 == 0) break;\n            if (*(int *)(&DAT_0005e002 + unaff_EBP) != 0) goto LAB_0002af93;\nLAB_0002b090:\n            FUN_000357d0(local_3c);\n            goto LAB_0002afd9;\n          }" (if "if") (parenthesized_expression "(bVar4)" (( "(") (identifier "bVar4") () ")")) (compound_statement "{\n            iVar11 = dcgettext(0,unaff_EBP + 0x3460e,5);\nLAB_0002b07a:\n            if (iVar11 == 0) break;\n            if (*(int *)(&DAT_0005e002 + unaff_EBP) != 0) goto LAB_0002af93;\nLAB_0002b090:\n            FUN_000357d0(local_3c);\n            goto LAB_0002afd9;\n          }" ({ "{") (expression_statement "iVar11 = dcgettext(0,unaff_EBP + 0x3460e,5);" (assignment_expression "iVar11 = dcgettext(0,unaff_EBP + 0x3460e,5)" (identifier "iVar11") (= "=") (call_expression "dcgettext(0,unaff_EBP + 0x3460e,5)" (identifier "dcgettext") (argument_list "(0,unaff_EBP + 0x3460e,5)" (( "(") (number_literal "0") (, ",") (binary_expression "unaff_EBP + 0x3460e" (identifier "unaff_EBP") (+ "+") (number_literal "0x3460e")) (, ",") (number_literal "5") () ")")))) (; ";")) (labeled_statement "LAB_0002b07a:\n            if (iVar11 == 0) break;" (statement_identifier "LAB_0002b07a") (: ":") (if_statement "if (iVar11 == 0) break;" (if "if") (parenthesized_expression "(iVar11 == 0)" (( "(") (binary_expression "iVar11 == 0" (identifier "iVar11") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";")))) (if_statement "if (*(int *)(&DAT_0005e002 + unaff_EBP) != 0) goto LAB_0002af93;" (if "if") (parenthesized_expression "(*(int *)(&DAT_0005e002 + unaff_EBP) != 0)" (( "(") (binary_expression "*(int *)(&DAT_0005e002 + unaff_EBP) != 0" (pointer_expression "*(int *)(&DAT_0005e002 + unaff_EBP)" (* "*") (cast_expression "(int *)(&DAT_0005e002 + unaff_EBP)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&DAT_0005e002 + unaff_EBP)" (( "(") (binary_expression "&DAT_0005e002 + unaff_EBP" (pointer_expression "&DAT_0005e002" (& "&") (identifier "DAT_0005e002")) (+ "+") (identifier "unaff_EBP")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_0002af93;" (goto "goto") (statement_identifier "LAB_0002af93") (; ";"))) (labeled_statement "LAB_0002b090:\n            FUN_000357d0(local_3c);" (statement_identifier "LAB_0002b090") (: ":") (expression_statement "FUN_000357d0(local_3c);" (call_expression "FUN_000357d0(local_3c)" (identifier "FUN_000357d0") (argument_list "(local_3c)" (( "(") (identifier "local_3c") () ")"))) (; ";"))) (goto_statement "goto LAB_0002afd9;" (goto "goto") (statement_identifier "LAB_0002afd9") (; ";")) (} "}"))) (if_statement "if (puVar18 == (undefined4 *)0x0) {\n            if (*(int *)(&DAT_0005e002 + unaff_EBP) == 0) {\n              iVar11 = dcgettext(0,unaff_EBP + 0x34312,5);\n              if (iVar11 != 0) goto LAB_0002b090;\n              piVar17 = *(int **)(iVar8 + 0x10);\n              if (piVar17 == (int *)0x0) goto LAB_0002af6d;\n              goto LAB_0002aef9;\n            }\n            puVar18 = (undefined4 *)FUN_00028ba0();\n            iVar11 = -1;\n            puVar14 = *(undefined4 **)(iVar8 + 0x10);\n            if (*(undefined4 **)(iVar8 + 0x10) == (undefined4 *)0x0) {\n              iVar11 = 0;\n              puVar15 = (undefined4 *)(iVar8 + 0x10);\n            }\n            else {\n              do {\n                puVar15 = puVar14;\n                if (iVar11 <= (int)puVar15[10]) {\n                  iVar11 = puVar15[10] + 1;\n                }\n                puVar14 = (undefined4 *)*puVar15;\n              } while ((undefined4 *)*puVar15 != (undefined4 *)0x0);\n              if (iVar11 == -1) {\n                iVar11 = 0;\n              }\n            }\n            *puVar15 = puVar18;\n            puVar18[10] = iVar11;\n          }" (if "if") (parenthesized_expression "(puVar18 == (undefined4 *)0x0)" (( "(") (binary_expression "puVar18 == (undefined4 *)0x0" (identifier "puVar18") (== "==") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n            if (*(int *)(&DAT_0005e002 + unaff_EBP) == 0) {\n              iVar11 = dcgettext(0,unaff_EBP + 0x34312,5);\n              if (iVar11 != 0) goto LAB_0002b090;\n              piVar17 = *(int **)(iVar8 + 0x10);\n              if (piVar17 == (int *)0x0) goto LAB_0002af6d;\n              goto LAB_0002aef9;\n            }\n            puVar18 = (undefined4 *)FUN_00028ba0();\n            iVar11 = -1;\n            puVar14 = *(undefined4 **)(iVar8 + 0x10);\n            if (*(undefined4 **)(iVar8 + 0x10) == (undefined4 *)0x0) {\n              iVar11 = 0;\n              puVar15 = (undefined4 *)(iVar8 + 0x10);\n            }\n            else {\n              do {\n                puVar15 = puVar14;\n                if (iVar11 <= (int)puVar15[10]) {\n                  iVar11 = puVar15[10] + 1;\n                }\n                puVar14 = (undefined4 *)*puVar15;\n              } while ((undefined4 *)*puVar15 != (undefined4 *)0x0);\n              if (iVar11 == -1) {\n                iVar11 = 0;\n              }\n            }\n            *puVar15 = puVar18;\n            puVar18[10] = iVar11;\n          }" ({ "{") (if_statement "if (*(int *)(&DAT_0005e002 + unaff_EBP) == 0) {\n              iVar11 = dcgettext(0,unaff_EBP + 0x34312,5);\n              if (iVar11 != 0) goto LAB_0002b090;\n              piVar17 = *(int **)(iVar8 + 0x10);\n              if (piVar17 == (int *)0x0) goto LAB_0002af6d;\n              goto LAB_0002aef9;\n            }" (if "if") (parenthesized_expression "(*(int *)(&DAT_0005e002 + unaff_EBP) == 0)" (( "(") (binary_expression "*(int *)(&DAT_0005e002 + unaff_EBP) == 0" (pointer_expression "*(int *)(&DAT_0005e002 + unaff_EBP)" (* "*") (cast_expression "(int *)(&DAT_0005e002 + unaff_EBP)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&DAT_0005e002 + unaff_EBP)" (( "(") (binary_expression "&DAT_0005e002 + unaff_EBP" (pointer_expression "&DAT_0005e002" (& "&") (identifier "DAT_0005e002")) (+ "+") (identifier "unaff_EBP")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n              iVar11 = dcgettext(0,unaff_EBP + 0x34312,5);\n              if (iVar11 != 0) goto LAB_0002b090;\n              piVar17 = *(int **)(iVar8 + 0x10);\n              if (piVar17 == (int *)0x0) goto LAB_0002af6d;\n              goto LAB_0002aef9;\n            }" ({ "{") (expression_statement "iVar11 = dcgettext(0,unaff_EBP + 0x34312,5);" (assignment_expression "iVar11 = dcgettext(0,unaff_EBP + 0x34312,5)" (identifier "iVar11") (= "=") (call_expression "dcgettext(0,unaff_EBP + 0x34312,5)" (identifier "dcgettext") (argument_list "(0,unaff_EBP + 0x34312,5)" (( "(") (number_literal "0") (, ",") (binary_expression "unaff_EBP + 0x34312" (identifier "unaff_EBP") (+ "+") (number_literal "0x34312")) (, ",") (number_literal "5") () ")")))) (; ";")) (if_statement "if (iVar11 != 0) goto LAB_0002b090;" (if "if") (parenthesized_expression "(iVar11 != 0)" (( "(") (binary_expression "iVar11 != 0" (identifier "iVar11") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_0002b090;" (goto "goto") (statement_identifier "LAB_0002b090") (; ";"))) (expression_statement "piVar17 = *(int **)(iVar8 + 0x10);" (assignment_expression "piVar17 = *(int **)(iVar8 + 0x10)" (identifier "piVar17") (= "=") (pointer_expression "*(int **)(iVar8 + 0x10)" (* "*") (cast_expression "(int **)(iVar8 + 0x10)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar8 + 0x10)" (( "(") (binary_expression "iVar8 + 0x10" (identifier "iVar8") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (if_statement "if (piVar17 == (int *)0x0) goto LAB_0002af6d;" (if "if") (parenthesized_expression "(piVar17 == (int *)0x0)" (( "(") (binary_expression "piVar17 == (int *)0x0" (identifier "piVar17") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_0002af6d;" (goto "goto") (statement_identifier "LAB_0002af6d") (; ";"))) (goto_statement "goto LAB_0002aef9;" (goto "goto") (statement_identifier "LAB_0002aef9") (; ";")) (} "}"))) (expression_statement "puVar18 = (undefined4 *)FUN_00028ba0();" (assignment_expression "puVar18 = (undefined4 *)FUN_00028ba0()" (identifier "puVar18") (= "=") (cast_expression "(undefined4 *)FUN_00028ba0()" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00028ba0()" (identifier "FUN_00028ba0") (argument_list "()" (( "(") () ")"))))) (; ";")) (expression_statement "iVar11 = -1;" (assignment_expression "iVar11 = -1" (identifier "iVar11") (= "=") (number_literal "-1")) (; ";")) (expression_statement "puVar14 = *(undefined4 **)(iVar8 + 0x10);" (assignment_expression "puVar14 = *(undefined4 **)(iVar8 + 0x10)" (identifier "puVar14") (= "=") (pointer_expression "*(undefined4 **)(iVar8 + 0x10)" (* "*") (cast_expression "(undefined4 **)(iVar8 + 0x10)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar8 + 0x10)" (( "(") (binary_expression "iVar8 + 0x10" (identifier "iVar8") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (if_statement "if (*(undefined4 **)(iVar8 + 0x10) == (undefined4 *)0x0) {\n              iVar11 = 0;\n              puVar15 = (undefined4 *)(iVar8 + 0x10);\n            }\n            else {\n              do {\n                puVar15 = puVar14;\n                if (iVar11 <= (int)puVar15[10]) {\n                  iVar11 = puVar15[10] + 1;\n                }\n                puVar14 = (undefined4 *)*puVar15;\n              } while ((undefined4 *)*puVar15 != (undefined4 *)0x0);\n              if (iVar11 == -1) {\n                iVar11 = 0;\n              }\n            }" (if "if") (parenthesized_expression "(*(undefined4 **)(iVar8 + 0x10) == (undefined4 *)0x0)" (( "(") (binary_expression "*(undefined4 **)(iVar8 + 0x10) == (undefined4 *)0x0" (pointer_expression "*(undefined4 **)(iVar8 + 0x10)" (* "*") (cast_expression "(undefined4 **)(iVar8 + 0x10)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar8 + 0x10)" (( "(") (binary_expression "iVar8 + 0x10" (identifier "iVar8") (+ "+") (number_literal "0x10")) () ")")))) (== "==") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n              iVar11 = 0;\n              puVar15 = (undefined4 *)(iVar8 + 0x10);\n            }" ({ "{") (expression_statement "iVar11 = 0;" (assignment_expression "iVar11 = 0" (identifier "iVar11") (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar15 = (undefined4 *)(iVar8 + 0x10);" (assignment_expression "puVar15 = (undefined4 *)(iVar8 + 0x10)" (identifier "puVar15") (= "=") (cast_expression "(undefined4 *)(iVar8 + 0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 0x10)" (( "(") (binary_expression "iVar8 + 0x10" (identifier "iVar8") (+ "+") (number_literal "0x10")) () ")")))) (; ";")) (} "}")) (else_clause "else {\n              do {\n                puVar15 = puVar14;\n                if (iVar11 <= (int)puVar15[10]) {\n                  iVar11 = puVar15[10] + 1;\n                }\n                puVar14 = (undefined4 *)*puVar15;\n              } while ((undefined4 *)*puVar15 != (undefined4 *)0x0);\n              if (iVar11 == -1) {\n                iVar11 = 0;\n              }\n            }" (else "else") (compound_statement "{\n              do {\n                puVar15 = puVar14;\n                if (iVar11 <= (int)puVar15[10]) {\n                  iVar11 = puVar15[10] + 1;\n                }\n                puVar14 = (undefined4 *)*puVar15;\n              } while ((undefined4 *)*puVar15 != (undefined4 *)0x0);\n              if (iVar11 == -1) {\n                iVar11 = 0;\n              }\n            }" ({ "{") (do_statement "do {\n                puVar15 = puVar14;\n                if (iVar11 <= (int)puVar15[10]) {\n                  iVar11 = puVar15[10] + 1;\n                }\n                puVar14 = (undefined4 *)*puVar15;\n              } while ((undefined4 *)*puVar15 != (undefined4 *)0x0);" (do "do") (compound_statement "{\n                puVar15 = puVar14;\n                if (iVar11 <= (int)puVar15[10]) {\n                  iVar11 = puVar15[10] + 1;\n                }\n                puVar14 = (undefined4 *)*puVar15;\n              }" ({ "{") (expression_statement "puVar15 = puVar14;" (assignment_expression "puVar15 = puVar14" (identifier "puVar15") (= "=") (identifier "puVar14")) (; ";")) (if_statement "if (iVar11 <= (int)puVar15[10]) {\n                  iVar11 = puVar15[10] + 1;\n                }" (if "if") (parenthesized_expression "(iVar11 <= (int)puVar15[10])" (( "(") (binary_expression "iVar11 <= (int)puVar15[10]" (identifier "iVar11") (<= "<=") (cast_expression "(int)puVar15[10]" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (subscript_expression "puVar15[10]" (identifier "puVar15") ([ "[") (number_literal "10") (] "]")))) () ")")) (compound_statement "{\n                  iVar11 = puVar15[10] + 1;\n                }" ({ "{") (expression_statement "iVar11 = puVar15[10] + 1;" (assignment_expression "iVar11 = puVar15[10] + 1" (identifier "iVar11") (= "=") (binary_expression "puVar15[10] + 1" (subscript_expression "puVar15[10]" (identifier "puVar15") ([ "[") (number_literal "10") (] "]")) (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (expression_statement "puVar14 = (undefined4 *)*puVar15;" (assignment_expression "puVar14 = (undefined4 *)*puVar15" (identifier "puVar14") (= "=") (cast_expression "(undefined4 *)*puVar15" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar15" (* "*") (identifier "puVar15")))) (; ";")) (} "}")) (while "while") (parenthesized_expression "((undefined4 *)*puVar15 != (undefined4 *)0x0)" (( "(") (binary_expression "(undefined4 *)*puVar15 != (undefined4 *)0x0" (cast_expression "(undefined4 *)*puVar15" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar15" (* "*") (identifier "puVar15"))) (!= "!=") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (; ";")) (if_statement "if (iVar11 == -1) {\n                iVar11 = 0;\n              }" (if "if") (parenthesized_expression "(iVar11 == -1)" (( "(") (binary_expression "iVar11 == -1" (identifier "iVar11") (== "==") (number_literal "-1")) () ")")) (compound_statement "{\n                iVar11 = 0;\n              }" ({ "{") (expression_statement "iVar11 = 0;" (assignment_expression "iVar11 = 0" (identifier "iVar11") (= "=") (number_literal "0")) (; ";")) (} "}"))) (} "}")))) (expression_statement "*puVar15 = puVar18;" (assignment_expression "*puVar15 = puVar18" (pointer_expression "*puVar15" (* "*") (identifier "puVar15")) (= "=") (identifier "puVar18")) (; ";")) (expression_statement "puVar18[10] = iVar11;" (assignment_expression "puVar18[10] = iVar11" (subscript_expression "puVar18[10]" (identifier "puVar18") ([ "[") (number_literal "10") (] "]")) (= "=") (identifier "iVar11")) (; ";")) (} "}"))) (if_statement "if (puVar18[0xb] == 2) {\n            FUN_00035930(puVar18 + 7,local_48 + uVar9,local_44 - uVar9);\n            uVar9 = local_44;\n          }\n          else {\n            uVar9 = FUN_00029a00();\n          }" (if "if") (parenthesized_expression "(puVar18[0xb] == 2)" (( "(") (binary_expression "puVar18[0xb] == 2" (subscript_expression "puVar18[0xb]" (identifier "puVar18") ([ "[") (number_literal "0xb") (] "]")) (== "==") (number_literal "2")) () ")")) (compound_statement "{\n            FUN_00035930(puVar18 + 7,local_48 + uVar9,local_44 - uVar9);\n            uVar9 = local_44;\n          }" ({ "{") (expression_statement "FUN_00035930(puVar18 + 7,local_48 + uVar9,local_44 - uVar9);" (call_expression "FUN_00035930(puVar18 + 7,local_48 + uVar9,local_44 - uVar9)" (identifier "FUN_00035930") (argument_list "(puVar18 + 7,local_48 + uVar9,local_44 - uVar9)" (( "(") (binary_expression "puVar18 + 7" (identifier "puVar18") (+ "+") (number_literal "7")) (, ",") (binary_expression "local_48 + uVar9" (identifier "local_48") (+ "+") (identifier "uVar9")) (, ",") (binary_expression "local_44 - uVar9" (identifier "local_44") (- "-") (identifier "uVar9")) () ")"))) (; ";")) (expression_statement "uVar9 = local_44;" (assignment_expression "uVar9 = local_44" (identifier "uVar9") (= "=") (identifier "local_44")) (; ";")) (} "}")) (else_clause "else {\n            uVar9 = FUN_00029a00();\n          }" (else "else") (compound_statement "{\n            uVar9 = FUN_00029a00();\n          }" ({ "{") (expression_statement "uVar9 = FUN_00029a00();" (assignment_expression "uVar9 = FUN_00029a00()" (identifier "uVar9") (= "=") (call_expression "FUN_00029a00()" (identifier "FUN_00029a00") (argument_list "()" (( "(") () ")")))) (; ";")) (} "}")))) (expression_statement "local_58 = (local_58 + 1) - (uint)(puVar18[8] == 0);" (assignment_expression "local_58 = (local_58 + 1) - (uint)(puVar18[8] == 0)" (identifier "local_58") (= "=") (binary_expression "(local_58 + 1) - (uint)(puVar18[8] == 0)" (parenthesized_expression "(local_58 + 1)" (( "(") (binary_expression "local_58 + 1" (identifier "local_58") (+ "+") (number_literal "1")) () ")")) (- "-") (call_expression "(uint)(puVar18[8] == 0)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(puVar18[8] == 0)" (( "(") (binary_expression "puVar18[8] == 0" (subscript_expression "puVar18[8]" (identifier "puVar18") ([ "[") (number_literal "8") (] "]")) (== "==") (number_literal "0")) () ")"))))) (; ";")) (do_statement "do {\n            puVar18 = (undefined4 *)*puVar18;\n            if (puVar18 == (undefined4 *)0x0) break;\n          } while ((int)puVar18[10] < 0);" (do "do") (compound_statement "{\n            puVar18 = (undefined4 *)*puVar18;\n            if (puVar18 == (undefined4 *)0x0) break;\n          }" ({ "{") (expression_statement "puVar18 = (undefined4 *)*puVar18;" (assignment_expression "puVar18 = (undefined4 *)*puVar18" (identifier "puVar18") (= "=") (cast_expression "(undefined4 *)*puVar18" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar18" (* "*") (identifier "puVar18")))) (; ";")) (if_statement "if (puVar18 == (undefined4 *)0x0) break;" (if "if") (parenthesized_expression "(puVar18 == (undefined4 *)0x0)" (( "(") (binary_expression "puVar18 == (undefined4 *)0x0" (identifier "puVar18") (== "==") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (break_statement "break;" (break "break") (; ";"))) (} "}")) (while "while") (parenthesized_expression "((int)puVar18[10] < 0)" (( "(") (binary_expression "(int)puVar18[10] < 0" (cast_expression "(int)puVar18[10]" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (subscript_expression "puVar18[10]" (identifier "puVar18") ([ "[") (number_literal "10") (] "]"))) (< "<") (number_literal "0")) () ")")) (; ";")) (labeled_statement "LAB_0002aebd:\n          iVar2 = *(int *)(&DAT_0005e002 + unaff_EBP);" (statement_identifier "LAB_0002aebd") (: ":") (expression_statement "iVar2 = *(int *)(&DAT_0005e002 + unaff_EBP);" (assignment_expression "iVar2 = *(int *)(&DAT_0005e002 + unaff_EBP)" (identifier "iVar2") (= "=") (pointer_expression "*(int *)(&DAT_0005e002 + unaff_EBP)" (* "*") (cast_expression "(int *)(&DAT_0005e002 + unaff_EBP)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&DAT_0005e002 + unaff_EBP)" (( "(") (binary_expression "&DAT_0005e002 + unaff_EBP" (pointer_expression "&DAT_0005e002" (& "&") (identifier "DAT_0005e002")) (+ "+") (identifier "unaff_EBP")) () ")"))))) (; ";"))) (labeled_statement "joined_r0x0002b16d:\n          if (iVar2 != 0) goto LAB_0002aecb;" (statement_identifier "joined_r0x0002b16d") (: ":") (if_statement "if (iVar2 != 0) goto LAB_0002aecb;" (if "if") (parenthesized_expression "(iVar2 != 0)" (( "(") (binary_expression "iVar2 != 0" (identifier "iVar2") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_0002aecb;" (goto "goto") (statement_identifier "LAB_0002aecb") (; ";")))) (expression_statement "uVar9 = FUN_000359c0(uVar9,&local_48);" (assignment_expression "uVar9 = FUN_000359c0(uVar9,&local_48)" (identifier "uVar9") (= "=") (call_expression "FUN_000359c0(uVar9,&local_48)" (identifier "FUN_000359c0") (argument_list "(uVar9,&local_48)" (( "(") (identifier "uVar9") (, ",") (pointer_expression "&local_48" (& "&") (identifier "local_48")) () ")")))) (; ";")) (if_statement "if (local_44 <= uVar9) break;" (if "if") (parenthesized_expression "(local_44 <= uVar9)" (( "(") (binary_expression "local_44 <= uVar9" (identifier "local_44") (<= "<=") (identifier "uVar9")) () ")")) (break_statement "break;" (break "break") (; ";"))) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";")) (} "}")))) (expression_statement "piVar17 = *(int **)(iVar8 + 0x10);" (assignment_expression "piVar17 = *(int **)(iVar8 + 0x10)" (identifier "piVar17") (= "=") (pointer_expression "*(int **)(iVar8 + 0x10)" (* "*") (cast_expression "(int **)(iVar8 + 0x10)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar8 + 0x10)" (( "(") (binary_expression "iVar8 + 0x10" (identifier "iVar8") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (if_statement "if (piVar17 != (int *)0x0) goto LAB_0002aef9;" (if "if") (parenthesized_expression "(piVar17 != (int *)0x0)" (( "(") (binary_expression "piVar17 != (int *)0x0" (identifier "piVar17") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_0002aef9;" (goto "goto") (statement_identifier "LAB_0002aef9") (; ";"))) (goto_statement "goto LAB_0002af58;" (goto "goto") (statement_identifier "LAB_0002af58") (; ";")) (} "}"))) (} "}"))) (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (labeled_statement "LAB_0002aecb:\n  cVar7 = local_48[uVar9];" (statement_identifier "LAB_0002aecb") (: ":") (expression_statement "cVar7 = local_48[uVar9];" (assignment_expression "cVar7 = local_48[uVar9]" (identifier "cVar7") (= "=") (subscript_expression "local_48[uVar9]" (identifier "local_48") ([ "[") (identifier "uVar9") (] "]"))) (; ";"))) (if_statement "if (cVar7 == ',') {\n    uVar9 = uVar9 + 1;\n    cVar7 = local_48[uVar9];\n  }" (if "if") (parenthesized_expression "(cVar7 == ',')" (( "(") (binary_expression "cVar7 == ','" (identifier "cVar7") (== "==") (char_literal "','" (' "'") (character ",") (' "'"))) () ")")) (compound_statement "{\n    uVar9 = uVar9 + 1;\n    cVar7 = local_48[uVar9];\n  }" ({ "{") (expression_statement "uVar9 = uVar9 + 1;" (assignment_expression "uVar9 = uVar9 + 1" (identifier "uVar9") (= "=") (binary_expression "uVar9 + 1" (identifier "uVar9") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "cVar7 = local_48[uVar9];" (assignment_expression "cVar7 = local_48[uVar9]" (identifier "cVar7") (= "=") (subscript_expression "local_48[uVar9]" (identifier "local_48") ([ "[") (identifier "uVar9") (] "]"))) (; ";")) (} "}"))) (if_statement "if ((cVar7 == ' ') || (cVar7 == '\t')) goto LAB_0002aeea;" (if "if") (parenthesized_expression "((cVar7 == ' ') || (cVar7 == '\t'))" (( "(") (binary_expression "(cVar7 == ' ') || (cVar7 == '\t')" (parenthesized_expression "(cVar7 == ' ')" (( "(") (binary_expression "cVar7 == ' '" (identifier "cVar7") (== "==") (char_literal "' '" (' "'") (character " ") (' "'"))) () ")")) (|| "||") (parenthesized_expression "(cVar7 == '\t')" (( "(") (binary_expression "cVar7 == '\t'" (identifier "cVar7") (== "==") (char_literal "'\t'" (' "'") (escape_sequence "\t") (' "'"))) () ")"))) () ")")) (goto_statement "goto LAB_0002aeea;" (goto "goto") (statement_identifier "LAB_0002aeea") (; ";"))) (goto_statement "goto LAB_0002ae00;" (goto "goto") (statement_identifier "LAB_0002ae00") (; ";")) (labeled_statement "LAB_0002aeea:\n  piVar17 = *(int **)(iVar8 + 0x10);" (statement_identifier "LAB_0002aeea") (: ":") (expression_statement "piVar17 = *(int **)(iVar8 + 0x10);" (assignment_expression "piVar17 = *(int **)(iVar8 + 0x10)" (identifier "piVar17") (= "=") (pointer_expression "*(int **)(iVar8 + 0x10)" (* "*") (cast_expression "(int **)(iVar8 + 0x10)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar8 + 0x10)" (( "(") (binary_expression "iVar8 + 0x10" (identifier "iVar8") (+ "+") (number_literal "0x10")) () ")"))))) (; ";"))) (if_statement "if (piVar17 != (int *)0x0) {\nLAB_0002aef9:\n    do {\n      while ((piVar17[0xb] != 1 || (piVar17[8] != 0))) {\n        piVar17 = (int *)*piVar17;\n        if (piVar17 == (int *)0x0) goto LAB_0002af58;\n      }\n      iVar11 = piVar17[1];\n      uVar13 = *(undefined4 *)(iVar8 + 0x18);\n      uVar10 = dcgettext(0,unaff_EBP + 0x3463a,5);\n      FUN_0002bd60(uVar10,iVar11,uVar13);\n      piVar17 = (int *)*piVar17;\n    } while (piVar17 != (int *)0x0);\nLAB_0002af58:\n    if (*(int *)(&DAT_0005e002 + unaff_EBP) == 0) goto LAB_0002af6d;\n  }" (if "if") (parenthesized_expression "(piVar17 != (int *)0x0)" (( "(") (binary_expression "piVar17 != (int *)0x0" (identifier "piVar17") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\nLAB_0002aef9:\n    do {\n      while ((piVar17[0xb] != 1 || (piVar17[8] != 0))) {\n        piVar17 = (int *)*piVar17;\n        if (piVar17 == (int *)0x0) goto LAB_0002af58;\n      }\n      iVar11 = piVar17[1];\n      uVar13 = *(undefined4 *)(iVar8 + 0x18);\n      uVar10 = dcgettext(0,unaff_EBP + 0x3463a,5);\n      FUN_0002bd60(uVar10,iVar11,uVar13);\n      piVar17 = (int *)*piVar17;\n    } while (piVar17 != (int *)0x0);\nLAB_0002af58:\n    if (*(int *)(&DAT_0005e002 + unaff_EBP) == 0) goto LAB_0002af6d;\n  }" ({ "{") (labeled_statement "LAB_0002aef9:\n    do {\n      while ((piVar17[0xb] != 1 || (piVar17[8] != 0))) {\n        piVar17 = (int *)*piVar17;\n        if (piVar17 == (int *)0x0) goto LAB_0002af58;\n      }\n      iVar11 = piVar17[1];\n      uVar13 = *(undefined4 *)(iVar8 + 0x18);\n      uVar10 = dcgettext(0,unaff_EBP + 0x3463a,5);\n      FUN_0002bd60(uVar10,iVar11,uVar13);\n      piVar17 = (int *)*piVar17;\n    } while (piVar17 != (int *)0x0);" (statement_identifier "LAB_0002aef9") (: ":") (do_statement "do {\n      while ((piVar17[0xb] != 1 || (piVar17[8] != 0))) {\n        piVar17 = (int *)*piVar17;\n        if (piVar17 == (int *)0x0) goto LAB_0002af58;\n      }\n      iVar11 = piVar17[1];\n      uVar13 = *(undefined4 *)(iVar8 + 0x18);\n      uVar10 = dcgettext(0,unaff_EBP + 0x3463a,5);\n      FUN_0002bd60(uVar10,iVar11,uVar13);\n      piVar17 = (int *)*piVar17;\n    } while (piVar17 != (int *)0x0);" (do "do") (compound_statement "{\n      while ((piVar17[0xb] != 1 || (piVar17[8] != 0))) {\n        piVar17 = (int *)*piVar17;\n        if (piVar17 == (int *)0x0) goto LAB_0002af58;\n      }\n      iVar11 = piVar17[1];\n      uVar13 = *(undefined4 *)(iVar8 + 0x18);\n      uVar10 = dcgettext(0,unaff_EBP + 0x3463a,5);\n      FUN_0002bd60(uVar10,iVar11,uVar13);\n      piVar17 = (int *)*piVar17;\n    }" ({ "{") (while_statement "while ((piVar17[0xb] != 1 || (piVar17[8] != 0))) {\n        piVar17 = (int *)*piVar17;\n        if (piVar17 == (int *)0x0) goto LAB_0002af58;\n      }" (while "while") (parenthesized_expression "((piVar17[0xb] != 1 || (piVar17[8] != 0)))" (( "(") (parenthesized_expression "(piVar17[0xb] != 1 || (piVar17[8] != 0))" (( "(") (binary_expression "piVar17[0xb] != 1 || (piVar17[8] != 0)" (binary_expression "piVar17[0xb] != 1" (subscript_expression "piVar17[0xb]" (identifier "piVar17") ([ "[") (number_literal "0xb") (] "]")) (!= "!=") (number_literal "1")) (|| "||") (parenthesized_expression "(piVar17[8] != 0)" (( "(") (binary_expression "piVar17[8] != 0" (subscript_expression "piVar17[8]" (identifier "piVar17") ([ "[") (number_literal "8") (] "]")) (!= "!=") (number_literal "0")) () ")"))) () ")")) () ")")) (compound_statement "{\n        piVar17 = (int *)*piVar17;\n        if (piVar17 == (int *)0x0) goto LAB_0002af58;\n      }" ({ "{") (expression_statement "piVar17 = (int *)*piVar17;" (assignment_expression "piVar17 = (int *)*piVar17" (identifier "piVar17") (= "=") (cast_expression "(int *)*piVar17" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*piVar17" (* "*") (identifier "piVar17")))) (; ";")) (if_statement "if (piVar17 == (int *)0x0) goto LAB_0002af58;" (if "if") (parenthesized_expression "(piVar17 == (int *)0x0)" (( "(") (binary_expression "piVar17 == (int *)0x0" (identifier "piVar17") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_0002af58;" (goto "goto") (statement_identifier "LAB_0002af58") (; ";"))) (} "}"))) (expression_statement "iVar11 = piVar17[1];" (assignment_expression "iVar11 = piVar17[1]" (identifier "iVar11") (= "=") (subscript_expression "piVar17[1]" (identifier "piVar17") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "uVar13 = *(undefined4 *)(iVar8 + 0x18);" (assignment_expression "uVar13 = *(undefined4 *)(iVar8 + 0x18)" (identifier "uVar13") (= "=") (pointer_expression "*(undefined4 *)(iVar8 + 0x18)" (* "*") (cast_expression "(undefined4 *)(iVar8 + 0x18)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 0x18)" (( "(") (binary_expression "iVar8 + 0x18" (identifier "iVar8") (+ "+") (number_literal "0x18")) () ")"))))) (; ";")) (expression_statement "uVar10 = dcgettext(0,unaff_EBP + 0x3463a,5);" (assignment_expression "uVar10 = dcgettext(0,unaff_EBP + 0x3463a,5)" (identifier "uVar10") (= "=") (call_expression "dcgettext(0,unaff_EBP + 0x3463a,5)" (identifier "dcgettext") (argument_list "(0,unaff_EBP + 0x3463a,5)" (( "(") (number_literal "0") (, ",") (binary_expression "unaff_EBP + 0x3463a" (identifier "unaff_EBP") (+ "+") (number_literal "0x3463a")) (, ",") (number_literal "5") () ")")))) (; ";")) (expression_statement "FUN_0002bd60(uVar10,iVar11,uVar13);" (call_expression "FUN_0002bd60(uVar10,iVar11,uVar13)" (identifier "FUN_0002bd60") (argument_list "(uVar10,iVar11,uVar13)" (( "(") (identifier "uVar10") (, ",") (identifier "iVar11") (, ",") (identifier "uVar13") () ")"))) (; ";")) (expression_statement "piVar17 = (int *)*piVar17;" (assignment_expression "piVar17 = (int *)*piVar17" (identifier "piVar17") (= "=") (cast_expression "(int *)*piVar17" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*piVar17" (* "*") (identifier "piVar17")))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(piVar17 != (int *)0x0)" (( "(") (binary_expression "piVar17 != (int *)0x0" (identifier "piVar17") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (; ";"))) (labeled_statement "LAB_0002af58:\n    if (*(int *)(&DAT_0005e002 + unaff_EBP) == 0) goto LAB_0002af6d;" (statement_identifier "LAB_0002af58") (: ":") (if_statement "if (*(int *)(&DAT_0005e002 + unaff_EBP) == 0) goto LAB_0002af6d;" (if "if") (parenthesized_expression "(*(int *)(&DAT_0005e002 + unaff_EBP) == 0)" (( "(") (binary_expression "*(int *)(&DAT_0005e002 + unaff_EBP) == 0" (pointer_expression "*(int *)(&DAT_0005e002 + unaff_EBP)" (* "*") (cast_expression "(int *)(&DAT_0005e002 + unaff_EBP)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&DAT_0005e002 + unaff_EBP)" (( "(") (binary_expression "&DAT_0005e002 + unaff_EBP" (pointer_expression "&DAT_0005e002" (& "&") (identifier "DAT_0005e002")) (+ "+") (identifier "unaff_EBP")) () ")")))) (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_0002af6d;" (goto "goto") (statement_identifier "LAB_0002af6d") (; ";")))) (} "}"))) (expression_statement "FUN_000358a0(local_3c);" (call_expression "FUN_000358a0(local_3c)" (identifier "FUN_000358a0") (argument_list "(local_3c)" (( "(") (identifier "local_3c") () ")"))) (; ";")) (expression_statement "iVar11 = unaff_EBP + 0x342bc;" (assignment_expression "iVar11 = unaff_EBP + 0x342bc" (identifier "iVar11") (= "=") (binary_expression "unaff_EBP + 0x342bc" (identifier "unaff_EBP") (+ "+") (number_literal "0x342bc"))) (; ";")) (if_statement "if (*(int *)(&DAT_0005dffe + unaff_EBP) == 0) {\n    iVar11 = unaff_EBP + 0x342bd;\n  }" (if "if") (parenthesized_expression "(*(int *)(&DAT_0005dffe + unaff_EBP) == 0)" (( "(") (binary_expression "*(int *)(&DAT_0005dffe + unaff_EBP) == 0" (pointer_expression "*(int *)(&DAT_0005dffe + unaff_EBP)" (* "*") (cast_expression "(int *)(&DAT_0005dffe + unaff_EBP)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&DAT_0005dffe + unaff_EBP)" (( "(") (binary_expression "&DAT_0005dffe + unaff_EBP" (pointer_expression "&DAT_0005dffe" (& "&") (identifier "DAT_0005dffe")) (+ "+") (identifier "unaff_EBP")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    iVar11 = unaff_EBP + 0x342bd;\n  }" ({ "{") (expression_statement "iVar11 = unaff_EBP + 0x342bd;" (assignment_expression "iVar11 = unaff_EBP + 0x342bd" (identifier "iVar11") (= "=") (binary_expression "unaff_EBP + 0x342bd" (identifier "unaff_EBP") (+ "+") (number_literal "0x342bd"))) (; ";")) (} "}"))) (expression_statement "FUN_000358e0(local_3c,iVar11);" (call_expression "FUN_000358e0(local_3c,iVar11)" (identifier "FUN_000358e0") (argument_list "(local_3c,iVar11)" (( "(") (identifier "local_3c") (, ",") (identifier "iVar11") () ")"))) (; ";")) (expression_statement "uVar13 = FUN_00035970(local_3c);" (assignment_expression "uVar13 = FUN_00035970(local_3c)" (identifier "uVar13") (= "=") (call_expression "FUN_00035970(local_3c)" (identifier "FUN_00035970") (argument_list "(local_3c)" (( "(") (identifier "local_3c") () ")")))) (; ";")) (expression_statement "iVar11 = FUN_000254b0(*(undefined4 *)(iVar8 + 0x14),uVar13);" (assignment_expression "iVar11 = FUN_000254b0(*(undefined4 *)(iVar8 + 0x14),uVar13)" (identifier "iVar11") (= "=") (call_expression "FUN_000254b0(*(undefined4 *)(iVar8 + 0x14),uVar13)" (identifier "FUN_000254b0") (argument_list "(*(undefined4 *)(iVar8 + 0x14),uVar13)" (( "(") (pointer_expression "*(undefined4 *)(iVar8 + 0x14)" (* "*") (cast_expression "(undefined4 *)(iVar8 + 0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 0x14)" (( "(") (binary_expression "iVar8 + 0x14" (identifier "iVar8") (+ "+") (number_literal "0x14")) () ")")))) (, ",") (identifier "uVar13") () ")")))) (; ";")) (expression_statement "sprintf(local_30,(char *)(FUN_000357f0 + unaff_EBP + 4),local_58);" (call_expression "sprintf(local_30,(char *)(FUN_000357f0 + unaff_EBP + 4),local_58)" (identifier "sprintf") (argument_list "(local_30,(char *)(FUN_000357f0 + unaff_EBP + 4),local_58)" (( "(") (identifier "local_30") (, ",") (cast_expression "(char *)(FUN_000357f0 + unaff_EBP + 4)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(FUN_000357f0 + unaff_EBP + 4)" (( "(") (binary_expression "FUN_000357f0 + unaff_EBP + 4" (binary_expression "FUN_000357f0 + unaff_EBP" (identifier "FUN_000357f0") (+ "+") (identifier "unaff_EBP")) (+ "+") (number_literal "4")) () ")"))) (, ",") (identifier "local_58") () ")"))) (; ";")) (expression_statement "FUN_000358e0(iVar11 + 0x1c,local_30);" (call_expression "FUN_000358e0(iVar11 + 0x1c,local_30)" (identifier "FUN_000358e0") (argument_list "(iVar11 + 0x1c,local_30)" (( "(") (binary_expression "iVar11 + 0x1c" (identifier "iVar11") (+ "+") (number_literal "0x1c")) (, ",") (identifier "local_30") () ")"))) (; ";")) (labeled_statement "LAB_0002af6d:\n  iVar11 = FUN_00028f30(*(undefined4 *)(iVar8 + 0x14),iVar8);" (statement_identifier "LAB_0002af6d") (: ":") (expression_statement "iVar11 = FUN_00028f30(*(undefined4 *)(iVar8 + 0x14),iVar8);" (assignment_expression "iVar11 = FUN_00028f30(*(undefined4 *)(iVar8 + 0x14),iVar8)" (identifier "iVar11") (= "=") (call_expression "FUN_00028f30(*(undefined4 *)(iVar8 + 0x14),iVar8)" (identifier "FUN_00028f30") (argument_list "(*(undefined4 *)(iVar8 + 0x14),iVar8)" (( "(") (pointer_expression "*(undefined4 *)(iVar8 + 0x14)" (* "*") (cast_expression "(undefined4 *)(iVar8 + 0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 0x14)" (( "(") (binary_expression "iVar8 + 0x14" (identifier "iVar8") (+ "+") (number_literal "0x14")) () ")")))) (, ",") (identifier "iVar8") () ")")))) (; ";"))) (if_statement "if (*(int *)(&DAT_0005e002 + unaff_EBP) != 0) {\nLAB_0002af93:\n    puVar14 = (undefined4 *)(iVar8 + 0x10);\n    puVar18 = *(undefined4 **)(iVar8 + 0x10);\n    while (puVar15 = puVar14, puVar18 != (undefined4 *)0x0) {\n      piVar17 = puVar18 + 2;\n      puVar3 = (undefined4 *)*puVar18;\n      puVar14 = puVar18;\n      puVar18 = puVar3;\n      if (*piVar17 == 0) {\n        FUN_00028bf0();\n        *puVar15 = puVar3;\n        puVar14 = puVar15;\n      }\n    }\n  }" (if "if") (parenthesized_expression "(*(int *)(&DAT_0005e002 + unaff_EBP) != 0)" (( "(") (binary_expression "*(int *)(&DAT_0005e002 + unaff_EBP) != 0" (pointer_expression "*(int *)(&DAT_0005e002 + unaff_EBP)" (* "*") (cast_expression "(int *)(&DAT_0005e002 + unaff_EBP)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&DAT_0005e002 + unaff_EBP)" (( "(") (binary_expression "&DAT_0005e002 + unaff_EBP" (pointer_expression "&DAT_0005e002" (& "&") (identifier "DAT_0005e002")) (+ "+") (identifier "unaff_EBP")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\nLAB_0002af93:\n    puVar14 = (undefined4 *)(iVar8 + 0x10);\n    puVar18 = *(undefined4 **)(iVar8 + 0x10);\n    while (puVar15 = puVar14, puVar18 != (undefined4 *)0x0) {\n      piVar17 = puVar18 + 2;\n      puVar3 = (undefined4 *)*puVar18;\n      puVar14 = puVar18;\n      puVar18 = puVar3;\n      if (*piVar17 == 0) {\n        FUN_00028bf0();\n        *puVar15 = puVar3;\n        puVar14 = puVar15;\n      }\n    }\n  }" ({ "{") (labeled_statement "LAB_0002af93:\n    puVar14 = (undefined4 *)(iVar8 + 0x10);" (statement_identifier "LAB_0002af93") (: ":") (expression_statement "puVar14 = (undefined4 *)(iVar8 + 0x10);" (assignment_expression "puVar14 = (undefined4 *)(iVar8 + 0x10)" (identifier "puVar14") (= "=") (cast_expression "(undefined4 *)(iVar8 + 0x10)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 0x10)" (( "(") (binary_expression "iVar8 + 0x10" (identifier "iVar8") (+ "+") (number_literal "0x10")) () ")")))) (; ";"))) (expression_statement "puVar18 = *(undefined4 **)(iVar8 + 0x10);" (assignment_expression "puVar18 = *(undefined4 **)(iVar8 + 0x10)" (identifier "puVar18") (= "=") (pointer_expression "*(undefined4 **)(iVar8 + 0x10)" (* "*") (cast_expression "(undefined4 **)(iVar8 + 0x10)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar8 + 0x10)" (( "(") (binary_expression "iVar8 + 0x10" (identifier "iVar8") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (while_statement "while (puVar15 = puVar14, puVar18 != (undefined4 *)0x0) {\n      piVar17 = puVar18 + 2;\n      puVar3 = (undefined4 *)*puVar18;\n      puVar14 = puVar18;\n      puVar18 = puVar3;\n      if (*piVar17 == 0) {\n        FUN_00028bf0();\n        *puVar15 = puVar3;\n        puVar14 = puVar15;\n      }\n    }" (while "while") (parenthesized_expression "(puVar15 = puVar14, puVar18 != (undefined4 *)0x0)" (( "(") (comma_expression "puVar15 = puVar14, puVar18 != (undefined4 *)0x0" (assignment_expression "puVar15 = puVar14" (identifier "puVar15") (= "=") (identifier "puVar14")) (, ",") (binary_expression "puVar18 != (undefined4 *)0x0" (identifier "puVar18") (!= "!=") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")))) () ")")) (compound_statement "{\n      piVar17 = puVar18 + 2;\n      puVar3 = (undefined4 *)*puVar18;\n      puVar14 = puVar18;\n      puVar18 = puVar3;\n      if (*piVar17 == 0) {\n        FUN_00028bf0();\n        *puVar15 = puVar3;\n        puVar14 = puVar15;\n      }\n    }" ({ "{") (expression_statement "piVar17 = puVar18 + 2;" (assignment_expression "piVar17 = puVar18 + 2" (identifier "piVar17") (= "=") (binary_expression "puVar18 + 2" (identifier "puVar18") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "puVar3 = (undefined4 *)*puVar18;" (assignment_expression "puVar3 = (undefined4 *)*puVar18" (identifier "puVar3") (= "=") (cast_expression "(undefined4 *)*puVar18" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar18" (* "*") (identifier "puVar18")))) (; ";")) (expression_statement "puVar14 = puVar18;" (assignment_expression "puVar14 = puVar18" (identifier "puVar14") (= "=") (identifier "puVar18")) (; ";")) (expression_statement "puVar18 = puVar3;" (assignment_expression "puVar18 = puVar3" (identifier "puVar18") (= "=") (identifier "puVar3")) (; ";")) (if_statement "if (*piVar17 == 0) {\n        FUN_00028bf0();\n        *puVar15 = puVar3;\n        puVar14 = puVar15;\n      }" (if "if") (parenthesized_expression "(*piVar17 == 0)" (( "(") (binary_expression "*piVar17 == 0" (pointer_expression "*piVar17" (* "*") (identifier "piVar17")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        FUN_00028bf0();\n        *puVar15 = puVar3;\n        puVar14 = puVar15;\n      }" ({ "{") (expression_statement "FUN_00028bf0();" (call_expression "FUN_00028bf0()" (identifier "FUN_00028bf0") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "*puVar15 = puVar3;" (assignment_expression "*puVar15 = puVar3" (pointer_expression "*puVar15" (* "*") (identifier "puVar15")) (= "=") (identifier "puVar3")) (; ";")) (expression_statement "puVar14 = puVar15;" (assignment_expression "puVar14 = puVar15" (identifier "puVar14") (= "=") (identifier "puVar15")) (; ";")) (} "}"))) (} "}"))) (} "}"))) (expression_statement "FUN_000357d0(local_3c);" (call_expression "FUN_000357d0(local_3c)" (identifier "FUN_000357d0") (argument_list "(local_3c)" (( "(") (identifier "local_3c") () ")"))) (; ";")) (if_statement "if (iVar11 == 0) {\n    *(int *)(&DAT_0005dff6 + unaff_EBP) = *(int *)(&DAT_0005dff6 + unaff_EBP) + 1;\n  }" (if "if") (parenthesized_expression "(iVar11 == 0)" (( "(") (binary_expression "iVar11 == 0" (identifier "iVar11") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    *(int *)(&DAT_0005dff6 + unaff_EBP) = *(int *)(&DAT_0005dff6 + unaff_EBP) + 1;\n  }" ({ "{") (expression_statement "*(int *)(&DAT_0005dff6 + unaff_EBP) = *(int *)(&DAT_0005dff6 + unaff_EBP) + 1;" (assignment_expression "*(int *)(&DAT_0005dff6 + unaff_EBP) = *(int *)(&DAT_0005dff6 + unaff_EBP) + 1" (pointer_expression "*(int *)(&DAT_0005dff6 + unaff_EBP)" (* "*") (cast_expression "(int *)(&DAT_0005dff6 + unaff_EBP)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&DAT_0005dff6 + unaff_EBP)" (( "(") (binary_expression "&DAT_0005dff6 + unaff_EBP" (pointer_expression "&DAT_0005dff6" (& "&") (identifier "DAT_0005dff6")) (+ "+") (identifier "unaff_EBP")) () ")")))) (= "=") (binary_expression "*(int *)(&DAT_0005dff6 + unaff_EBP) + 1" (pointer_expression "*(int *)(&DAT_0005dff6 + unaff_EBP)" (* "*") (cast_expression "(int *)(&DAT_0005dff6 + unaff_EBP)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&DAT_0005dff6 + unaff_EBP)" (( "(") (binary_expression "&DAT_0005dff6 + unaff_EBP" (pointer_expression "&DAT_0005dff6" (& "&") (identifier "DAT_0005dff6")) (+ "+") (identifier "unaff_EBP")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (labeled_statement "LAB_0002afd9:\n  *param_3 = iVar11;" (statement_identifier "LAB_0002afd9") (: ":") (expression_statement "*param_3 = iVar11;" (assignment_expression "*param_3 = iVar11" (pointer_expression "*param_3" (* "*") (identifier "param_3")) (= "=") (identifier "iVar11")) (; ";"))) (expression_statement "FUN_000357d0(&local_48);" (call_expression "FUN_000357d0(&local_48)" (identifier "FUN_000357d0") (argument_list "(&local_48)" (( "(") (pointer_expression "&local_48" (& "&") (identifier "local_48")) () ")"))) (; ";")) (if_statement "if (param_4 == (int *)0x0) {\n    return 1;\n  }" (if "if") (parenthesized_expression "(param_4 == (int *)0x0)" (( "(") (binary_expression "param_4 == (int *)0x0" (identifier "param_4") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    return 1;\n  }" ({ "{") (return_statement "return 1;" (return "return") (number_literal "1") (; ";")) (} "}"))) (expression_statement "*param_4 = iVar8;" (assignment_expression "*param_4 = iVar8" (pointer_expression "*param_4" (* "*") (identifier "param_4")) (= "=") (identifier "iVar8")) (; ";")) (return_statement "return 1;" (return "return") (number_literal "1") (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.bp replaced with injection: get_pc_thunk.bp */
/* WARNING: Type propagation algorithm not settling */
/* WARNING: Unknown calling convention */

int function_1(char *var_1,type_1 *expand,char **error,type_2 **var_45)

{
  type_3 var_3;
  type_4 uVar2;
  bool bVar3;
  type_3 *var_8;
  type_5 *pfVar5;
  type_5 *var_42;
  type_6 *puVar6;
  type_7 *pfVar7;
  type_3 var_20;
  char var_36;
  void *var_33;
  type_3 *key;
  type_2 *var_11;
  size_t var_19;
  char *pcVar12;
  char *var_23;
  char *pcVar14;
  type_5 *pfVar15;
  size_t var_6;
  int var_24;
  size_t var_27;
  type_7 *var_14;
  type_3 *var_4;
  int var_28;
  type_1 line_sb;
  type_1 t;
  char buffer [20];
  
  if (((lex_type[(type_3)*var_1] & 2) == 0) && ((var_2 == 0 || (*var_1 != 0x2e)))) {
    return 0;
  }
  var_4 = (type_3 *)(var_1 + 1);
  var_3 = lex_type[(type_3)var_1[1]];
  while ((var_3 & 1) != 0) {
    var_4 = var_4 + 1;
    var_3 = lex_type[*var_4];
  }
  var_4 = var_4 + ((var_3 & 4) != 0);
  var_6 = (int)var_4 - (int)var_1;
  var_33 = (void *)var_5(var_6 + 1);
  *(type_8 *)((int)var_33 + var_6) = 0;
  key = (type_3 *)var_7(var_33,var_1,var_6);
  puVar6 = PTR__sch_tolower_0007ffd0;
  var_3 = *key;
  var_8 = key;
  while (var_3 != 0) {
    *var_8 = puVar6[var_3];
    var_3 = var_8[1];
    var_8 = var_8 + 1;
  }
  var_11 = (type_2 *)var_9(macro_hash,(char *)key);
  var_10(key);
  if (var_11 == (type_2 *)0x0) {
    return 0;
  }
  var_12(&line_sb);
  var_3 = *var_4;
  while ((0xd < var_3 || ((0x2401U >> ((int)(char)var_3 & 0x1fU) & 1) == 0))) {
    var_4 = var_4 + 1;
    var_13(&line_sb,(int)(char)var_3);
    var_3 = *var_4;
  }
  var_12(expand);
  var_12(&t);
  var_14 = var_11->formals;
  if (var_14 != (type_5 *)0x0) {
    do {
      var_15(&var_14->actual);
      var_14 = var_14->next;
    } while (var_14 != (type_7 *)0x0);
    for (var_14 = var_11->formals; var_14 != (type_7 *)0x0; var_14 = var_14->next) {
      if (-1 < var_14->index) goto LAB_0002adc1;
    }
  }
  var_14 = (type_7 *)0x0;
LAB_0002adc1:
  var_19 = 0;
  if ((var_2 != 0) && (var_19 = line_sb.len, line_sb.len != 0)) {
    if (*line_sb.ptr == '.') {
      if (((line_sb.len < 2) || (line_sb.ptr[1] == ' ')) || (line_sb.ptr[1] == '\t')) {
        var_19 = 1;
      }
      else {
        pfVar15 = var_16();
        pfVar15->index = -1;
        pfVar15->next = var_11->formals;
        var_11->formals = pfVar15;
        var_19 = var_17(1,&line_sb,&pfVar15->actual);
      }
    }
    else {
      var_19 = 0;
    }
  }
  var_19 = var_18(var_19,&line_sb);
  var_28 = 0;
  bVar3 = false;
  do {
    var_27 = var_19;
    if (line_sb.len <= var_19) {
LAB_0002b19c:
      var_14 = var_11->formals;
      goto joined_r0x0002b1a5;
    }
LAB_0002ae30:
    var_3 = line_sb.ptr[var_19];
    var_20 = 1;
    if ((type_3)(var_3 - 0x20) < 0x1c) {
      var_20 = ~(type_3)(0x8001305 >> (var_3 - 0x20 & 0x1f)) & 1;
    }
    if ((var_3 != 9) && (var_20 != 0)) {
      if (var_21 != 0) goto joined_r0x0002b05a;
      if (var_2 != 0) {
        if ((var_3 & 0xfd) == 0x3c) {
          if (var_19 < line_sb.len) goto LAB_0002b0c6;
        }
        else if (var_3 != 0x27) goto LAB_0002b03e;
        goto joined_r0x0002b05a;
      }
LAB_0002b03e:
      if (var_3 == 0x3d) {
        if (var_19 < line_sb.len) goto LAB_0002b0cf;
        goto joined_r0x0002b05a;
      }
      var_19 = var_19 + 1;
      if (var_19 != line_sb.len) goto LAB_0002ae30;
joined_r0x0002b05a:
      if (!bVar3) {
        if (var_14 == (type_7 *)0x0) {
          if (var_2 == 0) {
            var_23 = (char *)var_22(0,"too many positional arguments",5);
            if (var_23 == (char *)0x0) {
              var_14 = var_11->formals;
              if (var_14 != (type_5 *)0x0) goto LAB_0002af0e;
              pfVar15 = (type_5 *)0x0;
              goto LAB_0002af6d;
            }
            goto LAB_0002b090;
          }
          var_14 = var_16();
          var_24 = -1;
          pfVar7 = var_11->formals;
          if (var_11->formals == (type_5 *)0x0) {
            var_24 = 0;
            pfVar15 = (type_5 *)&var_11->formals;
          }
          else {
            do {
              pfVar15 = pfVar7;
              if (var_24 <= pfVar15->index) {
                var_24 = pfVar15->index + 1;
              }
              pfVar7 = pfVar15->next;
            } while (pfVar15->next != (type_7 *)0x0);
            if (var_24 == -1) {
              var_24 = 0;
            }
          }
          pfVar15->next = var_14;
          var_14->index = var_24;
        }
        if (var_14->type == var_25) {
          var_26(&var_14->actual,line_sb.ptr + var_27,line_sb.len - var_27);
          var_19 = line_sb.len;
        }
        else {
          var_19 = var_17(var_27,&line_sb,&var_14->actual);
        }
        var_28 = (var_28 + 1) - (uint)((var_14->actual).len == 0);
        do {
          var_14 = var_14->next;
          if (var_14 == (type_7 *)0x0) break;
        } while (var_14->index < 0);
LAB_0002aebd:
        if (var_2 != 0) goto LAB_0002aecb;
LAB_0002b178:
        var_19 = var_29(var_19,&line_sb);
        var_27 = var_19;
        if (line_sb.len <= var_19) goto LAB_0002b19c;
        goto LAB_0002ae30;
      }
      var_23 = (char *)var_22(0,"can\'t mix positional and keyword arguments",5);
LAB_0002b07a:
      if (var_23 == (char *)0x0) goto LAB_0002b19c;
      if (var_2 != 0) goto LAB_0002af93;
LAB_0002b090:
      var_30(&t);
      goto LAB_0002afd9;
    }
    if ((line_sb.len <= var_19) || (var_21 != 0)) goto joined_r0x0002b05a;
LAB_0002b0c6:
    if (var_3 != 0x3d) goto joined_r0x0002b05a;
LAB_0002b0cf:
    var_15(&t);
    var_19 = var_31(var_27,&line_sb,(type_1 *)&line_sb.len,&t);
    if (line_sb.ptr[var_19] != '=') {
      var_23 = (char *)var_22(0,"confusion in formal parameters",5);
      goto LAB_0002b07a;
    }
    var_23 = var_32(&t);
    var_33 = var_9(var_11->formal_hash,var_23);
    var_23 = t.ptr;
    if (var_33 == (void *)0x0) {
      pcVar14 = var_11->name;
      pcVar12 = (char *)var_22(0,"Parameter named `%s\' does not exist for macro `%s\'",5);
      var_34(pcVar12,var_23,pcVar14);
      var_15(&t);
      var_19 = var_17(var_19 + 1,&line_sb,&t);
      bVar3 = true;
      goto LAB_0002aebd;
    }
    if (*(int *)((int)var_33 + 0x20) != 0) {
      var_23 = var_11->name;
      uVar2 = *(type_4 *)((int)var_33 + 4);
      pcVar14 = (char *)var_22(0,"Value for parameter `%s\' of macro `%s\' was already specified"
                                  ,5);
      var_35(pcVar14,uVar2,var_23);
      var_15((type_1 *)((int)var_33 + 0x1c));
    }
    var_19 = var_17(var_19 + 1,&line_sb,(type_1 *)((int)var_33 + 0x1c));
    bVar3 = true;
    var_28 = (var_28 + 1) - (uint)(*(int *)((int)var_33 + 0x20) == 0);
    if (var_2 == 0) goto LAB_0002b178;
LAB_0002aecb:
    var_36 = line_sb.ptr[var_19];
    if (var_36 == ',') {
      var_19 = var_19 + 1;
      var_36 = line_sb.ptr[var_19];
    }
  } while ((var_36 != ' ') && (var_36 != '\t'));
  var_14 = var_11->formals;
  if (var_14 != (type_5 *)0x0) {
LAB_0002af0e:
    do {
      if ((var_14->type != var_37) || ((var_14->actual).len != 0)) {
        var_14 = var_14->next;
joined_r0x0002b1a5:
        if (var_14 == (type_7 *)0x0) break;
        goto LAB_0002af0e;
      }
      var_23 = (var_14->name).ptr;
      pcVar14 = var_11->name;
      pcVar12 = (char *)var_22(0,"Missing value for required parameter `%s\' of macro `%s\'",5);
      var_34(pcVar12,var_23,pcVar14);
      var_14 = var_14->next;
    } while (var_14 != (type_7 *)0x0);
    if (var_2 == 0) goto LAB_0002af66;
  }
  var_15(&t);
  var_23 = "$NARG";
  if (var_38 == 0) {
    var_23 = "NARG";
  }
  var_39(&t,var_23);
  var_23 = var_32(&t);
  var_33 = var_9(var_11->formal_hash,var_23);
  var_40(buffer,"%d",var_28);
  var_39((type_1 *)((int)var_33 + 0x1c),buffer);
LAB_0002af66:
  pfVar15 = var_11->formals;
LAB_0002af6d:
  var_23 = var_41((type_1 *)var_11,expand,pfVar15,var_11->formal_hash,var_11);
  if (var_2 != 0) {
LAB_0002af93:
    pfVar15 = (type_5 *)&var_11->formals;
    var_14 = var_11->formals;
    while (var_42 = var_14, pfVar5 = pfVar15, var_42 != (type_5 *)0x0) {
      var_14 = var_42->next;
      pfVar15 = var_42;
      if ((var_42->name).len == 0) {
        var_43(var_42);
        pfVar5->next = var_14;
        pfVar15 = pfVar5;
      }
    }
  }
  var_30(&t);
  if (var_23 == (char *)0x0) {
    var_44 = var_44 + 1;
  }
LAB_0002afd9:
  *error = var_23;
  var_30(&line_sb);
  if (var_45 != (type_2 **)0x0) {
    *var_45 = var_11;
    return 1;
  }
  return 1;
}


(translation_unit (function_definition type: (type_identifier) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))))) body: (compound_statement (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) 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: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) 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: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) 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: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (declaration type: (primitive_type) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_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: (binary_expression left: (parenthesized_expression (identifier)) right: (identifier)))))) right: (number_literal))) right: (number_literal))) right: (parenthesized_expression (parenthesized_expression (binary_expression left: (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: (identifier)) right: (identifier))))) right: (number_literal)) right: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal)))))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (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)) value: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal))))))))) (while_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (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)) value: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (identifier)) right: (identifier)))))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (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: (primitive_type) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (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: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (identifier))))) right: (number_literal))) (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 (identifier) (identifier) (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (while_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) body: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)))))))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (string_literal (string_content)) right: (identifier))))) (identifier))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (while_statement condition: (parenthesized_expression (parenthesized_expression (binary_expression left: (binary_expression left: (number_literal) right: (identifier)) right: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (binary_expression left: (number_literal) right: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))) right: (number_literal)))) right: (number_literal))) right: (number_literal)))))) body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (identifier)) (cast_expression type: (type_descriptor type: (primitive_type)) value: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (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: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (do_statement body: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier)))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal))))) (for_statement initializer: (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: (identifier) right: (number_literal)))))) condition: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal))) update: (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier)))) body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (subscript_expression argument: (identifier) index: (number_literal))))) consequence: (goto_statement label: (statement_identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (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: (identifier)) right: (identifier))))) right: (number_literal))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (identifier)) right: (binary_expression left: (identifier) right: (number_literal)))))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (char_literal (character)))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (char_literal (character)))))) right: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (char_literal (escape_sequence)))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (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))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (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))))))) (expression_statement (assignment_expression left: (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: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list)))))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal)))))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (pointer_expression argument: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (false))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (unary_expression argument: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (number_literal) right: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))))))) right: (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) right: (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: (identifier)) right: (identifier))))) right: (number_literal))))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (identifier)) right: (char_literal (character)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (number_literal) (binary_expression left: (identifier) right: (number_literal)) (number_literal))))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (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))))) (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (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: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (number_literal) (binary_expression left: (identifier) right: (number_literal)) (number_literal))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list)))) (expression_statement (assignment_expression left: (identifier) right: (true))) (goto_statement label: (statement_identifier)))) (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: (identifier) right: (number_literal))))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (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))))))) (expression_statement (assignment_expression left: (identifier) right: (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))))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (number_literal) (binary_expression left: (identifier) right: (number_literal)) (number_literal))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list)))) (expression_statement (assignment_expression left: (identifier) right: (true))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))))))) (goto_statement label: (statement_identifier))))))) (break_statement))) (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: (identifier)) right: (identifier))))) right: (number_literal))) consequence: (break_statement)) (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: (identifier)) right: (identifier))))) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (goto_statement label: (statement_identifier))) (break_statement))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (break_statement)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (goto_statement label: (statement_identifier))) (break_statement))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))) (if_statement condition: (parenthesized_expression (identifier)) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (number_literal) (binary_expression left: (identifier) right: (number_literal)) (number_literal))))) (labeled_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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (identifier))))) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (labeled_statement label: (statement_identifier) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier))))) (goto_statement label: (statement_identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (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: (identifier)) right: (identifier))))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (number_literal) (binary_expression left: (identifier) right: (number_literal)) (number_literal))))) (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: (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: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (goto_statement label: (statement_identifier))) (goto_statement label: (statement_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))))) (expression_statement (assignment_expression left: (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: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (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: (identifier) right: (number_literal))))) right: (cast_expression type: (type_descriptor type: (type_identifier) 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: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) alternative: (else_clause (compound_statement (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (subscript_expression argument: (identifier) index: (number_literal))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier)))))) condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))) right: (cast_expression type: (type_descriptor type: (type_identifier) 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: (number_literal)))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)) (binary_expression left: (identifier) right: (identifier)) (binary_expression left: (identifier) right: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))))))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (break_statement))) condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (subscript_expression argument: (identifier) index: (number_literal))) right: (number_literal)))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (identifier)))))))) (labeled_statement label: (statement_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: (call_expression function: (identifier) arguments: (argument_list (identifier) (pointer_expression argument: (identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (break_statement))) condition: (parenthesized_expression (true)))))) (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: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (goto_statement label: (statement_identifier))) (goto_statement label: (statement_identifier)))))) (return_statement (number_literal)) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (character)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (character)))) right: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (escape_sequence)))))) consequence: (goto_statement label: (statement_identifier))) (goto_statement label: (statement_identifier)) (labeled_statement label: (statement_identifier) (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: (number_literal)))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (do_statement body: (compound_statement (while_statement condition: (parenthesized_expression (parenthesized_expression (binary_expression left: (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal)) right: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal)))))) body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (goto_statement label: (statement_identifier))))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (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))))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (number_literal) (binary_expression left: (identifier) right: (number_literal)) (number_literal))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier)))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))))) (labeled_statement label: (statement_identifier) (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: (identifier)) right: (identifier))))) right: (number_literal))) consequence: (goto_statement label: (statement_identifier)))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (expression_statement (assignment_expression left: (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: (identifier)) right: (identifier))))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (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))))) (identifier))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (number_literal)))) (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)) (identifier)))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (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))))) (identifier)))))) (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: (identifier)) right: (identifier))))) right: (number_literal))) consequence: (compound_statement (labeled_statement label: (statement_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: (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: (identifier) right: (number_literal))))))) (while_statement condition: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (identifier)) right: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal))))) body: (compound_statement (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: (type_identifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))))))))) (expression_statement (call_expression function: (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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (identifier))))) right: (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: (identifier)) right: (identifier))))) right: (number_literal)))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (return_statement (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (return_statement (number_literal)))))

/* WARNING: Type propagation algorithm not settling */

undefined4 MASKED(byte *param_1,undefined4 param_2,int *param_3,int *param_4)

{
  byte bVar1;
  int iVar2;
  undefined4 *puVar3;
  bool bVar4;
  byte *pbVar5;
  byte bVar6;
  char cVar7;
  void *__dest;
  byte *__ptr;
  int iVar8;
  uint uVar9;
  undefined4 uVar10;
  int iVar11;
  undefined4 uVar12;
  undefined4 uVar13;
  undefined4 *puVar14;
  undefined4 *puVar15;
  size_t __n;
  uint uVar16;
  int unaff_EBP;
  int *piVar17;
  undefined4 *puVar18;
  byte *pbVar19;
  int local_58;
  char *local_48;
  uint local_44;
  undefined4 local_3c [3];
  char local_30 [32];
  
  FUN_0001fe10();
  iVar8 = unaff_EBP + 0x557ba;
  if (((*(byte *)(iVar8 + (uint)*param_1) & 2) != 0) ||
     ((*(int *)(&DAT_0005e002 + unaff_EBP) != 0 && (*param_1 == 0x2e)))) {
    pbVar19 = param_1 + 1;
    bVar1 = *(byte *)(iVar8 + (uint)param_1[1]);
    while ((bVar1 & 1) != 0) {
      pbVar19 = pbVar19 + 1;
      bVar1 = *(byte *)(iVar8 + (uint)*pbVar19);
    }
    pbVar19 = pbVar19 + ((bVar1 & 4) != 0);
    __n = (int)pbVar19 - (int)param_1;
    __dest = (void *)xmalloc(__n + 1);
    *(undefined1 *)((int)__dest + __n) = 0;
    __ptr = (byte *)memcpy(__dest,param_1,__n);
    iVar8 = *(int *)(unaff_EBP + 0x553ca);
    bVar1 = *__ptr;
    pbVar5 = __ptr;
    while (bVar1 != 0) {
      *pbVar5 = *(byte *)(iVar8 + (uint)bVar1);
      bVar1 = pbVar5[1];
      pbVar5 = pbVar5 + 1;
    }
    iVar8 = FUN_000254b0(*(undefined4 *)("%S.000%z" + unaff_EBP),__ptr);
    free(__ptr);
    if (iVar8 != 0) {
      FUN_00035790(&local_48);
      bVar1 = *pbVar19;
      while ((0xd < bVar1 || ((0x2401U >> ((int)(char)bVar1 & 0x1fU) & 1) == 0))) {
        pbVar19 = pbVar19 + 1;
        FUN_000358b0(&local_48,(int)(char)bVar1);
        bVar1 = *pbVar19;
      }
      FUN_00035790(param_2);
      FUN_00035790(local_3c);
      piVar17 = *(int **)(iVar8 + 0x10);
      if (piVar17 != (int *)0x0) {
        do {
          FUN_000358a0(piVar17 + 7);
          piVar17 = (int *)*piVar17;
        } while (piVar17 != (int *)0x0);
        for (puVar18 = *(undefined4 **)(iVar8 + 0x10); puVar18 != (undefined4 *)0x0;
            puVar18 = (undefined4 *)*puVar18) {
          if (-1 < (int)puVar18[10]) goto LAB_0002adc1;
        }
      }
      puVar18 = (undefined4 *)0x0;
LAB_0002adc1:
      uVar9 = 0;
      if ((*(int *)(&DAT_0005e002 + unaff_EBP) != 0) && (uVar9 = local_44, local_44 != 0)) {
        if (*local_48 == '.') {
          if (((local_44 < 2) || (local_48[1] == ' ')) || (local_48[1] == '\t')) {
            uVar9 = 1;
          }
          else {
            puVar14 = (undefined4 *)FUN_00028ba0();
            puVar14[10] = 0xffffffff;
            *puVar14 = *(undefined4 *)(iVar8 + 0x10);
            *(undefined4 **)(iVar8 + 0x10) = puVar14;
            uVar9 = FUN_00029a00();
          }
        }
        else {
          uVar9 = 0;
        }
      }
      uVar9 = FUN_00035980(uVar9,&local_48);
      local_58 = 0;
      bVar4 = false;
LAB_0002ae00:
      if (uVar9 < local_44) {
        do {
          uVar16 = uVar9;
          do {
            bVar1 = local_48[uVar16];
            bVar6 = 1;
            if ((byte)(bVar1 - 0x20) < 0x1c) {
              bVar6 = ~(byte)(0x8001305 >> (bVar1 - 0x20 & 0x1f)) & 1;
            }
            if ((bVar1 == 9) || (bVar6 == 0)) {
              if ((uVar16 < local_44) && (*(int *)(&DAT_0005e006 + unaff_EBP) == 0)) {
LAB_0002b0c6:
                if (bVar1 == 0x3d) {
LAB_0002b0cf:
                  FUN_000358a0(local_3c);
                  iVar11 = FUN_00028c80(local_3c);
                  if (local_48[iVar11] != '=') {
                    iVar11 = dcgettext(0,unaff_EBP + 0x3457a,5);
                    goto LAB_0002b07a;
                  }
                  uVar13 = FUN_00035970(local_3c);
                  iVar11 = FUN_000254b0(*(undefined4 *)(iVar8 + 0x14),uVar13);
                  uVar13 = local_3c[0];
                  if (iVar11 == 0) {
                    uVar10 = *(undefined4 *)(iVar8 + 0x18);
                    uVar12 = dcgettext(0,unaff_EBP + 0x3459a,5);
                    FUN_0002bd60(uVar12,uVar13,uVar10);
                    FUN_000358a0(local_3c);
                    uVar9 = FUN_00029a00();
                    bVar4 = true;
                    goto LAB_0002aebd;
                  }
                  if (*(int *)(iVar11 + 0x20) != 0) {
                    uVar13 = *(undefined4 *)(iVar8 + 0x18);
                    uVar10 = *(undefined4 *)(iVar11 + 4);
                    uVar12 = dcgettext(0,unaff_EBP + 0x345ce,5);
                    FUN_0002bc80(uVar12,uVar10,uVar13);
                    FUN_000358a0(iVar11 + 0x1c);
                  }
                  uVar9 = FUN_00029a00();
                  bVar4 = true;
                  iVar2 = *(int *)(&DAT_0005e002 + unaff_EBP);
                  local_58 = (local_58 + 1) - (uint)(*(int *)(iVar11 + 0x20) == 0);
                  goto joined_r0x0002b16d;
                }
              }
              break;
            }
            if (*(int *)(&DAT_0005e006 + unaff_EBP) != 0) break;
            if (*(int *)(&DAT_0005e002 + unaff_EBP) != 0) {
              if ((bVar1 & 0xfd) == 0x3c) {
                if (uVar16 < local_44) goto LAB_0002b0c6;
                break;
              }
              if (bVar1 == 0x27) break;
            }
            if (bVar1 == 0x3d) {
              if (uVar16 < local_44) goto LAB_0002b0cf;
              break;
            }
            uVar16 = uVar16 + 1;
          } while (uVar16 != local_44);
          if (bVar4) {
            iVar11 = dcgettext(0,unaff_EBP + 0x3460e,5);
LAB_0002b07a:
            if (iVar11 == 0) break;
            if (*(int *)(&DAT_0005e002 + unaff_EBP) != 0) goto LAB_0002af93;
LAB_0002b090:
            FUN_000357d0(local_3c);
            goto LAB_0002afd9;
          }
          if (puVar18 == (undefined4 *)0x0) {
            if (*(int *)(&DAT_0005e002 + unaff_EBP) == 0) {
              iVar11 = dcgettext(0,unaff_EBP + 0x34312,5);
              if (iVar11 != 0) goto LAB_0002b090;
              piVar17 = *(int **)(iVar8 + 0x10);
              if (piVar17 == (int *)0x0) goto LAB_0002af6d;
              goto LAB_0002aef9;
            }
            puVar18 = (undefined4 *)FUN_00028ba0();
            iVar11 = -1;
            puVar14 = *(undefined4 **)(iVar8 + 0x10);
            if (*(undefined4 **)(iVar8 + 0x10) == (undefined4 *)0x0) {
              iVar11 = 0;
              puVar15 = (undefined4 *)(iVar8 + 0x10);
            }
            else {
              do {
                puVar15 = puVar14;
                if (iVar11 <= (int)puVar15[10]) {
                  iVar11 = puVar15[10] + 1;
                }
                puVar14 = (undefined4 *)*puVar15;
              } while ((undefined4 *)*puVar15 != (undefined4 *)0x0);
              if (iVar11 == -1) {
                iVar11 = 0;
              }
            }
            *puVar15 = puVar18;
            puVar18[10] = iVar11;
          }
          if (puVar18[0xb] == 2) {
            FUN_00035930(puVar18 + 7,local_48 + uVar9,local_44 - uVar9);
            uVar9 = local_44;
          }
          else {
            uVar9 = FUN_00029a00();
          }
          local_58 = (local_58 + 1) - (uint)(puVar18[8] == 0);
          do {
            puVar18 = (undefined4 *)*puVar18;
            if (puVar18 == (undefined4 *)0x0) break;
          } while ((int)puVar18[10] < 0);
LAB_0002aebd:
          iVar2 = *(int *)(&DAT_0005e002 + unaff_EBP);
joined_r0x0002b16d:
          if (iVar2 != 0) goto LAB_0002aecb;
          uVar9 = FUN_000359c0(uVar9,&local_48);
          if (local_44 <= uVar9) break;
        } while( true );
      }
      piVar17 = *(int **)(iVar8 + 0x10);
      if (piVar17 != (int *)0x0) goto LAB_0002aef9;
      goto LAB_0002af58;
    }
  }
  return 0;
LAB_0002aecb:
  cVar7 = local_48[uVar9];
  if (cVar7 == ',') {
    uVar9 = uVar9 + 1;
    cVar7 = local_48[uVar9];
  }
  if ((cVar7 == ' ') || (cVar7 == '\t')) goto LAB_0002aeea;
  goto LAB_0002ae00;
LAB_0002aeea:
  piVar17 = *(int **)(iVar8 + 0x10);
  if (piVar17 != (int *)0x0) {
LAB_0002aef9:
    do {
      while ((piVar17[0xb] != 1 || (piVar17[8] != 0))) {
        piVar17 = (int *)*piVar17;
        if (piVar17 == (int *)0x0) goto LAB_0002af58;
      }
      iVar11 = piVar17[1];
      uVar13 = *(undefined4 *)(iVar8 + 0x18);
      uVar10 = dcgettext(0,unaff_EBP + 0x3463a,5);
      FUN_0002bd60(uVar10,iVar11,uVar13);
      piVar17 = (int *)*piVar17;
    } while (piVar17 != (int *)0x0);
LAB_0002af58:
    if (*(int *)(&DAT_0005e002 + unaff_EBP) == 0) goto LAB_0002af6d;
  }
  FUN_000358a0(local_3c);
  iVar11 = unaff_EBP + 0x342bc;
  if (*(int *)(&DAT_0005dffe + unaff_EBP) == 0) {
    iVar11 = unaff_EBP + 0x342bd;
  }
  FUN_000358e0(local_3c,iVar11);
  uVar13 = FUN_00035970(local_3c);
  iVar11 = FUN_000254b0(*(undefined4 *)(iVar8 + 0x14),uVar13);
  sprintf(local_30,(char *)(FUN_000357f0 + unaff_EBP + 4),local_58);
  FUN_000358e0(iVar11 + 0x1c,local_30);
LAB_0002af6d:
  iVar11 = FUN_00028f30(*(undefined4 *)(iVar8 + 0x14),iVar8);
  if (*(int *)(&DAT_0005e002 + unaff_EBP) != 0) {
LAB_0002af93:
    puVar14 = (undefined4 *)(iVar8 + 0x10);
    puVar18 = *(undefined4 **)(iVar8 + 0x10);
    while (puVar15 = puVar14, puVar18 != (undefined4 *)0x0) {
      piVar17 = puVar18 + 2;
      puVar3 = (undefined4 *)*puVar18;
      puVar14 = puVar18;
      puVar18 = puVar3;
      if (*piVar17 == 0) {
        FUN_00028bf0();
        *puVar15 = puVar3;
        puVar14 = puVar15;
      }
    }
  }
  FUN_000357d0(local_3c);
  if (iVar11 == 0) {
    *(int *)(&DAT_0005dff6 + unaff_EBP) = *(int *)(&DAT_0005dff6 + unaff_EBP) + 1;
  }
LAB_0002afd9:
  *param_3 = iVar11;
  FUN_000357d0(&local_48);
  if (param_4 == (int *)0x0) {
    return 1;
  }
  *param_4 = iVar8;
  return 1;
}

