
reg_errcode_t
set_regs(regex_t *preg,re_match_context_t *mctx,size_t nmatch,regmatch_t *pmatch,_Bool fl_backtrack)

{
  bool bVar1;
  bin_tree_t *pbVar2;
  bin_tree_t *pbVar3;
  Idx IVar4;
  undefined3 extraout_var;
  code *pcVar5;
  code *pcVar6;
  code *pcVar7;
  size_t sVar8;
  re_dfastate_t *prVar9;
  wint_t *pwVar10;
  re_fail_stack_ent_t *prVar11;
  re_match_context_t *prVar12;
  _Bool _Var17;
  int iVar13;
  re_token_t *prVar14;
  reg_errcode_t rVar15;
  bin_tree_t *pbVar16;
  bin_tree_t *root;
  int iVar18;
  re_dfa_t *prVar19;
  int iVar20;
  regmatch_t *prVar21;
  uchar *puVar22;
  re_string_t *regexp;
  re_match_context_t *prVar23;
  re_dfa_t *prVar24;
  regmatch_t *prVar25;
  re_match_context_t *unaff_s0;
  re_match_context_t *prVar26;
  int *piVar27;
  re_dfa_t *unaff_s2;
  re_dfa_t *prVar28;
  bin_tree_t *root_00;
  wint_t *unaff_s3;
  re_fail_stack_t *unaff_s5;
  re_dfa_t *unaff_s6;
  re_dfa_t *prVar29;
  undefined *puVar30;
  undefined1 *puVar31;
  undefined1 *puVar32;
  undefined4 uVar33;
  undefined1 auStack_98 [24];
  re_match_context_t *local_70;
  Idx idx;
  re_node_set eps_via_nodes;
  re_fail_stack_t fs_body;
  
  puVar31 = auStack_98;
  puVar32 = auStack_98;
  iVar18 = *(int *)PTR___stack_chk_guard_0003e348;
  prVar29 = preg->buffer;
  fs_body.num = 0;
  fs_body.alloc = 2;
  fs_body.stack = (re_fail_stack_ent_t *)0x0;
  prVar23 = mctx;
  prVar24 = (re_dfa_t *)nmatch;
  prVar25 = pmatch;
  if (fl_backtrack) {
    fs_body.stack = (re_fail_stack_ent_t *)(*(code *)PTR_malloc_0003e2f8)(0x30);
    if (fs_body.stack == (re_fail_stack_ent_t *)0x0) {
      rVar15 = _REG_ESPACE;
      goto LAB_00021ed8;
    }
    unaff_s5 = &fs_body;
  }
  else {
    unaff_s5 = (re_fail_stack_t *)0x0;
  }
  unaff_s0 = (re_match_context_t *)prVar29->init_node;
  eps_via_nodes.alloc = 0;
  eps_via_nodes.nelem = 0;
  eps_via_nodes.elems = (Idx *)0x0;
  prVar19 = (re_dfa_t *)(nmatch * 8);
  if (prVar19 < (re_dfa_t *)0xfc0) {
    puVar31 = auStack_98 + nmatch * -8;
    local_70 = (re_match_context_t *)(&stack0xffffff80 + nmatch * -8);
    bVar1 = false;
  }
  else {
    local_70 = (re_match_context_t *)(*(code *)PTR_malloc_0003e2f8)(prVar19);
    bVar1 = true;
    if (local_70 == (re_match_context_t *)0x0) {
      free_fail_stack_return(unaff_s5);
      rVar15 = _REG_ESPACE;
      puVar32 = auStack_98;
      goto LAB_00021ed8;
    }
  }
  prVar23 = (re_match_context_t *)pmatch;
  prVar24 = prVar19;
  (*(code *)PTR_memcpy_0003e34c)(local_70);
  idx = pmatch->rm_so;
  pcVar5 = (code *)(PTR_LAB_0003e238 + -0x10e8);
  pcVar6 = (code *)(PTR_LAB_0003e238 + -0x6f00);
  pcVar7 = (code *)(PTR_LAB_0003e238 + -0x589c);
  while (unaff_s2 = (re_dfa_t *)idx, puVar30 = PTR_memcpy_0003e34c, puVar32 = puVar31,
        idx <= pmatch->rm_eo) {
    prVar14 = prVar29->nodes + (int)unaff_s0;
    if (prVar14->field_0x4 == '\b') {
      iVar13 = (prVar14->opr).idx + 1;
      if (iVar13 < (int)nmatch) {
        pmatch[iVar13].rm_so = idx;
        pmatch[iVar13].rm_eo = -1;
      }
LAB_00021cec:
      iVar13 = pmatch->rm_eo;
    }
    else {
      if (prVar14->field_0x4 != '\t') goto LAB_00021cec;
      iVar13 = (prVar14->opr).idx + 1;
      if ((int)nmatch <= iVar13) goto LAB_00021cec;
      prVar23 = (re_match_context_t *)(pmatch + iVar13);
      if ((int)(prVar23->input).raw_mbs < idx) {
        (prVar23->input).mbs = (uchar *)idx;
        prVar23 = (re_match_context_t *)pmatch;
        prVar24 = prVar19;
        (*(code *)puVar30)(local_70);
        iVar13 = pmatch->rm_eo;
      }
      else {
        if (((*(uint *)&prVar14->field_0x4 & 0x1000) == 0) ||
           (prVar24 = prVar19,
           (&(local_70->input).wcs)[(prVar14->opr).idx * 2] == (wint_t *)0xffffffff)) {
          (prVar23->input).mbs = (uchar *)idx;
          goto LAB_00021cec;
        }
        prVar23 = local_70;
        (*(code *)PTR_memcpy_0003e34c)(pmatch);
        iVar13 = pmatch->rm_eo;
      }
    }
    if (((re_dfa_t *)iVar13 == unaff_s2) && ((re_match_context_t *)mctx->last_node == unaff_s0)) {
      if (unaff_s5 == (re_fail_stack_t *)0x0) {
        (*(code *)PTR_free_0003e354)(eps_via_nodes.elems);
        if (bVar1) {
          (*(code *)PTR_free_0003e354)(local_70);
          rVar15 = _REG_NOERROR;
        }
        else {
          rVar15 = _REG_NOERROR;
        }
      }
      else {
        if (nmatch != 0) {
          sVar8 = 0;
          prVar24 = (re_dfa_t *)0xffffffff;
          prVar21 = pmatch;
          do {
            if ((-1 < prVar21->rm_so) &&
               (prVar23 = (re_match_context_t *)prVar21->rm_eo,
               (re_match_context_t *)prVar21->rm_eo == (re_match_context_t *)0xffffffff)) break;
            sVar8 = sVar8 + 1;
            prVar21 = prVar21 + 1;
            prVar23 = (re_match_context_t *)nmatch;
          } while (nmatch != sVar8);
          if (sVar8 != nmatch) {
            *(re_node_set **)(puVar31 + 0x10) = &eps_via_nodes;
            prVar23 = (re_match_context_t *)&idx;
            prVar24 = (re_dfa_t *)nmatch;
            prVar25 = pmatch;
            unaff_s0 = (re_match_context_t *)(*pcVar5)(unaff_s5);
            goto LAB_00021d04;
          }
        }
        (*(code *)PTR_free_0003e354)(eps_via_nodes.elems);
        if (bVar1) {
          (*(code *)PTR_free_0003e354)(local_70);
        }
        rVar15 = free_fail_stack_return(unaff_s5);
      }
      goto LAB_00021ed8;
    }
LAB_00021d04:
    unaff_s2 = mctx->dfa;
    unaff_s3 = (wint_t *)((int)unaff_s0 * 8);
    prVar14 = unaff_s2->nodes + (int)unaff_s0;
    if ((prVar14->field_0x4 & 8) == 0) {
      if ((*(uint *)&prVar14->field_0x4 & 0x800) == 0) {
        if (prVar14->field_0x4 == 4) {
          iVar20 = pmatch[(prVar14->opr).idx + 1].rm_eo;
          iVar13 = pmatch[(prVar14->opr).idx + 1].rm_so;
          unaff_s6 = (re_dfa_t *)(iVar20 - iVar13);
          if (unaff_s5 == (re_fail_stack_t *)0x0) {
            prVar23 = unaff_s0;
            if (unaff_s6 != (re_dfa_t *)0x0) goto LAB_00021da8;
LAB_00021dd0:
            prVar23 = unaff_s0;
            iVar13 = (*pcVar7)(&eps_via_nodes);
            if (iVar13 == 0) goto LAB_00021b34;
            prVar26 = (re_match_context_t *)*unaff_s2->edests[(int)unaff_s0].elems;
            prVar23 = prVar26;
            iVar13 = (*pcVar6)(&mctx->state_log[idx]->nodes);
            if (iVar13 != 0) goto LAB_00021ca8;
            goto LAB_00021c18;
          }
          if ((iVar13 != -1) && (iVar20 != -1)) {
            if (unaff_s6 == (re_dfa_t *)0x0) goto LAB_00021dd0;
            puVar22 = (mctx->input).mbs;
            prVar23 = (re_match_context_t *)(puVar22 + idx);
            prVar24 = unaff_s6;
            iVar13 = (*(code *)PTR_memcmp_0003e338)(puVar22 + iVar13);
            if (iVar13 == 0) goto LAB_00021da8;
          }
        }
        else {
LAB_00021c18:
          unaff_s6 = (re_dfa_t *)idx;
          prVar23 = (re_match_context_t *)(unaff_s2->nodes + (int)unaff_s0);
          prVar24 = (re_dfa_t *)idx;
          _Var17 = check_node_accept(mctx,(re_token_t *)prVar23,idx);
          if (CONCAT31(extraout_var,_Var17) != 0) {
            prVar26 = (re_match_context_t *)unaff_s2->nexts[(int)unaff_s0];
            idx = (int)unaff_s6 + 1;
            goto LAB_00021c5c;
          }
        }
      }
      else {
        prVar23 = unaff_s0;
        prVar24 = (re_dfa_t *)mctx;
        prVar25 = (regmatch_t *)idx;
        unaff_s6 = (re_dfa_t *)check_node_accept_bytes(unaff_s2,(Idx)unaff_s0,&mctx->input,idx);
        if (unaff_s6 == (re_dfa_t *)0x0) goto LAB_00021c18;
LAB_00021da8:
        prVar26 = (re_match_context_t *)unaff_s2->nexts[(int)unaff_s0];
        idx = (int)unaff_s6->word_char + idx + -0x60;
LAB_00021c5c:
        unaff_s6 = (re_dfa_t *)idx;
        if (unaff_s5 == (re_fail_stack_t *)0x0) {
LAB_00021ca4:
          eps_via_nodes.nelem = 0;
          goto LAB_00021ca8;
        }
        unaff_s6 = (re_dfa_t *)(idx * 4);
        if (idx <= mctx->match_last) {
          unaff_s6 = (re_dfa_t *)(mctx->state_log + idx);
          puVar22 = ((re_string_t *)&unaff_s6->nodes)->raw_mbs;
          prVar23 = prVar26;
          if ((puVar22 != (uchar *)0x0) && (iVar13 = (*pcVar6)(puVar22 + 4), iVar13 != 0))
          goto LAB_00021ca4;
        }
      }
LAB_00021f3c:
      unaff_s0 = (re_match_context_t *)0xffffffff;
      goto LAB_00021f44;
    }
    prVar9 = mctx->state_log[idx];
    unaff_s2 = (re_dfa_t *)(unaff_s2->edests + (int)unaff_s0);
    prVar23 = unaff_s0;
    iVar13 = (*pcVar7)(&eps_via_nodes);
    if (iVar13 == 0) goto LAB_00021b34;
    unaff_s6 = (re_dfa_t *)unaff_s2->nodes_alloc;
    if ((int)unaff_s6 < 1) goto LAB_00021f3c;
    unaff_s3 = (wint_t *)unaff_s2->nodes_len;
    unaff_s2 = (re_dfa_t *)0x0;
    unaff_s0 = (re_match_context_t *)0xffffffff;
    do {
      prVar12 = (re_match_context_t *)*unaff_s3;
      prVar23 = prVar12;
      iVar13 = (*pcVar6)(&prVar9->nodes);
      prVar26 = unaff_s0;
      if ((iVar13 != 0) &&
         (prVar23 = unaff_s0, prVar26 = prVar12, unaff_s0 != (re_match_context_t *)0xffffffff)) {
        iVar13 = (*pcVar6)(&eps_via_nodes);
        IVar4 = idx;
        if ((iVar13 == 0) &&
           (prVar26 = unaff_s0, unaff_s6 = (re_dfa_t *)idx, unaff_s5 != (re_fail_stack_t *)0x0)) {
          prVar28 = (re_dfa_t *)unaff_s5->num;
          prVar26 = (re_match_context_t *)((int)&((re_string_t *)&prVar28->nodes)->raw_mbs + 1);
          unaff_s5->num = (Idx)prVar26;
          prVar23 = (re_match_context_t *)unaff_s5->alloc;
          if (prVar26 == prVar23) {
            prVar23 = (re_match_context_t *)((int)prVar23 * 0x30);
            prVar11 = (re_fail_stack_ent_t *)(*(code *)PTR_realloc_0003e2fc)(unaff_s5->stack);
            unaff_s2 = prVar28;
            unaff_s6 = (re_dfa_t *)IVar4;
            if (prVar11 == (re_fail_stack_ent_t *)0x0) goto LAB_00021b34;
            unaff_s5->alloc = unaff_s5->alloc << 1;
            unaff_s5->stack = prVar11;
          }
          unaff_s3 = (wint_t *)((int)prVar28 * 0x18);
          unaff_s5->stack[(int)prVar28].idx = IVar4;
          unaff_s5->stack[(int)prVar28].node = (Idx)prVar12;
          unaff_s2 = (re_dfa_t *)(unaff_s5->stack + (int)prVar28);
          pwVar10 = (wint_t *)(*(code *)PTR_malloc_0003e2f8)(prVar19);
          unaff_s2->nodes_len = (size_t)pwVar10;
          prVar21 = unaff_s5->stack[(int)prVar28].regs;
          prVar24 = prVar19;
          unaff_s6 = prVar19;
          if (prVar21 == (regmatch_t *)0x0) goto LAB_00021b34;
          (*(code *)PTR_memcpy_0003e34c)(prVar21,pmatch);
          prVar23 = (re_match_context_t *)&eps_via_nodes;
          rVar15 = re_node_set_init_copy
                             (&unaff_s5->stack[(int)prVar28].eps_via_nodes,(re_node_set *)prVar23);
          prVar26 = unaff_s0;
          if (rVar15 != _REG_NOERROR) goto LAB_00021b34;
        }
        break;
      }
      unaff_s2 = (re_dfa_t *)((int)&((re_string_t *)&unaff_s2->nodes)->raw_mbs + 1);
      unaff_s3 = unaff_s3 + 1;
      unaff_s0 = prVar26;
    } while (unaff_s6 != unaff_s2);
LAB_00021ca8:
    unaff_s0 = prVar26;
    if ((int)prVar26 < 0) {
LAB_00021f44:
      if (unaff_s0 == (re_match_context_t *)&SUB_fffffffe) {
LAB_00021b34:
        (*(code *)PTR_free_0003e354)(eps_via_nodes.elems);
        if (bVar1) {
          (*(code *)PTR_free_0003e354)(local_70);
        }
        free_fail_stack_return(unaff_s5);
        rVar15 = _REG_ESPACE;
        goto LAB_00021ed8;
      }
      if (unaff_s5 == (re_fail_stack_t *)0x0) {
        (*(code *)PTR_free_0003e354)();
        if (bVar1) {
          (*(code *)PTR_free_0003e354)(local_70);
          rVar15 = _REG_NOMATCH;
        }
        else {
          rVar15 = _REG_NOMATCH;
        }
        goto LAB_00021ed8;
      }
      *(re_node_set **)(puVar31 + 0x10) = &eps_via_nodes;
      prVar23 = (re_match_context_t *)&idx;
      prVar24 = (re_dfa_t *)nmatch;
      prVar25 = pmatch;
      unaff_s0 = (re_match_context_t *)(*pcVar5)(unaff_s5);
    }
  }
  (*(code *)PTR_free_0003e354)(eps_via_nodes.elems);
  if (bVar1) {
    (*(code *)PTR_free_0003e354)(local_70);
  }
  rVar15 = free_fail_stack_return(unaff_s5);
LAB_00021ed8:
  if (iVar18 == *(int *)PTR___stack_chk_guard_0003e348) {
    return rVar15;
  }
  pcVar5 = parse_expression;
  puVar30 = PTR___stack_chk_fail_0003e32c;
  (*(code *)PTR___stack_chk_fail_0003e32c)();
  *(code **)(puVar32 + -4) = pcVar5;
  *(undefined1 **)(puVar32 + -8) = auStack_98;
  *(re_dfa_t **)(puVar32 + -0xc) = prVar29;
  *(re_dfa_t **)(puVar32 + -0x10) = unaff_s6;
  *(re_fail_stack_t **)(puVar32 + -0x14) = unaff_s5;
  *(regmatch_t **)(puVar32 + -0x18) = pmatch;
  *(wint_t **)(puVar32 + -0x1c) = unaff_s3;
  *(re_dfa_t **)(puVar32 + -0x20) = unaff_s2;
  *(re_match_context_t **)(puVar32 + -0x24) = mctx;
  *(re_match_context_t **)(puVar32 + -0x28) = unaff_s0;
  *(undefined **)(puVar32 + -0xc0) = puVar30 + 0x24174;
  *(int *)(puVar32 + -0xac) = iVar18;
  uVar33 = *(undefined4 *)(puVar32 + 0x14);
  *(undefined4 *)(puVar32 + -0x2c) = **(undefined4 **)(puVar30 + 0x1c3ac);
  *(uchar **)(puVar32 + -0xb8) = (prVar23->input).raw_mbs;
  if (*(byte *)&prVar24->nodes_alloc < 0x25) {
                    /* WARNING: Could not recover jumptable at 0x00022020. Too many branches */
                    /* WARNING: Treating indirect jump as call */
    rVar15 = (*(code *)(puVar30 + 0x24174 +
                       *(int *)(*(int *)(puVar30 + 0x1c1ac) + -0x2ac0 +
                               (uint)*(byte *)&prVar24->nodes_alloc * 4)))();
    return rVar15;
  }
  regexp = *(re_string_t **)(puVar32 + -0x2c);
  if (regexp == (re_string_t *)**(int **)(puVar30 + 0x1c3ac)) {
    return _REG_NOERROR;
  }
  pcVar5 = *(code **)(puVar30 + 0x1c390);
  pcVar6 = parse_branch;
  prVar26 = prVar23;
  (*pcVar5)();
  *(code **)(puVar32 + -0xe4) = pcVar6;
  *(undefined4 *)(puVar32 + -0xe8) = uVar33;
  *(re_dfa_t **)(puVar32 + -0xec) = prVar29;
  *(undefined4 *)(puVar32 + -0xf0) = 0;
  *(re_fail_stack_t **)(puVar32 + -0xf4) = unaff_s5;
  *(regmatch_t **)(puVar32 + -0xf8) = pmatch;
  *(wint_t **)(puVar32 + -0xfc) = unaff_s3;
  *(re_dfa_t **)(puVar32 + -0x100) = unaff_s2;
  *(re_match_context_t **)(puVar32 + -0x104) = mctx;
  *(re_match_context_t **)(puVar32 + -0x108) = prVar23;
  *(code **)(puVar32 + -0x118) = pcVar5 + 0x228ec;
  *(re_string_t **)(puVar32 + -0xe0) = regexp;
  *(regmatch_t **)(puVar32 + -0xd4) = prVar25;
  iVar18 = *(int *)(puVar32 + -0xd0);
  piVar27 = *(int **)(puVar32 + -0xcc);
  *(uchar **)(puVar32 + -0x110) = (prVar26->input).raw_mbs;
  *(int **)(puVar32 + -0x11c) = piVar27;
  *(int *)(puVar32 + -0x120) = iVar18;
  pbVar16 = parse_expression(regexp,(regex_t *)prVar26,(re_token_t *)prVar24,(reg_syntax_t)prVar25,
                             *(Idx *)(puVar32 + -0x120),*(reg_errcode_t **)(puVar32 + -0x11c));
  if ((*piVar27 == 0) || (pbVar16 != (bin_tree_t *)0x0)) {
    iVar13 = *(int *)(*(int *)(puVar32 + -0x118) + -0x7ed8);
    *(int *)(puVar32 + -0x10c) = *(int *)(*(int *)(puVar32 + -0x118) + -0x7ed8) + -0x5cb8;
LAB_0002390c:
    do {
      do {
        root_00 = pbVar16;
        if ((*(byte *)&prVar24->nodes_alloc & 0xf7) == 2) {
          return (reg_errcode_t)root_00;
        }
        if ((iVar18 != 0) && (*(byte *)&prVar24->nodes_alloc == 9)) {
          return (reg_errcode_t)root_00;
        }
        *(int **)(puVar32 + -0x11c) = piVar27;
        *(int *)(puVar32 + -0x120) = iVar18;
        root = (bin_tree_t *)
               (*(code *)(iVar13 + 0x1f9c))
                         (*(undefined4 *)(puVar32 + -0xe0),prVar26,prVar24,
                          *(undefined4 *)(puVar32 + -0xd4));
        if (*piVar27 == 0) {
          pbVar16 = root;
          pbVar2 = root_00;
          pbVar3 = root;
          if (root_00 == (bin_tree_t *)0x0) goto LAB_0002390c;
        }
        else {
          pbVar2 = root;
          pbVar3 = root_00;
          if (root == (bin_tree_t *)0x0) {
            if (root_00 == (bin_tree_t *)0x0) {
              return _REG_NOERROR;
            }
            postorder(root_00,(_func_reg_errcode_t_void_ptr_bin_tree_t_ptr *)
                              (*(int *)(*(int *)(puVar32 + -0x118) + -0x7ed8) + -0x2cc0),(void *)0x0
                     );
            return _REG_NOERROR;
          }
        }
        pbVar16 = pbVar2;
      } while (pbVar3 == (bin_tree_t *)0x0);
      pbVar16 = (bin_tree_t *)
                (**(code **)(puVar32 + -0x10c))(*(undefined4 *)(puVar32 + -0x110),root_00,root,0x10)
      ;
    } while (pbVar16 != (bin_tree_t *)0x0);
    iVar18 = *(int *)(*(int *)(puVar32 + -0x118) + -0x7ed8);
    postorder(root,(_func_reg_errcode_t_void_ptr_bin_tree_t_ptr *)(iVar18 + -0x2cc0),(void *)0x0);
    postorder(root_00,(_func_reg_errcode_t_void_ptr_bin_tree_t_ptr *)(iVar18 + -0x2cc0),(void *)0x0)
    ;
    *piVar27 = 0xc;
    pbVar16 = (bin_tree_t *)0x0;
  }
  return (reg_errcode_t)pbVar16;
}



/* WARNING: Type propagation algorithm not settling */

int FUN_000216b4(undefined4 *param_1,int *******param_2,int *******param_3,int *******param_4,
                char param_5)

{
  bool bVar1;
  int iVar2;
  int iVar3;
  int *******pppppppiVar4;
  code *pcVar5;
  code *pcVar6;
  code *pcVar7;
  int *****pppppiVar8;
  int *******pppppppiVar9;
  int *piVar10;
  int *******pppppppiVar11;
  int ******ppppppiVar12;
  int iVar13;
  int iVar14;
  int *******pppppppiVar15;
  int ******ppppppiVar16;
  int *******pppppppiVar17;
  int *******pppppppiVar18;
  int *******pppppppiVar19;
  int *******unaff_s0;
  int *******unaff_s2;
  int iVar20;
  int ******unaff_s3;
  int iVar21;
  int **unaff_s5;
  int iVar22;
  int *******unaff_s6;
  int *piVar23;
  undefined *puVar24;
  undefined1 *puVar25;
  undefined1 *puVar26;
  undefined4 uVar27;
  undefined1 auStack_98 [24];
  int *******local_70;
  int *******local_48;
  int ******local_44;
  undefined4 local_40;
  undefined4 local_3c;
  int *local_38;
  undefined4 local_34;
  int local_30;
  int local_2c;
  
  puVar25 = auStack_98;
  puVar26 = auStack_98;
  local_2c = *(int *)PTR___stack_chk_guard_0003e348;
  piVar23 = (int *)*param_1;
  local_38 = (int *)0x0;
  local_34 = 2;
  local_30 = 0;
  pppppppiVar17 = param_2;
  pppppppiVar18 = param_3;
  pppppppiVar19 = param_4;
  if (param_5 == '\0') {
    unaff_s5 = (int **)0x0;
  }
  else {
    local_30 = (*(code *)PTR_malloc_0003e2f8)(0x30);
    if (local_30 == 0) {
      iVar13 = 0xc;
      goto LAB_00021ed8;
    }
    unaff_s5 = &local_38;
  }
  unaff_s0 = (int *******)piVar23[0x12];
  local_44 = (int ******)0x0;
  local_40 = 0;
  local_3c = 0;
  pppppppiVar15 = (int *******)((int)param_3 * 8);
  if (pppppppiVar15 < (int *******)0xfc0) {
    puVar25 = auStack_98 + (int)param_3 * -8;
    local_70 = (int *******)(&stack0xffffff80 + (int)param_3 * -8);
    bVar1 = false;
  }
  else {
    local_70 = (int *******)(*(code *)PTR_malloc_0003e2f8)(pppppppiVar15);
    bVar1 = true;
    if (local_70 == (int *******)0x0) {
      FUN_0001eb94(unaff_s5);
      iVar13 = 0xc;
      puVar26 = auStack_98;
      goto LAB_00021ed8;
    }
  }
  pppppppiVar17 = param_4;
  pppppppiVar18 = pppppppiVar15;
  (*(code *)PTR_memcpy_0003e34c)(local_70);
  local_48 = (int *******)*param_4;
  pcVar5 = (code *)(PTR_DAT_0003e238 + -0x10e8);
  pcVar6 = (code *)(PTR_DAT_0003e238 + -0x6f00);
  pcVar7 = (code *)(PTR_DAT_0003e238 + -0x589c);
  while (unaff_s2 = local_48, puVar24 = PTR_memcpy_0003e34c, puVar26 = puVar25,
        (int)local_48 <= (int)param_4[1]) {
    piVar10 = (int *)(*piVar23 + (int)unaff_s0 * 8);
    if (*(char *)(piVar10 + 1) == '\b') {
      iVar13 = *piVar10;
      if (iVar13 + 1 < (int)param_3) {
        param_4[(iVar13 + 1) * 2] = (int ******)local_48;
        (param_4 + (iVar13 + 1) * 2)[1] = (int ******)0xffffffff;
      }
LAB_00021cec:
      pppppppiVar11 = (int *******)param_4[1];
    }
    else {
      if ((*(char *)(piVar10 + 1) != '\t') || (iVar13 = *piVar10 + 1, (int)param_3 <= iVar13))
      goto LAB_00021cec;
      pppppppiVar17 = param_4 + iVar13 * 2;
      if ((int)*pppppppiVar17 < (int)local_48) {
        pppppppiVar17[1] = (int ******)local_48;
        pppppppiVar17 = param_4;
        pppppppiVar18 = pppppppiVar15;
        (*(code *)puVar24)(local_70);
        pppppppiVar11 = (int *******)param_4[1];
      }
      else {
        if (((piVar10[1] & 0x1000U) == 0) ||
           (pppppppiVar18 = pppppppiVar15, local_70[iVar13 * 2] == (int ******)0xffffffff)) {
          pppppppiVar17[1] = (int ******)local_48;
          goto LAB_00021cec;
        }
        pppppppiVar17 = local_70;
        (*(code *)PTR_memcpy_0003e34c)(param_4);
        pppppppiVar11 = (int *******)param_4[1];
      }
    }
    if ((pppppppiVar11 == unaff_s2) && ((int *******)param_2[0x18] == unaff_s0)) {
      if (unaff_s5 == (int **)0x0) {
        (*(code *)PTR_free_0003e354)(local_3c);
        if (bVar1) {
          (*(code *)PTR_free_0003e354)(local_70);
          iVar13 = 0;
        }
        else {
          iVar13 = 0;
        }
      }
      else {
        if (param_3 != (int *******)0x0) {
          pppppppiVar9 = (int *******)0x0;
          pppppppiVar18 = (int *******)0xffffffff;
          pppppppiVar11 = param_4;
          do {
            if ((-1 < (int)*pppppppiVar11) &&
               (pppppppiVar17 = (int *******)pppppppiVar11[1],
               (int *******)pppppppiVar11[1] == (int *******)0xffffffff)) break;
            pppppppiVar9 = (int *******)((int)pppppppiVar9 + 1);
            pppppppiVar11 = pppppppiVar11 + 2;
            pppppppiVar17 = param_3;
          } while (param_3 != pppppppiVar9);
          if (pppppppiVar9 != param_3) {
            *(int ********)(puVar25 + 0x10) = &local_44;
            pppppppiVar17 = (int *******)&local_48;
            pppppppiVar18 = param_3;
            pppppppiVar19 = param_4;
            unaff_s0 = (int *******)(*pcVar5)(unaff_s5);
            goto LAB_00021d04;
          }
        }
        (*(code *)PTR_free_0003e354)(local_3c);
        if (bVar1) {
          (*(code *)PTR_free_0003e354)(local_70);
        }
        iVar13 = FUN_0001eb94(unaff_s5);
      }
      goto LAB_00021ed8;
    }
LAB_00021d04:
    unaff_s2 = (int *******)param_2[0x15];
    unaff_s3 = (int ******)((int)unaff_s0 * 8);
    ppppppiVar12 = *unaff_s2 + (int)unaff_s0 * 2;
    if ((*(byte *)(ppppppiVar12 + 1) & 8) == 0) {
      if (((uint)ppppppiVar12[1] & 0x800) == 0) {
        if (*(byte *)(ppppppiVar12 + 1) == 4) {
          ppppppiVar16 = (param_4 + ((int)*ppppppiVar12 + 1) * 2)[1];
          ppppppiVar12 = param_4[((int)*ppppppiVar12 + 1) * 2];
          unaff_s6 = (int *******)((int)ppppppiVar16 - (int)ppppppiVar12);
          if (unaff_s5 == (int **)0x0) {
            pppppppiVar17 = unaff_s0;
            if (unaff_s6 != (int *******)0x0) goto LAB_00021da8;
LAB_00021dd0:
            pppppppiVar17 = unaff_s0;
            iVar13 = (*pcVar7)(&local_44);
            if (iVar13 == 0) goto LAB_00021b34;
            pppppppiVar11 = (int *******)*unaff_s2[5][(int)unaff_s0 * 3 + 2];
            pppppppiVar17 = pppppppiVar11;
            iVar13 = (*pcVar6)(param_2[0x19][(int)local_48] + 1);
            if (iVar13 != 0) goto LAB_00021ca8;
            goto LAB_00021c18;
          }
          if ((ppppppiVar12 != (int ******)0xffffffff) && (ppppppiVar16 != (int ******)0xffffffff))
          {
            if (unaff_s6 == (int *******)0x0) goto LAB_00021dd0;
            pppppppiVar17 = (int *******)((int)param_2[1] + (int)local_48);
            pppppppiVar18 = unaff_s6;
            iVar13 = (*(code *)PTR_memcmp_0003e338)((int)param_2[1] + (int)ppppppiVar12);
            if (iVar13 == 0) goto LAB_00021da8;
          }
        }
        else {
LAB_00021c18:
          unaff_s6 = local_48;
          pppppppiVar17 = (int *******)(*unaff_s2 + (int)unaff_s0 * 2);
          pppppppiVar18 = local_48;
          iVar13 = FUN_0001c4f8(param_2);
          if (iVar13 != 0) {
            pppppppiVar11 = (int *******)unaff_s2[3][(int)unaff_s0];
            local_48 = (int *******)((int)unaff_s6 + 1);
            goto LAB_00021c5c;
          }
        }
      }
      else {
        pppppppiVar17 = unaff_s0;
        pppppppiVar18 = param_2;
        pppppppiVar19 = local_48;
        unaff_s6 = (int *******)FUN_000200a0(unaff_s2);
        if (unaff_s6 == (int *******)0x0) goto LAB_00021c18;
LAB_00021da8:
        pppppppiVar11 = (int *******)unaff_s2[3][(int)unaff_s0];
        local_48 = (int *******)((int)unaff_s6 + (int)local_48);
LAB_00021c5c:
        unaff_s6 = local_48;
        if (unaff_s5 == (int **)0x0) {
LAB_00021ca4:
          local_40 = 0;
          goto LAB_00021ca8;
        }
        unaff_s6 = (int *******)((int)local_48 * 4);
        if ((int)local_48 <= (int)param_2[0x17]) {
          unaff_s6 = (int *******)(param_2[0x19] + (int)local_48);
          pppppppiVar17 = pppppppiVar11;
          if ((*unaff_s6 != (int ******)0x0) && (iVar13 = (*pcVar6)(*unaff_s6 + 1), iVar13 != 0))
          goto LAB_00021ca4;
        }
      }
LAB_00021f3c:
      unaff_s0 = (int *******)0xffffffff;
      goto LAB_00021f44;
    }
    pppppiVar8 = param_2[0x19][(int)local_48];
    unaff_s2 = (int *******)(unaff_s2[5] + (int)unaff_s0 * 3);
    pppppppiVar17 = unaff_s0;
    iVar13 = (*pcVar7)(&local_44);
    if (iVar13 == 0) goto LAB_00021b34;
    unaff_s6 = (int *******)unaff_s2[1];
    if ((int)unaff_s6 < 1) goto LAB_00021f3c;
    unaff_s3 = unaff_s2[2];
    unaff_s2 = (int *******)0x0;
    unaff_s0 = (int *******)0xffffffff;
    do {
      pppppppiVar9 = (int *******)*unaff_s3;
      pppppppiVar17 = pppppppiVar9;
      iVar13 = (*pcVar6)(pppppiVar8 + 1);
      pppppppiVar11 = unaff_s0;
      if ((iVar13 != 0) &&
         (pppppppiVar17 = unaff_s0, pppppppiVar11 = pppppppiVar9,
         unaff_s0 != (int *******)0xffffffff)) {
        iVar13 = (*pcVar6)(&local_44);
        pppppppiVar4 = local_48;
        if ((iVar13 == 0) &&
           (pppppppiVar11 = unaff_s0, unaff_s6 = local_48, unaff_s5 != (int **)0x0)) {
          unaff_s2 = (int *******)*unaff_s5;
          *unaff_s5 = (int *)((int)unaff_s2 + 1);
          pppppppiVar17 = (int *******)unaff_s5[1];
          if ((int *******)((int)unaff_s2 + 1) == pppppppiVar17) {
            pppppppiVar17 = (int *******)((int)pppppppiVar17 * 0x30);
            piVar10 = (int *)(*(code *)PTR_realloc_0003e2fc)(unaff_s5[2]);
            unaff_s6 = pppppppiVar4;
            if (piVar10 == (int *)0x0) goto LAB_00021b34;
            unaff_s5[1] = (int *)((int)unaff_s5[1] << 1);
            unaff_s5[2] = piVar10;
          }
          unaff_s3 = (int ******)((int)unaff_s2 * 0x18);
          unaff_s5[2][(int)unaff_s2 * 6] = (int)pppppppiVar4;
          *(int ********)((int)unaff_s3 + (int)(unaff_s5[2] + 1)) = pppppppiVar9;
          unaff_s2 = (int *******)(unaff_s5[2] + (int)unaff_s2 * 6);
          ppppppiVar12 = (int ******)(*(code *)PTR_malloc_0003e2f8)(pppppppiVar15);
          unaff_s2[2] = ppppppiVar12;
          pppppppiVar18 = pppppppiVar15;
          unaff_s6 = pppppppiVar15;
          if (*(int *)((int)unaff_s3 + (int)(unaff_s5[2] + 2)) == 0) goto LAB_00021b34;
          (*(code *)PTR_memcpy_0003e34c)(*(int *)((int)unaff_s3 + (int)(unaff_s5[2] + 2)),param_4);
          pppppppiVar17 = &local_44;
          iVar13 = FUN_0001b67c((int *)((int)unaff_s3 + (int)(unaff_s5[2] + 3)));
          if (iVar13 != 0) goto LAB_00021b34;
        }
        break;
      }
      unaff_s2 = (int *******)((int)unaff_s2 + 1);
      unaff_s3 = unaff_s3 + 1;
      unaff_s0 = pppppppiVar11;
    } while (unaff_s6 != unaff_s2);
LAB_00021ca8:
    unaff_s0 = pppppppiVar11;
    if ((int)pppppppiVar11 < 0) {
LAB_00021f44:
      if (unaff_s0 == (int *******)&SUB_fffffffe) {
LAB_00021b34:
        (*(code *)PTR_free_0003e354)(local_3c);
        if (bVar1) {
          (*(code *)PTR_free_0003e354)(local_70);
        }
        FUN_0001eb94(unaff_s5);
        iVar13 = 0xc;
        goto LAB_00021ed8;
      }
      if (unaff_s5 == (int **)0x0) {
        (*(code *)PTR_free_0003e354)();
        if (bVar1) {
          (*(code *)PTR_free_0003e354)(local_70);
          iVar13 = 1;
        }
        else {
          iVar13 = 1;
        }
        goto LAB_00021ed8;
      }
      *(int ********)(puVar25 + 0x10) = &local_44;
      pppppppiVar17 = (int *******)&local_48;
      pppppppiVar18 = param_3;
      pppppppiVar19 = param_4;
      unaff_s0 = (int *******)(*pcVar5)(unaff_s5);
    }
  }
  (*(code *)PTR_free_0003e354)(local_3c);
  if (bVar1) {
    (*(code *)PTR_free_0003e354)(local_70);
  }
  iVar13 = FUN_0001eb94(unaff_s5);
LAB_00021ed8:
  if (local_2c == *(int *)PTR___stack_chk_guard_0003e348) {
    return iVar13;
  }
  pcVar5 = FUN_00021f9c;
  iVar13 = local_2c;
  puVar24 = PTR___stack_chk_fail_0003e32c;
  (*(code *)PTR___stack_chk_fail_0003e32c)();
  *(code **)(puVar26 + -4) = pcVar5;
  *(undefined1 **)(puVar26 + -8) = auStack_98;
  *(int **)(puVar26 + -0xc) = piVar23;
  *(int ********)(puVar26 + -0x10) = unaff_s6;
  *(int ***)(puVar26 + -0x14) = unaff_s5;
  *(int ********)(puVar26 + -0x18) = param_4;
  *(int *******)(puVar26 + -0x1c) = unaff_s3;
  *(int ********)(puVar26 + -0x20) = unaff_s2;
  *(int ********)(puVar26 + -0x24) = param_2;
  *(int ********)(puVar26 + -0x28) = unaff_s0;
  *(undefined **)(puVar26 + -0xc0) = puVar24 + 0x24174;
  *(int *)(puVar26 + -0xac) = iVar13;
  uVar27 = *(undefined4 *)(puVar26 + 0x14);
  *(undefined4 *)(puVar26 + -0x2c) = **(undefined4 **)(puVar24 + 0x1c3ac);
  *(int *******)(puVar26 + -0xb8) = *pppppppiVar17;
  if (*(byte *)(pppppppiVar18 + 1) < 0x25) {
                    /* WARNING: Could not recover jumptable at 0x00022020. Too many branches */
                    /* WARNING: Treating indirect jump as call */
    iVar13 = (*(code *)(puVar24 + 0x24174 +
                       *(int *)(*(int *)(puVar24 + 0x1c1ac) + -0x2ac0 +
                               (uint)*(byte *)(pppppppiVar18 + 1) * 4)))();
    return iVar13;
  }
  iVar13 = *(int *)(puVar26 + -0x2c);
  if (iVar13 == **(int **)(puVar24 + 0x1c3ac)) {
    return 0;
  }
  pcVar5 = *(code **)(puVar24 + 0x1c390);
  pcVar6 = FUN_00023824;
  pppppppiVar15 = pppppppiVar17;
  (*pcVar5)();
  *(code **)(puVar26 + -0xe4) = pcVar6;
  *(undefined4 *)(puVar26 + -0xe8) = uVar27;
  *(int **)(puVar26 + -0xec) = piVar23;
  *(undefined4 *)(puVar26 + -0xf0) = 0;
  *(int ***)(puVar26 + -0xf4) = unaff_s5;
  *(int ********)(puVar26 + -0xf8) = param_4;
  *(int *******)(puVar26 + -0xfc) = unaff_s3;
  *(int ********)(puVar26 + -0x100) = unaff_s2;
  *(int ********)(puVar26 + -0x104) = param_2;
  *(int ********)(puVar26 + -0x108) = pppppppiVar17;
  *(code **)(puVar26 + -0x118) = pcVar5 + 0x228ec;
  *(int *)(puVar26 + -0xe0) = iVar13;
  *(int ********)(puVar26 + -0xd4) = pppppppiVar19;
  iVar21 = *(int *)(puVar26 + -0xd0);
  piVar23 = *(int **)(puVar26 + -0xcc);
  *(int *******)(puVar26 + -0x110) = *pppppppiVar15;
  *(int **)(puVar26 + -0x11c) = piVar23;
  *(int *)(puVar26 + -0x120) = iVar21;
  iVar13 = FUN_00021f9c();
  if ((*piVar23 == 0) || (iVar13 != 0)) {
    iVar22 = *(int *)(*(int *)(puVar26 + -0x118) + -0x7ed8);
    *(int *)(puVar26 + -0x10c) = *(int *)(*(int *)(puVar26 + -0x118) + -0x7ed8) + -0x5cb8;
LAB_0002390c:
    do {
      do {
        iVar20 = iVar13;
        if ((*(byte *)(pppppppiVar18 + 1) & 0xf7) == 2) {
          return iVar20;
        }
        if ((iVar21 != 0) && (*(byte *)(pppppppiVar18 + 1) == 9)) {
          return iVar20;
        }
        *(int **)(puVar26 + -0x11c) = piVar23;
        *(int *)(puVar26 + -0x120) = iVar21;
        iVar14 = (*(code *)(iVar22 + 0x1f9c))
                           (*(undefined4 *)(puVar26 + -0xe0),pppppppiVar15,pppppppiVar18,
                            *(undefined4 *)(puVar26 + -0xd4));
        if (*piVar23 == 0) {
          iVar13 = iVar14;
          iVar2 = iVar20;
          iVar3 = iVar14;
          if (iVar20 == 0) goto LAB_0002390c;
        }
        else {
          iVar2 = iVar14;
          iVar3 = iVar20;
          if (iVar14 == 0) {
            if (iVar20 == 0) {
              return 0;
            }
            FUN_0001920c(iVar20,*(int *)(*(int *)(puVar26 + -0x118) + -0x7ed8) + -0x2cc0,0);
            return 0;
          }
        }
        iVar13 = iVar2;
      } while (iVar3 == 0);
      iVar13 = (**(code **)(puVar26 + -0x10c))(*(undefined4 *)(puVar26 + -0x110),iVar20,iVar14,0x10)
      ;
    } while (iVar13 != 0);
    iVar13 = *(int *)(*(int *)(puVar26 + -0x118) + -0x7ed8);
    FUN_0001920c(iVar14,iVar13 + -0x2cc0,0);
    FUN_0001920c(iVar20,iVar13 + -0x2cc0,0);
    *piVar23 = 0xc;
    iVar13 = 0;
  }
  return iVar13;
}


lui gp,0x2
addiu gp,gp,0x4a5c
addu gp,gp,t9
addiu sp,sp,-0x98
sw ra,0x94(sp)
sw s8,0x90(sp)
sw s7,0x8c(sp)
sw s6,0x88(sp)
sw s5,0x84(sp)
sw s4,0x80(sp)
sw s3,0x7c(sp)
sw s2,0x78(sp)
sw s1,0x74(sp)
sw s0,0x70(sp)
or s8,sp,zero
sw gp,0x18(sp)
or s1,a1,zero
sw a2,0xa0(s8)
or s4,a3,zero
lbu v0,0xab(s8)
lw v1,-0x7dc8(gp)
lw v1,0x0(v1)
sw v1,0x6c(s8)
lw s7,0x0(a0)
sw zero,0x60(s8)
li v1,0x2
sw v1,0x64(s8)
beq v0,zero,0x000217c8
_sw zero,0x68(s8)
li a0,0x30
lw t9,-0x7e18(gp)
jalr t9
_nop
lw gp,0x18(s8)
beq v0,zero,0x00021f34
_sw v0,0x68(s8)
addiu s5,s8,0x60
lw s0,0x48(s7)
sw zero,0x54(s8)
sw zero,0x58(s8)
sw zero,0x5c(s8)
lw v0,0xa0(s8)
sll v1,v0,0x3
sltiu v0,v1,0xfc0
beq v0,zero,0x000217d0
_sw v1,0x30(s8)
subu sp,sp,v1
addiu v0,sp,0x18
sw v0,0x28(s8)
sw zero,0x24(s8)
lw a2,0x30(s8)
or a1,s4,zero
lw a0,0x28(s8)
lw t9,-0x7dc4(gp)
jalr t9
_nop
lw gp,0x18(s8)
lw v0,0x0(s4)
sw v0,0x50(s8)
lw v0,-0x7ed8(gp)
addiu v0,v0,-0x10e8
sw v0,0x2c(s8)
lw v0,-0x7ed8(gp)
addiu v0,v0,-0x6f00
sw v0,0x44(s8)
lw v0,-0x7ed8(gp)
addiu v0,v0,-0x589c
b 0x00021f7c
_sw v0,0x38(s8)
b 0x00021748
_or s5,zero,zero
lw a0,0x30(s8)
lw t9,-0x7e18(gp)
jalr t9
_nop
lw gp,0x18(s8)
sw v0,0x28(s8)
li v1,0x1
bne v0,zero,0x0002177c
_sw v1,0x24(s8)
or a0,s5,zero
lw t9,-0x7ed8(gp)
addiu t9,t9,-0x146c
bal 0x0001eb94
_nop
lw gp,0x18(s8)
b 0x00021ed8
_li v0,0xc
lw v0,0x0(v0)
addiu v0,v0,0x1
lw v1,0xa0(s8)
slt v1,v0,v1
beq v1,zero,0x00021cec
_sll v0,v0,0x3
addu v0,s4,v0
sw s2,0x0(v0)
li v1,-0x1
b 0x00021cec
_sw v1,0x4(v0)
lw v1,0x0(v0)
addiu v1,v1,0x1
slt a0,v1,a0
beq a0,zero,0x00021cec
_sll v1,v1,0x3
addu a1,s4,v1
lw a0,0x0(a1)
slt a0,a0,s2
bne a0,zero,0x00021894
_lw t9,-0x7dc4(gp)
lw v0,0x4(v0)
andi v0,v0,0x1000
beq v0,zero,0x0002188c
_li v0,-0x1
lw a0,0x28(s8)
addu v1,a0,v1
lw v1,0x0(v1)
bne v1,v0,0x000218b8
_lw a2,0x30(s8)
b 0x00021cec
_sw s2,0x4(a1)
sw s2,0x4(a1)
lw a2,0x30(s8)
or a1,s4,zero
lw a0,0x28(s8)
jalr t9
_nop
lw gp,0x18(s8)
b 0x00021cf0
_lw v0,0x4(s4)
or a1,a0,zero
or a0,s4,zero
lw t9,-0x7dc4(gp)
jalr t9
_nop
lw gp,0x18(s8)
b 0x00021cf0
_lw v0,0x4(s4)
beq s5,zero,0x000219b0
_lw v0,0xa0(s8)
beq v0,zero,0x00021958
_or v1,s4,zero
or v0,zero,zero
b 0x00021908
_li a2,-0x1
addiu v0,v0,0x1
or a0,v0,zero
lw a1,0x48(s8)
beq a1,v0,0x00021920
_addiu v1,v1,0x8
lw a1,0x0(v1)
bltz a1,0x000218f4
_or a0,v0,zero
lw a1,0x4(v1)
bne a1,a2,0x000218f8
_addiu v0,v0,0x1
lw v0,0xa0(s8)
beq a0,v0,0x00021958
_addiu v0,s8,0x54
sw v0,0x10(sp)
or a3,s4,zero
lw a2,0xa0(s8)
addiu a1,s8,0x50
or a0,s5,zero
lw t9,0x2c(s8)
jalr t9
_nop
lw gp,0x18(s8)
b 0x00021d04
_or s0,v0,zero
lw a0,0x5c(s8)
lw t9,-0x7dbc(gp)
jalr t9
_nop
lw gp,0x18(s8)
lw v0,0x24(s8)
bne v0,zero,0x00021998
_lw a0,0x28(s8)
or a0,s5,zero
lw t9,-0x7ed8(gp)
addiu t9,t9,-0x146c
bal 0x0001eb94
_nop
lw gp,0x18(s8)
b 0x00021ed8
_nop
lw t9,-0x7dbc(gp)
jalr t9
_nop
lw gp,0x18(s8)
b 0x0002197c
_or a0,s5,zero
lw a0,0x5c(s8)
lw t9,-0x7dbc(gp)
jalr t9
_nop
lw gp,0x18(s8)
lw v0,0x24(s8)
bne v0,zero,0x000219d8
_lw a0,0x28(s8)
b 0x00021ed8
_or v0,zero,zero
lw t9,-0x7dbc(gp)
jalr t9
_nop
lw gp,0x18(s8)
b 0x00021ed8
_or v0,zero,zero
lw v0,0x64(s1)
sll v1,v1,0x2
addu v0,v0,v1
lw v0,0x0(v0)
addiu v0,v0,0x4
sw v0,0x40(s8)
sll v0,s0,0x1
addu v0,v0,s0
sll v0,v0,0x2
lw s2,0x14(s2)
addu s2,s2,v0
or a1,s0,zero
addiu a0,s8,0x54
lw t9,0x38(s8)
jalr t9
_nop
lw gp,0x18(s8)
beq v0,zero,0x00021b34
_lw a0,0x5c(s8)
lw s6,0x4(s2)
blez s6,0x00021f3c
_li s0,-0x1
lw s3,0x8(s2)
b 0x00021bb4
_or s2,zero,zero
addiu a0,s8,0x54
lw t9,0x44(s8)
jalr t9
_nop
lw gp,0x18(s8)
bne v0,zero,0x00021e44
_nop
beq s5,zero,0x00021ca8
_lw s6,0x50(s8)
lw s2,0x0(s5)
addiu v0,s2,0x1
sw v0,0x0(s5)
lw a1,0x4(s5)
beq v0,a1,0x00021b70
_sll v0,a1,0x1
sll s3,s2,0x1
addu s3,s3,s2
sll s3,s3,0x3
lw v0,0x8(s5)
addu v0,v0,s3
sw s6,0x0(v0)
lw v0,0x8(s5)
addu v0,v0,s3
lw v1,0x4c(s8)
sw v1,0x4(v0)
lw s2,0x8(s5)
addu s2,s2,s3
lw s6,0x30(s8)
or a0,s6,zero
lw t9,-0x7e18(gp)
jalr t9
_nop
lw gp,0x18(s8)
sw v0,0x8(s2)
lw v0,0x8(s5)
addu v0,v0,s3
lw a0,0x8(v0)
beq a0,zero,0x00021b30
_or a2,s6,zero
or a1,s4,zero
lw t9,-0x7dc4(gp)
jalr t9
_nop
lw gp,0x18(s8)
lw a0,0x8(s5)
addu a0,a0,s3
addiu a1,s8,0x54
addiu a0,a0,0xc
lw t9,-0x7ed8(gp)
addiu t9,t9,-0x4984
bal 0x0001b67c
_nop
lw gp,0x18(s8)
beq v0,zero,0x00021ca8
_nop
lw a0,0x5c(s8)
lw t9,-0x7dbc(gp)
jalr t9
_nop
lw gp,0x18(s8)
lw v0,0x24(s8)
bne v0,zero,0x00021e4c
_lw a0,0x28(s8)
or a0,s5,zero
lw t9,-0x7ed8(gp)
addiu t9,t9,-0x146c
bal 0x0001eb94
_nop
lw gp,0x18(s8)
b 0x00021ed8
_li v0,0xc
addu a1,v0,a1
sll a1,a1,0x4
lw a0,0x8(s5)
lw t9,-0x7e14(gp)
jalr t9
_nop
lw gp,0x18(s8)
beq v0,zero,0x00021b34
_lw a0,0x5c(s8)
lw v1,0x4(s5)
sll v1,v1,0x1
sw v1,0x4(s5)
b 0x00021a90
_sw v0,0x8(s5)
addiu s2,s2,0x1
beq s6,s2,0x00021ca8
_addiu s3,s3,0x4
lw v0,0x0(s3)
sw v0,0x4c(s8)
or a1,v0,zero
lw a0,0x40(s8)
lw t9,0x44(s8)
jalr t9
_nop
lw gp,0x18(s8)
beq v0,zero,0x00021ba8
_li v0,-0x1
bne s0,v0,0x00021a54
_or a1,s0,zero
b 0x00021ba8
_lw s0,0x4c(s8)
lw a3,0x50(s8)
or a2,s1,zero
or a1,s0,zero
or a0,s2,zero
lw v0,0x34(s8)
addiu t9,v0,0xa0
bal 0x000200a0
_nop
lw gp,0x18(s8)
bne v0,zero,0x00021da8
_or s6,v0,zero
lw s6,0x50(s8)
lw a1,0x0(s2)
or a2,s6,zero
addu a1,a1,s3
or a0,s1,zero
lw v0,0x3c(s8)
addiu t9,v0,-0x3b08
bal 0x0001c4f8
_nop
lw gp,0x18(s8)
beq v0,zero,0x00021f3c
_lw v1,0x4c(s8)
lw v0,0xc(s2)
sll v1,v1,0x2
addu v0,v0,v1
lw s0,0x0(v0)
addiu s6,s6,0x1
beq s5,zero,0x00021ca4
_sw s6,0x50(s8)
lw v0,0x5c(s1)
slt v0,v0,s6
bne v0,zero,0x00021f3c
_sll s6,s6,0x2
lw v0,0x64(s1)
addu s6,v0,s6
lw a0,0x0(s6)
beq a0,zero,0x00021f3c
_or a1,s0,zero
addiu a0,a0,0x4
lw t9,0x44(s8)
jalr t9
_nop
lw gp,0x18(s8)
beq v0,zero,0x00021f3c
_nop
sw zero,0x58(s8)
bltz s0,0x00021f44
_li v0,-0x2
lw s2,0x50(s8)
lw v0,0x4(s4)
slt v0,v0,s2
bne v0,zero,0x00021ea0
_lw v0,0xa0(s8)
sw v0,0x48(s8)
sll v0,s0,0x3
lw v1,0x0(s7)
addu v0,v1,v0
lbu v1,0x4(v0)
li a0,0x8
beq v1,a0,0x00021814
_li a0,0x9
beq v1,a0,0x00021840
_lw a0,0xa0(s8)
lw v0,0x4(s4)
bne v0,s2,0x00021d04
_nop
lw v0,0x60(s1)
beq v0,s0,0x000218d8
_nop
lw s2,0x54(s1)
sw s0,0x4c(s8)
sll s3,s0,0x3
lw v0,0x0(s2)
addu v0,v0,s3
lbu a0,0x4(v0)
andi v1,a0,0x8
bne v1,zero,0x000219f0
_lw v1,0x50(s8)
lw v1,0x4(v0)
andi v1,v1,0x800
bne v1,zero,0x00021bec
_li v1,0x4
bne a0,v1,0x00021c18
_nop
lw v0,0x0(v0)
addiu v0,v0,0x1
sll v0,v0,0x3
addu v0,s4,v0
lw v1,0x4(v0)
lw v0,0x0(v0)
beq s5,zero,0x00021dc8
_subu s6,v1,v0
li a0,-0x1
beq v0,a0,0x00021f3c
_nop
beq v1,a0,0x00021f3c
_nop
beq s6,zero,0x00021dd0
_or a1,s0,zero
lw a0,0x4(s1)
or a2,s6,zero
lw a1,0x50(s8)
addu a1,a0,a1
addu a0,a0,v0
lw t9,-0x7dd8(gp)
jalr t9
_nop
lw gp,0x18(s8)
bne v0,zero,0x00021f3c
_nop
lw v1,0xc(s2)
lw v0,0x4c(s8)
sll v0,v0,0x2
addu v0,v1,v0
lw s0,0x0(v0)
lw v0,0x50(s8)
b 0x00021c5c
_addu s6,s6,v0
bne s6,zero,0x00021da8
_or a1,s0,zero
addiu a0,s8,0x54
lw t9,0x38(s8)
jalr t9
_nop
lw gp,0x18(s8)
beq v0,zero,0x00021b30
_lw a0,0x4c(s8)
lw v1,0x14(s2)
sll v0,a0,0x1
addu v0,v0,a0
sll v0,v0,0x2
addu v0,v1,v0
lw v0,0x8(v0)
lw s0,0x0(v0)
lw v0,0x64(s1)
lw v1,0x50(s8)
sll v1,v1,0x2
addu v0,v0,v1
lw a0,0x0(v0)
or a1,s0,zero
addiu a0,a0,0x4
lw t9,0x44(s8)
jalr t9
_nop
lw gp,0x18(s8)
beq v0,zero,0x00021c18
_nop
b 0x00021ca8
_nop
b 0x00021ca8
_lw s0,0x4c(s8)
lw t9,-0x7dbc(gp)
jalr t9
_nop
lw gp,0x18(s8)
b 0x00021b54
_or a0,s5,zero
lw t9,-0x7dbc(gp)
jalr t9
_nop
lw gp,0x18(s8)
lw v0,0x24(s8)
bne v0,zero,0x00021e88
_lw a0,0x28(s8)
b 0x00021ed8
_li v0,0x1
lw t9,-0x7dbc(gp)
jalr t9
_nop
lw gp,0x18(s8)
b 0x00021ed8
_li v0,0x1
lw a0,0x5c(s8)
lw t9,-0x7dbc(gp)
jalr t9
_nop
lw gp,0x18(s8)
lw v0,0x24(s8)
bne v0,zero,0x00021f1c
_lw a0,0x28(s8)
or a0,s5,zero
lw t9,-0x7ed8(gp)
addiu t9,t9,-0x146c
bal 0x0001eb94
_nop
lw gp,0x18(s8)
lw a0,0x6c(s8)
lw v1,-0x7dc8(gp)
lw v1,0x0(v1)
bne a0,v1,0x00021f90
_lw ra,0x94(s8)
or sp,s8,zero
lw s8,0x90(sp)
lw s7,0x8c(sp)
lw s6,0x88(sp)
lw s5,0x84(sp)
lw s4,0x80(sp)
lw s3,0x7c(sp)
lw s2,0x78(sp)
lw s1,0x74(sp)
lw s0,0x70(sp)
jr ra
_addiu sp,sp,0x98
lw t9,-0x7dbc(gp)
jalr t9
_nop
lw gp,0x18(s8)
b 0x00021ec4
_or a0,s5,zero
b 0x00021ed8
_li v0,0xc
li s0,-0x1
li v0,-0x2
beq s0,v0,0x00021b34
_lw a0,0x5c(s8)
beq s5,zero,0x00021e64
_addiu v0,s8,0x54
sw v0,0x10(sp)
or a3,s4,zero
lw a2,0x48(s8)
addiu a1,s8,0x50
or a0,s5,zero
lw t9,0x2c(s8)
jalr t9
_nop
lw gp,0x18(s8)
or s0,v0,zero
lw v0,-0x7ed8(gp)
sw v0,0x3c(s8)
lw v0,-0x7ed8(gp)
b 0x00021cb0
_sw v0,0x34(s8)
lw t9,-0x7de4(gp)
jalr t9
_nop
(translation_unit "/* WARNING: Type propagation algorithm not settling */\n\nint FUN_000216b4(undefined4 *param_1,int *******param_2,int *******param_3,int *******param_4,\n                char param_5)\n\n{\n  bool bVar1;\n  int iVar2;\n  int iVar3;\n  int *******pppppppiVar4;\n  code *pcVar5;\n  code *pcVar6;\n  code *pcVar7;\n  int *****pppppiVar8;\n  int *******pppppppiVar9;\n  int *piVar10;\n  int *******pppppppiVar11;\n  int ******ppppppiVar12;\n  int iVar13;\n  int iVar14;\n  int *******pppppppiVar15;\n  int ******ppppppiVar16;\n  int *******pppppppiVar17;\n  int *******pppppppiVar18;\n  int *******pppppppiVar19;\n  int *******unaff_s0;\n  int *******unaff_s2;\n  int iVar20;\n  int ******unaff_s3;\n  int iVar21;\n  int **unaff_s5;\n  int iVar22;\n  int *******unaff_s6;\n  int *piVar23;\n  undefined *puVar24;\n  undefined1 *puVar25;\n  undefined1 *puVar26;\n  undefined4 uVar27;\n  undefined1 auStack_98 [24];\n  int *******local_70;\n  int *******local_48;\n  int ******local_44;\n  undefined4 local_40;\n  undefined4 local_3c;\n  int *local_38;\n  undefined4 local_34;\n  int local_30;\n  int local_2c;\n  \n  puVar25 = auStack_98;\n  puVar26 = auStack_98;\n  local_2c = *(int *)PTR___stack_chk_guard_0003e348;\n  piVar23 = (int *)*param_1;\n  local_38 = (int *)0x0;\n  local_34 = 2;\n  local_30 = 0;\n  pppppppiVar17 = param_2;\n  pppppppiVar18 = param_3;\n  pppppppiVar19 = param_4;\n  if (param_5 == '\0') {\n    unaff_s5 = (int **)0x0;\n  }\n  else {\n    local_30 = (*(code *)PTR_malloc_0003e2f8)(0x30);\n    if (local_30 == 0) {\n      iVar13 = 0xc;\n      goto LAB_00021ed8;\n    }\n    unaff_s5 = &local_38;\n  }\n  unaff_s0 = (int *******)piVar23[0x12];\n  local_44 = (int ******)0x0;\n  local_40 = 0;\n  local_3c = 0;\n  pppppppiVar15 = (int *******)((int)param_3 * 8);\n  if (pppppppiVar15 < (int *******)0xfc0) {\n    puVar25 = auStack_98 + (int)param_3 * -8;\n    local_70 = (int *******)(&stack0xffffff80 + (int)param_3 * -8);\n    bVar1 = false;\n  }\n  else {\n    local_70 = (int *******)(*(code *)PTR_malloc_0003e2f8)(pppppppiVar15);\n    bVar1 = true;\n    if (local_70 == (int *******)0x0) {\n      FUN_0001eb94(unaff_s5);\n      iVar13 = 0xc;\n      puVar26 = auStack_98;\n      goto LAB_00021ed8;\n    }\n  }\n  pppppppiVar17 = param_4;\n  pppppppiVar18 = pppppppiVar15;\n  (*(code *)PTR_memcpy_0003e34c)(local_70);\n  local_48 = (int *******)*param_4;\n  pcVar5 = (code *)(PTR_DAT_0003e238 + -0x10e8);\n  pcVar6 = (code *)(PTR_DAT_0003e238 + -0x6f00);\n  pcVar7 = (code *)(PTR_DAT_0003e238 + -0x589c);\n  while (unaff_s2 = local_48, puVar24 = PTR_memcpy_0003e34c, puVar26 = puVar25,\n        (int)local_48 <= (int)param_4[1]) {\n    piVar10 = (int *)(*piVar23 + (int)unaff_s0 * 8);\n    if (*(char *)(piVar10 + 1) == '\b') {\n      iVar13 = *piVar10;\n      if (iVar13 + 1 < (int)param_3) {\n        param_4[(iVar13 + 1) * 2] = (int ******)local_48;\n        (param_4 + (iVar13 + 1) * 2)[1] = (int ******)0xffffffff;\n      }\nLAB_00021cec:\n      pppppppiVar11 = (int *******)param_4[1];\n    }\n    else {\n      if ((*(char *)(piVar10 + 1) != '\t') || (iVar13 = *piVar10 + 1, (int)param_3 <= iVar13))\n      goto LAB_00021cec;\n      pppppppiVar17 = param_4 + iVar13 * 2;\n      if ((int)*pppppppiVar17 < (int)local_48) {\n        pppppppiVar17[1] = (int ******)local_48;\n        pppppppiVar17 = param_4;\n        pppppppiVar18 = pppppppiVar15;\n        (*(code *)puVar24)(local_70);\n        pppppppiVar11 = (int *******)param_4[1];\n      }\n      else {\n        if (((piVar10[1] & 0x1000U) == 0) ||\n           (pppppppiVar18 = pppppppiVar15, local_70[iVar13 * 2] == (int ******)0xffffffff)) {\n          pppppppiVar17[1] = (int ******)local_48;\n          goto LAB_00021cec;\n        }\n        pppppppiVar17 = local_70;\n        (*(code *)PTR_memcpy_0003e34c)(param_4);\n        pppppppiVar11 = (int *******)param_4[1];\n      }\n    }\n    if ((pppppppiVar11 == unaff_s2) && ((int *******)param_2[0x18] == unaff_s0)) {\n      if (unaff_s5 == (int **)0x0) {\n        (*(code *)PTR_free_0003e354)(local_3c);\n        if (bVar1) {\n          (*(code *)PTR_free_0003e354)(local_70);\n          iVar13 = 0;\n        }\n        else {\n          iVar13 = 0;\n        }\n      }\n      else {\n        if (param_3 != (int *******)0x0) {\n          pppppppiVar9 = (int *******)0x0;\n          pppppppiVar18 = (int *******)0xffffffff;\n          pppppppiVar11 = param_4;\n          do {\n            if ((-1 < (int)*pppppppiVar11) &&\n               (pppppppiVar17 = (int *******)pppppppiVar11[1],\n               (int *******)pppppppiVar11[1] == (int *******)0xffffffff)) break;\n            pppppppiVar9 = (int *******)((int)pppppppiVar9 + 1);\n            pppppppiVar11 = pppppppiVar11 + 2;\n            pppppppiVar17 = param_3;\n          } while (param_3 != pppppppiVar9);\n          if (pppppppiVar9 != param_3) {\n            *(int ********)(puVar25 + 0x10) = &local_44;\n            pppppppiVar17 = (int *******)&local_48;\n            pppppppiVar18 = param_3;\n            pppppppiVar19 = param_4;\n            unaff_s0 = (int *******)(*pcVar5)(unaff_s5);\n            goto LAB_00021d04;\n          }\n        }\n        (*(code *)PTR_free_0003e354)(local_3c);\n        if (bVar1) {\n          (*(code *)PTR_free_0003e354)(local_70);\n        }\n        iVar13 = FUN_0001eb94(unaff_s5);\n      }\n      goto LAB_00021ed8;\n    }\nLAB_00021d04:\n    unaff_s2 = (int *******)param_2[0x15];\n    unaff_s3 = (int ******)((int)unaff_s0 * 8);\n    ppppppiVar12 = *unaff_s2 + (int)unaff_s0 * 2;\n    if ((*(byte *)(ppppppiVar12 + 1) & 8) == 0) {\n      if (((uint)ppppppiVar12[1] & 0x800) == 0) {\n        if (*(byte *)(ppppppiVar12 + 1) == 4) {\n          ppppppiVar16 = (param_4 + ((int)*ppppppiVar12 + 1) * 2)[1];\n          ppppppiVar12 = param_4[((int)*ppppppiVar12 + 1) * 2];\n          unaff_s6 = (int *******)((int)ppppppiVar16 - (int)ppppppiVar12);\n          if (unaff_s5 == (int **)0x0) {\n            pppppppiVar17 = unaff_s0;\n            if (unaff_s6 != (int *******)0x0) goto LAB_00021da8;\nLAB_00021dd0:\n            pppppppiVar17 = unaff_s0;\n            iVar13 = (*pcVar7)(&local_44);\n            if (iVar13 == 0) goto LAB_00021b34;\n            pppppppiVar11 = (int *******)*unaff_s2[5][(int)unaff_s0 * 3 + 2];\n            pppppppiVar17 = pppppppiVar11;\n            iVar13 = (*pcVar6)(param_2[0x19][(int)local_48] + 1);\n            if (iVar13 != 0) goto LAB_00021ca8;\n            goto LAB_00021c18;\n          }\n          if ((ppppppiVar12 != (int ******)0xffffffff) && (ppppppiVar16 != (int ******)0xffffffff))\n          {\n            if (unaff_s6 == (int *******)0x0) goto LAB_00021dd0;\n            pppppppiVar17 = (int *******)((int)param_2[1] + (int)local_48);\n            pppppppiVar18 = unaff_s6;\n            iVar13 = (*(code *)PTR_memcmp_0003e338)((int)param_2[1] + (int)ppppppiVar12);\n            if (iVar13 == 0) goto LAB_00021da8;\n          }\n        }\n        else {\nLAB_00021c18:\n          unaff_s6 = local_48;\n          pppppppiVar17 = (int *******)(*unaff_s2 + (int)unaff_s0 * 2);\n          pppppppiVar18 = local_48;\n          iVar13 = FUN_0001c4f8(param_2);\n          if (iVar13 != 0) {\n            pppppppiVar11 = (int *******)unaff_s2[3][(int)unaff_s0];\n            local_48 = (int *******)((int)unaff_s6 + 1);\n            goto LAB_00021c5c;\n          }\n        }\n      }\n      else {\n        pppppppiVar17 = unaff_s0;\n        pppppppiVar18 = param_2;\n        pppppppiVar19 = local_48;\n        unaff_s6 = (int *******)FUN_000200a0(unaff_s2);\n        if (unaff_s6 == (int *******)0x0) goto LAB_00021c18;\nLAB_00021da8:\n        pppppppiVar11 = (int *******)unaff_s2[3][(int)unaff_s0];\n        local_48 = (int *******)((int)unaff_s6 + (int)local_48);\nLAB_00021c5c:\n        unaff_s6 = local_48;\n        if (unaff_s5 == (int **)0x0) {\nLAB_00021ca4:\n          local_40 = 0;\n          goto LAB_00021ca8;\n        }\n        unaff_s6 = (int *******)((int)local_48 * 4);\n        if ((int)local_48 <= (int)param_2[0x17]) {\n          unaff_s6 = (int *******)(param_2[0x19] + (int)local_48);\n          pppppppiVar17 = pppppppiVar11;\n          if ((*unaff_s6 != (int ******)0x0) && (iVar13 = (*pcVar6)(*unaff_s6 + 1), iVar13 != 0))\n          goto LAB_00021ca4;\n        }\n      }\nLAB_00021f3c:\n      unaff_s0 = (int *******)0xffffffff;\n      goto LAB_00021f44;\n    }\n    pppppiVar8 = param_2[0x19][(int)local_48];\n    unaff_s2 = (int *******)(unaff_s2[5] + (int)unaff_s0 * 3);\n    pppppppiVar17 = unaff_s0;\n    iVar13 = (*pcVar7)(&local_44);\n    if (iVar13 == 0) goto LAB_00021b34;\n    unaff_s6 = (int *******)unaff_s2[1];\n    if ((int)unaff_s6 < 1) goto LAB_00021f3c;\n    unaff_s3 = unaff_s2[2];\n    unaff_s2 = (int *******)0x0;\n    unaff_s0 = (int *******)0xffffffff;\n    do {\n      pppppppiVar9 = (int *******)*unaff_s3;\n      pppppppiVar17 = pppppppiVar9;\n      iVar13 = (*pcVar6)(pppppiVar8 + 1);\n      pppppppiVar11 = unaff_s0;\n      if ((iVar13 != 0) &&\n         (pppppppiVar17 = unaff_s0, pppppppiVar11 = pppppppiVar9,\n         unaff_s0 != (int *******)0xffffffff)) {\n        iVar13 = (*pcVar6)(&local_44);\n        pppppppiVar4 = local_48;\n        if ((iVar13 == 0) &&\n           (pppppppiVar11 = unaff_s0, unaff_s6 = local_48, unaff_s5 != (int **)0x0)) {\n          unaff_s2 = (int *******)*unaff_s5;\n          *unaff_s5 = (int *)((int)unaff_s2 + 1);\n          pppppppiVar17 = (int *******)unaff_s5[1];\n          if ((int *******)((int)unaff_s2 + 1) == pppppppiVar17) {\n            pppppppiVar17 = (int *******)((int)pppppppiVar17 * 0x30);\n            piVar10 = (int *)(*(code *)PTR_realloc_0003e2fc)(unaff_s5[2]);\n            unaff_s6 = pppppppiVar4;\n            if (piVar10 == (int *)0x0) goto LAB_00021b34;\n            unaff_s5[1] = (int *)((int)unaff_s5[1] << 1);\n            unaff_s5[2] = piVar10;\n          }\n          unaff_s3 = (int ******)((int)unaff_s2 * 0x18);\n          unaff_s5[2][(int)unaff_s2 * 6] = (int)pppppppiVar4;\n          *(int ********)((int)unaff_s3 + (int)(unaff_s5[2] + 1)) = pppppppiVar9;\n          unaff_s2 = (int *******)(unaff_s5[2] + (int)unaff_s2 * 6);\n          ppppppiVar12 = (int ******)(*(code *)PTR_malloc_0003e2f8)(pppppppiVar15);\n          unaff_s2[2] = ppppppiVar12;\n          pppppppiVar18 = pppppppiVar15;\n          unaff_s6 = pppppppiVar15;\n          if (*(int *)((int)unaff_s3 + (int)(unaff_s5[2] + 2)) == 0) goto LAB_00021b34;\n          (*(code *)PTR_memcpy_0003e34c)(*(int *)((int)unaff_s3 + (int)(unaff_s5[2] + 2)),param_4);\n          pppppppiVar17 = &local_44;\n          iVar13 = FUN_0001b67c((int *)((int)unaff_s3 + (int)(unaff_s5[2] + 3)));\n          if (iVar13 != 0) goto LAB_00021b34;\n        }\n        break;\n      }\n      unaff_s2 = (int *******)((int)unaff_s2 + 1);\n      unaff_s3 = unaff_s3 + 1;\n      unaff_s0 = pppppppiVar11;\n    } while (unaff_s6 != unaff_s2);\nLAB_00021ca8:\n    unaff_s0 = pppppppiVar11;\n    if ((int)pppppppiVar11 < 0) {\nLAB_00021f44:\n      if (unaff_s0 == (int *******)&SUB_fffffffe) {\nLAB_00021b34:\n        (*(code *)PTR_free_0003e354)(local_3c);\n        if (bVar1) {\n          (*(code *)PTR_free_0003e354)(local_70);\n        }\n        FUN_0001eb94(unaff_s5);\n        iVar13 = 0xc;\n        goto LAB_00021ed8;\n      }\n      if (unaff_s5 == (int **)0x0) {\n        (*(code *)PTR_free_0003e354)();\n        if (bVar1) {\n          (*(code *)PTR_free_0003e354)(local_70);\n          iVar13 = 1;\n        }\n        else {\n          iVar13 = 1;\n        }\n        goto LAB_00021ed8;\n      }\n      *(int ********)(puVar25 + 0x10) = &local_44;\n      pppppppiVar17 = (int *******)&local_48;\n      pppppppiVar18 = param_3;\n      pppppppiVar19 = param_4;\n      unaff_s0 = (int *******)(*pcVar5)(unaff_s5);\n    }\n  }\n  (*(code *)PTR_free_0003e354)(local_3c);\n  if (bVar1) {\n    (*(code *)PTR_free_0003e354)(local_70);\n  }\n  iVar13 = FUN_0001eb94(unaff_s5);\nLAB_00021ed8:\n  if (local_2c == *(int *)PTR___stack_chk_guard_0003e348) {\n    return iVar13;\n  }\n  pcVar5 = FUN_00021f9c;\n  iVar13 = local_2c;\n  puVar24 = PTR___stack_chk_fail_0003e32c;\n  (*(code *)PTR___stack_chk_fail_0003e32c)();\n  *(code **)(puVar26 + -4) = pcVar5;\n  *(undefined1 **)(puVar26 + -8) = auStack_98;\n  *(int **)(puVar26 + -0xc) = piVar23;\n  *(int ********)(puVar26 + -0x10) = unaff_s6;\n  *(int ***)(puVar26 + -0x14) = unaff_s5;\n  *(int ********)(puVar26 + -0x18) = param_4;\n  *(int *******)(puVar26 + -0x1c) = unaff_s3;\n  *(int ********)(puVar26 + -0x20) = unaff_s2;\n  *(int ********)(puVar26 + -0x24) = param_2;\n  *(int ********)(puVar26 + -0x28) = unaff_s0;\n  *(undefined **)(puVar26 + -0xc0) = puVar24 + 0x24174;\n  *(int *)(puVar26 + -0xac) = iVar13;\n  uVar27 = *(undefined4 *)(puVar26 + 0x14);\n  *(undefined4 *)(puVar26 + -0x2c) = **(undefined4 **)(puVar24 + 0x1c3ac);\n  *(int *******)(puVar26 + -0xb8) = *pppppppiVar17;\n  if (*(byte *)(pppppppiVar18 + 1) < 0x25) {\n                    /* WARNING: Could not recover jumptable at 0x00022020. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n    iVar13 = (*(code *)(puVar24 + 0x24174 +\n                       *(int *)(*(int *)(puVar24 + 0x1c1ac) + -0x2ac0 +\n                               (uint)*(byte *)(pppppppiVar18 + 1) * 4)))();\n    return iVar13;\n  }\n  iVar13 = *(int *)(puVar26 + -0x2c);\n  if (iVar13 == **(int **)(puVar24 + 0x1c3ac)) {\n    return 0;\n  }\n  pcVar5 = *(code **)(puVar24 + 0x1c390);\n  pcVar6 = FUN_00023824;\n  pppppppiVar15 = pppppppiVar17;\n  (*pcVar5)();\n  *(code **)(puVar26 + -0xe4) = pcVar6;\n  *(undefined4 *)(puVar26 + -0xe8) = uVar27;\n  *(int **)(puVar26 + -0xec) = piVar23;\n  *(undefined4 *)(puVar26 + -0xf0) = 0;\n  *(int ***)(puVar26 + -0xf4) = unaff_s5;\n  *(int ********)(puVar26 + -0xf8) = param_4;\n  *(int *******)(puVar26 + -0xfc) = unaff_s3;\n  *(int ********)(puVar26 + -0x100) = unaff_s2;\n  *(int ********)(puVar26 + -0x104) = param_2;\n  *(int ********)(puVar26 + -0x108) = pppppppiVar17;\n  *(code **)(puVar26 + -0x118) = pcVar5 + 0x228ec;\n  *(int *)(puVar26 + -0xe0) = iVar13;\n  *(int ********)(puVar26 + -0xd4) = pppppppiVar19;\n  iVar21 = *(int *)(puVar26 + -0xd0);\n  piVar23 = *(int **)(puVar26 + -0xcc);\n  *(int *******)(puVar26 + -0x110) = *pppppppiVar15;\n  *(int **)(puVar26 + -0x11c) = piVar23;\n  *(int *)(puVar26 + -0x120) = iVar21;\n  iVar13 = FUN_00021f9c();\n  if ((*piVar23 == 0) || (iVar13 != 0)) {\n    iVar22 = *(int *)(*(int *)(puVar26 + -0x118) + -0x7ed8);\n    *(int *)(puVar26 + -0x10c) = *(int *)(*(int *)(puVar26 + -0x118) + -0x7ed8) + -0x5cb8;\nLAB_0002390c:\n    do {\n      do {\n        iVar20 = iVar13;\n        if ((*(byte *)(pppppppiVar18 + 1) & 0xf7) == 2) {\n          return iVar20;\n        }\n        if ((iVar21 != 0) && (*(byte *)(pppppppiVar18 + 1) == 9)) {\n          return iVar20;\n        }\n        *(int **)(puVar26 + -0x11c) = piVar23;\n        *(int *)(puVar26 + -0x120) = iVar21;\n        iVar14 = (*(code *)(iVar22 + 0x1f9c))\n                           (*(undefined4 *)(puVar26 + -0xe0),pppppppiVar15,pppppppiVar18,\n                            *(undefined4 *)(puVar26 + -0xd4));\n        if (*piVar23 == 0) {\n          iVar13 = iVar14;\n          iVar2 = iVar20;\n          iVar3 = iVar14;\n          if (iVar20 == 0) goto LAB_0002390c;\n        }\n        else {\n          iVar2 = iVar14;\n          iVar3 = iVar20;\n          if (iVar14 == 0) {\n            if (iVar20 == 0) {\n              return 0;\n            }\n            FUN_0001920c(iVar20,*(int *)(*(int *)(puVar26 + -0x118) + -0x7ed8) + -0x2cc0,0);\n            return 0;\n          }\n        }\n        iVar13 = iVar2;\n      } while (iVar3 == 0);\n      iVar13 = (**(code **)(puVar26 + -0x10c))(*(undefined4 *)(puVar26 + -0x110),iVar20,iVar14,0x10)\n      ;\n    } while (iVar13 != 0);\n    iVar13 = *(int *)(*(int *)(puVar26 + -0x118) + -0x7ed8);\n    FUN_0001920c(iVar14,iVar13 + -0x2cc0,0);\n    FUN_0001920c(iVar20,iVar13 + -0x2cc0,0);\n    *piVar23 = 0xc;\n    iVar13 = 0;\n  }\n  return iVar13;\n}\n\n" comment (function_definition "int FUN_000216b4(undefined4 *param_1,int *******param_2,int *******param_3,int *******param_4,\n                char param_5)\n\n{\n  bool bVar1;\n  int iVar2;\n  int iVar3;\n  int *******pppppppiVar4;\n  code *pcVar5;\n  code *pcVar6;\n  code *pcVar7;\n  int *****pppppiVar8;\n  int *******pppppppiVar9;\n  int *piVar10;\n  int *******pppppppiVar11;\n  int ******ppppppiVar12;\n  int iVar13;\n  int iVar14;\n  int *******pppppppiVar15;\n  int ******ppppppiVar16;\n  int *******pppppppiVar17;\n  int *******pppppppiVar18;\n  int *******pppppppiVar19;\n  int *******unaff_s0;\n  int *******unaff_s2;\n  int iVar20;\n  int ******unaff_s3;\n  int iVar21;\n  int **unaff_s5;\n  int iVar22;\n  int *******unaff_s6;\n  int *piVar23;\n  undefined *puVar24;\n  undefined1 *puVar25;\n  undefined1 *puVar26;\n  undefined4 uVar27;\n  undefined1 auStack_98 [24];\n  int *******local_70;\n  int *******local_48;\n  int ******local_44;\n  undefined4 local_40;\n  undefined4 local_3c;\n  int *local_38;\n  undefined4 local_34;\n  int local_30;\n  int local_2c;\n  \n  puVar25 = auStack_98;\n  puVar26 = auStack_98;\n  local_2c = *(int *)PTR___stack_chk_guard_0003e348;\n  piVar23 = (int *)*param_1;\n  local_38 = (int *)0x0;\n  local_34 = 2;\n  local_30 = 0;\n  pppppppiVar17 = param_2;\n  pppppppiVar18 = param_3;\n  pppppppiVar19 = param_4;\n  if (param_5 == '\0') {\n    unaff_s5 = (int **)0x0;\n  }\n  else {\n    local_30 = (*(code *)PTR_malloc_0003e2f8)(0x30);\n    if (local_30 == 0) {\n      iVar13 = 0xc;\n      goto LAB_00021ed8;\n    }\n    unaff_s5 = &local_38;\n  }\n  unaff_s0 = (int *******)piVar23[0x12];\n  local_44 = (int ******)0x0;\n  local_40 = 0;\n  local_3c = 0;\n  pppppppiVar15 = (int *******)((int)param_3 * 8);\n  if (pppppppiVar15 < (int *******)0xfc0) {\n    puVar25 = auStack_98 + (int)param_3 * -8;\n    local_70 = (int *******)(&stack0xffffff80 + (int)param_3 * -8);\n    bVar1 = false;\n  }\n  else {\n    local_70 = (int *******)(*(code *)PTR_malloc_0003e2f8)(pppppppiVar15);\n    bVar1 = true;\n    if (local_70 == (int *******)0x0) {\n      FUN_0001eb94(unaff_s5);\n      iVar13 = 0xc;\n      puVar26 = auStack_98;\n      goto LAB_00021ed8;\n    }\n  }\n  pppppppiVar17 = param_4;\n  pppppppiVar18 = pppppppiVar15;\n  (*(code *)PTR_memcpy_0003e34c)(local_70);\n  local_48 = (int *******)*param_4;\n  pcVar5 = (code *)(PTR_DAT_0003e238 + -0x10e8);\n  pcVar6 = (code *)(PTR_DAT_0003e238 + -0x6f00);\n  pcVar7 = (code *)(PTR_DAT_0003e238 + -0x589c);\n  while (unaff_s2 = local_48, puVar24 = PTR_memcpy_0003e34c, puVar26 = puVar25,\n        (int)local_48 <= (int)param_4[1]) {\n    piVar10 = (int *)(*piVar23 + (int)unaff_s0 * 8);\n    if (*(char *)(piVar10 + 1) == '\b') {\n      iVar13 = *piVar10;\n      if (iVar13 + 1 < (int)param_3) {\n        param_4[(iVar13 + 1) * 2] = (int ******)local_48;\n        (param_4 + (iVar13 + 1) * 2)[1] = (int ******)0xffffffff;\n      }\nLAB_00021cec:\n      pppppppiVar11 = (int *******)param_4[1];\n    }\n    else {\n      if ((*(char *)(piVar10 + 1) != '\t') || (iVar13 = *piVar10 + 1, (int)param_3 <= iVar13))\n      goto LAB_00021cec;\n      pppppppiVar17 = param_4 + iVar13 * 2;\n      if ((int)*pppppppiVar17 < (int)local_48) {\n        pppppppiVar17[1] = (int ******)local_48;\n        pppppppiVar17 = param_4;\n        pppppppiVar18 = pppppppiVar15;\n        (*(code *)puVar24)(local_70);\n        pppppppiVar11 = (int *******)param_4[1];\n      }\n      else {\n        if (((piVar10[1] & 0x1000U) == 0) ||\n           (pppppppiVar18 = pppppppiVar15, local_70[iVar13 * 2] == (int ******)0xffffffff)) {\n          pppppppiVar17[1] = (int ******)local_48;\n          goto LAB_00021cec;\n        }\n        pppppppiVar17 = local_70;\n        (*(code *)PTR_memcpy_0003e34c)(param_4);\n        pppppppiVar11 = (int *******)param_4[1];\n      }\n    }\n    if ((pppppppiVar11 == unaff_s2) && ((int *******)param_2[0x18] == unaff_s0)) {\n      if (unaff_s5 == (int **)0x0) {\n        (*(code *)PTR_free_0003e354)(local_3c);\n        if (bVar1) {\n          (*(code *)PTR_free_0003e354)(local_70);\n          iVar13 = 0;\n        }\n        else {\n          iVar13 = 0;\n        }\n      }\n      else {\n        if (param_3 != (int *******)0x0) {\n          pppppppiVar9 = (int *******)0x0;\n          pppppppiVar18 = (int *******)0xffffffff;\n          pppppppiVar11 = param_4;\n          do {\n            if ((-1 < (int)*pppppppiVar11) &&\n               (pppppppiVar17 = (int *******)pppppppiVar11[1],\n               (int *******)pppppppiVar11[1] == (int *******)0xffffffff)) break;\n            pppppppiVar9 = (int *******)((int)pppppppiVar9 + 1);\n            pppppppiVar11 = pppppppiVar11 + 2;\n            pppppppiVar17 = param_3;\n          } while (param_3 != pppppppiVar9);\n          if (pppppppiVar9 != param_3) {\n            *(int ********)(puVar25 + 0x10) = &local_44;\n            pppppppiVar17 = (int *******)&local_48;\n            pppppppiVar18 = param_3;\n            pppppppiVar19 = param_4;\n            unaff_s0 = (int *******)(*pcVar5)(unaff_s5);\n            goto LAB_00021d04;\n          }\n        }\n        (*(code *)PTR_free_0003e354)(local_3c);\n        if (bVar1) {\n          (*(code *)PTR_free_0003e354)(local_70);\n        }\n        iVar13 = FUN_0001eb94(unaff_s5);\n      }\n      goto LAB_00021ed8;\n    }\nLAB_00021d04:\n    unaff_s2 = (int *******)param_2[0x15];\n    unaff_s3 = (int ******)((int)unaff_s0 * 8);\n    ppppppiVar12 = *unaff_s2 + (int)unaff_s0 * 2;\n    if ((*(byte *)(ppppppiVar12 + 1) & 8) == 0) {\n      if (((uint)ppppppiVar12[1] & 0x800) == 0) {\n        if (*(byte *)(ppppppiVar12 + 1) == 4) {\n          ppppppiVar16 = (param_4 + ((int)*ppppppiVar12 + 1) * 2)[1];\n          ppppppiVar12 = param_4[((int)*ppppppiVar12 + 1) * 2];\n          unaff_s6 = (int *******)((int)ppppppiVar16 - (int)ppppppiVar12);\n          if (unaff_s5 == (int **)0x0) {\n            pppppppiVar17 = unaff_s0;\n            if (unaff_s6 != (int *******)0x0) goto LAB_00021da8;\nLAB_00021dd0:\n            pppppppiVar17 = unaff_s0;\n            iVar13 = (*pcVar7)(&local_44);\n            if (iVar13 == 0) goto LAB_00021b34;\n            pppppppiVar11 = (int *******)*unaff_s2[5][(int)unaff_s0 * 3 + 2];\n            pppppppiVar17 = pppppppiVar11;\n            iVar13 = (*pcVar6)(param_2[0x19][(int)local_48] + 1);\n            if (iVar13 != 0) goto LAB_00021ca8;\n            goto LAB_00021c18;\n          }\n          if ((ppppppiVar12 != (int ******)0xffffffff) && (ppppppiVar16 != (int ******)0xffffffff))\n          {\n            if (unaff_s6 == (int *******)0x0) goto LAB_00021dd0;\n            pppppppiVar17 = (int *******)((int)param_2[1] + (int)local_48);\n            pppppppiVar18 = unaff_s6;\n            iVar13 = (*(code *)PTR_memcmp_0003e338)((int)param_2[1] + (int)ppppppiVar12);\n            if (iVar13 == 0) goto LAB_00021da8;\n          }\n        }\n        else {\nLAB_00021c18:\n          unaff_s6 = local_48;\n          pppppppiVar17 = (int *******)(*unaff_s2 + (int)unaff_s0 * 2);\n          pppppppiVar18 = local_48;\n          iVar13 = FUN_0001c4f8(param_2);\n          if (iVar13 != 0) {\n            pppppppiVar11 = (int *******)unaff_s2[3][(int)unaff_s0];\n            local_48 = (int *******)((int)unaff_s6 + 1);\n            goto LAB_00021c5c;\n          }\n        }\n      }\n      else {\n        pppppppiVar17 = unaff_s0;\n        pppppppiVar18 = param_2;\n        pppppppiVar19 = local_48;\n        unaff_s6 = (int *******)FUN_000200a0(unaff_s2);\n        if (unaff_s6 == (int *******)0x0) goto LAB_00021c18;\nLAB_00021da8:\n        pppppppiVar11 = (int *******)unaff_s2[3][(int)unaff_s0];\n        local_48 = (int *******)((int)unaff_s6 + (int)local_48);\nLAB_00021c5c:\n        unaff_s6 = local_48;\n        if (unaff_s5 == (int **)0x0) {\nLAB_00021ca4:\n          local_40 = 0;\n          goto LAB_00021ca8;\n        }\n        unaff_s6 = (int *******)((int)local_48 * 4);\n        if ((int)local_48 <= (int)param_2[0x17]) {\n          unaff_s6 = (int *******)(param_2[0x19] + (int)local_48);\n          pppppppiVar17 = pppppppiVar11;\n          if ((*unaff_s6 != (int ******)0x0) && (iVar13 = (*pcVar6)(*unaff_s6 + 1), iVar13 != 0))\n          goto LAB_00021ca4;\n        }\n      }\nLAB_00021f3c:\n      unaff_s0 = (int *******)0xffffffff;\n      goto LAB_00021f44;\n    }\n    pppppiVar8 = param_2[0x19][(int)local_48];\n    unaff_s2 = (int *******)(unaff_s2[5] + (int)unaff_s0 * 3);\n    pppppppiVar17 = unaff_s0;\n    iVar13 = (*pcVar7)(&local_44);\n    if (iVar13 == 0) goto LAB_00021b34;\n    unaff_s6 = (int *******)unaff_s2[1];\n    if ((int)unaff_s6 < 1) goto LAB_00021f3c;\n    unaff_s3 = unaff_s2[2];\n    unaff_s2 = (int *******)0x0;\n    unaff_s0 = (int *******)0xffffffff;\n    do {\n      pppppppiVar9 = (int *******)*unaff_s3;\n      pppppppiVar17 = pppppppiVar9;\n      iVar13 = (*pcVar6)(pppppiVar8 + 1);\n      pppppppiVar11 = unaff_s0;\n      if ((iVar13 != 0) &&\n         (pppppppiVar17 = unaff_s0, pppppppiVar11 = pppppppiVar9,\n         unaff_s0 != (int *******)0xffffffff)) {\n        iVar13 = (*pcVar6)(&local_44);\n        pppppppiVar4 = local_48;\n        if ((iVar13 == 0) &&\n           (pppppppiVar11 = unaff_s0, unaff_s6 = local_48, unaff_s5 != (int **)0x0)) {\n          unaff_s2 = (int *******)*unaff_s5;\n          *unaff_s5 = (int *)((int)unaff_s2 + 1);\n          pppppppiVar17 = (int *******)unaff_s5[1];\n          if ((int *******)((int)unaff_s2 + 1) == pppppppiVar17) {\n            pppppppiVar17 = (int *******)((int)pppppppiVar17 * 0x30);\n            piVar10 = (int *)(*(code *)PTR_realloc_0003e2fc)(unaff_s5[2]);\n            unaff_s6 = pppppppiVar4;\n            if (piVar10 == (int *)0x0) goto LAB_00021b34;\n            unaff_s5[1] = (int *)((int)unaff_s5[1] << 1);\n            unaff_s5[2] = piVar10;\n          }\n          unaff_s3 = (int ******)((int)unaff_s2 * 0x18);\n          unaff_s5[2][(int)unaff_s2 * 6] = (int)pppppppiVar4;\n          *(int ********)((int)unaff_s3 + (int)(unaff_s5[2] + 1)) = pppppppiVar9;\n          unaff_s2 = (int *******)(unaff_s5[2] + (int)unaff_s2 * 6);\n          ppppppiVar12 = (int ******)(*(code *)PTR_malloc_0003e2f8)(pppppppiVar15);\n          unaff_s2[2] = ppppppiVar12;\n          pppppppiVar18 = pppppppiVar15;\n          unaff_s6 = pppppppiVar15;\n          if (*(int *)((int)unaff_s3 + (int)(unaff_s5[2] + 2)) == 0) goto LAB_00021b34;\n          (*(code *)PTR_memcpy_0003e34c)(*(int *)((int)unaff_s3 + (int)(unaff_s5[2] + 2)),param_4);\n          pppppppiVar17 = &local_44;\n          iVar13 = FUN_0001b67c((int *)((int)unaff_s3 + (int)(unaff_s5[2] + 3)));\n          if (iVar13 != 0) goto LAB_00021b34;\n        }\n        break;\n      }\n      unaff_s2 = (int *******)((int)unaff_s2 + 1);\n      unaff_s3 = unaff_s3 + 1;\n      unaff_s0 = pppppppiVar11;\n    } while (unaff_s6 != unaff_s2);\nLAB_00021ca8:\n    unaff_s0 = pppppppiVar11;\n    if ((int)pppppppiVar11 < 0) {\nLAB_00021f44:\n      if (unaff_s0 == (int *******)&SUB_fffffffe) {\nLAB_00021b34:\n        (*(code *)PTR_free_0003e354)(local_3c);\n        if (bVar1) {\n          (*(code *)PTR_free_0003e354)(local_70);\n        }\n        FUN_0001eb94(unaff_s5);\n        iVar13 = 0xc;\n        goto LAB_00021ed8;\n      }\n      if (unaff_s5 == (int **)0x0) {\n        (*(code *)PTR_free_0003e354)();\n        if (bVar1) {\n          (*(code *)PTR_free_0003e354)(local_70);\n          iVar13 = 1;\n        }\n        else {\n          iVar13 = 1;\n        }\n        goto LAB_00021ed8;\n      }\n      *(int ********)(puVar25 + 0x10) = &local_44;\n      pppppppiVar17 = (int *******)&local_48;\n      pppppppiVar18 = param_3;\n      pppppppiVar19 = param_4;\n      unaff_s0 = (int *******)(*pcVar5)(unaff_s5);\n    }\n  }\n  (*(code *)PTR_free_0003e354)(local_3c);\n  if (bVar1) {\n    (*(code *)PTR_free_0003e354)(local_70);\n  }\n  iVar13 = FUN_0001eb94(unaff_s5);\nLAB_00021ed8:\n  if (local_2c == *(int *)PTR___stack_chk_guard_0003e348) {\n    return iVar13;\n  }\n  pcVar5 = FUN_00021f9c;\n  iVar13 = local_2c;\n  puVar24 = PTR___stack_chk_fail_0003e32c;\n  (*(code *)PTR___stack_chk_fail_0003e32c)();\n  *(code **)(puVar26 + -4) = pcVar5;\n  *(undefined1 **)(puVar26 + -8) = auStack_98;\n  *(int **)(puVar26 + -0xc) = piVar23;\n  *(int ********)(puVar26 + -0x10) = unaff_s6;\n  *(int ***)(puVar26 + -0x14) = unaff_s5;\n  *(int ********)(puVar26 + -0x18) = param_4;\n  *(int *******)(puVar26 + -0x1c) = unaff_s3;\n  *(int ********)(puVar26 + -0x20) = unaff_s2;\n  *(int ********)(puVar26 + -0x24) = param_2;\n  *(int ********)(puVar26 + -0x28) = unaff_s0;\n  *(undefined **)(puVar26 + -0xc0) = puVar24 + 0x24174;\n  *(int *)(puVar26 + -0xac) = iVar13;\n  uVar27 = *(undefined4 *)(puVar26 + 0x14);\n  *(undefined4 *)(puVar26 + -0x2c) = **(undefined4 **)(puVar24 + 0x1c3ac);\n  *(int *******)(puVar26 + -0xb8) = *pppppppiVar17;\n  if (*(byte *)(pppppppiVar18 + 1) < 0x25) {\n                    /* WARNING: Could not recover jumptable at 0x00022020. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n    iVar13 = (*(code *)(puVar24 + 0x24174 +\n                       *(int *)(*(int *)(puVar24 + 0x1c1ac) + -0x2ac0 +\n                               (uint)*(byte *)(pppppppiVar18 + 1) * 4)))();\n    return iVar13;\n  }\n  iVar13 = *(int *)(puVar26 + -0x2c);\n  if (iVar13 == **(int **)(puVar24 + 0x1c3ac)) {\n    return 0;\n  }\n  pcVar5 = *(code **)(puVar24 + 0x1c390);\n  pcVar6 = FUN_00023824;\n  pppppppiVar15 = pppppppiVar17;\n  (*pcVar5)();\n  *(code **)(puVar26 + -0xe4) = pcVar6;\n  *(undefined4 *)(puVar26 + -0xe8) = uVar27;\n  *(int **)(puVar26 + -0xec) = piVar23;\n  *(undefined4 *)(puVar26 + -0xf0) = 0;\n  *(int ***)(puVar26 + -0xf4) = unaff_s5;\n  *(int ********)(puVar26 + -0xf8) = param_4;\n  *(int *******)(puVar26 + -0xfc) = unaff_s3;\n  *(int ********)(puVar26 + -0x100) = unaff_s2;\n  *(int ********)(puVar26 + -0x104) = param_2;\n  *(int ********)(puVar26 + -0x108) = pppppppiVar17;\n  *(code **)(puVar26 + -0x118) = pcVar5 + 0x228ec;\n  *(int *)(puVar26 + -0xe0) = iVar13;\n  *(int ********)(puVar26 + -0xd4) = pppppppiVar19;\n  iVar21 = *(int *)(puVar26 + -0xd0);\n  piVar23 = *(int **)(puVar26 + -0xcc);\n  *(int *******)(puVar26 + -0x110) = *pppppppiVar15;\n  *(int **)(puVar26 + -0x11c) = piVar23;\n  *(int *)(puVar26 + -0x120) = iVar21;\n  iVar13 = FUN_00021f9c();\n  if ((*piVar23 == 0) || (iVar13 != 0)) {\n    iVar22 = *(int *)(*(int *)(puVar26 + -0x118) + -0x7ed8);\n    *(int *)(puVar26 + -0x10c) = *(int *)(*(int *)(puVar26 + -0x118) + -0x7ed8) + -0x5cb8;\nLAB_0002390c:\n    do {\n      do {\n        iVar20 = iVar13;\n        if ((*(byte *)(pppppppiVar18 + 1) & 0xf7) == 2) {\n          return iVar20;\n        }\n        if ((iVar21 != 0) && (*(byte *)(pppppppiVar18 + 1) == 9)) {\n          return iVar20;\n        }\n        *(int **)(puVar26 + -0x11c) = piVar23;\n        *(int *)(puVar26 + -0x120) = iVar21;\n        iVar14 = (*(code *)(iVar22 + 0x1f9c))\n                           (*(undefined4 *)(puVar26 + -0xe0),pppppppiVar15,pppppppiVar18,\n                            *(undefined4 *)(puVar26 + -0xd4));\n        if (*piVar23 == 0) {\n          iVar13 = iVar14;\n          iVar2 = iVar20;\n          iVar3 = iVar14;\n          if (iVar20 == 0) goto LAB_0002390c;\n        }\n        else {\n          iVar2 = iVar14;\n          iVar3 = iVar20;\n          if (iVar14 == 0) {\n            if (iVar20 == 0) {\n              return 0;\n            }\n            FUN_0001920c(iVar20,*(int *)(*(int *)(puVar26 + -0x118) + -0x7ed8) + -0x2cc0,0);\n            return 0;\n          }\n        }\n        iVar13 = iVar2;\n      } while (iVar3 == 0);\n      iVar13 = (**(code **)(puVar26 + -0x10c))(*(undefined4 *)(puVar26 + -0x110),iVar20,iVar14,0x10)\n      ;\n    } while (iVar13 != 0);\n    iVar13 = *(int *)(*(int *)(puVar26 + -0x118) + -0x7ed8);\n    FUN_0001920c(iVar14,iVar13 + -0x2cc0,0);\n    FUN_0001920c(iVar20,iVar13 + -0x2cc0,0);\n    *piVar23 = 0xc;\n    iVar13 = 0;\n  }\n  return iVar13;\n}" primitive_type (function_declarator "FUN_000216b4(undefined4 *param_1,int *******param_2,int *******param_3,int *******param_4,\n                char param_5)" identifier (parameter_list "(undefined4 *param_1,int *******param_2,int *******param_3,int *******param_4,\n                char param_5)" ( (parameter_declaration "undefined4 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int *******param_2" primitive_type (pointer_declarator "*******param_2" * (pointer_declarator "******param_2" * (pointer_declarator "*****param_2" * (pointer_declarator "****param_2" * (pointer_declarator "***param_2" * (pointer_declarator "**param_2" * (pointer_declarator "*param_2" * identifier)))))))) , (parameter_declaration "int *******param_3" primitive_type (pointer_declarator "*******param_3" * (pointer_declarator "******param_3" * (pointer_declarator "*****param_3" * (pointer_declarator "****param_3" * (pointer_declarator "***param_3" * (pointer_declarator "**param_3" * (pointer_declarator "*param_3" * identifier)))))))) , (parameter_declaration "int *******param_4" primitive_type (pointer_declarator "*******param_4" * (pointer_declarator "******param_4" * (pointer_declarator "*****param_4" * (pointer_declarator "****param_4" * (pointer_declarator "***param_4" * (pointer_declarator "**param_4" * (pointer_declarator "*param_4" * identifier)))))))) , (parameter_declaration "char param_5" primitive_type identifier) ))) (compound_statement "{\n  bool bVar1;\n  int iVar2;\n  int iVar3;\n  int *******pppppppiVar4;\n  code *pcVar5;\n  code *pcVar6;\n  code *pcVar7;\n  int *****pppppiVar8;\n  int *******pppppppiVar9;\n  int *piVar10;\n  int *******pppppppiVar11;\n  int ******ppppppiVar12;\n  int iVar13;\n  int iVar14;\n  int *******pppppppiVar15;\n  int ******ppppppiVar16;\n  int *******pppppppiVar17;\n  int *******pppppppiVar18;\n  int *******pppppppiVar19;\n  int *******unaff_s0;\n  int *******unaff_s2;\n  int iVar20;\n  int ******unaff_s3;\n  int iVar21;\n  int **unaff_s5;\n  int iVar22;\n  int *******unaff_s6;\n  int *piVar23;\n  undefined *puVar24;\n  undefined1 *puVar25;\n  undefined1 *puVar26;\n  undefined4 uVar27;\n  undefined1 auStack_98 [24];\n  int *******local_70;\n  int *******local_48;\n  int ******local_44;\n  undefined4 local_40;\n  undefined4 local_3c;\n  int *local_38;\n  undefined4 local_34;\n  int local_30;\n  int local_2c;\n  \n  puVar25 = auStack_98;\n  puVar26 = auStack_98;\n  local_2c = *(int *)PTR___stack_chk_guard_0003e348;\n  piVar23 = (int *)*param_1;\n  local_38 = (int *)0x0;\n  local_34 = 2;\n  local_30 = 0;\n  pppppppiVar17 = param_2;\n  pppppppiVar18 = param_3;\n  pppppppiVar19 = param_4;\n  if (param_5 == '\0') {\n    unaff_s5 = (int **)0x0;\n  }\n  else {\n    local_30 = (*(code *)PTR_malloc_0003e2f8)(0x30);\n    if (local_30 == 0) {\n      iVar13 = 0xc;\n      goto LAB_00021ed8;\n    }\n    unaff_s5 = &local_38;\n  }\n  unaff_s0 = (int *******)piVar23[0x12];\n  local_44 = (int ******)0x0;\n  local_40 = 0;\n  local_3c = 0;\n  pppppppiVar15 = (int *******)((int)param_3 * 8);\n  if (pppppppiVar15 < (int *******)0xfc0) {\n    puVar25 = auStack_98 + (int)param_3 * -8;\n    local_70 = (int *******)(&stack0xffffff80 + (int)param_3 * -8);\n    bVar1 = false;\n  }\n  else {\n    local_70 = (int *******)(*(code *)PTR_malloc_0003e2f8)(pppppppiVar15);\n    bVar1 = true;\n    if (local_70 == (int *******)0x0) {\n      FUN_0001eb94(unaff_s5);\n      iVar13 = 0xc;\n      puVar26 = auStack_98;\n      goto LAB_00021ed8;\n    }\n  }\n  pppppppiVar17 = param_4;\n  pppppppiVar18 = pppppppiVar15;\n  (*(code *)PTR_memcpy_0003e34c)(local_70);\n  local_48 = (int *******)*param_4;\n  pcVar5 = (code *)(PTR_DAT_0003e238 + -0x10e8);\n  pcVar6 = (code *)(PTR_DAT_0003e238 + -0x6f00);\n  pcVar7 = (code *)(PTR_DAT_0003e238 + -0x589c);\n  while (unaff_s2 = local_48, puVar24 = PTR_memcpy_0003e34c, puVar26 = puVar25,\n        (int)local_48 <= (int)param_4[1]) {\n    piVar10 = (int *)(*piVar23 + (int)unaff_s0 * 8);\n    if (*(char *)(piVar10 + 1) == '\b') {\n      iVar13 = *piVar10;\n      if (iVar13 + 1 < (int)param_3) {\n        param_4[(iVar13 + 1) * 2] = (int ******)local_48;\n        (param_4 + (iVar13 + 1) * 2)[1] = (int ******)0xffffffff;\n      }\nLAB_00021cec:\n      pppppppiVar11 = (int *******)param_4[1];\n    }\n    else {\n      if ((*(char *)(piVar10 + 1) != '\t') || (iVar13 = *piVar10 + 1, (int)param_3 <= iVar13))\n      goto LAB_00021cec;\n      pppppppiVar17 = param_4 + iVar13 * 2;\n      if ((int)*pppppppiVar17 < (int)local_48) {\n        pppppppiVar17[1] = (int ******)local_48;\n        pppppppiVar17 = param_4;\n        pppppppiVar18 = pppppppiVar15;\n        (*(code *)puVar24)(local_70);\n        pppppppiVar11 = (int *******)param_4[1];\n      }\n      else {\n        if (((piVar10[1] & 0x1000U) == 0) ||\n           (pppppppiVar18 = pppppppiVar15, local_70[iVar13 * 2] == (int ******)0xffffffff)) {\n          pppppppiVar17[1] = (int ******)local_48;\n          goto LAB_00021cec;\n        }\n        pppppppiVar17 = local_70;\n        (*(code *)PTR_memcpy_0003e34c)(param_4);\n        pppppppiVar11 = (int *******)param_4[1];\n      }\n    }\n    if ((pppppppiVar11 == unaff_s2) && ((int *******)param_2[0x18] == unaff_s0)) {\n      if (unaff_s5 == (int **)0x0) {\n        (*(code *)PTR_free_0003e354)(local_3c);\n        if (bVar1) {\n          (*(code *)PTR_free_0003e354)(local_70);\n          iVar13 = 0;\n        }\n        else {\n          iVar13 = 0;\n        }\n      }\n      else {\n        if (param_3 != (int *******)0x0) {\n          pppppppiVar9 = (int *******)0x0;\n          pppppppiVar18 = (int *******)0xffffffff;\n          pppppppiVar11 = param_4;\n          do {\n            if ((-1 < (int)*pppppppiVar11) &&\n               (pppppppiVar17 = (int *******)pppppppiVar11[1],\n               (int *******)pppppppiVar11[1] == (int *******)0xffffffff)) break;\n            pppppppiVar9 = (int *******)((int)pppppppiVar9 + 1);\n            pppppppiVar11 = pppppppiVar11 + 2;\n            pppppppiVar17 = param_3;\n          } while (param_3 != pppppppiVar9);\n          if (pppppppiVar9 != param_3) {\n            *(int ********)(puVar25 + 0x10) = &local_44;\n            pppppppiVar17 = (int *******)&local_48;\n            pppppppiVar18 = param_3;\n            pppppppiVar19 = param_4;\n            unaff_s0 = (int *******)(*pcVar5)(unaff_s5);\n            goto LAB_00021d04;\n          }\n        }\n        (*(code *)PTR_free_0003e354)(local_3c);\n        if (bVar1) {\n          (*(code *)PTR_free_0003e354)(local_70);\n        }\n        iVar13 = FUN_0001eb94(unaff_s5);\n      }\n      goto LAB_00021ed8;\n    }\nLAB_00021d04:\n    unaff_s2 = (int *******)param_2[0x15];\n    unaff_s3 = (int ******)((int)unaff_s0 * 8);\n    ppppppiVar12 = *unaff_s2 + (int)unaff_s0 * 2;\n    if ((*(byte *)(ppppppiVar12 + 1) & 8) == 0) {\n      if (((uint)ppppppiVar12[1] & 0x800) == 0) {\n        if (*(byte *)(ppppppiVar12 + 1) == 4) {\n          ppppppiVar16 = (param_4 + ((int)*ppppppiVar12 + 1) * 2)[1];\n          ppppppiVar12 = param_4[((int)*ppppppiVar12 + 1) * 2];\n          unaff_s6 = (int *******)((int)ppppppiVar16 - (int)ppppppiVar12);\n          if (unaff_s5 == (int **)0x0) {\n            pppppppiVar17 = unaff_s0;\n            if (unaff_s6 != (int *******)0x0) goto LAB_00021da8;\nLAB_00021dd0:\n            pppppppiVar17 = unaff_s0;\n            iVar13 = (*pcVar7)(&local_44);\n            if (iVar13 == 0) goto LAB_00021b34;\n            pppppppiVar11 = (int *******)*unaff_s2[5][(int)unaff_s0 * 3 + 2];\n            pppppppiVar17 = pppppppiVar11;\n            iVar13 = (*pcVar6)(param_2[0x19][(int)local_48] + 1);\n            if (iVar13 != 0) goto LAB_00021ca8;\n            goto LAB_00021c18;\n          }\n          if ((ppppppiVar12 != (int ******)0xffffffff) && (ppppppiVar16 != (int ******)0xffffffff))\n          {\n            if (unaff_s6 == (int *******)0x0) goto LAB_00021dd0;\n            pppppppiVar17 = (int *******)((int)param_2[1] + (int)local_48);\n            pppppppiVar18 = unaff_s6;\n            iVar13 = (*(code *)PTR_memcmp_0003e338)((int)param_2[1] + (int)ppppppiVar12);\n            if (iVar13 == 0) goto LAB_00021da8;\n          }\n        }\n        else {\nLAB_00021c18:\n          unaff_s6 = local_48;\n          pppppppiVar17 = (int *******)(*unaff_s2 + (int)unaff_s0 * 2);\n          pppppppiVar18 = local_48;\n          iVar13 = FUN_0001c4f8(param_2);\n          if (iVar13 != 0) {\n            pppppppiVar11 = (int *******)unaff_s2[3][(int)unaff_s0];\n            local_48 = (int *******)((int)unaff_s6 + 1);\n            goto LAB_00021c5c;\n          }\n        }\n      }\n      else {\n        pppppppiVar17 = unaff_s0;\n        pppppppiVar18 = param_2;\n        pppppppiVar19 = local_48;\n        unaff_s6 = (int *******)FUN_000200a0(unaff_s2);\n        if (unaff_s6 == (int *******)0x0) goto LAB_00021c18;\nLAB_00021da8:\n        pppppppiVar11 = (int *******)unaff_s2[3][(int)unaff_s0];\n        local_48 = (int *******)((int)unaff_s6 + (int)local_48);\nLAB_00021c5c:\n        unaff_s6 = local_48;\n        if (unaff_s5 == (int **)0x0) {\nLAB_00021ca4:\n          local_40 = 0;\n          goto LAB_00021ca8;\n        }\n        unaff_s6 = (int *******)((int)local_48 * 4);\n        if ((int)local_48 <= (int)param_2[0x17]) {\n          unaff_s6 = (int *******)(param_2[0x19] + (int)local_48);\n          pppppppiVar17 = pppppppiVar11;\n          if ((*unaff_s6 != (int ******)0x0) && (iVar13 = (*pcVar6)(*unaff_s6 + 1), iVar13 != 0))\n          goto LAB_00021ca4;\n        }\n      }\nLAB_00021f3c:\n      unaff_s0 = (int *******)0xffffffff;\n      goto LAB_00021f44;\n    }\n    pppppiVar8 = param_2[0x19][(int)local_48];\n    unaff_s2 = (int *******)(unaff_s2[5] + (int)unaff_s0 * 3);\n    pppppppiVar17 = unaff_s0;\n    iVar13 = (*pcVar7)(&local_44);\n    if (iVar13 == 0) goto LAB_00021b34;\n    unaff_s6 = (int *******)unaff_s2[1];\n    if ((int)unaff_s6 < 1) goto LAB_00021f3c;\n    unaff_s3 = unaff_s2[2];\n    unaff_s2 = (int *******)0x0;\n    unaff_s0 = (int *******)0xffffffff;\n    do {\n      pppppppiVar9 = (int *******)*unaff_s3;\n      pppppppiVar17 = pppppppiVar9;\n      iVar13 = (*pcVar6)(pppppiVar8 + 1);\n      pppppppiVar11 = unaff_s0;\n      if ((iVar13 != 0) &&\n         (pppppppiVar17 = unaff_s0, pppppppiVar11 = pppppppiVar9,\n         unaff_s0 != (int *******)0xffffffff)) {\n        iVar13 = (*pcVar6)(&local_44);\n        pppppppiVar4 = local_48;\n        if ((iVar13 == 0) &&\n           (pppppppiVar11 = unaff_s0, unaff_s6 = local_48, unaff_s5 != (int **)0x0)) {\n          unaff_s2 = (int *******)*unaff_s5;\n          *unaff_s5 = (int *)((int)unaff_s2 + 1);\n          pppppppiVar17 = (int *******)unaff_s5[1];\n          if ((int *******)((int)unaff_s2 + 1) == pppppppiVar17) {\n            pppppppiVar17 = (int *******)((int)pppppppiVar17 * 0x30);\n            piVar10 = (int *)(*(code *)PTR_realloc_0003e2fc)(unaff_s5[2]);\n            unaff_s6 = pppppppiVar4;\n            if (piVar10 == (int *)0x0) goto LAB_00021b34;\n            unaff_s5[1] = (int *)((int)unaff_s5[1] << 1);\n            unaff_s5[2] = piVar10;\n          }\n          unaff_s3 = (int ******)((int)unaff_s2 * 0x18);\n          unaff_s5[2][(int)unaff_s2 * 6] = (int)pppppppiVar4;\n          *(int ********)((int)unaff_s3 + (int)(unaff_s5[2] + 1)) = pppppppiVar9;\n          unaff_s2 = (int *******)(unaff_s5[2] + (int)unaff_s2 * 6);\n          ppppppiVar12 = (int ******)(*(code *)PTR_malloc_0003e2f8)(pppppppiVar15);\n          unaff_s2[2] = ppppppiVar12;\n          pppppppiVar18 = pppppppiVar15;\n          unaff_s6 = pppppppiVar15;\n          if (*(int *)((int)unaff_s3 + (int)(unaff_s5[2] + 2)) == 0) goto LAB_00021b34;\n          (*(code *)PTR_memcpy_0003e34c)(*(int *)((int)unaff_s3 + (int)(unaff_s5[2] + 2)),param_4);\n          pppppppiVar17 = &local_44;\n          iVar13 = FUN_0001b67c((int *)((int)unaff_s3 + (int)(unaff_s5[2] + 3)));\n          if (iVar13 != 0) goto LAB_00021b34;\n        }\n        break;\n      }\n      unaff_s2 = (int *******)((int)unaff_s2 + 1);\n      unaff_s3 = unaff_s3 + 1;\n      unaff_s0 = pppppppiVar11;\n    } while (unaff_s6 != unaff_s2);\nLAB_00021ca8:\n    unaff_s0 = pppppppiVar11;\n    if ((int)pppppppiVar11 < 0) {\nLAB_00021f44:\n      if (unaff_s0 == (int *******)&SUB_fffffffe) {\nLAB_00021b34:\n        (*(code *)PTR_free_0003e354)(local_3c);\n        if (bVar1) {\n          (*(code *)PTR_free_0003e354)(local_70);\n        }\n        FUN_0001eb94(unaff_s5);\n        iVar13 = 0xc;\n        goto LAB_00021ed8;\n      }\n      if (unaff_s5 == (int **)0x0) {\n        (*(code *)PTR_free_0003e354)();\n        if (bVar1) {\n          (*(code *)PTR_free_0003e354)(local_70);\n          iVar13 = 1;\n        }\n        else {\n          iVar13 = 1;\n        }\n        goto LAB_00021ed8;\n      }\n      *(int ********)(puVar25 + 0x10) = &local_44;\n      pppppppiVar17 = (int *******)&local_48;\n      pppppppiVar18 = param_3;\n      pppppppiVar19 = param_4;\n      unaff_s0 = (int *******)(*pcVar5)(unaff_s5);\n    }\n  }\n  (*(code *)PTR_free_0003e354)(local_3c);\n  if (bVar1) {\n    (*(code *)PTR_free_0003e354)(local_70);\n  }\n  iVar13 = FUN_0001eb94(unaff_s5);\nLAB_00021ed8:\n  if (local_2c == *(int *)PTR___stack_chk_guard_0003e348) {\n    return iVar13;\n  }\n  pcVar5 = FUN_00021f9c;\n  iVar13 = local_2c;\n  puVar24 = PTR___stack_chk_fail_0003e32c;\n  (*(code *)PTR___stack_chk_fail_0003e32c)();\n  *(code **)(puVar26 + -4) = pcVar5;\n  *(undefined1 **)(puVar26 + -8) = auStack_98;\n  *(int **)(puVar26 + -0xc) = piVar23;\n  *(int ********)(puVar26 + -0x10) = unaff_s6;\n  *(int ***)(puVar26 + -0x14) = unaff_s5;\n  *(int ********)(puVar26 + -0x18) = param_4;\n  *(int *******)(puVar26 + -0x1c) = unaff_s3;\n  *(int ********)(puVar26 + -0x20) = unaff_s2;\n  *(int ********)(puVar26 + -0x24) = param_2;\n  *(int ********)(puVar26 + -0x28) = unaff_s0;\n  *(undefined **)(puVar26 + -0xc0) = puVar24 + 0x24174;\n  *(int *)(puVar26 + -0xac) = iVar13;\n  uVar27 = *(undefined4 *)(puVar26 + 0x14);\n  *(undefined4 *)(puVar26 + -0x2c) = **(undefined4 **)(puVar24 + 0x1c3ac);\n  *(int *******)(puVar26 + -0xb8) = *pppppppiVar17;\n  if (*(byte *)(pppppppiVar18 + 1) < 0x25) {\n                    /* WARNING: Could not recover jumptable at 0x00022020. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n    iVar13 = (*(code *)(puVar24 + 0x24174 +\n                       *(int *)(*(int *)(puVar24 + 0x1c1ac) + -0x2ac0 +\n                               (uint)*(byte *)(pppppppiVar18 + 1) * 4)))();\n    return iVar13;\n  }\n  iVar13 = *(int *)(puVar26 + -0x2c);\n  if (iVar13 == **(int **)(puVar24 + 0x1c3ac)) {\n    return 0;\n  }\n  pcVar5 = *(code **)(puVar24 + 0x1c390);\n  pcVar6 = FUN_00023824;\n  pppppppiVar15 = pppppppiVar17;\n  (*pcVar5)();\n  *(code **)(puVar26 + -0xe4) = pcVar6;\n  *(undefined4 *)(puVar26 + -0xe8) = uVar27;\n  *(int **)(puVar26 + -0xec) = piVar23;\n  *(undefined4 *)(puVar26 + -0xf0) = 0;\n  *(int ***)(puVar26 + -0xf4) = unaff_s5;\n  *(int ********)(puVar26 + -0xf8) = param_4;\n  *(int *******)(puVar26 + -0xfc) = unaff_s3;\n  *(int ********)(puVar26 + -0x100) = unaff_s2;\n  *(int ********)(puVar26 + -0x104) = param_2;\n  *(int ********)(puVar26 + -0x108) = pppppppiVar17;\n  *(code **)(puVar26 + -0x118) = pcVar5 + 0x228ec;\n  *(int *)(puVar26 + -0xe0) = iVar13;\n  *(int ********)(puVar26 + -0xd4) = pppppppiVar19;\n  iVar21 = *(int *)(puVar26 + -0xd0);\n  piVar23 = *(int **)(puVar26 + -0xcc);\n  *(int *******)(puVar26 + -0x110) = *pppppppiVar15;\n  *(int **)(puVar26 + -0x11c) = piVar23;\n  *(int *)(puVar26 + -0x120) = iVar21;\n  iVar13 = FUN_00021f9c();\n  if ((*piVar23 == 0) || (iVar13 != 0)) {\n    iVar22 = *(int *)(*(int *)(puVar26 + -0x118) + -0x7ed8);\n    *(int *)(puVar26 + -0x10c) = *(int *)(*(int *)(puVar26 + -0x118) + -0x7ed8) + -0x5cb8;\nLAB_0002390c:\n    do {\n      do {\n        iVar20 = iVar13;\n        if ((*(byte *)(pppppppiVar18 + 1) & 0xf7) == 2) {\n          return iVar20;\n        }\n        if ((iVar21 != 0) && (*(byte *)(pppppppiVar18 + 1) == 9)) {\n          return iVar20;\n        }\n        *(int **)(puVar26 + -0x11c) = piVar23;\n        *(int *)(puVar26 + -0x120) = iVar21;\n        iVar14 = (*(code *)(iVar22 + 0x1f9c))\n                           (*(undefined4 *)(puVar26 + -0xe0),pppppppiVar15,pppppppiVar18,\n                            *(undefined4 *)(puVar26 + -0xd4));\n        if (*piVar23 == 0) {\n          iVar13 = iVar14;\n          iVar2 = iVar20;\n          iVar3 = iVar14;\n          if (iVar20 == 0) goto LAB_0002390c;\n        }\n        else {\n          iVar2 = iVar14;\n          iVar3 = iVar20;\n          if (iVar14 == 0) {\n            if (iVar20 == 0) {\n              return 0;\n            }\n            FUN_0001920c(iVar20,*(int *)(*(int *)(puVar26 + -0x118) + -0x7ed8) + -0x2cc0,0);\n            return 0;\n          }\n        }\n        iVar13 = iVar2;\n      } while (iVar3 == 0);\n      iVar13 = (**(code **)(puVar26 + -0x10c))(*(undefined4 *)(puVar26 + -0x110),iVar20,iVar14,0x10)\n      ;\n    } while (iVar13 != 0);\n    iVar13 = *(int *)(*(int *)(puVar26 + -0x118) + -0x7ed8);\n    FUN_0001920c(iVar14,iVar13 + -0x2cc0,0);\n    FUN_0001920c(iVar20,iVar13 + -0x2cc0,0);\n    *piVar23 = 0xc;\n    iVar13 = 0;\n  }\n  return iVar13;\n}" { (declaration "bool bVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "int *******pppppppiVar4;" primitive_type (pointer_declarator "*******pppppppiVar4" * (pointer_declarator "******pppppppiVar4" * (pointer_declarator "*****pppppppiVar4" * (pointer_declarator "****pppppppiVar4" * (pointer_declarator "***pppppppiVar4" * (pointer_declarator "**pppppppiVar4" * (pointer_declarator "*pppppppiVar4" * identifier))))))) ;) (declaration "code *pcVar5;" type_identifier (pointer_declarator "*pcVar5" * identifier) ;) (declaration "code *pcVar6;" type_identifier (pointer_declarator "*pcVar6" * identifier) ;) (declaration "code *pcVar7;" type_identifier (pointer_declarator "*pcVar7" * identifier) ;) (declaration "int *****pppppiVar8;" primitive_type (pointer_declarator "*****pppppiVar8" * (pointer_declarator "****pppppiVar8" * (pointer_declarator "***pppppiVar8" * (pointer_declarator "**pppppiVar8" * (pointer_declarator "*pppppiVar8" * identifier))))) ;) (declaration "int *******pppppppiVar9;" primitive_type (pointer_declarator "*******pppppppiVar9" * (pointer_declarator "******pppppppiVar9" * (pointer_declarator "*****pppppppiVar9" * (pointer_declarator "****pppppppiVar9" * (pointer_declarator "***pppppppiVar9" * (pointer_declarator "**pppppppiVar9" * (pointer_declarator "*pppppppiVar9" * identifier))))))) ;) (declaration "int *piVar10;" primitive_type (pointer_declarator "*piVar10" * identifier) ;) (declaration "int *******pppppppiVar11;" primitive_type (pointer_declarator "*******pppppppiVar11" * (pointer_declarator "******pppppppiVar11" * (pointer_declarator "*****pppppppiVar11" * (pointer_declarator "****pppppppiVar11" * (pointer_declarator "***pppppppiVar11" * (pointer_declarator "**pppppppiVar11" * (pointer_declarator "*pppppppiVar11" * identifier))))))) ;) (declaration "int ******ppppppiVar12;" primitive_type (pointer_declarator "******ppppppiVar12" * (pointer_declarator "*****ppppppiVar12" * (pointer_declarator "****ppppppiVar12" * (pointer_declarator "***ppppppiVar12" * (pointer_declarator "**ppppppiVar12" * (pointer_declarator "*ppppppiVar12" * identifier)))))) ;) (declaration "int iVar13;" primitive_type identifier ;) (declaration "int iVar14;" primitive_type identifier ;) (declaration "int *******pppppppiVar15;" primitive_type (pointer_declarator "*******pppppppiVar15" * (pointer_declarator "******pppppppiVar15" * (pointer_declarator "*****pppppppiVar15" * (pointer_declarator "****pppppppiVar15" * (pointer_declarator "***pppppppiVar15" * (pointer_declarator "**pppppppiVar15" * (pointer_declarator "*pppppppiVar15" * identifier))))))) ;) (declaration "int ******ppppppiVar16;" primitive_type (pointer_declarator "******ppppppiVar16" * (pointer_declarator "*****ppppppiVar16" * (pointer_declarator "****ppppppiVar16" * (pointer_declarator "***ppppppiVar16" * (pointer_declarator "**ppppppiVar16" * (pointer_declarator "*ppppppiVar16" * identifier)))))) ;) (declaration "int *******pppppppiVar17;" primitive_type (pointer_declarator "*******pppppppiVar17" * (pointer_declarator "******pppppppiVar17" * (pointer_declarator "*****pppppppiVar17" * (pointer_declarator "****pppppppiVar17" * (pointer_declarator "***pppppppiVar17" * (pointer_declarator "**pppppppiVar17" * (pointer_declarator "*pppppppiVar17" * identifier))))))) ;) (declaration "int *******pppppppiVar18;" primitive_type (pointer_declarator "*******pppppppiVar18" * (pointer_declarator "******pppppppiVar18" * (pointer_declarator "*****pppppppiVar18" * (pointer_declarator "****pppppppiVar18" * (pointer_declarator "***pppppppiVar18" * (pointer_declarator "**pppppppiVar18" * (pointer_declarator "*pppppppiVar18" * identifier))))))) ;) (declaration "int *******pppppppiVar19;" primitive_type (pointer_declarator "*******pppppppiVar19" * (pointer_declarator "******pppppppiVar19" * (pointer_declarator "*****pppppppiVar19" * (pointer_declarator "****pppppppiVar19" * (pointer_declarator "***pppppppiVar19" * (pointer_declarator "**pppppppiVar19" * (pointer_declarator "*pppppppiVar19" * identifier))))))) ;) (declaration "int *******unaff_s0;" primitive_type (pointer_declarator "*******unaff_s0" * (pointer_declarator "******unaff_s0" * (pointer_declarator "*****unaff_s0" * (pointer_declarator "****unaff_s0" * (pointer_declarator "***unaff_s0" * (pointer_declarator "**unaff_s0" * (pointer_declarator "*unaff_s0" * identifier))))))) ;) (declaration "int *******unaff_s2;" primitive_type (pointer_declarator "*******unaff_s2" * (pointer_declarator "******unaff_s2" * (pointer_declarator "*****unaff_s2" * (pointer_declarator "****unaff_s2" * (pointer_declarator "***unaff_s2" * (pointer_declarator "**unaff_s2" * (pointer_declarator "*unaff_s2" * identifier))))))) ;) (declaration "int iVar20;" primitive_type identifier ;) (declaration "int ******unaff_s3;" primitive_type (pointer_declarator "******unaff_s3" * (pointer_declarator "*****unaff_s3" * (pointer_declarator "****unaff_s3" * (pointer_declarator "***unaff_s3" * (pointer_declarator "**unaff_s3" * (pointer_declarator "*unaff_s3" * identifier)))))) ;) (declaration "int iVar21;" primitive_type identifier ;) (declaration "int **unaff_s5;" primitive_type (pointer_declarator "**unaff_s5" * (pointer_declarator "*unaff_s5" * identifier)) ;) (declaration "int iVar22;" primitive_type identifier ;) (declaration "int *******unaff_s6;" primitive_type (pointer_declarator "*******unaff_s6" * (pointer_declarator "******unaff_s6" * (pointer_declarator "*****unaff_s6" * (pointer_declarator "****unaff_s6" * (pointer_declarator "***unaff_s6" * (pointer_declarator "**unaff_s6" * (pointer_declarator "*unaff_s6" * identifier))))))) ;) (declaration "int *piVar23;" primitive_type (pointer_declarator "*piVar23" * identifier) ;) (declaration "undefined *puVar24;" type_identifier (pointer_declarator "*puVar24" * identifier) ;) (declaration "undefined1 *puVar25;" type_identifier (pointer_declarator "*puVar25" * identifier) ;) (declaration "undefined1 *puVar26;" type_identifier (pointer_declarator "*puVar26" * identifier) ;) (declaration "undefined4 uVar27;" type_identifier identifier ;) (declaration "undefined1 auStack_98 [24];" type_identifier (array_declarator "auStack_98 [24]" identifier [ number_literal ]) ;) (declaration "int *******local_70;" primitive_type (pointer_declarator "*******local_70" * (pointer_declarator "******local_70" * (pointer_declarator "*****local_70" * (pointer_declarator "****local_70" * (pointer_declarator "***local_70" * (pointer_declarator "**local_70" * (pointer_declarator "*local_70" * identifier))))))) ;) (declaration "int *******local_48;" primitive_type (pointer_declarator "*******local_48" * (pointer_declarator "******local_48" * (pointer_declarator "*****local_48" * (pointer_declarator "****local_48" * (pointer_declarator "***local_48" * (pointer_declarator "**local_48" * (pointer_declarator "*local_48" * identifier))))))) ;) (declaration "int ******local_44;" primitive_type (pointer_declarator "******local_44" * (pointer_declarator "*****local_44" * (pointer_declarator "****local_44" * (pointer_declarator "***local_44" * (pointer_declarator "**local_44" * (pointer_declarator "*local_44" * identifier)))))) ;) (declaration "undefined4 local_40;" type_identifier identifier ;) (declaration "undefined4 local_3c;" type_identifier identifier ;) (declaration "int *local_38;" primitive_type (pointer_declarator "*local_38" * identifier) ;) (declaration "undefined4 local_34;" type_identifier identifier ;) (declaration "int local_30;" primitive_type identifier ;) (declaration "int local_2c;" primitive_type identifier ;) (expression_statement "puVar25 = auStack_98;" (assignment_expression "puVar25 = auStack_98" identifier = identifier) ;) (expression_statement "puVar26 = auStack_98;" (assignment_expression "puVar26 = auStack_98" identifier = identifier) ;) (expression_statement "local_2c = *(int *)PTR___stack_chk_guard_0003e348;" (assignment_expression "local_2c = *(int *)PTR___stack_chk_guard_0003e348" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_0003e348" * (cast_expression "(int *)PTR___stack_chk_guard_0003e348" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "piVar23 = (int *)*param_1;" (assignment_expression "piVar23 = (int *)*param_1" identifier = (cast_expression "(int *)*param_1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) ;) (expression_statement "local_38 = (int *)0x0;" (assignment_expression "local_38 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_34 = 2;" (assignment_expression "local_34 = 2" identifier = number_literal) ;) (expression_statement "local_30 = 0;" (assignment_expression "local_30 = 0" identifier = number_literal) ;) (expression_statement "pppppppiVar17 = param_2;" (assignment_expression "pppppppiVar17 = param_2" identifier = identifier) ;) (expression_statement "pppppppiVar18 = param_3;" (assignment_expression "pppppppiVar18 = param_3" identifier = identifier) ;) (expression_statement "pppppppiVar19 = param_4;" (assignment_expression "pppppppiVar19 = param_4" identifier = identifier) ;) (if_statement "if (param_5 == '\0') {\n    unaff_s5 = (int **)0x0;\n  }\n  else {\n    local_30 = (*(code *)PTR_malloc_0003e2f8)(0x30);\n    if (local_30 == 0) {\n      iVar13 = 0xc;\n      goto LAB_00021ed8;\n    }\n    unaff_s5 = &local_38;\n  }" if (parenthesized_expression "(param_5 == '\0')" ( (binary_expression "param_5 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    unaff_s5 = (int **)0x0;\n  }" { (expression_statement "unaff_s5 = (int **)0x0;" (assignment_expression "unaff_s5 = (int **)0x0" identifier = (cast_expression "(int **)0x0" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal)) ;) }) (else_clause "else {\n    local_30 = (*(code *)PTR_malloc_0003e2f8)(0x30);\n    if (local_30 == 0) {\n      iVar13 = 0xc;\n      goto LAB_00021ed8;\n    }\n    unaff_s5 = &local_38;\n  }" else (compound_statement "{\n    local_30 = (*(code *)PTR_malloc_0003e2f8)(0x30);\n    if (local_30 == 0) {\n      iVar13 = 0xc;\n      goto LAB_00021ed8;\n    }\n    unaff_s5 = &local_38;\n  }" { (expression_statement "local_30 = (*(code *)PTR_malloc_0003e2f8)(0x30);" (assignment_expression "local_30 = (*(code *)PTR_malloc_0003e2f8)(0x30)" identifier = (call_expression "(*(code *)PTR_malloc_0003e2f8)(0x30)" (parenthesized_expression "(*(code *)PTR_malloc_0003e2f8)" ( (pointer_expression "*(code *)PTR_malloc_0003e2f8" * (cast_expression "(code *)PTR_malloc_0003e2f8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(0x30)" ( number_literal )))) ;) (if_statement "if (local_30 == 0) {\n      iVar13 = 0xc;\n      goto LAB_00021ed8;\n    }" if (parenthesized_expression "(local_30 == 0)" ( (binary_expression "local_30 == 0" identifier == number_literal) )) (compound_statement "{\n      iVar13 = 0xc;\n      goto LAB_00021ed8;\n    }" { (expression_statement "iVar13 = 0xc;" (assignment_expression "iVar13 = 0xc" identifier = number_literal) ;) (goto_statement "goto LAB_00021ed8;" goto statement_identifier ;) })) (expression_statement "unaff_s5 = &local_38;" (assignment_expression "unaff_s5 = &local_38" identifier = (pointer_expression "&local_38" & identifier)) ;) }))) (expression_statement "unaff_s0 = (int *******)piVar23[0x12];" (assignment_expression "unaff_s0 = (int *******)piVar23[0x12]" identifier = (cast_expression "(int *******)piVar23[0x12]" ( (type_descriptor "int *******" primitive_type (abstract_pointer_declarator "*******" * (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))))))) ) (subscript_expression "piVar23[0x12]" identifier [ number_literal ]))) ;) (expression_statement "local_44 = (int ******)0x0;" (assignment_expression "local_44 = (int ******)0x0" identifier = (cast_expression "(int ******)0x0" ( (type_descriptor "int ******" primitive_type (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))))))) ) number_literal)) ;) (expression_statement "local_40 = 0;" (assignment_expression "local_40 = 0" identifier = number_literal) ;) (expression_statement "local_3c = 0;" (assignment_expression "local_3c = 0" identifier = number_literal) ;) (expression_statement "pppppppiVar15 = (int *******)((int)param_3 * 8);" (assignment_expression "pppppppiVar15 = (int *******)((int)param_3 * 8)" identifier = (cast_expression "(int *******)((int)param_3 * 8)" ( (type_descriptor "int *******" primitive_type (abstract_pointer_declarator "*******" * (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))))))) ) (parenthesized_expression "((int)param_3 * 8)" ( (binary_expression "(int)param_3 * 8" (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) )))) ;) (if_statement "if (pppppppiVar15 < (int *******)0xfc0) {\n    puVar25 = auStack_98 + (int)param_3 * -8;\n    local_70 = (int *******)(&stack0xffffff80 + (int)param_3 * -8);\n    bVar1 = false;\n  }\n  else {\n    local_70 = (int *******)(*(code *)PTR_malloc_0003e2f8)(pppppppiVar15);\n    bVar1 = true;\n    if (local_70 == (int *******)0x0) {\n      FUN_0001eb94(unaff_s5);\n      iVar13 = 0xc;\n      puVar26 = auStack_98;\n      goto LAB_00021ed8;\n    }\n  }" if (parenthesized_expression "(pppppppiVar15 < (int *******)0xfc0)" ( (binary_expression "pppppppiVar15 < (int *******)0xfc0" identifier < (cast_expression "(int *******)0xfc0" ( (type_descriptor "int *******" primitive_type (abstract_pointer_declarator "*******" * (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))))))) ) number_literal)) )) (compound_statement "{\n    puVar25 = auStack_98 + (int)param_3 * -8;\n    local_70 = (int *******)(&stack0xffffff80 + (int)param_3 * -8);\n    bVar1 = false;\n  }" { (expression_statement "puVar25 = auStack_98 + (int)param_3 * -8;" (assignment_expression "puVar25 = auStack_98 + (int)param_3 * -8" identifier = (binary_expression "auStack_98 + (int)param_3 * -8" identifier + (binary_expression "(int)param_3 * -8" (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal))) ;) (expression_statement "local_70 = (int *******)(&stack0xffffff80 + (int)param_3 * -8);" (assignment_expression "local_70 = (int *******)(&stack0xffffff80 + (int)param_3 * -8)" identifier = (cast_expression "(int *******)(&stack0xffffff80 + (int)param_3 * -8)" ( (type_descriptor "int *******" primitive_type (abstract_pointer_declarator "*******" * (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))))))) ) (parenthesized_expression "(&stack0xffffff80 + (int)param_3 * -8)" ( (binary_expression "&stack0xffffff80 + (int)param_3 * -8" (pointer_expression "&stack0xffffff80" & identifier) + (binary_expression "(int)param_3 * -8" (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) )))) ;) (expression_statement "bVar1 = false;" (assignment_expression "bVar1 = false" identifier = false) ;) }) (else_clause "else {\n    local_70 = (int *******)(*(code *)PTR_malloc_0003e2f8)(pppppppiVar15);\n    bVar1 = true;\n    if (local_70 == (int *******)0x0) {\n      FUN_0001eb94(unaff_s5);\n      iVar13 = 0xc;\n      puVar26 = auStack_98;\n      goto LAB_00021ed8;\n    }\n  }" else (compound_statement "{\n    local_70 = (int *******)(*(code *)PTR_malloc_0003e2f8)(pppppppiVar15);\n    bVar1 = true;\n    if (local_70 == (int *******)0x0) {\n      FUN_0001eb94(unaff_s5);\n      iVar13 = 0xc;\n      puVar26 = auStack_98;\n      goto LAB_00021ed8;\n    }\n  }" { (expression_statement "local_70 = (int *******)(*(code *)PTR_malloc_0003e2f8)(pppppppiVar15);" (assignment_expression "local_70 = (int *******)(*(code *)PTR_malloc_0003e2f8)(pppppppiVar15)" identifier = (cast_expression "(int *******)(*(code *)PTR_malloc_0003e2f8)(pppppppiVar15)" ( (type_descriptor "int *******" primitive_type (abstract_pointer_declarator "*******" * (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))))))) ) (call_expression "(*(code *)PTR_malloc_0003e2f8)(pppppppiVar15)" (parenthesized_expression "(*(code *)PTR_malloc_0003e2f8)" ( (pointer_expression "*(code *)PTR_malloc_0003e2f8" * (cast_expression "(code *)PTR_malloc_0003e2f8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(pppppppiVar15)" ( identifier ))))) ;) (expression_statement "bVar1 = true;" (assignment_expression "bVar1 = true" identifier = true) ;) (if_statement "if (local_70 == (int *******)0x0) {\n      FUN_0001eb94(unaff_s5);\n      iVar13 = 0xc;\n      puVar26 = auStack_98;\n      goto LAB_00021ed8;\n    }" if (parenthesized_expression "(local_70 == (int *******)0x0)" ( (binary_expression "local_70 == (int *******)0x0" identifier == (cast_expression "(int *******)0x0" ( (type_descriptor "int *******" primitive_type (abstract_pointer_declarator "*******" * (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))))))) ) number_literal)) )) (compound_statement "{\n      FUN_0001eb94(unaff_s5);\n      iVar13 = 0xc;\n      puVar26 = auStack_98;\n      goto LAB_00021ed8;\n    }" { (expression_statement "FUN_0001eb94(unaff_s5);" (call_expression "FUN_0001eb94(unaff_s5)" identifier (argument_list "(unaff_s5)" ( identifier ))) ;) (expression_statement "iVar13 = 0xc;" (assignment_expression "iVar13 = 0xc" identifier = number_literal) ;) (expression_statement "puVar26 = auStack_98;" (assignment_expression "puVar26 = auStack_98" identifier = identifier) ;) (goto_statement "goto LAB_00021ed8;" goto statement_identifier ;) })) }))) (expression_statement "pppppppiVar17 = param_4;" (assignment_expression "pppppppiVar17 = param_4" identifier = identifier) ;) (expression_statement "pppppppiVar18 = pppppppiVar15;" (assignment_expression "pppppppiVar18 = pppppppiVar15" identifier = identifier) ;) (expression_statement "(*(code *)PTR_memcpy_0003e34c)(local_70);" (call_expression "(*(code *)PTR_memcpy_0003e34c)(local_70)" (parenthesized_expression "(*(code *)PTR_memcpy_0003e34c)" ( (pointer_expression "*(code *)PTR_memcpy_0003e34c" * (cast_expression "(code *)PTR_memcpy_0003e34c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(local_70)" ( identifier ))) ;) (expression_statement "local_48 = (int *******)*param_4;" (assignment_expression "local_48 = (int *******)*param_4" identifier = (cast_expression "(int *******)*param_4" ( (type_descriptor "int *******" primitive_type (abstract_pointer_declarator "*******" * (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))))))) ) (pointer_expression "*param_4" * identifier))) ;) (expression_statement "pcVar5 = (code *)(PTR_DAT_0003e238 + -0x10e8);" (assignment_expression "pcVar5 = (code *)(PTR_DAT_0003e238 + -0x10e8)" identifier = (cast_expression "(code *)(PTR_DAT_0003e238 + -0x10e8)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0003e238 + -0x10e8)" ( (binary_expression "PTR_DAT_0003e238 + -0x10e8" identifier + number_literal) )))) ;) (expression_statement "pcVar6 = (code *)(PTR_DAT_0003e238 + -0x6f00);" (assignment_expression "pcVar6 = (code *)(PTR_DAT_0003e238 + -0x6f00)" identifier = (cast_expression "(code *)(PTR_DAT_0003e238 + -0x6f00)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0003e238 + -0x6f00)" ( (binary_expression "PTR_DAT_0003e238 + -0x6f00" identifier + number_literal) )))) ;) (expression_statement "pcVar7 = (code *)(PTR_DAT_0003e238 + -0x589c);" (assignment_expression "pcVar7 = (code *)(PTR_DAT_0003e238 + -0x589c)" identifier = (cast_expression "(code *)(PTR_DAT_0003e238 + -0x589c)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0003e238 + -0x589c)" ( (binary_expression "PTR_DAT_0003e238 + -0x589c" identifier + number_literal) )))) ;) (while_statement "while (unaff_s2 = local_48, puVar24 = PTR_memcpy_0003e34c, puVar26 = puVar25,\n        (int)local_48 <= (int)param_4[1]) {\n    piVar10 = (int *)(*piVar23 + (int)unaff_s0 * 8);\n    if (*(char *)(piVar10 + 1) == '\b') {\n      iVar13 = *piVar10;\n      if (iVar13 + 1 < (int)param_3) {\n        param_4[(iVar13 + 1) * 2] = (int ******)local_48;\n        (param_4 + (iVar13 + 1) * 2)[1] = (int ******)0xffffffff;\n      }\nLAB_00021cec:\n      pppppppiVar11 = (int *******)param_4[1];\n    }\n    else {\n      if ((*(char *)(piVar10 + 1) != '\t') || (iVar13 = *piVar10 + 1, (int)param_3 <= iVar13))\n      goto LAB_00021cec;\n      pppppppiVar17 = param_4 + iVar13 * 2;\n      if ((int)*pppppppiVar17 < (int)local_48) {\n        pppppppiVar17[1] = (int ******)local_48;\n        pppppppiVar17 = param_4;\n        pppppppiVar18 = pppppppiVar15;\n        (*(code *)puVar24)(local_70);\n        pppppppiVar11 = (int *******)param_4[1];\n      }\n      else {\n        if (((piVar10[1] & 0x1000U) == 0) ||\n           (pppppppiVar18 = pppppppiVar15, local_70[iVar13 * 2] == (int ******)0xffffffff)) {\n          pppppppiVar17[1] = (int ******)local_48;\n          goto LAB_00021cec;\n        }\n        pppppppiVar17 = local_70;\n        (*(code *)PTR_memcpy_0003e34c)(param_4);\n        pppppppiVar11 = (int *******)param_4[1];\n      }\n    }\n    if ((pppppppiVar11 == unaff_s2) && ((int *******)param_2[0x18] == unaff_s0)) {\n      if (unaff_s5 == (int **)0x0) {\n        (*(code *)PTR_free_0003e354)(local_3c);\n        if (bVar1) {\n          (*(code *)PTR_free_0003e354)(local_70);\n          iVar13 = 0;\n        }\n        else {\n          iVar13 = 0;\n        }\n      }\n      else {\n        if (param_3 != (int *******)0x0) {\n          pppppppiVar9 = (int *******)0x0;\n          pppppppiVar18 = (int *******)0xffffffff;\n          pppppppiVar11 = param_4;\n          do {\n            if ((-1 < (int)*pppppppiVar11) &&\n               (pppppppiVar17 = (int *******)pppppppiVar11[1],\n               (int *******)pppppppiVar11[1] == (int *******)0xffffffff)) break;\n            pppppppiVar9 = (int *******)((int)pppppppiVar9 + 1);\n            pppppppiVar11 = pppppppiVar11 + 2;\n            pppppppiVar17 = param_3;\n          } while (param_3 != pppppppiVar9);\n          if (pppppppiVar9 != param_3) {\n            *(int ********)(puVar25 + 0x10) = &local_44;\n            pppppppiVar17 = (int *******)&local_48;\n            pppppppiVar18 = param_3;\n            pppppppiVar19 = param_4;\n            unaff_s0 = (int *******)(*pcVar5)(unaff_s5);\n            goto LAB_00021d04;\n          }\n        }\n        (*(code *)PTR_free_0003e354)(local_3c);\n        if (bVar1) {\n          (*(code *)PTR_free_0003e354)(local_70);\n        }\n        iVar13 = FUN_0001eb94(unaff_s5);\n      }\n      goto LAB_00021ed8;\n    }\nLAB_00021d04:\n    unaff_s2 = (int *******)param_2[0x15];\n    unaff_s3 = (int ******)((int)unaff_s0 * 8);\n    ppppppiVar12 = *unaff_s2 + (int)unaff_s0 * 2;\n    if ((*(byte *)(ppppppiVar12 + 1) & 8) == 0) {\n      if (((uint)ppppppiVar12[1] & 0x800) == 0) {\n        if (*(byte *)(ppppppiVar12 + 1) == 4) {\n          ppppppiVar16 = (param_4 + ((int)*ppppppiVar12 + 1) * 2)[1];\n          ppppppiVar12 = param_4[((int)*ppppppiVar12 + 1) * 2];\n          unaff_s6 = (int *******)((int)ppppppiVar16 - (int)ppppppiVar12);\n          if (unaff_s5 == (int **)0x0) {\n            pppppppiVar17 = unaff_s0;\n            if (unaff_s6 != (int *******)0x0) goto LAB_00021da8;\nLAB_00021dd0:\n            pppppppiVar17 = unaff_s0;\n            iVar13 = (*pcVar7)(&local_44);\n            if (iVar13 == 0) goto LAB_00021b34;\n            pppppppiVar11 = (int *******)*unaff_s2[5][(int)unaff_s0 * 3 + 2];\n            pppppppiVar17 = pppppppiVar11;\n            iVar13 = (*pcVar6)(param_2[0x19][(int)local_48] + 1);\n            if (iVar13 != 0) goto LAB_00021ca8;\n            goto LAB_00021c18;\n          }\n          if ((ppppppiVar12 != (int ******)0xffffffff) && (ppppppiVar16 != (int ******)0xffffffff))\n          {\n            if (unaff_s6 == (int *******)0x0) goto LAB_00021dd0;\n            pppppppiVar17 = (int *******)((int)param_2[1] + (int)local_48);\n            pppppppiVar18 = unaff_s6;\n            iVar13 = (*(code *)PTR_memcmp_0003e338)((int)param_2[1] + (int)ppppppiVar12);\n            if (iVar13 == 0) goto LAB_00021da8;\n          }\n        }\n        else {\nLAB_00021c18:\n          unaff_s6 = local_48;\n          pppppppiVar17 = (int *******)(*unaff_s2 + (int)unaff_s0 * 2);\n          pppppppiVar18 = local_48;\n          iVar13 = FUN_0001c4f8(param_2);\n          if (iVar13 != 0) {\n            pppppppiVar11 = (int *******)unaff_s2[3][(int)unaff_s0];\n            local_48 = (int *******)((int)unaff_s6 + 1);\n            goto LAB_00021c5c;\n          }\n        }\n      }\n      else {\n        pppppppiVar17 = unaff_s0;\n        pppppppiVar18 = param_2;\n        pppppppiVar19 = local_48;\n        unaff_s6 = (int *******)FUN_000200a0(unaff_s2);\n        if (unaff_s6 == (int *******)0x0) goto LAB_00021c18;\nLAB_00021da8:\n        pppppppiVar11 = (int *******)unaff_s2[3][(int)unaff_s0];\n        local_48 = (int *******)((int)unaff_s6 + (int)local_48);\nLAB_00021c5c:\n        unaff_s6 = local_48;\n        if (unaff_s5 == (int **)0x0) {\nLAB_00021ca4:\n          local_40 = 0;\n          goto LAB_00021ca8;\n        }\n        unaff_s6 = (int *******)((int)local_48 * 4);\n        if ((int)local_48 <= (int)param_2[0x17]) {\n          unaff_s6 = (int *******)(param_2[0x19] + (int)local_48);\n          pppppppiVar17 = pppppppiVar11;\n          if ((*unaff_s6 != (int ******)0x0) && (iVar13 = (*pcVar6)(*unaff_s6 + 1), iVar13 != 0))\n          goto LAB_00021ca4;\n        }\n      }\nLAB_00021f3c:\n      unaff_s0 = (int *******)0xffffffff;\n      goto LAB_00021f44;\n    }\n    pppppiVar8 = param_2[0x19][(int)local_48];\n    unaff_s2 = (int *******)(unaff_s2[5] + (int)unaff_s0 * 3);\n    pppppppiVar17 = unaff_s0;\n    iVar13 = (*pcVar7)(&local_44);\n    if (iVar13 == 0) goto LAB_00021b34;\n    unaff_s6 = (int *******)unaff_s2[1];\n    if ((int)unaff_s6 < 1) goto LAB_00021f3c;\n    unaff_s3 = unaff_s2[2];\n    unaff_s2 = (int *******)0x0;\n    unaff_s0 = (int *******)0xffffffff;\n    do {\n      pppppppiVar9 = (int *******)*unaff_s3;\n      pppppppiVar17 = pppppppiVar9;\n      iVar13 = (*pcVar6)(pppppiVar8 + 1);\n      pppppppiVar11 = unaff_s0;\n      if ((iVar13 != 0) &&\n         (pppppppiVar17 = unaff_s0, pppppppiVar11 = pppppppiVar9,\n         unaff_s0 != (int *******)0xffffffff)) {\n        iVar13 = (*pcVar6)(&local_44);\n        pppppppiVar4 = local_48;\n        if ((iVar13 == 0) &&\n           (pppppppiVar11 = unaff_s0, unaff_s6 = local_48, unaff_s5 != (int **)0x0)) {\n          unaff_s2 = (int *******)*unaff_s5;\n          *unaff_s5 = (int *)((int)unaff_s2 + 1);\n          pppppppiVar17 = (int *******)unaff_s5[1];\n          if ((int *******)((int)unaff_s2 + 1) == pppppppiVar17) {\n            pppppppiVar17 = (int *******)((int)pppppppiVar17 * 0x30);\n            piVar10 = (int *)(*(code *)PTR_realloc_0003e2fc)(unaff_s5[2]);\n            unaff_s6 = pppppppiVar4;\n            if (piVar10 == (int *)0x0) goto LAB_00021b34;\n            unaff_s5[1] = (int *)((int)unaff_s5[1] << 1);\n            unaff_s5[2] = piVar10;\n          }\n          unaff_s3 = (int ******)((int)unaff_s2 * 0x18);\n          unaff_s5[2][(int)unaff_s2 * 6] = (int)pppppppiVar4;\n          *(int ********)((int)unaff_s3 + (int)(unaff_s5[2] + 1)) = pppppppiVar9;\n          unaff_s2 = (int *******)(unaff_s5[2] + (int)unaff_s2 * 6);\n          ppppppiVar12 = (int ******)(*(code *)PTR_malloc_0003e2f8)(pppppppiVar15);\n          unaff_s2[2] = ppppppiVar12;\n          pppppppiVar18 = pppppppiVar15;\n          unaff_s6 = pppppppiVar15;\n          if (*(int *)((int)unaff_s3 + (int)(unaff_s5[2] + 2)) == 0) goto LAB_00021b34;\n          (*(code *)PTR_memcpy_0003e34c)(*(int *)((int)unaff_s3 + (int)(unaff_s5[2] + 2)),param_4);\n          pppppppiVar17 = &local_44;\n          iVar13 = FUN_0001b67c((int *)((int)unaff_s3 + (int)(unaff_s5[2] + 3)));\n          if (iVar13 != 0) goto LAB_00021b34;\n        }\n        break;\n      }\n      unaff_s2 = (int *******)((int)unaff_s2 + 1);\n      unaff_s3 = unaff_s3 + 1;\n      unaff_s0 = pppppppiVar11;\n    } while (unaff_s6 != unaff_s2);\nLAB_00021ca8:\n    unaff_s0 = pppppppiVar11;\n    if ((int)pppppppiVar11 < 0) {\nLAB_00021f44:\n      if (unaff_s0 == (int *******)&SUB_fffffffe) {\nLAB_00021b34:\n        (*(code *)PTR_free_0003e354)(local_3c);\n        if (bVar1) {\n          (*(code *)PTR_free_0003e354)(local_70);\n        }\n        FUN_0001eb94(unaff_s5);\n        iVar13 = 0xc;\n        goto LAB_00021ed8;\n      }\n      if (unaff_s5 == (int **)0x0) {\n        (*(code *)PTR_free_0003e354)();\n        if (bVar1) {\n          (*(code *)PTR_free_0003e354)(local_70);\n          iVar13 = 1;\n        }\n        else {\n          iVar13 = 1;\n        }\n        goto LAB_00021ed8;\n      }\n      *(int ********)(puVar25 + 0x10) = &local_44;\n      pppppppiVar17 = (int *******)&local_48;\n      pppppppiVar18 = param_3;\n      pppppppiVar19 = param_4;\n      unaff_s0 = (int *******)(*pcVar5)(unaff_s5);\n    }\n  }" while (parenthesized_expression "(unaff_s2 = local_48, puVar24 = PTR_memcpy_0003e34c, puVar26 = puVar25,\n        (int)local_48 <= (int)param_4[1])" ( (comma_expression "unaff_s2 = local_48, puVar24 = PTR_memcpy_0003e34c, puVar26 = puVar25,\n        (int)local_48 <= (int)param_4[1]" (assignment_expression "unaff_s2 = local_48" identifier = identifier) , (comma_expression "puVar24 = PTR_memcpy_0003e34c, puVar26 = puVar25,\n        (int)local_48 <= (int)param_4[1]" (assignment_expression "puVar24 = PTR_memcpy_0003e34c" identifier = identifier) , (comma_expression "puVar26 = puVar25,\n        (int)local_48 <= (int)param_4[1]" (assignment_expression "puVar26 = puVar25" identifier = identifier) , (binary_expression "(int)local_48 <= (int)param_4[1]" (cast_expression "(int)local_48" ( (type_descriptor "int" primitive_type) ) identifier) <= (cast_expression "(int)param_4[1]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "param_4[1]" identifier [ number_literal ])))))) )) (compound_statement "{\n    piVar10 = (int *)(*piVar23 + (int)unaff_s0 * 8);\n    if (*(char *)(piVar10 + 1) == '\b') {\n      iVar13 = *piVar10;\n      if (iVar13 + 1 < (int)param_3) {\n        param_4[(iVar13 + 1) * 2] = (int ******)local_48;\n        (param_4 + (iVar13 + 1) * 2)[1] = (int ******)0xffffffff;\n      }\nLAB_00021cec:\n      pppppppiVar11 = (int *******)param_4[1];\n    }\n    else {\n      if ((*(char *)(piVar10 + 1) != '\t') || (iVar13 = *piVar10 + 1, (int)param_3 <= iVar13))\n      goto LAB_00021cec;\n      pppppppiVar17 = param_4 + iVar13 * 2;\n      if ((int)*pppppppiVar17 < (int)local_48) {\n        pppppppiVar17[1] = (int ******)local_48;\n        pppppppiVar17 = param_4;\n        pppppppiVar18 = pppppppiVar15;\n        (*(code *)puVar24)(local_70);\n        pppppppiVar11 = (int *******)param_4[1];\n      }\n      else {\n        if (((piVar10[1] & 0x1000U) == 0) ||\n           (pppppppiVar18 = pppppppiVar15, local_70[iVar13 * 2] == (int ******)0xffffffff)) {\n          pppppppiVar17[1] = (int ******)local_48;\n          goto LAB_00021cec;\n        }\n        pppppppiVar17 = local_70;\n        (*(code *)PTR_memcpy_0003e34c)(param_4);\n        pppppppiVar11 = (int *******)param_4[1];\n      }\n    }\n    if ((pppppppiVar11 == unaff_s2) && ((int *******)param_2[0x18] == unaff_s0)) {\n      if (unaff_s5 == (int **)0x0) {\n        (*(code *)PTR_free_0003e354)(local_3c);\n        if (bVar1) {\n          (*(code *)PTR_free_0003e354)(local_70);\n          iVar13 = 0;\n        }\n        else {\n          iVar13 = 0;\n        }\n      }\n      else {\n        if (param_3 != (int *******)0x0) {\n          pppppppiVar9 = (int *******)0x0;\n          pppppppiVar18 = (int *******)0xffffffff;\n          pppppppiVar11 = param_4;\n          do {\n            if ((-1 < (int)*pppppppiVar11) &&\n               (pppppppiVar17 = (int *******)pppppppiVar11[1],\n               (int *******)pppppppiVar11[1] == (int *******)0xffffffff)) break;\n            pppppppiVar9 = (int *******)((int)pppppppiVar9 + 1);\n            pppppppiVar11 = pppppppiVar11 + 2;\n            pppppppiVar17 = param_3;\n          } while (param_3 != pppppppiVar9);\n          if (pppppppiVar9 != param_3) {\n            *(int ********)(puVar25 + 0x10) = &local_44;\n            pppppppiVar17 = (int *******)&local_48;\n            pppppppiVar18 = param_3;\n            pppppppiVar19 = param_4;\n            unaff_s0 = (int *******)(*pcVar5)(unaff_s5);\n            goto LAB_00021d04;\n          }\n        }\n        (*(code *)PTR_free_0003e354)(local_3c);\n        if (bVar1) {\n          (*(code *)PTR_free_0003e354)(local_70);\n        }\n        iVar13 = FUN_0001eb94(unaff_s5);\n      }\n      goto LAB_00021ed8;\n    }\nLAB_00021d04:\n    unaff_s2 = (int *******)param_2[0x15];\n    unaff_s3 = (int ******)((int)unaff_s0 * 8);\n    ppppppiVar12 = *unaff_s2 + (int)unaff_s0 * 2;\n    if ((*(byte *)(ppppppiVar12 + 1) & 8) == 0) {\n      if (((uint)ppppppiVar12[1] & 0x800) == 0) {\n        if (*(byte *)(ppppppiVar12 + 1) == 4) {\n          ppppppiVar16 = (param_4 + ((int)*ppppppiVar12 + 1) * 2)[1];\n          ppppppiVar12 = param_4[((int)*ppppppiVar12 + 1) * 2];\n          unaff_s6 = (int *******)((int)ppppppiVar16 - (int)ppppppiVar12);\n          if (unaff_s5 == (int **)0x0) {\n            pppppppiVar17 = unaff_s0;\n            if (unaff_s6 != (int *******)0x0) goto LAB_00021da8;\nLAB_00021dd0:\n            pppppppiVar17 = unaff_s0;\n            iVar13 = (*pcVar7)(&local_44);\n            if (iVar13 == 0) goto LAB_00021b34;\n            pppppppiVar11 = (int *******)*unaff_s2[5][(int)unaff_s0 * 3 + 2];\n            pppppppiVar17 = pppppppiVar11;\n            iVar13 = (*pcVar6)(param_2[0x19][(int)local_48] + 1);\n            if (iVar13 != 0) goto LAB_00021ca8;\n            goto LAB_00021c18;\n          }\n          if ((ppppppiVar12 != (int ******)0xffffffff) && (ppppppiVar16 != (int ******)0xffffffff))\n          {\n            if (unaff_s6 == (int *******)0x0) goto LAB_00021dd0;\n            pppppppiVar17 = (int *******)((int)param_2[1] + (int)local_48);\n            pppppppiVar18 = unaff_s6;\n            iVar13 = (*(code *)PTR_memcmp_0003e338)((int)param_2[1] + (int)ppppppiVar12);\n            if (iVar13 == 0) goto LAB_00021da8;\n          }\n        }\n        else {\nLAB_00021c18:\n          unaff_s6 = local_48;\n          pppppppiVar17 = (int *******)(*unaff_s2 + (int)unaff_s0 * 2);\n          pppppppiVar18 = local_48;\n          iVar13 = FUN_0001c4f8(param_2);\n          if (iVar13 != 0) {\n            pppppppiVar11 = (int *******)unaff_s2[3][(int)unaff_s0];\n            local_48 = (int *******)((int)unaff_s6 + 1);\n            goto LAB_00021c5c;\n          }\n        }\n      }\n      else {\n        pppppppiVar17 = unaff_s0;\n        pppppppiVar18 = param_2;\n        pppppppiVar19 = local_48;\n        unaff_s6 = (int *******)FUN_000200a0(unaff_s2);\n        if (unaff_s6 == (int *******)0x0) goto LAB_00021c18;\nLAB_00021da8:\n        pppppppiVar11 = (int *******)unaff_s2[3][(int)unaff_s0];\n        local_48 = (int *******)((int)unaff_s6 + (int)local_48);\nLAB_00021c5c:\n        unaff_s6 = local_48;\n        if (unaff_s5 == (int **)0x0) {\nLAB_00021ca4:\n          local_40 = 0;\n          goto LAB_00021ca8;\n        }\n        unaff_s6 = (int *******)((int)local_48 * 4);\n        if ((int)local_48 <= (int)param_2[0x17]) {\n          unaff_s6 = (int *******)(param_2[0x19] + (int)local_48);\n          pppppppiVar17 = pppppppiVar11;\n          if ((*unaff_s6 != (int ******)0x0) && (iVar13 = (*pcVar6)(*unaff_s6 + 1), iVar13 != 0))\n          goto LAB_00021ca4;\n        }\n      }\nLAB_00021f3c:\n      unaff_s0 = (int *******)0xffffffff;\n      goto LAB_00021f44;\n    }\n    pppppiVar8 = param_2[0x19][(int)local_48];\n    unaff_s2 = (int *******)(unaff_s2[5] + (int)unaff_s0 * 3);\n    pppppppiVar17 = unaff_s0;\n    iVar13 = (*pcVar7)(&local_44);\n    if (iVar13 == 0) goto LAB_00021b34;\n    unaff_s6 = (int *******)unaff_s2[1];\n    if ((int)unaff_s6 < 1) goto LAB_00021f3c;\n    unaff_s3 = unaff_s2[2];\n    unaff_s2 = (int *******)0x0;\n    unaff_s0 = (int *******)0xffffffff;\n    do {\n      pppppppiVar9 = (int *******)*unaff_s3;\n      pppppppiVar17 = pppppppiVar9;\n      iVar13 = (*pcVar6)(pppppiVar8 + 1);\n      pppppppiVar11 = unaff_s0;\n      if ((iVar13 != 0) &&\n         (pppppppiVar17 = unaff_s0, pppppppiVar11 = pppppppiVar9,\n         unaff_s0 != (int *******)0xffffffff)) {\n        iVar13 = (*pcVar6)(&local_44);\n        pppppppiVar4 = local_48;\n        if ((iVar13 == 0) &&\n           (pppppppiVar11 = unaff_s0, unaff_s6 = local_48, unaff_s5 != (int **)0x0)) {\n          unaff_s2 = (int *******)*unaff_s5;\n          *unaff_s5 = (int *)((int)unaff_s2 + 1);\n          pppppppiVar17 = (int *******)unaff_s5[1];\n          if ((int *******)((int)unaff_s2 + 1) == pppppppiVar17) {\n            pppppppiVar17 = (int *******)((int)pppppppiVar17 * 0x30);\n            piVar10 = (int *)(*(code *)PTR_realloc_0003e2fc)(unaff_s5[2]);\n            unaff_s6 = pppppppiVar4;\n            if (piVar10 == (int *)0x0) goto LAB_00021b34;\n            unaff_s5[1] = (int *)((int)unaff_s5[1] << 1);\n            unaff_s5[2] = piVar10;\n          }\n          unaff_s3 = (int ******)((int)unaff_s2 * 0x18);\n          unaff_s5[2][(int)unaff_s2 * 6] = (int)pppppppiVar4;\n          *(int ********)((int)unaff_s3 + (int)(unaff_s5[2] + 1)) = pppppppiVar9;\n          unaff_s2 = (int *******)(unaff_s5[2] + (int)unaff_s2 * 6);\n          ppppppiVar12 = (int ******)(*(code *)PTR_malloc_0003e2f8)(pppppppiVar15);\n          unaff_s2[2] = ppppppiVar12;\n          pppppppiVar18 = pppppppiVar15;\n          unaff_s6 = pppppppiVar15;\n          if (*(int *)((int)unaff_s3 + (int)(unaff_s5[2] + 2)) == 0) goto LAB_00021b34;\n          (*(code *)PTR_memcpy_0003e34c)(*(int *)((int)unaff_s3 + (int)(unaff_s5[2] + 2)),param_4);\n          pppppppiVar17 = &local_44;\n          iVar13 = FUN_0001b67c((int *)((int)unaff_s3 + (int)(unaff_s5[2] + 3)));\n          if (iVar13 != 0) goto LAB_00021b34;\n        }\n        break;\n      }\n      unaff_s2 = (int *******)((int)unaff_s2 + 1);\n      unaff_s3 = unaff_s3 + 1;\n      unaff_s0 = pppppppiVar11;\n    } while (unaff_s6 != unaff_s2);\nLAB_00021ca8:\n    unaff_s0 = pppppppiVar11;\n    if ((int)pppppppiVar11 < 0) {\nLAB_00021f44:\n      if (unaff_s0 == (int *******)&SUB_fffffffe) {\nLAB_00021b34:\n        (*(code *)PTR_free_0003e354)(local_3c);\n        if (bVar1) {\n          (*(code *)PTR_free_0003e354)(local_70);\n        }\n        FUN_0001eb94(unaff_s5);\n        iVar13 = 0xc;\n        goto LAB_00021ed8;\n      }\n      if (unaff_s5 == (int **)0x0) {\n        (*(code *)PTR_free_0003e354)();\n        if (bVar1) {\n          (*(code *)PTR_free_0003e354)(local_70);\n          iVar13 = 1;\n        }\n        else {\n          iVar13 = 1;\n        }\n        goto LAB_00021ed8;\n      }\n      *(int ********)(puVar25 + 0x10) = &local_44;\n      pppppppiVar17 = (int *******)&local_48;\n      pppppppiVar18 = param_3;\n      pppppppiVar19 = param_4;\n      unaff_s0 = (int *******)(*pcVar5)(unaff_s5);\n    }\n  }" { (expression_statement "piVar10 = (int *)(*piVar23 + (int)unaff_s0 * 8);" (assignment_expression "piVar10 = (int *)(*piVar23 + (int)unaff_s0 * 8)" identifier = (cast_expression "(int *)(*piVar23 + (int)unaff_s0 * 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar23 + (int)unaff_s0 * 8)" ( (binary_expression "*piVar23 + (int)unaff_s0 * 8" (pointer_expression "*piVar23" * identifier) + (binary_expression "(int)unaff_s0 * 8" (cast_expression "(int)unaff_s0" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) )))) ;) (if_statement "if (*(char *)(piVar10 + 1) == '\b') {\n      iVar13 = *piVar10;\n      if (iVar13 + 1 < (int)param_3) {\n        param_4[(iVar13 + 1) * 2] = (int ******)local_48;\n        (param_4 + (iVar13 + 1) * 2)[1] = (int ******)0xffffffff;\n      }\nLAB_00021cec:\n      pppppppiVar11 = (int *******)param_4[1];\n    }\n    else {\n      if ((*(char *)(piVar10 + 1) != '\t') || (iVar13 = *piVar10 + 1, (int)param_3 <= iVar13))\n      goto LAB_00021cec;\n      pppppppiVar17 = param_4 + iVar13 * 2;\n      if ((int)*pppppppiVar17 < (int)local_48) {\n        pppppppiVar17[1] = (int ******)local_48;\n        pppppppiVar17 = param_4;\n        pppppppiVar18 = pppppppiVar15;\n        (*(code *)puVar24)(local_70);\n        pppppppiVar11 = (int *******)param_4[1];\n      }\n      else {\n        if (((piVar10[1] & 0x1000U) == 0) ||\n           (pppppppiVar18 = pppppppiVar15, local_70[iVar13 * 2] == (int ******)0xffffffff)) {\n          pppppppiVar17[1] = (int ******)local_48;\n          goto LAB_00021cec;\n        }\n        pppppppiVar17 = local_70;\n        (*(code *)PTR_memcpy_0003e34c)(param_4);\n        pppppppiVar11 = (int *******)param_4[1];\n      }\n    }" if (parenthesized_expression "(*(char *)(piVar10 + 1) == '\b')" ( (binary_expression "*(char *)(piVar10 + 1) == '\b'" (pointer_expression "*(char *)(piVar10 + 1)" * (cast_expression "(char *)(piVar10 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar10 + 1)" ( (binary_expression "piVar10 + 1" identifier + number_literal) )))) == (char_literal "'\b'" ' escape_sequence ')) )) (compound_statement "{\n      iVar13 = *piVar10;\n      if (iVar13 + 1 < (int)param_3) {\n        param_4[(iVar13 + 1) * 2] = (int ******)local_48;\n        (param_4 + (iVar13 + 1) * 2)[1] = (int ******)0xffffffff;\n      }\nLAB_00021cec:\n      pppppppiVar11 = (int *******)param_4[1];\n    }" { (expression_statement "iVar13 = *piVar10;" (assignment_expression "iVar13 = *piVar10" identifier = (pointer_expression "*piVar10" * identifier)) ;) (if_statement "if (iVar13 + 1 < (int)param_3) {\n        param_4[(iVar13 + 1) * 2] = (int ******)local_48;\n        (param_4 + (iVar13 + 1) * 2)[1] = (int ******)0xffffffff;\n      }" if (parenthesized_expression "(iVar13 + 1 < (int)param_3)" ( (binary_expression "iVar13 + 1 < (int)param_3" (binary_expression "iVar13 + 1" identifier + number_literal) < (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n        param_4[(iVar13 + 1) * 2] = (int ******)local_48;\n        (param_4 + (iVar13 + 1) * 2)[1] = (int ******)0xffffffff;\n      }" { (expression_statement "param_4[(iVar13 + 1) * 2] = (int ******)local_48;" (assignment_expression "param_4[(iVar13 + 1) * 2] = (int ******)local_48" (subscript_expression "param_4[(iVar13 + 1) * 2]" identifier [ (binary_expression "(iVar13 + 1) * 2" (parenthesized_expression "(iVar13 + 1)" ( (binary_expression "iVar13 + 1" identifier + number_literal) )) * number_literal) ]) = (cast_expression "(int ******)local_48" ( (type_descriptor "int ******" primitive_type (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))))))) ) identifier)) ;) (expression_statement "(param_4 + (iVar13 + 1) * 2)[1] = (int ******)0xffffffff;" (assignment_expression "(param_4 + (iVar13 + 1) * 2)[1] = (int ******)0xffffffff" (subscript_expression "(param_4 + (iVar13 + 1) * 2)[1]" (parenthesized_expression "(param_4 + (iVar13 + 1) * 2)" ( (binary_expression "param_4 + (iVar13 + 1) * 2" identifier + (binary_expression "(iVar13 + 1) * 2" (parenthesized_expression "(iVar13 + 1)" ( (binary_expression "iVar13 + 1" identifier + number_literal) )) * number_literal)) )) [ number_literal ]) = (cast_expression "(int ******)0xffffffff" ( (type_descriptor "int ******" primitive_type (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))))))) ) number_literal)) ;) })) (labeled_statement "LAB_00021cec:\n      pppppppiVar11 = (int *******)param_4[1];" statement_identifier : (expression_statement "pppppppiVar11 = (int *******)param_4[1];" (assignment_expression "pppppppiVar11 = (int *******)param_4[1]" identifier = (cast_expression "(int *******)param_4[1]" ( (type_descriptor "int *******" primitive_type (abstract_pointer_declarator "*******" * (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))))))) ) (subscript_expression "param_4[1]" identifier [ number_literal ]))) ;)) }) (else_clause "else {\n      if ((*(char *)(piVar10 + 1) != '\t') || (iVar13 = *piVar10 + 1, (int)param_3 <= iVar13))\n      goto LAB_00021cec;\n      pppppppiVar17 = param_4 + iVar13 * 2;\n      if ((int)*pppppppiVar17 < (int)local_48) {\n        pppppppiVar17[1] = (int ******)local_48;\n        pppppppiVar17 = param_4;\n        pppppppiVar18 = pppppppiVar15;\n        (*(code *)puVar24)(local_70);\n        pppppppiVar11 = (int *******)param_4[1];\n      }\n      else {\n        if (((piVar10[1] & 0x1000U) == 0) ||\n           (pppppppiVar18 = pppppppiVar15, local_70[iVar13 * 2] == (int ******)0xffffffff)) {\n          pppppppiVar17[1] = (int ******)local_48;\n          goto LAB_00021cec;\n        }\n        pppppppiVar17 = local_70;\n        (*(code *)PTR_memcpy_0003e34c)(param_4);\n        pppppppiVar11 = (int *******)param_4[1];\n      }\n    }" else (compound_statement "{\n      if ((*(char *)(piVar10 + 1) != '\t') || (iVar13 = *piVar10 + 1, (int)param_3 <= iVar13))\n      goto LAB_00021cec;\n      pppppppiVar17 = param_4 + iVar13 * 2;\n      if ((int)*pppppppiVar17 < (int)local_48) {\n        pppppppiVar17[1] = (int ******)local_48;\n        pppppppiVar17 = param_4;\n        pppppppiVar18 = pppppppiVar15;\n        (*(code *)puVar24)(local_70);\n        pppppppiVar11 = (int *******)param_4[1];\n      }\n      else {\n        if (((piVar10[1] & 0x1000U) == 0) ||\n           (pppppppiVar18 = pppppppiVar15, local_70[iVar13 * 2] == (int ******)0xffffffff)) {\n          pppppppiVar17[1] = (int ******)local_48;\n          goto LAB_00021cec;\n        }\n        pppppppiVar17 = local_70;\n        (*(code *)PTR_memcpy_0003e34c)(param_4);\n        pppppppiVar11 = (int *******)param_4[1];\n      }\n    }" { (if_statement "if ((*(char *)(piVar10 + 1) != '\t') || (iVar13 = *piVar10 + 1, (int)param_3 <= iVar13))\n      goto LAB_00021cec;" if (parenthesized_expression "((*(char *)(piVar10 + 1) != '\t') || (iVar13 = *piVar10 + 1, (int)param_3 <= iVar13))" ( (binary_expression "(*(char *)(piVar10 + 1) != '\t') || (iVar13 = *piVar10 + 1, (int)param_3 <= iVar13)" (parenthesized_expression "(*(char *)(piVar10 + 1) != '\t')" ( (binary_expression "*(char *)(piVar10 + 1) != '\t'" (pointer_expression "*(char *)(piVar10 + 1)" * (cast_expression "(char *)(piVar10 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar10 + 1)" ( (binary_expression "piVar10 + 1" identifier + number_literal) )))) != (char_literal "'\t'" ' escape_sequence ')) )) || (parenthesized_expression "(iVar13 = *piVar10 + 1, (int)param_3 <= iVar13)" ( (comma_expression "iVar13 = *piVar10 + 1, (int)param_3 <= iVar13" (assignment_expression "iVar13 = *piVar10 + 1" identifier = (binary_expression "*piVar10 + 1" (pointer_expression "*piVar10" * identifier) + number_literal)) , (binary_expression "(int)param_3 <= iVar13" (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier) <= identifier)) ))) )) (goto_statement "goto LAB_00021cec;" goto statement_identifier ;)) (expression_statement "pppppppiVar17 = param_4 + iVar13 * 2;" (assignment_expression "pppppppiVar17 = param_4 + iVar13 * 2" identifier = (binary_expression "param_4 + iVar13 * 2" identifier + (binary_expression "iVar13 * 2" identifier * number_literal))) ;) (if_statement "if ((int)*pppppppiVar17 < (int)local_48) {\n        pppppppiVar17[1] = (int ******)local_48;\n        pppppppiVar17 = param_4;\n        pppppppiVar18 = pppppppiVar15;\n        (*(code *)puVar24)(local_70);\n        pppppppiVar11 = (int *******)param_4[1];\n      }\n      else {\n        if (((piVar10[1] & 0x1000U) == 0) ||\n           (pppppppiVar18 = pppppppiVar15, local_70[iVar13 * 2] == (int ******)0xffffffff)) {\n          pppppppiVar17[1] = (int ******)local_48;\n          goto LAB_00021cec;\n        }\n        pppppppiVar17 = local_70;\n        (*(code *)PTR_memcpy_0003e34c)(param_4);\n        pppppppiVar11 = (int *******)param_4[1];\n      }" if (parenthesized_expression "((int)*pppppppiVar17 < (int)local_48)" ( (binary_expression "(int)*pppppppiVar17 < (int)local_48" (cast_expression "(int)*pppppppiVar17" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*pppppppiVar17" * identifier)) < (cast_expression "(int)local_48" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n        pppppppiVar17[1] = (int ******)local_48;\n        pppppppiVar17 = param_4;\n        pppppppiVar18 = pppppppiVar15;\n        (*(code *)puVar24)(local_70);\n        pppppppiVar11 = (int *******)param_4[1];\n      }" { (expression_statement "pppppppiVar17[1] = (int ******)local_48;" (assignment_expression "pppppppiVar17[1] = (int ******)local_48" (subscript_expression "pppppppiVar17[1]" identifier [ number_literal ]) = (cast_expression "(int ******)local_48" ( (type_descriptor "int ******" primitive_type (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))))))) ) identifier)) ;) (expression_statement "pppppppiVar17 = param_4;" (assignment_expression "pppppppiVar17 = param_4" identifier = identifier) ;) (expression_statement "pppppppiVar18 = pppppppiVar15;" (assignment_expression "pppppppiVar18 = pppppppiVar15" identifier = identifier) ;) (expression_statement "(*(code *)puVar24)(local_70);" (call_expression "(*(code *)puVar24)(local_70)" (parenthesized_expression "(*(code *)puVar24)" ( (pointer_expression "*(code *)puVar24" * (cast_expression "(code *)puVar24" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(local_70)" ( identifier ))) ;) (expression_statement "pppppppiVar11 = (int *******)param_4[1];" (assignment_expression "pppppppiVar11 = (int *******)param_4[1]" identifier = (cast_expression "(int *******)param_4[1]" ( (type_descriptor "int *******" primitive_type (abstract_pointer_declarator "*******" * (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))))))) ) (subscript_expression "param_4[1]" identifier [ number_literal ]))) ;) }) (else_clause "else {\n        if (((piVar10[1] & 0x1000U) == 0) ||\n           (pppppppiVar18 = pppppppiVar15, local_70[iVar13 * 2] == (int ******)0xffffffff)) {\n          pppppppiVar17[1] = (int ******)local_48;\n          goto LAB_00021cec;\n        }\n        pppppppiVar17 = local_70;\n        (*(code *)PTR_memcpy_0003e34c)(param_4);\n        pppppppiVar11 = (int *******)param_4[1];\n      }" else (compound_statement "{\n        if (((piVar10[1] & 0x1000U) == 0) ||\n           (pppppppiVar18 = pppppppiVar15, local_70[iVar13 * 2] == (int ******)0xffffffff)) {\n          pppppppiVar17[1] = (int ******)local_48;\n          goto LAB_00021cec;\n        }\n        pppppppiVar17 = local_70;\n        (*(code *)PTR_memcpy_0003e34c)(param_4);\n        pppppppiVar11 = (int *******)param_4[1];\n      }" { (if_statement "if (((piVar10[1] & 0x1000U) == 0) ||\n           (pppppppiVar18 = pppppppiVar15, local_70[iVar13 * 2] == (int ******)0xffffffff)) {\n          pppppppiVar17[1] = (int ******)local_48;\n          goto LAB_00021cec;\n        }" if (parenthesized_expression "(((piVar10[1] & 0x1000U) == 0) ||\n           (pppppppiVar18 = pppppppiVar15, local_70[iVar13 * 2] == (int ******)0xffffffff))" ( (binary_expression "((piVar10[1] & 0x1000U) == 0) ||\n           (pppppppiVar18 = pppppppiVar15, local_70[iVar13 * 2] == (int ******)0xffffffff)" (parenthesized_expression "((piVar10[1] & 0x1000U) == 0)" ( (binary_expression "(piVar10[1] & 0x1000U) == 0" (parenthesized_expression "(piVar10[1] & 0x1000U)" ( (binary_expression "piVar10[1] & 0x1000U" (subscript_expression "piVar10[1]" identifier [ number_literal ]) & number_literal) )) == number_literal) )) || (parenthesized_expression "(pppppppiVar18 = pppppppiVar15, local_70[iVar13 * 2] == (int ******)0xffffffff)" ( (comma_expression "pppppppiVar18 = pppppppiVar15, local_70[iVar13 * 2] == (int ******)0xffffffff" (assignment_expression "pppppppiVar18 = pppppppiVar15" identifier = identifier) , (binary_expression "local_70[iVar13 * 2] == (int ******)0xffffffff" (subscript_expression "local_70[iVar13 * 2]" identifier [ (binary_expression "iVar13 * 2" identifier * number_literal) ]) == (cast_expression "(int ******)0xffffffff" ( (type_descriptor "int ******" primitive_type (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))))))) ) number_literal))) ))) )) (compound_statement "{\n          pppppppiVar17[1] = (int ******)local_48;\n          goto LAB_00021cec;\n        }" { (expression_statement "pppppppiVar17[1] = (int ******)local_48;" (assignment_expression "pppppppiVar17[1] = (int ******)local_48" (subscript_expression "pppppppiVar17[1]" identifier [ number_literal ]) = (cast_expression "(int ******)local_48" ( (type_descriptor "int ******" primitive_type (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))))))) ) identifier)) ;) (goto_statement "goto LAB_00021cec;" goto statement_identifier ;) })) (expression_statement "pppppppiVar17 = local_70;" (assignment_expression "pppppppiVar17 = local_70" identifier = identifier) ;) (expression_statement "(*(code *)PTR_memcpy_0003e34c)(param_4);" (call_expression "(*(code *)PTR_memcpy_0003e34c)(param_4)" (parenthesized_expression "(*(code *)PTR_memcpy_0003e34c)" ( (pointer_expression "*(code *)PTR_memcpy_0003e34c" * (cast_expression "(code *)PTR_memcpy_0003e34c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_4)" ( identifier ))) ;) (expression_statement "pppppppiVar11 = (int *******)param_4[1];" (assignment_expression "pppppppiVar11 = (int *******)param_4[1]" identifier = (cast_expression "(int *******)param_4[1]" ( (type_descriptor "int *******" primitive_type (abstract_pointer_declarator "*******" * (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))))))) ) (subscript_expression "param_4[1]" identifier [ number_literal ]))) ;) }))) }))) (if_statement "if ((pppppppiVar11 == unaff_s2) && ((int *******)param_2[0x18] == unaff_s0)) {\n      if (unaff_s5 == (int **)0x0) {\n        (*(code *)PTR_free_0003e354)(local_3c);\n        if (bVar1) {\n          (*(code *)PTR_free_0003e354)(local_70);\n          iVar13 = 0;\n        }\n        else {\n          iVar13 = 0;\n        }\n      }\n      else {\n        if (param_3 != (int *******)0x0) {\n          pppppppiVar9 = (int *******)0x0;\n          pppppppiVar18 = (int *******)0xffffffff;\n          pppppppiVar11 = param_4;\n          do {\n            if ((-1 < (int)*pppppppiVar11) &&\n               (pppppppiVar17 = (int *******)pppppppiVar11[1],\n               (int *******)pppppppiVar11[1] == (int *******)0xffffffff)) break;\n            pppppppiVar9 = (int *******)((int)pppppppiVar9 + 1);\n            pppppppiVar11 = pppppppiVar11 + 2;\n            pppppppiVar17 = param_3;\n          } while (param_3 != pppppppiVar9);\n          if (pppppppiVar9 != param_3) {\n            *(int ********)(puVar25 + 0x10) = &local_44;\n            pppppppiVar17 = (int *******)&local_48;\n            pppppppiVar18 = param_3;\n            pppppppiVar19 = param_4;\n            unaff_s0 = (int *******)(*pcVar5)(unaff_s5);\n            goto LAB_00021d04;\n          }\n        }\n        (*(code *)PTR_free_0003e354)(local_3c);\n        if (bVar1) {\n          (*(code *)PTR_free_0003e354)(local_70);\n        }\n        iVar13 = FUN_0001eb94(unaff_s5);\n      }\n      goto LAB_00021ed8;\n    }" if (parenthesized_expression "((pppppppiVar11 == unaff_s2) && ((int *******)param_2[0x18] == unaff_s0))" ( (binary_expression "(pppppppiVar11 == unaff_s2) && ((int *******)param_2[0x18] == unaff_s0)" (parenthesized_expression "(pppppppiVar11 == unaff_s2)" ( (binary_expression "pppppppiVar11 == unaff_s2" identifier == identifier) )) && (parenthesized_expression "((int *******)param_2[0x18] == unaff_s0)" ( (binary_expression "(int *******)param_2[0x18] == unaff_s0" (cast_expression "(int *******)param_2[0x18]" ( (type_descriptor "int *******" primitive_type (abstract_pointer_declarator "*******" * (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))))))) ) (subscript_expression "param_2[0x18]" identifier [ number_literal ])) == identifier) ))) )) (compound_statement "{\n      if (unaff_s5 == (int **)0x0) {\n        (*(code *)PTR_free_0003e354)(local_3c);\n        if (bVar1) {\n          (*(code *)PTR_free_0003e354)(local_70);\n          iVar13 = 0;\n        }\n        else {\n          iVar13 = 0;\n        }\n      }\n      else {\n        if (param_3 != (int *******)0x0) {\n          pppppppiVar9 = (int *******)0x0;\n          pppppppiVar18 = (int *******)0xffffffff;\n          pppppppiVar11 = param_4;\n          do {\n            if ((-1 < (int)*pppppppiVar11) &&\n               (pppppppiVar17 = (int *******)pppppppiVar11[1],\n               (int *******)pppppppiVar11[1] == (int *******)0xffffffff)) break;\n            pppppppiVar9 = (int *******)((int)pppppppiVar9 + 1);\n            pppppppiVar11 = pppppppiVar11 + 2;\n            pppppppiVar17 = param_3;\n          } while (param_3 != pppppppiVar9);\n          if (pppppppiVar9 != param_3) {\n            *(int ********)(puVar25 + 0x10) = &local_44;\n            pppppppiVar17 = (int *******)&local_48;\n            pppppppiVar18 = param_3;\n            pppppppiVar19 = param_4;\n            unaff_s0 = (int *******)(*pcVar5)(unaff_s5);\n            goto LAB_00021d04;\n          }\n        }\n        (*(code *)PTR_free_0003e354)(local_3c);\n        if (bVar1) {\n          (*(code *)PTR_free_0003e354)(local_70);\n        }\n        iVar13 = FUN_0001eb94(unaff_s5);\n      }\n      goto LAB_00021ed8;\n    }" { (if_statement "if (unaff_s5 == (int **)0x0) {\n        (*(code *)PTR_free_0003e354)(local_3c);\n        if (bVar1) {\n          (*(code *)PTR_free_0003e354)(local_70);\n          iVar13 = 0;\n        }\n        else {\n          iVar13 = 0;\n        }\n      }\n      else {\n        if (param_3 != (int *******)0x0) {\n          pppppppiVar9 = (int *******)0x0;\n          pppppppiVar18 = (int *******)0xffffffff;\n          pppppppiVar11 = param_4;\n          do {\n            if ((-1 < (int)*pppppppiVar11) &&\n               (pppppppiVar17 = (int *******)pppppppiVar11[1],\n               (int *******)pppppppiVar11[1] == (int *******)0xffffffff)) break;\n            pppppppiVar9 = (int *******)((int)pppppppiVar9 + 1);\n            pppppppiVar11 = pppppppiVar11 + 2;\n            pppppppiVar17 = param_3;\n          } while (param_3 != pppppppiVar9);\n          if (pppppppiVar9 != param_3) {\n            *(int ********)(puVar25 + 0x10) = &local_44;\n            pppppppiVar17 = (int *******)&local_48;\n            pppppppiVar18 = param_3;\n            pppppppiVar19 = param_4;\n            unaff_s0 = (int *******)(*pcVar5)(unaff_s5);\n            goto LAB_00021d04;\n          }\n        }\n        (*(code *)PTR_free_0003e354)(local_3c);\n        if (bVar1) {\n          (*(code *)PTR_free_0003e354)(local_70);\n        }\n        iVar13 = FUN_0001eb94(unaff_s5);\n      }" if (parenthesized_expression "(unaff_s5 == (int **)0x0)" ( (binary_expression "unaff_s5 == (int **)0x0" identifier == (cast_expression "(int **)0x0" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal)) )) (compound_statement "{\n        (*(code *)PTR_free_0003e354)(local_3c);\n        if (bVar1) {\n          (*(code *)PTR_free_0003e354)(local_70);\n          iVar13 = 0;\n        }\n        else {\n          iVar13 = 0;\n        }\n      }" { (expression_statement "(*(code *)PTR_free_0003e354)(local_3c);" (call_expression "(*(code *)PTR_free_0003e354)(local_3c)" (parenthesized_expression "(*(code *)PTR_free_0003e354)" ( (pointer_expression "*(code *)PTR_free_0003e354" * (cast_expression "(code *)PTR_free_0003e354" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(local_3c)" ( identifier ))) ;) (if_statement "if (bVar1) {\n          (*(code *)PTR_free_0003e354)(local_70);\n          iVar13 = 0;\n        }\n        else {\n          iVar13 = 0;\n        }" if (parenthesized_expression "(bVar1)" ( identifier )) (compound_statement "{\n          (*(code *)PTR_free_0003e354)(local_70);\n          iVar13 = 0;\n        }" { (expression_statement "(*(code *)PTR_free_0003e354)(local_70);" (call_expression "(*(code *)PTR_free_0003e354)(local_70)" (parenthesized_expression "(*(code *)PTR_free_0003e354)" ( (pointer_expression "*(code *)PTR_free_0003e354" * (cast_expression "(code *)PTR_free_0003e354" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(local_70)" ( identifier ))) ;) (expression_statement "iVar13 = 0;" (assignment_expression "iVar13 = 0" identifier = number_literal) ;) }) (else_clause "else {\n          iVar13 = 0;\n        }" else (compound_statement "{\n          iVar13 = 0;\n        }" { (expression_statement "iVar13 = 0;" (assignment_expression "iVar13 = 0" identifier = number_literal) ;) }))) }) (else_clause "else {\n        if (param_3 != (int *******)0x0) {\n          pppppppiVar9 = (int *******)0x0;\n          pppppppiVar18 = (int *******)0xffffffff;\n          pppppppiVar11 = param_4;\n          do {\n            if ((-1 < (int)*pppppppiVar11) &&\n               (pppppppiVar17 = (int *******)pppppppiVar11[1],\n               (int *******)pppppppiVar11[1] == (int *******)0xffffffff)) break;\n            pppppppiVar9 = (int *******)((int)pppppppiVar9 + 1);\n            pppppppiVar11 = pppppppiVar11 + 2;\n            pppppppiVar17 = param_3;\n          } while (param_3 != pppppppiVar9);\n          if (pppppppiVar9 != param_3) {\n            *(int ********)(puVar25 + 0x10) = &local_44;\n            pppppppiVar17 = (int *******)&local_48;\n            pppppppiVar18 = param_3;\n            pppppppiVar19 = param_4;\n            unaff_s0 = (int *******)(*pcVar5)(unaff_s5);\n            goto LAB_00021d04;\n          }\n        }\n        (*(code *)PTR_free_0003e354)(local_3c);\n        if (bVar1) {\n          (*(code *)PTR_free_0003e354)(local_70);\n        }\n        iVar13 = FUN_0001eb94(unaff_s5);\n      }" else (compound_statement "{\n        if (param_3 != (int *******)0x0) {\n          pppppppiVar9 = (int *******)0x0;\n          pppppppiVar18 = (int *******)0xffffffff;\n          pppppppiVar11 = param_4;\n          do {\n            if ((-1 < (int)*pppppppiVar11) &&\n               (pppppppiVar17 = (int *******)pppppppiVar11[1],\n               (int *******)pppppppiVar11[1] == (int *******)0xffffffff)) break;\n            pppppppiVar9 = (int *******)((int)pppppppiVar9 + 1);\n            pppppppiVar11 = pppppppiVar11 + 2;\n            pppppppiVar17 = param_3;\n          } while (param_3 != pppppppiVar9);\n          if (pppppppiVar9 != param_3) {\n            *(int ********)(puVar25 + 0x10) = &local_44;\n            pppppppiVar17 = (int *******)&local_48;\n            pppppppiVar18 = param_3;\n            pppppppiVar19 = param_4;\n            unaff_s0 = (int *******)(*pcVar5)(unaff_s5);\n            goto LAB_00021d04;\n          }\n        }\n        (*(code *)PTR_free_0003e354)(local_3c);\n        if (bVar1) {\n          (*(code *)PTR_free_0003e354)(local_70);\n        }\n        iVar13 = FUN_0001eb94(unaff_s5);\n      }" { (if_statement "if (param_3 != (int *******)0x0) {\n          pppppppiVar9 = (int *******)0x0;\n          pppppppiVar18 = (int *******)0xffffffff;\n          pppppppiVar11 = param_4;\n          do {\n            if ((-1 < (int)*pppppppiVar11) &&\n               (pppppppiVar17 = (int *******)pppppppiVar11[1],\n               (int *******)pppppppiVar11[1] == (int *******)0xffffffff)) break;\n            pppppppiVar9 = (int *******)((int)pppppppiVar9 + 1);\n            pppppppiVar11 = pppppppiVar11 + 2;\n            pppppppiVar17 = param_3;\n          } while (param_3 != pppppppiVar9);\n          if (pppppppiVar9 != param_3) {\n            *(int ********)(puVar25 + 0x10) = &local_44;\n            pppppppiVar17 = (int *******)&local_48;\n            pppppppiVar18 = param_3;\n            pppppppiVar19 = param_4;\n            unaff_s0 = (int *******)(*pcVar5)(unaff_s5);\n            goto LAB_00021d04;\n          }\n        }" if (parenthesized_expression "(param_3 != (int *******)0x0)" ( (binary_expression "param_3 != (int *******)0x0" identifier != (cast_expression "(int *******)0x0" ( (type_descriptor "int *******" primitive_type (abstract_pointer_declarator "*******" * (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))))))) ) number_literal)) )) (compound_statement "{\n          pppppppiVar9 = (int *******)0x0;\n          pppppppiVar18 = (int *******)0xffffffff;\n          pppppppiVar11 = param_4;\n          do {\n            if ((-1 < (int)*pppppppiVar11) &&\n               (pppppppiVar17 = (int *******)pppppppiVar11[1],\n               (int *******)pppppppiVar11[1] == (int *******)0xffffffff)) break;\n            pppppppiVar9 = (int *******)((int)pppppppiVar9 + 1);\n            pppppppiVar11 = pppppppiVar11 + 2;\n            pppppppiVar17 = param_3;\n          } while (param_3 != pppppppiVar9);\n          if (pppppppiVar9 != param_3) {\n            *(int ********)(puVar25 + 0x10) = &local_44;\n            pppppppiVar17 = (int *******)&local_48;\n            pppppppiVar18 = param_3;\n            pppppppiVar19 = param_4;\n            unaff_s0 = (int *******)(*pcVar5)(unaff_s5);\n            goto LAB_00021d04;\n          }\n        }" { (expression_statement "pppppppiVar9 = (int *******)0x0;" (assignment_expression "pppppppiVar9 = (int *******)0x0" identifier = (cast_expression "(int *******)0x0" ( (type_descriptor "int *******" primitive_type (abstract_pointer_declarator "*******" * (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))))))) ) number_literal)) ;) (expression_statement "pppppppiVar18 = (int *******)0xffffffff;" (assignment_expression "pppppppiVar18 = (int *******)0xffffffff" identifier = (cast_expression "(int *******)0xffffffff" ( (type_descriptor "int *******" primitive_type (abstract_pointer_declarator "*******" * (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))))))) ) number_literal)) ;) (expression_statement "pppppppiVar11 = param_4;" (assignment_expression "pppppppiVar11 = param_4" identifier = identifier) ;) (do_statement "do {\n            if ((-1 < (int)*pppppppiVar11) &&\n               (pppppppiVar17 = (int *******)pppppppiVar11[1],\n               (int *******)pppppppiVar11[1] == (int *******)0xffffffff)) break;\n            pppppppiVar9 = (int *******)((int)pppppppiVar9 + 1);\n            pppppppiVar11 = pppppppiVar11 + 2;\n            pppppppiVar17 = param_3;\n          } while (param_3 != pppppppiVar9);" do (compound_statement "{\n            if ((-1 < (int)*pppppppiVar11) &&\n               (pppppppiVar17 = (int *******)pppppppiVar11[1],\n               (int *******)pppppppiVar11[1] == (int *******)0xffffffff)) break;\n            pppppppiVar9 = (int *******)((int)pppppppiVar9 + 1);\n            pppppppiVar11 = pppppppiVar11 + 2;\n            pppppppiVar17 = param_3;\n          }" { (if_statement "if ((-1 < (int)*pppppppiVar11) &&\n               (pppppppiVar17 = (int *******)pppppppiVar11[1],\n               (int *******)pppppppiVar11[1] == (int *******)0xffffffff)) break;" if (parenthesized_expression "((-1 < (int)*pppppppiVar11) &&\n               (pppppppiVar17 = (int *******)pppppppiVar11[1],\n               (int *******)pppppppiVar11[1] == (int *******)0xffffffff))" ( (binary_expression "(-1 < (int)*pppppppiVar11) &&\n               (pppppppiVar17 = (int *******)pppppppiVar11[1],\n               (int *******)pppppppiVar11[1] == (int *******)0xffffffff)" (parenthesized_expression "(-1 < (int)*pppppppiVar11)" ( (binary_expression "-1 < (int)*pppppppiVar11" number_literal < (cast_expression "(int)*pppppppiVar11" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*pppppppiVar11" * identifier))) )) && (parenthesized_expression "(pppppppiVar17 = (int *******)pppppppiVar11[1],\n               (int *******)pppppppiVar11[1] == (int *******)0xffffffff)" ( (comma_expression "pppppppiVar17 = (int *******)pppppppiVar11[1],\n               (int *******)pppppppiVar11[1] == (int *******)0xffffffff" (assignment_expression "pppppppiVar17 = (int *******)pppppppiVar11[1]" identifier = (cast_expression "(int *******)pppppppiVar11[1]" ( (type_descriptor "int *******" primitive_type (abstract_pointer_declarator "*******" * (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))))))) ) (subscript_expression "pppppppiVar11[1]" identifier [ number_literal ]))) , (binary_expression "(int *******)pppppppiVar11[1] == (int *******)0xffffffff" (cast_expression "(int *******)pppppppiVar11[1]" ( (type_descriptor "int *******" primitive_type (abstract_pointer_declarator "*******" * (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))))))) ) (subscript_expression "pppppppiVar11[1]" identifier [ number_literal ])) == (cast_expression "(int *******)0xffffffff" ( (type_descriptor "int *******" primitive_type (abstract_pointer_declarator "*******" * (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))))))) ) number_literal))) ))) )) (break_statement "break;" break ;)) (expression_statement "pppppppiVar9 = (int *******)((int)pppppppiVar9 + 1);" (assignment_expression "pppppppiVar9 = (int *******)((int)pppppppiVar9 + 1)" identifier = (cast_expression "(int *******)((int)pppppppiVar9 + 1)" ( (type_descriptor "int *******" primitive_type (abstract_pointer_declarator "*******" * (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))))))) ) (parenthesized_expression "((int)pppppppiVar9 + 1)" ( (binary_expression "(int)pppppppiVar9 + 1" (cast_expression "(int)pppppppiVar9" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "pppppppiVar11 = pppppppiVar11 + 2;" (assignment_expression "pppppppiVar11 = pppppppiVar11 + 2" identifier = (binary_expression "pppppppiVar11 + 2" identifier + number_literal)) ;) (expression_statement "pppppppiVar17 = param_3;" (assignment_expression "pppppppiVar17 = param_3" identifier = identifier) ;) }) while (parenthesized_expression "(param_3 != pppppppiVar9)" ( (binary_expression "param_3 != pppppppiVar9" identifier != identifier) )) ;) (if_statement "if (pppppppiVar9 != param_3) {\n            *(int ********)(puVar25 + 0x10) = &local_44;\n            pppppppiVar17 = (int *******)&local_48;\n            pppppppiVar18 = param_3;\n            pppppppiVar19 = param_4;\n            unaff_s0 = (int *******)(*pcVar5)(unaff_s5);\n            goto LAB_00021d04;\n          }" if (parenthesized_expression "(pppppppiVar9 != param_3)" ( (binary_expression "pppppppiVar9 != param_3" identifier != identifier) )) (compound_statement "{\n            *(int ********)(puVar25 + 0x10) = &local_44;\n            pppppppiVar17 = (int *******)&local_48;\n            pppppppiVar18 = param_3;\n            pppppppiVar19 = param_4;\n            unaff_s0 = (int *******)(*pcVar5)(unaff_s5);\n            goto LAB_00021d04;\n          }" { (expression_statement "*(int ********)(puVar25 + 0x10) = &local_44;" (assignment_expression "*(int ********)(puVar25 + 0x10) = &local_44" (pointer_expression "*(int ********)(puVar25 + 0x10)" * (cast_expression "(int ********)(puVar25 + 0x10)" ( (type_descriptor "int ********" primitive_type (abstract_pointer_declarator "********" * (abstract_pointer_declarator "*******" * (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))))))))) ) (parenthesized_expression "(puVar25 + 0x10)" ( (binary_expression "puVar25 + 0x10" identifier + number_literal) )))) = (pointer_expression "&local_44" & identifier)) ;) (expression_statement "pppppppiVar17 = (int *******)&local_48;" (assignment_expression "pppppppiVar17 = (int *******)&local_48" identifier = (cast_expression "(int *******)&local_48" ( (type_descriptor "int *******" primitive_type (abstract_pointer_declarator "*******" * (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))))))) ) (pointer_expression "&local_48" & identifier))) ;) (expression_statement "pppppppiVar18 = param_3;" (assignment_expression "pppppppiVar18 = param_3" identifier = identifier) ;) (expression_statement "pppppppiVar19 = param_4;" (assignment_expression "pppppppiVar19 = param_4" identifier = identifier) ;) (expression_statement "unaff_s0 = (int *******)(*pcVar5)(unaff_s5);" (assignment_expression "unaff_s0 = (int *******)(*pcVar5)(unaff_s5)" identifier = (cast_expression "(int *******)(*pcVar5)(unaff_s5)" ( (type_descriptor "int *******" primitive_type (abstract_pointer_declarator "*******" * (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))))))) ) (call_expression "(*pcVar5)(unaff_s5)" (parenthesized_expression "(*pcVar5)" ( (pointer_expression "*pcVar5" * identifier) )) (argument_list "(unaff_s5)" ( identifier ))))) ;) (goto_statement "goto LAB_00021d04;" goto statement_identifier ;) })) })) (expression_statement "(*(code *)PTR_free_0003e354)(local_3c);" (call_expression "(*(code *)PTR_free_0003e354)(local_3c)" (parenthesized_expression "(*(code *)PTR_free_0003e354)" ( (pointer_expression "*(code *)PTR_free_0003e354" * (cast_expression "(code *)PTR_free_0003e354" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(local_3c)" ( identifier ))) ;) (if_statement "if (bVar1) {\n          (*(code *)PTR_free_0003e354)(local_70);\n        }" if (parenthesized_expression "(bVar1)" ( identifier )) (compound_statement "{\n          (*(code *)PTR_free_0003e354)(local_70);\n        }" { (expression_statement "(*(code *)PTR_free_0003e354)(local_70);" (call_expression "(*(code *)PTR_free_0003e354)(local_70)" (parenthesized_expression "(*(code *)PTR_free_0003e354)" ( (pointer_expression "*(code *)PTR_free_0003e354" * (cast_expression "(code *)PTR_free_0003e354" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(local_70)" ( identifier ))) ;) })) (expression_statement "iVar13 = FUN_0001eb94(unaff_s5);" (assignment_expression "iVar13 = FUN_0001eb94(unaff_s5)" identifier = (call_expression "FUN_0001eb94(unaff_s5)" identifier (argument_list "(unaff_s5)" ( identifier )))) ;) }))) (goto_statement "goto LAB_00021ed8;" goto statement_identifier ;) })) (labeled_statement "LAB_00021d04:\n    unaff_s2 = (int *******)param_2[0x15];" statement_identifier : (expression_statement "unaff_s2 = (int *******)param_2[0x15];" (assignment_expression "unaff_s2 = (int *******)param_2[0x15]" identifier = (cast_expression "(int *******)param_2[0x15]" ( (type_descriptor "int *******" primitive_type (abstract_pointer_declarator "*******" * (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))))))) ) (subscript_expression "param_2[0x15]" identifier [ number_literal ]))) ;)) (expression_statement "unaff_s3 = (int ******)((int)unaff_s0 * 8);" (assignment_expression "unaff_s3 = (int ******)((int)unaff_s0 * 8)" identifier = (cast_expression "(int ******)((int)unaff_s0 * 8)" ( (type_descriptor "int ******" primitive_type (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))))))) ) (parenthesized_expression "((int)unaff_s0 * 8)" ( (binary_expression "(int)unaff_s0 * 8" (cast_expression "(int)unaff_s0" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) )))) ;) (expression_statement "ppppppiVar12 = *unaff_s2 + (int)unaff_s0 * 2;" (assignment_expression "ppppppiVar12 = *unaff_s2 + (int)unaff_s0 * 2" identifier = (binary_expression "*unaff_s2 + (int)unaff_s0 * 2" (pointer_expression "*unaff_s2" * identifier) + (binary_expression "(int)unaff_s0 * 2" (cast_expression "(int)unaff_s0" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal))) ;) (if_statement "if ((*(byte *)(ppppppiVar12 + 1) & 8) == 0) {\n      if (((uint)ppppppiVar12[1] & 0x800) == 0) {\n        if (*(byte *)(ppppppiVar12 + 1) == 4) {\n          ppppppiVar16 = (param_4 + ((int)*ppppppiVar12 + 1) * 2)[1];\n          ppppppiVar12 = param_4[((int)*ppppppiVar12 + 1) * 2];\n          unaff_s6 = (int *******)((int)ppppppiVar16 - (int)ppppppiVar12);\n          if (unaff_s5 == (int **)0x0) {\n            pppppppiVar17 = unaff_s0;\n            if (unaff_s6 != (int *******)0x0) goto LAB_00021da8;\nLAB_00021dd0:\n            pppppppiVar17 = unaff_s0;\n            iVar13 = (*pcVar7)(&local_44);\n            if (iVar13 == 0) goto LAB_00021b34;\n            pppppppiVar11 = (int *******)*unaff_s2[5][(int)unaff_s0 * 3 + 2];\n            pppppppiVar17 = pppppppiVar11;\n            iVar13 = (*pcVar6)(param_2[0x19][(int)local_48] + 1);\n            if (iVar13 != 0) goto LAB_00021ca8;\n            goto LAB_00021c18;\n          }\n          if ((ppppppiVar12 != (int ******)0xffffffff) && (ppppppiVar16 != (int ******)0xffffffff))\n          {\n            if (unaff_s6 == (int *******)0x0) goto LAB_00021dd0;\n            pppppppiVar17 = (int *******)((int)param_2[1] + (int)local_48);\n            pppppppiVar18 = unaff_s6;\n            iVar13 = (*(code *)PTR_memcmp_0003e338)((int)param_2[1] + (int)ppppppiVar12);\n            if (iVar13 == 0) goto LAB_00021da8;\n          }\n        }\n        else {\nLAB_00021c18:\n          unaff_s6 = local_48;\n          pppppppiVar17 = (int *******)(*unaff_s2 + (int)unaff_s0 * 2);\n          pppppppiVar18 = local_48;\n          iVar13 = FUN_0001c4f8(param_2);\n          if (iVar13 != 0) {\n            pppppppiVar11 = (int *******)unaff_s2[3][(int)unaff_s0];\n            local_48 = (int *******)((int)unaff_s6 + 1);\n            goto LAB_00021c5c;\n          }\n        }\n      }\n      else {\n        pppppppiVar17 = unaff_s0;\n        pppppppiVar18 = param_2;\n        pppppppiVar19 = local_48;\n        unaff_s6 = (int *******)FUN_000200a0(unaff_s2);\n        if (unaff_s6 == (int *******)0x0) goto LAB_00021c18;\nLAB_00021da8:\n        pppppppiVar11 = (int *******)unaff_s2[3][(int)unaff_s0];\n        local_48 = (int *******)((int)unaff_s6 + (int)local_48);\nLAB_00021c5c:\n        unaff_s6 = local_48;\n        if (unaff_s5 == (int **)0x0) {\nLAB_00021ca4:\n          local_40 = 0;\n          goto LAB_00021ca8;\n        }\n        unaff_s6 = (int *******)((int)local_48 * 4);\n        if ((int)local_48 <= (int)param_2[0x17]) {\n          unaff_s6 = (int *******)(param_2[0x19] + (int)local_48);\n          pppppppiVar17 = pppppppiVar11;\n          if ((*unaff_s6 != (int ******)0x0) && (iVar13 = (*pcVar6)(*unaff_s6 + 1), iVar13 != 0))\n          goto LAB_00021ca4;\n        }\n      }\nLAB_00021f3c:\n      unaff_s0 = (int *******)0xffffffff;\n      goto LAB_00021f44;\n    }" if (parenthesized_expression "((*(byte *)(ppppppiVar12 + 1) & 8) == 0)" ( (binary_expression "(*(byte *)(ppppppiVar12 + 1) & 8) == 0" (parenthesized_expression "(*(byte *)(ppppppiVar12 + 1) & 8)" ( (binary_expression "*(byte *)(ppppppiVar12 + 1) & 8" (pointer_expression "*(byte *)(ppppppiVar12 + 1)" * (cast_expression "(byte *)(ppppppiVar12 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(ppppppiVar12 + 1)" ( (binary_expression "ppppppiVar12 + 1" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n      if (((uint)ppppppiVar12[1] & 0x800) == 0) {\n        if (*(byte *)(ppppppiVar12 + 1) == 4) {\n          ppppppiVar16 = (param_4 + ((int)*ppppppiVar12 + 1) * 2)[1];\n          ppppppiVar12 = param_4[((int)*ppppppiVar12 + 1) * 2];\n          unaff_s6 = (int *******)((int)ppppppiVar16 - (int)ppppppiVar12);\n          if (unaff_s5 == (int **)0x0) {\n            pppppppiVar17 = unaff_s0;\n            if (unaff_s6 != (int *******)0x0) goto LAB_00021da8;\nLAB_00021dd0:\n            pppppppiVar17 = unaff_s0;\n            iVar13 = (*pcVar7)(&local_44);\n            if (iVar13 == 0) goto LAB_00021b34;\n            pppppppiVar11 = (int *******)*unaff_s2[5][(int)unaff_s0 * 3 + 2];\n            pppppppiVar17 = pppppppiVar11;\n            iVar13 = (*pcVar6)(param_2[0x19][(int)local_48] + 1);\n            if (iVar13 != 0) goto LAB_00021ca8;\n            goto LAB_00021c18;\n          }\n          if ((ppppppiVar12 != (int ******)0xffffffff) && (ppppppiVar16 != (int ******)0xffffffff))\n          {\n            if (unaff_s6 == (int *******)0x0) goto LAB_00021dd0;\n            pppppppiVar17 = (int *******)((int)param_2[1] + (int)local_48);\n            pppppppiVar18 = unaff_s6;\n            iVar13 = (*(code *)PTR_memcmp_0003e338)((int)param_2[1] + (int)ppppppiVar12);\n            if (iVar13 == 0) goto LAB_00021da8;\n          }\n        }\n        else {\nLAB_00021c18:\n          unaff_s6 = local_48;\n          pppppppiVar17 = (int *******)(*unaff_s2 + (int)unaff_s0 * 2);\n          pppppppiVar18 = local_48;\n          iVar13 = FUN_0001c4f8(param_2);\n          if (iVar13 != 0) {\n            pppppppiVar11 = (int *******)unaff_s2[3][(int)unaff_s0];\n            local_48 = (int *******)((int)unaff_s6 + 1);\n            goto LAB_00021c5c;\n          }\n        }\n      }\n      else {\n        pppppppiVar17 = unaff_s0;\n        pppppppiVar18 = param_2;\n        pppppppiVar19 = local_48;\n        unaff_s6 = (int *******)FUN_000200a0(unaff_s2);\n        if (unaff_s6 == (int *******)0x0) goto LAB_00021c18;\nLAB_00021da8:\n        pppppppiVar11 = (int *******)unaff_s2[3][(int)unaff_s0];\n        local_48 = (int *******)((int)unaff_s6 + (int)local_48);\nLAB_00021c5c:\n        unaff_s6 = local_48;\n        if (unaff_s5 == (int **)0x0) {\nLAB_00021ca4:\n          local_40 = 0;\n          goto LAB_00021ca8;\n        }\n        unaff_s6 = (int *******)((int)local_48 * 4);\n        if ((int)local_48 <= (int)param_2[0x17]) {\n          unaff_s6 = (int *******)(param_2[0x19] + (int)local_48);\n          pppppppiVar17 = pppppppiVar11;\n          if ((*unaff_s6 != (int ******)0x0) && (iVar13 = (*pcVar6)(*unaff_s6 + 1), iVar13 != 0))\n          goto LAB_00021ca4;\n        }\n      }\nLAB_00021f3c:\n      unaff_s0 = (int *******)0xffffffff;\n      goto LAB_00021f44;\n    }" { (if_statement "if (((uint)ppppppiVar12[1] & 0x800) == 0) {\n        if (*(byte *)(ppppppiVar12 + 1) == 4) {\n          ppppppiVar16 = (param_4 + ((int)*ppppppiVar12 + 1) * 2)[1];\n          ppppppiVar12 = param_4[((int)*ppppppiVar12 + 1) * 2];\n          unaff_s6 = (int *******)((int)ppppppiVar16 - (int)ppppppiVar12);\n          if (unaff_s5 == (int **)0x0) {\n            pppppppiVar17 = unaff_s0;\n            if (unaff_s6 != (int *******)0x0) goto LAB_00021da8;\nLAB_00021dd0:\n            pppppppiVar17 = unaff_s0;\n            iVar13 = (*pcVar7)(&local_44);\n            if (iVar13 == 0) goto LAB_00021b34;\n            pppppppiVar11 = (int *******)*unaff_s2[5][(int)unaff_s0 * 3 + 2];\n            pppppppiVar17 = pppppppiVar11;\n            iVar13 = (*pcVar6)(param_2[0x19][(int)local_48] + 1);\n            if (iVar13 != 0) goto LAB_00021ca8;\n            goto LAB_00021c18;\n          }\n          if ((ppppppiVar12 != (int ******)0xffffffff) && (ppppppiVar16 != (int ******)0xffffffff))\n          {\n            if (unaff_s6 == (int *******)0x0) goto LAB_00021dd0;\n            pppppppiVar17 = (int *******)((int)param_2[1] + (int)local_48);\n            pppppppiVar18 = unaff_s6;\n            iVar13 = (*(code *)PTR_memcmp_0003e338)((int)param_2[1] + (int)ppppppiVar12);\n            if (iVar13 == 0) goto LAB_00021da8;\n          }\n        }\n        else {\nLAB_00021c18:\n          unaff_s6 = local_48;\n          pppppppiVar17 = (int *******)(*unaff_s2 + (int)unaff_s0 * 2);\n          pppppppiVar18 = local_48;\n          iVar13 = FUN_0001c4f8(param_2);\n          if (iVar13 != 0) {\n            pppppppiVar11 = (int *******)unaff_s2[3][(int)unaff_s0];\n            local_48 = (int *******)((int)unaff_s6 + 1);\n            goto LAB_00021c5c;\n          }\n        }\n      }\n      else {\n        pppppppiVar17 = unaff_s0;\n        pppppppiVar18 = param_2;\n        pppppppiVar19 = local_48;\n        unaff_s6 = (int *******)FUN_000200a0(unaff_s2);\n        if (unaff_s6 == (int *******)0x0) goto LAB_00021c18;\nLAB_00021da8:\n        pppppppiVar11 = (int *******)unaff_s2[3][(int)unaff_s0];\n        local_48 = (int *******)((int)unaff_s6 + (int)local_48);\nLAB_00021c5c:\n        unaff_s6 = local_48;\n        if (unaff_s5 == (int **)0x0) {\nLAB_00021ca4:\n          local_40 = 0;\n          goto LAB_00021ca8;\n        }\n        unaff_s6 = (int *******)((int)local_48 * 4);\n        if ((int)local_48 <= (int)param_2[0x17]) {\n          unaff_s6 = (int *******)(param_2[0x19] + (int)local_48);\n          pppppppiVar17 = pppppppiVar11;\n          if ((*unaff_s6 != (int ******)0x0) && (iVar13 = (*pcVar6)(*unaff_s6 + 1), iVar13 != 0))\n          goto LAB_00021ca4;\n        }\n      }" if (parenthesized_expression "(((uint)ppppppiVar12[1] & 0x800) == 0)" ( (binary_expression "((uint)ppppppiVar12[1] & 0x800) == 0" (parenthesized_expression "((uint)ppppppiVar12[1] & 0x800)" ( (binary_expression "(uint)ppppppiVar12[1] & 0x800" (cast_expression "(uint)ppppppiVar12[1]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "ppppppiVar12[1]" identifier [ number_literal ])) & number_literal) )) == number_literal) )) (compound_statement "{\n        if (*(byte *)(ppppppiVar12 + 1) == 4) {\n          ppppppiVar16 = (param_4 + ((int)*ppppppiVar12 + 1) * 2)[1];\n          ppppppiVar12 = param_4[((int)*ppppppiVar12 + 1) * 2];\n          unaff_s6 = (int *******)((int)ppppppiVar16 - (int)ppppppiVar12);\n          if (unaff_s5 == (int **)0x0) {\n            pppppppiVar17 = unaff_s0;\n            if (unaff_s6 != (int *******)0x0) goto LAB_00021da8;\nLAB_00021dd0:\n            pppppppiVar17 = unaff_s0;\n            iVar13 = (*pcVar7)(&local_44);\n            if (iVar13 == 0) goto LAB_00021b34;\n            pppppppiVar11 = (int *******)*unaff_s2[5][(int)unaff_s0 * 3 + 2];\n            pppppppiVar17 = pppppppiVar11;\n            iVar13 = (*pcVar6)(param_2[0x19][(int)local_48] + 1);\n            if (iVar13 != 0) goto LAB_00021ca8;\n            goto LAB_00021c18;\n          }\n          if ((ppppppiVar12 != (int ******)0xffffffff) && (ppppppiVar16 != (int ******)0xffffffff))\n          {\n            if (unaff_s6 == (int *******)0x0) goto LAB_00021dd0;\n            pppppppiVar17 = (int *******)((int)param_2[1] + (int)local_48);\n            pppppppiVar18 = unaff_s6;\n            iVar13 = (*(code *)PTR_memcmp_0003e338)((int)param_2[1] + (int)ppppppiVar12);\n            if (iVar13 == 0) goto LAB_00021da8;\n          }\n        }\n        else {\nLAB_00021c18:\n          unaff_s6 = local_48;\n          pppppppiVar17 = (int *******)(*unaff_s2 + (int)unaff_s0 * 2);\n          pppppppiVar18 = local_48;\n          iVar13 = FUN_0001c4f8(param_2);\n          if (iVar13 != 0) {\n            pppppppiVar11 = (int *******)unaff_s2[3][(int)unaff_s0];\n            local_48 = (int *******)((int)unaff_s6 + 1);\n            goto LAB_00021c5c;\n          }\n        }\n      }" { (if_statement "if (*(byte *)(ppppppiVar12 + 1) == 4) {\n          ppppppiVar16 = (param_4 + ((int)*ppppppiVar12 + 1) * 2)[1];\n          ppppppiVar12 = param_4[((int)*ppppppiVar12 + 1) * 2];\n          unaff_s6 = (int *******)((int)ppppppiVar16 - (int)ppppppiVar12);\n          if (unaff_s5 == (int **)0x0) {\n            pppppppiVar17 = unaff_s0;\n            if (unaff_s6 != (int *******)0x0) goto LAB_00021da8;\nLAB_00021dd0:\n            pppppppiVar17 = unaff_s0;\n            iVar13 = (*pcVar7)(&local_44);\n            if (iVar13 == 0) goto LAB_00021b34;\n            pppppppiVar11 = (int *******)*unaff_s2[5][(int)unaff_s0 * 3 + 2];\n            pppppppiVar17 = pppppppiVar11;\n            iVar13 = (*pcVar6)(param_2[0x19][(int)local_48] + 1);\n            if (iVar13 != 0) goto LAB_00021ca8;\n            goto LAB_00021c18;\n          }\n          if ((ppppppiVar12 != (int ******)0xffffffff) && (ppppppiVar16 != (int ******)0xffffffff))\n          {\n            if (unaff_s6 == (int *******)0x0) goto LAB_00021dd0;\n            pppppppiVar17 = (int *******)((int)param_2[1] + (int)local_48);\n            pppppppiVar18 = unaff_s6;\n            iVar13 = (*(code *)PTR_memcmp_0003e338)((int)param_2[1] + (int)ppppppiVar12);\n            if (iVar13 == 0) goto LAB_00021da8;\n          }\n        }\n        else {\nLAB_00021c18:\n          unaff_s6 = local_48;\n          pppppppiVar17 = (int *******)(*unaff_s2 + (int)unaff_s0 * 2);\n          pppppppiVar18 = local_48;\n          iVar13 = FUN_0001c4f8(param_2);\n          if (iVar13 != 0) {\n            pppppppiVar11 = (int *******)unaff_s2[3][(int)unaff_s0];\n            local_48 = (int *******)((int)unaff_s6 + 1);\n            goto LAB_00021c5c;\n          }\n        }" if (parenthesized_expression "(*(byte *)(ppppppiVar12 + 1) == 4)" ( (binary_expression "*(byte *)(ppppppiVar12 + 1) == 4" (pointer_expression "*(byte *)(ppppppiVar12 + 1)" * (cast_expression "(byte *)(ppppppiVar12 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(ppppppiVar12 + 1)" ( (binary_expression "ppppppiVar12 + 1" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n          ppppppiVar16 = (param_4 + ((int)*ppppppiVar12 + 1) * 2)[1];\n          ppppppiVar12 = param_4[((int)*ppppppiVar12 + 1) * 2];\n          unaff_s6 = (int *******)((int)ppppppiVar16 - (int)ppppppiVar12);\n          if (unaff_s5 == (int **)0x0) {\n            pppppppiVar17 = unaff_s0;\n            if (unaff_s6 != (int *******)0x0) goto LAB_00021da8;\nLAB_00021dd0:\n            pppppppiVar17 = unaff_s0;\n            iVar13 = (*pcVar7)(&local_44);\n            if (iVar13 == 0) goto LAB_00021b34;\n            pppppppiVar11 = (int *******)*unaff_s2[5][(int)unaff_s0 * 3 + 2];\n            pppppppiVar17 = pppppppiVar11;\n            iVar13 = (*pcVar6)(param_2[0x19][(int)local_48] + 1);\n            if (iVar13 != 0) goto LAB_00021ca8;\n            goto LAB_00021c18;\n          }\n          if ((ppppppiVar12 != (int ******)0xffffffff) && (ppppppiVar16 != (int ******)0xffffffff))\n          {\n            if (unaff_s6 == (int *******)0x0) goto LAB_00021dd0;\n            pppppppiVar17 = (int *******)((int)param_2[1] + (int)local_48);\n            pppppppiVar18 = unaff_s6;\n            iVar13 = (*(code *)PTR_memcmp_0003e338)((int)param_2[1] + (int)ppppppiVar12);\n            if (iVar13 == 0) goto LAB_00021da8;\n          }\n        }" { (expression_statement "ppppppiVar16 = (param_4 + ((int)*ppppppiVar12 + 1) * 2)[1];" (assignment_expression "ppppppiVar16 = (param_4 + ((int)*ppppppiVar12 + 1) * 2)[1]" identifier = (subscript_expression "(param_4 + ((int)*ppppppiVar12 + 1) * 2)[1]" (parenthesized_expression "(param_4 + ((int)*ppppppiVar12 + 1) * 2)" ( (binary_expression "param_4 + ((int)*ppppppiVar12 + 1) * 2" identifier + (binary_expression "((int)*ppppppiVar12 + 1) * 2" (parenthesized_expression "((int)*ppppppiVar12 + 1)" ( (binary_expression "(int)*ppppppiVar12 + 1" (cast_expression "(int)*ppppppiVar12" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*ppppppiVar12" * identifier)) + number_literal) )) * number_literal)) )) [ number_literal ])) ;) (expression_statement "ppppppiVar12 = param_4[((int)*ppppppiVar12 + 1) * 2];" (assignment_expression "ppppppiVar12 = param_4[((int)*ppppppiVar12 + 1) * 2]" identifier = (subscript_expression "param_4[((int)*ppppppiVar12 + 1) * 2]" identifier [ (binary_expression "((int)*ppppppiVar12 + 1) * 2" (parenthesized_expression "((int)*ppppppiVar12 + 1)" ( (binary_expression "(int)*ppppppiVar12 + 1" (cast_expression "(int)*ppppppiVar12" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*ppppppiVar12" * identifier)) + number_literal) )) * number_literal) ])) ;) (expression_statement "unaff_s6 = (int *******)((int)ppppppiVar16 - (int)ppppppiVar12);" (assignment_expression "unaff_s6 = (int *******)((int)ppppppiVar16 - (int)ppppppiVar12)" identifier = (cast_expression "(int *******)((int)ppppppiVar16 - (int)ppppppiVar12)" ( (type_descriptor "int *******" primitive_type (abstract_pointer_declarator "*******" * (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))))))) ) (parenthesized_expression "((int)ppppppiVar16 - (int)ppppppiVar12)" ( (binary_expression "(int)ppppppiVar16 - (int)ppppppiVar12" (cast_expression "(int)ppppppiVar16" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)ppppppiVar12" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (if_statement "if (unaff_s5 == (int **)0x0) {\n            pppppppiVar17 = unaff_s0;\n            if (unaff_s6 != (int *******)0x0) goto LAB_00021da8;\nLAB_00021dd0:\n            pppppppiVar17 = unaff_s0;\n            iVar13 = (*pcVar7)(&local_44);\n            if (iVar13 == 0) goto LAB_00021b34;\n            pppppppiVar11 = (int *******)*unaff_s2[5][(int)unaff_s0 * 3 + 2];\n            pppppppiVar17 = pppppppiVar11;\n            iVar13 = (*pcVar6)(param_2[0x19][(int)local_48] + 1);\n            if (iVar13 != 0) goto LAB_00021ca8;\n            goto LAB_00021c18;\n          }" if (parenthesized_expression "(unaff_s5 == (int **)0x0)" ( (binary_expression "unaff_s5 == (int **)0x0" identifier == (cast_expression "(int **)0x0" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal)) )) (compound_statement "{\n            pppppppiVar17 = unaff_s0;\n            if (unaff_s6 != (int *******)0x0) goto LAB_00021da8;\nLAB_00021dd0:\n            pppppppiVar17 = unaff_s0;\n            iVar13 = (*pcVar7)(&local_44);\n            if (iVar13 == 0) goto LAB_00021b34;\n            pppppppiVar11 = (int *******)*unaff_s2[5][(int)unaff_s0 * 3 + 2];\n            pppppppiVar17 = pppppppiVar11;\n            iVar13 = (*pcVar6)(param_2[0x19][(int)local_48] + 1);\n            if (iVar13 != 0) goto LAB_00021ca8;\n            goto LAB_00021c18;\n          }" { (expression_statement "pppppppiVar17 = unaff_s0;" (assignment_expression "pppppppiVar17 = unaff_s0" identifier = identifier) ;) (if_statement "if (unaff_s6 != (int *******)0x0) goto LAB_00021da8;" if (parenthesized_expression "(unaff_s6 != (int *******)0x0)" ( (binary_expression "unaff_s6 != (int *******)0x0" identifier != (cast_expression "(int *******)0x0" ( (type_descriptor "int *******" primitive_type (abstract_pointer_declarator "*******" * (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))))))) ) number_literal)) )) (goto_statement "goto LAB_00021da8;" goto statement_identifier ;)) (labeled_statement "LAB_00021dd0:\n            pppppppiVar17 = unaff_s0;" statement_identifier : (expression_statement "pppppppiVar17 = unaff_s0;" (assignment_expression "pppppppiVar17 = unaff_s0" identifier = identifier) ;)) (expression_statement "iVar13 = (*pcVar7)(&local_44);" (assignment_expression "iVar13 = (*pcVar7)(&local_44)" identifier = (call_expression "(*pcVar7)(&local_44)" (parenthesized_expression "(*pcVar7)" ( (pointer_expression "*pcVar7" * identifier) )) (argument_list "(&local_44)" ( (pointer_expression "&local_44" & identifier) )))) ;) (if_statement "if (iVar13 == 0) goto LAB_00021b34;" if (parenthesized_expression "(iVar13 == 0)" ( (binary_expression "iVar13 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00021b34;" goto statement_identifier ;)) (expression_statement "pppppppiVar11 = (int *******)*unaff_s2[5][(int)unaff_s0 * 3 + 2];" (assignment_expression "pppppppiVar11 = (int *******)*unaff_s2[5][(int)unaff_s0 * 3 + 2]" identifier = (cast_expression "(int *******)*unaff_s2[5][(int)unaff_s0 * 3 + 2]" ( (type_descriptor "int *******" primitive_type (abstract_pointer_declarator "*******" * (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))))))) ) (pointer_expression "*unaff_s2[5][(int)unaff_s0 * 3 + 2]" * (subscript_expression "unaff_s2[5][(int)unaff_s0 * 3 + 2]" (subscript_expression "unaff_s2[5]" identifier [ number_literal ]) [ (binary_expression "(int)unaff_s0 * 3 + 2" (binary_expression "(int)unaff_s0 * 3" (cast_expression "(int)unaff_s0" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) + number_literal) ])))) ;) (expression_statement "pppppppiVar17 = pppppppiVar11;" (assignment_expression "pppppppiVar17 = pppppppiVar11" identifier = identifier) ;) (expression_statement "iVar13 = (*pcVar6)(param_2[0x19][(int)local_48] + 1);" (assignment_expression "iVar13 = (*pcVar6)(param_2[0x19][(int)local_48] + 1)" identifier = (call_expression "(*pcVar6)(param_2[0x19][(int)local_48] + 1)" (parenthesized_expression "(*pcVar6)" ( (pointer_expression "*pcVar6" * identifier) )) (argument_list "(param_2[0x19][(int)local_48] + 1)" ( (binary_expression "param_2[0x19][(int)local_48] + 1" (subscript_expression "param_2[0x19][(int)local_48]" (subscript_expression "param_2[0x19]" identifier [ number_literal ]) [ (cast_expression "(int)local_48" ( (type_descriptor "int" primitive_type) ) identifier) ]) + number_literal) )))) ;) (if_statement "if (iVar13 != 0) goto LAB_00021ca8;" if (parenthesized_expression "(iVar13 != 0)" ( (binary_expression "iVar13 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00021ca8;" goto statement_identifier ;)) (goto_statement "goto LAB_00021c18;" goto statement_identifier ;) })) (if_statement "if ((ppppppiVar12 != (int ******)0xffffffff) && (ppppppiVar16 != (int ******)0xffffffff))\n          {\n            if (unaff_s6 == (int *******)0x0) goto LAB_00021dd0;\n            pppppppiVar17 = (int *******)((int)param_2[1] + (int)local_48);\n            pppppppiVar18 = unaff_s6;\n            iVar13 = (*(code *)PTR_memcmp_0003e338)((int)param_2[1] + (int)ppppppiVar12);\n            if (iVar13 == 0) goto LAB_00021da8;\n          }" if (parenthesized_expression "((ppppppiVar12 != (int ******)0xffffffff) && (ppppppiVar16 != (int ******)0xffffffff))" ( (binary_expression "(ppppppiVar12 != (int ******)0xffffffff) && (ppppppiVar16 != (int ******)0xffffffff)" (parenthesized_expression "(ppppppiVar12 != (int ******)0xffffffff)" ( (binary_expression "ppppppiVar12 != (int ******)0xffffffff" identifier != (cast_expression "(int ******)0xffffffff" ( (type_descriptor "int ******" primitive_type (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))))))) ) number_literal)) )) && (parenthesized_expression "(ppppppiVar16 != (int ******)0xffffffff)" ( (binary_expression "ppppppiVar16 != (int ******)0xffffffff" identifier != (cast_expression "(int ******)0xffffffff" ( (type_descriptor "int ******" primitive_type (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))))))) ) number_literal)) ))) )) (compound_statement "{\n            if (unaff_s6 == (int *******)0x0) goto LAB_00021dd0;\n            pppppppiVar17 = (int *******)((int)param_2[1] + (int)local_48);\n            pppppppiVar18 = unaff_s6;\n            iVar13 = (*(code *)PTR_memcmp_0003e338)((int)param_2[1] + (int)ppppppiVar12);\n            if (iVar13 == 0) goto LAB_00021da8;\n          }" { (if_statement "if (unaff_s6 == (int *******)0x0) goto LAB_00021dd0;" if (parenthesized_expression "(unaff_s6 == (int *******)0x0)" ( (binary_expression "unaff_s6 == (int *******)0x0" identifier == (cast_expression "(int *******)0x0" ( (type_descriptor "int *******" primitive_type (abstract_pointer_declarator "*******" * (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))))))) ) number_literal)) )) (goto_statement "goto LAB_00021dd0;" goto statement_identifier ;)) (expression_statement "pppppppiVar17 = (int *******)((int)param_2[1] + (int)local_48);" (assignment_expression "pppppppiVar17 = (int *******)((int)param_2[1] + (int)local_48)" identifier = (cast_expression "(int *******)((int)param_2[1] + (int)local_48)" ( (type_descriptor "int *******" primitive_type (abstract_pointer_declarator "*******" * (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))))))) ) (parenthesized_expression "((int)param_2[1] + (int)local_48)" ( (binary_expression "(int)param_2[1] + (int)local_48" (cast_expression "(int)param_2[1]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "param_2[1]" identifier [ number_literal ])) + (cast_expression "(int)local_48" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "pppppppiVar18 = unaff_s6;" (assignment_expression "pppppppiVar18 = unaff_s6" identifier = identifier) ;) (expression_statement "iVar13 = (*(code *)PTR_memcmp_0003e338)((int)param_2[1] + (int)ppppppiVar12);" (assignment_expression "iVar13 = (*(code *)PTR_memcmp_0003e338)((int)param_2[1] + (int)ppppppiVar12)" identifier = (call_expression "(*(code *)PTR_memcmp_0003e338)((int)param_2[1] + (int)ppppppiVar12)" (parenthesized_expression "(*(code *)PTR_memcmp_0003e338)" ( (pointer_expression "*(code *)PTR_memcmp_0003e338" * (cast_expression "(code *)PTR_memcmp_0003e338" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "((int)param_2[1] + (int)ppppppiVar12)" ( (binary_expression "(int)param_2[1] + (int)ppppppiVar12" (cast_expression "(int)param_2[1]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "param_2[1]" identifier [ number_literal ])) + (cast_expression "(int)ppppppiVar12" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (if_statement "if (iVar13 == 0) goto LAB_00021da8;" if (parenthesized_expression "(iVar13 == 0)" ( (binary_expression "iVar13 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00021da8;" goto statement_identifier ;)) })) }) (else_clause "else {\nLAB_00021c18:\n          unaff_s6 = local_48;\n          pppppppiVar17 = (int *******)(*unaff_s2 + (int)unaff_s0 * 2);\n          pppppppiVar18 = local_48;\n          iVar13 = FUN_0001c4f8(param_2);\n          if (iVar13 != 0) {\n            pppppppiVar11 = (int *******)unaff_s2[3][(int)unaff_s0];\n            local_48 = (int *******)((int)unaff_s6 + 1);\n            goto LAB_00021c5c;\n          }\n        }" else (compound_statement "{\nLAB_00021c18:\n          unaff_s6 = local_48;\n          pppppppiVar17 = (int *******)(*unaff_s2 + (int)unaff_s0 * 2);\n          pppppppiVar18 = local_48;\n          iVar13 = FUN_0001c4f8(param_2);\n          if (iVar13 != 0) {\n            pppppppiVar11 = (int *******)unaff_s2[3][(int)unaff_s0];\n            local_48 = (int *******)((int)unaff_s6 + 1);\n            goto LAB_00021c5c;\n          }\n        }" { (labeled_statement "LAB_00021c18:\n          unaff_s6 = local_48;" statement_identifier : (expression_statement "unaff_s6 = local_48;" (assignment_expression "unaff_s6 = local_48" identifier = identifier) ;)) (expression_statement "pppppppiVar17 = (int *******)(*unaff_s2 + (int)unaff_s0 * 2);" (assignment_expression "pppppppiVar17 = (int *******)(*unaff_s2 + (int)unaff_s0 * 2)" identifier = (cast_expression "(int *******)(*unaff_s2 + (int)unaff_s0 * 2)" ( (type_descriptor "int *******" primitive_type (abstract_pointer_declarator "*******" * (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))))))) ) (parenthesized_expression "(*unaff_s2 + (int)unaff_s0 * 2)" ( (binary_expression "*unaff_s2 + (int)unaff_s0 * 2" (pointer_expression "*unaff_s2" * identifier) + (binary_expression "(int)unaff_s0 * 2" (cast_expression "(int)unaff_s0" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) )))) ;) (expression_statement "pppppppiVar18 = local_48;" (assignment_expression "pppppppiVar18 = local_48" identifier = identifier) ;) (expression_statement "iVar13 = FUN_0001c4f8(param_2);" (assignment_expression "iVar13 = FUN_0001c4f8(param_2)" identifier = (call_expression "FUN_0001c4f8(param_2)" identifier (argument_list "(param_2)" ( identifier )))) ;) (if_statement "if (iVar13 != 0) {\n            pppppppiVar11 = (int *******)unaff_s2[3][(int)unaff_s0];\n            local_48 = (int *******)((int)unaff_s6 + 1);\n            goto LAB_00021c5c;\n          }" if (parenthesized_expression "(iVar13 != 0)" ( (binary_expression "iVar13 != 0" identifier != number_literal) )) (compound_statement "{\n            pppppppiVar11 = (int *******)unaff_s2[3][(int)unaff_s0];\n            local_48 = (int *******)((int)unaff_s6 + 1);\n            goto LAB_00021c5c;\n          }" { (expression_statement "pppppppiVar11 = (int *******)unaff_s2[3][(int)unaff_s0];" (assignment_expression "pppppppiVar11 = (int *******)unaff_s2[3][(int)unaff_s0]" identifier = (cast_expression "(int *******)unaff_s2[3][(int)unaff_s0]" ( (type_descriptor "int *******" primitive_type (abstract_pointer_declarator "*******" * (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))))))) ) (subscript_expression "unaff_s2[3][(int)unaff_s0]" (subscript_expression "unaff_s2[3]" identifier [ number_literal ]) [ (cast_expression "(int)unaff_s0" ( (type_descriptor "int" primitive_type) ) identifier) ]))) ;) (expression_statement "local_48 = (int *******)((int)unaff_s6 + 1);" (assignment_expression "local_48 = (int *******)((int)unaff_s6 + 1)" identifier = (cast_expression "(int *******)((int)unaff_s6 + 1)" ( (type_descriptor "int *******" primitive_type (abstract_pointer_declarator "*******" * (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))))))) ) (parenthesized_expression "((int)unaff_s6 + 1)" ( (binary_expression "(int)unaff_s6 + 1" (cast_expression "(int)unaff_s6" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (goto_statement "goto LAB_00021c5c;" goto statement_identifier ;) })) }))) }) (else_clause "else {\n        pppppppiVar17 = unaff_s0;\n        pppppppiVar18 = param_2;\n        pppppppiVar19 = local_48;\n        unaff_s6 = (int *******)FUN_000200a0(unaff_s2);\n        if (unaff_s6 == (int *******)0x0) goto LAB_00021c18;\nLAB_00021da8:\n        pppppppiVar11 = (int *******)unaff_s2[3][(int)unaff_s0];\n        local_48 = (int *******)((int)unaff_s6 + (int)local_48);\nLAB_00021c5c:\n        unaff_s6 = local_48;\n        if (unaff_s5 == (int **)0x0) {\nLAB_00021ca4:\n          local_40 = 0;\n          goto LAB_00021ca8;\n        }\n        unaff_s6 = (int *******)((int)local_48 * 4);\n        if ((int)local_48 <= (int)param_2[0x17]) {\n          unaff_s6 = (int *******)(param_2[0x19] + (int)local_48);\n          pppppppiVar17 = pppppppiVar11;\n          if ((*unaff_s6 != (int ******)0x0) && (iVar13 = (*pcVar6)(*unaff_s6 + 1), iVar13 != 0))\n          goto LAB_00021ca4;\n        }\n      }" else (compound_statement "{\n        pppppppiVar17 = unaff_s0;\n        pppppppiVar18 = param_2;\n        pppppppiVar19 = local_48;\n        unaff_s6 = (int *******)FUN_000200a0(unaff_s2);\n        if (unaff_s6 == (int *******)0x0) goto LAB_00021c18;\nLAB_00021da8:\n        pppppppiVar11 = (int *******)unaff_s2[3][(int)unaff_s0];\n        local_48 = (int *******)((int)unaff_s6 + (int)local_48);\nLAB_00021c5c:\n        unaff_s6 = local_48;\n        if (unaff_s5 == (int **)0x0) {\nLAB_00021ca4:\n          local_40 = 0;\n          goto LAB_00021ca8;\n        }\n        unaff_s6 = (int *******)((int)local_48 * 4);\n        if ((int)local_48 <= (int)param_2[0x17]) {\n          unaff_s6 = (int *******)(param_2[0x19] + (int)local_48);\n          pppppppiVar17 = pppppppiVar11;\n          if ((*unaff_s6 != (int ******)0x0) && (iVar13 = (*pcVar6)(*unaff_s6 + 1), iVar13 != 0))\n          goto LAB_00021ca4;\n        }\n      }" { (expression_statement "pppppppiVar17 = unaff_s0;" (assignment_expression "pppppppiVar17 = unaff_s0" identifier = identifier) ;) (expression_statement "pppppppiVar18 = param_2;" (assignment_expression "pppppppiVar18 = param_2" identifier = identifier) ;) (expression_statement "pppppppiVar19 = local_48;" (assignment_expression "pppppppiVar19 = local_48" identifier = identifier) ;) (expression_statement "unaff_s6 = (int *******)FUN_000200a0(unaff_s2);" (assignment_expression "unaff_s6 = (int *******)FUN_000200a0(unaff_s2)" identifier = (cast_expression "(int *******)FUN_000200a0(unaff_s2)" ( (type_descriptor "int *******" primitive_type (abstract_pointer_declarator "*******" * (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))))))) ) (call_expression "FUN_000200a0(unaff_s2)" identifier (argument_list "(unaff_s2)" ( identifier ))))) ;) (if_statement "if (unaff_s6 == (int *******)0x0) goto LAB_00021c18;" if (parenthesized_expression "(unaff_s6 == (int *******)0x0)" ( (binary_expression "unaff_s6 == (int *******)0x0" identifier == (cast_expression "(int *******)0x0" ( (type_descriptor "int *******" primitive_type (abstract_pointer_declarator "*******" * (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))))))) ) number_literal)) )) (goto_statement "goto LAB_00021c18;" goto statement_identifier ;)) (labeled_statement "LAB_00021da8:\n        pppppppiVar11 = (int *******)unaff_s2[3][(int)unaff_s0];" statement_identifier : (expression_statement "pppppppiVar11 = (int *******)unaff_s2[3][(int)unaff_s0];" (assignment_expression "pppppppiVar11 = (int *******)unaff_s2[3][(int)unaff_s0]" identifier = (cast_expression "(int *******)unaff_s2[3][(int)unaff_s0]" ( (type_descriptor "int *******" primitive_type (abstract_pointer_declarator "*******" * (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))))))) ) (subscript_expression "unaff_s2[3][(int)unaff_s0]" (subscript_expression "unaff_s2[3]" identifier [ number_literal ]) [ (cast_expression "(int)unaff_s0" ( (type_descriptor "int" primitive_type) ) identifier) ]))) ;)) (expression_statement "local_48 = (int *******)((int)unaff_s6 + (int)local_48);" (assignment_expression "local_48 = (int *******)((int)unaff_s6 + (int)local_48)" identifier = (cast_expression "(int *******)((int)unaff_s6 + (int)local_48)" ( (type_descriptor "int *******" primitive_type (abstract_pointer_declarator "*******" * (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))))))) ) (parenthesized_expression "((int)unaff_s6 + (int)local_48)" ( (binary_expression "(int)unaff_s6 + (int)local_48" (cast_expression "(int)unaff_s6" ( (type_descriptor "int" primitive_type) ) identifier) + (cast_expression "(int)local_48" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (labeled_statement "LAB_00021c5c:\n        unaff_s6 = local_48;" statement_identifier : (expression_statement "unaff_s6 = local_48;" (assignment_expression "unaff_s6 = local_48" identifier = identifier) ;)) (if_statement "if (unaff_s5 == (int **)0x0) {\nLAB_00021ca4:\n          local_40 = 0;\n          goto LAB_00021ca8;\n        }" if (parenthesized_expression "(unaff_s5 == (int **)0x0)" ( (binary_expression "unaff_s5 == (int **)0x0" identifier == (cast_expression "(int **)0x0" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal)) )) (compound_statement "{\nLAB_00021ca4:\n          local_40 = 0;\n          goto LAB_00021ca8;\n        }" { (labeled_statement "LAB_00021ca4:\n          local_40 = 0;" statement_identifier : (expression_statement "local_40 = 0;" (assignment_expression "local_40 = 0" identifier = number_literal) ;)) (goto_statement "goto LAB_00021ca8;" goto statement_identifier ;) })) (expression_statement "unaff_s6 = (int *******)((int)local_48 * 4);" (assignment_expression "unaff_s6 = (int *******)((int)local_48 * 4)" identifier = (cast_expression "(int *******)((int)local_48 * 4)" ( (type_descriptor "int *******" primitive_type (abstract_pointer_declarator "*******" * (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))))))) ) (parenthesized_expression "((int)local_48 * 4)" ( (binary_expression "(int)local_48 * 4" (cast_expression "(int)local_48" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) )))) ;) (if_statement "if ((int)local_48 <= (int)param_2[0x17]) {\n          unaff_s6 = (int *******)(param_2[0x19] + (int)local_48);\n          pppppppiVar17 = pppppppiVar11;\n          if ((*unaff_s6 != (int ******)0x0) && (iVar13 = (*pcVar6)(*unaff_s6 + 1), iVar13 != 0))\n          goto LAB_00021ca4;\n        }" if (parenthesized_expression "((int)local_48 <= (int)param_2[0x17])" ( (binary_expression "(int)local_48 <= (int)param_2[0x17]" (cast_expression "(int)local_48" ( (type_descriptor "int" primitive_type) ) identifier) <= (cast_expression "(int)param_2[0x17]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "param_2[0x17]" identifier [ number_literal ]))) )) (compound_statement "{\n          unaff_s6 = (int *******)(param_2[0x19] + (int)local_48);\n          pppppppiVar17 = pppppppiVar11;\n          if ((*unaff_s6 != (int ******)0x0) && (iVar13 = (*pcVar6)(*unaff_s6 + 1), iVar13 != 0))\n          goto LAB_00021ca4;\n        }" { (expression_statement "unaff_s6 = (int *******)(param_2[0x19] + (int)local_48);" (assignment_expression "unaff_s6 = (int *******)(param_2[0x19] + (int)local_48)" identifier = (cast_expression "(int *******)(param_2[0x19] + (int)local_48)" ( (type_descriptor "int *******" primitive_type (abstract_pointer_declarator "*******" * (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))))))) ) (parenthesized_expression "(param_2[0x19] + (int)local_48)" ( (binary_expression "param_2[0x19] + (int)local_48" (subscript_expression "param_2[0x19]" identifier [ number_literal ]) + (cast_expression "(int)local_48" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "pppppppiVar17 = pppppppiVar11;" (assignment_expression "pppppppiVar17 = pppppppiVar11" identifier = identifier) ;) (if_statement "if ((*unaff_s6 != (int ******)0x0) && (iVar13 = (*pcVar6)(*unaff_s6 + 1), iVar13 != 0))\n          goto LAB_00021ca4;" if (parenthesized_expression "((*unaff_s6 != (int ******)0x0) && (iVar13 = (*pcVar6)(*unaff_s6 + 1), iVar13 != 0))" ( (binary_expression "(*unaff_s6 != (int ******)0x0) && (iVar13 = (*pcVar6)(*unaff_s6 + 1), iVar13 != 0)" (parenthesized_expression "(*unaff_s6 != (int ******)0x0)" ( (binary_expression "*unaff_s6 != (int ******)0x0" (pointer_expression "*unaff_s6" * identifier) != (cast_expression "(int ******)0x0" ( (type_descriptor "int ******" primitive_type (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))))))) ) number_literal)) )) && (parenthesized_expression "(iVar13 = (*pcVar6)(*unaff_s6 + 1), iVar13 != 0)" ( (comma_expression "iVar13 = (*pcVar6)(*unaff_s6 + 1), iVar13 != 0" (assignment_expression "iVar13 = (*pcVar6)(*unaff_s6 + 1)" identifier = (call_expression "(*pcVar6)(*unaff_s6 + 1)" (parenthesized_expression "(*pcVar6)" ( (pointer_expression "*pcVar6" * identifier) )) (argument_list "(*unaff_s6 + 1)" ( (binary_expression "*unaff_s6 + 1" (pointer_expression "*unaff_s6" * identifier) + number_literal) )))) , (binary_expression "iVar13 != 0" identifier != number_literal)) ))) )) (goto_statement "goto LAB_00021ca4;" goto statement_identifier ;)) })) }))) (labeled_statement "LAB_00021f3c:\n      unaff_s0 = (int *******)0xffffffff;" statement_identifier : (expression_statement "unaff_s0 = (int *******)0xffffffff;" (assignment_expression "unaff_s0 = (int *******)0xffffffff" identifier = (cast_expression "(int *******)0xffffffff" ( (type_descriptor "int *******" primitive_type (abstract_pointer_declarator "*******" * (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))))))) ) number_literal)) ;)) (goto_statement "goto LAB_00021f44;" goto statement_identifier ;) })) (expression_statement "pppppiVar8 = param_2[0x19][(int)local_48];" (assignment_expression "pppppiVar8 = param_2[0x19][(int)local_48]" identifier = (subscript_expression "param_2[0x19][(int)local_48]" (subscript_expression "param_2[0x19]" identifier [ number_literal ]) [ (cast_expression "(int)local_48" ( (type_descriptor "int" primitive_type) ) identifier) ])) ;) (expression_statement "unaff_s2 = (int *******)(unaff_s2[5] + (int)unaff_s0 * 3);" (assignment_expression "unaff_s2 = (int *******)(unaff_s2[5] + (int)unaff_s0 * 3)" identifier = (cast_expression "(int *******)(unaff_s2[5] + (int)unaff_s0 * 3)" ( (type_descriptor "int *******" primitive_type (abstract_pointer_declarator "*******" * (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))))))) ) (parenthesized_expression "(unaff_s2[5] + (int)unaff_s0 * 3)" ( (binary_expression "unaff_s2[5] + (int)unaff_s0 * 3" (subscript_expression "unaff_s2[5]" identifier [ number_literal ]) + (binary_expression "(int)unaff_s0 * 3" (cast_expression "(int)unaff_s0" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) )))) ;) (expression_statement "pppppppiVar17 = unaff_s0;" (assignment_expression "pppppppiVar17 = unaff_s0" identifier = identifier) ;) (expression_statement "iVar13 = (*pcVar7)(&local_44);" (assignment_expression "iVar13 = (*pcVar7)(&local_44)" identifier = (call_expression "(*pcVar7)(&local_44)" (parenthesized_expression "(*pcVar7)" ( (pointer_expression "*pcVar7" * identifier) )) (argument_list "(&local_44)" ( (pointer_expression "&local_44" & identifier) )))) ;) (if_statement "if (iVar13 == 0) goto LAB_00021b34;" if (parenthesized_expression "(iVar13 == 0)" ( (binary_expression "iVar13 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00021b34;" goto statement_identifier ;)) (expression_statement "unaff_s6 = (int *******)unaff_s2[1];" (assignment_expression "unaff_s6 = (int *******)unaff_s2[1]" identifier = (cast_expression "(int *******)unaff_s2[1]" ( (type_descriptor "int *******" primitive_type (abstract_pointer_declarator "*******" * (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))))))) ) (subscript_expression "unaff_s2[1]" identifier [ number_literal ]))) ;) (if_statement "if ((int)unaff_s6 < 1) goto LAB_00021f3c;" if (parenthesized_expression "((int)unaff_s6 < 1)" ( (binary_expression "(int)unaff_s6 < 1" (cast_expression "(int)unaff_s6" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (goto_statement "goto LAB_00021f3c;" goto statement_identifier ;)) (expression_statement "unaff_s3 = unaff_s2[2];" (assignment_expression "unaff_s3 = unaff_s2[2]" identifier = (subscript_expression "unaff_s2[2]" identifier [ number_literal ])) ;) (expression_statement "unaff_s2 = (int *******)0x0;" (assignment_expression "unaff_s2 = (int *******)0x0" identifier = (cast_expression "(int *******)0x0" ( (type_descriptor "int *******" primitive_type (abstract_pointer_declarator "*******" * (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))))))) ) number_literal)) ;) (expression_statement "unaff_s0 = (int *******)0xffffffff;" (assignment_expression "unaff_s0 = (int *******)0xffffffff" identifier = (cast_expression "(int *******)0xffffffff" ( (type_descriptor "int *******" primitive_type (abstract_pointer_declarator "*******" * (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))))))) ) number_literal)) ;) (do_statement "do {\n      pppppppiVar9 = (int *******)*unaff_s3;\n      pppppppiVar17 = pppppppiVar9;\n      iVar13 = (*pcVar6)(pppppiVar8 + 1);\n      pppppppiVar11 = unaff_s0;\n      if ((iVar13 != 0) &&\n         (pppppppiVar17 = unaff_s0, pppppppiVar11 = pppppppiVar9,\n         unaff_s0 != (int *******)0xffffffff)) {\n        iVar13 = (*pcVar6)(&local_44);\n        pppppppiVar4 = local_48;\n        if ((iVar13 == 0) &&\n           (pppppppiVar11 = unaff_s0, unaff_s6 = local_48, unaff_s5 != (int **)0x0)) {\n          unaff_s2 = (int *******)*unaff_s5;\n          *unaff_s5 = (int *)((int)unaff_s2 + 1);\n          pppppppiVar17 = (int *******)unaff_s5[1];\n          if ((int *******)((int)unaff_s2 + 1) == pppppppiVar17) {\n            pppppppiVar17 = (int *******)((int)pppppppiVar17 * 0x30);\n            piVar10 = (int *)(*(code *)PTR_realloc_0003e2fc)(unaff_s5[2]);\n            unaff_s6 = pppppppiVar4;\n            if (piVar10 == (int *)0x0) goto LAB_00021b34;\n            unaff_s5[1] = (int *)((int)unaff_s5[1] << 1);\n            unaff_s5[2] = piVar10;\n          }\n          unaff_s3 = (int ******)((int)unaff_s2 * 0x18);\n          unaff_s5[2][(int)unaff_s2 * 6] = (int)pppppppiVar4;\n          *(int ********)((int)unaff_s3 + (int)(unaff_s5[2] + 1)) = pppppppiVar9;\n          unaff_s2 = (int *******)(unaff_s5[2] + (int)unaff_s2 * 6);\n          ppppppiVar12 = (int ******)(*(code *)PTR_malloc_0003e2f8)(pppppppiVar15);\n          unaff_s2[2] = ppppppiVar12;\n          pppppppiVar18 = pppppppiVar15;\n          unaff_s6 = pppppppiVar15;\n          if (*(int *)((int)unaff_s3 + (int)(unaff_s5[2] + 2)) == 0) goto LAB_00021b34;\n          (*(code *)PTR_memcpy_0003e34c)(*(int *)((int)unaff_s3 + (int)(unaff_s5[2] + 2)),param_4);\n          pppppppiVar17 = &local_44;\n          iVar13 = FUN_0001b67c((int *)((int)unaff_s3 + (int)(unaff_s5[2] + 3)));\n          if (iVar13 != 0) goto LAB_00021b34;\n        }\n        break;\n      }\n      unaff_s2 = (int *******)((int)unaff_s2 + 1);\n      unaff_s3 = unaff_s3 + 1;\n      unaff_s0 = pppppppiVar11;\n    } while (unaff_s6 != unaff_s2);" do (compound_statement "{\n      pppppppiVar9 = (int *******)*unaff_s3;\n      pppppppiVar17 = pppppppiVar9;\n      iVar13 = (*pcVar6)(pppppiVar8 + 1);\n      pppppppiVar11 = unaff_s0;\n      if ((iVar13 != 0) &&\n         (pppppppiVar17 = unaff_s0, pppppppiVar11 = pppppppiVar9,\n         unaff_s0 != (int *******)0xffffffff)) {\n        iVar13 = (*pcVar6)(&local_44);\n        pppppppiVar4 = local_48;\n        if ((iVar13 == 0) &&\n           (pppppppiVar11 = unaff_s0, unaff_s6 = local_48, unaff_s5 != (int **)0x0)) {\n          unaff_s2 = (int *******)*unaff_s5;\n          *unaff_s5 = (int *)((int)unaff_s2 + 1);\n          pppppppiVar17 = (int *******)unaff_s5[1];\n          if ((int *******)((int)unaff_s2 + 1) == pppppppiVar17) {\n            pppppppiVar17 = (int *******)((int)pppppppiVar17 * 0x30);\n            piVar10 = (int *)(*(code *)PTR_realloc_0003e2fc)(unaff_s5[2]);\n            unaff_s6 = pppppppiVar4;\n            if (piVar10 == (int *)0x0) goto LAB_00021b34;\n            unaff_s5[1] = (int *)((int)unaff_s5[1] << 1);\n            unaff_s5[2] = piVar10;\n          }\n          unaff_s3 = (int ******)((int)unaff_s2 * 0x18);\n          unaff_s5[2][(int)unaff_s2 * 6] = (int)pppppppiVar4;\n          *(int ********)((int)unaff_s3 + (int)(unaff_s5[2] + 1)) = pppppppiVar9;\n          unaff_s2 = (int *******)(unaff_s5[2] + (int)unaff_s2 * 6);\n          ppppppiVar12 = (int ******)(*(code *)PTR_malloc_0003e2f8)(pppppppiVar15);\n          unaff_s2[2] = ppppppiVar12;\n          pppppppiVar18 = pppppppiVar15;\n          unaff_s6 = pppppppiVar15;\n          if (*(int *)((int)unaff_s3 + (int)(unaff_s5[2] + 2)) == 0) goto LAB_00021b34;\n          (*(code *)PTR_memcpy_0003e34c)(*(int *)((int)unaff_s3 + (int)(unaff_s5[2] + 2)),param_4);\n          pppppppiVar17 = &local_44;\n          iVar13 = FUN_0001b67c((int *)((int)unaff_s3 + (int)(unaff_s5[2] + 3)));\n          if (iVar13 != 0) goto LAB_00021b34;\n        }\n        break;\n      }\n      unaff_s2 = (int *******)((int)unaff_s2 + 1);\n      unaff_s3 = unaff_s3 + 1;\n      unaff_s0 = pppppppiVar11;\n    }" { (expression_statement "pppppppiVar9 = (int *******)*unaff_s3;" (assignment_expression "pppppppiVar9 = (int *******)*unaff_s3" identifier = (cast_expression "(int *******)*unaff_s3" ( (type_descriptor "int *******" primitive_type (abstract_pointer_declarator "*******" * (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))))))) ) (pointer_expression "*unaff_s3" * identifier))) ;) (expression_statement "pppppppiVar17 = pppppppiVar9;" (assignment_expression "pppppppiVar17 = pppppppiVar9" identifier = identifier) ;) (expression_statement "iVar13 = (*pcVar6)(pppppiVar8 + 1);" (assignment_expression "iVar13 = (*pcVar6)(pppppiVar8 + 1)" identifier = (call_expression "(*pcVar6)(pppppiVar8 + 1)" (parenthesized_expression "(*pcVar6)" ( (pointer_expression "*pcVar6" * identifier) )) (argument_list "(pppppiVar8 + 1)" ( (binary_expression "pppppiVar8 + 1" identifier + number_literal) )))) ;) (expression_statement "pppppppiVar11 = unaff_s0;" (assignment_expression "pppppppiVar11 = unaff_s0" identifier = identifier) ;) (if_statement "if ((iVar13 != 0) &&\n         (pppppppiVar17 = unaff_s0, pppppppiVar11 = pppppppiVar9,\n         unaff_s0 != (int *******)0xffffffff)) {\n        iVar13 = (*pcVar6)(&local_44);\n        pppppppiVar4 = local_48;\n        if ((iVar13 == 0) &&\n           (pppppppiVar11 = unaff_s0, unaff_s6 = local_48, unaff_s5 != (int **)0x0)) {\n          unaff_s2 = (int *******)*unaff_s5;\n          *unaff_s5 = (int *)((int)unaff_s2 + 1);\n          pppppppiVar17 = (int *******)unaff_s5[1];\n          if ((int *******)((int)unaff_s2 + 1) == pppppppiVar17) {\n            pppppppiVar17 = (int *******)((int)pppppppiVar17 * 0x30);\n            piVar10 = (int *)(*(code *)PTR_realloc_0003e2fc)(unaff_s5[2]);\n            unaff_s6 = pppppppiVar4;\n            if (piVar10 == (int *)0x0) goto LAB_00021b34;\n            unaff_s5[1] = (int *)((int)unaff_s5[1] << 1);\n            unaff_s5[2] = piVar10;\n          }\n          unaff_s3 = (int ******)((int)unaff_s2 * 0x18);\n          unaff_s5[2][(int)unaff_s2 * 6] = (int)pppppppiVar4;\n          *(int ********)((int)unaff_s3 + (int)(unaff_s5[2] + 1)) = pppppppiVar9;\n          unaff_s2 = (int *******)(unaff_s5[2] + (int)unaff_s2 * 6);\n          ppppppiVar12 = (int ******)(*(code *)PTR_malloc_0003e2f8)(pppppppiVar15);\n          unaff_s2[2] = ppppppiVar12;\n          pppppppiVar18 = pppppppiVar15;\n          unaff_s6 = pppppppiVar15;\n          if (*(int *)((int)unaff_s3 + (int)(unaff_s5[2] + 2)) == 0) goto LAB_00021b34;\n          (*(code *)PTR_memcpy_0003e34c)(*(int *)((int)unaff_s3 + (int)(unaff_s5[2] + 2)),param_4);\n          pppppppiVar17 = &local_44;\n          iVar13 = FUN_0001b67c((int *)((int)unaff_s3 + (int)(unaff_s5[2] + 3)));\n          if (iVar13 != 0) goto LAB_00021b34;\n        }\n        break;\n      }" if (parenthesized_expression "((iVar13 != 0) &&\n         (pppppppiVar17 = unaff_s0, pppppppiVar11 = pppppppiVar9,\n         unaff_s0 != (int *******)0xffffffff))" ( (binary_expression "(iVar13 != 0) &&\n         (pppppppiVar17 = unaff_s0, pppppppiVar11 = pppppppiVar9,\n         unaff_s0 != (int *******)0xffffffff)" (parenthesized_expression "(iVar13 != 0)" ( (binary_expression "iVar13 != 0" identifier != number_literal) )) && (parenthesized_expression "(pppppppiVar17 = unaff_s0, pppppppiVar11 = pppppppiVar9,\n         unaff_s0 != (int *******)0xffffffff)" ( (comma_expression "pppppppiVar17 = unaff_s0, pppppppiVar11 = pppppppiVar9,\n         unaff_s0 != (int *******)0xffffffff" (assignment_expression "pppppppiVar17 = unaff_s0" identifier = identifier) , (comma_expression "pppppppiVar11 = pppppppiVar9,\n         unaff_s0 != (int *******)0xffffffff" (assignment_expression "pppppppiVar11 = pppppppiVar9" identifier = identifier) , (binary_expression "unaff_s0 != (int *******)0xffffffff" identifier != (cast_expression "(int *******)0xffffffff" ( (type_descriptor "int *******" primitive_type (abstract_pointer_declarator "*******" * (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))))))) ) number_literal)))) ))) )) (compound_statement "{\n        iVar13 = (*pcVar6)(&local_44);\n        pppppppiVar4 = local_48;\n        if ((iVar13 == 0) &&\n           (pppppppiVar11 = unaff_s0, unaff_s6 = local_48, unaff_s5 != (int **)0x0)) {\n          unaff_s2 = (int *******)*unaff_s5;\n          *unaff_s5 = (int *)((int)unaff_s2 + 1);\n          pppppppiVar17 = (int *******)unaff_s5[1];\n          if ((int *******)((int)unaff_s2 + 1) == pppppppiVar17) {\n            pppppppiVar17 = (int *******)((int)pppppppiVar17 * 0x30);\n            piVar10 = (int *)(*(code *)PTR_realloc_0003e2fc)(unaff_s5[2]);\n            unaff_s6 = pppppppiVar4;\n            if (piVar10 == (int *)0x0) goto LAB_00021b34;\n            unaff_s5[1] = (int *)((int)unaff_s5[1] << 1);\n            unaff_s5[2] = piVar10;\n          }\n          unaff_s3 = (int ******)((int)unaff_s2 * 0x18);\n          unaff_s5[2][(int)unaff_s2 * 6] = (int)pppppppiVar4;\n          *(int ********)((int)unaff_s3 + (int)(unaff_s5[2] + 1)) = pppppppiVar9;\n          unaff_s2 = (int *******)(unaff_s5[2] + (int)unaff_s2 * 6);\n          ppppppiVar12 = (int ******)(*(code *)PTR_malloc_0003e2f8)(pppppppiVar15);\n          unaff_s2[2] = ppppppiVar12;\n          pppppppiVar18 = pppppppiVar15;\n          unaff_s6 = pppppppiVar15;\n          if (*(int *)((int)unaff_s3 + (int)(unaff_s5[2] + 2)) == 0) goto LAB_00021b34;\n          (*(code *)PTR_memcpy_0003e34c)(*(int *)((int)unaff_s3 + (int)(unaff_s5[2] + 2)),param_4);\n          pppppppiVar17 = &local_44;\n          iVar13 = FUN_0001b67c((int *)((int)unaff_s3 + (int)(unaff_s5[2] + 3)));\n          if (iVar13 != 0) goto LAB_00021b34;\n        }\n        break;\n      }" { (expression_statement "iVar13 = (*pcVar6)(&local_44);" (assignment_expression "iVar13 = (*pcVar6)(&local_44)" identifier = (call_expression "(*pcVar6)(&local_44)" (parenthesized_expression "(*pcVar6)" ( (pointer_expression "*pcVar6" * identifier) )) (argument_list "(&local_44)" ( (pointer_expression "&local_44" & identifier) )))) ;) (expression_statement "pppppppiVar4 = local_48;" (assignment_expression "pppppppiVar4 = local_48" identifier = identifier) ;) (if_statement "if ((iVar13 == 0) &&\n           (pppppppiVar11 = unaff_s0, unaff_s6 = local_48, unaff_s5 != (int **)0x0)) {\n          unaff_s2 = (int *******)*unaff_s5;\n          *unaff_s5 = (int *)((int)unaff_s2 + 1);\n          pppppppiVar17 = (int *******)unaff_s5[1];\n          if ((int *******)((int)unaff_s2 + 1) == pppppppiVar17) {\n            pppppppiVar17 = (int *******)((int)pppppppiVar17 * 0x30);\n            piVar10 = (int *)(*(code *)PTR_realloc_0003e2fc)(unaff_s5[2]);\n            unaff_s6 = pppppppiVar4;\n            if (piVar10 == (int *)0x0) goto LAB_00021b34;\n            unaff_s5[1] = (int *)((int)unaff_s5[1] << 1);\n            unaff_s5[2] = piVar10;\n          }\n          unaff_s3 = (int ******)((int)unaff_s2 * 0x18);\n          unaff_s5[2][(int)unaff_s2 * 6] = (int)pppppppiVar4;\n          *(int ********)((int)unaff_s3 + (int)(unaff_s5[2] + 1)) = pppppppiVar9;\n          unaff_s2 = (int *******)(unaff_s5[2] + (int)unaff_s2 * 6);\n          ppppppiVar12 = (int ******)(*(code *)PTR_malloc_0003e2f8)(pppppppiVar15);\n          unaff_s2[2] = ppppppiVar12;\n          pppppppiVar18 = pppppppiVar15;\n          unaff_s6 = pppppppiVar15;\n          if (*(int *)((int)unaff_s3 + (int)(unaff_s5[2] + 2)) == 0) goto LAB_00021b34;\n          (*(code *)PTR_memcpy_0003e34c)(*(int *)((int)unaff_s3 + (int)(unaff_s5[2] + 2)),param_4);\n          pppppppiVar17 = &local_44;\n          iVar13 = FUN_0001b67c((int *)((int)unaff_s3 + (int)(unaff_s5[2] + 3)));\n          if (iVar13 != 0) goto LAB_00021b34;\n        }" if (parenthesized_expression "((iVar13 == 0) &&\n           (pppppppiVar11 = unaff_s0, unaff_s6 = local_48, unaff_s5 != (int **)0x0))" ( (binary_expression "(iVar13 == 0) &&\n           (pppppppiVar11 = unaff_s0, unaff_s6 = local_48, unaff_s5 != (int **)0x0)" (parenthesized_expression "(iVar13 == 0)" ( (binary_expression "iVar13 == 0" identifier == number_literal) )) && (parenthesized_expression "(pppppppiVar11 = unaff_s0, unaff_s6 = local_48, unaff_s5 != (int **)0x0)" ( (comma_expression "pppppppiVar11 = unaff_s0, unaff_s6 = local_48, unaff_s5 != (int **)0x0" (assignment_expression "pppppppiVar11 = unaff_s0" identifier = identifier) , (comma_expression "unaff_s6 = local_48, unaff_s5 != (int **)0x0" (assignment_expression "unaff_s6 = local_48" identifier = identifier) , (binary_expression "unaff_s5 != (int **)0x0" identifier != (cast_expression "(int **)0x0" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal)))) ))) )) (compound_statement "{\n          unaff_s2 = (int *******)*unaff_s5;\n          *unaff_s5 = (int *)((int)unaff_s2 + 1);\n          pppppppiVar17 = (int *******)unaff_s5[1];\n          if ((int *******)((int)unaff_s2 + 1) == pppppppiVar17) {\n            pppppppiVar17 = (int *******)((int)pppppppiVar17 * 0x30);\n            piVar10 = (int *)(*(code *)PTR_realloc_0003e2fc)(unaff_s5[2]);\n            unaff_s6 = pppppppiVar4;\n            if (piVar10 == (int *)0x0) goto LAB_00021b34;\n            unaff_s5[1] = (int *)((int)unaff_s5[1] << 1);\n            unaff_s5[2] = piVar10;\n          }\n          unaff_s3 = (int ******)((int)unaff_s2 * 0x18);\n          unaff_s5[2][(int)unaff_s2 * 6] = (int)pppppppiVar4;\n          *(int ********)((int)unaff_s3 + (int)(unaff_s5[2] + 1)) = pppppppiVar9;\n          unaff_s2 = (int *******)(unaff_s5[2] + (int)unaff_s2 * 6);\n          ppppppiVar12 = (int ******)(*(code *)PTR_malloc_0003e2f8)(pppppppiVar15);\n          unaff_s2[2] = ppppppiVar12;\n          pppppppiVar18 = pppppppiVar15;\n          unaff_s6 = pppppppiVar15;\n          if (*(int *)((int)unaff_s3 + (int)(unaff_s5[2] + 2)) == 0) goto LAB_00021b34;\n          (*(code *)PTR_memcpy_0003e34c)(*(int *)((int)unaff_s3 + (int)(unaff_s5[2] + 2)),param_4);\n          pppppppiVar17 = &local_44;\n          iVar13 = FUN_0001b67c((int *)((int)unaff_s3 + (int)(unaff_s5[2] + 3)));\n          if (iVar13 != 0) goto LAB_00021b34;\n        }" { (expression_statement "unaff_s2 = (int *******)*unaff_s5;" (assignment_expression "unaff_s2 = (int *******)*unaff_s5" identifier = (cast_expression "(int *******)*unaff_s5" ( (type_descriptor "int *******" primitive_type (abstract_pointer_declarator "*******" * (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))))))) ) (pointer_expression "*unaff_s5" * identifier))) ;) (expression_statement "*unaff_s5 = (int *)((int)unaff_s2 + 1);" (assignment_expression "*unaff_s5 = (int *)((int)unaff_s2 + 1)" (pointer_expression "*unaff_s5" * identifier) = (cast_expression "(int *)((int)unaff_s2 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)unaff_s2 + 1)" ( (binary_expression "(int)unaff_s2 + 1" (cast_expression "(int)unaff_s2" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "pppppppiVar17 = (int *******)unaff_s5[1];" (assignment_expression "pppppppiVar17 = (int *******)unaff_s5[1]" identifier = (cast_expression "(int *******)unaff_s5[1]" ( (type_descriptor "int *******" primitive_type (abstract_pointer_declarator "*******" * (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))))))) ) (subscript_expression "unaff_s5[1]" identifier [ number_literal ]))) ;) (if_statement "if ((int *******)((int)unaff_s2 + 1) == pppppppiVar17) {\n            pppppppiVar17 = (int *******)((int)pppppppiVar17 * 0x30);\n            piVar10 = (int *)(*(code *)PTR_realloc_0003e2fc)(unaff_s5[2]);\n            unaff_s6 = pppppppiVar4;\n            if (piVar10 == (int *)0x0) goto LAB_00021b34;\n            unaff_s5[1] = (int *)((int)unaff_s5[1] << 1);\n            unaff_s5[2] = piVar10;\n          }" if (parenthesized_expression "((int *******)((int)unaff_s2 + 1) == pppppppiVar17)" ( (binary_expression "(int *******)((int)unaff_s2 + 1) == pppppppiVar17" (cast_expression "(int *******)((int)unaff_s2 + 1)" ( (type_descriptor "int *******" primitive_type (abstract_pointer_declarator "*******" * (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))))))) ) (parenthesized_expression "((int)unaff_s2 + 1)" ( (binary_expression "(int)unaff_s2 + 1" (cast_expression "(int)unaff_s2" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))) == identifier) )) (compound_statement "{\n            pppppppiVar17 = (int *******)((int)pppppppiVar17 * 0x30);\n            piVar10 = (int *)(*(code *)PTR_realloc_0003e2fc)(unaff_s5[2]);\n            unaff_s6 = pppppppiVar4;\n            if (piVar10 == (int *)0x0) goto LAB_00021b34;\n            unaff_s5[1] = (int *)((int)unaff_s5[1] << 1);\n            unaff_s5[2] = piVar10;\n          }" { (expression_statement "pppppppiVar17 = (int *******)((int)pppppppiVar17 * 0x30);" (assignment_expression "pppppppiVar17 = (int *******)((int)pppppppiVar17 * 0x30)" identifier = (cast_expression "(int *******)((int)pppppppiVar17 * 0x30)" ( (type_descriptor "int *******" primitive_type (abstract_pointer_declarator "*******" * (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))))))) ) (parenthesized_expression "((int)pppppppiVar17 * 0x30)" ( (binary_expression "(int)pppppppiVar17 * 0x30" (cast_expression "(int)pppppppiVar17" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) )))) ;) (expression_statement "piVar10 = (int *)(*(code *)PTR_realloc_0003e2fc)(unaff_s5[2]);" (assignment_expression "piVar10 = (int *)(*(code *)PTR_realloc_0003e2fc)(unaff_s5[2])" identifier = (cast_expression "(int *)(*(code *)PTR_realloc_0003e2fc)(unaff_s5[2])" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR_realloc_0003e2fc)(unaff_s5[2])" (parenthesized_expression "(*(code *)PTR_realloc_0003e2fc)" ( (pointer_expression "*(code *)PTR_realloc_0003e2fc" * (cast_expression "(code *)PTR_realloc_0003e2fc" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(unaff_s5[2])" ( (subscript_expression "unaff_s5[2]" identifier [ number_literal ]) ))))) ;) (expression_statement "unaff_s6 = pppppppiVar4;" (assignment_expression "unaff_s6 = pppppppiVar4" identifier = identifier) ;) (if_statement "if (piVar10 == (int *)0x0) goto LAB_00021b34;" if (parenthesized_expression "(piVar10 == (int *)0x0)" ( (binary_expression "piVar10 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00021b34;" goto statement_identifier ;)) (expression_statement "unaff_s5[1] = (int *)((int)unaff_s5[1] << 1);" (assignment_expression "unaff_s5[1] = (int *)((int)unaff_s5[1] << 1)" (subscript_expression "unaff_s5[1]" identifier [ number_literal ]) = (cast_expression "(int *)((int)unaff_s5[1] << 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)unaff_s5[1] << 1)" ( (binary_expression "(int)unaff_s5[1] << 1" (cast_expression "(int)unaff_s5[1]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "unaff_s5[1]" identifier [ number_literal ])) << number_literal) )))) ;) (expression_statement "unaff_s5[2] = piVar10;" (assignment_expression "unaff_s5[2] = piVar10" (subscript_expression "unaff_s5[2]" identifier [ number_literal ]) = identifier) ;) })) (expression_statement "unaff_s3 = (int ******)((int)unaff_s2 * 0x18);" (assignment_expression "unaff_s3 = (int ******)((int)unaff_s2 * 0x18)" identifier = (cast_expression "(int ******)((int)unaff_s2 * 0x18)" ( (type_descriptor "int ******" primitive_type (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))))))) ) (parenthesized_expression "((int)unaff_s2 * 0x18)" ( (binary_expression "(int)unaff_s2 * 0x18" (cast_expression "(int)unaff_s2" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) )))) ;) (expression_statement "unaff_s5[2][(int)unaff_s2 * 6] = (int)pppppppiVar4;" (assignment_expression "unaff_s5[2][(int)unaff_s2 * 6] = (int)pppppppiVar4" (subscript_expression "unaff_s5[2][(int)unaff_s2 * 6]" (subscript_expression "unaff_s5[2]" identifier [ number_literal ]) [ (binary_expression "(int)unaff_s2 * 6" (cast_expression "(int)unaff_s2" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) ]) = (cast_expression "(int)pppppppiVar4" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "*(int ********)((int)unaff_s3 + (int)(unaff_s5[2] + 1)) = pppppppiVar9;" (assignment_expression "*(int ********)((int)unaff_s3 + (int)(unaff_s5[2] + 1)) = pppppppiVar9" (pointer_expression "*(int ********)((int)unaff_s3 + (int)(unaff_s5[2] + 1))" * (cast_expression "(int ********)((int)unaff_s3 + (int)(unaff_s5[2] + 1))" ( (type_descriptor "int ********" primitive_type (abstract_pointer_declarator "********" * (abstract_pointer_declarator "*******" * (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))))))))) ) (parenthesized_expression "((int)unaff_s3 + (int)(unaff_s5[2] + 1))" ( (binary_expression "(int)unaff_s3 + (int)(unaff_s5[2] + 1)" (cast_expression "(int)unaff_s3" ( (type_descriptor "int" primitive_type) ) identifier) + (cast_expression "(int)(unaff_s5[2] + 1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(unaff_s5[2] + 1)" ( (binary_expression "unaff_s5[2] + 1" (subscript_expression "unaff_s5[2]" identifier [ number_literal ]) + number_literal) )))) )))) = identifier) ;) (expression_statement "unaff_s2 = (int *******)(unaff_s5[2] + (int)unaff_s2 * 6);" (assignment_expression "unaff_s2 = (int *******)(unaff_s5[2] + (int)unaff_s2 * 6)" identifier = (cast_expression "(int *******)(unaff_s5[2] + (int)unaff_s2 * 6)" ( (type_descriptor "int *******" primitive_type (abstract_pointer_declarator "*******" * (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))))))) ) (parenthesized_expression "(unaff_s5[2] + (int)unaff_s2 * 6)" ( (binary_expression "unaff_s5[2] + (int)unaff_s2 * 6" (subscript_expression "unaff_s5[2]" identifier [ number_literal ]) + (binary_expression "(int)unaff_s2 * 6" (cast_expression "(int)unaff_s2" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) )))) ;) (expression_statement "ppppppiVar12 = (int ******)(*(code *)PTR_malloc_0003e2f8)(pppppppiVar15);" (assignment_expression "ppppppiVar12 = (int ******)(*(code *)PTR_malloc_0003e2f8)(pppppppiVar15)" identifier = (cast_expression "(int ******)(*(code *)PTR_malloc_0003e2f8)(pppppppiVar15)" ( (type_descriptor "int ******" primitive_type (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))))))) ) (call_expression "(*(code *)PTR_malloc_0003e2f8)(pppppppiVar15)" (parenthesized_expression "(*(code *)PTR_malloc_0003e2f8)" ( (pointer_expression "*(code *)PTR_malloc_0003e2f8" * (cast_expression "(code *)PTR_malloc_0003e2f8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(pppppppiVar15)" ( identifier ))))) ;) (expression_statement "unaff_s2[2] = ppppppiVar12;" (assignment_expression "unaff_s2[2] = ppppppiVar12" (subscript_expression "unaff_s2[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "pppppppiVar18 = pppppppiVar15;" (assignment_expression "pppppppiVar18 = pppppppiVar15" identifier = identifier) ;) (expression_statement "unaff_s6 = pppppppiVar15;" (assignment_expression "unaff_s6 = pppppppiVar15" identifier = identifier) ;) (if_statement "if (*(int *)((int)unaff_s3 + (int)(unaff_s5[2] + 2)) == 0) goto LAB_00021b34;" if (parenthesized_expression "(*(int *)((int)unaff_s3 + (int)(unaff_s5[2] + 2)) == 0)" ( (binary_expression "*(int *)((int)unaff_s3 + (int)(unaff_s5[2] + 2)) == 0" (pointer_expression "*(int *)((int)unaff_s3 + (int)(unaff_s5[2] + 2))" * (cast_expression "(int *)((int)unaff_s3 + (int)(unaff_s5[2] + 2))" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)unaff_s3 + (int)(unaff_s5[2] + 2))" ( (binary_expression "(int)unaff_s3 + (int)(unaff_s5[2] + 2)" (cast_expression "(int)unaff_s3" ( (type_descriptor "int" primitive_type) ) identifier) + (cast_expression "(int)(unaff_s5[2] + 2)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(unaff_s5[2] + 2)" ( (binary_expression "unaff_s5[2] + 2" (subscript_expression "unaff_s5[2]" identifier [ number_literal ]) + number_literal) )))) )))) == number_literal) )) (goto_statement "goto LAB_00021b34;" goto statement_identifier ;)) (expression_statement "(*(code *)PTR_memcpy_0003e34c)(*(int *)((int)unaff_s3 + (int)(unaff_s5[2] + 2)),param_4);" (call_expression "(*(code *)PTR_memcpy_0003e34c)(*(int *)((int)unaff_s3 + (int)(unaff_s5[2] + 2)),param_4)" (parenthesized_expression "(*(code *)PTR_memcpy_0003e34c)" ( (pointer_expression "*(code *)PTR_memcpy_0003e34c" * (cast_expression "(code *)PTR_memcpy_0003e34c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(*(int *)((int)unaff_s3 + (int)(unaff_s5[2] + 2)),param_4)" ( (pointer_expression "*(int *)((int)unaff_s3 + (int)(unaff_s5[2] + 2))" * (cast_expression "(int *)((int)unaff_s3 + (int)(unaff_s5[2] + 2))" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)unaff_s3 + (int)(unaff_s5[2] + 2))" ( (binary_expression "(int)unaff_s3 + (int)(unaff_s5[2] + 2)" (cast_expression "(int)unaff_s3" ( (type_descriptor "int" primitive_type) ) identifier) + (cast_expression "(int)(unaff_s5[2] + 2)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(unaff_s5[2] + 2)" ( (binary_expression "unaff_s5[2] + 2" (subscript_expression "unaff_s5[2]" identifier [ number_literal ]) + number_literal) )))) )))) , identifier ))) ;) (expression_statement "pppppppiVar17 = &local_44;" (assignment_expression "pppppppiVar17 = &local_44" identifier = (pointer_expression "&local_44" & identifier)) ;) (expression_statement "iVar13 = FUN_0001b67c((int *)((int)unaff_s3 + (int)(unaff_s5[2] + 3)));" (assignment_expression "iVar13 = FUN_0001b67c((int *)((int)unaff_s3 + (int)(unaff_s5[2] + 3)))" identifier = (call_expression "FUN_0001b67c((int *)((int)unaff_s3 + (int)(unaff_s5[2] + 3)))" identifier (argument_list "((int *)((int)unaff_s3 + (int)(unaff_s5[2] + 3)))" ( (cast_expression "(int *)((int)unaff_s3 + (int)(unaff_s5[2] + 3))" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)unaff_s3 + (int)(unaff_s5[2] + 3))" ( (binary_expression "(int)unaff_s3 + (int)(unaff_s5[2] + 3)" (cast_expression "(int)unaff_s3" ( (type_descriptor "int" primitive_type) ) identifier) + (cast_expression "(int)(unaff_s5[2] + 3)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(unaff_s5[2] + 3)" ( (binary_expression "unaff_s5[2] + 3" (subscript_expression "unaff_s5[2]" identifier [ number_literal ]) + number_literal) )))) ))) )))) ;) (if_statement "if (iVar13 != 0) goto LAB_00021b34;" if (parenthesized_expression "(iVar13 != 0)" ( (binary_expression "iVar13 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00021b34;" goto statement_identifier ;)) })) (break_statement "break;" break ;) })) (expression_statement "unaff_s2 = (int *******)((int)unaff_s2 + 1);" (assignment_expression "unaff_s2 = (int *******)((int)unaff_s2 + 1)" identifier = (cast_expression "(int *******)((int)unaff_s2 + 1)" ( (type_descriptor "int *******" primitive_type (abstract_pointer_declarator "*******" * (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))))))) ) (parenthesized_expression "((int)unaff_s2 + 1)" ( (binary_expression "(int)unaff_s2 + 1" (cast_expression "(int)unaff_s2" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "unaff_s3 = unaff_s3 + 1;" (assignment_expression "unaff_s3 = unaff_s3 + 1" identifier = (binary_expression "unaff_s3 + 1" identifier + number_literal)) ;) (expression_statement "unaff_s0 = pppppppiVar11;" (assignment_expression "unaff_s0 = pppppppiVar11" identifier = identifier) ;) }) while (parenthesized_expression "(unaff_s6 != unaff_s2)" ( (binary_expression "unaff_s6 != unaff_s2" identifier != identifier) )) ;) (labeled_statement "LAB_00021ca8:\n    unaff_s0 = pppppppiVar11;" statement_identifier : (expression_statement "unaff_s0 = pppppppiVar11;" (assignment_expression "unaff_s0 = pppppppiVar11" identifier = identifier) ;)) (if_statement "if ((int)pppppppiVar11 < 0) {\nLAB_00021f44:\n      if (unaff_s0 == (int *******)&SUB_fffffffe) {\nLAB_00021b34:\n        (*(code *)PTR_free_0003e354)(local_3c);\n        if (bVar1) {\n          (*(code *)PTR_free_0003e354)(local_70);\n        }\n        FUN_0001eb94(unaff_s5);\n        iVar13 = 0xc;\n        goto LAB_00021ed8;\n      }\n      if (unaff_s5 == (int **)0x0) {\n        (*(code *)PTR_free_0003e354)();\n        if (bVar1) {\n          (*(code *)PTR_free_0003e354)(local_70);\n          iVar13 = 1;\n        }\n        else {\n          iVar13 = 1;\n        }\n        goto LAB_00021ed8;\n      }\n      *(int ********)(puVar25 + 0x10) = &local_44;\n      pppppppiVar17 = (int *******)&local_48;\n      pppppppiVar18 = param_3;\n      pppppppiVar19 = param_4;\n      unaff_s0 = (int *******)(*pcVar5)(unaff_s5);\n    }" if (parenthesized_expression "((int)pppppppiVar11 < 0)" ( (binary_expression "(int)pppppppiVar11 < 0" (cast_expression "(int)pppppppiVar11" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\nLAB_00021f44:\n      if (unaff_s0 == (int *******)&SUB_fffffffe) {\nLAB_00021b34:\n        (*(code *)PTR_free_0003e354)(local_3c);\n        if (bVar1) {\n          (*(code *)PTR_free_0003e354)(local_70);\n        }\n        FUN_0001eb94(unaff_s5);\n        iVar13 = 0xc;\n        goto LAB_00021ed8;\n      }\n      if (unaff_s5 == (int **)0x0) {\n        (*(code *)PTR_free_0003e354)();\n        if (bVar1) {\n          (*(code *)PTR_free_0003e354)(local_70);\n          iVar13 = 1;\n        }\n        else {\n          iVar13 = 1;\n        }\n        goto LAB_00021ed8;\n      }\n      *(int ********)(puVar25 + 0x10) = &local_44;\n      pppppppiVar17 = (int *******)&local_48;\n      pppppppiVar18 = param_3;\n      pppppppiVar19 = param_4;\n      unaff_s0 = (int *******)(*pcVar5)(unaff_s5);\n    }" { (labeled_statement "LAB_00021f44:\n      if (unaff_s0 == (int *******)&SUB_fffffffe) {\nLAB_00021b34:\n        (*(code *)PTR_free_0003e354)(local_3c);\n        if (bVar1) {\n          (*(code *)PTR_free_0003e354)(local_70);\n        }\n        FUN_0001eb94(unaff_s5);\n        iVar13 = 0xc;\n        goto LAB_00021ed8;\n      }" statement_identifier : (if_statement "if (unaff_s0 == (int *******)&SUB_fffffffe) {\nLAB_00021b34:\n        (*(code *)PTR_free_0003e354)(local_3c);\n        if (bVar1) {\n          (*(code *)PTR_free_0003e354)(local_70);\n        }\n        FUN_0001eb94(unaff_s5);\n        iVar13 = 0xc;\n        goto LAB_00021ed8;\n      }" if (parenthesized_expression "(unaff_s0 == (int *******)&SUB_fffffffe)" ( (binary_expression "unaff_s0 == (int *******)&SUB_fffffffe" identifier == (cast_expression "(int *******)&SUB_fffffffe" ( (type_descriptor "int *******" primitive_type (abstract_pointer_declarator "*******" * (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))))))) ) (pointer_expression "&SUB_fffffffe" & identifier))) )) (compound_statement "{\nLAB_00021b34:\n        (*(code *)PTR_free_0003e354)(local_3c);\n        if (bVar1) {\n          (*(code *)PTR_free_0003e354)(local_70);\n        }\n        FUN_0001eb94(unaff_s5);\n        iVar13 = 0xc;\n        goto LAB_00021ed8;\n      }" { (labeled_statement "LAB_00021b34:\n        (*(code *)PTR_free_0003e354)(local_3c);" statement_identifier : (expression_statement "(*(code *)PTR_free_0003e354)(local_3c);" (call_expression "(*(code *)PTR_free_0003e354)(local_3c)" (parenthesized_expression "(*(code *)PTR_free_0003e354)" ( (pointer_expression "*(code *)PTR_free_0003e354" * (cast_expression "(code *)PTR_free_0003e354" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(local_3c)" ( identifier ))) ;)) (if_statement "if (bVar1) {\n          (*(code *)PTR_free_0003e354)(local_70);\n        }" if (parenthesized_expression "(bVar1)" ( identifier )) (compound_statement "{\n          (*(code *)PTR_free_0003e354)(local_70);\n        }" { (expression_statement "(*(code *)PTR_free_0003e354)(local_70);" (call_expression "(*(code *)PTR_free_0003e354)(local_70)" (parenthesized_expression "(*(code *)PTR_free_0003e354)" ( (pointer_expression "*(code *)PTR_free_0003e354" * (cast_expression "(code *)PTR_free_0003e354" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(local_70)" ( identifier ))) ;) })) (expression_statement "FUN_0001eb94(unaff_s5);" (call_expression "FUN_0001eb94(unaff_s5)" identifier (argument_list "(unaff_s5)" ( identifier ))) ;) (expression_statement "iVar13 = 0xc;" (assignment_expression "iVar13 = 0xc" identifier = number_literal) ;) (goto_statement "goto LAB_00021ed8;" goto statement_identifier ;) }))) (if_statement "if (unaff_s5 == (int **)0x0) {\n        (*(code *)PTR_free_0003e354)();\n        if (bVar1) {\n          (*(code *)PTR_free_0003e354)(local_70);\n          iVar13 = 1;\n        }\n        else {\n          iVar13 = 1;\n        }\n        goto LAB_00021ed8;\n      }" if (parenthesized_expression "(unaff_s5 == (int **)0x0)" ( (binary_expression "unaff_s5 == (int **)0x0" identifier == (cast_expression "(int **)0x0" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal)) )) (compound_statement "{\n        (*(code *)PTR_free_0003e354)();\n        if (bVar1) {\n          (*(code *)PTR_free_0003e354)(local_70);\n          iVar13 = 1;\n        }\n        else {\n          iVar13 = 1;\n        }\n        goto LAB_00021ed8;\n      }" { (expression_statement "(*(code *)PTR_free_0003e354)();" (call_expression "(*(code *)PTR_free_0003e354)()" (parenthesized_expression "(*(code *)PTR_free_0003e354)" ( (pointer_expression "*(code *)PTR_free_0003e354" * (cast_expression "(code *)PTR_free_0003e354" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (if_statement "if (bVar1) {\n          (*(code *)PTR_free_0003e354)(local_70);\n          iVar13 = 1;\n        }\n        else {\n          iVar13 = 1;\n        }" if (parenthesized_expression "(bVar1)" ( identifier )) (compound_statement "{\n          (*(code *)PTR_free_0003e354)(local_70);\n          iVar13 = 1;\n        }" { (expression_statement "(*(code *)PTR_free_0003e354)(local_70);" (call_expression "(*(code *)PTR_free_0003e354)(local_70)" (parenthesized_expression "(*(code *)PTR_free_0003e354)" ( (pointer_expression "*(code *)PTR_free_0003e354" * (cast_expression "(code *)PTR_free_0003e354" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(local_70)" ( identifier ))) ;) (expression_statement "iVar13 = 1;" (assignment_expression "iVar13 = 1" identifier = number_literal) ;) }) (else_clause "else {\n          iVar13 = 1;\n        }" else (compound_statement "{\n          iVar13 = 1;\n        }" { (expression_statement "iVar13 = 1;" (assignment_expression "iVar13 = 1" identifier = number_literal) ;) }))) (goto_statement "goto LAB_00021ed8;" goto statement_identifier ;) })) (expression_statement "*(int ********)(puVar25 + 0x10) = &local_44;" (assignment_expression "*(int ********)(puVar25 + 0x10) = &local_44" (pointer_expression "*(int ********)(puVar25 + 0x10)" * (cast_expression "(int ********)(puVar25 + 0x10)" ( (type_descriptor "int ********" primitive_type (abstract_pointer_declarator "********" * (abstract_pointer_declarator "*******" * (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))))))))) ) (parenthesized_expression "(puVar25 + 0x10)" ( (binary_expression "puVar25 + 0x10" identifier + number_literal) )))) = (pointer_expression "&local_44" & identifier)) ;) (expression_statement "pppppppiVar17 = (int *******)&local_48;" (assignment_expression "pppppppiVar17 = (int *******)&local_48" identifier = (cast_expression "(int *******)&local_48" ( (type_descriptor "int *******" primitive_type (abstract_pointer_declarator "*******" * (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))))))) ) (pointer_expression "&local_48" & identifier))) ;) (expression_statement "pppppppiVar18 = param_3;" (assignment_expression "pppppppiVar18 = param_3" identifier = identifier) ;) (expression_statement "pppppppiVar19 = param_4;" (assignment_expression "pppppppiVar19 = param_4" identifier = identifier) ;) (expression_statement "unaff_s0 = (int *******)(*pcVar5)(unaff_s5);" (assignment_expression "unaff_s0 = (int *******)(*pcVar5)(unaff_s5)" identifier = (cast_expression "(int *******)(*pcVar5)(unaff_s5)" ( (type_descriptor "int *******" primitive_type (abstract_pointer_declarator "*******" * (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))))))) ) (call_expression "(*pcVar5)(unaff_s5)" (parenthesized_expression "(*pcVar5)" ( (pointer_expression "*pcVar5" * identifier) )) (argument_list "(unaff_s5)" ( identifier ))))) ;) })) })) (expression_statement "(*(code *)PTR_free_0003e354)(local_3c);" (call_expression "(*(code *)PTR_free_0003e354)(local_3c)" (parenthesized_expression "(*(code *)PTR_free_0003e354)" ( (pointer_expression "*(code *)PTR_free_0003e354" * (cast_expression "(code *)PTR_free_0003e354" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(local_3c)" ( identifier ))) ;) (if_statement "if (bVar1) {\n    (*(code *)PTR_free_0003e354)(local_70);\n  }" if (parenthesized_expression "(bVar1)" ( identifier )) (compound_statement "{\n    (*(code *)PTR_free_0003e354)(local_70);\n  }" { (expression_statement "(*(code *)PTR_free_0003e354)(local_70);" (call_expression "(*(code *)PTR_free_0003e354)(local_70)" (parenthesized_expression "(*(code *)PTR_free_0003e354)" ( (pointer_expression "*(code *)PTR_free_0003e354" * (cast_expression "(code *)PTR_free_0003e354" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(local_70)" ( identifier ))) ;) })) (expression_statement "iVar13 = FUN_0001eb94(unaff_s5);" (assignment_expression "iVar13 = FUN_0001eb94(unaff_s5)" identifier = (call_expression "FUN_0001eb94(unaff_s5)" identifier (argument_list "(unaff_s5)" ( identifier )))) ;) (labeled_statement "LAB_00021ed8:\n  if (local_2c == *(int *)PTR___stack_chk_guard_0003e348) {\n    return iVar13;\n  }" statement_identifier : (if_statement "if (local_2c == *(int *)PTR___stack_chk_guard_0003e348) {\n    return iVar13;\n  }" if (parenthesized_expression "(local_2c == *(int *)PTR___stack_chk_guard_0003e348)" ( (binary_expression "local_2c == *(int *)PTR___stack_chk_guard_0003e348" identifier == (pointer_expression "*(int *)PTR___stack_chk_guard_0003e348" * (cast_expression "(int *)PTR___stack_chk_guard_0003e348" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n    return iVar13;\n  }" { (return_statement "return iVar13;" return identifier ;) }))) (expression_statement "pcVar5 = FUN_00021f9c;" (assignment_expression "pcVar5 = FUN_00021f9c" identifier = identifier) ;) (expression_statement "iVar13 = local_2c;" (assignment_expression "iVar13 = local_2c" identifier = identifier) ;) (expression_statement "puVar24 = PTR___stack_chk_fail_0003e32c;" (assignment_expression "puVar24 = PTR___stack_chk_fail_0003e32c" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_0003e32c)();" (call_expression "(*(code *)PTR___stack_chk_fail_0003e32c)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_0003e32c)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_0003e32c" * (cast_expression "(code *)PTR___stack_chk_fail_0003e32c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "*(code **)(puVar26 + -4) = pcVar5;" (assignment_expression "*(code **)(puVar26 + -4) = pcVar5" (pointer_expression "*(code **)(puVar26 + -4)" * (cast_expression "(code **)(puVar26 + -4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar26 + -4)" ( (binary_expression "puVar26 + -4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined1 **)(puVar26 + -8) = auStack_98;" (assignment_expression "*(undefined1 **)(puVar26 + -8) = auStack_98" (pointer_expression "*(undefined1 **)(puVar26 + -8)" * (cast_expression "(undefined1 **)(puVar26 + -8)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar26 + -8)" ( (binary_expression "puVar26 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar26 + -0xc) = piVar23;" (assignment_expression "*(int **)(puVar26 + -0xc) = piVar23" (pointer_expression "*(int **)(puVar26 + -0xc)" * (cast_expression "(int **)(puVar26 + -0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar26 + -0xc)" ( (binary_expression "puVar26 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int ********)(puVar26 + -0x10) = unaff_s6;" (assignment_expression "*(int ********)(puVar26 + -0x10) = unaff_s6" (pointer_expression "*(int ********)(puVar26 + -0x10)" * (cast_expression "(int ********)(puVar26 + -0x10)" ( (type_descriptor "int ********" primitive_type (abstract_pointer_declarator "********" * (abstract_pointer_declarator "*******" * (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))))))))) ) (parenthesized_expression "(puVar26 + -0x10)" ( (binary_expression "puVar26 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int ***)(puVar26 + -0x14) = unaff_s5;" (assignment_expression "*(int ***)(puVar26 + -0x14) = unaff_s5" (pointer_expression "*(int ***)(puVar26 + -0x14)" * (cast_expression "(int ***)(puVar26 + -0x14)" ( (type_descriptor "int ***" primitive_type (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "(puVar26 + -0x14)" ( (binary_expression "puVar26 + -0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int ********)(puVar26 + -0x18) = param_4;" (assignment_expression "*(int ********)(puVar26 + -0x18) = param_4" (pointer_expression "*(int ********)(puVar26 + -0x18)" * (cast_expression "(int ********)(puVar26 + -0x18)" ( (type_descriptor "int ********" primitive_type (abstract_pointer_declarator "********" * (abstract_pointer_declarator "*******" * (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))))))))) ) (parenthesized_expression "(puVar26 + -0x18)" ( (binary_expression "puVar26 + -0x18" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *******)(puVar26 + -0x1c) = unaff_s3;" (assignment_expression "*(int *******)(puVar26 + -0x1c) = unaff_s3" (pointer_expression "*(int *******)(puVar26 + -0x1c)" * (cast_expression "(int *******)(puVar26 + -0x1c)" ( (type_descriptor "int *******" primitive_type (abstract_pointer_declarator "*******" * (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))))))) ) (parenthesized_expression "(puVar26 + -0x1c)" ( (binary_expression "puVar26 + -0x1c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int ********)(puVar26 + -0x20) = unaff_s2;" (assignment_expression "*(int ********)(puVar26 + -0x20) = unaff_s2" (pointer_expression "*(int ********)(puVar26 + -0x20)" * (cast_expression "(int ********)(puVar26 + -0x20)" ( (type_descriptor "int ********" primitive_type (abstract_pointer_declarator "********" * (abstract_pointer_declarator "*******" * (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))))))))) ) (parenthesized_expression "(puVar26 + -0x20)" ( (binary_expression "puVar26 + -0x20" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int ********)(puVar26 + -0x24) = param_2;" (assignment_expression "*(int ********)(puVar26 + -0x24) = param_2" (pointer_expression "*(int ********)(puVar26 + -0x24)" * (cast_expression "(int ********)(puVar26 + -0x24)" ( (type_descriptor "int ********" primitive_type (abstract_pointer_declarator "********" * (abstract_pointer_declarator "*******" * (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))))))))) ) (parenthesized_expression "(puVar26 + -0x24)" ( (binary_expression "puVar26 + -0x24" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int ********)(puVar26 + -0x28) = unaff_s0;" (assignment_expression "*(int ********)(puVar26 + -0x28) = unaff_s0" (pointer_expression "*(int ********)(puVar26 + -0x28)" * (cast_expression "(int ********)(puVar26 + -0x28)" ( (type_descriptor "int ********" primitive_type (abstract_pointer_declarator "********" * (abstract_pointer_declarator "*******" * (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))))))))) ) (parenthesized_expression "(puVar26 + -0x28)" ( (binary_expression "puVar26 + -0x28" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined **)(puVar26 + -0xc0) = puVar24 + 0x24174;" (assignment_expression "*(undefined **)(puVar26 + -0xc0) = puVar24 + 0x24174" (pointer_expression "*(undefined **)(puVar26 + -0xc0)" * (cast_expression "(undefined **)(puVar26 + -0xc0)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar26 + -0xc0)" ( (binary_expression "puVar26 + -0xc0" identifier + number_literal) )))) = (binary_expression "puVar24 + 0x24174" identifier + number_literal)) ;) (expression_statement "*(int *)(puVar26 + -0xac) = iVar13;" (assignment_expression "*(int *)(puVar26 + -0xac) = iVar13" (pointer_expression "*(int *)(puVar26 + -0xac)" * (cast_expression "(int *)(puVar26 + -0xac)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar26 + -0xac)" ( (binary_expression "puVar26 + -0xac" identifier + number_literal) )))) = identifier) ;) (expression_statement "uVar27 = *(undefined4 *)(puVar26 + 0x14);" (assignment_expression "uVar27 = *(undefined4 *)(puVar26 + 0x14)" identifier = (pointer_expression "*(undefined4 *)(puVar26 + 0x14)" * (cast_expression "(undefined4 *)(puVar26 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar26 + 0x14)" ( (binary_expression "puVar26 + 0x14" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar26 + -0x2c) = **(undefined4 **)(puVar24 + 0x1c3ac);" (assignment_expression "*(undefined4 *)(puVar26 + -0x2c) = **(undefined4 **)(puVar24 + 0x1c3ac)" (pointer_expression "*(undefined4 *)(puVar26 + -0x2c)" * (cast_expression "(undefined4 *)(puVar26 + -0x2c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar26 + -0x2c)" ( (binary_expression "puVar26 + -0x2c" identifier + number_literal) )))) = (pointer_expression "**(undefined4 **)(puVar24 + 0x1c3ac)" * (pointer_expression "*(undefined4 **)(puVar24 + 0x1c3ac)" * (cast_expression "(undefined4 **)(puVar24 + 0x1c3ac)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar24 + 0x1c3ac)" ( (binary_expression "puVar24 + 0x1c3ac" identifier + number_literal) )))))) ;) (expression_statement "*(int *******)(puVar26 + -0xb8) = *pppppppiVar17;" (assignment_expression "*(int *******)(puVar26 + -0xb8) = *pppppppiVar17" (pointer_expression "*(int *******)(puVar26 + -0xb8)" * (cast_expression "(int *******)(puVar26 + -0xb8)" ( (type_descriptor "int *******" primitive_type (abstract_pointer_declarator "*******" * (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))))))) ) (parenthesized_expression "(puVar26 + -0xb8)" ( (binary_expression "puVar26 + -0xb8" identifier + number_literal) )))) = (pointer_expression "*pppppppiVar17" * identifier)) ;) (if_statement "if (*(byte *)(pppppppiVar18 + 1) < 0x25) {\n                    /* WARNING: Could not recover jumptable at 0x00022020. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n    iVar13 = (*(code *)(puVar24 + 0x24174 +\n                       *(int *)(*(int *)(puVar24 + 0x1c1ac) + -0x2ac0 +\n                               (uint)*(byte *)(pppppppiVar18 + 1) * 4)))();\n    return iVar13;\n  }" if (parenthesized_expression "(*(byte *)(pppppppiVar18 + 1) < 0x25)" ( (binary_expression "*(byte *)(pppppppiVar18 + 1) < 0x25" (pointer_expression "*(byte *)(pppppppiVar18 + 1)" * (cast_expression "(byte *)(pppppppiVar18 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pppppppiVar18 + 1)" ( (binary_expression "pppppppiVar18 + 1" identifier + number_literal) )))) < number_literal) )) (compound_statement "{\n                    /* WARNING: Could not recover jumptable at 0x00022020. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n    iVar13 = (*(code *)(puVar24 + 0x24174 +\n                       *(int *)(*(int *)(puVar24 + 0x1c1ac) + -0x2ac0 +\n                               (uint)*(byte *)(pppppppiVar18 + 1) * 4)))();\n    return iVar13;\n  }" { comment comment (expression_statement "iVar13 = (*(code *)(puVar24 + 0x24174 +\n                       *(int *)(*(int *)(puVar24 + 0x1c1ac) + -0x2ac0 +\n                               (uint)*(byte *)(pppppppiVar18 + 1) * 4)))();" (assignment_expression "iVar13 = (*(code *)(puVar24 + 0x24174 +\n                       *(int *)(*(int *)(puVar24 + 0x1c1ac) + -0x2ac0 +\n                               (uint)*(byte *)(pppppppiVar18 + 1) * 4)))()" identifier = (call_expression "(*(code *)(puVar24 + 0x24174 +\n                       *(int *)(*(int *)(puVar24 + 0x1c1ac) + -0x2ac0 +\n                               (uint)*(byte *)(pppppppiVar18 + 1) * 4)))()" (parenthesized_expression "(*(code *)(puVar24 + 0x24174 +\n                       *(int *)(*(int *)(puVar24 + 0x1c1ac) + -0x2ac0 +\n                               (uint)*(byte *)(pppppppiVar18 + 1) * 4)))" ( (pointer_expression "*(code *)(puVar24 + 0x24174 +\n                       *(int *)(*(int *)(puVar24 + 0x1c1ac) + -0x2ac0 +\n                               (uint)*(byte *)(pppppppiVar18 + 1) * 4))" * (cast_expression "(code *)(puVar24 + 0x24174 +\n                       *(int *)(*(int *)(puVar24 + 0x1c1ac) + -0x2ac0 +\n                               (uint)*(byte *)(pppppppiVar18 + 1) * 4))" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar24 + 0x24174 +\n                       *(int *)(*(int *)(puVar24 + 0x1c1ac) + -0x2ac0 +\n                               (uint)*(byte *)(pppppppiVar18 + 1) * 4))" ( (binary_expression "puVar24 + 0x24174 +\n                       *(int *)(*(int *)(puVar24 + 0x1c1ac) + -0x2ac0 +\n                               (uint)*(byte *)(pppppppiVar18 + 1) * 4)" (binary_expression "puVar24 + 0x24174" identifier + number_literal) + (pointer_expression "*(int *)(*(int *)(puVar24 + 0x1c1ac) + -0x2ac0 +\n                               (uint)*(byte *)(pppppppiVar18 + 1) * 4)" * (cast_expression "(int *)(*(int *)(puVar24 + 0x1c1ac) + -0x2ac0 +\n                               (uint)*(byte *)(pppppppiVar18 + 1) * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar24 + 0x1c1ac) + -0x2ac0 +\n                               (uint)*(byte *)(pppppppiVar18 + 1) * 4)" ( (binary_expression "*(int *)(puVar24 + 0x1c1ac) + -0x2ac0 +\n                               (uint)*(byte *)(pppppppiVar18 + 1) * 4" (binary_expression "*(int *)(puVar24 + 0x1c1ac) + -0x2ac0" (pointer_expression "*(int *)(puVar24 + 0x1c1ac)" * (cast_expression "(int *)(puVar24 + 0x1c1ac)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar24 + 0x1c1ac)" ( (binary_expression "puVar24 + 0x1c1ac" identifier + number_literal) )))) + number_literal) + (binary_expression "(uint)*(byte *)(pppppppiVar18 + 1) * 4" (binary_expression "(uint)*(byte *)(pppppppiVar18 + 1)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(pppppppiVar18 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pppppppiVar18 + 1)" ( (binary_expression "pppppppiVar18 + 1" identifier + number_literal) )))) * number_literal)) ))))) )))) )) (argument_list "()" ( )))) ;) (return_statement "return iVar13;" return identifier ;) })) (expression_statement "iVar13 = *(int *)(puVar26 + -0x2c);" (assignment_expression "iVar13 = *(int *)(puVar26 + -0x2c)" identifier = (pointer_expression "*(int *)(puVar26 + -0x2c)" * (cast_expression "(int *)(puVar26 + -0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar26 + -0x2c)" ( (binary_expression "puVar26 + -0x2c" identifier + number_literal) ))))) ;) (if_statement "if (iVar13 == **(int **)(puVar24 + 0x1c3ac)) {\n    return 0;\n  }" if (parenthesized_expression "(iVar13 == **(int **)(puVar24 + 0x1c3ac))" ( (binary_expression "iVar13 == **(int **)(puVar24 + 0x1c3ac)" identifier == (pointer_expression "**(int **)(puVar24 + 0x1c3ac)" * (pointer_expression "*(int **)(puVar24 + 0x1c3ac)" * (cast_expression "(int **)(puVar24 + 0x1c3ac)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar24 + 0x1c3ac)" ( (binary_expression "puVar24 + 0x1c3ac" identifier + number_literal) )))))) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "pcVar5 = *(code **)(puVar24 + 0x1c390);" (assignment_expression "pcVar5 = *(code **)(puVar24 + 0x1c390)" identifier = (pointer_expression "*(code **)(puVar24 + 0x1c390)" * (cast_expression "(code **)(puVar24 + 0x1c390)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar24 + 0x1c390)" ( (binary_expression "puVar24 + 0x1c390" identifier + number_literal) ))))) ;) (expression_statement "pcVar6 = FUN_00023824;" (assignment_expression "pcVar6 = FUN_00023824" identifier = identifier) ;) (expression_statement "pppppppiVar15 = pppppppiVar17;" (assignment_expression "pppppppiVar15 = pppppppiVar17" identifier = identifier) ;) (expression_statement "(*pcVar5)();" (call_expression "(*pcVar5)()" (parenthesized_expression "(*pcVar5)" ( (pointer_expression "*pcVar5" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "*(code **)(puVar26 + -0xe4) = pcVar6;" (assignment_expression "*(code **)(puVar26 + -0xe4) = pcVar6" (pointer_expression "*(code **)(puVar26 + -0xe4)" * (cast_expression "(code **)(puVar26 + -0xe4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar26 + -0xe4)" ( (binary_expression "puVar26 + -0xe4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar26 + -0xe8) = uVar27;" (assignment_expression "*(undefined4 *)(puVar26 + -0xe8) = uVar27" (pointer_expression "*(undefined4 *)(puVar26 + -0xe8)" * (cast_expression "(undefined4 *)(puVar26 + -0xe8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar26 + -0xe8)" ( (binary_expression "puVar26 + -0xe8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar26 + -0xec) = piVar23;" (assignment_expression "*(int **)(puVar26 + -0xec) = piVar23" (pointer_expression "*(int **)(puVar26 + -0xec)" * (cast_expression "(int **)(puVar26 + -0xec)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar26 + -0xec)" ( (binary_expression "puVar26 + -0xec" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar26 + -0xf0) = 0;" (assignment_expression "*(undefined4 *)(puVar26 + -0xf0) = 0" (pointer_expression "*(undefined4 *)(puVar26 + -0xf0)" * (cast_expression "(undefined4 *)(puVar26 + -0xf0)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar26 + -0xf0)" ( (binary_expression "puVar26 + -0xf0" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(int ***)(puVar26 + -0xf4) = unaff_s5;" (assignment_expression "*(int ***)(puVar26 + -0xf4) = unaff_s5" (pointer_expression "*(int ***)(puVar26 + -0xf4)" * (cast_expression "(int ***)(puVar26 + -0xf4)" ( (type_descriptor "int ***" primitive_type (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "(puVar26 + -0xf4)" ( (binary_expression "puVar26 + -0xf4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int ********)(puVar26 + -0xf8) = param_4;" (assignment_expression "*(int ********)(puVar26 + -0xf8) = param_4" (pointer_expression "*(int ********)(puVar26 + -0xf8)" * (cast_expression "(int ********)(puVar26 + -0xf8)" ( (type_descriptor "int ********" primitive_type (abstract_pointer_declarator "********" * (abstract_pointer_declarator "*******" * (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))))))))) ) (parenthesized_expression "(puVar26 + -0xf8)" ( (binary_expression "puVar26 + -0xf8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *******)(puVar26 + -0xfc) = unaff_s3;" (assignment_expression "*(int *******)(puVar26 + -0xfc) = unaff_s3" (pointer_expression "*(int *******)(puVar26 + -0xfc)" * (cast_expression "(int *******)(puVar26 + -0xfc)" ( (type_descriptor "int *******" primitive_type (abstract_pointer_declarator "*******" * (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))))))) ) (parenthesized_expression "(puVar26 + -0xfc)" ( (binary_expression "puVar26 + -0xfc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int ********)(puVar26 + -0x100) = unaff_s2;" (assignment_expression "*(int ********)(puVar26 + -0x100) = unaff_s2" (pointer_expression "*(int ********)(puVar26 + -0x100)" * (cast_expression "(int ********)(puVar26 + -0x100)" ( (type_descriptor "int ********" primitive_type (abstract_pointer_declarator "********" * (abstract_pointer_declarator "*******" * (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))))))))) ) (parenthesized_expression "(puVar26 + -0x100)" ( (binary_expression "puVar26 + -0x100" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int ********)(puVar26 + -0x104) = param_2;" (assignment_expression "*(int ********)(puVar26 + -0x104) = param_2" (pointer_expression "*(int ********)(puVar26 + -0x104)" * (cast_expression "(int ********)(puVar26 + -0x104)" ( (type_descriptor "int ********" primitive_type (abstract_pointer_declarator "********" * (abstract_pointer_declarator "*******" * (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))))))))) ) (parenthesized_expression "(puVar26 + -0x104)" ( (binary_expression "puVar26 + -0x104" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int ********)(puVar26 + -0x108) = pppppppiVar17;" (assignment_expression "*(int ********)(puVar26 + -0x108) = pppppppiVar17" (pointer_expression "*(int ********)(puVar26 + -0x108)" * (cast_expression "(int ********)(puVar26 + -0x108)" ( (type_descriptor "int ********" primitive_type (abstract_pointer_declarator "********" * (abstract_pointer_declarator "*******" * (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))))))))) ) (parenthesized_expression "(puVar26 + -0x108)" ( (binary_expression "puVar26 + -0x108" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(code **)(puVar26 + -0x118) = pcVar5 + 0x228ec;" (assignment_expression "*(code **)(puVar26 + -0x118) = pcVar5 + 0x228ec" (pointer_expression "*(code **)(puVar26 + -0x118)" * (cast_expression "(code **)(puVar26 + -0x118)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar26 + -0x118)" ( (binary_expression "puVar26 + -0x118" identifier + number_literal) )))) = (binary_expression "pcVar5 + 0x228ec" identifier + number_literal)) ;) (expression_statement "*(int *)(puVar26 + -0xe0) = iVar13;" (assignment_expression "*(int *)(puVar26 + -0xe0) = iVar13" (pointer_expression "*(int *)(puVar26 + -0xe0)" * (cast_expression "(int *)(puVar26 + -0xe0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar26 + -0xe0)" ( (binary_expression "puVar26 + -0xe0" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int ********)(puVar26 + -0xd4) = pppppppiVar19;" (assignment_expression "*(int ********)(puVar26 + -0xd4) = pppppppiVar19" (pointer_expression "*(int ********)(puVar26 + -0xd4)" * (cast_expression "(int ********)(puVar26 + -0xd4)" ( (type_descriptor "int ********" primitive_type (abstract_pointer_declarator "********" * (abstract_pointer_declarator "*******" * (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))))))))) ) (parenthesized_expression "(puVar26 + -0xd4)" ( (binary_expression "puVar26 + -0xd4" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar21 = *(int *)(puVar26 + -0xd0);" (assignment_expression "iVar21 = *(int *)(puVar26 + -0xd0)" identifier = (pointer_expression "*(int *)(puVar26 + -0xd0)" * (cast_expression "(int *)(puVar26 + -0xd0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar26 + -0xd0)" ( (binary_expression "puVar26 + -0xd0" identifier + number_literal) ))))) ;) (expression_statement "piVar23 = *(int **)(puVar26 + -0xcc);" (assignment_expression "piVar23 = *(int **)(puVar26 + -0xcc)" identifier = (pointer_expression "*(int **)(puVar26 + -0xcc)" * (cast_expression "(int **)(puVar26 + -0xcc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar26 + -0xcc)" ( (binary_expression "puVar26 + -0xcc" identifier + number_literal) ))))) ;) (expression_statement "*(int *******)(puVar26 + -0x110) = *pppppppiVar15;" (assignment_expression "*(int *******)(puVar26 + -0x110) = *pppppppiVar15" (pointer_expression "*(int *******)(puVar26 + -0x110)" * (cast_expression "(int *******)(puVar26 + -0x110)" ( (type_descriptor "int *******" primitive_type (abstract_pointer_declarator "*******" * (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))))))) ) (parenthesized_expression "(puVar26 + -0x110)" ( (binary_expression "puVar26 + -0x110" identifier + number_literal) )))) = (pointer_expression "*pppppppiVar15" * identifier)) ;) (expression_statement "*(int **)(puVar26 + -0x11c) = piVar23;" (assignment_expression "*(int **)(puVar26 + -0x11c) = piVar23" (pointer_expression "*(int **)(puVar26 + -0x11c)" * (cast_expression "(int **)(puVar26 + -0x11c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar26 + -0x11c)" ( (binary_expression "puVar26 + -0x11c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar26 + -0x120) = iVar21;" (assignment_expression "*(int *)(puVar26 + -0x120) = iVar21" (pointer_expression "*(int *)(puVar26 + -0x120)" * (cast_expression "(int *)(puVar26 + -0x120)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar26 + -0x120)" ( (binary_expression "puVar26 + -0x120" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar13 = FUN_00021f9c();" (assignment_expression "iVar13 = FUN_00021f9c()" identifier = (call_expression "FUN_00021f9c()" identifier (argument_list "()" ( )))) ;) (if_statement "if ((*piVar23 == 0) || (iVar13 != 0)) {\n    iVar22 = *(int *)(*(int *)(puVar26 + -0x118) + -0x7ed8);\n    *(int *)(puVar26 + -0x10c) = *(int *)(*(int *)(puVar26 + -0x118) + -0x7ed8) + -0x5cb8;\nLAB_0002390c:\n    do {\n      do {\n        iVar20 = iVar13;\n        if ((*(byte *)(pppppppiVar18 + 1) & 0xf7) == 2) {\n          return iVar20;\n        }\n        if ((iVar21 != 0) && (*(byte *)(pppppppiVar18 + 1) == 9)) {\n          return iVar20;\n        }\n        *(int **)(puVar26 + -0x11c) = piVar23;\n        *(int *)(puVar26 + -0x120) = iVar21;\n        iVar14 = (*(code *)(iVar22 + 0x1f9c))\n                           (*(undefined4 *)(puVar26 + -0xe0),pppppppiVar15,pppppppiVar18,\n                            *(undefined4 *)(puVar26 + -0xd4));\n        if (*piVar23 == 0) {\n          iVar13 = iVar14;\n          iVar2 = iVar20;\n          iVar3 = iVar14;\n          if (iVar20 == 0) goto LAB_0002390c;\n        }\n        else {\n          iVar2 = iVar14;\n          iVar3 = iVar20;\n          if (iVar14 == 0) {\n            if (iVar20 == 0) {\n              return 0;\n            }\n            FUN_0001920c(iVar20,*(int *)(*(int *)(puVar26 + -0x118) + -0x7ed8) + -0x2cc0,0);\n            return 0;\n          }\n        }\n        iVar13 = iVar2;\n      } while (iVar3 == 0);\n      iVar13 = (**(code **)(puVar26 + -0x10c))(*(undefined4 *)(puVar26 + -0x110),iVar20,iVar14,0x10)\n      ;\n    } while (iVar13 != 0);\n    iVar13 = *(int *)(*(int *)(puVar26 + -0x118) + -0x7ed8);\n    FUN_0001920c(iVar14,iVar13 + -0x2cc0,0);\n    FUN_0001920c(iVar20,iVar13 + -0x2cc0,0);\n    *piVar23 = 0xc;\n    iVar13 = 0;\n  }" if (parenthesized_expression "((*piVar23 == 0) || (iVar13 != 0))" ( (binary_expression "(*piVar23 == 0) || (iVar13 != 0)" (parenthesized_expression "(*piVar23 == 0)" ( (binary_expression "*piVar23 == 0" (pointer_expression "*piVar23" * identifier) == number_literal) )) || (parenthesized_expression "(iVar13 != 0)" ( (binary_expression "iVar13 != 0" identifier != number_literal) ))) )) (compound_statement "{\n    iVar22 = *(int *)(*(int *)(puVar26 + -0x118) + -0x7ed8);\n    *(int *)(puVar26 + -0x10c) = *(int *)(*(int *)(puVar26 + -0x118) + -0x7ed8) + -0x5cb8;\nLAB_0002390c:\n    do {\n      do {\n        iVar20 = iVar13;\n        if ((*(byte *)(pppppppiVar18 + 1) & 0xf7) == 2) {\n          return iVar20;\n        }\n        if ((iVar21 != 0) && (*(byte *)(pppppppiVar18 + 1) == 9)) {\n          return iVar20;\n        }\n        *(int **)(puVar26 + -0x11c) = piVar23;\n        *(int *)(puVar26 + -0x120) = iVar21;\n        iVar14 = (*(code *)(iVar22 + 0x1f9c))\n                           (*(undefined4 *)(puVar26 + -0xe0),pppppppiVar15,pppppppiVar18,\n                            *(undefined4 *)(puVar26 + -0xd4));\n        if (*piVar23 == 0) {\n          iVar13 = iVar14;\n          iVar2 = iVar20;\n          iVar3 = iVar14;\n          if (iVar20 == 0) goto LAB_0002390c;\n        }\n        else {\n          iVar2 = iVar14;\n          iVar3 = iVar20;\n          if (iVar14 == 0) {\n            if (iVar20 == 0) {\n              return 0;\n            }\n            FUN_0001920c(iVar20,*(int *)(*(int *)(puVar26 + -0x118) + -0x7ed8) + -0x2cc0,0);\n            return 0;\n          }\n        }\n        iVar13 = iVar2;\n      } while (iVar3 == 0);\n      iVar13 = (**(code **)(puVar26 + -0x10c))(*(undefined4 *)(puVar26 + -0x110),iVar20,iVar14,0x10)\n      ;\n    } while (iVar13 != 0);\n    iVar13 = *(int *)(*(int *)(puVar26 + -0x118) + -0x7ed8);\n    FUN_0001920c(iVar14,iVar13 + -0x2cc0,0);\n    FUN_0001920c(iVar20,iVar13 + -0x2cc0,0);\n    *piVar23 = 0xc;\n    iVar13 = 0;\n  }" { (expression_statement "iVar22 = *(int *)(*(int *)(puVar26 + -0x118) + -0x7ed8);" (assignment_expression "iVar22 = *(int *)(*(int *)(puVar26 + -0x118) + -0x7ed8)" identifier = (pointer_expression "*(int *)(*(int *)(puVar26 + -0x118) + -0x7ed8)" * (cast_expression "(int *)(*(int *)(puVar26 + -0x118) + -0x7ed8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar26 + -0x118) + -0x7ed8)" ( (binary_expression "*(int *)(puVar26 + -0x118) + -0x7ed8" (pointer_expression "*(int *)(puVar26 + -0x118)" * (cast_expression "(int *)(puVar26 + -0x118)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar26 + -0x118)" ( (binary_expression "puVar26 + -0x118" identifier + number_literal) )))) + number_literal) ))))) ;) (expression_statement "*(int *)(puVar26 + -0x10c) = *(int *)(*(int *)(puVar26 + -0x118) + -0x7ed8) + -0x5cb8;" (assignment_expression "*(int *)(puVar26 + -0x10c) = *(int *)(*(int *)(puVar26 + -0x118) + -0x7ed8) + -0x5cb8" (pointer_expression "*(int *)(puVar26 + -0x10c)" * (cast_expression "(int *)(puVar26 + -0x10c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar26 + -0x10c)" ( (binary_expression "puVar26 + -0x10c" identifier + number_literal) )))) = (binary_expression "*(int *)(*(int *)(puVar26 + -0x118) + -0x7ed8) + -0x5cb8" (pointer_expression "*(int *)(*(int *)(puVar26 + -0x118) + -0x7ed8)" * (cast_expression "(int *)(*(int *)(puVar26 + -0x118) + -0x7ed8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar26 + -0x118) + -0x7ed8)" ( (binary_expression "*(int *)(puVar26 + -0x118) + -0x7ed8" (pointer_expression "*(int *)(puVar26 + -0x118)" * (cast_expression "(int *)(puVar26 + -0x118)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar26 + -0x118)" ( (binary_expression "puVar26 + -0x118" identifier + number_literal) )))) + number_literal) )))) + number_literal)) ;) (labeled_statement "LAB_0002390c:\n    do {\n      do {\n        iVar20 = iVar13;\n        if ((*(byte *)(pppppppiVar18 + 1) & 0xf7) == 2) {\n          return iVar20;\n        }\n        if ((iVar21 != 0) && (*(byte *)(pppppppiVar18 + 1) == 9)) {\n          return iVar20;\n        }\n        *(int **)(puVar26 + -0x11c) = piVar23;\n        *(int *)(puVar26 + -0x120) = iVar21;\n        iVar14 = (*(code *)(iVar22 + 0x1f9c))\n                           (*(undefined4 *)(puVar26 + -0xe0),pppppppiVar15,pppppppiVar18,\n                            *(undefined4 *)(puVar26 + -0xd4));\n        if (*piVar23 == 0) {\n          iVar13 = iVar14;\n          iVar2 = iVar20;\n          iVar3 = iVar14;\n          if (iVar20 == 0) goto LAB_0002390c;\n        }\n        else {\n          iVar2 = iVar14;\n          iVar3 = iVar20;\n          if (iVar14 == 0) {\n            if (iVar20 == 0) {\n              return 0;\n            }\n            FUN_0001920c(iVar20,*(int *)(*(int *)(puVar26 + -0x118) + -0x7ed8) + -0x2cc0,0);\n            return 0;\n          }\n        }\n        iVar13 = iVar2;\n      } while (iVar3 == 0);\n      iVar13 = (**(code **)(puVar26 + -0x10c))(*(undefined4 *)(puVar26 + -0x110),iVar20,iVar14,0x10)\n      ;\n    } while (iVar13 != 0);" statement_identifier : (do_statement "do {\n      do {\n        iVar20 = iVar13;\n        if ((*(byte *)(pppppppiVar18 + 1) & 0xf7) == 2) {\n          return iVar20;\n        }\n        if ((iVar21 != 0) && (*(byte *)(pppppppiVar18 + 1) == 9)) {\n          return iVar20;\n        }\n        *(int **)(puVar26 + -0x11c) = piVar23;\n        *(int *)(puVar26 + -0x120) = iVar21;\n        iVar14 = (*(code *)(iVar22 + 0x1f9c))\n                           (*(undefined4 *)(puVar26 + -0xe0),pppppppiVar15,pppppppiVar18,\n                            *(undefined4 *)(puVar26 + -0xd4));\n        if (*piVar23 == 0) {\n          iVar13 = iVar14;\n          iVar2 = iVar20;\n          iVar3 = iVar14;\n          if (iVar20 == 0) goto LAB_0002390c;\n        }\n        else {\n          iVar2 = iVar14;\n          iVar3 = iVar20;\n          if (iVar14 == 0) {\n            if (iVar20 == 0) {\n              return 0;\n            }\n            FUN_0001920c(iVar20,*(int *)(*(int *)(puVar26 + -0x118) + -0x7ed8) + -0x2cc0,0);\n            return 0;\n          }\n        }\n        iVar13 = iVar2;\n      } while (iVar3 == 0);\n      iVar13 = (**(code **)(puVar26 + -0x10c))(*(undefined4 *)(puVar26 + -0x110),iVar20,iVar14,0x10)\n      ;\n    } while (iVar13 != 0);" do (compound_statement "{\n      do {\n        iVar20 = iVar13;\n        if ((*(byte *)(pppppppiVar18 + 1) & 0xf7) == 2) {\n          return iVar20;\n        }\n        if ((iVar21 != 0) && (*(byte *)(pppppppiVar18 + 1) == 9)) {\n          return iVar20;\n        }\n        *(int **)(puVar26 + -0x11c) = piVar23;\n        *(int *)(puVar26 + -0x120) = iVar21;\n        iVar14 = (*(code *)(iVar22 + 0x1f9c))\n                           (*(undefined4 *)(puVar26 + -0xe0),pppppppiVar15,pppppppiVar18,\n                            *(undefined4 *)(puVar26 + -0xd4));\n        if (*piVar23 == 0) {\n          iVar13 = iVar14;\n          iVar2 = iVar20;\n          iVar3 = iVar14;\n          if (iVar20 == 0) goto LAB_0002390c;\n        }\n        else {\n          iVar2 = iVar14;\n          iVar3 = iVar20;\n          if (iVar14 == 0) {\n            if (iVar20 == 0) {\n              return 0;\n            }\n            FUN_0001920c(iVar20,*(int *)(*(int *)(puVar26 + -0x118) + -0x7ed8) + -0x2cc0,0);\n            return 0;\n          }\n        }\n        iVar13 = iVar2;\n      } while (iVar3 == 0);\n      iVar13 = (**(code **)(puVar26 + -0x10c))(*(undefined4 *)(puVar26 + -0x110),iVar20,iVar14,0x10)\n      ;\n    }" { (do_statement "do {\n        iVar20 = iVar13;\n        if ((*(byte *)(pppppppiVar18 + 1) & 0xf7) == 2) {\n          return iVar20;\n        }\n        if ((iVar21 != 0) && (*(byte *)(pppppppiVar18 + 1) == 9)) {\n          return iVar20;\n        }\n        *(int **)(puVar26 + -0x11c) = piVar23;\n        *(int *)(puVar26 + -0x120) = iVar21;\n        iVar14 = (*(code *)(iVar22 + 0x1f9c))\n                           (*(undefined4 *)(puVar26 + -0xe0),pppppppiVar15,pppppppiVar18,\n                            *(undefined4 *)(puVar26 + -0xd4));\n        if (*piVar23 == 0) {\n          iVar13 = iVar14;\n          iVar2 = iVar20;\n          iVar3 = iVar14;\n          if (iVar20 == 0) goto LAB_0002390c;\n        }\n        else {\n          iVar2 = iVar14;\n          iVar3 = iVar20;\n          if (iVar14 == 0) {\n            if (iVar20 == 0) {\n              return 0;\n            }\n            FUN_0001920c(iVar20,*(int *)(*(int *)(puVar26 + -0x118) + -0x7ed8) + -0x2cc0,0);\n            return 0;\n          }\n        }\n        iVar13 = iVar2;\n      } while (iVar3 == 0);" do (compound_statement "{\n        iVar20 = iVar13;\n        if ((*(byte *)(pppppppiVar18 + 1) & 0xf7) == 2) {\n          return iVar20;\n        }\n        if ((iVar21 != 0) && (*(byte *)(pppppppiVar18 + 1) == 9)) {\n          return iVar20;\n        }\n        *(int **)(puVar26 + -0x11c) = piVar23;\n        *(int *)(puVar26 + -0x120) = iVar21;\n        iVar14 = (*(code *)(iVar22 + 0x1f9c))\n                           (*(undefined4 *)(puVar26 + -0xe0),pppppppiVar15,pppppppiVar18,\n                            *(undefined4 *)(puVar26 + -0xd4));\n        if (*piVar23 == 0) {\n          iVar13 = iVar14;\n          iVar2 = iVar20;\n          iVar3 = iVar14;\n          if (iVar20 == 0) goto LAB_0002390c;\n        }\n        else {\n          iVar2 = iVar14;\n          iVar3 = iVar20;\n          if (iVar14 == 0) {\n            if (iVar20 == 0) {\n              return 0;\n            }\n            FUN_0001920c(iVar20,*(int *)(*(int *)(puVar26 + -0x118) + -0x7ed8) + -0x2cc0,0);\n            return 0;\n          }\n        }\n        iVar13 = iVar2;\n      }" { (expression_statement "iVar20 = iVar13;" (assignment_expression "iVar20 = iVar13" identifier = identifier) ;) (if_statement "if ((*(byte *)(pppppppiVar18 + 1) & 0xf7) == 2) {\n          return iVar20;\n        }" if (parenthesized_expression "((*(byte *)(pppppppiVar18 + 1) & 0xf7) == 2)" ( (binary_expression "(*(byte *)(pppppppiVar18 + 1) & 0xf7) == 2" (parenthesized_expression "(*(byte *)(pppppppiVar18 + 1) & 0xf7)" ( (binary_expression "*(byte *)(pppppppiVar18 + 1) & 0xf7" (pointer_expression "*(byte *)(pppppppiVar18 + 1)" * (cast_expression "(byte *)(pppppppiVar18 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pppppppiVar18 + 1)" ( (binary_expression "pppppppiVar18 + 1" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n          return iVar20;\n        }" { (return_statement "return iVar20;" return identifier ;) })) (if_statement "if ((iVar21 != 0) && (*(byte *)(pppppppiVar18 + 1) == 9)) {\n          return iVar20;\n        }" if (parenthesized_expression "((iVar21 != 0) && (*(byte *)(pppppppiVar18 + 1) == 9))" ( (binary_expression "(iVar21 != 0) && (*(byte *)(pppppppiVar18 + 1) == 9)" (parenthesized_expression "(iVar21 != 0)" ( (binary_expression "iVar21 != 0" identifier != number_literal) )) && (parenthesized_expression "(*(byte *)(pppppppiVar18 + 1) == 9)" ( (binary_expression "*(byte *)(pppppppiVar18 + 1) == 9" (pointer_expression "*(byte *)(pppppppiVar18 + 1)" * (cast_expression "(byte *)(pppppppiVar18 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pppppppiVar18 + 1)" ( (binary_expression "pppppppiVar18 + 1" identifier + number_literal) )))) == number_literal) ))) )) (compound_statement "{\n          return iVar20;\n        }" { (return_statement "return iVar20;" return identifier ;) })) (expression_statement "*(int **)(puVar26 + -0x11c) = piVar23;" (assignment_expression "*(int **)(puVar26 + -0x11c) = piVar23" (pointer_expression "*(int **)(puVar26 + -0x11c)" * (cast_expression "(int **)(puVar26 + -0x11c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar26 + -0x11c)" ( (binary_expression "puVar26 + -0x11c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar26 + -0x120) = iVar21;" (assignment_expression "*(int *)(puVar26 + -0x120) = iVar21" (pointer_expression "*(int *)(puVar26 + -0x120)" * (cast_expression "(int *)(puVar26 + -0x120)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar26 + -0x120)" ( (binary_expression "puVar26 + -0x120" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar14 = (*(code *)(iVar22 + 0x1f9c))\n                           (*(undefined4 *)(puVar26 + -0xe0),pppppppiVar15,pppppppiVar18,\n                            *(undefined4 *)(puVar26 + -0xd4));" (assignment_expression "iVar14 = (*(code *)(iVar22 + 0x1f9c))\n                           (*(undefined4 *)(puVar26 + -0xe0),pppppppiVar15,pppppppiVar18,\n                            *(undefined4 *)(puVar26 + -0xd4))" identifier = (call_expression "(*(code *)(iVar22 + 0x1f9c))\n                           (*(undefined4 *)(puVar26 + -0xe0),pppppppiVar15,pppppppiVar18,\n                            *(undefined4 *)(puVar26 + -0xd4))" (parenthesized_expression "(*(code *)(iVar22 + 0x1f9c))" ( (pointer_expression "*(code *)(iVar22 + 0x1f9c)" * (cast_expression "(code *)(iVar22 + 0x1f9c)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar22 + 0x1f9c)" ( (binary_expression "iVar22 + 0x1f9c" identifier + number_literal) )))) )) (argument_list "(*(undefined4 *)(puVar26 + -0xe0),pppppppiVar15,pppppppiVar18,\n                            *(undefined4 *)(puVar26 + -0xd4))" ( (pointer_expression "*(undefined4 *)(puVar26 + -0xe0)" * (cast_expression "(undefined4 *)(puVar26 + -0xe0)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar26 + -0xe0)" ( (binary_expression "puVar26 + -0xe0" identifier + number_literal) )))) , identifier , identifier , (pointer_expression "*(undefined4 *)(puVar26 + -0xd4)" * (cast_expression "(undefined4 *)(puVar26 + -0xd4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar26 + -0xd4)" ( (binary_expression "puVar26 + -0xd4" identifier + number_literal) )))) )))) ;) (if_statement "if (*piVar23 == 0) {\n          iVar13 = iVar14;\n          iVar2 = iVar20;\n          iVar3 = iVar14;\n          if (iVar20 == 0) goto LAB_0002390c;\n        }\n        else {\n          iVar2 = iVar14;\n          iVar3 = iVar20;\n          if (iVar14 == 0) {\n            if (iVar20 == 0) {\n              return 0;\n            }\n            FUN_0001920c(iVar20,*(int *)(*(int *)(puVar26 + -0x118) + -0x7ed8) + -0x2cc0,0);\n            return 0;\n          }\n        }" if (parenthesized_expression "(*piVar23 == 0)" ( (binary_expression "*piVar23 == 0" (pointer_expression "*piVar23" * identifier) == number_literal) )) (compound_statement "{\n          iVar13 = iVar14;\n          iVar2 = iVar20;\n          iVar3 = iVar14;\n          if (iVar20 == 0) goto LAB_0002390c;\n        }" { (expression_statement "iVar13 = iVar14;" (assignment_expression "iVar13 = iVar14" identifier = identifier) ;) (expression_statement "iVar2 = iVar20;" (assignment_expression "iVar2 = iVar20" identifier = identifier) ;) (expression_statement "iVar3 = iVar14;" (assignment_expression "iVar3 = iVar14" identifier = identifier) ;) (if_statement "if (iVar20 == 0) goto LAB_0002390c;" if (parenthesized_expression "(iVar20 == 0)" ( (binary_expression "iVar20 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0002390c;" goto statement_identifier ;)) }) (else_clause "else {\n          iVar2 = iVar14;\n          iVar3 = iVar20;\n          if (iVar14 == 0) {\n            if (iVar20 == 0) {\n              return 0;\n            }\n            FUN_0001920c(iVar20,*(int *)(*(int *)(puVar26 + -0x118) + -0x7ed8) + -0x2cc0,0);\n            return 0;\n          }\n        }" else (compound_statement "{\n          iVar2 = iVar14;\n          iVar3 = iVar20;\n          if (iVar14 == 0) {\n            if (iVar20 == 0) {\n              return 0;\n            }\n            FUN_0001920c(iVar20,*(int *)(*(int *)(puVar26 + -0x118) + -0x7ed8) + -0x2cc0,0);\n            return 0;\n          }\n        }" { (expression_statement "iVar2 = iVar14;" (assignment_expression "iVar2 = iVar14" identifier = identifier) ;) (expression_statement "iVar3 = iVar20;" (assignment_expression "iVar3 = iVar20" identifier = identifier) ;) (if_statement "if (iVar14 == 0) {\n            if (iVar20 == 0) {\n              return 0;\n            }\n            FUN_0001920c(iVar20,*(int *)(*(int *)(puVar26 + -0x118) + -0x7ed8) + -0x2cc0,0);\n            return 0;\n          }" if (parenthesized_expression "(iVar14 == 0)" ( (binary_expression "iVar14 == 0" identifier == number_literal) )) (compound_statement "{\n            if (iVar20 == 0) {\n              return 0;\n            }\n            FUN_0001920c(iVar20,*(int *)(*(int *)(puVar26 + -0x118) + -0x7ed8) + -0x2cc0,0);\n            return 0;\n          }" { (if_statement "if (iVar20 == 0) {\n              return 0;\n            }" if (parenthesized_expression "(iVar20 == 0)" ( (binary_expression "iVar20 == 0" identifier == number_literal) )) (compound_statement "{\n              return 0;\n            }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "FUN_0001920c(iVar20,*(int *)(*(int *)(puVar26 + -0x118) + -0x7ed8) + -0x2cc0,0);" (call_expression "FUN_0001920c(iVar20,*(int *)(*(int *)(puVar26 + -0x118) + -0x7ed8) + -0x2cc0,0)" identifier (argument_list "(iVar20,*(int *)(*(int *)(puVar26 + -0x118) + -0x7ed8) + -0x2cc0,0)" ( identifier , (binary_expression "*(int *)(*(int *)(puVar26 + -0x118) + -0x7ed8) + -0x2cc0" (pointer_expression "*(int *)(*(int *)(puVar26 + -0x118) + -0x7ed8)" * (cast_expression "(int *)(*(int *)(puVar26 + -0x118) + -0x7ed8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar26 + -0x118) + -0x7ed8)" ( (binary_expression "*(int *)(puVar26 + -0x118) + -0x7ed8" (pointer_expression "*(int *)(puVar26 + -0x118)" * (cast_expression "(int *)(puVar26 + -0x118)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar26 + -0x118)" ( (binary_expression "puVar26 + -0x118" identifier + number_literal) )))) + number_literal) )))) + number_literal) , number_literal ))) ;) (return_statement "return 0;" return number_literal ;) })) }))) (expression_statement "iVar13 = iVar2;" (assignment_expression "iVar13 = iVar2" identifier = identifier) ;) }) while (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) ;) (expression_statement "iVar13 = (**(code **)(puVar26 + -0x10c))(*(undefined4 *)(puVar26 + -0x110),iVar20,iVar14,0x10)\n      ;" (assignment_expression "iVar13 = (**(code **)(puVar26 + -0x10c))(*(undefined4 *)(puVar26 + -0x110),iVar20,iVar14,0x10)" identifier = (call_expression "(**(code **)(puVar26 + -0x10c))(*(undefined4 *)(puVar26 + -0x110),iVar20,iVar14,0x10)" (parenthesized_expression "(**(code **)(puVar26 + -0x10c))" ( (pointer_expression "**(code **)(puVar26 + -0x10c)" * (pointer_expression "*(code **)(puVar26 + -0x10c)" * (cast_expression "(code **)(puVar26 + -0x10c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar26 + -0x10c)" ( (binary_expression "puVar26 + -0x10c" identifier + number_literal) ))))) )) (argument_list "(*(undefined4 *)(puVar26 + -0x110),iVar20,iVar14,0x10)" ( (pointer_expression "*(undefined4 *)(puVar26 + -0x110)" * (cast_expression "(undefined4 *)(puVar26 + -0x110)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar26 + -0x110)" ( (binary_expression "puVar26 + -0x110" identifier + number_literal) )))) , identifier , identifier , number_literal )))) ;) }) while (parenthesized_expression "(iVar13 != 0)" ( (binary_expression "iVar13 != 0" identifier != number_literal) )) ;)) (expression_statement "iVar13 = *(int *)(*(int *)(puVar26 + -0x118) + -0x7ed8);" (assignment_expression "iVar13 = *(int *)(*(int *)(puVar26 + -0x118) + -0x7ed8)" identifier = (pointer_expression "*(int *)(*(int *)(puVar26 + -0x118) + -0x7ed8)" * (cast_expression "(int *)(*(int *)(puVar26 + -0x118) + -0x7ed8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar26 + -0x118) + -0x7ed8)" ( (binary_expression "*(int *)(puVar26 + -0x118) + -0x7ed8" (pointer_expression "*(int *)(puVar26 + -0x118)" * (cast_expression "(int *)(puVar26 + -0x118)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar26 + -0x118)" ( (binary_expression "puVar26 + -0x118" identifier + number_literal) )))) + number_literal) ))))) ;) (expression_statement "FUN_0001920c(iVar14,iVar13 + -0x2cc0,0);" (call_expression "FUN_0001920c(iVar14,iVar13 + -0x2cc0,0)" identifier (argument_list "(iVar14,iVar13 + -0x2cc0,0)" ( identifier , (binary_expression "iVar13 + -0x2cc0" identifier + number_literal) , number_literal ))) ;) (expression_statement "FUN_0001920c(iVar20,iVar13 + -0x2cc0,0);" (call_expression "FUN_0001920c(iVar20,iVar13 + -0x2cc0,0)" identifier (argument_list "(iVar20,iVar13 + -0x2cc0,0)" ( identifier , (binary_expression "iVar13 + -0x2cc0" identifier + number_literal) , number_literal ))) ;) (expression_statement "*piVar23 = 0xc;" (assignment_expression "*piVar23 = 0xc" (pointer_expression "*piVar23" * identifier) = number_literal) ;) (expression_statement "iVar13 = 0;" (assignment_expression "iVar13 = 0" identifier = number_literal) ;) })) (return_statement "return iVar13;" return identifier ;) })))
(translation_unit "reg_errcode_t\nset_regs(regex_t *preg,re_match_context_t *mctx,size_t nmatch,regmatch_t *pmatch,_Bool fl_backtrack)\n\n{\n  bool bVar1;\n  bin_tree_t *pbVar2;\n  bin_tree_t *pbVar3;\n  Idx IVar4;\n  undefined3 extraout_var;\n  code *pcVar5;\n  code *pcVar6;\n  code *pcVar7;\n  size_t sVar8;\n  re_dfastate_t *prVar9;\n  wint_t *pwVar10;\n  re_fail_stack_ent_t *prVar11;\n  re_match_context_t *prVar12;\n  _Bool _Var17;\n  int iVar13;\n  re_token_t *prVar14;\n  reg_errcode_t rVar15;\n  bin_tree_t *pbVar16;\n  bin_tree_t *root;\n  int iVar18;\n  re_dfa_t *prVar19;\n  int iVar20;\n  regmatch_t *prVar21;\n  uchar *puVar22;\n  re_string_t *regexp;\n  re_match_context_t *prVar23;\n  re_dfa_t *prVar24;\n  regmatch_t *prVar25;\n  re_match_context_t *unaff_s0;\n  re_match_context_t *prVar26;\n  int *piVar27;\n  re_dfa_t *unaff_s2;\n  re_dfa_t *prVar28;\n  bin_tree_t *root_00;\n  wint_t *unaff_s3;\n  re_fail_stack_t *unaff_s5;\n  re_dfa_t *unaff_s6;\n  re_dfa_t *prVar29;\n  undefined *puVar30;\n  undefined1 *puVar31;\n  undefined1 *puVar32;\n  undefined4 uVar33;\n  undefined1 auStack_98 [24];\n  re_match_context_t *local_70;\n  Idx idx;\n  re_node_set eps_via_nodes;\n  re_fail_stack_t fs_body;\n  \n  puVar31 = auStack_98;\n  puVar32 = auStack_98;\n  iVar18 = *(int *)PTR___stack_chk_guard_0003e348;\n  prVar29 = preg->buffer;\n  fs_body.num = 0;\n  fs_body.alloc = 2;\n  fs_body.stack = (re_fail_stack_ent_t *)0x0;\n  prVar23 = mctx;\n  prVar24 = (re_dfa_t *)nmatch;\n  prVar25 = pmatch;\n  if (fl_backtrack) {\n    fs_body.stack = (re_fail_stack_ent_t *)(*(code *)PTR_malloc_0003e2f8)(0x30);\n    if (fs_body.stack == (re_fail_stack_ent_t *)0x0) {\n      rVar15 = _REG_ESPACE;\n      goto LAB_00021ed8;\n    }\n    unaff_s5 = &fs_body;\n  }\n  else {\n    unaff_s5 = (re_fail_stack_t *)0x0;\n  }\n  unaff_s0 = (re_match_context_t *)prVar29->init_node;\n  eps_via_nodes.alloc = 0;\n  eps_via_nodes.nelem = 0;\n  eps_via_nodes.elems = (Idx *)0x0;\n  prVar19 = (re_dfa_t *)(nmatch * 8);\n  if (prVar19 < (re_dfa_t *)0xfc0) {\n    puVar31 = auStack_98 + nmatch * -8;\n    local_70 = (re_match_context_t *)(&stack0xffffff80 + nmatch * -8);\n    bVar1 = false;\n  }\n  else {\n    local_70 = (re_match_context_t *)(*(code *)PTR_malloc_0003e2f8)(prVar19);\n    bVar1 = true;\n    if (local_70 == (re_match_context_t *)0x0) {\n      free_fail_stack_return(unaff_s5);\n      rVar15 = _REG_ESPACE;\n      puVar32 = auStack_98;\n      goto LAB_00021ed8;\n    }\n  }\n  prVar23 = (re_match_context_t *)pmatch;\n  prVar24 = prVar19;\n  (*(code *)PTR_memcpy_0003e34c)(local_70);\n  idx = pmatch->rm_so;\n  pcVar5 = (code *)(PTR_LAB_0003e238 + -0x10e8);\n  pcVar6 = (code *)(PTR_LAB_0003e238 + -0x6f00);\n  pcVar7 = (code *)(PTR_LAB_0003e238 + -0x589c);\n  while (unaff_s2 = (re_dfa_t *)idx, puVar30 = PTR_memcpy_0003e34c, puVar32 = puVar31,\n        idx <= pmatch->rm_eo) {\n    prVar14 = prVar29->nodes + (int)unaff_s0;\n    if (prVar14->field_0x4 == '\b') {\n      iVar13 = (prVar14->opr).idx + 1;\n      if (iVar13 < (int)nmatch) {\n        pmatch[iVar13].rm_so = idx;\n        pmatch[iVar13].rm_eo = -1;\n      }\nLAB_00021cec:\n      iVar13 = pmatch->rm_eo;\n    }\n    else {\n      if (prVar14->field_0x4 != '\t') goto LAB_00021cec;\n      iVar13 = (prVar14->opr).idx + 1;\n      if ((int)nmatch <= iVar13) goto LAB_00021cec;\n      prVar23 = (re_match_context_t *)(pmatch + iVar13);\n      if ((int)(prVar23->input).raw_mbs < idx) {\n        (prVar23->input).mbs = (uchar *)idx;\n        prVar23 = (re_match_context_t *)pmatch;\n        prVar24 = prVar19;\n        (*(code *)puVar30)(local_70);\n        iVar13 = pmatch->rm_eo;\n      }\n      else {\n        if (((*(uint *)&prVar14->field_0x4 & 0x1000) == 0) ||\n           (prVar24 = prVar19,\n           (&(local_70->input).wcs)[(prVar14->opr).idx * 2] == (wint_t *)0xffffffff)) {\n          (prVar23->input).mbs = (uchar *)idx;\n          goto LAB_00021cec;\n        }\n        prVar23 = local_70;\n        (*(code *)PTR_memcpy_0003e34c)(pmatch);\n        iVar13 = pmatch->rm_eo;\n      }\n    }\n    if (((re_dfa_t *)iVar13 == unaff_s2) && ((re_match_context_t *)mctx->last_node == unaff_s0)) {\n      if (unaff_s5 == (re_fail_stack_t *)0x0) {\n        (*(code *)PTR_free_0003e354)(eps_via_nodes.elems);\n        if (bVar1) {\n          (*(code *)PTR_free_0003e354)(local_70);\n          rVar15 = _REG_NOERROR;\n        }\n        else {\n          rVar15 = _REG_NOERROR;\n        }\n      }\n      else {\n        if (nmatch != 0) {\n          sVar8 = 0;\n          prVar24 = (re_dfa_t *)0xffffffff;\n          prVar21 = pmatch;\n          do {\n            if ((-1 < prVar21->rm_so) &&\n               (prVar23 = (re_match_context_t *)prVar21->rm_eo,\n               (re_match_context_t *)prVar21->rm_eo == (re_match_context_t *)0xffffffff)) break;\n            sVar8 = sVar8 + 1;\n            prVar21 = prVar21 + 1;\n            prVar23 = (re_match_context_t *)nmatch;\n          } while (nmatch != sVar8);\n          if (sVar8 != nmatch) {\n            *(re_node_set **)(puVar31 + 0x10) = &eps_via_nodes;\n            prVar23 = (re_match_context_t *)&idx;\n            prVar24 = (re_dfa_t *)nmatch;\n            prVar25 = pmatch;\n            unaff_s0 = (re_match_context_t *)(*pcVar5)(unaff_s5);\n            goto LAB_00021d04;\n          }\n        }\n        (*(code *)PTR_free_0003e354)(eps_via_nodes.elems);\n        if (bVar1) {\n          (*(code *)PTR_free_0003e354)(local_70);\n        }\n        rVar15 = free_fail_stack_return(unaff_s5);\n      }\n      goto LAB_00021ed8;\n    }\nLAB_00021d04:\n    unaff_s2 = mctx->dfa;\n    unaff_s3 = (wint_t *)((int)unaff_s0 * 8);\n    prVar14 = unaff_s2->nodes + (int)unaff_s0;\n    if ((prVar14->field_0x4 & 8) == 0) {\n      if ((*(uint *)&prVar14->field_0x4 & 0x800) == 0) {\n        if (prVar14->field_0x4 == 4) {\n          iVar20 = pmatch[(prVar14->opr).idx + 1].rm_eo;\n          iVar13 = pmatch[(prVar14->opr).idx + 1].rm_so;\n          unaff_s6 = (re_dfa_t *)(iVar20 - iVar13);\n          if (unaff_s5 == (re_fail_stack_t *)0x0) {\n            prVar23 = unaff_s0;\n            if (unaff_s6 != (re_dfa_t *)0x0) goto LAB_00021da8;\nLAB_00021dd0:\n            prVar23 = unaff_s0;\n            iVar13 = (*pcVar7)(&eps_via_nodes);\n            if (iVar13 == 0) goto LAB_00021b34;\n            prVar26 = (re_match_context_t *)*unaff_s2->edests[(int)unaff_s0].elems;\n            prVar23 = prVar26;\n            iVar13 = (*pcVar6)(&mctx->state_log[idx]->nodes);\n            if (iVar13 != 0) goto LAB_00021ca8;\n            goto LAB_00021c18;\n          }\n          if ((iVar13 != -1) && (iVar20 != -1)) {\n            if (unaff_s6 == (re_dfa_t *)0x0) goto LAB_00021dd0;\n            puVar22 = (mctx->input).mbs;\n            prVar23 = (re_match_context_t *)(puVar22 + idx);\n            prVar24 = unaff_s6;\n            iVar13 = (*(code *)PTR_memcmp_0003e338)(puVar22 + iVar13);\n            if (iVar13 == 0) goto LAB_00021da8;\n          }\n        }\n        else {\nLAB_00021c18:\n          unaff_s6 = (re_dfa_t *)idx;\n          prVar23 = (re_match_context_t *)(unaff_s2->nodes + (int)unaff_s0);\n          prVar24 = (re_dfa_t *)idx;\n          _Var17 = check_node_accept(mctx,(re_token_t *)prVar23,idx);\n          if (CONCAT31(extraout_var,_Var17) != 0) {\n            prVar26 = (re_match_context_t *)unaff_s2->nexts[(int)unaff_s0];\n            idx = (int)unaff_s6 + 1;\n            goto LAB_00021c5c;\n          }\n        }\n      }\n      else {\n        prVar23 = unaff_s0;\n        prVar24 = (re_dfa_t *)mctx;\n        prVar25 = (regmatch_t *)idx;\n        unaff_s6 = (re_dfa_t *)check_node_accept_bytes(unaff_s2,(Idx)unaff_s0,&mctx->input,idx);\n        if (unaff_s6 == (re_dfa_t *)0x0) goto LAB_00021c18;\nLAB_00021da8:\n        prVar26 = (re_match_context_t *)unaff_s2->nexts[(int)unaff_s0];\n        idx = (int)unaff_s6->word_char + idx + -0x60;\nLAB_00021c5c:\n        unaff_s6 = (re_dfa_t *)idx;\n        if (unaff_s5 == (re_fail_stack_t *)0x0) {\nLAB_00021ca4:\n          eps_via_nodes.nelem = 0;\n          goto LAB_00021ca8;\n        }\n        unaff_s6 = (re_dfa_t *)(idx * 4);\n        if (idx <= mctx->match_last) {\n          unaff_s6 = (re_dfa_t *)(mctx->state_log + idx);\n          puVar22 = ((re_string_t *)&unaff_s6->nodes)->raw_mbs;\n          prVar23 = prVar26;\n          if ((puVar22 != (uchar *)0x0) && (iVar13 = (*pcVar6)(puVar22 + 4), iVar13 != 0))\n          goto LAB_00021ca4;\n        }\n      }\nLAB_00021f3c:\n      unaff_s0 = (re_match_context_t *)0xffffffff;\n      goto LAB_00021f44;\n    }\n    prVar9 = mctx->state_log[idx];\n    unaff_s2 = (re_dfa_t *)(unaff_s2->edests + (int)unaff_s0);\n    prVar23 = unaff_s0;\n    iVar13 = (*pcVar7)(&eps_via_nodes);\n    if (iVar13 == 0) goto LAB_00021b34;\n    unaff_s6 = (re_dfa_t *)unaff_s2->nodes_alloc;\n    if ((int)unaff_s6 < 1) goto LAB_00021f3c;\n    unaff_s3 = (wint_t *)unaff_s2->nodes_len;\n    unaff_s2 = (re_dfa_t *)0x0;\n    unaff_s0 = (re_match_context_t *)0xffffffff;\n    do {\n      prVar12 = (re_match_context_t *)*unaff_s3;\n      prVar23 = prVar12;\n      iVar13 = (*pcVar6)(&prVar9->nodes);\n      prVar26 = unaff_s0;\n      if ((iVar13 != 0) &&\n         (prVar23 = unaff_s0, prVar26 = prVar12, unaff_s0 != (re_match_context_t *)0xffffffff)) {\n        iVar13 = (*pcVar6)(&eps_via_nodes);\n        IVar4 = idx;\n        if ((iVar13 == 0) &&\n           (prVar26 = unaff_s0, unaff_s6 = (re_dfa_t *)idx, unaff_s5 != (re_fail_stack_t *)0x0)) {\n          prVar28 = (re_dfa_t *)unaff_s5->num;\n          prVar26 = (re_match_context_t *)((int)&((re_string_t *)&prVar28->nodes)->raw_mbs + 1);\n          unaff_s5->num = (Idx)prVar26;\n          prVar23 = (re_match_context_t *)unaff_s5->alloc;\n          if (prVar26 == prVar23) {\n            prVar23 = (re_match_context_t *)((int)prVar23 * 0x30);\n            prVar11 = (re_fail_stack_ent_t *)(*(code *)PTR_realloc_0003e2fc)(unaff_s5->stack);\n            unaff_s2 = prVar28;\n            unaff_s6 = (re_dfa_t *)IVar4;\n            if (prVar11 == (re_fail_stack_ent_t *)0x0) goto LAB_00021b34;\n            unaff_s5->alloc = unaff_s5->alloc << 1;\n            unaff_s5->stack = prVar11;\n          }\n          unaff_s3 = (wint_t *)((int)prVar28 * 0x18);\n          unaff_s5->stack[(int)prVar28].idx = IVar4;\n          unaff_s5->stack[(int)prVar28].node = (Idx)prVar12;\n          unaff_s2 = (re_dfa_t *)(unaff_s5->stack + (int)prVar28);\n          pwVar10 = (wint_t *)(*(code *)PTR_malloc_0003e2f8)(prVar19);\n          unaff_s2->nodes_len = (size_t)pwVar10;\n          prVar21 = unaff_s5->stack[(int)prVar28].regs;\n          prVar24 = prVar19;\n          unaff_s6 = prVar19;\n          if (prVar21 == (regmatch_t *)0x0) goto LAB_00021b34;\n          (*(code *)PTR_memcpy_0003e34c)(prVar21,pmatch);\n          prVar23 = (re_match_context_t *)&eps_via_nodes;\n          rVar15 = re_node_set_init_copy\n                             (&unaff_s5->stack[(int)prVar28].eps_via_nodes,(re_node_set *)prVar23);\n          prVar26 = unaff_s0;\n          if (rVar15 != _REG_NOERROR) goto LAB_00021b34;\n        }\n        break;\n      }\n      unaff_s2 = (re_dfa_t *)((int)&((re_string_t *)&unaff_s2->nodes)->raw_mbs + 1);\n      unaff_s3 = unaff_s3 + 1;\n      unaff_s0 = prVar26;\n    } while (unaff_s6 != unaff_s2);\nLAB_00021ca8:\n    unaff_s0 = prVar26;\n    if ((int)prVar26 < 0) {\nLAB_00021f44:\n      if (unaff_s0 == (re_match_context_t *)&SUB_fffffffe) {\nLAB_00021b34:\n        (*(code *)PTR_free_0003e354)(eps_via_nodes.elems);\n        if (bVar1) {\n          (*(code *)PTR_free_0003e354)(local_70);\n        }\n        free_fail_stack_return(unaff_s5);\n        rVar15 = _REG_ESPACE;\n        goto LAB_00021ed8;\n      }\n      if (unaff_s5 == (re_fail_stack_t *)0x0) {\n        (*(code *)PTR_free_0003e354)();\n        if (bVar1) {\n          (*(code *)PTR_free_0003e354)(local_70);\n          rVar15 = _REG_NOMATCH;\n        }\n        else {\n          rVar15 = _REG_NOMATCH;\n        }\n        goto LAB_00021ed8;\n      }\n      *(re_node_set **)(puVar31 + 0x10) = &eps_via_nodes;\n      prVar23 = (re_match_context_t *)&idx;\n      prVar24 = (re_dfa_t *)nmatch;\n      prVar25 = pmatch;\n      unaff_s0 = (re_match_context_t *)(*pcVar5)(unaff_s5);\n    }\n  }\n  (*(code *)PTR_free_0003e354)(eps_via_nodes.elems);\n  if (bVar1) {\n    (*(code *)PTR_free_0003e354)(local_70);\n  }\n  rVar15 = free_fail_stack_return(unaff_s5);\nLAB_00021ed8:\n  if (iVar18 == *(int *)PTR___stack_chk_guard_0003e348) {\n    return rVar15;\n  }\n  pcVar5 = parse_expression;\n  puVar30 = PTR___stack_chk_fail_0003e32c;\n  (*(code *)PTR___stack_chk_fail_0003e32c)();\n  *(code **)(puVar32 + -4) = pcVar5;\n  *(undefined1 **)(puVar32 + -8) = auStack_98;\n  *(re_dfa_t **)(puVar32 + -0xc) = prVar29;\n  *(re_dfa_t **)(puVar32 + -0x10) = unaff_s6;\n  *(re_fail_stack_t **)(puVar32 + -0x14) = unaff_s5;\n  *(regmatch_t **)(puVar32 + -0x18) = pmatch;\n  *(wint_t **)(puVar32 + -0x1c) = unaff_s3;\n  *(re_dfa_t **)(puVar32 + -0x20) = unaff_s2;\n  *(re_match_context_t **)(puVar32 + -0x24) = mctx;\n  *(re_match_context_t **)(puVar32 + -0x28) = unaff_s0;\n  *(undefined **)(puVar32 + -0xc0) = puVar30 + 0x24174;\n  *(int *)(puVar32 + -0xac) = iVar18;\n  uVar33 = *(undefined4 *)(puVar32 + 0x14);\n  *(undefined4 *)(puVar32 + -0x2c) = **(undefined4 **)(puVar30 + 0x1c3ac);\n  *(uchar **)(puVar32 + -0xb8) = (prVar23->input).raw_mbs;\n  if (*(byte *)&prVar24->nodes_alloc < 0x25) {\n                    /* WARNING: Could not recover jumptable at 0x00022020. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n    rVar15 = (*(code *)(puVar30 + 0x24174 +\n                       *(int *)(*(int *)(puVar30 + 0x1c1ac) + -0x2ac0 +\n                               (uint)*(byte *)&prVar24->nodes_alloc * 4)))();\n    return rVar15;\n  }\n  regexp = *(re_string_t **)(puVar32 + -0x2c);\n  if (regexp == (re_string_t *)**(int **)(puVar30 + 0x1c3ac)) {\n    return _REG_NOERROR;\n  }\n  pcVar5 = *(code **)(puVar30 + 0x1c390);\n  pcVar6 = parse_branch;\n  prVar26 = prVar23;\n  (*pcVar5)();\n  *(code **)(puVar32 + -0xe4) = pcVar6;\n  *(undefined4 *)(puVar32 + -0xe8) = uVar33;\n  *(re_dfa_t **)(puVar32 + -0xec) = prVar29;\n  *(undefined4 *)(puVar32 + -0xf0) = 0;\n  *(re_fail_stack_t **)(puVar32 + -0xf4) = unaff_s5;\n  *(regmatch_t **)(puVar32 + -0xf8) = pmatch;\n  *(wint_t **)(puVar32 + -0xfc) = unaff_s3;\n  *(re_dfa_t **)(puVar32 + -0x100) = unaff_s2;\n  *(re_match_context_t **)(puVar32 + -0x104) = mctx;\n  *(re_match_context_t **)(puVar32 + -0x108) = prVar23;\n  *(code **)(puVar32 + -0x118) = pcVar5 + 0x228ec;\n  *(re_string_t **)(puVar32 + -0xe0) = regexp;\n  *(regmatch_t **)(puVar32 + -0xd4) = prVar25;\n  iVar18 = *(int *)(puVar32 + -0xd0);\n  piVar27 = *(int **)(puVar32 + -0xcc);\n  *(uchar **)(puVar32 + -0x110) = (prVar26->input).raw_mbs;\n  *(int **)(puVar32 + -0x11c) = piVar27;\n  *(int *)(puVar32 + -0x120) = iVar18;\n  pbVar16 = parse_expression(regexp,(regex_t *)prVar26,(re_token_t *)prVar24,(reg_syntax_t)prVar25,\n                             *(Idx *)(puVar32 + -0x120),*(reg_errcode_t **)(puVar32 + -0x11c));\n  if ((*piVar27 == 0) || (pbVar16 != (bin_tree_t *)0x0)) {\n    iVar13 = *(int *)(*(int *)(puVar32 + -0x118) + -0x7ed8);\n    *(int *)(puVar32 + -0x10c) = *(int *)(*(int *)(puVar32 + -0x118) + -0x7ed8) + -0x5cb8;\nLAB_0002390c:\n    do {\n      do {\n        root_00 = pbVar16;\n        if ((*(byte *)&prVar24->nodes_alloc & 0xf7) == 2) {\n          return (reg_errcode_t)root_00;\n        }\n        if ((iVar18 != 0) && (*(byte *)&prVar24->nodes_alloc == 9)) {\n          return (reg_errcode_t)root_00;\n        }\n        *(int **)(puVar32 + -0x11c) = piVar27;\n        *(int *)(puVar32 + -0x120) = iVar18;\n        root = (bin_tree_t *)\n               (*(code *)(iVar13 + 0x1f9c))\n                         (*(undefined4 *)(puVar32 + -0xe0),prVar26,prVar24,\n                          *(undefined4 *)(puVar32 + -0xd4));\n        if (*piVar27 == 0) {\n          pbVar16 = root;\n          pbVar2 = root_00;\n          pbVar3 = root;\n          if (root_00 == (bin_tree_t *)0x0) goto LAB_0002390c;\n        }\n        else {\n          pbVar2 = root;\n          pbVar3 = root_00;\n          if (root == (bin_tree_t *)0x0) {\n            if (root_00 == (bin_tree_t *)0x0) {\n              return _REG_NOERROR;\n            }\n            postorder(root_00,(_func_reg_errcode_t_void_ptr_bin_tree_t_ptr *)\n                              (*(int *)(*(int *)(puVar32 + -0x118) + -0x7ed8) + -0x2cc0),(void *)0x0\n                     );\n            return _REG_NOERROR;\n          }\n        }\n        pbVar16 = pbVar2;\n      } while (pbVar3 == (bin_tree_t *)0x0);\n      pbVar16 = (bin_tree_t *)\n                (**(code **)(puVar32 + -0x10c))(*(undefined4 *)(puVar32 + -0x110),root_00,root,0x10)\n      ;\n    } while (pbVar16 != (bin_tree_t *)0x0);\n    iVar18 = *(int *)(*(int *)(puVar32 + -0x118) + -0x7ed8);\n    postorder(root,(_func_reg_errcode_t_void_ptr_bin_tree_t_ptr *)(iVar18 + -0x2cc0),(void *)0x0);\n    postorder(root_00,(_func_reg_errcode_t_void_ptr_bin_tree_t_ptr *)(iVar18 + -0x2cc0),(void *)0x0)\n    ;\n    *piVar27 = 0xc;\n    pbVar16 = (bin_tree_t *)0x0;\n  }\n  return (reg_errcode_t)pbVar16;\n}\n\n" (function_definition "reg_errcode_t\nset_regs(regex_t *preg,re_match_context_t *mctx,size_t nmatch,regmatch_t *pmatch,_Bool fl_backtrack)\n\n{\n  bool bVar1;\n  bin_tree_t *pbVar2;\n  bin_tree_t *pbVar3;\n  Idx IVar4;\n  undefined3 extraout_var;\n  code *pcVar5;\n  code *pcVar6;\n  code *pcVar7;\n  size_t sVar8;\n  re_dfastate_t *prVar9;\n  wint_t *pwVar10;\n  re_fail_stack_ent_t *prVar11;\n  re_match_context_t *prVar12;\n  _Bool _Var17;\n  int iVar13;\n  re_token_t *prVar14;\n  reg_errcode_t rVar15;\n  bin_tree_t *pbVar16;\n  bin_tree_t *root;\n  int iVar18;\n  re_dfa_t *prVar19;\n  int iVar20;\n  regmatch_t *prVar21;\n  uchar *puVar22;\n  re_string_t *regexp;\n  re_match_context_t *prVar23;\n  re_dfa_t *prVar24;\n  regmatch_t *prVar25;\n  re_match_context_t *unaff_s0;\n  re_match_context_t *prVar26;\n  int *piVar27;\n  re_dfa_t *unaff_s2;\n  re_dfa_t *prVar28;\n  bin_tree_t *root_00;\n  wint_t *unaff_s3;\n  re_fail_stack_t *unaff_s5;\n  re_dfa_t *unaff_s6;\n  re_dfa_t *prVar29;\n  undefined *puVar30;\n  undefined1 *puVar31;\n  undefined1 *puVar32;\n  undefined4 uVar33;\n  undefined1 auStack_98 [24];\n  re_match_context_t *local_70;\n  Idx idx;\n  re_node_set eps_via_nodes;\n  re_fail_stack_t fs_body;\n  \n  puVar31 = auStack_98;\n  puVar32 = auStack_98;\n  iVar18 = *(int *)PTR___stack_chk_guard_0003e348;\n  prVar29 = preg->buffer;\n  fs_body.num = 0;\n  fs_body.alloc = 2;\n  fs_body.stack = (re_fail_stack_ent_t *)0x0;\n  prVar23 = mctx;\n  prVar24 = (re_dfa_t *)nmatch;\n  prVar25 = pmatch;\n  if (fl_backtrack) {\n    fs_body.stack = (re_fail_stack_ent_t *)(*(code *)PTR_malloc_0003e2f8)(0x30);\n    if (fs_body.stack == (re_fail_stack_ent_t *)0x0) {\n      rVar15 = _REG_ESPACE;\n      goto LAB_00021ed8;\n    }\n    unaff_s5 = &fs_body;\n  }\n  else {\n    unaff_s5 = (re_fail_stack_t *)0x0;\n  }\n  unaff_s0 = (re_match_context_t *)prVar29->init_node;\n  eps_via_nodes.alloc = 0;\n  eps_via_nodes.nelem = 0;\n  eps_via_nodes.elems = (Idx *)0x0;\n  prVar19 = (re_dfa_t *)(nmatch * 8);\n  if (prVar19 < (re_dfa_t *)0xfc0) {\n    puVar31 = auStack_98 + nmatch * -8;\n    local_70 = (re_match_context_t *)(&stack0xffffff80 + nmatch * -8);\n    bVar1 = false;\n  }\n  else {\n    local_70 = (re_match_context_t *)(*(code *)PTR_malloc_0003e2f8)(prVar19);\n    bVar1 = true;\n    if (local_70 == (re_match_context_t *)0x0) {\n      free_fail_stack_return(unaff_s5);\n      rVar15 = _REG_ESPACE;\n      puVar32 = auStack_98;\n      goto LAB_00021ed8;\n    }\n  }\n  prVar23 = (re_match_context_t *)pmatch;\n  prVar24 = prVar19;\n  (*(code *)PTR_memcpy_0003e34c)(local_70);\n  idx = pmatch->rm_so;\n  pcVar5 = (code *)(PTR_LAB_0003e238 + -0x10e8);\n  pcVar6 = (code *)(PTR_LAB_0003e238 + -0x6f00);\n  pcVar7 = (code *)(PTR_LAB_0003e238 + -0x589c);\n  while (unaff_s2 = (re_dfa_t *)idx, puVar30 = PTR_memcpy_0003e34c, puVar32 = puVar31,\n        idx <= pmatch->rm_eo) {\n    prVar14 = prVar29->nodes + (int)unaff_s0;\n    if (prVar14->field_0x4 == '\b') {\n      iVar13 = (prVar14->opr).idx + 1;\n      if (iVar13 < (int)nmatch) {\n        pmatch[iVar13].rm_so = idx;\n        pmatch[iVar13].rm_eo = -1;\n      }\nLAB_00021cec:\n      iVar13 = pmatch->rm_eo;\n    }\n    else {\n      if (prVar14->field_0x4 != '\t') goto LAB_00021cec;\n      iVar13 = (prVar14->opr).idx + 1;\n      if ((int)nmatch <= iVar13) goto LAB_00021cec;\n      prVar23 = (re_match_context_t *)(pmatch + iVar13);\n      if ((int)(prVar23->input).raw_mbs < idx) {\n        (prVar23->input).mbs = (uchar *)idx;\n        prVar23 = (re_match_context_t *)pmatch;\n        prVar24 = prVar19;\n        (*(code *)puVar30)(local_70);\n        iVar13 = pmatch->rm_eo;\n      }\n      else {\n        if (((*(uint *)&prVar14->field_0x4 & 0x1000) == 0) ||\n           (prVar24 = prVar19,\n           (&(local_70->input).wcs)[(prVar14->opr).idx * 2] == (wint_t *)0xffffffff)) {\n          (prVar23->input).mbs = (uchar *)idx;\n          goto LAB_00021cec;\n        }\n        prVar23 = local_70;\n        (*(code *)PTR_memcpy_0003e34c)(pmatch);\n        iVar13 = pmatch->rm_eo;\n      }\n    }\n    if (((re_dfa_t *)iVar13 == unaff_s2) && ((re_match_context_t *)mctx->last_node == unaff_s0)) {\n      if (unaff_s5 == (re_fail_stack_t *)0x0) {\n        (*(code *)PTR_free_0003e354)(eps_via_nodes.elems);\n        if (bVar1) {\n          (*(code *)PTR_free_0003e354)(local_70);\n          rVar15 = _REG_NOERROR;\n        }\n        else {\n          rVar15 = _REG_NOERROR;\n        }\n      }\n      else {\n        if (nmatch != 0) {\n          sVar8 = 0;\n          prVar24 = (re_dfa_t *)0xffffffff;\n          prVar21 = pmatch;\n          do {\n            if ((-1 < prVar21->rm_so) &&\n               (prVar23 = (re_match_context_t *)prVar21->rm_eo,\n               (re_match_context_t *)prVar21->rm_eo == (re_match_context_t *)0xffffffff)) break;\n            sVar8 = sVar8 + 1;\n            prVar21 = prVar21 + 1;\n            prVar23 = (re_match_context_t *)nmatch;\n          } while (nmatch != sVar8);\n          if (sVar8 != nmatch) {\n            *(re_node_set **)(puVar31 + 0x10) = &eps_via_nodes;\n            prVar23 = (re_match_context_t *)&idx;\n            prVar24 = (re_dfa_t *)nmatch;\n            prVar25 = pmatch;\n            unaff_s0 = (re_match_context_t *)(*pcVar5)(unaff_s5);\n            goto LAB_00021d04;\n          }\n        }\n        (*(code *)PTR_free_0003e354)(eps_via_nodes.elems);\n        if (bVar1) {\n          (*(code *)PTR_free_0003e354)(local_70);\n        }\n        rVar15 = free_fail_stack_return(unaff_s5);\n      }\n      goto LAB_00021ed8;\n    }\nLAB_00021d04:\n    unaff_s2 = mctx->dfa;\n    unaff_s3 = (wint_t *)((int)unaff_s0 * 8);\n    prVar14 = unaff_s2->nodes + (int)unaff_s0;\n    if ((prVar14->field_0x4 & 8) == 0) {\n      if ((*(uint *)&prVar14->field_0x4 & 0x800) == 0) {\n        if (prVar14->field_0x4 == 4) {\n          iVar20 = pmatch[(prVar14->opr).idx + 1].rm_eo;\n          iVar13 = pmatch[(prVar14->opr).idx + 1].rm_so;\n          unaff_s6 = (re_dfa_t *)(iVar20 - iVar13);\n          if (unaff_s5 == (re_fail_stack_t *)0x0) {\n            prVar23 = unaff_s0;\n            if (unaff_s6 != (re_dfa_t *)0x0) goto LAB_00021da8;\nLAB_00021dd0:\n            prVar23 = unaff_s0;\n            iVar13 = (*pcVar7)(&eps_via_nodes);\n            if (iVar13 == 0) goto LAB_00021b34;\n            prVar26 = (re_match_context_t *)*unaff_s2->edests[(int)unaff_s0].elems;\n            prVar23 = prVar26;\n            iVar13 = (*pcVar6)(&mctx->state_log[idx]->nodes);\n            if (iVar13 != 0) goto LAB_00021ca8;\n            goto LAB_00021c18;\n          }\n          if ((iVar13 != -1) && (iVar20 != -1)) {\n            if (unaff_s6 == (re_dfa_t *)0x0) goto LAB_00021dd0;\n            puVar22 = (mctx->input).mbs;\n            prVar23 = (re_match_context_t *)(puVar22 + idx);\n            prVar24 = unaff_s6;\n            iVar13 = (*(code *)PTR_memcmp_0003e338)(puVar22 + iVar13);\n            if (iVar13 == 0) goto LAB_00021da8;\n          }\n        }\n        else {\nLAB_00021c18:\n          unaff_s6 = (re_dfa_t *)idx;\n          prVar23 = (re_match_context_t *)(unaff_s2->nodes + (int)unaff_s0);\n          prVar24 = (re_dfa_t *)idx;\n          _Var17 = check_node_accept(mctx,(re_token_t *)prVar23,idx);\n          if (CONCAT31(extraout_var,_Var17) != 0) {\n            prVar26 = (re_match_context_t *)unaff_s2->nexts[(int)unaff_s0];\n            idx = (int)unaff_s6 + 1;\n            goto LAB_00021c5c;\n          }\n        }\n      }\n      else {\n        prVar23 = unaff_s0;\n        prVar24 = (re_dfa_t *)mctx;\n        prVar25 = (regmatch_t *)idx;\n        unaff_s6 = (re_dfa_t *)check_node_accept_bytes(unaff_s2,(Idx)unaff_s0,&mctx->input,idx);\n        if (unaff_s6 == (re_dfa_t *)0x0) goto LAB_00021c18;\nLAB_00021da8:\n        prVar26 = (re_match_context_t *)unaff_s2->nexts[(int)unaff_s0];\n        idx = (int)unaff_s6->word_char + idx + -0x60;\nLAB_00021c5c:\n        unaff_s6 = (re_dfa_t *)idx;\n        if (unaff_s5 == (re_fail_stack_t *)0x0) {\nLAB_00021ca4:\n          eps_via_nodes.nelem = 0;\n          goto LAB_00021ca8;\n        }\n        unaff_s6 = (re_dfa_t *)(idx * 4);\n        if (idx <= mctx->match_last) {\n          unaff_s6 = (re_dfa_t *)(mctx->state_log + idx);\n          puVar22 = ((re_string_t *)&unaff_s6->nodes)->raw_mbs;\n          prVar23 = prVar26;\n          if ((puVar22 != (uchar *)0x0) && (iVar13 = (*pcVar6)(puVar22 + 4), iVar13 != 0))\n          goto LAB_00021ca4;\n        }\n      }\nLAB_00021f3c:\n      unaff_s0 = (re_match_context_t *)0xffffffff;\n      goto LAB_00021f44;\n    }\n    prVar9 = mctx->state_log[idx];\n    unaff_s2 = (re_dfa_t *)(unaff_s2->edests + (int)unaff_s0);\n    prVar23 = unaff_s0;\n    iVar13 = (*pcVar7)(&eps_via_nodes);\n    if (iVar13 == 0) goto LAB_00021b34;\n    unaff_s6 = (re_dfa_t *)unaff_s2->nodes_alloc;\n    if ((int)unaff_s6 < 1) goto LAB_00021f3c;\n    unaff_s3 = (wint_t *)unaff_s2->nodes_len;\n    unaff_s2 = (re_dfa_t *)0x0;\n    unaff_s0 = (re_match_context_t *)0xffffffff;\n    do {\n      prVar12 = (re_match_context_t *)*unaff_s3;\n      prVar23 = prVar12;\n      iVar13 = (*pcVar6)(&prVar9->nodes);\n      prVar26 = unaff_s0;\n      if ((iVar13 != 0) &&\n         (prVar23 = unaff_s0, prVar26 = prVar12, unaff_s0 != (re_match_context_t *)0xffffffff)) {\n        iVar13 = (*pcVar6)(&eps_via_nodes);\n        IVar4 = idx;\n        if ((iVar13 == 0) &&\n           (prVar26 = unaff_s0, unaff_s6 = (re_dfa_t *)idx, unaff_s5 != (re_fail_stack_t *)0x0)) {\n          prVar28 = (re_dfa_t *)unaff_s5->num;\n          prVar26 = (re_match_context_t *)((int)&((re_string_t *)&prVar28->nodes)->raw_mbs + 1);\n          unaff_s5->num = (Idx)prVar26;\n          prVar23 = (re_match_context_t *)unaff_s5->alloc;\n          if (prVar26 == prVar23) {\n            prVar23 = (re_match_context_t *)((int)prVar23 * 0x30);\n            prVar11 = (re_fail_stack_ent_t *)(*(code *)PTR_realloc_0003e2fc)(unaff_s5->stack);\n            unaff_s2 = prVar28;\n            unaff_s6 = (re_dfa_t *)IVar4;\n            if (prVar11 == (re_fail_stack_ent_t *)0x0) goto LAB_00021b34;\n            unaff_s5->alloc = unaff_s5->alloc << 1;\n            unaff_s5->stack = prVar11;\n          }\n          unaff_s3 = (wint_t *)((int)prVar28 * 0x18);\n          unaff_s5->stack[(int)prVar28].idx = IVar4;\n          unaff_s5->stack[(int)prVar28].node = (Idx)prVar12;\n          unaff_s2 = (re_dfa_t *)(unaff_s5->stack + (int)prVar28);\n          pwVar10 = (wint_t *)(*(code *)PTR_malloc_0003e2f8)(prVar19);\n          unaff_s2->nodes_len = (size_t)pwVar10;\n          prVar21 = unaff_s5->stack[(int)prVar28].regs;\n          prVar24 = prVar19;\n          unaff_s6 = prVar19;\n          if (prVar21 == (regmatch_t *)0x0) goto LAB_00021b34;\n          (*(code *)PTR_memcpy_0003e34c)(prVar21,pmatch);\n          prVar23 = (re_match_context_t *)&eps_via_nodes;\n          rVar15 = re_node_set_init_copy\n                             (&unaff_s5->stack[(int)prVar28].eps_via_nodes,(re_node_set *)prVar23);\n          prVar26 = unaff_s0;\n          if (rVar15 != _REG_NOERROR) goto LAB_00021b34;\n        }\n        break;\n      }\n      unaff_s2 = (re_dfa_t *)((int)&((re_string_t *)&unaff_s2->nodes)->raw_mbs + 1);\n      unaff_s3 = unaff_s3 + 1;\n      unaff_s0 = prVar26;\n    } while (unaff_s6 != unaff_s2);\nLAB_00021ca8:\n    unaff_s0 = prVar26;\n    if ((int)prVar26 < 0) {\nLAB_00021f44:\n      if (unaff_s0 == (re_match_context_t *)&SUB_fffffffe) {\nLAB_00021b34:\n        (*(code *)PTR_free_0003e354)(eps_via_nodes.elems);\n        if (bVar1) {\n          (*(code *)PTR_free_0003e354)(local_70);\n        }\n        free_fail_stack_return(unaff_s5);\n        rVar15 = _REG_ESPACE;\n        goto LAB_00021ed8;\n      }\n      if (unaff_s5 == (re_fail_stack_t *)0x0) {\n        (*(code *)PTR_free_0003e354)();\n        if (bVar1) {\n          (*(code *)PTR_free_0003e354)(local_70);\n          rVar15 = _REG_NOMATCH;\n        }\n        else {\n          rVar15 = _REG_NOMATCH;\n        }\n        goto LAB_00021ed8;\n      }\n      *(re_node_set **)(puVar31 + 0x10) = &eps_via_nodes;\n      prVar23 = (re_match_context_t *)&idx;\n      prVar24 = (re_dfa_t *)nmatch;\n      prVar25 = pmatch;\n      unaff_s0 = (re_match_context_t *)(*pcVar5)(unaff_s5);\n    }\n  }\n  (*(code *)PTR_free_0003e354)(eps_via_nodes.elems);\n  if (bVar1) {\n    (*(code *)PTR_free_0003e354)(local_70);\n  }\n  rVar15 = free_fail_stack_return(unaff_s5);\nLAB_00021ed8:\n  if (iVar18 == *(int *)PTR___stack_chk_guard_0003e348) {\n    return rVar15;\n  }\n  pcVar5 = parse_expression;\n  puVar30 = PTR___stack_chk_fail_0003e32c;\n  (*(code *)PTR___stack_chk_fail_0003e32c)();\n  *(code **)(puVar32 + -4) = pcVar5;\n  *(undefined1 **)(puVar32 + -8) = auStack_98;\n  *(re_dfa_t **)(puVar32 + -0xc) = prVar29;\n  *(re_dfa_t **)(puVar32 + -0x10) = unaff_s6;\n  *(re_fail_stack_t **)(puVar32 + -0x14) = unaff_s5;\n  *(regmatch_t **)(puVar32 + -0x18) = pmatch;\n  *(wint_t **)(puVar32 + -0x1c) = unaff_s3;\n  *(re_dfa_t **)(puVar32 + -0x20) = unaff_s2;\n  *(re_match_context_t **)(puVar32 + -0x24) = mctx;\n  *(re_match_context_t **)(puVar32 + -0x28) = unaff_s0;\n  *(undefined **)(puVar32 + -0xc0) = puVar30 + 0x24174;\n  *(int *)(puVar32 + -0xac) = iVar18;\n  uVar33 = *(undefined4 *)(puVar32 + 0x14);\n  *(undefined4 *)(puVar32 + -0x2c) = **(undefined4 **)(puVar30 + 0x1c3ac);\n  *(uchar **)(puVar32 + -0xb8) = (prVar23->input).raw_mbs;\n  if (*(byte *)&prVar24->nodes_alloc < 0x25) {\n                    /* WARNING: Could not recover jumptable at 0x00022020. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n    rVar15 = (*(code *)(puVar30 + 0x24174 +\n                       *(int *)(*(int *)(puVar30 + 0x1c1ac) + -0x2ac0 +\n                               (uint)*(byte *)&prVar24->nodes_alloc * 4)))();\n    return rVar15;\n  }\n  regexp = *(re_string_t **)(puVar32 + -0x2c);\n  if (regexp == (re_string_t *)**(int **)(puVar30 + 0x1c3ac)) {\n    return _REG_NOERROR;\n  }\n  pcVar5 = *(code **)(puVar30 + 0x1c390);\n  pcVar6 = parse_branch;\n  prVar26 = prVar23;\n  (*pcVar5)();\n  *(code **)(puVar32 + -0xe4) = pcVar6;\n  *(undefined4 *)(puVar32 + -0xe8) = uVar33;\n  *(re_dfa_t **)(puVar32 + -0xec) = prVar29;\n  *(undefined4 *)(puVar32 + -0xf0) = 0;\n  *(re_fail_stack_t **)(puVar32 + -0xf4) = unaff_s5;\n  *(regmatch_t **)(puVar32 + -0xf8) = pmatch;\n  *(wint_t **)(puVar32 + -0xfc) = unaff_s3;\n  *(re_dfa_t **)(puVar32 + -0x100) = unaff_s2;\n  *(re_match_context_t **)(puVar32 + -0x104) = mctx;\n  *(re_match_context_t **)(puVar32 + -0x108) = prVar23;\n  *(code **)(puVar32 + -0x118) = pcVar5 + 0x228ec;\n  *(re_string_t **)(puVar32 + -0xe0) = regexp;\n  *(regmatch_t **)(puVar32 + -0xd4) = prVar25;\n  iVar18 = *(int *)(puVar32 + -0xd0);\n  piVar27 = *(int **)(puVar32 + -0xcc);\n  *(uchar **)(puVar32 + -0x110) = (prVar26->input).raw_mbs;\n  *(int **)(puVar32 + -0x11c) = piVar27;\n  *(int *)(puVar32 + -0x120) = iVar18;\n  pbVar16 = parse_expression(regexp,(regex_t *)prVar26,(re_token_t *)prVar24,(reg_syntax_t)prVar25,\n                             *(Idx *)(puVar32 + -0x120),*(reg_errcode_t **)(puVar32 + -0x11c));\n  if ((*piVar27 == 0) || (pbVar16 != (bin_tree_t *)0x0)) {\n    iVar13 = *(int *)(*(int *)(puVar32 + -0x118) + -0x7ed8);\n    *(int *)(puVar32 + -0x10c) = *(int *)(*(int *)(puVar32 + -0x118) + -0x7ed8) + -0x5cb8;\nLAB_0002390c:\n    do {\n      do {\n        root_00 = pbVar16;\n        if ((*(byte *)&prVar24->nodes_alloc & 0xf7) == 2) {\n          return (reg_errcode_t)root_00;\n        }\n        if ((iVar18 != 0) && (*(byte *)&prVar24->nodes_alloc == 9)) {\n          return (reg_errcode_t)root_00;\n        }\n        *(int **)(puVar32 + -0x11c) = piVar27;\n        *(int *)(puVar32 + -0x120) = iVar18;\n        root = (bin_tree_t *)\n               (*(code *)(iVar13 + 0x1f9c))\n                         (*(undefined4 *)(puVar32 + -0xe0),prVar26,prVar24,\n                          *(undefined4 *)(puVar32 + -0xd4));\n        if (*piVar27 == 0) {\n          pbVar16 = root;\n          pbVar2 = root_00;\n          pbVar3 = root;\n          if (root_00 == (bin_tree_t *)0x0) goto LAB_0002390c;\n        }\n        else {\n          pbVar2 = root;\n          pbVar3 = root_00;\n          if (root == (bin_tree_t *)0x0) {\n            if (root_00 == (bin_tree_t *)0x0) {\n              return _REG_NOERROR;\n            }\n            postorder(root_00,(_func_reg_errcode_t_void_ptr_bin_tree_t_ptr *)\n                              (*(int *)(*(int *)(puVar32 + -0x118) + -0x7ed8) + -0x2cc0),(void *)0x0\n                     );\n            return _REG_NOERROR;\n          }\n        }\n        pbVar16 = pbVar2;\n      } while (pbVar3 == (bin_tree_t *)0x0);\n      pbVar16 = (bin_tree_t *)\n                (**(code **)(puVar32 + -0x10c))(*(undefined4 *)(puVar32 + -0x110),root_00,root,0x10)\n      ;\n    } while (pbVar16 != (bin_tree_t *)0x0);\n    iVar18 = *(int *)(*(int *)(puVar32 + -0x118) + -0x7ed8);\n    postorder(root,(_func_reg_errcode_t_void_ptr_bin_tree_t_ptr *)(iVar18 + -0x2cc0),(void *)0x0);\n    postorder(root_00,(_func_reg_errcode_t_void_ptr_bin_tree_t_ptr *)(iVar18 + -0x2cc0),(void *)0x0)\n    ;\n    *piVar27 = 0xc;\n    pbVar16 = (bin_tree_t *)0x0;\n  }\n  return (reg_errcode_t)pbVar16;\n}" type_identifier (function_declarator "set_regs(regex_t *preg,re_match_context_t *mctx,size_t nmatch,regmatch_t *pmatch,_Bool fl_backtrack)" identifier (parameter_list "(regex_t *preg,re_match_context_t *mctx,size_t nmatch,regmatch_t *pmatch,_Bool fl_backtrack)" ( (parameter_declaration "regex_t *preg" type_identifier (pointer_declarator "*preg" * identifier)) , (parameter_declaration "re_match_context_t *mctx" type_identifier (pointer_declarator "*mctx" * identifier)) , (parameter_declaration "size_t nmatch" primitive_type identifier) , (parameter_declaration "regmatch_t *pmatch" type_identifier (pointer_declarator "*pmatch" * identifier)) , (parameter_declaration "_Bool fl_backtrack" type_identifier identifier) ))) (compound_statement "{\n  bool bVar1;\n  bin_tree_t *pbVar2;\n  bin_tree_t *pbVar3;\n  Idx IVar4;\n  undefined3 extraout_var;\n  code *pcVar5;\n  code *pcVar6;\n  code *pcVar7;\n  size_t sVar8;\n  re_dfastate_t *prVar9;\n  wint_t *pwVar10;\n  re_fail_stack_ent_t *prVar11;\n  re_match_context_t *prVar12;\n  _Bool _Var17;\n  int iVar13;\n  re_token_t *prVar14;\n  reg_errcode_t rVar15;\n  bin_tree_t *pbVar16;\n  bin_tree_t *root;\n  int iVar18;\n  re_dfa_t *prVar19;\n  int iVar20;\n  regmatch_t *prVar21;\n  uchar *puVar22;\n  re_string_t *regexp;\n  re_match_context_t *prVar23;\n  re_dfa_t *prVar24;\n  regmatch_t *prVar25;\n  re_match_context_t *unaff_s0;\n  re_match_context_t *prVar26;\n  int *piVar27;\n  re_dfa_t *unaff_s2;\n  re_dfa_t *prVar28;\n  bin_tree_t *root_00;\n  wint_t *unaff_s3;\n  re_fail_stack_t *unaff_s5;\n  re_dfa_t *unaff_s6;\n  re_dfa_t *prVar29;\n  undefined *puVar30;\n  undefined1 *puVar31;\n  undefined1 *puVar32;\n  undefined4 uVar33;\n  undefined1 auStack_98 [24];\n  re_match_context_t *local_70;\n  Idx idx;\n  re_node_set eps_via_nodes;\n  re_fail_stack_t fs_body;\n  \n  puVar31 = auStack_98;\n  puVar32 = auStack_98;\n  iVar18 = *(int *)PTR___stack_chk_guard_0003e348;\n  prVar29 = preg->buffer;\n  fs_body.num = 0;\n  fs_body.alloc = 2;\n  fs_body.stack = (re_fail_stack_ent_t *)0x0;\n  prVar23 = mctx;\n  prVar24 = (re_dfa_t *)nmatch;\n  prVar25 = pmatch;\n  if (fl_backtrack) {\n    fs_body.stack = (re_fail_stack_ent_t *)(*(code *)PTR_malloc_0003e2f8)(0x30);\n    if (fs_body.stack == (re_fail_stack_ent_t *)0x0) {\n      rVar15 = _REG_ESPACE;\n      goto LAB_00021ed8;\n    }\n    unaff_s5 = &fs_body;\n  }\n  else {\n    unaff_s5 = (re_fail_stack_t *)0x0;\n  }\n  unaff_s0 = (re_match_context_t *)prVar29->init_node;\n  eps_via_nodes.alloc = 0;\n  eps_via_nodes.nelem = 0;\n  eps_via_nodes.elems = (Idx *)0x0;\n  prVar19 = (re_dfa_t *)(nmatch * 8);\n  if (prVar19 < (re_dfa_t *)0xfc0) {\n    puVar31 = auStack_98 + nmatch * -8;\n    local_70 = (re_match_context_t *)(&stack0xffffff80 + nmatch * -8);\n    bVar1 = false;\n  }\n  else {\n    local_70 = (re_match_context_t *)(*(code *)PTR_malloc_0003e2f8)(prVar19);\n    bVar1 = true;\n    if (local_70 == (re_match_context_t *)0x0) {\n      free_fail_stack_return(unaff_s5);\n      rVar15 = _REG_ESPACE;\n      puVar32 = auStack_98;\n      goto LAB_00021ed8;\n    }\n  }\n  prVar23 = (re_match_context_t *)pmatch;\n  prVar24 = prVar19;\n  (*(code *)PTR_memcpy_0003e34c)(local_70);\n  idx = pmatch->rm_so;\n  pcVar5 = (code *)(PTR_LAB_0003e238 + -0x10e8);\n  pcVar6 = (code *)(PTR_LAB_0003e238 + -0x6f00);\n  pcVar7 = (code *)(PTR_LAB_0003e238 + -0x589c);\n  while (unaff_s2 = (re_dfa_t *)idx, puVar30 = PTR_memcpy_0003e34c, puVar32 = puVar31,\n        idx <= pmatch->rm_eo) {\n    prVar14 = prVar29->nodes + (int)unaff_s0;\n    if (prVar14->field_0x4 == '\b') {\n      iVar13 = (prVar14->opr).idx + 1;\n      if (iVar13 < (int)nmatch) {\n        pmatch[iVar13].rm_so = idx;\n        pmatch[iVar13].rm_eo = -1;\n      }\nLAB_00021cec:\n      iVar13 = pmatch->rm_eo;\n    }\n    else {\n      if (prVar14->field_0x4 != '\t') goto LAB_00021cec;\n      iVar13 = (prVar14->opr).idx + 1;\n      if ((int)nmatch <= iVar13) goto LAB_00021cec;\n      prVar23 = (re_match_context_t *)(pmatch + iVar13);\n      if ((int)(prVar23->input).raw_mbs < idx) {\n        (prVar23->input).mbs = (uchar *)idx;\n        prVar23 = (re_match_context_t *)pmatch;\n        prVar24 = prVar19;\n        (*(code *)puVar30)(local_70);\n        iVar13 = pmatch->rm_eo;\n      }\n      else {\n        if (((*(uint *)&prVar14->field_0x4 & 0x1000) == 0) ||\n           (prVar24 = prVar19,\n           (&(local_70->input).wcs)[(prVar14->opr).idx * 2] == (wint_t *)0xffffffff)) {\n          (prVar23->input).mbs = (uchar *)idx;\n          goto LAB_00021cec;\n        }\n        prVar23 = local_70;\n        (*(code *)PTR_memcpy_0003e34c)(pmatch);\n        iVar13 = pmatch->rm_eo;\n      }\n    }\n    if (((re_dfa_t *)iVar13 == unaff_s2) && ((re_match_context_t *)mctx->last_node == unaff_s0)) {\n      if (unaff_s5 == (re_fail_stack_t *)0x0) {\n        (*(code *)PTR_free_0003e354)(eps_via_nodes.elems);\n        if (bVar1) {\n          (*(code *)PTR_free_0003e354)(local_70);\n          rVar15 = _REG_NOERROR;\n        }\n        else {\n          rVar15 = _REG_NOERROR;\n        }\n      }\n      else {\n        if (nmatch != 0) {\n          sVar8 = 0;\n          prVar24 = (re_dfa_t *)0xffffffff;\n          prVar21 = pmatch;\n          do {\n            if ((-1 < prVar21->rm_so) &&\n               (prVar23 = (re_match_context_t *)prVar21->rm_eo,\n               (re_match_context_t *)prVar21->rm_eo == (re_match_context_t *)0xffffffff)) break;\n            sVar8 = sVar8 + 1;\n            prVar21 = prVar21 + 1;\n            prVar23 = (re_match_context_t *)nmatch;\n          } while (nmatch != sVar8);\n          if (sVar8 != nmatch) {\n            *(re_node_set **)(puVar31 + 0x10) = &eps_via_nodes;\n            prVar23 = (re_match_context_t *)&idx;\n            prVar24 = (re_dfa_t *)nmatch;\n            prVar25 = pmatch;\n            unaff_s0 = (re_match_context_t *)(*pcVar5)(unaff_s5);\n            goto LAB_00021d04;\n          }\n        }\n        (*(code *)PTR_free_0003e354)(eps_via_nodes.elems);\n        if (bVar1) {\n          (*(code *)PTR_free_0003e354)(local_70);\n        }\n        rVar15 = free_fail_stack_return(unaff_s5);\n      }\n      goto LAB_00021ed8;\n    }\nLAB_00021d04:\n    unaff_s2 = mctx->dfa;\n    unaff_s3 = (wint_t *)((int)unaff_s0 * 8);\n    prVar14 = unaff_s2->nodes + (int)unaff_s0;\n    if ((prVar14->field_0x4 & 8) == 0) {\n      if ((*(uint *)&prVar14->field_0x4 & 0x800) == 0) {\n        if (prVar14->field_0x4 == 4) {\n          iVar20 = pmatch[(prVar14->opr).idx + 1].rm_eo;\n          iVar13 = pmatch[(prVar14->opr).idx + 1].rm_so;\n          unaff_s6 = (re_dfa_t *)(iVar20 - iVar13);\n          if (unaff_s5 == (re_fail_stack_t *)0x0) {\n            prVar23 = unaff_s0;\n            if (unaff_s6 != (re_dfa_t *)0x0) goto LAB_00021da8;\nLAB_00021dd0:\n            prVar23 = unaff_s0;\n            iVar13 = (*pcVar7)(&eps_via_nodes);\n            if (iVar13 == 0) goto LAB_00021b34;\n            prVar26 = (re_match_context_t *)*unaff_s2->edests[(int)unaff_s0].elems;\n            prVar23 = prVar26;\n            iVar13 = (*pcVar6)(&mctx->state_log[idx]->nodes);\n            if (iVar13 != 0) goto LAB_00021ca8;\n            goto LAB_00021c18;\n          }\n          if ((iVar13 != -1) && (iVar20 != -1)) {\n            if (unaff_s6 == (re_dfa_t *)0x0) goto LAB_00021dd0;\n            puVar22 = (mctx->input).mbs;\n            prVar23 = (re_match_context_t *)(puVar22 + idx);\n            prVar24 = unaff_s6;\n            iVar13 = (*(code *)PTR_memcmp_0003e338)(puVar22 + iVar13);\n            if (iVar13 == 0) goto LAB_00021da8;\n          }\n        }\n        else {\nLAB_00021c18:\n          unaff_s6 = (re_dfa_t *)idx;\n          prVar23 = (re_match_context_t *)(unaff_s2->nodes + (int)unaff_s0);\n          prVar24 = (re_dfa_t *)idx;\n          _Var17 = check_node_accept(mctx,(re_token_t *)prVar23,idx);\n          if (CONCAT31(extraout_var,_Var17) != 0) {\n            prVar26 = (re_match_context_t *)unaff_s2->nexts[(int)unaff_s0];\n            idx = (int)unaff_s6 + 1;\n            goto LAB_00021c5c;\n          }\n        }\n      }\n      else {\n        prVar23 = unaff_s0;\n        prVar24 = (re_dfa_t *)mctx;\n        prVar25 = (regmatch_t *)idx;\n        unaff_s6 = (re_dfa_t *)check_node_accept_bytes(unaff_s2,(Idx)unaff_s0,&mctx->input,idx);\n        if (unaff_s6 == (re_dfa_t *)0x0) goto LAB_00021c18;\nLAB_00021da8:\n        prVar26 = (re_match_context_t *)unaff_s2->nexts[(int)unaff_s0];\n        idx = (int)unaff_s6->word_char + idx + -0x60;\nLAB_00021c5c:\n        unaff_s6 = (re_dfa_t *)idx;\n        if (unaff_s5 == (re_fail_stack_t *)0x0) {\nLAB_00021ca4:\n          eps_via_nodes.nelem = 0;\n          goto LAB_00021ca8;\n        }\n        unaff_s6 = (re_dfa_t *)(idx * 4);\n        if (idx <= mctx->match_last) {\n          unaff_s6 = (re_dfa_t *)(mctx->state_log + idx);\n          puVar22 = ((re_string_t *)&unaff_s6->nodes)->raw_mbs;\n          prVar23 = prVar26;\n          if ((puVar22 != (uchar *)0x0) && (iVar13 = (*pcVar6)(puVar22 + 4), iVar13 != 0))\n          goto LAB_00021ca4;\n        }\n      }\nLAB_00021f3c:\n      unaff_s0 = (re_match_context_t *)0xffffffff;\n      goto LAB_00021f44;\n    }\n    prVar9 = mctx->state_log[idx];\n    unaff_s2 = (re_dfa_t *)(unaff_s2->edests + (int)unaff_s0);\n    prVar23 = unaff_s0;\n    iVar13 = (*pcVar7)(&eps_via_nodes);\n    if (iVar13 == 0) goto LAB_00021b34;\n    unaff_s6 = (re_dfa_t *)unaff_s2->nodes_alloc;\n    if ((int)unaff_s6 < 1) goto LAB_00021f3c;\n    unaff_s3 = (wint_t *)unaff_s2->nodes_len;\n    unaff_s2 = (re_dfa_t *)0x0;\n    unaff_s0 = (re_match_context_t *)0xffffffff;\n    do {\n      prVar12 = (re_match_context_t *)*unaff_s3;\n      prVar23 = prVar12;\n      iVar13 = (*pcVar6)(&prVar9->nodes);\n      prVar26 = unaff_s0;\n      if ((iVar13 != 0) &&\n         (prVar23 = unaff_s0, prVar26 = prVar12, unaff_s0 != (re_match_context_t *)0xffffffff)) {\n        iVar13 = (*pcVar6)(&eps_via_nodes);\n        IVar4 = idx;\n        if ((iVar13 == 0) &&\n           (prVar26 = unaff_s0, unaff_s6 = (re_dfa_t *)idx, unaff_s5 != (re_fail_stack_t *)0x0)) {\n          prVar28 = (re_dfa_t *)unaff_s5->num;\n          prVar26 = (re_match_context_t *)((int)&((re_string_t *)&prVar28->nodes)->raw_mbs + 1);\n          unaff_s5->num = (Idx)prVar26;\n          prVar23 = (re_match_context_t *)unaff_s5->alloc;\n          if (prVar26 == prVar23) {\n            prVar23 = (re_match_context_t *)((int)prVar23 * 0x30);\n            prVar11 = (re_fail_stack_ent_t *)(*(code *)PTR_realloc_0003e2fc)(unaff_s5->stack);\n            unaff_s2 = prVar28;\n            unaff_s6 = (re_dfa_t *)IVar4;\n            if (prVar11 == (re_fail_stack_ent_t *)0x0) goto LAB_00021b34;\n            unaff_s5->alloc = unaff_s5->alloc << 1;\n            unaff_s5->stack = prVar11;\n          }\n          unaff_s3 = (wint_t *)((int)prVar28 * 0x18);\n          unaff_s5->stack[(int)prVar28].idx = IVar4;\n          unaff_s5->stack[(int)prVar28].node = (Idx)prVar12;\n          unaff_s2 = (re_dfa_t *)(unaff_s5->stack + (int)prVar28);\n          pwVar10 = (wint_t *)(*(code *)PTR_malloc_0003e2f8)(prVar19);\n          unaff_s2->nodes_len = (size_t)pwVar10;\n          prVar21 = unaff_s5->stack[(int)prVar28].regs;\n          prVar24 = prVar19;\n          unaff_s6 = prVar19;\n          if (prVar21 == (regmatch_t *)0x0) goto LAB_00021b34;\n          (*(code *)PTR_memcpy_0003e34c)(prVar21,pmatch);\n          prVar23 = (re_match_context_t *)&eps_via_nodes;\n          rVar15 = re_node_set_init_copy\n                             (&unaff_s5->stack[(int)prVar28].eps_via_nodes,(re_node_set *)prVar23);\n          prVar26 = unaff_s0;\n          if (rVar15 != _REG_NOERROR) goto LAB_00021b34;\n        }\n        break;\n      }\n      unaff_s2 = (re_dfa_t *)((int)&((re_string_t *)&unaff_s2->nodes)->raw_mbs + 1);\n      unaff_s3 = unaff_s3 + 1;\n      unaff_s0 = prVar26;\n    } while (unaff_s6 != unaff_s2);\nLAB_00021ca8:\n    unaff_s0 = prVar26;\n    if ((int)prVar26 < 0) {\nLAB_00021f44:\n      if (unaff_s0 == (re_match_context_t *)&SUB_fffffffe) {\nLAB_00021b34:\n        (*(code *)PTR_free_0003e354)(eps_via_nodes.elems);\n        if (bVar1) {\n          (*(code *)PTR_free_0003e354)(local_70);\n        }\n        free_fail_stack_return(unaff_s5);\n        rVar15 = _REG_ESPACE;\n        goto LAB_00021ed8;\n      }\n      if (unaff_s5 == (re_fail_stack_t *)0x0) {\n        (*(code *)PTR_free_0003e354)();\n        if (bVar1) {\n          (*(code *)PTR_free_0003e354)(local_70);\n          rVar15 = _REG_NOMATCH;\n        }\n        else {\n          rVar15 = _REG_NOMATCH;\n        }\n        goto LAB_00021ed8;\n      }\n      *(re_node_set **)(puVar31 + 0x10) = &eps_via_nodes;\n      prVar23 = (re_match_context_t *)&idx;\n      prVar24 = (re_dfa_t *)nmatch;\n      prVar25 = pmatch;\n      unaff_s0 = (re_match_context_t *)(*pcVar5)(unaff_s5);\n    }\n  }\n  (*(code *)PTR_free_0003e354)(eps_via_nodes.elems);\n  if (bVar1) {\n    (*(code *)PTR_free_0003e354)(local_70);\n  }\n  rVar15 = free_fail_stack_return(unaff_s5);\nLAB_00021ed8:\n  if (iVar18 == *(int *)PTR___stack_chk_guard_0003e348) {\n    return rVar15;\n  }\n  pcVar5 = parse_expression;\n  puVar30 = PTR___stack_chk_fail_0003e32c;\n  (*(code *)PTR___stack_chk_fail_0003e32c)();\n  *(code **)(puVar32 + -4) = pcVar5;\n  *(undefined1 **)(puVar32 + -8) = auStack_98;\n  *(re_dfa_t **)(puVar32 + -0xc) = prVar29;\n  *(re_dfa_t **)(puVar32 + -0x10) = unaff_s6;\n  *(re_fail_stack_t **)(puVar32 + -0x14) = unaff_s5;\n  *(regmatch_t **)(puVar32 + -0x18) = pmatch;\n  *(wint_t **)(puVar32 + -0x1c) = unaff_s3;\n  *(re_dfa_t **)(puVar32 + -0x20) = unaff_s2;\n  *(re_match_context_t **)(puVar32 + -0x24) = mctx;\n  *(re_match_context_t **)(puVar32 + -0x28) = unaff_s0;\n  *(undefined **)(puVar32 + -0xc0) = puVar30 + 0x24174;\n  *(int *)(puVar32 + -0xac) = iVar18;\n  uVar33 = *(undefined4 *)(puVar32 + 0x14);\n  *(undefined4 *)(puVar32 + -0x2c) = **(undefined4 **)(puVar30 + 0x1c3ac);\n  *(uchar **)(puVar32 + -0xb8) = (prVar23->input).raw_mbs;\n  if (*(byte *)&prVar24->nodes_alloc < 0x25) {\n                    /* WARNING: Could not recover jumptable at 0x00022020. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n    rVar15 = (*(code *)(puVar30 + 0x24174 +\n                       *(int *)(*(int *)(puVar30 + 0x1c1ac) + -0x2ac0 +\n                               (uint)*(byte *)&prVar24->nodes_alloc * 4)))();\n    return rVar15;\n  }\n  regexp = *(re_string_t **)(puVar32 + -0x2c);\n  if (regexp == (re_string_t *)**(int **)(puVar30 + 0x1c3ac)) {\n    return _REG_NOERROR;\n  }\n  pcVar5 = *(code **)(puVar30 + 0x1c390);\n  pcVar6 = parse_branch;\n  prVar26 = prVar23;\n  (*pcVar5)();\n  *(code **)(puVar32 + -0xe4) = pcVar6;\n  *(undefined4 *)(puVar32 + -0xe8) = uVar33;\n  *(re_dfa_t **)(puVar32 + -0xec) = prVar29;\n  *(undefined4 *)(puVar32 + -0xf0) = 0;\n  *(re_fail_stack_t **)(puVar32 + -0xf4) = unaff_s5;\n  *(regmatch_t **)(puVar32 + -0xf8) = pmatch;\n  *(wint_t **)(puVar32 + -0xfc) = unaff_s3;\n  *(re_dfa_t **)(puVar32 + -0x100) = unaff_s2;\n  *(re_match_context_t **)(puVar32 + -0x104) = mctx;\n  *(re_match_context_t **)(puVar32 + -0x108) = prVar23;\n  *(code **)(puVar32 + -0x118) = pcVar5 + 0x228ec;\n  *(re_string_t **)(puVar32 + -0xe0) = regexp;\n  *(regmatch_t **)(puVar32 + -0xd4) = prVar25;\n  iVar18 = *(int *)(puVar32 + -0xd0);\n  piVar27 = *(int **)(puVar32 + -0xcc);\n  *(uchar **)(puVar32 + -0x110) = (prVar26->input).raw_mbs;\n  *(int **)(puVar32 + -0x11c) = piVar27;\n  *(int *)(puVar32 + -0x120) = iVar18;\n  pbVar16 = parse_expression(regexp,(regex_t *)prVar26,(re_token_t *)prVar24,(reg_syntax_t)prVar25,\n                             *(Idx *)(puVar32 + -0x120),*(reg_errcode_t **)(puVar32 + -0x11c));\n  if ((*piVar27 == 0) || (pbVar16 != (bin_tree_t *)0x0)) {\n    iVar13 = *(int *)(*(int *)(puVar32 + -0x118) + -0x7ed8);\n    *(int *)(puVar32 + -0x10c) = *(int *)(*(int *)(puVar32 + -0x118) + -0x7ed8) + -0x5cb8;\nLAB_0002390c:\n    do {\n      do {\n        root_00 = pbVar16;\n        if ((*(byte *)&prVar24->nodes_alloc & 0xf7) == 2) {\n          return (reg_errcode_t)root_00;\n        }\n        if ((iVar18 != 0) && (*(byte *)&prVar24->nodes_alloc == 9)) {\n          return (reg_errcode_t)root_00;\n        }\n        *(int **)(puVar32 + -0x11c) = piVar27;\n        *(int *)(puVar32 + -0x120) = iVar18;\n        root = (bin_tree_t *)\n               (*(code *)(iVar13 + 0x1f9c))\n                         (*(undefined4 *)(puVar32 + -0xe0),prVar26,prVar24,\n                          *(undefined4 *)(puVar32 + -0xd4));\n        if (*piVar27 == 0) {\n          pbVar16 = root;\n          pbVar2 = root_00;\n          pbVar3 = root;\n          if (root_00 == (bin_tree_t *)0x0) goto LAB_0002390c;\n        }\n        else {\n          pbVar2 = root;\n          pbVar3 = root_00;\n          if (root == (bin_tree_t *)0x0) {\n            if (root_00 == (bin_tree_t *)0x0) {\n              return _REG_NOERROR;\n            }\n            postorder(root_00,(_func_reg_errcode_t_void_ptr_bin_tree_t_ptr *)\n                              (*(int *)(*(int *)(puVar32 + -0x118) + -0x7ed8) + -0x2cc0),(void *)0x0\n                     );\n            return _REG_NOERROR;\n          }\n        }\n        pbVar16 = pbVar2;\n      } while (pbVar3 == (bin_tree_t *)0x0);\n      pbVar16 = (bin_tree_t *)\n                (**(code **)(puVar32 + -0x10c))(*(undefined4 *)(puVar32 + -0x110),root_00,root,0x10)\n      ;\n    } while (pbVar16 != (bin_tree_t *)0x0);\n    iVar18 = *(int *)(*(int *)(puVar32 + -0x118) + -0x7ed8);\n    postorder(root,(_func_reg_errcode_t_void_ptr_bin_tree_t_ptr *)(iVar18 + -0x2cc0),(void *)0x0);\n    postorder(root_00,(_func_reg_errcode_t_void_ptr_bin_tree_t_ptr *)(iVar18 + -0x2cc0),(void *)0x0)\n    ;\n    *piVar27 = 0xc;\n    pbVar16 = (bin_tree_t *)0x0;\n  }\n  return (reg_errcode_t)pbVar16;\n}" { (declaration "bool bVar1;" primitive_type identifier ;) (declaration "bin_tree_t *pbVar2;" type_identifier (pointer_declarator "*pbVar2" * identifier) ;) (declaration "bin_tree_t *pbVar3;" type_identifier (pointer_declarator "*pbVar3" * identifier) ;) (declaration "Idx IVar4;" type_identifier identifier ;) (declaration "undefined3 extraout_var;" type_identifier identifier ;) (declaration "code *pcVar5;" type_identifier (pointer_declarator "*pcVar5" * identifier) ;) (declaration "code *pcVar6;" type_identifier (pointer_declarator "*pcVar6" * identifier) ;) (declaration "code *pcVar7;" type_identifier (pointer_declarator "*pcVar7" * identifier) ;) (declaration "size_t sVar8;" primitive_type identifier ;) (declaration "re_dfastate_t *prVar9;" type_identifier (pointer_declarator "*prVar9" * identifier) ;) (declaration "wint_t *pwVar10;" type_identifier (pointer_declarator "*pwVar10" * identifier) ;) (declaration "re_fail_stack_ent_t *prVar11;" type_identifier (pointer_declarator "*prVar11" * identifier) ;) (declaration "re_match_context_t *prVar12;" type_identifier (pointer_declarator "*prVar12" * identifier) ;) (declaration "_Bool _Var17;" type_identifier identifier ;) (declaration "int iVar13;" primitive_type identifier ;) (declaration "re_token_t *prVar14;" type_identifier (pointer_declarator "*prVar14" * identifier) ;) (declaration "reg_errcode_t rVar15;" type_identifier identifier ;) (declaration "bin_tree_t *pbVar16;" type_identifier (pointer_declarator "*pbVar16" * identifier) ;) (declaration "bin_tree_t *root;" type_identifier (pointer_declarator "*root" * identifier) ;) (declaration "int iVar18;" primitive_type identifier ;) (declaration "re_dfa_t *prVar19;" type_identifier (pointer_declarator "*prVar19" * identifier) ;) (declaration "int iVar20;" primitive_type identifier ;) (declaration "regmatch_t *prVar21;" type_identifier (pointer_declarator "*prVar21" * identifier) ;) (declaration "uchar *puVar22;" type_identifier (pointer_declarator "*puVar22" * identifier) ;) (declaration "re_string_t *regexp;" type_identifier (pointer_declarator "*regexp" * identifier) ;) (declaration "re_match_context_t *prVar23;" type_identifier (pointer_declarator "*prVar23" * identifier) ;) (declaration "re_dfa_t *prVar24;" type_identifier (pointer_declarator "*prVar24" * identifier) ;) (declaration "regmatch_t *prVar25;" type_identifier (pointer_declarator "*prVar25" * identifier) ;) (declaration "re_match_context_t *unaff_s0;" type_identifier (pointer_declarator "*unaff_s0" * identifier) ;) (declaration "re_match_context_t *prVar26;" type_identifier (pointer_declarator "*prVar26" * identifier) ;) (declaration "int *piVar27;" primitive_type (pointer_declarator "*piVar27" * identifier) ;) (declaration "re_dfa_t *unaff_s2;" type_identifier (pointer_declarator "*unaff_s2" * identifier) ;) (declaration "re_dfa_t *prVar28;" type_identifier (pointer_declarator "*prVar28" * identifier) ;) (declaration "bin_tree_t *root_00;" type_identifier (pointer_declarator "*root_00" * identifier) ;) (declaration "wint_t *unaff_s3;" type_identifier (pointer_declarator "*unaff_s3" * identifier) ;) (declaration "re_fail_stack_t *unaff_s5;" type_identifier (pointer_declarator "*unaff_s5" * identifier) ;) (declaration "re_dfa_t *unaff_s6;" type_identifier (pointer_declarator "*unaff_s6" * identifier) ;) (declaration "re_dfa_t *prVar29;" type_identifier (pointer_declarator "*prVar29" * identifier) ;) (declaration "undefined *puVar30;" type_identifier (pointer_declarator "*puVar30" * identifier) ;) (declaration "undefined1 *puVar31;" type_identifier (pointer_declarator "*puVar31" * identifier) ;) (declaration "undefined1 *puVar32;" type_identifier (pointer_declarator "*puVar32" * identifier) ;) (declaration "undefined4 uVar33;" type_identifier identifier ;) (declaration "undefined1 auStack_98 [24];" type_identifier (array_declarator "auStack_98 [24]" identifier [ number_literal ]) ;) (declaration "re_match_context_t *local_70;" type_identifier (pointer_declarator "*local_70" * identifier) ;) (declaration "Idx idx;" type_identifier identifier ;) (declaration "re_node_set eps_via_nodes;" type_identifier identifier ;) (declaration "re_fail_stack_t fs_body;" type_identifier identifier ;) (expression_statement "puVar31 = auStack_98;" (assignment_expression "puVar31 = auStack_98" identifier = identifier) ;) (expression_statement "puVar32 = auStack_98;" (assignment_expression "puVar32 = auStack_98" identifier = identifier) ;) (expression_statement "iVar18 = *(int *)PTR___stack_chk_guard_0003e348;" (assignment_expression "iVar18 = *(int *)PTR___stack_chk_guard_0003e348" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_0003e348" * (cast_expression "(int *)PTR___stack_chk_guard_0003e348" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "prVar29 = preg->buffer;" (assignment_expression "prVar29 = preg->buffer" identifier = (field_expression "preg->buffer" identifier -> field_identifier)) ;) (expression_statement "fs_body.num = 0;" (assignment_expression "fs_body.num = 0" (field_expression "fs_body.num" identifier . field_identifier) = number_literal) ;) (expression_statement "fs_body.alloc = 2;" (assignment_expression "fs_body.alloc = 2" (field_expression "fs_body.alloc" identifier . field_identifier) = number_literal) ;) (expression_statement "fs_body.stack = (re_fail_stack_ent_t *)0x0;" (assignment_expression "fs_body.stack = (re_fail_stack_ent_t *)0x0" (field_expression "fs_body.stack" identifier . field_identifier) = (cast_expression "(re_fail_stack_ent_t *)0x0" ( (type_descriptor "re_fail_stack_ent_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "prVar23 = mctx;" (assignment_expression "prVar23 = mctx" identifier = identifier) ;) (expression_statement "prVar24 = (re_dfa_t *)nmatch;" (assignment_expression "prVar24 = (re_dfa_t *)nmatch" identifier = (cast_expression "(re_dfa_t *)nmatch" ( (type_descriptor "re_dfa_t *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "prVar25 = pmatch;" (assignment_expression "prVar25 = pmatch" identifier = identifier) ;) (if_statement "if (fl_backtrack) {\n    fs_body.stack = (re_fail_stack_ent_t *)(*(code *)PTR_malloc_0003e2f8)(0x30);\n    if (fs_body.stack == (re_fail_stack_ent_t *)0x0) {\n      rVar15 = _REG_ESPACE;\n      goto LAB_00021ed8;\n    }\n    unaff_s5 = &fs_body;\n  }\n  else {\n    unaff_s5 = (re_fail_stack_t *)0x0;\n  }" if (parenthesized_expression "(fl_backtrack)" ( identifier )) (compound_statement "{\n    fs_body.stack = (re_fail_stack_ent_t *)(*(code *)PTR_malloc_0003e2f8)(0x30);\n    if (fs_body.stack == (re_fail_stack_ent_t *)0x0) {\n      rVar15 = _REG_ESPACE;\n      goto LAB_00021ed8;\n    }\n    unaff_s5 = &fs_body;\n  }" { (expression_statement "fs_body.stack = (re_fail_stack_ent_t *)(*(code *)PTR_malloc_0003e2f8)(0x30);" (assignment_expression "fs_body.stack = (re_fail_stack_ent_t *)(*(code *)PTR_malloc_0003e2f8)(0x30)" (field_expression "fs_body.stack" identifier . field_identifier) = (cast_expression "(re_fail_stack_ent_t *)(*(code *)PTR_malloc_0003e2f8)(0x30)" ( (type_descriptor "re_fail_stack_ent_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR_malloc_0003e2f8)(0x30)" (parenthesized_expression "(*(code *)PTR_malloc_0003e2f8)" ( (pointer_expression "*(code *)PTR_malloc_0003e2f8" * (cast_expression "(code *)PTR_malloc_0003e2f8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(0x30)" ( number_literal ))))) ;) (if_statement "if (fs_body.stack == (re_fail_stack_ent_t *)0x0) {\n      rVar15 = _REG_ESPACE;\n      goto LAB_00021ed8;\n    }" if (parenthesized_expression "(fs_body.stack == (re_fail_stack_ent_t *)0x0)" ( (binary_expression "fs_body.stack == (re_fail_stack_ent_t *)0x0" (field_expression "fs_body.stack" identifier . field_identifier) == (cast_expression "(re_fail_stack_ent_t *)0x0" ( (type_descriptor "re_fail_stack_ent_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      rVar15 = _REG_ESPACE;\n      goto LAB_00021ed8;\n    }" { (expression_statement "rVar15 = _REG_ESPACE;" (assignment_expression "rVar15 = _REG_ESPACE" identifier = identifier) ;) (goto_statement "goto LAB_00021ed8;" goto statement_identifier ;) })) (expression_statement "unaff_s5 = &fs_body;" (assignment_expression "unaff_s5 = &fs_body" identifier = (pointer_expression "&fs_body" & identifier)) ;) }) (else_clause "else {\n    unaff_s5 = (re_fail_stack_t *)0x0;\n  }" else (compound_statement "{\n    unaff_s5 = (re_fail_stack_t *)0x0;\n  }" { (expression_statement "unaff_s5 = (re_fail_stack_t *)0x0;" (assignment_expression "unaff_s5 = (re_fail_stack_t *)0x0" identifier = (cast_expression "(re_fail_stack_t *)0x0" ( (type_descriptor "re_fail_stack_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }))) (expression_statement "unaff_s0 = (re_match_context_t *)prVar29->init_node;" (assignment_expression "unaff_s0 = (re_match_context_t *)prVar29->init_node" identifier = (cast_expression "(re_match_context_t *)prVar29->init_node" ( (type_descriptor "re_match_context_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "prVar29->init_node" identifier -> field_identifier))) ;) (expression_statement "eps_via_nodes.alloc = 0;" (assignment_expression "eps_via_nodes.alloc = 0" (field_expression "eps_via_nodes.alloc" identifier . field_identifier) = number_literal) ;) (expression_statement "eps_via_nodes.nelem = 0;" (assignment_expression "eps_via_nodes.nelem = 0" (field_expression "eps_via_nodes.nelem" identifier . field_identifier) = number_literal) ;) (expression_statement "eps_via_nodes.elems = (Idx *)0x0;" (assignment_expression "eps_via_nodes.elems = (Idx *)0x0" (field_expression "eps_via_nodes.elems" identifier . field_identifier) = (cast_expression "(Idx *)0x0" ( (type_descriptor "Idx *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "prVar19 = (re_dfa_t *)(nmatch * 8);" (assignment_expression "prVar19 = (re_dfa_t *)(nmatch * 8)" identifier = (cast_expression "(re_dfa_t *)(nmatch * 8)" ( (type_descriptor "re_dfa_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(nmatch * 8)" ( (binary_expression "nmatch * 8" identifier * number_literal) )))) ;) (if_statement "if (prVar19 < (re_dfa_t *)0xfc0) {\n    puVar31 = auStack_98 + nmatch * -8;\n    local_70 = (re_match_context_t *)(&stack0xffffff80 + nmatch * -8);\n    bVar1 = false;\n  }\n  else {\n    local_70 = (re_match_context_t *)(*(code *)PTR_malloc_0003e2f8)(prVar19);\n    bVar1 = true;\n    if (local_70 == (re_match_context_t *)0x0) {\n      free_fail_stack_return(unaff_s5);\n      rVar15 = _REG_ESPACE;\n      puVar32 = auStack_98;\n      goto LAB_00021ed8;\n    }\n  }" if (parenthesized_expression "(prVar19 < (re_dfa_t *)0xfc0)" ( (binary_expression "prVar19 < (re_dfa_t *)0xfc0" identifier < (cast_expression "(re_dfa_t *)0xfc0" ( (type_descriptor "re_dfa_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    puVar31 = auStack_98 + nmatch * -8;\n    local_70 = (re_match_context_t *)(&stack0xffffff80 + nmatch * -8);\n    bVar1 = false;\n  }" { (expression_statement "puVar31 = auStack_98 + nmatch * -8;" (assignment_expression "puVar31 = auStack_98 + nmatch * -8" identifier = (binary_expression "auStack_98 + nmatch * -8" identifier + (binary_expression "nmatch * -8" identifier * number_literal))) ;) (expression_statement "local_70 = (re_match_context_t *)(&stack0xffffff80 + nmatch * -8);" (assignment_expression "local_70 = (re_match_context_t *)(&stack0xffffff80 + nmatch * -8)" identifier = (cast_expression "(re_match_context_t *)(&stack0xffffff80 + nmatch * -8)" ( (type_descriptor "re_match_context_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&stack0xffffff80 + nmatch * -8)" ( (binary_expression "&stack0xffffff80 + nmatch * -8" (pointer_expression "&stack0xffffff80" & identifier) + (binary_expression "nmatch * -8" identifier * number_literal)) )))) ;) (expression_statement "bVar1 = false;" (assignment_expression "bVar1 = false" identifier = false) ;) }) (else_clause "else {\n    local_70 = (re_match_context_t *)(*(code *)PTR_malloc_0003e2f8)(prVar19);\n    bVar1 = true;\n    if (local_70 == (re_match_context_t *)0x0) {\n      free_fail_stack_return(unaff_s5);\n      rVar15 = _REG_ESPACE;\n      puVar32 = auStack_98;\n      goto LAB_00021ed8;\n    }\n  }" else (compound_statement "{\n    local_70 = (re_match_context_t *)(*(code *)PTR_malloc_0003e2f8)(prVar19);\n    bVar1 = true;\n    if (local_70 == (re_match_context_t *)0x0) {\n      free_fail_stack_return(unaff_s5);\n      rVar15 = _REG_ESPACE;\n      puVar32 = auStack_98;\n      goto LAB_00021ed8;\n    }\n  }" { (expression_statement "local_70 = (re_match_context_t *)(*(code *)PTR_malloc_0003e2f8)(prVar19);" (assignment_expression "local_70 = (re_match_context_t *)(*(code *)PTR_malloc_0003e2f8)(prVar19)" identifier = (cast_expression "(re_match_context_t *)(*(code *)PTR_malloc_0003e2f8)(prVar19)" ( (type_descriptor "re_match_context_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR_malloc_0003e2f8)(prVar19)" (parenthesized_expression "(*(code *)PTR_malloc_0003e2f8)" ( (pointer_expression "*(code *)PTR_malloc_0003e2f8" * (cast_expression "(code *)PTR_malloc_0003e2f8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(prVar19)" ( identifier ))))) ;) (expression_statement "bVar1 = true;" (assignment_expression "bVar1 = true" identifier = true) ;) (if_statement "if (local_70 == (re_match_context_t *)0x0) {\n      free_fail_stack_return(unaff_s5);\n      rVar15 = _REG_ESPACE;\n      puVar32 = auStack_98;\n      goto LAB_00021ed8;\n    }" if (parenthesized_expression "(local_70 == (re_match_context_t *)0x0)" ( (binary_expression "local_70 == (re_match_context_t *)0x0" identifier == (cast_expression "(re_match_context_t *)0x0" ( (type_descriptor "re_match_context_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      free_fail_stack_return(unaff_s5);\n      rVar15 = _REG_ESPACE;\n      puVar32 = auStack_98;\n      goto LAB_00021ed8;\n    }" { (expression_statement "free_fail_stack_return(unaff_s5);" (call_expression "free_fail_stack_return(unaff_s5)" identifier (argument_list "(unaff_s5)" ( identifier ))) ;) (expression_statement "rVar15 = _REG_ESPACE;" (assignment_expression "rVar15 = _REG_ESPACE" identifier = identifier) ;) (expression_statement "puVar32 = auStack_98;" (assignment_expression "puVar32 = auStack_98" identifier = identifier) ;) (goto_statement "goto LAB_00021ed8;" goto statement_identifier ;) })) }))) (expression_statement "prVar23 = (re_match_context_t *)pmatch;" (assignment_expression "prVar23 = (re_match_context_t *)pmatch" identifier = (cast_expression "(re_match_context_t *)pmatch" ( (type_descriptor "re_match_context_t *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "prVar24 = prVar19;" (assignment_expression "prVar24 = prVar19" identifier = identifier) ;) (expression_statement "(*(code *)PTR_memcpy_0003e34c)(local_70);" (call_expression "(*(code *)PTR_memcpy_0003e34c)(local_70)" (parenthesized_expression "(*(code *)PTR_memcpy_0003e34c)" ( (pointer_expression "*(code *)PTR_memcpy_0003e34c" * (cast_expression "(code *)PTR_memcpy_0003e34c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(local_70)" ( identifier ))) ;) (expression_statement "idx = pmatch->rm_so;" (assignment_expression "idx = pmatch->rm_so" identifier = (field_expression "pmatch->rm_so" identifier -> field_identifier)) ;) (expression_statement "pcVar5 = (code *)(PTR_LAB_0003e238 + -0x10e8);" (assignment_expression "pcVar5 = (code *)(PTR_LAB_0003e238 + -0x10e8)" identifier = (cast_expression "(code *)(PTR_LAB_0003e238 + -0x10e8)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0003e238 + -0x10e8)" ( (binary_expression "PTR_LAB_0003e238 + -0x10e8" identifier + number_literal) )))) ;) (expression_statement "pcVar6 = (code *)(PTR_LAB_0003e238 + -0x6f00);" (assignment_expression "pcVar6 = (code *)(PTR_LAB_0003e238 + -0x6f00)" identifier = (cast_expression "(code *)(PTR_LAB_0003e238 + -0x6f00)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0003e238 + -0x6f00)" ( (binary_expression "PTR_LAB_0003e238 + -0x6f00" identifier + number_literal) )))) ;) (expression_statement "pcVar7 = (code *)(PTR_LAB_0003e238 + -0x589c);" (assignment_expression "pcVar7 = (code *)(PTR_LAB_0003e238 + -0x589c)" identifier = (cast_expression "(code *)(PTR_LAB_0003e238 + -0x589c)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0003e238 + -0x589c)" ( (binary_expression "PTR_LAB_0003e238 + -0x589c" identifier + number_literal) )))) ;) (while_statement "while (unaff_s2 = (re_dfa_t *)idx, puVar30 = PTR_memcpy_0003e34c, puVar32 = puVar31,\n        idx <= pmatch->rm_eo) {\n    prVar14 = prVar29->nodes + (int)unaff_s0;\n    if (prVar14->field_0x4 == '\b') {\n      iVar13 = (prVar14->opr).idx + 1;\n      if (iVar13 < (int)nmatch) {\n        pmatch[iVar13].rm_so = idx;\n        pmatch[iVar13].rm_eo = -1;\n      }\nLAB_00021cec:\n      iVar13 = pmatch->rm_eo;\n    }\n    else {\n      if (prVar14->field_0x4 != '\t') goto LAB_00021cec;\n      iVar13 = (prVar14->opr).idx + 1;\n      if ((int)nmatch <= iVar13) goto LAB_00021cec;\n      prVar23 = (re_match_context_t *)(pmatch + iVar13);\n      if ((int)(prVar23->input).raw_mbs < idx) {\n        (prVar23->input).mbs = (uchar *)idx;\n        prVar23 = (re_match_context_t *)pmatch;\n        prVar24 = prVar19;\n        (*(code *)puVar30)(local_70);\n        iVar13 = pmatch->rm_eo;\n      }\n      else {\n        if (((*(uint *)&prVar14->field_0x4 & 0x1000) == 0) ||\n           (prVar24 = prVar19,\n           (&(local_70->input).wcs)[(prVar14->opr).idx * 2] == (wint_t *)0xffffffff)) {\n          (prVar23->input).mbs = (uchar *)idx;\n          goto LAB_00021cec;\n        }\n        prVar23 = local_70;\n        (*(code *)PTR_memcpy_0003e34c)(pmatch);\n        iVar13 = pmatch->rm_eo;\n      }\n    }\n    if (((re_dfa_t *)iVar13 == unaff_s2) && ((re_match_context_t *)mctx->last_node == unaff_s0)) {\n      if (unaff_s5 == (re_fail_stack_t *)0x0) {\n        (*(code *)PTR_free_0003e354)(eps_via_nodes.elems);\n        if (bVar1) {\n          (*(code *)PTR_free_0003e354)(local_70);\n          rVar15 = _REG_NOERROR;\n        }\n        else {\n          rVar15 = _REG_NOERROR;\n        }\n      }\n      else {\n        if (nmatch != 0) {\n          sVar8 = 0;\n          prVar24 = (re_dfa_t *)0xffffffff;\n          prVar21 = pmatch;\n          do {\n            if ((-1 < prVar21->rm_so) &&\n               (prVar23 = (re_match_context_t *)prVar21->rm_eo,\n               (re_match_context_t *)prVar21->rm_eo == (re_match_context_t *)0xffffffff)) break;\n            sVar8 = sVar8 + 1;\n            prVar21 = prVar21 + 1;\n            prVar23 = (re_match_context_t *)nmatch;\n          } while (nmatch != sVar8);\n          if (sVar8 != nmatch) {\n            *(re_node_set **)(puVar31 + 0x10) = &eps_via_nodes;\n            prVar23 = (re_match_context_t *)&idx;\n            prVar24 = (re_dfa_t *)nmatch;\n            prVar25 = pmatch;\n            unaff_s0 = (re_match_context_t *)(*pcVar5)(unaff_s5);\n            goto LAB_00021d04;\n          }\n        }\n        (*(code *)PTR_free_0003e354)(eps_via_nodes.elems);\n        if (bVar1) {\n          (*(code *)PTR_free_0003e354)(local_70);\n        }\n        rVar15 = free_fail_stack_return(unaff_s5);\n      }\n      goto LAB_00021ed8;\n    }\nLAB_00021d04:\n    unaff_s2 = mctx->dfa;\n    unaff_s3 = (wint_t *)((int)unaff_s0 * 8);\n    prVar14 = unaff_s2->nodes + (int)unaff_s0;\n    if ((prVar14->field_0x4 & 8) == 0) {\n      if ((*(uint *)&prVar14->field_0x4 & 0x800) == 0) {\n        if (prVar14->field_0x4 == 4) {\n          iVar20 = pmatch[(prVar14->opr).idx + 1].rm_eo;\n          iVar13 = pmatch[(prVar14->opr).idx + 1].rm_so;\n          unaff_s6 = (re_dfa_t *)(iVar20 - iVar13);\n          if (unaff_s5 == (re_fail_stack_t *)0x0) {\n            prVar23 = unaff_s0;\n            if (unaff_s6 != (re_dfa_t *)0x0) goto LAB_00021da8;\nLAB_00021dd0:\n            prVar23 = unaff_s0;\n            iVar13 = (*pcVar7)(&eps_via_nodes);\n            if (iVar13 == 0) goto LAB_00021b34;\n            prVar26 = (re_match_context_t *)*unaff_s2->edests[(int)unaff_s0].elems;\n            prVar23 = prVar26;\n            iVar13 = (*pcVar6)(&mctx->state_log[idx]->nodes);\n            if (iVar13 != 0) goto LAB_00021ca8;\n            goto LAB_00021c18;\n          }\n          if ((iVar13 != -1) && (iVar20 != -1)) {\n            if (unaff_s6 == (re_dfa_t *)0x0) goto LAB_00021dd0;\n            puVar22 = (mctx->input).mbs;\n            prVar23 = (re_match_context_t *)(puVar22 + idx);\n            prVar24 = unaff_s6;\n            iVar13 = (*(code *)PTR_memcmp_0003e338)(puVar22 + iVar13);\n            if (iVar13 == 0) goto LAB_00021da8;\n          }\n        }\n        else {\nLAB_00021c18:\n          unaff_s6 = (re_dfa_t *)idx;\n          prVar23 = (re_match_context_t *)(unaff_s2->nodes + (int)unaff_s0);\n          prVar24 = (re_dfa_t *)idx;\n          _Var17 = check_node_accept(mctx,(re_token_t *)prVar23,idx);\n          if (CONCAT31(extraout_var,_Var17) != 0) {\n            prVar26 = (re_match_context_t *)unaff_s2->nexts[(int)unaff_s0];\n            idx = (int)unaff_s6 + 1;\n            goto LAB_00021c5c;\n          }\n        }\n      }\n      else {\n        prVar23 = unaff_s0;\n        prVar24 = (re_dfa_t *)mctx;\n        prVar25 = (regmatch_t *)idx;\n        unaff_s6 = (re_dfa_t *)check_node_accept_bytes(unaff_s2,(Idx)unaff_s0,&mctx->input,idx);\n        if (unaff_s6 == (re_dfa_t *)0x0) goto LAB_00021c18;\nLAB_00021da8:\n        prVar26 = (re_match_context_t *)unaff_s2->nexts[(int)unaff_s0];\n        idx = (int)unaff_s6->word_char + idx + -0x60;\nLAB_00021c5c:\n        unaff_s6 = (re_dfa_t *)idx;\n        if (unaff_s5 == (re_fail_stack_t *)0x0) {\nLAB_00021ca4:\n          eps_via_nodes.nelem = 0;\n          goto LAB_00021ca8;\n        }\n        unaff_s6 = (re_dfa_t *)(idx * 4);\n        if (idx <= mctx->match_last) {\n          unaff_s6 = (re_dfa_t *)(mctx->state_log + idx);\n          puVar22 = ((re_string_t *)&unaff_s6->nodes)->raw_mbs;\n          prVar23 = prVar26;\n          if ((puVar22 != (uchar *)0x0) && (iVar13 = (*pcVar6)(puVar22 + 4), iVar13 != 0))\n          goto LAB_00021ca4;\n        }\n      }\nLAB_00021f3c:\n      unaff_s0 = (re_match_context_t *)0xffffffff;\n      goto LAB_00021f44;\n    }\n    prVar9 = mctx->state_log[idx];\n    unaff_s2 = (re_dfa_t *)(unaff_s2->edests + (int)unaff_s0);\n    prVar23 = unaff_s0;\n    iVar13 = (*pcVar7)(&eps_via_nodes);\n    if (iVar13 == 0) goto LAB_00021b34;\n    unaff_s6 = (re_dfa_t *)unaff_s2->nodes_alloc;\n    if ((int)unaff_s6 < 1) goto LAB_00021f3c;\n    unaff_s3 = (wint_t *)unaff_s2->nodes_len;\n    unaff_s2 = (re_dfa_t *)0x0;\n    unaff_s0 = (re_match_context_t *)0xffffffff;\n    do {\n      prVar12 = (re_match_context_t *)*unaff_s3;\n      prVar23 = prVar12;\n      iVar13 = (*pcVar6)(&prVar9->nodes);\n      prVar26 = unaff_s0;\n      if ((iVar13 != 0) &&\n         (prVar23 = unaff_s0, prVar26 = prVar12, unaff_s0 != (re_match_context_t *)0xffffffff)) {\n        iVar13 = (*pcVar6)(&eps_via_nodes);\n        IVar4 = idx;\n        if ((iVar13 == 0) &&\n           (prVar26 = unaff_s0, unaff_s6 = (re_dfa_t *)idx, unaff_s5 != (re_fail_stack_t *)0x0)) {\n          prVar28 = (re_dfa_t *)unaff_s5->num;\n          prVar26 = (re_match_context_t *)((int)&((re_string_t *)&prVar28->nodes)->raw_mbs + 1);\n          unaff_s5->num = (Idx)prVar26;\n          prVar23 = (re_match_context_t *)unaff_s5->alloc;\n          if (prVar26 == prVar23) {\n            prVar23 = (re_match_context_t *)((int)prVar23 * 0x30);\n            prVar11 = (re_fail_stack_ent_t *)(*(code *)PTR_realloc_0003e2fc)(unaff_s5->stack);\n            unaff_s2 = prVar28;\n            unaff_s6 = (re_dfa_t *)IVar4;\n            if (prVar11 == (re_fail_stack_ent_t *)0x0) goto LAB_00021b34;\n            unaff_s5->alloc = unaff_s5->alloc << 1;\n            unaff_s5->stack = prVar11;\n          }\n          unaff_s3 = (wint_t *)((int)prVar28 * 0x18);\n          unaff_s5->stack[(int)prVar28].idx = IVar4;\n          unaff_s5->stack[(int)prVar28].node = (Idx)prVar12;\n          unaff_s2 = (re_dfa_t *)(unaff_s5->stack + (int)prVar28);\n          pwVar10 = (wint_t *)(*(code *)PTR_malloc_0003e2f8)(prVar19);\n          unaff_s2->nodes_len = (size_t)pwVar10;\n          prVar21 = unaff_s5->stack[(int)prVar28].regs;\n          prVar24 = prVar19;\n          unaff_s6 = prVar19;\n          if (prVar21 == (regmatch_t *)0x0) goto LAB_00021b34;\n          (*(code *)PTR_memcpy_0003e34c)(prVar21,pmatch);\n          prVar23 = (re_match_context_t *)&eps_via_nodes;\n          rVar15 = re_node_set_init_copy\n                             (&unaff_s5->stack[(int)prVar28].eps_via_nodes,(re_node_set *)prVar23);\n          prVar26 = unaff_s0;\n          if (rVar15 != _REG_NOERROR) goto LAB_00021b34;\n        }\n        break;\n      }\n      unaff_s2 = (re_dfa_t *)((int)&((re_string_t *)&unaff_s2->nodes)->raw_mbs + 1);\n      unaff_s3 = unaff_s3 + 1;\n      unaff_s0 = prVar26;\n    } while (unaff_s6 != unaff_s2);\nLAB_00021ca8:\n    unaff_s0 = prVar26;\n    if ((int)prVar26 < 0) {\nLAB_00021f44:\n      if (unaff_s0 == (re_match_context_t *)&SUB_fffffffe) {\nLAB_00021b34:\n        (*(code *)PTR_free_0003e354)(eps_via_nodes.elems);\n        if (bVar1) {\n          (*(code *)PTR_free_0003e354)(local_70);\n        }\n        free_fail_stack_return(unaff_s5);\n        rVar15 = _REG_ESPACE;\n        goto LAB_00021ed8;\n      }\n      if (unaff_s5 == (re_fail_stack_t *)0x0) {\n        (*(code *)PTR_free_0003e354)();\n        if (bVar1) {\n          (*(code *)PTR_free_0003e354)(local_70);\n          rVar15 = _REG_NOMATCH;\n        }\n        else {\n          rVar15 = _REG_NOMATCH;\n        }\n        goto LAB_00021ed8;\n      }\n      *(re_node_set **)(puVar31 + 0x10) = &eps_via_nodes;\n      prVar23 = (re_match_context_t *)&idx;\n      prVar24 = (re_dfa_t *)nmatch;\n      prVar25 = pmatch;\n      unaff_s0 = (re_match_context_t *)(*pcVar5)(unaff_s5);\n    }\n  }" while (parenthesized_expression "(unaff_s2 = (re_dfa_t *)idx, puVar30 = PTR_memcpy_0003e34c, puVar32 = puVar31,\n        idx <= pmatch->rm_eo)" ( (comma_expression "unaff_s2 = (re_dfa_t *)idx, puVar30 = PTR_memcpy_0003e34c, puVar32 = puVar31,\n        idx <= pmatch->rm_eo" (assignment_expression "unaff_s2 = (re_dfa_t *)idx" identifier = (cast_expression "(re_dfa_t *)idx" ( (type_descriptor "re_dfa_t *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) , (comma_expression "puVar30 = PTR_memcpy_0003e34c, puVar32 = puVar31,\n        idx <= pmatch->rm_eo" (assignment_expression "puVar30 = PTR_memcpy_0003e34c" identifier = identifier) , (comma_expression "puVar32 = puVar31,\n        idx <= pmatch->rm_eo" (assignment_expression "puVar32 = puVar31" identifier = identifier) , (binary_expression "idx <= pmatch->rm_eo" identifier <= (field_expression "pmatch->rm_eo" identifier -> field_identifier))))) )) (compound_statement "{\n    prVar14 = prVar29->nodes + (int)unaff_s0;\n    if (prVar14->field_0x4 == '\b') {\n      iVar13 = (prVar14->opr).idx + 1;\n      if (iVar13 < (int)nmatch) {\n        pmatch[iVar13].rm_so = idx;\n        pmatch[iVar13].rm_eo = -1;\n      }\nLAB_00021cec:\n      iVar13 = pmatch->rm_eo;\n    }\n    else {\n      if (prVar14->field_0x4 != '\t') goto LAB_00021cec;\n      iVar13 = (prVar14->opr).idx + 1;\n      if ((int)nmatch <= iVar13) goto LAB_00021cec;\n      prVar23 = (re_match_context_t *)(pmatch + iVar13);\n      if ((int)(prVar23->input).raw_mbs < idx) {\n        (prVar23->input).mbs = (uchar *)idx;\n        prVar23 = (re_match_context_t *)pmatch;\n        prVar24 = prVar19;\n        (*(code *)puVar30)(local_70);\n        iVar13 = pmatch->rm_eo;\n      }\n      else {\n        if (((*(uint *)&prVar14->field_0x4 & 0x1000) == 0) ||\n           (prVar24 = prVar19,\n           (&(local_70->input).wcs)[(prVar14->opr).idx * 2] == (wint_t *)0xffffffff)) {\n          (prVar23->input).mbs = (uchar *)idx;\n          goto LAB_00021cec;\n        }\n        prVar23 = local_70;\n        (*(code *)PTR_memcpy_0003e34c)(pmatch);\n        iVar13 = pmatch->rm_eo;\n      }\n    }\n    if (((re_dfa_t *)iVar13 == unaff_s2) && ((re_match_context_t *)mctx->last_node == unaff_s0)) {\n      if (unaff_s5 == (re_fail_stack_t *)0x0) {\n        (*(code *)PTR_free_0003e354)(eps_via_nodes.elems);\n        if (bVar1) {\n          (*(code *)PTR_free_0003e354)(local_70);\n          rVar15 = _REG_NOERROR;\n        }\n        else {\n          rVar15 = _REG_NOERROR;\n        }\n      }\n      else {\n        if (nmatch != 0) {\n          sVar8 = 0;\n          prVar24 = (re_dfa_t *)0xffffffff;\n          prVar21 = pmatch;\n          do {\n            if ((-1 < prVar21->rm_so) &&\n               (prVar23 = (re_match_context_t *)prVar21->rm_eo,\n               (re_match_context_t *)prVar21->rm_eo == (re_match_context_t *)0xffffffff)) break;\n            sVar8 = sVar8 + 1;\n            prVar21 = prVar21 + 1;\n            prVar23 = (re_match_context_t *)nmatch;\n          } while (nmatch != sVar8);\n          if (sVar8 != nmatch) {\n            *(re_node_set **)(puVar31 + 0x10) = &eps_via_nodes;\n            prVar23 = (re_match_context_t *)&idx;\n            prVar24 = (re_dfa_t *)nmatch;\n            prVar25 = pmatch;\n            unaff_s0 = (re_match_context_t *)(*pcVar5)(unaff_s5);\n            goto LAB_00021d04;\n          }\n        }\n        (*(code *)PTR_free_0003e354)(eps_via_nodes.elems);\n        if (bVar1) {\n          (*(code *)PTR_free_0003e354)(local_70);\n        }\n        rVar15 = free_fail_stack_return(unaff_s5);\n      }\n      goto LAB_00021ed8;\n    }\nLAB_00021d04:\n    unaff_s2 = mctx->dfa;\n    unaff_s3 = (wint_t *)((int)unaff_s0 * 8);\n    prVar14 = unaff_s2->nodes + (int)unaff_s0;\n    if ((prVar14->field_0x4 & 8) == 0) {\n      if ((*(uint *)&prVar14->field_0x4 & 0x800) == 0) {\n        if (prVar14->field_0x4 == 4) {\n          iVar20 = pmatch[(prVar14->opr).idx + 1].rm_eo;\n          iVar13 = pmatch[(prVar14->opr).idx + 1].rm_so;\n          unaff_s6 = (re_dfa_t *)(iVar20 - iVar13);\n          if (unaff_s5 == (re_fail_stack_t *)0x0) {\n            prVar23 = unaff_s0;\n            if (unaff_s6 != (re_dfa_t *)0x0) goto LAB_00021da8;\nLAB_00021dd0:\n            prVar23 = unaff_s0;\n            iVar13 = (*pcVar7)(&eps_via_nodes);\n            if (iVar13 == 0) goto LAB_00021b34;\n            prVar26 = (re_match_context_t *)*unaff_s2->edests[(int)unaff_s0].elems;\n            prVar23 = prVar26;\n            iVar13 = (*pcVar6)(&mctx->state_log[idx]->nodes);\n            if (iVar13 != 0) goto LAB_00021ca8;\n            goto LAB_00021c18;\n          }\n          if ((iVar13 != -1) && (iVar20 != -1)) {\n            if (unaff_s6 == (re_dfa_t *)0x0) goto LAB_00021dd0;\n            puVar22 = (mctx->input).mbs;\n            prVar23 = (re_match_context_t *)(puVar22 + idx);\n            prVar24 = unaff_s6;\n            iVar13 = (*(code *)PTR_memcmp_0003e338)(puVar22 + iVar13);\n            if (iVar13 == 0) goto LAB_00021da8;\n          }\n        }\n        else {\nLAB_00021c18:\n          unaff_s6 = (re_dfa_t *)idx;\n          prVar23 = (re_match_context_t *)(unaff_s2->nodes + (int)unaff_s0);\n          prVar24 = (re_dfa_t *)idx;\n          _Var17 = check_node_accept(mctx,(re_token_t *)prVar23,idx);\n          if (CONCAT31(extraout_var,_Var17) != 0) {\n            prVar26 = (re_match_context_t *)unaff_s2->nexts[(int)unaff_s0];\n            idx = (int)unaff_s6 + 1;\n            goto LAB_00021c5c;\n          }\n        }\n      }\n      else {\n        prVar23 = unaff_s0;\n        prVar24 = (re_dfa_t *)mctx;\n        prVar25 = (regmatch_t *)idx;\n        unaff_s6 = (re_dfa_t *)check_node_accept_bytes(unaff_s2,(Idx)unaff_s0,&mctx->input,idx);\n        if (unaff_s6 == (re_dfa_t *)0x0) goto LAB_00021c18;\nLAB_00021da8:\n        prVar26 = (re_match_context_t *)unaff_s2->nexts[(int)unaff_s0];\n        idx = (int)unaff_s6->word_char + idx + -0x60;\nLAB_00021c5c:\n        unaff_s6 = (re_dfa_t *)idx;\n        if (unaff_s5 == (re_fail_stack_t *)0x0) {\nLAB_00021ca4:\n          eps_via_nodes.nelem = 0;\n          goto LAB_00021ca8;\n        }\n        unaff_s6 = (re_dfa_t *)(idx * 4);\n        if (idx <= mctx->match_last) {\n          unaff_s6 = (re_dfa_t *)(mctx->state_log + idx);\n          puVar22 = ((re_string_t *)&unaff_s6->nodes)->raw_mbs;\n          prVar23 = prVar26;\n          if ((puVar22 != (uchar *)0x0) && (iVar13 = (*pcVar6)(puVar22 + 4), iVar13 != 0))\n          goto LAB_00021ca4;\n        }\n      }\nLAB_00021f3c:\n      unaff_s0 = (re_match_context_t *)0xffffffff;\n      goto LAB_00021f44;\n    }\n    prVar9 = mctx->state_log[idx];\n    unaff_s2 = (re_dfa_t *)(unaff_s2->edests + (int)unaff_s0);\n    prVar23 = unaff_s0;\n    iVar13 = (*pcVar7)(&eps_via_nodes);\n    if (iVar13 == 0) goto LAB_00021b34;\n    unaff_s6 = (re_dfa_t *)unaff_s2->nodes_alloc;\n    if ((int)unaff_s6 < 1) goto LAB_00021f3c;\n    unaff_s3 = (wint_t *)unaff_s2->nodes_len;\n    unaff_s2 = (re_dfa_t *)0x0;\n    unaff_s0 = (re_match_context_t *)0xffffffff;\n    do {\n      prVar12 = (re_match_context_t *)*unaff_s3;\n      prVar23 = prVar12;\n      iVar13 = (*pcVar6)(&prVar9->nodes);\n      prVar26 = unaff_s0;\n      if ((iVar13 != 0) &&\n         (prVar23 = unaff_s0, prVar26 = prVar12, unaff_s0 != (re_match_context_t *)0xffffffff)) {\n        iVar13 = (*pcVar6)(&eps_via_nodes);\n        IVar4 = idx;\n        if ((iVar13 == 0) &&\n           (prVar26 = unaff_s0, unaff_s6 = (re_dfa_t *)idx, unaff_s5 != (re_fail_stack_t *)0x0)) {\n          prVar28 = (re_dfa_t *)unaff_s5->num;\n          prVar26 = (re_match_context_t *)((int)&((re_string_t *)&prVar28->nodes)->raw_mbs + 1);\n          unaff_s5->num = (Idx)prVar26;\n          prVar23 = (re_match_context_t *)unaff_s5->alloc;\n          if (prVar26 == prVar23) {\n            prVar23 = (re_match_context_t *)((int)prVar23 * 0x30);\n            prVar11 = (re_fail_stack_ent_t *)(*(code *)PTR_realloc_0003e2fc)(unaff_s5->stack);\n            unaff_s2 = prVar28;\n            unaff_s6 = (re_dfa_t *)IVar4;\n            if (prVar11 == (re_fail_stack_ent_t *)0x0) goto LAB_00021b34;\n            unaff_s5->alloc = unaff_s5->alloc << 1;\n            unaff_s5->stack = prVar11;\n          }\n          unaff_s3 = (wint_t *)((int)prVar28 * 0x18);\n          unaff_s5->stack[(int)prVar28].idx = IVar4;\n          unaff_s5->stack[(int)prVar28].node = (Idx)prVar12;\n          unaff_s2 = (re_dfa_t *)(unaff_s5->stack + (int)prVar28);\n          pwVar10 = (wint_t *)(*(code *)PTR_malloc_0003e2f8)(prVar19);\n          unaff_s2->nodes_len = (size_t)pwVar10;\n          prVar21 = unaff_s5->stack[(int)prVar28].regs;\n          prVar24 = prVar19;\n          unaff_s6 = prVar19;\n          if (prVar21 == (regmatch_t *)0x0) goto LAB_00021b34;\n          (*(code *)PTR_memcpy_0003e34c)(prVar21,pmatch);\n          prVar23 = (re_match_context_t *)&eps_via_nodes;\n          rVar15 = re_node_set_init_copy\n                             (&unaff_s5->stack[(int)prVar28].eps_via_nodes,(re_node_set *)prVar23);\n          prVar26 = unaff_s0;\n          if (rVar15 != _REG_NOERROR) goto LAB_00021b34;\n        }\n        break;\n      }\n      unaff_s2 = (re_dfa_t *)((int)&((re_string_t *)&unaff_s2->nodes)->raw_mbs + 1);\n      unaff_s3 = unaff_s3 + 1;\n      unaff_s0 = prVar26;\n    } while (unaff_s6 != unaff_s2);\nLAB_00021ca8:\n    unaff_s0 = prVar26;\n    if ((int)prVar26 < 0) {\nLAB_00021f44:\n      if (unaff_s0 == (re_match_context_t *)&SUB_fffffffe) {\nLAB_00021b34:\n        (*(code *)PTR_free_0003e354)(eps_via_nodes.elems);\n        if (bVar1) {\n          (*(code *)PTR_free_0003e354)(local_70);\n        }\n        free_fail_stack_return(unaff_s5);\n        rVar15 = _REG_ESPACE;\n        goto LAB_00021ed8;\n      }\n      if (unaff_s5 == (re_fail_stack_t *)0x0) {\n        (*(code *)PTR_free_0003e354)();\n        if (bVar1) {\n          (*(code *)PTR_free_0003e354)(local_70);\n          rVar15 = _REG_NOMATCH;\n        }\n        else {\n          rVar15 = _REG_NOMATCH;\n        }\n        goto LAB_00021ed8;\n      }\n      *(re_node_set **)(puVar31 + 0x10) = &eps_via_nodes;\n      prVar23 = (re_match_context_t *)&idx;\n      prVar24 = (re_dfa_t *)nmatch;\n      prVar25 = pmatch;\n      unaff_s0 = (re_match_context_t *)(*pcVar5)(unaff_s5);\n    }\n  }" { (expression_statement "prVar14 = prVar29->nodes + (int)unaff_s0;" (assignment_expression "prVar14 = prVar29->nodes + (int)unaff_s0" identifier = (binary_expression "prVar29->nodes + (int)unaff_s0" (field_expression "prVar29->nodes" identifier -> field_identifier) + (cast_expression "(int)unaff_s0" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (if_statement "if (prVar14->field_0x4 == '\b') {\n      iVar13 = (prVar14->opr).idx + 1;\n      if (iVar13 < (int)nmatch) {\n        pmatch[iVar13].rm_so = idx;\n        pmatch[iVar13].rm_eo = -1;\n      }\nLAB_00021cec:\n      iVar13 = pmatch->rm_eo;\n    }\n    else {\n      if (prVar14->field_0x4 != '\t') goto LAB_00021cec;\n      iVar13 = (prVar14->opr).idx + 1;\n      if ((int)nmatch <= iVar13) goto LAB_00021cec;\n      prVar23 = (re_match_context_t *)(pmatch + iVar13);\n      if ((int)(prVar23->input).raw_mbs < idx) {\n        (prVar23->input).mbs = (uchar *)idx;\n        prVar23 = (re_match_context_t *)pmatch;\n        prVar24 = prVar19;\n        (*(code *)puVar30)(local_70);\n        iVar13 = pmatch->rm_eo;\n      }\n      else {\n        if (((*(uint *)&prVar14->field_0x4 & 0x1000) == 0) ||\n           (prVar24 = prVar19,\n           (&(local_70->input).wcs)[(prVar14->opr).idx * 2] == (wint_t *)0xffffffff)) {\n          (prVar23->input).mbs = (uchar *)idx;\n          goto LAB_00021cec;\n        }\n        prVar23 = local_70;\n        (*(code *)PTR_memcpy_0003e34c)(pmatch);\n        iVar13 = pmatch->rm_eo;\n      }\n    }" if (parenthesized_expression "(prVar14->field_0x4 == '\b')" ( (binary_expression "prVar14->field_0x4 == '\b'" (field_expression "prVar14->field_0x4" identifier -> field_identifier) == (char_literal "'\b'" ' escape_sequence ')) )) (compound_statement "{\n      iVar13 = (prVar14->opr).idx + 1;\n      if (iVar13 < (int)nmatch) {\n        pmatch[iVar13].rm_so = idx;\n        pmatch[iVar13].rm_eo = -1;\n      }\nLAB_00021cec:\n      iVar13 = pmatch->rm_eo;\n    }" { (expression_statement "iVar13 = (prVar14->opr).idx + 1;" (assignment_expression "iVar13 = (prVar14->opr).idx + 1" identifier = (binary_expression "(prVar14->opr).idx + 1" (field_expression "(prVar14->opr).idx" (parenthesized_expression "(prVar14->opr)" ( (field_expression "prVar14->opr" identifier -> field_identifier) )) . field_identifier) + number_literal)) ;) (if_statement "if (iVar13 < (int)nmatch) {\n        pmatch[iVar13].rm_so = idx;\n        pmatch[iVar13].rm_eo = -1;\n      }" if (parenthesized_expression "(iVar13 < (int)nmatch)" ( (binary_expression "iVar13 < (int)nmatch" identifier < (cast_expression "(int)nmatch" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n        pmatch[iVar13].rm_so = idx;\n        pmatch[iVar13].rm_eo = -1;\n      }" { (expression_statement "pmatch[iVar13].rm_so = idx;" (assignment_expression "pmatch[iVar13].rm_so = idx" (field_expression "pmatch[iVar13].rm_so" (subscript_expression "pmatch[iVar13]" identifier [ identifier ]) . field_identifier) = identifier) ;) (expression_statement "pmatch[iVar13].rm_eo = -1;" (assignment_expression "pmatch[iVar13].rm_eo = -1" (field_expression "pmatch[iVar13].rm_eo" (subscript_expression "pmatch[iVar13]" identifier [ identifier ]) . field_identifier) = number_literal) ;) })) (labeled_statement "LAB_00021cec:\n      iVar13 = pmatch->rm_eo;" statement_identifier : (expression_statement "iVar13 = pmatch->rm_eo;" (assignment_expression "iVar13 = pmatch->rm_eo" identifier = (field_expression "pmatch->rm_eo" identifier -> field_identifier)) ;)) }) (else_clause "else {\n      if (prVar14->field_0x4 != '\t') goto LAB_00021cec;\n      iVar13 = (prVar14->opr).idx + 1;\n      if ((int)nmatch <= iVar13) goto LAB_00021cec;\n      prVar23 = (re_match_context_t *)(pmatch + iVar13);\n      if ((int)(prVar23->input).raw_mbs < idx) {\n        (prVar23->input).mbs = (uchar *)idx;\n        prVar23 = (re_match_context_t *)pmatch;\n        prVar24 = prVar19;\n        (*(code *)puVar30)(local_70);\n        iVar13 = pmatch->rm_eo;\n      }\n      else {\n        if (((*(uint *)&prVar14->field_0x4 & 0x1000) == 0) ||\n           (prVar24 = prVar19,\n           (&(local_70->input).wcs)[(prVar14->opr).idx * 2] == (wint_t *)0xffffffff)) {\n          (prVar23->input).mbs = (uchar *)idx;\n          goto LAB_00021cec;\n        }\n        prVar23 = local_70;\n        (*(code *)PTR_memcpy_0003e34c)(pmatch);\n        iVar13 = pmatch->rm_eo;\n      }\n    }" else (compound_statement "{\n      if (prVar14->field_0x4 != '\t') goto LAB_00021cec;\n      iVar13 = (prVar14->opr).idx + 1;\n      if ((int)nmatch <= iVar13) goto LAB_00021cec;\n      prVar23 = (re_match_context_t *)(pmatch + iVar13);\n      if ((int)(prVar23->input).raw_mbs < idx) {\n        (prVar23->input).mbs = (uchar *)idx;\n        prVar23 = (re_match_context_t *)pmatch;\n        prVar24 = prVar19;\n        (*(code *)puVar30)(local_70);\n        iVar13 = pmatch->rm_eo;\n      }\n      else {\n        if (((*(uint *)&prVar14->field_0x4 & 0x1000) == 0) ||\n           (prVar24 = prVar19,\n           (&(local_70->input).wcs)[(prVar14->opr).idx * 2] == (wint_t *)0xffffffff)) {\n          (prVar23->input).mbs = (uchar *)idx;\n          goto LAB_00021cec;\n        }\n        prVar23 = local_70;\n        (*(code *)PTR_memcpy_0003e34c)(pmatch);\n        iVar13 = pmatch->rm_eo;\n      }\n    }" { (if_statement "if (prVar14->field_0x4 != '\t') goto LAB_00021cec;" if (parenthesized_expression "(prVar14->field_0x4 != '\t')" ( (binary_expression "prVar14->field_0x4 != '\t'" (field_expression "prVar14->field_0x4" identifier -> field_identifier) != (char_literal "'\t'" ' escape_sequence ')) )) (goto_statement "goto LAB_00021cec;" goto statement_identifier ;)) (expression_statement "iVar13 = (prVar14->opr).idx + 1;" (assignment_expression "iVar13 = (prVar14->opr).idx + 1" identifier = (binary_expression "(prVar14->opr).idx + 1" (field_expression "(prVar14->opr).idx" (parenthesized_expression "(prVar14->opr)" ( (field_expression "prVar14->opr" identifier -> field_identifier) )) . field_identifier) + number_literal)) ;) (if_statement "if ((int)nmatch <= iVar13) goto LAB_00021cec;" if (parenthesized_expression "((int)nmatch <= iVar13)" ( (binary_expression "(int)nmatch <= iVar13" (cast_expression "(int)nmatch" ( (type_descriptor "int" primitive_type) ) identifier) <= identifier) )) (goto_statement "goto LAB_00021cec;" goto statement_identifier ;)) (expression_statement "prVar23 = (re_match_context_t *)(pmatch + iVar13);" (assignment_expression "prVar23 = (re_match_context_t *)(pmatch + iVar13)" identifier = (cast_expression "(re_match_context_t *)(pmatch + iVar13)" ( (type_descriptor "re_match_context_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pmatch + iVar13)" ( (binary_expression "pmatch + iVar13" identifier + identifier) )))) ;) (if_statement "if ((int)(prVar23->input).raw_mbs < idx) {\n        (prVar23->input).mbs = (uchar *)idx;\n        prVar23 = (re_match_context_t *)pmatch;\n        prVar24 = prVar19;\n        (*(code *)puVar30)(local_70);\n        iVar13 = pmatch->rm_eo;\n      }\n      else {\n        if (((*(uint *)&prVar14->field_0x4 & 0x1000) == 0) ||\n           (prVar24 = prVar19,\n           (&(local_70->input).wcs)[(prVar14->opr).idx * 2] == (wint_t *)0xffffffff)) {\n          (prVar23->input).mbs = (uchar *)idx;\n          goto LAB_00021cec;\n        }\n        prVar23 = local_70;\n        (*(code *)PTR_memcpy_0003e34c)(pmatch);\n        iVar13 = pmatch->rm_eo;\n      }" if (parenthesized_expression "((int)(prVar23->input).raw_mbs < idx)" ( (binary_expression "(int)(prVar23->input).raw_mbs < idx" (cast_expression "(int)(prVar23->input).raw_mbs" ( (type_descriptor "int" primitive_type) ) (field_expression "(prVar23->input).raw_mbs" (parenthesized_expression "(prVar23->input)" ( (field_expression "prVar23->input" identifier -> field_identifier) )) . field_identifier)) < identifier) )) (compound_statement "{\n        (prVar23->input).mbs = (uchar *)idx;\n        prVar23 = (re_match_context_t *)pmatch;\n        prVar24 = prVar19;\n        (*(code *)puVar30)(local_70);\n        iVar13 = pmatch->rm_eo;\n      }" { (expression_statement "(prVar23->input).mbs = (uchar *)idx;" (assignment_expression "(prVar23->input).mbs = (uchar *)idx" (field_expression "(prVar23->input).mbs" (parenthesized_expression "(prVar23->input)" ( (field_expression "prVar23->input" identifier -> field_identifier) )) . field_identifier) = (cast_expression "(uchar *)idx" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "prVar23 = (re_match_context_t *)pmatch;" (assignment_expression "prVar23 = (re_match_context_t *)pmatch" identifier = (cast_expression "(re_match_context_t *)pmatch" ( (type_descriptor "re_match_context_t *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "prVar24 = prVar19;" (assignment_expression "prVar24 = prVar19" identifier = identifier) ;) (expression_statement "(*(code *)puVar30)(local_70);" (call_expression "(*(code *)puVar30)(local_70)" (parenthesized_expression "(*(code *)puVar30)" ( (pointer_expression "*(code *)puVar30" * (cast_expression "(code *)puVar30" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(local_70)" ( identifier ))) ;) (expression_statement "iVar13 = pmatch->rm_eo;" (assignment_expression "iVar13 = pmatch->rm_eo" identifier = (field_expression "pmatch->rm_eo" identifier -> field_identifier)) ;) }) (else_clause "else {\n        if (((*(uint *)&prVar14->field_0x4 & 0x1000) == 0) ||\n           (prVar24 = prVar19,\n           (&(local_70->input).wcs)[(prVar14->opr).idx * 2] == (wint_t *)0xffffffff)) {\n          (prVar23->input).mbs = (uchar *)idx;\n          goto LAB_00021cec;\n        }\n        prVar23 = local_70;\n        (*(code *)PTR_memcpy_0003e34c)(pmatch);\n        iVar13 = pmatch->rm_eo;\n      }" else (compound_statement "{\n        if (((*(uint *)&prVar14->field_0x4 & 0x1000) == 0) ||\n           (prVar24 = prVar19,\n           (&(local_70->input).wcs)[(prVar14->opr).idx * 2] == (wint_t *)0xffffffff)) {\n          (prVar23->input).mbs = (uchar *)idx;\n          goto LAB_00021cec;\n        }\n        prVar23 = local_70;\n        (*(code *)PTR_memcpy_0003e34c)(pmatch);\n        iVar13 = pmatch->rm_eo;\n      }" { (if_statement "if (((*(uint *)&prVar14->field_0x4 & 0x1000) == 0) ||\n           (prVar24 = prVar19,\n           (&(local_70->input).wcs)[(prVar14->opr).idx * 2] == (wint_t *)0xffffffff)) {\n          (prVar23->input).mbs = (uchar *)idx;\n          goto LAB_00021cec;\n        }" if (parenthesized_expression "(((*(uint *)&prVar14->field_0x4 & 0x1000) == 0) ||\n           (prVar24 = prVar19,\n           (&(local_70->input).wcs)[(prVar14->opr).idx * 2] == (wint_t *)0xffffffff))" ( (binary_expression "((*(uint *)&prVar14->field_0x4 & 0x1000) == 0) ||\n           (prVar24 = prVar19,\n           (&(local_70->input).wcs)[(prVar14->opr).idx * 2] == (wint_t *)0xffffffff)" (parenthesized_expression "((*(uint *)&prVar14->field_0x4 & 0x1000) == 0)" ( (binary_expression "(*(uint *)&prVar14->field_0x4 & 0x1000) == 0" (parenthesized_expression "(*(uint *)&prVar14->field_0x4 & 0x1000)" ( (binary_expression "*(uint *)&prVar14->field_0x4 & 0x1000" (pointer_expression "*(uint *)&prVar14->field_0x4" * (cast_expression "(uint *)&prVar14->field_0x4" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&prVar14->field_0x4" & (field_expression "prVar14->field_0x4" identifier -> field_identifier)))) & number_literal) )) == number_literal) )) || (parenthesized_expression "(prVar24 = prVar19,\n           (&(local_70->input).wcs)[(prVar14->opr).idx * 2] == (wint_t *)0xffffffff)" ( (comma_expression "prVar24 = prVar19,\n           (&(local_70->input).wcs)[(prVar14->opr).idx * 2] == (wint_t *)0xffffffff" (assignment_expression "prVar24 = prVar19" identifier = identifier) , (binary_expression "(&(local_70->input).wcs)[(prVar14->opr).idx * 2] == (wint_t *)0xffffffff" (subscript_expression "(&(local_70->input).wcs)[(prVar14->opr).idx * 2]" (parenthesized_expression "(&(local_70->input).wcs)" ( (pointer_expression "&(local_70->input).wcs" & (field_expression "(local_70->input).wcs" (parenthesized_expression "(local_70->input)" ( (field_expression "local_70->input" identifier -> field_identifier) )) . field_identifier)) )) [ (binary_expression "(prVar14->opr).idx * 2" (field_expression "(prVar14->opr).idx" (parenthesized_expression "(prVar14->opr)" ( (field_expression "prVar14->opr" identifier -> field_identifier) )) . field_identifier) * number_literal) ]) == (cast_expression "(wint_t *)0xffffffff" ( (type_descriptor "wint_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (compound_statement "{\n          (prVar23->input).mbs = (uchar *)idx;\n          goto LAB_00021cec;\n        }" { (expression_statement "(prVar23->input).mbs = (uchar *)idx;" (assignment_expression "(prVar23->input).mbs = (uchar *)idx" (field_expression "(prVar23->input).mbs" (parenthesized_expression "(prVar23->input)" ( (field_expression "prVar23->input" identifier -> field_identifier) )) . field_identifier) = (cast_expression "(uchar *)idx" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (goto_statement "goto LAB_00021cec;" goto statement_identifier ;) })) (expression_statement "prVar23 = local_70;" (assignment_expression "prVar23 = local_70" identifier = identifier) ;) (expression_statement "(*(code *)PTR_memcpy_0003e34c)(pmatch);" (call_expression "(*(code *)PTR_memcpy_0003e34c)(pmatch)" (parenthesized_expression "(*(code *)PTR_memcpy_0003e34c)" ( (pointer_expression "*(code *)PTR_memcpy_0003e34c" * (cast_expression "(code *)PTR_memcpy_0003e34c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(pmatch)" ( identifier ))) ;) (expression_statement "iVar13 = pmatch->rm_eo;" (assignment_expression "iVar13 = pmatch->rm_eo" identifier = (field_expression "pmatch->rm_eo" identifier -> field_identifier)) ;) }))) }))) (if_statement "if (((re_dfa_t *)iVar13 == unaff_s2) && ((re_match_context_t *)mctx->last_node == unaff_s0)) {\n      if (unaff_s5 == (re_fail_stack_t *)0x0) {\n        (*(code *)PTR_free_0003e354)(eps_via_nodes.elems);\n        if (bVar1) {\n          (*(code *)PTR_free_0003e354)(local_70);\n          rVar15 = _REG_NOERROR;\n        }\n        else {\n          rVar15 = _REG_NOERROR;\n        }\n      }\n      else {\n        if (nmatch != 0) {\n          sVar8 = 0;\n          prVar24 = (re_dfa_t *)0xffffffff;\n          prVar21 = pmatch;\n          do {\n            if ((-1 < prVar21->rm_so) &&\n               (prVar23 = (re_match_context_t *)prVar21->rm_eo,\n               (re_match_context_t *)prVar21->rm_eo == (re_match_context_t *)0xffffffff)) break;\n            sVar8 = sVar8 + 1;\n            prVar21 = prVar21 + 1;\n            prVar23 = (re_match_context_t *)nmatch;\n          } while (nmatch != sVar8);\n          if (sVar8 != nmatch) {\n            *(re_node_set **)(puVar31 + 0x10) = &eps_via_nodes;\n            prVar23 = (re_match_context_t *)&idx;\n            prVar24 = (re_dfa_t *)nmatch;\n            prVar25 = pmatch;\n            unaff_s0 = (re_match_context_t *)(*pcVar5)(unaff_s5);\n            goto LAB_00021d04;\n          }\n        }\n        (*(code *)PTR_free_0003e354)(eps_via_nodes.elems);\n        if (bVar1) {\n          (*(code *)PTR_free_0003e354)(local_70);\n        }\n        rVar15 = free_fail_stack_return(unaff_s5);\n      }\n      goto LAB_00021ed8;\n    }" if (parenthesized_expression "(((re_dfa_t *)iVar13 == unaff_s2) && ((re_match_context_t *)mctx->last_node == unaff_s0))" ( (binary_expression "((re_dfa_t *)iVar13 == unaff_s2) && ((re_match_context_t *)mctx->last_node == unaff_s0)" (parenthesized_expression "((re_dfa_t *)iVar13 == unaff_s2)" ( (binary_expression "(re_dfa_t *)iVar13 == unaff_s2" (cast_expression "(re_dfa_t *)iVar13" ( (type_descriptor "re_dfa_t *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) == identifier) )) && (parenthesized_expression "((re_match_context_t *)mctx->last_node == unaff_s0)" ( (binary_expression "(re_match_context_t *)mctx->last_node == unaff_s0" (cast_expression "(re_match_context_t *)mctx->last_node" ( (type_descriptor "re_match_context_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "mctx->last_node" identifier -> field_identifier)) == identifier) ))) )) (compound_statement "{\n      if (unaff_s5 == (re_fail_stack_t *)0x0) {\n        (*(code *)PTR_free_0003e354)(eps_via_nodes.elems);\n        if (bVar1) {\n          (*(code *)PTR_free_0003e354)(local_70);\n          rVar15 = _REG_NOERROR;\n        }\n        else {\n          rVar15 = _REG_NOERROR;\n        }\n      }\n      else {\n        if (nmatch != 0) {\n          sVar8 = 0;\n          prVar24 = (re_dfa_t *)0xffffffff;\n          prVar21 = pmatch;\n          do {\n            if ((-1 < prVar21->rm_so) &&\n               (prVar23 = (re_match_context_t *)prVar21->rm_eo,\n               (re_match_context_t *)prVar21->rm_eo == (re_match_context_t *)0xffffffff)) break;\n            sVar8 = sVar8 + 1;\n            prVar21 = prVar21 + 1;\n            prVar23 = (re_match_context_t *)nmatch;\n          } while (nmatch != sVar8);\n          if (sVar8 != nmatch) {\n            *(re_node_set **)(puVar31 + 0x10) = &eps_via_nodes;\n            prVar23 = (re_match_context_t *)&idx;\n            prVar24 = (re_dfa_t *)nmatch;\n            prVar25 = pmatch;\n            unaff_s0 = (re_match_context_t *)(*pcVar5)(unaff_s5);\n            goto LAB_00021d04;\n          }\n        }\n        (*(code *)PTR_free_0003e354)(eps_via_nodes.elems);\n        if (bVar1) {\n          (*(code *)PTR_free_0003e354)(local_70);\n        }\n        rVar15 = free_fail_stack_return(unaff_s5);\n      }\n      goto LAB_00021ed8;\n    }" { (if_statement "if (unaff_s5 == (re_fail_stack_t *)0x0) {\n        (*(code *)PTR_free_0003e354)(eps_via_nodes.elems);\n        if (bVar1) {\n          (*(code *)PTR_free_0003e354)(local_70);\n          rVar15 = _REG_NOERROR;\n        }\n        else {\n          rVar15 = _REG_NOERROR;\n        }\n      }\n      else {\n        if (nmatch != 0) {\n          sVar8 = 0;\n          prVar24 = (re_dfa_t *)0xffffffff;\n          prVar21 = pmatch;\n          do {\n            if ((-1 < prVar21->rm_so) &&\n               (prVar23 = (re_match_context_t *)prVar21->rm_eo,\n               (re_match_context_t *)prVar21->rm_eo == (re_match_context_t *)0xffffffff)) break;\n            sVar8 = sVar8 + 1;\n            prVar21 = prVar21 + 1;\n            prVar23 = (re_match_context_t *)nmatch;\n          } while (nmatch != sVar8);\n          if (sVar8 != nmatch) {\n            *(re_node_set **)(puVar31 + 0x10) = &eps_via_nodes;\n            prVar23 = (re_match_context_t *)&idx;\n            prVar24 = (re_dfa_t *)nmatch;\n            prVar25 = pmatch;\n            unaff_s0 = (re_match_context_t *)(*pcVar5)(unaff_s5);\n            goto LAB_00021d04;\n          }\n        }\n        (*(code *)PTR_free_0003e354)(eps_via_nodes.elems);\n        if (bVar1) {\n          (*(code *)PTR_free_0003e354)(local_70);\n        }\n        rVar15 = free_fail_stack_return(unaff_s5);\n      }" if (parenthesized_expression "(unaff_s5 == (re_fail_stack_t *)0x0)" ( (binary_expression "unaff_s5 == (re_fail_stack_t *)0x0" identifier == (cast_expression "(re_fail_stack_t *)0x0" ( (type_descriptor "re_fail_stack_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        (*(code *)PTR_free_0003e354)(eps_via_nodes.elems);\n        if (bVar1) {\n          (*(code *)PTR_free_0003e354)(local_70);\n          rVar15 = _REG_NOERROR;\n        }\n        else {\n          rVar15 = _REG_NOERROR;\n        }\n      }" { (expression_statement "(*(code *)PTR_free_0003e354)(eps_via_nodes.elems);" (call_expression "(*(code *)PTR_free_0003e354)(eps_via_nodes.elems)" (parenthesized_expression "(*(code *)PTR_free_0003e354)" ( (pointer_expression "*(code *)PTR_free_0003e354" * (cast_expression "(code *)PTR_free_0003e354" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(eps_via_nodes.elems)" ( (field_expression "eps_via_nodes.elems" identifier . field_identifier) ))) ;) (if_statement "if (bVar1) {\n          (*(code *)PTR_free_0003e354)(local_70);\n          rVar15 = _REG_NOERROR;\n        }\n        else {\n          rVar15 = _REG_NOERROR;\n        }" if (parenthesized_expression "(bVar1)" ( identifier )) (compound_statement "{\n          (*(code *)PTR_free_0003e354)(local_70);\n          rVar15 = _REG_NOERROR;\n        }" { (expression_statement "(*(code *)PTR_free_0003e354)(local_70);" (call_expression "(*(code *)PTR_free_0003e354)(local_70)" (parenthesized_expression "(*(code *)PTR_free_0003e354)" ( (pointer_expression "*(code *)PTR_free_0003e354" * (cast_expression "(code *)PTR_free_0003e354" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(local_70)" ( identifier ))) ;) (expression_statement "rVar15 = _REG_NOERROR;" (assignment_expression "rVar15 = _REG_NOERROR" identifier = identifier) ;) }) (else_clause "else {\n          rVar15 = _REG_NOERROR;\n        }" else (compound_statement "{\n          rVar15 = _REG_NOERROR;\n        }" { (expression_statement "rVar15 = _REG_NOERROR;" (assignment_expression "rVar15 = _REG_NOERROR" identifier = identifier) ;) }))) }) (else_clause "else {\n        if (nmatch != 0) {\n          sVar8 = 0;\n          prVar24 = (re_dfa_t *)0xffffffff;\n          prVar21 = pmatch;\n          do {\n            if ((-1 < prVar21->rm_so) &&\n               (prVar23 = (re_match_context_t *)prVar21->rm_eo,\n               (re_match_context_t *)prVar21->rm_eo == (re_match_context_t *)0xffffffff)) break;\n            sVar8 = sVar8 + 1;\n            prVar21 = prVar21 + 1;\n            prVar23 = (re_match_context_t *)nmatch;\n          } while (nmatch != sVar8);\n          if (sVar8 != nmatch) {\n            *(re_node_set **)(puVar31 + 0x10) = &eps_via_nodes;\n            prVar23 = (re_match_context_t *)&idx;\n            prVar24 = (re_dfa_t *)nmatch;\n            prVar25 = pmatch;\n            unaff_s0 = (re_match_context_t *)(*pcVar5)(unaff_s5);\n            goto LAB_00021d04;\n          }\n        }\n        (*(code *)PTR_free_0003e354)(eps_via_nodes.elems);\n        if (bVar1) {\n          (*(code *)PTR_free_0003e354)(local_70);\n        }\n        rVar15 = free_fail_stack_return(unaff_s5);\n      }" else (compound_statement "{\n        if (nmatch != 0) {\n          sVar8 = 0;\n          prVar24 = (re_dfa_t *)0xffffffff;\n          prVar21 = pmatch;\n          do {\n            if ((-1 < prVar21->rm_so) &&\n               (prVar23 = (re_match_context_t *)prVar21->rm_eo,\n               (re_match_context_t *)prVar21->rm_eo == (re_match_context_t *)0xffffffff)) break;\n            sVar8 = sVar8 + 1;\n            prVar21 = prVar21 + 1;\n            prVar23 = (re_match_context_t *)nmatch;\n          } while (nmatch != sVar8);\n          if (sVar8 != nmatch) {\n            *(re_node_set **)(puVar31 + 0x10) = &eps_via_nodes;\n            prVar23 = (re_match_context_t *)&idx;\n            prVar24 = (re_dfa_t *)nmatch;\n            prVar25 = pmatch;\n            unaff_s0 = (re_match_context_t *)(*pcVar5)(unaff_s5);\n            goto LAB_00021d04;\n          }\n        }\n        (*(code *)PTR_free_0003e354)(eps_via_nodes.elems);\n        if (bVar1) {\n          (*(code *)PTR_free_0003e354)(local_70);\n        }\n        rVar15 = free_fail_stack_return(unaff_s5);\n      }" { (if_statement "if (nmatch != 0) {\n          sVar8 = 0;\n          prVar24 = (re_dfa_t *)0xffffffff;\n          prVar21 = pmatch;\n          do {\n            if ((-1 < prVar21->rm_so) &&\n               (prVar23 = (re_match_context_t *)prVar21->rm_eo,\n               (re_match_context_t *)prVar21->rm_eo == (re_match_context_t *)0xffffffff)) break;\n            sVar8 = sVar8 + 1;\n            prVar21 = prVar21 + 1;\n            prVar23 = (re_match_context_t *)nmatch;\n          } while (nmatch != sVar8);\n          if (sVar8 != nmatch) {\n            *(re_node_set **)(puVar31 + 0x10) = &eps_via_nodes;\n            prVar23 = (re_match_context_t *)&idx;\n            prVar24 = (re_dfa_t *)nmatch;\n            prVar25 = pmatch;\n            unaff_s0 = (re_match_context_t *)(*pcVar5)(unaff_s5);\n            goto LAB_00021d04;\n          }\n        }" if (parenthesized_expression "(nmatch != 0)" ( (binary_expression "nmatch != 0" identifier != number_literal) )) (compound_statement "{\n          sVar8 = 0;\n          prVar24 = (re_dfa_t *)0xffffffff;\n          prVar21 = pmatch;\n          do {\n            if ((-1 < prVar21->rm_so) &&\n               (prVar23 = (re_match_context_t *)prVar21->rm_eo,\n               (re_match_context_t *)prVar21->rm_eo == (re_match_context_t *)0xffffffff)) break;\n            sVar8 = sVar8 + 1;\n            prVar21 = prVar21 + 1;\n            prVar23 = (re_match_context_t *)nmatch;\n          } while (nmatch != sVar8);\n          if (sVar8 != nmatch) {\n            *(re_node_set **)(puVar31 + 0x10) = &eps_via_nodes;\n            prVar23 = (re_match_context_t *)&idx;\n            prVar24 = (re_dfa_t *)nmatch;\n            prVar25 = pmatch;\n            unaff_s0 = (re_match_context_t *)(*pcVar5)(unaff_s5);\n            goto LAB_00021d04;\n          }\n        }" { (expression_statement "sVar8 = 0;" (assignment_expression "sVar8 = 0" identifier = number_literal) ;) (expression_statement "prVar24 = (re_dfa_t *)0xffffffff;" (assignment_expression "prVar24 = (re_dfa_t *)0xffffffff" identifier = (cast_expression "(re_dfa_t *)0xffffffff" ( (type_descriptor "re_dfa_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "prVar21 = pmatch;" (assignment_expression "prVar21 = pmatch" identifier = identifier) ;) (do_statement "do {\n            if ((-1 < prVar21->rm_so) &&\n               (prVar23 = (re_match_context_t *)prVar21->rm_eo,\n               (re_match_context_t *)prVar21->rm_eo == (re_match_context_t *)0xffffffff)) break;\n            sVar8 = sVar8 + 1;\n            prVar21 = prVar21 + 1;\n            prVar23 = (re_match_context_t *)nmatch;\n          } while (nmatch != sVar8);" do (compound_statement "{\n            if ((-1 < prVar21->rm_so) &&\n               (prVar23 = (re_match_context_t *)prVar21->rm_eo,\n               (re_match_context_t *)prVar21->rm_eo == (re_match_context_t *)0xffffffff)) break;\n            sVar8 = sVar8 + 1;\n            prVar21 = prVar21 + 1;\n            prVar23 = (re_match_context_t *)nmatch;\n          }" { (if_statement "if ((-1 < prVar21->rm_so) &&\n               (prVar23 = (re_match_context_t *)prVar21->rm_eo,\n               (re_match_context_t *)prVar21->rm_eo == (re_match_context_t *)0xffffffff)) break;" if (parenthesized_expression "((-1 < prVar21->rm_so) &&\n               (prVar23 = (re_match_context_t *)prVar21->rm_eo,\n               (re_match_context_t *)prVar21->rm_eo == (re_match_context_t *)0xffffffff))" ( (binary_expression "(-1 < prVar21->rm_so) &&\n               (prVar23 = (re_match_context_t *)prVar21->rm_eo,\n               (re_match_context_t *)prVar21->rm_eo == (re_match_context_t *)0xffffffff)" (parenthesized_expression "(-1 < prVar21->rm_so)" ( (binary_expression "-1 < prVar21->rm_so" number_literal < (field_expression "prVar21->rm_so" identifier -> field_identifier)) )) && (parenthesized_expression "(prVar23 = (re_match_context_t *)prVar21->rm_eo,\n               (re_match_context_t *)prVar21->rm_eo == (re_match_context_t *)0xffffffff)" ( (comma_expression "prVar23 = (re_match_context_t *)prVar21->rm_eo,\n               (re_match_context_t *)prVar21->rm_eo == (re_match_context_t *)0xffffffff" (assignment_expression "prVar23 = (re_match_context_t *)prVar21->rm_eo" identifier = (cast_expression "(re_match_context_t *)prVar21->rm_eo" ( (type_descriptor "re_match_context_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "prVar21->rm_eo" identifier -> field_identifier))) , (binary_expression "(re_match_context_t *)prVar21->rm_eo == (re_match_context_t *)0xffffffff" (cast_expression "(re_match_context_t *)prVar21->rm_eo" ( (type_descriptor "re_match_context_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "prVar21->rm_eo" identifier -> field_identifier)) == (cast_expression "(re_match_context_t *)0xffffffff" ( (type_descriptor "re_match_context_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (break_statement "break;" break ;)) (expression_statement "sVar8 = sVar8 + 1;" (assignment_expression "sVar8 = sVar8 + 1" identifier = (binary_expression "sVar8 + 1" identifier + number_literal)) ;) (expression_statement "prVar21 = prVar21 + 1;" (assignment_expression "prVar21 = prVar21 + 1" identifier = (binary_expression "prVar21 + 1" identifier + number_literal)) ;) (expression_statement "prVar23 = (re_match_context_t *)nmatch;" (assignment_expression "prVar23 = (re_match_context_t *)nmatch" identifier = (cast_expression "(re_match_context_t *)nmatch" ( (type_descriptor "re_match_context_t *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) }) while (parenthesized_expression "(nmatch != sVar8)" ( (binary_expression "nmatch != sVar8" identifier != identifier) )) ;) (if_statement "if (sVar8 != nmatch) {\n            *(re_node_set **)(puVar31 + 0x10) = &eps_via_nodes;\n            prVar23 = (re_match_context_t *)&idx;\n            prVar24 = (re_dfa_t *)nmatch;\n            prVar25 = pmatch;\n            unaff_s0 = (re_match_context_t *)(*pcVar5)(unaff_s5);\n            goto LAB_00021d04;\n          }" if (parenthesized_expression "(sVar8 != nmatch)" ( (binary_expression "sVar8 != nmatch" identifier != identifier) )) (compound_statement "{\n            *(re_node_set **)(puVar31 + 0x10) = &eps_via_nodes;\n            prVar23 = (re_match_context_t *)&idx;\n            prVar24 = (re_dfa_t *)nmatch;\n            prVar25 = pmatch;\n            unaff_s0 = (re_match_context_t *)(*pcVar5)(unaff_s5);\n            goto LAB_00021d04;\n          }" { (expression_statement "*(re_node_set **)(puVar31 + 0x10) = &eps_via_nodes;" (assignment_expression "*(re_node_set **)(puVar31 + 0x10) = &eps_via_nodes" (pointer_expression "*(re_node_set **)(puVar31 + 0x10)" * (cast_expression "(re_node_set **)(puVar31 + 0x10)" ( (type_descriptor "re_node_set **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + 0x10)" ( (binary_expression "puVar31 + 0x10" identifier + number_literal) )))) = (pointer_expression "&eps_via_nodes" & identifier)) ;) (expression_statement "prVar23 = (re_match_context_t *)&idx;" (assignment_expression "prVar23 = (re_match_context_t *)&idx" identifier = (cast_expression "(re_match_context_t *)&idx" ( (type_descriptor "re_match_context_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&idx" & identifier))) ;) (expression_statement "prVar24 = (re_dfa_t *)nmatch;" (assignment_expression "prVar24 = (re_dfa_t *)nmatch" identifier = (cast_expression "(re_dfa_t *)nmatch" ( (type_descriptor "re_dfa_t *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "prVar25 = pmatch;" (assignment_expression "prVar25 = pmatch" identifier = identifier) ;) (expression_statement "unaff_s0 = (re_match_context_t *)(*pcVar5)(unaff_s5);" (assignment_expression "unaff_s0 = (re_match_context_t *)(*pcVar5)(unaff_s5)" identifier = (cast_expression "(re_match_context_t *)(*pcVar5)(unaff_s5)" ( (type_descriptor "re_match_context_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*pcVar5)(unaff_s5)" (parenthesized_expression "(*pcVar5)" ( (pointer_expression "*pcVar5" * identifier) )) (argument_list "(unaff_s5)" ( identifier ))))) ;) (goto_statement "goto LAB_00021d04;" goto statement_identifier ;) })) })) (expression_statement "(*(code *)PTR_free_0003e354)(eps_via_nodes.elems);" (call_expression "(*(code *)PTR_free_0003e354)(eps_via_nodes.elems)" (parenthesized_expression "(*(code *)PTR_free_0003e354)" ( (pointer_expression "*(code *)PTR_free_0003e354" * (cast_expression "(code *)PTR_free_0003e354" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(eps_via_nodes.elems)" ( (field_expression "eps_via_nodes.elems" identifier . field_identifier) ))) ;) (if_statement "if (bVar1) {\n          (*(code *)PTR_free_0003e354)(local_70);\n        }" if (parenthesized_expression "(bVar1)" ( identifier )) (compound_statement "{\n          (*(code *)PTR_free_0003e354)(local_70);\n        }" { (expression_statement "(*(code *)PTR_free_0003e354)(local_70);" (call_expression "(*(code *)PTR_free_0003e354)(local_70)" (parenthesized_expression "(*(code *)PTR_free_0003e354)" ( (pointer_expression "*(code *)PTR_free_0003e354" * (cast_expression "(code *)PTR_free_0003e354" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(local_70)" ( identifier ))) ;) })) (expression_statement "rVar15 = free_fail_stack_return(unaff_s5);" (assignment_expression "rVar15 = free_fail_stack_return(unaff_s5)" identifier = (call_expression "free_fail_stack_return(unaff_s5)" identifier (argument_list "(unaff_s5)" ( identifier )))) ;) }))) (goto_statement "goto LAB_00021ed8;" goto statement_identifier ;) })) (labeled_statement "LAB_00021d04:\n    unaff_s2 = mctx->dfa;" statement_identifier : (expression_statement "unaff_s2 = mctx->dfa;" (assignment_expression "unaff_s2 = mctx->dfa" identifier = (field_expression "mctx->dfa" identifier -> field_identifier)) ;)) (expression_statement "unaff_s3 = (wint_t *)((int)unaff_s0 * 8);" (assignment_expression "unaff_s3 = (wint_t *)((int)unaff_s0 * 8)" identifier = (cast_expression "(wint_t *)((int)unaff_s0 * 8)" ( (type_descriptor "wint_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)unaff_s0 * 8)" ( (binary_expression "(int)unaff_s0 * 8" (cast_expression "(int)unaff_s0" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) )))) ;) (expression_statement "prVar14 = unaff_s2->nodes + (int)unaff_s0;" (assignment_expression "prVar14 = unaff_s2->nodes + (int)unaff_s0" identifier = (binary_expression "unaff_s2->nodes + (int)unaff_s0" (field_expression "unaff_s2->nodes" identifier -> field_identifier) + (cast_expression "(int)unaff_s0" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (if_statement "if ((prVar14->field_0x4 & 8) == 0) {\n      if ((*(uint *)&prVar14->field_0x4 & 0x800) == 0) {\n        if (prVar14->field_0x4 == 4) {\n          iVar20 = pmatch[(prVar14->opr).idx + 1].rm_eo;\n          iVar13 = pmatch[(prVar14->opr).idx + 1].rm_so;\n          unaff_s6 = (re_dfa_t *)(iVar20 - iVar13);\n          if (unaff_s5 == (re_fail_stack_t *)0x0) {\n            prVar23 = unaff_s0;\n            if (unaff_s6 != (re_dfa_t *)0x0) goto LAB_00021da8;\nLAB_00021dd0:\n            prVar23 = unaff_s0;\n            iVar13 = (*pcVar7)(&eps_via_nodes);\n            if (iVar13 == 0) goto LAB_00021b34;\n            prVar26 = (re_match_context_t *)*unaff_s2->edests[(int)unaff_s0].elems;\n            prVar23 = prVar26;\n            iVar13 = (*pcVar6)(&mctx->state_log[idx]->nodes);\n            if (iVar13 != 0) goto LAB_00021ca8;\n            goto LAB_00021c18;\n          }\n          if ((iVar13 != -1) && (iVar20 != -1)) {\n            if (unaff_s6 == (re_dfa_t *)0x0) goto LAB_00021dd0;\n            puVar22 = (mctx->input).mbs;\n            prVar23 = (re_match_context_t *)(puVar22 + idx);\n            prVar24 = unaff_s6;\n            iVar13 = (*(code *)PTR_memcmp_0003e338)(puVar22 + iVar13);\n            if (iVar13 == 0) goto LAB_00021da8;\n          }\n        }\n        else {\nLAB_00021c18:\n          unaff_s6 = (re_dfa_t *)idx;\n          prVar23 = (re_match_context_t *)(unaff_s2->nodes + (int)unaff_s0);\n          prVar24 = (re_dfa_t *)idx;\n          _Var17 = check_node_accept(mctx,(re_token_t *)prVar23,idx);\n          if (CONCAT31(extraout_var,_Var17) != 0) {\n            prVar26 = (re_match_context_t *)unaff_s2->nexts[(int)unaff_s0];\n            idx = (int)unaff_s6 + 1;\n            goto LAB_00021c5c;\n          }\n        }\n      }\n      else {\n        prVar23 = unaff_s0;\n        prVar24 = (re_dfa_t *)mctx;\n        prVar25 = (regmatch_t *)idx;\n        unaff_s6 = (re_dfa_t *)check_node_accept_bytes(unaff_s2,(Idx)unaff_s0,&mctx->input,idx);\n        if (unaff_s6 == (re_dfa_t *)0x0) goto LAB_00021c18;\nLAB_00021da8:\n        prVar26 = (re_match_context_t *)unaff_s2->nexts[(int)unaff_s0];\n        idx = (int)unaff_s6->word_char + idx + -0x60;\nLAB_00021c5c:\n        unaff_s6 = (re_dfa_t *)idx;\n        if (unaff_s5 == (re_fail_stack_t *)0x0) {\nLAB_00021ca4:\n          eps_via_nodes.nelem = 0;\n          goto LAB_00021ca8;\n        }\n        unaff_s6 = (re_dfa_t *)(idx * 4);\n        if (idx <= mctx->match_last) {\n          unaff_s6 = (re_dfa_t *)(mctx->state_log + idx);\n          puVar22 = ((re_string_t *)&unaff_s6->nodes)->raw_mbs;\n          prVar23 = prVar26;\n          if ((puVar22 != (uchar *)0x0) && (iVar13 = (*pcVar6)(puVar22 + 4), iVar13 != 0))\n          goto LAB_00021ca4;\n        }\n      }\nLAB_00021f3c:\n      unaff_s0 = (re_match_context_t *)0xffffffff;\n      goto LAB_00021f44;\n    }" if (parenthesized_expression "((prVar14->field_0x4 & 8) == 0)" ( (binary_expression "(prVar14->field_0x4 & 8) == 0" (parenthesized_expression "(prVar14->field_0x4 & 8)" ( (binary_expression "prVar14->field_0x4 & 8" (field_expression "prVar14->field_0x4" identifier -> field_identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n      if ((*(uint *)&prVar14->field_0x4 & 0x800) == 0) {\n        if (prVar14->field_0x4 == 4) {\n          iVar20 = pmatch[(prVar14->opr).idx + 1].rm_eo;\n          iVar13 = pmatch[(prVar14->opr).idx + 1].rm_so;\n          unaff_s6 = (re_dfa_t *)(iVar20 - iVar13);\n          if (unaff_s5 == (re_fail_stack_t *)0x0) {\n            prVar23 = unaff_s0;\n            if (unaff_s6 != (re_dfa_t *)0x0) goto LAB_00021da8;\nLAB_00021dd0:\n            prVar23 = unaff_s0;\n            iVar13 = (*pcVar7)(&eps_via_nodes);\n            if (iVar13 == 0) goto LAB_00021b34;\n            prVar26 = (re_match_context_t *)*unaff_s2->edests[(int)unaff_s0].elems;\n            prVar23 = prVar26;\n            iVar13 = (*pcVar6)(&mctx->state_log[idx]->nodes);\n            if (iVar13 != 0) goto LAB_00021ca8;\n            goto LAB_00021c18;\n          }\n          if ((iVar13 != -1) && (iVar20 != -1)) {\n            if (unaff_s6 == (re_dfa_t *)0x0) goto LAB_00021dd0;\n            puVar22 = (mctx->input).mbs;\n            prVar23 = (re_match_context_t *)(puVar22 + idx);\n            prVar24 = unaff_s6;\n            iVar13 = (*(code *)PTR_memcmp_0003e338)(puVar22 + iVar13);\n            if (iVar13 == 0) goto LAB_00021da8;\n          }\n        }\n        else {\nLAB_00021c18:\n          unaff_s6 = (re_dfa_t *)idx;\n          prVar23 = (re_match_context_t *)(unaff_s2->nodes + (int)unaff_s0);\n          prVar24 = (re_dfa_t *)idx;\n          _Var17 = check_node_accept(mctx,(re_token_t *)prVar23,idx);\n          if (CONCAT31(extraout_var,_Var17) != 0) {\n            prVar26 = (re_match_context_t *)unaff_s2->nexts[(int)unaff_s0];\n            idx = (int)unaff_s6 + 1;\n            goto LAB_00021c5c;\n          }\n        }\n      }\n      else {\n        prVar23 = unaff_s0;\n        prVar24 = (re_dfa_t *)mctx;\n        prVar25 = (regmatch_t *)idx;\n        unaff_s6 = (re_dfa_t *)check_node_accept_bytes(unaff_s2,(Idx)unaff_s0,&mctx->input,idx);\n        if (unaff_s6 == (re_dfa_t *)0x0) goto LAB_00021c18;\nLAB_00021da8:\n        prVar26 = (re_match_context_t *)unaff_s2->nexts[(int)unaff_s0];\n        idx = (int)unaff_s6->word_char + idx + -0x60;\nLAB_00021c5c:\n        unaff_s6 = (re_dfa_t *)idx;\n        if (unaff_s5 == (re_fail_stack_t *)0x0) {\nLAB_00021ca4:\n          eps_via_nodes.nelem = 0;\n          goto LAB_00021ca8;\n        }\n        unaff_s6 = (re_dfa_t *)(idx * 4);\n        if (idx <= mctx->match_last) {\n          unaff_s6 = (re_dfa_t *)(mctx->state_log + idx);\n          puVar22 = ((re_string_t *)&unaff_s6->nodes)->raw_mbs;\n          prVar23 = prVar26;\n          if ((puVar22 != (uchar *)0x0) && (iVar13 = (*pcVar6)(puVar22 + 4), iVar13 != 0))\n          goto LAB_00021ca4;\n        }\n      }\nLAB_00021f3c:\n      unaff_s0 = (re_match_context_t *)0xffffffff;\n      goto LAB_00021f44;\n    }" { (if_statement "if ((*(uint *)&prVar14->field_0x4 & 0x800) == 0) {\n        if (prVar14->field_0x4 == 4) {\n          iVar20 = pmatch[(prVar14->opr).idx + 1].rm_eo;\n          iVar13 = pmatch[(prVar14->opr).idx + 1].rm_so;\n          unaff_s6 = (re_dfa_t *)(iVar20 - iVar13);\n          if (unaff_s5 == (re_fail_stack_t *)0x0) {\n            prVar23 = unaff_s0;\n            if (unaff_s6 != (re_dfa_t *)0x0) goto LAB_00021da8;\nLAB_00021dd0:\n            prVar23 = unaff_s0;\n            iVar13 = (*pcVar7)(&eps_via_nodes);\n            if (iVar13 == 0) goto LAB_00021b34;\n            prVar26 = (re_match_context_t *)*unaff_s2->edests[(int)unaff_s0].elems;\n            prVar23 = prVar26;\n            iVar13 = (*pcVar6)(&mctx->state_log[idx]->nodes);\n            if (iVar13 != 0) goto LAB_00021ca8;\n            goto LAB_00021c18;\n          }\n          if ((iVar13 != -1) && (iVar20 != -1)) {\n            if (unaff_s6 == (re_dfa_t *)0x0) goto LAB_00021dd0;\n            puVar22 = (mctx->input).mbs;\n            prVar23 = (re_match_context_t *)(puVar22 + idx);\n            prVar24 = unaff_s6;\n            iVar13 = (*(code *)PTR_memcmp_0003e338)(puVar22 + iVar13);\n            if (iVar13 == 0) goto LAB_00021da8;\n          }\n        }\n        else {\nLAB_00021c18:\n          unaff_s6 = (re_dfa_t *)idx;\n          prVar23 = (re_match_context_t *)(unaff_s2->nodes + (int)unaff_s0);\n          prVar24 = (re_dfa_t *)idx;\n          _Var17 = check_node_accept(mctx,(re_token_t *)prVar23,idx);\n          if (CONCAT31(extraout_var,_Var17) != 0) {\n            prVar26 = (re_match_context_t *)unaff_s2->nexts[(int)unaff_s0];\n            idx = (int)unaff_s6 + 1;\n            goto LAB_00021c5c;\n          }\n        }\n      }\n      else {\n        prVar23 = unaff_s0;\n        prVar24 = (re_dfa_t *)mctx;\n        prVar25 = (regmatch_t *)idx;\n        unaff_s6 = (re_dfa_t *)check_node_accept_bytes(unaff_s2,(Idx)unaff_s0,&mctx->input,idx);\n        if (unaff_s6 == (re_dfa_t *)0x0) goto LAB_00021c18;\nLAB_00021da8:\n        prVar26 = (re_match_context_t *)unaff_s2->nexts[(int)unaff_s0];\n        idx = (int)unaff_s6->word_char + idx + -0x60;\nLAB_00021c5c:\n        unaff_s6 = (re_dfa_t *)idx;\n        if (unaff_s5 == (re_fail_stack_t *)0x0) {\nLAB_00021ca4:\n          eps_via_nodes.nelem = 0;\n          goto LAB_00021ca8;\n        }\n        unaff_s6 = (re_dfa_t *)(idx * 4);\n        if (idx <= mctx->match_last) {\n          unaff_s6 = (re_dfa_t *)(mctx->state_log + idx);\n          puVar22 = ((re_string_t *)&unaff_s6->nodes)->raw_mbs;\n          prVar23 = prVar26;\n          if ((puVar22 != (uchar *)0x0) && (iVar13 = (*pcVar6)(puVar22 + 4), iVar13 != 0))\n          goto LAB_00021ca4;\n        }\n      }" if (parenthesized_expression "((*(uint *)&prVar14->field_0x4 & 0x800) == 0)" ( (binary_expression "(*(uint *)&prVar14->field_0x4 & 0x800) == 0" (parenthesized_expression "(*(uint *)&prVar14->field_0x4 & 0x800)" ( (binary_expression "*(uint *)&prVar14->field_0x4 & 0x800" (pointer_expression "*(uint *)&prVar14->field_0x4" * (cast_expression "(uint *)&prVar14->field_0x4" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&prVar14->field_0x4" & (field_expression "prVar14->field_0x4" identifier -> field_identifier)))) & number_literal) )) == number_literal) )) (compound_statement "{\n        if (prVar14->field_0x4 == 4) {\n          iVar20 = pmatch[(prVar14->opr).idx + 1].rm_eo;\n          iVar13 = pmatch[(prVar14->opr).idx + 1].rm_so;\n          unaff_s6 = (re_dfa_t *)(iVar20 - iVar13);\n          if (unaff_s5 == (re_fail_stack_t *)0x0) {\n            prVar23 = unaff_s0;\n            if (unaff_s6 != (re_dfa_t *)0x0) goto LAB_00021da8;\nLAB_00021dd0:\n            prVar23 = unaff_s0;\n            iVar13 = (*pcVar7)(&eps_via_nodes);\n            if (iVar13 == 0) goto LAB_00021b34;\n            prVar26 = (re_match_context_t *)*unaff_s2->edests[(int)unaff_s0].elems;\n            prVar23 = prVar26;\n            iVar13 = (*pcVar6)(&mctx->state_log[idx]->nodes);\n            if (iVar13 != 0) goto LAB_00021ca8;\n            goto LAB_00021c18;\n          }\n          if ((iVar13 != -1) && (iVar20 != -1)) {\n            if (unaff_s6 == (re_dfa_t *)0x0) goto LAB_00021dd0;\n            puVar22 = (mctx->input).mbs;\n            prVar23 = (re_match_context_t *)(puVar22 + idx);\n            prVar24 = unaff_s6;\n            iVar13 = (*(code *)PTR_memcmp_0003e338)(puVar22 + iVar13);\n            if (iVar13 == 0) goto LAB_00021da8;\n          }\n        }\n        else {\nLAB_00021c18:\n          unaff_s6 = (re_dfa_t *)idx;\n          prVar23 = (re_match_context_t *)(unaff_s2->nodes + (int)unaff_s0);\n          prVar24 = (re_dfa_t *)idx;\n          _Var17 = check_node_accept(mctx,(re_token_t *)prVar23,idx);\n          if (CONCAT31(extraout_var,_Var17) != 0) {\n            prVar26 = (re_match_context_t *)unaff_s2->nexts[(int)unaff_s0];\n            idx = (int)unaff_s6 + 1;\n            goto LAB_00021c5c;\n          }\n        }\n      }" { (if_statement "if (prVar14->field_0x4 == 4) {\n          iVar20 = pmatch[(prVar14->opr).idx + 1].rm_eo;\n          iVar13 = pmatch[(prVar14->opr).idx + 1].rm_so;\n          unaff_s6 = (re_dfa_t *)(iVar20 - iVar13);\n          if (unaff_s5 == (re_fail_stack_t *)0x0) {\n            prVar23 = unaff_s0;\n            if (unaff_s6 != (re_dfa_t *)0x0) goto LAB_00021da8;\nLAB_00021dd0:\n            prVar23 = unaff_s0;\n            iVar13 = (*pcVar7)(&eps_via_nodes);\n            if (iVar13 == 0) goto LAB_00021b34;\n            prVar26 = (re_match_context_t *)*unaff_s2->edests[(int)unaff_s0].elems;\n            prVar23 = prVar26;\n            iVar13 = (*pcVar6)(&mctx->state_log[idx]->nodes);\n            if (iVar13 != 0) goto LAB_00021ca8;\n            goto LAB_00021c18;\n          }\n          if ((iVar13 != -1) && (iVar20 != -1)) {\n            if (unaff_s6 == (re_dfa_t *)0x0) goto LAB_00021dd0;\n            puVar22 = (mctx->input).mbs;\n            prVar23 = (re_match_context_t *)(puVar22 + idx);\n            prVar24 = unaff_s6;\n            iVar13 = (*(code *)PTR_memcmp_0003e338)(puVar22 + iVar13);\n            if (iVar13 == 0) goto LAB_00021da8;\n          }\n        }\n        else {\nLAB_00021c18:\n          unaff_s6 = (re_dfa_t *)idx;\n          prVar23 = (re_match_context_t *)(unaff_s2->nodes + (int)unaff_s0);\n          prVar24 = (re_dfa_t *)idx;\n          _Var17 = check_node_accept(mctx,(re_token_t *)prVar23,idx);\n          if (CONCAT31(extraout_var,_Var17) != 0) {\n            prVar26 = (re_match_context_t *)unaff_s2->nexts[(int)unaff_s0];\n            idx = (int)unaff_s6 + 1;\n            goto LAB_00021c5c;\n          }\n        }" if (parenthesized_expression "(prVar14->field_0x4 == 4)" ( (binary_expression "prVar14->field_0x4 == 4" (field_expression "prVar14->field_0x4" identifier -> field_identifier) == number_literal) )) (compound_statement "{\n          iVar20 = pmatch[(prVar14->opr).idx + 1].rm_eo;\n          iVar13 = pmatch[(prVar14->opr).idx + 1].rm_so;\n          unaff_s6 = (re_dfa_t *)(iVar20 - iVar13);\n          if (unaff_s5 == (re_fail_stack_t *)0x0) {\n            prVar23 = unaff_s0;\n            if (unaff_s6 != (re_dfa_t *)0x0) goto LAB_00021da8;\nLAB_00021dd0:\n            prVar23 = unaff_s0;\n            iVar13 = (*pcVar7)(&eps_via_nodes);\n            if (iVar13 == 0) goto LAB_00021b34;\n            prVar26 = (re_match_context_t *)*unaff_s2->edests[(int)unaff_s0].elems;\n            prVar23 = prVar26;\n            iVar13 = (*pcVar6)(&mctx->state_log[idx]->nodes);\n            if (iVar13 != 0) goto LAB_00021ca8;\n            goto LAB_00021c18;\n          }\n          if ((iVar13 != -1) && (iVar20 != -1)) {\n            if (unaff_s6 == (re_dfa_t *)0x0) goto LAB_00021dd0;\n            puVar22 = (mctx->input).mbs;\n            prVar23 = (re_match_context_t *)(puVar22 + idx);\n            prVar24 = unaff_s6;\n            iVar13 = (*(code *)PTR_memcmp_0003e338)(puVar22 + iVar13);\n            if (iVar13 == 0) goto LAB_00021da8;\n          }\n        }" { (expression_statement "iVar20 = pmatch[(prVar14->opr).idx + 1].rm_eo;" (assignment_expression "iVar20 = pmatch[(prVar14->opr).idx + 1].rm_eo" identifier = (field_expression "pmatch[(prVar14->opr).idx + 1].rm_eo" (subscript_expression "pmatch[(prVar14->opr).idx + 1]" identifier [ (binary_expression "(prVar14->opr).idx + 1" (field_expression "(prVar14->opr).idx" (parenthesized_expression "(prVar14->opr)" ( (field_expression "prVar14->opr" identifier -> field_identifier) )) . field_identifier) + number_literal) ]) . field_identifier)) ;) (expression_statement "iVar13 = pmatch[(prVar14->opr).idx + 1].rm_so;" (assignment_expression "iVar13 = pmatch[(prVar14->opr).idx + 1].rm_so" identifier = (field_expression "pmatch[(prVar14->opr).idx + 1].rm_so" (subscript_expression "pmatch[(prVar14->opr).idx + 1]" identifier [ (binary_expression "(prVar14->opr).idx + 1" (field_expression "(prVar14->opr).idx" (parenthesized_expression "(prVar14->opr)" ( (field_expression "prVar14->opr" identifier -> field_identifier) )) . field_identifier) + number_literal) ]) . field_identifier)) ;) (expression_statement "unaff_s6 = (re_dfa_t *)(iVar20 - iVar13);" (assignment_expression "unaff_s6 = (re_dfa_t *)(iVar20 - iVar13)" identifier = (cast_expression "(re_dfa_t *)(iVar20 - iVar13)" ( (type_descriptor "re_dfa_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar20 - iVar13)" ( (binary_expression "iVar20 - iVar13" identifier - identifier) )))) ;) (if_statement "if (unaff_s5 == (re_fail_stack_t *)0x0) {\n            prVar23 = unaff_s0;\n            if (unaff_s6 != (re_dfa_t *)0x0) goto LAB_00021da8;\nLAB_00021dd0:\n            prVar23 = unaff_s0;\n            iVar13 = (*pcVar7)(&eps_via_nodes);\n            if (iVar13 == 0) goto LAB_00021b34;\n            prVar26 = (re_match_context_t *)*unaff_s2->edests[(int)unaff_s0].elems;\n            prVar23 = prVar26;\n            iVar13 = (*pcVar6)(&mctx->state_log[idx]->nodes);\n            if (iVar13 != 0) goto LAB_00021ca8;\n            goto LAB_00021c18;\n          }" if (parenthesized_expression "(unaff_s5 == (re_fail_stack_t *)0x0)" ( (binary_expression "unaff_s5 == (re_fail_stack_t *)0x0" identifier == (cast_expression "(re_fail_stack_t *)0x0" ( (type_descriptor "re_fail_stack_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            prVar23 = unaff_s0;\n            if (unaff_s6 != (re_dfa_t *)0x0) goto LAB_00021da8;\nLAB_00021dd0:\n            prVar23 = unaff_s0;\n            iVar13 = (*pcVar7)(&eps_via_nodes);\n            if (iVar13 == 0) goto LAB_00021b34;\n            prVar26 = (re_match_context_t *)*unaff_s2->edests[(int)unaff_s0].elems;\n            prVar23 = prVar26;\n            iVar13 = (*pcVar6)(&mctx->state_log[idx]->nodes);\n            if (iVar13 != 0) goto LAB_00021ca8;\n            goto LAB_00021c18;\n          }" { (expression_statement "prVar23 = unaff_s0;" (assignment_expression "prVar23 = unaff_s0" identifier = identifier) ;) (if_statement "if (unaff_s6 != (re_dfa_t *)0x0) goto LAB_00021da8;" if (parenthesized_expression "(unaff_s6 != (re_dfa_t *)0x0)" ( (binary_expression "unaff_s6 != (re_dfa_t *)0x0" identifier != (cast_expression "(re_dfa_t *)0x0" ( (type_descriptor "re_dfa_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00021da8;" goto statement_identifier ;)) (labeled_statement "LAB_00021dd0:\n            prVar23 = unaff_s0;" statement_identifier : (expression_statement "prVar23 = unaff_s0;" (assignment_expression "prVar23 = unaff_s0" identifier = identifier) ;)) (expression_statement "iVar13 = (*pcVar7)(&eps_via_nodes);" (assignment_expression "iVar13 = (*pcVar7)(&eps_via_nodes)" identifier = (call_expression "(*pcVar7)(&eps_via_nodes)" (parenthesized_expression "(*pcVar7)" ( (pointer_expression "*pcVar7" * identifier) )) (argument_list "(&eps_via_nodes)" ( (pointer_expression "&eps_via_nodes" & identifier) )))) ;) (if_statement "if (iVar13 == 0) goto LAB_00021b34;" if (parenthesized_expression "(iVar13 == 0)" ( (binary_expression "iVar13 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00021b34;" goto statement_identifier ;)) (expression_statement "prVar26 = (re_match_context_t *)*unaff_s2->edests[(int)unaff_s0].elems;" (assignment_expression "prVar26 = (re_match_context_t *)*unaff_s2->edests[(int)unaff_s0].elems" identifier = (cast_expression "(re_match_context_t *)*unaff_s2->edests[(int)unaff_s0].elems" ( (type_descriptor "re_match_context_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*unaff_s2->edests[(int)unaff_s0].elems" * (field_expression "unaff_s2->edests[(int)unaff_s0].elems" (subscript_expression "unaff_s2->edests[(int)unaff_s0]" (field_expression "unaff_s2->edests" identifier -> field_identifier) [ (cast_expression "(int)unaff_s0" ( (type_descriptor "int" primitive_type) ) identifier) ]) . field_identifier)))) ;) (expression_statement "prVar23 = prVar26;" (assignment_expression "prVar23 = prVar26" identifier = identifier) ;) (expression_statement "iVar13 = (*pcVar6)(&mctx->state_log[idx]->nodes);" (assignment_expression "iVar13 = (*pcVar6)(&mctx->state_log[idx]->nodes)" identifier = (call_expression "(*pcVar6)(&mctx->state_log[idx]->nodes)" (parenthesized_expression "(*pcVar6)" ( (pointer_expression "*pcVar6" * identifier) )) (argument_list "(&mctx->state_log[idx]->nodes)" ( (pointer_expression "&mctx->state_log[idx]->nodes" & (field_expression "mctx->state_log[idx]->nodes" (subscript_expression "mctx->state_log[idx]" (field_expression "mctx->state_log" identifier -> field_identifier) [ identifier ]) -> field_identifier)) )))) ;) (if_statement "if (iVar13 != 0) goto LAB_00021ca8;" if (parenthesized_expression "(iVar13 != 0)" ( (binary_expression "iVar13 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00021ca8;" goto statement_identifier ;)) (goto_statement "goto LAB_00021c18;" goto statement_identifier ;) })) (if_statement "if ((iVar13 != -1) && (iVar20 != -1)) {\n            if (unaff_s6 == (re_dfa_t *)0x0) goto LAB_00021dd0;\n            puVar22 = (mctx->input).mbs;\n            prVar23 = (re_match_context_t *)(puVar22 + idx);\n            prVar24 = unaff_s6;\n            iVar13 = (*(code *)PTR_memcmp_0003e338)(puVar22 + iVar13);\n            if (iVar13 == 0) goto LAB_00021da8;\n          }" if (parenthesized_expression "((iVar13 != -1) && (iVar20 != -1))" ( (binary_expression "(iVar13 != -1) && (iVar20 != -1)" (parenthesized_expression "(iVar13 != -1)" ( (binary_expression "iVar13 != -1" identifier != number_literal) )) && (parenthesized_expression "(iVar20 != -1)" ( (binary_expression "iVar20 != -1" identifier != number_literal) ))) )) (compound_statement "{\n            if (unaff_s6 == (re_dfa_t *)0x0) goto LAB_00021dd0;\n            puVar22 = (mctx->input).mbs;\n            prVar23 = (re_match_context_t *)(puVar22 + idx);\n            prVar24 = unaff_s6;\n            iVar13 = (*(code *)PTR_memcmp_0003e338)(puVar22 + iVar13);\n            if (iVar13 == 0) goto LAB_00021da8;\n          }" { (if_statement "if (unaff_s6 == (re_dfa_t *)0x0) goto LAB_00021dd0;" if (parenthesized_expression "(unaff_s6 == (re_dfa_t *)0x0)" ( (binary_expression "unaff_s6 == (re_dfa_t *)0x0" identifier == (cast_expression "(re_dfa_t *)0x0" ( (type_descriptor "re_dfa_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00021dd0;" goto statement_identifier ;)) (expression_statement "puVar22 = (mctx->input).mbs;" (assignment_expression "puVar22 = (mctx->input).mbs" identifier = (field_expression "(mctx->input).mbs" (parenthesized_expression "(mctx->input)" ( (field_expression "mctx->input" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "prVar23 = (re_match_context_t *)(puVar22 + idx);" (assignment_expression "prVar23 = (re_match_context_t *)(puVar22 + idx)" identifier = (cast_expression "(re_match_context_t *)(puVar22 + idx)" ( (type_descriptor "re_match_context_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar22 + idx)" ( (binary_expression "puVar22 + idx" identifier + identifier) )))) ;) (expression_statement "prVar24 = unaff_s6;" (assignment_expression "prVar24 = unaff_s6" identifier = identifier) ;) (expression_statement "iVar13 = (*(code *)PTR_memcmp_0003e338)(puVar22 + iVar13);" (assignment_expression "iVar13 = (*(code *)PTR_memcmp_0003e338)(puVar22 + iVar13)" identifier = (call_expression "(*(code *)PTR_memcmp_0003e338)(puVar22 + iVar13)" (parenthesized_expression "(*(code *)PTR_memcmp_0003e338)" ( (pointer_expression "*(code *)PTR_memcmp_0003e338" * (cast_expression "(code *)PTR_memcmp_0003e338" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(puVar22 + iVar13)" ( (binary_expression "puVar22 + iVar13" identifier + identifier) )))) ;) (if_statement "if (iVar13 == 0) goto LAB_00021da8;" if (parenthesized_expression "(iVar13 == 0)" ( (binary_expression "iVar13 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00021da8;" goto statement_identifier ;)) })) }) (else_clause "else {\nLAB_00021c18:\n          unaff_s6 = (re_dfa_t *)idx;\n          prVar23 = (re_match_context_t *)(unaff_s2->nodes + (int)unaff_s0);\n          prVar24 = (re_dfa_t *)idx;\n          _Var17 = check_node_accept(mctx,(re_token_t *)prVar23,idx);\n          if (CONCAT31(extraout_var,_Var17) != 0) {\n            prVar26 = (re_match_context_t *)unaff_s2->nexts[(int)unaff_s0];\n            idx = (int)unaff_s6 + 1;\n            goto LAB_00021c5c;\n          }\n        }" else (compound_statement "{\nLAB_00021c18:\n          unaff_s6 = (re_dfa_t *)idx;\n          prVar23 = (re_match_context_t *)(unaff_s2->nodes + (int)unaff_s0);\n          prVar24 = (re_dfa_t *)idx;\n          _Var17 = check_node_accept(mctx,(re_token_t *)prVar23,idx);\n          if (CONCAT31(extraout_var,_Var17) != 0) {\n            prVar26 = (re_match_context_t *)unaff_s2->nexts[(int)unaff_s0];\n            idx = (int)unaff_s6 + 1;\n            goto LAB_00021c5c;\n          }\n        }" { (labeled_statement "LAB_00021c18:\n          unaff_s6 = (re_dfa_t *)idx;" statement_identifier : (expression_statement "unaff_s6 = (re_dfa_t *)idx;" (assignment_expression "unaff_s6 = (re_dfa_t *)idx" identifier = (cast_expression "(re_dfa_t *)idx" ( (type_descriptor "re_dfa_t *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;)) (expression_statement "prVar23 = (re_match_context_t *)(unaff_s2->nodes + (int)unaff_s0);" (assignment_expression "prVar23 = (re_match_context_t *)(unaff_s2->nodes + (int)unaff_s0)" identifier = (cast_expression "(re_match_context_t *)(unaff_s2->nodes + (int)unaff_s0)" ( (type_descriptor "re_match_context_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_s2->nodes + (int)unaff_s0)" ( (binary_expression "unaff_s2->nodes + (int)unaff_s0" (field_expression "unaff_s2->nodes" identifier -> field_identifier) + (cast_expression "(int)unaff_s0" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "prVar24 = (re_dfa_t *)idx;" (assignment_expression "prVar24 = (re_dfa_t *)idx" identifier = (cast_expression "(re_dfa_t *)idx" ( (type_descriptor "re_dfa_t *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "_Var17 = check_node_accept(mctx,(re_token_t *)prVar23,idx);" (assignment_expression "_Var17 = check_node_accept(mctx,(re_token_t *)prVar23,idx)" identifier = (call_expression "check_node_accept(mctx,(re_token_t *)prVar23,idx)" identifier (argument_list "(mctx,(re_token_t *)prVar23,idx)" ( identifier , (cast_expression "(re_token_t *)prVar23" ( (type_descriptor "re_token_t *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , identifier )))) ;) (if_statement "if (CONCAT31(extraout_var,_Var17) != 0) {\n            prVar26 = (re_match_context_t *)unaff_s2->nexts[(int)unaff_s0];\n            idx = (int)unaff_s6 + 1;\n            goto LAB_00021c5c;\n          }" if (parenthesized_expression "(CONCAT31(extraout_var,_Var17) != 0)" ( (binary_expression "CONCAT31(extraout_var,_Var17) != 0" (call_expression "CONCAT31(extraout_var,_Var17)" identifier (argument_list "(extraout_var,_Var17)" ( identifier , identifier ))) != number_literal) )) (compound_statement "{\n            prVar26 = (re_match_context_t *)unaff_s2->nexts[(int)unaff_s0];\n            idx = (int)unaff_s6 + 1;\n            goto LAB_00021c5c;\n          }" { (expression_statement "prVar26 = (re_match_context_t *)unaff_s2->nexts[(int)unaff_s0];" (assignment_expression "prVar26 = (re_match_context_t *)unaff_s2->nexts[(int)unaff_s0]" identifier = (cast_expression "(re_match_context_t *)unaff_s2->nexts[(int)unaff_s0]" ( (type_descriptor "re_match_context_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "unaff_s2->nexts[(int)unaff_s0]" (field_expression "unaff_s2->nexts" identifier -> field_identifier) [ (cast_expression "(int)unaff_s0" ( (type_descriptor "int" primitive_type) ) identifier) ]))) ;) (expression_statement "idx = (int)unaff_s6 + 1;" (assignment_expression "idx = (int)unaff_s6 + 1" identifier = (binary_expression "(int)unaff_s6 + 1" (cast_expression "(int)unaff_s6" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal)) ;) (goto_statement "goto LAB_00021c5c;" goto statement_identifier ;) })) }))) }) (else_clause "else {\n        prVar23 = unaff_s0;\n        prVar24 = (re_dfa_t *)mctx;\n        prVar25 = (regmatch_t *)idx;\n        unaff_s6 = (re_dfa_t *)check_node_accept_bytes(unaff_s2,(Idx)unaff_s0,&mctx->input,idx);\n        if (unaff_s6 == (re_dfa_t *)0x0) goto LAB_00021c18;\nLAB_00021da8:\n        prVar26 = (re_match_context_t *)unaff_s2->nexts[(int)unaff_s0];\n        idx = (int)unaff_s6->word_char + idx + -0x60;\nLAB_00021c5c:\n        unaff_s6 = (re_dfa_t *)idx;\n        if (unaff_s5 == (re_fail_stack_t *)0x0) {\nLAB_00021ca4:\n          eps_via_nodes.nelem = 0;\n          goto LAB_00021ca8;\n        }\n        unaff_s6 = (re_dfa_t *)(idx * 4);\n        if (idx <= mctx->match_last) {\n          unaff_s6 = (re_dfa_t *)(mctx->state_log + idx);\n          puVar22 = ((re_string_t *)&unaff_s6->nodes)->raw_mbs;\n          prVar23 = prVar26;\n          if ((puVar22 != (uchar *)0x0) && (iVar13 = (*pcVar6)(puVar22 + 4), iVar13 != 0))\n          goto LAB_00021ca4;\n        }\n      }" else (compound_statement "{\n        prVar23 = unaff_s0;\n        prVar24 = (re_dfa_t *)mctx;\n        prVar25 = (regmatch_t *)idx;\n        unaff_s6 = (re_dfa_t *)check_node_accept_bytes(unaff_s2,(Idx)unaff_s0,&mctx->input,idx);\n        if (unaff_s6 == (re_dfa_t *)0x0) goto LAB_00021c18;\nLAB_00021da8:\n        prVar26 = (re_match_context_t *)unaff_s2->nexts[(int)unaff_s0];\n        idx = (int)unaff_s6->word_char + idx + -0x60;\nLAB_00021c5c:\n        unaff_s6 = (re_dfa_t *)idx;\n        if (unaff_s5 == (re_fail_stack_t *)0x0) {\nLAB_00021ca4:\n          eps_via_nodes.nelem = 0;\n          goto LAB_00021ca8;\n        }\n        unaff_s6 = (re_dfa_t *)(idx * 4);\n        if (idx <= mctx->match_last) {\n          unaff_s6 = (re_dfa_t *)(mctx->state_log + idx);\n          puVar22 = ((re_string_t *)&unaff_s6->nodes)->raw_mbs;\n          prVar23 = prVar26;\n          if ((puVar22 != (uchar *)0x0) && (iVar13 = (*pcVar6)(puVar22 + 4), iVar13 != 0))\n          goto LAB_00021ca4;\n        }\n      }" { (expression_statement "prVar23 = unaff_s0;" (assignment_expression "prVar23 = unaff_s0" identifier = identifier) ;) (expression_statement "prVar24 = (re_dfa_t *)mctx;" (assignment_expression "prVar24 = (re_dfa_t *)mctx" identifier = (cast_expression "(re_dfa_t *)mctx" ( (type_descriptor "re_dfa_t *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "prVar25 = (regmatch_t *)idx;" (assignment_expression "prVar25 = (regmatch_t *)idx" identifier = (cast_expression "(regmatch_t *)idx" ( (type_descriptor "regmatch_t *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "unaff_s6 = (re_dfa_t *)check_node_accept_bytes(unaff_s2,(Idx)unaff_s0,&mctx->input,idx);" (assignment_expression "unaff_s6 = (re_dfa_t *)check_node_accept_bytes(unaff_s2,(Idx)unaff_s0,&mctx->input,idx)" identifier = (cast_expression "(re_dfa_t *)check_node_accept_bytes(unaff_s2,(Idx)unaff_s0,&mctx->input,idx)" ( (type_descriptor "re_dfa_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "check_node_accept_bytes(unaff_s2,(Idx)unaff_s0,&mctx->input,idx)" identifier (argument_list "(unaff_s2,(Idx)unaff_s0,&mctx->input,idx)" ( identifier , (cast_expression "(Idx)unaff_s0" ( (type_descriptor "Idx" type_identifier) ) identifier) , (pointer_expression "&mctx->input" & (field_expression "mctx->input" identifier -> field_identifier)) , identifier ))))) ;) (if_statement "if (unaff_s6 == (re_dfa_t *)0x0) goto LAB_00021c18;" if (parenthesized_expression "(unaff_s6 == (re_dfa_t *)0x0)" ( (binary_expression "unaff_s6 == (re_dfa_t *)0x0" identifier == (cast_expression "(re_dfa_t *)0x0" ( (type_descriptor "re_dfa_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00021c18;" goto statement_identifier ;)) (labeled_statement "LAB_00021da8:\n        prVar26 = (re_match_context_t *)unaff_s2->nexts[(int)unaff_s0];" statement_identifier : (expression_statement "prVar26 = (re_match_context_t *)unaff_s2->nexts[(int)unaff_s0];" (assignment_expression "prVar26 = (re_match_context_t *)unaff_s2->nexts[(int)unaff_s0]" identifier = (cast_expression "(re_match_context_t *)unaff_s2->nexts[(int)unaff_s0]" ( (type_descriptor "re_match_context_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "unaff_s2->nexts[(int)unaff_s0]" (field_expression "unaff_s2->nexts" identifier -> field_identifier) [ (cast_expression "(int)unaff_s0" ( (type_descriptor "int" primitive_type) ) identifier) ]))) ;)) (expression_statement "idx = (int)unaff_s6->word_char + idx + -0x60;" (assignment_expression "idx = (int)unaff_s6->word_char + idx + -0x60" identifier = (binary_expression "(int)unaff_s6->word_char + idx + -0x60" (binary_expression "(int)unaff_s6->word_char + idx" (cast_expression "(int)unaff_s6->word_char" ( (type_descriptor "int" primitive_type) ) (field_expression "unaff_s6->word_char" identifier -> field_identifier)) + identifier) + number_literal)) ;) (labeled_statement "LAB_00021c5c:\n        unaff_s6 = (re_dfa_t *)idx;" statement_identifier : (expression_statement "unaff_s6 = (re_dfa_t *)idx;" (assignment_expression "unaff_s6 = (re_dfa_t *)idx" identifier = (cast_expression "(re_dfa_t *)idx" ( (type_descriptor "re_dfa_t *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;)) (if_statement "if (unaff_s5 == (re_fail_stack_t *)0x0) {\nLAB_00021ca4:\n          eps_via_nodes.nelem = 0;\n          goto LAB_00021ca8;\n        }" if (parenthesized_expression "(unaff_s5 == (re_fail_stack_t *)0x0)" ( (binary_expression "unaff_s5 == (re_fail_stack_t *)0x0" identifier == (cast_expression "(re_fail_stack_t *)0x0" ( (type_descriptor "re_fail_stack_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_00021ca4:\n          eps_via_nodes.nelem = 0;\n          goto LAB_00021ca8;\n        }" { (labeled_statement "LAB_00021ca4:\n          eps_via_nodes.nelem = 0;" statement_identifier : (expression_statement "eps_via_nodes.nelem = 0;" (assignment_expression "eps_via_nodes.nelem = 0" (field_expression "eps_via_nodes.nelem" identifier . field_identifier) = number_literal) ;)) (goto_statement "goto LAB_00021ca8;" goto statement_identifier ;) })) (expression_statement "unaff_s6 = (re_dfa_t *)(idx * 4);" (assignment_expression "unaff_s6 = (re_dfa_t *)(idx * 4)" identifier = (cast_expression "(re_dfa_t *)(idx * 4)" ( (type_descriptor "re_dfa_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(idx * 4)" ( (binary_expression "idx * 4" identifier * number_literal) )))) ;) (if_statement "if (idx <= mctx->match_last) {\n          unaff_s6 = (re_dfa_t *)(mctx->state_log + idx);\n          puVar22 = ((re_string_t *)&unaff_s6->nodes)->raw_mbs;\n          prVar23 = prVar26;\n          if ((puVar22 != (uchar *)0x0) && (iVar13 = (*pcVar6)(puVar22 + 4), iVar13 != 0))\n          goto LAB_00021ca4;\n        }" if (parenthesized_expression "(idx <= mctx->match_last)" ( (binary_expression "idx <= mctx->match_last" identifier <= (field_expression "mctx->match_last" identifier -> field_identifier)) )) (compound_statement "{\n          unaff_s6 = (re_dfa_t *)(mctx->state_log + idx);\n          puVar22 = ((re_string_t *)&unaff_s6->nodes)->raw_mbs;\n          prVar23 = prVar26;\n          if ((puVar22 != (uchar *)0x0) && (iVar13 = (*pcVar6)(puVar22 + 4), iVar13 != 0))\n          goto LAB_00021ca4;\n        }" { (expression_statement "unaff_s6 = (re_dfa_t *)(mctx->state_log + idx);" (assignment_expression "unaff_s6 = (re_dfa_t *)(mctx->state_log + idx)" identifier = (cast_expression "(re_dfa_t *)(mctx->state_log + idx)" ( (type_descriptor "re_dfa_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(mctx->state_log + idx)" ( (binary_expression "mctx->state_log + idx" (field_expression "mctx->state_log" identifier -> field_identifier) + identifier) )))) ;) (expression_statement "puVar22 = ((re_string_t *)&unaff_s6->nodes)->raw_mbs;" (assignment_expression "puVar22 = ((re_string_t *)&unaff_s6->nodes)->raw_mbs" identifier = (field_expression "((re_string_t *)&unaff_s6->nodes)->raw_mbs" (parenthesized_expression "((re_string_t *)&unaff_s6->nodes)" ( (cast_expression "(re_string_t *)&unaff_s6->nodes" ( (type_descriptor "re_string_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&unaff_s6->nodes" & (field_expression "unaff_s6->nodes" identifier -> field_identifier))) )) -> field_identifier)) ;) (expression_statement "prVar23 = prVar26;" (assignment_expression "prVar23 = prVar26" identifier = identifier) ;) (if_statement "if ((puVar22 != (uchar *)0x0) && (iVar13 = (*pcVar6)(puVar22 + 4), iVar13 != 0))\n          goto LAB_00021ca4;" if (parenthesized_expression "((puVar22 != (uchar *)0x0) && (iVar13 = (*pcVar6)(puVar22 + 4), iVar13 != 0))" ( (binary_expression "(puVar22 != (uchar *)0x0) && (iVar13 = (*pcVar6)(puVar22 + 4), iVar13 != 0)" (parenthesized_expression "(puVar22 != (uchar *)0x0)" ( (binary_expression "puVar22 != (uchar *)0x0" identifier != (cast_expression "(uchar *)0x0" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(iVar13 = (*pcVar6)(puVar22 + 4), iVar13 != 0)" ( (comma_expression "iVar13 = (*pcVar6)(puVar22 + 4), iVar13 != 0" (assignment_expression "iVar13 = (*pcVar6)(puVar22 + 4)" identifier = (call_expression "(*pcVar6)(puVar22 + 4)" (parenthesized_expression "(*pcVar6)" ( (pointer_expression "*pcVar6" * identifier) )) (argument_list "(puVar22 + 4)" ( (binary_expression "puVar22 + 4" identifier + number_literal) )))) , (binary_expression "iVar13 != 0" identifier != number_literal)) ))) )) (goto_statement "goto LAB_00021ca4;" goto statement_identifier ;)) })) }))) (labeled_statement "LAB_00021f3c:\n      unaff_s0 = (re_match_context_t *)0xffffffff;" statement_identifier : (expression_statement "unaff_s0 = (re_match_context_t *)0xffffffff;" (assignment_expression "unaff_s0 = (re_match_context_t *)0xffffffff" identifier = (cast_expression "(re_match_context_t *)0xffffffff" ( (type_descriptor "re_match_context_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;)) (goto_statement "goto LAB_00021f44;" goto statement_identifier ;) })) (expression_statement "prVar9 = mctx->state_log[idx];" (assignment_expression "prVar9 = mctx->state_log[idx]" identifier = (subscript_expression "mctx->state_log[idx]" (field_expression "mctx->state_log" identifier -> field_identifier) [ identifier ])) ;) (expression_statement "unaff_s2 = (re_dfa_t *)(unaff_s2->edests + (int)unaff_s0);" (assignment_expression "unaff_s2 = (re_dfa_t *)(unaff_s2->edests + (int)unaff_s0)" identifier = (cast_expression "(re_dfa_t *)(unaff_s2->edests + (int)unaff_s0)" ( (type_descriptor "re_dfa_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_s2->edests + (int)unaff_s0)" ( (binary_expression "unaff_s2->edests + (int)unaff_s0" (field_expression "unaff_s2->edests" identifier -> field_identifier) + (cast_expression "(int)unaff_s0" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "prVar23 = unaff_s0;" (assignment_expression "prVar23 = unaff_s0" identifier = identifier) ;) (expression_statement "iVar13 = (*pcVar7)(&eps_via_nodes);" (assignment_expression "iVar13 = (*pcVar7)(&eps_via_nodes)" identifier = (call_expression "(*pcVar7)(&eps_via_nodes)" (parenthesized_expression "(*pcVar7)" ( (pointer_expression "*pcVar7" * identifier) )) (argument_list "(&eps_via_nodes)" ( (pointer_expression "&eps_via_nodes" & identifier) )))) ;) (if_statement "if (iVar13 == 0) goto LAB_00021b34;" if (parenthesized_expression "(iVar13 == 0)" ( (binary_expression "iVar13 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00021b34;" goto statement_identifier ;)) (expression_statement "unaff_s6 = (re_dfa_t *)unaff_s2->nodes_alloc;" (assignment_expression "unaff_s6 = (re_dfa_t *)unaff_s2->nodes_alloc" identifier = (cast_expression "(re_dfa_t *)unaff_s2->nodes_alloc" ( (type_descriptor "re_dfa_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "unaff_s2->nodes_alloc" identifier -> field_identifier))) ;) (if_statement "if ((int)unaff_s6 < 1) goto LAB_00021f3c;" if (parenthesized_expression "((int)unaff_s6 < 1)" ( (binary_expression "(int)unaff_s6 < 1" (cast_expression "(int)unaff_s6" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (goto_statement "goto LAB_00021f3c;" goto statement_identifier ;)) (expression_statement "unaff_s3 = (wint_t *)unaff_s2->nodes_len;" (assignment_expression "unaff_s3 = (wint_t *)unaff_s2->nodes_len" identifier = (cast_expression "(wint_t *)unaff_s2->nodes_len" ( (type_descriptor "wint_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "unaff_s2->nodes_len" identifier -> field_identifier))) ;) (expression_statement "unaff_s2 = (re_dfa_t *)0x0;" (assignment_expression "unaff_s2 = (re_dfa_t *)0x0" identifier = (cast_expression "(re_dfa_t *)0x0" ( (type_descriptor "re_dfa_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "unaff_s0 = (re_match_context_t *)0xffffffff;" (assignment_expression "unaff_s0 = (re_match_context_t *)0xffffffff" identifier = (cast_expression "(re_match_context_t *)0xffffffff" ( (type_descriptor "re_match_context_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (do_statement "do {\n      prVar12 = (re_match_context_t *)*unaff_s3;\n      prVar23 = prVar12;\n      iVar13 = (*pcVar6)(&prVar9->nodes);\n      prVar26 = unaff_s0;\n      if ((iVar13 != 0) &&\n         (prVar23 = unaff_s0, prVar26 = prVar12, unaff_s0 != (re_match_context_t *)0xffffffff)) {\n        iVar13 = (*pcVar6)(&eps_via_nodes);\n        IVar4 = idx;\n        if ((iVar13 == 0) &&\n           (prVar26 = unaff_s0, unaff_s6 = (re_dfa_t *)idx, unaff_s5 != (re_fail_stack_t *)0x0)) {\n          prVar28 = (re_dfa_t *)unaff_s5->num;\n          prVar26 = (re_match_context_t *)((int)&((re_string_t *)&prVar28->nodes)->raw_mbs + 1);\n          unaff_s5->num = (Idx)prVar26;\n          prVar23 = (re_match_context_t *)unaff_s5->alloc;\n          if (prVar26 == prVar23) {\n            prVar23 = (re_match_context_t *)((int)prVar23 * 0x30);\n            prVar11 = (re_fail_stack_ent_t *)(*(code *)PTR_realloc_0003e2fc)(unaff_s5->stack);\n            unaff_s2 = prVar28;\n            unaff_s6 = (re_dfa_t *)IVar4;\n            if (prVar11 == (re_fail_stack_ent_t *)0x0) goto LAB_00021b34;\n            unaff_s5->alloc = unaff_s5->alloc << 1;\n            unaff_s5->stack = prVar11;\n          }\n          unaff_s3 = (wint_t *)((int)prVar28 * 0x18);\n          unaff_s5->stack[(int)prVar28].idx = IVar4;\n          unaff_s5->stack[(int)prVar28].node = (Idx)prVar12;\n          unaff_s2 = (re_dfa_t *)(unaff_s5->stack + (int)prVar28);\n          pwVar10 = (wint_t *)(*(code *)PTR_malloc_0003e2f8)(prVar19);\n          unaff_s2->nodes_len = (size_t)pwVar10;\n          prVar21 = unaff_s5->stack[(int)prVar28].regs;\n          prVar24 = prVar19;\n          unaff_s6 = prVar19;\n          if (prVar21 == (regmatch_t *)0x0) goto LAB_00021b34;\n          (*(code *)PTR_memcpy_0003e34c)(prVar21,pmatch);\n          prVar23 = (re_match_context_t *)&eps_via_nodes;\n          rVar15 = re_node_set_init_copy\n                             (&unaff_s5->stack[(int)prVar28].eps_via_nodes,(re_node_set *)prVar23);\n          prVar26 = unaff_s0;\n          if (rVar15 != _REG_NOERROR) goto LAB_00021b34;\n        }\n        break;\n      }\n      unaff_s2 = (re_dfa_t *)((int)&((re_string_t *)&unaff_s2->nodes)->raw_mbs + 1);\n      unaff_s3 = unaff_s3 + 1;\n      unaff_s0 = prVar26;\n    } while (unaff_s6 != unaff_s2);" do (compound_statement "{\n      prVar12 = (re_match_context_t *)*unaff_s3;\n      prVar23 = prVar12;\n      iVar13 = (*pcVar6)(&prVar9->nodes);\n      prVar26 = unaff_s0;\n      if ((iVar13 != 0) &&\n         (prVar23 = unaff_s0, prVar26 = prVar12, unaff_s0 != (re_match_context_t *)0xffffffff)) {\n        iVar13 = (*pcVar6)(&eps_via_nodes);\n        IVar4 = idx;\n        if ((iVar13 == 0) &&\n           (prVar26 = unaff_s0, unaff_s6 = (re_dfa_t *)idx, unaff_s5 != (re_fail_stack_t *)0x0)) {\n          prVar28 = (re_dfa_t *)unaff_s5->num;\n          prVar26 = (re_match_context_t *)((int)&((re_string_t *)&prVar28->nodes)->raw_mbs + 1);\n          unaff_s5->num = (Idx)prVar26;\n          prVar23 = (re_match_context_t *)unaff_s5->alloc;\n          if (prVar26 == prVar23) {\n            prVar23 = (re_match_context_t *)((int)prVar23 * 0x30);\n            prVar11 = (re_fail_stack_ent_t *)(*(code *)PTR_realloc_0003e2fc)(unaff_s5->stack);\n            unaff_s2 = prVar28;\n            unaff_s6 = (re_dfa_t *)IVar4;\n            if (prVar11 == (re_fail_stack_ent_t *)0x0) goto LAB_00021b34;\n            unaff_s5->alloc = unaff_s5->alloc << 1;\n            unaff_s5->stack = prVar11;\n          }\n          unaff_s3 = (wint_t *)((int)prVar28 * 0x18);\n          unaff_s5->stack[(int)prVar28].idx = IVar4;\n          unaff_s5->stack[(int)prVar28].node = (Idx)prVar12;\n          unaff_s2 = (re_dfa_t *)(unaff_s5->stack + (int)prVar28);\n          pwVar10 = (wint_t *)(*(code *)PTR_malloc_0003e2f8)(prVar19);\n          unaff_s2->nodes_len = (size_t)pwVar10;\n          prVar21 = unaff_s5->stack[(int)prVar28].regs;\n          prVar24 = prVar19;\n          unaff_s6 = prVar19;\n          if (prVar21 == (regmatch_t *)0x0) goto LAB_00021b34;\n          (*(code *)PTR_memcpy_0003e34c)(prVar21,pmatch);\n          prVar23 = (re_match_context_t *)&eps_via_nodes;\n          rVar15 = re_node_set_init_copy\n                             (&unaff_s5->stack[(int)prVar28].eps_via_nodes,(re_node_set *)prVar23);\n          prVar26 = unaff_s0;\n          if (rVar15 != _REG_NOERROR) goto LAB_00021b34;\n        }\n        break;\n      }\n      unaff_s2 = (re_dfa_t *)((int)&((re_string_t *)&unaff_s2->nodes)->raw_mbs + 1);\n      unaff_s3 = unaff_s3 + 1;\n      unaff_s0 = prVar26;\n    }" { (expression_statement "prVar12 = (re_match_context_t *)*unaff_s3;" (assignment_expression "prVar12 = (re_match_context_t *)*unaff_s3" identifier = (cast_expression "(re_match_context_t *)*unaff_s3" ( (type_descriptor "re_match_context_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*unaff_s3" * identifier))) ;) (expression_statement "prVar23 = prVar12;" (assignment_expression "prVar23 = prVar12" identifier = identifier) ;) (expression_statement "iVar13 = (*pcVar6)(&prVar9->nodes);" (assignment_expression "iVar13 = (*pcVar6)(&prVar9->nodes)" identifier = (call_expression "(*pcVar6)(&prVar9->nodes)" (parenthesized_expression "(*pcVar6)" ( (pointer_expression "*pcVar6" * identifier) )) (argument_list "(&prVar9->nodes)" ( (pointer_expression "&prVar9->nodes" & (field_expression "prVar9->nodes" identifier -> field_identifier)) )))) ;) (expression_statement "prVar26 = unaff_s0;" (assignment_expression "prVar26 = unaff_s0" identifier = identifier) ;) (if_statement "if ((iVar13 != 0) &&\n         (prVar23 = unaff_s0, prVar26 = prVar12, unaff_s0 != (re_match_context_t *)0xffffffff)) {\n        iVar13 = (*pcVar6)(&eps_via_nodes);\n        IVar4 = idx;\n        if ((iVar13 == 0) &&\n           (prVar26 = unaff_s0, unaff_s6 = (re_dfa_t *)idx, unaff_s5 != (re_fail_stack_t *)0x0)) {\n          prVar28 = (re_dfa_t *)unaff_s5->num;\n          prVar26 = (re_match_context_t *)((int)&((re_string_t *)&prVar28->nodes)->raw_mbs + 1);\n          unaff_s5->num = (Idx)prVar26;\n          prVar23 = (re_match_context_t *)unaff_s5->alloc;\n          if (prVar26 == prVar23) {\n            prVar23 = (re_match_context_t *)((int)prVar23 * 0x30);\n            prVar11 = (re_fail_stack_ent_t *)(*(code *)PTR_realloc_0003e2fc)(unaff_s5->stack);\n            unaff_s2 = prVar28;\n            unaff_s6 = (re_dfa_t *)IVar4;\n            if (prVar11 == (re_fail_stack_ent_t *)0x0) goto LAB_00021b34;\n            unaff_s5->alloc = unaff_s5->alloc << 1;\n            unaff_s5->stack = prVar11;\n          }\n          unaff_s3 = (wint_t *)((int)prVar28 * 0x18);\n          unaff_s5->stack[(int)prVar28].idx = IVar4;\n          unaff_s5->stack[(int)prVar28].node = (Idx)prVar12;\n          unaff_s2 = (re_dfa_t *)(unaff_s5->stack + (int)prVar28);\n          pwVar10 = (wint_t *)(*(code *)PTR_malloc_0003e2f8)(prVar19);\n          unaff_s2->nodes_len = (size_t)pwVar10;\n          prVar21 = unaff_s5->stack[(int)prVar28].regs;\n          prVar24 = prVar19;\n          unaff_s6 = prVar19;\n          if (prVar21 == (regmatch_t *)0x0) goto LAB_00021b34;\n          (*(code *)PTR_memcpy_0003e34c)(prVar21,pmatch);\n          prVar23 = (re_match_context_t *)&eps_via_nodes;\n          rVar15 = re_node_set_init_copy\n                             (&unaff_s5->stack[(int)prVar28].eps_via_nodes,(re_node_set *)prVar23);\n          prVar26 = unaff_s0;\n          if (rVar15 != _REG_NOERROR) goto LAB_00021b34;\n        }\n        break;\n      }" if (parenthesized_expression "((iVar13 != 0) &&\n         (prVar23 = unaff_s0, prVar26 = prVar12, unaff_s0 != (re_match_context_t *)0xffffffff))" ( (binary_expression "(iVar13 != 0) &&\n         (prVar23 = unaff_s0, prVar26 = prVar12, unaff_s0 != (re_match_context_t *)0xffffffff)" (parenthesized_expression "(iVar13 != 0)" ( (binary_expression "iVar13 != 0" identifier != number_literal) )) && (parenthesized_expression "(prVar23 = unaff_s0, prVar26 = prVar12, unaff_s0 != (re_match_context_t *)0xffffffff)" ( (comma_expression "prVar23 = unaff_s0, prVar26 = prVar12, unaff_s0 != (re_match_context_t *)0xffffffff" (assignment_expression "prVar23 = unaff_s0" identifier = identifier) , (comma_expression "prVar26 = prVar12, unaff_s0 != (re_match_context_t *)0xffffffff" (assignment_expression "prVar26 = prVar12" identifier = identifier) , (binary_expression "unaff_s0 != (re_match_context_t *)0xffffffff" identifier != (cast_expression "(re_match_context_t *)0xffffffff" ( (type_descriptor "re_match_context_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)))) ))) )) (compound_statement "{\n        iVar13 = (*pcVar6)(&eps_via_nodes);\n        IVar4 = idx;\n        if ((iVar13 == 0) &&\n           (prVar26 = unaff_s0, unaff_s6 = (re_dfa_t *)idx, unaff_s5 != (re_fail_stack_t *)0x0)) {\n          prVar28 = (re_dfa_t *)unaff_s5->num;\n          prVar26 = (re_match_context_t *)((int)&((re_string_t *)&prVar28->nodes)->raw_mbs + 1);\n          unaff_s5->num = (Idx)prVar26;\n          prVar23 = (re_match_context_t *)unaff_s5->alloc;\n          if (prVar26 == prVar23) {\n            prVar23 = (re_match_context_t *)((int)prVar23 * 0x30);\n            prVar11 = (re_fail_stack_ent_t *)(*(code *)PTR_realloc_0003e2fc)(unaff_s5->stack);\n            unaff_s2 = prVar28;\n            unaff_s6 = (re_dfa_t *)IVar4;\n            if (prVar11 == (re_fail_stack_ent_t *)0x0) goto LAB_00021b34;\n            unaff_s5->alloc = unaff_s5->alloc << 1;\n            unaff_s5->stack = prVar11;\n          }\n          unaff_s3 = (wint_t *)((int)prVar28 * 0x18);\n          unaff_s5->stack[(int)prVar28].idx = IVar4;\n          unaff_s5->stack[(int)prVar28].node = (Idx)prVar12;\n          unaff_s2 = (re_dfa_t *)(unaff_s5->stack + (int)prVar28);\n          pwVar10 = (wint_t *)(*(code *)PTR_malloc_0003e2f8)(prVar19);\n          unaff_s2->nodes_len = (size_t)pwVar10;\n          prVar21 = unaff_s5->stack[(int)prVar28].regs;\n          prVar24 = prVar19;\n          unaff_s6 = prVar19;\n          if (prVar21 == (regmatch_t *)0x0) goto LAB_00021b34;\n          (*(code *)PTR_memcpy_0003e34c)(prVar21,pmatch);\n          prVar23 = (re_match_context_t *)&eps_via_nodes;\n          rVar15 = re_node_set_init_copy\n                             (&unaff_s5->stack[(int)prVar28].eps_via_nodes,(re_node_set *)prVar23);\n          prVar26 = unaff_s0;\n          if (rVar15 != _REG_NOERROR) goto LAB_00021b34;\n        }\n        break;\n      }" { (expression_statement "iVar13 = (*pcVar6)(&eps_via_nodes);" (assignment_expression "iVar13 = (*pcVar6)(&eps_via_nodes)" identifier = (call_expression "(*pcVar6)(&eps_via_nodes)" (parenthesized_expression "(*pcVar6)" ( (pointer_expression "*pcVar6" * identifier) )) (argument_list "(&eps_via_nodes)" ( (pointer_expression "&eps_via_nodes" & identifier) )))) ;) (expression_statement "IVar4 = idx;" (assignment_expression "IVar4 = idx" identifier = identifier) ;) (if_statement "if ((iVar13 == 0) &&\n           (prVar26 = unaff_s0, unaff_s6 = (re_dfa_t *)idx, unaff_s5 != (re_fail_stack_t *)0x0)) {\n          prVar28 = (re_dfa_t *)unaff_s5->num;\n          prVar26 = (re_match_context_t *)((int)&((re_string_t *)&prVar28->nodes)->raw_mbs + 1);\n          unaff_s5->num = (Idx)prVar26;\n          prVar23 = (re_match_context_t *)unaff_s5->alloc;\n          if (prVar26 == prVar23) {\n            prVar23 = (re_match_context_t *)((int)prVar23 * 0x30);\n            prVar11 = (re_fail_stack_ent_t *)(*(code *)PTR_realloc_0003e2fc)(unaff_s5->stack);\n            unaff_s2 = prVar28;\n            unaff_s6 = (re_dfa_t *)IVar4;\n            if (prVar11 == (re_fail_stack_ent_t *)0x0) goto LAB_00021b34;\n            unaff_s5->alloc = unaff_s5->alloc << 1;\n            unaff_s5->stack = prVar11;\n          }\n          unaff_s3 = (wint_t *)((int)prVar28 * 0x18);\n          unaff_s5->stack[(int)prVar28].idx = IVar4;\n          unaff_s5->stack[(int)prVar28].node = (Idx)prVar12;\n          unaff_s2 = (re_dfa_t *)(unaff_s5->stack + (int)prVar28);\n          pwVar10 = (wint_t *)(*(code *)PTR_malloc_0003e2f8)(prVar19);\n          unaff_s2->nodes_len = (size_t)pwVar10;\n          prVar21 = unaff_s5->stack[(int)prVar28].regs;\n          prVar24 = prVar19;\n          unaff_s6 = prVar19;\n          if (prVar21 == (regmatch_t *)0x0) goto LAB_00021b34;\n          (*(code *)PTR_memcpy_0003e34c)(prVar21,pmatch);\n          prVar23 = (re_match_context_t *)&eps_via_nodes;\n          rVar15 = re_node_set_init_copy\n                             (&unaff_s5->stack[(int)prVar28].eps_via_nodes,(re_node_set *)prVar23);\n          prVar26 = unaff_s0;\n          if (rVar15 != _REG_NOERROR) goto LAB_00021b34;\n        }" if (parenthesized_expression "((iVar13 == 0) &&\n           (prVar26 = unaff_s0, unaff_s6 = (re_dfa_t *)idx, unaff_s5 != (re_fail_stack_t *)0x0))" ( (binary_expression "(iVar13 == 0) &&\n           (prVar26 = unaff_s0, unaff_s6 = (re_dfa_t *)idx, unaff_s5 != (re_fail_stack_t *)0x0)" (parenthesized_expression "(iVar13 == 0)" ( (binary_expression "iVar13 == 0" identifier == number_literal) )) && (parenthesized_expression "(prVar26 = unaff_s0, unaff_s6 = (re_dfa_t *)idx, unaff_s5 != (re_fail_stack_t *)0x0)" ( (comma_expression "prVar26 = unaff_s0, unaff_s6 = (re_dfa_t *)idx, unaff_s5 != (re_fail_stack_t *)0x0" (assignment_expression "prVar26 = unaff_s0" identifier = identifier) , (comma_expression "unaff_s6 = (re_dfa_t *)idx, unaff_s5 != (re_fail_stack_t *)0x0" (assignment_expression "unaff_s6 = (re_dfa_t *)idx" identifier = (cast_expression "(re_dfa_t *)idx" ( (type_descriptor "re_dfa_t *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) , (binary_expression "unaff_s5 != (re_fail_stack_t *)0x0" identifier != (cast_expression "(re_fail_stack_t *)0x0" ( (type_descriptor "re_fail_stack_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)))) ))) )) (compound_statement "{\n          prVar28 = (re_dfa_t *)unaff_s5->num;\n          prVar26 = (re_match_context_t *)((int)&((re_string_t *)&prVar28->nodes)->raw_mbs + 1);\n          unaff_s5->num = (Idx)prVar26;\n          prVar23 = (re_match_context_t *)unaff_s5->alloc;\n          if (prVar26 == prVar23) {\n            prVar23 = (re_match_context_t *)((int)prVar23 * 0x30);\n            prVar11 = (re_fail_stack_ent_t *)(*(code *)PTR_realloc_0003e2fc)(unaff_s5->stack);\n            unaff_s2 = prVar28;\n            unaff_s6 = (re_dfa_t *)IVar4;\n            if (prVar11 == (re_fail_stack_ent_t *)0x0) goto LAB_00021b34;\n            unaff_s5->alloc = unaff_s5->alloc << 1;\n            unaff_s5->stack = prVar11;\n          }\n          unaff_s3 = (wint_t *)((int)prVar28 * 0x18);\n          unaff_s5->stack[(int)prVar28].idx = IVar4;\n          unaff_s5->stack[(int)prVar28].node = (Idx)prVar12;\n          unaff_s2 = (re_dfa_t *)(unaff_s5->stack + (int)prVar28);\n          pwVar10 = (wint_t *)(*(code *)PTR_malloc_0003e2f8)(prVar19);\n          unaff_s2->nodes_len = (size_t)pwVar10;\n          prVar21 = unaff_s5->stack[(int)prVar28].regs;\n          prVar24 = prVar19;\n          unaff_s6 = prVar19;\n          if (prVar21 == (regmatch_t *)0x0) goto LAB_00021b34;\n          (*(code *)PTR_memcpy_0003e34c)(prVar21,pmatch);\n          prVar23 = (re_match_context_t *)&eps_via_nodes;\n          rVar15 = re_node_set_init_copy\n                             (&unaff_s5->stack[(int)prVar28].eps_via_nodes,(re_node_set *)prVar23);\n          prVar26 = unaff_s0;\n          if (rVar15 != _REG_NOERROR) goto LAB_00021b34;\n        }" { (expression_statement "prVar28 = (re_dfa_t *)unaff_s5->num;" (assignment_expression "prVar28 = (re_dfa_t *)unaff_s5->num" identifier = (cast_expression "(re_dfa_t *)unaff_s5->num" ( (type_descriptor "re_dfa_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "unaff_s5->num" identifier -> field_identifier))) ;) (expression_statement "prVar26 = (re_match_context_t *)((int)&((re_string_t *)&prVar28->nodes)->raw_mbs + 1);" (assignment_expression "prVar26 = (re_match_context_t *)((int)&((re_string_t *)&prVar28->nodes)->raw_mbs + 1)" identifier = (cast_expression "(re_match_context_t *)((int)&((re_string_t *)&prVar28->nodes)->raw_mbs + 1)" ( (type_descriptor "re_match_context_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&((re_string_t *)&prVar28->nodes)->raw_mbs + 1)" ( (binary_expression "(int)&((re_string_t *)&prVar28->nodes)->raw_mbs + 1" (cast_expression "(int)&((re_string_t *)&prVar28->nodes)->raw_mbs" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&((re_string_t *)&prVar28->nodes)->raw_mbs" & (field_expression "((re_string_t *)&prVar28->nodes)->raw_mbs" (parenthesized_expression "((re_string_t *)&prVar28->nodes)" ( (cast_expression "(re_string_t *)&prVar28->nodes" ( (type_descriptor "re_string_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&prVar28->nodes" & (field_expression "prVar28->nodes" identifier -> field_identifier))) )) -> field_identifier))) + number_literal) )))) ;) (expression_statement "unaff_s5->num = (Idx)prVar26;" (assignment_expression "unaff_s5->num = (Idx)prVar26" (field_expression "unaff_s5->num" identifier -> field_identifier) = (cast_expression "(Idx)prVar26" ( (type_descriptor "Idx" type_identifier) ) identifier)) ;) (expression_statement "prVar23 = (re_match_context_t *)unaff_s5->alloc;" (assignment_expression "prVar23 = (re_match_context_t *)unaff_s5->alloc" identifier = (cast_expression "(re_match_context_t *)unaff_s5->alloc" ( (type_descriptor "re_match_context_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "unaff_s5->alloc" identifier -> field_identifier))) ;) (if_statement "if (prVar26 == prVar23) {\n            prVar23 = (re_match_context_t *)((int)prVar23 * 0x30);\n            prVar11 = (re_fail_stack_ent_t *)(*(code *)PTR_realloc_0003e2fc)(unaff_s5->stack);\n            unaff_s2 = prVar28;\n            unaff_s6 = (re_dfa_t *)IVar4;\n            if (prVar11 == (re_fail_stack_ent_t *)0x0) goto LAB_00021b34;\n            unaff_s5->alloc = unaff_s5->alloc << 1;\n            unaff_s5->stack = prVar11;\n          }" if (parenthesized_expression "(prVar26 == prVar23)" ( (binary_expression "prVar26 == prVar23" identifier == identifier) )) (compound_statement "{\n            prVar23 = (re_match_context_t *)((int)prVar23 * 0x30);\n            prVar11 = (re_fail_stack_ent_t *)(*(code *)PTR_realloc_0003e2fc)(unaff_s5->stack);\n            unaff_s2 = prVar28;\n            unaff_s6 = (re_dfa_t *)IVar4;\n            if (prVar11 == (re_fail_stack_ent_t *)0x0) goto LAB_00021b34;\n            unaff_s5->alloc = unaff_s5->alloc << 1;\n            unaff_s5->stack = prVar11;\n          }" { (expression_statement "prVar23 = (re_match_context_t *)((int)prVar23 * 0x30);" (assignment_expression "prVar23 = (re_match_context_t *)((int)prVar23 * 0x30)" identifier = (cast_expression "(re_match_context_t *)((int)prVar23 * 0x30)" ( (type_descriptor "re_match_context_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)prVar23 * 0x30)" ( (binary_expression "(int)prVar23 * 0x30" (cast_expression "(int)prVar23" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) )))) ;) (expression_statement "prVar11 = (re_fail_stack_ent_t *)(*(code *)PTR_realloc_0003e2fc)(unaff_s5->stack);" (assignment_expression "prVar11 = (re_fail_stack_ent_t *)(*(code *)PTR_realloc_0003e2fc)(unaff_s5->stack)" identifier = (cast_expression "(re_fail_stack_ent_t *)(*(code *)PTR_realloc_0003e2fc)(unaff_s5->stack)" ( (type_descriptor "re_fail_stack_ent_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR_realloc_0003e2fc)(unaff_s5->stack)" (parenthesized_expression "(*(code *)PTR_realloc_0003e2fc)" ( (pointer_expression "*(code *)PTR_realloc_0003e2fc" * (cast_expression "(code *)PTR_realloc_0003e2fc" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(unaff_s5->stack)" ( (field_expression "unaff_s5->stack" identifier -> field_identifier) ))))) ;) (expression_statement "unaff_s2 = prVar28;" (assignment_expression "unaff_s2 = prVar28" identifier = identifier) ;) (expression_statement "unaff_s6 = (re_dfa_t *)IVar4;" (assignment_expression "unaff_s6 = (re_dfa_t *)IVar4" identifier = (cast_expression "(re_dfa_t *)IVar4" ( (type_descriptor "re_dfa_t *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (if_statement "if (prVar11 == (re_fail_stack_ent_t *)0x0) goto LAB_00021b34;" if (parenthesized_expression "(prVar11 == (re_fail_stack_ent_t *)0x0)" ( (binary_expression "prVar11 == (re_fail_stack_ent_t *)0x0" identifier == (cast_expression "(re_fail_stack_ent_t *)0x0" ( (type_descriptor "re_fail_stack_ent_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00021b34;" goto statement_identifier ;)) (expression_statement "unaff_s5->alloc = unaff_s5->alloc << 1;" (assignment_expression "unaff_s5->alloc = unaff_s5->alloc << 1" (field_expression "unaff_s5->alloc" identifier -> field_identifier) = (binary_expression "unaff_s5->alloc << 1" (field_expression "unaff_s5->alloc" identifier -> field_identifier) << number_literal)) ;) (expression_statement "unaff_s5->stack = prVar11;" (assignment_expression "unaff_s5->stack = prVar11" (field_expression "unaff_s5->stack" identifier -> field_identifier) = identifier) ;) })) (expression_statement "unaff_s3 = (wint_t *)((int)prVar28 * 0x18);" (assignment_expression "unaff_s3 = (wint_t *)((int)prVar28 * 0x18)" identifier = (cast_expression "(wint_t *)((int)prVar28 * 0x18)" ( (type_descriptor "wint_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)prVar28 * 0x18)" ( (binary_expression "(int)prVar28 * 0x18" (cast_expression "(int)prVar28" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) )))) ;) (expression_statement "unaff_s5->stack[(int)prVar28].idx = IVar4;" (assignment_expression "unaff_s5->stack[(int)prVar28].idx = IVar4" (field_expression "unaff_s5->stack[(int)prVar28].idx" (subscript_expression "unaff_s5->stack[(int)prVar28]" (field_expression "unaff_s5->stack" identifier -> field_identifier) [ (cast_expression "(int)prVar28" ( (type_descriptor "int" primitive_type) ) identifier) ]) . field_identifier) = identifier) ;) (expression_statement "unaff_s5->stack[(int)prVar28].node = (Idx)prVar12;" (assignment_expression "unaff_s5->stack[(int)prVar28].node = (Idx)prVar12" (field_expression "unaff_s5->stack[(int)prVar28].node" (subscript_expression "unaff_s5->stack[(int)prVar28]" (field_expression "unaff_s5->stack" identifier -> field_identifier) [ (cast_expression "(int)prVar28" ( (type_descriptor "int" primitive_type) ) identifier) ]) . field_identifier) = (cast_expression "(Idx)prVar12" ( (type_descriptor "Idx" type_identifier) ) identifier)) ;) (expression_statement "unaff_s2 = (re_dfa_t *)(unaff_s5->stack + (int)prVar28);" (assignment_expression "unaff_s2 = (re_dfa_t *)(unaff_s5->stack + (int)prVar28)" identifier = (cast_expression "(re_dfa_t *)(unaff_s5->stack + (int)prVar28)" ( (type_descriptor "re_dfa_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_s5->stack + (int)prVar28)" ( (binary_expression "unaff_s5->stack + (int)prVar28" (field_expression "unaff_s5->stack" identifier -> field_identifier) + (cast_expression "(int)prVar28" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "pwVar10 = (wint_t *)(*(code *)PTR_malloc_0003e2f8)(prVar19);" (assignment_expression "pwVar10 = (wint_t *)(*(code *)PTR_malloc_0003e2f8)(prVar19)" identifier = (cast_expression "(wint_t *)(*(code *)PTR_malloc_0003e2f8)(prVar19)" ( (type_descriptor "wint_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR_malloc_0003e2f8)(prVar19)" (parenthesized_expression "(*(code *)PTR_malloc_0003e2f8)" ( (pointer_expression "*(code *)PTR_malloc_0003e2f8" * (cast_expression "(code *)PTR_malloc_0003e2f8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(prVar19)" ( identifier ))))) ;) (expression_statement "unaff_s2->nodes_len = (size_t)pwVar10;" (assignment_expression "unaff_s2->nodes_len = (size_t)pwVar10" (field_expression "unaff_s2->nodes_len" identifier -> field_identifier) = (cast_expression "(size_t)pwVar10" ( (type_descriptor "size_t" primitive_type) ) identifier)) ;) (expression_statement "prVar21 = unaff_s5->stack[(int)prVar28].regs;" (assignment_expression "prVar21 = unaff_s5->stack[(int)prVar28].regs" identifier = (field_expression "unaff_s5->stack[(int)prVar28].regs" (subscript_expression "unaff_s5->stack[(int)prVar28]" (field_expression "unaff_s5->stack" identifier -> field_identifier) [ (cast_expression "(int)prVar28" ( (type_descriptor "int" primitive_type) ) identifier) ]) . field_identifier)) ;) (expression_statement "prVar24 = prVar19;" (assignment_expression "prVar24 = prVar19" identifier = identifier) ;) (expression_statement "unaff_s6 = prVar19;" (assignment_expression "unaff_s6 = prVar19" identifier = identifier) ;) (if_statement "if (prVar21 == (regmatch_t *)0x0) goto LAB_00021b34;" if (parenthesized_expression "(prVar21 == (regmatch_t *)0x0)" ( (binary_expression "prVar21 == (regmatch_t *)0x0" identifier == (cast_expression "(regmatch_t *)0x0" ( (type_descriptor "regmatch_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00021b34;" goto statement_identifier ;)) (expression_statement "(*(code *)PTR_memcpy_0003e34c)(prVar21,pmatch);" (call_expression "(*(code *)PTR_memcpy_0003e34c)(prVar21,pmatch)" (parenthesized_expression "(*(code *)PTR_memcpy_0003e34c)" ( (pointer_expression "*(code *)PTR_memcpy_0003e34c" * (cast_expression "(code *)PTR_memcpy_0003e34c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(prVar21,pmatch)" ( identifier , identifier ))) ;) (expression_statement "prVar23 = (re_match_context_t *)&eps_via_nodes;" (assignment_expression "prVar23 = (re_match_context_t *)&eps_via_nodes" identifier = (cast_expression "(re_match_context_t *)&eps_via_nodes" ( (type_descriptor "re_match_context_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&eps_via_nodes" & identifier))) ;) (expression_statement "rVar15 = re_node_set_init_copy\n                             (&unaff_s5->stack[(int)prVar28].eps_via_nodes,(re_node_set *)prVar23);" (assignment_expression "rVar15 = re_node_set_init_copy\n                             (&unaff_s5->stack[(int)prVar28].eps_via_nodes,(re_node_set *)prVar23)" identifier = (call_expression "re_node_set_init_copy\n                             (&unaff_s5->stack[(int)prVar28].eps_via_nodes,(re_node_set *)prVar23)" identifier (argument_list "(&unaff_s5->stack[(int)prVar28].eps_via_nodes,(re_node_set *)prVar23)" ( (pointer_expression "&unaff_s5->stack[(int)prVar28].eps_via_nodes" & (field_expression "unaff_s5->stack[(int)prVar28].eps_via_nodes" (subscript_expression "unaff_s5->stack[(int)prVar28]" (field_expression "unaff_s5->stack" identifier -> field_identifier) [ (cast_expression "(int)prVar28" ( (type_descriptor "int" primitive_type) ) identifier) ]) . field_identifier)) , (cast_expression "(re_node_set *)prVar23" ( (type_descriptor "re_node_set *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) )))) ;) (expression_statement "prVar26 = unaff_s0;" (assignment_expression "prVar26 = unaff_s0" identifier = identifier) ;) (if_statement "if (rVar15 != _REG_NOERROR) goto LAB_00021b34;" if (parenthesized_expression "(rVar15 != _REG_NOERROR)" ( (binary_expression "rVar15 != _REG_NOERROR" identifier != identifier) )) (goto_statement "goto LAB_00021b34;" goto statement_identifier ;)) })) (break_statement "break;" break ;) })) (expression_statement "unaff_s2 = (re_dfa_t *)((int)&((re_string_t *)&unaff_s2->nodes)->raw_mbs + 1);" (assignment_expression "unaff_s2 = (re_dfa_t *)((int)&((re_string_t *)&unaff_s2->nodes)->raw_mbs + 1)" identifier = (cast_expression "(re_dfa_t *)((int)&((re_string_t *)&unaff_s2->nodes)->raw_mbs + 1)" ( (type_descriptor "re_dfa_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&((re_string_t *)&unaff_s2->nodes)->raw_mbs + 1)" ( (binary_expression "(int)&((re_string_t *)&unaff_s2->nodes)->raw_mbs + 1" (cast_expression "(int)&((re_string_t *)&unaff_s2->nodes)->raw_mbs" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&((re_string_t *)&unaff_s2->nodes)->raw_mbs" & (field_expression "((re_string_t *)&unaff_s2->nodes)->raw_mbs" (parenthesized_expression "((re_string_t *)&unaff_s2->nodes)" ( (cast_expression "(re_string_t *)&unaff_s2->nodes" ( (type_descriptor "re_string_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&unaff_s2->nodes" & (field_expression "unaff_s2->nodes" identifier -> field_identifier))) )) -> field_identifier))) + number_literal) )))) ;) (expression_statement "unaff_s3 = unaff_s3 + 1;" (assignment_expression "unaff_s3 = unaff_s3 + 1" identifier = (binary_expression "unaff_s3 + 1" identifier + number_literal)) ;) (expression_statement "unaff_s0 = prVar26;" (assignment_expression "unaff_s0 = prVar26" identifier = identifier) ;) }) while (parenthesized_expression "(unaff_s6 != unaff_s2)" ( (binary_expression "unaff_s6 != unaff_s2" identifier != identifier) )) ;) (labeled_statement "LAB_00021ca8:\n    unaff_s0 = prVar26;" statement_identifier : (expression_statement "unaff_s0 = prVar26;" (assignment_expression "unaff_s0 = prVar26" identifier = identifier) ;)) (if_statement "if ((int)prVar26 < 0) {\nLAB_00021f44:\n      if (unaff_s0 == (re_match_context_t *)&SUB_fffffffe) {\nLAB_00021b34:\n        (*(code *)PTR_free_0003e354)(eps_via_nodes.elems);\n        if (bVar1) {\n          (*(code *)PTR_free_0003e354)(local_70);\n        }\n        free_fail_stack_return(unaff_s5);\n        rVar15 = _REG_ESPACE;\n        goto LAB_00021ed8;\n      }\n      if (unaff_s5 == (re_fail_stack_t *)0x0) {\n        (*(code *)PTR_free_0003e354)();\n        if (bVar1) {\n          (*(code *)PTR_free_0003e354)(local_70);\n          rVar15 = _REG_NOMATCH;\n        }\n        else {\n          rVar15 = _REG_NOMATCH;\n        }\n        goto LAB_00021ed8;\n      }\n      *(re_node_set **)(puVar31 + 0x10) = &eps_via_nodes;\n      prVar23 = (re_match_context_t *)&idx;\n      prVar24 = (re_dfa_t *)nmatch;\n      prVar25 = pmatch;\n      unaff_s0 = (re_match_context_t *)(*pcVar5)(unaff_s5);\n    }" if (parenthesized_expression "((int)prVar26 < 0)" ( (binary_expression "(int)prVar26 < 0" (cast_expression "(int)prVar26" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\nLAB_00021f44:\n      if (unaff_s0 == (re_match_context_t *)&SUB_fffffffe) {\nLAB_00021b34:\n        (*(code *)PTR_free_0003e354)(eps_via_nodes.elems);\n        if (bVar1) {\n          (*(code *)PTR_free_0003e354)(local_70);\n        }\n        free_fail_stack_return(unaff_s5);\n        rVar15 = _REG_ESPACE;\n        goto LAB_00021ed8;\n      }\n      if (unaff_s5 == (re_fail_stack_t *)0x0) {\n        (*(code *)PTR_free_0003e354)();\n        if (bVar1) {\n          (*(code *)PTR_free_0003e354)(local_70);\n          rVar15 = _REG_NOMATCH;\n        }\n        else {\n          rVar15 = _REG_NOMATCH;\n        }\n        goto LAB_00021ed8;\n      }\n      *(re_node_set **)(puVar31 + 0x10) = &eps_via_nodes;\n      prVar23 = (re_match_context_t *)&idx;\n      prVar24 = (re_dfa_t *)nmatch;\n      prVar25 = pmatch;\n      unaff_s0 = (re_match_context_t *)(*pcVar5)(unaff_s5);\n    }" { (labeled_statement "LAB_00021f44:\n      if (unaff_s0 == (re_match_context_t *)&SUB_fffffffe) {\nLAB_00021b34:\n        (*(code *)PTR_free_0003e354)(eps_via_nodes.elems);\n        if (bVar1) {\n          (*(code *)PTR_free_0003e354)(local_70);\n        }\n        free_fail_stack_return(unaff_s5);\n        rVar15 = _REG_ESPACE;\n        goto LAB_00021ed8;\n      }" statement_identifier : (if_statement "if (unaff_s0 == (re_match_context_t *)&SUB_fffffffe) {\nLAB_00021b34:\n        (*(code *)PTR_free_0003e354)(eps_via_nodes.elems);\n        if (bVar1) {\n          (*(code *)PTR_free_0003e354)(local_70);\n        }\n        free_fail_stack_return(unaff_s5);\n        rVar15 = _REG_ESPACE;\n        goto LAB_00021ed8;\n      }" if (parenthesized_expression "(unaff_s0 == (re_match_context_t *)&SUB_fffffffe)" ( (binary_expression "unaff_s0 == (re_match_context_t *)&SUB_fffffffe" identifier == (cast_expression "(re_match_context_t *)&SUB_fffffffe" ( (type_descriptor "re_match_context_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&SUB_fffffffe" & identifier))) )) (compound_statement "{\nLAB_00021b34:\n        (*(code *)PTR_free_0003e354)(eps_via_nodes.elems);\n        if (bVar1) {\n          (*(code *)PTR_free_0003e354)(local_70);\n        }\n        free_fail_stack_return(unaff_s5);\n        rVar15 = _REG_ESPACE;\n        goto LAB_00021ed8;\n      }" { (labeled_statement "LAB_00021b34:\n        (*(code *)PTR_free_0003e354)(eps_via_nodes.elems);" statement_identifier : (expression_statement "(*(code *)PTR_free_0003e354)(eps_via_nodes.elems);" (call_expression "(*(code *)PTR_free_0003e354)(eps_via_nodes.elems)" (parenthesized_expression "(*(code *)PTR_free_0003e354)" ( (pointer_expression "*(code *)PTR_free_0003e354" * (cast_expression "(code *)PTR_free_0003e354" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(eps_via_nodes.elems)" ( (field_expression "eps_via_nodes.elems" identifier . field_identifier) ))) ;)) (if_statement "if (bVar1) {\n          (*(code *)PTR_free_0003e354)(local_70);\n        }" if (parenthesized_expression "(bVar1)" ( identifier )) (compound_statement "{\n          (*(code *)PTR_free_0003e354)(local_70);\n        }" { (expression_statement "(*(code *)PTR_free_0003e354)(local_70);" (call_expression "(*(code *)PTR_free_0003e354)(local_70)" (parenthesized_expression "(*(code *)PTR_free_0003e354)" ( (pointer_expression "*(code *)PTR_free_0003e354" * (cast_expression "(code *)PTR_free_0003e354" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(local_70)" ( identifier ))) ;) })) (expression_statement "free_fail_stack_return(unaff_s5);" (call_expression "free_fail_stack_return(unaff_s5)" identifier (argument_list "(unaff_s5)" ( identifier ))) ;) (expression_statement "rVar15 = _REG_ESPACE;" (assignment_expression "rVar15 = _REG_ESPACE" identifier = identifier) ;) (goto_statement "goto LAB_00021ed8;" goto statement_identifier ;) }))) (if_statement "if (unaff_s5 == (re_fail_stack_t *)0x0) {\n        (*(code *)PTR_free_0003e354)();\n        if (bVar1) {\n          (*(code *)PTR_free_0003e354)(local_70);\n          rVar15 = _REG_NOMATCH;\n        }\n        else {\n          rVar15 = _REG_NOMATCH;\n        }\n        goto LAB_00021ed8;\n      }" if (parenthesized_expression "(unaff_s5 == (re_fail_stack_t *)0x0)" ( (binary_expression "unaff_s5 == (re_fail_stack_t *)0x0" identifier == (cast_expression "(re_fail_stack_t *)0x0" ( (type_descriptor "re_fail_stack_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        (*(code *)PTR_free_0003e354)();\n        if (bVar1) {\n          (*(code *)PTR_free_0003e354)(local_70);\n          rVar15 = _REG_NOMATCH;\n        }\n        else {\n          rVar15 = _REG_NOMATCH;\n        }\n        goto LAB_00021ed8;\n      }" { (expression_statement "(*(code *)PTR_free_0003e354)();" (call_expression "(*(code *)PTR_free_0003e354)()" (parenthesized_expression "(*(code *)PTR_free_0003e354)" ( (pointer_expression "*(code *)PTR_free_0003e354" * (cast_expression "(code *)PTR_free_0003e354" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (if_statement "if (bVar1) {\n          (*(code *)PTR_free_0003e354)(local_70);\n          rVar15 = _REG_NOMATCH;\n        }\n        else {\n          rVar15 = _REG_NOMATCH;\n        }" if (parenthesized_expression "(bVar1)" ( identifier )) (compound_statement "{\n          (*(code *)PTR_free_0003e354)(local_70);\n          rVar15 = _REG_NOMATCH;\n        }" { (expression_statement "(*(code *)PTR_free_0003e354)(local_70);" (call_expression "(*(code *)PTR_free_0003e354)(local_70)" (parenthesized_expression "(*(code *)PTR_free_0003e354)" ( (pointer_expression "*(code *)PTR_free_0003e354" * (cast_expression "(code *)PTR_free_0003e354" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(local_70)" ( identifier ))) ;) (expression_statement "rVar15 = _REG_NOMATCH;" (assignment_expression "rVar15 = _REG_NOMATCH" identifier = identifier) ;) }) (else_clause "else {\n          rVar15 = _REG_NOMATCH;\n        }" else (compound_statement "{\n          rVar15 = _REG_NOMATCH;\n        }" { (expression_statement "rVar15 = _REG_NOMATCH;" (assignment_expression "rVar15 = _REG_NOMATCH" identifier = identifier) ;) }))) (goto_statement "goto LAB_00021ed8;" goto statement_identifier ;) })) (expression_statement "*(re_node_set **)(puVar31 + 0x10) = &eps_via_nodes;" (assignment_expression "*(re_node_set **)(puVar31 + 0x10) = &eps_via_nodes" (pointer_expression "*(re_node_set **)(puVar31 + 0x10)" * (cast_expression "(re_node_set **)(puVar31 + 0x10)" ( (type_descriptor "re_node_set **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar31 + 0x10)" ( (binary_expression "puVar31 + 0x10" identifier + number_literal) )))) = (pointer_expression "&eps_via_nodes" & identifier)) ;) (expression_statement "prVar23 = (re_match_context_t *)&idx;" (assignment_expression "prVar23 = (re_match_context_t *)&idx" identifier = (cast_expression "(re_match_context_t *)&idx" ( (type_descriptor "re_match_context_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&idx" & identifier))) ;) (expression_statement "prVar24 = (re_dfa_t *)nmatch;" (assignment_expression "prVar24 = (re_dfa_t *)nmatch" identifier = (cast_expression "(re_dfa_t *)nmatch" ( (type_descriptor "re_dfa_t *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "prVar25 = pmatch;" (assignment_expression "prVar25 = pmatch" identifier = identifier) ;) (expression_statement "unaff_s0 = (re_match_context_t *)(*pcVar5)(unaff_s5);" (assignment_expression "unaff_s0 = (re_match_context_t *)(*pcVar5)(unaff_s5)" identifier = (cast_expression "(re_match_context_t *)(*pcVar5)(unaff_s5)" ( (type_descriptor "re_match_context_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*pcVar5)(unaff_s5)" (parenthesized_expression "(*pcVar5)" ( (pointer_expression "*pcVar5" * identifier) )) (argument_list "(unaff_s5)" ( identifier ))))) ;) })) })) (expression_statement "(*(code *)PTR_free_0003e354)(eps_via_nodes.elems);" (call_expression "(*(code *)PTR_free_0003e354)(eps_via_nodes.elems)" (parenthesized_expression "(*(code *)PTR_free_0003e354)" ( (pointer_expression "*(code *)PTR_free_0003e354" * (cast_expression "(code *)PTR_free_0003e354" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(eps_via_nodes.elems)" ( (field_expression "eps_via_nodes.elems" identifier . field_identifier) ))) ;) (if_statement "if (bVar1) {\n    (*(code *)PTR_free_0003e354)(local_70);\n  }" if (parenthesized_expression "(bVar1)" ( identifier )) (compound_statement "{\n    (*(code *)PTR_free_0003e354)(local_70);\n  }" { (expression_statement "(*(code *)PTR_free_0003e354)(local_70);" (call_expression "(*(code *)PTR_free_0003e354)(local_70)" (parenthesized_expression "(*(code *)PTR_free_0003e354)" ( (pointer_expression "*(code *)PTR_free_0003e354" * (cast_expression "(code *)PTR_free_0003e354" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(local_70)" ( identifier ))) ;) })) (expression_statement "rVar15 = free_fail_stack_return(unaff_s5);" (assignment_expression "rVar15 = free_fail_stack_return(unaff_s5)" identifier = (call_expression "free_fail_stack_return(unaff_s5)" identifier (argument_list "(unaff_s5)" ( identifier )))) ;) (labeled_statement "LAB_00021ed8:\n  if (iVar18 == *(int *)PTR___stack_chk_guard_0003e348) {\n    return rVar15;\n  }" statement_identifier : (if_statement "if (iVar18 == *(int *)PTR___stack_chk_guard_0003e348) {\n    return rVar15;\n  }" if (parenthesized_expression "(iVar18 == *(int *)PTR___stack_chk_guard_0003e348)" ( (binary_expression "iVar18 == *(int *)PTR___stack_chk_guard_0003e348" identifier == (pointer_expression "*(int *)PTR___stack_chk_guard_0003e348" * (cast_expression "(int *)PTR___stack_chk_guard_0003e348" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n    return rVar15;\n  }" { (return_statement "return rVar15;" return identifier ;) }))) (expression_statement "pcVar5 = parse_expression;" (assignment_expression "pcVar5 = parse_expression" identifier = identifier) ;) (expression_statement "puVar30 = PTR___stack_chk_fail_0003e32c;" (assignment_expression "puVar30 = PTR___stack_chk_fail_0003e32c" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_0003e32c)();" (call_expression "(*(code *)PTR___stack_chk_fail_0003e32c)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_0003e32c)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_0003e32c" * (cast_expression "(code *)PTR___stack_chk_fail_0003e32c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "*(code **)(puVar32 + -4) = pcVar5;" (assignment_expression "*(code **)(puVar32 + -4) = pcVar5" (pointer_expression "*(code **)(puVar32 + -4)" * (cast_expression "(code **)(puVar32 + -4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar32 + -4)" ( (binary_expression "puVar32 + -4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined1 **)(puVar32 + -8) = auStack_98;" (assignment_expression "*(undefined1 **)(puVar32 + -8) = auStack_98" (pointer_expression "*(undefined1 **)(puVar32 + -8)" * (cast_expression "(undefined1 **)(puVar32 + -8)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar32 + -8)" ( (binary_expression "puVar32 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(re_dfa_t **)(puVar32 + -0xc) = prVar29;" (assignment_expression "*(re_dfa_t **)(puVar32 + -0xc) = prVar29" (pointer_expression "*(re_dfa_t **)(puVar32 + -0xc)" * (cast_expression "(re_dfa_t **)(puVar32 + -0xc)" ( (type_descriptor "re_dfa_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar32 + -0xc)" ( (binary_expression "puVar32 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(re_dfa_t **)(puVar32 + -0x10) = unaff_s6;" (assignment_expression "*(re_dfa_t **)(puVar32 + -0x10) = unaff_s6" (pointer_expression "*(re_dfa_t **)(puVar32 + -0x10)" * (cast_expression "(re_dfa_t **)(puVar32 + -0x10)" ( (type_descriptor "re_dfa_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar32 + -0x10)" ( (binary_expression "puVar32 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(re_fail_stack_t **)(puVar32 + -0x14) = unaff_s5;" (assignment_expression "*(re_fail_stack_t **)(puVar32 + -0x14) = unaff_s5" (pointer_expression "*(re_fail_stack_t **)(puVar32 + -0x14)" * (cast_expression "(re_fail_stack_t **)(puVar32 + -0x14)" ( (type_descriptor "re_fail_stack_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar32 + -0x14)" ( (binary_expression "puVar32 + -0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(regmatch_t **)(puVar32 + -0x18) = pmatch;" (assignment_expression "*(regmatch_t **)(puVar32 + -0x18) = pmatch" (pointer_expression "*(regmatch_t **)(puVar32 + -0x18)" * (cast_expression "(regmatch_t **)(puVar32 + -0x18)" ( (type_descriptor "regmatch_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar32 + -0x18)" ( (binary_expression "puVar32 + -0x18" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(wint_t **)(puVar32 + -0x1c) = unaff_s3;" (assignment_expression "*(wint_t **)(puVar32 + -0x1c) = unaff_s3" (pointer_expression "*(wint_t **)(puVar32 + -0x1c)" * (cast_expression "(wint_t **)(puVar32 + -0x1c)" ( (type_descriptor "wint_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar32 + -0x1c)" ( (binary_expression "puVar32 + -0x1c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(re_dfa_t **)(puVar32 + -0x20) = unaff_s2;" (assignment_expression "*(re_dfa_t **)(puVar32 + -0x20) = unaff_s2" (pointer_expression "*(re_dfa_t **)(puVar32 + -0x20)" * (cast_expression "(re_dfa_t **)(puVar32 + -0x20)" ( (type_descriptor "re_dfa_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar32 + -0x20)" ( (binary_expression "puVar32 + -0x20" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(re_match_context_t **)(puVar32 + -0x24) = mctx;" (assignment_expression "*(re_match_context_t **)(puVar32 + -0x24) = mctx" (pointer_expression "*(re_match_context_t **)(puVar32 + -0x24)" * (cast_expression "(re_match_context_t **)(puVar32 + -0x24)" ( (type_descriptor "re_match_context_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar32 + -0x24)" ( (binary_expression "puVar32 + -0x24" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(re_match_context_t **)(puVar32 + -0x28) = unaff_s0;" (assignment_expression "*(re_match_context_t **)(puVar32 + -0x28) = unaff_s0" (pointer_expression "*(re_match_context_t **)(puVar32 + -0x28)" * (cast_expression "(re_match_context_t **)(puVar32 + -0x28)" ( (type_descriptor "re_match_context_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar32 + -0x28)" ( (binary_expression "puVar32 + -0x28" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined **)(puVar32 + -0xc0) = puVar30 + 0x24174;" (assignment_expression "*(undefined **)(puVar32 + -0xc0) = puVar30 + 0x24174" (pointer_expression "*(undefined **)(puVar32 + -0xc0)" * (cast_expression "(undefined **)(puVar32 + -0xc0)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar32 + -0xc0)" ( (binary_expression "puVar32 + -0xc0" identifier + number_literal) )))) = (binary_expression "puVar30 + 0x24174" identifier + number_literal)) ;) (expression_statement "*(int *)(puVar32 + -0xac) = iVar18;" (assignment_expression "*(int *)(puVar32 + -0xac) = iVar18" (pointer_expression "*(int *)(puVar32 + -0xac)" * (cast_expression "(int *)(puVar32 + -0xac)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar32 + -0xac)" ( (binary_expression "puVar32 + -0xac" identifier + number_literal) )))) = identifier) ;) (expression_statement "uVar33 = *(undefined4 *)(puVar32 + 0x14);" (assignment_expression "uVar33 = *(undefined4 *)(puVar32 + 0x14)" identifier = (pointer_expression "*(undefined4 *)(puVar32 + 0x14)" * (cast_expression "(undefined4 *)(puVar32 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar32 + 0x14)" ( (binary_expression "puVar32 + 0x14" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar32 + -0x2c) = **(undefined4 **)(puVar30 + 0x1c3ac);" (assignment_expression "*(undefined4 *)(puVar32 + -0x2c) = **(undefined4 **)(puVar30 + 0x1c3ac)" (pointer_expression "*(undefined4 *)(puVar32 + -0x2c)" * (cast_expression "(undefined4 *)(puVar32 + -0x2c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar32 + -0x2c)" ( (binary_expression "puVar32 + -0x2c" identifier + number_literal) )))) = (pointer_expression "**(undefined4 **)(puVar30 + 0x1c3ac)" * (pointer_expression "*(undefined4 **)(puVar30 + 0x1c3ac)" * (cast_expression "(undefined4 **)(puVar30 + 0x1c3ac)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar30 + 0x1c3ac)" ( (binary_expression "puVar30 + 0x1c3ac" identifier + number_literal) )))))) ;) (expression_statement "*(uchar **)(puVar32 + -0xb8) = (prVar23->input).raw_mbs;" (assignment_expression "*(uchar **)(puVar32 + -0xb8) = (prVar23->input).raw_mbs" (pointer_expression "*(uchar **)(puVar32 + -0xb8)" * (cast_expression "(uchar **)(puVar32 + -0xb8)" ( (type_descriptor "uchar **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar32 + -0xb8)" ( (binary_expression "puVar32 + -0xb8" identifier + number_literal) )))) = (field_expression "(prVar23->input).raw_mbs" (parenthesized_expression "(prVar23->input)" ( (field_expression "prVar23->input" identifier -> field_identifier) )) . field_identifier)) ;) (if_statement "if (*(byte *)&prVar24->nodes_alloc < 0x25) {\n                    /* WARNING: Could not recover jumptable at 0x00022020. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n    rVar15 = (*(code *)(puVar30 + 0x24174 +\n                       *(int *)(*(int *)(puVar30 + 0x1c1ac) + -0x2ac0 +\n                               (uint)*(byte *)&prVar24->nodes_alloc * 4)))();\n    return rVar15;\n  }" if (parenthesized_expression "(*(byte *)&prVar24->nodes_alloc < 0x25)" ( (binary_expression "*(byte *)&prVar24->nodes_alloc < 0x25" (pointer_expression "*(byte *)&prVar24->nodes_alloc" * (cast_expression "(byte *)&prVar24->nodes_alloc" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&prVar24->nodes_alloc" & (field_expression "prVar24->nodes_alloc" identifier -> field_identifier)))) < number_literal) )) (compound_statement "{\n                    /* WARNING: Could not recover jumptable at 0x00022020. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n    rVar15 = (*(code *)(puVar30 + 0x24174 +\n                       *(int *)(*(int *)(puVar30 + 0x1c1ac) + -0x2ac0 +\n                               (uint)*(byte *)&prVar24->nodes_alloc * 4)))();\n    return rVar15;\n  }" { comment comment (expression_statement "rVar15 = (*(code *)(puVar30 + 0x24174 +\n                       *(int *)(*(int *)(puVar30 + 0x1c1ac) + -0x2ac0 +\n                               (uint)*(byte *)&prVar24->nodes_alloc * 4)))();" (assignment_expression "rVar15 = (*(code *)(puVar30 + 0x24174 +\n                       *(int *)(*(int *)(puVar30 + 0x1c1ac) + -0x2ac0 +\n                               (uint)*(byte *)&prVar24->nodes_alloc * 4)))()" identifier = (call_expression "(*(code *)(puVar30 + 0x24174 +\n                       *(int *)(*(int *)(puVar30 + 0x1c1ac) + -0x2ac0 +\n                               (uint)*(byte *)&prVar24->nodes_alloc * 4)))()" (parenthesized_expression "(*(code *)(puVar30 + 0x24174 +\n                       *(int *)(*(int *)(puVar30 + 0x1c1ac) + -0x2ac0 +\n                               (uint)*(byte *)&prVar24->nodes_alloc * 4)))" ( (pointer_expression "*(code *)(puVar30 + 0x24174 +\n                       *(int *)(*(int *)(puVar30 + 0x1c1ac) + -0x2ac0 +\n                               (uint)*(byte *)&prVar24->nodes_alloc * 4))" * (cast_expression "(code *)(puVar30 + 0x24174 +\n                       *(int *)(*(int *)(puVar30 + 0x1c1ac) + -0x2ac0 +\n                               (uint)*(byte *)&prVar24->nodes_alloc * 4))" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar30 + 0x24174 +\n                       *(int *)(*(int *)(puVar30 + 0x1c1ac) + -0x2ac0 +\n                               (uint)*(byte *)&prVar24->nodes_alloc * 4))" ( (binary_expression "puVar30 + 0x24174 +\n                       *(int *)(*(int *)(puVar30 + 0x1c1ac) + -0x2ac0 +\n                               (uint)*(byte *)&prVar24->nodes_alloc * 4)" (binary_expression "puVar30 + 0x24174" identifier + number_literal) + (pointer_expression "*(int *)(*(int *)(puVar30 + 0x1c1ac) + -0x2ac0 +\n                               (uint)*(byte *)&prVar24->nodes_alloc * 4)" * (cast_expression "(int *)(*(int *)(puVar30 + 0x1c1ac) + -0x2ac0 +\n                               (uint)*(byte *)&prVar24->nodes_alloc * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar30 + 0x1c1ac) + -0x2ac0 +\n                               (uint)*(byte *)&prVar24->nodes_alloc * 4)" ( (binary_expression "*(int *)(puVar30 + 0x1c1ac) + -0x2ac0 +\n                               (uint)*(byte *)&prVar24->nodes_alloc * 4" (binary_expression "*(int *)(puVar30 + 0x1c1ac) + -0x2ac0" (pointer_expression "*(int *)(puVar30 + 0x1c1ac)" * (cast_expression "(int *)(puVar30 + 0x1c1ac)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar30 + 0x1c1ac)" ( (binary_expression "puVar30 + 0x1c1ac" identifier + number_literal) )))) + number_literal) + (binary_expression "(uint)*(byte *)&prVar24->nodes_alloc * 4" (binary_expression "(uint)*(byte *)&prVar24->nodes_alloc" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)&prVar24->nodes_alloc" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&prVar24->nodes_alloc" & (field_expression "prVar24->nodes_alloc" identifier -> field_identifier)))) * number_literal)) ))))) )))) )) (argument_list "()" ( )))) ;) (return_statement "return rVar15;" return identifier ;) })) (expression_statement "regexp = *(re_string_t **)(puVar32 + -0x2c);" (assignment_expression "regexp = *(re_string_t **)(puVar32 + -0x2c)" identifier = (pointer_expression "*(re_string_t **)(puVar32 + -0x2c)" * (cast_expression "(re_string_t **)(puVar32 + -0x2c)" ( (type_descriptor "re_string_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar32 + -0x2c)" ( (binary_expression "puVar32 + -0x2c" identifier + number_literal) ))))) ;) (if_statement "if (regexp == (re_string_t *)**(int **)(puVar30 + 0x1c3ac)) {\n    return _REG_NOERROR;\n  }" if (parenthesized_expression "(regexp == (re_string_t *)**(int **)(puVar30 + 0x1c3ac))" ( (binary_expression "regexp == (re_string_t *)**(int **)(puVar30 + 0x1c3ac)" identifier == (cast_expression "(re_string_t *)**(int **)(puVar30 + 0x1c3ac)" ( (type_descriptor "re_string_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "**(int **)(puVar30 + 0x1c3ac)" * (pointer_expression "*(int **)(puVar30 + 0x1c3ac)" * (cast_expression "(int **)(puVar30 + 0x1c3ac)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar30 + 0x1c3ac)" ( (binary_expression "puVar30 + 0x1c3ac" identifier + number_literal) ))))))) )) (compound_statement "{\n    return _REG_NOERROR;\n  }" { (return_statement "return _REG_NOERROR;" return identifier ;) })) (expression_statement "pcVar5 = *(code **)(puVar30 + 0x1c390);" (assignment_expression "pcVar5 = *(code **)(puVar30 + 0x1c390)" identifier = (pointer_expression "*(code **)(puVar30 + 0x1c390)" * (cast_expression "(code **)(puVar30 + 0x1c390)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar30 + 0x1c390)" ( (binary_expression "puVar30 + 0x1c390" identifier + number_literal) ))))) ;) (expression_statement "pcVar6 = parse_branch;" (assignment_expression "pcVar6 = parse_branch" identifier = identifier) ;) (expression_statement "prVar26 = prVar23;" (assignment_expression "prVar26 = prVar23" identifier = identifier) ;) (expression_statement "(*pcVar5)();" (call_expression "(*pcVar5)()" (parenthesized_expression "(*pcVar5)" ( (pointer_expression "*pcVar5" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "*(code **)(puVar32 + -0xe4) = pcVar6;" (assignment_expression "*(code **)(puVar32 + -0xe4) = pcVar6" (pointer_expression "*(code **)(puVar32 + -0xe4)" * (cast_expression "(code **)(puVar32 + -0xe4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar32 + -0xe4)" ( (binary_expression "puVar32 + -0xe4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar32 + -0xe8) = uVar33;" (assignment_expression "*(undefined4 *)(puVar32 + -0xe8) = uVar33" (pointer_expression "*(undefined4 *)(puVar32 + -0xe8)" * (cast_expression "(undefined4 *)(puVar32 + -0xe8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar32 + -0xe8)" ( (binary_expression "puVar32 + -0xe8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(re_dfa_t **)(puVar32 + -0xec) = prVar29;" (assignment_expression "*(re_dfa_t **)(puVar32 + -0xec) = prVar29" (pointer_expression "*(re_dfa_t **)(puVar32 + -0xec)" * (cast_expression "(re_dfa_t **)(puVar32 + -0xec)" ( (type_descriptor "re_dfa_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar32 + -0xec)" ( (binary_expression "puVar32 + -0xec" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar32 + -0xf0) = 0;" (assignment_expression "*(undefined4 *)(puVar32 + -0xf0) = 0" (pointer_expression "*(undefined4 *)(puVar32 + -0xf0)" * (cast_expression "(undefined4 *)(puVar32 + -0xf0)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar32 + -0xf0)" ( (binary_expression "puVar32 + -0xf0" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(re_fail_stack_t **)(puVar32 + -0xf4) = unaff_s5;" (assignment_expression "*(re_fail_stack_t **)(puVar32 + -0xf4) = unaff_s5" (pointer_expression "*(re_fail_stack_t **)(puVar32 + -0xf4)" * (cast_expression "(re_fail_stack_t **)(puVar32 + -0xf4)" ( (type_descriptor "re_fail_stack_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar32 + -0xf4)" ( (binary_expression "puVar32 + -0xf4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(regmatch_t **)(puVar32 + -0xf8) = pmatch;" (assignment_expression "*(regmatch_t **)(puVar32 + -0xf8) = pmatch" (pointer_expression "*(regmatch_t **)(puVar32 + -0xf8)" * (cast_expression "(regmatch_t **)(puVar32 + -0xf8)" ( (type_descriptor "regmatch_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar32 + -0xf8)" ( (binary_expression "puVar32 + -0xf8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(wint_t **)(puVar32 + -0xfc) = unaff_s3;" (assignment_expression "*(wint_t **)(puVar32 + -0xfc) = unaff_s3" (pointer_expression "*(wint_t **)(puVar32 + -0xfc)" * (cast_expression "(wint_t **)(puVar32 + -0xfc)" ( (type_descriptor "wint_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar32 + -0xfc)" ( (binary_expression "puVar32 + -0xfc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(re_dfa_t **)(puVar32 + -0x100) = unaff_s2;" (assignment_expression "*(re_dfa_t **)(puVar32 + -0x100) = unaff_s2" (pointer_expression "*(re_dfa_t **)(puVar32 + -0x100)" * (cast_expression "(re_dfa_t **)(puVar32 + -0x100)" ( (type_descriptor "re_dfa_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar32 + -0x100)" ( (binary_expression "puVar32 + -0x100" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(re_match_context_t **)(puVar32 + -0x104) = mctx;" (assignment_expression "*(re_match_context_t **)(puVar32 + -0x104) = mctx" (pointer_expression "*(re_match_context_t **)(puVar32 + -0x104)" * (cast_expression "(re_match_context_t **)(puVar32 + -0x104)" ( (type_descriptor "re_match_context_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar32 + -0x104)" ( (binary_expression "puVar32 + -0x104" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(re_match_context_t **)(puVar32 + -0x108) = prVar23;" (assignment_expression "*(re_match_context_t **)(puVar32 + -0x108) = prVar23" (pointer_expression "*(re_match_context_t **)(puVar32 + -0x108)" * (cast_expression "(re_match_context_t **)(puVar32 + -0x108)" ( (type_descriptor "re_match_context_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar32 + -0x108)" ( (binary_expression "puVar32 + -0x108" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(code **)(puVar32 + -0x118) = pcVar5 + 0x228ec;" (assignment_expression "*(code **)(puVar32 + -0x118) = pcVar5 + 0x228ec" (pointer_expression "*(code **)(puVar32 + -0x118)" * (cast_expression "(code **)(puVar32 + -0x118)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar32 + -0x118)" ( (binary_expression "puVar32 + -0x118" identifier + number_literal) )))) = (binary_expression "pcVar5 + 0x228ec" identifier + number_literal)) ;) (expression_statement "*(re_string_t **)(puVar32 + -0xe0) = regexp;" (assignment_expression "*(re_string_t **)(puVar32 + -0xe0) = regexp" (pointer_expression "*(re_string_t **)(puVar32 + -0xe0)" * (cast_expression "(re_string_t **)(puVar32 + -0xe0)" ( (type_descriptor "re_string_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar32 + -0xe0)" ( (binary_expression "puVar32 + -0xe0" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(regmatch_t **)(puVar32 + -0xd4) = prVar25;" (assignment_expression "*(regmatch_t **)(puVar32 + -0xd4) = prVar25" (pointer_expression "*(regmatch_t **)(puVar32 + -0xd4)" * (cast_expression "(regmatch_t **)(puVar32 + -0xd4)" ( (type_descriptor "regmatch_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar32 + -0xd4)" ( (binary_expression "puVar32 + -0xd4" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar18 = *(int *)(puVar32 + -0xd0);" (assignment_expression "iVar18 = *(int *)(puVar32 + -0xd0)" identifier = (pointer_expression "*(int *)(puVar32 + -0xd0)" * (cast_expression "(int *)(puVar32 + -0xd0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar32 + -0xd0)" ( (binary_expression "puVar32 + -0xd0" identifier + number_literal) ))))) ;) (expression_statement "piVar27 = *(int **)(puVar32 + -0xcc);" (assignment_expression "piVar27 = *(int **)(puVar32 + -0xcc)" identifier = (pointer_expression "*(int **)(puVar32 + -0xcc)" * (cast_expression "(int **)(puVar32 + -0xcc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar32 + -0xcc)" ( (binary_expression "puVar32 + -0xcc" identifier + number_literal) ))))) ;) (expression_statement "*(uchar **)(puVar32 + -0x110) = (prVar26->input).raw_mbs;" (assignment_expression "*(uchar **)(puVar32 + -0x110) = (prVar26->input).raw_mbs" (pointer_expression "*(uchar **)(puVar32 + -0x110)" * (cast_expression "(uchar **)(puVar32 + -0x110)" ( (type_descriptor "uchar **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar32 + -0x110)" ( (binary_expression "puVar32 + -0x110" identifier + number_literal) )))) = (field_expression "(prVar26->input).raw_mbs" (parenthesized_expression "(prVar26->input)" ( (field_expression "prVar26->input" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "*(int **)(puVar32 + -0x11c) = piVar27;" (assignment_expression "*(int **)(puVar32 + -0x11c) = piVar27" (pointer_expression "*(int **)(puVar32 + -0x11c)" * (cast_expression "(int **)(puVar32 + -0x11c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar32 + -0x11c)" ( (binary_expression "puVar32 + -0x11c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar32 + -0x120) = iVar18;" (assignment_expression "*(int *)(puVar32 + -0x120) = iVar18" (pointer_expression "*(int *)(puVar32 + -0x120)" * (cast_expression "(int *)(puVar32 + -0x120)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar32 + -0x120)" ( (binary_expression "puVar32 + -0x120" identifier + number_literal) )))) = identifier) ;) (expression_statement "pbVar16 = parse_expression(regexp,(regex_t *)prVar26,(re_token_t *)prVar24,(reg_syntax_t)prVar25,\n                             *(Idx *)(puVar32 + -0x120),*(reg_errcode_t **)(puVar32 + -0x11c));" (assignment_expression "pbVar16 = parse_expression(regexp,(regex_t *)prVar26,(re_token_t *)prVar24,(reg_syntax_t)prVar25,\n                             *(Idx *)(puVar32 + -0x120),*(reg_errcode_t **)(puVar32 + -0x11c))" identifier = (call_expression "parse_expression(regexp,(regex_t *)prVar26,(re_token_t *)prVar24,(reg_syntax_t)prVar25,\n                             *(Idx *)(puVar32 + -0x120),*(reg_errcode_t **)(puVar32 + -0x11c))" identifier (argument_list "(regexp,(regex_t *)prVar26,(re_token_t *)prVar24,(reg_syntax_t)prVar25,\n                             *(Idx *)(puVar32 + -0x120),*(reg_errcode_t **)(puVar32 + -0x11c))" ( identifier , (cast_expression "(regex_t *)prVar26" ( (type_descriptor "regex_t *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (cast_expression "(re_token_t *)prVar24" ( (type_descriptor "re_token_t *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (cast_expression "(reg_syntax_t)prVar25" ( (type_descriptor "reg_syntax_t" type_identifier) ) identifier) , (pointer_expression "*(Idx *)(puVar32 + -0x120)" * (cast_expression "(Idx *)(puVar32 + -0x120)" ( (type_descriptor "Idx *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar32 + -0x120)" ( (binary_expression "puVar32 + -0x120" identifier + number_literal) )))) , (pointer_expression "*(reg_errcode_t **)(puVar32 + -0x11c)" * (cast_expression "(reg_errcode_t **)(puVar32 + -0x11c)" ( (type_descriptor "reg_errcode_t **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar32 + -0x11c)" ( (binary_expression "puVar32 + -0x11c" identifier + number_literal) )))) )))) ;) (if_statement "if ((*piVar27 == 0) || (pbVar16 != (bin_tree_t *)0x0)) {\n    iVar13 = *(int *)(*(int *)(puVar32 + -0x118) + -0x7ed8);\n    *(int *)(puVar32 + -0x10c) = *(int *)(*(int *)(puVar32 + -0x118) + -0x7ed8) + -0x5cb8;\nLAB_0002390c:\n    do {\n      do {\n        root_00 = pbVar16;\n        if ((*(byte *)&prVar24->nodes_alloc & 0xf7) == 2) {\n          return (reg_errcode_t)root_00;\n        }\n        if ((iVar18 != 0) && (*(byte *)&prVar24->nodes_alloc == 9)) {\n          return (reg_errcode_t)root_00;\n        }\n        *(int **)(puVar32 + -0x11c) = piVar27;\n        *(int *)(puVar32 + -0x120) = iVar18;\n        root = (bin_tree_t *)\n               (*(code *)(iVar13 + 0x1f9c))\n                         (*(undefined4 *)(puVar32 + -0xe0),prVar26,prVar24,\n                          *(undefined4 *)(puVar32 + -0xd4));\n        if (*piVar27 == 0) {\n          pbVar16 = root;\n          pbVar2 = root_00;\n          pbVar3 = root;\n          if (root_00 == (bin_tree_t *)0x0) goto LAB_0002390c;\n        }\n        else {\n          pbVar2 = root;\n          pbVar3 = root_00;\n          if (root == (bin_tree_t *)0x0) {\n            if (root_00 == (bin_tree_t *)0x0) {\n              return _REG_NOERROR;\n            }\n            postorder(root_00,(_func_reg_errcode_t_void_ptr_bin_tree_t_ptr *)\n                              (*(int *)(*(int *)(puVar32 + -0x118) + -0x7ed8) + -0x2cc0),(void *)0x0\n                     );\n            return _REG_NOERROR;\n          }\n        }\n        pbVar16 = pbVar2;\n      } while (pbVar3 == (bin_tree_t *)0x0);\n      pbVar16 = (bin_tree_t *)\n                (**(code **)(puVar32 + -0x10c))(*(undefined4 *)(puVar32 + -0x110),root_00,root,0x10)\n      ;\n    } while (pbVar16 != (bin_tree_t *)0x0);\n    iVar18 = *(int *)(*(int *)(puVar32 + -0x118) + -0x7ed8);\n    postorder(root,(_func_reg_errcode_t_void_ptr_bin_tree_t_ptr *)(iVar18 + -0x2cc0),(void *)0x0);\n    postorder(root_00,(_func_reg_errcode_t_void_ptr_bin_tree_t_ptr *)(iVar18 + -0x2cc0),(void *)0x0)\n    ;\n    *piVar27 = 0xc;\n    pbVar16 = (bin_tree_t *)0x0;\n  }" if (parenthesized_expression "((*piVar27 == 0) || (pbVar16 != (bin_tree_t *)0x0))" ( (binary_expression "(*piVar27 == 0) || (pbVar16 != (bin_tree_t *)0x0)" (parenthesized_expression "(*piVar27 == 0)" ( (binary_expression "*piVar27 == 0" (pointer_expression "*piVar27" * identifier) == number_literal) )) || (parenthesized_expression "(pbVar16 != (bin_tree_t *)0x0)" ( (binary_expression "pbVar16 != (bin_tree_t *)0x0" identifier != (cast_expression "(bin_tree_t *)0x0" ( (type_descriptor "bin_tree_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) (compound_statement "{\n    iVar13 = *(int *)(*(int *)(puVar32 + -0x118) + -0x7ed8);\n    *(int *)(puVar32 + -0x10c) = *(int *)(*(int *)(puVar32 + -0x118) + -0x7ed8) + -0x5cb8;\nLAB_0002390c:\n    do {\n      do {\n        root_00 = pbVar16;\n        if ((*(byte *)&prVar24->nodes_alloc & 0xf7) == 2) {\n          return (reg_errcode_t)root_00;\n        }\n        if ((iVar18 != 0) && (*(byte *)&prVar24->nodes_alloc == 9)) {\n          return (reg_errcode_t)root_00;\n        }\n        *(int **)(puVar32 + -0x11c) = piVar27;\n        *(int *)(puVar32 + -0x120) = iVar18;\n        root = (bin_tree_t *)\n               (*(code *)(iVar13 + 0x1f9c))\n                         (*(undefined4 *)(puVar32 + -0xe0),prVar26,prVar24,\n                          *(undefined4 *)(puVar32 + -0xd4));\n        if (*piVar27 == 0) {\n          pbVar16 = root;\n          pbVar2 = root_00;\n          pbVar3 = root;\n          if (root_00 == (bin_tree_t *)0x0) goto LAB_0002390c;\n        }\n        else {\n          pbVar2 = root;\n          pbVar3 = root_00;\n          if (root == (bin_tree_t *)0x0) {\n            if (root_00 == (bin_tree_t *)0x0) {\n              return _REG_NOERROR;\n            }\n            postorder(root_00,(_func_reg_errcode_t_void_ptr_bin_tree_t_ptr *)\n                              (*(int *)(*(int *)(puVar32 + -0x118) + -0x7ed8) + -0x2cc0),(void *)0x0\n                     );\n            return _REG_NOERROR;\n          }\n        }\n        pbVar16 = pbVar2;\n      } while (pbVar3 == (bin_tree_t *)0x0);\n      pbVar16 = (bin_tree_t *)\n                (**(code **)(puVar32 + -0x10c))(*(undefined4 *)(puVar32 + -0x110),root_00,root,0x10)\n      ;\n    } while (pbVar16 != (bin_tree_t *)0x0);\n    iVar18 = *(int *)(*(int *)(puVar32 + -0x118) + -0x7ed8);\n    postorder(root,(_func_reg_errcode_t_void_ptr_bin_tree_t_ptr *)(iVar18 + -0x2cc0),(void *)0x0);\n    postorder(root_00,(_func_reg_errcode_t_void_ptr_bin_tree_t_ptr *)(iVar18 + -0x2cc0),(void *)0x0)\n    ;\n    *piVar27 = 0xc;\n    pbVar16 = (bin_tree_t *)0x0;\n  }" { (expression_statement "iVar13 = *(int *)(*(int *)(puVar32 + -0x118) + -0x7ed8);" (assignment_expression "iVar13 = *(int *)(*(int *)(puVar32 + -0x118) + -0x7ed8)" identifier = (pointer_expression "*(int *)(*(int *)(puVar32 + -0x118) + -0x7ed8)" * (cast_expression "(int *)(*(int *)(puVar32 + -0x118) + -0x7ed8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar32 + -0x118) + -0x7ed8)" ( (binary_expression "*(int *)(puVar32 + -0x118) + -0x7ed8" (pointer_expression "*(int *)(puVar32 + -0x118)" * (cast_expression "(int *)(puVar32 + -0x118)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar32 + -0x118)" ( (binary_expression "puVar32 + -0x118" identifier + number_literal) )))) + number_literal) ))))) ;) (expression_statement "*(int *)(puVar32 + -0x10c) = *(int *)(*(int *)(puVar32 + -0x118) + -0x7ed8) + -0x5cb8;" (assignment_expression "*(int *)(puVar32 + -0x10c) = *(int *)(*(int *)(puVar32 + -0x118) + -0x7ed8) + -0x5cb8" (pointer_expression "*(int *)(puVar32 + -0x10c)" * (cast_expression "(int *)(puVar32 + -0x10c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar32 + -0x10c)" ( (binary_expression "puVar32 + -0x10c" identifier + number_literal) )))) = (binary_expression "*(int *)(*(int *)(puVar32 + -0x118) + -0x7ed8) + -0x5cb8" (pointer_expression "*(int *)(*(int *)(puVar32 + -0x118) + -0x7ed8)" * (cast_expression "(int *)(*(int *)(puVar32 + -0x118) + -0x7ed8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar32 + -0x118) + -0x7ed8)" ( (binary_expression "*(int *)(puVar32 + -0x118) + -0x7ed8" (pointer_expression "*(int *)(puVar32 + -0x118)" * (cast_expression "(int *)(puVar32 + -0x118)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar32 + -0x118)" ( (binary_expression "puVar32 + -0x118" identifier + number_literal) )))) + number_literal) )))) + number_literal)) ;) (labeled_statement "LAB_0002390c:\n    do {\n      do {\n        root_00 = pbVar16;\n        if ((*(byte *)&prVar24->nodes_alloc & 0xf7) == 2) {\n          return (reg_errcode_t)root_00;\n        }\n        if ((iVar18 != 0) && (*(byte *)&prVar24->nodes_alloc == 9)) {\n          return (reg_errcode_t)root_00;\n        }\n        *(int **)(puVar32 + -0x11c) = piVar27;\n        *(int *)(puVar32 + -0x120) = iVar18;\n        root = (bin_tree_t *)\n               (*(code *)(iVar13 + 0x1f9c))\n                         (*(undefined4 *)(puVar32 + -0xe0),prVar26,prVar24,\n                          *(undefined4 *)(puVar32 + -0xd4));\n        if (*piVar27 == 0) {\n          pbVar16 = root;\n          pbVar2 = root_00;\n          pbVar3 = root;\n          if (root_00 == (bin_tree_t *)0x0) goto LAB_0002390c;\n        }\n        else {\n          pbVar2 = root;\n          pbVar3 = root_00;\n          if (root == (bin_tree_t *)0x0) {\n            if (root_00 == (bin_tree_t *)0x0) {\n              return _REG_NOERROR;\n            }\n            postorder(root_00,(_func_reg_errcode_t_void_ptr_bin_tree_t_ptr *)\n                              (*(int *)(*(int *)(puVar32 + -0x118) + -0x7ed8) + -0x2cc0),(void *)0x0\n                     );\n            return _REG_NOERROR;\n          }\n        }\n        pbVar16 = pbVar2;\n      } while (pbVar3 == (bin_tree_t *)0x0);\n      pbVar16 = (bin_tree_t *)\n                (**(code **)(puVar32 + -0x10c))(*(undefined4 *)(puVar32 + -0x110),root_00,root,0x10)\n      ;\n    } while (pbVar16 != (bin_tree_t *)0x0);" statement_identifier : (do_statement "do {\n      do {\n        root_00 = pbVar16;\n        if ((*(byte *)&prVar24->nodes_alloc & 0xf7) == 2) {\n          return (reg_errcode_t)root_00;\n        }\n        if ((iVar18 != 0) && (*(byte *)&prVar24->nodes_alloc == 9)) {\n          return (reg_errcode_t)root_00;\n        }\n        *(int **)(puVar32 + -0x11c) = piVar27;\n        *(int *)(puVar32 + -0x120) = iVar18;\n        root = (bin_tree_t *)\n               (*(code *)(iVar13 + 0x1f9c))\n                         (*(undefined4 *)(puVar32 + -0xe0),prVar26,prVar24,\n                          *(undefined4 *)(puVar32 + -0xd4));\n        if (*piVar27 == 0) {\n          pbVar16 = root;\n          pbVar2 = root_00;\n          pbVar3 = root;\n          if (root_00 == (bin_tree_t *)0x0) goto LAB_0002390c;\n        }\n        else {\n          pbVar2 = root;\n          pbVar3 = root_00;\n          if (root == (bin_tree_t *)0x0) {\n            if (root_00 == (bin_tree_t *)0x0) {\n              return _REG_NOERROR;\n            }\n            postorder(root_00,(_func_reg_errcode_t_void_ptr_bin_tree_t_ptr *)\n                              (*(int *)(*(int *)(puVar32 + -0x118) + -0x7ed8) + -0x2cc0),(void *)0x0\n                     );\n            return _REG_NOERROR;\n          }\n        }\n        pbVar16 = pbVar2;\n      } while (pbVar3 == (bin_tree_t *)0x0);\n      pbVar16 = (bin_tree_t *)\n                (**(code **)(puVar32 + -0x10c))(*(undefined4 *)(puVar32 + -0x110),root_00,root,0x10)\n      ;\n    } while (pbVar16 != (bin_tree_t *)0x0);" do (compound_statement "{\n      do {\n        root_00 = pbVar16;\n        if ((*(byte *)&prVar24->nodes_alloc & 0xf7) == 2) {\n          return (reg_errcode_t)root_00;\n        }\n        if ((iVar18 != 0) && (*(byte *)&prVar24->nodes_alloc == 9)) {\n          return (reg_errcode_t)root_00;\n        }\n        *(int **)(puVar32 + -0x11c) = piVar27;\n        *(int *)(puVar32 + -0x120) = iVar18;\n        root = (bin_tree_t *)\n               (*(code *)(iVar13 + 0x1f9c))\n                         (*(undefined4 *)(puVar32 + -0xe0),prVar26,prVar24,\n                          *(undefined4 *)(puVar32 + -0xd4));\n        if (*piVar27 == 0) {\n          pbVar16 = root;\n          pbVar2 = root_00;\n          pbVar3 = root;\n          if (root_00 == (bin_tree_t *)0x0) goto LAB_0002390c;\n        }\n        else {\n          pbVar2 = root;\n          pbVar3 = root_00;\n          if (root == (bin_tree_t *)0x0) {\n            if (root_00 == (bin_tree_t *)0x0) {\n              return _REG_NOERROR;\n            }\n            postorder(root_00,(_func_reg_errcode_t_void_ptr_bin_tree_t_ptr *)\n                              (*(int *)(*(int *)(puVar32 + -0x118) + -0x7ed8) + -0x2cc0),(void *)0x0\n                     );\n            return _REG_NOERROR;\n          }\n        }\n        pbVar16 = pbVar2;\n      } while (pbVar3 == (bin_tree_t *)0x0);\n      pbVar16 = (bin_tree_t *)\n                (**(code **)(puVar32 + -0x10c))(*(undefined4 *)(puVar32 + -0x110),root_00,root,0x10)\n      ;\n    }" { (do_statement "do {\n        root_00 = pbVar16;\n        if ((*(byte *)&prVar24->nodes_alloc & 0xf7) == 2) {\n          return (reg_errcode_t)root_00;\n        }\n        if ((iVar18 != 0) && (*(byte *)&prVar24->nodes_alloc == 9)) {\n          return (reg_errcode_t)root_00;\n        }\n        *(int **)(puVar32 + -0x11c) = piVar27;\n        *(int *)(puVar32 + -0x120) = iVar18;\n        root = (bin_tree_t *)\n               (*(code *)(iVar13 + 0x1f9c))\n                         (*(undefined4 *)(puVar32 + -0xe0),prVar26,prVar24,\n                          *(undefined4 *)(puVar32 + -0xd4));\n        if (*piVar27 == 0) {\n          pbVar16 = root;\n          pbVar2 = root_00;\n          pbVar3 = root;\n          if (root_00 == (bin_tree_t *)0x0) goto LAB_0002390c;\n        }\n        else {\n          pbVar2 = root;\n          pbVar3 = root_00;\n          if (root == (bin_tree_t *)0x0) {\n            if (root_00 == (bin_tree_t *)0x0) {\n              return _REG_NOERROR;\n            }\n            postorder(root_00,(_func_reg_errcode_t_void_ptr_bin_tree_t_ptr *)\n                              (*(int *)(*(int *)(puVar32 + -0x118) + -0x7ed8) + -0x2cc0),(void *)0x0\n                     );\n            return _REG_NOERROR;\n          }\n        }\n        pbVar16 = pbVar2;\n      } while (pbVar3 == (bin_tree_t *)0x0);" do (compound_statement "{\n        root_00 = pbVar16;\n        if ((*(byte *)&prVar24->nodes_alloc & 0xf7) == 2) {\n          return (reg_errcode_t)root_00;\n        }\n        if ((iVar18 != 0) && (*(byte *)&prVar24->nodes_alloc == 9)) {\n          return (reg_errcode_t)root_00;\n        }\n        *(int **)(puVar32 + -0x11c) = piVar27;\n        *(int *)(puVar32 + -0x120) = iVar18;\n        root = (bin_tree_t *)\n               (*(code *)(iVar13 + 0x1f9c))\n                         (*(undefined4 *)(puVar32 + -0xe0),prVar26,prVar24,\n                          *(undefined4 *)(puVar32 + -0xd4));\n        if (*piVar27 == 0) {\n          pbVar16 = root;\n          pbVar2 = root_00;\n          pbVar3 = root;\n          if (root_00 == (bin_tree_t *)0x0) goto LAB_0002390c;\n        }\n        else {\n          pbVar2 = root;\n          pbVar3 = root_00;\n          if (root == (bin_tree_t *)0x0) {\n            if (root_00 == (bin_tree_t *)0x0) {\n              return _REG_NOERROR;\n            }\n            postorder(root_00,(_func_reg_errcode_t_void_ptr_bin_tree_t_ptr *)\n                              (*(int *)(*(int *)(puVar32 + -0x118) + -0x7ed8) + -0x2cc0),(void *)0x0\n                     );\n            return _REG_NOERROR;\n          }\n        }\n        pbVar16 = pbVar2;\n      }" { (expression_statement "root_00 = pbVar16;" (assignment_expression "root_00 = pbVar16" identifier = identifier) ;) (if_statement "if ((*(byte *)&prVar24->nodes_alloc & 0xf7) == 2) {\n          return (reg_errcode_t)root_00;\n        }" if (parenthesized_expression "((*(byte *)&prVar24->nodes_alloc & 0xf7) == 2)" ( (binary_expression "(*(byte *)&prVar24->nodes_alloc & 0xf7) == 2" (parenthesized_expression "(*(byte *)&prVar24->nodes_alloc & 0xf7)" ( (binary_expression "*(byte *)&prVar24->nodes_alloc & 0xf7" (pointer_expression "*(byte *)&prVar24->nodes_alloc" * (cast_expression "(byte *)&prVar24->nodes_alloc" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&prVar24->nodes_alloc" & (field_expression "prVar24->nodes_alloc" identifier -> field_identifier)))) & number_literal) )) == number_literal) )) (compound_statement "{\n          return (reg_errcode_t)root_00;\n        }" { (return_statement "return (reg_errcode_t)root_00;" return (cast_expression "(reg_errcode_t)root_00" ( (type_descriptor "reg_errcode_t" type_identifier) ) identifier) ;) })) (if_statement "if ((iVar18 != 0) && (*(byte *)&prVar24->nodes_alloc == 9)) {\n          return (reg_errcode_t)root_00;\n        }" if (parenthesized_expression "((iVar18 != 0) && (*(byte *)&prVar24->nodes_alloc == 9))" ( (binary_expression "(iVar18 != 0) && (*(byte *)&prVar24->nodes_alloc == 9)" (parenthesized_expression "(iVar18 != 0)" ( (binary_expression "iVar18 != 0" identifier != number_literal) )) && (parenthesized_expression "(*(byte *)&prVar24->nodes_alloc == 9)" ( (binary_expression "*(byte *)&prVar24->nodes_alloc == 9" (pointer_expression "*(byte *)&prVar24->nodes_alloc" * (cast_expression "(byte *)&prVar24->nodes_alloc" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&prVar24->nodes_alloc" & (field_expression "prVar24->nodes_alloc" identifier -> field_identifier)))) == number_literal) ))) )) (compound_statement "{\n          return (reg_errcode_t)root_00;\n        }" { (return_statement "return (reg_errcode_t)root_00;" return (cast_expression "(reg_errcode_t)root_00" ( (type_descriptor "reg_errcode_t" type_identifier) ) identifier) ;) })) (expression_statement "*(int **)(puVar32 + -0x11c) = piVar27;" (assignment_expression "*(int **)(puVar32 + -0x11c) = piVar27" (pointer_expression "*(int **)(puVar32 + -0x11c)" * (cast_expression "(int **)(puVar32 + -0x11c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar32 + -0x11c)" ( (binary_expression "puVar32 + -0x11c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar32 + -0x120) = iVar18;" (assignment_expression "*(int *)(puVar32 + -0x120) = iVar18" (pointer_expression "*(int *)(puVar32 + -0x120)" * (cast_expression "(int *)(puVar32 + -0x120)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar32 + -0x120)" ( (binary_expression "puVar32 + -0x120" identifier + number_literal) )))) = identifier) ;) (expression_statement "root = (bin_tree_t *)\n               (*(code *)(iVar13 + 0x1f9c))\n                         (*(undefined4 *)(puVar32 + -0xe0),prVar26,prVar24,\n                          *(undefined4 *)(puVar32 + -0xd4));" (assignment_expression "root = (bin_tree_t *)\n               (*(code *)(iVar13 + 0x1f9c))\n                         (*(undefined4 *)(puVar32 + -0xe0),prVar26,prVar24,\n                          *(undefined4 *)(puVar32 + -0xd4))" identifier = (cast_expression "(bin_tree_t *)\n               (*(code *)(iVar13 + 0x1f9c))\n                         (*(undefined4 *)(puVar32 + -0xe0),prVar26,prVar24,\n                          *(undefined4 *)(puVar32 + -0xd4))" ( (type_descriptor "bin_tree_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)(iVar13 + 0x1f9c))\n                         (*(undefined4 *)(puVar32 + -0xe0),prVar26,prVar24,\n                          *(undefined4 *)(puVar32 + -0xd4))" (parenthesized_expression "(*(code *)(iVar13 + 0x1f9c))" ( (pointer_expression "*(code *)(iVar13 + 0x1f9c)" * (cast_expression "(code *)(iVar13 + 0x1f9c)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + 0x1f9c)" ( (binary_expression "iVar13 + 0x1f9c" identifier + number_literal) )))) )) (argument_list "(*(undefined4 *)(puVar32 + -0xe0),prVar26,prVar24,\n                          *(undefined4 *)(puVar32 + -0xd4))" ( (pointer_expression "*(undefined4 *)(puVar32 + -0xe0)" * (cast_expression "(undefined4 *)(puVar32 + -0xe0)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar32 + -0xe0)" ( (binary_expression "puVar32 + -0xe0" identifier + number_literal) )))) , identifier , identifier , (pointer_expression "*(undefined4 *)(puVar32 + -0xd4)" * (cast_expression "(undefined4 *)(puVar32 + -0xd4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar32 + -0xd4)" ( (binary_expression "puVar32 + -0xd4" identifier + number_literal) )))) ))))) ;) (if_statement "if (*piVar27 == 0) {\n          pbVar16 = root;\n          pbVar2 = root_00;\n          pbVar3 = root;\n          if (root_00 == (bin_tree_t *)0x0) goto LAB_0002390c;\n        }\n        else {\n          pbVar2 = root;\n          pbVar3 = root_00;\n          if (root == (bin_tree_t *)0x0) {\n            if (root_00 == (bin_tree_t *)0x0) {\n              return _REG_NOERROR;\n            }\n            postorder(root_00,(_func_reg_errcode_t_void_ptr_bin_tree_t_ptr *)\n                              (*(int *)(*(int *)(puVar32 + -0x118) + -0x7ed8) + -0x2cc0),(void *)0x0\n                     );\n            return _REG_NOERROR;\n          }\n        }" if (parenthesized_expression "(*piVar27 == 0)" ( (binary_expression "*piVar27 == 0" (pointer_expression "*piVar27" * identifier) == number_literal) )) (compound_statement "{\n          pbVar16 = root;\n          pbVar2 = root_00;\n          pbVar3 = root;\n          if (root_00 == (bin_tree_t *)0x0) goto LAB_0002390c;\n        }" { (expression_statement "pbVar16 = root;" (assignment_expression "pbVar16 = root" identifier = identifier) ;) (expression_statement "pbVar2 = root_00;" (assignment_expression "pbVar2 = root_00" identifier = identifier) ;) (expression_statement "pbVar3 = root;" (assignment_expression "pbVar3 = root" identifier = identifier) ;) (if_statement "if (root_00 == (bin_tree_t *)0x0) goto LAB_0002390c;" if (parenthesized_expression "(root_00 == (bin_tree_t *)0x0)" ( (binary_expression "root_00 == (bin_tree_t *)0x0" identifier == (cast_expression "(bin_tree_t *)0x0" ( (type_descriptor "bin_tree_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0002390c;" goto statement_identifier ;)) }) (else_clause "else {\n          pbVar2 = root;\n          pbVar3 = root_00;\n          if (root == (bin_tree_t *)0x0) {\n            if (root_00 == (bin_tree_t *)0x0) {\n              return _REG_NOERROR;\n            }\n            postorder(root_00,(_func_reg_errcode_t_void_ptr_bin_tree_t_ptr *)\n                              (*(int *)(*(int *)(puVar32 + -0x118) + -0x7ed8) + -0x2cc0),(void *)0x0\n                     );\n            return _REG_NOERROR;\n          }\n        }" else (compound_statement "{\n          pbVar2 = root;\n          pbVar3 = root_00;\n          if (root == (bin_tree_t *)0x0) {\n            if (root_00 == (bin_tree_t *)0x0) {\n              return _REG_NOERROR;\n            }\n            postorder(root_00,(_func_reg_errcode_t_void_ptr_bin_tree_t_ptr *)\n                              (*(int *)(*(int *)(puVar32 + -0x118) + -0x7ed8) + -0x2cc0),(void *)0x0\n                     );\n            return _REG_NOERROR;\n          }\n        }" { (expression_statement "pbVar2 = root;" (assignment_expression "pbVar2 = root" identifier = identifier) ;) (expression_statement "pbVar3 = root_00;" (assignment_expression "pbVar3 = root_00" identifier = identifier) ;) (if_statement "if (root == (bin_tree_t *)0x0) {\n            if (root_00 == (bin_tree_t *)0x0) {\n              return _REG_NOERROR;\n            }\n            postorder(root_00,(_func_reg_errcode_t_void_ptr_bin_tree_t_ptr *)\n                              (*(int *)(*(int *)(puVar32 + -0x118) + -0x7ed8) + -0x2cc0),(void *)0x0\n                     );\n            return _REG_NOERROR;\n          }" if (parenthesized_expression "(root == (bin_tree_t *)0x0)" ( (binary_expression "root == (bin_tree_t *)0x0" identifier == (cast_expression "(bin_tree_t *)0x0" ( (type_descriptor "bin_tree_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            if (root_00 == (bin_tree_t *)0x0) {\n              return _REG_NOERROR;\n            }\n            postorder(root_00,(_func_reg_errcode_t_void_ptr_bin_tree_t_ptr *)\n                              (*(int *)(*(int *)(puVar32 + -0x118) + -0x7ed8) + -0x2cc0),(void *)0x0\n                     );\n            return _REG_NOERROR;\n          }" { (if_statement "if (root_00 == (bin_tree_t *)0x0) {\n              return _REG_NOERROR;\n            }" if (parenthesized_expression "(root_00 == (bin_tree_t *)0x0)" ( (binary_expression "root_00 == (bin_tree_t *)0x0" identifier == (cast_expression "(bin_tree_t *)0x0" ( (type_descriptor "bin_tree_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              return _REG_NOERROR;\n            }" { (return_statement "return _REG_NOERROR;" return identifier ;) })) (expression_statement "postorder(root_00,(_func_reg_errcode_t_void_ptr_bin_tree_t_ptr *)\n                              (*(int *)(*(int *)(puVar32 + -0x118) + -0x7ed8) + -0x2cc0),(void *)0x0\n                     );" (call_expression "postorder(root_00,(_func_reg_errcode_t_void_ptr_bin_tree_t_ptr *)\n                              (*(int *)(*(int *)(puVar32 + -0x118) + -0x7ed8) + -0x2cc0),(void *)0x0\n                     )" identifier (argument_list "(root_00,(_func_reg_errcode_t_void_ptr_bin_tree_t_ptr *)\n                              (*(int *)(*(int *)(puVar32 + -0x118) + -0x7ed8) + -0x2cc0),(void *)0x0\n                     )" ( identifier , (cast_expression "(_func_reg_errcode_t_void_ptr_bin_tree_t_ptr *)\n                              (*(int *)(*(int *)(puVar32 + -0x118) + -0x7ed8) + -0x2cc0)" ( (type_descriptor "_func_reg_errcode_t_void_ptr_bin_tree_t_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(*(int *)(puVar32 + -0x118) + -0x7ed8) + -0x2cc0)" ( (binary_expression "*(int *)(*(int *)(puVar32 + -0x118) + -0x7ed8) + -0x2cc0" (pointer_expression "*(int *)(*(int *)(puVar32 + -0x118) + -0x7ed8)" * (cast_expression "(int *)(*(int *)(puVar32 + -0x118) + -0x7ed8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar32 + -0x118) + -0x7ed8)" ( (binary_expression "*(int *)(puVar32 + -0x118) + -0x7ed8" (pointer_expression "*(int *)(puVar32 + -0x118)" * (cast_expression "(int *)(puVar32 + -0x118)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar32 + -0x118)" ( (binary_expression "puVar32 + -0x118" identifier + number_literal) )))) + number_literal) )))) + number_literal) ))) , (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) ))) ;) (return_statement "return _REG_NOERROR;" return identifier ;) })) }))) (expression_statement "pbVar16 = pbVar2;" (assignment_expression "pbVar16 = pbVar2" identifier = identifier) ;) }) while (parenthesized_expression "(pbVar3 == (bin_tree_t *)0x0)" ( (binary_expression "pbVar3 == (bin_tree_t *)0x0" identifier == (cast_expression "(bin_tree_t *)0x0" ( (type_descriptor "bin_tree_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (expression_statement "pbVar16 = (bin_tree_t *)\n                (**(code **)(puVar32 + -0x10c))(*(undefined4 *)(puVar32 + -0x110),root_00,root,0x10)\n      ;" (assignment_expression "pbVar16 = (bin_tree_t *)\n                (**(code **)(puVar32 + -0x10c))(*(undefined4 *)(puVar32 + -0x110),root_00,root,0x10)" identifier = (cast_expression "(bin_tree_t *)\n                (**(code **)(puVar32 + -0x10c))(*(undefined4 *)(puVar32 + -0x110),root_00,root,0x10)" ( (type_descriptor "bin_tree_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(puVar32 + -0x10c))(*(undefined4 *)(puVar32 + -0x110),root_00,root,0x10)" (parenthesized_expression "(**(code **)(puVar32 + -0x10c))" ( (pointer_expression "**(code **)(puVar32 + -0x10c)" * (pointer_expression "*(code **)(puVar32 + -0x10c)" * (cast_expression "(code **)(puVar32 + -0x10c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar32 + -0x10c)" ( (binary_expression "puVar32 + -0x10c" identifier + number_literal) ))))) )) (argument_list "(*(undefined4 *)(puVar32 + -0x110),root_00,root,0x10)" ( (pointer_expression "*(undefined4 *)(puVar32 + -0x110)" * (cast_expression "(undefined4 *)(puVar32 + -0x110)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar32 + -0x110)" ( (binary_expression "puVar32 + -0x110" identifier + number_literal) )))) , identifier , identifier , number_literal ))))) ;) }) while (parenthesized_expression "(pbVar16 != (bin_tree_t *)0x0)" ( (binary_expression "pbVar16 != (bin_tree_t *)0x0" identifier != (cast_expression "(bin_tree_t *)0x0" ( (type_descriptor "bin_tree_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;)) (expression_statement "iVar18 = *(int *)(*(int *)(puVar32 + -0x118) + -0x7ed8);" (assignment_expression "iVar18 = *(int *)(*(int *)(puVar32 + -0x118) + -0x7ed8)" identifier = (pointer_expression "*(int *)(*(int *)(puVar32 + -0x118) + -0x7ed8)" * (cast_expression "(int *)(*(int *)(puVar32 + -0x118) + -0x7ed8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar32 + -0x118) + -0x7ed8)" ( (binary_expression "*(int *)(puVar32 + -0x118) + -0x7ed8" (pointer_expression "*(int *)(puVar32 + -0x118)" * (cast_expression "(int *)(puVar32 + -0x118)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar32 + -0x118)" ( (binary_expression "puVar32 + -0x118" identifier + number_literal) )))) + number_literal) ))))) ;) (expression_statement "postorder(root,(_func_reg_errcode_t_void_ptr_bin_tree_t_ptr *)(iVar18 + -0x2cc0),(void *)0x0);" (call_expression "postorder(root,(_func_reg_errcode_t_void_ptr_bin_tree_t_ptr *)(iVar18 + -0x2cc0),(void *)0x0)" identifier (argument_list "(root,(_func_reg_errcode_t_void_ptr_bin_tree_t_ptr *)(iVar18 + -0x2cc0),(void *)0x0)" ( identifier , (cast_expression "(_func_reg_errcode_t_void_ptr_bin_tree_t_ptr *)(iVar18 + -0x2cc0)" ( (type_descriptor "_func_reg_errcode_t_void_ptr_bin_tree_t_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar18 + -0x2cc0)" ( (binary_expression "iVar18 + -0x2cc0" identifier + number_literal) ))) , (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) ))) ;) (expression_statement "postorder(root_00,(_func_reg_errcode_t_void_ptr_bin_tree_t_ptr *)(iVar18 + -0x2cc0),(void *)0x0)\n    ;" (call_expression "postorder(root_00,(_func_reg_errcode_t_void_ptr_bin_tree_t_ptr *)(iVar18 + -0x2cc0),(void *)0x0)" identifier (argument_list "(root_00,(_func_reg_errcode_t_void_ptr_bin_tree_t_ptr *)(iVar18 + -0x2cc0),(void *)0x0)" ( identifier , (cast_expression "(_func_reg_errcode_t_void_ptr_bin_tree_t_ptr *)(iVar18 + -0x2cc0)" ( (type_descriptor "_func_reg_errcode_t_void_ptr_bin_tree_t_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar18 + -0x2cc0)" ( (binary_expression "iVar18 + -0x2cc0" identifier + number_literal) ))) , (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) ))) ;) (expression_statement "*piVar27 = 0xc;" (assignment_expression "*piVar27 = 0xc" (pointer_expression "*piVar27" * identifier) = number_literal) ;) (expression_statement "pbVar16 = (bin_tree_t *)0x0;" (assignment_expression "pbVar16 = (bin_tree_t *)0x0" identifier = (cast_expression "(bin_tree_t *)0x0" ( (type_descriptor "bin_tree_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) })) (return_statement "return (reg_errcode_t)pbVar16;" return (cast_expression "(reg_errcode_t)pbVar16" ( (type_descriptor "reg_errcode_t" type_identifier) ) identifier) ;) })))
(translation_unit "int FUN_000216b4(undefined4 *param_1,int *******param_2,int *******param_3,int *******param_4,\n                char param_5)\n\n{\n  bool bVar1;\n  int iVar2;\n  int iVar3;\n  int *******pppppppiVar4;\n  code *pcVar5;\n  code *pcVar6;\n  code *pcVar7;\n  int *****pppppiVar8;\n  int *******pppppppiVar9;\n  int *piVar10;\n  int *******pppppppiVar11;\n  int ******ppppppiVar12;\n  int iVar13;\n  int iVar14;\n  int *******pppppppiVar15;\n  int ******ppppppiVar16;\n  int *******pppppppiVar17;\n  int *******pppppppiVar18;\n  int *******pppppppiVar19;\n  int *******unaff_s0;\n  int *******unaff_s2;\n  int iVar20;\n  int ******unaff_s3;\n  int iVar21;\n  int **unaff_s5;\n  int iVar22;\n  int *******unaff_s6;\n  int *piVar23;\n  undefined *puVar24;\n  undefined1 *puVar25;\n  undefined1 *puVar26;\n  undefined4 uVar27;\n  undefined1 auStack_98 [24];\n  int *******local_70;\n  int *******local_48;\n  int ******local_44;\n  undefined4 local_40;\n  undefined4 local_3c;\n  int *local_38;\n  undefined4 local_34;\n  int local_30;\n  int local_2c;\n  \n  puVar25 = auStack_98;\n  puVar26 = auStack_98;\n  local_2c = *(int *)PTR___stack_chk_guard_0003e348;\n  piVar23 = (int *)*param_1;\n  local_38 = (int *)0x0;\n  local_34 = 2;\n  local_30 = 0;\n  pppppppiVar17 = param_2;\n  pppppppiVar18 = param_3;\n  pppppppiVar19 = param_4;\n  if (param_5 == '\0') {\n    unaff_s5 = (int **)0x0;\n  }\n  else {\n    local_30 = (*(code *)PTR_malloc_0003e2f8)(0x30);\n    if (local_30 == 0) {\n      iVar13 = 0xc;\n      goto LAB_00021ed8;\n    }\n    unaff_s5 = &local_38;\n  }\n  unaff_s0 = (int *******)piVar23[0x12];\n  local_44 = (int ******)0x0;\n  local_40 = 0;\n  local_3c = 0;\n  pppppppiVar15 = (int *******)((int)param_3 * 8);\n  if (pppppppiVar15 < (int *******)0xfc0) {\n    puVar25 = auStack_98 + (int)param_3 * -8;\n    local_70 = (int *******)(&stack0xffffff80 + (int)param_3 * -8);\n    bVar1 = false;\n  }\n  else {\n    local_70 = (int *******)(*(code *)PTR_malloc_0003e2f8)(pppppppiVar15);\n    bVar1 = true;\n    if (local_70 == (int *******)0x0) {\n      FUN_0001eb94(unaff_s5);\n      iVar13 = 0xc;\n      puVar26 = auStack_98;\n      goto LAB_00021ed8;\n    }\n  }\n  pppppppiVar17 = param_4;\n  pppppppiVar18 = pppppppiVar15;\n  (*(code *)PTR_memcpy_0003e34c)(local_70);\n  local_48 = (int *******)*param_4;\n  pcVar5 = (code *)(PTR_DAT_0003e238 + -0x10e8);\n  pcVar6 = (code *)(PTR_DAT_0003e238 + -0x6f00);\n  pcVar7 = (code *)(PTR_DAT_0003e238 + -0x589c);\n  while (unaff_s2 = local_48, puVar24 = PTR_memcpy_0003e34c, puVar26 = puVar25,\n        (int)local_48 <= (int)param_4[1]) {\n    piVar10 = (int *)(*piVar23 + (int)unaff_s0 * 8);\n    if (*(char *)(piVar10 + 1) == '\b') {\n      iVar13 = *piVar10;\n      if (iVar13 + 1 < (int)param_3) {\n        param_4[(iVar13 + 1) * 2] = (int ******)local_48;\n        (param_4 + (iVar13 + 1) * 2)[1] = (int ******)0xffffffff;\n      }\nLAB_00021cec:\n      pppppppiVar11 = (int *******)param_4[1];\n    }\n    else {\n      if ((*(char *)(piVar10 + 1) != '\t') || (iVar13 = *piVar10 + 1, (int)param_3 <= iVar13))\n      goto LAB_00021cec;\n      pppppppiVar17 = param_4 + iVar13 * 2;\n      if ((int)*pppppppiVar17 < (int)local_48) {\n        pppppppiVar17[1] = (int ******)local_48;\n        pppppppiVar17 = param_4;\n        pppppppiVar18 = pppppppiVar15;\n        (*(code *)puVar24)(local_70);\n        pppppppiVar11 = (int *******)param_4[1];\n      }\n      else {\n        if (((piVar10[1] & 0x1000U) == 0) ||\n           (pppppppiVar18 = pppppppiVar15, local_70[iVar13 * 2] == (int ******)0xffffffff)) {\n          pppppppiVar17[1] = (int ******)local_48;\n          goto LAB_00021cec;\n        }\n        pppppppiVar17 = local_70;\n        (*(code *)PTR_memcpy_0003e34c)(param_4);\n        pppppppiVar11 = (int *******)param_4[1];\n      }\n    }\n    if ((pppppppiVar11 == unaff_s2) && ((int *******)param_2[0x18] == unaff_s0)) {\n      if (unaff_s5 == (int **)0x0) {\n        (*(code *)PTR_free_0003e354)(local_3c);\n        if (bVar1) {\n          (*(code *)PTR_free_0003e354)(local_70);\n          iVar13 = 0;\n        }\n        else {\n          iVar13 = 0;\n        }\n      }\n      else {\n        if (param_3 != (int *******)0x0) {\n          pppppppiVar9 = (int *******)0x0;\n          pppppppiVar18 = (int *******)0xffffffff;\n          pppppppiVar11 = param_4;\n          do {\n            if ((-1 < (int)*pppppppiVar11) &&\n               (pppppppiVar17 = (int *******)pppppppiVar11[1],\n               (int *******)pppppppiVar11[1] == (int *******)0xffffffff)) break;\n            pppppppiVar9 = (int *******)((int)pppppppiVar9 + 1);\n            pppppppiVar11 = pppppppiVar11 + 2;\n            pppppppiVar17 = param_3;\n          } while (param_3 != pppppppiVar9);\n          if (pppppppiVar9 != param_3) {\n            *(int ********)(puVar25 + 0x10) = &local_44;\n            pppppppiVar17 = (int *******)&local_48;\n            pppppppiVar18 = param_3;\n            pppppppiVar19 = param_4;\n            unaff_s0 = (int *******)(*pcVar5)(unaff_s5);\n            goto LAB_00021d04;\n          }\n        }\n        (*(code *)PTR_free_0003e354)(local_3c);\n        if (bVar1) {\n          (*(code *)PTR_free_0003e354)(local_70);\n        }\n        iVar13 = FUN_0001eb94(unaff_s5);\n      }\n      goto LAB_00021ed8;\n    }\nLAB_00021d04:\n    unaff_s2 = (int *******)param_2[0x15];\n    unaff_s3 = (int ******)((int)unaff_s0 * 8);\n    ppppppiVar12 = *unaff_s2 + (int)unaff_s0 * 2;\n    if ((*(byte *)(ppppppiVar12 + 1) & 8) == 0) {\n      if (((uint)ppppppiVar12[1] & 0x800) == 0) {\n        if (*(byte *)(ppppppiVar12 + 1) == 4) {\n          ppppppiVar16 = (param_4 + ((int)*ppppppiVar12 + 1) * 2)[1];\n          ppppppiVar12 = param_4[((int)*ppppppiVar12 + 1) * 2];\n          unaff_s6 = (int *******)((int)ppppppiVar16 - (int)ppppppiVar12);\n          if (unaff_s5 == (int **)0x0) {\n            pppppppiVar17 = unaff_s0;\n            if (unaff_s6 != (int *******)0x0) goto LAB_00021da8;\nLAB_00021dd0:\n            pppppppiVar17 = unaff_s0;\n            iVar13 = (*pcVar7)(&local_44);\n            if (iVar13 == 0) goto LAB_00021b34;\n            pppppppiVar11 = (int *******)*unaff_s2[5][(int)unaff_s0 * 3 + 2];\n            pppppppiVar17 = pppppppiVar11;\n            iVar13 = (*pcVar6)(param_2[0x19][(int)local_48] + 1);\n            if (iVar13 != 0) goto LAB_00021ca8;\n            goto LAB_00021c18;\n          }\n          if ((ppppppiVar12 != (int ******)0xffffffff) && (ppppppiVar16 != (int ******)0xffffffff))\n          {\n            if (unaff_s6 == (int *******)0x0) goto LAB_00021dd0;\n            pppppppiVar17 = (int *******)((int)param_2[1] + (int)local_48);\n            pppppppiVar18 = unaff_s6;\n            iVar13 = (*(code *)PTR_memcmp_0003e338)((int)param_2[1] + (int)ppppppiVar12);\n            if (iVar13 == 0) goto LAB_00021da8;\n          }\n        }\n        else {\nLAB_00021c18:\n          unaff_s6 = local_48;\n          pppppppiVar17 = (int *******)(*unaff_s2 + (int)unaff_s0 * 2);\n          pppppppiVar18 = local_48;\n          iVar13 = FUN_0001c4f8(param_2);\n          if (iVar13 != 0) {\n            pppppppiVar11 = (int *******)unaff_s2[3][(int)unaff_s0];\n            local_48 = (int *******)((int)unaff_s6 + 1);\n            goto LAB_00021c5c;\n          }\n        }\n      }\n      else {\n        pppppppiVar17 = unaff_s0;\n        pppppppiVar18 = param_2;\n        pppppppiVar19 = local_48;\n        unaff_s6 = (int *******)FUN_000200a0(unaff_s2);\n        if (unaff_s6 == (int *******)0x0) goto LAB_00021c18;\nLAB_00021da8:\n        pppppppiVar11 = (int *******)unaff_s2[3][(int)unaff_s0];\n        local_48 = (int *******)((int)unaff_s6 + (int)local_48);\nLAB_00021c5c:\n        unaff_s6 = local_48;\n        if (unaff_s5 == (int **)0x0) {\nLAB_00021ca4:\n          local_40 = 0;\n          goto LAB_00021ca8;\n        }\n        unaff_s6 = (int *******)((int)local_48 * 4);\n        if ((int)local_48 <= (int)param_2[0x17]) {\n          unaff_s6 = (int *******)(param_2[0x19] + (int)local_48);\n          pppppppiVar17 = pppppppiVar11;\n          if ((*unaff_s6 != (int ******)0x0) && (iVar13 = (*pcVar6)(*unaff_s6 + 1), iVar13 != 0))\n          goto LAB_00021ca4;\n        }\n      }\nLAB_00021f3c:\n      unaff_s0 = (int *******)0xffffffff;\n      goto LAB_00021f44;\n    }\n    pppppiVar8 = param_2[0x19][(int)local_48];\n    unaff_s2 = (int *******)(unaff_s2[5] + (int)unaff_s0 * 3);\n    pppppppiVar17 = unaff_s0;\n    iVar13 = (*pcVar7)(&local_44);\n    if (iVar13 == 0) goto LAB_00021b34;\n    unaff_s6 = (int *******)unaff_s2[1];\n    if ((int)unaff_s6 < 1) goto LAB_00021f3c;\n    unaff_s3 = unaff_s2[2];\n    unaff_s2 = (int *******)0x0;\n    unaff_s0 = (int *******)0xffffffff;\n    do {\n      pppppppiVar9 = (int *******)*unaff_s3;\n      pppppppiVar17 = pppppppiVar9;\n      iVar13 = (*pcVar6)(pppppiVar8 + 1);\n      pppppppiVar11 = unaff_s0;\n      if ((iVar13 != 0) &&\n         (pppppppiVar17 = unaff_s0, pppppppiVar11 = pppppppiVar9,\n         unaff_s0 != (int *******)0xffffffff)) {\n        iVar13 = (*pcVar6)(&local_44);\n        pppppppiVar4 = local_48;\n        if ((iVar13 == 0) &&\n           (pppppppiVar11 = unaff_s0, unaff_s6 = local_48, unaff_s5 != (int **)0x0)) {\n          unaff_s2 = (int *******)*unaff_s5;\n          *unaff_s5 = (int *)((int)unaff_s2 + 1);\n          pppppppiVar17 = (int *******)unaff_s5[1];\n          if ((int *******)((int)unaff_s2 + 1) == pppppppiVar17) {\n            pppppppiVar17 = (int *******)((int)pppppppiVar17 * 0x30);\n            piVar10 = (int *)(*(code *)PTR_realloc_0003e2fc)(unaff_s5[2]);\n            unaff_s6 = pppppppiVar4;\n            if (piVar10 == (int *)0x0) goto LAB_00021b34;\n            unaff_s5[1] = (int *)((int)unaff_s5[1] << 1);\n            unaff_s5[2] = piVar10;\n          }\n          unaff_s3 = (int ******)((int)unaff_s2 * 0x18);\n          unaff_s5[2][(int)unaff_s2 * 6] = (int)pppppppiVar4;\n          *(int ********)((int)unaff_s3 + (int)(unaff_s5[2] + 1)) = pppppppiVar9;\n          unaff_s2 = (int *******)(unaff_s5[2] + (int)unaff_s2 * 6);\n          ppppppiVar12 = (int ******)(*(code *)PTR_malloc_0003e2f8)(pppppppiVar15);\n          unaff_s2[2] = ppppppiVar12;\n          pppppppiVar18 = pppppppiVar15;\n          unaff_s6 = pppppppiVar15;\n          if (*(int *)((int)unaff_s3 + (int)(unaff_s5[2] + 2)) == 0) goto LAB_00021b34;\n          (*(code *)PTR_memcpy_0003e34c)(*(int *)((int)unaff_s3 + (int)(unaff_s5[2] + 2)),param_4);\n          pppppppiVar17 = &local_44;\n          iVar13 = FUN_0001b67c((int *)((int)unaff_s3 + (int)(unaff_s5[2] + 3)));\n          if (iVar13 != 0) goto LAB_00021b34;\n        }\n        break;\n      }\n      unaff_s2 = (int *******)((int)unaff_s2 + 1);\n      unaff_s3 = unaff_s3 + 1;\n      unaff_s0 = pppppppiVar11;\n    } while (unaff_s6 != unaff_s2);\nLAB_00021ca8:\n    unaff_s0 = pppppppiVar11;\n    if ((int)pppppppiVar11 < 0) {\nLAB_00021f44:\n      if (unaff_s0 == (int *******)&SUB_fffffffe) {\nLAB_00021b34:\n        (*(code *)PTR_free_0003e354)(local_3c);\n        if (bVar1) {\n          (*(code *)PTR_free_0003e354)(local_70);\n        }\n        FUN_0001eb94(unaff_s5);\n        iVar13 = 0xc;\n        goto LAB_00021ed8;\n      }\n      if (unaff_s5 == (int **)0x0) {\n        (*(code *)PTR_free_0003e354)();\n        if (bVar1) {\n          (*(code *)PTR_free_0003e354)(local_70);\n          iVar13 = 1;\n        }\n        else {\n          iVar13 = 1;\n        }\n        goto LAB_00021ed8;\n      }\n      *(int ********)(puVar25 + 0x10) = &local_44;\n      pppppppiVar17 = (int *******)&local_48;\n      pppppppiVar18 = param_3;\n      pppppppiVar19 = param_4;\n      unaff_s0 = (int *******)(*pcVar5)(unaff_s5);\n    }\n  }\n  (*(code *)PTR_free_0003e354)(local_3c);\n  if (bVar1) {\n    (*(code *)PTR_free_0003e354)(local_70);\n  }\n  iVar13 = FUN_0001eb94(unaff_s5);\nLAB_00021ed8:\n  if (local_2c == *(int *)PTR___stack_chk_guard_0003e348) {\n    return iVar13;\n  }\n  pcVar5 = FUN_00021f9c;\n  iVar13 = local_2c;\n  puVar24 = PTR___stack_chk_fail_0003e32c;\n  (*(code *)PTR___stack_chk_fail_0003e32c)();\n  *(code **)(puVar26 + -4) = pcVar5;\n  *(undefined1 **)(puVar26 + -8) = auStack_98;\n  *(int **)(puVar26 + -0xc) = piVar23;\n  *(int ********)(puVar26 + -0x10) = unaff_s6;\n  *(int ***)(puVar26 + -0x14) = unaff_s5;\n  *(int ********)(puVar26 + -0x18) = param_4;\n  *(int *******)(puVar26 + -0x1c) = unaff_s3;\n  *(int ********)(puVar26 + -0x20) = unaff_s2;\n  *(int ********)(puVar26 + -0x24) = param_2;\n  *(int ********)(puVar26 + -0x28) = unaff_s0;\n  *(undefined **)(puVar26 + -0xc0) = puVar24 + 0x24174;\n  *(int *)(puVar26 + -0xac) = iVar13;\n  uVar27 = *(undefined4 *)(puVar26 + 0x14);\n  *(undefined4 *)(puVar26 + -0x2c) = **(undefined4 **)(puVar24 + 0x1c3ac);\n  *(int *******)(puVar26 + -0xb8) = *pppppppiVar17;\n  if (*(byte *)(pppppppiVar18 + 1) < 0x25) {\n                    \n                    \n    iVar13 = (*(code *)(puVar24 + 0x24174 +\n                       *(int *)(*(int *)(puVar24 + 0x1c1ac) + -0x2ac0 +\n                               (uint)*(byte *)(pppppppiVar18 + 1) * 4)))();\n    return iVar13;\n  }\n  iVar13 = *(int *)(puVar26 + -0x2c);\n  if (iVar13 == **(int **)(puVar24 + 0x1c3ac)) {\n    return 0;\n  }\n  pcVar5 = *(code **)(puVar24 + 0x1c390);\n  pcVar6 = FUN_00023824;\n  pppppppiVar15 = pppppppiVar17;\n  (*pcVar5)();\n  *(code **)(puVar26 + -0xe4) = pcVar6;\n  *(undefined4 *)(puVar26 + -0xe8) = uVar27;\n  *(int **)(puVar26 + -0xec) = piVar23;\n  *(undefined4 *)(puVar26 + -0xf0) = 0;\n  *(int ***)(puVar26 + -0xf4) = unaff_s5;\n  *(int ********)(puVar26 + -0xf8) = param_4;\n  *(int *******)(puVar26 + -0xfc) = unaff_s3;\n  *(int ********)(puVar26 + -0x100) = unaff_s2;\n  *(int ********)(puVar26 + -0x104) = param_2;\n  *(int ********)(puVar26 + -0x108) = pppppppiVar17;\n  *(code **)(puVar26 + -0x118) = pcVar5 + 0x228ec;\n  *(int *)(puVar26 + -0xe0) = iVar13;\n  *(int ********)(puVar26 + -0xd4) = pppppppiVar19;\n  iVar21 = *(int *)(puVar26 + -0xd0);\n  piVar23 = *(int **)(puVar26 + -0xcc);\n  *(int *******)(puVar26 + -0x110) = *pppppppiVar15;\n  *(int **)(puVar26 + -0x11c) = piVar23;\n  *(int *)(puVar26 + -0x120) = iVar21;\n  iVar13 = FUN_00021f9c();\n  if ((*piVar23 == 0) || (iVar13 != 0)) {\n    iVar22 = *(int *)(*(int *)(puVar26 + -0x118) + -0x7ed8);\n    *(int *)(puVar26 + -0x10c) = *(int *)(*(int *)(puVar26 + -0x118) + -0x7ed8) + -0x5cb8;\nLAB_0002390c:\n    do {\n      do {\n        iVar20 = iVar13;\n        if ((*(byte *)(pppppppiVar18 + 1) & 0xf7) == 2) {\n          return iVar20;\n        }\n        if ((iVar21 != 0) && (*(byte *)(pppppppiVar18 + 1) == 9)) {\n          return iVar20;\n        }\n        *(int **)(puVar26 + -0x11c) = piVar23;\n        *(int *)(puVar26 + -0x120) = iVar21;\n        iVar14 = (*(code *)(iVar22 + 0x1f9c))\n                           (*(undefined4 *)(puVar26 + -0xe0),pppppppiVar15,pppppppiVar18,\n                            *(undefined4 *)(puVar26 + -0xd4));\n        if (*piVar23 == 0) {\n          iVar13 = iVar14;\n          iVar2 = iVar20;\n          iVar3 = iVar14;\n          if (iVar20 == 0) goto LAB_0002390c;\n        }\n        else {\n          iVar2 = iVar14;\n          iVar3 = iVar20;\n          if (iVar14 == 0) {\n            if (iVar20 == 0) {\n              return 0;\n            }\n            FUN_0001920c(iVar20,*(int *)(*(int *)(puVar26 + -0x118) + -0x7ed8) + -0x2cc0,0);\n            return 0;\n          }\n        }\n        iVar13 = iVar2;\n      } while (iVar3 == 0);\n      iVar13 = (**(code **)(puVar26 + -0x10c))(*(undefined4 *)(puVar26 + -0x110),iVar20,iVar14,0x10)\n      ;\n    } while (iVar13 != 0);\n    iVar13 = *(int *)(*(int *)(puVar26 + -0x118) + -0x7ed8);\n    FUN_0001920c(iVar14,iVar13 + -0x2cc0,0);\n    FUN_0001920c(iVar20,iVar13 + -0x2cc0,0);\n    *piVar23 = 0xc;\n    iVar13 = 0;\n  }\n  return iVar13;\n}\n\n" (function_definition "int FUN_000216b4(undefined4 *param_1,int *******param_2,int *******param_3,int *******param_4,\n                char param_5)\n\n{\n  bool bVar1;\n  int iVar2;\n  int iVar3;\n  int *******pppppppiVar4;\n  code *pcVar5;\n  code *pcVar6;\n  code *pcVar7;\n  int *****pppppiVar8;\n  int *******pppppppiVar9;\n  int *piVar10;\n  int *******pppppppiVar11;\n  int ******ppppppiVar12;\n  int iVar13;\n  int iVar14;\n  int *******pppppppiVar15;\n  int ******ppppppiVar16;\n  int *******pppppppiVar17;\n  int *******pppppppiVar18;\n  int *******pppppppiVar19;\n  int *******unaff_s0;\n  int *******unaff_s2;\n  int iVar20;\n  int ******unaff_s3;\n  int iVar21;\n  int **unaff_s5;\n  int iVar22;\n  int *******unaff_s6;\n  int *piVar23;\n  undefined *puVar24;\n  undefined1 *puVar25;\n  undefined1 *puVar26;\n  undefined4 uVar27;\n  undefined1 auStack_98 [24];\n  int *******local_70;\n  int *******local_48;\n  int ******local_44;\n  undefined4 local_40;\n  undefined4 local_3c;\n  int *local_38;\n  undefined4 local_34;\n  int local_30;\n  int local_2c;\n  \n  puVar25 = auStack_98;\n  puVar26 = auStack_98;\n  local_2c = *(int *)PTR___stack_chk_guard_0003e348;\n  piVar23 = (int *)*param_1;\n  local_38 = (int *)0x0;\n  local_34 = 2;\n  local_30 = 0;\n  pppppppiVar17 = param_2;\n  pppppppiVar18 = param_3;\n  pppppppiVar19 = param_4;\n  if (param_5 == '\0') {\n    unaff_s5 = (int **)0x0;\n  }\n  else {\n    local_30 = (*(code *)PTR_malloc_0003e2f8)(0x30);\n    if (local_30 == 0) {\n      iVar13 = 0xc;\n      goto LAB_00021ed8;\n    }\n    unaff_s5 = &local_38;\n  }\n  unaff_s0 = (int *******)piVar23[0x12];\n  local_44 = (int ******)0x0;\n  local_40 = 0;\n  local_3c = 0;\n  pppppppiVar15 = (int *******)((int)param_3 * 8);\n  if (pppppppiVar15 < (int *******)0xfc0) {\n    puVar25 = auStack_98 + (int)param_3 * -8;\n    local_70 = (int *******)(&stack0xffffff80 + (int)param_3 * -8);\n    bVar1 = false;\n  }\n  else {\n    local_70 = (int *******)(*(code *)PTR_malloc_0003e2f8)(pppppppiVar15);\n    bVar1 = true;\n    if (local_70 == (int *******)0x0) {\n      FUN_0001eb94(unaff_s5);\n      iVar13 = 0xc;\n      puVar26 = auStack_98;\n      goto LAB_00021ed8;\n    }\n  }\n  pppppppiVar17 = param_4;\n  pppppppiVar18 = pppppppiVar15;\n  (*(code *)PTR_memcpy_0003e34c)(local_70);\n  local_48 = (int *******)*param_4;\n  pcVar5 = (code *)(PTR_DAT_0003e238 + -0x10e8);\n  pcVar6 = (code *)(PTR_DAT_0003e238 + -0x6f00);\n  pcVar7 = (code *)(PTR_DAT_0003e238 + -0x589c);\n  while (unaff_s2 = local_48, puVar24 = PTR_memcpy_0003e34c, puVar26 = puVar25,\n        (int)local_48 <= (int)param_4[1]) {\n    piVar10 = (int *)(*piVar23 + (int)unaff_s0 * 8);\n    if (*(char *)(piVar10 + 1) == '\b') {\n      iVar13 = *piVar10;\n      if (iVar13 + 1 < (int)param_3) {\n        param_4[(iVar13 + 1) * 2] = (int ******)local_48;\n        (param_4 + (iVar13 + 1) * 2)[1] = (int ******)0xffffffff;\n      }\nLAB_00021cec:\n      pppppppiVar11 = (int *******)param_4[1];\n    }\n    else {\n      if ((*(char *)(piVar10 + 1) != '\t') || (iVar13 = *piVar10 + 1, (int)param_3 <= iVar13))\n      goto LAB_00021cec;\n      pppppppiVar17 = param_4 + iVar13 * 2;\n      if ((int)*pppppppiVar17 < (int)local_48) {\n        pppppppiVar17[1] = (int ******)local_48;\n        pppppppiVar17 = param_4;\n        pppppppiVar18 = pppppppiVar15;\n        (*(code *)puVar24)(local_70);\n        pppppppiVar11 = (int *******)param_4[1];\n      }\n      else {\n        if (((piVar10[1] & 0x1000U) == 0) ||\n           (pppppppiVar18 = pppppppiVar15, local_70[iVar13 * 2] == (int ******)0xffffffff)) {\n          pppppppiVar17[1] = (int ******)local_48;\n          goto LAB_00021cec;\n        }\n        pppppppiVar17 = local_70;\n        (*(code *)PTR_memcpy_0003e34c)(param_4);\n        pppppppiVar11 = (int *******)param_4[1];\n      }\n    }\n    if ((pppppppiVar11 == unaff_s2) && ((int *******)param_2[0x18] == unaff_s0)) {\n      if (unaff_s5 == (int **)0x0) {\n        (*(code *)PTR_free_0003e354)(local_3c);\n        if (bVar1) {\n          (*(code *)PTR_free_0003e354)(local_70);\n          iVar13 = 0;\n        }\n        else {\n          iVar13 = 0;\n        }\n      }\n      else {\n        if (param_3 != (int *******)0x0) {\n          pppppppiVar9 = (int *******)0x0;\n          pppppppiVar18 = (int *******)0xffffffff;\n          pppppppiVar11 = param_4;\n          do {\n            if ((-1 < (int)*pppppppiVar11) &&\n               (pppppppiVar17 = (int *******)pppppppiVar11[1],\n               (int *******)pppppppiVar11[1] == (int *******)0xffffffff)) break;\n            pppppppiVar9 = (int *******)((int)pppppppiVar9 + 1);\n            pppppppiVar11 = pppppppiVar11 + 2;\n            pppppppiVar17 = param_3;\n          } while (param_3 != pppppppiVar9);\n          if (pppppppiVar9 != param_3) {\n            *(int ********)(puVar25 + 0x10) = &local_44;\n            pppppppiVar17 = (int *******)&local_48;\n            pppppppiVar18 = param_3;\n            pppppppiVar19 = param_4;\n            unaff_s0 = (int *******)(*pcVar5)(unaff_s5);\n            goto LAB_00021d04;\n          }\n        }\n        (*(code *)PTR_free_0003e354)(local_3c);\n        if (bVar1) {\n          (*(code *)PTR_free_0003e354)(local_70);\n        }\n        iVar13 = FUN_0001eb94(unaff_s5);\n      }\n      goto LAB_00021ed8;\n    }\nLAB_00021d04:\n    unaff_s2 = (int *******)param_2[0x15];\n    unaff_s3 = (int ******)((int)unaff_s0 * 8);\n    ppppppiVar12 = *unaff_s2 + (int)unaff_s0 * 2;\n    if ((*(byte *)(ppppppiVar12 + 1) & 8) == 0) {\n      if (((uint)ppppppiVar12[1] & 0x800) == 0) {\n        if (*(byte *)(ppppppiVar12 + 1) == 4) {\n          ppppppiVar16 = (param_4 + ((int)*ppppppiVar12 + 1) * 2)[1];\n          ppppppiVar12 = param_4[((int)*ppppppiVar12 + 1) * 2];\n          unaff_s6 = (int *******)((int)ppppppiVar16 - (int)ppppppiVar12);\n          if (unaff_s5 == (int **)0x0) {\n            pppppppiVar17 = unaff_s0;\n            if (unaff_s6 != (int *******)0x0) goto LAB_00021da8;\nLAB_00021dd0:\n            pppppppiVar17 = unaff_s0;\n            iVar13 = (*pcVar7)(&local_44);\n            if (iVar13 == 0) goto LAB_00021b34;\n            pppppppiVar11 = (int *******)*unaff_s2[5][(int)unaff_s0 * 3 + 2];\n            pppppppiVar17 = pppppppiVar11;\n            iVar13 = (*pcVar6)(param_2[0x19][(int)local_48] + 1);\n            if (iVar13 != 0) goto LAB_00021ca8;\n            goto LAB_00021c18;\n          }\n          if ((ppppppiVar12 != (int ******)0xffffffff) && (ppppppiVar16 != (int ******)0xffffffff))\n          {\n            if (unaff_s6 == (int *******)0x0) goto LAB_00021dd0;\n            pppppppiVar17 = (int *******)((int)param_2[1] + (int)local_48);\n            pppppppiVar18 = unaff_s6;\n            iVar13 = (*(code *)PTR_memcmp_0003e338)((int)param_2[1] + (int)ppppppiVar12);\n            if (iVar13 == 0) goto LAB_00021da8;\n          }\n        }\n        else {\nLAB_00021c18:\n          unaff_s6 = local_48;\n          pppppppiVar17 = (int *******)(*unaff_s2 + (int)unaff_s0 * 2);\n          pppppppiVar18 = local_48;\n          iVar13 = FUN_0001c4f8(param_2);\n          if (iVar13 != 0) {\n            pppppppiVar11 = (int *******)unaff_s2[3][(int)unaff_s0];\n            local_48 = (int *******)((int)unaff_s6 + 1);\n            goto LAB_00021c5c;\n          }\n        }\n      }\n      else {\n        pppppppiVar17 = unaff_s0;\n        pppppppiVar18 = param_2;\n        pppppppiVar19 = local_48;\n        unaff_s6 = (int *******)FUN_000200a0(unaff_s2);\n        if (unaff_s6 == (int *******)0x0) goto LAB_00021c18;\nLAB_00021da8:\n        pppppppiVar11 = (int *******)unaff_s2[3][(int)unaff_s0];\n        local_48 = (int *******)((int)unaff_s6 + (int)local_48);\nLAB_00021c5c:\n        unaff_s6 = local_48;\n        if (unaff_s5 == (int **)0x0) {\nLAB_00021ca4:\n          local_40 = 0;\n          goto LAB_00021ca8;\n        }\n        unaff_s6 = (int *******)((int)local_48 * 4);\n        if ((int)local_48 <= (int)param_2[0x17]) {\n          unaff_s6 = (int *******)(param_2[0x19] + (int)local_48);\n          pppppppiVar17 = pppppppiVar11;\n          if ((*unaff_s6 != (int ******)0x0) && (iVar13 = (*pcVar6)(*unaff_s6 + 1), iVar13 != 0))\n          goto LAB_00021ca4;\n        }\n      }\nLAB_00021f3c:\n      unaff_s0 = (int *******)0xffffffff;\n      goto LAB_00021f44;\n    }\n    pppppiVar8 = param_2[0x19][(int)local_48];\n    unaff_s2 = (int *******)(unaff_s2[5] + (int)unaff_s0 * 3);\n    pppppppiVar17 = unaff_s0;\n    iVar13 = (*pcVar7)(&local_44);\n    if (iVar13 == 0) goto LAB_00021b34;\n    unaff_s6 = (int *******)unaff_s2[1];\n    if ((int)unaff_s6 < 1) goto LAB_00021f3c;\n    unaff_s3 = unaff_s2[2];\n    unaff_s2 = (int *******)0x0;\n    unaff_s0 = (int *******)0xffffffff;\n    do {\n      pppppppiVar9 = (int *******)*unaff_s3;\n      pppppppiVar17 = pppppppiVar9;\n      iVar13 = (*pcVar6)(pppppiVar8 + 1);\n      pppppppiVar11 = unaff_s0;\n      if ((iVar13 != 0) &&\n         (pppppppiVar17 = unaff_s0, pppppppiVar11 = pppppppiVar9,\n         unaff_s0 != (int *******)0xffffffff)) {\n        iVar13 = (*pcVar6)(&local_44);\n        pppppppiVar4 = local_48;\n        if ((iVar13 == 0) &&\n           (pppppppiVar11 = unaff_s0, unaff_s6 = local_48, unaff_s5 != (int **)0x0)) {\n          unaff_s2 = (int *******)*unaff_s5;\n          *unaff_s5 = (int *)((int)unaff_s2 + 1);\n          pppppppiVar17 = (int *******)unaff_s5[1];\n          if ((int *******)((int)unaff_s2 + 1) == pppppppiVar17) {\n            pppppppiVar17 = (int *******)((int)pppppppiVar17 * 0x30);\n            piVar10 = (int *)(*(code *)PTR_realloc_0003e2fc)(unaff_s5[2]);\n            unaff_s6 = pppppppiVar4;\n            if (piVar10 == (int *)0x0) goto LAB_00021b34;\n            unaff_s5[1] = (int *)((int)unaff_s5[1] << 1);\n            unaff_s5[2] = piVar10;\n          }\n          unaff_s3 = (int ******)((int)unaff_s2 * 0x18);\n          unaff_s5[2][(int)unaff_s2 * 6] = (int)pppppppiVar4;\n          *(int ********)((int)unaff_s3 + (int)(unaff_s5[2] + 1)) = pppppppiVar9;\n          unaff_s2 = (int *******)(unaff_s5[2] + (int)unaff_s2 * 6);\n          ppppppiVar12 = (int ******)(*(code *)PTR_malloc_0003e2f8)(pppppppiVar15);\n          unaff_s2[2] = ppppppiVar12;\n          pppppppiVar18 = pppppppiVar15;\n          unaff_s6 = pppppppiVar15;\n          if (*(int *)((int)unaff_s3 + (int)(unaff_s5[2] + 2)) == 0) goto LAB_00021b34;\n          (*(code *)PTR_memcpy_0003e34c)(*(int *)((int)unaff_s3 + (int)(unaff_s5[2] + 2)),param_4);\n          pppppppiVar17 = &local_44;\n          iVar13 = FUN_0001b67c((int *)((int)unaff_s3 + (int)(unaff_s5[2] + 3)));\n          if (iVar13 != 0) goto LAB_00021b34;\n        }\n        break;\n      }\n      unaff_s2 = (int *******)((int)unaff_s2 + 1);\n      unaff_s3 = unaff_s3 + 1;\n      unaff_s0 = pppppppiVar11;\n    } while (unaff_s6 != unaff_s2);\nLAB_00021ca8:\n    unaff_s0 = pppppppiVar11;\n    if ((int)pppppppiVar11 < 0) {\nLAB_00021f44:\n      if (unaff_s0 == (int *******)&SUB_fffffffe) {\nLAB_00021b34:\n        (*(code *)PTR_free_0003e354)(local_3c);\n        if (bVar1) {\n          (*(code *)PTR_free_0003e354)(local_70);\n        }\n        FUN_0001eb94(unaff_s5);\n        iVar13 = 0xc;\n        goto LAB_00021ed8;\n      }\n      if (unaff_s5 == (int **)0x0) {\n        (*(code *)PTR_free_0003e354)();\n        if (bVar1) {\n          (*(code *)PTR_free_0003e354)(local_70);\n          iVar13 = 1;\n        }\n        else {\n          iVar13 = 1;\n        }\n        goto LAB_00021ed8;\n      }\n      *(int ********)(puVar25 + 0x10) = &local_44;\n      pppppppiVar17 = (int *******)&local_48;\n      pppppppiVar18 = param_3;\n      pppppppiVar19 = param_4;\n      unaff_s0 = (int *******)(*pcVar5)(unaff_s5);\n    }\n  }\n  (*(code *)PTR_free_0003e354)(local_3c);\n  if (bVar1) {\n    (*(code *)PTR_free_0003e354)(local_70);\n  }\n  iVar13 = FUN_0001eb94(unaff_s5);\nLAB_00021ed8:\n  if (local_2c == *(int *)PTR___stack_chk_guard_0003e348) {\n    return iVar13;\n  }\n  pcVar5 = FUN_00021f9c;\n  iVar13 = local_2c;\n  puVar24 = PTR___stack_chk_fail_0003e32c;\n  (*(code *)PTR___stack_chk_fail_0003e32c)();\n  *(code **)(puVar26 + -4) = pcVar5;\n  *(undefined1 **)(puVar26 + -8) = auStack_98;\n  *(int **)(puVar26 + -0xc) = piVar23;\n  *(int ********)(puVar26 + -0x10) = unaff_s6;\n  *(int ***)(puVar26 + -0x14) = unaff_s5;\n  *(int ********)(puVar26 + -0x18) = param_4;\n  *(int *******)(puVar26 + -0x1c) = unaff_s3;\n  *(int ********)(puVar26 + -0x20) = unaff_s2;\n  *(int ********)(puVar26 + -0x24) = param_2;\n  *(int ********)(puVar26 + -0x28) = unaff_s0;\n  *(undefined **)(puVar26 + -0xc0) = puVar24 + 0x24174;\n  *(int *)(puVar26 + -0xac) = iVar13;\n  uVar27 = *(undefined4 *)(puVar26 + 0x14);\n  *(undefined4 *)(puVar26 + -0x2c) = **(undefined4 **)(puVar24 + 0x1c3ac);\n  *(int *******)(puVar26 + -0xb8) = *pppppppiVar17;\n  if (*(byte *)(pppppppiVar18 + 1) < 0x25) {\n                    \n                    \n    iVar13 = (*(code *)(puVar24 + 0x24174 +\n                       *(int *)(*(int *)(puVar24 + 0x1c1ac) + -0x2ac0 +\n                               (uint)*(byte *)(pppppppiVar18 + 1) * 4)))();\n    return iVar13;\n  }\n  iVar13 = *(int *)(puVar26 + -0x2c);\n  if (iVar13 == **(int **)(puVar24 + 0x1c3ac)) {\n    return 0;\n  }\n  pcVar5 = *(code **)(puVar24 + 0x1c390);\n  pcVar6 = FUN_00023824;\n  pppppppiVar15 = pppppppiVar17;\n  (*pcVar5)();\n  *(code **)(puVar26 + -0xe4) = pcVar6;\n  *(undefined4 *)(puVar26 + -0xe8) = uVar27;\n  *(int **)(puVar26 + -0xec) = piVar23;\n  *(undefined4 *)(puVar26 + -0xf0) = 0;\n  *(int ***)(puVar26 + -0xf4) = unaff_s5;\n  *(int ********)(puVar26 + -0xf8) = param_4;\n  *(int *******)(puVar26 + -0xfc) = unaff_s3;\n  *(int ********)(puVar26 + -0x100) = unaff_s2;\n  *(int ********)(puVar26 + -0x104) = param_2;\n  *(int ********)(puVar26 + -0x108) = pppppppiVar17;\n  *(code **)(puVar26 + -0x118) = pcVar5 + 0x228ec;\n  *(int *)(puVar26 + -0xe0) = iVar13;\n  *(int ********)(puVar26 + -0xd4) = pppppppiVar19;\n  iVar21 = *(int *)(puVar26 + -0xd0);\n  piVar23 = *(int **)(puVar26 + -0xcc);\n  *(int *******)(puVar26 + -0x110) = *pppppppiVar15;\n  *(int **)(puVar26 + -0x11c) = piVar23;\n  *(int *)(puVar26 + -0x120) = iVar21;\n  iVar13 = FUN_00021f9c();\n  if ((*piVar23 == 0) || (iVar13 != 0)) {\n    iVar22 = *(int *)(*(int *)(puVar26 + -0x118) + -0x7ed8);\n    *(int *)(puVar26 + -0x10c) = *(int *)(*(int *)(puVar26 + -0x118) + -0x7ed8) + -0x5cb8;\nLAB_0002390c:\n    do {\n      do {\n        iVar20 = iVar13;\n        if ((*(byte *)(pppppppiVar18 + 1) & 0xf7) == 2) {\n          return iVar20;\n        }\n        if ((iVar21 != 0) && (*(byte *)(pppppppiVar18 + 1) == 9)) {\n          return iVar20;\n        }\n        *(int **)(puVar26 + -0x11c) = piVar23;\n        *(int *)(puVar26 + -0x120) = iVar21;\n        iVar14 = (*(code *)(iVar22 + 0x1f9c))\n                           (*(undefined4 *)(puVar26 + -0xe0),pppppppiVar15,pppppppiVar18,\n                            *(undefined4 *)(puVar26 + -0xd4));\n        if (*piVar23 == 0) {\n          iVar13 = iVar14;\n          iVar2 = iVar20;\n          iVar3 = iVar14;\n          if (iVar20 == 0) goto LAB_0002390c;\n        }\n        else {\n          iVar2 = iVar14;\n          iVar3 = iVar20;\n          if (iVar14 == 0) {\n            if (iVar20 == 0) {\n              return 0;\n            }\n            FUN_0001920c(iVar20,*(int *)(*(int *)(puVar26 + -0x118) + -0x7ed8) + -0x2cc0,0);\n            return 0;\n          }\n        }\n        iVar13 = iVar2;\n      } while (iVar3 == 0);\n      iVar13 = (**(code **)(puVar26 + -0x10c))(*(undefined4 *)(puVar26 + -0x110),iVar20,iVar14,0x10)\n      ;\n    } while (iVar13 != 0);\n    iVar13 = *(int *)(*(int *)(puVar26 + -0x118) + -0x7ed8);\n    FUN_0001920c(iVar14,iVar13 + -0x2cc0,0);\n    FUN_0001920c(iVar20,iVar13 + -0x2cc0,0);\n    *piVar23 = 0xc;\n    iVar13 = 0;\n  }\n  return iVar13;\n}" primitive_type (function_declarator "FUN_000216b4(undefined4 *param_1,int *******param_2,int *******param_3,int *******param_4,\n                char param_5)" identifier (parameter_list "(undefined4 *param_1,int *******param_2,int *******param_3,int *******param_4,\n                char param_5)" ( (parameter_declaration "undefined4 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int *******param_2" primitive_type (pointer_declarator "*******param_2" * (pointer_declarator "******param_2" * (pointer_declarator "*****param_2" * (pointer_declarator "****param_2" * (pointer_declarator "***param_2" * (pointer_declarator "**param_2" * (pointer_declarator "*param_2" * identifier)))))))) , (parameter_declaration "int *******param_3" primitive_type (pointer_declarator "*******param_3" * (pointer_declarator "******param_3" * (pointer_declarator "*****param_3" * (pointer_declarator "****param_3" * (pointer_declarator "***param_3" * (pointer_declarator "**param_3" * (pointer_declarator "*param_3" * identifier)))))))) , (parameter_declaration "int *******param_4" primitive_type (pointer_declarator "*******param_4" * (pointer_declarator "******param_4" * (pointer_declarator "*****param_4" * (pointer_declarator "****param_4" * (pointer_declarator "***param_4" * (pointer_declarator "**param_4" * (pointer_declarator "*param_4" * identifier)))))))) , (parameter_declaration "char param_5" primitive_type identifier) ))) (compound_statement "{\n  bool bVar1;\n  int iVar2;\n  int iVar3;\n  int *******pppppppiVar4;\n  code *pcVar5;\n  code *pcVar6;\n  code *pcVar7;\n  int *****pppppiVar8;\n  int *******pppppppiVar9;\n  int *piVar10;\n  int *******pppppppiVar11;\n  int ******ppppppiVar12;\n  int iVar13;\n  int iVar14;\n  int *******pppppppiVar15;\n  int ******ppppppiVar16;\n  int *******pppppppiVar17;\n  int *******pppppppiVar18;\n  int *******pppppppiVar19;\n  int *******unaff_s0;\n  int *******unaff_s2;\n  int iVar20;\n  int ******unaff_s3;\n  int iVar21;\n  int **unaff_s5;\n  int iVar22;\n  int *******unaff_s6;\n  int *piVar23;\n  undefined *puVar24;\n  undefined1 *puVar25;\n  undefined1 *puVar26;\n  undefined4 uVar27;\n  undefined1 auStack_98 [24];\n  int *******local_70;\n  int *******local_48;\n  int ******local_44;\n  undefined4 local_40;\n  undefined4 local_3c;\n  int *local_38;\n  undefined4 local_34;\n  int local_30;\n  int local_2c;\n  \n  puVar25 = auStack_98;\n  puVar26 = auStack_98;\n  local_2c = *(int *)PTR___stack_chk_guard_0003e348;\n  piVar23 = (int *)*param_1;\n  local_38 = (int *)0x0;\n  local_34 = 2;\n  local_30 = 0;\n  pppppppiVar17 = param_2;\n  pppppppiVar18 = param_3;\n  pppppppiVar19 = param_4;\n  if (param_5 == '\0') {\n    unaff_s5 = (int **)0x0;\n  }\n  else {\n    local_30 = (*(code *)PTR_malloc_0003e2f8)(0x30);\n    if (local_30 == 0) {\n      iVar13 = 0xc;\n      goto LAB_00021ed8;\n    }\n    unaff_s5 = &local_38;\n  }\n  unaff_s0 = (int *******)piVar23[0x12];\n  local_44 = (int ******)0x0;\n  local_40 = 0;\n  local_3c = 0;\n  pppppppiVar15 = (int *******)((int)param_3 * 8);\n  if (pppppppiVar15 < (int *******)0xfc0) {\n    puVar25 = auStack_98 + (int)param_3 * -8;\n    local_70 = (int *******)(&stack0xffffff80 + (int)param_3 * -8);\n    bVar1 = false;\n  }\n  else {\n    local_70 = (int *******)(*(code *)PTR_malloc_0003e2f8)(pppppppiVar15);\n    bVar1 = true;\n    if (local_70 == (int *******)0x0) {\n      FUN_0001eb94(unaff_s5);\n      iVar13 = 0xc;\n      puVar26 = auStack_98;\n      goto LAB_00021ed8;\n    }\n  }\n  pppppppiVar17 = param_4;\n  pppppppiVar18 = pppppppiVar15;\n  (*(code *)PTR_memcpy_0003e34c)(local_70);\n  local_48 = (int *******)*param_4;\n  pcVar5 = (code *)(PTR_DAT_0003e238 + -0x10e8);\n  pcVar6 = (code *)(PTR_DAT_0003e238 + -0x6f00);\n  pcVar7 = (code *)(PTR_DAT_0003e238 + -0x589c);\n  while (unaff_s2 = local_48, puVar24 = PTR_memcpy_0003e34c, puVar26 = puVar25,\n        (int)local_48 <= (int)param_4[1]) {\n    piVar10 = (int *)(*piVar23 + (int)unaff_s0 * 8);\n    if (*(char *)(piVar10 + 1) == '\b') {\n      iVar13 = *piVar10;\n      if (iVar13 + 1 < (int)param_3) {\n        param_4[(iVar13 + 1) * 2] = (int ******)local_48;\n        (param_4 + (iVar13 + 1) * 2)[1] = (int ******)0xffffffff;\n      }\nLAB_00021cec:\n      pppppppiVar11 = (int *******)param_4[1];\n    }\n    else {\n      if ((*(char *)(piVar10 + 1) != '\t') || (iVar13 = *piVar10 + 1, (int)param_3 <= iVar13))\n      goto LAB_00021cec;\n      pppppppiVar17 = param_4 + iVar13 * 2;\n      if ((int)*pppppppiVar17 < (int)local_48) {\n        pppppppiVar17[1] = (int ******)local_48;\n        pppppppiVar17 = param_4;\n        pppppppiVar18 = pppppppiVar15;\n        (*(code *)puVar24)(local_70);\n        pppppppiVar11 = (int *******)param_4[1];\n      }\n      else {\n        if (((piVar10[1] & 0x1000U) == 0) ||\n           (pppppppiVar18 = pppppppiVar15, local_70[iVar13 * 2] == (int ******)0xffffffff)) {\n          pppppppiVar17[1] = (int ******)local_48;\n          goto LAB_00021cec;\n        }\n        pppppppiVar17 = local_70;\n        (*(code *)PTR_memcpy_0003e34c)(param_4);\n        pppppppiVar11 = (int *******)param_4[1];\n      }\n    }\n    if ((pppppppiVar11 == unaff_s2) && ((int *******)param_2[0x18] == unaff_s0)) {\n      if (unaff_s5 == (int **)0x0) {\n        (*(code *)PTR_free_0003e354)(local_3c);\n        if (bVar1) {\n          (*(code *)PTR_free_0003e354)(local_70);\n          iVar13 = 0;\n        }\n        else {\n          iVar13 = 0;\n        }\n      }\n      else {\n        if (param_3 != (int *******)0x0) {\n          pppppppiVar9 = (int *******)0x0;\n          pppppppiVar18 = (int *******)0xffffffff;\n          pppppppiVar11 = param_4;\n          do {\n            if ((-1 < (int)*pppppppiVar11) &&\n               (pppppppiVar17 = (int *******)pppppppiVar11[1],\n               (int *******)pppppppiVar11[1] == (int *******)0xffffffff)) break;\n            pppppppiVar9 = (int *******)((int)pppppppiVar9 + 1);\n            pppppppiVar11 = pppppppiVar11 + 2;\n            pppppppiVar17 = param_3;\n          } while (param_3 != pppppppiVar9);\n          if (pppppppiVar9 != param_3) {\n            *(int ********)(puVar25 + 0x10) = &local_44;\n            pppppppiVar17 = (int *******)&local_48;\n            pppppppiVar18 = param_3;\n            pppppppiVar19 = param_4;\n            unaff_s0 = (int *******)(*pcVar5)(unaff_s5);\n            goto LAB_00021d04;\n          }\n        }\n        (*(code *)PTR_free_0003e354)(local_3c);\n        if (bVar1) {\n          (*(code *)PTR_free_0003e354)(local_70);\n        }\n        iVar13 = FUN_0001eb94(unaff_s5);\n      }\n      goto LAB_00021ed8;\n    }\nLAB_00021d04:\n    unaff_s2 = (int *******)param_2[0x15];\n    unaff_s3 = (int ******)((int)unaff_s0 * 8);\n    ppppppiVar12 = *unaff_s2 + (int)unaff_s0 * 2;\n    if ((*(byte *)(ppppppiVar12 + 1) & 8) == 0) {\n      if (((uint)ppppppiVar12[1] & 0x800) == 0) {\n        if (*(byte *)(ppppppiVar12 + 1) == 4) {\n          ppppppiVar16 = (param_4 + ((int)*ppppppiVar12 + 1) * 2)[1];\n          ppppppiVar12 = param_4[((int)*ppppppiVar12 + 1) * 2];\n          unaff_s6 = (int *******)((int)ppppppiVar16 - (int)ppppppiVar12);\n          if (unaff_s5 == (int **)0x0) {\n            pppppppiVar17 = unaff_s0;\n            if (unaff_s6 != (int *******)0x0) goto LAB_00021da8;\nLAB_00021dd0:\n            pppppppiVar17 = unaff_s0;\n            iVar13 = (*pcVar7)(&local_44);\n            if (iVar13 == 0) goto LAB_00021b34;\n            pppppppiVar11 = (int *******)*unaff_s2[5][(int)unaff_s0 * 3 + 2];\n            pppppppiVar17 = pppppppiVar11;\n            iVar13 = (*pcVar6)(param_2[0x19][(int)local_48] + 1);\n            if (iVar13 != 0) goto LAB_00021ca8;\n            goto LAB_00021c18;\n          }\n          if ((ppppppiVar12 != (int ******)0xffffffff) && (ppppppiVar16 != (int ******)0xffffffff))\n          {\n            if (unaff_s6 == (int *******)0x0) goto LAB_00021dd0;\n            pppppppiVar17 = (int *******)((int)param_2[1] + (int)local_48);\n            pppppppiVar18 = unaff_s6;\n            iVar13 = (*(code *)PTR_memcmp_0003e338)((int)param_2[1] + (int)ppppppiVar12);\n            if (iVar13 == 0) goto LAB_00021da8;\n          }\n        }\n        else {\nLAB_00021c18:\n          unaff_s6 = local_48;\n          pppppppiVar17 = (int *******)(*unaff_s2 + (int)unaff_s0 * 2);\n          pppppppiVar18 = local_48;\n          iVar13 = FUN_0001c4f8(param_2);\n          if (iVar13 != 0) {\n            pppppppiVar11 = (int *******)unaff_s2[3][(int)unaff_s0];\n            local_48 = (int *******)((int)unaff_s6 + 1);\n            goto LAB_00021c5c;\n          }\n        }\n      }\n      else {\n        pppppppiVar17 = unaff_s0;\n        pppppppiVar18 = param_2;\n        pppppppiVar19 = local_48;\n        unaff_s6 = (int *******)FUN_000200a0(unaff_s2);\n        if (unaff_s6 == (int *******)0x0) goto LAB_00021c18;\nLAB_00021da8:\n        pppppppiVar11 = (int *******)unaff_s2[3][(int)unaff_s0];\n        local_48 = (int *******)((int)unaff_s6 + (int)local_48);\nLAB_00021c5c:\n        unaff_s6 = local_48;\n        if (unaff_s5 == (int **)0x0) {\nLAB_00021ca4:\n          local_40 = 0;\n          goto LAB_00021ca8;\n        }\n        unaff_s6 = (int *******)((int)local_48 * 4);\n        if ((int)local_48 <= (int)param_2[0x17]) {\n          unaff_s6 = (int *******)(param_2[0x19] + (int)local_48);\n          pppppppiVar17 = pppppppiVar11;\n          if ((*unaff_s6 != (int ******)0x0) && (iVar13 = (*pcVar6)(*unaff_s6 + 1), iVar13 != 0))\n          goto LAB_00021ca4;\n        }\n      }\nLAB_00021f3c:\n      unaff_s0 = (int *******)0xffffffff;\n      goto LAB_00021f44;\n    }\n    pppppiVar8 = param_2[0x19][(int)local_48];\n    unaff_s2 = (int *******)(unaff_s2[5] + (int)unaff_s0 * 3);\n    pppppppiVar17 = unaff_s0;\n    iVar13 = (*pcVar7)(&local_44);\n    if (iVar13 == 0) goto LAB_00021b34;\n    unaff_s6 = (int *******)unaff_s2[1];\n    if ((int)unaff_s6 < 1) goto LAB_00021f3c;\n    unaff_s3 = unaff_s2[2];\n    unaff_s2 = (int *******)0x0;\n    unaff_s0 = (int *******)0xffffffff;\n    do {\n      pppppppiVar9 = (int *******)*unaff_s3;\n      pppppppiVar17 = pppppppiVar9;\n      iVar13 = (*pcVar6)(pppppiVar8 + 1);\n      pppppppiVar11 = unaff_s0;\n      if ((iVar13 != 0) &&\n         (pppppppiVar17 = unaff_s0, pppppppiVar11 = pppppppiVar9,\n         unaff_s0 != (int *******)0xffffffff)) {\n        iVar13 = (*pcVar6)(&local_44);\n        pppppppiVar4 = local_48;\n        if ((iVar13 == 0) &&\n           (pppppppiVar11 = unaff_s0, unaff_s6 = local_48, unaff_s5 != (int **)0x0)) {\n          unaff_s2 = (int *******)*unaff_s5;\n          *unaff_s5 = (int *)((int)unaff_s2 + 1);\n          pppppppiVar17 = (int *******)unaff_s5[1];\n          if ((int *******)((int)unaff_s2 + 1) == pppppppiVar17) {\n            pppppppiVar17 = (int *******)((int)pppppppiVar17 * 0x30);\n            piVar10 = (int *)(*(code *)PTR_realloc_0003e2fc)(unaff_s5[2]);\n            unaff_s6 = pppppppiVar4;\n            if (piVar10 == (int *)0x0) goto LAB_00021b34;\n            unaff_s5[1] = (int *)((int)unaff_s5[1] << 1);\n            unaff_s5[2] = piVar10;\n          }\n          unaff_s3 = (int ******)((int)unaff_s2 * 0x18);\n          unaff_s5[2][(int)unaff_s2 * 6] = (int)pppppppiVar4;\n          *(int ********)((int)unaff_s3 + (int)(unaff_s5[2] + 1)) = pppppppiVar9;\n          unaff_s2 = (int *******)(unaff_s5[2] + (int)unaff_s2 * 6);\n          ppppppiVar12 = (int ******)(*(code *)PTR_malloc_0003e2f8)(pppppppiVar15);\n          unaff_s2[2] = ppppppiVar12;\n          pppppppiVar18 = pppppppiVar15;\n          unaff_s6 = pppppppiVar15;\n          if (*(int *)((int)unaff_s3 + (int)(unaff_s5[2] + 2)) == 0) goto LAB_00021b34;\n          (*(code *)PTR_memcpy_0003e34c)(*(int *)((int)unaff_s3 + (int)(unaff_s5[2] + 2)),param_4);\n          pppppppiVar17 = &local_44;\n          iVar13 = FUN_0001b67c((int *)((int)unaff_s3 + (int)(unaff_s5[2] + 3)));\n          if (iVar13 != 0) goto LAB_00021b34;\n        }\n        break;\n      }\n      unaff_s2 = (int *******)((int)unaff_s2 + 1);\n      unaff_s3 = unaff_s3 + 1;\n      unaff_s0 = pppppppiVar11;\n    } while (unaff_s6 != unaff_s2);\nLAB_00021ca8:\n    unaff_s0 = pppppppiVar11;\n    if ((int)pppppppiVar11 < 0) {\nLAB_00021f44:\n      if (unaff_s0 == (int *******)&SUB_fffffffe) {\nLAB_00021b34:\n        (*(code *)PTR_free_0003e354)(local_3c);\n        if (bVar1) {\n          (*(code *)PTR_free_0003e354)(local_70);\n        }\n        FUN_0001eb94(unaff_s5);\n        iVar13 = 0xc;\n        goto LAB_00021ed8;\n      }\n      if (unaff_s5 == (int **)0x0) {\n        (*(code *)PTR_free_0003e354)();\n        if (bVar1) {\n          (*(code *)PTR_free_0003e354)(local_70);\n          iVar13 = 1;\n        }\n        else {\n          iVar13 = 1;\n        }\n        goto LAB_00021ed8;\n      }\n      *(int ********)(puVar25 + 0x10) = &local_44;\n      pppppppiVar17 = (int *******)&local_48;\n      pppppppiVar18 = param_3;\n      pppppppiVar19 = param_4;\n      unaff_s0 = (int *******)(*pcVar5)(unaff_s5);\n    }\n  }\n  (*(code *)PTR_free_0003e354)(local_3c);\n  if (bVar1) {\n    (*(code *)PTR_free_0003e354)(local_70);\n  }\n  iVar13 = FUN_0001eb94(unaff_s5);\nLAB_00021ed8:\n  if (local_2c == *(int *)PTR___stack_chk_guard_0003e348) {\n    return iVar13;\n  }\n  pcVar5 = FUN_00021f9c;\n  iVar13 = local_2c;\n  puVar24 = PTR___stack_chk_fail_0003e32c;\n  (*(code *)PTR___stack_chk_fail_0003e32c)();\n  *(code **)(puVar26 + -4) = pcVar5;\n  *(undefined1 **)(puVar26 + -8) = auStack_98;\n  *(int **)(puVar26 + -0xc) = piVar23;\n  *(int ********)(puVar26 + -0x10) = unaff_s6;\n  *(int ***)(puVar26 + -0x14) = unaff_s5;\n  *(int ********)(puVar26 + -0x18) = param_4;\n  *(int *******)(puVar26 + -0x1c) = unaff_s3;\n  *(int ********)(puVar26 + -0x20) = unaff_s2;\n  *(int ********)(puVar26 + -0x24) = param_2;\n  *(int ********)(puVar26 + -0x28) = unaff_s0;\n  *(undefined **)(puVar26 + -0xc0) = puVar24 + 0x24174;\n  *(int *)(puVar26 + -0xac) = iVar13;\n  uVar27 = *(undefined4 *)(puVar26 + 0x14);\n  *(undefined4 *)(puVar26 + -0x2c) = **(undefined4 **)(puVar24 + 0x1c3ac);\n  *(int *******)(puVar26 + -0xb8) = *pppppppiVar17;\n  if (*(byte *)(pppppppiVar18 + 1) < 0x25) {\n                    \n                    \n    iVar13 = (*(code *)(puVar24 + 0x24174 +\n                       *(int *)(*(int *)(puVar24 + 0x1c1ac) + -0x2ac0 +\n                               (uint)*(byte *)(pppppppiVar18 + 1) * 4)))();\n    return iVar13;\n  }\n  iVar13 = *(int *)(puVar26 + -0x2c);\n  if (iVar13 == **(int **)(puVar24 + 0x1c3ac)) {\n    return 0;\n  }\n  pcVar5 = *(code **)(puVar24 + 0x1c390);\n  pcVar6 = FUN_00023824;\n  pppppppiVar15 = pppppppiVar17;\n  (*pcVar5)();\n  *(code **)(puVar26 + -0xe4) = pcVar6;\n  *(undefined4 *)(puVar26 + -0xe8) = uVar27;\n  *(int **)(puVar26 + -0xec) = piVar23;\n  *(undefined4 *)(puVar26 + -0xf0) = 0;\n  *(int ***)(puVar26 + -0xf4) = unaff_s5;\n  *(int ********)(puVar26 + -0xf8) = param_4;\n  *(int *******)(puVar26 + -0xfc) = unaff_s3;\n  *(int ********)(puVar26 + -0x100) = unaff_s2;\n  *(int ********)(puVar26 + -0x104) = param_2;\n  *(int ********)(puVar26 + -0x108) = pppppppiVar17;\n  *(code **)(puVar26 + -0x118) = pcVar5 + 0x228ec;\n  *(int *)(puVar26 + -0xe0) = iVar13;\n  *(int ********)(puVar26 + -0xd4) = pppppppiVar19;\n  iVar21 = *(int *)(puVar26 + -0xd0);\n  piVar23 = *(int **)(puVar26 + -0xcc);\n  *(int *******)(puVar26 + -0x110) = *pppppppiVar15;\n  *(int **)(puVar26 + -0x11c) = piVar23;\n  *(int *)(puVar26 + -0x120) = iVar21;\n  iVar13 = FUN_00021f9c();\n  if ((*piVar23 == 0) || (iVar13 != 0)) {\n    iVar22 = *(int *)(*(int *)(puVar26 + -0x118) + -0x7ed8);\n    *(int *)(puVar26 + -0x10c) = *(int *)(*(int *)(puVar26 + -0x118) + -0x7ed8) + -0x5cb8;\nLAB_0002390c:\n    do {\n      do {\n        iVar20 = iVar13;\n        if ((*(byte *)(pppppppiVar18 + 1) & 0xf7) == 2) {\n          return iVar20;\n        }\n        if ((iVar21 != 0) && (*(byte *)(pppppppiVar18 + 1) == 9)) {\n          return iVar20;\n        }\n        *(int **)(puVar26 + -0x11c) = piVar23;\n        *(int *)(puVar26 + -0x120) = iVar21;\n        iVar14 = (*(code *)(iVar22 + 0x1f9c))\n                           (*(undefined4 *)(puVar26 + -0xe0),pppppppiVar15,pppppppiVar18,\n                            *(undefined4 *)(puVar26 + -0xd4));\n        if (*piVar23 == 0) {\n          iVar13 = iVar14;\n          iVar2 = iVar20;\n          iVar3 = iVar14;\n          if (iVar20 == 0) goto LAB_0002390c;\n        }\n        else {\n          iVar2 = iVar14;\n          iVar3 = iVar20;\n          if (iVar14 == 0) {\n            if (iVar20 == 0) {\n              return 0;\n            }\n            FUN_0001920c(iVar20,*(int *)(*(int *)(puVar26 + -0x118) + -0x7ed8) + -0x2cc0,0);\n            return 0;\n          }\n        }\n        iVar13 = iVar2;\n      } while (iVar3 == 0);\n      iVar13 = (**(code **)(puVar26 + -0x10c))(*(undefined4 *)(puVar26 + -0x110),iVar20,iVar14,0x10)\n      ;\n    } while (iVar13 != 0);\n    iVar13 = *(int *)(*(int *)(puVar26 + -0x118) + -0x7ed8);\n    FUN_0001920c(iVar14,iVar13 + -0x2cc0,0);\n    FUN_0001920c(iVar20,iVar13 + -0x2cc0,0);\n    *piVar23 = 0xc;\n    iVar13 = 0;\n  }\n  return iVar13;\n}" { (declaration "bool bVar1;" primitive_type identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "int *******pppppppiVar4;" primitive_type (pointer_declarator "*******pppppppiVar4" * (pointer_declarator "******pppppppiVar4" * (pointer_declarator "*****pppppppiVar4" * (pointer_declarator "****pppppppiVar4" * (pointer_declarator "***pppppppiVar4" * (pointer_declarator "**pppppppiVar4" * (pointer_declarator "*pppppppiVar4" * identifier))))))) ;) (declaration "code *pcVar5;" type_identifier (pointer_declarator "*pcVar5" * identifier) ;) (declaration "code *pcVar6;" type_identifier (pointer_declarator "*pcVar6" * identifier) ;) (declaration "code *pcVar7;" type_identifier (pointer_declarator "*pcVar7" * identifier) ;) (declaration "int *****pppppiVar8;" primitive_type (pointer_declarator "*****pppppiVar8" * (pointer_declarator "****pppppiVar8" * (pointer_declarator "***pppppiVar8" * (pointer_declarator "**pppppiVar8" * (pointer_declarator "*pppppiVar8" * identifier))))) ;) (declaration "int *******pppppppiVar9;" primitive_type (pointer_declarator "*******pppppppiVar9" * (pointer_declarator "******pppppppiVar9" * (pointer_declarator "*****pppppppiVar9" * (pointer_declarator "****pppppppiVar9" * (pointer_declarator "***pppppppiVar9" * (pointer_declarator "**pppppppiVar9" * (pointer_declarator "*pppppppiVar9" * identifier))))))) ;) (declaration "int *piVar10;" primitive_type (pointer_declarator "*piVar10" * identifier) ;) (declaration "int *******pppppppiVar11;" primitive_type (pointer_declarator "*******pppppppiVar11" * (pointer_declarator "******pppppppiVar11" * (pointer_declarator "*****pppppppiVar11" * (pointer_declarator "****pppppppiVar11" * (pointer_declarator "***pppppppiVar11" * (pointer_declarator "**pppppppiVar11" * (pointer_declarator "*pppppppiVar11" * identifier))))))) ;) (declaration "int ******ppppppiVar12;" primitive_type (pointer_declarator "******ppppppiVar12" * (pointer_declarator "*****ppppppiVar12" * (pointer_declarator "****ppppppiVar12" * (pointer_declarator "***ppppppiVar12" * (pointer_declarator "**ppppppiVar12" * (pointer_declarator "*ppppppiVar12" * identifier)))))) ;) (declaration "int iVar13;" primitive_type identifier ;) (declaration "int iVar14;" primitive_type identifier ;) (declaration "int *******pppppppiVar15;" primitive_type (pointer_declarator "*******pppppppiVar15" * (pointer_declarator "******pppppppiVar15" * (pointer_declarator "*****pppppppiVar15" * (pointer_declarator "****pppppppiVar15" * (pointer_declarator "***pppppppiVar15" * (pointer_declarator "**pppppppiVar15" * (pointer_declarator "*pppppppiVar15" * identifier))))))) ;) (declaration "int ******ppppppiVar16;" primitive_type (pointer_declarator "******ppppppiVar16" * (pointer_declarator "*****ppppppiVar16" * (pointer_declarator "****ppppppiVar16" * (pointer_declarator "***ppppppiVar16" * (pointer_declarator "**ppppppiVar16" * (pointer_declarator "*ppppppiVar16" * identifier)))))) ;) (declaration "int *******pppppppiVar17;" primitive_type (pointer_declarator "*******pppppppiVar17" * (pointer_declarator "******pppppppiVar17" * (pointer_declarator "*****pppppppiVar17" * (pointer_declarator "****pppppppiVar17" * (pointer_declarator "***pppppppiVar17" * (pointer_declarator "**pppppppiVar17" * (pointer_declarator "*pppppppiVar17" * identifier))))))) ;) (declaration "int *******pppppppiVar18;" primitive_type (pointer_declarator "*******pppppppiVar18" * (pointer_declarator "******pppppppiVar18" * (pointer_declarator "*****pppppppiVar18" * (pointer_declarator "****pppppppiVar18" * (pointer_declarator "***pppppppiVar18" * (pointer_declarator "**pppppppiVar18" * (pointer_declarator "*pppppppiVar18" * identifier))))))) ;) (declaration "int *******pppppppiVar19;" primitive_type (pointer_declarator "*******pppppppiVar19" * (pointer_declarator "******pppppppiVar19" * (pointer_declarator "*****pppppppiVar19" * (pointer_declarator "****pppppppiVar19" * (pointer_declarator "***pppppppiVar19" * (pointer_declarator "**pppppppiVar19" * (pointer_declarator "*pppppppiVar19" * identifier))))))) ;) (declaration "int *******unaff_s0;" primitive_type (pointer_declarator "*******unaff_s0" * (pointer_declarator "******unaff_s0" * (pointer_declarator "*****unaff_s0" * (pointer_declarator "****unaff_s0" * (pointer_declarator "***unaff_s0" * (pointer_declarator "**unaff_s0" * (pointer_declarator "*unaff_s0" * identifier))))))) ;) (declaration "int *******unaff_s2;" primitive_type (pointer_declarator "*******unaff_s2" * (pointer_declarator "******unaff_s2" * (pointer_declarator "*****unaff_s2" * (pointer_declarator "****unaff_s2" * (pointer_declarator "***unaff_s2" * (pointer_declarator "**unaff_s2" * (pointer_declarator "*unaff_s2" * identifier))))))) ;) (declaration "int iVar20;" primitive_type identifier ;) (declaration "int ******unaff_s3;" primitive_type (pointer_declarator "******unaff_s3" * (pointer_declarator "*****unaff_s3" * (pointer_declarator "****unaff_s3" * (pointer_declarator "***unaff_s3" * (pointer_declarator "**unaff_s3" * (pointer_declarator "*unaff_s3" * identifier)))))) ;) (declaration "int iVar21;" primitive_type identifier ;) (declaration "int **unaff_s5;" primitive_type (pointer_declarator "**unaff_s5" * (pointer_declarator "*unaff_s5" * identifier)) ;) (declaration "int iVar22;" primitive_type identifier ;) (declaration "int *******unaff_s6;" primitive_type (pointer_declarator "*******unaff_s6" * (pointer_declarator "******unaff_s6" * (pointer_declarator "*****unaff_s6" * (pointer_declarator "****unaff_s6" * (pointer_declarator "***unaff_s6" * (pointer_declarator "**unaff_s6" * (pointer_declarator "*unaff_s6" * identifier))))))) ;) (declaration "int *piVar23;" primitive_type (pointer_declarator "*piVar23" * identifier) ;) (declaration "undefined *puVar24;" type_identifier (pointer_declarator "*puVar24" * identifier) ;) (declaration "undefined1 *puVar25;" type_identifier (pointer_declarator "*puVar25" * identifier) ;) (declaration "undefined1 *puVar26;" type_identifier (pointer_declarator "*puVar26" * identifier) ;) (declaration "undefined4 uVar27;" type_identifier identifier ;) (declaration "undefined1 auStack_98 [24];" type_identifier (array_declarator "auStack_98 [24]" identifier [ number_literal ]) ;) (declaration "int *******local_70;" primitive_type (pointer_declarator "*******local_70" * (pointer_declarator "******local_70" * (pointer_declarator "*****local_70" * (pointer_declarator "****local_70" * (pointer_declarator "***local_70" * (pointer_declarator "**local_70" * (pointer_declarator "*local_70" * identifier))))))) ;) (declaration "int *******local_48;" primitive_type (pointer_declarator "*******local_48" * (pointer_declarator "******local_48" * (pointer_declarator "*****local_48" * (pointer_declarator "****local_48" * (pointer_declarator "***local_48" * (pointer_declarator "**local_48" * (pointer_declarator "*local_48" * identifier))))))) ;) (declaration "int ******local_44;" primitive_type (pointer_declarator "******local_44" * (pointer_declarator "*****local_44" * (pointer_declarator "****local_44" * (pointer_declarator "***local_44" * (pointer_declarator "**local_44" * (pointer_declarator "*local_44" * identifier)))))) ;) (declaration "undefined4 local_40;" type_identifier identifier ;) (declaration "undefined4 local_3c;" type_identifier identifier ;) (declaration "int *local_38;" primitive_type (pointer_declarator "*local_38" * identifier) ;) (declaration "undefined4 local_34;" type_identifier identifier ;) (declaration "int local_30;" primitive_type identifier ;) (declaration "int local_2c;" primitive_type identifier ;) (expression_statement "puVar25 = auStack_98;" (assignment_expression "puVar25 = auStack_98" identifier = identifier) ;) (expression_statement "puVar26 = auStack_98;" (assignment_expression "puVar26 = auStack_98" identifier = identifier) ;) (expression_statement "local_2c = *(int *)PTR___stack_chk_guard_0003e348;" (assignment_expression "local_2c = *(int *)PTR___stack_chk_guard_0003e348" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_0003e348" * (cast_expression "(int *)PTR___stack_chk_guard_0003e348" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "piVar23 = (int *)*param_1;" (assignment_expression "piVar23 = (int *)*param_1" identifier = (cast_expression "(int *)*param_1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) ;) (expression_statement "local_38 = (int *)0x0;" (assignment_expression "local_38 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_34 = 2;" (assignment_expression "local_34 = 2" identifier = number_literal) ;) (expression_statement "local_30 = 0;" (assignment_expression "local_30 = 0" identifier = number_literal) ;) (expression_statement "pppppppiVar17 = param_2;" (assignment_expression "pppppppiVar17 = param_2" identifier = identifier) ;) (expression_statement "pppppppiVar18 = param_3;" (assignment_expression "pppppppiVar18 = param_3" identifier = identifier) ;) (expression_statement "pppppppiVar19 = param_4;" (assignment_expression "pppppppiVar19 = param_4" identifier = identifier) ;) (if_statement "if (param_5 == '\0') {\n    unaff_s5 = (int **)0x0;\n  }\n  else {\n    local_30 = (*(code *)PTR_malloc_0003e2f8)(0x30);\n    if (local_30 == 0) {\n      iVar13 = 0xc;\n      goto LAB_00021ed8;\n    }\n    unaff_s5 = &local_38;\n  }" if (parenthesized_expression "(param_5 == '\0')" ( (binary_expression "param_5 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    unaff_s5 = (int **)0x0;\n  }" { (expression_statement "unaff_s5 = (int **)0x0;" (assignment_expression "unaff_s5 = (int **)0x0" identifier = (cast_expression "(int **)0x0" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal)) ;) }) (else_clause "else {\n    local_30 = (*(code *)PTR_malloc_0003e2f8)(0x30);\n    if (local_30 == 0) {\n      iVar13 = 0xc;\n      goto LAB_00021ed8;\n    }\n    unaff_s5 = &local_38;\n  }" else (compound_statement "{\n    local_30 = (*(code *)PTR_malloc_0003e2f8)(0x30);\n    if (local_30 == 0) {\n      iVar13 = 0xc;\n      goto LAB_00021ed8;\n    }\n    unaff_s5 = &local_38;\n  }" { (expression_statement "local_30 = (*(code *)PTR_malloc_0003e2f8)(0x30);" (assignment_expression "local_30 = (*(code *)PTR_malloc_0003e2f8)(0x30)" identifier = (call_expression "(*(code *)PTR_malloc_0003e2f8)(0x30)" (parenthesized_expression "(*(code *)PTR_malloc_0003e2f8)" ( (pointer_expression "*(code *)PTR_malloc_0003e2f8" * (cast_expression "(code *)PTR_malloc_0003e2f8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(0x30)" ( number_literal )))) ;) (if_statement "if (local_30 == 0) {\n      iVar13 = 0xc;\n      goto LAB_00021ed8;\n    }" if (parenthesized_expression "(local_30 == 0)" ( (binary_expression "local_30 == 0" identifier == number_literal) )) (compound_statement "{\n      iVar13 = 0xc;\n      goto LAB_00021ed8;\n    }" { (expression_statement "iVar13 = 0xc;" (assignment_expression "iVar13 = 0xc" identifier = number_literal) ;) (goto_statement "goto LAB_00021ed8;" goto statement_identifier ;) })) (expression_statement "unaff_s5 = &local_38;" (assignment_expression "unaff_s5 = &local_38" identifier = (pointer_expression "&local_38" & identifier)) ;) }))) (expression_statement "unaff_s0 = (int *******)piVar23[0x12];" (assignment_expression "unaff_s0 = (int *******)piVar23[0x12]" identifier = (cast_expression "(int *******)piVar23[0x12]" ( (type_descriptor "int *******" primitive_type (abstract_pointer_declarator "*******" * (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))))))) ) (subscript_expression "piVar23[0x12]" identifier [ number_literal ]))) ;) (expression_statement "local_44 = (int ******)0x0;" (assignment_expression "local_44 = (int ******)0x0" identifier = (cast_expression "(int ******)0x0" ( (type_descriptor "int ******" primitive_type (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))))))) ) number_literal)) ;) (expression_statement "local_40 = 0;" (assignment_expression "local_40 = 0" identifier = number_literal) ;) (expression_statement "local_3c = 0;" (assignment_expression "local_3c = 0" identifier = number_literal) ;) (expression_statement "pppppppiVar15 = (int *******)((int)param_3 * 8);" (assignment_expression "pppppppiVar15 = (int *******)((int)param_3 * 8)" identifier = (cast_expression "(int *******)((int)param_3 * 8)" ( (type_descriptor "int *******" primitive_type (abstract_pointer_declarator "*******" * (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))))))) ) (parenthesized_expression "((int)param_3 * 8)" ( (binary_expression "(int)param_3 * 8" (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) )))) ;) (if_statement "if (pppppppiVar15 < (int *******)0xfc0) {\n    puVar25 = auStack_98 + (int)param_3 * -8;\n    local_70 = (int *******)(&stack0xffffff80 + (int)param_3 * -8);\n    bVar1 = false;\n  }\n  else {\n    local_70 = (int *******)(*(code *)PTR_malloc_0003e2f8)(pppppppiVar15);\n    bVar1 = true;\n    if (local_70 == (int *******)0x0) {\n      FUN_0001eb94(unaff_s5);\n      iVar13 = 0xc;\n      puVar26 = auStack_98;\n      goto LAB_00021ed8;\n    }\n  }" if (parenthesized_expression "(pppppppiVar15 < (int *******)0xfc0)" ( (binary_expression "pppppppiVar15 < (int *******)0xfc0" identifier < (cast_expression "(int *******)0xfc0" ( (type_descriptor "int *******" primitive_type (abstract_pointer_declarator "*******" * (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))))))) ) number_literal)) )) (compound_statement "{\n    puVar25 = auStack_98 + (int)param_3 * -8;\n    local_70 = (int *******)(&stack0xffffff80 + (int)param_3 * -8);\n    bVar1 = false;\n  }" { (expression_statement "puVar25 = auStack_98 + (int)param_3 * -8;" (assignment_expression "puVar25 = auStack_98 + (int)param_3 * -8" identifier = (binary_expression "auStack_98 + (int)param_3 * -8" identifier + (binary_expression "(int)param_3 * -8" (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal))) ;) (expression_statement "local_70 = (int *******)(&stack0xffffff80 + (int)param_3 * -8);" (assignment_expression "local_70 = (int *******)(&stack0xffffff80 + (int)param_3 * -8)" identifier = (cast_expression "(int *******)(&stack0xffffff80 + (int)param_3 * -8)" ( (type_descriptor "int *******" primitive_type (abstract_pointer_declarator "*******" * (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))))))) ) (parenthesized_expression "(&stack0xffffff80 + (int)param_3 * -8)" ( (binary_expression "&stack0xffffff80 + (int)param_3 * -8" (pointer_expression "&stack0xffffff80" & identifier) + (binary_expression "(int)param_3 * -8" (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) )))) ;) (expression_statement "bVar1 = false;" (assignment_expression "bVar1 = false" identifier = false) ;) }) (else_clause "else {\n    local_70 = (int *******)(*(code *)PTR_malloc_0003e2f8)(pppppppiVar15);\n    bVar1 = true;\n    if (local_70 == (int *******)0x0) {\n      FUN_0001eb94(unaff_s5);\n      iVar13 = 0xc;\n      puVar26 = auStack_98;\n      goto LAB_00021ed8;\n    }\n  }" else (compound_statement "{\n    local_70 = (int *******)(*(code *)PTR_malloc_0003e2f8)(pppppppiVar15);\n    bVar1 = true;\n    if (local_70 == (int *******)0x0) {\n      FUN_0001eb94(unaff_s5);\n      iVar13 = 0xc;\n      puVar26 = auStack_98;\n      goto LAB_00021ed8;\n    }\n  }" { (expression_statement "local_70 = (int *******)(*(code *)PTR_malloc_0003e2f8)(pppppppiVar15);" (assignment_expression "local_70 = (int *******)(*(code *)PTR_malloc_0003e2f8)(pppppppiVar15)" identifier = (cast_expression "(int *******)(*(code *)PTR_malloc_0003e2f8)(pppppppiVar15)" ( (type_descriptor "int *******" primitive_type (abstract_pointer_declarator "*******" * (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))))))) ) (call_expression "(*(code *)PTR_malloc_0003e2f8)(pppppppiVar15)" (parenthesized_expression "(*(code *)PTR_malloc_0003e2f8)" ( (pointer_expression "*(code *)PTR_malloc_0003e2f8" * (cast_expression "(code *)PTR_malloc_0003e2f8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(pppppppiVar15)" ( identifier ))))) ;) (expression_statement "bVar1 = true;" (assignment_expression "bVar1 = true" identifier = true) ;) (if_statement "if (local_70 == (int *******)0x0) {\n      FUN_0001eb94(unaff_s5);\n      iVar13 = 0xc;\n      puVar26 = auStack_98;\n      goto LAB_00021ed8;\n    }" if (parenthesized_expression "(local_70 == (int *******)0x0)" ( (binary_expression "local_70 == (int *******)0x0" identifier == (cast_expression "(int *******)0x0" ( (type_descriptor "int *******" primitive_type (abstract_pointer_declarator "*******" * (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))))))) ) number_literal)) )) (compound_statement "{\n      FUN_0001eb94(unaff_s5);\n      iVar13 = 0xc;\n      puVar26 = auStack_98;\n      goto LAB_00021ed8;\n    }" { (expression_statement "FUN_0001eb94(unaff_s5);" (call_expression "FUN_0001eb94(unaff_s5)" identifier (argument_list "(unaff_s5)" ( identifier ))) ;) (expression_statement "iVar13 = 0xc;" (assignment_expression "iVar13 = 0xc" identifier = number_literal) ;) (expression_statement "puVar26 = auStack_98;" (assignment_expression "puVar26 = auStack_98" identifier = identifier) ;) (goto_statement "goto LAB_00021ed8;" goto statement_identifier ;) })) }))) (expression_statement "pppppppiVar17 = param_4;" (assignment_expression "pppppppiVar17 = param_4" identifier = identifier) ;) (expression_statement "pppppppiVar18 = pppppppiVar15;" (assignment_expression "pppppppiVar18 = pppppppiVar15" identifier = identifier) ;) (expression_statement "(*(code *)PTR_memcpy_0003e34c)(local_70);" (call_expression "(*(code *)PTR_memcpy_0003e34c)(local_70)" (parenthesized_expression "(*(code *)PTR_memcpy_0003e34c)" ( (pointer_expression "*(code *)PTR_memcpy_0003e34c" * (cast_expression "(code *)PTR_memcpy_0003e34c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(local_70)" ( identifier ))) ;) (expression_statement "local_48 = (int *******)*param_4;" (assignment_expression "local_48 = (int *******)*param_4" identifier = (cast_expression "(int *******)*param_4" ( (type_descriptor "int *******" primitive_type (abstract_pointer_declarator "*******" * (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))))))) ) (pointer_expression "*param_4" * identifier))) ;) (expression_statement "pcVar5 = (code *)(PTR_DAT_0003e238 + -0x10e8);" (assignment_expression "pcVar5 = (code *)(PTR_DAT_0003e238 + -0x10e8)" identifier = (cast_expression "(code *)(PTR_DAT_0003e238 + -0x10e8)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0003e238 + -0x10e8)" ( (binary_expression "PTR_DAT_0003e238 + -0x10e8" identifier + number_literal) )))) ;) (expression_statement "pcVar6 = (code *)(PTR_DAT_0003e238 + -0x6f00);" (assignment_expression "pcVar6 = (code *)(PTR_DAT_0003e238 + -0x6f00)" identifier = (cast_expression "(code *)(PTR_DAT_0003e238 + -0x6f00)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0003e238 + -0x6f00)" ( (binary_expression "PTR_DAT_0003e238 + -0x6f00" identifier + number_literal) )))) ;) (expression_statement "pcVar7 = (code *)(PTR_DAT_0003e238 + -0x589c);" (assignment_expression "pcVar7 = (code *)(PTR_DAT_0003e238 + -0x589c)" identifier = (cast_expression "(code *)(PTR_DAT_0003e238 + -0x589c)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_DAT_0003e238 + -0x589c)" ( (binary_expression "PTR_DAT_0003e238 + -0x589c" identifier + number_literal) )))) ;) (while_statement "while (unaff_s2 = local_48, puVar24 = PTR_memcpy_0003e34c, puVar26 = puVar25,\n        (int)local_48 <= (int)param_4[1]) {\n    piVar10 = (int *)(*piVar23 + (int)unaff_s0 * 8);\n    if (*(char *)(piVar10 + 1) == '\b') {\n      iVar13 = *piVar10;\n      if (iVar13 + 1 < (int)param_3) {\n        param_4[(iVar13 + 1) * 2] = (int ******)local_48;\n        (param_4 + (iVar13 + 1) * 2)[1] = (int ******)0xffffffff;\n      }\nLAB_00021cec:\n      pppppppiVar11 = (int *******)param_4[1];\n    }\n    else {\n      if ((*(char *)(piVar10 + 1) != '\t') || (iVar13 = *piVar10 + 1, (int)param_3 <= iVar13))\n      goto LAB_00021cec;\n      pppppppiVar17 = param_4 + iVar13 * 2;\n      if ((int)*pppppppiVar17 < (int)local_48) {\n        pppppppiVar17[1] = (int ******)local_48;\n        pppppppiVar17 = param_4;\n        pppppppiVar18 = pppppppiVar15;\n        (*(code *)puVar24)(local_70);\n        pppppppiVar11 = (int *******)param_4[1];\n      }\n      else {\n        if (((piVar10[1] & 0x1000U) == 0) ||\n           (pppppppiVar18 = pppppppiVar15, local_70[iVar13 * 2] == (int ******)0xffffffff)) {\n          pppppppiVar17[1] = (int ******)local_48;\n          goto LAB_00021cec;\n        }\n        pppppppiVar17 = local_70;\n        (*(code *)PTR_memcpy_0003e34c)(param_4);\n        pppppppiVar11 = (int *******)param_4[1];\n      }\n    }\n    if ((pppppppiVar11 == unaff_s2) && ((int *******)param_2[0x18] == unaff_s0)) {\n      if (unaff_s5 == (int **)0x0) {\n        (*(code *)PTR_free_0003e354)(local_3c);\n        if (bVar1) {\n          (*(code *)PTR_free_0003e354)(local_70);\n          iVar13 = 0;\n        }\n        else {\n          iVar13 = 0;\n        }\n      }\n      else {\n        if (param_3 != (int *******)0x0) {\n          pppppppiVar9 = (int *******)0x0;\n          pppppppiVar18 = (int *******)0xffffffff;\n          pppppppiVar11 = param_4;\n          do {\n            if ((-1 < (int)*pppppppiVar11) &&\n               (pppppppiVar17 = (int *******)pppppppiVar11[1],\n               (int *******)pppppppiVar11[1] == (int *******)0xffffffff)) break;\n            pppppppiVar9 = (int *******)((int)pppppppiVar9 + 1);\n            pppppppiVar11 = pppppppiVar11 + 2;\n            pppppppiVar17 = param_3;\n          } while (param_3 != pppppppiVar9);\n          if (pppppppiVar9 != param_3) {\n            *(int ********)(puVar25 + 0x10) = &local_44;\n            pppppppiVar17 = (int *******)&local_48;\n            pppppppiVar18 = param_3;\n            pppppppiVar19 = param_4;\n            unaff_s0 = (int *******)(*pcVar5)(unaff_s5);\n            goto LAB_00021d04;\n          }\n        }\n        (*(code *)PTR_free_0003e354)(local_3c);\n        if (bVar1) {\n          (*(code *)PTR_free_0003e354)(local_70);\n        }\n        iVar13 = FUN_0001eb94(unaff_s5);\n      }\n      goto LAB_00021ed8;\n    }\nLAB_00021d04:\n    unaff_s2 = (int *******)param_2[0x15];\n    unaff_s3 = (int ******)((int)unaff_s0 * 8);\n    ppppppiVar12 = *unaff_s2 + (int)unaff_s0 * 2;\n    if ((*(byte *)(ppppppiVar12 + 1) & 8) == 0) {\n      if (((uint)ppppppiVar12[1] & 0x800) == 0) {\n        if (*(byte *)(ppppppiVar12 + 1) == 4) {\n          ppppppiVar16 = (param_4 + ((int)*ppppppiVar12 + 1) * 2)[1];\n          ppppppiVar12 = param_4[((int)*ppppppiVar12 + 1) * 2];\n          unaff_s6 = (int *******)((int)ppppppiVar16 - (int)ppppppiVar12);\n          if (unaff_s5 == (int **)0x0) {\n            pppppppiVar17 = unaff_s0;\n            if (unaff_s6 != (int *******)0x0) goto LAB_00021da8;\nLAB_00021dd0:\n            pppppppiVar17 = unaff_s0;\n            iVar13 = (*pcVar7)(&local_44);\n            if (iVar13 == 0) goto LAB_00021b34;\n            pppppppiVar11 = (int *******)*unaff_s2[5][(int)unaff_s0 * 3 + 2];\n            pppppppiVar17 = pppppppiVar11;\n            iVar13 = (*pcVar6)(param_2[0x19][(int)local_48] + 1);\n            if (iVar13 != 0) goto LAB_00021ca8;\n            goto LAB_00021c18;\n          }\n          if ((ppppppiVar12 != (int ******)0xffffffff) && (ppppppiVar16 != (int ******)0xffffffff))\n          {\n            if (unaff_s6 == (int *******)0x0) goto LAB_00021dd0;\n            pppppppiVar17 = (int *******)((int)param_2[1] + (int)local_48);\n            pppppppiVar18 = unaff_s6;\n            iVar13 = (*(code *)PTR_memcmp_0003e338)((int)param_2[1] + (int)ppppppiVar12);\n            if (iVar13 == 0) goto LAB_00021da8;\n          }\n        }\n        else {\nLAB_00021c18:\n          unaff_s6 = local_48;\n          pppppppiVar17 = (int *******)(*unaff_s2 + (int)unaff_s0 * 2);\n          pppppppiVar18 = local_48;\n          iVar13 = FUN_0001c4f8(param_2);\n          if (iVar13 != 0) {\n            pppppppiVar11 = (int *******)unaff_s2[3][(int)unaff_s0];\n            local_48 = (int *******)((int)unaff_s6 + 1);\n            goto LAB_00021c5c;\n          }\n        }\n      }\n      else {\n        pppppppiVar17 = unaff_s0;\n        pppppppiVar18 = param_2;\n        pppppppiVar19 = local_48;\n        unaff_s6 = (int *******)FUN_000200a0(unaff_s2);\n        if (unaff_s6 == (int *******)0x0) goto LAB_00021c18;\nLAB_00021da8:\n        pppppppiVar11 = (int *******)unaff_s2[3][(int)unaff_s0];\n        local_48 = (int *******)((int)unaff_s6 + (int)local_48);\nLAB_00021c5c:\n        unaff_s6 = local_48;\n        if (unaff_s5 == (int **)0x0) {\nLAB_00021ca4:\n          local_40 = 0;\n          goto LAB_00021ca8;\n        }\n        unaff_s6 = (int *******)((int)local_48 * 4);\n        if ((int)local_48 <= (int)param_2[0x17]) {\n          unaff_s6 = (int *******)(param_2[0x19] + (int)local_48);\n          pppppppiVar17 = pppppppiVar11;\n          if ((*unaff_s6 != (int ******)0x0) && (iVar13 = (*pcVar6)(*unaff_s6 + 1), iVar13 != 0))\n          goto LAB_00021ca4;\n        }\n      }\nLAB_00021f3c:\n      unaff_s0 = (int *******)0xffffffff;\n      goto LAB_00021f44;\n    }\n    pppppiVar8 = param_2[0x19][(int)local_48];\n    unaff_s2 = (int *******)(unaff_s2[5] + (int)unaff_s0 * 3);\n    pppppppiVar17 = unaff_s0;\n    iVar13 = (*pcVar7)(&local_44);\n    if (iVar13 == 0) goto LAB_00021b34;\n    unaff_s6 = (int *******)unaff_s2[1];\n    if ((int)unaff_s6 < 1) goto LAB_00021f3c;\n    unaff_s3 = unaff_s2[2];\n    unaff_s2 = (int *******)0x0;\n    unaff_s0 = (int *******)0xffffffff;\n    do {\n      pppppppiVar9 = (int *******)*unaff_s3;\n      pppppppiVar17 = pppppppiVar9;\n      iVar13 = (*pcVar6)(pppppiVar8 + 1);\n      pppppppiVar11 = unaff_s0;\n      if ((iVar13 != 0) &&\n         (pppppppiVar17 = unaff_s0, pppppppiVar11 = pppppppiVar9,\n         unaff_s0 != (int *******)0xffffffff)) {\n        iVar13 = (*pcVar6)(&local_44);\n        pppppppiVar4 = local_48;\n        if ((iVar13 == 0) &&\n           (pppppppiVar11 = unaff_s0, unaff_s6 = local_48, unaff_s5 != (int **)0x0)) {\n          unaff_s2 = (int *******)*unaff_s5;\n          *unaff_s5 = (int *)((int)unaff_s2 + 1);\n          pppppppiVar17 = (int *******)unaff_s5[1];\n          if ((int *******)((int)unaff_s2 + 1) == pppppppiVar17) {\n            pppppppiVar17 = (int *******)((int)pppppppiVar17 * 0x30);\n            piVar10 = (int *)(*(code *)PTR_realloc_0003e2fc)(unaff_s5[2]);\n            unaff_s6 = pppppppiVar4;\n            if (piVar10 == (int *)0x0) goto LAB_00021b34;\n            unaff_s5[1] = (int *)((int)unaff_s5[1] << 1);\n            unaff_s5[2] = piVar10;\n          }\n          unaff_s3 = (int ******)((int)unaff_s2 * 0x18);\n          unaff_s5[2][(int)unaff_s2 * 6] = (int)pppppppiVar4;\n          *(int ********)((int)unaff_s3 + (int)(unaff_s5[2] + 1)) = pppppppiVar9;\n          unaff_s2 = (int *******)(unaff_s5[2] + (int)unaff_s2 * 6);\n          ppppppiVar12 = (int ******)(*(code *)PTR_malloc_0003e2f8)(pppppppiVar15);\n          unaff_s2[2] = ppppppiVar12;\n          pppppppiVar18 = pppppppiVar15;\n          unaff_s6 = pppppppiVar15;\n          if (*(int *)((int)unaff_s3 + (int)(unaff_s5[2] + 2)) == 0) goto LAB_00021b34;\n          (*(code *)PTR_memcpy_0003e34c)(*(int *)((int)unaff_s3 + (int)(unaff_s5[2] + 2)),param_4);\n          pppppppiVar17 = &local_44;\n          iVar13 = FUN_0001b67c((int *)((int)unaff_s3 + (int)(unaff_s5[2] + 3)));\n          if (iVar13 != 0) goto LAB_00021b34;\n        }\n        break;\n      }\n      unaff_s2 = (int *******)((int)unaff_s2 + 1);\n      unaff_s3 = unaff_s3 + 1;\n      unaff_s0 = pppppppiVar11;\n    } while (unaff_s6 != unaff_s2);\nLAB_00021ca8:\n    unaff_s0 = pppppppiVar11;\n    if ((int)pppppppiVar11 < 0) {\nLAB_00021f44:\n      if (unaff_s0 == (int *******)&SUB_fffffffe) {\nLAB_00021b34:\n        (*(code *)PTR_free_0003e354)(local_3c);\n        if (bVar1) {\n          (*(code *)PTR_free_0003e354)(local_70);\n        }\n        FUN_0001eb94(unaff_s5);\n        iVar13 = 0xc;\n        goto LAB_00021ed8;\n      }\n      if (unaff_s5 == (int **)0x0) {\n        (*(code *)PTR_free_0003e354)();\n        if (bVar1) {\n          (*(code *)PTR_free_0003e354)(local_70);\n          iVar13 = 1;\n        }\n        else {\n          iVar13 = 1;\n        }\n        goto LAB_00021ed8;\n      }\n      *(int ********)(puVar25 + 0x10) = &local_44;\n      pppppppiVar17 = (int *******)&local_48;\n      pppppppiVar18 = param_3;\n      pppppppiVar19 = param_4;\n      unaff_s0 = (int *******)(*pcVar5)(unaff_s5);\n    }\n  }" while (parenthesized_expression "(unaff_s2 = local_48, puVar24 = PTR_memcpy_0003e34c, puVar26 = puVar25,\n        (int)local_48 <= (int)param_4[1])" ( (comma_expression "unaff_s2 = local_48, puVar24 = PTR_memcpy_0003e34c, puVar26 = puVar25,\n        (int)local_48 <= (int)param_4[1]" (assignment_expression "unaff_s2 = local_48" identifier = identifier) , (comma_expression "puVar24 = PTR_memcpy_0003e34c, puVar26 = puVar25,\n        (int)local_48 <= (int)param_4[1]" (assignment_expression "puVar24 = PTR_memcpy_0003e34c" identifier = identifier) , (comma_expression "puVar26 = puVar25,\n        (int)local_48 <= (int)param_4[1]" (assignment_expression "puVar26 = puVar25" identifier = identifier) , (binary_expression "(int)local_48 <= (int)param_4[1]" (cast_expression "(int)local_48" ( (type_descriptor "int" primitive_type) ) identifier) <= (cast_expression "(int)param_4[1]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "param_4[1]" identifier [ number_literal ])))))) )) (compound_statement "{\n    piVar10 = (int *)(*piVar23 + (int)unaff_s0 * 8);\n    if (*(char *)(piVar10 + 1) == '\b') {\n      iVar13 = *piVar10;\n      if (iVar13 + 1 < (int)param_3) {\n        param_4[(iVar13 + 1) * 2] = (int ******)local_48;\n        (param_4 + (iVar13 + 1) * 2)[1] = (int ******)0xffffffff;\n      }\nLAB_00021cec:\n      pppppppiVar11 = (int *******)param_4[1];\n    }\n    else {\n      if ((*(char *)(piVar10 + 1) != '\t') || (iVar13 = *piVar10 + 1, (int)param_3 <= iVar13))\n      goto LAB_00021cec;\n      pppppppiVar17 = param_4 + iVar13 * 2;\n      if ((int)*pppppppiVar17 < (int)local_48) {\n        pppppppiVar17[1] = (int ******)local_48;\n        pppppppiVar17 = param_4;\n        pppppppiVar18 = pppppppiVar15;\n        (*(code *)puVar24)(local_70);\n        pppppppiVar11 = (int *******)param_4[1];\n      }\n      else {\n        if (((piVar10[1] & 0x1000U) == 0) ||\n           (pppppppiVar18 = pppppppiVar15, local_70[iVar13 * 2] == (int ******)0xffffffff)) {\n          pppppppiVar17[1] = (int ******)local_48;\n          goto LAB_00021cec;\n        }\n        pppppppiVar17 = local_70;\n        (*(code *)PTR_memcpy_0003e34c)(param_4);\n        pppppppiVar11 = (int *******)param_4[1];\n      }\n    }\n    if ((pppppppiVar11 == unaff_s2) && ((int *******)param_2[0x18] == unaff_s0)) {\n      if (unaff_s5 == (int **)0x0) {\n        (*(code *)PTR_free_0003e354)(local_3c);\n        if (bVar1) {\n          (*(code *)PTR_free_0003e354)(local_70);\n          iVar13 = 0;\n        }\n        else {\n          iVar13 = 0;\n        }\n      }\n      else {\n        if (param_3 != (int *******)0x0) {\n          pppppppiVar9 = (int *******)0x0;\n          pppppppiVar18 = (int *******)0xffffffff;\n          pppppppiVar11 = param_4;\n          do {\n            if ((-1 < (int)*pppppppiVar11) &&\n               (pppppppiVar17 = (int *******)pppppppiVar11[1],\n               (int *******)pppppppiVar11[1] == (int *******)0xffffffff)) break;\n            pppppppiVar9 = (int *******)((int)pppppppiVar9 + 1);\n            pppppppiVar11 = pppppppiVar11 + 2;\n            pppppppiVar17 = param_3;\n          } while (param_3 != pppppppiVar9);\n          if (pppppppiVar9 != param_3) {\n            *(int ********)(puVar25 + 0x10) = &local_44;\n            pppppppiVar17 = (int *******)&local_48;\n            pppppppiVar18 = param_3;\n            pppppppiVar19 = param_4;\n            unaff_s0 = (int *******)(*pcVar5)(unaff_s5);\n            goto LAB_00021d04;\n          }\n        }\n        (*(code *)PTR_free_0003e354)(local_3c);\n        if (bVar1) {\n          (*(code *)PTR_free_0003e354)(local_70);\n        }\n        iVar13 = FUN_0001eb94(unaff_s5);\n      }\n      goto LAB_00021ed8;\n    }\nLAB_00021d04:\n    unaff_s2 = (int *******)param_2[0x15];\n    unaff_s3 = (int ******)((int)unaff_s0 * 8);\n    ppppppiVar12 = *unaff_s2 + (int)unaff_s0 * 2;\n    if ((*(byte *)(ppppppiVar12 + 1) & 8) == 0) {\n      if (((uint)ppppppiVar12[1] & 0x800) == 0) {\n        if (*(byte *)(ppppppiVar12 + 1) == 4) {\n          ppppppiVar16 = (param_4 + ((int)*ppppppiVar12 + 1) * 2)[1];\n          ppppppiVar12 = param_4[((int)*ppppppiVar12 + 1) * 2];\n          unaff_s6 = (int *******)((int)ppppppiVar16 - (int)ppppppiVar12);\n          if (unaff_s5 == (int **)0x0) {\n            pppppppiVar17 = unaff_s0;\n            if (unaff_s6 != (int *******)0x0) goto LAB_00021da8;\nLAB_00021dd0:\n            pppppppiVar17 = unaff_s0;\n            iVar13 = (*pcVar7)(&local_44);\n            if (iVar13 == 0) goto LAB_00021b34;\n            pppppppiVar11 = (int *******)*unaff_s2[5][(int)unaff_s0 * 3 + 2];\n            pppppppiVar17 = pppppppiVar11;\n            iVar13 = (*pcVar6)(param_2[0x19][(int)local_48] + 1);\n            if (iVar13 != 0) goto LAB_00021ca8;\n            goto LAB_00021c18;\n          }\n          if ((ppppppiVar12 != (int ******)0xffffffff) && (ppppppiVar16 != (int ******)0xffffffff))\n          {\n            if (unaff_s6 == (int *******)0x0) goto LAB_00021dd0;\n            pppppppiVar17 = (int *******)((int)param_2[1] + (int)local_48);\n            pppppppiVar18 = unaff_s6;\n            iVar13 = (*(code *)PTR_memcmp_0003e338)((int)param_2[1] + (int)ppppppiVar12);\n            if (iVar13 == 0) goto LAB_00021da8;\n          }\n        }\n        else {\nLAB_00021c18:\n          unaff_s6 = local_48;\n          pppppppiVar17 = (int *******)(*unaff_s2 + (int)unaff_s0 * 2);\n          pppppppiVar18 = local_48;\n          iVar13 = FUN_0001c4f8(param_2);\n          if (iVar13 != 0) {\n            pppppppiVar11 = (int *******)unaff_s2[3][(int)unaff_s0];\n            local_48 = (int *******)((int)unaff_s6 + 1);\n            goto LAB_00021c5c;\n          }\n        }\n      }\n      else {\n        pppppppiVar17 = unaff_s0;\n        pppppppiVar18 = param_2;\n        pppppppiVar19 = local_48;\n        unaff_s6 = (int *******)FUN_000200a0(unaff_s2);\n        if (unaff_s6 == (int *******)0x0) goto LAB_00021c18;\nLAB_00021da8:\n        pppppppiVar11 = (int *******)unaff_s2[3][(int)unaff_s0];\n        local_48 = (int *******)((int)unaff_s6 + (int)local_48);\nLAB_00021c5c:\n        unaff_s6 = local_48;\n        if (unaff_s5 == (int **)0x0) {\nLAB_00021ca4:\n          local_40 = 0;\n          goto LAB_00021ca8;\n        }\n        unaff_s6 = (int *******)((int)local_48 * 4);\n        if ((int)local_48 <= (int)param_2[0x17]) {\n          unaff_s6 = (int *******)(param_2[0x19] + (int)local_48);\n          pppppppiVar17 = pppppppiVar11;\n          if ((*unaff_s6 != (int ******)0x0) && (iVar13 = (*pcVar6)(*unaff_s6 + 1), iVar13 != 0))\n          goto LAB_00021ca4;\n        }\n      }\nLAB_00021f3c:\n      unaff_s0 = (int *******)0xffffffff;\n      goto LAB_00021f44;\n    }\n    pppppiVar8 = param_2[0x19][(int)local_48];\n    unaff_s2 = (int *******)(unaff_s2[5] + (int)unaff_s0 * 3);\n    pppppppiVar17 = unaff_s0;\n    iVar13 = (*pcVar7)(&local_44);\n    if (iVar13 == 0) goto LAB_00021b34;\n    unaff_s6 = (int *******)unaff_s2[1];\n    if ((int)unaff_s6 < 1) goto LAB_00021f3c;\n    unaff_s3 = unaff_s2[2];\n    unaff_s2 = (int *******)0x0;\n    unaff_s0 = (int *******)0xffffffff;\n    do {\n      pppppppiVar9 = (int *******)*unaff_s3;\n      pppppppiVar17 = pppppppiVar9;\n      iVar13 = (*pcVar6)(pppppiVar8 + 1);\n      pppppppiVar11 = unaff_s0;\n      if ((iVar13 != 0) &&\n         (pppppppiVar17 = unaff_s0, pppppppiVar11 = pppppppiVar9,\n         unaff_s0 != (int *******)0xffffffff)) {\n        iVar13 = (*pcVar6)(&local_44);\n        pppppppiVar4 = local_48;\n        if ((iVar13 == 0) &&\n           (pppppppiVar11 = unaff_s0, unaff_s6 = local_48, unaff_s5 != (int **)0x0)) {\n          unaff_s2 = (int *******)*unaff_s5;\n          *unaff_s5 = (int *)((int)unaff_s2 + 1);\n          pppppppiVar17 = (int *******)unaff_s5[1];\n          if ((int *******)((int)unaff_s2 + 1) == pppppppiVar17) {\n            pppppppiVar17 = (int *******)((int)pppppppiVar17 * 0x30);\n            piVar10 = (int *)(*(code *)PTR_realloc_0003e2fc)(unaff_s5[2]);\n            unaff_s6 = pppppppiVar4;\n            if (piVar10 == (int *)0x0) goto LAB_00021b34;\n            unaff_s5[1] = (int *)((int)unaff_s5[1] << 1);\n            unaff_s5[2] = piVar10;\n          }\n          unaff_s3 = (int ******)((int)unaff_s2 * 0x18);\n          unaff_s5[2][(int)unaff_s2 * 6] = (int)pppppppiVar4;\n          *(int ********)((int)unaff_s3 + (int)(unaff_s5[2] + 1)) = pppppppiVar9;\n          unaff_s2 = (int *******)(unaff_s5[2] + (int)unaff_s2 * 6);\n          ppppppiVar12 = (int ******)(*(code *)PTR_malloc_0003e2f8)(pppppppiVar15);\n          unaff_s2[2] = ppppppiVar12;\n          pppppppiVar18 = pppppppiVar15;\n          unaff_s6 = pppppppiVar15;\n          if (*(int *)((int)unaff_s3 + (int)(unaff_s5[2] + 2)) == 0) goto LAB_00021b34;\n          (*(code *)PTR_memcpy_0003e34c)(*(int *)((int)unaff_s3 + (int)(unaff_s5[2] + 2)),param_4);\n          pppppppiVar17 = &local_44;\n          iVar13 = FUN_0001b67c((int *)((int)unaff_s3 + (int)(unaff_s5[2] + 3)));\n          if (iVar13 != 0) goto LAB_00021b34;\n        }\n        break;\n      }\n      unaff_s2 = (int *******)((int)unaff_s2 + 1);\n      unaff_s3 = unaff_s3 + 1;\n      unaff_s0 = pppppppiVar11;\n    } while (unaff_s6 != unaff_s2);\nLAB_00021ca8:\n    unaff_s0 = pppppppiVar11;\n    if ((int)pppppppiVar11 < 0) {\nLAB_00021f44:\n      if (unaff_s0 == (int *******)&SUB_fffffffe) {\nLAB_00021b34:\n        (*(code *)PTR_free_0003e354)(local_3c);\n        if (bVar1) {\n          (*(code *)PTR_free_0003e354)(local_70);\n        }\n        FUN_0001eb94(unaff_s5);\n        iVar13 = 0xc;\n        goto LAB_00021ed8;\n      }\n      if (unaff_s5 == (int **)0x0) {\n        (*(code *)PTR_free_0003e354)();\n        if (bVar1) {\n          (*(code *)PTR_free_0003e354)(local_70);\n          iVar13 = 1;\n        }\n        else {\n          iVar13 = 1;\n        }\n        goto LAB_00021ed8;\n      }\n      *(int ********)(puVar25 + 0x10) = &local_44;\n      pppppppiVar17 = (int *******)&local_48;\n      pppppppiVar18 = param_3;\n      pppppppiVar19 = param_4;\n      unaff_s0 = (int *******)(*pcVar5)(unaff_s5);\n    }\n  }" { (expression_statement "piVar10 = (int *)(*piVar23 + (int)unaff_s0 * 8);" (assignment_expression "piVar10 = (int *)(*piVar23 + (int)unaff_s0 * 8)" identifier = (cast_expression "(int *)(*piVar23 + (int)unaff_s0 * 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar23 + (int)unaff_s0 * 8)" ( (binary_expression "*piVar23 + (int)unaff_s0 * 8" (pointer_expression "*piVar23" * identifier) + (binary_expression "(int)unaff_s0 * 8" (cast_expression "(int)unaff_s0" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) )))) ;) (if_statement "if (*(char *)(piVar10 + 1) == '\b') {\n      iVar13 = *piVar10;\n      if (iVar13 + 1 < (int)param_3) {\n        param_4[(iVar13 + 1) * 2] = (int ******)local_48;\n        (param_4 + (iVar13 + 1) * 2)[1] = (int ******)0xffffffff;\n      }\nLAB_00021cec:\n      pppppppiVar11 = (int *******)param_4[1];\n    }\n    else {\n      if ((*(char *)(piVar10 + 1) != '\t') || (iVar13 = *piVar10 + 1, (int)param_3 <= iVar13))\n      goto LAB_00021cec;\n      pppppppiVar17 = param_4 + iVar13 * 2;\n      if ((int)*pppppppiVar17 < (int)local_48) {\n        pppppppiVar17[1] = (int ******)local_48;\n        pppppppiVar17 = param_4;\n        pppppppiVar18 = pppppppiVar15;\n        (*(code *)puVar24)(local_70);\n        pppppppiVar11 = (int *******)param_4[1];\n      }\n      else {\n        if (((piVar10[1] & 0x1000U) == 0) ||\n           (pppppppiVar18 = pppppppiVar15, local_70[iVar13 * 2] == (int ******)0xffffffff)) {\n          pppppppiVar17[1] = (int ******)local_48;\n          goto LAB_00021cec;\n        }\n        pppppppiVar17 = local_70;\n        (*(code *)PTR_memcpy_0003e34c)(param_4);\n        pppppppiVar11 = (int *******)param_4[1];\n      }\n    }" if (parenthesized_expression "(*(char *)(piVar10 + 1) == '\b')" ( (binary_expression "*(char *)(piVar10 + 1) == '\b'" (pointer_expression "*(char *)(piVar10 + 1)" * (cast_expression "(char *)(piVar10 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar10 + 1)" ( (binary_expression "piVar10 + 1" identifier + number_literal) )))) == (char_literal "'\b'" ' escape_sequence ')) )) (compound_statement "{\n      iVar13 = *piVar10;\n      if (iVar13 + 1 < (int)param_3) {\n        param_4[(iVar13 + 1) * 2] = (int ******)local_48;\n        (param_4 + (iVar13 + 1) * 2)[1] = (int ******)0xffffffff;\n      }\nLAB_00021cec:\n      pppppppiVar11 = (int *******)param_4[1];\n    }" { (expression_statement "iVar13 = *piVar10;" (assignment_expression "iVar13 = *piVar10" identifier = (pointer_expression "*piVar10" * identifier)) ;) (if_statement "if (iVar13 + 1 < (int)param_3) {\n        param_4[(iVar13 + 1) * 2] = (int ******)local_48;\n        (param_4 + (iVar13 + 1) * 2)[1] = (int ******)0xffffffff;\n      }" if (parenthesized_expression "(iVar13 + 1 < (int)param_3)" ( (binary_expression "iVar13 + 1 < (int)param_3" (binary_expression "iVar13 + 1" identifier + number_literal) < (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n        param_4[(iVar13 + 1) * 2] = (int ******)local_48;\n        (param_4 + (iVar13 + 1) * 2)[1] = (int ******)0xffffffff;\n      }" { (expression_statement "param_4[(iVar13 + 1) * 2] = (int ******)local_48;" (assignment_expression "param_4[(iVar13 + 1) * 2] = (int ******)local_48" (subscript_expression "param_4[(iVar13 + 1) * 2]" identifier [ (binary_expression "(iVar13 + 1) * 2" (parenthesized_expression "(iVar13 + 1)" ( (binary_expression "iVar13 + 1" identifier + number_literal) )) * number_literal) ]) = (cast_expression "(int ******)local_48" ( (type_descriptor "int ******" primitive_type (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))))))) ) identifier)) ;) (expression_statement "(param_4 + (iVar13 + 1) * 2)[1] = (int ******)0xffffffff;" (assignment_expression "(param_4 + (iVar13 + 1) * 2)[1] = (int ******)0xffffffff" (subscript_expression "(param_4 + (iVar13 + 1) * 2)[1]" (parenthesized_expression "(param_4 + (iVar13 + 1) * 2)" ( (binary_expression "param_4 + (iVar13 + 1) * 2" identifier + (binary_expression "(iVar13 + 1) * 2" (parenthesized_expression "(iVar13 + 1)" ( (binary_expression "iVar13 + 1" identifier + number_literal) )) * number_literal)) )) [ number_literal ]) = (cast_expression "(int ******)0xffffffff" ( (type_descriptor "int ******" primitive_type (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))))))) ) number_literal)) ;) })) (labeled_statement "LAB_00021cec:\n      pppppppiVar11 = (int *******)param_4[1];" statement_identifier : (expression_statement "pppppppiVar11 = (int *******)param_4[1];" (assignment_expression "pppppppiVar11 = (int *******)param_4[1]" identifier = (cast_expression "(int *******)param_4[1]" ( (type_descriptor "int *******" primitive_type (abstract_pointer_declarator "*******" * (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))))))) ) (subscript_expression "param_4[1]" identifier [ number_literal ]))) ;)) }) (else_clause "else {\n      if ((*(char *)(piVar10 + 1) != '\t') || (iVar13 = *piVar10 + 1, (int)param_3 <= iVar13))\n      goto LAB_00021cec;\n      pppppppiVar17 = param_4 + iVar13 * 2;\n      if ((int)*pppppppiVar17 < (int)local_48) {\n        pppppppiVar17[1] = (int ******)local_48;\n        pppppppiVar17 = param_4;\n        pppppppiVar18 = pppppppiVar15;\n        (*(code *)puVar24)(local_70);\n        pppppppiVar11 = (int *******)param_4[1];\n      }\n      else {\n        if (((piVar10[1] & 0x1000U) == 0) ||\n           (pppppppiVar18 = pppppppiVar15, local_70[iVar13 * 2] == (int ******)0xffffffff)) {\n          pppppppiVar17[1] = (int ******)local_48;\n          goto LAB_00021cec;\n        }\n        pppppppiVar17 = local_70;\n        (*(code *)PTR_memcpy_0003e34c)(param_4);\n        pppppppiVar11 = (int *******)param_4[1];\n      }\n    }" else (compound_statement "{\n      if ((*(char *)(piVar10 + 1) != '\t') || (iVar13 = *piVar10 + 1, (int)param_3 <= iVar13))\n      goto LAB_00021cec;\n      pppppppiVar17 = param_4 + iVar13 * 2;\n      if ((int)*pppppppiVar17 < (int)local_48) {\n        pppppppiVar17[1] = (int ******)local_48;\n        pppppppiVar17 = param_4;\n        pppppppiVar18 = pppppppiVar15;\n        (*(code *)puVar24)(local_70);\n        pppppppiVar11 = (int *******)param_4[1];\n      }\n      else {\n        if (((piVar10[1] & 0x1000U) == 0) ||\n           (pppppppiVar18 = pppppppiVar15, local_70[iVar13 * 2] == (int ******)0xffffffff)) {\n          pppppppiVar17[1] = (int ******)local_48;\n          goto LAB_00021cec;\n        }\n        pppppppiVar17 = local_70;\n        (*(code *)PTR_memcpy_0003e34c)(param_4);\n        pppppppiVar11 = (int *******)param_4[1];\n      }\n    }" { (if_statement "if ((*(char *)(piVar10 + 1) != '\t') || (iVar13 = *piVar10 + 1, (int)param_3 <= iVar13))\n      goto LAB_00021cec;" if (parenthesized_expression "((*(char *)(piVar10 + 1) != '\t') || (iVar13 = *piVar10 + 1, (int)param_3 <= iVar13))" ( (binary_expression "(*(char *)(piVar10 + 1) != '\t') || (iVar13 = *piVar10 + 1, (int)param_3 <= iVar13)" (parenthesized_expression "(*(char *)(piVar10 + 1) != '\t')" ( (binary_expression "*(char *)(piVar10 + 1) != '\t'" (pointer_expression "*(char *)(piVar10 + 1)" * (cast_expression "(char *)(piVar10 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar10 + 1)" ( (binary_expression "piVar10 + 1" identifier + number_literal) )))) != (char_literal "'\t'" ' escape_sequence ')) )) || (parenthesized_expression "(iVar13 = *piVar10 + 1, (int)param_3 <= iVar13)" ( (comma_expression "iVar13 = *piVar10 + 1, (int)param_3 <= iVar13" (assignment_expression "iVar13 = *piVar10 + 1" identifier = (binary_expression "*piVar10 + 1" (pointer_expression "*piVar10" * identifier) + number_literal)) , (binary_expression "(int)param_3 <= iVar13" (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier) <= identifier)) ))) )) (goto_statement "goto LAB_00021cec;" goto statement_identifier ;)) (expression_statement "pppppppiVar17 = param_4 + iVar13 * 2;" (assignment_expression "pppppppiVar17 = param_4 + iVar13 * 2" identifier = (binary_expression "param_4 + iVar13 * 2" identifier + (binary_expression "iVar13 * 2" identifier * number_literal))) ;) (if_statement "if ((int)*pppppppiVar17 < (int)local_48) {\n        pppppppiVar17[1] = (int ******)local_48;\n        pppppppiVar17 = param_4;\n        pppppppiVar18 = pppppppiVar15;\n        (*(code *)puVar24)(local_70);\n        pppppppiVar11 = (int *******)param_4[1];\n      }\n      else {\n        if (((piVar10[1] & 0x1000U) == 0) ||\n           (pppppppiVar18 = pppppppiVar15, local_70[iVar13 * 2] == (int ******)0xffffffff)) {\n          pppppppiVar17[1] = (int ******)local_48;\n          goto LAB_00021cec;\n        }\n        pppppppiVar17 = local_70;\n        (*(code *)PTR_memcpy_0003e34c)(param_4);\n        pppppppiVar11 = (int *******)param_4[1];\n      }" if (parenthesized_expression "((int)*pppppppiVar17 < (int)local_48)" ( (binary_expression "(int)*pppppppiVar17 < (int)local_48" (cast_expression "(int)*pppppppiVar17" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*pppppppiVar17" * identifier)) < (cast_expression "(int)local_48" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n        pppppppiVar17[1] = (int ******)local_48;\n        pppppppiVar17 = param_4;\n        pppppppiVar18 = pppppppiVar15;\n        (*(code *)puVar24)(local_70);\n        pppppppiVar11 = (int *******)param_4[1];\n      }" { (expression_statement "pppppppiVar17[1] = (int ******)local_48;" (assignment_expression "pppppppiVar17[1] = (int ******)local_48" (subscript_expression "pppppppiVar17[1]" identifier [ number_literal ]) = (cast_expression "(int ******)local_48" ( (type_descriptor "int ******" primitive_type (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))))))) ) identifier)) ;) (expression_statement "pppppppiVar17 = param_4;" (assignment_expression "pppppppiVar17 = param_4" identifier = identifier) ;) (expression_statement "pppppppiVar18 = pppppppiVar15;" (assignment_expression "pppppppiVar18 = pppppppiVar15" identifier = identifier) ;) (expression_statement "(*(code *)puVar24)(local_70);" (call_expression "(*(code *)puVar24)(local_70)" (parenthesized_expression "(*(code *)puVar24)" ( (pointer_expression "*(code *)puVar24" * (cast_expression "(code *)puVar24" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(local_70)" ( identifier ))) ;) (expression_statement "pppppppiVar11 = (int *******)param_4[1];" (assignment_expression "pppppppiVar11 = (int *******)param_4[1]" identifier = (cast_expression "(int *******)param_4[1]" ( (type_descriptor "int *******" primitive_type (abstract_pointer_declarator "*******" * (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))))))) ) (subscript_expression "param_4[1]" identifier [ number_literal ]))) ;) }) (else_clause "else {\n        if (((piVar10[1] & 0x1000U) == 0) ||\n           (pppppppiVar18 = pppppppiVar15, local_70[iVar13 * 2] == (int ******)0xffffffff)) {\n          pppppppiVar17[1] = (int ******)local_48;\n          goto LAB_00021cec;\n        }\n        pppppppiVar17 = local_70;\n        (*(code *)PTR_memcpy_0003e34c)(param_4);\n        pppppppiVar11 = (int *******)param_4[1];\n      }" else (compound_statement "{\n        if (((piVar10[1] & 0x1000U) == 0) ||\n           (pppppppiVar18 = pppppppiVar15, local_70[iVar13 * 2] == (int ******)0xffffffff)) {\n          pppppppiVar17[1] = (int ******)local_48;\n          goto LAB_00021cec;\n        }\n        pppppppiVar17 = local_70;\n        (*(code *)PTR_memcpy_0003e34c)(param_4);\n        pppppppiVar11 = (int *******)param_4[1];\n      }" { (if_statement "if (((piVar10[1] & 0x1000U) == 0) ||\n           (pppppppiVar18 = pppppppiVar15, local_70[iVar13 * 2] == (int ******)0xffffffff)) {\n          pppppppiVar17[1] = (int ******)local_48;\n          goto LAB_00021cec;\n        }" if (parenthesized_expression "(((piVar10[1] & 0x1000U) == 0) ||\n           (pppppppiVar18 = pppppppiVar15, local_70[iVar13 * 2] == (int ******)0xffffffff))" ( (binary_expression "((piVar10[1] & 0x1000U) == 0) ||\n           (pppppppiVar18 = pppppppiVar15, local_70[iVar13 * 2] == (int ******)0xffffffff)" (parenthesized_expression "((piVar10[1] & 0x1000U) == 0)" ( (binary_expression "(piVar10[1] & 0x1000U) == 0" (parenthesized_expression "(piVar10[1] & 0x1000U)" ( (binary_expression "piVar10[1] & 0x1000U" (subscript_expression "piVar10[1]" identifier [ number_literal ]) & number_literal) )) == number_literal) )) || (parenthesized_expression "(pppppppiVar18 = pppppppiVar15, local_70[iVar13 * 2] == (int ******)0xffffffff)" ( (comma_expression "pppppppiVar18 = pppppppiVar15, local_70[iVar13 * 2] == (int ******)0xffffffff" (assignment_expression "pppppppiVar18 = pppppppiVar15" identifier = identifier) , (binary_expression "local_70[iVar13 * 2] == (int ******)0xffffffff" (subscript_expression "local_70[iVar13 * 2]" identifier [ (binary_expression "iVar13 * 2" identifier * number_literal) ]) == (cast_expression "(int ******)0xffffffff" ( (type_descriptor "int ******" primitive_type (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))))))) ) number_literal))) ))) )) (compound_statement "{\n          pppppppiVar17[1] = (int ******)local_48;\n          goto LAB_00021cec;\n        }" { (expression_statement "pppppppiVar17[1] = (int ******)local_48;" (assignment_expression "pppppppiVar17[1] = (int ******)local_48" (subscript_expression "pppppppiVar17[1]" identifier [ number_literal ]) = (cast_expression "(int ******)local_48" ( (type_descriptor "int ******" primitive_type (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))))))) ) identifier)) ;) (goto_statement "goto LAB_00021cec;" goto statement_identifier ;) })) (expression_statement "pppppppiVar17 = local_70;" (assignment_expression "pppppppiVar17 = local_70" identifier = identifier) ;) (expression_statement "(*(code *)PTR_memcpy_0003e34c)(param_4);" (call_expression "(*(code *)PTR_memcpy_0003e34c)(param_4)" (parenthesized_expression "(*(code *)PTR_memcpy_0003e34c)" ( (pointer_expression "*(code *)PTR_memcpy_0003e34c" * (cast_expression "(code *)PTR_memcpy_0003e34c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(param_4)" ( identifier ))) ;) (expression_statement "pppppppiVar11 = (int *******)param_4[1];" (assignment_expression "pppppppiVar11 = (int *******)param_4[1]" identifier = (cast_expression "(int *******)param_4[1]" ( (type_descriptor "int *******" primitive_type (abstract_pointer_declarator "*******" * (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))))))) ) (subscript_expression "param_4[1]" identifier [ number_literal ]))) ;) }))) }))) (if_statement "if ((pppppppiVar11 == unaff_s2) && ((int *******)param_2[0x18] == unaff_s0)) {\n      if (unaff_s5 == (int **)0x0) {\n        (*(code *)PTR_free_0003e354)(local_3c);\n        if (bVar1) {\n          (*(code *)PTR_free_0003e354)(local_70);\n          iVar13 = 0;\n        }\n        else {\n          iVar13 = 0;\n        }\n      }\n      else {\n        if (param_3 != (int *******)0x0) {\n          pppppppiVar9 = (int *******)0x0;\n          pppppppiVar18 = (int *******)0xffffffff;\n          pppppppiVar11 = param_4;\n          do {\n            if ((-1 < (int)*pppppppiVar11) &&\n               (pppppppiVar17 = (int *******)pppppppiVar11[1],\n               (int *******)pppppppiVar11[1] == (int *******)0xffffffff)) break;\n            pppppppiVar9 = (int *******)((int)pppppppiVar9 + 1);\n            pppppppiVar11 = pppppppiVar11 + 2;\n            pppppppiVar17 = param_3;\n          } while (param_3 != pppppppiVar9);\n          if (pppppppiVar9 != param_3) {\n            *(int ********)(puVar25 + 0x10) = &local_44;\n            pppppppiVar17 = (int *******)&local_48;\n            pppppppiVar18 = param_3;\n            pppppppiVar19 = param_4;\n            unaff_s0 = (int *******)(*pcVar5)(unaff_s5);\n            goto LAB_00021d04;\n          }\n        }\n        (*(code *)PTR_free_0003e354)(local_3c);\n        if (bVar1) {\n          (*(code *)PTR_free_0003e354)(local_70);\n        }\n        iVar13 = FUN_0001eb94(unaff_s5);\n      }\n      goto LAB_00021ed8;\n    }" if (parenthesized_expression "((pppppppiVar11 == unaff_s2) && ((int *******)param_2[0x18] == unaff_s0))" ( (binary_expression "(pppppppiVar11 == unaff_s2) && ((int *******)param_2[0x18] == unaff_s0)" (parenthesized_expression "(pppppppiVar11 == unaff_s2)" ( (binary_expression "pppppppiVar11 == unaff_s2" identifier == identifier) )) && (parenthesized_expression "((int *******)param_2[0x18] == unaff_s0)" ( (binary_expression "(int *******)param_2[0x18] == unaff_s0" (cast_expression "(int *******)param_2[0x18]" ( (type_descriptor "int *******" primitive_type (abstract_pointer_declarator "*******" * (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))))))) ) (subscript_expression "param_2[0x18]" identifier [ number_literal ])) == identifier) ))) )) (compound_statement "{\n      if (unaff_s5 == (int **)0x0) {\n        (*(code *)PTR_free_0003e354)(local_3c);\n        if (bVar1) {\n          (*(code *)PTR_free_0003e354)(local_70);\n          iVar13 = 0;\n        }\n        else {\n          iVar13 = 0;\n        }\n      }\n      else {\n        if (param_3 != (int *******)0x0) {\n          pppppppiVar9 = (int *******)0x0;\n          pppppppiVar18 = (int *******)0xffffffff;\n          pppppppiVar11 = param_4;\n          do {\n            if ((-1 < (int)*pppppppiVar11) &&\n               (pppppppiVar17 = (int *******)pppppppiVar11[1],\n               (int *******)pppppppiVar11[1] == (int *******)0xffffffff)) break;\n            pppppppiVar9 = (int *******)((int)pppppppiVar9 + 1);\n            pppppppiVar11 = pppppppiVar11 + 2;\n            pppppppiVar17 = param_3;\n          } while (param_3 != pppppppiVar9);\n          if (pppppppiVar9 != param_3) {\n            *(int ********)(puVar25 + 0x10) = &local_44;\n            pppppppiVar17 = (int *******)&local_48;\n            pppppppiVar18 = param_3;\n            pppppppiVar19 = param_4;\n            unaff_s0 = (int *******)(*pcVar5)(unaff_s5);\n            goto LAB_00021d04;\n          }\n        }\n        (*(code *)PTR_free_0003e354)(local_3c);\n        if (bVar1) {\n          (*(code *)PTR_free_0003e354)(local_70);\n        }\n        iVar13 = FUN_0001eb94(unaff_s5);\n      }\n      goto LAB_00021ed8;\n    }" { (if_statement "if (unaff_s5 == (int **)0x0) {\n        (*(code *)PTR_free_0003e354)(local_3c);\n        if (bVar1) {\n          (*(code *)PTR_free_0003e354)(local_70);\n          iVar13 = 0;\n        }\n        else {\n          iVar13 = 0;\n        }\n      }\n      else {\n        if (param_3 != (int *******)0x0) {\n          pppppppiVar9 = (int *******)0x0;\n          pppppppiVar18 = (int *******)0xffffffff;\n          pppppppiVar11 = param_4;\n          do {\n            if ((-1 < (int)*pppppppiVar11) &&\n               (pppppppiVar17 = (int *******)pppppppiVar11[1],\n               (int *******)pppppppiVar11[1] == (int *******)0xffffffff)) break;\n            pppppppiVar9 = (int *******)((int)pppppppiVar9 + 1);\n            pppppppiVar11 = pppppppiVar11 + 2;\n            pppppppiVar17 = param_3;\n          } while (param_3 != pppppppiVar9);\n          if (pppppppiVar9 != param_3) {\n            *(int ********)(puVar25 + 0x10) = &local_44;\n            pppppppiVar17 = (int *******)&local_48;\n            pppppppiVar18 = param_3;\n            pppppppiVar19 = param_4;\n            unaff_s0 = (int *******)(*pcVar5)(unaff_s5);\n            goto LAB_00021d04;\n          }\n        }\n        (*(code *)PTR_free_0003e354)(local_3c);\n        if (bVar1) {\n          (*(code *)PTR_free_0003e354)(local_70);\n        }\n        iVar13 = FUN_0001eb94(unaff_s5);\n      }" if (parenthesized_expression "(unaff_s5 == (int **)0x0)" ( (binary_expression "unaff_s5 == (int **)0x0" identifier == (cast_expression "(int **)0x0" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal)) )) (compound_statement "{\n        (*(code *)PTR_free_0003e354)(local_3c);\n        if (bVar1) {\n          (*(code *)PTR_free_0003e354)(local_70);\n          iVar13 = 0;\n        }\n        else {\n          iVar13 = 0;\n        }\n      }" { (expression_statement "(*(code *)PTR_free_0003e354)(local_3c);" (call_expression "(*(code *)PTR_free_0003e354)(local_3c)" (parenthesized_expression "(*(code *)PTR_free_0003e354)" ( (pointer_expression "*(code *)PTR_free_0003e354" * (cast_expression "(code *)PTR_free_0003e354" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(local_3c)" ( identifier ))) ;) (if_statement "if (bVar1) {\n          (*(code *)PTR_free_0003e354)(local_70);\n          iVar13 = 0;\n        }\n        else {\n          iVar13 = 0;\n        }" if (parenthesized_expression "(bVar1)" ( identifier )) (compound_statement "{\n          (*(code *)PTR_free_0003e354)(local_70);\n          iVar13 = 0;\n        }" { (expression_statement "(*(code *)PTR_free_0003e354)(local_70);" (call_expression "(*(code *)PTR_free_0003e354)(local_70)" (parenthesized_expression "(*(code *)PTR_free_0003e354)" ( (pointer_expression "*(code *)PTR_free_0003e354" * (cast_expression "(code *)PTR_free_0003e354" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(local_70)" ( identifier ))) ;) (expression_statement "iVar13 = 0;" (assignment_expression "iVar13 = 0" identifier = number_literal) ;) }) (else_clause "else {\n          iVar13 = 0;\n        }" else (compound_statement "{\n          iVar13 = 0;\n        }" { (expression_statement "iVar13 = 0;" (assignment_expression "iVar13 = 0" identifier = number_literal) ;) }))) }) (else_clause "else {\n        if (param_3 != (int *******)0x0) {\n          pppppppiVar9 = (int *******)0x0;\n          pppppppiVar18 = (int *******)0xffffffff;\n          pppppppiVar11 = param_4;\n          do {\n            if ((-1 < (int)*pppppppiVar11) &&\n               (pppppppiVar17 = (int *******)pppppppiVar11[1],\n               (int *******)pppppppiVar11[1] == (int *******)0xffffffff)) break;\n            pppppppiVar9 = (int *******)((int)pppppppiVar9 + 1);\n            pppppppiVar11 = pppppppiVar11 + 2;\n            pppppppiVar17 = param_3;\n          } while (param_3 != pppppppiVar9);\n          if (pppppppiVar9 != param_3) {\n            *(int ********)(puVar25 + 0x10) = &local_44;\n            pppppppiVar17 = (int *******)&local_48;\n            pppppppiVar18 = param_3;\n            pppppppiVar19 = param_4;\n            unaff_s0 = (int *******)(*pcVar5)(unaff_s5);\n            goto LAB_00021d04;\n          }\n        }\n        (*(code *)PTR_free_0003e354)(local_3c);\n        if (bVar1) {\n          (*(code *)PTR_free_0003e354)(local_70);\n        }\n        iVar13 = FUN_0001eb94(unaff_s5);\n      }" else (compound_statement "{\n        if (param_3 != (int *******)0x0) {\n          pppppppiVar9 = (int *******)0x0;\n          pppppppiVar18 = (int *******)0xffffffff;\n          pppppppiVar11 = param_4;\n          do {\n            if ((-1 < (int)*pppppppiVar11) &&\n               (pppppppiVar17 = (int *******)pppppppiVar11[1],\n               (int *******)pppppppiVar11[1] == (int *******)0xffffffff)) break;\n            pppppppiVar9 = (int *******)((int)pppppppiVar9 + 1);\n            pppppppiVar11 = pppppppiVar11 + 2;\n            pppppppiVar17 = param_3;\n          } while (param_3 != pppppppiVar9);\n          if (pppppppiVar9 != param_3) {\n            *(int ********)(puVar25 + 0x10) = &local_44;\n            pppppppiVar17 = (int *******)&local_48;\n            pppppppiVar18 = param_3;\n            pppppppiVar19 = param_4;\n            unaff_s0 = (int *******)(*pcVar5)(unaff_s5);\n            goto LAB_00021d04;\n          }\n        }\n        (*(code *)PTR_free_0003e354)(local_3c);\n        if (bVar1) {\n          (*(code *)PTR_free_0003e354)(local_70);\n        }\n        iVar13 = FUN_0001eb94(unaff_s5);\n      }" { (if_statement "if (param_3 != (int *******)0x0) {\n          pppppppiVar9 = (int *******)0x0;\n          pppppppiVar18 = (int *******)0xffffffff;\n          pppppppiVar11 = param_4;\n          do {\n            if ((-1 < (int)*pppppppiVar11) &&\n               (pppppppiVar17 = (int *******)pppppppiVar11[1],\n               (int *******)pppppppiVar11[1] == (int *******)0xffffffff)) break;\n            pppppppiVar9 = (int *******)((int)pppppppiVar9 + 1);\n            pppppppiVar11 = pppppppiVar11 + 2;\n            pppppppiVar17 = param_3;\n          } while (param_3 != pppppppiVar9);\n          if (pppppppiVar9 != param_3) {\n            *(int ********)(puVar25 + 0x10) = &local_44;\n            pppppppiVar17 = (int *******)&local_48;\n            pppppppiVar18 = param_3;\n            pppppppiVar19 = param_4;\n            unaff_s0 = (int *******)(*pcVar5)(unaff_s5);\n            goto LAB_00021d04;\n          }\n        }" if (parenthesized_expression "(param_3 != (int *******)0x0)" ( (binary_expression "param_3 != (int *******)0x0" identifier != (cast_expression "(int *******)0x0" ( (type_descriptor "int *******" primitive_type (abstract_pointer_declarator "*******" * (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))))))) ) number_literal)) )) (compound_statement "{\n          pppppppiVar9 = (int *******)0x0;\n          pppppppiVar18 = (int *******)0xffffffff;\n          pppppppiVar11 = param_4;\n          do {\n            if ((-1 < (int)*pppppppiVar11) &&\n               (pppppppiVar17 = (int *******)pppppppiVar11[1],\n               (int *******)pppppppiVar11[1] == (int *******)0xffffffff)) break;\n            pppppppiVar9 = (int *******)((int)pppppppiVar9 + 1);\n            pppppppiVar11 = pppppppiVar11 + 2;\n            pppppppiVar17 = param_3;\n          } while (param_3 != pppppppiVar9);\n          if (pppppppiVar9 != param_3) {\n            *(int ********)(puVar25 + 0x10) = &local_44;\n            pppppppiVar17 = (int *******)&local_48;\n            pppppppiVar18 = param_3;\n            pppppppiVar19 = param_4;\n            unaff_s0 = (int *******)(*pcVar5)(unaff_s5);\n            goto LAB_00021d04;\n          }\n        }" { (expression_statement "pppppppiVar9 = (int *******)0x0;" (assignment_expression "pppppppiVar9 = (int *******)0x0" identifier = (cast_expression "(int *******)0x0" ( (type_descriptor "int *******" primitive_type (abstract_pointer_declarator "*******" * (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))))))) ) number_literal)) ;) (expression_statement "pppppppiVar18 = (int *******)0xffffffff;" (assignment_expression "pppppppiVar18 = (int *******)0xffffffff" identifier = (cast_expression "(int *******)0xffffffff" ( (type_descriptor "int *******" primitive_type (abstract_pointer_declarator "*******" * (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))))))) ) number_literal)) ;) (expression_statement "pppppppiVar11 = param_4;" (assignment_expression "pppppppiVar11 = param_4" identifier = identifier) ;) (do_statement "do {\n            if ((-1 < (int)*pppppppiVar11) &&\n               (pppppppiVar17 = (int *******)pppppppiVar11[1],\n               (int *******)pppppppiVar11[1] == (int *******)0xffffffff)) break;\n            pppppppiVar9 = (int *******)((int)pppppppiVar9 + 1);\n            pppppppiVar11 = pppppppiVar11 + 2;\n            pppppppiVar17 = param_3;\n          } while (param_3 != pppppppiVar9);" do (compound_statement "{\n            if ((-1 < (int)*pppppppiVar11) &&\n               (pppppppiVar17 = (int *******)pppppppiVar11[1],\n               (int *******)pppppppiVar11[1] == (int *******)0xffffffff)) break;\n            pppppppiVar9 = (int *******)((int)pppppppiVar9 + 1);\n            pppppppiVar11 = pppppppiVar11 + 2;\n            pppppppiVar17 = param_3;\n          }" { (if_statement "if ((-1 < (int)*pppppppiVar11) &&\n               (pppppppiVar17 = (int *******)pppppppiVar11[1],\n               (int *******)pppppppiVar11[1] == (int *******)0xffffffff)) break;" if (parenthesized_expression "((-1 < (int)*pppppppiVar11) &&\n               (pppppppiVar17 = (int *******)pppppppiVar11[1],\n               (int *******)pppppppiVar11[1] == (int *******)0xffffffff))" ( (binary_expression "(-1 < (int)*pppppppiVar11) &&\n               (pppppppiVar17 = (int *******)pppppppiVar11[1],\n               (int *******)pppppppiVar11[1] == (int *******)0xffffffff)" (parenthesized_expression "(-1 < (int)*pppppppiVar11)" ( (binary_expression "-1 < (int)*pppppppiVar11" number_literal < (cast_expression "(int)*pppppppiVar11" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*pppppppiVar11" * identifier))) )) && (parenthesized_expression "(pppppppiVar17 = (int *******)pppppppiVar11[1],\n               (int *******)pppppppiVar11[1] == (int *******)0xffffffff)" ( (comma_expression "pppppppiVar17 = (int *******)pppppppiVar11[1],\n               (int *******)pppppppiVar11[1] == (int *******)0xffffffff" (assignment_expression "pppppppiVar17 = (int *******)pppppppiVar11[1]" identifier = (cast_expression "(int *******)pppppppiVar11[1]" ( (type_descriptor "int *******" primitive_type (abstract_pointer_declarator "*******" * (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))))))) ) (subscript_expression "pppppppiVar11[1]" identifier [ number_literal ]))) , (binary_expression "(int *******)pppppppiVar11[1] == (int *******)0xffffffff" (cast_expression "(int *******)pppppppiVar11[1]" ( (type_descriptor "int *******" primitive_type (abstract_pointer_declarator "*******" * (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))))))) ) (subscript_expression "pppppppiVar11[1]" identifier [ number_literal ])) == (cast_expression "(int *******)0xffffffff" ( (type_descriptor "int *******" primitive_type (abstract_pointer_declarator "*******" * (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))))))) ) number_literal))) ))) )) (break_statement "break;" break ;)) (expression_statement "pppppppiVar9 = (int *******)((int)pppppppiVar9 + 1);" (assignment_expression "pppppppiVar9 = (int *******)((int)pppppppiVar9 + 1)" identifier = (cast_expression "(int *******)((int)pppppppiVar9 + 1)" ( (type_descriptor "int *******" primitive_type (abstract_pointer_declarator "*******" * (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))))))) ) (parenthesized_expression "((int)pppppppiVar9 + 1)" ( (binary_expression "(int)pppppppiVar9 + 1" (cast_expression "(int)pppppppiVar9" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "pppppppiVar11 = pppppppiVar11 + 2;" (assignment_expression "pppppppiVar11 = pppppppiVar11 + 2" identifier = (binary_expression "pppppppiVar11 + 2" identifier + number_literal)) ;) (expression_statement "pppppppiVar17 = param_3;" (assignment_expression "pppppppiVar17 = param_3" identifier = identifier) ;) }) while (parenthesized_expression "(param_3 != pppppppiVar9)" ( (binary_expression "param_3 != pppppppiVar9" identifier != identifier) )) ;) (if_statement "if (pppppppiVar9 != param_3) {\n            *(int ********)(puVar25 + 0x10) = &local_44;\n            pppppppiVar17 = (int *******)&local_48;\n            pppppppiVar18 = param_3;\n            pppppppiVar19 = param_4;\n            unaff_s0 = (int *******)(*pcVar5)(unaff_s5);\n            goto LAB_00021d04;\n          }" if (parenthesized_expression "(pppppppiVar9 != param_3)" ( (binary_expression "pppppppiVar9 != param_3" identifier != identifier) )) (compound_statement "{\n            *(int ********)(puVar25 + 0x10) = &local_44;\n            pppppppiVar17 = (int *******)&local_48;\n            pppppppiVar18 = param_3;\n            pppppppiVar19 = param_4;\n            unaff_s0 = (int *******)(*pcVar5)(unaff_s5);\n            goto LAB_00021d04;\n          }" { (expression_statement "*(int ********)(puVar25 + 0x10) = &local_44;" (assignment_expression "*(int ********)(puVar25 + 0x10) = &local_44" (pointer_expression "*(int ********)(puVar25 + 0x10)" * (cast_expression "(int ********)(puVar25 + 0x10)" ( (type_descriptor "int ********" primitive_type (abstract_pointer_declarator "********" * (abstract_pointer_declarator "*******" * (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))))))))) ) (parenthesized_expression "(puVar25 + 0x10)" ( (binary_expression "puVar25 + 0x10" identifier + number_literal) )))) = (pointer_expression "&local_44" & identifier)) ;) (expression_statement "pppppppiVar17 = (int *******)&local_48;" (assignment_expression "pppppppiVar17 = (int *******)&local_48" identifier = (cast_expression "(int *******)&local_48" ( (type_descriptor "int *******" primitive_type (abstract_pointer_declarator "*******" * (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))))))) ) (pointer_expression "&local_48" & identifier))) ;) (expression_statement "pppppppiVar18 = param_3;" (assignment_expression "pppppppiVar18 = param_3" identifier = identifier) ;) (expression_statement "pppppppiVar19 = param_4;" (assignment_expression "pppppppiVar19 = param_4" identifier = identifier) ;) (expression_statement "unaff_s0 = (int *******)(*pcVar5)(unaff_s5);" (assignment_expression "unaff_s0 = (int *******)(*pcVar5)(unaff_s5)" identifier = (cast_expression "(int *******)(*pcVar5)(unaff_s5)" ( (type_descriptor "int *******" primitive_type (abstract_pointer_declarator "*******" * (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))))))) ) (call_expression "(*pcVar5)(unaff_s5)" (parenthesized_expression "(*pcVar5)" ( (pointer_expression "*pcVar5" * identifier) )) (argument_list "(unaff_s5)" ( identifier ))))) ;) (goto_statement "goto LAB_00021d04;" goto statement_identifier ;) })) })) (expression_statement "(*(code *)PTR_free_0003e354)(local_3c);" (call_expression "(*(code *)PTR_free_0003e354)(local_3c)" (parenthesized_expression "(*(code *)PTR_free_0003e354)" ( (pointer_expression "*(code *)PTR_free_0003e354" * (cast_expression "(code *)PTR_free_0003e354" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(local_3c)" ( identifier ))) ;) (if_statement "if (bVar1) {\n          (*(code *)PTR_free_0003e354)(local_70);\n        }" if (parenthesized_expression "(bVar1)" ( identifier )) (compound_statement "{\n          (*(code *)PTR_free_0003e354)(local_70);\n        }" { (expression_statement "(*(code *)PTR_free_0003e354)(local_70);" (call_expression "(*(code *)PTR_free_0003e354)(local_70)" (parenthesized_expression "(*(code *)PTR_free_0003e354)" ( (pointer_expression "*(code *)PTR_free_0003e354" * (cast_expression "(code *)PTR_free_0003e354" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(local_70)" ( identifier ))) ;) })) (expression_statement "iVar13 = FUN_0001eb94(unaff_s5);" (assignment_expression "iVar13 = FUN_0001eb94(unaff_s5)" identifier = (call_expression "FUN_0001eb94(unaff_s5)" identifier (argument_list "(unaff_s5)" ( identifier )))) ;) }))) (goto_statement "goto LAB_00021ed8;" goto statement_identifier ;) })) (labeled_statement "LAB_00021d04:\n    unaff_s2 = (int *******)param_2[0x15];" statement_identifier : (expression_statement "unaff_s2 = (int *******)param_2[0x15];" (assignment_expression "unaff_s2 = (int *******)param_2[0x15]" identifier = (cast_expression "(int *******)param_2[0x15]" ( (type_descriptor "int *******" primitive_type (abstract_pointer_declarator "*******" * (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))))))) ) (subscript_expression "param_2[0x15]" identifier [ number_literal ]))) ;)) (expression_statement "unaff_s3 = (int ******)((int)unaff_s0 * 8);" (assignment_expression "unaff_s3 = (int ******)((int)unaff_s0 * 8)" identifier = (cast_expression "(int ******)((int)unaff_s0 * 8)" ( (type_descriptor "int ******" primitive_type (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))))))) ) (parenthesized_expression "((int)unaff_s0 * 8)" ( (binary_expression "(int)unaff_s0 * 8" (cast_expression "(int)unaff_s0" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) )))) ;) (expression_statement "ppppppiVar12 = *unaff_s2 + (int)unaff_s0 * 2;" (assignment_expression "ppppppiVar12 = *unaff_s2 + (int)unaff_s0 * 2" identifier = (binary_expression "*unaff_s2 + (int)unaff_s0 * 2" (pointer_expression "*unaff_s2" * identifier) + (binary_expression "(int)unaff_s0 * 2" (cast_expression "(int)unaff_s0" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal))) ;) (if_statement "if ((*(byte *)(ppppppiVar12 + 1) & 8) == 0) {\n      if (((uint)ppppppiVar12[1] & 0x800) == 0) {\n        if (*(byte *)(ppppppiVar12 + 1) == 4) {\n          ppppppiVar16 = (param_4 + ((int)*ppppppiVar12 + 1) * 2)[1];\n          ppppppiVar12 = param_4[((int)*ppppppiVar12 + 1) * 2];\n          unaff_s6 = (int *******)((int)ppppppiVar16 - (int)ppppppiVar12);\n          if (unaff_s5 == (int **)0x0) {\n            pppppppiVar17 = unaff_s0;\n            if (unaff_s6 != (int *******)0x0) goto LAB_00021da8;\nLAB_00021dd0:\n            pppppppiVar17 = unaff_s0;\n            iVar13 = (*pcVar7)(&local_44);\n            if (iVar13 == 0) goto LAB_00021b34;\n            pppppppiVar11 = (int *******)*unaff_s2[5][(int)unaff_s0 * 3 + 2];\n            pppppppiVar17 = pppppppiVar11;\n            iVar13 = (*pcVar6)(param_2[0x19][(int)local_48] + 1);\n            if (iVar13 != 0) goto LAB_00021ca8;\n            goto LAB_00021c18;\n          }\n          if ((ppppppiVar12 != (int ******)0xffffffff) && (ppppppiVar16 != (int ******)0xffffffff))\n          {\n            if (unaff_s6 == (int *******)0x0) goto LAB_00021dd0;\n            pppppppiVar17 = (int *******)((int)param_2[1] + (int)local_48);\n            pppppppiVar18 = unaff_s6;\n            iVar13 = (*(code *)PTR_memcmp_0003e338)((int)param_2[1] + (int)ppppppiVar12);\n            if (iVar13 == 0) goto LAB_00021da8;\n          }\n        }\n        else {\nLAB_00021c18:\n          unaff_s6 = local_48;\n          pppppppiVar17 = (int *******)(*unaff_s2 + (int)unaff_s0 * 2);\n          pppppppiVar18 = local_48;\n          iVar13 = FUN_0001c4f8(param_2);\n          if (iVar13 != 0) {\n            pppppppiVar11 = (int *******)unaff_s2[3][(int)unaff_s0];\n            local_48 = (int *******)((int)unaff_s6 + 1);\n            goto LAB_00021c5c;\n          }\n        }\n      }\n      else {\n        pppppppiVar17 = unaff_s0;\n        pppppppiVar18 = param_2;\n        pppppppiVar19 = local_48;\n        unaff_s6 = (int *******)FUN_000200a0(unaff_s2);\n        if (unaff_s6 == (int *******)0x0) goto LAB_00021c18;\nLAB_00021da8:\n        pppppppiVar11 = (int *******)unaff_s2[3][(int)unaff_s0];\n        local_48 = (int *******)((int)unaff_s6 + (int)local_48);\nLAB_00021c5c:\n        unaff_s6 = local_48;\n        if (unaff_s5 == (int **)0x0) {\nLAB_00021ca4:\n          local_40 = 0;\n          goto LAB_00021ca8;\n        }\n        unaff_s6 = (int *******)((int)local_48 * 4);\n        if ((int)local_48 <= (int)param_2[0x17]) {\n          unaff_s6 = (int *******)(param_2[0x19] + (int)local_48);\n          pppppppiVar17 = pppppppiVar11;\n          if ((*unaff_s6 != (int ******)0x0) && (iVar13 = (*pcVar6)(*unaff_s6 + 1), iVar13 != 0))\n          goto LAB_00021ca4;\n        }\n      }\nLAB_00021f3c:\n      unaff_s0 = (int *******)0xffffffff;\n      goto LAB_00021f44;\n    }" if (parenthesized_expression "((*(byte *)(ppppppiVar12 + 1) & 8) == 0)" ( (binary_expression "(*(byte *)(ppppppiVar12 + 1) & 8) == 0" (parenthesized_expression "(*(byte *)(ppppppiVar12 + 1) & 8)" ( (binary_expression "*(byte *)(ppppppiVar12 + 1) & 8" (pointer_expression "*(byte *)(ppppppiVar12 + 1)" * (cast_expression "(byte *)(ppppppiVar12 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(ppppppiVar12 + 1)" ( (binary_expression "ppppppiVar12 + 1" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n      if (((uint)ppppppiVar12[1] & 0x800) == 0) {\n        if (*(byte *)(ppppppiVar12 + 1) == 4) {\n          ppppppiVar16 = (param_4 + ((int)*ppppppiVar12 + 1) * 2)[1];\n          ppppppiVar12 = param_4[((int)*ppppppiVar12 + 1) * 2];\n          unaff_s6 = (int *******)((int)ppppppiVar16 - (int)ppppppiVar12);\n          if (unaff_s5 == (int **)0x0) {\n            pppppppiVar17 = unaff_s0;\n            if (unaff_s6 != (int *******)0x0) goto LAB_00021da8;\nLAB_00021dd0:\n            pppppppiVar17 = unaff_s0;\n            iVar13 = (*pcVar7)(&local_44);\n            if (iVar13 == 0) goto LAB_00021b34;\n            pppppppiVar11 = (int *******)*unaff_s2[5][(int)unaff_s0 * 3 + 2];\n            pppppppiVar17 = pppppppiVar11;\n            iVar13 = (*pcVar6)(param_2[0x19][(int)local_48] + 1);\n            if (iVar13 != 0) goto LAB_00021ca8;\n            goto LAB_00021c18;\n          }\n          if ((ppppppiVar12 != (int ******)0xffffffff) && (ppppppiVar16 != (int ******)0xffffffff))\n          {\n            if (unaff_s6 == (int *******)0x0) goto LAB_00021dd0;\n            pppppppiVar17 = (int *******)((int)param_2[1] + (int)local_48);\n            pppppppiVar18 = unaff_s6;\n            iVar13 = (*(code *)PTR_memcmp_0003e338)((int)param_2[1] + (int)ppppppiVar12);\n            if (iVar13 == 0) goto LAB_00021da8;\n          }\n        }\n        else {\nLAB_00021c18:\n          unaff_s6 = local_48;\n          pppppppiVar17 = (int *******)(*unaff_s2 + (int)unaff_s0 * 2);\n          pppppppiVar18 = local_48;\n          iVar13 = FUN_0001c4f8(param_2);\n          if (iVar13 != 0) {\n            pppppppiVar11 = (int *******)unaff_s2[3][(int)unaff_s0];\n            local_48 = (int *******)((int)unaff_s6 + 1);\n            goto LAB_00021c5c;\n          }\n        }\n      }\n      else {\n        pppppppiVar17 = unaff_s0;\n        pppppppiVar18 = param_2;\n        pppppppiVar19 = local_48;\n        unaff_s6 = (int *******)FUN_000200a0(unaff_s2);\n        if (unaff_s6 == (int *******)0x0) goto LAB_00021c18;\nLAB_00021da8:\n        pppppppiVar11 = (int *******)unaff_s2[3][(int)unaff_s0];\n        local_48 = (int *******)((int)unaff_s6 + (int)local_48);\nLAB_00021c5c:\n        unaff_s6 = local_48;\n        if (unaff_s5 == (int **)0x0) {\nLAB_00021ca4:\n          local_40 = 0;\n          goto LAB_00021ca8;\n        }\n        unaff_s6 = (int *******)((int)local_48 * 4);\n        if ((int)local_48 <= (int)param_2[0x17]) {\n          unaff_s6 = (int *******)(param_2[0x19] + (int)local_48);\n          pppppppiVar17 = pppppppiVar11;\n          if ((*unaff_s6 != (int ******)0x0) && (iVar13 = (*pcVar6)(*unaff_s6 + 1), iVar13 != 0))\n          goto LAB_00021ca4;\n        }\n      }\nLAB_00021f3c:\n      unaff_s0 = (int *******)0xffffffff;\n      goto LAB_00021f44;\n    }" { (if_statement "if (((uint)ppppppiVar12[1] & 0x800) == 0) {\n        if (*(byte *)(ppppppiVar12 + 1) == 4) {\n          ppppppiVar16 = (param_4 + ((int)*ppppppiVar12 + 1) * 2)[1];\n          ppppppiVar12 = param_4[((int)*ppppppiVar12 + 1) * 2];\n          unaff_s6 = (int *******)((int)ppppppiVar16 - (int)ppppppiVar12);\n          if (unaff_s5 == (int **)0x0) {\n            pppppppiVar17 = unaff_s0;\n            if (unaff_s6 != (int *******)0x0) goto LAB_00021da8;\nLAB_00021dd0:\n            pppppppiVar17 = unaff_s0;\n            iVar13 = (*pcVar7)(&local_44);\n            if (iVar13 == 0) goto LAB_00021b34;\n            pppppppiVar11 = (int *******)*unaff_s2[5][(int)unaff_s0 * 3 + 2];\n            pppppppiVar17 = pppppppiVar11;\n            iVar13 = (*pcVar6)(param_2[0x19][(int)local_48] + 1);\n            if (iVar13 != 0) goto LAB_00021ca8;\n            goto LAB_00021c18;\n          }\n          if ((ppppppiVar12 != (int ******)0xffffffff) && (ppppppiVar16 != (int ******)0xffffffff))\n          {\n            if (unaff_s6 == (int *******)0x0) goto LAB_00021dd0;\n            pppppppiVar17 = (int *******)((int)param_2[1] + (int)local_48);\n            pppppppiVar18 = unaff_s6;\n            iVar13 = (*(code *)PTR_memcmp_0003e338)((int)param_2[1] + (int)ppppppiVar12);\n            if (iVar13 == 0) goto LAB_00021da8;\n          }\n        }\n        else {\nLAB_00021c18:\n          unaff_s6 = local_48;\n          pppppppiVar17 = (int *******)(*unaff_s2 + (int)unaff_s0 * 2);\n          pppppppiVar18 = local_48;\n          iVar13 = FUN_0001c4f8(param_2);\n          if (iVar13 != 0) {\n            pppppppiVar11 = (int *******)unaff_s2[3][(int)unaff_s0];\n            local_48 = (int *******)((int)unaff_s6 + 1);\n            goto LAB_00021c5c;\n          }\n        }\n      }\n      else {\n        pppppppiVar17 = unaff_s0;\n        pppppppiVar18 = param_2;\n        pppppppiVar19 = local_48;\n        unaff_s6 = (int *******)FUN_000200a0(unaff_s2);\n        if (unaff_s6 == (int *******)0x0) goto LAB_00021c18;\nLAB_00021da8:\n        pppppppiVar11 = (int *******)unaff_s2[3][(int)unaff_s0];\n        local_48 = (int *******)((int)unaff_s6 + (int)local_48);\nLAB_00021c5c:\n        unaff_s6 = local_48;\n        if (unaff_s5 == (int **)0x0) {\nLAB_00021ca4:\n          local_40 = 0;\n          goto LAB_00021ca8;\n        }\n        unaff_s6 = (int *******)((int)local_48 * 4);\n        if ((int)local_48 <= (int)param_2[0x17]) {\n          unaff_s6 = (int *******)(param_2[0x19] + (int)local_48);\n          pppppppiVar17 = pppppppiVar11;\n          if ((*unaff_s6 != (int ******)0x0) && (iVar13 = (*pcVar6)(*unaff_s6 + 1), iVar13 != 0))\n          goto LAB_00021ca4;\n        }\n      }" if (parenthesized_expression "(((uint)ppppppiVar12[1] & 0x800) == 0)" ( (binary_expression "((uint)ppppppiVar12[1] & 0x800) == 0" (parenthesized_expression "((uint)ppppppiVar12[1] & 0x800)" ( (binary_expression "(uint)ppppppiVar12[1] & 0x800" (cast_expression "(uint)ppppppiVar12[1]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "ppppppiVar12[1]" identifier [ number_literal ])) & number_literal) )) == number_literal) )) (compound_statement "{\n        if (*(byte *)(ppppppiVar12 + 1) == 4) {\n          ppppppiVar16 = (param_4 + ((int)*ppppppiVar12 + 1) * 2)[1];\n          ppppppiVar12 = param_4[((int)*ppppppiVar12 + 1) * 2];\n          unaff_s6 = (int *******)((int)ppppppiVar16 - (int)ppppppiVar12);\n          if (unaff_s5 == (int **)0x0) {\n            pppppppiVar17 = unaff_s0;\n            if (unaff_s6 != (int *******)0x0) goto LAB_00021da8;\nLAB_00021dd0:\n            pppppppiVar17 = unaff_s0;\n            iVar13 = (*pcVar7)(&local_44);\n            if (iVar13 == 0) goto LAB_00021b34;\n            pppppppiVar11 = (int *******)*unaff_s2[5][(int)unaff_s0 * 3 + 2];\n            pppppppiVar17 = pppppppiVar11;\n            iVar13 = (*pcVar6)(param_2[0x19][(int)local_48] + 1);\n            if (iVar13 != 0) goto LAB_00021ca8;\n            goto LAB_00021c18;\n          }\n          if ((ppppppiVar12 != (int ******)0xffffffff) && (ppppppiVar16 != (int ******)0xffffffff))\n          {\n            if (unaff_s6 == (int *******)0x0) goto LAB_00021dd0;\n            pppppppiVar17 = (int *******)((int)param_2[1] + (int)local_48);\n            pppppppiVar18 = unaff_s6;\n            iVar13 = (*(code *)PTR_memcmp_0003e338)((int)param_2[1] + (int)ppppppiVar12);\n            if (iVar13 == 0) goto LAB_00021da8;\n          }\n        }\n        else {\nLAB_00021c18:\n          unaff_s6 = local_48;\n          pppppppiVar17 = (int *******)(*unaff_s2 + (int)unaff_s0 * 2);\n          pppppppiVar18 = local_48;\n          iVar13 = FUN_0001c4f8(param_2);\n          if (iVar13 != 0) {\n            pppppppiVar11 = (int *******)unaff_s2[3][(int)unaff_s0];\n            local_48 = (int *******)((int)unaff_s6 + 1);\n            goto LAB_00021c5c;\n          }\n        }\n      }" { (if_statement "if (*(byte *)(ppppppiVar12 + 1) == 4) {\n          ppppppiVar16 = (param_4 + ((int)*ppppppiVar12 + 1) * 2)[1];\n          ppppppiVar12 = param_4[((int)*ppppppiVar12 + 1) * 2];\n          unaff_s6 = (int *******)((int)ppppppiVar16 - (int)ppppppiVar12);\n          if (unaff_s5 == (int **)0x0) {\n            pppppppiVar17 = unaff_s0;\n            if (unaff_s6 != (int *******)0x0) goto LAB_00021da8;\nLAB_00021dd0:\n            pppppppiVar17 = unaff_s0;\n            iVar13 = (*pcVar7)(&local_44);\n            if (iVar13 == 0) goto LAB_00021b34;\n            pppppppiVar11 = (int *******)*unaff_s2[5][(int)unaff_s0 * 3 + 2];\n            pppppppiVar17 = pppppppiVar11;\n            iVar13 = (*pcVar6)(param_2[0x19][(int)local_48] + 1);\n            if (iVar13 != 0) goto LAB_00021ca8;\n            goto LAB_00021c18;\n          }\n          if ((ppppppiVar12 != (int ******)0xffffffff) && (ppppppiVar16 != (int ******)0xffffffff))\n          {\n            if (unaff_s6 == (int *******)0x0) goto LAB_00021dd0;\n            pppppppiVar17 = (int *******)((int)param_2[1] + (int)local_48);\n            pppppppiVar18 = unaff_s6;\n            iVar13 = (*(code *)PTR_memcmp_0003e338)((int)param_2[1] + (int)ppppppiVar12);\n            if (iVar13 == 0) goto LAB_00021da8;\n          }\n        }\n        else {\nLAB_00021c18:\n          unaff_s6 = local_48;\n          pppppppiVar17 = (int *******)(*unaff_s2 + (int)unaff_s0 * 2);\n          pppppppiVar18 = local_48;\n          iVar13 = FUN_0001c4f8(param_2);\n          if (iVar13 != 0) {\n            pppppppiVar11 = (int *******)unaff_s2[3][(int)unaff_s0];\n            local_48 = (int *******)((int)unaff_s6 + 1);\n            goto LAB_00021c5c;\n          }\n        }" if (parenthesized_expression "(*(byte *)(ppppppiVar12 + 1) == 4)" ( (binary_expression "*(byte *)(ppppppiVar12 + 1) == 4" (pointer_expression "*(byte *)(ppppppiVar12 + 1)" * (cast_expression "(byte *)(ppppppiVar12 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(ppppppiVar12 + 1)" ( (binary_expression "ppppppiVar12 + 1" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n          ppppppiVar16 = (param_4 + ((int)*ppppppiVar12 + 1) * 2)[1];\n          ppppppiVar12 = param_4[((int)*ppppppiVar12 + 1) * 2];\n          unaff_s6 = (int *******)((int)ppppppiVar16 - (int)ppppppiVar12);\n          if (unaff_s5 == (int **)0x0) {\n            pppppppiVar17 = unaff_s0;\n            if (unaff_s6 != (int *******)0x0) goto LAB_00021da8;\nLAB_00021dd0:\n            pppppppiVar17 = unaff_s0;\n            iVar13 = (*pcVar7)(&local_44);\n            if (iVar13 == 0) goto LAB_00021b34;\n            pppppppiVar11 = (int *******)*unaff_s2[5][(int)unaff_s0 * 3 + 2];\n            pppppppiVar17 = pppppppiVar11;\n            iVar13 = (*pcVar6)(param_2[0x19][(int)local_48] + 1);\n            if (iVar13 != 0) goto LAB_00021ca8;\n            goto LAB_00021c18;\n          }\n          if ((ppppppiVar12 != (int ******)0xffffffff) && (ppppppiVar16 != (int ******)0xffffffff))\n          {\n            if (unaff_s6 == (int *******)0x0) goto LAB_00021dd0;\n            pppppppiVar17 = (int *******)((int)param_2[1] + (int)local_48);\n            pppppppiVar18 = unaff_s6;\n            iVar13 = (*(code *)PTR_memcmp_0003e338)((int)param_2[1] + (int)ppppppiVar12);\n            if (iVar13 == 0) goto LAB_00021da8;\n          }\n        }" { (expression_statement "ppppppiVar16 = (param_4 + ((int)*ppppppiVar12 + 1) * 2)[1];" (assignment_expression "ppppppiVar16 = (param_4 + ((int)*ppppppiVar12 + 1) * 2)[1]" identifier = (subscript_expression "(param_4 + ((int)*ppppppiVar12 + 1) * 2)[1]" (parenthesized_expression "(param_4 + ((int)*ppppppiVar12 + 1) * 2)" ( (binary_expression "param_4 + ((int)*ppppppiVar12 + 1) * 2" identifier + (binary_expression "((int)*ppppppiVar12 + 1) * 2" (parenthesized_expression "((int)*ppppppiVar12 + 1)" ( (binary_expression "(int)*ppppppiVar12 + 1" (cast_expression "(int)*ppppppiVar12" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*ppppppiVar12" * identifier)) + number_literal) )) * number_literal)) )) [ number_literal ])) ;) (expression_statement "ppppppiVar12 = param_4[((int)*ppppppiVar12 + 1) * 2];" (assignment_expression "ppppppiVar12 = param_4[((int)*ppppppiVar12 + 1) * 2]" identifier = (subscript_expression "param_4[((int)*ppppppiVar12 + 1) * 2]" identifier [ (binary_expression "((int)*ppppppiVar12 + 1) * 2" (parenthesized_expression "((int)*ppppppiVar12 + 1)" ( (binary_expression "(int)*ppppppiVar12 + 1" (cast_expression "(int)*ppppppiVar12" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*ppppppiVar12" * identifier)) + number_literal) )) * number_literal) ])) ;) (expression_statement "unaff_s6 = (int *******)((int)ppppppiVar16 - (int)ppppppiVar12);" (assignment_expression "unaff_s6 = (int *******)((int)ppppppiVar16 - (int)ppppppiVar12)" identifier = (cast_expression "(int *******)((int)ppppppiVar16 - (int)ppppppiVar12)" ( (type_descriptor "int *******" primitive_type (abstract_pointer_declarator "*******" * (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))))))) ) (parenthesized_expression "((int)ppppppiVar16 - (int)ppppppiVar12)" ( (binary_expression "(int)ppppppiVar16 - (int)ppppppiVar12" (cast_expression "(int)ppppppiVar16" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)ppppppiVar12" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (if_statement "if (unaff_s5 == (int **)0x0) {\n            pppppppiVar17 = unaff_s0;\n            if (unaff_s6 != (int *******)0x0) goto LAB_00021da8;\nLAB_00021dd0:\n            pppppppiVar17 = unaff_s0;\n            iVar13 = (*pcVar7)(&local_44);\n            if (iVar13 == 0) goto LAB_00021b34;\n            pppppppiVar11 = (int *******)*unaff_s2[5][(int)unaff_s0 * 3 + 2];\n            pppppppiVar17 = pppppppiVar11;\n            iVar13 = (*pcVar6)(param_2[0x19][(int)local_48] + 1);\n            if (iVar13 != 0) goto LAB_00021ca8;\n            goto LAB_00021c18;\n          }" if (parenthesized_expression "(unaff_s5 == (int **)0x0)" ( (binary_expression "unaff_s5 == (int **)0x0" identifier == (cast_expression "(int **)0x0" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal)) )) (compound_statement "{\n            pppppppiVar17 = unaff_s0;\n            if (unaff_s6 != (int *******)0x0) goto LAB_00021da8;\nLAB_00021dd0:\n            pppppppiVar17 = unaff_s0;\n            iVar13 = (*pcVar7)(&local_44);\n            if (iVar13 == 0) goto LAB_00021b34;\n            pppppppiVar11 = (int *******)*unaff_s2[5][(int)unaff_s0 * 3 + 2];\n            pppppppiVar17 = pppppppiVar11;\n            iVar13 = (*pcVar6)(param_2[0x19][(int)local_48] + 1);\n            if (iVar13 != 0) goto LAB_00021ca8;\n            goto LAB_00021c18;\n          }" { (expression_statement "pppppppiVar17 = unaff_s0;" (assignment_expression "pppppppiVar17 = unaff_s0" identifier = identifier) ;) (if_statement "if (unaff_s6 != (int *******)0x0) goto LAB_00021da8;" if (parenthesized_expression "(unaff_s6 != (int *******)0x0)" ( (binary_expression "unaff_s6 != (int *******)0x0" identifier != (cast_expression "(int *******)0x0" ( (type_descriptor "int *******" primitive_type (abstract_pointer_declarator "*******" * (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))))))) ) number_literal)) )) (goto_statement "goto LAB_00021da8;" goto statement_identifier ;)) (labeled_statement "LAB_00021dd0:\n            pppppppiVar17 = unaff_s0;" statement_identifier : (expression_statement "pppppppiVar17 = unaff_s0;" (assignment_expression "pppppppiVar17 = unaff_s0" identifier = identifier) ;)) (expression_statement "iVar13 = (*pcVar7)(&local_44);" (assignment_expression "iVar13 = (*pcVar7)(&local_44)" identifier = (call_expression "(*pcVar7)(&local_44)" (parenthesized_expression "(*pcVar7)" ( (pointer_expression "*pcVar7" * identifier) )) (argument_list "(&local_44)" ( (pointer_expression "&local_44" & identifier) )))) ;) (if_statement "if (iVar13 == 0) goto LAB_00021b34;" if (parenthesized_expression "(iVar13 == 0)" ( (binary_expression "iVar13 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00021b34;" goto statement_identifier ;)) (expression_statement "pppppppiVar11 = (int *******)*unaff_s2[5][(int)unaff_s0 * 3 + 2];" (assignment_expression "pppppppiVar11 = (int *******)*unaff_s2[5][(int)unaff_s0 * 3 + 2]" identifier = (cast_expression "(int *******)*unaff_s2[5][(int)unaff_s0 * 3 + 2]" ( (type_descriptor "int *******" primitive_type (abstract_pointer_declarator "*******" * (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))))))) ) (pointer_expression "*unaff_s2[5][(int)unaff_s0 * 3 + 2]" * (subscript_expression "unaff_s2[5][(int)unaff_s0 * 3 + 2]" (subscript_expression "unaff_s2[5]" identifier [ number_literal ]) [ (binary_expression "(int)unaff_s0 * 3 + 2" (binary_expression "(int)unaff_s0 * 3" (cast_expression "(int)unaff_s0" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) + number_literal) ])))) ;) (expression_statement "pppppppiVar17 = pppppppiVar11;" (assignment_expression "pppppppiVar17 = pppppppiVar11" identifier = identifier) ;) (expression_statement "iVar13 = (*pcVar6)(param_2[0x19][(int)local_48] + 1);" (assignment_expression "iVar13 = (*pcVar6)(param_2[0x19][(int)local_48] + 1)" identifier = (call_expression "(*pcVar6)(param_2[0x19][(int)local_48] + 1)" (parenthesized_expression "(*pcVar6)" ( (pointer_expression "*pcVar6" * identifier) )) (argument_list "(param_2[0x19][(int)local_48] + 1)" ( (binary_expression "param_2[0x19][(int)local_48] + 1" (subscript_expression "param_2[0x19][(int)local_48]" (subscript_expression "param_2[0x19]" identifier [ number_literal ]) [ (cast_expression "(int)local_48" ( (type_descriptor "int" primitive_type) ) identifier) ]) + number_literal) )))) ;) (if_statement "if (iVar13 != 0) goto LAB_00021ca8;" if (parenthesized_expression "(iVar13 != 0)" ( (binary_expression "iVar13 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00021ca8;" goto statement_identifier ;)) (goto_statement "goto LAB_00021c18;" goto statement_identifier ;) })) (if_statement "if ((ppppppiVar12 != (int ******)0xffffffff) && (ppppppiVar16 != (int ******)0xffffffff))\n          {\n            if (unaff_s6 == (int *******)0x0) goto LAB_00021dd0;\n            pppppppiVar17 = (int *******)((int)param_2[1] + (int)local_48);\n            pppppppiVar18 = unaff_s6;\n            iVar13 = (*(code *)PTR_memcmp_0003e338)((int)param_2[1] + (int)ppppppiVar12);\n            if (iVar13 == 0) goto LAB_00021da8;\n          }" if (parenthesized_expression "((ppppppiVar12 != (int ******)0xffffffff) && (ppppppiVar16 != (int ******)0xffffffff))" ( (binary_expression "(ppppppiVar12 != (int ******)0xffffffff) && (ppppppiVar16 != (int ******)0xffffffff)" (parenthesized_expression "(ppppppiVar12 != (int ******)0xffffffff)" ( (binary_expression "ppppppiVar12 != (int ******)0xffffffff" identifier != (cast_expression "(int ******)0xffffffff" ( (type_descriptor "int ******" primitive_type (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))))))) ) number_literal)) )) && (parenthesized_expression "(ppppppiVar16 != (int ******)0xffffffff)" ( (binary_expression "ppppppiVar16 != (int ******)0xffffffff" identifier != (cast_expression "(int ******)0xffffffff" ( (type_descriptor "int ******" primitive_type (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))))))) ) number_literal)) ))) )) (compound_statement "{\n            if (unaff_s6 == (int *******)0x0) goto LAB_00021dd0;\n            pppppppiVar17 = (int *******)((int)param_2[1] + (int)local_48);\n            pppppppiVar18 = unaff_s6;\n            iVar13 = (*(code *)PTR_memcmp_0003e338)((int)param_2[1] + (int)ppppppiVar12);\n            if (iVar13 == 0) goto LAB_00021da8;\n          }" { (if_statement "if (unaff_s6 == (int *******)0x0) goto LAB_00021dd0;" if (parenthesized_expression "(unaff_s6 == (int *******)0x0)" ( (binary_expression "unaff_s6 == (int *******)0x0" identifier == (cast_expression "(int *******)0x0" ( (type_descriptor "int *******" primitive_type (abstract_pointer_declarator "*******" * (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))))))) ) number_literal)) )) (goto_statement "goto LAB_00021dd0;" goto statement_identifier ;)) (expression_statement "pppppppiVar17 = (int *******)((int)param_2[1] + (int)local_48);" (assignment_expression "pppppppiVar17 = (int *******)((int)param_2[1] + (int)local_48)" identifier = (cast_expression "(int *******)((int)param_2[1] + (int)local_48)" ( (type_descriptor "int *******" primitive_type (abstract_pointer_declarator "*******" * (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))))))) ) (parenthesized_expression "((int)param_2[1] + (int)local_48)" ( (binary_expression "(int)param_2[1] + (int)local_48" (cast_expression "(int)param_2[1]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "param_2[1]" identifier [ number_literal ])) + (cast_expression "(int)local_48" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "pppppppiVar18 = unaff_s6;" (assignment_expression "pppppppiVar18 = unaff_s6" identifier = identifier) ;) (expression_statement "iVar13 = (*(code *)PTR_memcmp_0003e338)((int)param_2[1] + (int)ppppppiVar12);" (assignment_expression "iVar13 = (*(code *)PTR_memcmp_0003e338)((int)param_2[1] + (int)ppppppiVar12)" identifier = (call_expression "(*(code *)PTR_memcmp_0003e338)((int)param_2[1] + (int)ppppppiVar12)" (parenthesized_expression "(*(code *)PTR_memcmp_0003e338)" ( (pointer_expression "*(code *)PTR_memcmp_0003e338" * (cast_expression "(code *)PTR_memcmp_0003e338" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "((int)param_2[1] + (int)ppppppiVar12)" ( (binary_expression "(int)param_2[1] + (int)ppppppiVar12" (cast_expression "(int)param_2[1]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "param_2[1]" identifier [ number_literal ])) + (cast_expression "(int)ppppppiVar12" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (if_statement "if (iVar13 == 0) goto LAB_00021da8;" if (parenthesized_expression "(iVar13 == 0)" ( (binary_expression "iVar13 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00021da8;" goto statement_identifier ;)) })) }) (else_clause "else {\nLAB_00021c18:\n          unaff_s6 = local_48;\n          pppppppiVar17 = (int *******)(*unaff_s2 + (int)unaff_s0 * 2);\n          pppppppiVar18 = local_48;\n          iVar13 = FUN_0001c4f8(param_2);\n          if (iVar13 != 0) {\n            pppppppiVar11 = (int *******)unaff_s2[3][(int)unaff_s0];\n            local_48 = (int *******)((int)unaff_s6 + 1);\n            goto LAB_00021c5c;\n          }\n        }" else (compound_statement "{\nLAB_00021c18:\n          unaff_s6 = local_48;\n          pppppppiVar17 = (int *******)(*unaff_s2 + (int)unaff_s0 * 2);\n          pppppppiVar18 = local_48;\n          iVar13 = FUN_0001c4f8(param_2);\n          if (iVar13 != 0) {\n            pppppppiVar11 = (int *******)unaff_s2[3][(int)unaff_s0];\n            local_48 = (int *******)((int)unaff_s6 + 1);\n            goto LAB_00021c5c;\n          }\n        }" { (labeled_statement "LAB_00021c18:\n          unaff_s6 = local_48;" statement_identifier : (expression_statement "unaff_s6 = local_48;" (assignment_expression "unaff_s6 = local_48" identifier = identifier) ;)) (expression_statement "pppppppiVar17 = (int *******)(*unaff_s2 + (int)unaff_s0 * 2);" (assignment_expression "pppppppiVar17 = (int *******)(*unaff_s2 + (int)unaff_s0 * 2)" identifier = (cast_expression "(int *******)(*unaff_s2 + (int)unaff_s0 * 2)" ( (type_descriptor "int *******" primitive_type (abstract_pointer_declarator "*******" * (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))))))) ) (parenthesized_expression "(*unaff_s2 + (int)unaff_s0 * 2)" ( (binary_expression "*unaff_s2 + (int)unaff_s0 * 2" (pointer_expression "*unaff_s2" * identifier) + (binary_expression "(int)unaff_s0 * 2" (cast_expression "(int)unaff_s0" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) )))) ;) (expression_statement "pppppppiVar18 = local_48;" (assignment_expression "pppppppiVar18 = local_48" identifier = identifier) ;) (expression_statement "iVar13 = FUN_0001c4f8(param_2);" (assignment_expression "iVar13 = FUN_0001c4f8(param_2)" identifier = (call_expression "FUN_0001c4f8(param_2)" identifier (argument_list "(param_2)" ( identifier )))) ;) (if_statement "if (iVar13 != 0) {\n            pppppppiVar11 = (int *******)unaff_s2[3][(int)unaff_s0];\n            local_48 = (int *******)((int)unaff_s6 + 1);\n            goto LAB_00021c5c;\n          }" if (parenthesized_expression "(iVar13 != 0)" ( (binary_expression "iVar13 != 0" identifier != number_literal) )) (compound_statement "{\n            pppppppiVar11 = (int *******)unaff_s2[3][(int)unaff_s0];\n            local_48 = (int *******)((int)unaff_s6 + 1);\n            goto LAB_00021c5c;\n          }" { (expression_statement "pppppppiVar11 = (int *******)unaff_s2[3][(int)unaff_s0];" (assignment_expression "pppppppiVar11 = (int *******)unaff_s2[3][(int)unaff_s0]" identifier = (cast_expression "(int *******)unaff_s2[3][(int)unaff_s0]" ( (type_descriptor "int *******" primitive_type (abstract_pointer_declarator "*******" * (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))))))) ) (subscript_expression "unaff_s2[3][(int)unaff_s0]" (subscript_expression "unaff_s2[3]" identifier [ number_literal ]) [ (cast_expression "(int)unaff_s0" ( (type_descriptor "int" primitive_type) ) identifier) ]))) ;) (expression_statement "local_48 = (int *******)((int)unaff_s6 + 1);" (assignment_expression "local_48 = (int *******)((int)unaff_s6 + 1)" identifier = (cast_expression "(int *******)((int)unaff_s6 + 1)" ( (type_descriptor "int *******" primitive_type (abstract_pointer_declarator "*******" * (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))))))) ) (parenthesized_expression "((int)unaff_s6 + 1)" ( (binary_expression "(int)unaff_s6 + 1" (cast_expression "(int)unaff_s6" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (goto_statement "goto LAB_00021c5c;" goto statement_identifier ;) })) }))) }) (else_clause "else {\n        pppppppiVar17 = unaff_s0;\n        pppppppiVar18 = param_2;\n        pppppppiVar19 = local_48;\n        unaff_s6 = (int *******)FUN_000200a0(unaff_s2);\n        if (unaff_s6 == (int *******)0x0) goto LAB_00021c18;\nLAB_00021da8:\n        pppppppiVar11 = (int *******)unaff_s2[3][(int)unaff_s0];\n        local_48 = (int *******)((int)unaff_s6 + (int)local_48);\nLAB_00021c5c:\n        unaff_s6 = local_48;\n        if (unaff_s5 == (int **)0x0) {\nLAB_00021ca4:\n          local_40 = 0;\n          goto LAB_00021ca8;\n        }\n        unaff_s6 = (int *******)((int)local_48 * 4);\n        if ((int)local_48 <= (int)param_2[0x17]) {\n          unaff_s6 = (int *******)(param_2[0x19] + (int)local_48);\n          pppppppiVar17 = pppppppiVar11;\n          if ((*unaff_s6 != (int ******)0x0) && (iVar13 = (*pcVar6)(*unaff_s6 + 1), iVar13 != 0))\n          goto LAB_00021ca4;\n        }\n      }" else (compound_statement "{\n        pppppppiVar17 = unaff_s0;\n        pppppppiVar18 = param_2;\n        pppppppiVar19 = local_48;\n        unaff_s6 = (int *******)FUN_000200a0(unaff_s2);\n        if (unaff_s6 == (int *******)0x0) goto LAB_00021c18;\nLAB_00021da8:\n        pppppppiVar11 = (int *******)unaff_s2[3][(int)unaff_s0];\n        local_48 = (int *******)((int)unaff_s6 + (int)local_48);\nLAB_00021c5c:\n        unaff_s6 = local_48;\n        if (unaff_s5 == (int **)0x0) {\nLAB_00021ca4:\n          local_40 = 0;\n          goto LAB_00021ca8;\n        }\n        unaff_s6 = (int *******)((int)local_48 * 4);\n        if ((int)local_48 <= (int)param_2[0x17]) {\n          unaff_s6 = (int *******)(param_2[0x19] + (int)local_48);\n          pppppppiVar17 = pppppppiVar11;\n          if ((*unaff_s6 != (int ******)0x0) && (iVar13 = (*pcVar6)(*unaff_s6 + 1), iVar13 != 0))\n          goto LAB_00021ca4;\n        }\n      }" { (expression_statement "pppppppiVar17 = unaff_s0;" (assignment_expression "pppppppiVar17 = unaff_s0" identifier = identifier) ;) (expression_statement "pppppppiVar18 = param_2;" (assignment_expression "pppppppiVar18 = param_2" identifier = identifier) ;) (expression_statement "pppppppiVar19 = local_48;" (assignment_expression "pppppppiVar19 = local_48" identifier = identifier) ;) (expression_statement "unaff_s6 = (int *******)FUN_000200a0(unaff_s2);" (assignment_expression "unaff_s6 = (int *******)FUN_000200a0(unaff_s2)" identifier = (cast_expression "(int *******)FUN_000200a0(unaff_s2)" ( (type_descriptor "int *******" primitive_type (abstract_pointer_declarator "*******" * (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))))))) ) (call_expression "FUN_000200a0(unaff_s2)" identifier (argument_list "(unaff_s2)" ( identifier ))))) ;) (if_statement "if (unaff_s6 == (int *******)0x0) goto LAB_00021c18;" if (parenthesized_expression "(unaff_s6 == (int *******)0x0)" ( (binary_expression "unaff_s6 == (int *******)0x0" identifier == (cast_expression "(int *******)0x0" ( (type_descriptor "int *******" primitive_type (abstract_pointer_declarator "*******" * (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))))))) ) number_literal)) )) (goto_statement "goto LAB_00021c18;" goto statement_identifier ;)) (labeled_statement "LAB_00021da8:\n        pppppppiVar11 = (int *******)unaff_s2[3][(int)unaff_s0];" statement_identifier : (expression_statement "pppppppiVar11 = (int *******)unaff_s2[3][(int)unaff_s0];" (assignment_expression "pppppppiVar11 = (int *******)unaff_s2[3][(int)unaff_s0]" identifier = (cast_expression "(int *******)unaff_s2[3][(int)unaff_s0]" ( (type_descriptor "int *******" primitive_type (abstract_pointer_declarator "*******" * (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))))))) ) (subscript_expression "unaff_s2[3][(int)unaff_s0]" (subscript_expression "unaff_s2[3]" identifier [ number_literal ]) [ (cast_expression "(int)unaff_s0" ( (type_descriptor "int" primitive_type) ) identifier) ]))) ;)) (expression_statement "local_48 = (int *******)((int)unaff_s6 + (int)local_48);" (assignment_expression "local_48 = (int *******)((int)unaff_s6 + (int)local_48)" identifier = (cast_expression "(int *******)((int)unaff_s6 + (int)local_48)" ( (type_descriptor "int *******" primitive_type (abstract_pointer_declarator "*******" * (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))))))) ) (parenthesized_expression "((int)unaff_s6 + (int)local_48)" ( (binary_expression "(int)unaff_s6 + (int)local_48" (cast_expression "(int)unaff_s6" ( (type_descriptor "int" primitive_type) ) identifier) + (cast_expression "(int)local_48" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (labeled_statement "LAB_00021c5c:\n        unaff_s6 = local_48;" statement_identifier : (expression_statement "unaff_s6 = local_48;" (assignment_expression "unaff_s6 = local_48" identifier = identifier) ;)) (if_statement "if (unaff_s5 == (int **)0x0) {\nLAB_00021ca4:\n          local_40 = 0;\n          goto LAB_00021ca8;\n        }" if (parenthesized_expression "(unaff_s5 == (int **)0x0)" ( (binary_expression "unaff_s5 == (int **)0x0" identifier == (cast_expression "(int **)0x0" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal)) )) (compound_statement "{\nLAB_00021ca4:\n          local_40 = 0;\n          goto LAB_00021ca8;\n        }" { (labeled_statement "LAB_00021ca4:\n          local_40 = 0;" statement_identifier : (expression_statement "local_40 = 0;" (assignment_expression "local_40 = 0" identifier = number_literal) ;)) (goto_statement "goto LAB_00021ca8;" goto statement_identifier ;) })) (expression_statement "unaff_s6 = (int *******)((int)local_48 * 4);" (assignment_expression "unaff_s6 = (int *******)((int)local_48 * 4)" identifier = (cast_expression "(int *******)((int)local_48 * 4)" ( (type_descriptor "int *******" primitive_type (abstract_pointer_declarator "*******" * (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))))))) ) (parenthesized_expression "((int)local_48 * 4)" ( (binary_expression "(int)local_48 * 4" (cast_expression "(int)local_48" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) )))) ;) (if_statement "if ((int)local_48 <= (int)param_2[0x17]) {\n          unaff_s6 = (int *******)(param_2[0x19] + (int)local_48);\n          pppppppiVar17 = pppppppiVar11;\n          if ((*unaff_s6 != (int ******)0x0) && (iVar13 = (*pcVar6)(*unaff_s6 + 1), iVar13 != 0))\n          goto LAB_00021ca4;\n        }" if (parenthesized_expression "((int)local_48 <= (int)param_2[0x17])" ( (binary_expression "(int)local_48 <= (int)param_2[0x17]" (cast_expression "(int)local_48" ( (type_descriptor "int" primitive_type) ) identifier) <= (cast_expression "(int)param_2[0x17]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "param_2[0x17]" identifier [ number_literal ]))) )) (compound_statement "{\n          unaff_s6 = (int *******)(param_2[0x19] + (int)local_48);\n          pppppppiVar17 = pppppppiVar11;\n          if ((*unaff_s6 != (int ******)0x0) && (iVar13 = (*pcVar6)(*unaff_s6 + 1), iVar13 != 0))\n          goto LAB_00021ca4;\n        }" { (expression_statement "unaff_s6 = (int *******)(param_2[0x19] + (int)local_48);" (assignment_expression "unaff_s6 = (int *******)(param_2[0x19] + (int)local_48)" identifier = (cast_expression "(int *******)(param_2[0x19] + (int)local_48)" ( (type_descriptor "int *******" primitive_type (abstract_pointer_declarator "*******" * (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))))))) ) (parenthesized_expression "(param_2[0x19] + (int)local_48)" ( (binary_expression "param_2[0x19] + (int)local_48" (subscript_expression "param_2[0x19]" identifier [ number_literal ]) + (cast_expression "(int)local_48" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "pppppppiVar17 = pppppppiVar11;" (assignment_expression "pppppppiVar17 = pppppppiVar11" identifier = identifier) ;) (if_statement "if ((*unaff_s6 != (int ******)0x0) && (iVar13 = (*pcVar6)(*unaff_s6 + 1), iVar13 != 0))\n          goto LAB_00021ca4;" if (parenthesized_expression "((*unaff_s6 != (int ******)0x0) && (iVar13 = (*pcVar6)(*unaff_s6 + 1), iVar13 != 0))" ( (binary_expression "(*unaff_s6 != (int ******)0x0) && (iVar13 = (*pcVar6)(*unaff_s6 + 1), iVar13 != 0)" (parenthesized_expression "(*unaff_s6 != (int ******)0x0)" ( (binary_expression "*unaff_s6 != (int ******)0x0" (pointer_expression "*unaff_s6" * identifier) != (cast_expression "(int ******)0x0" ( (type_descriptor "int ******" primitive_type (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))))))) ) number_literal)) )) && (parenthesized_expression "(iVar13 = (*pcVar6)(*unaff_s6 + 1), iVar13 != 0)" ( (comma_expression "iVar13 = (*pcVar6)(*unaff_s6 + 1), iVar13 != 0" (assignment_expression "iVar13 = (*pcVar6)(*unaff_s6 + 1)" identifier = (call_expression "(*pcVar6)(*unaff_s6 + 1)" (parenthesized_expression "(*pcVar6)" ( (pointer_expression "*pcVar6" * identifier) )) (argument_list "(*unaff_s6 + 1)" ( (binary_expression "*unaff_s6 + 1" (pointer_expression "*unaff_s6" * identifier) + number_literal) )))) , (binary_expression "iVar13 != 0" identifier != number_literal)) ))) )) (goto_statement "goto LAB_00021ca4;" goto statement_identifier ;)) })) }))) (labeled_statement "LAB_00021f3c:\n      unaff_s0 = (int *******)0xffffffff;" statement_identifier : (expression_statement "unaff_s0 = (int *******)0xffffffff;" (assignment_expression "unaff_s0 = (int *******)0xffffffff" identifier = (cast_expression "(int *******)0xffffffff" ( (type_descriptor "int *******" primitive_type (abstract_pointer_declarator "*******" * (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))))))) ) number_literal)) ;)) (goto_statement "goto LAB_00021f44;" goto statement_identifier ;) })) (expression_statement "pppppiVar8 = param_2[0x19][(int)local_48];" (assignment_expression "pppppiVar8 = param_2[0x19][(int)local_48]" identifier = (subscript_expression "param_2[0x19][(int)local_48]" (subscript_expression "param_2[0x19]" identifier [ number_literal ]) [ (cast_expression "(int)local_48" ( (type_descriptor "int" primitive_type) ) identifier) ])) ;) (expression_statement "unaff_s2 = (int *******)(unaff_s2[5] + (int)unaff_s0 * 3);" (assignment_expression "unaff_s2 = (int *******)(unaff_s2[5] + (int)unaff_s0 * 3)" identifier = (cast_expression "(int *******)(unaff_s2[5] + (int)unaff_s0 * 3)" ( (type_descriptor "int *******" primitive_type (abstract_pointer_declarator "*******" * (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))))))) ) (parenthesized_expression "(unaff_s2[5] + (int)unaff_s0 * 3)" ( (binary_expression "unaff_s2[5] + (int)unaff_s0 * 3" (subscript_expression "unaff_s2[5]" identifier [ number_literal ]) + (binary_expression "(int)unaff_s0 * 3" (cast_expression "(int)unaff_s0" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) )))) ;) (expression_statement "pppppppiVar17 = unaff_s0;" (assignment_expression "pppppppiVar17 = unaff_s0" identifier = identifier) ;) (expression_statement "iVar13 = (*pcVar7)(&local_44);" (assignment_expression "iVar13 = (*pcVar7)(&local_44)" identifier = (call_expression "(*pcVar7)(&local_44)" (parenthesized_expression "(*pcVar7)" ( (pointer_expression "*pcVar7" * identifier) )) (argument_list "(&local_44)" ( (pointer_expression "&local_44" & identifier) )))) ;) (if_statement "if (iVar13 == 0) goto LAB_00021b34;" if (parenthesized_expression "(iVar13 == 0)" ( (binary_expression "iVar13 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00021b34;" goto statement_identifier ;)) (expression_statement "unaff_s6 = (int *******)unaff_s2[1];" (assignment_expression "unaff_s6 = (int *******)unaff_s2[1]" identifier = (cast_expression "(int *******)unaff_s2[1]" ( (type_descriptor "int *******" primitive_type (abstract_pointer_declarator "*******" * (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))))))) ) (subscript_expression "unaff_s2[1]" identifier [ number_literal ]))) ;) (if_statement "if ((int)unaff_s6 < 1) goto LAB_00021f3c;" if (parenthesized_expression "((int)unaff_s6 < 1)" ( (binary_expression "(int)unaff_s6 < 1" (cast_expression "(int)unaff_s6" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (goto_statement "goto LAB_00021f3c;" goto statement_identifier ;)) (expression_statement "unaff_s3 = unaff_s2[2];" (assignment_expression "unaff_s3 = unaff_s2[2]" identifier = (subscript_expression "unaff_s2[2]" identifier [ number_literal ])) ;) (expression_statement "unaff_s2 = (int *******)0x0;" (assignment_expression "unaff_s2 = (int *******)0x0" identifier = (cast_expression "(int *******)0x0" ( (type_descriptor "int *******" primitive_type (abstract_pointer_declarator "*******" * (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))))))) ) number_literal)) ;) (expression_statement "unaff_s0 = (int *******)0xffffffff;" (assignment_expression "unaff_s0 = (int *******)0xffffffff" identifier = (cast_expression "(int *******)0xffffffff" ( (type_descriptor "int *******" primitive_type (abstract_pointer_declarator "*******" * (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))))))) ) number_literal)) ;) (do_statement "do {\n      pppppppiVar9 = (int *******)*unaff_s3;\n      pppppppiVar17 = pppppppiVar9;\n      iVar13 = (*pcVar6)(pppppiVar8 + 1);\n      pppppppiVar11 = unaff_s0;\n      if ((iVar13 != 0) &&\n         (pppppppiVar17 = unaff_s0, pppppppiVar11 = pppppppiVar9,\n         unaff_s0 != (int *******)0xffffffff)) {\n        iVar13 = (*pcVar6)(&local_44);\n        pppppppiVar4 = local_48;\n        if ((iVar13 == 0) &&\n           (pppppppiVar11 = unaff_s0, unaff_s6 = local_48, unaff_s5 != (int **)0x0)) {\n          unaff_s2 = (int *******)*unaff_s5;\n          *unaff_s5 = (int *)((int)unaff_s2 + 1);\n          pppppppiVar17 = (int *******)unaff_s5[1];\n          if ((int *******)((int)unaff_s2 + 1) == pppppppiVar17) {\n            pppppppiVar17 = (int *******)((int)pppppppiVar17 * 0x30);\n            piVar10 = (int *)(*(code *)PTR_realloc_0003e2fc)(unaff_s5[2]);\n            unaff_s6 = pppppppiVar4;\n            if (piVar10 == (int *)0x0) goto LAB_00021b34;\n            unaff_s5[1] = (int *)((int)unaff_s5[1] << 1);\n            unaff_s5[2] = piVar10;\n          }\n          unaff_s3 = (int ******)((int)unaff_s2 * 0x18);\n          unaff_s5[2][(int)unaff_s2 * 6] = (int)pppppppiVar4;\n          *(int ********)((int)unaff_s3 + (int)(unaff_s5[2] + 1)) = pppppppiVar9;\n          unaff_s2 = (int *******)(unaff_s5[2] + (int)unaff_s2 * 6);\n          ppppppiVar12 = (int ******)(*(code *)PTR_malloc_0003e2f8)(pppppppiVar15);\n          unaff_s2[2] = ppppppiVar12;\n          pppppppiVar18 = pppppppiVar15;\n          unaff_s6 = pppppppiVar15;\n          if (*(int *)((int)unaff_s3 + (int)(unaff_s5[2] + 2)) == 0) goto LAB_00021b34;\n          (*(code *)PTR_memcpy_0003e34c)(*(int *)((int)unaff_s3 + (int)(unaff_s5[2] + 2)),param_4);\n          pppppppiVar17 = &local_44;\n          iVar13 = FUN_0001b67c((int *)((int)unaff_s3 + (int)(unaff_s5[2] + 3)));\n          if (iVar13 != 0) goto LAB_00021b34;\n        }\n        break;\n      }\n      unaff_s2 = (int *******)((int)unaff_s2 + 1);\n      unaff_s3 = unaff_s3 + 1;\n      unaff_s0 = pppppppiVar11;\n    } while (unaff_s6 != unaff_s2);" do (compound_statement "{\n      pppppppiVar9 = (int *******)*unaff_s3;\n      pppppppiVar17 = pppppppiVar9;\n      iVar13 = (*pcVar6)(pppppiVar8 + 1);\n      pppppppiVar11 = unaff_s0;\n      if ((iVar13 != 0) &&\n         (pppppppiVar17 = unaff_s0, pppppppiVar11 = pppppppiVar9,\n         unaff_s0 != (int *******)0xffffffff)) {\n        iVar13 = (*pcVar6)(&local_44);\n        pppppppiVar4 = local_48;\n        if ((iVar13 == 0) &&\n           (pppppppiVar11 = unaff_s0, unaff_s6 = local_48, unaff_s5 != (int **)0x0)) {\n          unaff_s2 = (int *******)*unaff_s5;\n          *unaff_s5 = (int *)((int)unaff_s2 + 1);\n          pppppppiVar17 = (int *******)unaff_s5[1];\n          if ((int *******)((int)unaff_s2 + 1) == pppppppiVar17) {\n            pppppppiVar17 = (int *******)((int)pppppppiVar17 * 0x30);\n            piVar10 = (int *)(*(code *)PTR_realloc_0003e2fc)(unaff_s5[2]);\n            unaff_s6 = pppppppiVar4;\n            if (piVar10 == (int *)0x0) goto LAB_00021b34;\n            unaff_s5[1] = (int *)((int)unaff_s5[1] << 1);\n            unaff_s5[2] = piVar10;\n          }\n          unaff_s3 = (int ******)((int)unaff_s2 * 0x18);\n          unaff_s5[2][(int)unaff_s2 * 6] = (int)pppppppiVar4;\n          *(int ********)((int)unaff_s3 + (int)(unaff_s5[2] + 1)) = pppppppiVar9;\n          unaff_s2 = (int *******)(unaff_s5[2] + (int)unaff_s2 * 6);\n          ppppppiVar12 = (int ******)(*(code *)PTR_malloc_0003e2f8)(pppppppiVar15);\n          unaff_s2[2] = ppppppiVar12;\n          pppppppiVar18 = pppppppiVar15;\n          unaff_s6 = pppppppiVar15;\n          if (*(int *)((int)unaff_s3 + (int)(unaff_s5[2] + 2)) == 0) goto LAB_00021b34;\n          (*(code *)PTR_memcpy_0003e34c)(*(int *)((int)unaff_s3 + (int)(unaff_s5[2] + 2)),param_4);\n          pppppppiVar17 = &local_44;\n          iVar13 = FUN_0001b67c((int *)((int)unaff_s3 + (int)(unaff_s5[2] + 3)));\n          if (iVar13 != 0) goto LAB_00021b34;\n        }\n        break;\n      }\n      unaff_s2 = (int *******)((int)unaff_s2 + 1);\n      unaff_s3 = unaff_s3 + 1;\n      unaff_s0 = pppppppiVar11;\n    }" { (expression_statement "pppppppiVar9 = (int *******)*unaff_s3;" (assignment_expression "pppppppiVar9 = (int *******)*unaff_s3" identifier = (cast_expression "(int *******)*unaff_s3" ( (type_descriptor "int *******" primitive_type (abstract_pointer_declarator "*******" * (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))))))) ) (pointer_expression "*unaff_s3" * identifier))) ;) (expression_statement "pppppppiVar17 = pppppppiVar9;" (assignment_expression "pppppppiVar17 = pppppppiVar9" identifier = identifier) ;) (expression_statement "iVar13 = (*pcVar6)(pppppiVar8 + 1);" (assignment_expression "iVar13 = (*pcVar6)(pppppiVar8 + 1)" identifier = (call_expression "(*pcVar6)(pppppiVar8 + 1)" (parenthesized_expression "(*pcVar6)" ( (pointer_expression "*pcVar6" * identifier) )) (argument_list "(pppppiVar8 + 1)" ( (binary_expression "pppppiVar8 + 1" identifier + number_literal) )))) ;) (expression_statement "pppppppiVar11 = unaff_s0;" (assignment_expression "pppppppiVar11 = unaff_s0" identifier = identifier) ;) (if_statement "if ((iVar13 != 0) &&\n         (pppppppiVar17 = unaff_s0, pppppppiVar11 = pppppppiVar9,\n         unaff_s0 != (int *******)0xffffffff)) {\n        iVar13 = (*pcVar6)(&local_44);\n        pppppppiVar4 = local_48;\n        if ((iVar13 == 0) &&\n           (pppppppiVar11 = unaff_s0, unaff_s6 = local_48, unaff_s5 != (int **)0x0)) {\n          unaff_s2 = (int *******)*unaff_s5;\n          *unaff_s5 = (int *)((int)unaff_s2 + 1);\n          pppppppiVar17 = (int *******)unaff_s5[1];\n          if ((int *******)((int)unaff_s2 + 1) == pppppppiVar17) {\n            pppppppiVar17 = (int *******)((int)pppppppiVar17 * 0x30);\n            piVar10 = (int *)(*(code *)PTR_realloc_0003e2fc)(unaff_s5[2]);\n            unaff_s6 = pppppppiVar4;\n            if (piVar10 == (int *)0x0) goto LAB_00021b34;\n            unaff_s5[1] = (int *)((int)unaff_s5[1] << 1);\n            unaff_s5[2] = piVar10;\n          }\n          unaff_s3 = (int ******)((int)unaff_s2 * 0x18);\n          unaff_s5[2][(int)unaff_s2 * 6] = (int)pppppppiVar4;\n          *(int ********)((int)unaff_s3 + (int)(unaff_s5[2] + 1)) = pppppppiVar9;\n          unaff_s2 = (int *******)(unaff_s5[2] + (int)unaff_s2 * 6);\n          ppppppiVar12 = (int ******)(*(code *)PTR_malloc_0003e2f8)(pppppppiVar15);\n          unaff_s2[2] = ppppppiVar12;\n          pppppppiVar18 = pppppppiVar15;\n          unaff_s6 = pppppppiVar15;\n          if (*(int *)((int)unaff_s3 + (int)(unaff_s5[2] + 2)) == 0) goto LAB_00021b34;\n          (*(code *)PTR_memcpy_0003e34c)(*(int *)((int)unaff_s3 + (int)(unaff_s5[2] + 2)),param_4);\n          pppppppiVar17 = &local_44;\n          iVar13 = FUN_0001b67c((int *)((int)unaff_s3 + (int)(unaff_s5[2] + 3)));\n          if (iVar13 != 0) goto LAB_00021b34;\n        }\n        break;\n      }" if (parenthesized_expression "((iVar13 != 0) &&\n         (pppppppiVar17 = unaff_s0, pppppppiVar11 = pppppppiVar9,\n         unaff_s0 != (int *******)0xffffffff))" ( (binary_expression "(iVar13 != 0) &&\n         (pppppppiVar17 = unaff_s0, pppppppiVar11 = pppppppiVar9,\n         unaff_s0 != (int *******)0xffffffff)" (parenthesized_expression "(iVar13 != 0)" ( (binary_expression "iVar13 != 0" identifier != number_literal) )) && (parenthesized_expression "(pppppppiVar17 = unaff_s0, pppppppiVar11 = pppppppiVar9,\n         unaff_s0 != (int *******)0xffffffff)" ( (comma_expression "pppppppiVar17 = unaff_s0, pppppppiVar11 = pppppppiVar9,\n         unaff_s0 != (int *******)0xffffffff" (assignment_expression "pppppppiVar17 = unaff_s0" identifier = identifier) , (comma_expression "pppppppiVar11 = pppppppiVar9,\n         unaff_s0 != (int *******)0xffffffff" (assignment_expression "pppppppiVar11 = pppppppiVar9" identifier = identifier) , (binary_expression "unaff_s0 != (int *******)0xffffffff" identifier != (cast_expression "(int *******)0xffffffff" ( (type_descriptor "int *******" primitive_type (abstract_pointer_declarator "*******" * (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))))))) ) number_literal)))) ))) )) (compound_statement "{\n        iVar13 = (*pcVar6)(&local_44);\n        pppppppiVar4 = local_48;\n        if ((iVar13 == 0) &&\n           (pppppppiVar11 = unaff_s0, unaff_s6 = local_48, unaff_s5 != (int **)0x0)) {\n          unaff_s2 = (int *******)*unaff_s5;\n          *unaff_s5 = (int *)((int)unaff_s2 + 1);\n          pppppppiVar17 = (int *******)unaff_s5[1];\n          if ((int *******)((int)unaff_s2 + 1) == pppppppiVar17) {\n            pppppppiVar17 = (int *******)((int)pppppppiVar17 * 0x30);\n            piVar10 = (int *)(*(code *)PTR_realloc_0003e2fc)(unaff_s5[2]);\n            unaff_s6 = pppppppiVar4;\n            if (piVar10 == (int *)0x0) goto LAB_00021b34;\n            unaff_s5[1] = (int *)((int)unaff_s5[1] << 1);\n            unaff_s5[2] = piVar10;\n          }\n          unaff_s3 = (int ******)((int)unaff_s2 * 0x18);\n          unaff_s5[2][(int)unaff_s2 * 6] = (int)pppppppiVar4;\n          *(int ********)((int)unaff_s3 + (int)(unaff_s5[2] + 1)) = pppppppiVar9;\n          unaff_s2 = (int *******)(unaff_s5[2] + (int)unaff_s2 * 6);\n          ppppppiVar12 = (int ******)(*(code *)PTR_malloc_0003e2f8)(pppppppiVar15);\n          unaff_s2[2] = ppppppiVar12;\n          pppppppiVar18 = pppppppiVar15;\n          unaff_s6 = pppppppiVar15;\n          if (*(int *)((int)unaff_s3 + (int)(unaff_s5[2] + 2)) == 0) goto LAB_00021b34;\n          (*(code *)PTR_memcpy_0003e34c)(*(int *)((int)unaff_s3 + (int)(unaff_s5[2] + 2)),param_4);\n          pppppppiVar17 = &local_44;\n          iVar13 = FUN_0001b67c((int *)((int)unaff_s3 + (int)(unaff_s5[2] + 3)));\n          if (iVar13 != 0) goto LAB_00021b34;\n        }\n        break;\n      }" { (expression_statement "iVar13 = (*pcVar6)(&local_44);" (assignment_expression "iVar13 = (*pcVar6)(&local_44)" identifier = (call_expression "(*pcVar6)(&local_44)" (parenthesized_expression "(*pcVar6)" ( (pointer_expression "*pcVar6" * identifier) )) (argument_list "(&local_44)" ( (pointer_expression "&local_44" & identifier) )))) ;) (expression_statement "pppppppiVar4 = local_48;" (assignment_expression "pppppppiVar4 = local_48" identifier = identifier) ;) (if_statement "if ((iVar13 == 0) &&\n           (pppppppiVar11 = unaff_s0, unaff_s6 = local_48, unaff_s5 != (int **)0x0)) {\n          unaff_s2 = (int *******)*unaff_s5;\n          *unaff_s5 = (int *)((int)unaff_s2 + 1);\n          pppppppiVar17 = (int *******)unaff_s5[1];\n          if ((int *******)((int)unaff_s2 + 1) == pppppppiVar17) {\n            pppppppiVar17 = (int *******)((int)pppppppiVar17 * 0x30);\n            piVar10 = (int *)(*(code *)PTR_realloc_0003e2fc)(unaff_s5[2]);\n            unaff_s6 = pppppppiVar4;\n            if (piVar10 == (int *)0x0) goto LAB_00021b34;\n            unaff_s5[1] = (int *)((int)unaff_s5[1] << 1);\n            unaff_s5[2] = piVar10;\n          }\n          unaff_s3 = (int ******)((int)unaff_s2 * 0x18);\n          unaff_s5[2][(int)unaff_s2 * 6] = (int)pppppppiVar4;\n          *(int ********)((int)unaff_s3 + (int)(unaff_s5[2] + 1)) = pppppppiVar9;\n          unaff_s2 = (int *******)(unaff_s5[2] + (int)unaff_s2 * 6);\n          ppppppiVar12 = (int ******)(*(code *)PTR_malloc_0003e2f8)(pppppppiVar15);\n          unaff_s2[2] = ppppppiVar12;\n          pppppppiVar18 = pppppppiVar15;\n          unaff_s6 = pppppppiVar15;\n          if (*(int *)((int)unaff_s3 + (int)(unaff_s5[2] + 2)) == 0) goto LAB_00021b34;\n          (*(code *)PTR_memcpy_0003e34c)(*(int *)((int)unaff_s3 + (int)(unaff_s5[2] + 2)),param_4);\n          pppppppiVar17 = &local_44;\n          iVar13 = FUN_0001b67c((int *)((int)unaff_s3 + (int)(unaff_s5[2] + 3)));\n          if (iVar13 != 0) goto LAB_00021b34;\n        }" if (parenthesized_expression "((iVar13 == 0) &&\n           (pppppppiVar11 = unaff_s0, unaff_s6 = local_48, unaff_s5 != (int **)0x0))" ( (binary_expression "(iVar13 == 0) &&\n           (pppppppiVar11 = unaff_s0, unaff_s6 = local_48, unaff_s5 != (int **)0x0)" (parenthesized_expression "(iVar13 == 0)" ( (binary_expression "iVar13 == 0" identifier == number_literal) )) && (parenthesized_expression "(pppppppiVar11 = unaff_s0, unaff_s6 = local_48, unaff_s5 != (int **)0x0)" ( (comma_expression "pppppppiVar11 = unaff_s0, unaff_s6 = local_48, unaff_s5 != (int **)0x0" (assignment_expression "pppppppiVar11 = unaff_s0" identifier = identifier) , (comma_expression "unaff_s6 = local_48, unaff_s5 != (int **)0x0" (assignment_expression "unaff_s6 = local_48" identifier = identifier) , (binary_expression "unaff_s5 != (int **)0x0" identifier != (cast_expression "(int **)0x0" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal)))) ))) )) (compound_statement "{\n          unaff_s2 = (int *******)*unaff_s5;\n          *unaff_s5 = (int *)((int)unaff_s2 + 1);\n          pppppppiVar17 = (int *******)unaff_s5[1];\n          if ((int *******)((int)unaff_s2 + 1) == pppppppiVar17) {\n            pppppppiVar17 = (int *******)((int)pppppppiVar17 * 0x30);\n            piVar10 = (int *)(*(code *)PTR_realloc_0003e2fc)(unaff_s5[2]);\n            unaff_s6 = pppppppiVar4;\n            if (piVar10 == (int *)0x0) goto LAB_00021b34;\n            unaff_s5[1] = (int *)((int)unaff_s5[1] << 1);\n            unaff_s5[2] = piVar10;\n          }\n          unaff_s3 = (int ******)((int)unaff_s2 * 0x18);\n          unaff_s5[2][(int)unaff_s2 * 6] = (int)pppppppiVar4;\n          *(int ********)((int)unaff_s3 + (int)(unaff_s5[2] + 1)) = pppppppiVar9;\n          unaff_s2 = (int *******)(unaff_s5[2] + (int)unaff_s2 * 6);\n          ppppppiVar12 = (int ******)(*(code *)PTR_malloc_0003e2f8)(pppppppiVar15);\n          unaff_s2[2] = ppppppiVar12;\n          pppppppiVar18 = pppppppiVar15;\n          unaff_s6 = pppppppiVar15;\n          if (*(int *)((int)unaff_s3 + (int)(unaff_s5[2] + 2)) == 0) goto LAB_00021b34;\n          (*(code *)PTR_memcpy_0003e34c)(*(int *)((int)unaff_s3 + (int)(unaff_s5[2] + 2)),param_4);\n          pppppppiVar17 = &local_44;\n          iVar13 = FUN_0001b67c((int *)((int)unaff_s3 + (int)(unaff_s5[2] + 3)));\n          if (iVar13 != 0) goto LAB_00021b34;\n        }" { (expression_statement "unaff_s2 = (int *******)*unaff_s5;" (assignment_expression "unaff_s2 = (int *******)*unaff_s5" identifier = (cast_expression "(int *******)*unaff_s5" ( (type_descriptor "int *******" primitive_type (abstract_pointer_declarator "*******" * (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))))))) ) (pointer_expression "*unaff_s5" * identifier))) ;) (expression_statement "*unaff_s5 = (int *)((int)unaff_s2 + 1);" (assignment_expression "*unaff_s5 = (int *)((int)unaff_s2 + 1)" (pointer_expression "*unaff_s5" * identifier) = (cast_expression "(int *)((int)unaff_s2 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)unaff_s2 + 1)" ( (binary_expression "(int)unaff_s2 + 1" (cast_expression "(int)unaff_s2" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "pppppppiVar17 = (int *******)unaff_s5[1];" (assignment_expression "pppppppiVar17 = (int *******)unaff_s5[1]" identifier = (cast_expression "(int *******)unaff_s5[1]" ( (type_descriptor "int *******" primitive_type (abstract_pointer_declarator "*******" * (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))))))) ) (subscript_expression "unaff_s5[1]" identifier [ number_literal ]))) ;) (if_statement "if ((int *******)((int)unaff_s2 + 1) == pppppppiVar17) {\n            pppppppiVar17 = (int *******)((int)pppppppiVar17 * 0x30);\n            piVar10 = (int *)(*(code *)PTR_realloc_0003e2fc)(unaff_s5[2]);\n            unaff_s6 = pppppppiVar4;\n            if (piVar10 == (int *)0x0) goto LAB_00021b34;\n            unaff_s5[1] = (int *)((int)unaff_s5[1] << 1);\n            unaff_s5[2] = piVar10;\n          }" if (parenthesized_expression "((int *******)((int)unaff_s2 + 1) == pppppppiVar17)" ( (binary_expression "(int *******)((int)unaff_s2 + 1) == pppppppiVar17" (cast_expression "(int *******)((int)unaff_s2 + 1)" ( (type_descriptor "int *******" primitive_type (abstract_pointer_declarator "*******" * (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))))))) ) (parenthesized_expression "((int)unaff_s2 + 1)" ( (binary_expression "(int)unaff_s2 + 1" (cast_expression "(int)unaff_s2" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))) == identifier) )) (compound_statement "{\n            pppppppiVar17 = (int *******)((int)pppppppiVar17 * 0x30);\n            piVar10 = (int *)(*(code *)PTR_realloc_0003e2fc)(unaff_s5[2]);\n            unaff_s6 = pppppppiVar4;\n            if (piVar10 == (int *)0x0) goto LAB_00021b34;\n            unaff_s5[1] = (int *)((int)unaff_s5[1] << 1);\n            unaff_s5[2] = piVar10;\n          }" { (expression_statement "pppppppiVar17 = (int *******)((int)pppppppiVar17 * 0x30);" (assignment_expression "pppppppiVar17 = (int *******)((int)pppppppiVar17 * 0x30)" identifier = (cast_expression "(int *******)((int)pppppppiVar17 * 0x30)" ( (type_descriptor "int *******" primitive_type (abstract_pointer_declarator "*******" * (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))))))) ) (parenthesized_expression "((int)pppppppiVar17 * 0x30)" ( (binary_expression "(int)pppppppiVar17 * 0x30" (cast_expression "(int)pppppppiVar17" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) )))) ;) (expression_statement "piVar10 = (int *)(*(code *)PTR_realloc_0003e2fc)(unaff_s5[2]);" (assignment_expression "piVar10 = (int *)(*(code *)PTR_realloc_0003e2fc)(unaff_s5[2])" identifier = (cast_expression "(int *)(*(code *)PTR_realloc_0003e2fc)(unaff_s5[2])" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR_realloc_0003e2fc)(unaff_s5[2])" (parenthesized_expression "(*(code *)PTR_realloc_0003e2fc)" ( (pointer_expression "*(code *)PTR_realloc_0003e2fc" * (cast_expression "(code *)PTR_realloc_0003e2fc" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(unaff_s5[2])" ( (subscript_expression "unaff_s5[2]" identifier [ number_literal ]) ))))) ;) (expression_statement "unaff_s6 = pppppppiVar4;" (assignment_expression "unaff_s6 = pppppppiVar4" identifier = identifier) ;) (if_statement "if (piVar10 == (int *)0x0) goto LAB_00021b34;" if (parenthesized_expression "(piVar10 == (int *)0x0)" ( (binary_expression "piVar10 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00021b34;" goto statement_identifier ;)) (expression_statement "unaff_s5[1] = (int *)((int)unaff_s5[1] << 1);" (assignment_expression "unaff_s5[1] = (int *)((int)unaff_s5[1] << 1)" (subscript_expression "unaff_s5[1]" identifier [ number_literal ]) = (cast_expression "(int *)((int)unaff_s5[1] << 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)unaff_s5[1] << 1)" ( (binary_expression "(int)unaff_s5[1] << 1" (cast_expression "(int)unaff_s5[1]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "unaff_s5[1]" identifier [ number_literal ])) << number_literal) )))) ;) (expression_statement "unaff_s5[2] = piVar10;" (assignment_expression "unaff_s5[2] = piVar10" (subscript_expression "unaff_s5[2]" identifier [ number_literal ]) = identifier) ;) })) (expression_statement "unaff_s3 = (int ******)((int)unaff_s2 * 0x18);" (assignment_expression "unaff_s3 = (int ******)((int)unaff_s2 * 0x18)" identifier = (cast_expression "(int ******)((int)unaff_s2 * 0x18)" ( (type_descriptor "int ******" primitive_type (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))))))) ) (parenthesized_expression "((int)unaff_s2 * 0x18)" ( (binary_expression "(int)unaff_s2 * 0x18" (cast_expression "(int)unaff_s2" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) )))) ;) (expression_statement "unaff_s5[2][(int)unaff_s2 * 6] = (int)pppppppiVar4;" (assignment_expression "unaff_s5[2][(int)unaff_s2 * 6] = (int)pppppppiVar4" (subscript_expression "unaff_s5[2][(int)unaff_s2 * 6]" (subscript_expression "unaff_s5[2]" identifier [ number_literal ]) [ (binary_expression "(int)unaff_s2 * 6" (cast_expression "(int)unaff_s2" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal) ]) = (cast_expression "(int)pppppppiVar4" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "*(int ********)((int)unaff_s3 + (int)(unaff_s5[2] + 1)) = pppppppiVar9;" (assignment_expression "*(int ********)((int)unaff_s3 + (int)(unaff_s5[2] + 1)) = pppppppiVar9" (pointer_expression "*(int ********)((int)unaff_s3 + (int)(unaff_s5[2] + 1))" * (cast_expression "(int ********)((int)unaff_s3 + (int)(unaff_s5[2] + 1))" ( (type_descriptor "int ********" primitive_type (abstract_pointer_declarator "********" * (abstract_pointer_declarator "*******" * (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))))))))) ) (parenthesized_expression "((int)unaff_s3 + (int)(unaff_s5[2] + 1))" ( (binary_expression "(int)unaff_s3 + (int)(unaff_s5[2] + 1)" (cast_expression "(int)unaff_s3" ( (type_descriptor "int" primitive_type) ) identifier) + (cast_expression "(int)(unaff_s5[2] + 1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(unaff_s5[2] + 1)" ( (binary_expression "unaff_s5[2] + 1" (subscript_expression "unaff_s5[2]" identifier [ number_literal ]) + number_literal) )))) )))) = identifier) ;) (expression_statement "unaff_s2 = (int *******)(unaff_s5[2] + (int)unaff_s2 * 6);" (assignment_expression "unaff_s2 = (int *******)(unaff_s5[2] + (int)unaff_s2 * 6)" identifier = (cast_expression "(int *******)(unaff_s5[2] + (int)unaff_s2 * 6)" ( (type_descriptor "int *******" primitive_type (abstract_pointer_declarator "*******" * (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))))))) ) (parenthesized_expression "(unaff_s5[2] + (int)unaff_s2 * 6)" ( (binary_expression "unaff_s5[2] + (int)unaff_s2 * 6" (subscript_expression "unaff_s5[2]" identifier [ number_literal ]) + (binary_expression "(int)unaff_s2 * 6" (cast_expression "(int)unaff_s2" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) )))) ;) (expression_statement "ppppppiVar12 = (int ******)(*(code *)PTR_malloc_0003e2f8)(pppppppiVar15);" (assignment_expression "ppppppiVar12 = (int ******)(*(code *)PTR_malloc_0003e2f8)(pppppppiVar15)" identifier = (cast_expression "(int ******)(*(code *)PTR_malloc_0003e2f8)(pppppppiVar15)" ( (type_descriptor "int ******" primitive_type (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))))))) ) (call_expression "(*(code *)PTR_malloc_0003e2f8)(pppppppiVar15)" (parenthesized_expression "(*(code *)PTR_malloc_0003e2f8)" ( (pointer_expression "*(code *)PTR_malloc_0003e2f8" * (cast_expression "(code *)PTR_malloc_0003e2f8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(pppppppiVar15)" ( identifier ))))) ;) (expression_statement "unaff_s2[2] = ppppppiVar12;" (assignment_expression "unaff_s2[2] = ppppppiVar12" (subscript_expression "unaff_s2[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "pppppppiVar18 = pppppppiVar15;" (assignment_expression "pppppppiVar18 = pppppppiVar15" identifier = identifier) ;) (expression_statement "unaff_s6 = pppppppiVar15;" (assignment_expression "unaff_s6 = pppppppiVar15" identifier = identifier) ;) (if_statement "if (*(int *)((int)unaff_s3 + (int)(unaff_s5[2] + 2)) == 0) goto LAB_00021b34;" if (parenthesized_expression "(*(int *)((int)unaff_s3 + (int)(unaff_s5[2] + 2)) == 0)" ( (binary_expression "*(int *)((int)unaff_s3 + (int)(unaff_s5[2] + 2)) == 0" (pointer_expression "*(int *)((int)unaff_s3 + (int)(unaff_s5[2] + 2))" * (cast_expression "(int *)((int)unaff_s3 + (int)(unaff_s5[2] + 2))" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)unaff_s3 + (int)(unaff_s5[2] + 2))" ( (binary_expression "(int)unaff_s3 + (int)(unaff_s5[2] + 2)" (cast_expression "(int)unaff_s3" ( (type_descriptor "int" primitive_type) ) identifier) + (cast_expression "(int)(unaff_s5[2] + 2)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(unaff_s5[2] + 2)" ( (binary_expression "unaff_s5[2] + 2" (subscript_expression "unaff_s5[2]" identifier [ number_literal ]) + number_literal) )))) )))) == number_literal) )) (goto_statement "goto LAB_00021b34;" goto statement_identifier ;)) (expression_statement "(*(code *)PTR_memcpy_0003e34c)(*(int *)((int)unaff_s3 + (int)(unaff_s5[2] + 2)),param_4);" (call_expression "(*(code *)PTR_memcpy_0003e34c)(*(int *)((int)unaff_s3 + (int)(unaff_s5[2] + 2)),param_4)" (parenthesized_expression "(*(code *)PTR_memcpy_0003e34c)" ( (pointer_expression "*(code *)PTR_memcpy_0003e34c" * (cast_expression "(code *)PTR_memcpy_0003e34c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(*(int *)((int)unaff_s3 + (int)(unaff_s5[2] + 2)),param_4)" ( (pointer_expression "*(int *)((int)unaff_s3 + (int)(unaff_s5[2] + 2))" * (cast_expression "(int *)((int)unaff_s3 + (int)(unaff_s5[2] + 2))" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)unaff_s3 + (int)(unaff_s5[2] + 2))" ( (binary_expression "(int)unaff_s3 + (int)(unaff_s5[2] + 2)" (cast_expression "(int)unaff_s3" ( (type_descriptor "int" primitive_type) ) identifier) + (cast_expression "(int)(unaff_s5[2] + 2)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(unaff_s5[2] + 2)" ( (binary_expression "unaff_s5[2] + 2" (subscript_expression "unaff_s5[2]" identifier [ number_literal ]) + number_literal) )))) )))) , identifier ))) ;) (expression_statement "pppppppiVar17 = &local_44;" (assignment_expression "pppppppiVar17 = &local_44" identifier = (pointer_expression "&local_44" & identifier)) ;) (expression_statement "iVar13 = FUN_0001b67c((int *)((int)unaff_s3 + (int)(unaff_s5[2] + 3)));" (assignment_expression "iVar13 = FUN_0001b67c((int *)((int)unaff_s3 + (int)(unaff_s5[2] + 3)))" identifier = (call_expression "FUN_0001b67c((int *)((int)unaff_s3 + (int)(unaff_s5[2] + 3)))" identifier (argument_list "((int *)((int)unaff_s3 + (int)(unaff_s5[2] + 3)))" ( (cast_expression "(int *)((int)unaff_s3 + (int)(unaff_s5[2] + 3))" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)unaff_s3 + (int)(unaff_s5[2] + 3))" ( (binary_expression "(int)unaff_s3 + (int)(unaff_s5[2] + 3)" (cast_expression "(int)unaff_s3" ( (type_descriptor "int" primitive_type) ) identifier) + (cast_expression "(int)(unaff_s5[2] + 3)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(unaff_s5[2] + 3)" ( (binary_expression "unaff_s5[2] + 3" (subscript_expression "unaff_s5[2]" identifier [ number_literal ]) + number_literal) )))) ))) )))) ;) (if_statement "if (iVar13 != 0) goto LAB_00021b34;" if (parenthesized_expression "(iVar13 != 0)" ( (binary_expression "iVar13 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00021b34;" goto statement_identifier ;)) })) (break_statement "break;" break ;) })) (expression_statement "unaff_s2 = (int *******)((int)unaff_s2 + 1);" (assignment_expression "unaff_s2 = (int *******)((int)unaff_s2 + 1)" identifier = (cast_expression "(int *******)((int)unaff_s2 + 1)" ( (type_descriptor "int *******" primitive_type (abstract_pointer_declarator "*******" * (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))))))) ) (parenthesized_expression "((int)unaff_s2 + 1)" ( (binary_expression "(int)unaff_s2 + 1" (cast_expression "(int)unaff_s2" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "unaff_s3 = unaff_s3 + 1;" (assignment_expression "unaff_s3 = unaff_s3 + 1" identifier = (binary_expression "unaff_s3 + 1" identifier + number_literal)) ;) (expression_statement "unaff_s0 = pppppppiVar11;" (assignment_expression "unaff_s0 = pppppppiVar11" identifier = identifier) ;) }) while (parenthesized_expression "(unaff_s6 != unaff_s2)" ( (binary_expression "unaff_s6 != unaff_s2" identifier != identifier) )) ;) (labeled_statement "LAB_00021ca8:\n    unaff_s0 = pppppppiVar11;" statement_identifier : (expression_statement "unaff_s0 = pppppppiVar11;" (assignment_expression "unaff_s0 = pppppppiVar11" identifier = identifier) ;)) (if_statement "if ((int)pppppppiVar11 < 0) {\nLAB_00021f44:\n      if (unaff_s0 == (int *******)&SUB_fffffffe) {\nLAB_00021b34:\n        (*(code *)PTR_free_0003e354)(local_3c);\n        if (bVar1) {\n          (*(code *)PTR_free_0003e354)(local_70);\n        }\n        FUN_0001eb94(unaff_s5);\n        iVar13 = 0xc;\n        goto LAB_00021ed8;\n      }\n      if (unaff_s5 == (int **)0x0) {\n        (*(code *)PTR_free_0003e354)();\n        if (bVar1) {\n          (*(code *)PTR_free_0003e354)(local_70);\n          iVar13 = 1;\n        }\n        else {\n          iVar13 = 1;\n        }\n        goto LAB_00021ed8;\n      }\n      *(int ********)(puVar25 + 0x10) = &local_44;\n      pppppppiVar17 = (int *******)&local_48;\n      pppppppiVar18 = param_3;\n      pppppppiVar19 = param_4;\n      unaff_s0 = (int *******)(*pcVar5)(unaff_s5);\n    }" if (parenthesized_expression "((int)pppppppiVar11 < 0)" ( (binary_expression "(int)pppppppiVar11 < 0" (cast_expression "(int)pppppppiVar11" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\nLAB_00021f44:\n      if (unaff_s0 == (int *******)&SUB_fffffffe) {\nLAB_00021b34:\n        (*(code *)PTR_free_0003e354)(local_3c);\n        if (bVar1) {\n          (*(code *)PTR_free_0003e354)(local_70);\n        }\n        FUN_0001eb94(unaff_s5);\n        iVar13 = 0xc;\n        goto LAB_00021ed8;\n      }\n      if (unaff_s5 == (int **)0x0) {\n        (*(code *)PTR_free_0003e354)();\n        if (bVar1) {\n          (*(code *)PTR_free_0003e354)(local_70);\n          iVar13 = 1;\n        }\n        else {\n          iVar13 = 1;\n        }\n        goto LAB_00021ed8;\n      }\n      *(int ********)(puVar25 + 0x10) = &local_44;\n      pppppppiVar17 = (int *******)&local_48;\n      pppppppiVar18 = param_3;\n      pppppppiVar19 = param_4;\n      unaff_s0 = (int *******)(*pcVar5)(unaff_s5);\n    }" { (labeled_statement "LAB_00021f44:\n      if (unaff_s0 == (int *******)&SUB_fffffffe) {\nLAB_00021b34:\n        (*(code *)PTR_free_0003e354)(local_3c);\n        if (bVar1) {\n          (*(code *)PTR_free_0003e354)(local_70);\n        }\n        FUN_0001eb94(unaff_s5);\n        iVar13 = 0xc;\n        goto LAB_00021ed8;\n      }" statement_identifier : (if_statement "if (unaff_s0 == (int *******)&SUB_fffffffe) {\nLAB_00021b34:\n        (*(code *)PTR_free_0003e354)(local_3c);\n        if (bVar1) {\n          (*(code *)PTR_free_0003e354)(local_70);\n        }\n        FUN_0001eb94(unaff_s5);\n        iVar13 = 0xc;\n        goto LAB_00021ed8;\n      }" if (parenthesized_expression "(unaff_s0 == (int *******)&SUB_fffffffe)" ( (binary_expression "unaff_s0 == (int *******)&SUB_fffffffe" identifier == (cast_expression "(int *******)&SUB_fffffffe" ( (type_descriptor "int *******" primitive_type (abstract_pointer_declarator "*******" * (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))))))) ) (pointer_expression "&SUB_fffffffe" & identifier))) )) (compound_statement "{\nLAB_00021b34:\n        (*(code *)PTR_free_0003e354)(local_3c);\n        if (bVar1) {\n          (*(code *)PTR_free_0003e354)(local_70);\n        }\n        FUN_0001eb94(unaff_s5);\n        iVar13 = 0xc;\n        goto LAB_00021ed8;\n      }" { (labeled_statement "LAB_00021b34:\n        (*(code *)PTR_free_0003e354)(local_3c);" statement_identifier : (expression_statement "(*(code *)PTR_free_0003e354)(local_3c);" (call_expression "(*(code *)PTR_free_0003e354)(local_3c)" (parenthesized_expression "(*(code *)PTR_free_0003e354)" ( (pointer_expression "*(code *)PTR_free_0003e354" * (cast_expression "(code *)PTR_free_0003e354" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(local_3c)" ( identifier ))) ;)) (if_statement "if (bVar1) {\n          (*(code *)PTR_free_0003e354)(local_70);\n        }" if (parenthesized_expression "(bVar1)" ( identifier )) (compound_statement "{\n          (*(code *)PTR_free_0003e354)(local_70);\n        }" { (expression_statement "(*(code *)PTR_free_0003e354)(local_70);" (call_expression "(*(code *)PTR_free_0003e354)(local_70)" (parenthesized_expression "(*(code *)PTR_free_0003e354)" ( (pointer_expression "*(code *)PTR_free_0003e354" * (cast_expression "(code *)PTR_free_0003e354" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(local_70)" ( identifier ))) ;) })) (expression_statement "FUN_0001eb94(unaff_s5);" (call_expression "FUN_0001eb94(unaff_s5)" identifier (argument_list "(unaff_s5)" ( identifier ))) ;) (expression_statement "iVar13 = 0xc;" (assignment_expression "iVar13 = 0xc" identifier = number_literal) ;) (goto_statement "goto LAB_00021ed8;" goto statement_identifier ;) }))) (if_statement "if (unaff_s5 == (int **)0x0) {\n        (*(code *)PTR_free_0003e354)();\n        if (bVar1) {\n          (*(code *)PTR_free_0003e354)(local_70);\n          iVar13 = 1;\n        }\n        else {\n          iVar13 = 1;\n        }\n        goto LAB_00021ed8;\n      }" if (parenthesized_expression "(unaff_s5 == (int **)0x0)" ( (binary_expression "unaff_s5 == (int **)0x0" identifier == (cast_expression "(int **)0x0" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal)) )) (compound_statement "{\n        (*(code *)PTR_free_0003e354)();\n        if (bVar1) {\n          (*(code *)PTR_free_0003e354)(local_70);\n          iVar13 = 1;\n        }\n        else {\n          iVar13 = 1;\n        }\n        goto LAB_00021ed8;\n      }" { (expression_statement "(*(code *)PTR_free_0003e354)();" (call_expression "(*(code *)PTR_free_0003e354)()" (parenthesized_expression "(*(code *)PTR_free_0003e354)" ( (pointer_expression "*(code *)PTR_free_0003e354" * (cast_expression "(code *)PTR_free_0003e354" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (if_statement "if (bVar1) {\n          (*(code *)PTR_free_0003e354)(local_70);\n          iVar13 = 1;\n        }\n        else {\n          iVar13 = 1;\n        }" if (parenthesized_expression "(bVar1)" ( identifier )) (compound_statement "{\n          (*(code *)PTR_free_0003e354)(local_70);\n          iVar13 = 1;\n        }" { (expression_statement "(*(code *)PTR_free_0003e354)(local_70);" (call_expression "(*(code *)PTR_free_0003e354)(local_70)" (parenthesized_expression "(*(code *)PTR_free_0003e354)" ( (pointer_expression "*(code *)PTR_free_0003e354" * (cast_expression "(code *)PTR_free_0003e354" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(local_70)" ( identifier ))) ;) (expression_statement "iVar13 = 1;" (assignment_expression "iVar13 = 1" identifier = number_literal) ;) }) (else_clause "else {\n          iVar13 = 1;\n        }" else (compound_statement "{\n          iVar13 = 1;\n        }" { (expression_statement "iVar13 = 1;" (assignment_expression "iVar13 = 1" identifier = number_literal) ;) }))) (goto_statement "goto LAB_00021ed8;" goto statement_identifier ;) })) (expression_statement "*(int ********)(puVar25 + 0x10) = &local_44;" (assignment_expression "*(int ********)(puVar25 + 0x10) = &local_44" (pointer_expression "*(int ********)(puVar25 + 0x10)" * (cast_expression "(int ********)(puVar25 + 0x10)" ( (type_descriptor "int ********" primitive_type (abstract_pointer_declarator "********" * (abstract_pointer_declarator "*******" * (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))))))))) ) (parenthesized_expression "(puVar25 + 0x10)" ( (binary_expression "puVar25 + 0x10" identifier + number_literal) )))) = (pointer_expression "&local_44" & identifier)) ;) (expression_statement "pppppppiVar17 = (int *******)&local_48;" (assignment_expression "pppppppiVar17 = (int *******)&local_48" identifier = (cast_expression "(int *******)&local_48" ( (type_descriptor "int *******" primitive_type (abstract_pointer_declarator "*******" * (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))))))) ) (pointer_expression "&local_48" & identifier))) ;) (expression_statement "pppppppiVar18 = param_3;" (assignment_expression "pppppppiVar18 = param_3" identifier = identifier) ;) (expression_statement "pppppppiVar19 = param_4;" (assignment_expression "pppppppiVar19 = param_4" identifier = identifier) ;) (expression_statement "unaff_s0 = (int *******)(*pcVar5)(unaff_s5);" (assignment_expression "unaff_s0 = (int *******)(*pcVar5)(unaff_s5)" identifier = (cast_expression "(int *******)(*pcVar5)(unaff_s5)" ( (type_descriptor "int *******" primitive_type (abstract_pointer_declarator "*******" * (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))))))) ) (call_expression "(*pcVar5)(unaff_s5)" (parenthesized_expression "(*pcVar5)" ( (pointer_expression "*pcVar5" * identifier) )) (argument_list "(unaff_s5)" ( identifier ))))) ;) })) })) (expression_statement "(*(code *)PTR_free_0003e354)(local_3c);" (call_expression "(*(code *)PTR_free_0003e354)(local_3c)" (parenthesized_expression "(*(code *)PTR_free_0003e354)" ( (pointer_expression "*(code *)PTR_free_0003e354" * (cast_expression "(code *)PTR_free_0003e354" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(local_3c)" ( identifier ))) ;) (if_statement "if (bVar1) {\n    (*(code *)PTR_free_0003e354)(local_70);\n  }" if (parenthesized_expression "(bVar1)" ( identifier )) (compound_statement "{\n    (*(code *)PTR_free_0003e354)(local_70);\n  }" { (expression_statement "(*(code *)PTR_free_0003e354)(local_70);" (call_expression "(*(code *)PTR_free_0003e354)(local_70)" (parenthesized_expression "(*(code *)PTR_free_0003e354)" ( (pointer_expression "*(code *)PTR_free_0003e354" * (cast_expression "(code *)PTR_free_0003e354" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(local_70)" ( identifier ))) ;) })) (expression_statement "iVar13 = FUN_0001eb94(unaff_s5);" (assignment_expression "iVar13 = FUN_0001eb94(unaff_s5)" identifier = (call_expression "FUN_0001eb94(unaff_s5)" identifier (argument_list "(unaff_s5)" ( identifier )))) ;) (labeled_statement "LAB_00021ed8:\n  if (local_2c == *(int *)PTR___stack_chk_guard_0003e348) {\n    return iVar13;\n  }" statement_identifier : (if_statement "if (local_2c == *(int *)PTR___stack_chk_guard_0003e348) {\n    return iVar13;\n  }" if (parenthesized_expression "(local_2c == *(int *)PTR___stack_chk_guard_0003e348)" ( (binary_expression "local_2c == *(int *)PTR___stack_chk_guard_0003e348" identifier == (pointer_expression "*(int *)PTR___stack_chk_guard_0003e348" * (cast_expression "(int *)PTR___stack_chk_guard_0003e348" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n    return iVar13;\n  }" { (return_statement "return iVar13;" return identifier ;) }))) (expression_statement "pcVar5 = FUN_00021f9c;" (assignment_expression "pcVar5 = FUN_00021f9c" identifier = identifier) ;) (expression_statement "iVar13 = local_2c;" (assignment_expression "iVar13 = local_2c" identifier = identifier) ;) (expression_statement "puVar24 = PTR___stack_chk_fail_0003e32c;" (assignment_expression "puVar24 = PTR___stack_chk_fail_0003e32c" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_0003e32c)();" (call_expression "(*(code *)PTR___stack_chk_fail_0003e32c)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_0003e32c)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_0003e32c" * (cast_expression "(code *)PTR___stack_chk_fail_0003e32c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "*(code **)(puVar26 + -4) = pcVar5;" (assignment_expression "*(code **)(puVar26 + -4) = pcVar5" (pointer_expression "*(code **)(puVar26 + -4)" * (cast_expression "(code **)(puVar26 + -4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar26 + -4)" ( (binary_expression "puVar26 + -4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined1 **)(puVar26 + -8) = auStack_98;" (assignment_expression "*(undefined1 **)(puVar26 + -8) = auStack_98" (pointer_expression "*(undefined1 **)(puVar26 + -8)" * (cast_expression "(undefined1 **)(puVar26 + -8)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar26 + -8)" ( (binary_expression "puVar26 + -8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar26 + -0xc) = piVar23;" (assignment_expression "*(int **)(puVar26 + -0xc) = piVar23" (pointer_expression "*(int **)(puVar26 + -0xc)" * (cast_expression "(int **)(puVar26 + -0xc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar26 + -0xc)" ( (binary_expression "puVar26 + -0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int ********)(puVar26 + -0x10) = unaff_s6;" (assignment_expression "*(int ********)(puVar26 + -0x10) = unaff_s6" (pointer_expression "*(int ********)(puVar26 + -0x10)" * (cast_expression "(int ********)(puVar26 + -0x10)" ( (type_descriptor "int ********" primitive_type (abstract_pointer_declarator "********" * (abstract_pointer_declarator "*******" * (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))))))))) ) (parenthesized_expression "(puVar26 + -0x10)" ( (binary_expression "puVar26 + -0x10" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int ***)(puVar26 + -0x14) = unaff_s5;" (assignment_expression "*(int ***)(puVar26 + -0x14) = unaff_s5" (pointer_expression "*(int ***)(puVar26 + -0x14)" * (cast_expression "(int ***)(puVar26 + -0x14)" ( (type_descriptor "int ***" primitive_type (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "(puVar26 + -0x14)" ( (binary_expression "puVar26 + -0x14" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int ********)(puVar26 + -0x18) = param_4;" (assignment_expression "*(int ********)(puVar26 + -0x18) = param_4" (pointer_expression "*(int ********)(puVar26 + -0x18)" * (cast_expression "(int ********)(puVar26 + -0x18)" ( (type_descriptor "int ********" primitive_type (abstract_pointer_declarator "********" * (abstract_pointer_declarator "*******" * (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))))))))) ) (parenthesized_expression "(puVar26 + -0x18)" ( (binary_expression "puVar26 + -0x18" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *******)(puVar26 + -0x1c) = unaff_s3;" (assignment_expression "*(int *******)(puVar26 + -0x1c) = unaff_s3" (pointer_expression "*(int *******)(puVar26 + -0x1c)" * (cast_expression "(int *******)(puVar26 + -0x1c)" ( (type_descriptor "int *******" primitive_type (abstract_pointer_declarator "*******" * (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))))))) ) (parenthesized_expression "(puVar26 + -0x1c)" ( (binary_expression "puVar26 + -0x1c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int ********)(puVar26 + -0x20) = unaff_s2;" (assignment_expression "*(int ********)(puVar26 + -0x20) = unaff_s2" (pointer_expression "*(int ********)(puVar26 + -0x20)" * (cast_expression "(int ********)(puVar26 + -0x20)" ( (type_descriptor "int ********" primitive_type (abstract_pointer_declarator "********" * (abstract_pointer_declarator "*******" * (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))))))))) ) (parenthesized_expression "(puVar26 + -0x20)" ( (binary_expression "puVar26 + -0x20" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int ********)(puVar26 + -0x24) = param_2;" (assignment_expression "*(int ********)(puVar26 + -0x24) = param_2" (pointer_expression "*(int ********)(puVar26 + -0x24)" * (cast_expression "(int ********)(puVar26 + -0x24)" ( (type_descriptor "int ********" primitive_type (abstract_pointer_declarator "********" * (abstract_pointer_declarator "*******" * (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))))))))) ) (parenthesized_expression "(puVar26 + -0x24)" ( (binary_expression "puVar26 + -0x24" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int ********)(puVar26 + -0x28) = unaff_s0;" (assignment_expression "*(int ********)(puVar26 + -0x28) = unaff_s0" (pointer_expression "*(int ********)(puVar26 + -0x28)" * (cast_expression "(int ********)(puVar26 + -0x28)" ( (type_descriptor "int ********" primitive_type (abstract_pointer_declarator "********" * (abstract_pointer_declarator "*******" * (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))))))))) ) (parenthesized_expression "(puVar26 + -0x28)" ( (binary_expression "puVar26 + -0x28" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined **)(puVar26 + -0xc0) = puVar24 + 0x24174;" (assignment_expression "*(undefined **)(puVar26 + -0xc0) = puVar24 + 0x24174" (pointer_expression "*(undefined **)(puVar26 + -0xc0)" * (cast_expression "(undefined **)(puVar26 + -0xc0)" ( (type_descriptor "undefined **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar26 + -0xc0)" ( (binary_expression "puVar26 + -0xc0" identifier + number_literal) )))) = (binary_expression "puVar24 + 0x24174" identifier + number_literal)) ;) (expression_statement "*(int *)(puVar26 + -0xac) = iVar13;" (assignment_expression "*(int *)(puVar26 + -0xac) = iVar13" (pointer_expression "*(int *)(puVar26 + -0xac)" * (cast_expression "(int *)(puVar26 + -0xac)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar26 + -0xac)" ( (binary_expression "puVar26 + -0xac" identifier + number_literal) )))) = identifier) ;) (expression_statement "uVar27 = *(undefined4 *)(puVar26 + 0x14);" (assignment_expression "uVar27 = *(undefined4 *)(puVar26 + 0x14)" identifier = (pointer_expression "*(undefined4 *)(puVar26 + 0x14)" * (cast_expression "(undefined4 *)(puVar26 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar26 + 0x14)" ( (binary_expression "puVar26 + 0x14" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(puVar26 + -0x2c) = **(undefined4 **)(puVar24 + 0x1c3ac);" (assignment_expression "*(undefined4 *)(puVar26 + -0x2c) = **(undefined4 **)(puVar24 + 0x1c3ac)" (pointer_expression "*(undefined4 *)(puVar26 + -0x2c)" * (cast_expression "(undefined4 *)(puVar26 + -0x2c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar26 + -0x2c)" ( (binary_expression "puVar26 + -0x2c" identifier + number_literal) )))) = (pointer_expression "**(undefined4 **)(puVar24 + 0x1c3ac)" * (pointer_expression "*(undefined4 **)(puVar24 + 0x1c3ac)" * (cast_expression "(undefined4 **)(puVar24 + 0x1c3ac)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar24 + 0x1c3ac)" ( (binary_expression "puVar24 + 0x1c3ac" identifier + number_literal) )))))) ;) (expression_statement "*(int *******)(puVar26 + -0xb8) = *pppppppiVar17;" (assignment_expression "*(int *******)(puVar26 + -0xb8) = *pppppppiVar17" (pointer_expression "*(int *******)(puVar26 + -0xb8)" * (cast_expression "(int *******)(puVar26 + -0xb8)" ( (type_descriptor "int *******" primitive_type (abstract_pointer_declarator "*******" * (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))))))) ) (parenthesized_expression "(puVar26 + -0xb8)" ( (binary_expression "puVar26 + -0xb8" identifier + number_literal) )))) = (pointer_expression "*pppppppiVar17" * identifier)) ;) (if_statement "if (*(byte *)(pppppppiVar18 + 1) < 0x25) {\n                    \n                    \n    iVar13 = (*(code *)(puVar24 + 0x24174 +\n                       *(int *)(*(int *)(puVar24 + 0x1c1ac) + -0x2ac0 +\n                               (uint)*(byte *)(pppppppiVar18 + 1) * 4)))();\n    return iVar13;\n  }" if (parenthesized_expression "(*(byte *)(pppppppiVar18 + 1) < 0x25)" ( (binary_expression "*(byte *)(pppppppiVar18 + 1) < 0x25" (pointer_expression "*(byte *)(pppppppiVar18 + 1)" * (cast_expression "(byte *)(pppppppiVar18 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pppppppiVar18 + 1)" ( (binary_expression "pppppppiVar18 + 1" identifier + number_literal) )))) < number_literal) )) (compound_statement "{\n                    \n                    \n    iVar13 = (*(code *)(puVar24 + 0x24174 +\n                       *(int *)(*(int *)(puVar24 + 0x1c1ac) + -0x2ac0 +\n                               (uint)*(byte *)(pppppppiVar18 + 1) * 4)))();\n    return iVar13;\n  }" { (expression_statement "iVar13 = (*(code *)(puVar24 + 0x24174 +\n                       *(int *)(*(int *)(puVar24 + 0x1c1ac) + -0x2ac0 +\n                               (uint)*(byte *)(pppppppiVar18 + 1) * 4)))();" (assignment_expression "iVar13 = (*(code *)(puVar24 + 0x24174 +\n                       *(int *)(*(int *)(puVar24 + 0x1c1ac) + -0x2ac0 +\n                               (uint)*(byte *)(pppppppiVar18 + 1) * 4)))()" identifier = (call_expression "(*(code *)(puVar24 + 0x24174 +\n                       *(int *)(*(int *)(puVar24 + 0x1c1ac) + -0x2ac0 +\n                               (uint)*(byte *)(pppppppiVar18 + 1) * 4)))()" (parenthesized_expression "(*(code *)(puVar24 + 0x24174 +\n                       *(int *)(*(int *)(puVar24 + 0x1c1ac) + -0x2ac0 +\n                               (uint)*(byte *)(pppppppiVar18 + 1) * 4)))" ( (pointer_expression "*(code *)(puVar24 + 0x24174 +\n                       *(int *)(*(int *)(puVar24 + 0x1c1ac) + -0x2ac0 +\n                               (uint)*(byte *)(pppppppiVar18 + 1) * 4))" * (cast_expression "(code *)(puVar24 + 0x24174 +\n                       *(int *)(*(int *)(puVar24 + 0x1c1ac) + -0x2ac0 +\n                               (uint)*(byte *)(pppppppiVar18 + 1) * 4))" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar24 + 0x24174 +\n                       *(int *)(*(int *)(puVar24 + 0x1c1ac) + -0x2ac0 +\n                               (uint)*(byte *)(pppppppiVar18 + 1) * 4))" ( (binary_expression "puVar24 + 0x24174 +\n                       *(int *)(*(int *)(puVar24 + 0x1c1ac) + -0x2ac0 +\n                               (uint)*(byte *)(pppppppiVar18 + 1) * 4)" (binary_expression "puVar24 + 0x24174" identifier + number_literal) + (pointer_expression "*(int *)(*(int *)(puVar24 + 0x1c1ac) + -0x2ac0 +\n                               (uint)*(byte *)(pppppppiVar18 + 1) * 4)" * (cast_expression "(int *)(*(int *)(puVar24 + 0x1c1ac) + -0x2ac0 +\n                               (uint)*(byte *)(pppppppiVar18 + 1) * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar24 + 0x1c1ac) + -0x2ac0 +\n                               (uint)*(byte *)(pppppppiVar18 + 1) * 4)" ( (binary_expression "*(int *)(puVar24 + 0x1c1ac) + -0x2ac0 +\n                               (uint)*(byte *)(pppppppiVar18 + 1) * 4" (binary_expression "*(int *)(puVar24 + 0x1c1ac) + -0x2ac0" (pointer_expression "*(int *)(puVar24 + 0x1c1ac)" * (cast_expression "(int *)(puVar24 + 0x1c1ac)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar24 + 0x1c1ac)" ( (binary_expression "puVar24 + 0x1c1ac" identifier + number_literal) )))) + number_literal) + (binary_expression "(uint)*(byte *)(pppppppiVar18 + 1) * 4" (binary_expression "(uint)*(byte *)(pppppppiVar18 + 1)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(pppppppiVar18 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pppppppiVar18 + 1)" ( (binary_expression "pppppppiVar18 + 1" identifier + number_literal) )))) * number_literal)) ))))) )))) )) (argument_list "()" ( )))) ;) (return_statement "return iVar13;" return identifier ;) })) (expression_statement "iVar13 = *(int *)(puVar26 + -0x2c);" (assignment_expression "iVar13 = *(int *)(puVar26 + -0x2c)" identifier = (pointer_expression "*(int *)(puVar26 + -0x2c)" * (cast_expression "(int *)(puVar26 + -0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar26 + -0x2c)" ( (binary_expression "puVar26 + -0x2c" identifier + number_literal) ))))) ;) (if_statement "if (iVar13 == **(int **)(puVar24 + 0x1c3ac)) {\n    return 0;\n  }" if (parenthesized_expression "(iVar13 == **(int **)(puVar24 + 0x1c3ac))" ( (binary_expression "iVar13 == **(int **)(puVar24 + 0x1c3ac)" identifier == (pointer_expression "**(int **)(puVar24 + 0x1c3ac)" * (pointer_expression "*(int **)(puVar24 + 0x1c3ac)" * (cast_expression "(int **)(puVar24 + 0x1c3ac)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar24 + 0x1c3ac)" ( (binary_expression "puVar24 + 0x1c3ac" identifier + number_literal) )))))) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "pcVar5 = *(code **)(puVar24 + 0x1c390);" (assignment_expression "pcVar5 = *(code **)(puVar24 + 0x1c390)" identifier = (pointer_expression "*(code **)(puVar24 + 0x1c390)" * (cast_expression "(code **)(puVar24 + 0x1c390)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar24 + 0x1c390)" ( (binary_expression "puVar24 + 0x1c390" identifier + number_literal) ))))) ;) (expression_statement "pcVar6 = FUN_00023824;" (assignment_expression "pcVar6 = FUN_00023824" identifier = identifier) ;) (expression_statement "pppppppiVar15 = pppppppiVar17;" (assignment_expression "pppppppiVar15 = pppppppiVar17" identifier = identifier) ;) (expression_statement "(*pcVar5)();" (call_expression "(*pcVar5)()" (parenthesized_expression "(*pcVar5)" ( (pointer_expression "*pcVar5" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "*(code **)(puVar26 + -0xe4) = pcVar6;" (assignment_expression "*(code **)(puVar26 + -0xe4) = pcVar6" (pointer_expression "*(code **)(puVar26 + -0xe4)" * (cast_expression "(code **)(puVar26 + -0xe4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar26 + -0xe4)" ( (binary_expression "puVar26 + -0xe4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar26 + -0xe8) = uVar27;" (assignment_expression "*(undefined4 *)(puVar26 + -0xe8) = uVar27" (pointer_expression "*(undefined4 *)(puVar26 + -0xe8)" * (cast_expression "(undefined4 *)(puVar26 + -0xe8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar26 + -0xe8)" ( (binary_expression "puVar26 + -0xe8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int **)(puVar26 + -0xec) = piVar23;" (assignment_expression "*(int **)(puVar26 + -0xec) = piVar23" (pointer_expression "*(int **)(puVar26 + -0xec)" * (cast_expression "(int **)(puVar26 + -0xec)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar26 + -0xec)" ( (binary_expression "puVar26 + -0xec" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(puVar26 + -0xf0) = 0;" (assignment_expression "*(undefined4 *)(puVar26 + -0xf0) = 0" (pointer_expression "*(undefined4 *)(puVar26 + -0xf0)" * (cast_expression "(undefined4 *)(puVar26 + -0xf0)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar26 + -0xf0)" ( (binary_expression "puVar26 + -0xf0" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(int ***)(puVar26 + -0xf4) = unaff_s5;" (assignment_expression "*(int ***)(puVar26 + -0xf4) = unaff_s5" (pointer_expression "*(int ***)(puVar26 + -0xf4)" * (cast_expression "(int ***)(puVar26 + -0xf4)" ( (type_descriptor "int ***" primitive_type (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "(puVar26 + -0xf4)" ( (binary_expression "puVar26 + -0xf4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int ********)(puVar26 + -0xf8) = param_4;" (assignment_expression "*(int ********)(puVar26 + -0xf8) = param_4" (pointer_expression "*(int ********)(puVar26 + -0xf8)" * (cast_expression "(int ********)(puVar26 + -0xf8)" ( (type_descriptor "int ********" primitive_type (abstract_pointer_declarator "********" * (abstract_pointer_declarator "*******" * (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))))))))) ) (parenthesized_expression "(puVar26 + -0xf8)" ( (binary_expression "puVar26 + -0xf8" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *******)(puVar26 + -0xfc) = unaff_s3;" (assignment_expression "*(int *******)(puVar26 + -0xfc) = unaff_s3" (pointer_expression "*(int *******)(puVar26 + -0xfc)" * (cast_expression "(int *******)(puVar26 + -0xfc)" ( (type_descriptor "int *******" primitive_type (abstract_pointer_declarator "*******" * (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))))))) ) (parenthesized_expression "(puVar26 + -0xfc)" ( (binary_expression "puVar26 + -0xfc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int ********)(puVar26 + -0x100) = unaff_s2;" (assignment_expression "*(int ********)(puVar26 + -0x100) = unaff_s2" (pointer_expression "*(int ********)(puVar26 + -0x100)" * (cast_expression "(int ********)(puVar26 + -0x100)" ( (type_descriptor "int ********" primitive_type (abstract_pointer_declarator "********" * (abstract_pointer_declarator "*******" * (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))))))))) ) (parenthesized_expression "(puVar26 + -0x100)" ( (binary_expression "puVar26 + -0x100" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int ********)(puVar26 + -0x104) = param_2;" (assignment_expression "*(int ********)(puVar26 + -0x104) = param_2" (pointer_expression "*(int ********)(puVar26 + -0x104)" * (cast_expression "(int ********)(puVar26 + -0x104)" ( (type_descriptor "int ********" primitive_type (abstract_pointer_declarator "********" * (abstract_pointer_declarator "*******" * (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))))))))) ) (parenthesized_expression "(puVar26 + -0x104)" ( (binary_expression "puVar26 + -0x104" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int ********)(puVar26 + -0x108) = pppppppiVar17;" (assignment_expression "*(int ********)(puVar26 + -0x108) = pppppppiVar17" (pointer_expression "*(int ********)(puVar26 + -0x108)" * (cast_expression "(int ********)(puVar26 + -0x108)" ( (type_descriptor "int ********" primitive_type (abstract_pointer_declarator "********" * (abstract_pointer_declarator "*******" * (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))))))))) ) (parenthesized_expression "(puVar26 + -0x108)" ( (binary_expression "puVar26 + -0x108" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(code **)(puVar26 + -0x118) = pcVar5 + 0x228ec;" (assignment_expression "*(code **)(puVar26 + -0x118) = pcVar5 + 0x228ec" (pointer_expression "*(code **)(puVar26 + -0x118)" * (cast_expression "(code **)(puVar26 + -0x118)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar26 + -0x118)" ( (binary_expression "puVar26 + -0x118" identifier + number_literal) )))) = (binary_expression "pcVar5 + 0x228ec" identifier + number_literal)) ;) (expression_statement "*(int *)(puVar26 + -0xe0) = iVar13;" (assignment_expression "*(int *)(puVar26 + -0xe0) = iVar13" (pointer_expression "*(int *)(puVar26 + -0xe0)" * (cast_expression "(int *)(puVar26 + -0xe0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar26 + -0xe0)" ( (binary_expression "puVar26 + -0xe0" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int ********)(puVar26 + -0xd4) = pppppppiVar19;" (assignment_expression "*(int ********)(puVar26 + -0xd4) = pppppppiVar19" (pointer_expression "*(int ********)(puVar26 + -0xd4)" * (cast_expression "(int ********)(puVar26 + -0xd4)" ( (type_descriptor "int ********" primitive_type (abstract_pointer_declarator "********" * (abstract_pointer_declarator "*******" * (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))))))))) ) (parenthesized_expression "(puVar26 + -0xd4)" ( (binary_expression "puVar26 + -0xd4" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar21 = *(int *)(puVar26 + -0xd0);" (assignment_expression "iVar21 = *(int *)(puVar26 + -0xd0)" identifier = (pointer_expression "*(int *)(puVar26 + -0xd0)" * (cast_expression "(int *)(puVar26 + -0xd0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar26 + -0xd0)" ( (binary_expression "puVar26 + -0xd0" identifier + number_literal) ))))) ;) (expression_statement "piVar23 = *(int **)(puVar26 + -0xcc);" (assignment_expression "piVar23 = *(int **)(puVar26 + -0xcc)" identifier = (pointer_expression "*(int **)(puVar26 + -0xcc)" * (cast_expression "(int **)(puVar26 + -0xcc)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar26 + -0xcc)" ( (binary_expression "puVar26 + -0xcc" identifier + number_literal) ))))) ;) (expression_statement "*(int *******)(puVar26 + -0x110) = *pppppppiVar15;" (assignment_expression "*(int *******)(puVar26 + -0x110) = *pppppppiVar15" (pointer_expression "*(int *******)(puVar26 + -0x110)" * (cast_expression "(int *******)(puVar26 + -0x110)" ( (type_descriptor "int *******" primitive_type (abstract_pointer_declarator "*******" * (abstract_pointer_declarator "******" * (abstract_pointer_declarator "*****" * (abstract_pointer_declarator "****" * (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))))))) ) (parenthesized_expression "(puVar26 + -0x110)" ( (binary_expression "puVar26 + -0x110" identifier + number_literal) )))) = (pointer_expression "*pppppppiVar15" * identifier)) ;) (expression_statement "*(int **)(puVar26 + -0x11c) = piVar23;" (assignment_expression "*(int **)(puVar26 + -0x11c) = piVar23" (pointer_expression "*(int **)(puVar26 + -0x11c)" * (cast_expression "(int **)(puVar26 + -0x11c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar26 + -0x11c)" ( (binary_expression "puVar26 + -0x11c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar26 + -0x120) = iVar21;" (assignment_expression "*(int *)(puVar26 + -0x120) = iVar21" (pointer_expression "*(int *)(puVar26 + -0x120)" * (cast_expression "(int *)(puVar26 + -0x120)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar26 + -0x120)" ( (binary_expression "puVar26 + -0x120" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar13 = FUN_00021f9c();" (assignment_expression "iVar13 = FUN_00021f9c()" identifier = (call_expression "FUN_00021f9c()" identifier (argument_list "()" ( )))) ;) (if_statement "if ((*piVar23 == 0) || (iVar13 != 0)) {\n    iVar22 = *(int *)(*(int *)(puVar26 + -0x118) + -0x7ed8);\n    *(int *)(puVar26 + -0x10c) = *(int *)(*(int *)(puVar26 + -0x118) + -0x7ed8) + -0x5cb8;\nLAB_0002390c:\n    do {\n      do {\n        iVar20 = iVar13;\n        if ((*(byte *)(pppppppiVar18 + 1) & 0xf7) == 2) {\n          return iVar20;\n        }\n        if ((iVar21 != 0) && (*(byte *)(pppppppiVar18 + 1) == 9)) {\n          return iVar20;\n        }\n        *(int **)(puVar26 + -0x11c) = piVar23;\n        *(int *)(puVar26 + -0x120) = iVar21;\n        iVar14 = (*(code *)(iVar22 + 0x1f9c))\n                           (*(undefined4 *)(puVar26 + -0xe0),pppppppiVar15,pppppppiVar18,\n                            *(undefined4 *)(puVar26 + -0xd4));\n        if (*piVar23 == 0) {\n          iVar13 = iVar14;\n          iVar2 = iVar20;\n          iVar3 = iVar14;\n          if (iVar20 == 0) goto LAB_0002390c;\n        }\n        else {\n          iVar2 = iVar14;\n          iVar3 = iVar20;\n          if (iVar14 == 0) {\n            if (iVar20 == 0) {\n              return 0;\n            }\n            FUN_0001920c(iVar20,*(int *)(*(int *)(puVar26 + -0x118) + -0x7ed8) + -0x2cc0,0);\n            return 0;\n          }\n        }\n        iVar13 = iVar2;\n      } while (iVar3 == 0);\n      iVar13 = (**(code **)(puVar26 + -0x10c))(*(undefined4 *)(puVar26 + -0x110),iVar20,iVar14,0x10)\n      ;\n    } while (iVar13 != 0);\n    iVar13 = *(int *)(*(int *)(puVar26 + -0x118) + -0x7ed8);\n    FUN_0001920c(iVar14,iVar13 + -0x2cc0,0);\n    FUN_0001920c(iVar20,iVar13 + -0x2cc0,0);\n    *piVar23 = 0xc;\n    iVar13 = 0;\n  }" if (parenthesized_expression "((*piVar23 == 0) || (iVar13 != 0))" ( (binary_expression "(*piVar23 == 0) || (iVar13 != 0)" (parenthesized_expression "(*piVar23 == 0)" ( (binary_expression "*piVar23 == 0" (pointer_expression "*piVar23" * identifier) == number_literal) )) || (parenthesized_expression "(iVar13 != 0)" ( (binary_expression "iVar13 != 0" identifier != number_literal) ))) )) (compound_statement "{\n    iVar22 = *(int *)(*(int *)(puVar26 + -0x118) + -0x7ed8);\n    *(int *)(puVar26 + -0x10c) = *(int *)(*(int *)(puVar26 + -0x118) + -0x7ed8) + -0x5cb8;\nLAB_0002390c:\n    do {\n      do {\n        iVar20 = iVar13;\n        if ((*(byte *)(pppppppiVar18 + 1) & 0xf7) == 2) {\n          return iVar20;\n        }\n        if ((iVar21 != 0) && (*(byte *)(pppppppiVar18 + 1) == 9)) {\n          return iVar20;\n        }\n        *(int **)(puVar26 + -0x11c) = piVar23;\n        *(int *)(puVar26 + -0x120) = iVar21;\n        iVar14 = (*(code *)(iVar22 + 0x1f9c))\n                           (*(undefined4 *)(puVar26 + -0xe0),pppppppiVar15,pppppppiVar18,\n                            *(undefined4 *)(puVar26 + -0xd4));\n        if (*piVar23 == 0) {\n          iVar13 = iVar14;\n          iVar2 = iVar20;\n          iVar3 = iVar14;\n          if (iVar20 == 0) goto LAB_0002390c;\n        }\n        else {\n          iVar2 = iVar14;\n          iVar3 = iVar20;\n          if (iVar14 == 0) {\n            if (iVar20 == 0) {\n              return 0;\n            }\n            FUN_0001920c(iVar20,*(int *)(*(int *)(puVar26 + -0x118) + -0x7ed8) + -0x2cc0,0);\n            return 0;\n          }\n        }\n        iVar13 = iVar2;\n      } while (iVar3 == 0);\n      iVar13 = (**(code **)(puVar26 + -0x10c))(*(undefined4 *)(puVar26 + -0x110),iVar20,iVar14,0x10)\n      ;\n    } while (iVar13 != 0);\n    iVar13 = *(int *)(*(int *)(puVar26 + -0x118) + -0x7ed8);\n    FUN_0001920c(iVar14,iVar13 + -0x2cc0,0);\n    FUN_0001920c(iVar20,iVar13 + -0x2cc0,0);\n    *piVar23 = 0xc;\n    iVar13 = 0;\n  }" { (expression_statement "iVar22 = *(int *)(*(int *)(puVar26 + -0x118) + -0x7ed8);" (assignment_expression "iVar22 = *(int *)(*(int *)(puVar26 + -0x118) + -0x7ed8)" identifier = (pointer_expression "*(int *)(*(int *)(puVar26 + -0x118) + -0x7ed8)" * (cast_expression "(int *)(*(int *)(puVar26 + -0x118) + -0x7ed8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar26 + -0x118) + -0x7ed8)" ( (binary_expression "*(int *)(puVar26 + -0x118) + -0x7ed8" (pointer_expression "*(int *)(puVar26 + -0x118)" * (cast_expression "(int *)(puVar26 + -0x118)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar26 + -0x118)" ( (binary_expression "puVar26 + -0x118" identifier + number_literal) )))) + number_literal) ))))) ;) (expression_statement "*(int *)(puVar26 + -0x10c) = *(int *)(*(int *)(puVar26 + -0x118) + -0x7ed8) + -0x5cb8;" (assignment_expression "*(int *)(puVar26 + -0x10c) = *(int *)(*(int *)(puVar26 + -0x118) + -0x7ed8) + -0x5cb8" (pointer_expression "*(int *)(puVar26 + -0x10c)" * (cast_expression "(int *)(puVar26 + -0x10c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar26 + -0x10c)" ( (binary_expression "puVar26 + -0x10c" identifier + number_literal) )))) = (binary_expression "*(int *)(*(int *)(puVar26 + -0x118) + -0x7ed8) + -0x5cb8" (pointer_expression "*(int *)(*(int *)(puVar26 + -0x118) + -0x7ed8)" * (cast_expression "(int *)(*(int *)(puVar26 + -0x118) + -0x7ed8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar26 + -0x118) + -0x7ed8)" ( (binary_expression "*(int *)(puVar26 + -0x118) + -0x7ed8" (pointer_expression "*(int *)(puVar26 + -0x118)" * (cast_expression "(int *)(puVar26 + -0x118)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar26 + -0x118)" ( (binary_expression "puVar26 + -0x118" identifier + number_literal) )))) + number_literal) )))) + number_literal)) ;) (labeled_statement "LAB_0002390c:\n    do {\n      do {\n        iVar20 = iVar13;\n        if ((*(byte *)(pppppppiVar18 + 1) & 0xf7) == 2) {\n          return iVar20;\n        }\n        if ((iVar21 != 0) && (*(byte *)(pppppppiVar18 + 1) == 9)) {\n          return iVar20;\n        }\n        *(int **)(puVar26 + -0x11c) = piVar23;\n        *(int *)(puVar26 + -0x120) = iVar21;\n        iVar14 = (*(code *)(iVar22 + 0x1f9c))\n                           (*(undefined4 *)(puVar26 + -0xe0),pppppppiVar15,pppppppiVar18,\n                            *(undefined4 *)(puVar26 + -0xd4));\n        if (*piVar23 == 0) {\n          iVar13 = iVar14;\n          iVar2 = iVar20;\n          iVar3 = iVar14;\n          if (iVar20 == 0) goto LAB_0002390c;\n        }\n        else {\n          iVar2 = iVar14;\n          iVar3 = iVar20;\n          if (iVar14 == 0) {\n            if (iVar20 == 0) {\n              return 0;\n            }\n            FUN_0001920c(iVar20,*(int *)(*(int *)(puVar26 + -0x118) + -0x7ed8) + -0x2cc0,0);\n            return 0;\n          }\n        }\n        iVar13 = iVar2;\n      } while (iVar3 == 0);\n      iVar13 = (**(code **)(puVar26 + -0x10c))(*(undefined4 *)(puVar26 + -0x110),iVar20,iVar14,0x10)\n      ;\n    } while (iVar13 != 0);" statement_identifier : (do_statement "do {\n      do {\n        iVar20 = iVar13;\n        if ((*(byte *)(pppppppiVar18 + 1) & 0xf7) == 2) {\n          return iVar20;\n        }\n        if ((iVar21 != 0) && (*(byte *)(pppppppiVar18 + 1) == 9)) {\n          return iVar20;\n        }\n        *(int **)(puVar26 + -0x11c) = piVar23;\n        *(int *)(puVar26 + -0x120) = iVar21;\n        iVar14 = (*(code *)(iVar22 + 0x1f9c))\n                           (*(undefined4 *)(puVar26 + -0xe0),pppppppiVar15,pppppppiVar18,\n                            *(undefined4 *)(puVar26 + -0xd4));\n        if (*piVar23 == 0) {\n          iVar13 = iVar14;\n          iVar2 = iVar20;\n          iVar3 = iVar14;\n          if (iVar20 == 0) goto LAB_0002390c;\n        }\n        else {\n          iVar2 = iVar14;\n          iVar3 = iVar20;\n          if (iVar14 == 0) {\n            if (iVar20 == 0) {\n              return 0;\n            }\n            FUN_0001920c(iVar20,*(int *)(*(int *)(puVar26 + -0x118) + -0x7ed8) + -0x2cc0,0);\n            return 0;\n          }\n        }\n        iVar13 = iVar2;\n      } while (iVar3 == 0);\n      iVar13 = (**(code **)(puVar26 + -0x10c))(*(undefined4 *)(puVar26 + -0x110),iVar20,iVar14,0x10)\n      ;\n    } while (iVar13 != 0);" do (compound_statement "{\n      do {\n        iVar20 = iVar13;\n        if ((*(byte *)(pppppppiVar18 + 1) & 0xf7) == 2) {\n          return iVar20;\n        }\n        if ((iVar21 != 0) && (*(byte *)(pppppppiVar18 + 1) == 9)) {\n          return iVar20;\n        }\n        *(int **)(puVar26 + -0x11c) = piVar23;\n        *(int *)(puVar26 + -0x120) = iVar21;\n        iVar14 = (*(code *)(iVar22 + 0x1f9c))\n                           (*(undefined4 *)(puVar26 + -0xe0),pppppppiVar15,pppppppiVar18,\n                            *(undefined4 *)(puVar26 + -0xd4));\n        if (*piVar23 == 0) {\n          iVar13 = iVar14;\n          iVar2 = iVar20;\n          iVar3 = iVar14;\n          if (iVar20 == 0) goto LAB_0002390c;\n        }\n        else {\n          iVar2 = iVar14;\n          iVar3 = iVar20;\n          if (iVar14 == 0) {\n            if (iVar20 == 0) {\n              return 0;\n            }\n            FUN_0001920c(iVar20,*(int *)(*(int *)(puVar26 + -0x118) + -0x7ed8) + -0x2cc0,0);\n            return 0;\n          }\n        }\n        iVar13 = iVar2;\n      } while (iVar3 == 0);\n      iVar13 = (**(code **)(puVar26 + -0x10c))(*(undefined4 *)(puVar26 + -0x110),iVar20,iVar14,0x10)\n      ;\n    }" { (do_statement "do {\n        iVar20 = iVar13;\n        if ((*(byte *)(pppppppiVar18 + 1) & 0xf7) == 2) {\n          return iVar20;\n        }\n        if ((iVar21 != 0) && (*(byte *)(pppppppiVar18 + 1) == 9)) {\n          return iVar20;\n        }\n        *(int **)(puVar26 + -0x11c) = piVar23;\n        *(int *)(puVar26 + -0x120) = iVar21;\n        iVar14 = (*(code *)(iVar22 + 0x1f9c))\n                           (*(undefined4 *)(puVar26 + -0xe0),pppppppiVar15,pppppppiVar18,\n                            *(undefined4 *)(puVar26 + -0xd4));\n        if (*piVar23 == 0) {\n          iVar13 = iVar14;\n          iVar2 = iVar20;\n          iVar3 = iVar14;\n          if (iVar20 == 0) goto LAB_0002390c;\n        }\n        else {\n          iVar2 = iVar14;\n          iVar3 = iVar20;\n          if (iVar14 == 0) {\n            if (iVar20 == 0) {\n              return 0;\n            }\n            FUN_0001920c(iVar20,*(int *)(*(int *)(puVar26 + -0x118) + -0x7ed8) + -0x2cc0,0);\n            return 0;\n          }\n        }\n        iVar13 = iVar2;\n      } while (iVar3 == 0);" do (compound_statement "{\n        iVar20 = iVar13;\n        if ((*(byte *)(pppppppiVar18 + 1) & 0xf7) == 2) {\n          return iVar20;\n        }\n        if ((iVar21 != 0) && (*(byte *)(pppppppiVar18 + 1) == 9)) {\n          return iVar20;\n        }\n        *(int **)(puVar26 + -0x11c) = piVar23;\n        *(int *)(puVar26 + -0x120) = iVar21;\n        iVar14 = (*(code *)(iVar22 + 0x1f9c))\n                           (*(undefined4 *)(puVar26 + -0xe0),pppppppiVar15,pppppppiVar18,\n                            *(undefined4 *)(puVar26 + -0xd4));\n        if (*piVar23 == 0) {\n          iVar13 = iVar14;\n          iVar2 = iVar20;\n          iVar3 = iVar14;\n          if (iVar20 == 0) goto LAB_0002390c;\n        }\n        else {\n          iVar2 = iVar14;\n          iVar3 = iVar20;\n          if (iVar14 == 0) {\n            if (iVar20 == 0) {\n              return 0;\n            }\n            FUN_0001920c(iVar20,*(int *)(*(int *)(puVar26 + -0x118) + -0x7ed8) + -0x2cc0,0);\n            return 0;\n          }\n        }\n        iVar13 = iVar2;\n      }" { (expression_statement "iVar20 = iVar13;" (assignment_expression "iVar20 = iVar13" identifier = identifier) ;) (if_statement "if ((*(byte *)(pppppppiVar18 + 1) & 0xf7) == 2) {\n          return iVar20;\n        }" if (parenthesized_expression "((*(byte *)(pppppppiVar18 + 1) & 0xf7) == 2)" ( (binary_expression "(*(byte *)(pppppppiVar18 + 1) & 0xf7) == 2" (parenthesized_expression "(*(byte *)(pppppppiVar18 + 1) & 0xf7)" ( (binary_expression "*(byte *)(pppppppiVar18 + 1) & 0xf7" (pointer_expression "*(byte *)(pppppppiVar18 + 1)" * (cast_expression "(byte *)(pppppppiVar18 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pppppppiVar18 + 1)" ( (binary_expression "pppppppiVar18 + 1" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n          return iVar20;\n        }" { (return_statement "return iVar20;" return identifier ;) })) (if_statement "if ((iVar21 != 0) && (*(byte *)(pppppppiVar18 + 1) == 9)) {\n          return iVar20;\n        }" if (parenthesized_expression "((iVar21 != 0) && (*(byte *)(pppppppiVar18 + 1) == 9))" ( (binary_expression "(iVar21 != 0) && (*(byte *)(pppppppiVar18 + 1) == 9)" (parenthesized_expression "(iVar21 != 0)" ( (binary_expression "iVar21 != 0" identifier != number_literal) )) && (parenthesized_expression "(*(byte *)(pppppppiVar18 + 1) == 9)" ( (binary_expression "*(byte *)(pppppppiVar18 + 1) == 9" (pointer_expression "*(byte *)(pppppppiVar18 + 1)" * (cast_expression "(byte *)(pppppppiVar18 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pppppppiVar18 + 1)" ( (binary_expression "pppppppiVar18 + 1" identifier + number_literal) )))) == number_literal) ))) )) (compound_statement "{\n          return iVar20;\n        }" { (return_statement "return iVar20;" return identifier ;) })) (expression_statement "*(int **)(puVar26 + -0x11c) = piVar23;" (assignment_expression "*(int **)(puVar26 + -0x11c) = piVar23" (pointer_expression "*(int **)(puVar26 + -0x11c)" * (cast_expression "(int **)(puVar26 + -0x11c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar26 + -0x11c)" ( (binary_expression "puVar26 + -0x11c" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(puVar26 + -0x120) = iVar21;" (assignment_expression "*(int *)(puVar26 + -0x120) = iVar21" (pointer_expression "*(int *)(puVar26 + -0x120)" * (cast_expression "(int *)(puVar26 + -0x120)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar26 + -0x120)" ( (binary_expression "puVar26 + -0x120" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar14 = (*(code *)(iVar22 + 0x1f9c))\n                           (*(undefined4 *)(puVar26 + -0xe0),pppppppiVar15,pppppppiVar18,\n                            *(undefined4 *)(puVar26 + -0xd4));" (assignment_expression "iVar14 = (*(code *)(iVar22 + 0x1f9c))\n                           (*(undefined4 *)(puVar26 + -0xe0),pppppppiVar15,pppppppiVar18,\n                            *(undefined4 *)(puVar26 + -0xd4))" identifier = (call_expression "(*(code *)(iVar22 + 0x1f9c))\n                           (*(undefined4 *)(puVar26 + -0xe0),pppppppiVar15,pppppppiVar18,\n                            *(undefined4 *)(puVar26 + -0xd4))" (parenthesized_expression "(*(code *)(iVar22 + 0x1f9c))" ( (pointer_expression "*(code *)(iVar22 + 0x1f9c)" * (cast_expression "(code *)(iVar22 + 0x1f9c)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar22 + 0x1f9c)" ( (binary_expression "iVar22 + 0x1f9c" identifier + number_literal) )))) )) (argument_list "(*(undefined4 *)(puVar26 + -0xe0),pppppppiVar15,pppppppiVar18,\n                            *(undefined4 *)(puVar26 + -0xd4))" ( (pointer_expression "*(undefined4 *)(puVar26 + -0xe0)" * (cast_expression "(undefined4 *)(puVar26 + -0xe0)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar26 + -0xe0)" ( (binary_expression "puVar26 + -0xe0" identifier + number_literal) )))) , identifier , identifier , (pointer_expression "*(undefined4 *)(puVar26 + -0xd4)" * (cast_expression "(undefined4 *)(puVar26 + -0xd4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar26 + -0xd4)" ( (binary_expression "puVar26 + -0xd4" identifier + number_literal) )))) )))) ;) (if_statement "if (*piVar23 == 0) {\n          iVar13 = iVar14;\n          iVar2 = iVar20;\n          iVar3 = iVar14;\n          if (iVar20 == 0) goto LAB_0002390c;\n        }\n        else {\n          iVar2 = iVar14;\n          iVar3 = iVar20;\n          if (iVar14 == 0) {\n            if (iVar20 == 0) {\n              return 0;\n            }\n            FUN_0001920c(iVar20,*(int *)(*(int *)(puVar26 + -0x118) + -0x7ed8) + -0x2cc0,0);\n            return 0;\n          }\n        }" if (parenthesized_expression "(*piVar23 == 0)" ( (binary_expression "*piVar23 == 0" (pointer_expression "*piVar23" * identifier) == number_literal) )) (compound_statement "{\n          iVar13 = iVar14;\n          iVar2 = iVar20;\n          iVar3 = iVar14;\n          if (iVar20 == 0) goto LAB_0002390c;\n        }" { (expression_statement "iVar13 = iVar14;" (assignment_expression "iVar13 = iVar14" identifier = identifier) ;) (expression_statement "iVar2 = iVar20;" (assignment_expression "iVar2 = iVar20" identifier = identifier) ;) (expression_statement "iVar3 = iVar14;" (assignment_expression "iVar3 = iVar14" identifier = identifier) ;) (if_statement "if (iVar20 == 0) goto LAB_0002390c;" if (parenthesized_expression "(iVar20 == 0)" ( (binary_expression "iVar20 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0002390c;" goto statement_identifier ;)) }) (else_clause "else {\n          iVar2 = iVar14;\n          iVar3 = iVar20;\n          if (iVar14 == 0) {\n            if (iVar20 == 0) {\n              return 0;\n            }\n            FUN_0001920c(iVar20,*(int *)(*(int *)(puVar26 + -0x118) + -0x7ed8) + -0x2cc0,0);\n            return 0;\n          }\n        }" else (compound_statement "{\n          iVar2 = iVar14;\n          iVar3 = iVar20;\n          if (iVar14 == 0) {\n            if (iVar20 == 0) {\n              return 0;\n            }\n            FUN_0001920c(iVar20,*(int *)(*(int *)(puVar26 + -0x118) + -0x7ed8) + -0x2cc0,0);\n            return 0;\n          }\n        }" { (expression_statement "iVar2 = iVar14;" (assignment_expression "iVar2 = iVar14" identifier = identifier) ;) (expression_statement "iVar3 = iVar20;" (assignment_expression "iVar3 = iVar20" identifier = identifier) ;) (if_statement "if (iVar14 == 0) {\n            if (iVar20 == 0) {\n              return 0;\n            }\n            FUN_0001920c(iVar20,*(int *)(*(int *)(puVar26 + -0x118) + -0x7ed8) + -0x2cc0,0);\n            return 0;\n          }" if (parenthesized_expression "(iVar14 == 0)" ( (binary_expression "iVar14 == 0" identifier == number_literal) )) (compound_statement "{\n            if (iVar20 == 0) {\n              return 0;\n            }\n            FUN_0001920c(iVar20,*(int *)(*(int *)(puVar26 + -0x118) + -0x7ed8) + -0x2cc0,0);\n            return 0;\n          }" { (if_statement "if (iVar20 == 0) {\n              return 0;\n            }" if (parenthesized_expression "(iVar20 == 0)" ( (binary_expression "iVar20 == 0" identifier == number_literal) )) (compound_statement "{\n              return 0;\n            }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "FUN_0001920c(iVar20,*(int *)(*(int *)(puVar26 + -0x118) + -0x7ed8) + -0x2cc0,0);" (call_expression "FUN_0001920c(iVar20,*(int *)(*(int *)(puVar26 + -0x118) + -0x7ed8) + -0x2cc0,0)" identifier (argument_list "(iVar20,*(int *)(*(int *)(puVar26 + -0x118) + -0x7ed8) + -0x2cc0,0)" ( identifier , (binary_expression "*(int *)(*(int *)(puVar26 + -0x118) + -0x7ed8) + -0x2cc0" (pointer_expression "*(int *)(*(int *)(puVar26 + -0x118) + -0x7ed8)" * (cast_expression "(int *)(*(int *)(puVar26 + -0x118) + -0x7ed8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar26 + -0x118) + -0x7ed8)" ( (binary_expression "*(int *)(puVar26 + -0x118) + -0x7ed8" (pointer_expression "*(int *)(puVar26 + -0x118)" * (cast_expression "(int *)(puVar26 + -0x118)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar26 + -0x118)" ( (binary_expression "puVar26 + -0x118" identifier + number_literal) )))) + number_literal) )))) + number_literal) , number_literal ))) ;) (return_statement "return 0;" return number_literal ;) })) }))) (expression_statement "iVar13 = iVar2;" (assignment_expression "iVar13 = iVar2" identifier = identifier) ;) }) while (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) ;) (expression_statement "iVar13 = (**(code **)(puVar26 + -0x10c))(*(undefined4 *)(puVar26 + -0x110),iVar20,iVar14,0x10)\n      ;" (assignment_expression "iVar13 = (**(code **)(puVar26 + -0x10c))(*(undefined4 *)(puVar26 + -0x110),iVar20,iVar14,0x10)" identifier = (call_expression "(**(code **)(puVar26 + -0x10c))(*(undefined4 *)(puVar26 + -0x110),iVar20,iVar14,0x10)" (parenthesized_expression "(**(code **)(puVar26 + -0x10c))" ( (pointer_expression "**(code **)(puVar26 + -0x10c)" * (pointer_expression "*(code **)(puVar26 + -0x10c)" * (cast_expression "(code **)(puVar26 + -0x10c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar26 + -0x10c)" ( (binary_expression "puVar26 + -0x10c" identifier + number_literal) ))))) )) (argument_list "(*(undefined4 *)(puVar26 + -0x110),iVar20,iVar14,0x10)" ( (pointer_expression "*(undefined4 *)(puVar26 + -0x110)" * (cast_expression "(undefined4 *)(puVar26 + -0x110)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar26 + -0x110)" ( (binary_expression "puVar26 + -0x110" identifier + number_literal) )))) , identifier , identifier , number_literal )))) ;) }) while (parenthesized_expression "(iVar13 != 0)" ( (binary_expression "iVar13 != 0" identifier != number_literal) )) ;)) (expression_statement "iVar13 = *(int *)(*(int *)(puVar26 + -0x118) + -0x7ed8);" (assignment_expression "iVar13 = *(int *)(*(int *)(puVar26 + -0x118) + -0x7ed8)" identifier = (pointer_expression "*(int *)(*(int *)(puVar26 + -0x118) + -0x7ed8)" * (cast_expression "(int *)(*(int *)(puVar26 + -0x118) + -0x7ed8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar26 + -0x118) + -0x7ed8)" ( (binary_expression "*(int *)(puVar26 + -0x118) + -0x7ed8" (pointer_expression "*(int *)(puVar26 + -0x118)" * (cast_expression "(int *)(puVar26 + -0x118)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar26 + -0x118)" ( (binary_expression "puVar26 + -0x118" identifier + number_literal) )))) + number_literal) ))))) ;) (expression_statement "FUN_0001920c(iVar14,iVar13 + -0x2cc0,0);" (call_expression "FUN_0001920c(iVar14,iVar13 + -0x2cc0,0)" identifier (argument_list "(iVar14,iVar13 + -0x2cc0,0)" ( identifier , (binary_expression "iVar13 + -0x2cc0" identifier + number_literal) , number_literal ))) ;) (expression_statement "FUN_0001920c(iVar20,iVar13 + -0x2cc0,0);" (call_expression "FUN_0001920c(iVar20,iVar13 + -0x2cc0,0)" identifier (argument_list "(iVar20,iVar13 + -0x2cc0,0)" ( identifier , (binary_expression "iVar13 + -0x2cc0" identifier + number_literal) , number_literal ))) ;) (expression_statement "*piVar23 = 0xc;" (assignment_expression "*piVar23 = 0xc" (pointer_expression "*piVar23" * identifier) = number_literal) ;) (expression_statement "iVar13 = 0;" (assignment_expression "iVar13 = 0" identifier = number_literal) ;) })) (return_statement "return iVar13;" return identifier ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * (pointer_declarator * (pointer_declarator * (pointer_declarator * (pointer_declarator * (pointer_declarator * (pointer_declarator * IDENT)))))))) , (parameter_declaration TYPE (pointer_declarator * (pointer_declarator * (pointer_declarator * (pointer_declarator * (pointer_declarator * (pointer_declarator * (pointer_declarator * IDENT)))))))) , (parameter_declaration TYPE (pointer_declarator * (pointer_declarator * (pointer_declarator * (pointer_declarator * (pointer_declarator * (pointer_declarator * (pointer_declarator * IDENT)))))))) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * (pointer_declarator * (pointer_declarator * (pointer_declarator * (pointer_declarator * (pointer_declarator * (pointer_declarator * IDENT))))))) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * (pointer_declarator * (pointer_declarator * (pointer_declarator * (pointer_declarator * IDENT))))) ;) (declaration TYPE (pointer_declarator * (pointer_declarator * (pointer_declarator * (pointer_declarator * (pointer_declarator * (pointer_declarator * (pointer_declarator * IDENT))))))) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * (pointer_declarator * (pointer_declarator * (pointer_declarator * (pointer_declarator * (pointer_declarator * (pointer_declarator * IDENT))))))) ;) (declaration TYPE (pointer_declarator * (pointer_declarator * (pointer_declarator * (pointer_declarator * (pointer_declarator * (pointer_declarator * IDENT)))))) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * (pointer_declarator * (pointer_declarator * (pointer_declarator * (pointer_declarator * (pointer_declarator * (pointer_declarator * IDENT))))))) ;) (declaration TYPE (pointer_declarator * (pointer_declarator * (pointer_declarator * (pointer_declarator * (pointer_declarator * (pointer_declarator * IDENT)))))) ;) (declaration TYPE (pointer_declarator * (pointer_declarator * (pointer_declarator * (pointer_declarator * (pointer_declarator * (pointer_declarator * (pointer_declarator * IDENT))))))) ;) (declaration TYPE (pointer_declarator * (pointer_declarator * (pointer_declarator * (pointer_declarator * (pointer_declarator * (pointer_declarator * (pointer_declarator * IDENT))))))) ;) (declaration TYPE (pointer_declarator * (pointer_declarator * (pointer_declarator * (pointer_declarator * (pointer_declarator * (pointer_declarator * (pointer_declarator * IDENT))))))) ;) (declaration TYPE (pointer_declarator * (pointer_declarator * (pointer_declarator * (pointer_declarator * (pointer_declarator * (pointer_declarator * (pointer_declarator * IDENT))))))) ;) (declaration TYPE (pointer_declarator * (pointer_declarator * (pointer_declarator * (pointer_declarator * (pointer_declarator * (pointer_declarator * (pointer_declarator * IDENT))))))) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * (pointer_declarator * (pointer_declarator * (pointer_declarator * (pointer_declarator * (pointer_declarator * IDENT)))))) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * (pointer_declarator * IDENT)) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * (pointer_declarator * (pointer_declarator * (pointer_declarator * (pointer_declarator * (pointer_declarator * (pointer_declarator * IDENT))))))) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE (pointer_declarator * (pointer_declarator * (pointer_declarator * (pointer_declarator * (pointer_declarator * (pointer_declarator * (pointer_declarator * IDENT))))))) ;) (declaration TYPE (pointer_declarator * (pointer_declarator * (pointer_declarator * (pointer_declarator * (pointer_declarator * (pointer_declarator * (pointer_declarator * IDENT))))))) ;) (declaration TYPE (pointer_declarator * (pointer_declarator * (pointer_declarator * (pointer_declarator * (pointer_declarator * (pointer_declarator * IDENT)))))) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) }))) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *)))))))) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *))))))) ) LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *)))))))) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *)))))))) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *)))))))) ) (parenthesized_expression ( (binary_expression (pointer_expression & IDENT) + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) )))) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *)))))))) ) (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT ))))) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *)))))))) ) LIT)) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (goto_statement goto statement_identifier ;) })) }))) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *)))))))) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (while_statement while (parenthesized_expression ( (comma_expression (assignment_expression IDENT = IDENT) , (comma_expression (assignment_expression IDENT = IDENT) , (comma_expression (assignment_expression IDENT = IDENT) , (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) <= (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])))))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression (parenthesized_expression ( (binary_expression IDENT + LIT) )) * LIT) ]) = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *))))))) ) IDENT)) ;) (expression_statement (assignment_expression (subscript_expression (parenthesized_expression ( (binary_expression IDENT + (binary_expression (parenthesized_expression ( (binary_expression IDENT + LIT) )) * LIT)) )) [ LIT ]) = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *))))))) ) LIT)) ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *)))))))) ) (subscript_expression IDENT [ LIT ]))) ;)) }) (else_clause else (compound_statement { (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 IDENT + LIT) )))) != (char_literal ' escape_sequence ')) )) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) + LIT)) , (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) <= IDENT)) ))) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression IDENT * LIT))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * IDENT)) < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *))))))) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *)))))))) ) (subscript_expression IDENT [ LIT ]))) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) & LIT) )) == LIT) )) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = IDENT) , (binary_expression (subscript_expression IDENT [ (binary_expression IDENT * LIT) ]) == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *))))))) ) LIT))) ))) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *))))))) ) IDENT)) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *)))))))) ) (subscript_expression IDENT [ LIT ]))) ;) }))) }))) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == IDENT) )) && (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *)))))))) ) (subscript_expression IDENT [ LIT ])) == IDENT) ))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) LIT)) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT ))) ;) (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }))) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *)))))))) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *)))))))) ) LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *)))))))) ) LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * IDENT))) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *)))))))) ) (subscript_expression IDENT [ LIT ]))) , (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *)))))))) ) (subscript_expression IDENT [ LIT ])) == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *)))))))) ) LIT))) ))) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *)))))))) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *))))))))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *)))))))) ) (pointer_expression & IDENT))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *)))))))) ) (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT ))))) ;) (goto_statement goto statement_identifier ;) })) })) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT ))) ;) (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT ))) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) }))) (goto_statement goto statement_identifier ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *)))))))) ) (subscript_expression IDENT [ LIT ]))) ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *))))))) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) + (binary_expression (cast_expression ( (type_descriptor TYPE) ) 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 IDENT + LIT) )))) & LIT) )) == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) & LIT) )) == LIT) )) (compound_statement { (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 = (subscript_expression (parenthesized_expression ( (binary_expression IDENT + (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * IDENT)) + LIT) )) * LIT)) )) [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * IDENT)) + LIT) )) * LIT) ])) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *)))))))) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *)))))))) ) LIT)) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = IDENT) ;)) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( (pointer_expression & IDENT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *)))))))) ) (pointer_expression * (subscript_expression (subscript_expression IDENT [ LIT ]) [ (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT) + LIT) ])))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( (binary_expression (subscript_expression (subscript_expression IDENT [ LIT ]) [ (cast_expression ( (type_descriptor TYPE) ) IDENT) ]) + LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *))))))) ) LIT)) )) && (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *))))))) ) LIT)) ))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *)))))))) ) LIT)) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *)))))))) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) + (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) + (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) })) }) (else_clause else (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = IDENT) ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *)))))))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *)))))))) ) (subscript_expression (subscript_expression IDENT [ LIT ]) [ (cast_expression ( (type_descriptor TYPE) ) IDENT) ]))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *)))))))) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ;) (goto_statement goto statement_identifier ;) })) }))) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *)))))))) ) (call_expression IDENT (argument_list ( IDENT ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *)))))))) ) LIT)) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *)))))))) ) (subscript_expression (subscript_expression IDENT [ LIT ]) [ (cast_expression ( (type_descriptor TYPE) ) IDENT) ]))) ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *)))))))) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = IDENT) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) LIT)) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *)))))))) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) <= (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *)))))))) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *))))))) ) LIT)) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( (binary_expression (pointer_expression * IDENT) + LIT) )))) , (binary_expression IDENT != LIT)) ))) )) (goto_statement goto statement_identifier ;)) })) }))) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *)))))))) ) LIT)) ;)) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (subscript_expression (subscript_expression IDENT [ LIT ]) [ (cast_expression ( (type_descriptor TYPE) ) IDENT) ])) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *)))))))) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( (pointer_expression & IDENT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *)))))))) ) (subscript_expression IDENT [ LIT ]))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *)))))))) ) LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *)))))))) ) LIT)) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *)))))))) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = IDENT) , (comma_expression (assignment_expression IDENT = IDENT) , (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *)))))))) ) LIT)))) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( (pointer_expression & IDENT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = IDENT) , (comma_expression (assignment_expression IDENT = IDENT) , (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) LIT)))) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *)))))))) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *)))))))) ) (subscript_expression IDENT [ LIT ]))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *)))))))) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))) == IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *)))))))) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (subscript_expression IDENT [ LIT ]) ))))) ;) (expression_statement (assignment_expression IDENT = 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 (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) << LIT) )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *))))))) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT) )))) ;) (expression_statement (assignment_expression (subscript_expression (subscript_expression IDENT [ LIT ]) [ (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT) ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *))))))))) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) )))) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *)))))))) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *))))))) ) (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) )))) )))) == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) )))) )))) , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) )))) ))) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) })) (break_statement break ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *)))))))) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = IDENT) ;)) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (compound_statement { (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *)))))))) ) (pointer_expression & IDENT))) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT ))) ;)) (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT ))) ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) LIT)) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( ))) ;) (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }))) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *))))))))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *)))))))) ) (pointer_expression & IDENT))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *)))))))) ) (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT ))))) ;) })) })) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT ))) ;) (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT ))) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) )) (compound_statement { (return_statement return IDENT ;) }))) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( ))) ;) (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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *))))))))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *)))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *))))))))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *)))))))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *))))))))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *))))))))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *))))))))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = 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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (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 * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *)))))))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * IDENT)) ;) (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 = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) + (binary_expression (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) * LIT)) ))))) )))) )) (argument_list ( )))) ;) (return_statement return IDENT ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) )) (compound_statement { (return_statement return 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) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( ))) ;) (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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *)))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *))))))))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *)))))))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *))))))))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *))))))))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *))))))))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *))))))))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = 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 * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (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 * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *)))))))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * IDENT)) ;) (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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == LIT) )) || (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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) + LIT)) ;) (labeled_statement statement_identifier : (do_statement do (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (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 IDENT + LIT) )))) & LIT) )) == LIT) )) (compound_statement { (return_statement return IDENT ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) && (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) ))) )) (compound_statement { (return_statement return IDENT ;) })) (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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )) (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , IDENT , IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT , (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) + LIT) , LIT ))) ;) (return_statement return LIT ;) })) }))) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT == LIT) )) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , IDENT , IDENT , LIT )))) ;) }) while (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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (binary_expression IDENT + LIT) , LIT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (binary_expression IDENT + LIT) , LIT ))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) })) (return_statement return IDENT ;) })))
(function_definition "int FUN_000216b4(undefined4 *param_1,int *******param_2,int *******param_3,int *******param_4,\n                char param_5)\n\n{\n  bool bVar1;\n  int iVar2;\n  int iVar3;\n  int *******pppppppiVar4;\n  code *pcVar5;\n  code *pcVar6;\n  code *pcVar7;\n  int *****pppppiVar8;\n  int *******pppppppiVar9;\n  int *piVar10;\n  int *******pppppppiVar11;\n  int ******ppppppiVar12;\n  int iVar13;\n  int iVar14;\n  int *******pppppppiVar15;\n  int ******ppppppiVar16;\n  int *******pppppppiVar17;\n  int *******pppppppiVar18;\n  int *******pppppppiVar19;\n  int *******unaff_s0;\n  int *******unaff_s2;\n  int iVar20;\n  int ******unaff_s3;\n  int iVar21;\n  int **unaff_s5;\n  int iVar22;\n  int *******unaff_s6;\n  int *piVar23;\n  undefined *puVar24;\n  undefined1 *puVar25;\n  undefined1 *puVar26;\n  undefined4 uVar27;\n  undefined1 auStack_98 [24];\n  int *******local_70;\n  int *******local_48;\n  int ******local_44;\n  undefined4 local_40;\n  undefined4 local_3c;\n  int *local_38;\n  undefined4 local_34;\n  int local_30;\n  int local_2c;\n  \n  puVar25 = auStack_98;\n  puVar26 = auStack_98;\n  local_2c = *(int *)PTR___stack_chk_guard_0003e348;\n  piVar23 = (int *)*param_1;\n  local_38 = (int *)0x0;\n  local_34 = 2;\n  local_30 = 0;\n  pppppppiVar17 = param_2;\n  pppppppiVar18 = param_3;\n  pppppppiVar19 = param_4;\n  if (param_5 == '\0') {\n    unaff_s5 = (int **)0x0;\n  }\n  else {\n    local_30 = (*(code *)PTR_malloc_0003e2f8)(0x30);\n    if (local_30 == 0) {\n      iVar13 = 0xc;\n      goto LAB_00021ed8;\n    }\n    unaff_s5 = &local_38;\n  }\n  unaff_s0 = (int *******)piVar23[0x12];\n  local_44 = (int ******)0x0;\n  local_40 = 0;\n  local_3c = 0;\n  pppppppiVar15 = (int *******)((int)param_3 * 8);\n  if (pppppppiVar15 < (int *******)0xfc0) {\n    puVar25 = auStack_98 + (int)param_3 * -8;\n    local_70 = (int *******)(&stack0xffffff80 + (int)param_3 * -8);\n    bVar1 = false;\n  }\n  else {\n    local_70 = (int *******)(*(code *)PTR_malloc_0003e2f8)(pppppppiVar15);\n    bVar1 = true;\n    if (local_70 == (int *******)0x0) {\n      FUN_0001eb94(unaff_s5);\n      iVar13 = 0xc;\n      puVar26 = auStack_98;\n      goto LAB_00021ed8;\n    }\n  }\n  pppppppiVar17 = param_4;\n  pppppppiVar18 = pppppppiVar15;\n  (*(code *)PTR_memcpy_0003e34c)(local_70);\n  local_48 = (int *******)*param_4;\n  pcVar5 = (code *)(PTR_DAT_0003e238 + -0x10e8);\n  pcVar6 = (code *)(PTR_DAT_0003e238 + -0x6f00);\n  pcVar7 = (code *)(PTR_DAT_0003e238 + -0x589c);\n  while (unaff_s2 = local_48, puVar24 = PTR_memcpy_0003e34c, puVar26 = puVar25,\n        (int)local_48 <= (int)param_4[1]) {\n    piVar10 = (int *)(*piVar23 + (int)unaff_s0 * 8);\n    if (*(char *)(piVar10 + 1) == '\b') {\n      iVar13 = *piVar10;\n      if (iVar13 + 1 < (int)param_3) {\n        param_4[(iVar13 + 1) * 2] = (int ******)local_48;\n        (param_4 + (iVar13 + 1) * 2)[1] = (int ******)0xffffffff;\n      }\nLAB_00021cec:\n      pppppppiVar11 = (int *******)param_4[1];\n    }\n    else {\n      if ((*(char *)(piVar10 + 1) != '\t') || (iVar13 = *piVar10 + 1, (int)param_3 <= iVar13))\n      goto LAB_00021cec;\n      pppppppiVar17 = param_4 + iVar13 * 2;\n      if ((int)*pppppppiVar17 < (int)local_48) {\n        pppppppiVar17[1] = (int ******)local_48;\n        pppppppiVar17 = param_4;\n        pppppppiVar18 = pppppppiVar15;\n        (*(code *)puVar24)(local_70);\n        pppppppiVar11 = (int *******)param_4[1];\n      }\n      else {\n        if (((piVar10[1] & 0x1000U) == 0) ||\n           (pppppppiVar18 = pppppppiVar15, local_70[iVar13 * 2] == (int ******)0xffffffff)) {\n          pppppppiVar17[1] = (int ******)local_48;\n          goto LAB_00021cec;\n        }\n        pppppppiVar17 = local_70;\n        (*(code *)PTR_memcpy_0003e34c)(param_4);\n        pppppppiVar11 = (int *******)param_4[1];\n      }\n    }\n    if ((pppppppiVar11 == unaff_s2) && ((int *******)param_2[0x18] == unaff_s0)) {\n      if (unaff_s5 == (int **)0x0) {\n        (*(code *)PTR_free_0003e354)(local_3c);\n        if (bVar1) {\n          (*(code *)PTR_free_0003e354)(local_70);\n          iVar13 = 0;\n        }\n        else {\n          iVar13 = 0;\n        }\n      }\n      else {\n        if (param_3 != (int *******)0x0) {\n          pppppppiVar9 = (int *******)0x0;\n          pppppppiVar18 = (int *******)0xffffffff;\n          pppppppiVar11 = param_4;\n          do {\n            if ((-1 < (int)*pppppppiVar11) &&\n               (pppppppiVar17 = (int *******)pppppppiVar11[1],\n               (int *******)pppppppiVar11[1] == (int *******)0xffffffff)) break;\n            pppppppiVar9 = (int *******)((int)pppppppiVar9 + 1);\n            pppppppiVar11 = pppppppiVar11 + 2;\n            pppppppiVar17 = param_3;\n          } while (param_3 != pppppppiVar9);\n          if (pppppppiVar9 != param_3) {\n            *(int ********)(puVar25 + 0x10) = &local_44;\n            pppppppiVar17 = (int *******)&local_48;\n            pppppppiVar18 = param_3;\n            pppppppiVar19 = param_4;\n            unaff_s0 = (int *******)(*pcVar5)(unaff_s5);\n            goto LAB_00021d04;\n          }\n        }\n        (*(code *)PTR_free_0003e354)(local_3c);\n        if (bVar1) {\n          (*(code *)PTR_free_0003e354)(local_70);\n        }\n        iVar13 = FUN_0001eb94(unaff_s5);\n      }\n      goto LAB_00021ed8;\n    }\nLAB_00021d04:\n    unaff_s2 = (int *******)param_2[0x15];\n    unaff_s3 = (int ******)((int)unaff_s0 * 8);\n    ppppppiVar12 = *unaff_s2 + (int)unaff_s0 * 2;\n    if ((*(byte *)(ppppppiVar12 + 1) & 8) == 0) {\n      if (((uint)ppppppiVar12[1] & 0x800) == 0) {\n        if (*(byte *)(ppppppiVar12 + 1) == 4) {\n          ppppppiVar16 = (param_4 + ((int)*ppppppiVar12 + 1) * 2)[1];\n          ppppppiVar12 = param_4[((int)*ppppppiVar12 + 1) * 2];\n          unaff_s6 = (int *******)((int)ppppppiVar16 - (int)ppppppiVar12);\n          if (unaff_s5 == (int **)0x0) {\n            pppppppiVar17 = unaff_s0;\n            if (unaff_s6 != (int *******)0x0) goto LAB_00021da8;\nLAB_00021dd0:\n            pppppppiVar17 = unaff_s0;\n            iVar13 = (*pcVar7)(&local_44);\n            if (iVar13 == 0) goto LAB_00021b34;\n            pppppppiVar11 = (int *******)*unaff_s2[5][(int)unaff_s0 * 3 + 2];\n            pppppppiVar17 = pppppppiVar11;\n            iVar13 = (*pcVar6)(param_2[0x19][(int)local_48] + 1);\n            if (iVar13 != 0) goto LAB_00021ca8;\n            goto LAB_00021c18;\n          }\n          if ((ppppppiVar12 != (int ******)0xffffffff) && (ppppppiVar16 != (int ******)0xffffffff))\n          {\n            if (unaff_s6 == (int *******)0x0) goto LAB_00021dd0;\n            pppppppiVar17 = (int *******)((int)param_2[1] + (int)local_48);\n            pppppppiVar18 = unaff_s6;\n            iVar13 = (*(code *)PTR_memcmp_0003e338)((int)param_2[1] + (int)ppppppiVar12);\n            if (iVar13 == 0) goto LAB_00021da8;\n          }\n        }\n        else {\nLAB_00021c18:\n          unaff_s6 = local_48;\n          pppppppiVar17 = (int *******)(*unaff_s2 + (int)unaff_s0 * 2);\n          pppppppiVar18 = local_48;\n          iVar13 = FUN_0001c4f8(param_2);\n          if (iVar13 != 0) {\n            pppppppiVar11 = (int *******)unaff_s2[3][(int)unaff_s0];\n            local_48 = (int *******)((int)unaff_s6 + 1);\n            goto LAB_00021c5c;\n          }\n        }\n      }\n      else {\n        pppppppiVar17 = unaff_s0;\n        pppppppiVar18 = param_2;\n        pppppppiVar19 = local_48;\n        unaff_s6 = (int *******)FUN_000200a0(unaff_s2);\n        if (unaff_s6 == (int *******)0x0) goto LAB_00021c18;\nLAB_00021da8:\n        pppppppiVar11 = (int *******)unaff_s2[3][(int)unaff_s0];\n        local_48 = (int *******)((int)unaff_s6 + (int)local_48);\nLAB_00021c5c:\n        unaff_s6 = local_48;\n        if (unaff_s5 == (int **)0x0) {\nLAB_00021ca4:\n          local_40 = 0;\n          goto LAB_00021ca8;\n        }\n        unaff_s6 = (int *******)((int)local_48 * 4);\n        if ((int)local_48 <= (int)param_2[0x17]) {\n          unaff_s6 = (int *******)(param_2[0x19] + (int)local_48);\n          pppppppiVar17 = pppppppiVar11;\n          if ((*unaff_s6 != (int ******)0x0) && (iVar13 = (*pcVar6)(*unaff_s6 + 1), iVar13 != 0))\n          goto LAB_00021ca4;\n        }\n      }\nLAB_00021f3c:\n      unaff_s0 = (int *******)0xffffffff;\n      goto LAB_00021f44;\n    }\n    pppppiVar8 = param_2[0x19][(int)local_48];\n    unaff_s2 = (int *******)(unaff_s2[5] + (int)unaff_s0 * 3);\n    pppppppiVar17 = unaff_s0;\n    iVar13 = (*pcVar7)(&local_44);\n    if (iVar13 == 0) goto LAB_00021b34;\n    unaff_s6 = (int *******)unaff_s2[1];\n    if ((int)unaff_s6 < 1) goto LAB_00021f3c;\n    unaff_s3 = unaff_s2[2];\n    unaff_s2 = (int *******)0x0;\n    unaff_s0 = (int *******)0xffffffff;\n    do {\n      pppppppiVar9 = (int *******)*unaff_s3;\n      pppppppiVar17 = pppppppiVar9;\n      iVar13 = (*pcVar6)(pppppiVar8 + 1);\n      pppppppiVar11 = unaff_s0;\n      if ((iVar13 != 0) &&\n         (pppppppiVar17 = unaff_s0, pppppppiVar11 = pppppppiVar9,\n         unaff_s0 != (int *******)0xffffffff)) {\n        iVar13 = (*pcVar6)(&local_44);\n        pppppppiVar4 = local_48;\n        if ((iVar13 == 0) &&\n           (pppppppiVar11 = unaff_s0, unaff_s6 = local_48, unaff_s5 != (int **)0x0)) {\n          unaff_s2 = (int *******)*unaff_s5;\n          *unaff_s5 = (int *)((int)unaff_s2 + 1);\n          pppppppiVar17 = (int *******)unaff_s5[1];\n          if ((int *******)((int)unaff_s2 + 1) == pppppppiVar17) {\n            pppppppiVar17 = (int *******)((int)pppppppiVar17 * 0x30);\n            piVar10 = (int *)(*(code *)PTR_realloc_0003e2fc)(unaff_s5[2]);\n            unaff_s6 = pppppppiVar4;\n            if (piVar10 == (int *)0x0) goto LAB_00021b34;\n            unaff_s5[1] = (int *)((int)unaff_s5[1] << 1);\n            unaff_s5[2] = piVar10;\n          }\n          unaff_s3 = (int ******)((int)unaff_s2 * 0x18);\n          unaff_s5[2][(int)unaff_s2 * 6] = (int)pppppppiVar4;\n          *(int ********)((int)unaff_s3 + (int)(unaff_s5[2] + 1)) = pppppppiVar9;\n          unaff_s2 = (int *******)(unaff_s5[2] + (int)unaff_s2 * 6);\n          ppppppiVar12 = (int ******)(*(code *)PTR_malloc_0003e2f8)(pppppppiVar15);\n          unaff_s2[2] = ppppppiVar12;\n          pppppppiVar18 = pppppppiVar15;\n          unaff_s6 = pppppppiVar15;\n          if (*(int *)((int)unaff_s3 + (int)(unaff_s5[2] + 2)) == 0) goto LAB_00021b34;\n          (*(code *)PTR_memcpy_0003e34c)(*(int *)((int)unaff_s3 + (int)(unaff_s5[2] + 2)),param_4);\n          pppppppiVar17 = &local_44;\n          iVar13 = FUN_0001b67c((int *)((int)unaff_s3 + (int)(unaff_s5[2] + 3)));\n          if (iVar13 != 0) goto LAB_00021b34;\n        }\n        break;\n      }\n      unaff_s2 = (int *******)((int)unaff_s2 + 1);\n      unaff_s3 = unaff_s3 + 1;\n      unaff_s0 = pppppppiVar11;\n    } while (unaff_s6 != unaff_s2);\nLAB_00021ca8:\n    unaff_s0 = pppppppiVar11;\n    if ((int)pppppppiVar11 < 0) {\nLAB_00021f44:\n      if (unaff_s0 == (int *******)&SUB_fffffffe) {\nLAB_00021b34:\n        (*(code *)PTR_free_0003e354)(local_3c);\n        if (bVar1) {\n          (*(code *)PTR_free_0003e354)(local_70);\n        }\n        FUN_0001eb94(unaff_s5);\n        iVar13 = 0xc;\n        goto LAB_00021ed8;\n      }\n      if (unaff_s5 == (int **)0x0) {\n        (*(code *)PTR_free_0003e354)();\n        if (bVar1) {\n          (*(code *)PTR_free_0003e354)(local_70);\n          iVar13 = 1;\n        }\n        else {\n          iVar13 = 1;\n        }\n        goto LAB_00021ed8;\n      }\n      *(int ********)(puVar25 + 0x10) = &local_44;\n      pppppppiVar17 = (int *******)&local_48;\n      pppppppiVar18 = param_3;\n      pppppppiVar19 = param_4;\n      unaff_s0 = (int *******)(*pcVar5)(unaff_s5);\n    }\n  }\n  (*(code *)PTR_free_0003e354)(local_3c);\n  if (bVar1) {\n    (*(code *)PTR_free_0003e354)(local_70);\n  }\n  iVar13 = FUN_0001eb94(unaff_s5);\nLAB_00021ed8:\n  if (local_2c == *(int *)PTR___stack_chk_guard_0003e348) {\n    return iVar13;\n  }\n  pcVar5 = FUN_00021f9c;\n  iVar13 = local_2c;\n  puVar24 = PTR___stack_chk_fail_0003e32c;\n  (*(code *)PTR___stack_chk_fail_0003e32c)();\n  *(code **)(puVar26 + -4) = pcVar5;\n  *(undefined1 **)(puVar26 + -8) = auStack_98;\n  *(int **)(puVar26 + -0xc) = piVar23;\n  *(int ********)(puVar26 + -0x10) = unaff_s6;\n  *(int ***)(puVar26 + -0x14) = unaff_s5;\n  *(int ********)(puVar26 + -0x18) = param_4;\n  *(int *******)(puVar26 + -0x1c) = unaff_s3;\n  *(int ********)(puVar26 + -0x20) = unaff_s2;\n  *(int ********)(puVar26 + -0x24) = param_2;\n  *(int ********)(puVar26 + -0x28) = unaff_s0;\n  *(undefined **)(puVar26 + -0xc0) = puVar24 + 0x24174;\n  *(int *)(puVar26 + -0xac) = iVar13;\n  uVar27 = *(undefined4 *)(puVar26 + 0x14);\n  *(undefined4 *)(puVar26 + -0x2c) = **(undefined4 **)(puVar24 + 0x1c3ac);\n  *(int *******)(puVar26 + -0xb8) = *pppppppiVar17;\n  if (*(byte *)(pppppppiVar18 + 1) < 0x25) {\n                    \n                    \n    iVar13 = (*(code *)(puVar24 + 0x24174 +\n                       *(int *)(*(int *)(puVar24 + 0x1c1ac) + -0x2ac0 +\n                               (uint)*(byte *)(pppppppiVar18 + 1) * 4)))();\n    return iVar13;\n  }\n  iVar13 = *(int *)(puVar26 + -0x2c);\n  if (iVar13 == **(int **)(puVar24 + 0x1c3ac)) {\n    return 0;\n  }\n  pcVar5 = *(code **)(puVar24 + 0x1c390);\n  pcVar6 = FUN_00023824;\n  pppppppiVar15 = pppppppiVar17;\n  (*pcVar5)();\n  *(code **)(puVar26 + -0xe4) = pcVar6;\n  *(undefined4 *)(puVar26 + -0xe8) = uVar27;\n  *(int **)(puVar26 + -0xec) = piVar23;\n  *(undefined4 *)(puVar26 + -0xf0) = 0;\n  *(int ***)(puVar26 + -0xf4) = unaff_s5;\n  *(int ********)(puVar26 + -0xf8) = param_4;\n  *(int *******)(puVar26 + -0xfc) = unaff_s3;\n  *(int ********)(puVar26 + -0x100) = unaff_s2;\n  *(int ********)(puVar26 + -0x104) = param_2;\n  *(int ********)(puVar26 + -0x108) = pppppppiVar17;\n  *(code **)(puVar26 + -0x118) = pcVar5 + 0x228ec;\n  *(int *)(puVar26 + -0xe0) = iVar13;\n  *(int ********)(puVar26 + -0xd4) = pppppppiVar19;\n  iVar21 = *(int *)(puVar26 + -0xd0);\n  piVar23 = *(int **)(puVar26 + -0xcc);\n  *(int *******)(puVar26 + -0x110) = *pppppppiVar15;\n  *(int **)(puVar26 + -0x11c) = piVar23;\n  *(int *)(puVar26 + -0x120) = iVar21;\n  iVar13 = FUN_00021f9c();\n  if ((*piVar23 == 0) || (iVar13 != 0)) {\n    iVar22 = *(int *)(*(int *)(puVar26 + -0x118) + -0x7ed8);\n    *(int *)(puVar26 + -0x10c) = *(int *)(*(int *)(puVar26 + -0x118) + -0x7ed8) + -0x5cb8;\nLAB_0002390c:\n    do {\n      do {\n        iVar20 = iVar13;\n        if ((*(byte *)(pppppppiVar18 + 1) & 0xf7) == 2) {\n          return iVar20;\n        }\n        if ((iVar21 != 0) && (*(byte *)(pppppppiVar18 + 1) == 9)) {\n          return iVar20;\n        }\n        *(int **)(puVar26 + -0x11c) = piVar23;\n        *(int *)(puVar26 + -0x120) = iVar21;\n        iVar14 = (*(code *)(iVar22 + 0x1f9c))\n                           (*(undefined4 *)(puVar26 + -0xe0),pppppppiVar15,pppppppiVar18,\n                            *(undefined4 *)(puVar26 + -0xd4));\n        if (*piVar23 == 0) {\n          iVar13 = iVar14;\n          iVar2 = iVar20;\n          iVar3 = iVar14;\n          if (iVar20 == 0) goto LAB_0002390c;\n        }\n        else {\n          iVar2 = iVar14;\n          iVar3 = iVar20;\n          if (iVar14 == 0) {\n            if (iVar20 == 0) {\n              return 0;\n            }\n            FUN_0001920c(iVar20,*(int *)(*(int *)(puVar26 + -0x118) + -0x7ed8) + -0x2cc0,0);\n            return 0;\n          }\n        }\n        iVar13 = iVar2;\n      } while (iVar3 == 0);\n      iVar13 = (**(code **)(puVar26 + -0x10c))(*(undefined4 *)(puVar26 + -0x110),iVar20,iVar14,0x10)\n      ;\n    } while (iVar13 != 0);\n    iVar13 = *(int *)(*(int *)(puVar26 + -0x118) + -0x7ed8);\n    FUN_0001920c(iVar14,iVar13 + -0x2cc0,0);\n    FUN_0001920c(iVar20,iVar13 + -0x2cc0,0);\n    *piVar23 = 0xc;\n    iVar13 = 0;\n  }\n  return iVar13;\n}" (primitive_type "int") (function_declarator "FUN_000216b4(undefined4 *param_1,int *******param_2,int *******param_3,int *******param_4,\n                char param_5)" (identifier "FUN_000216b4") (parameter_list "(undefined4 *param_1,int *******param_2,int *******param_3,int *******param_4,\n                char param_5)" (( "(") (parameter_declaration "undefined4 *param_1" (type_identifier "undefined4") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "int *******param_2" (primitive_type "int") (pointer_declarator "*******param_2" (* "*") (pointer_declarator "******param_2" (* "*") (pointer_declarator "*****param_2" (* "*") (pointer_declarator "****param_2" (* "*") (pointer_declarator "***param_2" (* "*") (pointer_declarator "**param_2" (* "*") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))))))))) (, ",") (parameter_declaration "int *******param_3" (primitive_type "int") (pointer_declarator "*******param_3" (* "*") (pointer_declarator "******param_3" (* "*") (pointer_declarator "*****param_3" (* "*") (pointer_declarator "****param_3" (* "*") (pointer_declarator "***param_3" (* "*") (pointer_declarator "**param_3" (* "*") (pointer_declarator "*param_3" (* "*") (identifier "param_3"))))))))) (, ",") (parameter_declaration "int *******param_4" (primitive_type "int") (pointer_declarator "*******param_4" (* "*") (pointer_declarator "******param_4" (* "*") (pointer_declarator "*****param_4" (* "*") (pointer_declarator "****param_4" (* "*") (pointer_declarator "***param_4" (* "*") (pointer_declarator "**param_4" (* "*") (pointer_declarator "*param_4" (* "*") (identifier "param_4"))))))))) (, ",") (parameter_declaration "char param_5" (primitive_type "char") (identifier "param_5")) () ")"))) (compound_statement "{\n  bool bVar1;\n  int iVar2;\n  int iVar3;\n  int *******pppppppiVar4;\n  code *pcVar5;\n  code *pcVar6;\n  code *pcVar7;\n  int *****pppppiVar8;\n  int *******pppppppiVar9;\n  int *piVar10;\n  int *******pppppppiVar11;\n  int ******ppppppiVar12;\n  int iVar13;\n  int iVar14;\n  int *******pppppppiVar15;\n  int ******ppppppiVar16;\n  int *******pppppppiVar17;\n  int *******pppppppiVar18;\n  int *******pppppppiVar19;\n  int *******unaff_s0;\n  int *******unaff_s2;\n  int iVar20;\n  int ******unaff_s3;\n  int iVar21;\n  int **unaff_s5;\n  int iVar22;\n  int *******unaff_s6;\n  int *piVar23;\n  undefined *puVar24;\n  undefined1 *puVar25;\n  undefined1 *puVar26;\n  undefined4 uVar27;\n  undefined1 auStack_98 [24];\n  int *******local_70;\n  int *******local_48;\n  int ******local_44;\n  undefined4 local_40;\n  undefined4 local_3c;\n  int *local_38;\n  undefined4 local_34;\n  int local_30;\n  int local_2c;\n  \n  puVar25 = auStack_98;\n  puVar26 = auStack_98;\n  local_2c = *(int *)PTR___stack_chk_guard_0003e348;\n  piVar23 = (int *)*param_1;\n  local_38 = (int *)0x0;\n  local_34 = 2;\n  local_30 = 0;\n  pppppppiVar17 = param_2;\n  pppppppiVar18 = param_3;\n  pppppppiVar19 = param_4;\n  if (param_5 == '\0') {\n    unaff_s5 = (int **)0x0;\n  }\n  else {\n    local_30 = (*(code *)PTR_malloc_0003e2f8)(0x30);\n    if (local_30 == 0) {\n      iVar13 = 0xc;\n      goto LAB_00021ed8;\n    }\n    unaff_s5 = &local_38;\n  }\n  unaff_s0 = (int *******)piVar23[0x12];\n  local_44 = (int ******)0x0;\n  local_40 = 0;\n  local_3c = 0;\n  pppppppiVar15 = (int *******)((int)param_3 * 8);\n  if (pppppppiVar15 < (int *******)0xfc0) {\n    puVar25 = auStack_98 + (int)param_3 * -8;\n    local_70 = (int *******)(&stack0xffffff80 + (int)param_3 * -8);\n    bVar1 = false;\n  }\n  else {\n    local_70 = (int *******)(*(code *)PTR_malloc_0003e2f8)(pppppppiVar15);\n    bVar1 = true;\n    if (local_70 == (int *******)0x0) {\n      FUN_0001eb94(unaff_s5);\n      iVar13 = 0xc;\n      puVar26 = auStack_98;\n      goto LAB_00021ed8;\n    }\n  }\n  pppppppiVar17 = param_4;\n  pppppppiVar18 = pppppppiVar15;\n  (*(code *)PTR_memcpy_0003e34c)(local_70);\n  local_48 = (int *******)*param_4;\n  pcVar5 = (code *)(PTR_DAT_0003e238 + -0x10e8);\n  pcVar6 = (code *)(PTR_DAT_0003e238 + -0x6f00);\n  pcVar7 = (code *)(PTR_DAT_0003e238 + -0x589c);\n  while (unaff_s2 = local_48, puVar24 = PTR_memcpy_0003e34c, puVar26 = puVar25,\n        (int)local_48 <= (int)param_4[1]) {\n    piVar10 = (int *)(*piVar23 + (int)unaff_s0 * 8);\n    if (*(char *)(piVar10 + 1) == '\b') {\n      iVar13 = *piVar10;\n      if (iVar13 + 1 < (int)param_3) {\n        param_4[(iVar13 + 1) * 2] = (int ******)local_48;\n        (param_4 + (iVar13 + 1) * 2)[1] = (int ******)0xffffffff;\n      }\nLAB_00021cec:\n      pppppppiVar11 = (int *******)param_4[1];\n    }\n    else {\n      if ((*(char *)(piVar10 + 1) != '\t') || (iVar13 = *piVar10 + 1, (int)param_3 <= iVar13))\n      goto LAB_00021cec;\n      pppppppiVar17 = param_4 + iVar13 * 2;\n      if ((int)*pppppppiVar17 < (int)local_48) {\n        pppppppiVar17[1] = (int ******)local_48;\n        pppppppiVar17 = param_4;\n        pppppppiVar18 = pppppppiVar15;\n        (*(code *)puVar24)(local_70);\n        pppppppiVar11 = (int *******)param_4[1];\n      }\n      else {\n        if (((piVar10[1] & 0x1000U) == 0) ||\n           (pppppppiVar18 = pppppppiVar15, local_70[iVar13 * 2] == (int ******)0xffffffff)) {\n          pppppppiVar17[1] = (int ******)local_48;\n          goto LAB_00021cec;\n        }\n        pppppppiVar17 = local_70;\n        (*(code *)PTR_memcpy_0003e34c)(param_4);\n        pppppppiVar11 = (int *******)param_4[1];\n      }\n    }\n    if ((pppppppiVar11 == unaff_s2) && ((int *******)param_2[0x18] == unaff_s0)) {\n      if (unaff_s5 == (int **)0x0) {\n        (*(code *)PTR_free_0003e354)(local_3c);\n        if (bVar1) {\n          (*(code *)PTR_free_0003e354)(local_70);\n          iVar13 = 0;\n        }\n        else {\n          iVar13 = 0;\n        }\n      }\n      else {\n        if (param_3 != (int *******)0x0) {\n          pppppppiVar9 = (int *******)0x0;\n          pppppppiVar18 = (int *******)0xffffffff;\n          pppppppiVar11 = param_4;\n          do {\n            if ((-1 < (int)*pppppppiVar11) &&\n               (pppppppiVar17 = (int *******)pppppppiVar11[1],\n               (int *******)pppppppiVar11[1] == (int *******)0xffffffff)) break;\n            pppppppiVar9 = (int *******)((int)pppppppiVar9 + 1);\n            pppppppiVar11 = pppppppiVar11 + 2;\n            pppppppiVar17 = param_3;\n          } while (param_3 != pppppppiVar9);\n          if (pppppppiVar9 != param_3) {\n            *(int ********)(puVar25 + 0x10) = &local_44;\n            pppppppiVar17 = (int *******)&local_48;\n            pppppppiVar18 = param_3;\n            pppppppiVar19 = param_4;\n            unaff_s0 = (int *******)(*pcVar5)(unaff_s5);\n            goto LAB_00021d04;\n          }\n        }\n        (*(code *)PTR_free_0003e354)(local_3c);\n        if (bVar1) {\n          (*(code *)PTR_free_0003e354)(local_70);\n        }\n        iVar13 = FUN_0001eb94(unaff_s5);\n      }\n      goto LAB_00021ed8;\n    }\nLAB_00021d04:\n    unaff_s2 = (int *******)param_2[0x15];\n    unaff_s3 = (int ******)((int)unaff_s0 * 8);\n    ppppppiVar12 = *unaff_s2 + (int)unaff_s0 * 2;\n    if ((*(byte *)(ppppppiVar12 + 1) & 8) == 0) {\n      if (((uint)ppppppiVar12[1] & 0x800) == 0) {\n        if (*(byte *)(ppppppiVar12 + 1) == 4) {\n          ppppppiVar16 = (param_4 + ((int)*ppppppiVar12 + 1) * 2)[1];\n          ppppppiVar12 = param_4[((int)*ppppppiVar12 + 1) * 2];\n          unaff_s6 = (int *******)((int)ppppppiVar16 - (int)ppppppiVar12);\n          if (unaff_s5 == (int **)0x0) {\n            pppppppiVar17 = unaff_s0;\n            if (unaff_s6 != (int *******)0x0) goto LAB_00021da8;\nLAB_00021dd0:\n            pppppppiVar17 = unaff_s0;\n            iVar13 = (*pcVar7)(&local_44);\n            if (iVar13 == 0) goto LAB_00021b34;\n            pppppppiVar11 = (int *******)*unaff_s2[5][(int)unaff_s0 * 3 + 2];\n            pppppppiVar17 = pppppppiVar11;\n            iVar13 = (*pcVar6)(param_2[0x19][(int)local_48] + 1);\n            if (iVar13 != 0) goto LAB_00021ca8;\n            goto LAB_00021c18;\n          }\n          if ((ppppppiVar12 != (int ******)0xffffffff) && (ppppppiVar16 != (int ******)0xffffffff))\n          {\n            if (unaff_s6 == (int *******)0x0) goto LAB_00021dd0;\n            pppppppiVar17 = (int *******)((int)param_2[1] + (int)local_48);\n            pppppppiVar18 = unaff_s6;\n            iVar13 = (*(code *)PTR_memcmp_0003e338)((int)param_2[1] + (int)ppppppiVar12);\n            if (iVar13 == 0) goto LAB_00021da8;\n          }\n        }\n        else {\nLAB_00021c18:\n          unaff_s6 = local_48;\n          pppppppiVar17 = (int *******)(*unaff_s2 + (int)unaff_s0 * 2);\n          pppppppiVar18 = local_48;\n          iVar13 = FUN_0001c4f8(param_2);\n          if (iVar13 != 0) {\n            pppppppiVar11 = (int *******)unaff_s2[3][(int)unaff_s0];\n            local_48 = (int *******)((int)unaff_s6 + 1);\n            goto LAB_00021c5c;\n          }\n        }\n      }\n      else {\n        pppppppiVar17 = unaff_s0;\n        pppppppiVar18 = param_2;\n        pppppppiVar19 = local_48;\n        unaff_s6 = (int *******)FUN_000200a0(unaff_s2);\n        if (unaff_s6 == (int *******)0x0) goto LAB_00021c18;\nLAB_00021da8:\n        pppppppiVar11 = (int *******)unaff_s2[3][(int)unaff_s0];\n        local_48 = (int *******)((int)unaff_s6 + (int)local_48);\nLAB_00021c5c:\n        unaff_s6 = local_48;\n        if (unaff_s5 == (int **)0x0) {\nLAB_00021ca4:\n          local_40 = 0;\n          goto LAB_00021ca8;\n        }\n        unaff_s6 = (int *******)((int)local_48 * 4);\n        if ((int)local_48 <= (int)param_2[0x17]) {\n          unaff_s6 = (int *******)(param_2[0x19] + (int)local_48);\n          pppppppiVar17 = pppppppiVar11;\n          if ((*unaff_s6 != (int ******)0x0) && (iVar13 = (*pcVar6)(*unaff_s6 + 1), iVar13 != 0))\n          goto LAB_00021ca4;\n        }\n      }\nLAB_00021f3c:\n      unaff_s0 = (int *******)0xffffffff;\n      goto LAB_00021f44;\n    }\n    pppppiVar8 = param_2[0x19][(int)local_48];\n    unaff_s2 = (int *******)(unaff_s2[5] + (int)unaff_s0 * 3);\n    pppppppiVar17 = unaff_s0;\n    iVar13 = (*pcVar7)(&local_44);\n    if (iVar13 == 0) goto LAB_00021b34;\n    unaff_s6 = (int *******)unaff_s2[1];\n    if ((int)unaff_s6 < 1) goto LAB_00021f3c;\n    unaff_s3 = unaff_s2[2];\n    unaff_s2 = (int *******)0x0;\n    unaff_s0 = (int *******)0xffffffff;\n    do {\n      pppppppiVar9 = (int *******)*unaff_s3;\n      pppppppiVar17 = pppppppiVar9;\n      iVar13 = (*pcVar6)(pppppiVar8 + 1);\n      pppppppiVar11 = unaff_s0;\n      if ((iVar13 != 0) &&\n         (pppppppiVar17 = unaff_s0, pppppppiVar11 = pppppppiVar9,\n         unaff_s0 != (int *******)0xffffffff)) {\n        iVar13 = (*pcVar6)(&local_44);\n        pppppppiVar4 = local_48;\n        if ((iVar13 == 0) &&\n           (pppppppiVar11 = unaff_s0, unaff_s6 = local_48, unaff_s5 != (int **)0x0)) {\n          unaff_s2 = (int *******)*unaff_s5;\n          *unaff_s5 = (int *)((int)unaff_s2 + 1);\n          pppppppiVar17 = (int *******)unaff_s5[1];\n          if ((int *******)((int)unaff_s2 + 1) == pppppppiVar17) {\n            pppppppiVar17 = (int *******)((int)pppppppiVar17 * 0x30);\n            piVar10 = (int *)(*(code *)PTR_realloc_0003e2fc)(unaff_s5[2]);\n            unaff_s6 = pppppppiVar4;\n            if (piVar10 == (int *)0x0) goto LAB_00021b34;\n            unaff_s5[1] = (int *)((int)unaff_s5[1] << 1);\n            unaff_s5[2] = piVar10;\n          }\n          unaff_s3 = (int ******)((int)unaff_s2 * 0x18);\n          unaff_s5[2][(int)unaff_s2 * 6] = (int)pppppppiVar4;\n          *(int ********)((int)unaff_s3 + (int)(unaff_s5[2] + 1)) = pppppppiVar9;\n          unaff_s2 = (int *******)(unaff_s5[2] + (int)unaff_s2 * 6);\n          ppppppiVar12 = (int ******)(*(code *)PTR_malloc_0003e2f8)(pppppppiVar15);\n          unaff_s2[2] = ppppppiVar12;\n          pppppppiVar18 = pppppppiVar15;\n          unaff_s6 = pppppppiVar15;\n          if (*(int *)((int)unaff_s3 + (int)(unaff_s5[2] + 2)) == 0) goto LAB_00021b34;\n          (*(code *)PTR_memcpy_0003e34c)(*(int *)((int)unaff_s3 + (int)(unaff_s5[2] + 2)),param_4);\n          pppppppiVar17 = &local_44;\n          iVar13 = FUN_0001b67c((int *)((int)unaff_s3 + (int)(unaff_s5[2] + 3)));\n          if (iVar13 != 0) goto LAB_00021b34;\n        }\n        break;\n      }\n      unaff_s2 = (int *******)((int)unaff_s2 + 1);\n      unaff_s3 = unaff_s3 + 1;\n      unaff_s0 = pppppppiVar11;\n    } while (unaff_s6 != unaff_s2);\nLAB_00021ca8:\n    unaff_s0 = pppppppiVar11;\n    if ((int)pppppppiVar11 < 0) {\nLAB_00021f44:\n      if (unaff_s0 == (int *******)&SUB_fffffffe) {\nLAB_00021b34:\n        (*(code *)PTR_free_0003e354)(local_3c);\n        if (bVar1) {\n          (*(code *)PTR_free_0003e354)(local_70);\n        }\n        FUN_0001eb94(unaff_s5);\n        iVar13 = 0xc;\n        goto LAB_00021ed8;\n      }\n      if (unaff_s5 == (int **)0x0) {\n        (*(code *)PTR_free_0003e354)();\n        if (bVar1) {\n          (*(code *)PTR_free_0003e354)(local_70);\n          iVar13 = 1;\n        }\n        else {\n          iVar13 = 1;\n        }\n        goto LAB_00021ed8;\n      }\n      *(int ********)(puVar25 + 0x10) = &local_44;\n      pppppppiVar17 = (int *******)&local_48;\n      pppppppiVar18 = param_3;\n      pppppppiVar19 = param_4;\n      unaff_s0 = (int *******)(*pcVar5)(unaff_s5);\n    }\n  }\n  (*(code *)PTR_free_0003e354)(local_3c);\n  if (bVar1) {\n    (*(code *)PTR_free_0003e354)(local_70);\n  }\n  iVar13 = FUN_0001eb94(unaff_s5);\nLAB_00021ed8:\n  if (local_2c == *(int *)PTR___stack_chk_guard_0003e348) {\n    return iVar13;\n  }\n  pcVar5 = FUN_00021f9c;\n  iVar13 = local_2c;\n  puVar24 = PTR___stack_chk_fail_0003e32c;\n  (*(code *)PTR___stack_chk_fail_0003e32c)();\n  *(code **)(puVar26 + -4) = pcVar5;\n  *(undefined1 **)(puVar26 + -8) = auStack_98;\n  *(int **)(puVar26 + -0xc) = piVar23;\n  *(int ********)(puVar26 + -0x10) = unaff_s6;\n  *(int ***)(puVar26 + -0x14) = unaff_s5;\n  *(int ********)(puVar26 + -0x18) = param_4;\n  *(int *******)(puVar26 + -0x1c) = unaff_s3;\n  *(int ********)(puVar26 + -0x20) = unaff_s2;\n  *(int ********)(puVar26 + -0x24) = param_2;\n  *(int ********)(puVar26 + -0x28) = unaff_s0;\n  *(undefined **)(puVar26 + -0xc0) = puVar24 + 0x24174;\n  *(int *)(puVar26 + -0xac) = iVar13;\n  uVar27 = *(undefined4 *)(puVar26 + 0x14);\n  *(undefined4 *)(puVar26 + -0x2c) = **(undefined4 **)(puVar24 + 0x1c3ac);\n  *(int *******)(puVar26 + -0xb8) = *pppppppiVar17;\n  if (*(byte *)(pppppppiVar18 + 1) < 0x25) {\n                    \n                    \n    iVar13 = (*(code *)(puVar24 + 0x24174 +\n                       *(int *)(*(int *)(puVar24 + 0x1c1ac) + -0x2ac0 +\n                               (uint)*(byte *)(pppppppiVar18 + 1) * 4)))();\n    return iVar13;\n  }\n  iVar13 = *(int *)(puVar26 + -0x2c);\n  if (iVar13 == **(int **)(puVar24 + 0x1c3ac)) {\n    return 0;\n  }\n  pcVar5 = *(code **)(puVar24 + 0x1c390);\n  pcVar6 = FUN_00023824;\n  pppppppiVar15 = pppppppiVar17;\n  (*pcVar5)();\n  *(code **)(puVar26 + -0xe4) = pcVar6;\n  *(undefined4 *)(puVar26 + -0xe8) = uVar27;\n  *(int **)(puVar26 + -0xec) = piVar23;\n  *(undefined4 *)(puVar26 + -0xf0) = 0;\n  *(int ***)(puVar26 + -0xf4) = unaff_s5;\n  *(int ********)(puVar26 + -0xf8) = param_4;\n  *(int *******)(puVar26 + -0xfc) = unaff_s3;\n  *(int ********)(puVar26 + -0x100) = unaff_s2;\n  *(int ********)(puVar26 + -0x104) = param_2;\n  *(int ********)(puVar26 + -0x108) = pppppppiVar17;\n  *(code **)(puVar26 + -0x118) = pcVar5 + 0x228ec;\n  *(int *)(puVar26 + -0xe0) = iVar13;\n  *(int ********)(puVar26 + -0xd4) = pppppppiVar19;\n  iVar21 = *(int *)(puVar26 + -0xd0);\n  piVar23 = *(int **)(puVar26 + -0xcc);\n  *(int *******)(puVar26 + -0x110) = *pppppppiVar15;\n  *(int **)(puVar26 + -0x11c) = piVar23;\n  *(int *)(puVar26 + -0x120) = iVar21;\n  iVar13 = FUN_00021f9c();\n  if ((*piVar23 == 0) || (iVar13 != 0)) {\n    iVar22 = *(int *)(*(int *)(puVar26 + -0x118) + -0x7ed8);\n    *(int *)(puVar26 + -0x10c) = *(int *)(*(int *)(puVar26 + -0x118) + -0x7ed8) + -0x5cb8;\nLAB_0002390c:\n    do {\n      do {\n        iVar20 = iVar13;\n        if ((*(byte *)(pppppppiVar18 + 1) & 0xf7) == 2) {\n          return iVar20;\n        }\n        if ((iVar21 != 0) && (*(byte *)(pppppppiVar18 + 1) == 9)) {\n          return iVar20;\n        }\n        *(int **)(puVar26 + -0x11c) = piVar23;\n        *(int *)(puVar26 + -0x120) = iVar21;\n        iVar14 = (*(code *)(iVar22 + 0x1f9c))\n                           (*(undefined4 *)(puVar26 + -0xe0),pppppppiVar15,pppppppiVar18,\n                            *(undefined4 *)(puVar26 + -0xd4));\n        if (*piVar23 == 0) {\n          iVar13 = iVar14;\n          iVar2 = iVar20;\n          iVar3 = iVar14;\n          if (iVar20 == 0) goto LAB_0002390c;\n        }\n        else {\n          iVar2 = iVar14;\n          iVar3 = iVar20;\n          if (iVar14 == 0) {\n            if (iVar20 == 0) {\n              return 0;\n            }\n            FUN_0001920c(iVar20,*(int *)(*(int *)(puVar26 + -0x118) + -0x7ed8) + -0x2cc0,0);\n            return 0;\n          }\n        }\n        iVar13 = iVar2;\n      } while (iVar3 == 0);\n      iVar13 = (**(code **)(puVar26 + -0x10c))(*(undefined4 *)(puVar26 + -0x110),iVar20,iVar14,0x10)\n      ;\n    } while (iVar13 != 0);\n    iVar13 = *(int *)(*(int *)(puVar26 + -0x118) + -0x7ed8);\n    FUN_0001920c(iVar14,iVar13 + -0x2cc0,0);\n    FUN_0001920c(iVar20,iVar13 + -0x2cc0,0);\n    *piVar23 = 0xc;\n    iVar13 = 0;\n  }\n  return iVar13;\n}" ({ "{") (declaration "bool bVar1;" (primitive_type "bool") (identifier "bVar1") (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (declaration "int *******pppppppiVar4;" (primitive_type "int") (pointer_declarator "*******pppppppiVar4" (* "*") (pointer_declarator "******pppppppiVar4" (* "*") (pointer_declarator "*****pppppppiVar4" (* "*") (pointer_declarator "****pppppppiVar4" (* "*") (pointer_declarator "***pppppppiVar4" (* "*") (pointer_declarator "**pppppppiVar4" (* "*") (pointer_declarator "*pppppppiVar4" (* "*") (identifier "pppppppiVar4")))))))) (; ";")) (declaration "code *pcVar5;" (type_identifier "code") (pointer_declarator "*pcVar5" (* "*") (identifier "pcVar5")) (; ";")) (declaration "code *pcVar6;" (type_identifier "code") (pointer_declarator "*pcVar6" (* "*") (identifier "pcVar6")) (; ";")) (declaration "code *pcVar7;" (type_identifier "code") (pointer_declarator "*pcVar7" (* "*") (identifier "pcVar7")) (; ";")) (declaration "int *****pppppiVar8;" (primitive_type "int") (pointer_declarator "*****pppppiVar8" (* "*") (pointer_declarator "****pppppiVar8" (* "*") (pointer_declarator "***pppppiVar8" (* "*") (pointer_declarator "**pppppiVar8" (* "*") (pointer_declarator "*pppppiVar8" (* "*") (identifier "pppppiVar8")))))) (; ";")) (declaration "int *******pppppppiVar9;" (primitive_type "int") (pointer_declarator "*******pppppppiVar9" (* "*") (pointer_declarator "******pppppppiVar9" (* "*") (pointer_declarator "*****pppppppiVar9" (* "*") (pointer_declarator "****pppppppiVar9" (* "*") (pointer_declarator "***pppppppiVar9" (* "*") (pointer_declarator "**pppppppiVar9" (* "*") (pointer_declarator "*pppppppiVar9" (* "*") (identifier "pppppppiVar9")))))))) (; ";")) (declaration "int *piVar10;" (primitive_type "int") (pointer_declarator "*piVar10" (* "*") (identifier "piVar10")) (; ";")) (declaration "int *******pppppppiVar11;" (primitive_type "int") (pointer_declarator "*******pppppppiVar11" (* "*") (pointer_declarator "******pppppppiVar11" (* "*") (pointer_declarator "*****pppppppiVar11" (* "*") (pointer_declarator "****pppppppiVar11" (* "*") (pointer_declarator "***pppppppiVar11" (* "*") (pointer_declarator "**pppppppiVar11" (* "*") (pointer_declarator "*pppppppiVar11" (* "*") (identifier "pppppppiVar11")))))))) (; ";")) (declaration "int ******ppppppiVar12;" (primitive_type "int") (pointer_declarator "******ppppppiVar12" (* "*") (pointer_declarator "*****ppppppiVar12" (* "*") (pointer_declarator "****ppppppiVar12" (* "*") (pointer_declarator "***ppppppiVar12" (* "*") (pointer_declarator "**ppppppiVar12" (* "*") (pointer_declarator "*ppppppiVar12" (* "*") (identifier "ppppppiVar12"))))))) (; ";")) (declaration "int iVar13;" (primitive_type "int") (identifier "iVar13") (; ";")) (declaration "int iVar14;" (primitive_type "int") (identifier "iVar14") (; ";")) (declaration "int *******pppppppiVar15;" (primitive_type "int") (pointer_declarator "*******pppppppiVar15" (* "*") (pointer_declarator "******pppppppiVar15" (* "*") (pointer_declarator "*****pppppppiVar15" (* "*") (pointer_declarator "****pppppppiVar15" (* "*") (pointer_declarator "***pppppppiVar15" (* "*") (pointer_declarator "**pppppppiVar15" (* "*") (pointer_declarator "*pppppppiVar15" (* "*") (identifier "pppppppiVar15")))))))) (; ";")) (declaration "int ******ppppppiVar16;" (primitive_type "int") (pointer_declarator "******ppppppiVar16" (* "*") (pointer_declarator "*****ppppppiVar16" (* "*") (pointer_declarator "****ppppppiVar16" (* "*") (pointer_declarator "***ppppppiVar16" (* "*") (pointer_declarator "**ppppppiVar16" (* "*") (pointer_declarator "*ppppppiVar16" (* "*") (identifier "ppppppiVar16"))))))) (; ";")) (declaration "int *******pppppppiVar17;" (primitive_type "int") (pointer_declarator "*******pppppppiVar17" (* "*") (pointer_declarator "******pppppppiVar17" (* "*") (pointer_declarator "*****pppppppiVar17" (* "*") (pointer_declarator "****pppppppiVar17" (* "*") (pointer_declarator "***pppppppiVar17" (* "*") (pointer_declarator "**pppppppiVar17" (* "*") (pointer_declarator "*pppppppiVar17" (* "*") (identifier "pppppppiVar17")))))))) (; ";")) (declaration "int *******pppppppiVar18;" (primitive_type "int") (pointer_declarator "*******pppppppiVar18" (* "*") (pointer_declarator "******pppppppiVar18" (* "*") (pointer_declarator "*****pppppppiVar18" (* "*") (pointer_declarator "****pppppppiVar18" (* "*") (pointer_declarator "***pppppppiVar18" (* "*") (pointer_declarator "**pppppppiVar18" (* "*") (pointer_declarator "*pppppppiVar18" (* "*") (identifier "pppppppiVar18")))))))) (; ";")) (declaration "int *******pppppppiVar19;" (primitive_type "int") (pointer_declarator "*******pppppppiVar19" (* "*") (pointer_declarator "******pppppppiVar19" (* "*") (pointer_declarator "*****pppppppiVar19" (* "*") (pointer_declarator "****pppppppiVar19" (* "*") (pointer_declarator "***pppppppiVar19" (* "*") (pointer_declarator "**pppppppiVar19" (* "*") (pointer_declarator "*pppppppiVar19" (* "*") (identifier "pppppppiVar19")))))))) (; ";")) (declaration "int *******unaff_s0;" (primitive_type "int") (pointer_declarator "*******unaff_s0" (* "*") (pointer_declarator "******unaff_s0" (* "*") (pointer_declarator "*****unaff_s0" (* "*") (pointer_declarator "****unaff_s0" (* "*") (pointer_declarator "***unaff_s0" (* "*") (pointer_declarator "**unaff_s0" (* "*") (pointer_declarator "*unaff_s0" (* "*") (identifier "unaff_s0")))))))) (; ";")) (declaration "int *******unaff_s2;" (primitive_type "int") (pointer_declarator "*******unaff_s2" (* "*") (pointer_declarator "******unaff_s2" (* "*") (pointer_declarator "*****unaff_s2" (* "*") (pointer_declarator "****unaff_s2" (* "*") (pointer_declarator "***unaff_s2" (* "*") (pointer_declarator "**unaff_s2" (* "*") (pointer_declarator "*unaff_s2" (* "*") (identifier "unaff_s2")))))))) (; ";")) (declaration "int iVar20;" (primitive_type "int") (identifier "iVar20") (; ";")) (declaration "int ******unaff_s3;" (primitive_type "int") (pointer_declarator "******unaff_s3" (* "*") (pointer_declarator "*****unaff_s3" (* "*") (pointer_declarator "****unaff_s3" (* "*") (pointer_declarator "***unaff_s3" (* "*") (pointer_declarator "**unaff_s3" (* "*") (pointer_declarator "*unaff_s3" (* "*") (identifier "unaff_s3"))))))) (; ";")) (declaration "int iVar21;" (primitive_type "int") (identifier "iVar21") (; ";")) (declaration "int **unaff_s5;" (primitive_type "int") (pointer_declarator "**unaff_s5" (* "*") (pointer_declarator "*unaff_s5" (* "*") (identifier "unaff_s5"))) (; ";")) (declaration "int iVar22;" (primitive_type "int") (identifier "iVar22") (; ";")) (declaration "int *******unaff_s6;" (primitive_type "int") (pointer_declarator "*******unaff_s6" (* "*") (pointer_declarator "******unaff_s6" (* "*") (pointer_declarator "*****unaff_s6" (* "*") (pointer_declarator "****unaff_s6" (* "*") (pointer_declarator "***unaff_s6" (* "*") (pointer_declarator "**unaff_s6" (* "*") (pointer_declarator "*unaff_s6" (* "*") (identifier "unaff_s6")))))))) (; ";")) (declaration "int *piVar23;" (primitive_type "int") (pointer_declarator "*piVar23" (* "*") (identifier "piVar23")) (; ";")) (declaration "undefined *puVar24;" (type_identifier "undefined") (pointer_declarator "*puVar24" (* "*") (identifier "puVar24")) (; ";")) (declaration "undefined1 *puVar25;" (type_identifier "undefined1") (pointer_declarator "*puVar25" (* "*") (identifier "puVar25")) (; ";")) (declaration "undefined1 *puVar26;" (type_identifier "undefined1") (pointer_declarator "*puVar26" (* "*") (identifier "puVar26")) (; ";")) (declaration "undefined4 uVar27;" (type_identifier "undefined4") (identifier "uVar27") (; ";")) (declaration "undefined1 auStack_98 [24];" (type_identifier "undefined1") (array_declarator "auStack_98 [24]" (identifier "auStack_98") ([ "[") (number_literal "24") (] "]")) (; ";")) (declaration "int *******local_70;" (primitive_type "int") (pointer_declarator "*******local_70" (* "*") (pointer_declarator "******local_70" (* "*") (pointer_declarator "*****local_70" (* "*") (pointer_declarator "****local_70" (* "*") (pointer_declarator "***local_70" (* "*") (pointer_declarator "**local_70" (* "*") (pointer_declarator "*local_70" (* "*") (identifier "local_70")))))))) (; ";")) (declaration "int *******local_48;" (primitive_type "int") (pointer_declarator "*******local_48" (* "*") (pointer_declarator "******local_48" (* "*") (pointer_declarator "*****local_48" (* "*") (pointer_declarator "****local_48" (* "*") (pointer_declarator "***local_48" (* "*") (pointer_declarator "**local_48" (* "*") (pointer_declarator "*local_48" (* "*") (identifier "local_48")))))))) (; ";")) (declaration "int ******local_44;" (primitive_type "int") (pointer_declarator "******local_44" (* "*") (pointer_declarator "*****local_44" (* "*") (pointer_declarator "****local_44" (* "*") (pointer_declarator "***local_44" (* "*") (pointer_declarator "**local_44" (* "*") (pointer_declarator "*local_44" (* "*") (identifier "local_44"))))))) (; ";")) (declaration "undefined4 local_40;" (type_identifier "undefined4") (identifier "local_40") (; ";")) (declaration "undefined4 local_3c;" (type_identifier "undefined4") (identifier "local_3c") (; ";")) (declaration "int *local_38;" (primitive_type "int") (pointer_declarator "*local_38" (* "*") (identifier "local_38")) (; ";")) (declaration "undefined4 local_34;" (type_identifier "undefined4") (identifier "local_34") (; ";")) (declaration "int local_30;" (primitive_type "int") (identifier "local_30") (; ";")) (declaration "int local_2c;" (primitive_type "int") (identifier "local_2c") (; ";")) (expression_statement "puVar25 = auStack_98;" (assignment_expression "puVar25 = auStack_98" (identifier "puVar25") (= "=") (identifier "auStack_98")) (; ";")) (expression_statement "puVar26 = auStack_98;" (assignment_expression "puVar26 = auStack_98" (identifier "puVar26") (= "=") (identifier "auStack_98")) (; ";")) (expression_statement "local_2c = *(int *)PTR___stack_chk_guard_0003e348;" (assignment_expression "local_2c = *(int *)PTR___stack_chk_guard_0003e348" (identifier "local_2c") (= "=") (pointer_expression "*(int *)PTR___stack_chk_guard_0003e348" (* "*") (cast_expression "(int *)PTR___stack_chk_guard_0003e348" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_guard_0003e348")))) (; ";")) (expression_statement "piVar23 = (int *)*param_1;" (assignment_expression "piVar23 = (int *)*param_1" (identifier "piVar23") (= "=") (cast_expression "(int *)*param_1" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_1" (* "*") (identifier "param_1")))) (; ";")) (expression_statement "local_38 = (int *)0x0;" (assignment_expression "local_38 = (int *)0x0" (identifier "local_38") (= "=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "local_34 = 2;" (assignment_expression "local_34 = 2" (identifier "local_34") (= "=") (number_literal "2")) (; ";")) (expression_statement "local_30 = 0;" (assignment_expression "local_30 = 0" (identifier "local_30") (= "=") (number_literal "0")) (; ";")) (expression_statement "pppppppiVar17 = param_2;" (assignment_expression "pppppppiVar17 = param_2" (identifier "pppppppiVar17") (= "=") (identifier "param_2")) (; ";")) (expression_statement "pppppppiVar18 = param_3;" (assignment_expression "pppppppiVar18 = param_3" (identifier "pppppppiVar18") (= "=") (identifier "param_3")) (; ";")) (expression_statement "pppppppiVar19 = param_4;" (assignment_expression "pppppppiVar19 = param_4" (identifier "pppppppiVar19") (= "=") (identifier "param_4")) (; ";")) (if_statement "if (param_5 == '\0') {\n    unaff_s5 = (int **)0x0;\n  }\n  else {\n    local_30 = (*(code *)PTR_malloc_0003e2f8)(0x30);\n    if (local_30 == 0) {\n      iVar13 = 0xc;\n      goto LAB_00021ed8;\n    }\n    unaff_s5 = &local_38;\n  }" (if "if") (parenthesized_expression "(param_5 == '\0')" (( "(") (binary_expression "param_5 == '\0'" (identifier "param_5") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n    unaff_s5 = (int **)0x0;\n  }" ({ "{") (expression_statement "unaff_s5 = (int **)0x0;" (assignment_expression "unaff_s5 = (int **)0x0" (identifier "unaff_s5") (= "=") (cast_expression "(int **)0x0" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (number_literal "0x0"))) (; ";")) (} "}")) (else_clause "else {\n    local_30 = (*(code *)PTR_malloc_0003e2f8)(0x30);\n    if (local_30 == 0) {\n      iVar13 = 0xc;\n      goto LAB_00021ed8;\n    }\n    unaff_s5 = &local_38;\n  }" (else "else") (compound_statement "{\n    local_30 = (*(code *)PTR_malloc_0003e2f8)(0x30);\n    if (local_30 == 0) {\n      iVar13 = 0xc;\n      goto LAB_00021ed8;\n    }\n    unaff_s5 = &local_38;\n  }" ({ "{") (expression_statement "local_30 = (*(code *)PTR_malloc_0003e2f8)(0x30);" (assignment_expression "local_30 = (*(code *)PTR_malloc_0003e2f8)(0x30)" (identifier "local_30") (= "=") (call_expression "(*(code *)PTR_malloc_0003e2f8)(0x30)" (parenthesized_expression "(*(code *)PTR_malloc_0003e2f8)" (( "(") (pointer_expression "*(code *)PTR_malloc_0003e2f8" (* "*") (cast_expression "(code *)PTR_malloc_0003e2f8" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_malloc_0003e2f8"))) () ")")) (argument_list "(0x30)" (( "(") (number_literal "0x30") () ")")))) (; ";")) (if_statement "if (local_30 == 0) {\n      iVar13 = 0xc;\n      goto LAB_00021ed8;\n    }" (if "if") (parenthesized_expression "(local_30 == 0)" (( "(") (binary_expression "local_30 == 0" (identifier "local_30") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      iVar13 = 0xc;\n      goto LAB_00021ed8;\n    }" ({ "{") (expression_statement "iVar13 = 0xc;" (assignment_expression "iVar13 = 0xc" (identifier "iVar13") (= "=") (number_literal "0xc")) (; ";")) (goto_statement "goto LAB_00021ed8;" (goto "goto") (statement_identifier "LAB_00021ed8") (; ";")) (} "}"))) (expression_statement "unaff_s5 = &local_38;" (assignment_expression "unaff_s5 = &local_38" (identifier "unaff_s5") (= "=") (pointer_expression "&local_38" (& "&") (identifier "local_38"))) (; ";")) (} "}")))) (expression_statement "unaff_s0 = (int *******)piVar23[0x12];" (assignment_expression "unaff_s0 = (int *******)piVar23[0x12]" (identifier "unaff_s0") (= "=") (cast_expression "(int *******)piVar23[0x12]" (( "(") (type_descriptor "int *******" (primitive_type "int") (abstract_pointer_declarator "*******" (* "*") (abstract_pointer_declarator "******" (* "*") (abstract_pointer_declarator "*****" (* "*") (abstract_pointer_declarator "****" (* "*") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))))))) () ")") (subscript_expression "piVar23[0x12]" (identifier "piVar23") ([ "[") (number_literal "0x12") (] "]")))) (; ";")) (expression_statement "local_44 = (int ******)0x0;" (assignment_expression "local_44 = (int ******)0x0" (identifier "local_44") (= "=") (cast_expression "(int ******)0x0" (( "(") (type_descriptor "int ******" (primitive_type "int") (abstract_pointer_declarator "******" (* "*") (abstract_pointer_declarator "*****" (* "*") (abstract_pointer_declarator "****" (* "*") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))))))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "local_40 = 0;" (assignment_expression "local_40 = 0" (identifier "local_40") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_3c = 0;" (assignment_expression "local_3c = 0" (identifier "local_3c") (= "=") (number_literal "0")) (; ";")) (expression_statement "pppppppiVar15 = (int *******)((int)param_3 * 8);" (assignment_expression "pppppppiVar15 = (int *******)((int)param_3 * 8)" (identifier "pppppppiVar15") (= "=") (cast_expression "(int *******)((int)param_3 * 8)" (( "(") (type_descriptor "int *******" (primitive_type "int") (abstract_pointer_declarator "*******" (* "*") (abstract_pointer_declarator "******" (* "*") (abstract_pointer_declarator "*****" (* "*") (abstract_pointer_declarator "****" (* "*") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))))))) () ")") (parenthesized_expression "((int)param_3 * 8)" (( "(") (binary_expression "(int)param_3 * 8" (cast_expression "(int)param_3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_3")) (* "*") (number_literal "8")) () ")")))) (; ";")) (if_statement "if (pppppppiVar15 < (int *******)0xfc0) {\n    puVar25 = auStack_98 + (int)param_3 * -8;\n    local_70 = (int *******)(&stack0xffffff80 + (int)param_3 * -8);\n    bVar1 = false;\n  }\n  else {\n    local_70 = (int *******)(*(code *)PTR_malloc_0003e2f8)(pppppppiVar15);\n    bVar1 = true;\n    if (local_70 == (int *******)0x0) {\n      FUN_0001eb94(unaff_s5);\n      iVar13 = 0xc;\n      puVar26 = auStack_98;\n      goto LAB_00021ed8;\n    }\n  }" (if "if") (parenthesized_expression "(pppppppiVar15 < (int *******)0xfc0)" (( "(") (binary_expression "pppppppiVar15 < (int *******)0xfc0" (identifier "pppppppiVar15") (< "<") (cast_expression "(int *******)0xfc0" (( "(") (type_descriptor "int *******" (primitive_type "int") (abstract_pointer_declarator "*******" (* "*") (abstract_pointer_declarator "******" (* "*") (abstract_pointer_declarator "*****" (* "*") (abstract_pointer_declarator "****" (* "*") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))))))) () ")") (number_literal "0xfc0"))) () ")")) (compound_statement "{\n    puVar25 = auStack_98 + (int)param_3 * -8;\n    local_70 = (int *******)(&stack0xffffff80 + (int)param_3 * -8);\n    bVar1 = false;\n  }" ({ "{") (expression_statement "puVar25 = auStack_98 + (int)param_3 * -8;" (assignment_expression "puVar25 = auStack_98 + (int)param_3 * -8" (identifier "puVar25") (= "=") (binary_expression "auStack_98 + (int)param_3 * -8" (identifier "auStack_98") (+ "+") (binary_expression "(int)param_3 * -8" (cast_expression "(int)param_3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_3")) (* "*") (number_literal "-8")))) (; ";")) (expression_statement "local_70 = (int *******)(&stack0xffffff80 + (int)param_3 * -8);" (assignment_expression "local_70 = (int *******)(&stack0xffffff80 + (int)param_3 * -8)" (identifier "local_70") (= "=") (cast_expression "(int *******)(&stack0xffffff80 + (int)param_3 * -8)" (( "(") (type_descriptor "int *******" (primitive_type "int") (abstract_pointer_declarator "*******" (* "*") (abstract_pointer_declarator "******" (* "*") (abstract_pointer_declarator "*****" (* "*") (abstract_pointer_declarator "****" (* "*") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))))))) () ")") (parenthesized_expression "(&stack0xffffff80 + (int)param_3 * -8)" (( "(") (binary_expression "&stack0xffffff80 + (int)param_3 * -8" (pointer_expression "&stack0xffffff80" (& "&") (identifier "stack0xffffff80")) (+ "+") (binary_expression "(int)param_3 * -8" (cast_expression "(int)param_3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_3")) (* "*") (number_literal "-8"))) () ")")))) (; ";")) (expression_statement "bVar1 = false;" (assignment_expression "bVar1 = false" (identifier "bVar1") (= "=") (false "false")) (; ";")) (} "}")) (else_clause "else {\n    local_70 = (int *******)(*(code *)PTR_malloc_0003e2f8)(pppppppiVar15);\n    bVar1 = true;\n    if (local_70 == (int *******)0x0) {\n      FUN_0001eb94(unaff_s5);\n      iVar13 = 0xc;\n      puVar26 = auStack_98;\n      goto LAB_00021ed8;\n    }\n  }" (else "else") (compound_statement "{\n    local_70 = (int *******)(*(code *)PTR_malloc_0003e2f8)(pppppppiVar15);\n    bVar1 = true;\n    if (local_70 == (int *******)0x0) {\n      FUN_0001eb94(unaff_s5);\n      iVar13 = 0xc;\n      puVar26 = auStack_98;\n      goto LAB_00021ed8;\n    }\n  }" ({ "{") (expression_statement "local_70 = (int *******)(*(code *)PTR_malloc_0003e2f8)(pppppppiVar15);" (assignment_expression "local_70 = (int *******)(*(code *)PTR_malloc_0003e2f8)(pppppppiVar15)" (identifier "local_70") (= "=") (cast_expression "(int *******)(*(code *)PTR_malloc_0003e2f8)(pppppppiVar15)" (( "(") (type_descriptor "int *******" (primitive_type "int") (abstract_pointer_declarator "*******" (* "*") (abstract_pointer_declarator "******" (* "*") (abstract_pointer_declarator "*****" (* "*") (abstract_pointer_declarator "****" (* "*") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))))))) () ")") (call_expression "(*(code *)PTR_malloc_0003e2f8)(pppppppiVar15)" (parenthesized_expression "(*(code *)PTR_malloc_0003e2f8)" (( "(") (pointer_expression "*(code *)PTR_malloc_0003e2f8" (* "*") (cast_expression "(code *)PTR_malloc_0003e2f8" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_malloc_0003e2f8"))) () ")")) (argument_list "(pppppppiVar15)" (( "(") (identifier "pppppppiVar15") () ")"))))) (; ";")) (expression_statement "bVar1 = true;" (assignment_expression "bVar1 = true" (identifier "bVar1") (= "=") (true "true")) (; ";")) (if_statement "if (local_70 == (int *******)0x0) {\n      FUN_0001eb94(unaff_s5);\n      iVar13 = 0xc;\n      puVar26 = auStack_98;\n      goto LAB_00021ed8;\n    }" (if "if") (parenthesized_expression "(local_70 == (int *******)0x0)" (( "(") (binary_expression "local_70 == (int *******)0x0" (identifier "local_70") (== "==") (cast_expression "(int *******)0x0" (( "(") (type_descriptor "int *******" (primitive_type "int") (abstract_pointer_declarator "*******" (* "*") (abstract_pointer_declarator "******" (* "*") (abstract_pointer_declarator "*****" (* "*") (abstract_pointer_declarator "****" (* "*") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))))))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      FUN_0001eb94(unaff_s5);\n      iVar13 = 0xc;\n      puVar26 = auStack_98;\n      goto LAB_00021ed8;\n    }" ({ "{") (expression_statement "FUN_0001eb94(unaff_s5);" (call_expression "FUN_0001eb94(unaff_s5)" (identifier "FUN_0001eb94") (argument_list "(unaff_s5)" (( "(") (identifier "unaff_s5") () ")"))) (; ";")) (expression_statement "iVar13 = 0xc;" (assignment_expression "iVar13 = 0xc" (identifier "iVar13") (= "=") (number_literal "0xc")) (; ";")) (expression_statement "puVar26 = auStack_98;" (assignment_expression "puVar26 = auStack_98" (identifier "puVar26") (= "=") (identifier "auStack_98")) (; ";")) (goto_statement "goto LAB_00021ed8;" (goto "goto") (statement_identifier "LAB_00021ed8") (; ";")) (} "}"))) (} "}")))) (expression_statement "pppppppiVar17 = param_4;" (assignment_expression "pppppppiVar17 = param_4" (identifier "pppppppiVar17") (= "=") (identifier "param_4")) (; ";")) (expression_statement "pppppppiVar18 = pppppppiVar15;" (assignment_expression "pppppppiVar18 = pppppppiVar15" (identifier "pppppppiVar18") (= "=") (identifier "pppppppiVar15")) (; ";")) (expression_statement "(*(code *)PTR_memcpy_0003e34c)(local_70);" (call_expression "(*(code *)PTR_memcpy_0003e34c)(local_70)" (parenthesized_expression "(*(code *)PTR_memcpy_0003e34c)" (( "(") (pointer_expression "*(code *)PTR_memcpy_0003e34c" (* "*") (cast_expression "(code *)PTR_memcpy_0003e34c" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_memcpy_0003e34c"))) () ")")) (argument_list "(local_70)" (( "(") (identifier "local_70") () ")"))) (; ";")) (expression_statement "local_48 = (int *******)*param_4;" (assignment_expression "local_48 = (int *******)*param_4" (identifier "local_48") (= "=") (cast_expression "(int *******)*param_4" (( "(") (type_descriptor "int *******" (primitive_type "int") (abstract_pointer_declarator "*******" (* "*") (abstract_pointer_declarator "******" (* "*") (abstract_pointer_declarator "*****" (* "*") (abstract_pointer_declarator "****" (* "*") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))))))) () ")") (pointer_expression "*param_4" (* "*") (identifier "param_4")))) (; ";")) (expression_statement "pcVar5 = (code *)(PTR_DAT_0003e238 + -0x10e8);" (assignment_expression "pcVar5 = (code *)(PTR_DAT_0003e238 + -0x10e8)" (identifier "pcVar5") (= "=") (cast_expression "(code *)(PTR_DAT_0003e238 + -0x10e8)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_0003e238 + -0x10e8)" (( "(") (binary_expression "PTR_DAT_0003e238 + -0x10e8" (identifier "PTR_DAT_0003e238") (+ "+") (number_literal "-0x10e8")) () ")")))) (; ";")) (expression_statement "pcVar6 = (code *)(PTR_DAT_0003e238 + -0x6f00);" (assignment_expression "pcVar6 = (code *)(PTR_DAT_0003e238 + -0x6f00)" (identifier "pcVar6") (= "=") (cast_expression "(code *)(PTR_DAT_0003e238 + -0x6f00)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_0003e238 + -0x6f00)" (( "(") (binary_expression "PTR_DAT_0003e238 + -0x6f00" (identifier "PTR_DAT_0003e238") (+ "+") (number_literal "-0x6f00")) () ")")))) (; ";")) (expression_statement "pcVar7 = (code *)(PTR_DAT_0003e238 + -0x589c);" (assignment_expression "pcVar7 = (code *)(PTR_DAT_0003e238 + -0x589c)" (identifier "pcVar7") (= "=") (cast_expression "(code *)(PTR_DAT_0003e238 + -0x589c)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_DAT_0003e238 + -0x589c)" (( "(") (binary_expression "PTR_DAT_0003e238 + -0x589c" (identifier "PTR_DAT_0003e238") (+ "+") (number_literal "-0x589c")) () ")")))) (; ";")) (while_statement "while (unaff_s2 = local_48, puVar24 = PTR_memcpy_0003e34c, puVar26 = puVar25,\n        (int)local_48 <= (int)param_4[1]) {\n    piVar10 = (int *)(*piVar23 + (int)unaff_s0 * 8);\n    if (*(char *)(piVar10 + 1) == '\b') {\n      iVar13 = *piVar10;\n      if (iVar13 + 1 < (int)param_3) {\n        param_4[(iVar13 + 1) * 2] = (int ******)local_48;\n        (param_4 + (iVar13 + 1) * 2)[1] = (int ******)0xffffffff;\n      }\nLAB_00021cec:\n      pppppppiVar11 = (int *******)param_4[1];\n    }\n    else {\n      if ((*(char *)(piVar10 + 1) != '\t') || (iVar13 = *piVar10 + 1, (int)param_3 <= iVar13))\n      goto LAB_00021cec;\n      pppppppiVar17 = param_4 + iVar13 * 2;\n      if ((int)*pppppppiVar17 < (int)local_48) {\n        pppppppiVar17[1] = (int ******)local_48;\n        pppppppiVar17 = param_4;\n        pppppppiVar18 = pppppppiVar15;\n        (*(code *)puVar24)(local_70);\n        pppppppiVar11 = (int *******)param_4[1];\n      }\n      else {\n        if (((piVar10[1] & 0x1000U) == 0) ||\n           (pppppppiVar18 = pppppppiVar15, local_70[iVar13 * 2] == (int ******)0xffffffff)) {\n          pppppppiVar17[1] = (int ******)local_48;\n          goto LAB_00021cec;\n        }\n        pppppppiVar17 = local_70;\n        (*(code *)PTR_memcpy_0003e34c)(param_4);\n        pppppppiVar11 = (int *******)param_4[1];\n      }\n    }\n    if ((pppppppiVar11 == unaff_s2) && ((int *******)param_2[0x18] == unaff_s0)) {\n      if (unaff_s5 == (int **)0x0) {\n        (*(code *)PTR_free_0003e354)(local_3c);\n        if (bVar1) {\n          (*(code *)PTR_free_0003e354)(local_70);\n          iVar13 = 0;\n        }\n        else {\n          iVar13 = 0;\n        }\n      }\n      else {\n        if (param_3 != (int *******)0x0) {\n          pppppppiVar9 = (int *******)0x0;\n          pppppppiVar18 = (int *******)0xffffffff;\n          pppppppiVar11 = param_4;\n          do {\n            if ((-1 < (int)*pppppppiVar11) &&\n               (pppppppiVar17 = (int *******)pppppppiVar11[1],\n               (int *******)pppppppiVar11[1] == (int *******)0xffffffff)) break;\n            pppppppiVar9 = (int *******)((int)pppppppiVar9 + 1);\n            pppppppiVar11 = pppppppiVar11 + 2;\n            pppppppiVar17 = param_3;\n          } while (param_3 != pppppppiVar9);\n          if (pppppppiVar9 != param_3) {\n            *(int ********)(puVar25 + 0x10) = &local_44;\n            pppppppiVar17 = (int *******)&local_48;\n            pppppppiVar18 = param_3;\n            pppppppiVar19 = param_4;\n            unaff_s0 = (int *******)(*pcVar5)(unaff_s5);\n            goto LAB_00021d04;\n          }\n        }\n        (*(code *)PTR_free_0003e354)(local_3c);\n        if (bVar1) {\n          (*(code *)PTR_free_0003e354)(local_70);\n        }\n        iVar13 = FUN_0001eb94(unaff_s5);\n      }\n      goto LAB_00021ed8;\n    }\nLAB_00021d04:\n    unaff_s2 = (int *******)param_2[0x15];\n    unaff_s3 = (int ******)((int)unaff_s0 * 8);\n    ppppppiVar12 = *unaff_s2 + (int)unaff_s0 * 2;\n    if ((*(byte *)(ppppppiVar12 + 1) & 8) == 0) {\n      if (((uint)ppppppiVar12[1] & 0x800) == 0) {\n        if (*(byte *)(ppppppiVar12 + 1) == 4) {\n          ppppppiVar16 = (param_4 + ((int)*ppppppiVar12 + 1) * 2)[1];\n          ppppppiVar12 = param_4[((int)*ppppppiVar12 + 1) * 2];\n          unaff_s6 = (int *******)((int)ppppppiVar16 - (int)ppppppiVar12);\n          if (unaff_s5 == (int **)0x0) {\n            pppppppiVar17 = unaff_s0;\n            if (unaff_s6 != (int *******)0x0) goto LAB_00021da8;\nLAB_00021dd0:\n            pppppppiVar17 = unaff_s0;\n            iVar13 = (*pcVar7)(&local_44);\n            if (iVar13 == 0) goto LAB_00021b34;\n            pppppppiVar11 = (int *******)*unaff_s2[5][(int)unaff_s0 * 3 + 2];\n            pppppppiVar17 = pppppppiVar11;\n            iVar13 = (*pcVar6)(param_2[0x19][(int)local_48] + 1);\n            if (iVar13 != 0) goto LAB_00021ca8;\n            goto LAB_00021c18;\n          }\n          if ((ppppppiVar12 != (int ******)0xffffffff) && (ppppppiVar16 != (int ******)0xffffffff))\n          {\n            if (unaff_s6 == (int *******)0x0) goto LAB_00021dd0;\n            pppppppiVar17 = (int *******)((int)param_2[1] + (int)local_48);\n            pppppppiVar18 = unaff_s6;\n            iVar13 = (*(code *)PTR_memcmp_0003e338)((int)param_2[1] + (int)ppppppiVar12);\n            if (iVar13 == 0) goto LAB_00021da8;\n          }\n        }\n        else {\nLAB_00021c18:\n          unaff_s6 = local_48;\n          pppppppiVar17 = (int *******)(*unaff_s2 + (int)unaff_s0 * 2);\n          pppppppiVar18 = local_48;\n          iVar13 = FUN_0001c4f8(param_2);\n          if (iVar13 != 0) {\n            pppppppiVar11 = (int *******)unaff_s2[3][(int)unaff_s0];\n            local_48 = (int *******)((int)unaff_s6 + 1);\n            goto LAB_00021c5c;\n          }\n        }\n      }\n      else {\n        pppppppiVar17 = unaff_s0;\n        pppppppiVar18 = param_2;\n        pppppppiVar19 = local_48;\n        unaff_s6 = (int *******)FUN_000200a0(unaff_s2);\n        if (unaff_s6 == (int *******)0x0) goto LAB_00021c18;\nLAB_00021da8:\n        pppppppiVar11 = (int *******)unaff_s2[3][(int)unaff_s0];\n        local_48 = (int *******)((int)unaff_s6 + (int)local_48);\nLAB_00021c5c:\n        unaff_s6 = local_48;\n        if (unaff_s5 == (int **)0x0) {\nLAB_00021ca4:\n          local_40 = 0;\n          goto LAB_00021ca8;\n        }\n        unaff_s6 = (int *******)((int)local_48 * 4);\n        if ((int)local_48 <= (int)param_2[0x17]) {\n          unaff_s6 = (int *******)(param_2[0x19] + (int)local_48);\n          pppppppiVar17 = pppppppiVar11;\n          if ((*unaff_s6 != (int ******)0x0) && (iVar13 = (*pcVar6)(*unaff_s6 + 1), iVar13 != 0))\n          goto LAB_00021ca4;\n        }\n      }\nLAB_00021f3c:\n      unaff_s0 = (int *******)0xffffffff;\n      goto LAB_00021f44;\n    }\n    pppppiVar8 = param_2[0x19][(int)local_48];\n    unaff_s2 = (int *******)(unaff_s2[5] + (int)unaff_s0 * 3);\n    pppppppiVar17 = unaff_s0;\n    iVar13 = (*pcVar7)(&local_44);\n    if (iVar13 == 0) goto LAB_00021b34;\n    unaff_s6 = (int *******)unaff_s2[1];\n    if ((int)unaff_s6 < 1) goto LAB_00021f3c;\n    unaff_s3 = unaff_s2[2];\n    unaff_s2 = (int *******)0x0;\n    unaff_s0 = (int *******)0xffffffff;\n    do {\n      pppppppiVar9 = (int *******)*unaff_s3;\n      pppppppiVar17 = pppppppiVar9;\n      iVar13 = (*pcVar6)(pppppiVar8 + 1);\n      pppppppiVar11 = unaff_s0;\n      if ((iVar13 != 0) &&\n         (pppppppiVar17 = unaff_s0, pppppppiVar11 = pppppppiVar9,\n         unaff_s0 != (int *******)0xffffffff)) {\n        iVar13 = (*pcVar6)(&local_44);\n        pppppppiVar4 = local_48;\n        if ((iVar13 == 0) &&\n           (pppppppiVar11 = unaff_s0, unaff_s6 = local_48, unaff_s5 != (int **)0x0)) {\n          unaff_s2 = (int *******)*unaff_s5;\n          *unaff_s5 = (int *)((int)unaff_s2 + 1);\n          pppppppiVar17 = (int *******)unaff_s5[1];\n          if ((int *******)((int)unaff_s2 + 1) == pppppppiVar17) {\n            pppppppiVar17 = (int *******)((int)pppppppiVar17 * 0x30);\n            piVar10 = (int *)(*(code *)PTR_realloc_0003e2fc)(unaff_s5[2]);\n            unaff_s6 = pppppppiVar4;\n            if (piVar10 == (int *)0x0) goto LAB_00021b34;\n            unaff_s5[1] = (int *)((int)unaff_s5[1] << 1);\n            unaff_s5[2] = piVar10;\n          }\n          unaff_s3 = (int ******)((int)unaff_s2 * 0x18);\n          unaff_s5[2][(int)unaff_s2 * 6] = (int)pppppppiVar4;\n          *(int ********)((int)unaff_s3 + (int)(unaff_s5[2] + 1)) = pppppppiVar9;\n          unaff_s2 = (int *******)(unaff_s5[2] + (int)unaff_s2 * 6);\n          ppppppiVar12 = (int ******)(*(code *)PTR_malloc_0003e2f8)(pppppppiVar15);\n          unaff_s2[2] = ppppppiVar12;\n          pppppppiVar18 = pppppppiVar15;\n          unaff_s6 = pppppppiVar15;\n          if (*(int *)((int)unaff_s3 + (int)(unaff_s5[2] + 2)) == 0) goto LAB_00021b34;\n          (*(code *)PTR_memcpy_0003e34c)(*(int *)((int)unaff_s3 + (int)(unaff_s5[2] + 2)),param_4);\n          pppppppiVar17 = &local_44;\n          iVar13 = FUN_0001b67c((int *)((int)unaff_s3 + (int)(unaff_s5[2] + 3)));\n          if (iVar13 != 0) goto LAB_00021b34;\n        }\n        break;\n      }\n      unaff_s2 = (int *******)((int)unaff_s2 + 1);\n      unaff_s3 = unaff_s3 + 1;\n      unaff_s0 = pppppppiVar11;\n    } while (unaff_s6 != unaff_s2);\nLAB_00021ca8:\n    unaff_s0 = pppppppiVar11;\n    if ((int)pppppppiVar11 < 0) {\nLAB_00021f44:\n      if (unaff_s0 == (int *******)&SUB_fffffffe) {\nLAB_00021b34:\n        (*(code *)PTR_free_0003e354)(local_3c);\n        if (bVar1) {\n          (*(code *)PTR_free_0003e354)(local_70);\n        }\n        FUN_0001eb94(unaff_s5);\n        iVar13 = 0xc;\n        goto LAB_00021ed8;\n      }\n      if (unaff_s5 == (int **)0x0) {\n        (*(code *)PTR_free_0003e354)();\n        if (bVar1) {\n          (*(code *)PTR_free_0003e354)(local_70);\n          iVar13 = 1;\n        }\n        else {\n          iVar13 = 1;\n        }\n        goto LAB_00021ed8;\n      }\n      *(int ********)(puVar25 + 0x10) = &local_44;\n      pppppppiVar17 = (int *******)&local_48;\n      pppppppiVar18 = param_3;\n      pppppppiVar19 = param_4;\n      unaff_s0 = (int *******)(*pcVar5)(unaff_s5);\n    }\n  }" (while "while") (parenthesized_expression "(unaff_s2 = local_48, puVar24 = PTR_memcpy_0003e34c, puVar26 = puVar25,\n        (int)local_48 <= (int)param_4[1])" (( "(") (comma_expression "unaff_s2 = local_48, puVar24 = PTR_memcpy_0003e34c, puVar26 = puVar25,\n        (int)local_48 <= (int)param_4[1]" (assignment_expression "unaff_s2 = local_48" (identifier "unaff_s2") (= "=") (identifier "local_48")) (, ",") (comma_expression "puVar24 = PTR_memcpy_0003e34c, puVar26 = puVar25,\n        (int)local_48 <= (int)param_4[1]" (assignment_expression "puVar24 = PTR_memcpy_0003e34c" (identifier "puVar24") (= "=") (identifier "PTR_memcpy_0003e34c")) (, ",") (comma_expression "puVar26 = puVar25,\n        (int)local_48 <= (int)param_4[1]" (assignment_expression "puVar26 = puVar25" (identifier "puVar26") (= "=") (identifier "puVar25")) (, ",") (binary_expression "(int)local_48 <= (int)param_4[1]" (cast_expression "(int)local_48" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_48")) (<= "<=") (cast_expression "(int)param_4[1]" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (subscript_expression "param_4[1]" (identifier "param_4") ([ "[") (number_literal "1") (] "]"))))))) () ")")) (compound_statement "{\n    piVar10 = (int *)(*piVar23 + (int)unaff_s0 * 8);\n    if (*(char *)(piVar10 + 1) == '\b') {\n      iVar13 = *piVar10;\n      if (iVar13 + 1 < (int)param_3) {\n        param_4[(iVar13 + 1) * 2] = (int ******)local_48;\n        (param_4 + (iVar13 + 1) * 2)[1] = (int ******)0xffffffff;\n      }\nLAB_00021cec:\n      pppppppiVar11 = (int *******)param_4[1];\n    }\n    else {\n      if ((*(char *)(piVar10 + 1) != '\t') || (iVar13 = *piVar10 + 1, (int)param_3 <= iVar13))\n      goto LAB_00021cec;\n      pppppppiVar17 = param_4 + iVar13 * 2;\n      if ((int)*pppppppiVar17 < (int)local_48) {\n        pppppppiVar17[1] = (int ******)local_48;\n        pppppppiVar17 = param_4;\n        pppppppiVar18 = pppppppiVar15;\n        (*(code *)puVar24)(local_70);\n        pppppppiVar11 = (int *******)param_4[1];\n      }\n      else {\n        if (((piVar10[1] & 0x1000U) == 0) ||\n           (pppppppiVar18 = pppppppiVar15, local_70[iVar13 * 2] == (int ******)0xffffffff)) {\n          pppppppiVar17[1] = (int ******)local_48;\n          goto LAB_00021cec;\n        }\n        pppppppiVar17 = local_70;\n        (*(code *)PTR_memcpy_0003e34c)(param_4);\n        pppppppiVar11 = (int *******)param_4[1];\n      }\n    }\n    if ((pppppppiVar11 == unaff_s2) && ((int *******)param_2[0x18] == unaff_s0)) {\n      if (unaff_s5 == (int **)0x0) {\n        (*(code *)PTR_free_0003e354)(local_3c);\n        if (bVar1) {\n          (*(code *)PTR_free_0003e354)(local_70);\n          iVar13 = 0;\n        }\n        else {\n          iVar13 = 0;\n        }\n      }\n      else {\n        if (param_3 != (int *******)0x0) {\n          pppppppiVar9 = (int *******)0x0;\n          pppppppiVar18 = (int *******)0xffffffff;\n          pppppppiVar11 = param_4;\n          do {\n            if ((-1 < (int)*pppppppiVar11) &&\n               (pppppppiVar17 = (int *******)pppppppiVar11[1],\n               (int *******)pppppppiVar11[1] == (int *******)0xffffffff)) break;\n            pppppppiVar9 = (int *******)((int)pppppppiVar9 + 1);\n            pppppppiVar11 = pppppppiVar11 + 2;\n            pppppppiVar17 = param_3;\n          } while (param_3 != pppppppiVar9);\n          if (pppppppiVar9 != param_3) {\n            *(int ********)(puVar25 + 0x10) = &local_44;\n            pppppppiVar17 = (int *******)&local_48;\n            pppppppiVar18 = param_3;\n            pppppppiVar19 = param_4;\n            unaff_s0 = (int *******)(*pcVar5)(unaff_s5);\n            goto LAB_00021d04;\n          }\n        }\n        (*(code *)PTR_free_0003e354)(local_3c);\n        if (bVar1) {\n          (*(code *)PTR_free_0003e354)(local_70);\n        }\n        iVar13 = FUN_0001eb94(unaff_s5);\n      }\n      goto LAB_00021ed8;\n    }\nLAB_00021d04:\n    unaff_s2 = (int *******)param_2[0x15];\n    unaff_s3 = (int ******)((int)unaff_s0 * 8);\n    ppppppiVar12 = *unaff_s2 + (int)unaff_s0 * 2;\n    if ((*(byte *)(ppppppiVar12 + 1) & 8) == 0) {\n      if (((uint)ppppppiVar12[1] & 0x800) == 0) {\n        if (*(byte *)(ppppppiVar12 + 1) == 4) {\n          ppppppiVar16 = (param_4 + ((int)*ppppppiVar12 + 1) * 2)[1];\n          ppppppiVar12 = param_4[((int)*ppppppiVar12 + 1) * 2];\n          unaff_s6 = (int *******)((int)ppppppiVar16 - (int)ppppppiVar12);\n          if (unaff_s5 == (int **)0x0) {\n            pppppppiVar17 = unaff_s0;\n            if (unaff_s6 != (int *******)0x0) goto LAB_00021da8;\nLAB_00021dd0:\n            pppppppiVar17 = unaff_s0;\n            iVar13 = (*pcVar7)(&local_44);\n            if (iVar13 == 0) goto LAB_00021b34;\n            pppppppiVar11 = (int *******)*unaff_s2[5][(int)unaff_s0 * 3 + 2];\n            pppppppiVar17 = pppppppiVar11;\n            iVar13 = (*pcVar6)(param_2[0x19][(int)local_48] + 1);\n            if (iVar13 != 0) goto LAB_00021ca8;\n            goto LAB_00021c18;\n          }\n          if ((ppppppiVar12 != (int ******)0xffffffff) && (ppppppiVar16 != (int ******)0xffffffff))\n          {\n            if (unaff_s6 == (int *******)0x0) goto LAB_00021dd0;\n            pppppppiVar17 = (int *******)((int)param_2[1] + (int)local_48);\n            pppppppiVar18 = unaff_s6;\n            iVar13 = (*(code *)PTR_memcmp_0003e338)((int)param_2[1] + (int)ppppppiVar12);\n            if (iVar13 == 0) goto LAB_00021da8;\n          }\n        }\n        else {\nLAB_00021c18:\n          unaff_s6 = local_48;\n          pppppppiVar17 = (int *******)(*unaff_s2 + (int)unaff_s0 * 2);\n          pppppppiVar18 = local_48;\n          iVar13 = FUN_0001c4f8(param_2);\n          if (iVar13 != 0) {\n            pppppppiVar11 = (int *******)unaff_s2[3][(int)unaff_s0];\n            local_48 = (int *******)((int)unaff_s6 + 1);\n            goto LAB_00021c5c;\n          }\n        }\n      }\n      else {\n        pppppppiVar17 = unaff_s0;\n        pppppppiVar18 = param_2;\n        pppppppiVar19 = local_48;\n        unaff_s6 = (int *******)FUN_000200a0(unaff_s2);\n        if (unaff_s6 == (int *******)0x0) goto LAB_00021c18;\nLAB_00021da8:\n        pppppppiVar11 = (int *******)unaff_s2[3][(int)unaff_s0];\n        local_48 = (int *******)((int)unaff_s6 + (int)local_48);\nLAB_00021c5c:\n        unaff_s6 = local_48;\n        if (unaff_s5 == (int **)0x0) {\nLAB_00021ca4:\n          local_40 = 0;\n          goto LAB_00021ca8;\n        }\n        unaff_s6 = (int *******)((int)local_48 * 4);\n        if ((int)local_48 <= (int)param_2[0x17]) {\n          unaff_s6 = (int *******)(param_2[0x19] + (int)local_48);\n          pppppppiVar17 = pppppppiVar11;\n          if ((*unaff_s6 != (int ******)0x0) && (iVar13 = (*pcVar6)(*unaff_s6 + 1), iVar13 != 0))\n          goto LAB_00021ca4;\n        }\n      }\nLAB_00021f3c:\n      unaff_s0 = (int *******)0xffffffff;\n      goto LAB_00021f44;\n    }\n    pppppiVar8 = param_2[0x19][(int)local_48];\n    unaff_s2 = (int *******)(unaff_s2[5] + (int)unaff_s0 * 3);\n    pppppppiVar17 = unaff_s0;\n    iVar13 = (*pcVar7)(&local_44);\n    if (iVar13 == 0) goto LAB_00021b34;\n    unaff_s6 = (int *******)unaff_s2[1];\n    if ((int)unaff_s6 < 1) goto LAB_00021f3c;\n    unaff_s3 = unaff_s2[2];\n    unaff_s2 = (int *******)0x0;\n    unaff_s0 = (int *******)0xffffffff;\n    do {\n      pppppppiVar9 = (int *******)*unaff_s3;\n      pppppppiVar17 = pppppppiVar9;\n      iVar13 = (*pcVar6)(pppppiVar8 + 1);\n      pppppppiVar11 = unaff_s0;\n      if ((iVar13 != 0) &&\n         (pppppppiVar17 = unaff_s0, pppppppiVar11 = pppppppiVar9,\n         unaff_s0 != (int *******)0xffffffff)) {\n        iVar13 = (*pcVar6)(&local_44);\n        pppppppiVar4 = local_48;\n        if ((iVar13 == 0) &&\n           (pppppppiVar11 = unaff_s0, unaff_s6 = local_48, unaff_s5 != (int **)0x0)) {\n          unaff_s2 = (int *******)*unaff_s5;\n          *unaff_s5 = (int *)((int)unaff_s2 + 1);\n          pppppppiVar17 = (int *******)unaff_s5[1];\n          if ((int *******)((int)unaff_s2 + 1) == pppppppiVar17) {\n            pppppppiVar17 = (int *******)((int)pppppppiVar17 * 0x30);\n            piVar10 = (int *)(*(code *)PTR_realloc_0003e2fc)(unaff_s5[2]);\n            unaff_s6 = pppppppiVar4;\n            if (piVar10 == (int *)0x0) goto LAB_00021b34;\n            unaff_s5[1] = (int *)((int)unaff_s5[1] << 1);\n            unaff_s5[2] = piVar10;\n          }\n          unaff_s3 = (int ******)((int)unaff_s2 * 0x18);\n          unaff_s5[2][(int)unaff_s2 * 6] = (int)pppppppiVar4;\n          *(int ********)((int)unaff_s3 + (int)(unaff_s5[2] + 1)) = pppppppiVar9;\n          unaff_s2 = (int *******)(unaff_s5[2] + (int)unaff_s2 * 6);\n          ppppppiVar12 = (int ******)(*(code *)PTR_malloc_0003e2f8)(pppppppiVar15);\n          unaff_s2[2] = ppppppiVar12;\n          pppppppiVar18 = pppppppiVar15;\n          unaff_s6 = pppppppiVar15;\n          if (*(int *)((int)unaff_s3 + (int)(unaff_s5[2] + 2)) == 0) goto LAB_00021b34;\n          (*(code *)PTR_memcpy_0003e34c)(*(int *)((int)unaff_s3 + (int)(unaff_s5[2] + 2)),param_4);\n          pppppppiVar17 = &local_44;\n          iVar13 = FUN_0001b67c((int *)((int)unaff_s3 + (int)(unaff_s5[2] + 3)));\n          if (iVar13 != 0) goto LAB_00021b34;\n        }\n        break;\n      }\n      unaff_s2 = (int *******)((int)unaff_s2 + 1);\n      unaff_s3 = unaff_s3 + 1;\n      unaff_s0 = pppppppiVar11;\n    } while (unaff_s6 != unaff_s2);\nLAB_00021ca8:\n    unaff_s0 = pppppppiVar11;\n    if ((int)pppppppiVar11 < 0) {\nLAB_00021f44:\n      if (unaff_s0 == (int *******)&SUB_fffffffe) {\nLAB_00021b34:\n        (*(code *)PTR_free_0003e354)(local_3c);\n        if (bVar1) {\n          (*(code *)PTR_free_0003e354)(local_70);\n        }\n        FUN_0001eb94(unaff_s5);\n        iVar13 = 0xc;\n        goto LAB_00021ed8;\n      }\n      if (unaff_s5 == (int **)0x0) {\n        (*(code *)PTR_free_0003e354)();\n        if (bVar1) {\n          (*(code *)PTR_free_0003e354)(local_70);\n          iVar13 = 1;\n        }\n        else {\n          iVar13 = 1;\n        }\n        goto LAB_00021ed8;\n      }\n      *(int ********)(puVar25 + 0x10) = &local_44;\n      pppppppiVar17 = (int *******)&local_48;\n      pppppppiVar18 = param_3;\n      pppppppiVar19 = param_4;\n      unaff_s0 = (int *******)(*pcVar5)(unaff_s5);\n    }\n  }" ({ "{") (expression_statement "piVar10 = (int *)(*piVar23 + (int)unaff_s0 * 8);" (assignment_expression "piVar10 = (int *)(*piVar23 + (int)unaff_s0 * 8)" (identifier "piVar10") (= "=") (cast_expression "(int *)(*piVar23 + (int)unaff_s0 * 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*piVar23 + (int)unaff_s0 * 8)" (( "(") (binary_expression "*piVar23 + (int)unaff_s0 * 8" (pointer_expression "*piVar23" (* "*") (identifier "piVar23")) (+ "+") (binary_expression "(int)unaff_s0 * 8" (cast_expression "(int)unaff_s0" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "unaff_s0")) (* "*") (number_literal "8"))) () ")")))) (; ";")) (if_statement "if (*(char *)(piVar10 + 1) == '\b') {\n      iVar13 = *piVar10;\n      if (iVar13 + 1 < (int)param_3) {\n        param_4[(iVar13 + 1) * 2] = (int ******)local_48;\n        (param_4 + (iVar13 + 1) * 2)[1] = (int ******)0xffffffff;\n      }\nLAB_00021cec:\n      pppppppiVar11 = (int *******)param_4[1];\n    }\n    else {\n      if ((*(char *)(piVar10 + 1) != '\t') || (iVar13 = *piVar10 + 1, (int)param_3 <= iVar13))\n      goto LAB_00021cec;\n      pppppppiVar17 = param_4 + iVar13 * 2;\n      if ((int)*pppppppiVar17 < (int)local_48) {\n        pppppppiVar17[1] = (int ******)local_48;\n        pppppppiVar17 = param_4;\n        pppppppiVar18 = pppppppiVar15;\n        (*(code *)puVar24)(local_70);\n        pppppppiVar11 = (int *******)param_4[1];\n      }\n      else {\n        if (((piVar10[1] & 0x1000U) == 0) ||\n           (pppppppiVar18 = pppppppiVar15, local_70[iVar13 * 2] == (int ******)0xffffffff)) {\n          pppppppiVar17[1] = (int ******)local_48;\n          goto LAB_00021cec;\n        }\n        pppppppiVar17 = local_70;\n        (*(code *)PTR_memcpy_0003e34c)(param_4);\n        pppppppiVar11 = (int *******)param_4[1];\n      }\n    }" (if "if") (parenthesized_expression "(*(char *)(piVar10 + 1) == '\b')" (( "(") (binary_expression "*(char *)(piVar10 + 1) == '\b'" (pointer_expression "*(char *)(piVar10 + 1)" (* "*") (cast_expression "(char *)(piVar10 + 1)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar10 + 1)" (( "(") (binary_expression "piVar10 + 1" (identifier "piVar10") (+ "+") (number_literal "1")) () ")")))) (== "==") (char_literal "'\b'" (' "'") (escape_sequence "\b") (' "'"))) () ")")) (compound_statement "{\n      iVar13 = *piVar10;\n      if (iVar13 + 1 < (int)param_3) {\n        param_4[(iVar13 + 1) * 2] = (int ******)local_48;\n        (param_4 + (iVar13 + 1) * 2)[1] = (int ******)0xffffffff;\n      }\nLAB_00021cec:\n      pppppppiVar11 = (int *******)param_4[1];\n    }" ({ "{") (expression_statement "iVar13 = *piVar10;" (assignment_expression "iVar13 = *piVar10" (identifier "iVar13") (= "=") (pointer_expression "*piVar10" (* "*") (identifier "piVar10"))) (; ";")) (if_statement "if (iVar13 + 1 < (int)param_3) {\n        param_4[(iVar13 + 1) * 2] = (int ******)local_48;\n        (param_4 + (iVar13 + 1) * 2)[1] = (int ******)0xffffffff;\n      }" (if "if") (parenthesized_expression "(iVar13 + 1 < (int)param_3)" (( "(") (binary_expression "iVar13 + 1 < (int)param_3" (binary_expression "iVar13 + 1" (identifier "iVar13") (+ "+") (number_literal "1")) (< "<") (cast_expression "(int)param_3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_3"))) () ")")) (compound_statement "{\n        param_4[(iVar13 + 1) * 2] = (int ******)local_48;\n        (param_4 + (iVar13 + 1) * 2)[1] = (int ******)0xffffffff;\n      }" ({ "{") (expression_statement "param_4[(iVar13 + 1) * 2] = (int ******)local_48;" (assignment_expression "param_4[(iVar13 + 1) * 2] = (int ******)local_48" (subscript_expression "param_4[(iVar13 + 1) * 2]" (identifier "param_4") ([ "[") (binary_expression "(iVar13 + 1) * 2" (parenthesized_expression "(iVar13 + 1)" (( "(") (binary_expression "iVar13 + 1" (identifier "iVar13") (+ "+") (number_literal "1")) () ")")) (* "*") (number_literal "2")) (] "]")) (= "=") (cast_expression "(int ******)local_48" (( "(") (type_descriptor "int ******" (primitive_type "int") (abstract_pointer_declarator "******" (* "*") (abstract_pointer_declarator "*****" (* "*") (abstract_pointer_declarator "****" (* "*") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))))))) () ")") (identifier "local_48"))) (; ";")) (expression_statement "(param_4 + (iVar13 + 1) * 2)[1] = (int ******)0xffffffff;" (assignment_expression "(param_4 + (iVar13 + 1) * 2)[1] = (int ******)0xffffffff" (subscript_expression "(param_4 + (iVar13 + 1) * 2)[1]" (parenthesized_expression "(param_4 + (iVar13 + 1) * 2)" (( "(") (binary_expression "param_4 + (iVar13 + 1) * 2" (identifier "param_4") (+ "+") (binary_expression "(iVar13 + 1) * 2" (parenthesized_expression "(iVar13 + 1)" (( "(") (binary_expression "iVar13 + 1" (identifier "iVar13") (+ "+") (number_literal "1")) () ")")) (* "*") (number_literal "2"))) () ")")) ([ "[") (number_literal "1") (] "]")) (= "=") (cast_expression "(int ******)0xffffffff" (( "(") (type_descriptor "int ******" (primitive_type "int") (abstract_pointer_declarator "******" (* "*") (abstract_pointer_declarator "*****" (* "*") (abstract_pointer_declarator "****" (* "*") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))))))) () ")") (number_literal "0xffffffff"))) (; ";")) (} "}"))) (labeled_statement "LAB_00021cec:\n      pppppppiVar11 = (int *******)param_4[1];" (statement_identifier "LAB_00021cec") (: ":") (expression_statement "pppppppiVar11 = (int *******)param_4[1];" (assignment_expression "pppppppiVar11 = (int *******)param_4[1]" (identifier "pppppppiVar11") (= "=") (cast_expression "(int *******)param_4[1]" (( "(") (type_descriptor "int *******" (primitive_type "int") (abstract_pointer_declarator "*******" (* "*") (abstract_pointer_declarator "******" (* "*") (abstract_pointer_declarator "*****" (* "*") (abstract_pointer_declarator "****" (* "*") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))))))) () ")") (subscript_expression "param_4[1]" (identifier "param_4") ([ "[") (number_literal "1") (] "]")))) (; ";"))) (} "}")) (else_clause "else {\n      if ((*(char *)(piVar10 + 1) != '\t') || (iVar13 = *piVar10 + 1, (int)param_3 <= iVar13))\n      goto LAB_00021cec;\n      pppppppiVar17 = param_4 + iVar13 * 2;\n      if ((int)*pppppppiVar17 < (int)local_48) {\n        pppppppiVar17[1] = (int ******)local_48;\n        pppppppiVar17 = param_4;\n        pppppppiVar18 = pppppppiVar15;\n        (*(code *)puVar24)(local_70);\n        pppppppiVar11 = (int *******)param_4[1];\n      }\n      else {\n        if (((piVar10[1] & 0x1000U) == 0) ||\n           (pppppppiVar18 = pppppppiVar15, local_70[iVar13 * 2] == (int ******)0xffffffff)) {\n          pppppppiVar17[1] = (int ******)local_48;\n          goto LAB_00021cec;\n        }\n        pppppppiVar17 = local_70;\n        (*(code *)PTR_memcpy_0003e34c)(param_4);\n        pppppppiVar11 = (int *******)param_4[1];\n      }\n    }" (else "else") (compound_statement "{\n      if ((*(char *)(piVar10 + 1) != '\t') || (iVar13 = *piVar10 + 1, (int)param_3 <= iVar13))\n      goto LAB_00021cec;\n      pppppppiVar17 = param_4 + iVar13 * 2;\n      if ((int)*pppppppiVar17 < (int)local_48) {\n        pppppppiVar17[1] = (int ******)local_48;\n        pppppppiVar17 = param_4;\n        pppppppiVar18 = pppppppiVar15;\n        (*(code *)puVar24)(local_70);\n        pppppppiVar11 = (int *******)param_4[1];\n      }\n      else {\n        if (((piVar10[1] & 0x1000U) == 0) ||\n           (pppppppiVar18 = pppppppiVar15, local_70[iVar13 * 2] == (int ******)0xffffffff)) {\n          pppppppiVar17[1] = (int ******)local_48;\n          goto LAB_00021cec;\n        }\n        pppppppiVar17 = local_70;\n        (*(code *)PTR_memcpy_0003e34c)(param_4);\n        pppppppiVar11 = (int *******)param_4[1];\n      }\n    }" ({ "{") (if_statement "if ((*(char *)(piVar10 + 1) != '\t') || (iVar13 = *piVar10 + 1, (int)param_3 <= iVar13))\n      goto LAB_00021cec;" (if "if") (parenthesized_expression "((*(char *)(piVar10 + 1) != '\t') || (iVar13 = *piVar10 + 1, (int)param_3 <= iVar13))" (( "(") (binary_expression "(*(char *)(piVar10 + 1) != '\t') || (iVar13 = *piVar10 + 1, (int)param_3 <= iVar13)" (parenthesized_expression "(*(char *)(piVar10 + 1) != '\t')" (( "(") (binary_expression "*(char *)(piVar10 + 1) != '\t'" (pointer_expression "*(char *)(piVar10 + 1)" (* "*") (cast_expression "(char *)(piVar10 + 1)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar10 + 1)" (( "(") (binary_expression "piVar10 + 1" (identifier "piVar10") (+ "+") (number_literal "1")) () ")")))) (!= "!=") (char_literal "'\t'" (' "'") (escape_sequence "\t") (' "'"))) () ")")) (|| "||") (parenthesized_expression "(iVar13 = *piVar10 + 1, (int)param_3 <= iVar13)" (( "(") (comma_expression "iVar13 = *piVar10 + 1, (int)param_3 <= iVar13" (assignment_expression "iVar13 = *piVar10 + 1" (identifier "iVar13") (= "=") (binary_expression "*piVar10 + 1" (pointer_expression "*piVar10" (* "*") (identifier "piVar10")) (+ "+") (number_literal "1"))) (, ",") (binary_expression "(int)param_3 <= iVar13" (cast_expression "(int)param_3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_3")) (<= "<=") (identifier "iVar13"))) () ")"))) () ")")) (goto_statement "goto LAB_00021cec;" (goto "goto") (statement_identifier "LAB_00021cec") (; ";"))) (expression_statement "pppppppiVar17 = param_4 + iVar13 * 2;" (assignment_expression "pppppppiVar17 = param_4 + iVar13 * 2" (identifier "pppppppiVar17") (= "=") (binary_expression "param_4 + iVar13 * 2" (identifier "param_4") (+ "+") (binary_expression "iVar13 * 2" (identifier "iVar13") (* "*") (number_literal "2")))) (; ";")) (if_statement "if ((int)*pppppppiVar17 < (int)local_48) {\n        pppppppiVar17[1] = (int ******)local_48;\n        pppppppiVar17 = param_4;\n        pppppppiVar18 = pppppppiVar15;\n        (*(code *)puVar24)(local_70);\n        pppppppiVar11 = (int *******)param_4[1];\n      }\n      else {\n        if (((piVar10[1] & 0x1000U) == 0) ||\n           (pppppppiVar18 = pppppppiVar15, local_70[iVar13 * 2] == (int ******)0xffffffff)) {\n          pppppppiVar17[1] = (int ******)local_48;\n          goto LAB_00021cec;\n        }\n        pppppppiVar17 = local_70;\n        (*(code *)PTR_memcpy_0003e34c)(param_4);\n        pppppppiVar11 = (int *******)param_4[1];\n      }" (if "if") (parenthesized_expression "((int)*pppppppiVar17 < (int)local_48)" (( "(") (binary_expression "(int)*pppppppiVar17 < (int)local_48" (cast_expression "(int)*pppppppiVar17" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (pointer_expression "*pppppppiVar17" (* "*") (identifier "pppppppiVar17"))) (< "<") (cast_expression "(int)local_48" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_48"))) () ")")) (compound_statement "{\n        pppppppiVar17[1] = (int ******)local_48;\n        pppppppiVar17 = param_4;\n        pppppppiVar18 = pppppppiVar15;\n        (*(code *)puVar24)(local_70);\n        pppppppiVar11 = (int *******)param_4[1];\n      }" ({ "{") (expression_statement "pppppppiVar17[1] = (int ******)local_48;" (assignment_expression "pppppppiVar17[1] = (int ******)local_48" (subscript_expression "pppppppiVar17[1]" (identifier "pppppppiVar17") ([ "[") (number_literal "1") (] "]")) (= "=") (cast_expression "(int ******)local_48" (( "(") (type_descriptor "int ******" (primitive_type "int") (abstract_pointer_declarator "******" (* "*") (abstract_pointer_declarator "*****" (* "*") (abstract_pointer_declarator "****" (* "*") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))))))) () ")") (identifier "local_48"))) (; ";")) (expression_statement "pppppppiVar17 = param_4;" (assignment_expression "pppppppiVar17 = param_4" (identifier "pppppppiVar17") (= "=") (identifier "param_4")) (; ";")) (expression_statement "pppppppiVar18 = pppppppiVar15;" (assignment_expression "pppppppiVar18 = pppppppiVar15" (identifier "pppppppiVar18") (= "=") (identifier "pppppppiVar15")) (; ";")) (expression_statement "(*(code *)puVar24)(local_70);" (call_expression "(*(code *)puVar24)(local_70)" (parenthesized_expression "(*(code *)puVar24)" (( "(") (pointer_expression "*(code *)puVar24" (* "*") (cast_expression "(code *)puVar24" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar24"))) () ")")) (argument_list "(local_70)" (( "(") (identifier "local_70") () ")"))) (; ";")) (expression_statement "pppppppiVar11 = (int *******)param_4[1];" (assignment_expression "pppppppiVar11 = (int *******)param_4[1]" (identifier "pppppppiVar11") (= "=") (cast_expression "(int *******)param_4[1]" (( "(") (type_descriptor "int *******" (primitive_type "int") (abstract_pointer_declarator "*******" (* "*") (abstract_pointer_declarator "******" (* "*") (abstract_pointer_declarator "*****" (* "*") (abstract_pointer_declarator "****" (* "*") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))))))) () ")") (subscript_expression "param_4[1]" (identifier "param_4") ([ "[") (number_literal "1") (] "]")))) (; ";")) (} "}")) (else_clause "else {\n        if (((piVar10[1] & 0x1000U) == 0) ||\n           (pppppppiVar18 = pppppppiVar15, local_70[iVar13 * 2] == (int ******)0xffffffff)) {\n          pppppppiVar17[1] = (int ******)local_48;\n          goto LAB_00021cec;\n        }\n        pppppppiVar17 = local_70;\n        (*(code *)PTR_memcpy_0003e34c)(param_4);\n        pppppppiVar11 = (int *******)param_4[1];\n      }" (else "else") (compound_statement "{\n        if (((piVar10[1] & 0x1000U) == 0) ||\n           (pppppppiVar18 = pppppppiVar15, local_70[iVar13 * 2] == (int ******)0xffffffff)) {\n          pppppppiVar17[1] = (int ******)local_48;\n          goto LAB_00021cec;\n        }\n        pppppppiVar17 = local_70;\n        (*(code *)PTR_memcpy_0003e34c)(param_4);\n        pppppppiVar11 = (int *******)param_4[1];\n      }" ({ "{") (if_statement "if (((piVar10[1] & 0x1000U) == 0) ||\n           (pppppppiVar18 = pppppppiVar15, local_70[iVar13 * 2] == (int ******)0xffffffff)) {\n          pppppppiVar17[1] = (int ******)local_48;\n          goto LAB_00021cec;\n        }" (if "if") (parenthesized_expression "(((piVar10[1] & 0x1000U) == 0) ||\n           (pppppppiVar18 = pppppppiVar15, local_70[iVar13 * 2] == (int ******)0xffffffff))" (( "(") (binary_expression "((piVar10[1] & 0x1000U) == 0) ||\n           (pppppppiVar18 = pppppppiVar15, local_70[iVar13 * 2] == (int ******)0xffffffff)" (parenthesized_expression "((piVar10[1] & 0x1000U) == 0)" (( "(") (binary_expression "(piVar10[1] & 0x1000U) == 0" (parenthesized_expression "(piVar10[1] & 0x1000U)" (( "(") (binary_expression "piVar10[1] & 0x1000U" (subscript_expression "piVar10[1]" (identifier "piVar10") ([ "[") (number_literal "1") (] "]")) (& "&") (number_literal "0x1000U")) () ")")) (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(pppppppiVar18 = pppppppiVar15, local_70[iVar13 * 2] == (int ******)0xffffffff)" (( "(") (comma_expression "pppppppiVar18 = pppppppiVar15, local_70[iVar13 * 2] == (int ******)0xffffffff" (assignment_expression "pppppppiVar18 = pppppppiVar15" (identifier "pppppppiVar18") (= "=") (identifier "pppppppiVar15")) (, ",") (binary_expression "local_70[iVar13 * 2] == (int ******)0xffffffff" (subscript_expression "local_70[iVar13 * 2]" (identifier "local_70") ([ "[") (binary_expression "iVar13 * 2" (identifier "iVar13") (* "*") (number_literal "2")) (] "]")) (== "==") (cast_expression "(int ******)0xffffffff" (( "(") (type_descriptor "int ******" (primitive_type "int") (abstract_pointer_declarator "******" (* "*") (abstract_pointer_declarator "*****" (* "*") (abstract_pointer_declarator "****" (* "*") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))))))) () ")") (number_literal "0xffffffff")))) () ")"))) () ")")) (compound_statement "{\n          pppppppiVar17[1] = (int ******)local_48;\n          goto LAB_00021cec;\n        }" ({ "{") (expression_statement "pppppppiVar17[1] = (int ******)local_48;" (assignment_expression "pppppppiVar17[1] = (int ******)local_48" (subscript_expression "pppppppiVar17[1]" (identifier "pppppppiVar17") ([ "[") (number_literal "1") (] "]")) (= "=") (cast_expression "(int ******)local_48" (( "(") (type_descriptor "int ******" (primitive_type "int") (abstract_pointer_declarator "******" (* "*") (abstract_pointer_declarator "*****" (* "*") (abstract_pointer_declarator "****" (* "*") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))))))) () ")") (identifier "local_48"))) (; ";")) (goto_statement "goto LAB_00021cec;" (goto "goto") (statement_identifier "LAB_00021cec") (; ";")) (} "}"))) (expression_statement "pppppppiVar17 = local_70;" (assignment_expression "pppppppiVar17 = local_70" (identifier "pppppppiVar17") (= "=") (identifier "local_70")) (; ";")) (expression_statement "(*(code *)PTR_memcpy_0003e34c)(param_4);" (call_expression "(*(code *)PTR_memcpy_0003e34c)(param_4)" (parenthesized_expression "(*(code *)PTR_memcpy_0003e34c)" (( "(") (pointer_expression "*(code *)PTR_memcpy_0003e34c" (* "*") (cast_expression "(code *)PTR_memcpy_0003e34c" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_memcpy_0003e34c"))) () ")")) (argument_list "(param_4)" (( "(") (identifier "param_4") () ")"))) (; ";")) (expression_statement "pppppppiVar11 = (int *******)param_4[1];" (assignment_expression "pppppppiVar11 = (int *******)param_4[1]" (identifier "pppppppiVar11") (= "=") (cast_expression "(int *******)param_4[1]" (( "(") (type_descriptor "int *******" (primitive_type "int") (abstract_pointer_declarator "*******" (* "*") (abstract_pointer_declarator "******" (* "*") (abstract_pointer_declarator "*****" (* "*") (abstract_pointer_declarator "****" (* "*") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))))))) () ")") (subscript_expression "param_4[1]" (identifier "param_4") ([ "[") (number_literal "1") (] "]")))) (; ";")) (} "}")))) (} "}")))) (if_statement "if ((pppppppiVar11 == unaff_s2) && ((int *******)param_2[0x18] == unaff_s0)) {\n      if (unaff_s5 == (int **)0x0) {\n        (*(code *)PTR_free_0003e354)(local_3c);\n        if (bVar1) {\n          (*(code *)PTR_free_0003e354)(local_70);\n          iVar13 = 0;\n        }\n        else {\n          iVar13 = 0;\n        }\n      }\n      else {\n        if (param_3 != (int *******)0x0) {\n          pppppppiVar9 = (int *******)0x0;\n          pppppppiVar18 = (int *******)0xffffffff;\n          pppppppiVar11 = param_4;\n          do {\n            if ((-1 < (int)*pppppppiVar11) &&\n               (pppppppiVar17 = (int *******)pppppppiVar11[1],\n               (int *******)pppppppiVar11[1] == (int *******)0xffffffff)) break;\n            pppppppiVar9 = (int *******)((int)pppppppiVar9 + 1);\n            pppppppiVar11 = pppppppiVar11 + 2;\n            pppppppiVar17 = param_3;\n          } while (param_3 != pppppppiVar9);\n          if (pppppppiVar9 != param_3) {\n            *(int ********)(puVar25 + 0x10) = &local_44;\n            pppppppiVar17 = (int *******)&local_48;\n            pppppppiVar18 = param_3;\n            pppppppiVar19 = param_4;\n            unaff_s0 = (int *******)(*pcVar5)(unaff_s5);\n            goto LAB_00021d04;\n          }\n        }\n        (*(code *)PTR_free_0003e354)(local_3c);\n        if (bVar1) {\n          (*(code *)PTR_free_0003e354)(local_70);\n        }\n        iVar13 = FUN_0001eb94(unaff_s5);\n      }\n      goto LAB_00021ed8;\n    }" (if "if") (parenthesized_expression "((pppppppiVar11 == unaff_s2) && ((int *******)param_2[0x18] == unaff_s0))" (( "(") (binary_expression "(pppppppiVar11 == unaff_s2) && ((int *******)param_2[0x18] == unaff_s0)" (parenthesized_expression "(pppppppiVar11 == unaff_s2)" (( "(") (binary_expression "pppppppiVar11 == unaff_s2" (identifier "pppppppiVar11") (== "==") (identifier "unaff_s2")) () ")")) (&& "&&") (parenthesized_expression "((int *******)param_2[0x18] == unaff_s0)" (( "(") (binary_expression "(int *******)param_2[0x18] == unaff_s0" (cast_expression "(int *******)param_2[0x18]" (( "(") (type_descriptor "int *******" (primitive_type "int") (abstract_pointer_declarator "*******" (* "*") (abstract_pointer_declarator "******" (* "*") (abstract_pointer_declarator "*****" (* "*") (abstract_pointer_declarator "****" (* "*") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))))))) () ")") (subscript_expression "param_2[0x18]" (identifier "param_2") ([ "[") (number_literal "0x18") (] "]"))) (== "==") (identifier "unaff_s0")) () ")"))) () ")")) (compound_statement "{\n      if (unaff_s5 == (int **)0x0) {\n        (*(code *)PTR_free_0003e354)(local_3c);\n        if (bVar1) {\n          (*(code *)PTR_free_0003e354)(local_70);\n          iVar13 = 0;\n        }\n        else {\n          iVar13 = 0;\n        }\n      }\n      else {\n        if (param_3 != (int *******)0x0) {\n          pppppppiVar9 = (int *******)0x0;\n          pppppppiVar18 = (int *******)0xffffffff;\n          pppppppiVar11 = param_4;\n          do {\n            if ((-1 < (int)*pppppppiVar11) &&\n               (pppppppiVar17 = (int *******)pppppppiVar11[1],\n               (int *******)pppppppiVar11[1] == (int *******)0xffffffff)) break;\n            pppppppiVar9 = (int *******)((int)pppppppiVar9 + 1);\n            pppppppiVar11 = pppppppiVar11 + 2;\n            pppppppiVar17 = param_3;\n          } while (param_3 != pppppppiVar9);\n          if (pppppppiVar9 != param_3) {\n            *(int ********)(puVar25 + 0x10) = &local_44;\n            pppppppiVar17 = (int *******)&local_48;\n            pppppppiVar18 = param_3;\n            pppppppiVar19 = param_4;\n            unaff_s0 = (int *******)(*pcVar5)(unaff_s5);\n            goto LAB_00021d04;\n          }\n        }\n        (*(code *)PTR_free_0003e354)(local_3c);\n        if (bVar1) {\n          (*(code *)PTR_free_0003e354)(local_70);\n        }\n        iVar13 = FUN_0001eb94(unaff_s5);\n      }\n      goto LAB_00021ed8;\n    }" ({ "{") (if_statement "if (unaff_s5 == (int **)0x0) {\n        (*(code *)PTR_free_0003e354)(local_3c);\n        if (bVar1) {\n          (*(code *)PTR_free_0003e354)(local_70);\n          iVar13 = 0;\n        }\n        else {\n          iVar13 = 0;\n        }\n      }\n      else {\n        if (param_3 != (int *******)0x0) {\n          pppppppiVar9 = (int *******)0x0;\n          pppppppiVar18 = (int *******)0xffffffff;\n          pppppppiVar11 = param_4;\n          do {\n            if ((-1 < (int)*pppppppiVar11) &&\n               (pppppppiVar17 = (int *******)pppppppiVar11[1],\n               (int *******)pppppppiVar11[1] == (int *******)0xffffffff)) break;\n            pppppppiVar9 = (int *******)((int)pppppppiVar9 + 1);\n            pppppppiVar11 = pppppppiVar11 + 2;\n            pppppppiVar17 = param_3;\n          } while (param_3 != pppppppiVar9);\n          if (pppppppiVar9 != param_3) {\n            *(int ********)(puVar25 + 0x10) = &local_44;\n            pppppppiVar17 = (int *******)&local_48;\n            pppppppiVar18 = param_3;\n            pppppppiVar19 = param_4;\n            unaff_s0 = (int *******)(*pcVar5)(unaff_s5);\n            goto LAB_00021d04;\n          }\n        }\n        (*(code *)PTR_free_0003e354)(local_3c);\n        if (bVar1) {\n          (*(code *)PTR_free_0003e354)(local_70);\n        }\n        iVar13 = FUN_0001eb94(unaff_s5);\n      }" (if "if") (parenthesized_expression "(unaff_s5 == (int **)0x0)" (( "(") (binary_expression "unaff_s5 == (int **)0x0" (identifier "unaff_s5") (== "==") (cast_expression "(int **)0x0" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        (*(code *)PTR_free_0003e354)(local_3c);\n        if (bVar1) {\n          (*(code *)PTR_free_0003e354)(local_70);\n          iVar13 = 0;\n        }\n        else {\n          iVar13 = 0;\n        }\n      }" ({ "{") (expression_statement "(*(code *)PTR_free_0003e354)(local_3c);" (call_expression "(*(code *)PTR_free_0003e354)(local_3c)" (parenthesized_expression "(*(code *)PTR_free_0003e354)" (( "(") (pointer_expression "*(code *)PTR_free_0003e354" (* "*") (cast_expression "(code *)PTR_free_0003e354" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_free_0003e354"))) () ")")) (argument_list "(local_3c)" (( "(") (identifier "local_3c") () ")"))) (; ";")) (if_statement "if (bVar1) {\n          (*(code *)PTR_free_0003e354)(local_70);\n          iVar13 = 0;\n        }\n        else {\n          iVar13 = 0;\n        }" (if "if") (parenthesized_expression "(bVar1)" (( "(") (identifier "bVar1") () ")")) (compound_statement "{\n          (*(code *)PTR_free_0003e354)(local_70);\n          iVar13 = 0;\n        }" ({ "{") (expression_statement "(*(code *)PTR_free_0003e354)(local_70);" (call_expression "(*(code *)PTR_free_0003e354)(local_70)" (parenthesized_expression "(*(code *)PTR_free_0003e354)" (( "(") (pointer_expression "*(code *)PTR_free_0003e354" (* "*") (cast_expression "(code *)PTR_free_0003e354" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_free_0003e354"))) () ")")) (argument_list "(local_70)" (( "(") (identifier "local_70") () ")"))) (; ";")) (expression_statement "iVar13 = 0;" (assignment_expression "iVar13 = 0" (identifier "iVar13") (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n          iVar13 = 0;\n        }" (else "else") (compound_statement "{\n          iVar13 = 0;\n        }" ({ "{") (expression_statement "iVar13 = 0;" (assignment_expression "iVar13 = 0" (identifier "iVar13") (= "=") (number_literal "0")) (; ";")) (} "}")))) (} "}")) (else_clause "else {\n        if (param_3 != (int *******)0x0) {\n          pppppppiVar9 = (int *******)0x0;\n          pppppppiVar18 = (int *******)0xffffffff;\n          pppppppiVar11 = param_4;\n          do {\n            if ((-1 < (int)*pppppppiVar11) &&\n               (pppppppiVar17 = (int *******)pppppppiVar11[1],\n               (int *******)pppppppiVar11[1] == (int *******)0xffffffff)) break;\n            pppppppiVar9 = (int *******)((int)pppppppiVar9 + 1);\n            pppppppiVar11 = pppppppiVar11 + 2;\n            pppppppiVar17 = param_3;\n          } while (param_3 != pppppppiVar9);\n          if (pppppppiVar9 != param_3) {\n            *(int ********)(puVar25 + 0x10) = &local_44;\n            pppppppiVar17 = (int *******)&local_48;\n            pppppppiVar18 = param_3;\n            pppppppiVar19 = param_4;\n            unaff_s0 = (int *******)(*pcVar5)(unaff_s5);\n            goto LAB_00021d04;\n          }\n        }\n        (*(code *)PTR_free_0003e354)(local_3c);\n        if (bVar1) {\n          (*(code *)PTR_free_0003e354)(local_70);\n        }\n        iVar13 = FUN_0001eb94(unaff_s5);\n      }" (else "else") (compound_statement "{\n        if (param_3 != (int *******)0x0) {\n          pppppppiVar9 = (int *******)0x0;\n          pppppppiVar18 = (int *******)0xffffffff;\n          pppppppiVar11 = param_4;\n          do {\n            if ((-1 < (int)*pppppppiVar11) &&\n               (pppppppiVar17 = (int *******)pppppppiVar11[1],\n               (int *******)pppppppiVar11[1] == (int *******)0xffffffff)) break;\n            pppppppiVar9 = (int *******)((int)pppppppiVar9 + 1);\n            pppppppiVar11 = pppppppiVar11 + 2;\n            pppppppiVar17 = param_3;\n          } while (param_3 != pppppppiVar9);\n          if (pppppppiVar9 != param_3) {\n            *(int ********)(puVar25 + 0x10) = &local_44;\n            pppppppiVar17 = (int *******)&local_48;\n            pppppppiVar18 = param_3;\n            pppppppiVar19 = param_4;\n            unaff_s0 = (int *******)(*pcVar5)(unaff_s5);\n            goto LAB_00021d04;\n          }\n        }\n        (*(code *)PTR_free_0003e354)(local_3c);\n        if (bVar1) {\n          (*(code *)PTR_free_0003e354)(local_70);\n        }\n        iVar13 = FUN_0001eb94(unaff_s5);\n      }" ({ "{") (if_statement "if (param_3 != (int *******)0x0) {\n          pppppppiVar9 = (int *******)0x0;\n          pppppppiVar18 = (int *******)0xffffffff;\n          pppppppiVar11 = param_4;\n          do {\n            if ((-1 < (int)*pppppppiVar11) &&\n               (pppppppiVar17 = (int *******)pppppppiVar11[1],\n               (int *******)pppppppiVar11[1] == (int *******)0xffffffff)) break;\n            pppppppiVar9 = (int *******)((int)pppppppiVar9 + 1);\n            pppppppiVar11 = pppppppiVar11 + 2;\n            pppppppiVar17 = param_3;\n          } while (param_3 != pppppppiVar9);\n          if (pppppppiVar9 != param_3) {\n            *(int ********)(puVar25 + 0x10) = &local_44;\n            pppppppiVar17 = (int *******)&local_48;\n            pppppppiVar18 = param_3;\n            pppppppiVar19 = param_4;\n            unaff_s0 = (int *******)(*pcVar5)(unaff_s5);\n            goto LAB_00021d04;\n          }\n        }" (if "if") (parenthesized_expression "(param_3 != (int *******)0x0)" (( "(") (binary_expression "param_3 != (int *******)0x0" (identifier "param_3") (!= "!=") (cast_expression "(int *******)0x0" (( "(") (type_descriptor "int *******" (primitive_type "int") (abstract_pointer_declarator "*******" (* "*") (abstract_pointer_declarator "******" (* "*") (abstract_pointer_declarator "*****" (* "*") (abstract_pointer_declarator "****" (* "*") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))))))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n          pppppppiVar9 = (int *******)0x0;\n          pppppppiVar18 = (int *******)0xffffffff;\n          pppppppiVar11 = param_4;\n          do {\n            if ((-1 < (int)*pppppppiVar11) &&\n               (pppppppiVar17 = (int *******)pppppppiVar11[1],\n               (int *******)pppppppiVar11[1] == (int *******)0xffffffff)) break;\n            pppppppiVar9 = (int *******)((int)pppppppiVar9 + 1);\n            pppppppiVar11 = pppppppiVar11 + 2;\n            pppppppiVar17 = param_3;\n          } while (param_3 != pppppppiVar9);\n          if (pppppppiVar9 != param_3) {\n            *(int ********)(puVar25 + 0x10) = &local_44;\n            pppppppiVar17 = (int *******)&local_48;\n            pppppppiVar18 = param_3;\n            pppppppiVar19 = param_4;\n            unaff_s0 = (int *******)(*pcVar5)(unaff_s5);\n            goto LAB_00021d04;\n          }\n        }" ({ "{") (expression_statement "pppppppiVar9 = (int *******)0x0;" (assignment_expression "pppppppiVar9 = (int *******)0x0" (identifier "pppppppiVar9") (= "=") (cast_expression "(int *******)0x0" (( "(") (type_descriptor "int *******" (primitive_type "int") (abstract_pointer_declarator "*******" (* "*") (abstract_pointer_declarator "******" (* "*") (abstract_pointer_declarator "*****" (* "*") (abstract_pointer_declarator "****" (* "*") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))))))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "pppppppiVar18 = (int *******)0xffffffff;" (assignment_expression "pppppppiVar18 = (int *******)0xffffffff" (identifier "pppppppiVar18") (= "=") (cast_expression "(int *******)0xffffffff" (( "(") (type_descriptor "int *******" (primitive_type "int") (abstract_pointer_declarator "*******" (* "*") (abstract_pointer_declarator "******" (* "*") (abstract_pointer_declarator "*****" (* "*") (abstract_pointer_declarator "****" (* "*") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))))))) () ")") (number_literal "0xffffffff"))) (; ";")) (expression_statement "pppppppiVar11 = param_4;" (assignment_expression "pppppppiVar11 = param_4" (identifier "pppppppiVar11") (= "=") (identifier "param_4")) (; ";")) (do_statement "do {\n            if ((-1 < (int)*pppppppiVar11) &&\n               (pppppppiVar17 = (int *******)pppppppiVar11[1],\n               (int *******)pppppppiVar11[1] == (int *******)0xffffffff)) break;\n            pppppppiVar9 = (int *******)((int)pppppppiVar9 + 1);\n            pppppppiVar11 = pppppppiVar11 + 2;\n            pppppppiVar17 = param_3;\n          } while (param_3 != pppppppiVar9);" (do "do") (compound_statement "{\n            if ((-1 < (int)*pppppppiVar11) &&\n               (pppppppiVar17 = (int *******)pppppppiVar11[1],\n               (int *******)pppppppiVar11[1] == (int *******)0xffffffff)) break;\n            pppppppiVar9 = (int *******)((int)pppppppiVar9 + 1);\n            pppppppiVar11 = pppppppiVar11 + 2;\n            pppppppiVar17 = param_3;\n          }" ({ "{") (if_statement "if ((-1 < (int)*pppppppiVar11) &&\n               (pppppppiVar17 = (int *******)pppppppiVar11[1],\n               (int *******)pppppppiVar11[1] == (int *******)0xffffffff)) break;" (if "if") (parenthesized_expression "((-1 < (int)*pppppppiVar11) &&\n               (pppppppiVar17 = (int *******)pppppppiVar11[1],\n               (int *******)pppppppiVar11[1] == (int *******)0xffffffff))" (( "(") (binary_expression "(-1 < (int)*pppppppiVar11) &&\n               (pppppppiVar17 = (int *******)pppppppiVar11[1],\n               (int *******)pppppppiVar11[1] == (int *******)0xffffffff)" (parenthesized_expression "(-1 < (int)*pppppppiVar11)" (( "(") (binary_expression "-1 < (int)*pppppppiVar11" (number_literal "-1") (< "<") (cast_expression "(int)*pppppppiVar11" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (pointer_expression "*pppppppiVar11" (* "*") (identifier "pppppppiVar11")))) () ")")) (&& "&&") (parenthesized_expression "(pppppppiVar17 = (int *******)pppppppiVar11[1],\n               (int *******)pppppppiVar11[1] == (int *******)0xffffffff)" (( "(") (comma_expression "pppppppiVar17 = (int *******)pppppppiVar11[1],\n               (int *******)pppppppiVar11[1] == (int *******)0xffffffff" (assignment_expression "pppppppiVar17 = (int *******)pppppppiVar11[1]" (identifier "pppppppiVar17") (= "=") (cast_expression "(int *******)pppppppiVar11[1]" (( "(") (type_descriptor "int *******" (primitive_type "int") (abstract_pointer_declarator "*******" (* "*") (abstract_pointer_declarator "******" (* "*") (abstract_pointer_declarator "*****" (* "*") (abstract_pointer_declarator "****" (* "*") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))))))) () ")") (subscript_expression "pppppppiVar11[1]" (identifier "pppppppiVar11") ([ "[") (number_literal "1") (] "]")))) (, ",") (binary_expression "(int *******)pppppppiVar11[1] == (int *******)0xffffffff" (cast_expression "(int *******)pppppppiVar11[1]" (( "(") (type_descriptor "int *******" (primitive_type "int") (abstract_pointer_declarator "*******" (* "*") (abstract_pointer_declarator "******" (* "*") (abstract_pointer_declarator "*****" (* "*") (abstract_pointer_declarator "****" (* "*") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))))))) () ")") (subscript_expression "pppppppiVar11[1]" (identifier "pppppppiVar11") ([ "[") (number_literal "1") (] "]"))) (== "==") (cast_expression "(int *******)0xffffffff" (( "(") (type_descriptor "int *******" (primitive_type "int") (abstract_pointer_declarator "*******" (* "*") (abstract_pointer_declarator "******" (* "*") (abstract_pointer_declarator "*****" (* "*") (abstract_pointer_declarator "****" (* "*") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))))))) () ")") (number_literal "0xffffffff")))) () ")"))) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "pppppppiVar9 = (int *******)((int)pppppppiVar9 + 1);" (assignment_expression "pppppppiVar9 = (int *******)((int)pppppppiVar9 + 1)" (identifier "pppppppiVar9") (= "=") (cast_expression "(int *******)((int)pppppppiVar9 + 1)" (( "(") (type_descriptor "int *******" (primitive_type "int") (abstract_pointer_declarator "*******" (* "*") (abstract_pointer_declarator "******" (* "*") (abstract_pointer_declarator "*****" (* "*") (abstract_pointer_declarator "****" (* "*") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))))))) () ")") (parenthesized_expression "((int)pppppppiVar9 + 1)" (( "(") (binary_expression "(int)pppppppiVar9 + 1" (cast_expression "(int)pppppppiVar9" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pppppppiVar9")) (+ "+") (number_literal "1")) () ")")))) (; ";")) (expression_statement "pppppppiVar11 = pppppppiVar11 + 2;" (assignment_expression "pppppppiVar11 = pppppppiVar11 + 2" (identifier "pppppppiVar11") (= "=") (binary_expression "pppppppiVar11 + 2" (identifier "pppppppiVar11") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "pppppppiVar17 = param_3;" (assignment_expression "pppppppiVar17 = param_3" (identifier "pppppppiVar17") (= "=") (identifier "param_3")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(param_3 != pppppppiVar9)" (( "(") (binary_expression "param_3 != pppppppiVar9" (identifier "param_3") (!= "!=") (identifier "pppppppiVar9")) () ")")) (; ";")) (if_statement "if (pppppppiVar9 != param_3) {\n            *(int ********)(puVar25 + 0x10) = &local_44;\n            pppppppiVar17 = (int *******)&local_48;\n            pppppppiVar18 = param_3;\n            pppppppiVar19 = param_4;\n            unaff_s0 = (int *******)(*pcVar5)(unaff_s5);\n            goto LAB_00021d04;\n          }" (if "if") (parenthesized_expression "(pppppppiVar9 != param_3)" (( "(") (binary_expression "pppppppiVar9 != param_3" (identifier "pppppppiVar9") (!= "!=") (identifier "param_3")) () ")")) (compound_statement "{\n            *(int ********)(puVar25 + 0x10) = &local_44;\n            pppppppiVar17 = (int *******)&local_48;\n            pppppppiVar18 = param_3;\n            pppppppiVar19 = param_4;\n            unaff_s0 = (int *******)(*pcVar5)(unaff_s5);\n            goto LAB_00021d04;\n          }" ({ "{") (expression_statement "*(int ********)(puVar25 + 0x10) = &local_44;" (assignment_expression "*(int ********)(puVar25 + 0x10) = &local_44" (pointer_expression "*(int ********)(puVar25 + 0x10)" (* "*") (cast_expression "(int ********)(puVar25 + 0x10)" (( "(") (type_descriptor "int ********" (primitive_type "int") (abstract_pointer_declarator "********" (* "*") (abstract_pointer_declarator "*******" (* "*") (abstract_pointer_declarator "******" (* "*") (abstract_pointer_declarator "*****" (* "*") (abstract_pointer_declarator "****" (* "*") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))))))))) () ")") (parenthesized_expression "(puVar25 + 0x10)" (( "(") (binary_expression "puVar25 + 0x10" (identifier "puVar25") (+ "+") (number_literal "0x10")) () ")")))) (= "=") (pointer_expression "&local_44" (& "&") (identifier "local_44"))) (; ";")) (expression_statement "pppppppiVar17 = (int *******)&local_48;" (assignment_expression "pppppppiVar17 = (int *******)&local_48" (identifier "pppppppiVar17") (= "=") (cast_expression "(int *******)&local_48" (( "(") (type_descriptor "int *******" (primitive_type "int") (abstract_pointer_declarator "*******" (* "*") (abstract_pointer_declarator "******" (* "*") (abstract_pointer_declarator "*****" (* "*") (abstract_pointer_declarator "****" (* "*") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))))))) () ")") (pointer_expression "&local_48" (& "&") (identifier "local_48")))) (; ";")) (expression_statement "pppppppiVar18 = param_3;" (assignment_expression "pppppppiVar18 = param_3" (identifier "pppppppiVar18") (= "=") (identifier "param_3")) (; ";")) (expression_statement "pppppppiVar19 = param_4;" (assignment_expression "pppppppiVar19 = param_4" (identifier "pppppppiVar19") (= "=") (identifier "param_4")) (; ";")) (expression_statement "unaff_s0 = (int *******)(*pcVar5)(unaff_s5);" (assignment_expression "unaff_s0 = (int *******)(*pcVar5)(unaff_s5)" (identifier "unaff_s0") (= "=") (cast_expression "(int *******)(*pcVar5)(unaff_s5)" (( "(") (type_descriptor "int *******" (primitive_type "int") (abstract_pointer_declarator "*******" (* "*") (abstract_pointer_declarator "******" (* "*") (abstract_pointer_declarator "*****" (* "*") (abstract_pointer_declarator "****" (* "*") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))))))) () ")") (call_expression "(*pcVar5)(unaff_s5)" (parenthesized_expression "(*pcVar5)" (( "(") (pointer_expression "*pcVar5" (* "*") (identifier "pcVar5")) () ")")) (argument_list "(unaff_s5)" (( "(") (identifier "unaff_s5") () ")"))))) (; ";")) (goto_statement "goto LAB_00021d04;" (goto "goto") (statement_identifier "LAB_00021d04") (; ";")) (} "}"))) (} "}"))) (expression_statement "(*(code *)PTR_free_0003e354)(local_3c);" (call_expression "(*(code *)PTR_free_0003e354)(local_3c)" (parenthesized_expression "(*(code *)PTR_free_0003e354)" (( "(") (pointer_expression "*(code *)PTR_free_0003e354" (* "*") (cast_expression "(code *)PTR_free_0003e354" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_free_0003e354"))) () ")")) (argument_list "(local_3c)" (( "(") (identifier "local_3c") () ")"))) (; ";")) (if_statement "if (bVar1) {\n          (*(code *)PTR_free_0003e354)(local_70);\n        }" (if "if") (parenthesized_expression "(bVar1)" (( "(") (identifier "bVar1") () ")")) (compound_statement "{\n          (*(code *)PTR_free_0003e354)(local_70);\n        }" ({ "{") (expression_statement "(*(code *)PTR_free_0003e354)(local_70);" (call_expression "(*(code *)PTR_free_0003e354)(local_70)" (parenthesized_expression "(*(code *)PTR_free_0003e354)" (( "(") (pointer_expression "*(code *)PTR_free_0003e354" (* "*") (cast_expression "(code *)PTR_free_0003e354" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_free_0003e354"))) () ")")) (argument_list "(local_70)" (( "(") (identifier "local_70") () ")"))) (; ";")) (} "}"))) (expression_statement "iVar13 = FUN_0001eb94(unaff_s5);" (assignment_expression "iVar13 = FUN_0001eb94(unaff_s5)" (identifier "iVar13") (= "=") (call_expression "FUN_0001eb94(unaff_s5)" (identifier "FUN_0001eb94") (argument_list "(unaff_s5)" (( "(") (identifier "unaff_s5") () ")")))) (; ";")) (} "}")))) (goto_statement "goto LAB_00021ed8;" (goto "goto") (statement_identifier "LAB_00021ed8") (; ";")) (} "}"))) (labeled_statement "LAB_00021d04:\n    unaff_s2 = (int *******)param_2[0x15];" (statement_identifier "LAB_00021d04") (: ":") (expression_statement "unaff_s2 = (int *******)param_2[0x15];" (assignment_expression "unaff_s2 = (int *******)param_2[0x15]" (identifier "unaff_s2") (= "=") (cast_expression "(int *******)param_2[0x15]" (( "(") (type_descriptor "int *******" (primitive_type "int") (abstract_pointer_declarator "*******" (* "*") (abstract_pointer_declarator "******" (* "*") (abstract_pointer_declarator "*****" (* "*") (abstract_pointer_declarator "****" (* "*") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))))))) () ")") (subscript_expression "param_2[0x15]" (identifier "param_2") ([ "[") (number_literal "0x15") (] "]")))) (; ";"))) (expression_statement "unaff_s3 = (int ******)((int)unaff_s0 * 8);" (assignment_expression "unaff_s3 = (int ******)((int)unaff_s0 * 8)" (identifier "unaff_s3") (= "=") (cast_expression "(int ******)((int)unaff_s0 * 8)" (( "(") (type_descriptor "int ******" (primitive_type "int") (abstract_pointer_declarator "******" (* "*") (abstract_pointer_declarator "*****" (* "*") (abstract_pointer_declarator "****" (* "*") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))))))) () ")") (parenthesized_expression "((int)unaff_s0 * 8)" (( "(") (binary_expression "(int)unaff_s0 * 8" (cast_expression "(int)unaff_s0" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "unaff_s0")) (* "*") (number_literal "8")) () ")")))) (; ";")) (expression_statement "ppppppiVar12 = *unaff_s2 + (int)unaff_s0 * 2;" (assignment_expression "ppppppiVar12 = *unaff_s2 + (int)unaff_s0 * 2" (identifier "ppppppiVar12") (= "=") (binary_expression "*unaff_s2 + (int)unaff_s0 * 2" (pointer_expression "*unaff_s2" (* "*") (identifier "unaff_s2")) (+ "+") (binary_expression "(int)unaff_s0 * 2" (cast_expression "(int)unaff_s0" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "unaff_s0")) (* "*") (number_literal "2")))) (; ";")) (if_statement "if ((*(byte *)(ppppppiVar12 + 1) & 8) == 0) {\n      if (((uint)ppppppiVar12[1] & 0x800) == 0) {\n        if (*(byte *)(ppppppiVar12 + 1) == 4) {\n          ppppppiVar16 = (param_4 + ((int)*ppppppiVar12 + 1) * 2)[1];\n          ppppppiVar12 = param_4[((int)*ppppppiVar12 + 1) * 2];\n          unaff_s6 = (int *******)((int)ppppppiVar16 - (int)ppppppiVar12);\n          if (unaff_s5 == (int **)0x0) {\n            pppppppiVar17 = unaff_s0;\n            if (unaff_s6 != (int *******)0x0) goto LAB_00021da8;\nLAB_00021dd0:\n            pppppppiVar17 = unaff_s0;\n            iVar13 = (*pcVar7)(&local_44);\n            if (iVar13 == 0) goto LAB_00021b34;\n            pppppppiVar11 = (int *******)*unaff_s2[5][(int)unaff_s0 * 3 + 2];\n            pppppppiVar17 = pppppppiVar11;\n            iVar13 = (*pcVar6)(param_2[0x19][(int)local_48] + 1);\n            if (iVar13 != 0) goto LAB_00021ca8;\n            goto LAB_00021c18;\n          }\n          if ((ppppppiVar12 != (int ******)0xffffffff) && (ppppppiVar16 != (int ******)0xffffffff))\n          {\n            if (unaff_s6 == (int *******)0x0) goto LAB_00021dd0;\n            pppppppiVar17 = (int *******)((int)param_2[1] + (int)local_48);\n            pppppppiVar18 = unaff_s6;\n            iVar13 = (*(code *)PTR_memcmp_0003e338)((int)param_2[1] + (int)ppppppiVar12);\n            if (iVar13 == 0) goto LAB_00021da8;\n          }\n        }\n        else {\nLAB_00021c18:\n          unaff_s6 = local_48;\n          pppppppiVar17 = (int *******)(*unaff_s2 + (int)unaff_s0 * 2);\n          pppppppiVar18 = local_48;\n          iVar13 = FUN_0001c4f8(param_2);\n          if (iVar13 != 0) {\n            pppppppiVar11 = (int *******)unaff_s2[3][(int)unaff_s0];\n            local_48 = (int *******)((int)unaff_s6 + 1);\n            goto LAB_00021c5c;\n          }\n        }\n      }\n      else {\n        pppppppiVar17 = unaff_s0;\n        pppppppiVar18 = param_2;\n        pppppppiVar19 = local_48;\n        unaff_s6 = (int *******)FUN_000200a0(unaff_s2);\n        if (unaff_s6 == (int *******)0x0) goto LAB_00021c18;\nLAB_00021da8:\n        pppppppiVar11 = (int *******)unaff_s2[3][(int)unaff_s0];\n        local_48 = (int *******)((int)unaff_s6 + (int)local_48);\nLAB_00021c5c:\n        unaff_s6 = local_48;\n        if (unaff_s5 == (int **)0x0) {\nLAB_00021ca4:\n          local_40 = 0;\n          goto LAB_00021ca8;\n        }\n        unaff_s6 = (int *******)((int)local_48 * 4);\n        if ((int)local_48 <= (int)param_2[0x17]) {\n          unaff_s6 = (int *******)(param_2[0x19] + (int)local_48);\n          pppppppiVar17 = pppppppiVar11;\n          if ((*unaff_s6 != (int ******)0x0) && (iVar13 = (*pcVar6)(*unaff_s6 + 1), iVar13 != 0))\n          goto LAB_00021ca4;\n        }\n      }\nLAB_00021f3c:\n      unaff_s0 = (int *******)0xffffffff;\n      goto LAB_00021f44;\n    }" (if "if") (parenthesized_expression "((*(byte *)(ppppppiVar12 + 1) & 8) == 0)" (( "(") (binary_expression "(*(byte *)(ppppppiVar12 + 1) & 8) == 0" (parenthesized_expression "(*(byte *)(ppppppiVar12 + 1) & 8)" (( "(") (binary_expression "*(byte *)(ppppppiVar12 + 1) & 8" (pointer_expression "*(byte *)(ppppppiVar12 + 1)" (* "*") (cast_expression "(byte *)(ppppppiVar12 + 1)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(ppppppiVar12 + 1)" (( "(") (binary_expression "ppppppiVar12 + 1" (identifier "ppppppiVar12") (+ "+") (number_literal "1")) () ")")))) (& "&") (number_literal "8")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      if (((uint)ppppppiVar12[1] & 0x800) == 0) {\n        if (*(byte *)(ppppppiVar12 + 1) == 4) {\n          ppppppiVar16 = (param_4 + ((int)*ppppppiVar12 + 1) * 2)[1];\n          ppppppiVar12 = param_4[((int)*ppppppiVar12 + 1) * 2];\n          unaff_s6 = (int *******)((int)ppppppiVar16 - (int)ppppppiVar12);\n          if (unaff_s5 == (int **)0x0) {\n            pppppppiVar17 = unaff_s0;\n            if (unaff_s6 != (int *******)0x0) goto LAB_00021da8;\nLAB_00021dd0:\n            pppppppiVar17 = unaff_s0;\n            iVar13 = (*pcVar7)(&local_44);\n            if (iVar13 == 0) goto LAB_00021b34;\n            pppppppiVar11 = (int *******)*unaff_s2[5][(int)unaff_s0 * 3 + 2];\n            pppppppiVar17 = pppppppiVar11;\n            iVar13 = (*pcVar6)(param_2[0x19][(int)local_48] + 1);\n            if (iVar13 != 0) goto LAB_00021ca8;\n            goto LAB_00021c18;\n          }\n          if ((ppppppiVar12 != (int ******)0xffffffff) && (ppppppiVar16 != (int ******)0xffffffff))\n          {\n            if (unaff_s6 == (int *******)0x0) goto LAB_00021dd0;\n            pppppppiVar17 = (int *******)((int)param_2[1] + (int)local_48);\n            pppppppiVar18 = unaff_s6;\n            iVar13 = (*(code *)PTR_memcmp_0003e338)((int)param_2[1] + (int)ppppppiVar12);\n            if (iVar13 == 0) goto LAB_00021da8;\n          }\n        }\n        else {\nLAB_00021c18:\n          unaff_s6 = local_48;\n          pppppppiVar17 = (int *******)(*unaff_s2 + (int)unaff_s0 * 2);\n          pppppppiVar18 = local_48;\n          iVar13 = FUN_0001c4f8(param_2);\n          if (iVar13 != 0) {\n            pppppppiVar11 = (int *******)unaff_s2[3][(int)unaff_s0];\n            local_48 = (int *******)((int)unaff_s6 + 1);\n            goto LAB_00021c5c;\n          }\n        }\n      }\n      else {\n        pppppppiVar17 = unaff_s0;\n        pppppppiVar18 = param_2;\n        pppppppiVar19 = local_48;\n        unaff_s6 = (int *******)FUN_000200a0(unaff_s2);\n        if (unaff_s6 == (int *******)0x0) goto LAB_00021c18;\nLAB_00021da8:\n        pppppppiVar11 = (int *******)unaff_s2[3][(int)unaff_s0];\n        local_48 = (int *******)((int)unaff_s6 + (int)local_48);\nLAB_00021c5c:\n        unaff_s6 = local_48;\n        if (unaff_s5 == (int **)0x0) {\nLAB_00021ca4:\n          local_40 = 0;\n          goto LAB_00021ca8;\n        }\n        unaff_s6 = (int *******)((int)local_48 * 4);\n        if ((int)local_48 <= (int)param_2[0x17]) {\n          unaff_s6 = (int *******)(param_2[0x19] + (int)local_48);\n          pppppppiVar17 = pppppppiVar11;\n          if ((*unaff_s6 != (int ******)0x0) && (iVar13 = (*pcVar6)(*unaff_s6 + 1), iVar13 != 0))\n          goto LAB_00021ca4;\n        }\n      }\nLAB_00021f3c:\n      unaff_s0 = (int *******)0xffffffff;\n      goto LAB_00021f44;\n    }" ({ "{") (if_statement "if (((uint)ppppppiVar12[1] & 0x800) == 0) {\n        if (*(byte *)(ppppppiVar12 + 1) == 4) {\n          ppppppiVar16 = (param_4 + ((int)*ppppppiVar12 + 1) * 2)[1];\n          ppppppiVar12 = param_4[((int)*ppppppiVar12 + 1) * 2];\n          unaff_s6 = (int *******)((int)ppppppiVar16 - (int)ppppppiVar12);\n          if (unaff_s5 == (int **)0x0) {\n            pppppppiVar17 = unaff_s0;\n            if (unaff_s6 != (int *******)0x0) goto LAB_00021da8;\nLAB_00021dd0:\n            pppppppiVar17 = unaff_s0;\n            iVar13 = (*pcVar7)(&local_44);\n            if (iVar13 == 0) goto LAB_00021b34;\n            pppppppiVar11 = (int *******)*unaff_s2[5][(int)unaff_s0 * 3 + 2];\n            pppppppiVar17 = pppppppiVar11;\n            iVar13 = (*pcVar6)(param_2[0x19][(int)local_48] + 1);\n            if (iVar13 != 0) goto LAB_00021ca8;\n            goto LAB_00021c18;\n          }\n          if ((ppppppiVar12 != (int ******)0xffffffff) && (ppppppiVar16 != (int ******)0xffffffff))\n          {\n            if (unaff_s6 == (int *******)0x0) goto LAB_00021dd0;\n            pppppppiVar17 = (int *******)((int)param_2[1] + (int)local_48);\n            pppppppiVar18 = unaff_s6;\n            iVar13 = (*(code *)PTR_memcmp_0003e338)((int)param_2[1] + (int)ppppppiVar12);\n            if (iVar13 == 0) goto LAB_00021da8;\n          }\n        }\n        else {\nLAB_00021c18:\n          unaff_s6 = local_48;\n          pppppppiVar17 = (int *******)(*unaff_s2 + (int)unaff_s0 * 2);\n          pppppppiVar18 = local_48;\n          iVar13 = FUN_0001c4f8(param_2);\n          if (iVar13 != 0) {\n            pppppppiVar11 = (int *******)unaff_s2[3][(int)unaff_s0];\n            local_48 = (int *******)((int)unaff_s6 + 1);\n            goto LAB_00021c5c;\n          }\n        }\n      }\n      else {\n        pppppppiVar17 = unaff_s0;\n        pppppppiVar18 = param_2;\n        pppppppiVar19 = local_48;\n        unaff_s6 = (int *******)FUN_000200a0(unaff_s2);\n        if (unaff_s6 == (int *******)0x0) goto LAB_00021c18;\nLAB_00021da8:\n        pppppppiVar11 = (int *******)unaff_s2[3][(int)unaff_s0];\n        local_48 = (int *******)((int)unaff_s6 + (int)local_48);\nLAB_00021c5c:\n        unaff_s6 = local_48;\n        if (unaff_s5 == (int **)0x0) {\nLAB_00021ca4:\n          local_40 = 0;\n          goto LAB_00021ca8;\n        }\n        unaff_s6 = (int *******)((int)local_48 * 4);\n        if ((int)local_48 <= (int)param_2[0x17]) {\n          unaff_s6 = (int *******)(param_2[0x19] + (int)local_48);\n          pppppppiVar17 = pppppppiVar11;\n          if ((*unaff_s6 != (int ******)0x0) && (iVar13 = (*pcVar6)(*unaff_s6 + 1), iVar13 != 0))\n          goto LAB_00021ca4;\n        }\n      }" (if "if") (parenthesized_expression "(((uint)ppppppiVar12[1] & 0x800) == 0)" (( "(") (binary_expression "((uint)ppppppiVar12[1] & 0x800) == 0" (parenthesized_expression "((uint)ppppppiVar12[1] & 0x800)" (( "(") (binary_expression "(uint)ppppppiVar12[1] & 0x800" (cast_expression "(uint)ppppppiVar12[1]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "ppppppiVar12[1]" (identifier "ppppppiVar12") ([ "[") (number_literal "1") (] "]"))) (& "&") (number_literal "0x800")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        if (*(byte *)(ppppppiVar12 + 1) == 4) {\n          ppppppiVar16 = (param_4 + ((int)*ppppppiVar12 + 1) * 2)[1];\n          ppppppiVar12 = param_4[((int)*ppppppiVar12 + 1) * 2];\n          unaff_s6 = (int *******)((int)ppppppiVar16 - (int)ppppppiVar12);\n          if (unaff_s5 == (int **)0x0) {\n            pppppppiVar17 = unaff_s0;\n            if (unaff_s6 != (int *******)0x0) goto LAB_00021da8;\nLAB_00021dd0:\n            pppppppiVar17 = unaff_s0;\n            iVar13 = (*pcVar7)(&local_44);\n            if (iVar13 == 0) goto LAB_00021b34;\n            pppppppiVar11 = (int *******)*unaff_s2[5][(int)unaff_s0 * 3 + 2];\n            pppppppiVar17 = pppppppiVar11;\n            iVar13 = (*pcVar6)(param_2[0x19][(int)local_48] + 1);\n            if (iVar13 != 0) goto LAB_00021ca8;\n            goto LAB_00021c18;\n          }\n          if ((ppppppiVar12 != (int ******)0xffffffff) && (ppppppiVar16 != (int ******)0xffffffff))\n          {\n            if (unaff_s6 == (int *******)0x0) goto LAB_00021dd0;\n            pppppppiVar17 = (int *******)((int)param_2[1] + (int)local_48);\n            pppppppiVar18 = unaff_s6;\n            iVar13 = (*(code *)PTR_memcmp_0003e338)((int)param_2[1] + (int)ppppppiVar12);\n            if (iVar13 == 0) goto LAB_00021da8;\n          }\n        }\n        else {\nLAB_00021c18:\n          unaff_s6 = local_48;\n          pppppppiVar17 = (int *******)(*unaff_s2 + (int)unaff_s0 * 2);\n          pppppppiVar18 = local_48;\n          iVar13 = FUN_0001c4f8(param_2);\n          if (iVar13 != 0) {\n            pppppppiVar11 = (int *******)unaff_s2[3][(int)unaff_s0];\n            local_48 = (int *******)((int)unaff_s6 + 1);\n            goto LAB_00021c5c;\n          }\n        }\n      }" ({ "{") (if_statement "if (*(byte *)(ppppppiVar12 + 1) == 4) {\n          ppppppiVar16 = (param_4 + ((int)*ppppppiVar12 + 1) * 2)[1];\n          ppppppiVar12 = param_4[((int)*ppppppiVar12 + 1) * 2];\n          unaff_s6 = (int *******)((int)ppppppiVar16 - (int)ppppppiVar12);\n          if (unaff_s5 == (int **)0x0) {\n            pppppppiVar17 = unaff_s0;\n            if (unaff_s6 != (int *******)0x0) goto LAB_00021da8;\nLAB_00021dd0:\n            pppppppiVar17 = unaff_s0;\n            iVar13 = (*pcVar7)(&local_44);\n            if (iVar13 == 0) goto LAB_00021b34;\n            pppppppiVar11 = (int *******)*unaff_s2[5][(int)unaff_s0 * 3 + 2];\n            pppppppiVar17 = pppppppiVar11;\n            iVar13 = (*pcVar6)(param_2[0x19][(int)local_48] + 1);\n            if (iVar13 != 0) goto LAB_00021ca8;\n            goto LAB_00021c18;\n          }\n          if ((ppppppiVar12 != (int ******)0xffffffff) && (ppppppiVar16 != (int ******)0xffffffff))\n          {\n            if (unaff_s6 == (int *******)0x0) goto LAB_00021dd0;\n            pppppppiVar17 = (int *******)((int)param_2[1] + (int)local_48);\n            pppppppiVar18 = unaff_s6;\n            iVar13 = (*(code *)PTR_memcmp_0003e338)((int)param_2[1] + (int)ppppppiVar12);\n            if (iVar13 == 0) goto LAB_00021da8;\n          }\n        }\n        else {\nLAB_00021c18:\n          unaff_s6 = local_48;\n          pppppppiVar17 = (int *******)(*unaff_s2 + (int)unaff_s0 * 2);\n          pppppppiVar18 = local_48;\n          iVar13 = FUN_0001c4f8(param_2);\n          if (iVar13 != 0) {\n            pppppppiVar11 = (int *******)unaff_s2[3][(int)unaff_s0];\n            local_48 = (int *******)((int)unaff_s6 + 1);\n            goto LAB_00021c5c;\n          }\n        }" (if "if") (parenthesized_expression "(*(byte *)(ppppppiVar12 + 1) == 4)" (( "(") (binary_expression "*(byte *)(ppppppiVar12 + 1) == 4" (pointer_expression "*(byte *)(ppppppiVar12 + 1)" (* "*") (cast_expression "(byte *)(ppppppiVar12 + 1)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(ppppppiVar12 + 1)" (( "(") (binary_expression "ppppppiVar12 + 1" (identifier "ppppppiVar12") (+ "+") (number_literal "1")) () ")")))) (== "==") (number_literal "4")) () ")")) (compound_statement "{\n          ppppppiVar16 = (param_4 + ((int)*ppppppiVar12 + 1) * 2)[1];\n          ppppppiVar12 = param_4[((int)*ppppppiVar12 + 1) * 2];\n          unaff_s6 = (int *******)((int)ppppppiVar16 - (int)ppppppiVar12);\n          if (unaff_s5 == (int **)0x0) {\n            pppppppiVar17 = unaff_s0;\n            if (unaff_s6 != (int *******)0x0) goto LAB_00021da8;\nLAB_00021dd0:\n            pppppppiVar17 = unaff_s0;\n            iVar13 = (*pcVar7)(&local_44);\n            if (iVar13 == 0) goto LAB_00021b34;\n            pppppppiVar11 = (int *******)*unaff_s2[5][(int)unaff_s0 * 3 + 2];\n            pppppppiVar17 = pppppppiVar11;\n            iVar13 = (*pcVar6)(param_2[0x19][(int)local_48] + 1);\n            if (iVar13 != 0) goto LAB_00021ca8;\n            goto LAB_00021c18;\n          }\n          if ((ppppppiVar12 != (int ******)0xffffffff) && (ppppppiVar16 != (int ******)0xffffffff))\n          {\n            if (unaff_s6 == (int *******)0x0) goto LAB_00021dd0;\n            pppppppiVar17 = (int *******)((int)param_2[1] + (int)local_48);\n            pppppppiVar18 = unaff_s6;\n            iVar13 = (*(code *)PTR_memcmp_0003e338)((int)param_2[1] + (int)ppppppiVar12);\n            if (iVar13 == 0) goto LAB_00021da8;\n          }\n        }" ({ "{") (expression_statement "ppppppiVar16 = (param_4 + ((int)*ppppppiVar12 + 1) * 2)[1];" (assignment_expression "ppppppiVar16 = (param_4 + ((int)*ppppppiVar12 + 1) * 2)[1]" (identifier "ppppppiVar16") (= "=") (subscript_expression "(param_4 + ((int)*ppppppiVar12 + 1) * 2)[1]" (parenthesized_expression "(param_4 + ((int)*ppppppiVar12 + 1) * 2)" (( "(") (binary_expression "param_4 + ((int)*ppppppiVar12 + 1) * 2" (identifier "param_4") (+ "+") (binary_expression "((int)*ppppppiVar12 + 1) * 2" (parenthesized_expression "((int)*ppppppiVar12 + 1)" (( "(") (binary_expression "(int)*ppppppiVar12 + 1" (cast_expression "(int)*ppppppiVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (pointer_expression "*ppppppiVar12" (* "*") (identifier "ppppppiVar12"))) (+ "+") (number_literal "1")) () ")")) (* "*") (number_literal "2"))) () ")")) ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "ppppppiVar12 = param_4[((int)*ppppppiVar12 + 1) * 2];" (assignment_expression "ppppppiVar12 = param_4[((int)*ppppppiVar12 + 1) * 2]" (identifier "ppppppiVar12") (= "=") (subscript_expression "param_4[((int)*ppppppiVar12 + 1) * 2]" (identifier "param_4") ([ "[") (binary_expression "((int)*ppppppiVar12 + 1) * 2" (parenthesized_expression "((int)*ppppppiVar12 + 1)" (( "(") (binary_expression "(int)*ppppppiVar12 + 1" (cast_expression "(int)*ppppppiVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (pointer_expression "*ppppppiVar12" (* "*") (identifier "ppppppiVar12"))) (+ "+") (number_literal "1")) () ")")) (* "*") (number_literal "2")) (] "]"))) (; ";")) (expression_statement "unaff_s6 = (int *******)((int)ppppppiVar16 - (int)ppppppiVar12);" (assignment_expression "unaff_s6 = (int *******)((int)ppppppiVar16 - (int)ppppppiVar12)" (identifier "unaff_s6") (= "=") (cast_expression "(int *******)((int)ppppppiVar16 - (int)ppppppiVar12)" (( "(") (type_descriptor "int *******" (primitive_type "int") (abstract_pointer_declarator "*******" (* "*") (abstract_pointer_declarator "******" (* "*") (abstract_pointer_declarator "*****" (* "*") (abstract_pointer_declarator "****" (* "*") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))))))) () ")") (parenthesized_expression "((int)ppppppiVar16 - (int)ppppppiVar12)" (( "(") (binary_expression "(int)ppppppiVar16 - (int)ppppppiVar12" (cast_expression "(int)ppppppiVar16" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "ppppppiVar16")) (- "-") (cast_expression "(int)ppppppiVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "ppppppiVar12"))) () ")")))) (; ";")) (if_statement "if (unaff_s5 == (int **)0x0) {\n            pppppppiVar17 = unaff_s0;\n            if (unaff_s6 != (int *******)0x0) goto LAB_00021da8;\nLAB_00021dd0:\n            pppppppiVar17 = unaff_s0;\n            iVar13 = (*pcVar7)(&local_44);\n            if (iVar13 == 0) goto LAB_00021b34;\n            pppppppiVar11 = (int *******)*unaff_s2[5][(int)unaff_s0 * 3 + 2];\n            pppppppiVar17 = pppppppiVar11;\n            iVar13 = (*pcVar6)(param_2[0x19][(int)local_48] + 1);\n            if (iVar13 != 0) goto LAB_00021ca8;\n            goto LAB_00021c18;\n          }" (if "if") (parenthesized_expression "(unaff_s5 == (int **)0x0)" (( "(") (binary_expression "unaff_s5 == (int **)0x0" (identifier "unaff_s5") (== "==") (cast_expression "(int **)0x0" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n            pppppppiVar17 = unaff_s0;\n            if (unaff_s6 != (int *******)0x0) goto LAB_00021da8;\nLAB_00021dd0:\n            pppppppiVar17 = unaff_s0;\n            iVar13 = (*pcVar7)(&local_44);\n            if (iVar13 == 0) goto LAB_00021b34;\n            pppppppiVar11 = (int *******)*unaff_s2[5][(int)unaff_s0 * 3 + 2];\n            pppppppiVar17 = pppppppiVar11;\n            iVar13 = (*pcVar6)(param_2[0x19][(int)local_48] + 1);\n            if (iVar13 != 0) goto LAB_00021ca8;\n            goto LAB_00021c18;\n          }" ({ "{") (expression_statement "pppppppiVar17 = unaff_s0;" (assignment_expression "pppppppiVar17 = unaff_s0" (identifier "pppppppiVar17") (= "=") (identifier "unaff_s0")) (; ";")) (if_statement "if (unaff_s6 != (int *******)0x0) goto LAB_00021da8;" (if "if") (parenthesized_expression "(unaff_s6 != (int *******)0x0)" (( "(") (binary_expression "unaff_s6 != (int *******)0x0" (identifier "unaff_s6") (!= "!=") (cast_expression "(int *******)0x0" (( "(") (type_descriptor "int *******" (primitive_type "int") (abstract_pointer_declarator "*******" (* "*") (abstract_pointer_declarator "******" (* "*") (abstract_pointer_declarator "*****" (* "*") (abstract_pointer_declarator "****" (* "*") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))))))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_00021da8;" (goto "goto") (statement_identifier "LAB_00021da8") (; ";"))) (labeled_statement "LAB_00021dd0:\n            pppppppiVar17 = unaff_s0;" (statement_identifier "LAB_00021dd0") (: ":") (expression_statement "pppppppiVar17 = unaff_s0;" (assignment_expression "pppppppiVar17 = unaff_s0" (identifier "pppppppiVar17") (= "=") (identifier "unaff_s0")) (; ";"))) (expression_statement "iVar13 = (*pcVar7)(&local_44);" (assignment_expression "iVar13 = (*pcVar7)(&local_44)" (identifier "iVar13") (= "=") (call_expression "(*pcVar7)(&local_44)" (parenthesized_expression "(*pcVar7)" (( "(") (pointer_expression "*pcVar7" (* "*") (identifier "pcVar7")) () ")")) (argument_list "(&local_44)" (( "(") (pointer_expression "&local_44" (& "&") (identifier "local_44")) () ")")))) (; ";")) (if_statement "if (iVar13 == 0) goto LAB_00021b34;" (if "if") (parenthesized_expression "(iVar13 == 0)" (( "(") (binary_expression "iVar13 == 0" (identifier "iVar13") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_00021b34;" (goto "goto") (statement_identifier "LAB_00021b34") (; ";"))) (expression_statement "pppppppiVar11 = (int *******)*unaff_s2[5][(int)unaff_s0 * 3 + 2];" (assignment_expression "pppppppiVar11 = (int *******)*unaff_s2[5][(int)unaff_s0 * 3 + 2]" (identifier "pppppppiVar11") (= "=") (cast_expression "(int *******)*unaff_s2[5][(int)unaff_s0 * 3 + 2]" (( "(") (type_descriptor "int *******" (primitive_type "int") (abstract_pointer_declarator "*******" (* "*") (abstract_pointer_declarator "******" (* "*") (abstract_pointer_declarator "*****" (* "*") (abstract_pointer_declarator "****" (* "*") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))))))) () ")") (pointer_expression "*unaff_s2[5][(int)unaff_s0 * 3 + 2]" (* "*") (subscript_expression "unaff_s2[5][(int)unaff_s0 * 3 + 2]" (subscript_expression "unaff_s2[5]" (identifier "unaff_s2") ([ "[") (number_literal "5") (] "]")) ([ "[") (binary_expression "(int)unaff_s0 * 3 + 2" (binary_expression "(int)unaff_s0 * 3" (cast_expression "(int)unaff_s0" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "unaff_s0")) (* "*") (number_literal "3")) (+ "+") (number_literal "2")) (] "]"))))) (; ";")) (expression_statement "pppppppiVar17 = pppppppiVar11;" (assignment_expression "pppppppiVar17 = pppppppiVar11" (identifier "pppppppiVar17") (= "=") (identifier "pppppppiVar11")) (; ";")) (expression_statement "iVar13 = (*pcVar6)(param_2[0x19][(int)local_48] + 1);" (assignment_expression "iVar13 = (*pcVar6)(param_2[0x19][(int)local_48] + 1)" (identifier "iVar13") (= "=") (call_expression "(*pcVar6)(param_2[0x19][(int)local_48] + 1)" (parenthesized_expression "(*pcVar6)" (( "(") (pointer_expression "*pcVar6" (* "*") (identifier "pcVar6")) () ")")) (argument_list "(param_2[0x19][(int)local_48] + 1)" (( "(") (binary_expression "param_2[0x19][(int)local_48] + 1" (subscript_expression "param_2[0x19][(int)local_48]" (subscript_expression "param_2[0x19]" (identifier "param_2") ([ "[") (number_literal "0x19") (] "]")) ([ "[") (cast_expression "(int)local_48" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_48")) (] "]")) (+ "+") (number_literal "1")) () ")")))) (; ";")) (if_statement "if (iVar13 != 0) goto LAB_00021ca8;" (if "if") (parenthesized_expression "(iVar13 != 0)" (( "(") (binary_expression "iVar13 != 0" (identifier "iVar13") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_00021ca8;" (goto "goto") (statement_identifier "LAB_00021ca8") (; ";"))) (goto_statement "goto LAB_00021c18;" (goto "goto") (statement_identifier "LAB_00021c18") (; ";")) (} "}"))) (if_statement "if ((ppppppiVar12 != (int ******)0xffffffff) && (ppppppiVar16 != (int ******)0xffffffff))\n          {\n            if (unaff_s6 == (int *******)0x0) goto LAB_00021dd0;\n            pppppppiVar17 = (int *******)((int)param_2[1] + (int)local_48);\n            pppppppiVar18 = unaff_s6;\n            iVar13 = (*(code *)PTR_memcmp_0003e338)((int)param_2[1] + (int)ppppppiVar12);\n            if (iVar13 == 0) goto LAB_00021da8;\n          }" (if "if") (parenthesized_expression "((ppppppiVar12 != (int ******)0xffffffff) && (ppppppiVar16 != (int ******)0xffffffff))" (( "(") (binary_expression "(ppppppiVar12 != (int ******)0xffffffff) && (ppppppiVar16 != (int ******)0xffffffff)" (parenthesized_expression "(ppppppiVar12 != (int ******)0xffffffff)" (( "(") (binary_expression "ppppppiVar12 != (int ******)0xffffffff" (identifier "ppppppiVar12") (!= "!=") (cast_expression "(int ******)0xffffffff" (( "(") (type_descriptor "int ******" (primitive_type "int") (abstract_pointer_declarator "******" (* "*") (abstract_pointer_declarator "*****" (* "*") (abstract_pointer_declarator "****" (* "*") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))))))) () ")") (number_literal "0xffffffff"))) () ")")) (&& "&&") (parenthesized_expression "(ppppppiVar16 != (int ******)0xffffffff)" (( "(") (binary_expression "ppppppiVar16 != (int ******)0xffffffff" (identifier "ppppppiVar16") (!= "!=") (cast_expression "(int ******)0xffffffff" (( "(") (type_descriptor "int ******" (primitive_type "int") (abstract_pointer_declarator "******" (* "*") (abstract_pointer_declarator "*****" (* "*") (abstract_pointer_declarator "****" (* "*") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))))))) () ")") (number_literal "0xffffffff"))) () ")"))) () ")")) (compound_statement "{\n            if (unaff_s6 == (int *******)0x0) goto LAB_00021dd0;\n            pppppppiVar17 = (int *******)((int)param_2[1] + (int)local_48);\n            pppppppiVar18 = unaff_s6;\n            iVar13 = (*(code *)PTR_memcmp_0003e338)((int)param_2[1] + (int)ppppppiVar12);\n            if (iVar13 == 0) goto LAB_00021da8;\n          }" ({ "{") (if_statement "if (unaff_s6 == (int *******)0x0) goto LAB_00021dd0;" (if "if") (parenthesized_expression "(unaff_s6 == (int *******)0x0)" (( "(") (binary_expression "unaff_s6 == (int *******)0x0" (identifier "unaff_s6") (== "==") (cast_expression "(int *******)0x0" (( "(") (type_descriptor "int *******" (primitive_type "int") (abstract_pointer_declarator "*******" (* "*") (abstract_pointer_declarator "******" (* "*") (abstract_pointer_declarator "*****" (* "*") (abstract_pointer_declarator "****" (* "*") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))))))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_00021dd0;" (goto "goto") (statement_identifier "LAB_00021dd0") (; ";"))) (expression_statement "pppppppiVar17 = (int *******)((int)param_2[1] + (int)local_48);" (assignment_expression "pppppppiVar17 = (int *******)((int)param_2[1] + (int)local_48)" (identifier "pppppppiVar17") (= "=") (cast_expression "(int *******)((int)param_2[1] + (int)local_48)" (( "(") (type_descriptor "int *******" (primitive_type "int") (abstract_pointer_declarator "*******" (* "*") (abstract_pointer_declarator "******" (* "*") (abstract_pointer_declarator "*****" (* "*") (abstract_pointer_declarator "****" (* "*") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))))))) () ")") (parenthesized_expression "((int)param_2[1] + (int)local_48)" (( "(") (binary_expression "(int)param_2[1] + (int)local_48" (cast_expression "(int)param_2[1]" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]"))) (+ "+") (cast_expression "(int)local_48" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_48"))) () ")")))) (; ";")) (expression_statement "pppppppiVar18 = unaff_s6;" (assignment_expression "pppppppiVar18 = unaff_s6" (identifier "pppppppiVar18") (= "=") (identifier "unaff_s6")) (; ";")) (expression_statement "iVar13 = (*(code *)PTR_memcmp_0003e338)((int)param_2[1] + (int)ppppppiVar12);" (assignment_expression "iVar13 = (*(code *)PTR_memcmp_0003e338)((int)param_2[1] + (int)ppppppiVar12)" (identifier "iVar13") (= "=") (call_expression "(*(code *)PTR_memcmp_0003e338)((int)param_2[1] + (int)ppppppiVar12)" (parenthesized_expression "(*(code *)PTR_memcmp_0003e338)" (( "(") (pointer_expression "*(code *)PTR_memcmp_0003e338" (* "*") (cast_expression "(code *)PTR_memcmp_0003e338" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_memcmp_0003e338"))) () ")")) (argument_list "((int)param_2[1] + (int)ppppppiVar12)" (( "(") (binary_expression "(int)param_2[1] + (int)ppppppiVar12" (cast_expression "(int)param_2[1]" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]"))) (+ "+") (cast_expression "(int)ppppppiVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "ppppppiVar12"))) () ")")))) (; ";")) (if_statement "if (iVar13 == 0) goto LAB_00021da8;" (if "if") (parenthesized_expression "(iVar13 == 0)" (( "(") (binary_expression "iVar13 == 0" (identifier "iVar13") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_00021da8;" (goto "goto") (statement_identifier "LAB_00021da8") (; ";"))) (} "}"))) (} "}")) (else_clause "else {\nLAB_00021c18:\n          unaff_s6 = local_48;\n          pppppppiVar17 = (int *******)(*unaff_s2 + (int)unaff_s0 * 2);\n          pppppppiVar18 = local_48;\n          iVar13 = FUN_0001c4f8(param_2);\n          if (iVar13 != 0) {\n            pppppppiVar11 = (int *******)unaff_s2[3][(int)unaff_s0];\n            local_48 = (int *******)((int)unaff_s6 + 1);\n            goto LAB_00021c5c;\n          }\n        }" (else "else") (compound_statement "{\nLAB_00021c18:\n          unaff_s6 = local_48;\n          pppppppiVar17 = (int *******)(*unaff_s2 + (int)unaff_s0 * 2);\n          pppppppiVar18 = local_48;\n          iVar13 = FUN_0001c4f8(param_2);\n          if (iVar13 != 0) {\n            pppppppiVar11 = (int *******)unaff_s2[3][(int)unaff_s0];\n            local_48 = (int *******)((int)unaff_s6 + 1);\n            goto LAB_00021c5c;\n          }\n        }" ({ "{") (labeled_statement "LAB_00021c18:\n          unaff_s6 = local_48;" (statement_identifier "LAB_00021c18") (: ":") (expression_statement "unaff_s6 = local_48;" (assignment_expression "unaff_s6 = local_48" (identifier "unaff_s6") (= "=") (identifier "local_48")) (; ";"))) (expression_statement "pppppppiVar17 = (int *******)(*unaff_s2 + (int)unaff_s0 * 2);" (assignment_expression "pppppppiVar17 = (int *******)(*unaff_s2 + (int)unaff_s0 * 2)" (identifier "pppppppiVar17") (= "=") (cast_expression "(int *******)(*unaff_s2 + (int)unaff_s0 * 2)" (( "(") (type_descriptor "int *******" (primitive_type "int") (abstract_pointer_declarator "*******" (* "*") (abstract_pointer_declarator "******" (* "*") (abstract_pointer_declarator "*****" (* "*") (abstract_pointer_declarator "****" (* "*") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))))))) () ")") (parenthesized_expression "(*unaff_s2 + (int)unaff_s0 * 2)" (( "(") (binary_expression "*unaff_s2 + (int)unaff_s0 * 2" (pointer_expression "*unaff_s2" (* "*") (identifier "unaff_s2")) (+ "+") (binary_expression "(int)unaff_s0 * 2" (cast_expression "(int)unaff_s0" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "unaff_s0")) (* "*") (number_literal "2"))) () ")")))) (; ";")) (expression_statement "pppppppiVar18 = local_48;" (assignment_expression "pppppppiVar18 = local_48" (identifier "pppppppiVar18") (= "=") (identifier "local_48")) (; ";")) (expression_statement "iVar13 = FUN_0001c4f8(param_2);" (assignment_expression "iVar13 = FUN_0001c4f8(param_2)" (identifier "iVar13") (= "=") (call_expression "FUN_0001c4f8(param_2)" (identifier "FUN_0001c4f8") (argument_list "(param_2)" (( "(") (identifier "param_2") () ")")))) (; ";")) (if_statement "if (iVar13 != 0) {\n            pppppppiVar11 = (int *******)unaff_s2[3][(int)unaff_s0];\n            local_48 = (int *******)((int)unaff_s6 + 1);\n            goto LAB_00021c5c;\n          }" (if "if") (parenthesized_expression "(iVar13 != 0)" (( "(") (binary_expression "iVar13 != 0" (identifier "iVar13") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n            pppppppiVar11 = (int *******)unaff_s2[3][(int)unaff_s0];\n            local_48 = (int *******)((int)unaff_s6 + 1);\n            goto LAB_00021c5c;\n          }" ({ "{") (expression_statement "pppppppiVar11 = (int *******)unaff_s2[3][(int)unaff_s0];" (assignment_expression "pppppppiVar11 = (int *******)unaff_s2[3][(int)unaff_s0]" (identifier "pppppppiVar11") (= "=") (cast_expression "(int *******)unaff_s2[3][(int)unaff_s0]" (( "(") (type_descriptor "int *******" (primitive_type "int") (abstract_pointer_declarator "*******" (* "*") (abstract_pointer_declarator "******" (* "*") (abstract_pointer_declarator "*****" (* "*") (abstract_pointer_declarator "****" (* "*") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))))))) () ")") (subscript_expression "unaff_s2[3][(int)unaff_s0]" (subscript_expression "unaff_s2[3]" (identifier "unaff_s2") ([ "[") (number_literal "3") (] "]")) ([ "[") (cast_expression "(int)unaff_s0" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "unaff_s0")) (] "]")))) (; ";")) (expression_statement "local_48 = (int *******)((int)unaff_s6 + 1);" (assignment_expression "local_48 = (int *******)((int)unaff_s6 + 1)" (identifier "local_48") (= "=") (cast_expression "(int *******)((int)unaff_s6 + 1)" (( "(") (type_descriptor "int *******" (primitive_type "int") (abstract_pointer_declarator "*******" (* "*") (abstract_pointer_declarator "******" (* "*") (abstract_pointer_declarator "*****" (* "*") (abstract_pointer_declarator "****" (* "*") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))))))) () ")") (parenthesized_expression "((int)unaff_s6 + 1)" (( "(") (binary_expression "(int)unaff_s6 + 1" (cast_expression "(int)unaff_s6" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "unaff_s6")) (+ "+") (number_literal "1")) () ")")))) (; ";")) (goto_statement "goto LAB_00021c5c;" (goto "goto") (statement_identifier "LAB_00021c5c") (; ";")) (} "}"))) (} "}")))) (} "}")) (else_clause "else {\n        pppppppiVar17 = unaff_s0;\n        pppppppiVar18 = param_2;\n        pppppppiVar19 = local_48;\n        unaff_s6 = (int *******)FUN_000200a0(unaff_s2);\n        if (unaff_s6 == (int *******)0x0) goto LAB_00021c18;\nLAB_00021da8:\n        pppppppiVar11 = (int *******)unaff_s2[3][(int)unaff_s0];\n        local_48 = (int *******)((int)unaff_s6 + (int)local_48);\nLAB_00021c5c:\n        unaff_s6 = local_48;\n        if (unaff_s5 == (int **)0x0) {\nLAB_00021ca4:\n          local_40 = 0;\n          goto LAB_00021ca8;\n        }\n        unaff_s6 = (int *******)((int)local_48 * 4);\n        if ((int)local_48 <= (int)param_2[0x17]) {\n          unaff_s6 = (int *******)(param_2[0x19] + (int)local_48);\n          pppppppiVar17 = pppppppiVar11;\n          if ((*unaff_s6 != (int ******)0x0) && (iVar13 = (*pcVar6)(*unaff_s6 + 1), iVar13 != 0))\n          goto LAB_00021ca4;\n        }\n      }" (else "else") (compound_statement "{\n        pppppppiVar17 = unaff_s0;\n        pppppppiVar18 = param_2;\n        pppppppiVar19 = local_48;\n        unaff_s6 = (int *******)FUN_000200a0(unaff_s2);\n        if (unaff_s6 == (int *******)0x0) goto LAB_00021c18;\nLAB_00021da8:\n        pppppppiVar11 = (int *******)unaff_s2[3][(int)unaff_s0];\n        local_48 = (int *******)((int)unaff_s6 + (int)local_48);\nLAB_00021c5c:\n        unaff_s6 = local_48;\n        if (unaff_s5 == (int **)0x0) {\nLAB_00021ca4:\n          local_40 = 0;\n          goto LAB_00021ca8;\n        }\n        unaff_s6 = (int *******)((int)local_48 * 4);\n        if ((int)local_48 <= (int)param_2[0x17]) {\n          unaff_s6 = (int *******)(param_2[0x19] + (int)local_48);\n          pppppppiVar17 = pppppppiVar11;\n          if ((*unaff_s6 != (int ******)0x0) && (iVar13 = (*pcVar6)(*unaff_s6 + 1), iVar13 != 0))\n          goto LAB_00021ca4;\n        }\n      }" ({ "{") (expression_statement "pppppppiVar17 = unaff_s0;" (assignment_expression "pppppppiVar17 = unaff_s0" (identifier "pppppppiVar17") (= "=") (identifier "unaff_s0")) (; ";")) (expression_statement "pppppppiVar18 = param_2;" (assignment_expression "pppppppiVar18 = param_2" (identifier "pppppppiVar18") (= "=") (identifier "param_2")) (; ";")) (expression_statement "pppppppiVar19 = local_48;" (assignment_expression "pppppppiVar19 = local_48" (identifier "pppppppiVar19") (= "=") (identifier "local_48")) (; ";")) (expression_statement "unaff_s6 = (int *******)FUN_000200a0(unaff_s2);" (assignment_expression "unaff_s6 = (int *******)FUN_000200a0(unaff_s2)" (identifier "unaff_s6") (= "=") (cast_expression "(int *******)FUN_000200a0(unaff_s2)" (( "(") (type_descriptor "int *******" (primitive_type "int") (abstract_pointer_declarator "*******" (* "*") (abstract_pointer_declarator "******" (* "*") (abstract_pointer_declarator "*****" (* "*") (abstract_pointer_declarator "****" (* "*") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))))))) () ")") (call_expression "FUN_000200a0(unaff_s2)" (identifier "FUN_000200a0") (argument_list "(unaff_s2)" (( "(") (identifier "unaff_s2") () ")"))))) (; ";")) (if_statement "if (unaff_s6 == (int *******)0x0) goto LAB_00021c18;" (if "if") (parenthesized_expression "(unaff_s6 == (int *******)0x0)" (( "(") (binary_expression "unaff_s6 == (int *******)0x0" (identifier "unaff_s6") (== "==") (cast_expression "(int *******)0x0" (( "(") (type_descriptor "int *******" (primitive_type "int") (abstract_pointer_declarator "*******" (* "*") (abstract_pointer_declarator "******" (* "*") (abstract_pointer_declarator "*****" (* "*") (abstract_pointer_declarator "****" (* "*") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))))))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_00021c18;" (goto "goto") (statement_identifier "LAB_00021c18") (; ";"))) (labeled_statement "LAB_00021da8:\n        pppppppiVar11 = (int *******)unaff_s2[3][(int)unaff_s0];" (statement_identifier "LAB_00021da8") (: ":") (expression_statement "pppppppiVar11 = (int *******)unaff_s2[3][(int)unaff_s0];" (assignment_expression "pppppppiVar11 = (int *******)unaff_s2[3][(int)unaff_s0]" (identifier "pppppppiVar11") (= "=") (cast_expression "(int *******)unaff_s2[3][(int)unaff_s0]" (( "(") (type_descriptor "int *******" (primitive_type "int") (abstract_pointer_declarator "*******" (* "*") (abstract_pointer_declarator "******" (* "*") (abstract_pointer_declarator "*****" (* "*") (abstract_pointer_declarator "****" (* "*") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))))))) () ")") (subscript_expression "unaff_s2[3][(int)unaff_s0]" (subscript_expression "unaff_s2[3]" (identifier "unaff_s2") ([ "[") (number_literal "3") (] "]")) ([ "[") (cast_expression "(int)unaff_s0" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "unaff_s0")) (] "]")))) (; ";"))) (expression_statement "local_48 = (int *******)((int)unaff_s6 + (int)local_48);" (assignment_expression "local_48 = (int *******)((int)unaff_s6 + (int)local_48)" (identifier "local_48") (= "=") (cast_expression "(int *******)((int)unaff_s6 + (int)local_48)" (( "(") (type_descriptor "int *******" (primitive_type "int") (abstract_pointer_declarator "*******" (* "*") (abstract_pointer_declarator "******" (* "*") (abstract_pointer_declarator "*****" (* "*") (abstract_pointer_declarator "****" (* "*") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))))))) () ")") (parenthesized_expression "((int)unaff_s6 + (int)local_48)" (( "(") (binary_expression "(int)unaff_s6 + (int)local_48" (cast_expression "(int)unaff_s6" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "unaff_s6")) (+ "+") (cast_expression "(int)local_48" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_48"))) () ")")))) (; ";")) (labeled_statement "LAB_00021c5c:\n        unaff_s6 = local_48;" (statement_identifier "LAB_00021c5c") (: ":") (expression_statement "unaff_s6 = local_48;" (assignment_expression "unaff_s6 = local_48" (identifier "unaff_s6") (= "=") (identifier "local_48")) (; ";"))) (if_statement "if (unaff_s5 == (int **)0x0) {\nLAB_00021ca4:\n          local_40 = 0;\n          goto LAB_00021ca8;\n        }" (if "if") (parenthesized_expression "(unaff_s5 == (int **)0x0)" (( "(") (binary_expression "unaff_s5 == (int **)0x0" (identifier "unaff_s5") (== "==") (cast_expression "(int **)0x0" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\nLAB_00021ca4:\n          local_40 = 0;\n          goto LAB_00021ca8;\n        }" ({ "{") (labeled_statement "LAB_00021ca4:\n          local_40 = 0;" (statement_identifier "LAB_00021ca4") (: ":") (expression_statement "local_40 = 0;" (assignment_expression "local_40 = 0" (identifier "local_40") (= "=") (number_literal "0")) (; ";"))) (goto_statement "goto LAB_00021ca8;" (goto "goto") (statement_identifier "LAB_00021ca8") (; ";")) (} "}"))) (expression_statement "unaff_s6 = (int *******)((int)local_48 * 4);" (assignment_expression "unaff_s6 = (int *******)((int)local_48 * 4)" (identifier "unaff_s6") (= "=") (cast_expression "(int *******)((int)local_48 * 4)" (( "(") (type_descriptor "int *******" (primitive_type "int") (abstract_pointer_declarator "*******" (* "*") (abstract_pointer_declarator "******" (* "*") (abstract_pointer_declarator "*****" (* "*") (abstract_pointer_declarator "****" (* "*") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))))))) () ")") (parenthesized_expression "((int)local_48 * 4)" (( "(") (binary_expression "(int)local_48 * 4" (cast_expression "(int)local_48" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_48")) (* "*") (number_literal "4")) () ")")))) (; ";")) (if_statement "if ((int)local_48 <= (int)param_2[0x17]) {\n          unaff_s6 = (int *******)(param_2[0x19] + (int)local_48);\n          pppppppiVar17 = pppppppiVar11;\n          if ((*unaff_s6 != (int ******)0x0) && (iVar13 = (*pcVar6)(*unaff_s6 + 1), iVar13 != 0))\n          goto LAB_00021ca4;\n        }" (if "if") (parenthesized_expression "((int)local_48 <= (int)param_2[0x17])" (( "(") (binary_expression "(int)local_48 <= (int)param_2[0x17]" (cast_expression "(int)local_48" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_48")) (<= "<=") (cast_expression "(int)param_2[0x17]" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (subscript_expression "param_2[0x17]" (identifier "param_2") ([ "[") (number_literal "0x17") (] "]")))) () ")")) (compound_statement "{\n          unaff_s6 = (int *******)(param_2[0x19] + (int)local_48);\n          pppppppiVar17 = pppppppiVar11;\n          if ((*unaff_s6 != (int ******)0x0) && (iVar13 = (*pcVar6)(*unaff_s6 + 1), iVar13 != 0))\n          goto LAB_00021ca4;\n        }" ({ "{") (expression_statement "unaff_s6 = (int *******)(param_2[0x19] + (int)local_48);" (assignment_expression "unaff_s6 = (int *******)(param_2[0x19] + (int)local_48)" (identifier "unaff_s6") (= "=") (cast_expression "(int *******)(param_2[0x19] + (int)local_48)" (( "(") (type_descriptor "int *******" (primitive_type "int") (abstract_pointer_declarator "*******" (* "*") (abstract_pointer_declarator "******" (* "*") (abstract_pointer_declarator "*****" (* "*") (abstract_pointer_declarator "****" (* "*") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))))))) () ")") (parenthesized_expression "(param_2[0x19] + (int)local_48)" (( "(") (binary_expression "param_2[0x19] + (int)local_48" (subscript_expression "param_2[0x19]" (identifier "param_2") ([ "[") (number_literal "0x19") (] "]")) (+ "+") (cast_expression "(int)local_48" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_48"))) () ")")))) (; ";")) (expression_statement "pppppppiVar17 = pppppppiVar11;" (assignment_expression "pppppppiVar17 = pppppppiVar11" (identifier "pppppppiVar17") (= "=") (identifier "pppppppiVar11")) (; ";")) (if_statement "if ((*unaff_s6 != (int ******)0x0) && (iVar13 = (*pcVar6)(*unaff_s6 + 1), iVar13 != 0))\n          goto LAB_00021ca4;" (if "if") (parenthesized_expression "((*unaff_s6 != (int ******)0x0) && (iVar13 = (*pcVar6)(*unaff_s6 + 1), iVar13 != 0))" (( "(") (binary_expression "(*unaff_s6 != (int ******)0x0) && (iVar13 = (*pcVar6)(*unaff_s6 + 1), iVar13 != 0)" (parenthesized_expression "(*unaff_s6 != (int ******)0x0)" (( "(") (binary_expression "*unaff_s6 != (int ******)0x0" (pointer_expression "*unaff_s6" (* "*") (identifier "unaff_s6")) (!= "!=") (cast_expression "(int ******)0x0" (( "(") (type_descriptor "int ******" (primitive_type "int") (abstract_pointer_declarator "******" (* "*") (abstract_pointer_declarator "*****" (* "*") (abstract_pointer_declarator "****" (* "*") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))))))) () ")") (number_literal "0x0"))) () ")")) (&& "&&") (parenthesized_expression "(iVar13 = (*pcVar6)(*unaff_s6 + 1), iVar13 != 0)" (( "(") (comma_expression "iVar13 = (*pcVar6)(*unaff_s6 + 1), iVar13 != 0" (assignment_expression "iVar13 = (*pcVar6)(*unaff_s6 + 1)" (identifier "iVar13") (= "=") (call_expression "(*pcVar6)(*unaff_s6 + 1)" (parenthesized_expression "(*pcVar6)" (( "(") (pointer_expression "*pcVar6" (* "*") (identifier "pcVar6")) () ")")) (argument_list "(*unaff_s6 + 1)" (( "(") (binary_expression "*unaff_s6 + 1" (pointer_expression "*unaff_s6" (* "*") (identifier "unaff_s6")) (+ "+") (number_literal "1")) () ")")))) (, ",") (binary_expression "iVar13 != 0" (identifier "iVar13") (!= "!=") (number_literal "0"))) () ")"))) () ")")) (goto_statement "goto LAB_00021ca4;" (goto "goto") (statement_identifier "LAB_00021ca4") (; ";"))) (} "}"))) (} "}")))) (labeled_statement "LAB_00021f3c:\n      unaff_s0 = (int *******)0xffffffff;" (statement_identifier "LAB_00021f3c") (: ":") (expression_statement "unaff_s0 = (int *******)0xffffffff;" (assignment_expression "unaff_s0 = (int *******)0xffffffff" (identifier "unaff_s0") (= "=") (cast_expression "(int *******)0xffffffff" (( "(") (type_descriptor "int *******" (primitive_type "int") (abstract_pointer_declarator "*******" (* "*") (abstract_pointer_declarator "******" (* "*") (abstract_pointer_declarator "*****" (* "*") (abstract_pointer_declarator "****" (* "*") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))))))) () ")") (number_literal "0xffffffff"))) (; ";"))) (goto_statement "goto LAB_00021f44;" (goto "goto") (statement_identifier "LAB_00021f44") (; ";")) (} "}"))) (expression_statement "pppppiVar8 = param_2[0x19][(int)local_48];" (assignment_expression "pppppiVar8 = param_2[0x19][(int)local_48]" (identifier "pppppiVar8") (= "=") (subscript_expression "param_2[0x19][(int)local_48]" (subscript_expression "param_2[0x19]" (identifier "param_2") ([ "[") (number_literal "0x19") (] "]")) ([ "[") (cast_expression "(int)local_48" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_48")) (] "]"))) (; ";")) (expression_statement "unaff_s2 = (int *******)(unaff_s2[5] + (int)unaff_s0 * 3);" (assignment_expression "unaff_s2 = (int *******)(unaff_s2[5] + (int)unaff_s0 * 3)" (identifier "unaff_s2") (= "=") (cast_expression "(int *******)(unaff_s2[5] + (int)unaff_s0 * 3)" (( "(") (type_descriptor "int *******" (primitive_type "int") (abstract_pointer_declarator "*******" (* "*") (abstract_pointer_declarator "******" (* "*") (abstract_pointer_declarator "*****" (* "*") (abstract_pointer_declarator "****" (* "*") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))))))) () ")") (parenthesized_expression "(unaff_s2[5] + (int)unaff_s0 * 3)" (( "(") (binary_expression "unaff_s2[5] + (int)unaff_s0 * 3" (subscript_expression "unaff_s2[5]" (identifier "unaff_s2") ([ "[") (number_literal "5") (] "]")) (+ "+") (binary_expression "(int)unaff_s0 * 3" (cast_expression "(int)unaff_s0" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "unaff_s0")) (* "*") (number_literal "3"))) () ")")))) (; ";")) (expression_statement "pppppppiVar17 = unaff_s0;" (assignment_expression "pppppppiVar17 = unaff_s0" (identifier "pppppppiVar17") (= "=") (identifier "unaff_s0")) (; ";")) (expression_statement "iVar13 = (*pcVar7)(&local_44);" (assignment_expression "iVar13 = (*pcVar7)(&local_44)" (identifier "iVar13") (= "=") (call_expression "(*pcVar7)(&local_44)" (parenthesized_expression "(*pcVar7)" (( "(") (pointer_expression "*pcVar7" (* "*") (identifier "pcVar7")) () ")")) (argument_list "(&local_44)" (( "(") (pointer_expression "&local_44" (& "&") (identifier "local_44")) () ")")))) (; ";")) (if_statement "if (iVar13 == 0) goto LAB_00021b34;" (if "if") (parenthesized_expression "(iVar13 == 0)" (( "(") (binary_expression "iVar13 == 0" (identifier "iVar13") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_00021b34;" (goto "goto") (statement_identifier "LAB_00021b34") (; ";"))) (expression_statement "unaff_s6 = (int *******)unaff_s2[1];" (assignment_expression "unaff_s6 = (int *******)unaff_s2[1]" (identifier "unaff_s6") (= "=") (cast_expression "(int *******)unaff_s2[1]" (( "(") (type_descriptor "int *******" (primitive_type "int") (abstract_pointer_declarator "*******" (* "*") (abstract_pointer_declarator "******" (* "*") (abstract_pointer_declarator "*****" (* "*") (abstract_pointer_declarator "****" (* "*") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))))))) () ")") (subscript_expression "unaff_s2[1]" (identifier "unaff_s2") ([ "[") (number_literal "1") (] "]")))) (; ";")) (if_statement "if ((int)unaff_s6 < 1) goto LAB_00021f3c;" (if "if") (parenthesized_expression "((int)unaff_s6 < 1)" (( "(") (binary_expression "(int)unaff_s6 < 1" (cast_expression "(int)unaff_s6" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "unaff_s6")) (< "<") (number_literal "1")) () ")")) (goto_statement "goto LAB_00021f3c;" (goto "goto") (statement_identifier "LAB_00021f3c") (; ";"))) (expression_statement "unaff_s3 = unaff_s2[2];" (assignment_expression "unaff_s3 = unaff_s2[2]" (identifier "unaff_s3") (= "=") (subscript_expression "unaff_s2[2]" (identifier "unaff_s2") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "unaff_s2 = (int *******)0x0;" (assignment_expression "unaff_s2 = (int *******)0x0" (identifier "unaff_s2") (= "=") (cast_expression "(int *******)0x0" (( "(") (type_descriptor "int *******" (primitive_type "int") (abstract_pointer_declarator "*******" (* "*") (abstract_pointer_declarator "******" (* "*") (abstract_pointer_declarator "*****" (* "*") (abstract_pointer_declarator "****" (* "*") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))))))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "unaff_s0 = (int *******)0xffffffff;" (assignment_expression "unaff_s0 = (int *******)0xffffffff" (identifier "unaff_s0") (= "=") (cast_expression "(int *******)0xffffffff" (( "(") (type_descriptor "int *******" (primitive_type "int") (abstract_pointer_declarator "*******" (* "*") (abstract_pointer_declarator "******" (* "*") (abstract_pointer_declarator "*****" (* "*") (abstract_pointer_declarator "****" (* "*") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))))))) () ")") (number_literal "0xffffffff"))) (; ";")) (do_statement "do {\n      pppppppiVar9 = (int *******)*unaff_s3;\n      pppppppiVar17 = pppppppiVar9;\n      iVar13 = (*pcVar6)(pppppiVar8 + 1);\n      pppppppiVar11 = unaff_s0;\n      if ((iVar13 != 0) &&\n         (pppppppiVar17 = unaff_s0, pppppppiVar11 = pppppppiVar9,\n         unaff_s0 != (int *******)0xffffffff)) {\n        iVar13 = (*pcVar6)(&local_44);\n        pppppppiVar4 = local_48;\n        if ((iVar13 == 0) &&\n           (pppppppiVar11 = unaff_s0, unaff_s6 = local_48, unaff_s5 != (int **)0x0)) {\n          unaff_s2 = (int *******)*unaff_s5;\n          *unaff_s5 = (int *)((int)unaff_s2 + 1);\n          pppppppiVar17 = (int *******)unaff_s5[1];\n          if ((int *******)((int)unaff_s2 + 1) == pppppppiVar17) {\n            pppppppiVar17 = (int *******)((int)pppppppiVar17 * 0x30);\n            piVar10 = (int *)(*(code *)PTR_realloc_0003e2fc)(unaff_s5[2]);\n            unaff_s6 = pppppppiVar4;\n            if (piVar10 == (int *)0x0) goto LAB_00021b34;\n            unaff_s5[1] = (int *)((int)unaff_s5[1] << 1);\n            unaff_s5[2] = piVar10;\n          }\n          unaff_s3 = (int ******)((int)unaff_s2 * 0x18);\n          unaff_s5[2][(int)unaff_s2 * 6] = (int)pppppppiVar4;\n          *(int ********)((int)unaff_s3 + (int)(unaff_s5[2] + 1)) = pppppppiVar9;\n          unaff_s2 = (int *******)(unaff_s5[2] + (int)unaff_s2 * 6);\n          ppppppiVar12 = (int ******)(*(code *)PTR_malloc_0003e2f8)(pppppppiVar15);\n          unaff_s2[2] = ppppppiVar12;\n          pppppppiVar18 = pppppppiVar15;\n          unaff_s6 = pppppppiVar15;\n          if (*(int *)((int)unaff_s3 + (int)(unaff_s5[2] + 2)) == 0) goto LAB_00021b34;\n          (*(code *)PTR_memcpy_0003e34c)(*(int *)((int)unaff_s3 + (int)(unaff_s5[2] + 2)),param_4);\n          pppppppiVar17 = &local_44;\n          iVar13 = FUN_0001b67c((int *)((int)unaff_s3 + (int)(unaff_s5[2] + 3)));\n          if (iVar13 != 0) goto LAB_00021b34;\n        }\n        break;\n      }\n      unaff_s2 = (int *******)((int)unaff_s2 + 1);\n      unaff_s3 = unaff_s3 + 1;\n      unaff_s0 = pppppppiVar11;\n    } while (unaff_s6 != unaff_s2);" (do "do") (compound_statement "{\n      pppppppiVar9 = (int *******)*unaff_s3;\n      pppppppiVar17 = pppppppiVar9;\n      iVar13 = (*pcVar6)(pppppiVar8 + 1);\n      pppppppiVar11 = unaff_s0;\n      if ((iVar13 != 0) &&\n         (pppppppiVar17 = unaff_s0, pppppppiVar11 = pppppppiVar9,\n         unaff_s0 != (int *******)0xffffffff)) {\n        iVar13 = (*pcVar6)(&local_44);\n        pppppppiVar4 = local_48;\n        if ((iVar13 == 0) &&\n           (pppppppiVar11 = unaff_s0, unaff_s6 = local_48, unaff_s5 != (int **)0x0)) {\n          unaff_s2 = (int *******)*unaff_s5;\n          *unaff_s5 = (int *)((int)unaff_s2 + 1);\n          pppppppiVar17 = (int *******)unaff_s5[1];\n          if ((int *******)((int)unaff_s2 + 1) == pppppppiVar17) {\n            pppppppiVar17 = (int *******)((int)pppppppiVar17 * 0x30);\n            piVar10 = (int *)(*(code *)PTR_realloc_0003e2fc)(unaff_s5[2]);\n            unaff_s6 = pppppppiVar4;\n            if (piVar10 == (int *)0x0) goto LAB_00021b34;\n            unaff_s5[1] = (int *)((int)unaff_s5[1] << 1);\n            unaff_s5[2] = piVar10;\n          }\n          unaff_s3 = (int ******)((int)unaff_s2 * 0x18);\n          unaff_s5[2][(int)unaff_s2 * 6] = (int)pppppppiVar4;\n          *(int ********)((int)unaff_s3 + (int)(unaff_s5[2] + 1)) = pppppppiVar9;\n          unaff_s2 = (int *******)(unaff_s5[2] + (int)unaff_s2 * 6);\n          ppppppiVar12 = (int ******)(*(code *)PTR_malloc_0003e2f8)(pppppppiVar15);\n          unaff_s2[2] = ppppppiVar12;\n          pppppppiVar18 = pppppppiVar15;\n          unaff_s6 = pppppppiVar15;\n          if (*(int *)((int)unaff_s3 + (int)(unaff_s5[2] + 2)) == 0) goto LAB_00021b34;\n          (*(code *)PTR_memcpy_0003e34c)(*(int *)((int)unaff_s3 + (int)(unaff_s5[2] + 2)),param_4);\n          pppppppiVar17 = &local_44;\n          iVar13 = FUN_0001b67c((int *)((int)unaff_s3 + (int)(unaff_s5[2] + 3)));\n          if (iVar13 != 0) goto LAB_00021b34;\n        }\n        break;\n      }\n      unaff_s2 = (int *******)((int)unaff_s2 + 1);\n      unaff_s3 = unaff_s3 + 1;\n      unaff_s0 = pppppppiVar11;\n    }" ({ "{") (expression_statement "pppppppiVar9 = (int *******)*unaff_s3;" (assignment_expression "pppppppiVar9 = (int *******)*unaff_s3" (identifier "pppppppiVar9") (= "=") (cast_expression "(int *******)*unaff_s3" (( "(") (type_descriptor "int *******" (primitive_type "int") (abstract_pointer_declarator "*******" (* "*") (abstract_pointer_declarator "******" (* "*") (abstract_pointer_declarator "*****" (* "*") (abstract_pointer_declarator "****" (* "*") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))))))) () ")") (pointer_expression "*unaff_s3" (* "*") (identifier "unaff_s3")))) (; ";")) (expression_statement "pppppppiVar17 = pppppppiVar9;" (assignment_expression "pppppppiVar17 = pppppppiVar9" (identifier "pppppppiVar17") (= "=") (identifier "pppppppiVar9")) (; ";")) (expression_statement "iVar13 = (*pcVar6)(pppppiVar8 + 1);" (assignment_expression "iVar13 = (*pcVar6)(pppppiVar8 + 1)" (identifier "iVar13") (= "=") (call_expression "(*pcVar6)(pppppiVar8 + 1)" (parenthesized_expression "(*pcVar6)" (( "(") (pointer_expression "*pcVar6" (* "*") (identifier "pcVar6")) () ")")) (argument_list "(pppppiVar8 + 1)" (( "(") (binary_expression "pppppiVar8 + 1" (identifier "pppppiVar8") (+ "+") (number_literal "1")) () ")")))) (; ";")) (expression_statement "pppppppiVar11 = unaff_s0;" (assignment_expression "pppppppiVar11 = unaff_s0" (identifier "pppppppiVar11") (= "=") (identifier "unaff_s0")) (; ";")) (if_statement "if ((iVar13 != 0) &&\n         (pppppppiVar17 = unaff_s0, pppppppiVar11 = pppppppiVar9,\n         unaff_s0 != (int *******)0xffffffff)) {\n        iVar13 = (*pcVar6)(&local_44);\n        pppppppiVar4 = local_48;\n        if ((iVar13 == 0) &&\n           (pppppppiVar11 = unaff_s0, unaff_s6 = local_48, unaff_s5 != (int **)0x0)) {\n          unaff_s2 = (int *******)*unaff_s5;\n          *unaff_s5 = (int *)((int)unaff_s2 + 1);\n          pppppppiVar17 = (int *******)unaff_s5[1];\n          if ((int *******)((int)unaff_s2 + 1) == pppppppiVar17) {\n            pppppppiVar17 = (int *******)((int)pppppppiVar17 * 0x30);\n            piVar10 = (int *)(*(code *)PTR_realloc_0003e2fc)(unaff_s5[2]);\n            unaff_s6 = pppppppiVar4;\n            if (piVar10 == (int *)0x0) goto LAB_00021b34;\n            unaff_s5[1] = (int *)((int)unaff_s5[1] << 1);\n            unaff_s5[2] = piVar10;\n          }\n          unaff_s3 = (int ******)((int)unaff_s2 * 0x18);\n          unaff_s5[2][(int)unaff_s2 * 6] = (int)pppppppiVar4;\n          *(int ********)((int)unaff_s3 + (int)(unaff_s5[2] + 1)) = pppppppiVar9;\n          unaff_s2 = (int *******)(unaff_s5[2] + (int)unaff_s2 * 6);\n          ppppppiVar12 = (int ******)(*(code *)PTR_malloc_0003e2f8)(pppppppiVar15);\n          unaff_s2[2] = ppppppiVar12;\n          pppppppiVar18 = pppppppiVar15;\n          unaff_s6 = pppppppiVar15;\n          if (*(int *)((int)unaff_s3 + (int)(unaff_s5[2] + 2)) == 0) goto LAB_00021b34;\n          (*(code *)PTR_memcpy_0003e34c)(*(int *)((int)unaff_s3 + (int)(unaff_s5[2] + 2)),param_4);\n          pppppppiVar17 = &local_44;\n          iVar13 = FUN_0001b67c((int *)((int)unaff_s3 + (int)(unaff_s5[2] + 3)));\n          if (iVar13 != 0) goto LAB_00021b34;\n        }\n        break;\n      }" (if "if") (parenthesized_expression "((iVar13 != 0) &&\n         (pppppppiVar17 = unaff_s0, pppppppiVar11 = pppppppiVar9,\n         unaff_s0 != (int *******)0xffffffff))" (( "(") (binary_expression "(iVar13 != 0) &&\n         (pppppppiVar17 = unaff_s0, pppppppiVar11 = pppppppiVar9,\n         unaff_s0 != (int *******)0xffffffff)" (parenthesized_expression "(iVar13 != 0)" (( "(") (binary_expression "iVar13 != 0" (identifier "iVar13") (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(pppppppiVar17 = unaff_s0, pppppppiVar11 = pppppppiVar9,\n         unaff_s0 != (int *******)0xffffffff)" (( "(") (comma_expression "pppppppiVar17 = unaff_s0, pppppppiVar11 = pppppppiVar9,\n         unaff_s0 != (int *******)0xffffffff" (assignment_expression "pppppppiVar17 = unaff_s0" (identifier "pppppppiVar17") (= "=") (identifier "unaff_s0")) (, ",") (comma_expression "pppppppiVar11 = pppppppiVar9,\n         unaff_s0 != (int *******)0xffffffff" (assignment_expression "pppppppiVar11 = pppppppiVar9" (identifier "pppppppiVar11") (= "=") (identifier "pppppppiVar9")) (, ",") (binary_expression "unaff_s0 != (int *******)0xffffffff" (identifier "unaff_s0") (!= "!=") (cast_expression "(int *******)0xffffffff" (( "(") (type_descriptor "int *******" (primitive_type "int") (abstract_pointer_declarator "*******" (* "*") (abstract_pointer_declarator "******" (* "*") (abstract_pointer_declarator "*****" (* "*") (abstract_pointer_declarator "****" (* "*") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))))))) () ")") (number_literal "0xffffffff"))))) () ")"))) () ")")) (compound_statement "{\n        iVar13 = (*pcVar6)(&local_44);\n        pppppppiVar4 = local_48;\n        if ((iVar13 == 0) &&\n           (pppppppiVar11 = unaff_s0, unaff_s6 = local_48, unaff_s5 != (int **)0x0)) {\n          unaff_s2 = (int *******)*unaff_s5;\n          *unaff_s5 = (int *)((int)unaff_s2 + 1);\n          pppppppiVar17 = (int *******)unaff_s5[1];\n          if ((int *******)((int)unaff_s2 + 1) == pppppppiVar17) {\n            pppppppiVar17 = (int *******)((int)pppppppiVar17 * 0x30);\n            piVar10 = (int *)(*(code *)PTR_realloc_0003e2fc)(unaff_s5[2]);\n            unaff_s6 = pppppppiVar4;\n            if (piVar10 == (int *)0x0) goto LAB_00021b34;\n            unaff_s5[1] = (int *)((int)unaff_s5[1] << 1);\n            unaff_s5[2] = piVar10;\n          }\n          unaff_s3 = (int ******)((int)unaff_s2 * 0x18);\n          unaff_s5[2][(int)unaff_s2 * 6] = (int)pppppppiVar4;\n          *(int ********)((int)unaff_s3 + (int)(unaff_s5[2] + 1)) = pppppppiVar9;\n          unaff_s2 = (int *******)(unaff_s5[2] + (int)unaff_s2 * 6);\n          ppppppiVar12 = (int ******)(*(code *)PTR_malloc_0003e2f8)(pppppppiVar15);\n          unaff_s2[2] = ppppppiVar12;\n          pppppppiVar18 = pppppppiVar15;\n          unaff_s6 = pppppppiVar15;\n          if (*(int *)((int)unaff_s3 + (int)(unaff_s5[2] + 2)) == 0) goto LAB_00021b34;\n          (*(code *)PTR_memcpy_0003e34c)(*(int *)((int)unaff_s3 + (int)(unaff_s5[2] + 2)),param_4);\n          pppppppiVar17 = &local_44;\n          iVar13 = FUN_0001b67c((int *)((int)unaff_s3 + (int)(unaff_s5[2] + 3)));\n          if (iVar13 != 0) goto LAB_00021b34;\n        }\n        break;\n      }" ({ "{") (expression_statement "iVar13 = (*pcVar6)(&local_44);" (assignment_expression "iVar13 = (*pcVar6)(&local_44)" (identifier "iVar13") (= "=") (call_expression "(*pcVar6)(&local_44)" (parenthesized_expression "(*pcVar6)" (( "(") (pointer_expression "*pcVar6" (* "*") (identifier "pcVar6")) () ")")) (argument_list "(&local_44)" (( "(") (pointer_expression "&local_44" (& "&") (identifier "local_44")) () ")")))) (; ";")) (expression_statement "pppppppiVar4 = local_48;" (assignment_expression "pppppppiVar4 = local_48" (identifier "pppppppiVar4") (= "=") (identifier "local_48")) (; ";")) (if_statement "if ((iVar13 == 0) &&\n           (pppppppiVar11 = unaff_s0, unaff_s6 = local_48, unaff_s5 != (int **)0x0)) {\n          unaff_s2 = (int *******)*unaff_s5;\n          *unaff_s5 = (int *)((int)unaff_s2 + 1);\n          pppppppiVar17 = (int *******)unaff_s5[1];\n          if ((int *******)((int)unaff_s2 + 1) == pppppppiVar17) {\n            pppppppiVar17 = (int *******)((int)pppppppiVar17 * 0x30);\n            piVar10 = (int *)(*(code *)PTR_realloc_0003e2fc)(unaff_s5[2]);\n            unaff_s6 = pppppppiVar4;\n            if (piVar10 == (int *)0x0) goto LAB_00021b34;\n            unaff_s5[1] = (int *)((int)unaff_s5[1] << 1);\n            unaff_s5[2] = piVar10;\n          }\n          unaff_s3 = (int ******)((int)unaff_s2 * 0x18);\n          unaff_s5[2][(int)unaff_s2 * 6] = (int)pppppppiVar4;\n          *(int ********)((int)unaff_s3 + (int)(unaff_s5[2] + 1)) = pppppppiVar9;\n          unaff_s2 = (int *******)(unaff_s5[2] + (int)unaff_s2 * 6);\n          ppppppiVar12 = (int ******)(*(code *)PTR_malloc_0003e2f8)(pppppppiVar15);\n          unaff_s2[2] = ppppppiVar12;\n          pppppppiVar18 = pppppppiVar15;\n          unaff_s6 = pppppppiVar15;\n          if (*(int *)((int)unaff_s3 + (int)(unaff_s5[2] + 2)) == 0) goto LAB_00021b34;\n          (*(code *)PTR_memcpy_0003e34c)(*(int *)((int)unaff_s3 + (int)(unaff_s5[2] + 2)),param_4);\n          pppppppiVar17 = &local_44;\n          iVar13 = FUN_0001b67c((int *)((int)unaff_s3 + (int)(unaff_s5[2] + 3)));\n          if (iVar13 != 0) goto LAB_00021b34;\n        }" (if "if") (parenthesized_expression "((iVar13 == 0) &&\n           (pppppppiVar11 = unaff_s0, unaff_s6 = local_48, unaff_s5 != (int **)0x0))" (( "(") (binary_expression "(iVar13 == 0) &&\n           (pppppppiVar11 = unaff_s0, unaff_s6 = local_48, unaff_s5 != (int **)0x0)" (parenthesized_expression "(iVar13 == 0)" (( "(") (binary_expression "iVar13 == 0" (identifier "iVar13") (== "==") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(pppppppiVar11 = unaff_s0, unaff_s6 = local_48, unaff_s5 != (int **)0x0)" (( "(") (comma_expression "pppppppiVar11 = unaff_s0, unaff_s6 = local_48, unaff_s5 != (int **)0x0" (assignment_expression "pppppppiVar11 = unaff_s0" (identifier "pppppppiVar11") (= "=") (identifier "unaff_s0")) (, ",") (comma_expression "unaff_s6 = local_48, unaff_s5 != (int **)0x0" (assignment_expression "unaff_s6 = local_48" (identifier "unaff_s6") (= "=") (identifier "local_48")) (, ",") (binary_expression "unaff_s5 != (int **)0x0" (identifier "unaff_s5") (!= "!=") (cast_expression "(int **)0x0" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (number_literal "0x0"))))) () ")"))) () ")")) (compound_statement "{\n          unaff_s2 = (int *******)*unaff_s5;\n          *unaff_s5 = (int *)((int)unaff_s2 + 1);\n          pppppppiVar17 = (int *******)unaff_s5[1];\n          if ((int *******)((int)unaff_s2 + 1) == pppppppiVar17) {\n            pppppppiVar17 = (int *******)((int)pppppppiVar17 * 0x30);\n            piVar10 = (int *)(*(code *)PTR_realloc_0003e2fc)(unaff_s5[2]);\n            unaff_s6 = pppppppiVar4;\n            if (piVar10 == (int *)0x0) goto LAB_00021b34;\n            unaff_s5[1] = (int *)((int)unaff_s5[1] << 1);\n            unaff_s5[2] = piVar10;\n          }\n          unaff_s3 = (int ******)((int)unaff_s2 * 0x18);\n          unaff_s5[2][(int)unaff_s2 * 6] = (int)pppppppiVar4;\n          *(int ********)((int)unaff_s3 + (int)(unaff_s5[2] + 1)) = pppppppiVar9;\n          unaff_s2 = (int *******)(unaff_s5[2] + (int)unaff_s2 * 6);\n          ppppppiVar12 = (int ******)(*(code *)PTR_malloc_0003e2f8)(pppppppiVar15);\n          unaff_s2[2] = ppppppiVar12;\n          pppppppiVar18 = pppppppiVar15;\n          unaff_s6 = pppppppiVar15;\n          if (*(int *)((int)unaff_s3 + (int)(unaff_s5[2] + 2)) == 0) goto LAB_00021b34;\n          (*(code *)PTR_memcpy_0003e34c)(*(int *)((int)unaff_s3 + (int)(unaff_s5[2] + 2)),param_4);\n          pppppppiVar17 = &local_44;\n          iVar13 = FUN_0001b67c((int *)((int)unaff_s3 + (int)(unaff_s5[2] + 3)));\n          if (iVar13 != 0) goto LAB_00021b34;\n        }" ({ "{") (expression_statement "unaff_s2 = (int *******)*unaff_s5;" (assignment_expression "unaff_s2 = (int *******)*unaff_s5" (identifier "unaff_s2") (= "=") (cast_expression "(int *******)*unaff_s5" (( "(") (type_descriptor "int *******" (primitive_type "int") (abstract_pointer_declarator "*******" (* "*") (abstract_pointer_declarator "******" (* "*") (abstract_pointer_declarator "*****" (* "*") (abstract_pointer_declarator "****" (* "*") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))))))) () ")") (pointer_expression "*unaff_s5" (* "*") (identifier "unaff_s5")))) (; ";")) (expression_statement "*unaff_s5 = (int *)((int)unaff_s2 + 1);" (assignment_expression "*unaff_s5 = (int *)((int)unaff_s2 + 1)" (pointer_expression "*unaff_s5" (* "*") (identifier "unaff_s5")) (= "=") (cast_expression "(int *)((int)unaff_s2 + 1)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)unaff_s2 + 1)" (( "(") (binary_expression "(int)unaff_s2 + 1" (cast_expression "(int)unaff_s2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "unaff_s2")) (+ "+") (number_literal "1")) () ")")))) (; ";")) (expression_statement "pppppppiVar17 = (int *******)unaff_s5[1];" (assignment_expression "pppppppiVar17 = (int *******)unaff_s5[1]" (identifier "pppppppiVar17") (= "=") (cast_expression "(int *******)unaff_s5[1]" (( "(") (type_descriptor "int *******" (primitive_type "int") (abstract_pointer_declarator "*******" (* "*") (abstract_pointer_declarator "******" (* "*") (abstract_pointer_declarator "*****" (* "*") (abstract_pointer_declarator "****" (* "*") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))))))) () ")") (subscript_expression "unaff_s5[1]" (identifier "unaff_s5") ([ "[") (number_literal "1") (] "]")))) (; ";")) (if_statement "if ((int *******)((int)unaff_s2 + 1) == pppppppiVar17) {\n            pppppppiVar17 = (int *******)((int)pppppppiVar17 * 0x30);\n            piVar10 = (int *)(*(code *)PTR_realloc_0003e2fc)(unaff_s5[2]);\n            unaff_s6 = pppppppiVar4;\n            if (piVar10 == (int *)0x0) goto LAB_00021b34;\n            unaff_s5[1] = (int *)((int)unaff_s5[1] << 1);\n            unaff_s5[2] = piVar10;\n          }" (if "if") (parenthesized_expression "((int *******)((int)unaff_s2 + 1) == pppppppiVar17)" (( "(") (binary_expression "(int *******)((int)unaff_s2 + 1) == pppppppiVar17" (cast_expression "(int *******)((int)unaff_s2 + 1)" (( "(") (type_descriptor "int *******" (primitive_type "int") (abstract_pointer_declarator "*******" (* "*") (abstract_pointer_declarator "******" (* "*") (abstract_pointer_declarator "*****" (* "*") (abstract_pointer_declarator "****" (* "*") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))))))) () ")") (parenthesized_expression "((int)unaff_s2 + 1)" (( "(") (binary_expression "(int)unaff_s2 + 1" (cast_expression "(int)unaff_s2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "unaff_s2")) (+ "+") (number_literal "1")) () ")"))) (== "==") (identifier "pppppppiVar17")) () ")")) (compound_statement "{\n            pppppppiVar17 = (int *******)((int)pppppppiVar17 * 0x30);\n            piVar10 = (int *)(*(code *)PTR_realloc_0003e2fc)(unaff_s5[2]);\n            unaff_s6 = pppppppiVar4;\n            if (piVar10 == (int *)0x0) goto LAB_00021b34;\n            unaff_s5[1] = (int *)((int)unaff_s5[1] << 1);\n            unaff_s5[2] = piVar10;\n          }" ({ "{") (expression_statement "pppppppiVar17 = (int *******)((int)pppppppiVar17 * 0x30);" (assignment_expression "pppppppiVar17 = (int *******)((int)pppppppiVar17 * 0x30)" (identifier "pppppppiVar17") (= "=") (cast_expression "(int *******)((int)pppppppiVar17 * 0x30)" (( "(") (type_descriptor "int *******" (primitive_type "int") (abstract_pointer_declarator "*******" (* "*") (abstract_pointer_declarator "******" (* "*") (abstract_pointer_declarator "*****" (* "*") (abstract_pointer_declarator "****" (* "*") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))))))) () ")") (parenthesized_expression "((int)pppppppiVar17 * 0x30)" (( "(") (binary_expression "(int)pppppppiVar17 * 0x30" (cast_expression "(int)pppppppiVar17" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pppppppiVar17")) (* "*") (number_literal "0x30")) () ")")))) (; ";")) (expression_statement "piVar10 = (int *)(*(code *)PTR_realloc_0003e2fc)(unaff_s5[2]);" (assignment_expression "piVar10 = (int *)(*(code *)PTR_realloc_0003e2fc)(unaff_s5[2])" (identifier "piVar10") (= "=") (cast_expression "(int *)(*(code *)PTR_realloc_0003e2fc)(unaff_s5[2])" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(*(code *)PTR_realloc_0003e2fc)(unaff_s5[2])" (parenthesized_expression "(*(code *)PTR_realloc_0003e2fc)" (( "(") (pointer_expression "*(code *)PTR_realloc_0003e2fc" (* "*") (cast_expression "(code *)PTR_realloc_0003e2fc" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_realloc_0003e2fc"))) () ")")) (argument_list "(unaff_s5[2])" (( "(") (subscript_expression "unaff_s5[2]" (identifier "unaff_s5") ([ "[") (number_literal "2") (] "]")) () ")"))))) (; ";")) (expression_statement "unaff_s6 = pppppppiVar4;" (assignment_expression "unaff_s6 = pppppppiVar4" (identifier "unaff_s6") (= "=") (identifier "pppppppiVar4")) (; ";")) (if_statement "if (piVar10 == (int *)0x0) goto LAB_00021b34;" (if "if") (parenthesized_expression "(piVar10 == (int *)0x0)" (( "(") (binary_expression "piVar10 == (int *)0x0" (identifier "piVar10") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_00021b34;" (goto "goto") (statement_identifier "LAB_00021b34") (; ";"))) (expression_statement "unaff_s5[1] = (int *)((int)unaff_s5[1] << 1);" (assignment_expression "unaff_s5[1] = (int *)((int)unaff_s5[1] << 1)" (subscript_expression "unaff_s5[1]" (identifier "unaff_s5") ([ "[") (number_literal "1") (] "]")) (= "=") (cast_expression "(int *)((int)unaff_s5[1] << 1)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)unaff_s5[1] << 1)" (( "(") (binary_expression "(int)unaff_s5[1] << 1" (cast_expression "(int)unaff_s5[1]" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (subscript_expression "unaff_s5[1]" (identifier "unaff_s5") ([ "[") (number_literal "1") (] "]"))) (<< "<<") (number_literal "1")) () ")")))) (; ";")) (expression_statement "unaff_s5[2] = piVar10;" (assignment_expression "unaff_s5[2] = piVar10" (subscript_expression "unaff_s5[2]" (identifier "unaff_s5") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "piVar10")) (; ";")) (} "}"))) (expression_statement "unaff_s3 = (int ******)((int)unaff_s2 * 0x18);" (assignment_expression "unaff_s3 = (int ******)((int)unaff_s2 * 0x18)" (identifier "unaff_s3") (= "=") (cast_expression "(int ******)((int)unaff_s2 * 0x18)" (( "(") (type_descriptor "int ******" (primitive_type "int") (abstract_pointer_declarator "******" (* "*") (abstract_pointer_declarator "*****" (* "*") (abstract_pointer_declarator "****" (* "*") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))))))) () ")") (parenthesized_expression "((int)unaff_s2 * 0x18)" (( "(") (binary_expression "(int)unaff_s2 * 0x18" (cast_expression "(int)unaff_s2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "unaff_s2")) (* "*") (number_literal "0x18")) () ")")))) (; ";")) (expression_statement "unaff_s5[2][(int)unaff_s2 * 6] = (int)pppppppiVar4;" (assignment_expression "unaff_s5[2][(int)unaff_s2 * 6] = (int)pppppppiVar4" (subscript_expression "unaff_s5[2][(int)unaff_s2 * 6]" (subscript_expression "unaff_s5[2]" (identifier "unaff_s5") ([ "[") (number_literal "2") (] "]")) ([ "[") (binary_expression "(int)unaff_s2 * 6" (cast_expression "(int)unaff_s2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "unaff_s2")) (* "*") (number_literal "6")) (] "]")) (= "=") (cast_expression "(int)pppppppiVar4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pppppppiVar4"))) (; ";")) (expression_statement "*(int ********)((int)unaff_s3 + (int)(unaff_s5[2] + 1)) = pppppppiVar9;" (assignment_expression "*(int ********)((int)unaff_s3 + (int)(unaff_s5[2] + 1)) = pppppppiVar9" (pointer_expression "*(int ********)((int)unaff_s3 + (int)(unaff_s5[2] + 1))" (* "*") (cast_expression "(int ********)((int)unaff_s3 + (int)(unaff_s5[2] + 1))" (( "(") (type_descriptor "int ********" (primitive_type "int") (abstract_pointer_declarator "********" (* "*") (abstract_pointer_declarator "*******" (* "*") (abstract_pointer_declarator "******" (* "*") (abstract_pointer_declarator "*****" (* "*") (abstract_pointer_declarator "****" (* "*") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))))))))) () ")") (parenthesized_expression "((int)unaff_s3 + (int)(unaff_s5[2] + 1))" (( "(") (binary_expression "(int)unaff_s3 + (int)(unaff_s5[2] + 1)" (cast_expression "(int)unaff_s3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "unaff_s3")) (+ "+") (cast_expression "(int)(unaff_s5[2] + 1)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(unaff_s5[2] + 1)" (( "(") (binary_expression "unaff_s5[2] + 1" (subscript_expression "unaff_s5[2]" (identifier "unaff_s5") ([ "[") (number_literal "2") (] "]")) (+ "+") (number_literal "1")) () ")")))) () ")")))) (= "=") (identifier "pppppppiVar9")) (; ";")) (expression_statement "unaff_s2 = (int *******)(unaff_s5[2] + (int)unaff_s2 * 6);" (assignment_expression "unaff_s2 = (int *******)(unaff_s5[2] + (int)unaff_s2 * 6)" (identifier "unaff_s2") (= "=") (cast_expression "(int *******)(unaff_s5[2] + (int)unaff_s2 * 6)" (( "(") (type_descriptor "int *******" (primitive_type "int") (abstract_pointer_declarator "*******" (* "*") (abstract_pointer_declarator "******" (* "*") (abstract_pointer_declarator "*****" (* "*") (abstract_pointer_declarator "****" (* "*") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))))))) () ")") (parenthesized_expression "(unaff_s5[2] + (int)unaff_s2 * 6)" (( "(") (binary_expression "unaff_s5[2] + (int)unaff_s2 * 6" (subscript_expression "unaff_s5[2]" (identifier "unaff_s5") ([ "[") (number_literal "2") (] "]")) (+ "+") (binary_expression "(int)unaff_s2 * 6" (cast_expression "(int)unaff_s2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "unaff_s2")) (* "*") (number_literal "6"))) () ")")))) (; ";")) (expression_statement "ppppppiVar12 = (int ******)(*(code *)PTR_malloc_0003e2f8)(pppppppiVar15);" (assignment_expression "ppppppiVar12 = (int ******)(*(code *)PTR_malloc_0003e2f8)(pppppppiVar15)" (identifier "ppppppiVar12") (= "=") (cast_expression "(int ******)(*(code *)PTR_malloc_0003e2f8)(pppppppiVar15)" (( "(") (type_descriptor "int ******" (primitive_type "int") (abstract_pointer_declarator "******" (* "*") (abstract_pointer_declarator "*****" (* "*") (abstract_pointer_declarator "****" (* "*") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))))))) () ")") (call_expression "(*(code *)PTR_malloc_0003e2f8)(pppppppiVar15)" (parenthesized_expression "(*(code *)PTR_malloc_0003e2f8)" (( "(") (pointer_expression "*(code *)PTR_malloc_0003e2f8" (* "*") (cast_expression "(code *)PTR_malloc_0003e2f8" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_malloc_0003e2f8"))) () ")")) (argument_list "(pppppppiVar15)" (( "(") (identifier "pppppppiVar15") () ")"))))) (; ";")) (expression_statement "unaff_s2[2] = ppppppiVar12;" (assignment_expression "unaff_s2[2] = ppppppiVar12" (subscript_expression "unaff_s2[2]" (identifier "unaff_s2") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "ppppppiVar12")) (; ";")) (expression_statement "pppppppiVar18 = pppppppiVar15;" (assignment_expression "pppppppiVar18 = pppppppiVar15" (identifier "pppppppiVar18") (= "=") (identifier "pppppppiVar15")) (; ";")) (expression_statement "unaff_s6 = pppppppiVar15;" (assignment_expression "unaff_s6 = pppppppiVar15" (identifier "unaff_s6") (= "=") (identifier "pppppppiVar15")) (; ";")) (if_statement "if (*(int *)((int)unaff_s3 + (int)(unaff_s5[2] + 2)) == 0) goto LAB_00021b34;" (if "if") (parenthesized_expression "(*(int *)((int)unaff_s3 + (int)(unaff_s5[2] + 2)) == 0)" (( "(") (binary_expression "*(int *)((int)unaff_s3 + (int)(unaff_s5[2] + 2)) == 0" (pointer_expression "*(int *)((int)unaff_s3 + (int)(unaff_s5[2] + 2))" (* "*") (cast_expression "(int *)((int)unaff_s3 + (int)(unaff_s5[2] + 2))" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)unaff_s3 + (int)(unaff_s5[2] + 2))" (( "(") (binary_expression "(int)unaff_s3 + (int)(unaff_s5[2] + 2)" (cast_expression "(int)unaff_s3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "unaff_s3")) (+ "+") (cast_expression "(int)(unaff_s5[2] + 2)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(unaff_s5[2] + 2)" (( "(") (binary_expression "unaff_s5[2] + 2" (subscript_expression "unaff_s5[2]" (identifier "unaff_s5") ([ "[") (number_literal "2") (] "]")) (+ "+") (number_literal "2")) () ")")))) () ")")))) (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_00021b34;" (goto "goto") (statement_identifier "LAB_00021b34") (; ";"))) (expression_statement "(*(code *)PTR_memcpy_0003e34c)(*(int *)((int)unaff_s3 + (int)(unaff_s5[2] + 2)),param_4);" (call_expression "(*(code *)PTR_memcpy_0003e34c)(*(int *)((int)unaff_s3 + (int)(unaff_s5[2] + 2)),param_4)" (parenthesized_expression "(*(code *)PTR_memcpy_0003e34c)" (( "(") (pointer_expression "*(code *)PTR_memcpy_0003e34c" (* "*") (cast_expression "(code *)PTR_memcpy_0003e34c" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_memcpy_0003e34c"))) () ")")) (argument_list "(*(int *)((int)unaff_s3 + (int)(unaff_s5[2] + 2)),param_4)" (( "(") (pointer_expression "*(int *)((int)unaff_s3 + (int)(unaff_s5[2] + 2))" (* "*") (cast_expression "(int *)((int)unaff_s3 + (int)(unaff_s5[2] + 2))" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)unaff_s3 + (int)(unaff_s5[2] + 2))" (( "(") (binary_expression "(int)unaff_s3 + (int)(unaff_s5[2] + 2)" (cast_expression "(int)unaff_s3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "unaff_s3")) (+ "+") (cast_expression "(int)(unaff_s5[2] + 2)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(unaff_s5[2] + 2)" (( "(") (binary_expression "unaff_s5[2] + 2" (subscript_expression "unaff_s5[2]" (identifier "unaff_s5") ([ "[") (number_literal "2") (] "]")) (+ "+") (number_literal "2")) () ")")))) () ")")))) (, ",") (identifier "param_4") () ")"))) (; ";")) (expression_statement "pppppppiVar17 = &local_44;" (assignment_expression "pppppppiVar17 = &local_44" (identifier "pppppppiVar17") (= "=") (pointer_expression "&local_44" (& "&") (identifier "local_44"))) (; ";")) (expression_statement "iVar13 = FUN_0001b67c((int *)((int)unaff_s3 + (int)(unaff_s5[2] + 3)));" (assignment_expression "iVar13 = FUN_0001b67c((int *)((int)unaff_s3 + (int)(unaff_s5[2] + 3)))" (identifier "iVar13") (= "=") (call_expression "FUN_0001b67c((int *)((int)unaff_s3 + (int)(unaff_s5[2] + 3)))" (identifier "FUN_0001b67c") (argument_list "((int *)((int)unaff_s3 + (int)(unaff_s5[2] + 3)))" (( "(") (cast_expression "(int *)((int)unaff_s3 + (int)(unaff_s5[2] + 3))" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)unaff_s3 + (int)(unaff_s5[2] + 3))" (( "(") (binary_expression "(int)unaff_s3 + (int)(unaff_s5[2] + 3)" (cast_expression "(int)unaff_s3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "unaff_s3")) (+ "+") (cast_expression "(int)(unaff_s5[2] + 3)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(unaff_s5[2] + 3)" (( "(") (binary_expression "unaff_s5[2] + 3" (subscript_expression "unaff_s5[2]" (identifier "unaff_s5") ([ "[") (number_literal "2") (] "]")) (+ "+") (number_literal "3")) () ")")))) () ")"))) () ")")))) (; ";")) (if_statement "if (iVar13 != 0) goto LAB_00021b34;" (if "if") (parenthesized_expression "(iVar13 != 0)" (( "(") (binary_expression "iVar13 != 0" (identifier "iVar13") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_00021b34;" (goto "goto") (statement_identifier "LAB_00021b34") (; ";"))) (} "}"))) (break_statement "break;" (break "break") (; ";")) (} "}"))) (expression_statement "unaff_s2 = (int *******)((int)unaff_s2 + 1);" (assignment_expression "unaff_s2 = (int *******)((int)unaff_s2 + 1)" (identifier "unaff_s2") (= "=") (cast_expression "(int *******)((int)unaff_s2 + 1)" (( "(") (type_descriptor "int *******" (primitive_type "int") (abstract_pointer_declarator "*******" (* "*") (abstract_pointer_declarator "******" (* "*") (abstract_pointer_declarator "*****" (* "*") (abstract_pointer_declarator "****" (* "*") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))))))) () ")") (parenthesized_expression "((int)unaff_s2 + 1)" (( "(") (binary_expression "(int)unaff_s2 + 1" (cast_expression "(int)unaff_s2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "unaff_s2")) (+ "+") (number_literal "1")) () ")")))) (; ";")) (expression_statement "unaff_s3 = unaff_s3 + 1;" (assignment_expression "unaff_s3 = unaff_s3 + 1" (identifier "unaff_s3") (= "=") (binary_expression "unaff_s3 + 1" (identifier "unaff_s3") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "unaff_s0 = pppppppiVar11;" (assignment_expression "unaff_s0 = pppppppiVar11" (identifier "unaff_s0") (= "=") (identifier "pppppppiVar11")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(unaff_s6 != unaff_s2)" (( "(") (binary_expression "unaff_s6 != unaff_s2" (identifier "unaff_s6") (!= "!=") (identifier "unaff_s2")) () ")")) (; ";")) (labeled_statement "LAB_00021ca8:\n    unaff_s0 = pppppppiVar11;" (statement_identifier "LAB_00021ca8") (: ":") (expression_statement "unaff_s0 = pppppppiVar11;" (assignment_expression "unaff_s0 = pppppppiVar11" (identifier "unaff_s0") (= "=") (identifier "pppppppiVar11")) (; ";"))) (if_statement "if ((int)pppppppiVar11 < 0) {\nLAB_00021f44:\n      if (unaff_s0 == (int *******)&SUB_fffffffe) {\nLAB_00021b34:\n        (*(code *)PTR_free_0003e354)(local_3c);\n        if (bVar1) {\n          (*(code *)PTR_free_0003e354)(local_70);\n        }\n        FUN_0001eb94(unaff_s5);\n        iVar13 = 0xc;\n        goto LAB_00021ed8;\n      }\n      if (unaff_s5 == (int **)0x0) {\n        (*(code *)PTR_free_0003e354)();\n        if (bVar1) {\n          (*(code *)PTR_free_0003e354)(local_70);\n          iVar13 = 1;\n        }\n        else {\n          iVar13 = 1;\n        }\n        goto LAB_00021ed8;\n      }\n      *(int ********)(puVar25 + 0x10) = &local_44;\n      pppppppiVar17 = (int *******)&local_48;\n      pppppppiVar18 = param_3;\n      pppppppiVar19 = param_4;\n      unaff_s0 = (int *******)(*pcVar5)(unaff_s5);\n    }" (if "if") (parenthesized_expression "((int)pppppppiVar11 < 0)" (( "(") (binary_expression "(int)pppppppiVar11 < 0" (cast_expression "(int)pppppppiVar11" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pppppppiVar11")) (< "<") (number_literal "0")) () ")")) (compound_statement "{\nLAB_00021f44:\n      if (unaff_s0 == (int *******)&SUB_fffffffe) {\nLAB_00021b34:\n        (*(code *)PTR_free_0003e354)(local_3c);\n        if (bVar1) {\n          (*(code *)PTR_free_0003e354)(local_70);\n        }\n        FUN_0001eb94(unaff_s5);\n        iVar13 = 0xc;\n        goto LAB_00021ed8;\n      }\n      if (unaff_s5 == (int **)0x0) {\n        (*(code *)PTR_free_0003e354)();\n        if (bVar1) {\n          (*(code *)PTR_free_0003e354)(local_70);\n          iVar13 = 1;\n        }\n        else {\n          iVar13 = 1;\n        }\n        goto LAB_00021ed8;\n      }\n      *(int ********)(puVar25 + 0x10) = &local_44;\n      pppppppiVar17 = (int *******)&local_48;\n      pppppppiVar18 = param_3;\n      pppppppiVar19 = param_4;\n      unaff_s0 = (int *******)(*pcVar5)(unaff_s5);\n    }" ({ "{") (labeled_statement "LAB_00021f44:\n      if (unaff_s0 == (int *******)&SUB_fffffffe) {\nLAB_00021b34:\n        (*(code *)PTR_free_0003e354)(local_3c);\n        if (bVar1) {\n          (*(code *)PTR_free_0003e354)(local_70);\n        }\n        FUN_0001eb94(unaff_s5);\n        iVar13 = 0xc;\n        goto LAB_00021ed8;\n      }" (statement_identifier "LAB_00021f44") (: ":") (if_statement "if (unaff_s0 == (int *******)&SUB_fffffffe) {\nLAB_00021b34:\n        (*(code *)PTR_free_0003e354)(local_3c);\n        if (bVar1) {\n          (*(code *)PTR_free_0003e354)(local_70);\n        }\n        FUN_0001eb94(unaff_s5);\n        iVar13 = 0xc;\n        goto LAB_00021ed8;\n      }" (if "if") (parenthesized_expression "(unaff_s0 == (int *******)&SUB_fffffffe)" (( "(") (binary_expression "unaff_s0 == (int *******)&SUB_fffffffe" (identifier "unaff_s0") (== "==") (cast_expression "(int *******)&SUB_fffffffe" (( "(") (type_descriptor "int *******" (primitive_type "int") (abstract_pointer_declarator "*******" (* "*") (abstract_pointer_declarator "******" (* "*") (abstract_pointer_declarator "*****" (* "*") (abstract_pointer_declarator "****" (* "*") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))))))) () ")") (pointer_expression "&SUB_fffffffe" (& "&") (identifier "SUB_fffffffe")))) () ")")) (compound_statement "{\nLAB_00021b34:\n        (*(code *)PTR_free_0003e354)(local_3c);\n        if (bVar1) {\n          (*(code *)PTR_free_0003e354)(local_70);\n        }\n        FUN_0001eb94(unaff_s5);\n        iVar13 = 0xc;\n        goto LAB_00021ed8;\n      }" ({ "{") (labeled_statement "LAB_00021b34:\n        (*(code *)PTR_free_0003e354)(local_3c);" (statement_identifier "LAB_00021b34") (: ":") (expression_statement "(*(code *)PTR_free_0003e354)(local_3c);" (call_expression "(*(code *)PTR_free_0003e354)(local_3c)" (parenthesized_expression "(*(code *)PTR_free_0003e354)" (( "(") (pointer_expression "*(code *)PTR_free_0003e354" (* "*") (cast_expression "(code *)PTR_free_0003e354" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_free_0003e354"))) () ")")) (argument_list "(local_3c)" (( "(") (identifier "local_3c") () ")"))) (; ";"))) (if_statement "if (bVar1) {\n          (*(code *)PTR_free_0003e354)(local_70);\n        }" (if "if") (parenthesized_expression "(bVar1)" (( "(") (identifier "bVar1") () ")")) (compound_statement "{\n          (*(code *)PTR_free_0003e354)(local_70);\n        }" ({ "{") (expression_statement "(*(code *)PTR_free_0003e354)(local_70);" (call_expression "(*(code *)PTR_free_0003e354)(local_70)" (parenthesized_expression "(*(code *)PTR_free_0003e354)" (( "(") (pointer_expression "*(code *)PTR_free_0003e354" (* "*") (cast_expression "(code *)PTR_free_0003e354" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_free_0003e354"))) () ")")) (argument_list "(local_70)" (( "(") (identifier "local_70") () ")"))) (; ";")) (} "}"))) (expression_statement "FUN_0001eb94(unaff_s5);" (call_expression "FUN_0001eb94(unaff_s5)" (identifier "FUN_0001eb94") (argument_list "(unaff_s5)" (( "(") (identifier "unaff_s5") () ")"))) (; ";")) (expression_statement "iVar13 = 0xc;" (assignment_expression "iVar13 = 0xc" (identifier "iVar13") (= "=") (number_literal "0xc")) (; ";")) (goto_statement "goto LAB_00021ed8;" (goto "goto") (statement_identifier "LAB_00021ed8") (; ";")) (} "}")))) (if_statement "if (unaff_s5 == (int **)0x0) {\n        (*(code *)PTR_free_0003e354)();\n        if (bVar1) {\n          (*(code *)PTR_free_0003e354)(local_70);\n          iVar13 = 1;\n        }\n        else {\n          iVar13 = 1;\n        }\n        goto LAB_00021ed8;\n      }" (if "if") (parenthesized_expression "(unaff_s5 == (int **)0x0)" (( "(") (binary_expression "unaff_s5 == (int **)0x0" (identifier "unaff_s5") (== "==") (cast_expression "(int **)0x0" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        (*(code *)PTR_free_0003e354)();\n        if (bVar1) {\n          (*(code *)PTR_free_0003e354)(local_70);\n          iVar13 = 1;\n        }\n        else {\n          iVar13 = 1;\n        }\n        goto LAB_00021ed8;\n      }" ({ "{") (expression_statement "(*(code *)PTR_free_0003e354)();" (call_expression "(*(code *)PTR_free_0003e354)()" (parenthesized_expression "(*(code *)PTR_free_0003e354)" (( "(") (pointer_expression "*(code *)PTR_free_0003e354" (* "*") (cast_expression "(code *)PTR_free_0003e354" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_free_0003e354"))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (if_statement "if (bVar1) {\n          (*(code *)PTR_free_0003e354)(local_70);\n          iVar13 = 1;\n        }\n        else {\n          iVar13 = 1;\n        }" (if "if") (parenthesized_expression "(bVar1)" (( "(") (identifier "bVar1") () ")")) (compound_statement "{\n          (*(code *)PTR_free_0003e354)(local_70);\n          iVar13 = 1;\n        }" ({ "{") (expression_statement "(*(code *)PTR_free_0003e354)(local_70);" (call_expression "(*(code *)PTR_free_0003e354)(local_70)" (parenthesized_expression "(*(code *)PTR_free_0003e354)" (( "(") (pointer_expression "*(code *)PTR_free_0003e354" (* "*") (cast_expression "(code *)PTR_free_0003e354" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_free_0003e354"))) () ")")) (argument_list "(local_70)" (( "(") (identifier "local_70") () ")"))) (; ";")) (expression_statement "iVar13 = 1;" (assignment_expression "iVar13 = 1" (identifier "iVar13") (= "=") (number_literal "1")) (; ";")) (} "}")) (else_clause "else {\n          iVar13 = 1;\n        }" (else "else") (compound_statement "{\n          iVar13 = 1;\n        }" ({ "{") (expression_statement "iVar13 = 1;" (assignment_expression "iVar13 = 1" (identifier "iVar13") (= "=") (number_literal "1")) (; ";")) (} "}")))) (goto_statement "goto LAB_00021ed8;" (goto "goto") (statement_identifier "LAB_00021ed8") (; ";")) (} "}"))) (expression_statement "*(int ********)(puVar25 + 0x10) = &local_44;" (assignment_expression "*(int ********)(puVar25 + 0x10) = &local_44" (pointer_expression "*(int ********)(puVar25 + 0x10)" (* "*") (cast_expression "(int ********)(puVar25 + 0x10)" (( "(") (type_descriptor "int ********" (primitive_type "int") (abstract_pointer_declarator "********" (* "*") (abstract_pointer_declarator "*******" (* "*") (abstract_pointer_declarator "******" (* "*") (abstract_pointer_declarator "*****" (* "*") (abstract_pointer_declarator "****" (* "*") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))))))))) () ")") (parenthesized_expression "(puVar25 + 0x10)" (( "(") (binary_expression "puVar25 + 0x10" (identifier "puVar25") (+ "+") (number_literal "0x10")) () ")")))) (= "=") (pointer_expression "&local_44" (& "&") (identifier "local_44"))) (; ";")) (expression_statement "pppppppiVar17 = (int *******)&local_48;" (assignment_expression "pppppppiVar17 = (int *******)&local_48" (identifier "pppppppiVar17") (= "=") (cast_expression "(int *******)&local_48" (( "(") (type_descriptor "int *******" (primitive_type "int") (abstract_pointer_declarator "*******" (* "*") (abstract_pointer_declarator "******" (* "*") (abstract_pointer_declarator "*****" (* "*") (abstract_pointer_declarator "****" (* "*") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))))))) () ")") (pointer_expression "&local_48" (& "&") (identifier "local_48")))) (; ";")) (expression_statement "pppppppiVar18 = param_3;" (assignment_expression "pppppppiVar18 = param_3" (identifier "pppppppiVar18") (= "=") (identifier "param_3")) (; ";")) (expression_statement "pppppppiVar19 = param_4;" (assignment_expression "pppppppiVar19 = param_4" (identifier "pppppppiVar19") (= "=") (identifier "param_4")) (; ";")) (expression_statement "unaff_s0 = (int *******)(*pcVar5)(unaff_s5);" (assignment_expression "unaff_s0 = (int *******)(*pcVar5)(unaff_s5)" (identifier "unaff_s0") (= "=") (cast_expression "(int *******)(*pcVar5)(unaff_s5)" (( "(") (type_descriptor "int *******" (primitive_type "int") (abstract_pointer_declarator "*******" (* "*") (abstract_pointer_declarator "******" (* "*") (abstract_pointer_declarator "*****" (* "*") (abstract_pointer_declarator "****" (* "*") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))))))) () ")") (call_expression "(*pcVar5)(unaff_s5)" (parenthesized_expression "(*pcVar5)" (( "(") (pointer_expression "*pcVar5" (* "*") (identifier "pcVar5")) () ")")) (argument_list "(unaff_s5)" (( "(") (identifier "unaff_s5") () ")"))))) (; ";")) (} "}"))) (} "}"))) (expression_statement "(*(code *)PTR_free_0003e354)(local_3c);" (call_expression "(*(code *)PTR_free_0003e354)(local_3c)" (parenthesized_expression "(*(code *)PTR_free_0003e354)" (( "(") (pointer_expression "*(code *)PTR_free_0003e354" (* "*") (cast_expression "(code *)PTR_free_0003e354" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_free_0003e354"))) () ")")) (argument_list "(local_3c)" (( "(") (identifier "local_3c") () ")"))) (; ";")) (if_statement "if (bVar1) {\n    (*(code *)PTR_free_0003e354)(local_70);\n  }" (if "if") (parenthesized_expression "(bVar1)" (( "(") (identifier "bVar1") () ")")) (compound_statement "{\n    (*(code *)PTR_free_0003e354)(local_70);\n  }" ({ "{") (expression_statement "(*(code *)PTR_free_0003e354)(local_70);" (call_expression "(*(code *)PTR_free_0003e354)(local_70)" (parenthesized_expression "(*(code *)PTR_free_0003e354)" (( "(") (pointer_expression "*(code *)PTR_free_0003e354" (* "*") (cast_expression "(code *)PTR_free_0003e354" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_free_0003e354"))) () ")")) (argument_list "(local_70)" (( "(") (identifier "local_70") () ")"))) (; ";")) (} "}"))) (expression_statement "iVar13 = FUN_0001eb94(unaff_s5);" (assignment_expression "iVar13 = FUN_0001eb94(unaff_s5)" (identifier "iVar13") (= "=") (call_expression "FUN_0001eb94(unaff_s5)" (identifier "FUN_0001eb94") (argument_list "(unaff_s5)" (( "(") (identifier "unaff_s5") () ")")))) (; ";")) (labeled_statement "LAB_00021ed8:\n  if (local_2c == *(int *)PTR___stack_chk_guard_0003e348) {\n    return iVar13;\n  }" (statement_identifier "LAB_00021ed8") (: ":") (if_statement "if (local_2c == *(int *)PTR___stack_chk_guard_0003e348) {\n    return iVar13;\n  }" (if "if") (parenthesized_expression "(local_2c == *(int *)PTR___stack_chk_guard_0003e348)" (( "(") (binary_expression "local_2c == *(int *)PTR___stack_chk_guard_0003e348" (identifier "local_2c") (== "==") (pointer_expression "*(int *)PTR___stack_chk_guard_0003e348" (* "*") (cast_expression "(int *)PTR___stack_chk_guard_0003e348" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_guard_0003e348")))) () ")")) (compound_statement "{\n    return iVar13;\n  }" ({ "{") (return_statement "return iVar13;" (return "return") (identifier "iVar13") (; ";")) (} "}")))) (expression_statement "pcVar5 = FUN_00021f9c;" (assignment_expression "pcVar5 = FUN_00021f9c" (identifier "pcVar5") (= "=") (identifier "FUN_00021f9c")) (; ";")) (expression_statement "iVar13 = local_2c;" (assignment_expression "iVar13 = local_2c" (identifier "iVar13") (= "=") (identifier "local_2c")) (; ";")) (expression_statement "puVar24 = PTR___stack_chk_fail_0003e32c;" (assignment_expression "puVar24 = PTR___stack_chk_fail_0003e32c" (identifier "puVar24") (= "=") (identifier "PTR___stack_chk_fail_0003e32c")) (; ";")) (expression_statement "(*(code *)PTR___stack_chk_fail_0003e32c)();" (call_expression "(*(code *)PTR___stack_chk_fail_0003e32c)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_0003e32c)" (( "(") (pointer_expression "*(code *)PTR___stack_chk_fail_0003e32c" (* "*") (cast_expression "(code *)PTR___stack_chk_fail_0003e32c" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_fail_0003e32c"))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "*(code **)(puVar26 + -4) = pcVar5;" (assignment_expression "*(code **)(puVar26 + -4) = pcVar5" (pointer_expression "*(code **)(puVar26 + -4)" (* "*") (cast_expression "(code **)(puVar26 + -4)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar26 + -4)" (( "(") (binary_expression "puVar26 + -4" (identifier "puVar26") (+ "+") (number_literal "-4")) () ")")))) (= "=") (identifier "pcVar5")) (; ";")) (expression_statement "*(undefined1 **)(puVar26 + -8) = auStack_98;" (assignment_expression "*(undefined1 **)(puVar26 + -8) = auStack_98" (pointer_expression "*(undefined1 **)(puVar26 + -8)" (* "*") (cast_expression "(undefined1 **)(puVar26 + -8)" (( "(") (type_descriptor "undefined1 **" (type_identifier "undefined1") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar26 + -8)" (( "(") (binary_expression "puVar26 + -8" (identifier "puVar26") (+ "+") (number_literal "-8")) () ")")))) (= "=") (identifier "auStack_98")) (; ";")) (expression_statement "*(int **)(puVar26 + -0xc) = piVar23;" (assignment_expression "*(int **)(puVar26 + -0xc) = piVar23" (pointer_expression "*(int **)(puVar26 + -0xc)" (* "*") (cast_expression "(int **)(puVar26 + -0xc)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar26 + -0xc)" (( "(") (binary_expression "puVar26 + -0xc" (identifier "puVar26") (+ "+") (number_literal "-0xc")) () ")")))) (= "=") (identifier "piVar23")) (; ";")) (expression_statement "*(int ********)(puVar26 + -0x10) = unaff_s6;" (assignment_expression "*(int ********)(puVar26 + -0x10) = unaff_s6" (pointer_expression "*(int ********)(puVar26 + -0x10)" (* "*") (cast_expression "(int ********)(puVar26 + -0x10)" (( "(") (type_descriptor "int ********" (primitive_type "int") (abstract_pointer_declarator "********" (* "*") (abstract_pointer_declarator "*******" (* "*") (abstract_pointer_declarator "******" (* "*") (abstract_pointer_declarator "*****" (* "*") (abstract_pointer_declarator "****" (* "*") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))))))))) () ")") (parenthesized_expression "(puVar26 + -0x10)" (( "(") (binary_expression "puVar26 + -0x10" (identifier "puVar26") (+ "+") (number_literal "-0x10")) () ")")))) (= "=") (identifier "unaff_s6")) (; ";")) (expression_statement "*(int ***)(puVar26 + -0x14) = unaff_s5;" (assignment_expression "*(int ***)(puVar26 + -0x14) = unaff_s5" (pointer_expression "*(int ***)(puVar26 + -0x14)" (* "*") (cast_expression "(int ***)(puVar26 + -0x14)" (( "(") (type_descriptor "int ***" (primitive_type "int") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))) () ")") (parenthesized_expression "(puVar26 + -0x14)" (( "(") (binary_expression "puVar26 + -0x14" (identifier "puVar26") (+ "+") (number_literal "-0x14")) () ")")))) (= "=") (identifier "unaff_s5")) (; ";")) (expression_statement "*(int ********)(puVar26 + -0x18) = param_4;" (assignment_expression "*(int ********)(puVar26 + -0x18) = param_4" (pointer_expression "*(int ********)(puVar26 + -0x18)" (* "*") (cast_expression "(int ********)(puVar26 + -0x18)" (( "(") (type_descriptor "int ********" (primitive_type "int") (abstract_pointer_declarator "********" (* "*") (abstract_pointer_declarator "*******" (* "*") (abstract_pointer_declarator "******" (* "*") (abstract_pointer_declarator "*****" (* "*") (abstract_pointer_declarator "****" (* "*") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))))))))) () ")") (parenthesized_expression "(puVar26 + -0x18)" (( "(") (binary_expression "puVar26 + -0x18" (identifier "puVar26") (+ "+") (number_literal "-0x18")) () ")")))) (= "=") (identifier "param_4")) (; ";")) (expression_statement "*(int *******)(puVar26 + -0x1c) = unaff_s3;" (assignment_expression "*(int *******)(puVar26 + -0x1c) = unaff_s3" (pointer_expression "*(int *******)(puVar26 + -0x1c)" (* "*") (cast_expression "(int *******)(puVar26 + -0x1c)" (( "(") (type_descriptor "int *******" (primitive_type "int") (abstract_pointer_declarator "*******" (* "*") (abstract_pointer_declarator "******" (* "*") (abstract_pointer_declarator "*****" (* "*") (abstract_pointer_declarator "****" (* "*") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))))))) () ")") (parenthesized_expression "(puVar26 + -0x1c)" (( "(") (binary_expression "puVar26 + -0x1c" (identifier "puVar26") (+ "+") (number_literal "-0x1c")) () ")")))) (= "=") (identifier "unaff_s3")) (; ";")) (expression_statement "*(int ********)(puVar26 + -0x20) = unaff_s2;" (assignment_expression "*(int ********)(puVar26 + -0x20) = unaff_s2" (pointer_expression "*(int ********)(puVar26 + -0x20)" (* "*") (cast_expression "(int ********)(puVar26 + -0x20)" (( "(") (type_descriptor "int ********" (primitive_type "int") (abstract_pointer_declarator "********" (* "*") (abstract_pointer_declarator "*******" (* "*") (abstract_pointer_declarator "******" (* "*") (abstract_pointer_declarator "*****" (* "*") (abstract_pointer_declarator "****" (* "*") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))))))))) () ")") (parenthesized_expression "(puVar26 + -0x20)" (( "(") (binary_expression "puVar26 + -0x20" (identifier "puVar26") (+ "+") (number_literal "-0x20")) () ")")))) (= "=") (identifier "unaff_s2")) (; ";")) (expression_statement "*(int ********)(puVar26 + -0x24) = param_2;" (assignment_expression "*(int ********)(puVar26 + -0x24) = param_2" (pointer_expression "*(int ********)(puVar26 + -0x24)" (* "*") (cast_expression "(int ********)(puVar26 + -0x24)" (( "(") (type_descriptor "int ********" (primitive_type "int") (abstract_pointer_declarator "********" (* "*") (abstract_pointer_declarator "*******" (* "*") (abstract_pointer_declarator "******" (* "*") (abstract_pointer_declarator "*****" (* "*") (abstract_pointer_declarator "****" (* "*") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))))))))) () ")") (parenthesized_expression "(puVar26 + -0x24)" (( "(") (binary_expression "puVar26 + -0x24" (identifier "puVar26") (+ "+") (number_literal "-0x24")) () ")")))) (= "=") (identifier "param_2")) (; ";")) (expression_statement "*(int ********)(puVar26 + -0x28) = unaff_s0;" (assignment_expression "*(int ********)(puVar26 + -0x28) = unaff_s0" (pointer_expression "*(int ********)(puVar26 + -0x28)" (* "*") (cast_expression "(int ********)(puVar26 + -0x28)" (( "(") (type_descriptor "int ********" (primitive_type "int") (abstract_pointer_declarator "********" (* "*") (abstract_pointer_declarator "*******" (* "*") (abstract_pointer_declarator "******" (* "*") (abstract_pointer_declarator "*****" (* "*") (abstract_pointer_declarator "****" (* "*") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))))))))) () ")") (parenthesized_expression "(puVar26 + -0x28)" (( "(") (binary_expression "puVar26 + -0x28" (identifier "puVar26") (+ "+") (number_literal "-0x28")) () ")")))) (= "=") (identifier "unaff_s0")) (; ";")) (expression_statement "*(undefined **)(puVar26 + -0xc0) = puVar24 + 0x24174;" (assignment_expression "*(undefined **)(puVar26 + -0xc0) = puVar24 + 0x24174" (pointer_expression "*(undefined **)(puVar26 + -0xc0)" (* "*") (cast_expression "(undefined **)(puVar26 + -0xc0)" (( "(") (type_descriptor "undefined **" (type_identifier "undefined") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar26 + -0xc0)" (( "(") (binary_expression "puVar26 + -0xc0" (identifier "puVar26") (+ "+") (number_literal "-0xc0")) () ")")))) (= "=") (binary_expression "puVar24 + 0x24174" (identifier "puVar24") (+ "+") (number_literal "0x24174"))) (; ";")) (expression_statement "*(int *)(puVar26 + -0xac) = iVar13;" (assignment_expression "*(int *)(puVar26 + -0xac) = iVar13" (pointer_expression "*(int *)(puVar26 + -0xac)" (* "*") (cast_expression "(int *)(puVar26 + -0xac)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar26 + -0xac)" (( "(") (binary_expression "puVar26 + -0xac" (identifier "puVar26") (+ "+") (number_literal "-0xac")) () ")")))) (= "=") (identifier "iVar13")) (; ";")) (expression_statement "uVar27 = *(undefined4 *)(puVar26 + 0x14);" (assignment_expression "uVar27 = *(undefined4 *)(puVar26 + 0x14)" (identifier "uVar27") (= "=") (pointer_expression "*(undefined4 *)(puVar26 + 0x14)" (* "*") (cast_expression "(undefined4 *)(puVar26 + 0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar26 + 0x14)" (( "(") (binary_expression "puVar26 + 0x14" (identifier "puVar26") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(puVar26 + -0x2c) = **(undefined4 **)(puVar24 + 0x1c3ac);" (assignment_expression "*(undefined4 *)(puVar26 + -0x2c) = **(undefined4 **)(puVar24 + 0x1c3ac)" (pointer_expression "*(undefined4 *)(puVar26 + -0x2c)" (* "*") (cast_expression "(undefined4 *)(puVar26 + -0x2c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar26 + -0x2c)" (( "(") (binary_expression "puVar26 + -0x2c" (identifier "puVar26") (+ "+") (number_literal "-0x2c")) () ")")))) (= "=") (pointer_expression "**(undefined4 **)(puVar24 + 0x1c3ac)" (* "*") (pointer_expression "*(undefined4 **)(puVar24 + 0x1c3ac)" (* "*") (cast_expression "(undefined4 **)(puVar24 + 0x1c3ac)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar24 + 0x1c3ac)" (( "(") (binary_expression "puVar24 + 0x1c3ac" (identifier "puVar24") (+ "+") (number_literal "0x1c3ac")) () ")")))))) (; ";")) (expression_statement "*(int *******)(puVar26 + -0xb8) = *pppppppiVar17;" (assignment_expression "*(int *******)(puVar26 + -0xb8) = *pppppppiVar17" (pointer_expression "*(int *******)(puVar26 + -0xb8)" (* "*") (cast_expression "(int *******)(puVar26 + -0xb8)" (( "(") (type_descriptor "int *******" (primitive_type "int") (abstract_pointer_declarator "*******" (* "*") (abstract_pointer_declarator "******" (* "*") (abstract_pointer_declarator "*****" (* "*") (abstract_pointer_declarator "****" (* "*") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))))))) () ")") (parenthesized_expression "(puVar26 + -0xb8)" (( "(") (binary_expression "puVar26 + -0xb8" (identifier "puVar26") (+ "+") (number_literal "-0xb8")) () ")")))) (= "=") (pointer_expression "*pppppppiVar17" (* "*") (identifier "pppppppiVar17"))) (; ";")) (if_statement "if (*(byte *)(pppppppiVar18 + 1) < 0x25) {\n                    \n                    \n    iVar13 = (*(code *)(puVar24 + 0x24174 +\n                       *(int *)(*(int *)(puVar24 + 0x1c1ac) + -0x2ac0 +\n                               (uint)*(byte *)(pppppppiVar18 + 1) * 4)))();\n    return iVar13;\n  }" (if "if") (parenthesized_expression "(*(byte *)(pppppppiVar18 + 1) < 0x25)" (( "(") (binary_expression "*(byte *)(pppppppiVar18 + 1) < 0x25" (pointer_expression "*(byte *)(pppppppiVar18 + 1)" (* "*") (cast_expression "(byte *)(pppppppiVar18 + 1)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pppppppiVar18 + 1)" (( "(") (binary_expression "pppppppiVar18 + 1" (identifier "pppppppiVar18") (+ "+") (number_literal "1")) () ")")))) (< "<") (number_literal "0x25")) () ")")) (compound_statement "{\n                    \n                    \n    iVar13 = (*(code *)(puVar24 + 0x24174 +\n                       *(int *)(*(int *)(puVar24 + 0x1c1ac) + -0x2ac0 +\n                               (uint)*(byte *)(pppppppiVar18 + 1) * 4)))();\n    return iVar13;\n  }" ({ "{") (expression_statement "iVar13 = (*(code *)(puVar24 + 0x24174 +\n                       *(int *)(*(int *)(puVar24 + 0x1c1ac) + -0x2ac0 +\n                               (uint)*(byte *)(pppppppiVar18 + 1) * 4)))();" (assignment_expression "iVar13 = (*(code *)(puVar24 + 0x24174 +\n                       *(int *)(*(int *)(puVar24 + 0x1c1ac) + -0x2ac0 +\n                               (uint)*(byte *)(pppppppiVar18 + 1) * 4)))()" (identifier "iVar13") (= "=") (call_expression "(*(code *)(puVar24 + 0x24174 +\n                       *(int *)(*(int *)(puVar24 + 0x1c1ac) + -0x2ac0 +\n                               (uint)*(byte *)(pppppppiVar18 + 1) * 4)))()" (parenthesized_expression "(*(code *)(puVar24 + 0x24174 +\n                       *(int *)(*(int *)(puVar24 + 0x1c1ac) + -0x2ac0 +\n                               (uint)*(byte *)(pppppppiVar18 + 1) * 4)))" (( "(") (pointer_expression "*(code *)(puVar24 + 0x24174 +\n                       *(int *)(*(int *)(puVar24 + 0x1c1ac) + -0x2ac0 +\n                               (uint)*(byte *)(pppppppiVar18 + 1) * 4))" (* "*") (cast_expression "(code *)(puVar24 + 0x24174 +\n                       *(int *)(*(int *)(puVar24 + 0x1c1ac) + -0x2ac0 +\n                               (uint)*(byte *)(pppppppiVar18 + 1) * 4))" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar24 + 0x24174 +\n                       *(int *)(*(int *)(puVar24 + 0x1c1ac) + -0x2ac0 +\n                               (uint)*(byte *)(pppppppiVar18 + 1) * 4))" (( "(") (binary_expression "puVar24 + 0x24174 +\n                       *(int *)(*(int *)(puVar24 + 0x1c1ac) + -0x2ac0 +\n                               (uint)*(byte *)(pppppppiVar18 + 1) * 4)" (binary_expression "puVar24 + 0x24174" (identifier "puVar24") (+ "+") (number_literal "0x24174")) (+ "+") (pointer_expression "*(int *)(*(int *)(puVar24 + 0x1c1ac) + -0x2ac0 +\n                               (uint)*(byte *)(pppppppiVar18 + 1) * 4)" (* "*") (cast_expression "(int *)(*(int *)(puVar24 + 0x1c1ac) + -0x2ac0 +\n                               (uint)*(byte *)(pppppppiVar18 + 1) * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(puVar24 + 0x1c1ac) + -0x2ac0 +\n                               (uint)*(byte *)(pppppppiVar18 + 1) * 4)" (( "(") (binary_expression "*(int *)(puVar24 + 0x1c1ac) + -0x2ac0 +\n                               (uint)*(byte *)(pppppppiVar18 + 1) * 4" (binary_expression "*(int *)(puVar24 + 0x1c1ac) + -0x2ac0" (pointer_expression "*(int *)(puVar24 + 0x1c1ac)" (* "*") (cast_expression "(int *)(puVar24 + 0x1c1ac)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar24 + 0x1c1ac)" (( "(") (binary_expression "puVar24 + 0x1c1ac" (identifier "puVar24") (+ "+") (number_literal "0x1c1ac")) () ")")))) (+ "+") (number_literal "-0x2ac0")) (+ "+") (binary_expression "(uint)*(byte *)(pppppppiVar18 + 1) * 4" (binary_expression "(uint)*(byte *)(pppppppiVar18 + 1)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(byte *)(pppppppiVar18 + 1)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pppppppiVar18 + 1)" (( "(") (binary_expression "pppppppiVar18 + 1" (identifier "pppppppiVar18") (+ "+") (number_literal "1")) () ")")))) (* "*") (number_literal "4"))) () ")"))))) () ")")))) () ")")) (argument_list "()" (( "(") () ")")))) (; ";")) (return_statement "return iVar13;" (return "return") (identifier "iVar13") (; ";")) (} "}"))) (expression_statement "iVar13 = *(int *)(puVar26 + -0x2c);" (assignment_expression "iVar13 = *(int *)(puVar26 + -0x2c)" (identifier "iVar13") (= "=") (pointer_expression "*(int *)(puVar26 + -0x2c)" (* "*") (cast_expression "(int *)(puVar26 + -0x2c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar26 + -0x2c)" (( "(") (binary_expression "puVar26 + -0x2c" (identifier "puVar26") (+ "+") (number_literal "-0x2c")) () ")"))))) (; ";")) (if_statement "if (iVar13 == **(int **)(puVar24 + 0x1c3ac)) {\n    return 0;\n  }" (if "if") (parenthesized_expression "(iVar13 == **(int **)(puVar24 + 0x1c3ac))" (( "(") (binary_expression "iVar13 == **(int **)(puVar24 + 0x1c3ac)" (identifier "iVar13") (== "==") (pointer_expression "**(int **)(puVar24 + 0x1c3ac)" (* "*") (pointer_expression "*(int **)(puVar24 + 0x1c3ac)" (* "*") (cast_expression "(int **)(puVar24 + 0x1c3ac)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar24 + 0x1c3ac)" (( "(") (binary_expression "puVar24 + 0x1c3ac" (identifier "puVar24") (+ "+") (number_literal "0x1c3ac")) () ")")))))) () ")")) (compound_statement "{\n    return 0;\n  }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "pcVar5 = *(code **)(puVar24 + 0x1c390);" (assignment_expression "pcVar5 = *(code **)(puVar24 + 0x1c390)" (identifier "pcVar5") (= "=") (pointer_expression "*(code **)(puVar24 + 0x1c390)" (* "*") (cast_expression "(code **)(puVar24 + 0x1c390)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar24 + 0x1c390)" (( "(") (binary_expression "puVar24 + 0x1c390" (identifier "puVar24") (+ "+") (number_literal "0x1c390")) () ")"))))) (; ";")) (expression_statement "pcVar6 = FUN_00023824;" (assignment_expression "pcVar6 = FUN_00023824" (identifier "pcVar6") (= "=") (identifier "FUN_00023824")) (; ";")) (expression_statement "pppppppiVar15 = pppppppiVar17;" (assignment_expression "pppppppiVar15 = pppppppiVar17" (identifier "pppppppiVar15") (= "=") (identifier "pppppppiVar17")) (; ";")) (expression_statement "(*pcVar5)();" (call_expression "(*pcVar5)()" (parenthesized_expression "(*pcVar5)" (( "(") (pointer_expression "*pcVar5" (* "*") (identifier "pcVar5")) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "*(code **)(puVar26 + -0xe4) = pcVar6;" (assignment_expression "*(code **)(puVar26 + -0xe4) = pcVar6" (pointer_expression "*(code **)(puVar26 + -0xe4)" (* "*") (cast_expression "(code **)(puVar26 + -0xe4)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar26 + -0xe4)" (( "(") (binary_expression "puVar26 + -0xe4" (identifier "puVar26") (+ "+") (number_literal "-0xe4")) () ")")))) (= "=") (identifier "pcVar6")) (; ";")) (expression_statement "*(undefined4 *)(puVar26 + -0xe8) = uVar27;" (assignment_expression "*(undefined4 *)(puVar26 + -0xe8) = uVar27" (pointer_expression "*(undefined4 *)(puVar26 + -0xe8)" (* "*") (cast_expression "(undefined4 *)(puVar26 + -0xe8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar26 + -0xe8)" (( "(") (binary_expression "puVar26 + -0xe8" (identifier "puVar26") (+ "+") (number_literal "-0xe8")) () ")")))) (= "=") (identifier "uVar27")) (; ";")) (expression_statement "*(int **)(puVar26 + -0xec) = piVar23;" (assignment_expression "*(int **)(puVar26 + -0xec) = piVar23" (pointer_expression "*(int **)(puVar26 + -0xec)" (* "*") (cast_expression "(int **)(puVar26 + -0xec)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar26 + -0xec)" (( "(") (binary_expression "puVar26 + -0xec" (identifier "puVar26") (+ "+") (number_literal "-0xec")) () ")")))) (= "=") (identifier "piVar23")) (; ";")) (expression_statement "*(undefined4 *)(puVar26 + -0xf0) = 0;" (assignment_expression "*(undefined4 *)(puVar26 + -0xf0) = 0" (pointer_expression "*(undefined4 *)(puVar26 + -0xf0)" (* "*") (cast_expression "(undefined4 *)(puVar26 + -0xf0)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar26 + -0xf0)" (( "(") (binary_expression "puVar26 + -0xf0" (identifier "puVar26") (+ "+") (number_literal "-0xf0")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(int ***)(puVar26 + -0xf4) = unaff_s5;" (assignment_expression "*(int ***)(puVar26 + -0xf4) = unaff_s5" (pointer_expression "*(int ***)(puVar26 + -0xf4)" (* "*") (cast_expression "(int ***)(puVar26 + -0xf4)" (( "(") (type_descriptor "int ***" (primitive_type "int") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))) () ")") (parenthesized_expression "(puVar26 + -0xf4)" (( "(") (binary_expression "puVar26 + -0xf4" (identifier "puVar26") (+ "+") (number_literal "-0xf4")) () ")")))) (= "=") (identifier "unaff_s5")) (; ";")) (expression_statement "*(int ********)(puVar26 + -0xf8) = param_4;" (assignment_expression "*(int ********)(puVar26 + -0xf8) = param_4" (pointer_expression "*(int ********)(puVar26 + -0xf8)" (* "*") (cast_expression "(int ********)(puVar26 + -0xf8)" (( "(") (type_descriptor "int ********" (primitive_type "int") (abstract_pointer_declarator "********" (* "*") (abstract_pointer_declarator "*******" (* "*") (abstract_pointer_declarator "******" (* "*") (abstract_pointer_declarator "*****" (* "*") (abstract_pointer_declarator "****" (* "*") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))))))))) () ")") (parenthesized_expression "(puVar26 + -0xf8)" (( "(") (binary_expression "puVar26 + -0xf8" (identifier "puVar26") (+ "+") (number_literal "-0xf8")) () ")")))) (= "=") (identifier "param_4")) (; ";")) (expression_statement "*(int *******)(puVar26 + -0xfc) = unaff_s3;" (assignment_expression "*(int *******)(puVar26 + -0xfc) = unaff_s3" (pointer_expression "*(int *******)(puVar26 + -0xfc)" (* "*") (cast_expression "(int *******)(puVar26 + -0xfc)" (( "(") (type_descriptor "int *******" (primitive_type "int") (abstract_pointer_declarator "*******" (* "*") (abstract_pointer_declarator "******" (* "*") (abstract_pointer_declarator "*****" (* "*") (abstract_pointer_declarator "****" (* "*") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))))))) () ")") (parenthesized_expression "(puVar26 + -0xfc)" (( "(") (binary_expression "puVar26 + -0xfc" (identifier "puVar26") (+ "+") (number_literal "-0xfc")) () ")")))) (= "=") (identifier "unaff_s3")) (; ";")) (expression_statement "*(int ********)(puVar26 + -0x100) = unaff_s2;" (assignment_expression "*(int ********)(puVar26 + -0x100) = unaff_s2" (pointer_expression "*(int ********)(puVar26 + -0x100)" (* "*") (cast_expression "(int ********)(puVar26 + -0x100)" (( "(") (type_descriptor "int ********" (primitive_type "int") (abstract_pointer_declarator "********" (* "*") (abstract_pointer_declarator "*******" (* "*") (abstract_pointer_declarator "******" (* "*") (abstract_pointer_declarator "*****" (* "*") (abstract_pointer_declarator "****" (* "*") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))))))))) () ")") (parenthesized_expression "(puVar26 + -0x100)" (( "(") (binary_expression "puVar26 + -0x100" (identifier "puVar26") (+ "+") (number_literal "-0x100")) () ")")))) (= "=") (identifier "unaff_s2")) (; ";")) (expression_statement "*(int ********)(puVar26 + -0x104) = param_2;" (assignment_expression "*(int ********)(puVar26 + -0x104) = param_2" (pointer_expression "*(int ********)(puVar26 + -0x104)" (* "*") (cast_expression "(int ********)(puVar26 + -0x104)" (( "(") (type_descriptor "int ********" (primitive_type "int") (abstract_pointer_declarator "********" (* "*") (abstract_pointer_declarator "*******" (* "*") (abstract_pointer_declarator "******" (* "*") (abstract_pointer_declarator "*****" (* "*") (abstract_pointer_declarator "****" (* "*") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))))))))) () ")") (parenthesized_expression "(puVar26 + -0x104)" (( "(") (binary_expression "puVar26 + -0x104" (identifier "puVar26") (+ "+") (number_literal "-0x104")) () ")")))) (= "=") (identifier "param_2")) (; ";")) (expression_statement "*(int ********)(puVar26 + -0x108) = pppppppiVar17;" (assignment_expression "*(int ********)(puVar26 + -0x108) = pppppppiVar17" (pointer_expression "*(int ********)(puVar26 + -0x108)" (* "*") (cast_expression "(int ********)(puVar26 + -0x108)" (( "(") (type_descriptor "int ********" (primitive_type "int") (abstract_pointer_declarator "********" (* "*") (abstract_pointer_declarator "*******" (* "*") (abstract_pointer_declarator "******" (* "*") (abstract_pointer_declarator "*****" (* "*") (abstract_pointer_declarator "****" (* "*") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))))))))) () ")") (parenthesized_expression "(puVar26 + -0x108)" (( "(") (binary_expression "puVar26 + -0x108" (identifier "puVar26") (+ "+") (number_literal "-0x108")) () ")")))) (= "=") (identifier "pppppppiVar17")) (; ";")) (expression_statement "*(code **)(puVar26 + -0x118) = pcVar5 + 0x228ec;" (assignment_expression "*(code **)(puVar26 + -0x118) = pcVar5 + 0x228ec" (pointer_expression "*(code **)(puVar26 + -0x118)" (* "*") (cast_expression "(code **)(puVar26 + -0x118)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar26 + -0x118)" (( "(") (binary_expression "puVar26 + -0x118" (identifier "puVar26") (+ "+") (number_literal "-0x118")) () ")")))) (= "=") (binary_expression "pcVar5 + 0x228ec" (identifier "pcVar5") (+ "+") (number_literal "0x228ec"))) (; ";")) (expression_statement "*(int *)(puVar26 + -0xe0) = iVar13;" (assignment_expression "*(int *)(puVar26 + -0xe0) = iVar13" (pointer_expression "*(int *)(puVar26 + -0xe0)" (* "*") (cast_expression "(int *)(puVar26 + -0xe0)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar26 + -0xe0)" (( "(") (binary_expression "puVar26 + -0xe0" (identifier "puVar26") (+ "+") (number_literal "-0xe0")) () ")")))) (= "=") (identifier "iVar13")) (; ";")) (expression_statement "*(int ********)(puVar26 + -0xd4) = pppppppiVar19;" (assignment_expression "*(int ********)(puVar26 + -0xd4) = pppppppiVar19" (pointer_expression "*(int ********)(puVar26 + -0xd4)" (* "*") (cast_expression "(int ********)(puVar26 + -0xd4)" (( "(") (type_descriptor "int ********" (primitive_type "int") (abstract_pointer_declarator "********" (* "*") (abstract_pointer_declarator "*******" (* "*") (abstract_pointer_declarator "******" (* "*") (abstract_pointer_declarator "*****" (* "*") (abstract_pointer_declarator "****" (* "*") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))))))))) () ")") (parenthesized_expression "(puVar26 + -0xd4)" (( "(") (binary_expression "puVar26 + -0xd4" (identifier "puVar26") (+ "+") (number_literal "-0xd4")) () ")")))) (= "=") (identifier "pppppppiVar19")) (; ";")) (expression_statement "iVar21 = *(int *)(puVar26 + -0xd0);" (assignment_expression "iVar21 = *(int *)(puVar26 + -0xd0)" (identifier "iVar21") (= "=") (pointer_expression "*(int *)(puVar26 + -0xd0)" (* "*") (cast_expression "(int *)(puVar26 + -0xd0)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar26 + -0xd0)" (( "(") (binary_expression "puVar26 + -0xd0" (identifier "puVar26") (+ "+") (number_literal "-0xd0")) () ")"))))) (; ";")) (expression_statement "piVar23 = *(int **)(puVar26 + -0xcc);" (assignment_expression "piVar23 = *(int **)(puVar26 + -0xcc)" (identifier "piVar23") (= "=") (pointer_expression "*(int **)(puVar26 + -0xcc)" (* "*") (cast_expression "(int **)(puVar26 + -0xcc)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar26 + -0xcc)" (( "(") (binary_expression "puVar26 + -0xcc" (identifier "puVar26") (+ "+") (number_literal "-0xcc")) () ")"))))) (; ";")) (expression_statement "*(int *******)(puVar26 + -0x110) = *pppppppiVar15;" (assignment_expression "*(int *******)(puVar26 + -0x110) = *pppppppiVar15" (pointer_expression "*(int *******)(puVar26 + -0x110)" (* "*") (cast_expression "(int *******)(puVar26 + -0x110)" (( "(") (type_descriptor "int *******" (primitive_type "int") (abstract_pointer_declarator "*******" (* "*") (abstract_pointer_declarator "******" (* "*") (abstract_pointer_declarator "*****" (* "*") (abstract_pointer_declarator "****" (* "*") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))))))) () ")") (parenthesized_expression "(puVar26 + -0x110)" (( "(") (binary_expression "puVar26 + -0x110" (identifier "puVar26") (+ "+") (number_literal "-0x110")) () ")")))) (= "=") (pointer_expression "*pppppppiVar15" (* "*") (identifier "pppppppiVar15"))) (; ";")) (expression_statement "*(int **)(puVar26 + -0x11c) = piVar23;" (assignment_expression "*(int **)(puVar26 + -0x11c) = piVar23" (pointer_expression "*(int **)(puVar26 + -0x11c)" (* "*") (cast_expression "(int **)(puVar26 + -0x11c)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar26 + -0x11c)" (( "(") (binary_expression "puVar26 + -0x11c" (identifier "puVar26") (+ "+") (number_literal "-0x11c")) () ")")))) (= "=") (identifier "piVar23")) (; ";")) (expression_statement "*(int *)(puVar26 + -0x120) = iVar21;" (assignment_expression "*(int *)(puVar26 + -0x120) = iVar21" (pointer_expression "*(int *)(puVar26 + -0x120)" (* "*") (cast_expression "(int *)(puVar26 + -0x120)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar26 + -0x120)" (( "(") (binary_expression "puVar26 + -0x120" (identifier "puVar26") (+ "+") (number_literal "-0x120")) () ")")))) (= "=") (identifier "iVar21")) (; ";")) (expression_statement "iVar13 = FUN_00021f9c();" (assignment_expression "iVar13 = FUN_00021f9c()" (identifier "iVar13") (= "=") (call_expression "FUN_00021f9c()" (identifier "FUN_00021f9c") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if ((*piVar23 == 0) || (iVar13 != 0)) {\n    iVar22 = *(int *)(*(int *)(puVar26 + -0x118) + -0x7ed8);\n    *(int *)(puVar26 + -0x10c) = *(int *)(*(int *)(puVar26 + -0x118) + -0x7ed8) + -0x5cb8;\nLAB_0002390c:\n    do {\n      do {\n        iVar20 = iVar13;\n        if ((*(byte *)(pppppppiVar18 + 1) & 0xf7) == 2) {\n          return iVar20;\n        }\n        if ((iVar21 != 0) && (*(byte *)(pppppppiVar18 + 1) == 9)) {\n          return iVar20;\n        }\n        *(int **)(puVar26 + -0x11c) = piVar23;\n        *(int *)(puVar26 + -0x120) = iVar21;\n        iVar14 = (*(code *)(iVar22 + 0x1f9c))\n                           (*(undefined4 *)(puVar26 + -0xe0),pppppppiVar15,pppppppiVar18,\n                            *(undefined4 *)(puVar26 + -0xd4));\n        if (*piVar23 == 0) {\n          iVar13 = iVar14;\n          iVar2 = iVar20;\n          iVar3 = iVar14;\n          if (iVar20 == 0) goto LAB_0002390c;\n        }\n        else {\n          iVar2 = iVar14;\n          iVar3 = iVar20;\n          if (iVar14 == 0) {\n            if (iVar20 == 0) {\n              return 0;\n            }\n            FUN_0001920c(iVar20,*(int *)(*(int *)(puVar26 + -0x118) + -0x7ed8) + -0x2cc0,0);\n            return 0;\n          }\n        }\n        iVar13 = iVar2;\n      } while (iVar3 == 0);\n      iVar13 = (**(code **)(puVar26 + -0x10c))(*(undefined4 *)(puVar26 + -0x110),iVar20,iVar14,0x10)\n      ;\n    } while (iVar13 != 0);\n    iVar13 = *(int *)(*(int *)(puVar26 + -0x118) + -0x7ed8);\n    FUN_0001920c(iVar14,iVar13 + -0x2cc0,0);\n    FUN_0001920c(iVar20,iVar13 + -0x2cc0,0);\n    *piVar23 = 0xc;\n    iVar13 = 0;\n  }" (if "if") (parenthesized_expression "((*piVar23 == 0) || (iVar13 != 0))" (( "(") (binary_expression "(*piVar23 == 0) || (iVar13 != 0)" (parenthesized_expression "(*piVar23 == 0)" (( "(") (binary_expression "*piVar23 == 0" (pointer_expression "*piVar23" (* "*") (identifier "piVar23")) (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(iVar13 != 0)" (( "(") (binary_expression "iVar13 != 0" (identifier "iVar13") (!= "!=") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n    iVar22 = *(int *)(*(int *)(puVar26 + -0x118) + -0x7ed8);\n    *(int *)(puVar26 + -0x10c) = *(int *)(*(int *)(puVar26 + -0x118) + -0x7ed8) + -0x5cb8;\nLAB_0002390c:\n    do {\n      do {\n        iVar20 = iVar13;\n        if ((*(byte *)(pppppppiVar18 + 1) & 0xf7) == 2) {\n          return iVar20;\n        }\n        if ((iVar21 != 0) && (*(byte *)(pppppppiVar18 + 1) == 9)) {\n          return iVar20;\n        }\n        *(int **)(puVar26 + -0x11c) = piVar23;\n        *(int *)(puVar26 + -0x120) = iVar21;\n        iVar14 = (*(code *)(iVar22 + 0x1f9c))\n                           (*(undefined4 *)(puVar26 + -0xe0),pppppppiVar15,pppppppiVar18,\n                            *(undefined4 *)(puVar26 + -0xd4));\n        if (*piVar23 == 0) {\n          iVar13 = iVar14;\n          iVar2 = iVar20;\n          iVar3 = iVar14;\n          if (iVar20 == 0) goto LAB_0002390c;\n        }\n        else {\n          iVar2 = iVar14;\n          iVar3 = iVar20;\n          if (iVar14 == 0) {\n            if (iVar20 == 0) {\n              return 0;\n            }\n            FUN_0001920c(iVar20,*(int *)(*(int *)(puVar26 + -0x118) + -0x7ed8) + -0x2cc0,0);\n            return 0;\n          }\n        }\n        iVar13 = iVar2;\n      } while (iVar3 == 0);\n      iVar13 = (**(code **)(puVar26 + -0x10c))(*(undefined4 *)(puVar26 + -0x110),iVar20,iVar14,0x10)\n      ;\n    } while (iVar13 != 0);\n    iVar13 = *(int *)(*(int *)(puVar26 + -0x118) + -0x7ed8);\n    FUN_0001920c(iVar14,iVar13 + -0x2cc0,0);\n    FUN_0001920c(iVar20,iVar13 + -0x2cc0,0);\n    *piVar23 = 0xc;\n    iVar13 = 0;\n  }" ({ "{") (expression_statement "iVar22 = *(int *)(*(int *)(puVar26 + -0x118) + -0x7ed8);" (assignment_expression "iVar22 = *(int *)(*(int *)(puVar26 + -0x118) + -0x7ed8)" (identifier "iVar22") (= "=") (pointer_expression "*(int *)(*(int *)(puVar26 + -0x118) + -0x7ed8)" (* "*") (cast_expression "(int *)(*(int *)(puVar26 + -0x118) + -0x7ed8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(puVar26 + -0x118) + -0x7ed8)" (( "(") (binary_expression "*(int *)(puVar26 + -0x118) + -0x7ed8" (pointer_expression "*(int *)(puVar26 + -0x118)" (* "*") (cast_expression "(int *)(puVar26 + -0x118)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar26 + -0x118)" (( "(") (binary_expression "puVar26 + -0x118" (identifier "puVar26") (+ "+") (number_literal "-0x118")) () ")")))) (+ "+") (number_literal "-0x7ed8")) () ")"))))) (; ";")) (expression_statement "*(int *)(puVar26 + -0x10c) = *(int *)(*(int *)(puVar26 + -0x118) + -0x7ed8) + -0x5cb8;" (assignment_expression "*(int *)(puVar26 + -0x10c) = *(int *)(*(int *)(puVar26 + -0x118) + -0x7ed8) + -0x5cb8" (pointer_expression "*(int *)(puVar26 + -0x10c)" (* "*") (cast_expression "(int *)(puVar26 + -0x10c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar26 + -0x10c)" (( "(") (binary_expression "puVar26 + -0x10c" (identifier "puVar26") (+ "+") (number_literal "-0x10c")) () ")")))) (= "=") (binary_expression "*(int *)(*(int *)(puVar26 + -0x118) + -0x7ed8) + -0x5cb8" (pointer_expression "*(int *)(*(int *)(puVar26 + -0x118) + -0x7ed8)" (* "*") (cast_expression "(int *)(*(int *)(puVar26 + -0x118) + -0x7ed8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(puVar26 + -0x118) + -0x7ed8)" (( "(") (binary_expression "*(int *)(puVar26 + -0x118) + -0x7ed8" (pointer_expression "*(int *)(puVar26 + -0x118)" (* "*") (cast_expression "(int *)(puVar26 + -0x118)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar26 + -0x118)" (( "(") (binary_expression "puVar26 + -0x118" (identifier "puVar26") (+ "+") (number_literal "-0x118")) () ")")))) (+ "+") (number_literal "-0x7ed8")) () ")")))) (+ "+") (number_literal "-0x5cb8"))) (; ";")) (labeled_statement "LAB_0002390c:\n    do {\n      do {\n        iVar20 = iVar13;\n        if ((*(byte *)(pppppppiVar18 + 1) & 0xf7) == 2) {\n          return iVar20;\n        }\n        if ((iVar21 != 0) && (*(byte *)(pppppppiVar18 + 1) == 9)) {\n          return iVar20;\n        }\n        *(int **)(puVar26 + -0x11c) = piVar23;\n        *(int *)(puVar26 + -0x120) = iVar21;\n        iVar14 = (*(code *)(iVar22 + 0x1f9c))\n                           (*(undefined4 *)(puVar26 + -0xe0),pppppppiVar15,pppppppiVar18,\n                            *(undefined4 *)(puVar26 + -0xd4));\n        if (*piVar23 == 0) {\n          iVar13 = iVar14;\n          iVar2 = iVar20;\n          iVar3 = iVar14;\n          if (iVar20 == 0) goto LAB_0002390c;\n        }\n        else {\n          iVar2 = iVar14;\n          iVar3 = iVar20;\n          if (iVar14 == 0) {\n            if (iVar20 == 0) {\n              return 0;\n            }\n            FUN_0001920c(iVar20,*(int *)(*(int *)(puVar26 + -0x118) + -0x7ed8) + -0x2cc0,0);\n            return 0;\n          }\n        }\n        iVar13 = iVar2;\n      } while (iVar3 == 0);\n      iVar13 = (**(code **)(puVar26 + -0x10c))(*(undefined4 *)(puVar26 + -0x110),iVar20,iVar14,0x10)\n      ;\n    } while (iVar13 != 0);" (statement_identifier "LAB_0002390c") (: ":") (do_statement "do {\n      do {\n        iVar20 = iVar13;\n        if ((*(byte *)(pppppppiVar18 + 1) & 0xf7) == 2) {\n          return iVar20;\n        }\n        if ((iVar21 != 0) && (*(byte *)(pppppppiVar18 + 1) == 9)) {\n          return iVar20;\n        }\n        *(int **)(puVar26 + -0x11c) = piVar23;\n        *(int *)(puVar26 + -0x120) = iVar21;\n        iVar14 = (*(code *)(iVar22 + 0x1f9c))\n                           (*(undefined4 *)(puVar26 + -0xe0),pppppppiVar15,pppppppiVar18,\n                            *(undefined4 *)(puVar26 + -0xd4));\n        if (*piVar23 == 0) {\n          iVar13 = iVar14;\n          iVar2 = iVar20;\n          iVar3 = iVar14;\n          if (iVar20 == 0) goto LAB_0002390c;\n        }\n        else {\n          iVar2 = iVar14;\n          iVar3 = iVar20;\n          if (iVar14 == 0) {\n            if (iVar20 == 0) {\n              return 0;\n            }\n            FUN_0001920c(iVar20,*(int *)(*(int *)(puVar26 + -0x118) + -0x7ed8) + -0x2cc0,0);\n            return 0;\n          }\n        }\n        iVar13 = iVar2;\n      } while (iVar3 == 0);\n      iVar13 = (**(code **)(puVar26 + -0x10c))(*(undefined4 *)(puVar26 + -0x110),iVar20,iVar14,0x10)\n      ;\n    } while (iVar13 != 0);" (do "do") (compound_statement "{\n      do {\n        iVar20 = iVar13;\n        if ((*(byte *)(pppppppiVar18 + 1) & 0xf7) == 2) {\n          return iVar20;\n        }\n        if ((iVar21 != 0) && (*(byte *)(pppppppiVar18 + 1) == 9)) {\n          return iVar20;\n        }\n        *(int **)(puVar26 + -0x11c) = piVar23;\n        *(int *)(puVar26 + -0x120) = iVar21;\n        iVar14 = (*(code *)(iVar22 + 0x1f9c))\n                           (*(undefined4 *)(puVar26 + -0xe0),pppppppiVar15,pppppppiVar18,\n                            *(undefined4 *)(puVar26 + -0xd4));\n        if (*piVar23 == 0) {\n          iVar13 = iVar14;\n          iVar2 = iVar20;\n          iVar3 = iVar14;\n          if (iVar20 == 0) goto LAB_0002390c;\n        }\n        else {\n          iVar2 = iVar14;\n          iVar3 = iVar20;\n          if (iVar14 == 0) {\n            if (iVar20 == 0) {\n              return 0;\n            }\n            FUN_0001920c(iVar20,*(int *)(*(int *)(puVar26 + -0x118) + -0x7ed8) + -0x2cc0,0);\n            return 0;\n          }\n        }\n        iVar13 = iVar2;\n      } while (iVar3 == 0);\n      iVar13 = (**(code **)(puVar26 + -0x10c))(*(undefined4 *)(puVar26 + -0x110),iVar20,iVar14,0x10)\n      ;\n    }" ({ "{") (do_statement "do {\n        iVar20 = iVar13;\n        if ((*(byte *)(pppppppiVar18 + 1) & 0xf7) == 2) {\n          return iVar20;\n        }\n        if ((iVar21 != 0) && (*(byte *)(pppppppiVar18 + 1) == 9)) {\n          return iVar20;\n        }\n        *(int **)(puVar26 + -0x11c) = piVar23;\n        *(int *)(puVar26 + -0x120) = iVar21;\n        iVar14 = (*(code *)(iVar22 + 0x1f9c))\n                           (*(undefined4 *)(puVar26 + -0xe0),pppppppiVar15,pppppppiVar18,\n                            *(undefined4 *)(puVar26 + -0xd4));\n        if (*piVar23 == 0) {\n          iVar13 = iVar14;\n          iVar2 = iVar20;\n          iVar3 = iVar14;\n          if (iVar20 == 0) goto LAB_0002390c;\n        }\n        else {\n          iVar2 = iVar14;\n          iVar3 = iVar20;\n          if (iVar14 == 0) {\n            if (iVar20 == 0) {\n              return 0;\n            }\n            FUN_0001920c(iVar20,*(int *)(*(int *)(puVar26 + -0x118) + -0x7ed8) + -0x2cc0,0);\n            return 0;\n          }\n        }\n        iVar13 = iVar2;\n      } while (iVar3 == 0);" (do "do") (compound_statement "{\n        iVar20 = iVar13;\n        if ((*(byte *)(pppppppiVar18 + 1) & 0xf7) == 2) {\n          return iVar20;\n        }\n        if ((iVar21 != 0) && (*(byte *)(pppppppiVar18 + 1) == 9)) {\n          return iVar20;\n        }\n        *(int **)(puVar26 + -0x11c) = piVar23;\n        *(int *)(puVar26 + -0x120) = iVar21;\n        iVar14 = (*(code *)(iVar22 + 0x1f9c))\n                           (*(undefined4 *)(puVar26 + -0xe0),pppppppiVar15,pppppppiVar18,\n                            *(undefined4 *)(puVar26 + -0xd4));\n        if (*piVar23 == 0) {\n          iVar13 = iVar14;\n          iVar2 = iVar20;\n          iVar3 = iVar14;\n          if (iVar20 == 0) goto LAB_0002390c;\n        }\n        else {\n          iVar2 = iVar14;\n          iVar3 = iVar20;\n          if (iVar14 == 0) {\n            if (iVar20 == 0) {\n              return 0;\n            }\n            FUN_0001920c(iVar20,*(int *)(*(int *)(puVar26 + -0x118) + -0x7ed8) + -0x2cc0,0);\n            return 0;\n          }\n        }\n        iVar13 = iVar2;\n      }" ({ "{") (expression_statement "iVar20 = iVar13;" (assignment_expression "iVar20 = iVar13" (identifier "iVar20") (= "=") (identifier "iVar13")) (; ";")) (if_statement "if ((*(byte *)(pppppppiVar18 + 1) & 0xf7) == 2) {\n          return iVar20;\n        }" (if "if") (parenthesized_expression "((*(byte *)(pppppppiVar18 + 1) & 0xf7) == 2)" (( "(") (binary_expression "(*(byte *)(pppppppiVar18 + 1) & 0xf7) == 2" (parenthesized_expression "(*(byte *)(pppppppiVar18 + 1) & 0xf7)" (( "(") (binary_expression "*(byte *)(pppppppiVar18 + 1) & 0xf7" (pointer_expression "*(byte *)(pppppppiVar18 + 1)" (* "*") (cast_expression "(byte *)(pppppppiVar18 + 1)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pppppppiVar18 + 1)" (( "(") (binary_expression "pppppppiVar18 + 1" (identifier "pppppppiVar18") (+ "+") (number_literal "1")) () ")")))) (& "&") (number_literal "0xf7")) () ")")) (== "==") (number_literal "2")) () ")")) (compound_statement "{\n          return iVar20;\n        }" ({ "{") (return_statement "return iVar20;" (return "return") (identifier "iVar20") (; ";")) (} "}"))) (if_statement "if ((iVar21 != 0) && (*(byte *)(pppppppiVar18 + 1) == 9)) {\n          return iVar20;\n        }" (if "if") (parenthesized_expression "((iVar21 != 0) && (*(byte *)(pppppppiVar18 + 1) == 9))" (( "(") (binary_expression "(iVar21 != 0) && (*(byte *)(pppppppiVar18 + 1) == 9)" (parenthesized_expression "(iVar21 != 0)" (( "(") (binary_expression "iVar21 != 0" (identifier "iVar21") (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(*(byte *)(pppppppiVar18 + 1) == 9)" (( "(") (binary_expression "*(byte *)(pppppppiVar18 + 1) == 9" (pointer_expression "*(byte *)(pppppppiVar18 + 1)" (* "*") (cast_expression "(byte *)(pppppppiVar18 + 1)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pppppppiVar18 + 1)" (( "(") (binary_expression "pppppppiVar18 + 1" (identifier "pppppppiVar18") (+ "+") (number_literal "1")) () ")")))) (== "==") (number_literal "9")) () ")"))) () ")")) (compound_statement "{\n          return iVar20;\n        }" ({ "{") (return_statement "return iVar20;" (return "return") (identifier "iVar20") (; ";")) (} "}"))) (expression_statement "*(int **)(puVar26 + -0x11c) = piVar23;" (assignment_expression "*(int **)(puVar26 + -0x11c) = piVar23" (pointer_expression "*(int **)(puVar26 + -0x11c)" (* "*") (cast_expression "(int **)(puVar26 + -0x11c)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar26 + -0x11c)" (( "(") (binary_expression "puVar26 + -0x11c" (identifier "puVar26") (+ "+") (number_literal "-0x11c")) () ")")))) (= "=") (identifier "piVar23")) (; ";")) (expression_statement "*(int *)(puVar26 + -0x120) = iVar21;" (assignment_expression "*(int *)(puVar26 + -0x120) = iVar21" (pointer_expression "*(int *)(puVar26 + -0x120)" (* "*") (cast_expression "(int *)(puVar26 + -0x120)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar26 + -0x120)" (( "(") (binary_expression "puVar26 + -0x120" (identifier "puVar26") (+ "+") (number_literal "-0x120")) () ")")))) (= "=") (identifier "iVar21")) (; ";")) (expression_statement "iVar14 = (*(code *)(iVar22 + 0x1f9c))\n                           (*(undefined4 *)(puVar26 + -0xe0),pppppppiVar15,pppppppiVar18,\n                            *(undefined4 *)(puVar26 + -0xd4));" (assignment_expression "iVar14 = (*(code *)(iVar22 + 0x1f9c))\n                           (*(undefined4 *)(puVar26 + -0xe0),pppppppiVar15,pppppppiVar18,\n                            *(undefined4 *)(puVar26 + -0xd4))" (identifier "iVar14") (= "=") (call_expression "(*(code *)(iVar22 + 0x1f9c))\n                           (*(undefined4 *)(puVar26 + -0xe0),pppppppiVar15,pppppppiVar18,\n                            *(undefined4 *)(puVar26 + -0xd4))" (parenthesized_expression "(*(code *)(iVar22 + 0x1f9c))" (( "(") (pointer_expression "*(code *)(iVar22 + 0x1f9c)" (* "*") (cast_expression "(code *)(iVar22 + 0x1f9c)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar22 + 0x1f9c)" (( "(") (binary_expression "iVar22 + 0x1f9c" (identifier "iVar22") (+ "+") (number_literal "0x1f9c")) () ")")))) () ")")) (argument_list "(*(undefined4 *)(puVar26 + -0xe0),pppppppiVar15,pppppppiVar18,\n                            *(undefined4 *)(puVar26 + -0xd4))" (( "(") (pointer_expression "*(undefined4 *)(puVar26 + -0xe0)" (* "*") (cast_expression "(undefined4 *)(puVar26 + -0xe0)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar26 + -0xe0)" (( "(") (binary_expression "puVar26 + -0xe0" (identifier "puVar26") (+ "+") (number_literal "-0xe0")) () ")")))) (, ",") (identifier "pppppppiVar15") (, ",") (identifier "pppppppiVar18") (, ",") (pointer_expression "*(undefined4 *)(puVar26 + -0xd4)" (* "*") (cast_expression "(undefined4 *)(puVar26 + -0xd4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar26 + -0xd4)" (( "(") (binary_expression "puVar26 + -0xd4" (identifier "puVar26") (+ "+") (number_literal "-0xd4")) () ")")))) () ")")))) (; ";")) (if_statement "if (*piVar23 == 0) {\n          iVar13 = iVar14;\n          iVar2 = iVar20;\n          iVar3 = iVar14;\n          if (iVar20 == 0) goto LAB_0002390c;\n        }\n        else {\n          iVar2 = iVar14;\n          iVar3 = iVar20;\n          if (iVar14 == 0) {\n            if (iVar20 == 0) {\n              return 0;\n            }\n            FUN_0001920c(iVar20,*(int *)(*(int *)(puVar26 + -0x118) + -0x7ed8) + -0x2cc0,0);\n            return 0;\n          }\n        }" (if "if") (parenthesized_expression "(*piVar23 == 0)" (( "(") (binary_expression "*piVar23 == 0" (pointer_expression "*piVar23" (* "*") (identifier "piVar23")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          iVar13 = iVar14;\n          iVar2 = iVar20;\n          iVar3 = iVar14;\n          if (iVar20 == 0) goto LAB_0002390c;\n        }" ({ "{") (expression_statement "iVar13 = iVar14;" (assignment_expression "iVar13 = iVar14" (identifier "iVar13") (= "=") (identifier "iVar14")) (; ";")) (expression_statement "iVar2 = iVar20;" (assignment_expression "iVar2 = iVar20" (identifier "iVar2") (= "=") (identifier "iVar20")) (; ";")) (expression_statement "iVar3 = iVar14;" (assignment_expression "iVar3 = iVar14" (identifier "iVar3") (= "=") (identifier "iVar14")) (; ";")) (if_statement "if (iVar20 == 0) goto LAB_0002390c;" (if "if") (parenthesized_expression "(iVar20 == 0)" (( "(") (binary_expression "iVar20 == 0" (identifier "iVar20") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_0002390c;" (goto "goto") (statement_identifier "LAB_0002390c") (; ";"))) (} "}")) (else_clause "else {\n          iVar2 = iVar14;\n          iVar3 = iVar20;\n          if (iVar14 == 0) {\n            if (iVar20 == 0) {\n              return 0;\n            }\n            FUN_0001920c(iVar20,*(int *)(*(int *)(puVar26 + -0x118) + -0x7ed8) + -0x2cc0,0);\n            return 0;\n          }\n        }" (else "else") (compound_statement "{\n          iVar2 = iVar14;\n          iVar3 = iVar20;\n          if (iVar14 == 0) {\n            if (iVar20 == 0) {\n              return 0;\n            }\n            FUN_0001920c(iVar20,*(int *)(*(int *)(puVar26 + -0x118) + -0x7ed8) + -0x2cc0,0);\n            return 0;\n          }\n        }" ({ "{") (expression_statement "iVar2 = iVar14;" (assignment_expression "iVar2 = iVar14" (identifier "iVar2") (= "=") (identifier "iVar14")) (; ";")) (expression_statement "iVar3 = iVar20;" (assignment_expression "iVar3 = iVar20" (identifier "iVar3") (= "=") (identifier "iVar20")) (; ";")) (if_statement "if (iVar14 == 0) {\n            if (iVar20 == 0) {\n              return 0;\n            }\n            FUN_0001920c(iVar20,*(int *)(*(int *)(puVar26 + -0x118) + -0x7ed8) + -0x2cc0,0);\n            return 0;\n          }" (if "if") (parenthesized_expression "(iVar14 == 0)" (( "(") (binary_expression "iVar14 == 0" (identifier "iVar14") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            if (iVar20 == 0) {\n              return 0;\n            }\n            FUN_0001920c(iVar20,*(int *)(*(int *)(puVar26 + -0x118) + -0x7ed8) + -0x2cc0,0);\n            return 0;\n          }" ({ "{") (if_statement "if (iVar20 == 0) {\n              return 0;\n            }" (if "if") (parenthesized_expression "(iVar20 == 0)" (( "(") (binary_expression "iVar20 == 0" (identifier "iVar20") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n              return 0;\n            }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "FUN_0001920c(iVar20,*(int *)(*(int *)(puVar26 + -0x118) + -0x7ed8) + -0x2cc0,0);" (call_expression "FUN_0001920c(iVar20,*(int *)(*(int *)(puVar26 + -0x118) + -0x7ed8) + -0x2cc0,0)" (identifier "FUN_0001920c") (argument_list "(iVar20,*(int *)(*(int *)(puVar26 + -0x118) + -0x7ed8) + -0x2cc0,0)" (( "(") (identifier "iVar20") (, ",") (binary_expression "*(int *)(*(int *)(puVar26 + -0x118) + -0x7ed8) + -0x2cc0" (pointer_expression "*(int *)(*(int *)(puVar26 + -0x118) + -0x7ed8)" (* "*") (cast_expression "(int *)(*(int *)(puVar26 + -0x118) + -0x7ed8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(puVar26 + -0x118) + -0x7ed8)" (( "(") (binary_expression "*(int *)(puVar26 + -0x118) + -0x7ed8" (pointer_expression "*(int *)(puVar26 + -0x118)" (* "*") (cast_expression "(int *)(puVar26 + -0x118)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar26 + -0x118)" (( "(") (binary_expression "puVar26 + -0x118" (identifier "puVar26") (+ "+") (number_literal "-0x118")) () ")")))) (+ "+") (number_literal "-0x7ed8")) () ")")))) (+ "+") (number_literal "-0x2cc0")) (, ",") (number_literal "0") () ")"))) (; ";")) (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (} "}")))) (expression_statement "iVar13 = iVar2;" (assignment_expression "iVar13 = iVar2" (identifier "iVar13") (= "=") (identifier "iVar2")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar3 == 0)" (( "(") (binary_expression "iVar3 == 0" (identifier "iVar3") (== "==") (number_literal "0")) () ")")) (; ";")) (expression_statement "iVar13 = (**(code **)(puVar26 + -0x10c))(*(undefined4 *)(puVar26 + -0x110),iVar20,iVar14,0x10)\n      ;" (assignment_expression "iVar13 = (**(code **)(puVar26 + -0x10c))(*(undefined4 *)(puVar26 + -0x110),iVar20,iVar14,0x10)" (identifier "iVar13") (= "=") (call_expression "(**(code **)(puVar26 + -0x10c))(*(undefined4 *)(puVar26 + -0x110),iVar20,iVar14,0x10)" (parenthesized_expression "(**(code **)(puVar26 + -0x10c))" (( "(") (pointer_expression "**(code **)(puVar26 + -0x10c)" (* "*") (pointer_expression "*(code **)(puVar26 + -0x10c)" (* "*") (cast_expression "(code **)(puVar26 + -0x10c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar26 + -0x10c)" (( "(") (binary_expression "puVar26 + -0x10c" (identifier "puVar26") (+ "+") (number_literal "-0x10c")) () ")"))))) () ")")) (argument_list "(*(undefined4 *)(puVar26 + -0x110),iVar20,iVar14,0x10)" (( "(") (pointer_expression "*(undefined4 *)(puVar26 + -0x110)" (* "*") (cast_expression "(undefined4 *)(puVar26 + -0x110)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar26 + -0x110)" (( "(") (binary_expression "puVar26 + -0x110" (identifier "puVar26") (+ "+") (number_literal "-0x110")) () ")")))) (, ",") (identifier "iVar20") (, ",") (identifier "iVar14") (, ",") (number_literal "0x10") () ")")))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar13 != 0)" (( "(") (binary_expression "iVar13 != 0" (identifier "iVar13") (!= "!=") (number_literal "0")) () ")")) (; ";"))) (expression_statement "iVar13 = *(int *)(*(int *)(puVar26 + -0x118) + -0x7ed8);" (assignment_expression "iVar13 = *(int *)(*(int *)(puVar26 + -0x118) + -0x7ed8)" (identifier "iVar13") (= "=") (pointer_expression "*(int *)(*(int *)(puVar26 + -0x118) + -0x7ed8)" (* "*") (cast_expression "(int *)(*(int *)(puVar26 + -0x118) + -0x7ed8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(puVar26 + -0x118) + -0x7ed8)" (( "(") (binary_expression "*(int *)(puVar26 + -0x118) + -0x7ed8" (pointer_expression "*(int *)(puVar26 + -0x118)" (* "*") (cast_expression "(int *)(puVar26 + -0x118)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar26 + -0x118)" (( "(") (binary_expression "puVar26 + -0x118" (identifier "puVar26") (+ "+") (number_literal "-0x118")) () ")")))) (+ "+") (number_literal "-0x7ed8")) () ")"))))) (; ";")) (expression_statement "FUN_0001920c(iVar14,iVar13 + -0x2cc0,0);" (call_expression "FUN_0001920c(iVar14,iVar13 + -0x2cc0,0)" (identifier "FUN_0001920c") (argument_list "(iVar14,iVar13 + -0x2cc0,0)" (( "(") (identifier "iVar14") (, ",") (binary_expression "iVar13 + -0x2cc0" (identifier "iVar13") (+ "+") (number_literal "-0x2cc0")) (, ",") (number_literal "0") () ")"))) (; ";")) (expression_statement "FUN_0001920c(iVar20,iVar13 + -0x2cc0,0);" (call_expression "FUN_0001920c(iVar20,iVar13 + -0x2cc0,0)" (identifier "FUN_0001920c") (argument_list "(iVar20,iVar13 + -0x2cc0,0)" (( "(") (identifier "iVar20") (, ",") (binary_expression "iVar13 + -0x2cc0" (identifier "iVar13") (+ "+") (number_literal "-0x2cc0")) (, ",") (number_literal "0") () ")"))) (; ";")) (expression_statement "*piVar23 = 0xc;" (assignment_expression "*piVar23 = 0xc" (pointer_expression "*piVar23" (* "*") (identifier "piVar23")) (= "=") (number_literal "0xc")) (; ";")) (expression_statement "iVar13 = 0;" (assignment_expression "iVar13 = 0" (identifier "iVar13") (= "=") (number_literal "0")) (; ";")) (} "}"))) (return_statement "return iVar13;" (return "return") (identifier "iVar13") (; ";")) (} "}")))
(translation_unit (function_definition type: (primitive_type) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (primitive_type) declarator: (pointer_declarator declarator: (pointer_declarator declarator: (pointer_declarator declarator: (pointer_declarator declarator: (pointer_declarator declarator: (pointer_declarator declarator: (pointer_declarator declarator: (identifier))))))))) (parameter_declaration type: (primitive_type) declarator: (pointer_declarator declarator: (pointer_declarator declarator: (pointer_declarator declarator: (pointer_declarator declarator: (pointer_declarator declarator: (pointer_declarator declarator: (pointer_declarator declarator: (identifier))))))))) (parameter_declaration type: (primitive_type) declarator: (pointer_declarator declarator: (pointer_declarator declarator: (pointer_declarator declarator: (pointer_declarator declarator: (pointer_declarator declarator: (pointer_declarator declarator: (pointer_declarator declarator: (identifier))))))))) (parameter_declaration type: (primitive_type) declarator: (identifier)))) body: (compound_statement (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (pointer_declarator declarator: (pointer_declarator declarator: (pointer_declarator declarator: (pointer_declarator declarator: (pointer_declarator 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: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (pointer_declarator declarator: (pointer_declarator declarator: (pointer_declarator declarator: (pointer_declarator declarator: (identifier))))))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (pointer_declarator declarator: (pointer_declarator declarator: (pointer_declarator declarator: (pointer_declarator declarator: (pointer_declarator declarator: (pointer_declarator declarator: (identifier))))))))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (pointer_declarator declarator: (pointer_declarator declarator: (pointer_declarator declarator: (pointer_declarator declarator: (pointer_declarator declarator: (pointer_declarator declarator: (identifier))))))))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (pointer_declarator declarator: (pointer_declarator declarator: (pointer_declarator declarator: (pointer_declarator declarator: (pointer_declarator declarator: (identifier)))))))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (pointer_declarator declarator: (pointer_declarator declarator: (pointer_declarator declarator: (pointer_declarator declarator: (pointer_declarator declarator: (pointer_declarator declarator: (identifier))))))))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (pointer_declarator declarator: (pointer_declarator declarator: (pointer_declarator declarator: (pointer_declarator declarator: (pointer_declarator declarator: (identifier)))))))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (pointer_declarator declarator: (pointer_declarator declarator: (pointer_declarator declarator: (pointer_declarator declarator: (pointer_declarator declarator: (pointer_declarator declarator: (identifier))))))))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (pointer_declarator declarator: (pointer_declarator declarator: (pointer_declarator declarator: (pointer_declarator declarator: (pointer_declarator declarator: (pointer_declarator declarator: (identifier))))))))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (pointer_declarator declarator: (pointer_declarator declarator: (pointer_declarator declarator: (pointer_declarator declarator: (pointer_declarator declarator: (pointer_declarator declarator: (identifier))))))))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (pointer_declarator declarator: (pointer_declarator declarator: (pointer_declarator declarator: (pointer_declarator declarator: (pointer_declarator declarator: (pointer_declarator declarator: (identifier))))))))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (pointer_declarator declarator: (pointer_declarator declarator: (pointer_declarator declarator: (pointer_declarator declarator: (pointer_declarator declarator: (pointer_declarator declarator: (identifier))))))))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (pointer_declarator declarator: (pointer_declarator declarator: (pointer_declarator declarator: (pointer_declarator declarator: (pointer_declarator declarator: (identifier)))))))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (pointer_declarator declarator: (identifier)))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (pointer_declarator declarator: (pointer_declarator declarator: (pointer_declarator declarator: (pointer_declarator declarator: (pointer_declarator declarator: (pointer_declarator declarator: (identifier))))))))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) 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: (pointer_declarator declarator: (pointer_declarator declarator: (pointer_declarator declarator: (pointer_declarator declarator: (pointer_declarator declarator: (pointer_declarator declarator: (pointer_declarator declarator: (identifier))))))))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (pointer_declarator declarator: (pointer_declarator declarator: (pointer_declarator declarator: (pointer_declarator declarator: (pointer_declarator declarator: (pointer_declarator declarator: (identifier))))))))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (pointer_declarator declarator: (pointer_declarator declarator: (pointer_declarator declarator: (pointer_declarator declarator: (pointer_declarator declarator: (identifier)))))))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (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))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (escape_sequence)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (number_literal))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (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))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator)))))))) value: (subscript_expression argument: (identifier) index: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))))))) value: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator)))))))) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (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 declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator)))))))) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator)))))))) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (false)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator)))))))) value: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (true))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator)))))))) value: (number_literal)))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (goto_statement label: (statement_identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator)))))))) value: (pointer_expression argument: (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: (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: (cast_expression type: (type_descriptor type: (type_identifier) 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: (comma_expression left: (assignment_expression left: (identifier) right: (identifier)) right: (comma_expression left: (assignment_expression left: (identifier) right: (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: (subscript_expression argument: (identifier) index: (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: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (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: (identifier) right: (number_literal))))) right: (char_literal (escape_sequence)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) consequence: (compound_statement (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))))))) value: (identifier)))) (expression_statement (assignment_expression left: (subscript_expression argument: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal)))) index: (number_literal)) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))))))) value: (number_literal)))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator)))))))) value: (subscript_expression argument: (identifier) index: (number_literal))))))) alternative: (else_clause (compound_statement (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: (identifier) right: (number_literal))))) right: (char_literal (escape_sequence)))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (identifier)))))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (pointer_expression argument: (identifier))) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) consequence: (compound_statement (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))))))) value: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator)))))))) value: (subscript_expression argument: (identifier) index: (number_literal)))))) alternative: (else_clause (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) right: (number_literal))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (identifier)) right: (binary_expression left: (subscript_expression argument: (identifier) index: (binary_expression left: (identifier) right: (number_literal))) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))))))) value: (number_literal))))))) consequence: (compound_statement (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))))))) value: (identifier)))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator)))))))) value: (subscript_expression argument: (identifier) index: (number_literal))))))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) right: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator)))))))) value: (subscript_expression argument: (identifier) index: (number_literal))) right: (identifier))))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (number_literal)))) consequence: (compound_statement (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier)))) (if_statement condition: (parenthesized_expression (identifier)) consequence: (compound_statement (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))))))) alternative: (else_clause (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator)))))))) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator)))))))) value: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator)))))))) value: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (do_statement body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (number_literal) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (pointer_expression argument: (identifier))))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator)))))))) value: (subscript_expression argument: (identifier) index: (number_literal)))) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator)))))))) value: (subscript_expression argument: (identifier) index: (number_literal))) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator)))))))) value: (number_literal))))))) consequence: (break_statement)) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator)))))))) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))))))))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator 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))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator)))))))) value: (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier)))))) (goto_statement label: (statement_identifier)))))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier)))) (if_statement condition: (parenthesized_expression (identifier)) consequence: (compound_statement (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier)))))))) (goto_statement label: (statement_identifier)))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator)))))))) value: (subscript_expression argument: (identifier) index: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))))))) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (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: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal))) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (if_statement condition: (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: (number_literal))))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (pointer_expression argument: (identifier))) right: (number_literal))) right: (number_literal)))) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (binary_expression left: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (pointer_expression argument: (identifier))) right: (number_literal))) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator)))))))) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (number_literal)))) consequence: (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) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator)))))))) value: (number_literal)))) consequence: (goto_statement label: (statement_identifier))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (pointer_expression argument: (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: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator)))))))) value: (pointer_expression argument: (subscript_expression argument: (subscript_expression argument: (identifier) index: (number_literal)) index: (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (binary_expression left: (subscript_expression argument: (subscript_expression argument: (identifier) index: (number_literal)) index: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))) right: (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (goto_statement label: (statement_identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))))))) value: (number_literal)))) right: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))))))) value: (number_literal)))))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator)))))))) value: (number_literal)))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator)))))))) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (subscript_expression argument: (identifier) index: (number_literal))) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (subscript_expression argument: (identifier) index: (number_literal))) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier)))))) alternative: (else_clause (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator)))))))) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (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: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator)))))))) value: (subscript_expression argument: (subscript_expression argument: (identifier) index: (number_literal)) index: (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 declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator)))))))) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))))) (goto_statement label: (statement_identifier)))))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator)))))))) value: (call_expression function: (identifier) arguments: (argument_list (identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator)))))))) value: (number_literal)))) consequence: (goto_statement label: (statement_identifier))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator)))))))) value: (subscript_expression argument: (subscript_expression argument: (identifier) index: (number_literal)) index: (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 declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator)))))))) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))))) (labeled_statement label: (statement_identifier) (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) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (number_literal)))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator)))))))) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (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: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator)))))))) value: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))))))) value: (number_literal)))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))))) right: (binary_expression left: (identifier) right: (number_literal)))))) consequence: (goto_statement label: (statement_identifier)))))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator)))))))) value: (number_literal))))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (subscript_expression argument: (identifier) index: (number_literal)) index: (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 declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator)))))))) value: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (pointer_expression argument: (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: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator)))))))) value: (subscript_expression argument: (identifier) index: (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (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: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator)))))))) value: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator)))))))) value: (number_literal)))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator)))))))) value: (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (identifier)) right: (comma_expression left: (assignment_expression left: (identifier) right: (identifier)) right: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator)))))))) value: (number_literal)))))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (pointer_expression argument: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (identifier)) right: (comma_expression left: (assignment_expression left: (identifier) right: (identifier)) right: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (number_literal)))))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator)))))))) value: (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator)))))))) value: (subscript_expression argument: (identifier) index: (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator)))))))) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator)))))))) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (subscript_expression argument: (identifier) index: (number_literal))))))) (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) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (subscript_expression argument: (identifier) index: (number_literal))) right: (number_literal)))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))))))) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))))) (expression_statement (assignment_expression left: (subscript_expression argument: (subscript_expression argument: (identifier) index: (number_literal)) index: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))))))))) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal)))))))) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator)))))))) value: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))))))) value: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier)))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (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: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal)))))))) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal)))))))) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))))))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))))) (break_statement))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator)))))))) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator)))))))) value: (pointer_expression argument: (identifier))))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier))))) (if_statement condition: (parenthesized_expression (identifier)) consequence: (compound_statement (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier)))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (goto_statement label: (statement_identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (number_literal)))) consequence: (compound_statement (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list))) (if_statement condition: (parenthesized_expression (identifier)) consequence: (compound_statement (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal)))))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))))))))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator 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))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator)))))))) value: (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier)))))))))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier)))) (if_statement condition: (parenthesized_expression (identifier)) consequence: (compound_statement (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier))))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier))))) consequence: (compound_statement (return_statement (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list))) (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: (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: (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))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator 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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator 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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator 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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator 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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator 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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator 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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator 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: (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: (binary_expression left: (identifier) right: (number_literal)))) (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: (identifier) right: (number_literal))))) right: (identifier))) (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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (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)))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator)))))))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (identifier)))) (if_statement condition: (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: (number_literal))))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (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: (identifier) right: (number_literal))))) right: (number_literal)) right: (binary_expression left: (binary_expression left: (parenthesized_expression (identifier)) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))))))))))) arguments: (argument_list)))) (return_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: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) consequence: (compound_statement (return_statement (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))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list))) (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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (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))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator 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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator 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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator 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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator 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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator 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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator 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: (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: (binary_expression left: (identifier) right: (number_literal)))) (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: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator 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: (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: (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))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator)))))))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (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))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) right: (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: (primitive_type) declarator: (abstract_pointer_declarator)) value: (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))))))) (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: (identifier) right: (number_literal))))) 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: (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))))) right: (number_literal)))) (labeled_statement label: (statement_identifier) (do_statement body: (compound_statement (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (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: (number_literal))))) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (return_statement (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (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: (number_literal))))) right: (number_literal))))) consequence: (compound_statement (return_statement (identifier)))) (expression_statement (assignment_expression left: (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))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (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)))))) 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) (identifier) (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))))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (return_statement (number_literal)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))))) right: (number_literal)) (number_literal)))) (return_statement (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (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))))))) 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) (identifier) (number_literal)))))) condition: (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: (primitive_type) declarator: (abstract_pointer_declarator)) value: (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))))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (binary_expression left: (identifier) right: (number_literal)) (number_literal)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (binary_expression left: (identifier) right: (number_literal)) (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))))) (return_statement (identifier)))))

/* WARNING: Type propagation algorithm not settling */

int MASKED(undefined4 *param_1,int *******param_2,int *******param_3,int *******param_4,
                char param_5)

{
  bool bVar1;
  int iVar2;
  int iVar3;
  int *******pppppppiVar4;
  code *pcVar5;
  code *pcVar6;
  code *pcVar7;
  int *****pppppiVar8;
  int *******pppppppiVar9;
  int *piVar10;
  int *******pppppppiVar11;
  int ******ppppppiVar12;
  int iVar13;
  int iVar14;
  int *******pppppppiVar15;
  int ******ppppppiVar16;
  int *******pppppppiVar17;
  int *******pppppppiVar18;
  int *******pppppppiVar19;
  int *******unaff_s0;
  int *******unaff_s2;
  int iVar20;
  int ******unaff_s3;
  int iVar21;
  int **unaff_s5;
  int iVar22;
  int *******unaff_s6;
  int *piVar23;
  undefined *puVar24;
  undefined1 *puVar25;
  undefined1 *puVar26;
  undefined4 uVar27;
  undefined1 auStack_98 [24];
  int *******local_70;
  int *******local_48;
  int ******local_44;
  undefined4 local_40;
  undefined4 local_3c;
  int *local_38;
  undefined4 local_34;
  int local_30;
  int local_2c;
  
  puVar25 = auStack_98;
  puVar26 = auStack_98;
  local_2c = *(int *)PTR___stack_chk_guard_0003e348;
  piVar23 = (int *)*param_1;
  local_38 = (int *)0x0;
  local_34 = 2;
  local_30 = 0;
  pppppppiVar17 = param_2;
  pppppppiVar18 = param_3;
  pppppppiVar19 = param_4;
  if (param_5 == '\0') {
    unaff_s5 = (int **)0x0;
  }
  else {
    local_30 = (*(code *)PTR_malloc_0003e2f8)(0x30);
    if (local_30 == 0) {
      iVar13 = 0xc;
      goto LAB_00021ed8;
    }
    unaff_s5 = &local_38;
  }
  unaff_s0 = (int *******)piVar23[0x12];
  local_44 = (int ******)0x0;
  local_40 = 0;
  local_3c = 0;
  pppppppiVar15 = (int *******)((int)param_3 * 8);
  if (pppppppiVar15 < (int *******)0xfc0) {
    puVar25 = auStack_98 + (int)param_3 * -8;
    local_70 = (int *******)(&stack0xffffff80 + (int)param_3 * -8);
    bVar1 = false;
  }
  else {
    local_70 = (int *******)(*(code *)PTR_malloc_0003e2f8)(pppppppiVar15);
    bVar1 = true;
    if (local_70 == (int *******)0x0) {
      FUN_0001eb94(unaff_s5);
      iVar13 = 0xc;
      puVar26 = auStack_98;
      goto LAB_00021ed8;
    }
  }
  pppppppiVar17 = param_4;
  pppppppiVar18 = pppppppiVar15;
  (*(code *)PTR_memcpy_0003e34c)(local_70);
  local_48 = (int *******)*param_4;
  pcVar5 = (code *)(PTR_DAT_0003e238 + -0x10e8);
  pcVar6 = (code *)(PTR_DAT_0003e238 + -0x6f00);
  pcVar7 = (code *)(PTR_DAT_0003e238 + -0x589c);
  while (unaff_s2 = local_48, puVar24 = PTR_memcpy_0003e34c, puVar26 = puVar25,
        (int)local_48 <= (int)param_4[1]) {
    piVar10 = (int *)(*piVar23 + (int)unaff_s0 * 8);
    if (*(char *)(piVar10 + 1) == '\b') {
      iVar13 = *piVar10;
      if (iVar13 + 1 < (int)param_3) {
        param_4[(iVar13 + 1) * 2] = (int ******)local_48;
        (param_4 + (iVar13 + 1) * 2)[1] = (int ******)0xffffffff;
      }
LAB_00021cec:
      pppppppiVar11 = (int *******)param_4[1];
    }
    else {
      if ((*(char *)(piVar10 + 1) != '\t') || (iVar13 = *piVar10 + 1, (int)param_3 <= iVar13))
      goto LAB_00021cec;
      pppppppiVar17 = param_4 + iVar13 * 2;
      if ((int)*pppppppiVar17 < (int)local_48) {
        pppppppiVar17[1] = (int ******)local_48;
        pppppppiVar17 = param_4;
        pppppppiVar18 = pppppppiVar15;
        (*(code *)puVar24)(local_70);
        pppppppiVar11 = (int *******)param_4[1];
      }
      else {
        if (((piVar10[1] & 0x1000U) == 0) ||
           (pppppppiVar18 = pppppppiVar15, local_70[iVar13 * 2] == (int ******)0xffffffff)) {
          pppppppiVar17[1] = (int ******)local_48;
          goto LAB_00021cec;
        }
        pppppppiVar17 = local_70;
        (*(code *)PTR_memcpy_0003e34c)(param_4);
        pppppppiVar11 = (int *******)param_4[1];
      }
    }
    if ((pppppppiVar11 == unaff_s2) && ((int *******)param_2[0x18] == unaff_s0)) {
      if (unaff_s5 == (int **)0x0) {
        (*(code *)PTR_free_0003e354)(local_3c);
        if (bVar1) {
          (*(code *)PTR_free_0003e354)(local_70);
          iVar13 = 0;
        }
        else {
          iVar13 = 0;
        }
      }
      else {
        if (param_3 != (int *******)0x0) {
          pppppppiVar9 = (int *******)0x0;
          pppppppiVar18 = (int *******)0xffffffff;
          pppppppiVar11 = param_4;
          do {
            if ((-1 < (int)*pppppppiVar11) &&
               (pppppppiVar17 = (int *******)pppppppiVar11[1],
               (int *******)pppppppiVar11[1] == (int *******)0xffffffff)) break;
            pppppppiVar9 = (int *******)((int)pppppppiVar9 + 1);
            pppppppiVar11 = pppppppiVar11 + 2;
            pppppppiVar17 = param_3;
          } while (param_3 != pppppppiVar9);
          if (pppppppiVar9 != param_3) {
            *(int ********)(puVar25 + 0x10) = &local_44;
            pppppppiVar17 = (int *******)&local_48;
            pppppppiVar18 = param_3;
            pppppppiVar19 = param_4;
            unaff_s0 = (int *******)(*pcVar5)(unaff_s5);
            goto LAB_00021d04;
          }
        }
        (*(code *)PTR_free_0003e354)(local_3c);
        if (bVar1) {
          (*(code *)PTR_free_0003e354)(local_70);
        }
        iVar13 = FUN_0001eb94(unaff_s5);
      }
      goto LAB_00021ed8;
    }
LAB_00021d04:
    unaff_s2 = (int *******)param_2[0x15];
    unaff_s3 = (int ******)((int)unaff_s0 * 8);
    ppppppiVar12 = *unaff_s2 + (int)unaff_s0 * 2;
    if ((*(byte *)(ppppppiVar12 + 1) & 8) == 0) {
      if (((uint)ppppppiVar12[1] & 0x800) == 0) {
        if (*(byte *)(ppppppiVar12 + 1) == 4) {
          ppppppiVar16 = (param_4 + ((int)*ppppppiVar12 + 1) * 2)[1];
          ppppppiVar12 = param_4[((int)*ppppppiVar12 + 1) * 2];
          unaff_s6 = (int *******)((int)ppppppiVar16 - (int)ppppppiVar12);
          if (unaff_s5 == (int **)0x0) {
            pppppppiVar17 = unaff_s0;
            if (unaff_s6 != (int *******)0x0) goto LAB_00021da8;
LAB_00021dd0:
            pppppppiVar17 = unaff_s0;
            iVar13 = (*pcVar7)(&local_44);
            if (iVar13 == 0) goto LAB_00021b34;
            pppppppiVar11 = (int *******)*unaff_s2[5][(int)unaff_s0 * 3 + 2];
            pppppppiVar17 = pppppppiVar11;
            iVar13 = (*pcVar6)(param_2[0x19][(int)local_48] + 1);
            if (iVar13 != 0) goto LAB_00021ca8;
            goto LAB_00021c18;
          }
          if ((ppppppiVar12 != (int ******)0xffffffff) && (ppppppiVar16 != (int ******)0xffffffff))
          {
            if (unaff_s6 == (int *******)0x0) goto LAB_00021dd0;
            pppppppiVar17 = (int *******)((int)param_2[1] + (int)local_48);
            pppppppiVar18 = unaff_s6;
            iVar13 = (*(code *)PTR_memcmp_0003e338)((int)param_2[1] + (int)ppppppiVar12);
            if (iVar13 == 0) goto LAB_00021da8;
          }
        }
        else {
LAB_00021c18:
          unaff_s6 = local_48;
          pppppppiVar17 = (int *******)(*unaff_s2 + (int)unaff_s0 * 2);
          pppppppiVar18 = local_48;
          iVar13 = FUN_0001c4f8(param_2);
          if (iVar13 != 0) {
            pppppppiVar11 = (int *******)unaff_s2[3][(int)unaff_s0];
            local_48 = (int *******)((int)unaff_s6 + 1);
            goto LAB_00021c5c;
          }
        }
      }
      else {
        pppppppiVar17 = unaff_s0;
        pppppppiVar18 = param_2;
        pppppppiVar19 = local_48;
        unaff_s6 = (int *******)FUN_000200a0(unaff_s2);
        if (unaff_s6 == (int *******)0x0) goto LAB_00021c18;
LAB_00021da8:
        pppppppiVar11 = (int *******)unaff_s2[3][(int)unaff_s0];
        local_48 = (int *******)((int)unaff_s6 + (int)local_48);
LAB_00021c5c:
        unaff_s6 = local_48;
        if (unaff_s5 == (int **)0x0) {
LAB_00021ca4:
          local_40 = 0;
          goto LAB_00021ca8;
        }
        unaff_s6 = (int *******)((int)local_48 * 4);
        if ((int)local_48 <= (int)param_2[0x17]) {
          unaff_s6 = (int *******)(param_2[0x19] + (int)local_48);
          pppppppiVar17 = pppppppiVar11;
          if ((*unaff_s6 != (int ******)0x0) && (iVar13 = (*pcVar6)(*unaff_s6 + 1), iVar13 != 0))
          goto LAB_00021ca4;
        }
      }
LAB_00021f3c:
      unaff_s0 = (int *******)0xffffffff;
      goto LAB_00021f44;
    }
    pppppiVar8 = param_2[0x19][(int)local_48];
    unaff_s2 = (int *******)(unaff_s2[5] + (int)unaff_s0 * 3);
    pppppppiVar17 = unaff_s0;
    iVar13 = (*pcVar7)(&local_44);
    if (iVar13 == 0) goto LAB_00021b34;
    unaff_s6 = (int *******)unaff_s2[1];
    if ((int)unaff_s6 < 1) goto LAB_00021f3c;
    unaff_s3 = unaff_s2[2];
    unaff_s2 = (int *******)0x0;
    unaff_s0 = (int *******)0xffffffff;
    do {
      pppppppiVar9 = (int *******)*unaff_s3;
      pppppppiVar17 = pppppppiVar9;
      iVar13 = (*pcVar6)(pppppiVar8 + 1);
      pppppppiVar11 = unaff_s0;
      if ((iVar13 != 0) &&
         (pppppppiVar17 = unaff_s0, pppppppiVar11 = pppppppiVar9,
         unaff_s0 != (int *******)0xffffffff)) {
        iVar13 = (*pcVar6)(&local_44);
        pppppppiVar4 = local_48;
        if ((iVar13 == 0) &&
           (pppppppiVar11 = unaff_s0, unaff_s6 = local_48, unaff_s5 != (int **)0x0)) {
          unaff_s2 = (int *******)*unaff_s5;
          *unaff_s5 = (int *)((int)unaff_s2 + 1);
          pppppppiVar17 = (int *******)unaff_s5[1];
          if ((int *******)((int)unaff_s2 + 1) == pppppppiVar17) {
            pppppppiVar17 = (int *******)((int)pppppppiVar17 * 0x30);
            piVar10 = (int *)(*(code *)PTR_realloc_0003e2fc)(unaff_s5[2]);
            unaff_s6 = pppppppiVar4;
            if (piVar10 == (int *)0x0) goto LAB_00021b34;
            unaff_s5[1] = (int *)((int)unaff_s5[1] << 1);
            unaff_s5[2] = piVar10;
          }
          unaff_s3 = (int ******)((int)unaff_s2 * 0x18);
          unaff_s5[2][(int)unaff_s2 * 6] = (int)pppppppiVar4;
          *(int ********)((int)unaff_s3 + (int)(unaff_s5[2] + 1)) = pppppppiVar9;
          unaff_s2 = (int *******)(unaff_s5[2] + (int)unaff_s2 * 6);
          ppppppiVar12 = (int ******)(*(code *)PTR_malloc_0003e2f8)(pppppppiVar15);
          unaff_s2[2] = ppppppiVar12;
          pppppppiVar18 = pppppppiVar15;
          unaff_s6 = pppppppiVar15;
          if (*(int *)((int)unaff_s3 + (int)(unaff_s5[2] + 2)) == 0) goto LAB_00021b34;
          (*(code *)PTR_memcpy_0003e34c)(*(int *)((int)unaff_s3 + (int)(unaff_s5[2] + 2)),param_4);
          pppppppiVar17 = &local_44;
          iVar13 = FUN_0001b67c((int *)((int)unaff_s3 + (int)(unaff_s5[2] + 3)));
          if (iVar13 != 0) goto LAB_00021b34;
        }
        break;
      }
      unaff_s2 = (int *******)((int)unaff_s2 + 1);
      unaff_s3 = unaff_s3 + 1;
      unaff_s0 = pppppppiVar11;
    } while (unaff_s6 != unaff_s2);
LAB_00021ca8:
    unaff_s0 = pppppppiVar11;
    if ((int)pppppppiVar11 < 0) {
LAB_00021f44:
      if (unaff_s0 == (int *******)&SUB_fffffffe) {
LAB_00021b34:
        (*(code *)PTR_free_0003e354)(local_3c);
        if (bVar1) {
          (*(code *)PTR_free_0003e354)(local_70);
        }
        FUN_0001eb94(unaff_s5);
        iVar13 = 0xc;
        goto LAB_00021ed8;
      }
      if (unaff_s5 == (int **)0x0) {
        (*(code *)PTR_free_0003e354)();
        if (bVar1) {
          (*(code *)PTR_free_0003e354)(local_70);
          iVar13 = 1;
        }
        else {
          iVar13 = 1;
        }
        goto LAB_00021ed8;
      }
      *(int ********)(puVar25 + 0x10) = &local_44;
      pppppppiVar17 = (int *******)&local_48;
      pppppppiVar18 = param_3;
      pppppppiVar19 = param_4;
      unaff_s0 = (int *******)(*pcVar5)(unaff_s5);
    }
  }
  (*(code *)PTR_free_0003e354)(local_3c);
  if (bVar1) {
    (*(code *)PTR_free_0003e354)(local_70);
  }
  iVar13 = FUN_0001eb94(unaff_s5);
LAB_00021ed8:
  if (local_2c == *(int *)PTR___stack_chk_guard_0003e348) {
    return iVar13;
  }
  pcVar5 = FUN_00021f9c;
  iVar13 = local_2c;
  puVar24 = PTR___stack_chk_fail_0003e32c;
  (*(code *)PTR___stack_chk_fail_0003e32c)();
  *(code **)(puVar26 + -4) = pcVar5;
  *(undefined1 **)(puVar26 + -8) = auStack_98;
  *(int **)(puVar26 + -0xc) = piVar23;
  *(int ********)(puVar26 + -0x10) = unaff_s6;
  *(int ***)(puVar26 + -0x14) = unaff_s5;
  *(int ********)(puVar26 + -0x18) = param_4;
  *(int *******)(puVar26 + -0x1c) = unaff_s3;
  *(int ********)(puVar26 + -0x20) = unaff_s2;
  *(int ********)(puVar26 + -0x24) = param_2;
  *(int ********)(puVar26 + -0x28) = unaff_s0;
  *(undefined **)(puVar26 + -0xc0) = puVar24 + 0x24174;
  *(int *)(puVar26 + -0xac) = iVar13;
  uVar27 = *(undefined4 *)(puVar26 + 0x14);
  *(undefined4 *)(puVar26 + -0x2c) = **(undefined4 **)(puVar24 + 0x1c3ac);
  *(int *******)(puVar26 + -0xb8) = *pppppppiVar17;
  if (*(byte *)(pppppppiVar18 + 1) < 0x25) {
                    /* WARNING: Could not recover jumptable at 0x00022020. Too many branches */
                    /* WARNING: Treating indirect jump as call */
    iVar13 = (*(code *)(puVar24 + 0x24174 +
                       *(int *)(*(int *)(puVar24 + 0x1c1ac) + -0x2ac0 +
                               (uint)*(byte *)(pppppppiVar18 + 1) * 4)))();
    return iVar13;
  }
  iVar13 = *(int *)(puVar26 + -0x2c);
  if (iVar13 == **(int **)(puVar24 + 0x1c3ac)) {
    return 0;
  }
  pcVar5 = *(code **)(puVar24 + 0x1c390);
  pcVar6 = FUN_00023824;
  pppppppiVar15 = pppppppiVar17;
  (*pcVar5)();
  *(code **)(puVar26 + -0xe4) = pcVar6;
  *(undefined4 *)(puVar26 + -0xe8) = uVar27;
  *(int **)(puVar26 + -0xec) = piVar23;
  *(undefined4 *)(puVar26 + -0xf0) = 0;
  *(int ***)(puVar26 + -0xf4) = unaff_s5;
  *(int ********)(puVar26 + -0xf8) = param_4;
  *(int *******)(puVar26 + -0xfc) = unaff_s3;
  *(int ********)(puVar26 + -0x100) = unaff_s2;
  *(int ********)(puVar26 + -0x104) = param_2;
  *(int ********)(puVar26 + -0x108) = pppppppiVar17;
  *(code **)(puVar26 + -0x118) = pcVar5 + 0x228ec;
  *(int *)(puVar26 + -0xe0) = iVar13;
  *(int ********)(puVar26 + -0xd4) = pppppppiVar19;
  iVar21 = *(int *)(puVar26 + -0xd0);
  piVar23 = *(int **)(puVar26 + -0xcc);
  *(int *******)(puVar26 + -0x110) = *pppppppiVar15;
  *(int **)(puVar26 + -0x11c) = piVar23;
  *(int *)(puVar26 + -0x120) = iVar21;
  iVar13 = FUN_00021f9c();
  if ((*piVar23 == 0) || (iVar13 != 0)) {
    iVar22 = *(int *)(*(int *)(puVar26 + -0x118) + -0x7ed8);
    *(int *)(puVar26 + -0x10c) = *(int *)(*(int *)(puVar26 + -0x118) + -0x7ed8) + -0x5cb8;
LAB_0002390c:
    do {
      do {
        iVar20 = iVar13;
        if ((*(byte *)(pppppppiVar18 + 1) & 0xf7) == 2) {
          return iVar20;
        }
        if ((iVar21 != 0) && (*(byte *)(pppppppiVar18 + 1) == 9)) {
          return iVar20;
        }
        *(int **)(puVar26 + -0x11c) = piVar23;
        *(int *)(puVar26 + -0x120) = iVar21;
        iVar14 = (*(code *)(iVar22 + 0x1f9c))
                           (*(undefined4 *)(puVar26 + -0xe0),pppppppiVar15,pppppppiVar18,
                            *(undefined4 *)(puVar26 + -0xd4));
        if (*piVar23 == 0) {
          iVar13 = iVar14;
          iVar2 = iVar20;
          iVar3 = iVar14;
          if (iVar20 == 0) goto LAB_0002390c;
        }
        else {
          iVar2 = iVar14;
          iVar3 = iVar20;
          if (iVar14 == 0) {
            if (iVar20 == 0) {
              return 0;
            }
            FUN_0001920c(iVar20,*(int *)(*(int *)(puVar26 + -0x118) + -0x7ed8) + -0x2cc0,0);
            return 0;
          }
        }
        iVar13 = iVar2;
      } while (iVar3 == 0);
      iVar13 = (**(code **)(puVar26 + -0x10c))(*(undefined4 *)(puVar26 + -0x110),iVar20,iVar14,0x10)
      ;
    } while (iVar13 != 0);
    iVar13 = *(int *)(*(int *)(puVar26 + -0x118) + -0x7ed8);
    FUN_0001920c(iVar14,iVar13 + -0x2cc0,0);
    FUN_0001920c(iVar20,iVar13 + -0x2cc0,0);
    *piVar23 = 0xc;
    iVar13 = 0;
  }
  return iVar13;
}

