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

int check_eh_frame(expressionS *exp,uint *pnbytes)

{
  uint *puVar1;
  symbolS *psVar2;
  symbolS *psVar3;
  relax_substateT subtype;
  int iVar4;
  uint uVar5;
  char cVar6;
  frame_data *pfVar7;
  byte *pbVar8;
  uint uVar9;
  byte *pbVar10;
  byte *pbVar11;
  uint uVar12;
  int iVar13;
  bool bVar14;
  bool bVar15;
  bool bVar16;
  byte bVar17;
  addressT aVar18;
  fragS *opcode;
  uint local_5c;
  int local_58;
  uint local_54;
  int local_50;
  uint local_44;
  int local_40;
  uint local_3c;
  int local_38;
  char augmentation [10];
  
  bVar17 = 0;
  bVar14 = false;
  bVar16 = flag_traditional_format == 0;
  if (!bVar16) {
    return 0;
  }
  iVar4 = 9;
  pbVar10 = (byte *)now_seg->name;
  pbVar8 = pbVar10;
  pbVar11 = (byte *)".eh_frame";
  do {
    if (iVar4 == 0) break;
    iVar4 = iVar4 + -1;
    bVar14 = *pbVar8 < *pbVar11;
    bVar16 = *pbVar8 == *pbVar11;
    pbVar8 = pbVar8 + 1;
    pbVar11 = pbVar11 + 1;
  } while (bVar16);
  bVar15 = false;
  bVar14 = (!bVar14 && !bVar16) == bVar14;
  if (bVar14) {
    bVar15 = pbVar10[9] < 0x5f;
    bVar14 = pbVar10[9] == 0x5f;
    pfVar7 = &check_eh_frame::eh_frame_data;
    if (bVar14) goto LAB_0001fe74;
    if (check_eh_frame::eh_frame_data.state == state_idle) goto _L15;
  }
  else {
LAB_0001fe74:
    iVar4 = 0xc;
    pbVar8 = (byte *)".debug_frame";
    do {
      if (iVar4 == 0) break;
      iVar4 = iVar4 + -1;
      bVar15 = *pbVar10 < *pbVar8;
      bVar14 = *pbVar10 == *pbVar8;
      pbVar10 = pbVar10 + 1;
      pbVar8 = pbVar8 + 1;
    } while (bVar14);
    if ((!bVar15 && !bVar14) != bVar15) {
      return 0;
    }
    pfVar7 = &check_eh_frame::debug_frame_data;
    if (check_eh_frame::debug_frame_data.state == state_idle) goto _L15;
  }
  iVar4 = S_IS_DEFINED(pfVar7->size_end_sym);
  if (iVar4 != 0) {
    pfVar7->state = state_idle;
_L15:
    if ((*pnbytes == 4) &&
       (((exp->field_0x10 == '\x03' || (exp->field_0x10 == '\x14')) &&
        (iVar4 = S_IS_DEFINED(exp->X_add_symbol), iVar4 == 0)))) {
      pfVar7->state = state_saw_size;
      pfVar7->size_end_sym = exp->X_add_symbol;
      return 0;
    }
    return 0;
  }
  switch(pfVar7->state) {
  case state_idle:
    goto _L15;
  case state_saw_size:
  case state_saw_cie_offset:
    pfVar7->state = pfVar7->state + state_saw_size;
    return 0;
  case state_saw_pc_begin:
    break;
  case state_seeing_aug_size:
    if (*pnbytes == 0xffffffff) {
      if (exp->field_0x10 != '\x02') goto LAB_0001ffb8;
      local_54 = (uint)exp->X_add_number;
      pfVar7->state = state_skipping_aug;
      pfVar7->aug_size = local_54;
    }
    else {
      if ((*pnbytes != 1) || (exp->field_0x10 != '\x02')) {
LAB_0001ffb8:
        pfVar7->state = state_error;
        return 0;
      }
      uVar5 = (uint)exp->X_add_number;
      local_54 = (uVar5 & 0x7f) << ((byte)pfVar7->aug_shift & 0x1f) | pfVar7->aug_size;
      pfVar7->aug_size = local_54;
      pfVar7->aug_shift = pfVar7->aug_shift + 7;
      if ((char)uVar5 < '\0') {
        return 0;
      }
      pfVar7->state = state_skipping_aug;
    }
    if (local_54 != 0) {
      return 0;
    }
    pfVar7->state = state_wait_loc4;
    return 0;
  case state_skipping_aug:
    if ((int)*pnbytes < 0) {
LAB_0001ff8e:
      pfVar7->state = state_error;
      return 0;
    }
    iVar4 = pfVar7->aug_size - *pnbytes;
    pfVar7->aug_size = iVar4;
    if (iVar4 != 0) {
      if (-1 < iVar4) {
        return 0;
      }
      goto LAB_0001ff8e;
    }
    goto LAB_00020108;
  case state_wait_loc4:
    if (*pnbytes != 1) {
      return 0;
    }
    if (exp->field_0x10 != '\x02') {
      return 0;
    }
    if ((int)exp->X_add_number != 4 || *(int *)((int)&exp->X_add_number + 4) != 0) {
      return 0;
    }
    frag_grow(1);
    pfVar7->state = state_saw_loc4;
    pfVar7->loc4_frag = frag_now;
    aVar18 = frag_now_fix();
    pfVar7->loc4_fix = (int)aVar18;
    return 0;
  case state_saw_loc4:
    pfVar7->state = state_wait_loc4;
    if (*pnbytes != 4) {
      return 0;
    }
    cVar6 = exp->field_0x10;
    if (cVar6 == '\x02') {
      uVar5 = (uint)exp->X_add_number;
      iVar4 = *(int *)((int)&exp->X_add_number + 4);
      if ((int)(uint)(0x3f < uVar5) <= -iVar4) {
        pfVar7->loc4_frag->fr_literal[pfVar7->loc4_fix] = (byte)uVar5 | 0x40;
        return 1;
      }
      if (-iVar4 < (int)(uint)(0xff < uVar5)) {
        if (-iVar4 < (int)(uint)(0xffff < uVar5)) {
          return 0;
        }
        pfVar7->loc4_frag->fr_literal[pfVar7->loc4_fix] = '\x03';
        *pnbytes = 2;
        return 0;
      }
      pfVar7->loc4_frag->fr_literal[pfVar7->loc4_fix] = '\x02';
      *pnbytes = 1;
      return 0;
    }
    if (cVar6 == '\x14') {
      if ((pfVar7->cie_info).code_alignment != 1) {
        return 0;
      }
      opcode = pfVar7->loc4_frag;
      iVar4 = pfVar7->loc4_fix;
      psVar3 = make_expr_symbol(exp);
      subtype = 8;
    }
    else {
      if ((cVar6 != '\v') && (cVar6 != '\x0e')) {
        return 0;
      }
      uVar5 = (pfVar7->cie_info).code_alignment;
      if (uVar5 < 2) {
        return 0;
      }
      psVar3 = exp->X_add_symbol;
      if (psVar3->bsym == (asymbol *)0x0) {
        return 0;
      }
      psVar2 = exp->X_op_symbol;
      if (psVar2->bsym == (asymbol *)0x0) {
        return 0;
      }
      if ((psVar3->sy_value).field_0x10 != '\x14') {
        return 0;
      }
      if ((psVar2->sy_value).field_0x10 != '\x02') {
        return 0;
      }
      iVar4 = *(int *)((int)&(psVar2->sy_value).X_add_number + 4);
      uVar9 = (uint)(psVar2->sy_value).X_add_number;
      if (cVar6 != '\v') {
        uVar12 = uVar9 >> 5 & 1;
        iVar4 = uVar12 << ((byte)uVar9 & 0x1f);
        uVar9 = (uVar12 ^ 1) << ((byte)uVar9 & 0x1f);
      }
      if (iVar4 != 0) {
        return 0;
      }
      if (uVar5 != uVar9) {
        return 0;
      }
      opcode = pfVar7->loc4_frag;
      iVar4 = pfVar7->loc4_fix;
      psVar3 = make_expr_symbol(&psVar3->sy_value);
      subtype = (pfVar7->cie_info).code_alignment << 3;
    }
    frag_var(rs_cfa,4,0,subtype,psVar3,(longlong)iVar4,(char *)opcode);
    return 1;
  default:
    return 0;
  }
  if (pfVar7->cie_info_ok != 0) goto LAB_0001ffd7;
                    /* WARNING: Load size is inaccurate */
  local_50 = **now_seg->userdata;
  if (local_50 != 0) {
    uVar5 = *(uint *)(local_50 + 0x10);
    iVar4 = *(int *)(local_50 + 0x14);
    if (-iVar4 < (int)(uint)(4 < uVar5)) {
      local_5c = 4;
      iVar13 = 0;
    }
    else {
      local_5c = 4;
      do {
        local_50 = *(int *)(local_50 + 0x30);
        local_5c = local_5c - uVar5;
        if (local_50 == 0) goto LAB_00020226;
        uVar5 = *(uint *)(local_50 + 0x10);
        iVar4 = *(int *)(local_50 + 0x14);
        iVar13 = (int)local_5c >> 0x1f;
      } while ((SBORROW4(iVar13,iVar4) != SBORROW4(iVar13 - iVar4,(uint)(local_5c < uVar5))) ==
               (int)((iVar13 - iVar4) - (uint)(local_5c < uVar5)) < 0);
    }
    iVar4 = (iVar4 - iVar13) - (uint)(uVar5 < local_5c);
    uVar5 = (uint)(3 < uVar5 - local_5c);
    bVar14 = iVar4 != 0 || (uint)-iVar4 < uVar5;
    bVar16 = -uVar5 == iVar4;
    if (-iVar4 < (int)uVar5) {
      iVar4 = 0xc;
      pbVar10 = (byte *)now_seg->name;
      pbVar8 = (byte *)".debug_frame";
      do {
        if (iVar4 == 0) break;
        iVar4 = iVar4 + -1;
        bVar14 = *pbVar10 < *pbVar8;
        bVar16 = *pbVar10 == *pbVar8;
        pbVar10 = pbVar10 + (uint)bVar17 * -2 + 1;
        pbVar8 = pbVar8 + (uint)bVar17 * -2 + 1;
      } while (bVar16);
      cVar6 = -((!bVar14 && !bVar16) == bVar14);
      if ((((*(char *)(local_50 + 0x68 + local_5c) == cVar6) &&
           (*(char *)(local_50 + 0x69 + local_5c) == cVar6)) &&
          (*(char *)(local_50 + 0x6a + local_5c) == cVar6)) &&
         (*(char *)(local_50 + 0x6b + local_5c) == cVar6)) {
        local_5c = local_5c + 4;
        do {
          iVar4 = (int)local_5c >> 0x1f;
          local_40 = *(int *)(local_50 + 0x14);
          local_44 = *(uint *)(local_50 + 0x10);
          if ((SBORROW4(iVar4,local_40) != SBORROW4(iVar4 - local_40,(uint)(local_5c < local_44)))
              != (int)((iVar4 - local_40) - (uint)(local_5c < local_44)) < 0) {
            if (((int)(uint)(local_44 != local_5c) <=
                 (int)-((local_40 - iVar4) - (uint)(local_44 < local_5c))) ||
               (*(char *)(local_50 + 0x68 + local_5c) != '\x01')) goto LAB_00020226;
            uVar5 = local_5c + 1;
            local_38 = 0;
            iVar4 = (*now_seg->userdata)[4];
            goto LAB_0002044e;
          }
          local_5c = local_5c - local_44;
          local_50 = *(int *)(local_50 + 0x30);
        } while (local_50 != 0);
        pfVar7->cie_info_ok = 0;
        goto LAB_0002022d;
      }
    }
  }
  goto LAB_00020226;
LAB_0002044e:
  local_58 = (int)uVar5 >> 0x1f;
  if ((SBORROW4(local_58,local_40) != SBORROW4(local_58 - local_40,(uint)(uVar5 < local_44))) !=
      (int)((local_58 - local_40) - (uint)(uVar5 < local_44)) < 0) {
    cVar6 = *(char *)(local_50 + 0x68 + uVar5);
    if (cVar6 == '\0') {
LAB_00020509:
      uVar5 = uVar5 + 1;
      goto LAB_00020523;
    }
    local_5c = uVar5;
    while( true ) {
      if (local_38 < 9) {
        augmentation[local_38] = cVar6;
        local_38 = local_38 + 1;
      }
      uVar5 = uVar5 + 1;
      if (local_58 == local_40 + -1 + (uint)(local_44 != 0) && local_5c == local_44 - 1) break;
      bVar14 = 0xfffffffe < local_5c;
      local_5c = local_5c + 1;
      local_58 = local_58 + (uint)bVar14;
      cVar6 = *(char *)(local_50 + 0x68 + uVar5);
      if (cVar6 == '\0') goto LAB_00020509;
    }
    goto LAB_0002044e;
  }
  local_50 = *(int *)(local_50 + 0x30);
  if (local_50 == 0) goto LAB_00020226;
  local_40 = *(int *)(local_50 + 0x14);
  uVar5 = uVar5 - local_44;
  local_44 = *(uint *)(local_50 + 0x10);
  goto LAB_0002044e;
  while( true ) {
    local_50 = *(int *)(local_50 + 0x30);
    uVar5 = uVar5 - *puVar1;
    if (local_50 == 0) break;
LAB_00020523:
    puVar1 = (uint *)(local_50 + 0x10);
    uVar9 = (uint)(uVar5 < *puVar1);
    iVar13 = ((int)uVar5 >> 0x1f) - *(int *)(local_50 + 0x14);
    if ((SBORROW4((int)uVar5 >> 0x1f,*(int *)(local_50 + 0x14)) != SBORROW4(iVar13,uVar9)) !=
        (int)(iVar13 - uVar9) < 0) {
      augmentation[local_38] = '\0';
      if (augmentation[0] == '\0') goto LAB_000205bb;
      iVar13 = strcmp(augmentation,"eh");
      if (iVar13 == 0) goto LAB_00020575;
      if (augmentation[0] == 'z') goto LAB_000205bb;
      break;
    }
  }
  goto LAB_00020226;
LAB_00020575:
  if (iVar4 == 0) goto LAB_00020600;
  if ((*(int *)(iVar4 + 4) == local_50) && (*(uint *)(iVar4 + 8) == uVar5)) {
    uVar5 = uVar5 + *(byte *)(iVar4 + 2);
    goto LAB_000205a6;
  }
  iVar4 = *(int *)(iVar4 + 0x28);
  goto LAB_00020575;
LAB_000205bb:
  cVar6 = *(char *)(local_50 + 0x68 + uVar5);
  local_3c = 0;
  if (-1 < cVar6) {
    local_3c = (int)cVar6;
  }
  pfVar7->cie_info_ok = 1;
  (pfVar7->cie_info).code_alignment = local_3c;
  (pfVar7->cie_info).z_augmentation = (uint)(augmentation[0] == 'z');
LAB_0001ffd7:
  if ((pfVar7->cie_info).z_augmentation != 0) {
    pfVar7->state = state_seeing_aug_size;
    pfVar7->aug_size = 0;
    pfVar7->aug_shift = 0;
    return 0;
  }
LAB_00020108:
  pfVar7->state = state_wait_loc4;
  return 0;
LAB_00020600:
  uVar5 = uVar5 + 4;
LAB_000205a6:
  do {
    puVar1 = (uint *)(local_50 + 0x10);
    uVar9 = (uint)(uVar5 < *puVar1);
    iVar4 = ((int)uVar5 >> 0x1f) - *(int *)(local_50 + 0x14);
    if ((SBORROW4((int)uVar5 >> 0x1f,*(int *)(local_50 + 0x14)) != SBORROW4(iVar4,uVar9)) !=
        (int)(iVar4 - uVar9) < 0) goto LAB_000205bb;
    local_50 = *(int *)(local_50 + 0x30);
    uVar5 = uVar5 - *puVar1;
  } while (local_50 != 0);
LAB_00020226:
  pfVar7->cie_info_ok = 0;
LAB_0002022d:
  pfVar7->state = state_error;
  return 0;
}



/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* WARNING: Type propagation algorithm not settling */

undefined4 FUN_0001fe30(int *param_1,int *param_2)

{
  uint *puVar1;
  undefined4 uVar2;
  int iVar3;
  int iVar4;
  char cVar5;
  int *piVar6;
  byte *pbVar7;
  uint uVar8;
  byte *pbVar9;
  byte *pbVar10;
  uint uVar11;
  int iVar12;
  bool bVar13;
  bool bVar14;
  bool bVar15;
  byte bVar16;
  uint local_5c;
  int iStack_58;
  uint local_54;
  int iStack_50;
  uint uStack_44;
  int iStack_40;
  int iStack_3c;
  int iStack_38;
  char acStack_26 [18];
  undefined4 uStack_14;
  
  bVar16 = 0;
  uStack_14 = 0x1fe39;
  bVar13 = false;
  bVar15 = DAT_000897dc == 0;
  if (!bVar15) {
    return 0;
  }
  iVar4 = 9;
  pbVar9 = (byte *)*DAT_0008973c;
  pbVar7 = pbVar9;
  pbVar10 = (byte *)".eh_frame";
  do {
    if (iVar4 == 0) break;
    iVar4 = iVar4 + -1;
    bVar13 = *pbVar7 < *pbVar10;
    bVar15 = *pbVar7 == *pbVar10;
    pbVar7 = pbVar7 + 1;
    pbVar10 = pbVar10 + 1;
  } while (bVar15);
  bVar14 = false;
  bVar13 = (!bVar13 && !bVar15) == bVar13;
  if (bVar13) {
    bVar14 = pbVar9[9] < 0x5f;
    bVar13 = pbVar9[9] == 0x5f;
    piVar6 = &DAT_000889e0;
    if (bVar13) goto LAB_0001fe74;
    if (DAT_000889e0 == 0) goto LAB_0001fe99;
  }
  else {
LAB_0001fe74:
    iVar4 = 0xc;
    pbVar7 = (byte *)".debug_frame";
    do {
      if (iVar4 == 0) break;
      iVar4 = iVar4 + -1;
      bVar14 = *pbVar9 < *pbVar7;
      bVar13 = *pbVar9 == *pbVar7;
      pbVar9 = pbVar9 + 1;
      pbVar7 = pbVar7 + 1;
    } while (bVar13);
    if ((!bVar14 && !bVar13) != bVar14) {
      return 0;
    }
    piVar6 = &DAT_000889a0;
    if (DAT_000889a0 == 0) goto LAB_0001fe99;
  }
  iVar4 = FUN_000386c0(piVar6[4]);
  if (iVar4 != 0) {
    *piVar6 = 0;
LAB_0001fe99:
    if ((*param_2 == 4) &&
       ((((char)param_1[4] == '\x03' || ((char)param_1[4] == '\x14')) &&
        (iVar4 = FUN_000386c0(*param_1), iVar4 == 0)))) {
      *piVar6 = 1;
      piVar6[4] = *param_1;
      return 0;
    }
    return 0;
  }
  switch(*piVar6) {
  case 0:
    goto LAB_0001fe99;
  case 1:
  case 2:
    *piVar6 = *piVar6 + 1;
    return 0;
  case 3:
    break;
  case 4:
    if (*param_2 == -1) {
      if ((char)param_1[4] != '\x02') goto code_r0x0001ffb8;
      local_54 = param_1[2];
      *piVar6 = 5;
      piVar6[7] = local_54;
    }
    else {
      if ((*param_2 != 1) || ((char)param_1[4] != '\x02')) {
code_r0x0001ffb8:
        *piVar6 = 8;
        return 0;
      }
      uVar8 = param_1[2];
      local_54 = (uVar8 & 0x7f) << ((byte)piVar6[8] & 0x1f) | piVar6[7];
      piVar6[7] = local_54;
      piVar6[8] = piVar6[8] + 7;
      if ((char)uVar8 < '\0') {
        return 0;
      }
      *piVar6 = 5;
    }
    if (local_54 != 0) {
      return 0;
    }
    *piVar6 = 6;
    return 0;
  case 5:
    if (*param_2 < 0) {
code_r0x0001ff8e:
      *piVar6 = 8;
      return 0;
    }
    iVar4 = piVar6[7] - *param_2;
    piVar6[7] = iVar4;
    if (iVar4 != 0) {
      if (-1 < iVar4) {
        return 0;
      }
      goto code_r0x0001ff8e;
    }
    goto code_r0x00020108;
  case 6:
    if (*param_2 != 1) {
      return 0;
    }
    if ((char)param_1[4] != '\x02') {
      return 0;
    }
    if (param_1[2] != 4 || param_1[3] != 0) {
      return 0;
    }
    FUN_000249b0(1);
    *piVar6 = 7;
    piVar6[5] = DAT_000898a0;
    iVar4 = FUN_00024dc0();
    piVar6[6] = iVar4;
    return 0;
  case 7:
    *piVar6 = 6;
    if (*param_2 != 4) {
      return 0;
    }
    cVar5 = (char)param_1[4];
    if (cVar5 == '\x02') {
      uVar8 = param_1[2];
      iVar4 = param_1[3];
      if ((int)(uint)(0x3f < uVar8) <= -iVar4) {
        *(byte *)(piVar6[5] + 0x68 + piVar6[6]) = (byte)uVar8 | 0x40;
        return 1;
      }
      if (-iVar4 < (int)(uint)(0xff < uVar8)) {
        if (-iVar4 < (int)(uint)(0xffff < uVar8)) {
          return 0;
        }
        *(undefined1 *)(piVar6[5] + 0x68 + piVar6[6]) = 3;
        *param_2 = 2;
        return 0;
      }
      *(undefined1 *)(piVar6[5] + 0x68 + piVar6[6]) = 2;
      *param_2 = 1;
      return 0;
    }
    if (cVar5 == '\x14') {
      if (piVar6[2] != 1) {
        return 0;
      }
      iVar4 = piVar6[5];
      iVar12 = piVar6[6];
      uVar2 = FUN_00021220(param_1);
      iVar3 = 8;
    }
    else {
      if ((cVar5 != '\v') && (cVar5 != '\x0e')) {
        return 0;
      }
      if ((uint)piVar6[2] < 2) {
        return 0;
      }
      iVar3 = *param_1;
      if (*(int *)(iVar3 + 4) == 0) {
        return 0;
      }
      iVar4 = param_1[1];
      if (*(int *)(iVar4 + 4) == 0) {
        return 0;
      }
      if (*(char *)(iVar3 + 0x18) != '\x14') {
        return 0;
      }
      if (*(char *)(iVar4 + 0x18) != '\x02') {
        return 0;
      }
      iVar12 = *(int *)(iVar4 + 0x14);
      uVar8 = *(uint *)(iVar4 + 0x10);
      if (cVar5 != '\v') {
        uVar11 = uVar8 >> 5 & 1;
        iVar12 = uVar11 << ((byte)uVar8 & 0x1f);
        uVar8 = (uVar11 ^ 1) << ((byte)uVar8 & 0x1f);
      }
      if (iVar12 != 0) {
        return 0;
      }
      if (piVar6[2] != uVar8) {
        return 0;
      }
      iVar4 = piVar6[5];
      iVar12 = piVar6[6];
      uVar2 = FUN_00021220(iVar3 + 8);
      iVar3 = piVar6[2] << 3;
    }
    FUN_00024b60(0xc,4,0,iVar3,uVar2,iVar12,iVar12 >> 0x1f,iVar4);
    return 1;
  default:
    return 0;
  }
  if (piVar6[1] != 0) goto code_r0x0001ffd7;
  iStack_50 = **(int **)DAT_0008973c[0x20];
  if (iStack_50 != 0) {
    uVar8 = *(uint *)(iStack_50 + 0x10);
    iVar4 = *(int *)(iStack_50 + 0x14);
    if (-iVar4 < (int)(uint)(4 < uVar8)) {
      local_5c = 4;
      iVar12 = 0;
    }
    else {
      local_5c = 4;
      do {
        iStack_50 = *(int *)(iStack_50 + 0x30);
        local_5c = local_5c - uVar8;
        if (iStack_50 == 0) goto code_r0x00020226;
        uVar8 = *(uint *)(iStack_50 + 0x10);
        iVar4 = *(int *)(iStack_50 + 0x14);
        iVar12 = (int)local_5c >> 0x1f;
      } while ((SBORROW4(iVar12,iVar4) != SBORROW4(iVar12 - iVar4,(uint)(local_5c < uVar8))) ==
               (int)((iVar12 - iVar4) - (uint)(local_5c < uVar8)) < 0);
    }
    iVar4 = (iVar4 - iVar12) - (uint)(uVar8 < local_5c);
    uVar8 = (uint)(3 < uVar8 - local_5c);
    bVar13 = iVar4 != 0 || (uint)-iVar4 < uVar8;
    bVar15 = -uVar8 == iVar4;
    if (-iVar4 < (int)uVar8) {
      iVar4 = 0xc;
      pbVar9 = (byte *)*DAT_0008973c;
      pbVar7 = (byte *)".debug_frame";
      do {
        if (iVar4 == 0) break;
        iVar4 = iVar4 + -1;
        bVar13 = *pbVar9 < *pbVar7;
        bVar15 = *pbVar9 == *pbVar7;
        pbVar9 = pbVar9 + (uint)bVar16 * -2 + 1;
        pbVar7 = pbVar7 + (uint)bVar16 * -2 + 1;
      } while (bVar15);
      cVar5 = -((!bVar13 && !bVar15) == bVar13);
      if ((((*(char *)(iStack_50 + 0x68 + local_5c) == cVar5) &&
           (*(char *)(iStack_50 + 0x69 + local_5c) == cVar5)) &&
          (*(char *)(iStack_50 + 0x6a + local_5c) == cVar5)) &&
         (*(char *)(iStack_50 + 0x6b + local_5c) == cVar5)) {
        local_5c = local_5c + 4;
        do {
          iVar4 = (int)local_5c >> 0x1f;
          iStack_40 = *(int *)(iStack_50 + 0x14);
          uStack_44 = *(uint *)(iStack_50 + 0x10);
          if ((SBORROW4(iVar4,iStack_40) != SBORROW4(iVar4 - iStack_40,(uint)(local_5c < uStack_44))
              ) != (int)((iVar4 - iStack_40) - (uint)(local_5c < uStack_44)) < 0) {
            if (((int)(uint)(uStack_44 != local_5c) <=
                 (int)-((iStack_40 - iVar4) - (uint)(uStack_44 < local_5c))) ||
               (*(char *)(iStack_50 + 0x68 + local_5c) != '\x01')) goto code_r0x00020226;
            uVar8 = local_5c + 1;
            iStack_38 = 0;
            iVar4 = (*(int **)DAT_0008973c[0x20])[4];
            goto code_r0x0002044e;
          }
          local_5c = local_5c - uStack_44;
          iStack_50 = *(int *)(iStack_50 + 0x30);
        } while (iStack_50 != 0);
        piVar6[1] = 0;
        goto code_r0x0002022d;
      }
    }
  }
  goto code_r0x00020226;
code_r0x0002044e:
  iStack_58 = (int)uVar8 >> 0x1f;
  if ((SBORROW4(iStack_58,iStack_40) != SBORROW4(iStack_58 - iStack_40,(uint)(uVar8 < uStack_44)))
      != (int)((iStack_58 - iStack_40) - (uint)(uVar8 < uStack_44)) < 0) {
    cVar5 = *(char *)(iStack_50 + 0x68 + uVar8);
    if (cVar5 == '\0') {
code_r0x00020509:
      uVar8 = uVar8 + 1;
      goto code_r0x00020523;
    }
    local_5c = uVar8;
    while( true ) {
      if (iStack_38 < 9) {
        acStack_26[iStack_38] = cVar5;
        iStack_38 = iStack_38 + 1;
      }
      uVar8 = uVar8 + 1;
      if (iStack_58 == iStack_40 + -1 + (uint)(uStack_44 != 0) && local_5c == uStack_44 - 1) break;
      bVar13 = 0xfffffffe < local_5c;
      local_5c = local_5c + 1;
      iStack_58 = iStack_58 + (uint)bVar13;
      cVar5 = *(char *)(iStack_50 + 0x68 + uVar8);
      if (cVar5 == '\0') goto code_r0x00020509;
    }
    goto code_r0x0002044e;
  }
  iStack_50 = *(int *)(iStack_50 + 0x30);
  if (iStack_50 == 0) goto code_r0x00020226;
  iStack_40 = *(int *)(iStack_50 + 0x14);
  uVar8 = uVar8 - uStack_44;
  uStack_44 = *(uint *)(iStack_50 + 0x10);
  goto code_r0x0002044e;
  while( true ) {
    iStack_50 = *(int *)(iStack_50 + 0x30);
    uVar8 = uVar8 - *puVar1;
    if (iStack_50 == 0) break;
code_r0x00020523:
    puVar1 = (uint *)(iStack_50 + 0x10);
    uVar11 = (uint)(uVar8 < *puVar1);
    iVar12 = ((int)uVar8 >> 0x1f) - *(int *)(iStack_50 + 0x14);
    if ((SBORROW4((int)uVar8 >> 0x1f,*(int *)(iStack_50 + 0x14)) != SBORROW4(iVar12,uVar11)) !=
        (int)(iVar12 - uVar11) < 0) {
      acStack_26[iStack_38] = '\0';
      if (acStack_26[0] == '\0') goto code_r0x000205bb;
      iVar12 = strcmp(acStack_26,"eh");
      if (iVar12 == 0) goto code_r0x00020575;
      if (acStack_26[0] == 'z') goto code_r0x000205bb;
      break;
    }
  }
  goto code_r0x00020226;
code_r0x00020575:
  if (iVar4 == 0) goto code_r0x00020600;
  if ((*(int *)(iVar4 + 4) == iStack_50) && (*(uint *)(iVar4 + 8) == uVar8)) {
    uVar8 = uVar8 + *(byte *)(iVar4 + 2);
    goto code_r0x000205a6;
  }
  iVar4 = *(int *)(iVar4 + 0x28);
  goto code_r0x00020575;
code_r0x000205bb:
  cVar5 = *(char *)(iStack_50 + 0x68 + uVar8);
  iStack_3c = 0;
  if (-1 < cVar5) {
    iStack_3c = (int)cVar5;
  }
  piVar6[1] = 1;
  piVar6[2] = iStack_3c;
  piVar6[3] = (uint)(acStack_26[0] == 'z');
code_r0x0001ffd7:
  if (piVar6[3] != 0) {
    *piVar6 = 4;
    piVar6[7] = 0;
    piVar6[8] = 0;
    return 0;
  }
code_r0x00020108:
  *piVar6 = 6;
  return 0;
code_r0x00020600:
  uVar8 = uVar8 + 4;
code_r0x000205a6:
  do {
    puVar1 = (uint *)(iStack_50 + 0x10);
    uVar11 = (uint)(uVar8 < *puVar1);
    iVar4 = ((int)uVar8 >> 0x1f) - *(int *)(iStack_50 + 0x14);
    if ((SBORROW4((int)uVar8 >> 0x1f,*(int *)(iStack_50 + 0x14)) != SBORROW4(iVar4,uVar11)) !=
        (int)(iVar4 - uVar11) < 0) goto code_r0x000205bb;
    iStack_50 = *(int *)(iStack_50 + 0x30);
    uVar8 = uVar8 - *puVar1;
  } while (iStack_50 != 0);
code_r0x00020226:
  piVar6[1] = 0;
code_r0x0002022d:
  *piVar6 = 8;
  return 0;
}


PUSH EBP
PUSH EDI
PUSH ESI
PUSH EBX
CALL 0x00016000
ADD EBX,0x601c7
SUB ESP,0x4c
LEA EAX,[EBX + 0x97dc]
MOV EAX,dword ptr [EAX]
TEST EAX,EAX
JNZ 0x0001feb0
LEA EAX,[EBX + 0x973c]
MOV ECX,0x9
LEA EDI,[EBX + 0xfffdd7ec]
MOV dword ptr [ESP],EAX
MOV EAX,dword ptr [EAX]
MOV EAX,dword ptr [EAX]
MOV ESI,EAX
CMPSB.REPE ES:EDI,ESI
SETA DL
SBB DL,0x0
TEST DL,DL
JZ 0x0001fec8
MOV ESI,EAX
MOV ECX,0xc
LEA EDI,[EBX + 0xfffdd7f6]
CMPSB.REPE ES:EDI,ESI
SETA AL
SBB AL,0x0
TEST AL,AL
JNZ 0x0001feb0
LEA EBP,[EBX + 0x89a0]
MOV EAX,dword ptr [EBP]
TEST EAX,EAX
JNZ 0x0001fedb
MOV EAX,dword ptr [ESP + 0x64]
CMP dword ptr [EAX],0x4
JZ 0x00020160
LEA ESI,[ESI]
LEA ESI,[ESI]
MOV dword ptr [ESP + 0x8],0x0
MOV EAX,dword ptr [ESP + 0x8]
ADD ESP,0x4c
POP EBX
POP ESI
POP EDI
POP EBP
RET
CMP byte ptr [EAX + 0x9],0x5f
LEA EBP,[EBX + 0x89e0]
JZ 0x0001fe74
MOV EAX,dword ptr [EBP]
TEST EAX,EAX
JZ 0x0001fe99
SUB ESP,0xc
PUSH dword ptr [EBP + 0x10]
CALL 0x000386c0
MOV dword ptr [ESP + 0x18],EAX
ADD ESP,0x10
TEST EAX,EAX
JZ 0x0001ff00
MOV dword ptr [EBP],0x0
JMP 0x0001fe99
MOV EAX,dword ptr [EBP]
CMP EAX,0x7
JA 0x0001feb8
MOV EDX,dword ptr [EBX + EAX*0x4 + 0xfffdda60]
ADD EDX,EBX
JMP EDX
MOV EAX,dword ptr [ESP + 0x60]
MOVZX EAX,byte ptr [EAX + 0x10]
CMP AL,0x3
JZ 0x00020174
CMP AL,0x14
JNZ 0x0001feb0
SUB ESP,0xc
MOV EAX,dword ptr [ESP + 0x6c]
PUSH dword ptr [EAX]
CALL 0x000386c0
MOV dword ptr [ESP + 0x18],EAX
ADD ESP,0x10
TEST EAX,EAX
JNZ 0x0001feb0
MOV EAX,dword ptr [ESP + 0x60]
MOV dword ptr [EBP],0x1
MOV EAX,dword ptr [EAX]
MOV dword ptr [EBP + 0x10],EAX
JMP 0x0001feb8
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n/* WARNING: Type propagation algorithm not settling */\n\nundefined4 FUN_0001fe30(int *param_1,int *param_2)\n\n{\n  uint *puVar1;\n  undefined4 uVar2;\n  int iVar3;\n  int iVar4;\n  char cVar5;\n  int *piVar6;\n  byte *pbVar7;\n  uint uVar8;\n  byte *pbVar9;\n  byte *pbVar10;\n  uint uVar11;\n  int iVar12;\n  bool bVar13;\n  bool bVar14;\n  bool bVar15;\n  byte bVar16;\n  uint local_5c;\n  int iStack_58;\n  uint local_54;\n  int iStack_50;\n  uint uStack_44;\n  int iStack_40;\n  int iStack_3c;\n  int iStack_38;\n  char acStack_26 [18];\n  undefined4 uStack_14;\n  \n  bVar16 = 0;\n  uStack_14 = 0x1fe39;\n  bVar13 = false;\n  bVar15 = DAT_000897dc == 0;\n  if (!bVar15) {\n    return 0;\n  }\n  iVar4 = 9;\n  pbVar9 = (byte *)*DAT_0008973c;\n  pbVar7 = pbVar9;\n  pbVar10 = (byte *)".eh_frame";\n  do {\n    if (iVar4 == 0) break;\n    iVar4 = iVar4 + -1;\n    bVar13 = *pbVar7 < *pbVar10;\n    bVar15 = *pbVar7 == *pbVar10;\n    pbVar7 = pbVar7 + 1;\n    pbVar10 = pbVar10 + 1;\n  } while (bVar15);\n  bVar14 = false;\n  bVar13 = (!bVar13 && !bVar15) == bVar13;\n  if (bVar13) {\n    bVar14 = pbVar9[9] < 0x5f;\n    bVar13 = pbVar9[9] == 0x5f;\n    piVar6 = &DAT_000889e0;\n    if (bVar13) goto LAB_0001fe74;\n    if (DAT_000889e0 == 0) goto LAB_0001fe99;\n  }\n  else {\nLAB_0001fe74:\n    iVar4 = 0xc;\n    pbVar7 = (byte *)".debug_frame";\n    do {\n      if (iVar4 == 0) break;\n      iVar4 = iVar4 + -1;\n      bVar14 = *pbVar9 < *pbVar7;\n      bVar13 = *pbVar9 == *pbVar7;\n      pbVar9 = pbVar9 + 1;\n      pbVar7 = pbVar7 + 1;\n    } while (bVar13);\n    if ((!bVar14 && !bVar13) != bVar14) {\n      return 0;\n    }\n    piVar6 = &DAT_000889a0;\n    if (DAT_000889a0 == 0) goto LAB_0001fe99;\n  }\n  iVar4 = FUN_000386c0(piVar6[4]);\n  if (iVar4 != 0) {\n    *piVar6 = 0;\nLAB_0001fe99:\n    if ((*param_2 == 4) &&\n       ((((char)param_1[4] == '\x03' || ((char)param_1[4] == '\x14')) &&\n        (iVar4 = FUN_000386c0(*param_1), iVar4 == 0)))) {\n      *piVar6 = 1;\n      piVar6[4] = *param_1;\n      return 0;\n    }\n    return 0;\n  }\n  switch(*piVar6) {\n  case 0:\n    goto LAB_0001fe99;\n  case 1:\n  case 2:\n    *piVar6 = *piVar6 + 1;\n    return 0;\n  case 3:\n    break;\n  case 4:\n    if (*param_2 == -1) {\n      if ((char)param_1[4] != '\x02') goto code_r0x0001ffb8;\n      local_54 = param_1[2];\n      *piVar6 = 5;\n      piVar6[7] = local_54;\n    }\n    else {\n      if ((*param_2 != 1) || ((char)param_1[4] != '\x02')) {\ncode_r0x0001ffb8:\n        *piVar6 = 8;\n        return 0;\n      }\n      uVar8 = param_1[2];\n      local_54 = (uVar8 & 0x7f) << ((byte)piVar6[8] & 0x1f) | piVar6[7];\n      piVar6[7] = local_54;\n      piVar6[8] = piVar6[8] + 7;\n      if ((char)uVar8 < '\0') {\n        return 0;\n      }\n      *piVar6 = 5;\n    }\n    if (local_54 != 0) {\n      return 0;\n    }\n    *piVar6 = 6;\n    return 0;\n  case 5:\n    if (*param_2 < 0) {\ncode_r0x0001ff8e:\n      *piVar6 = 8;\n      return 0;\n    }\n    iVar4 = piVar6[7] - *param_2;\n    piVar6[7] = iVar4;\n    if (iVar4 != 0) {\n      if (-1 < iVar4) {\n        return 0;\n      }\n      goto code_r0x0001ff8e;\n    }\n    goto code_r0x00020108;\n  case 6:\n    if (*param_2 != 1) {\n      return 0;\n    }\n    if ((char)param_1[4] != '\x02') {\n      return 0;\n    }\n    if (param_1[2] != 4 || param_1[3] != 0) {\n      return 0;\n    }\n    FUN_000249b0(1);\n    *piVar6 = 7;\n    piVar6[5] = DAT_000898a0;\n    iVar4 = FUN_00024dc0();\n    piVar6[6] = iVar4;\n    return 0;\n  case 7:\n    *piVar6 = 6;\n    if (*param_2 != 4) {\n      return 0;\n    }\n    cVar5 = (char)param_1[4];\n    if (cVar5 == '\x02') {\n      uVar8 = param_1[2];\n      iVar4 = param_1[3];\n      if ((int)(uint)(0x3f < uVar8) <= -iVar4) {\n        *(byte *)(piVar6[5] + 0x68 + piVar6[6]) = (byte)uVar8 | 0x40;\n        return 1;\n      }\n      if (-iVar4 < (int)(uint)(0xff < uVar8)) {\n        if (-iVar4 < (int)(uint)(0xffff < uVar8)) {\n          return 0;\n        }\n        *(undefined1 *)(piVar6[5] + 0x68 + piVar6[6]) = 3;\n        *param_2 = 2;\n        return 0;\n      }\n      *(undefined1 *)(piVar6[5] + 0x68 + piVar6[6]) = 2;\n      *param_2 = 1;\n      return 0;\n    }\n    if (cVar5 == '\x14') {\n      if (piVar6[2] != 1) {\n        return 0;\n      }\n      iVar4 = piVar6[5];\n      iVar12 = piVar6[6];\n      uVar2 = FUN_00021220(param_1);\n      iVar3 = 8;\n    }\n    else {\n      if ((cVar5 != '\v') && (cVar5 != '\x0e')) {\n        return 0;\n      }\n      if ((uint)piVar6[2] < 2) {\n        return 0;\n      }\n      iVar3 = *param_1;\n      if (*(int *)(iVar3 + 4) == 0) {\n        return 0;\n      }\n      iVar4 = param_1[1];\n      if (*(int *)(iVar4 + 4) == 0) {\n        return 0;\n      }\n      if (*(char *)(iVar3 + 0x18) != '\x14') {\n        return 0;\n      }\n      if (*(char *)(iVar4 + 0x18) != '\x02') {\n        return 0;\n      }\n      iVar12 = *(int *)(iVar4 + 0x14);\n      uVar8 = *(uint *)(iVar4 + 0x10);\n      if (cVar5 != '\v') {\n        uVar11 = uVar8 >> 5 & 1;\n        iVar12 = uVar11 << ((byte)uVar8 & 0x1f);\n        uVar8 = (uVar11 ^ 1) << ((byte)uVar8 & 0x1f);\n      }\n      if (iVar12 != 0) {\n        return 0;\n      }\n      if (piVar6[2] != uVar8) {\n        return 0;\n      }\n      iVar4 = piVar6[5];\n      iVar12 = piVar6[6];\n      uVar2 = FUN_00021220(iVar3 + 8);\n      iVar3 = piVar6[2] << 3;\n    }\n    FUN_00024b60(0xc,4,0,iVar3,uVar2,iVar12,iVar12 >> 0x1f,iVar4);\n    return 1;\n  default:\n    return 0;\n  }\n  if (piVar6[1] != 0) goto code_r0x0001ffd7;\n  iStack_50 = **(int **)DAT_0008973c[0x20];\n  if (iStack_50 != 0) {\n    uVar8 = *(uint *)(iStack_50 + 0x10);\n    iVar4 = *(int *)(iStack_50 + 0x14);\n    if (-iVar4 < (int)(uint)(4 < uVar8)) {\n      local_5c = 4;\n      iVar12 = 0;\n    }\n    else {\n      local_5c = 4;\n      do {\n        iStack_50 = *(int *)(iStack_50 + 0x30);\n        local_5c = local_5c - uVar8;\n        if (iStack_50 == 0) goto code_r0x00020226;\n        uVar8 = *(uint *)(iStack_50 + 0x10);\n        iVar4 = *(int *)(iStack_50 + 0x14);\n        iVar12 = (int)local_5c >> 0x1f;\n      } while ((SBORROW4(iVar12,iVar4) != SBORROW4(iVar12 - iVar4,(uint)(local_5c < uVar8))) ==\n               (int)((iVar12 - iVar4) - (uint)(local_5c < uVar8)) < 0);\n    }\n    iVar4 = (iVar4 - iVar12) - (uint)(uVar8 < local_5c);\n    uVar8 = (uint)(3 < uVar8 - local_5c);\n    bVar13 = iVar4 != 0 || (uint)-iVar4 < uVar8;\n    bVar15 = -uVar8 == iVar4;\n    if (-iVar4 < (int)uVar8) {\n      iVar4 = 0xc;\n      pbVar9 = (byte *)*DAT_0008973c;\n      pbVar7 = (byte *)".debug_frame";\n      do {\n        if (iVar4 == 0) break;\n        iVar4 = iVar4 + -1;\n        bVar13 = *pbVar9 < *pbVar7;\n        bVar15 = *pbVar9 == *pbVar7;\n        pbVar9 = pbVar9 + (uint)bVar16 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar16 * -2 + 1;\n      } while (bVar15);\n      cVar5 = -((!bVar13 && !bVar15) == bVar13);\n      if ((((*(char *)(iStack_50 + 0x68 + local_5c) == cVar5) &&\n           (*(char *)(iStack_50 + 0x69 + local_5c) == cVar5)) &&\n          (*(char *)(iStack_50 + 0x6a + local_5c) == cVar5)) &&\n         (*(char *)(iStack_50 + 0x6b + local_5c) == cVar5)) {\n        local_5c = local_5c + 4;\n        do {\n          iVar4 = (int)local_5c >> 0x1f;\n          iStack_40 = *(int *)(iStack_50 + 0x14);\n          uStack_44 = *(uint *)(iStack_50 + 0x10);\n          if ((SBORROW4(iVar4,iStack_40) != SBORROW4(iVar4 - iStack_40,(uint)(local_5c < uStack_44))\n              ) != (int)((iVar4 - iStack_40) - (uint)(local_5c < uStack_44)) < 0) {\n            if (((int)(uint)(uStack_44 != local_5c) <=\n                 (int)-((iStack_40 - iVar4) - (uint)(uStack_44 < local_5c))) ||\n               (*(char *)(iStack_50 + 0x68 + local_5c) != '\x01')) goto code_r0x00020226;\n            uVar8 = local_5c + 1;\n            iStack_38 = 0;\n            iVar4 = (*(int **)DAT_0008973c[0x20])[4];\n            goto code_r0x0002044e;\n          }\n          local_5c = local_5c - uStack_44;\n          iStack_50 = *(int *)(iStack_50 + 0x30);\n        } while (iStack_50 != 0);\n        piVar6[1] = 0;\n        goto code_r0x0002022d;\n      }\n    }\n  }\n  goto code_r0x00020226;\ncode_r0x0002044e:\n  iStack_58 = (int)uVar8 >> 0x1f;\n  if ((SBORROW4(iStack_58,iStack_40) != SBORROW4(iStack_58 - iStack_40,(uint)(uVar8 < uStack_44)))\n      != (int)((iStack_58 - iStack_40) - (uint)(uVar8 < uStack_44)) < 0) {\n    cVar5 = *(char *)(iStack_50 + 0x68 + uVar8);\n    if (cVar5 == '\0') {\ncode_r0x00020509:\n      uVar8 = uVar8 + 1;\n      goto code_r0x00020523;\n    }\n    local_5c = uVar8;\n    while( true ) {\n      if (iStack_38 < 9) {\n        acStack_26[iStack_38] = cVar5;\n        iStack_38 = iStack_38 + 1;\n      }\n      uVar8 = uVar8 + 1;\n      if (iStack_58 == iStack_40 + -1 + (uint)(uStack_44 != 0) && local_5c == uStack_44 - 1) break;\n      bVar13 = 0xfffffffe < local_5c;\n      local_5c = local_5c + 1;\n      iStack_58 = iStack_58 + (uint)bVar13;\n      cVar5 = *(char *)(iStack_50 + 0x68 + uVar8);\n      if (cVar5 == '\0') goto code_r0x00020509;\n    }\n    goto code_r0x0002044e;\n  }\n  iStack_50 = *(int *)(iStack_50 + 0x30);\n  if (iStack_50 == 0) goto code_r0x00020226;\n  iStack_40 = *(int *)(iStack_50 + 0x14);\n  uVar8 = uVar8 - uStack_44;\n  uStack_44 = *(uint *)(iStack_50 + 0x10);\n  goto code_r0x0002044e;\n  while( true ) {\n    iStack_50 = *(int *)(iStack_50 + 0x30);\n    uVar8 = uVar8 - *puVar1;\n    if (iStack_50 == 0) break;\ncode_r0x00020523:\n    puVar1 = (uint *)(iStack_50 + 0x10);\n    uVar11 = (uint)(uVar8 < *puVar1);\n    iVar12 = ((int)uVar8 >> 0x1f) - *(int *)(iStack_50 + 0x14);\n    if ((SBORROW4((int)uVar8 >> 0x1f,*(int *)(iStack_50 + 0x14)) != SBORROW4(iVar12,uVar11)) !=\n        (int)(iVar12 - uVar11) < 0) {\n      acStack_26[iStack_38] = '\0';\n      if (acStack_26[0] == '\0') goto code_r0x000205bb;\n      iVar12 = strcmp(acStack_26,"eh");\n      if (iVar12 == 0) goto code_r0x00020575;\n      if (acStack_26[0] == 'z') goto code_r0x000205bb;\n      break;\n    }\n  }\n  goto code_r0x00020226;\ncode_r0x00020575:\n  if (iVar4 == 0) goto code_r0x00020600;\n  if ((*(int *)(iVar4 + 4) == iStack_50) && (*(uint *)(iVar4 + 8) == uVar8)) {\n    uVar8 = uVar8 + *(byte *)(iVar4 + 2);\n    goto code_r0x000205a6;\n  }\n  iVar4 = *(int *)(iVar4 + 0x28);\n  goto code_r0x00020575;\ncode_r0x000205bb:\n  cVar5 = *(char *)(iStack_50 + 0x68 + uVar8);\n  iStack_3c = 0;\n  if (-1 < cVar5) {\n    iStack_3c = (int)cVar5;\n  }\n  piVar6[1] = 1;\n  piVar6[2] = iStack_3c;\n  piVar6[3] = (uint)(acStack_26[0] == 'z');\ncode_r0x0001ffd7:\n  if (piVar6[3] != 0) {\n    *piVar6 = 4;\n    piVar6[7] = 0;\n    piVar6[8] = 0;\n    return 0;\n  }\ncode_r0x00020108:\n  *piVar6 = 6;\n  return 0;\ncode_r0x00020600:\n  uVar8 = uVar8 + 4;\ncode_r0x000205a6:\n  do {\n    puVar1 = (uint *)(iStack_50 + 0x10);\n    uVar11 = (uint)(uVar8 < *puVar1);\n    iVar4 = ((int)uVar8 >> 0x1f) - *(int *)(iStack_50 + 0x14);\n    if ((SBORROW4((int)uVar8 >> 0x1f,*(int *)(iStack_50 + 0x14)) != SBORROW4(iVar4,uVar11)) !=\n        (int)(iVar4 - uVar11) < 0) goto code_r0x000205bb;\n    iStack_50 = *(int *)(iStack_50 + 0x30);\n    uVar8 = uVar8 - *puVar1;\n  } while (iStack_50 != 0);\ncode_r0x00020226:\n  piVar6[1] = 0;\ncode_r0x0002022d:\n  *piVar6 = 8;\n  return 0;\n}\n\n" comment comment (function_definition "undefined4 FUN_0001fe30(int *param_1,int *param_2)\n\n{\n  uint *puVar1;\n  undefined4 uVar2;\n  int iVar3;\n  int iVar4;\n  char cVar5;\n  int *piVar6;\n  byte *pbVar7;\n  uint uVar8;\n  byte *pbVar9;\n  byte *pbVar10;\n  uint uVar11;\n  int iVar12;\n  bool bVar13;\n  bool bVar14;\n  bool bVar15;\n  byte bVar16;\n  uint local_5c;\n  int iStack_58;\n  uint local_54;\n  int iStack_50;\n  uint uStack_44;\n  int iStack_40;\n  int iStack_3c;\n  int iStack_38;\n  char acStack_26 [18];\n  undefined4 uStack_14;\n  \n  bVar16 = 0;\n  uStack_14 = 0x1fe39;\n  bVar13 = false;\n  bVar15 = DAT_000897dc == 0;\n  if (!bVar15) {\n    return 0;\n  }\n  iVar4 = 9;\n  pbVar9 = (byte *)*DAT_0008973c;\n  pbVar7 = pbVar9;\n  pbVar10 = (byte *)".eh_frame";\n  do {\n    if (iVar4 == 0) break;\n    iVar4 = iVar4 + -1;\n    bVar13 = *pbVar7 < *pbVar10;\n    bVar15 = *pbVar7 == *pbVar10;\n    pbVar7 = pbVar7 + 1;\n    pbVar10 = pbVar10 + 1;\n  } while (bVar15);\n  bVar14 = false;\n  bVar13 = (!bVar13 && !bVar15) == bVar13;\n  if (bVar13) {\n    bVar14 = pbVar9[9] < 0x5f;\n    bVar13 = pbVar9[9] == 0x5f;\n    piVar6 = &DAT_000889e0;\n    if (bVar13) goto LAB_0001fe74;\n    if (DAT_000889e0 == 0) goto LAB_0001fe99;\n  }\n  else {\nLAB_0001fe74:\n    iVar4 = 0xc;\n    pbVar7 = (byte *)".debug_frame";\n    do {\n      if (iVar4 == 0) break;\n      iVar4 = iVar4 + -1;\n      bVar14 = *pbVar9 < *pbVar7;\n      bVar13 = *pbVar9 == *pbVar7;\n      pbVar9 = pbVar9 + 1;\n      pbVar7 = pbVar7 + 1;\n    } while (bVar13);\n    if ((!bVar14 && !bVar13) != bVar14) {\n      return 0;\n    }\n    piVar6 = &DAT_000889a0;\n    if (DAT_000889a0 == 0) goto LAB_0001fe99;\n  }\n  iVar4 = FUN_000386c0(piVar6[4]);\n  if (iVar4 != 0) {\n    *piVar6 = 0;\nLAB_0001fe99:\n    if ((*param_2 == 4) &&\n       ((((char)param_1[4] == '\x03' || ((char)param_1[4] == '\x14')) &&\n        (iVar4 = FUN_000386c0(*param_1), iVar4 == 0)))) {\n      *piVar6 = 1;\n      piVar6[4] = *param_1;\n      return 0;\n    }\n    return 0;\n  }\n  switch(*piVar6) {\n  case 0:\n    goto LAB_0001fe99;\n  case 1:\n  case 2:\n    *piVar6 = *piVar6 + 1;\n    return 0;\n  case 3:\n    break;\n  case 4:\n    if (*param_2 == -1) {\n      if ((char)param_1[4] != '\x02') goto code_r0x0001ffb8;\n      local_54 = param_1[2];\n      *piVar6 = 5;\n      piVar6[7] = local_54;\n    }\n    else {\n      if ((*param_2 != 1) || ((char)param_1[4] != '\x02')) {\ncode_r0x0001ffb8:\n        *piVar6 = 8;\n        return 0;\n      }\n      uVar8 = param_1[2];\n      local_54 = (uVar8 & 0x7f) << ((byte)piVar6[8] & 0x1f) | piVar6[7];\n      piVar6[7] = local_54;\n      piVar6[8] = piVar6[8] + 7;\n      if ((char)uVar8 < '\0') {\n        return 0;\n      }\n      *piVar6 = 5;\n    }\n    if (local_54 != 0) {\n      return 0;\n    }\n    *piVar6 = 6;\n    return 0;\n  case 5:\n    if (*param_2 < 0) {\ncode_r0x0001ff8e:\n      *piVar6 = 8;\n      return 0;\n    }\n    iVar4 = piVar6[7] - *param_2;\n    piVar6[7] = iVar4;\n    if (iVar4 != 0) {\n      if (-1 < iVar4) {\n        return 0;\n      }\n      goto code_r0x0001ff8e;\n    }\n    goto code_r0x00020108;\n  case 6:\n    if (*param_2 != 1) {\n      return 0;\n    }\n    if ((char)param_1[4] != '\x02') {\n      return 0;\n    }\n    if (param_1[2] != 4 || param_1[3] != 0) {\n      return 0;\n    }\n    FUN_000249b0(1);\n    *piVar6 = 7;\n    piVar6[5] = DAT_000898a0;\n    iVar4 = FUN_00024dc0();\n    piVar6[6] = iVar4;\n    return 0;\n  case 7:\n    *piVar6 = 6;\n    if (*param_2 != 4) {\n      return 0;\n    }\n    cVar5 = (char)param_1[4];\n    if (cVar5 == '\x02') {\n      uVar8 = param_1[2];\n      iVar4 = param_1[3];\n      if ((int)(uint)(0x3f < uVar8) <= -iVar4) {\n        *(byte *)(piVar6[5] + 0x68 + piVar6[6]) = (byte)uVar8 | 0x40;\n        return 1;\n      }\n      if (-iVar4 < (int)(uint)(0xff < uVar8)) {\n        if (-iVar4 < (int)(uint)(0xffff < uVar8)) {\n          return 0;\n        }\n        *(undefined1 *)(piVar6[5] + 0x68 + piVar6[6]) = 3;\n        *param_2 = 2;\n        return 0;\n      }\n      *(undefined1 *)(piVar6[5] + 0x68 + piVar6[6]) = 2;\n      *param_2 = 1;\n      return 0;\n    }\n    if (cVar5 == '\x14') {\n      if (piVar6[2] != 1) {\n        return 0;\n      }\n      iVar4 = piVar6[5];\n      iVar12 = piVar6[6];\n      uVar2 = FUN_00021220(param_1);\n      iVar3 = 8;\n    }\n    else {\n      if ((cVar5 != '\v') && (cVar5 != '\x0e')) {\n        return 0;\n      }\n      if ((uint)piVar6[2] < 2) {\n        return 0;\n      }\n      iVar3 = *param_1;\n      if (*(int *)(iVar3 + 4) == 0) {\n        return 0;\n      }\n      iVar4 = param_1[1];\n      if (*(int *)(iVar4 + 4) == 0) {\n        return 0;\n      }\n      if (*(char *)(iVar3 + 0x18) != '\x14') {\n        return 0;\n      }\n      if (*(char *)(iVar4 + 0x18) != '\x02') {\n        return 0;\n      }\n      iVar12 = *(int *)(iVar4 + 0x14);\n      uVar8 = *(uint *)(iVar4 + 0x10);\n      if (cVar5 != '\v') {\n        uVar11 = uVar8 >> 5 & 1;\n        iVar12 = uVar11 << ((byte)uVar8 & 0x1f);\n        uVar8 = (uVar11 ^ 1) << ((byte)uVar8 & 0x1f);\n      }\n      if (iVar12 != 0) {\n        return 0;\n      }\n      if (piVar6[2] != uVar8) {\n        return 0;\n      }\n      iVar4 = piVar6[5];\n      iVar12 = piVar6[6];\n      uVar2 = FUN_00021220(iVar3 + 8);\n      iVar3 = piVar6[2] << 3;\n    }\n    FUN_00024b60(0xc,4,0,iVar3,uVar2,iVar12,iVar12 >> 0x1f,iVar4);\n    return 1;\n  default:\n    return 0;\n  }\n  if (piVar6[1] != 0) goto code_r0x0001ffd7;\n  iStack_50 = **(int **)DAT_0008973c[0x20];\n  if (iStack_50 != 0) {\n    uVar8 = *(uint *)(iStack_50 + 0x10);\n    iVar4 = *(int *)(iStack_50 + 0x14);\n    if (-iVar4 < (int)(uint)(4 < uVar8)) {\n      local_5c = 4;\n      iVar12 = 0;\n    }\n    else {\n      local_5c = 4;\n      do {\n        iStack_50 = *(int *)(iStack_50 + 0x30);\n        local_5c = local_5c - uVar8;\n        if (iStack_50 == 0) goto code_r0x00020226;\n        uVar8 = *(uint *)(iStack_50 + 0x10);\n        iVar4 = *(int *)(iStack_50 + 0x14);\n        iVar12 = (int)local_5c >> 0x1f;\n      } while ((SBORROW4(iVar12,iVar4) != SBORROW4(iVar12 - iVar4,(uint)(local_5c < uVar8))) ==\n               (int)((iVar12 - iVar4) - (uint)(local_5c < uVar8)) < 0);\n    }\n    iVar4 = (iVar4 - iVar12) - (uint)(uVar8 < local_5c);\n    uVar8 = (uint)(3 < uVar8 - local_5c);\n    bVar13 = iVar4 != 0 || (uint)-iVar4 < uVar8;\n    bVar15 = -uVar8 == iVar4;\n    if (-iVar4 < (int)uVar8) {\n      iVar4 = 0xc;\n      pbVar9 = (byte *)*DAT_0008973c;\n      pbVar7 = (byte *)".debug_frame";\n      do {\n        if (iVar4 == 0) break;\n        iVar4 = iVar4 + -1;\n        bVar13 = *pbVar9 < *pbVar7;\n        bVar15 = *pbVar9 == *pbVar7;\n        pbVar9 = pbVar9 + (uint)bVar16 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar16 * -2 + 1;\n      } while (bVar15);\n      cVar5 = -((!bVar13 && !bVar15) == bVar13);\n      if ((((*(char *)(iStack_50 + 0x68 + local_5c) == cVar5) &&\n           (*(char *)(iStack_50 + 0x69 + local_5c) == cVar5)) &&\n          (*(char *)(iStack_50 + 0x6a + local_5c) == cVar5)) &&\n         (*(char *)(iStack_50 + 0x6b + local_5c) == cVar5)) {\n        local_5c = local_5c + 4;\n        do {\n          iVar4 = (int)local_5c >> 0x1f;\n          iStack_40 = *(int *)(iStack_50 + 0x14);\n          uStack_44 = *(uint *)(iStack_50 + 0x10);\n          if ((SBORROW4(iVar4,iStack_40) != SBORROW4(iVar4 - iStack_40,(uint)(local_5c < uStack_44))\n              ) != (int)((iVar4 - iStack_40) - (uint)(local_5c < uStack_44)) < 0) {\n            if (((int)(uint)(uStack_44 != local_5c) <=\n                 (int)-((iStack_40 - iVar4) - (uint)(uStack_44 < local_5c))) ||\n               (*(char *)(iStack_50 + 0x68 + local_5c) != '\x01')) goto code_r0x00020226;\n            uVar8 = local_5c + 1;\n            iStack_38 = 0;\n            iVar4 = (*(int **)DAT_0008973c[0x20])[4];\n            goto code_r0x0002044e;\n          }\n          local_5c = local_5c - uStack_44;\n          iStack_50 = *(int *)(iStack_50 + 0x30);\n        } while (iStack_50 != 0);\n        piVar6[1] = 0;\n        goto code_r0x0002022d;\n      }\n    }\n  }\n  goto code_r0x00020226;\ncode_r0x0002044e:\n  iStack_58 = (int)uVar8 >> 0x1f;\n  if ((SBORROW4(iStack_58,iStack_40) != SBORROW4(iStack_58 - iStack_40,(uint)(uVar8 < uStack_44)))\n      != (int)((iStack_58 - iStack_40) - (uint)(uVar8 < uStack_44)) < 0) {\n    cVar5 = *(char *)(iStack_50 + 0x68 + uVar8);\n    if (cVar5 == '\0') {\ncode_r0x00020509:\n      uVar8 = uVar8 + 1;\n      goto code_r0x00020523;\n    }\n    local_5c = uVar8;\n    while( true ) {\n      if (iStack_38 < 9) {\n        acStack_26[iStack_38] = cVar5;\n        iStack_38 = iStack_38 + 1;\n      }\n      uVar8 = uVar8 + 1;\n      if (iStack_58 == iStack_40 + -1 + (uint)(uStack_44 != 0) && local_5c == uStack_44 - 1) break;\n      bVar13 = 0xfffffffe < local_5c;\n      local_5c = local_5c + 1;\n      iStack_58 = iStack_58 + (uint)bVar13;\n      cVar5 = *(char *)(iStack_50 + 0x68 + uVar8);\n      if (cVar5 == '\0') goto code_r0x00020509;\n    }\n    goto code_r0x0002044e;\n  }\n  iStack_50 = *(int *)(iStack_50 + 0x30);\n  if (iStack_50 == 0) goto code_r0x00020226;\n  iStack_40 = *(int *)(iStack_50 + 0x14);\n  uVar8 = uVar8 - uStack_44;\n  uStack_44 = *(uint *)(iStack_50 + 0x10);\n  goto code_r0x0002044e;\n  while( true ) {\n    iStack_50 = *(int *)(iStack_50 + 0x30);\n    uVar8 = uVar8 - *puVar1;\n    if (iStack_50 == 0) break;\ncode_r0x00020523:\n    puVar1 = (uint *)(iStack_50 + 0x10);\n    uVar11 = (uint)(uVar8 < *puVar1);\n    iVar12 = ((int)uVar8 >> 0x1f) - *(int *)(iStack_50 + 0x14);\n    if ((SBORROW4((int)uVar8 >> 0x1f,*(int *)(iStack_50 + 0x14)) != SBORROW4(iVar12,uVar11)) !=\n        (int)(iVar12 - uVar11) < 0) {\n      acStack_26[iStack_38] = '\0';\n      if (acStack_26[0] == '\0') goto code_r0x000205bb;\n      iVar12 = strcmp(acStack_26,"eh");\n      if (iVar12 == 0) goto code_r0x00020575;\n      if (acStack_26[0] == 'z') goto code_r0x000205bb;\n      break;\n    }\n  }\n  goto code_r0x00020226;\ncode_r0x00020575:\n  if (iVar4 == 0) goto code_r0x00020600;\n  if ((*(int *)(iVar4 + 4) == iStack_50) && (*(uint *)(iVar4 + 8) == uVar8)) {\n    uVar8 = uVar8 + *(byte *)(iVar4 + 2);\n    goto code_r0x000205a6;\n  }\n  iVar4 = *(int *)(iVar4 + 0x28);\n  goto code_r0x00020575;\ncode_r0x000205bb:\n  cVar5 = *(char *)(iStack_50 + 0x68 + uVar8);\n  iStack_3c = 0;\n  if (-1 < cVar5) {\n    iStack_3c = (int)cVar5;\n  }\n  piVar6[1] = 1;\n  piVar6[2] = iStack_3c;\n  piVar6[3] = (uint)(acStack_26[0] == 'z');\ncode_r0x0001ffd7:\n  if (piVar6[3] != 0) {\n    *piVar6 = 4;\n    piVar6[7] = 0;\n    piVar6[8] = 0;\n    return 0;\n  }\ncode_r0x00020108:\n  *piVar6 = 6;\n  return 0;\ncode_r0x00020600:\n  uVar8 = uVar8 + 4;\ncode_r0x000205a6:\n  do {\n    puVar1 = (uint *)(iStack_50 + 0x10);\n    uVar11 = (uint)(uVar8 < *puVar1);\n    iVar4 = ((int)uVar8 >> 0x1f) - *(int *)(iStack_50 + 0x14);\n    if ((SBORROW4((int)uVar8 >> 0x1f,*(int *)(iStack_50 + 0x14)) != SBORROW4(iVar4,uVar11)) !=\n        (int)(iVar4 - uVar11) < 0) goto code_r0x000205bb;\n    iStack_50 = *(int *)(iStack_50 + 0x30);\n    uVar8 = uVar8 - *puVar1;\n  } while (iStack_50 != 0);\ncode_r0x00020226:\n  piVar6[1] = 0;\ncode_r0x0002022d:\n  *piVar6 = 8;\n  return 0;\n}" type_identifier (function_declarator "FUN_0001fe30(int *param_1,int *param_2)" identifier (parameter_list "(int *param_1,int *param_2)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) ))) (compound_statement "{\n  uint *puVar1;\n  undefined4 uVar2;\n  int iVar3;\n  int iVar4;\n  char cVar5;\n  int *piVar6;\n  byte *pbVar7;\n  uint uVar8;\n  byte *pbVar9;\n  byte *pbVar10;\n  uint uVar11;\n  int iVar12;\n  bool bVar13;\n  bool bVar14;\n  bool bVar15;\n  byte bVar16;\n  uint local_5c;\n  int iStack_58;\n  uint local_54;\n  int iStack_50;\n  uint uStack_44;\n  int iStack_40;\n  int iStack_3c;\n  int iStack_38;\n  char acStack_26 [18];\n  undefined4 uStack_14;\n  \n  bVar16 = 0;\n  uStack_14 = 0x1fe39;\n  bVar13 = false;\n  bVar15 = DAT_000897dc == 0;\n  if (!bVar15) {\n    return 0;\n  }\n  iVar4 = 9;\n  pbVar9 = (byte *)*DAT_0008973c;\n  pbVar7 = pbVar9;\n  pbVar10 = (byte *)".eh_frame";\n  do {\n    if (iVar4 == 0) break;\n    iVar4 = iVar4 + -1;\n    bVar13 = *pbVar7 < *pbVar10;\n    bVar15 = *pbVar7 == *pbVar10;\n    pbVar7 = pbVar7 + 1;\n    pbVar10 = pbVar10 + 1;\n  } while (bVar15);\n  bVar14 = false;\n  bVar13 = (!bVar13 && !bVar15) == bVar13;\n  if (bVar13) {\n    bVar14 = pbVar9[9] < 0x5f;\n    bVar13 = pbVar9[9] == 0x5f;\n    piVar6 = &DAT_000889e0;\n    if (bVar13) goto LAB_0001fe74;\n    if (DAT_000889e0 == 0) goto LAB_0001fe99;\n  }\n  else {\nLAB_0001fe74:\n    iVar4 = 0xc;\n    pbVar7 = (byte *)".debug_frame";\n    do {\n      if (iVar4 == 0) break;\n      iVar4 = iVar4 + -1;\n      bVar14 = *pbVar9 < *pbVar7;\n      bVar13 = *pbVar9 == *pbVar7;\n      pbVar9 = pbVar9 + 1;\n      pbVar7 = pbVar7 + 1;\n    } while (bVar13);\n    if ((!bVar14 && !bVar13) != bVar14) {\n      return 0;\n    }\n    piVar6 = &DAT_000889a0;\n    if (DAT_000889a0 == 0) goto LAB_0001fe99;\n  }\n  iVar4 = FUN_000386c0(piVar6[4]);\n  if (iVar4 != 0) {\n    *piVar6 = 0;\nLAB_0001fe99:\n    if ((*param_2 == 4) &&\n       ((((char)param_1[4] == '\x03' || ((char)param_1[4] == '\x14')) &&\n        (iVar4 = FUN_000386c0(*param_1), iVar4 == 0)))) {\n      *piVar6 = 1;\n      piVar6[4] = *param_1;\n      return 0;\n    }\n    return 0;\n  }\n  switch(*piVar6) {\n  case 0:\n    goto LAB_0001fe99;\n  case 1:\n  case 2:\n    *piVar6 = *piVar6 + 1;\n    return 0;\n  case 3:\n    break;\n  case 4:\n    if (*param_2 == -1) {\n      if ((char)param_1[4] != '\x02') goto code_r0x0001ffb8;\n      local_54 = param_1[2];\n      *piVar6 = 5;\n      piVar6[7] = local_54;\n    }\n    else {\n      if ((*param_2 != 1) || ((char)param_1[4] != '\x02')) {\ncode_r0x0001ffb8:\n        *piVar6 = 8;\n        return 0;\n      }\n      uVar8 = param_1[2];\n      local_54 = (uVar8 & 0x7f) << ((byte)piVar6[8] & 0x1f) | piVar6[7];\n      piVar6[7] = local_54;\n      piVar6[8] = piVar6[8] + 7;\n      if ((char)uVar8 < '\0') {\n        return 0;\n      }\n      *piVar6 = 5;\n    }\n    if (local_54 != 0) {\n      return 0;\n    }\n    *piVar6 = 6;\n    return 0;\n  case 5:\n    if (*param_2 < 0) {\ncode_r0x0001ff8e:\n      *piVar6 = 8;\n      return 0;\n    }\n    iVar4 = piVar6[7] - *param_2;\n    piVar6[7] = iVar4;\n    if (iVar4 != 0) {\n      if (-1 < iVar4) {\n        return 0;\n      }\n      goto code_r0x0001ff8e;\n    }\n    goto code_r0x00020108;\n  case 6:\n    if (*param_2 != 1) {\n      return 0;\n    }\n    if ((char)param_1[4] != '\x02') {\n      return 0;\n    }\n    if (param_1[2] != 4 || param_1[3] != 0) {\n      return 0;\n    }\n    FUN_000249b0(1);\n    *piVar6 = 7;\n    piVar6[5] = DAT_000898a0;\n    iVar4 = FUN_00024dc0();\n    piVar6[6] = iVar4;\n    return 0;\n  case 7:\n    *piVar6 = 6;\n    if (*param_2 != 4) {\n      return 0;\n    }\n    cVar5 = (char)param_1[4];\n    if (cVar5 == '\x02') {\n      uVar8 = param_1[2];\n      iVar4 = param_1[3];\n      if ((int)(uint)(0x3f < uVar8) <= -iVar4) {\n        *(byte *)(piVar6[5] + 0x68 + piVar6[6]) = (byte)uVar8 | 0x40;\n        return 1;\n      }\n      if (-iVar4 < (int)(uint)(0xff < uVar8)) {\n        if (-iVar4 < (int)(uint)(0xffff < uVar8)) {\n          return 0;\n        }\n        *(undefined1 *)(piVar6[5] + 0x68 + piVar6[6]) = 3;\n        *param_2 = 2;\n        return 0;\n      }\n      *(undefined1 *)(piVar6[5] + 0x68 + piVar6[6]) = 2;\n      *param_2 = 1;\n      return 0;\n    }\n    if (cVar5 == '\x14') {\n      if (piVar6[2] != 1) {\n        return 0;\n      }\n      iVar4 = piVar6[5];\n      iVar12 = piVar6[6];\n      uVar2 = FUN_00021220(param_1);\n      iVar3 = 8;\n    }\n    else {\n      if ((cVar5 != '\v') && (cVar5 != '\x0e')) {\n        return 0;\n      }\n      if ((uint)piVar6[2] < 2) {\n        return 0;\n      }\n      iVar3 = *param_1;\n      if (*(int *)(iVar3 + 4) == 0) {\n        return 0;\n      }\n      iVar4 = param_1[1];\n      if (*(int *)(iVar4 + 4) == 0) {\n        return 0;\n      }\n      if (*(char *)(iVar3 + 0x18) != '\x14') {\n        return 0;\n      }\n      if (*(char *)(iVar4 + 0x18) != '\x02') {\n        return 0;\n      }\n      iVar12 = *(int *)(iVar4 + 0x14);\n      uVar8 = *(uint *)(iVar4 + 0x10);\n      if (cVar5 != '\v') {\n        uVar11 = uVar8 >> 5 & 1;\n        iVar12 = uVar11 << ((byte)uVar8 & 0x1f);\n        uVar8 = (uVar11 ^ 1) << ((byte)uVar8 & 0x1f);\n      }\n      if (iVar12 != 0) {\n        return 0;\n      }\n      if (piVar6[2] != uVar8) {\n        return 0;\n      }\n      iVar4 = piVar6[5];\n      iVar12 = piVar6[6];\n      uVar2 = FUN_00021220(iVar3 + 8);\n      iVar3 = piVar6[2] << 3;\n    }\n    FUN_00024b60(0xc,4,0,iVar3,uVar2,iVar12,iVar12 >> 0x1f,iVar4);\n    return 1;\n  default:\n    return 0;\n  }\n  if (piVar6[1] != 0) goto code_r0x0001ffd7;\n  iStack_50 = **(int **)DAT_0008973c[0x20];\n  if (iStack_50 != 0) {\n    uVar8 = *(uint *)(iStack_50 + 0x10);\n    iVar4 = *(int *)(iStack_50 + 0x14);\n    if (-iVar4 < (int)(uint)(4 < uVar8)) {\n      local_5c = 4;\n      iVar12 = 0;\n    }\n    else {\n      local_5c = 4;\n      do {\n        iStack_50 = *(int *)(iStack_50 + 0x30);\n        local_5c = local_5c - uVar8;\n        if (iStack_50 == 0) goto code_r0x00020226;\n        uVar8 = *(uint *)(iStack_50 + 0x10);\n        iVar4 = *(int *)(iStack_50 + 0x14);\n        iVar12 = (int)local_5c >> 0x1f;\n      } while ((SBORROW4(iVar12,iVar4) != SBORROW4(iVar12 - iVar4,(uint)(local_5c < uVar8))) ==\n               (int)((iVar12 - iVar4) - (uint)(local_5c < uVar8)) < 0);\n    }\n    iVar4 = (iVar4 - iVar12) - (uint)(uVar8 < local_5c);\n    uVar8 = (uint)(3 < uVar8 - local_5c);\n    bVar13 = iVar4 != 0 || (uint)-iVar4 < uVar8;\n    bVar15 = -uVar8 == iVar4;\n    if (-iVar4 < (int)uVar8) {\n      iVar4 = 0xc;\n      pbVar9 = (byte *)*DAT_0008973c;\n      pbVar7 = (byte *)".debug_frame";\n      do {\n        if (iVar4 == 0) break;\n        iVar4 = iVar4 + -1;\n        bVar13 = *pbVar9 < *pbVar7;\n        bVar15 = *pbVar9 == *pbVar7;\n        pbVar9 = pbVar9 + (uint)bVar16 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar16 * -2 + 1;\n      } while (bVar15);\n      cVar5 = -((!bVar13 && !bVar15) == bVar13);\n      if ((((*(char *)(iStack_50 + 0x68 + local_5c) == cVar5) &&\n           (*(char *)(iStack_50 + 0x69 + local_5c) == cVar5)) &&\n          (*(char *)(iStack_50 + 0x6a + local_5c) == cVar5)) &&\n         (*(char *)(iStack_50 + 0x6b + local_5c) == cVar5)) {\n        local_5c = local_5c + 4;\n        do {\n          iVar4 = (int)local_5c >> 0x1f;\n          iStack_40 = *(int *)(iStack_50 + 0x14);\n          uStack_44 = *(uint *)(iStack_50 + 0x10);\n          if ((SBORROW4(iVar4,iStack_40) != SBORROW4(iVar4 - iStack_40,(uint)(local_5c < uStack_44))\n              ) != (int)((iVar4 - iStack_40) - (uint)(local_5c < uStack_44)) < 0) {\n            if (((int)(uint)(uStack_44 != local_5c) <=\n                 (int)-((iStack_40 - iVar4) - (uint)(uStack_44 < local_5c))) ||\n               (*(char *)(iStack_50 + 0x68 + local_5c) != '\x01')) goto code_r0x00020226;\n            uVar8 = local_5c + 1;\n            iStack_38 = 0;\n            iVar4 = (*(int **)DAT_0008973c[0x20])[4];\n            goto code_r0x0002044e;\n          }\n          local_5c = local_5c - uStack_44;\n          iStack_50 = *(int *)(iStack_50 + 0x30);\n        } while (iStack_50 != 0);\n        piVar6[1] = 0;\n        goto code_r0x0002022d;\n      }\n    }\n  }\n  goto code_r0x00020226;\ncode_r0x0002044e:\n  iStack_58 = (int)uVar8 >> 0x1f;\n  if ((SBORROW4(iStack_58,iStack_40) != SBORROW4(iStack_58 - iStack_40,(uint)(uVar8 < uStack_44)))\n      != (int)((iStack_58 - iStack_40) - (uint)(uVar8 < uStack_44)) < 0) {\n    cVar5 = *(char *)(iStack_50 + 0x68 + uVar8);\n    if (cVar5 == '\0') {\ncode_r0x00020509:\n      uVar8 = uVar8 + 1;\n      goto code_r0x00020523;\n    }\n    local_5c = uVar8;\n    while( true ) {\n      if (iStack_38 < 9) {\n        acStack_26[iStack_38] = cVar5;\n        iStack_38 = iStack_38 + 1;\n      }\n      uVar8 = uVar8 + 1;\n      if (iStack_58 == iStack_40 + -1 + (uint)(uStack_44 != 0) && local_5c == uStack_44 - 1) break;\n      bVar13 = 0xfffffffe < local_5c;\n      local_5c = local_5c + 1;\n      iStack_58 = iStack_58 + (uint)bVar13;\n      cVar5 = *(char *)(iStack_50 + 0x68 + uVar8);\n      if (cVar5 == '\0') goto code_r0x00020509;\n    }\n    goto code_r0x0002044e;\n  }\n  iStack_50 = *(int *)(iStack_50 + 0x30);\n  if (iStack_50 == 0) goto code_r0x00020226;\n  iStack_40 = *(int *)(iStack_50 + 0x14);\n  uVar8 = uVar8 - uStack_44;\n  uStack_44 = *(uint *)(iStack_50 + 0x10);\n  goto code_r0x0002044e;\n  while( true ) {\n    iStack_50 = *(int *)(iStack_50 + 0x30);\n    uVar8 = uVar8 - *puVar1;\n    if (iStack_50 == 0) break;\ncode_r0x00020523:\n    puVar1 = (uint *)(iStack_50 + 0x10);\n    uVar11 = (uint)(uVar8 < *puVar1);\n    iVar12 = ((int)uVar8 >> 0x1f) - *(int *)(iStack_50 + 0x14);\n    if ((SBORROW4((int)uVar8 >> 0x1f,*(int *)(iStack_50 + 0x14)) != SBORROW4(iVar12,uVar11)) !=\n        (int)(iVar12 - uVar11) < 0) {\n      acStack_26[iStack_38] = '\0';\n      if (acStack_26[0] == '\0') goto code_r0x000205bb;\n      iVar12 = strcmp(acStack_26,"eh");\n      if (iVar12 == 0) goto code_r0x00020575;\n      if (acStack_26[0] == 'z') goto code_r0x000205bb;\n      break;\n    }\n  }\n  goto code_r0x00020226;\ncode_r0x00020575:\n  if (iVar4 == 0) goto code_r0x00020600;\n  if ((*(int *)(iVar4 + 4) == iStack_50) && (*(uint *)(iVar4 + 8) == uVar8)) {\n    uVar8 = uVar8 + *(byte *)(iVar4 + 2);\n    goto code_r0x000205a6;\n  }\n  iVar4 = *(int *)(iVar4 + 0x28);\n  goto code_r0x00020575;\ncode_r0x000205bb:\n  cVar5 = *(char *)(iStack_50 + 0x68 + uVar8);\n  iStack_3c = 0;\n  if (-1 < cVar5) {\n    iStack_3c = (int)cVar5;\n  }\n  piVar6[1] = 1;\n  piVar6[2] = iStack_3c;\n  piVar6[3] = (uint)(acStack_26[0] == 'z');\ncode_r0x0001ffd7:\n  if (piVar6[3] != 0) {\n    *piVar6 = 4;\n    piVar6[7] = 0;\n    piVar6[8] = 0;\n    return 0;\n  }\ncode_r0x00020108:\n  *piVar6 = 6;\n  return 0;\ncode_r0x00020600:\n  uVar8 = uVar8 + 4;\ncode_r0x000205a6:\n  do {\n    puVar1 = (uint *)(iStack_50 + 0x10);\n    uVar11 = (uint)(uVar8 < *puVar1);\n    iVar4 = ((int)uVar8 >> 0x1f) - *(int *)(iStack_50 + 0x14);\n    if ((SBORROW4((int)uVar8 >> 0x1f,*(int *)(iStack_50 + 0x14)) != SBORROW4(iVar4,uVar11)) !=\n        (int)(iVar4 - uVar11) < 0) goto code_r0x000205bb;\n    iStack_50 = *(int *)(iStack_50 + 0x30);\n    uVar8 = uVar8 - *puVar1;\n  } while (iStack_50 != 0);\ncode_r0x00020226:\n  piVar6[1] = 0;\ncode_r0x0002022d:\n  *piVar6 = 8;\n  return 0;\n}" { (declaration "uint *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "undefined4 uVar2;" type_identifier identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "char cVar5;" primitive_type identifier ;) (declaration "int *piVar6;" primitive_type (pointer_declarator "*piVar6" * identifier) ;) (declaration "byte *pbVar7;" type_identifier (pointer_declarator "*pbVar7" * identifier) ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "byte *pbVar9;" type_identifier (pointer_declarator "*pbVar9" * identifier) ;) (declaration "byte *pbVar10;" type_identifier (pointer_declarator "*pbVar10" * identifier) ;) (declaration "uint uVar11;" type_identifier identifier ;) (declaration "int iVar12;" primitive_type identifier ;) (declaration "bool bVar13;" primitive_type identifier ;) (declaration "bool bVar14;" primitive_type identifier ;) (declaration "bool bVar15;" primitive_type identifier ;) (declaration "byte bVar16;" type_identifier identifier ;) (declaration "uint local_5c;" type_identifier identifier ;) (declaration "int iStack_58;" primitive_type identifier ;) (declaration "uint local_54;" type_identifier identifier ;) (declaration "int iStack_50;" primitive_type identifier ;) (declaration "uint uStack_44;" type_identifier identifier ;) (declaration "int iStack_40;" primitive_type identifier ;) (declaration "int iStack_3c;" primitive_type identifier ;) (declaration "int iStack_38;" primitive_type identifier ;) (declaration "char acStack_26 [18];" primitive_type (array_declarator "acStack_26 [18]" identifier [ number_literal ]) ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (expression_statement "bVar16 = 0;" (assignment_expression "bVar16 = 0" identifier = number_literal) ;) (expression_statement "uStack_14 = 0x1fe39;" (assignment_expression "uStack_14 = 0x1fe39" identifier = number_literal) ;) (expression_statement "bVar13 = false;" (assignment_expression "bVar13 = false" identifier = false) ;) (expression_statement "bVar15 = DAT_000897dc == 0;" (assignment_expression "bVar15 = DAT_000897dc == 0" identifier = (binary_expression "DAT_000897dc == 0" identifier == number_literal)) ;) (if_statement "if (!bVar15) {\n    return 0;\n  }" if (parenthesized_expression "(!bVar15)" ( (unary_expression "!bVar15" ! identifier) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "iVar4 = 9;" (assignment_expression "iVar4 = 9" identifier = number_literal) ;) (expression_statement "pbVar9 = (byte *)*DAT_0008973c;" (assignment_expression "pbVar9 = (byte *)*DAT_0008973c" identifier = (cast_expression "(byte *)*DAT_0008973c" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*DAT_0008973c" * identifier))) ;) (expression_statement "pbVar7 = pbVar9;" (assignment_expression "pbVar7 = pbVar9" identifier = identifier) ;) (expression_statement "pbVar10 = (byte *)".eh_frame";" (assignment_expression "pbVar10 = (byte *)".eh_frame"" identifier = (cast_expression "(byte *)".eh_frame"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal "".eh_frame"" " string_content "))) ;) (do_statement "do {\n    if (iVar4 == 0) break;\n    iVar4 = iVar4 + -1;\n    bVar13 = *pbVar7 < *pbVar10;\n    bVar15 = *pbVar7 == *pbVar10;\n    pbVar7 = pbVar7 + 1;\n    pbVar10 = pbVar10 + 1;\n  } while (bVar15);" do (compound_statement "{\n    if (iVar4 == 0) break;\n    iVar4 = iVar4 + -1;\n    bVar13 = *pbVar7 < *pbVar10;\n    bVar15 = *pbVar7 == *pbVar10;\n    pbVar7 = pbVar7 + 1;\n    pbVar10 = pbVar10 + 1;\n  }" { (if_statement "if (iVar4 == 0) break;" if (parenthesized_expression "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar4 = iVar4 + -1;" (assignment_expression "iVar4 = iVar4 + -1" identifier = (binary_expression "iVar4 + -1" identifier + number_literal)) ;) (expression_statement "bVar13 = *pbVar7 < *pbVar10;" (assignment_expression "bVar13 = *pbVar7 < *pbVar10" identifier = (binary_expression "*pbVar7 < *pbVar10" (pointer_expression "*pbVar7" * identifier) < (pointer_expression "*pbVar10" * identifier))) ;) (expression_statement "bVar15 = *pbVar7 == *pbVar10;" (assignment_expression "bVar15 = *pbVar7 == *pbVar10" identifier = (binary_expression "*pbVar7 == *pbVar10" (pointer_expression "*pbVar7" * identifier) == (pointer_expression "*pbVar10" * identifier))) ;) (expression_statement "pbVar7 = pbVar7 + 1;" (assignment_expression "pbVar7 = pbVar7 + 1" identifier = (binary_expression "pbVar7 + 1" identifier + number_literal)) ;) (expression_statement "pbVar10 = pbVar10 + 1;" (assignment_expression "pbVar10 = pbVar10 + 1" identifier = (binary_expression "pbVar10 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(bVar15)" ( identifier )) ;) (expression_statement "bVar14 = false;" (assignment_expression "bVar14 = false" identifier = false) ;) (expression_statement "bVar13 = (!bVar13 && !bVar15) == bVar13;" (assignment_expression "bVar13 = (!bVar13 && !bVar15) == bVar13" identifier = (binary_expression "(!bVar13 && !bVar15) == bVar13" (parenthesized_expression "(!bVar13 && !bVar15)" ( (binary_expression "!bVar13 && !bVar15" (unary_expression "!bVar13" ! identifier) && (unary_expression "!bVar15" ! identifier)) )) == identifier)) ;) (if_statement "if (bVar13) {\n    bVar14 = pbVar9[9] < 0x5f;\n    bVar13 = pbVar9[9] == 0x5f;\n    piVar6 = &DAT_000889e0;\n    if (bVar13) goto LAB_0001fe74;\n    if (DAT_000889e0 == 0) goto LAB_0001fe99;\n  }\n  else {\nLAB_0001fe74:\n    iVar4 = 0xc;\n    pbVar7 = (byte *)".debug_frame";\n    do {\n      if (iVar4 == 0) break;\n      iVar4 = iVar4 + -1;\n      bVar14 = *pbVar9 < *pbVar7;\n      bVar13 = *pbVar9 == *pbVar7;\n      pbVar9 = pbVar9 + 1;\n      pbVar7 = pbVar7 + 1;\n    } while (bVar13);\n    if ((!bVar14 && !bVar13) != bVar14) {\n      return 0;\n    }\n    piVar6 = &DAT_000889a0;\n    if (DAT_000889a0 == 0) goto LAB_0001fe99;\n  }" if (parenthesized_expression "(bVar13)" ( identifier )) (compound_statement "{\n    bVar14 = pbVar9[9] < 0x5f;\n    bVar13 = pbVar9[9] == 0x5f;\n    piVar6 = &DAT_000889e0;\n    if (bVar13) goto LAB_0001fe74;\n    if (DAT_000889e0 == 0) goto LAB_0001fe99;\n  }" { (expression_statement "bVar14 = pbVar9[9] < 0x5f;" (assignment_expression "bVar14 = pbVar9[9] < 0x5f" identifier = (binary_expression "pbVar9[9] < 0x5f" (subscript_expression "pbVar9[9]" identifier [ number_literal ]) < number_literal)) ;) (expression_statement "bVar13 = pbVar9[9] == 0x5f;" (assignment_expression "bVar13 = pbVar9[9] == 0x5f" identifier = (binary_expression "pbVar9[9] == 0x5f" (subscript_expression "pbVar9[9]" identifier [ number_literal ]) == number_literal)) ;) (expression_statement "piVar6 = &DAT_000889e0;" (assignment_expression "piVar6 = &DAT_000889e0" identifier = (pointer_expression "&DAT_000889e0" & identifier)) ;) (if_statement "if (bVar13) goto LAB_0001fe74;" if (parenthesized_expression "(bVar13)" ( identifier )) (goto_statement "goto LAB_0001fe74;" goto statement_identifier ;)) (if_statement "if (DAT_000889e0 == 0) goto LAB_0001fe99;" if (parenthesized_expression "(DAT_000889e0 == 0)" ( (binary_expression "DAT_000889e0 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0001fe99;" goto statement_identifier ;)) }) (else_clause "else {\nLAB_0001fe74:\n    iVar4 = 0xc;\n    pbVar7 = (byte *)".debug_frame";\n    do {\n      if (iVar4 == 0) break;\n      iVar4 = iVar4 + -1;\n      bVar14 = *pbVar9 < *pbVar7;\n      bVar13 = *pbVar9 == *pbVar7;\n      pbVar9 = pbVar9 + 1;\n      pbVar7 = pbVar7 + 1;\n    } while (bVar13);\n    if ((!bVar14 && !bVar13) != bVar14) {\n      return 0;\n    }\n    piVar6 = &DAT_000889a0;\n    if (DAT_000889a0 == 0) goto LAB_0001fe99;\n  }" else (compound_statement "{\nLAB_0001fe74:\n    iVar4 = 0xc;\n    pbVar7 = (byte *)".debug_frame";\n    do {\n      if (iVar4 == 0) break;\n      iVar4 = iVar4 + -1;\n      bVar14 = *pbVar9 < *pbVar7;\n      bVar13 = *pbVar9 == *pbVar7;\n      pbVar9 = pbVar9 + 1;\n      pbVar7 = pbVar7 + 1;\n    } while (bVar13);\n    if ((!bVar14 && !bVar13) != bVar14) {\n      return 0;\n    }\n    piVar6 = &DAT_000889a0;\n    if (DAT_000889a0 == 0) goto LAB_0001fe99;\n  }" { (labeled_statement "LAB_0001fe74:\n    iVar4 = 0xc;" statement_identifier : (expression_statement "iVar4 = 0xc;" (assignment_expression "iVar4 = 0xc" identifier = number_literal) ;)) (expression_statement "pbVar7 = (byte *)".debug_frame";" (assignment_expression "pbVar7 = (byte *)".debug_frame"" identifier = (cast_expression "(byte *)".debug_frame"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal "".debug_frame"" " string_content "))) ;) (do_statement "do {\n      if (iVar4 == 0) break;\n      iVar4 = iVar4 + -1;\n      bVar14 = *pbVar9 < *pbVar7;\n      bVar13 = *pbVar9 == *pbVar7;\n      pbVar9 = pbVar9 + 1;\n      pbVar7 = pbVar7 + 1;\n    } while (bVar13);" do (compound_statement "{\n      if (iVar4 == 0) break;\n      iVar4 = iVar4 + -1;\n      bVar14 = *pbVar9 < *pbVar7;\n      bVar13 = *pbVar9 == *pbVar7;\n      pbVar9 = pbVar9 + 1;\n      pbVar7 = pbVar7 + 1;\n    }" { (if_statement "if (iVar4 == 0) break;" if (parenthesized_expression "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar4 = iVar4 + -1;" (assignment_expression "iVar4 = iVar4 + -1" identifier = (binary_expression "iVar4 + -1" identifier + number_literal)) ;) (expression_statement "bVar14 = *pbVar9 < *pbVar7;" (assignment_expression "bVar14 = *pbVar9 < *pbVar7" identifier = (binary_expression "*pbVar9 < *pbVar7" (pointer_expression "*pbVar9" * identifier) < (pointer_expression "*pbVar7" * identifier))) ;) (expression_statement "bVar13 = *pbVar9 == *pbVar7;" (assignment_expression "bVar13 = *pbVar9 == *pbVar7" identifier = (binary_expression "*pbVar9 == *pbVar7" (pointer_expression "*pbVar9" * identifier) == (pointer_expression "*pbVar7" * identifier))) ;) (expression_statement "pbVar9 = pbVar9 + 1;" (assignment_expression "pbVar9 = pbVar9 + 1" identifier = (binary_expression "pbVar9 + 1" identifier + number_literal)) ;) (expression_statement "pbVar7 = pbVar7 + 1;" (assignment_expression "pbVar7 = pbVar7 + 1" identifier = (binary_expression "pbVar7 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(bVar13)" ( identifier )) ;) (if_statement "if ((!bVar14 && !bVar13) != bVar14) {\n      return 0;\n    }" if (parenthesized_expression "((!bVar14 && !bVar13) != bVar14)" ( (binary_expression "(!bVar14 && !bVar13) != bVar14" (parenthesized_expression "(!bVar14 && !bVar13)" ( (binary_expression "!bVar14 && !bVar13" (unary_expression "!bVar14" ! identifier) && (unary_expression "!bVar13" ! identifier)) )) != identifier) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "piVar6 = &DAT_000889a0;" (assignment_expression "piVar6 = &DAT_000889a0" identifier = (pointer_expression "&DAT_000889a0" & identifier)) ;) (if_statement "if (DAT_000889a0 == 0) goto LAB_0001fe99;" if (parenthesized_expression "(DAT_000889a0 == 0)" ( (binary_expression "DAT_000889a0 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0001fe99;" goto statement_identifier ;)) }))) (expression_statement "iVar4 = FUN_000386c0(piVar6[4]);" (assignment_expression "iVar4 = FUN_000386c0(piVar6[4])" identifier = (call_expression "FUN_000386c0(piVar6[4])" identifier (argument_list "(piVar6[4])" ( (subscript_expression "piVar6[4]" identifier [ number_literal ]) )))) ;) (if_statement "if (iVar4 != 0) {\n    *piVar6 = 0;\nLAB_0001fe99:\n    if ((*param_2 == 4) &&\n       ((((char)param_1[4] == '\x03' || ((char)param_1[4] == '\x14')) &&\n        (iVar4 = FUN_000386c0(*param_1), iVar4 == 0)))) {\n      *piVar6 = 1;\n      piVar6[4] = *param_1;\n      return 0;\n    }\n    return 0;\n  }" if (parenthesized_expression "(iVar4 != 0)" ( (binary_expression "iVar4 != 0" identifier != number_literal) )) (compound_statement "{\n    *piVar6 = 0;\nLAB_0001fe99:\n    if ((*param_2 == 4) &&\n       ((((char)param_1[4] == '\x03' || ((char)param_1[4] == '\x14')) &&\n        (iVar4 = FUN_000386c0(*param_1), iVar4 == 0)))) {\n      *piVar6 = 1;\n      piVar6[4] = *param_1;\n      return 0;\n    }\n    return 0;\n  }" { (expression_statement "*piVar6 = 0;" (assignment_expression "*piVar6 = 0" (pointer_expression "*piVar6" * identifier) = number_literal) ;) (labeled_statement "LAB_0001fe99:\n    if ((*param_2 == 4) &&\n       ((((char)param_1[4] == '\x03' || ((char)param_1[4] == '\x14')) &&\n        (iVar4 = FUN_000386c0(*param_1), iVar4 == 0)))) {\n      *piVar6 = 1;\n      piVar6[4] = *param_1;\n      return 0;\n    }" statement_identifier : (if_statement "if ((*param_2 == 4) &&\n       ((((char)param_1[4] == '\x03' || ((char)param_1[4] == '\x14')) &&\n        (iVar4 = FUN_000386c0(*param_1), iVar4 == 0)))) {\n      *piVar6 = 1;\n      piVar6[4] = *param_1;\n      return 0;\n    }" if (parenthesized_expression "((*param_2 == 4) &&\n       ((((char)param_1[4] == '\x03' || ((char)param_1[4] == '\x14')) &&\n        (iVar4 = FUN_000386c0(*param_1), iVar4 == 0))))" ( (binary_expression "(*param_2 == 4) &&\n       ((((char)param_1[4] == '\x03' || ((char)param_1[4] == '\x14')) &&\n        (iVar4 = FUN_000386c0(*param_1), iVar4 == 0)))" (parenthesized_expression "(*param_2 == 4)" ( (binary_expression "*param_2 == 4" (pointer_expression "*param_2" * identifier) == number_literal) )) && (parenthesized_expression "((((char)param_1[4] == '\x03' || ((char)param_1[4] == '\x14')) &&\n        (iVar4 = FUN_000386c0(*param_1), iVar4 == 0)))" ( (parenthesized_expression "(((char)param_1[4] == '\x03' || ((char)param_1[4] == '\x14')) &&\n        (iVar4 = FUN_000386c0(*param_1), iVar4 == 0))" ( (binary_expression "((char)param_1[4] == '\x03' || ((char)param_1[4] == '\x14')) &&\n        (iVar4 = FUN_000386c0(*param_1), iVar4 == 0)" (parenthesized_expression "((char)param_1[4] == '\x03' || ((char)param_1[4] == '\x14'))" ( (binary_expression "(char)param_1[4] == '\x03' || ((char)param_1[4] == '\x14')" (binary_expression "(char)param_1[4] == '\x03'" (cast_expression "(char)param_1[4]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "param_1[4]" identifier [ number_literal ])) == (char_literal "'\x03'" ' escape_sequence ')) || (parenthesized_expression "((char)param_1[4] == '\x14')" ( (binary_expression "(char)param_1[4] == '\x14'" (cast_expression "(char)param_1[4]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "param_1[4]" identifier [ number_literal ])) == (char_literal "'\x14'" ' escape_sequence ')) ))) )) && (parenthesized_expression "(iVar4 = FUN_000386c0(*param_1), iVar4 == 0)" ( (comma_expression "iVar4 = FUN_000386c0(*param_1), iVar4 == 0" (assignment_expression "iVar4 = FUN_000386c0(*param_1)" identifier = (call_expression "FUN_000386c0(*param_1)" identifier (argument_list "(*param_1)" ( (pointer_expression "*param_1" * identifier) )))) , (binary_expression "iVar4 == 0" identifier == number_literal)) ))) )) ))) )) (compound_statement "{\n      *piVar6 = 1;\n      piVar6[4] = *param_1;\n      return 0;\n    }" { (expression_statement "*piVar6 = 1;" (assignment_expression "*piVar6 = 1" (pointer_expression "*piVar6" * identifier) = number_literal) ;) (expression_statement "piVar6[4] = *param_1;" (assignment_expression "piVar6[4] = *param_1" (subscript_expression "piVar6[4]" identifier [ number_literal ]) = (pointer_expression "*param_1" * identifier)) ;) (return_statement "return 0;" return number_literal ;) }))) (return_statement "return 0;" return number_literal ;) })) (switch_statement "switch(*piVar6) {\n  case 0:\n    goto LAB_0001fe99;\n  case 1:\n  case 2:\n    *piVar6 = *piVar6 + 1;\n    return 0;\n  case 3:\n    break;\n  case 4:\n    if (*param_2 == -1) {\n      if ((char)param_1[4] != '\x02') goto code_r0x0001ffb8;\n      local_54 = param_1[2];\n      *piVar6 = 5;\n      piVar6[7] = local_54;\n    }\n    else {\n      if ((*param_2 != 1) || ((char)param_1[4] != '\x02')) {\ncode_r0x0001ffb8:\n        *piVar6 = 8;\n        return 0;\n      }\n      uVar8 = param_1[2];\n      local_54 = (uVar8 & 0x7f) << ((byte)piVar6[8] & 0x1f) | piVar6[7];\n      piVar6[7] = local_54;\n      piVar6[8] = piVar6[8] + 7;\n      if ((char)uVar8 < '\0') {\n        return 0;\n      }\n      *piVar6 = 5;\n    }\n    if (local_54 != 0) {\n      return 0;\n    }\n    *piVar6 = 6;\n    return 0;\n  case 5:\n    if (*param_2 < 0) {\ncode_r0x0001ff8e:\n      *piVar6 = 8;\n      return 0;\n    }\n    iVar4 = piVar6[7] - *param_2;\n    piVar6[7] = iVar4;\n    if (iVar4 != 0) {\n      if (-1 < iVar4) {\n        return 0;\n      }\n      goto code_r0x0001ff8e;\n    }\n    goto code_r0x00020108;\n  case 6:\n    if (*param_2 != 1) {\n      return 0;\n    }\n    if ((char)param_1[4] != '\x02') {\n      return 0;\n    }\n    if (param_1[2] != 4 || param_1[3] != 0) {\n      return 0;\n    }\n    FUN_000249b0(1);\n    *piVar6 = 7;\n    piVar6[5] = DAT_000898a0;\n    iVar4 = FUN_00024dc0();\n    piVar6[6] = iVar4;\n    return 0;\n  case 7:\n    *piVar6 = 6;\n    if (*param_2 != 4) {\n      return 0;\n    }\n    cVar5 = (char)param_1[4];\n    if (cVar5 == '\x02') {\n      uVar8 = param_1[2];\n      iVar4 = param_1[3];\n      if ((int)(uint)(0x3f < uVar8) <= -iVar4) {\n        *(byte *)(piVar6[5] + 0x68 + piVar6[6]) = (byte)uVar8 | 0x40;\n        return 1;\n      }\n      if (-iVar4 < (int)(uint)(0xff < uVar8)) {\n        if (-iVar4 < (int)(uint)(0xffff < uVar8)) {\n          return 0;\n        }\n        *(undefined1 *)(piVar6[5] + 0x68 + piVar6[6]) = 3;\n        *param_2 = 2;\n        return 0;\n      }\n      *(undefined1 *)(piVar6[5] + 0x68 + piVar6[6]) = 2;\n      *param_2 = 1;\n      return 0;\n    }\n    if (cVar5 == '\x14') {\n      if (piVar6[2] != 1) {\n        return 0;\n      }\n      iVar4 = piVar6[5];\n      iVar12 = piVar6[6];\n      uVar2 = FUN_00021220(param_1);\n      iVar3 = 8;\n    }\n    else {\n      if ((cVar5 != '\v') && (cVar5 != '\x0e')) {\n        return 0;\n      }\n      if ((uint)piVar6[2] < 2) {\n        return 0;\n      }\n      iVar3 = *param_1;\n      if (*(int *)(iVar3 + 4) == 0) {\n        return 0;\n      }\n      iVar4 = param_1[1];\n      if (*(int *)(iVar4 + 4) == 0) {\n        return 0;\n      }\n      if (*(char *)(iVar3 + 0x18) != '\x14') {\n        return 0;\n      }\n      if (*(char *)(iVar4 + 0x18) != '\x02') {\n        return 0;\n      }\n      iVar12 = *(int *)(iVar4 + 0x14);\n      uVar8 = *(uint *)(iVar4 + 0x10);\n      if (cVar5 != '\v') {\n        uVar11 = uVar8 >> 5 & 1;\n        iVar12 = uVar11 << ((byte)uVar8 & 0x1f);\n        uVar8 = (uVar11 ^ 1) << ((byte)uVar8 & 0x1f);\n      }\n      if (iVar12 != 0) {\n        return 0;\n      }\n      if (piVar6[2] != uVar8) {\n        return 0;\n      }\n      iVar4 = piVar6[5];\n      iVar12 = piVar6[6];\n      uVar2 = FUN_00021220(iVar3 + 8);\n      iVar3 = piVar6[2] << 3;\n    }\n    FUN_00024b60(0xc,4,0,iVar3,uVar2,iVar12,iVar12 >> 0x1f,iVar4);\n    return 1;\n  default:\n    return 0;\n  }" switch (parenthesized_expression "(*piVar6)" ( (pointer_expression "*piVar6" * identifier) )) (compound_statement "{\n  case 0:\n    goto LAB_0001fe99;\n  case 1:\n  case 2:\n    *piVar6 = *piVar6 + 1;\n    return 0;\n  case 3:\n    break;\n  case 4:\n    if (*param_2 == -1) {\n      if ((char)param_1[4] != '\x02') goto code_r0x0001ffb8;\n      local_54 = param_1[2];\n      *piVar6 = 5;\n      piVar6[7] = local_54;\n    }\n    else {\n      if ((*param_2 != 1) || ((char)param_1[4] != '\x02')) {\ncode_r0x0001ffb8:\n        *piVar6 = 8;\n        return 0;\n      }\n      uVar8 = param_1[2];\n      local_54 = (uVar8 & 0x7f) << ((byte)piVar6[8] & 0x1f) | piVar6[7];\n      piVar6[7] = local_54;\n      piVar6[8] = piVar6[8] + 7;\n      if ((char)uVar8 < '\0') {\n        return 0;\n      }\n      *piVar6 = 5;\n    }\n    if (local_54 != 0) {\n      return 0;\n    }\n    *piVar6 = 6;\n    return 0;\n  case 5:\n    if (*param_2 < 0) {\ncode_r0x0001ff8e:\n      *piVar6 = 8;\n      return 0;\n    }\n    iVar4 = piVar6[7] - *param_2;\n    piVar6[7] = iVar4;\n    if (iVar4 != 0) {\n      if (-1 < iVar4) {\n        return 0;\n      }\n      goto code_r0x0001ff8e;\n    }\n    goto code_r0x00020108;\n  case 6:\n    if (*param_2 != 1) {\n      return 0;\n    }\n    if ((char)param_1[4] != '\x02') {\n      return 0;\n    }\n    if (param_1[2] != 4 || param_1[3] != 0) {\n      return 0;\n    }\n    FUN_000249b0(1);\n    *piVar6 = 7;\n    piVar6[5] = DAT_000898a0;\n    iVar4 = FUN_00024dc0();\n    piVar6[6] = iVar4;\n    return 0;\n  case 7:\n    *piVar6 = 6;\n    if (*param_2 != 4) {\n      return 0;\n    }\n    cVar5 = (char)param_1[4];\n    if (cVar5 == '\x02') {\n      uVar8 = param_1[2];\n      iVar4 = param_1[3];\n      if ((int)(uint)(0x3f < uVar8) <= -iVar4) {\n        *(byte *)(piVar6[5] + 0x68 + piVar6[6]) = (byte)uVar8 | 0x40;\n        return 1;\n      }\n      if (-iVar4 < (int)(uint)(0xff < uVar8)) {\n        if (-iVar4 < (int)(uint)(0xffff < uVar8)) {\n          return 0;\n        }\n        *(undefined1 *)(piVar6[5] + 0x68 + piVar6[6]) = 3;\n        *param_2 = 2;\n        return 0;\n      }\n      *(undefined1 *)(piVar6[5] + 0x68 + piVar6[6]) = 2;\n      *param_2 = 1;\n      return 0;\n    }\n    if (cVar5 == '\x14') {\n      if (piVar6[2] != 1) {\n        return 0;\n      }\n      iVar4 = piVar6[5];\n      iVar12 = piVar6[6];\n      uVar2 = FUN_00021220(param_1);\n      iVar3 = 8;\n    }\n    else {\n      if ((cVar5 != '\v') && (cVar5 != '\x0e')) {\n        return 0;\n      }\n      if ((uint)piVar6[2] < 2) {\n        return 0;\n      }\n      iVar3 = *param_1;\n      if (*(int *)(iVar3 + 4) == 0) {\n        return 0;\n      }\n      iVar4 = param_1[1];\n      if (*(int *)(iVar4 + 4) == 0) {\n        return 0;\n      }\n      if (*(char *)(iVar3 + 0x18) != '\x14') {\n        return 0;\n      }\n      if (*(char *)(iVar4 + 0x18) != '\x02') {\n        return 0;\n      }\n      iVar12 = *(int *)(iVar4 + 0x14);\n      uVar8 = *(uint *)(iVar4 + 0x10);\n      if (cVar5 != '\v') {\n        uVar11 = uVar8 >> 5 & 1;\n        iVar12 = uVar11 << ((byte)uVar8 & 0x1f);\n        uVar8 = (uVar11 ^ 1) << ((byte)uVar8 & 0x1f);\n      }\n      if (iVar12 != 0) {\n        return 0;\n      }\n      if (piVar6[2] != uVar8) {\n        return 0;\n      }\n      iVar4 = piVar6[5];\n      iVar12 = piVar6[6];\n      uVar2 = FUN_00021220(iVar3 + 8);\n      iVar3 = piVar6[2] << 3;\n    }\n    FUN_00024b60(0xc,4,0,iVar3,uVar2,iVar12,iVar12 >> 0x1f,iVar4);\n    return 1;\n  default:\n    return 0;\n  }" { (case_statement "case 0:\n    goto LAB_0001fe99;" case number_literal : (goto_statement "goto LAB_0001fe99;" goto statement_identifier ;)) (case_statement "case 1:" case number_literal :) (case_statement "case 2:\n    *piVar6 = *piVar6 + 1;\n    return 0;" case number_literal : (expression_statement "*piVar6 = *piVar6 + 1;" (assignment_expression "*piVar6 = *piVar6 + 1" (pointer_expression "*piVar6" * identifier) = (binary_expression "*piVar6 + 1" (pointer_expression "*piVar6" * identifier) + number_literal)) ;) (return_statement "return 0;" return number_literal ;)) (case_statement "case 3:\n    break;" case number_literal : (break_statement "break;" break ;)) (case_statement "case 4:\n    if (*param_2 == -1) {\n      if ((char)param_1[4] != '\x02') goto code_r0x0001ffb8;\n      local_54 = param_1[2];\n      *piVar6 = 5;\n      piVar6[7] = local_54;\n    }\n    else {\n      if ((*param_2 != 1) || ((char)param_1[4] != '\x02')) {\ncode_r0x0001ffb8:\n        *piVar6 = 8;\n        return 0;\n      }\n      uVar8 = param_1[2];\n      local_54 = (uVar8 & 0x7f) << ((byte)piVar6[8] & 0x1f) | piVar6[7];\n      piVar6[7] = local_54;\n      piVar6[8] = piVar6[8] + 7;\n      if ((char)uVar8 < '\0') {\n        return 0;\n      }\n      *piVar6 = 5;\n    }\n    if (local_54 != 0) {\n      return 0;\n    }\n    *piVar6 = 6;\n    return 0;" case number_literal : (if_statement "if (*param_2 == -1) {\n      if ((char)param_1[4] != '\x02') goto code_r0x0001ffb8;\n      local_54 = param_1[2];\n      *piVar6 = 5;\n      piVar6[7] = local_54;\n    }\n    else {\n      if ((*param_2 != 1) || ((char)param_1[4] != '\x02')) {\ncode_r0x0001ffb8:\n        *piVar6 = 8;\n        return 0;\n      }\n      uVar8 = param_1[2];\n      local_54 = (uVar8 & 0x7f) << ((byte)piVar6[8] & 0x1f) | piVar6[7];\n      piVar6[7] = local_54;\n      piVar6[8] = piVar6[8] + 7;\n      if ((char)uVar8 < '\0') {\n        return 0;\n      }\n      *piVar6 = 5;\n    }" if (parenthesized_expression "(*param_2 == -1)" ( (binary_expression "*param_2 == -1" (pointer_expression "*param_2" * identifier) == number_literal) )) (compound_statement "{\n      if ((char)param_1[4] != '\x02') goto code_r0x0001ffb8;\n      local_54 = param_1[2];\n      *piVar6 = 5;\n      piVar6[7] = local_54;\n    }" { (if_statement "if ((char)param_1[4] != '\x02') goto code_r0x0001ffb8;" if (parenthesized_expression "((char)param_1[4] != '\x02')" ( (binary_expression "(char)param_1[4] != '\x02'" (cast_expression "(char)param_1[4]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "param_1[4]" identifier [ number_literal ])) != (char_literal "'\x02'" ' escape_sequence ')) )) (goto_statement "goto code_r0x0001ffb8;" goto statement_identifier ;)) (expression_statement "local_54 = param_1[2];" (assignment_expression "local_54 = param_1[2]" identifier = (subscript_expression "param_1[2]" identifier [ number_literal ])) ;) (expression_statement "*piVar6 = 5;" (assignment_expression "*piVar6 = 5" (pointer_expression "*piVar6" * identifier) = number_literal) ;) (expression_statement "piVar6[7] = local_54;" (assignment_expression "piVar6[7] = local_54" (subscript_expression "piVar6[7]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n      if ((*param_2 != 1) || ((char)param_1[4] != '\x02')) {\ncode_r0x0001ffb8:\n        *piVar6 = 8;\n        return 0;\n      }\n      uVar8 = param_1[2];\n      local_54 = (uVar8 & 0x7f) << ((byte)piVar6[8] & 0x1f) | piVar6[7];\n      piVar6[7] = local_54;\n      piVar6[8] = piVar6[8] + 7;\n      if ((char)uVar8 < '\0') {\n        return 0;\n      }\n      *piVar6 = 5;\n    }" else (compound_statement "{\n      if ((*param_2 != 1) || ((char)param_1[4] != '\x02')) {\ncode_r0x0001ffb8:\n        *piVar6 = 8;\n        return 0;\n      }\n      uVar8 = param_1[2];\n      local_54 = (uVar8 & 0x7f) << ((byte)piVar6[8] & 0x1f) | piVar6[7];\n      piVar6[7] = local_54;\n      piVar6[8] = piVar6[8] + 7;\n      if ((char)uVar8 < '\0') {\n        return 0;\n      }\n      *piVar6 = 5;\n    }" { (if_statement "if ((*param_2 != 1) || ((char)param_1[4] != '\x02')) {\ncode_r0x0001ffb8:\n        *piVar6 = 8;\n        return 0;\n      }" if (parenthesized_expression "((*param_2 != 1) || ((char)param_1[4] != '\x02'))" ( (binary_expression "(*param_2 != 1) || ((char)param_1[4] != '\x02')" (parenthesized_expression "(*param_2 != 1)" ( (binary_expression "*param_2 != 1" (pointer_expression "*param_2" * identifier) != number_literal) )) || (parenthesized_expression "((char)param_1[4] != '\x02')" ( (binary_expression "(char)param_1[4] != '\x02'" (cast_expression "(char)param_1[4]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "param_1[4]" identifier [ number_literal ])) != (char_literal "'\x02'" ' escape_sequence ')) ))) )) (compound_statement "{\ncode_r0x0001ffb8:\n        *piVar6 = 8;\n        return 0;\n      }" { (labeled_statement "code_r0x0001ffb8:\n        *piVar6 = 8;" statement_identifier : (expression_statement "*piVar6 = 8;" (assignment_expression "*piVar6 = 8" (pointer_expression "*piVar6" * identifier) = number_literal) ;)) (return_statement "return 0;" return number_literal ;) })) (expression_statement "uVar8 = param_1[2];" (assignment_expression "uVar8 = param_1[2]" identifier = (subscript_expression "param_1[2]" identifier [ number_literal ])) ;) (expression_statement "local_54 = (uVar8 & 0x7f) << ((byte)piVar6[8] & 0x1f) | piVar6[7];" (assignment_expression "local_54 = (uVar8 & 0x7f) << ((byte)piVar6[8] & 0x1f) | piVar6[7]" identifier = (binary_expression "(uVar8 & 0x7f) << ((byte)piVar6[8] & 0x1f) | piVar6[7]" (binary_expression "(uVar8 & 0x7f) << ((byte)piVar6[8] & 0x1f)" (parenthesized_expression "(uVar8 & 0x7f)" ( (binary_expression "uVar8 & 0x7f" identifier & number_literal) )) << (parenthesized_expression "((byte)piVar6[8] & 0x1f)" ( (binary_expression "(byte)piVar6[8] & 0x1f" (cast_expression "(byte)piVar6[8]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "piVar6[8]" identifier [ number_literal ])) & number_literal) ))) | (subscript_expression "piVar6[7]" identifier [ number_literal ]))) ;) (expression_statement "piVar6[7] = local_54;" (assignment_expression "piVar6[7] = local_54" (subscript_expression "piVar6[7]" identifier [ number_literal ]) = identifier) ;) (expression_statement "piVar6[8] = piVar6[8] + 7;" (assignment_expression "piVar6[8] = piVar6[8] + 7" (subscript_expression "piVar6[8]" identifier [ number_literal ]) = (binary_expression "piVar6[8] + 7" (subscript_expression "piVar6[8]" identifier [ number_literal ]) + number_literal)) ;) (if_statement "if ((char)uVar8 < '\0') {\n        return 0;\n      }" if (parenthesized_expression "((char)uVar8 < '\0')" ( (binary_expression "(char)uVar8 < '\0'" (cast_expression "(char)uVar8" ( (type_descriptor "char" primitive_type) ) identifier) < (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        return 0;\n      }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "*piVar6 = 5;" (assignment_expression "*piVar6 = 5" (pointer_expression "*piVar6" * identifier) = number_literal) ;) }))) (if_statement "if (local_54 != 0) {\n      return 0;\n    }" if (parenthesized_expression "(local_54 != 0)" ( (binary_expression "local_54 != 0" identifier != number_literal) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "*piVar6 = 6;" (assignment_expression "*piVar6 = 6" (pointer_expression "*piVar6" * identifier) = number_literal) ;) (return_statement "return 0;" return number_literal ;)) (case_statement "case 5:\n    if (*param_2 < 0) {\ncode_r0x0001ff8e:\n      *piVar6 = 8;\n      return 0;\n    }\n    iVar4 = piVar6[7] - *param_2;\n    piVar6[7] = iVar4;\n    if (iVar4 != 0) {\n      if (-1 < iVar4) {\n        return 0;\n      }\n      goto code_r0x0001ff8e;\n    }\n    goto code_r0x00020108;" case number_literal : (if_statement "if (*param_2 < 0) {\ncode_r0x0001ff8e:\n      *piVar6 = 8;\n      return 0;\n    }" if (parenthesized_expression "(*param_2 < 0)" ( (binary_expression "*param_2 < 0" (pointer_expression "*param_2" * identifier) < number_literal) )) (compound_statement "{\ncode_r0x0001ff8e:\n      *piVar6 = 8;\n      return 0;\n    }" { (labeled_statement "code_r0x0001ff8e:\n      *piVar6 = 8;" statement_identifier : (expression_statement "*piVar6 = 8;" (assignment_expression "*piVar6 = 8" (pointer_expression "*piVar6" * identifier) = number_literal) ;)) (return_statement "return 0;" return number_literal ;) })) (expression_statement "iVar4 = piVar6[7] - *param_2;" (assignment_expression "iVar4 = piVar6[7] - *param_2" identifier = (binary_expression "piVar6[7] - *param_2" (subscript_expression "piVar6[7]" identifier [ number_literal ]) - (pointer_expression "*param_2" * identifier))) ;) (expression_statement "piVar6[7] = iVar4;" (assignment_expression "piVar6[7] = iVar4" (subscript_expression "piVar6[7]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (iVar4 != 0) {\n      if (-1 < iVar4) {\n        return 0;\n      }\n      goto code_r0x0001ff8e;\n    }" if (parenthesized_expression "(iVar4 != 0)" ( (binary_expression "iVar4 != 0" identifier != number_literal) )) (compound_statement "{\n      if (-1 < iVar4) {\n        return 0;\n      }\n      goto code_r0x0001ff8e;\n    }" { (if_statement "if (-1 < iVar4) {\n        return 0;\n      }" if (parenthesized_expression "(-1 < iVar4)" ( (binary_expression "-1 < iVar4" number_literal < identifier) )) (compound_statement "{\n        return 0;\n      }" { (return_statement "return 0;" return number_literal ;) })) (goto_statement "goto code_r0x0001ff8e;" goto statement_identifier ;) })) (goto_statement "goto code_r0x00020108;" goto statement_identifier ;)) (case_statement "case 6:\n    if (*param_2 != 1) {\n      return 0;\n    }\n    if ((char)param_1[4] != '\x02') {\n      return 0;\n    }\n    if (param_1[2] != 4 || param_1[3] != 0) {\n      return 0;\n    }\n    FUN_000249b0(1);\n    *piVar6 = 7;\n    piVar6[5] = DAT_000898a0;\n    iVar4 = FUN_00024dc0();\n    piVar6[6] = iVar4;\n    return 0;" case number_literal : (if_statement "if (*param_2 != 1) {\n      return 0;\n    }" if (parenthesized_expression "(*param_2 != 1)" ( (binary_expression "*param_2 != 1" (pointer_expression "*param_2" * identifier) != number_literal) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) (if_statement "if ((char)param_1[4] != '\x02') {\n      return 0;\n    }" if (parenthesized_expression "((char)param_1[4] != '\x02')" ( (binary_expression "(char)param_1[4] != '\x02'" (cast_expression "(char)param_1[4]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "param_1[4]" identifier [ number_literal ])) != (char_literal "'\x02'" ' escape_sequence ')) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) (if_statement "if (param_1[2] != 4 || param_1[3] != 0) {\n      return 0;\n    }" if (parenthesized_expression "(param_1[2] != 4 || param_1[3] != 0)" ( (binary_expression "param_1[2] != 4 || param_1[3] != 0" (binary_expression "param_1[2] != 4" (subscript_expression "param_1[2]" identifier [ number_literal ]) != number_literal) || (binary_expression "param_1[3] != 0" (subscript_expression "param_1[3]" identifier [ number_literal ]) != number_literal)) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "FUN_000249b0(1);" (call_expression "FUN_000249b0(1)" identifier (argument_list "(1)" ( number_literal ))) ;) (expression_statement "*piVar6 = 7;" (assignment_expression "*piVar6 = 7" (pointer_expression "*piVar6" * identifier) = number_literal) ;) (expression_statement "piVar6[5] = DAT_000898a0;" (assignment_expression "piVar6[5] = DAT_000898a0" (subscript_expression "piVar6[5]" identifier [ number_literal ]) = identifier) ;) (expression_statement "iVar4 = FUN_00024dc0();" (assignment_expression "iVar4 = FUN_00024dc0()" identifier = (call_expression "FUN_00024dc0()" identifier (argument_list "()" ( )))) ;) (expression_statement "piVar6[6] = iVar4;" (assignment_expression "piVar6[6] = iVar4" (subscript_expression "piVar6[6]" identifier [ number_literal ]) = identifier) ;) (return_statement "return 0;" return number_literal ;)) (case_statement "case 7:\n    *piVar6 = 6;\n    if (*param_2 != 4) {\n      return 0;\n    }\n    cVar5 = (char)param_1[4];\n    if (cVar5 == '\x02') {\n      uVar8 = param_1[2];\n      iVar4 = param_1[3];\n      if ((int)(uint)(0x3f < uVar8) <= -iVar4) {\n        *(byte *)(piVar6[5] + 0x68 + piVar6[6]) = (byte)uVar8 | 0x40;\n        return 1;\n      }\n      if (-iVar4 < (int)(uint)(0xff < uVar8)) {\n        if (-iVar4 < (int)(uint)(0xffff < uVar8)) {\n          return 0;\n        }\n        *(undefined1 *)(piVar6[5] + 0x68 + piVar6[6]) = 3;\n        *param_2 = 2;\n        return 0;\n      }\n      *(undefined1 *)(piVar6[5] + 0x68 + piVar6[6]) = 2;\n      *param_2 = 1;\n      return 0;\n    }\n    if (cVar5 == '\x14') {\n      if (piVar6[2] != 1) {\n        return 0;\n      }\n      iVar4 = piVar6[5];\n      iVar12 = piVar6[6];\n      uVar2 = FUN_00021220(param_1);\n      iVar3 = 8;\n    }\n    else {\n      if ((cVar5 != '\v') && (cVar5 != '\x0e')) {\n        return 0;\n      }\n      if ((uint)piVar6[2] < 2) {\n        return 0;\n      }\n      iVar3 = *param_1;\n      if (*(int *)(iVar3 + 4) == 0) {\n        return 0;\n      }\n      iVar4 = param_1[1];\n      if (*(int *)(iVar4 + 4) == 0) {\n        return 0;\n      }\n      if (*(char *)(iVar3 + 0x18) != '\x14') {\n        return 0;\n      }\n      if (*(char *)(iVar4 + 0x18) != '\x02') {\n        return 0;\n      }\n      iVar12 = *(int *)(iVar4 + 0x14);\n      uVar8 = *(uint *)(iVar4 + 0x10);\n      if (cVar5 != '\v') {\n        uVar11 = uVar8 >> 5 & 1;\n        iVar12 = uVar11 << ((byte)uVar8 & 0x1f);\n        uVar8 = (uVar11 ^ 1) << ((byte)uVar8 & 0x1f);\n      }\n      if (iVar12 != 0) {\n        return 0;\n      }\n      if (piVar6[2] != uVar8) {\n        return 0;\n      }\n      iVar4 = piVar6[5];\n      iVar12 = piVar6[6];\n      uVar2 = FUN_00021220(iVar3 + 8);\n      iVar3 = piVar6[2] << 3;\n    }\n    FUN_00024b60(0xc,4,0,iVar3,uVar2,iVar12,iVar12 >> 0x1f,iVar4);\n    return 1;" case number_literal : (expression_statement "*piVar6 = 6;" (assignment_expression "*piVar6 = 6" (pointer_expression "*piVar6" * identifier) = number_literal) ;) (if_statement "if (*param_2 != 4) {\n      return 0;\n    }" if (parenthesized_expression "(*param_2 != 4)" ( (binary_expression "*param_2 != 4" (pointer_expression "*param_2" * identifier) != number_literal) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "cVar5 = (char)param_1[4];" (assignment_expression "cVar5 = (char)param_1[4]" identifier = (cast_expression "(char)param_1[4]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "param_1[4]" identifier [ number_literal ]))) ;) (if_statement "if (cVar5 == '\x02') {\n      uVar8 = param_1[2];\n      iVar4 = param_1[3];\n      if ((int)(uint)(0x3f < uVar8) <= -iVar4) {\n        *(byte *)(piVar6[5] + 0x68 + piVar6[6]) = (byte)uVar8 | 0x40;\n        return 1;\n      }\n      if (-iVar4 < (int)(uint)(0xff < uVar8)) {\n        if (-iVar4 < (int)(uint)(0xffff < uVar8)) {\n          return 0;\n        }\n        *(undefined1 *)(piVar6[5] + 0x68 + piVar6[6]) = 3;\n        *param_2 = 2;\n        return 0;\n      }\n      *(undefined1 *)(piVar6[5] + 0x68 + piVar6[6]) = 2;\n      *param_2 = 1;\n      return 0;\n    }" if (parenthesized_expression "(cVar5 == '\x02')" ( (binary_expression "cVar5 == '\x02'" identifier == (char_literal "'\x02'" ' escape_sequence ')) )) (compound_statement "{\n      uVar8 = param_1[2];\n      iVar4 = param_1[3];\n      if ((int)(uint)(0x3f < uVar8) <= -iVar4) {\n        *(byte *)(piVar6[5] + 0x68 + piVar6[6]) = (byte)uVar8 | 0x40;\n        return 1;\n      }\n      if (-iVar4 < (int)(uint)(0xff < uVar8)) {\n        if (-iVar4 < (int)(uint)(0xffff < uVar8)) {\n          return 0;\n        }\n        *(undefined1 *)(piVar6[5] + 0x68 + piVar6[6]) = 3;\n        *param_2 = 2;\n        return 0;\n      }\n      *(undefined1 *)(piVar6[5] + 0x68 + piVar6[6]) = 2;\n      *param_2 = 1;\n      return 0;\n    }" { (expression_statement "uVar8 = param_1[2];" (assignment_expression "uVar8 = param_1[2]" identifier = (subscript_expression "param_1[2]" identifier [ number_literal ])) ;) (expression_statement "iVar4 = param_1[3];" (assignment_expression "iVar4 = param_1[3]" identifier = (subscript_expression "param_1[3]" identifier [ number_literal ])) ;) (if_statement "if ((int)(uint)(0x3f < uVar8) <= -iVar4) {\n        *(byte *)(piVar6[5] + 0x68 + piVar6[6]) = (byte)uVar8 | 0x40;\n        return 1;\n      }" if (parenthesized_expression "((int)(uint)(0x3f < uVar8) <= -iVar4)" ( (binary_expression "(int)(uint)(0x3f < uVar8) <= -iVar4" (cast_expression "(int)(uint)(0x3f < uVar8)" ( (type_descriptor "int" primitive_type) ) (call_expression "(uint)(0x3f < uVar8)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(0x3f < uVar8)" ( (binary_expression "0x3f < uVar8" number_literal < identifier) )))) <= (unary_expression "-iVar4" - identifier)) )) (compound_statement "{\n        *(byte *)(piVar6[5] + 0x68 + piVar6[6]) = (byte)uVar8 | 0x40;\n        return 1;\n      }" { (expression_statement "*(byte *)(piVar6[5] + 0x68 + piVar6[6]) = (byte)uVar8 | 0x40;" (assignment_expression "*(byte *)(piVar6[5] + 0x68 + piVar6[6]) = (byte)uVar8 | 0x40" (pointer_expression "*(byte *)(piVar6[5] + 0x68 + piVar6[6])" * (cast_expression "(byte *)(piVar6[5] + 0x68 + piVar6[6])" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar6[5] + 0x68 + piVar6[6])" ( (binary_expression "piVar6[5] + 0x68 + piVar6[6]" (binary_expression "piVar6[5] + 0x68" (subscript_expression "piVar6[5]" identifier [ number_literal ]) + number_literal) + (subscript_expression "piVar6[6]" identifier [ number_literal ])) )))) = (binary_expression "(byte)uVar8 | 0x40" (cast_expression "(byte)uVar8" ( (type_descriptor "byte" type_identifier) ) identifier) | number_literal)) ;) (return_statement "return 1;" return number_literal ;) })) (if_statement "if (-iVar4 < (int)(uint)(0xff < uVar8)) {\n        if (-iVar4 < (int)(uint)(0xffff < uVar8)) {\n          return 0;\n        }\n        *(undefined1 *)(piVar6[5] + 0x68 + piVar6[6]) = 3;\n        *param_2 = 2;\n        return 0;\n      }" if (parenthesized_expression "(-iVar4 < (int)(uint)(0xff < uVar8))" ( (binary_expression "-iVar4 < (int)(uint)(0xff < uVar8)" (unary_expression "-iVar4" - identifier) < (cast_expression "(int)(uint)(0xff < uVar8)" ( (type_descriptor "int" primitive_type) ) (call_expression "(uint)(0xff < uVar8)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(0xff < uVar8)" ( (binary_expression "0xff < uVar8" number_literal < identifier) ))))) )) (compound_statement "{\n        if (-iVar4 < (int)(uint)(0xffff < uVar8)) {\n          return 0;\n        }\n        *(undefined1 *)(piVar6[5] + 0x68 + piVar6[6]) = 3;\n        *param_2 = 2;\n        return 0;\n      }" { (if_statement "if (-iVar4 < (int)(uint)(0xffff < uVar8)) {\n          return 0;\n        }" if (parenthesized_expression "(-iVar4 < (int)(uint)(0xffff < uVar8))" ( (binary_expression "-iVar4 < (int)(uint)(0xffff < uVar8)" (unary_expression "-iVar4" - identifier) < (cast_expression "(int)(uint)(0xffff < uVar8)" ( (type_descriptor "int" primitive_type) ) (call_expression "(uint)(0xffff < uVar8)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(0xffff < uVar8)" ( (binary_expression "0xffff < uVar8" number_literal < identifier) ))))) )) (compound_statement "{\n          return 0;\n        }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "*(undefined1 *)(piVar6[5] + 0x68 + piVar6[6]) = 3;" (assignment_expression "*(undefined1 *)(piVar6[5] + 0x68 + piVar6[6]) = 3" (pointer_expression "*(undefined1 *)(piVar6[5] + 0x68 + piVar6[6])" * (cast_expression "(undefined1 *)(piVar6[5] + 0x68 + piVar6[6])" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar6[5] + 0x68 + piVar6[6])" ( (binary_expression "piVar6[5] + 0x68 + piVar6[6]" (binary_expression "piVar6[5] + 0x68" (subscript_expression "piVar6[5]" identifier [ number_literal ]) + number_literal) + (subscript_expression "piVar6[6]" identifier [ number_literal ])) )))) = number_literal) ;) (expression_statement "*param_2 = 2;" (assignment_expression "*param_2 = 2" (pointer_expression "*param_2" * identifier) = number_literal) ;) (return_statement "return 0;" return number_literal ;) })) (expression_statement "*(undefined1 *)(piVar6[5] + 0x68 + piVar6[6]) = 2;" (assignment_expression "*(undefined1 *)(piVar6[5] + 0x68 + piVar6[6]) = 2" (pointer_expression "*(undefined1 *)(piVar6[5] + 0x68 + piVar6[6])" * (cast_expression "(undefined1 *)(piVar6[5] + 0x68 + piVar6[6])" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar6[5] + 0x68 + piVar6[6])" ( (binary_expression "piVar6[5] + 0x68 + piVar6[6]" (binary_expression "piVar6[5] + 0x68" (subscript_expression "piVar6[5]" identifier [ number_literal ]) + number_literal) + (subscript_expression "piVar6[6]" identifier [ number_literal ])) )))) = number_literal) ;) (expression_statement "*param_2 = 1;" (assignment_expression "*param_2 = 1" (pointer_expression "*param_2" * identifier) = number_literal) ;) (return_statement "return 0;" return number_literal ;) })) (if_statement "if (cVar5 == '\x14') {\n      if (piVar6[2] != 1) {\n        return 0;\n      }\n      iVar4 = piVar6[5];\n      iVar12 = piVar6[6];\n      uVar2 = FUN_00021220(param_1);\n      iVar3 = 8;\n    }\n    else {\n      if ((cVar5 != '\v') && (cVar5 != '\x0e')) {\n        return 0;\n      }\n      if ((uint)piVar6[2] < 2) {\n        return 0;\n      }\n      iVar3 = *param_1;\n      if (*(int *)(iVar3 + 4) == 0) {\n        return 0;\n      }\n      iVar4 = param_1[1];\n      if (*(int *)(iVar4 + 4) == 0) {\n        return 0;\n      }\n      if (*(char *)(iVar3 + 0x18) != '\x14') {\n        return 0;\n      }\n      if (*(char *)(iVar4 + 0x18) != '\x02') {\n        return 0;\n      }\n      iVar12 = *(int *)(iVar4 + 0x14);\n      uVar8 = *(uint *)(iVar4 + 0x10);\n      if (cVar5 != '\v') {\n        uVar11 = uVar8 >> 5 & 1;\n        iVar12 = uVar11 << ((byte)uVar8 & 0x1f);\n        uVar8 = (uVar11 ^ 1) << ((byte)uVar8 & 0x1f);\n      }\n      if (iVar12 != 0) {\n        return 0;\n      }\n      if (piVar6[2] != uVar8) {\n        return 0;\n      }\n      iVar4 = piVar6[5];\n      iVar12 = piVar6[6];\n      uVar2 = FUN_00021220(iVar3 + 8);\n      iVar3 = piVar6[2] << 3;\n    }" if (parenthesized_expression "(cVar5 == '\x14')" ( (binary_expression "cVar5 == '\x14'" identifier == (char_literal "'\x14'" ' escape_sequence ')) )) (compound_statement "{\n      if (piVar6[2] != 1) {\n        return 0;\n      }\n      iVar4 = piVar6[5];\n      iVar12 = piVar6[6];\n      uVar2 = FUN_00021220(param_1);\n      iVar3 = 8;\n    }" { (if_statement "if (piVar6[2] != 1) {\n        return 0;\n      }" if (parenthesized_expression "(piVar6[2] != 1)" ( (binary_expression "piVar6[2] != 1" (subscript_expression "piVar6[2]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n        return 0;\n      }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "iVar4 = piVar6[5];" (assignment_expression "iVar4 = piVar6[5]" identifier = (subscript_expression "piVar6[5]" identifier [ number_literal ])) ;) (expression_statement "iVar12 = piVar6[6];" (assignment_expression "iVar12 = piVar6[6]" identifier = (subscript_expression "piVar6[6]" identifier [ number_literal ])) ;) (expression_statement "uVar2 = FUN_00021220(param_1);" (assignment_expression "uVar2 = FUN_00021220(param_1)" identifier = (call_expression "FUN_00021220(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (expression_statement "iVar3 = 8;" (assignment_expression "iVar3 = 8" identifier = number_literal) ;) }) (else_clause "else {\n      if ((cVar5 != '\v') && (cVar5 != '\x0e')) {\n        return 0;\n      }\n      if ((uint)piVar6[2] < 2) {\n        return 0;\n      }\n      iVar3 = *param_1;\n      if (*(int *)(iVar3 + 4) == 0) {\n        return 0;\n      }\n      iVar4 = param_1[1];\n      if (*(int *)(iVar4 + 4) == 0) {\n        return 0;\n      }\n      if (*(char *)(iVar3 + 0x18) != '\x14') {\n        return 0;\n      }\n      if (*(char *)(iVar4 + 0x18) != '\x02') {\n        return 0;\n      }\n      iVar12 = *(int *)(iVar4 + 0x14);\n      uVar8 = *(uint *)(iVar4 + 0x10);\n      if (cVar5 != '\v') {\n        uVar11 = uVar8 >> 5 & 1;\n        iVar12 = uVar11 << ((byte)uVar8 & 0x1f);\n        uVar8 = (uVar11 ^ 1) << ((byte)uVar8 & 0x1f);\n      }\n      if (iVar12 != 0) {\n        return 0;\n      }\n      if (piVar6[2] != uVar8) {\n        return 0;\n      }\n      iVar4 = piVar6[5];\n      iVar12 = piVar6[6];\n      uVar2 = FUN_00021220(iVar3 + 8);\n      iVar3 = piVar6[2] << 3;\n    }" else (compound_statement "{\n      if ((cVar5 != '\v') && (cVar5 != '\x0e')) {\n        return 0;\n      }\n      if ((uint)piVar6[2] < 2) {\n        return 0;\n      }\n      iVar3 = *param_1;\n      if (*(int *)(iVar3 + 4) == 0) {\n        return 0;\n      }\n      iVar4 = param_1[1];\n      if (*(int *)(iVar4 + 4) == 0) {\n        return 0;\n      }\n      if (*(char *)(iVar3 + 0x18) != '\x14') {\n        return 0;\n      }\n      if (*(char *)(iVar4 + 0x18) != '\x02') {\n        return 0;\n      }\n      iVar12 = *(int *)(iVar4 + 0x14);\n      uVar8 = *(uint *)(iVar4 + 0x10);\n      if (cVar5 != '\v') {\n        uVar11 = uVar8 >> 5 & 1;\n        iVar12 = uVar11 << ((byte)uVar8 & 0x1f);\n        uVar8 = (uVar11 ^ 1) << ((byte)uVar8 & 0x1f);\n      }\n      if (iVar12 != 0) {\n        return 0;\n      }\n      if (piVar6[2] != uVar8) {\n        return 0;\n      }\n      iVar4 = piVar6[5];\n      iVar12 = piVar6[6];\n      uVar2 = FUN_00021220(iVar3 + 8);\n      iVar3 = piVar6[2] << 3;\n    }" { (if_statement "if ((cVar5 != '\v') && (cVar5 != '\x0e')) {\n        return 0;\n      }" if (parenthesized_expression "((cVar5 != '\v') && (cVar5 != '\x0e'))" ( (binary_expression "(cVar5 != '\v') && (cVar5 != '\x0e')" (parenthesized_expression "(cVar5 != '\v')" ( (binary_expression "cVar5 != '\v'" identifier != (char_literal "'\v'" ' escape_sequence ')) )) && (parenthesized_expression "(cVar5 != '\x0e')" ( (binary_expression "cVar5 != '\x0e'" identifier != (char_literal "'\x0e'" ' escape_sequence ')) ))) )) (compound_statement "{\n        return 0;\n      }" { (return_statement "return 0;" return number_literal ;) })) (if_statement "if ((uint)piVar6[2] < 2) {\n        return 0;\n      }" if (parenthesized_expression "((uint)piVar6[2] < 2)" ( (binary_expression "(uint)piVar6[2] < 2" (cast_expression "(uint)piVar6[2]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "piVar6[2]" identifier [ number_literal ])) < number_literal) )) (compound_statement "{\n        return 0;\n      }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "iVar3 = *param_1;" (assignment_expression "iVar3 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (if_statement "if (*(int *)(iVar3 + 4) == 0) {\n        return 0;\n      }" if (parenthesized_expression "(*(int *)(iVar3 + 4) == 0)" ( (binary_expression "*(int *)(iVar3 + 4) == 0" (pointer_expression "*(int *)(iVar3 + 4)" * (cast_expression "(int *)(iVar3 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 4)" ( (binary_expression "iVar3 + 4" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n        return 0;\n      }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "iVar4 = param_1[1];" (assignment_expression "iVar4 = param_1[1]" identifier = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) (if_statement "if (*(int *)(iVar4 + 4) == 0) {\n        return 0;\n      }" if (parenthesized_expression "(*(int *)(iVar4 + 4) == 0)" ( (binary_expression "*(int *)(iVar4 + 4) == 0" (pointer_expression "*(int *)(iVar4 + 4)" * (cast_expression "(int *)(iVar4 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 4)" ( (binary_expression "iVar4 + 4" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n        return 0;\n      }" { (return_statement "return 0;" return number_literal ;) })) (if_statement "if (*(char *)(iVar3 + 0x18) != '\x14') {\n        return 0;\n      }" if (parenthesized_expression "(*(char *)(iVar3 + 0x18) != '\x14')" ( (binary_expression "*(char *)(iVar3 + 0x18) != '\x14'" (pointer_expression "*(char *)(iVar3 + 0x18)" * (cast_expression "(char *)(iVar3 + 0x18)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x18)" ( (binary_expression "iVar3 + 0x18" identifier + number_literal) )))) != (char_literal "'\x14'" ' escape_sequence ')) )) (compound_statement "{\n        return 0;\n      }" { (return_statement "return 0;" return number_literal ;) })) (if_statement "if (*(char *)(iVar4 + 0x18) != '\x02') {\n        return 0;\n      }" if (parenthesized_expression "(*(char *)(iVar4 + 0x18) != '\x02')" ( (binary_expression "*(char *)(iVar4 + 0x18) != '\x02'" (pointer_expression "*(char *)(iVar4 + 0x18)" * (cast_expression "(char *)(iVar4 + 0x18)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x18)" ( (binary_expression "iVar4 + 0x18" identifier + number_literal) )))) != (char_literal "'\x02'" ' escape_sequence ')) )) (compound_statement "{\n        return 0;\n      }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "iVar12 = *(int *)(iVar4 + 0x14);" (assignment_expression "iVar12 = *(int *)(iVar4 + 0x14)" identifier = (pointer_expression "*(int *)(iVar4 + 0x14)" * (cast_expression "(int *)(iVar4 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x14)" ( (binary_expression "iVar4 + 0x14" identifier + number_literal) ))))) ;) (expression_statement "uVar8 = *(uint *)(iVar4 + 0x10);" (assignment_expression "uVar8 = *(uint *)(iVar4 + 0x10)" identifier = (pointer_expression "*(uint *)(iVar4 + 0x10)" * (cast_expression "(uint *)(iVar4 + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x10)" ( (binary_expression "iVar4 + 0x10" identifier + number_literal) ))))) ;) (if_statement "if (cVar5 != '\v') {\n        uVar11 = uVar8 >> 5 & 1;\n        iVar12 = uVar11 << ((byte)uVar8 & 0x1f);\n        uVar8 = (uVar11 ^ 1) << ((byte)uVar8 & 0x1f);\n      }" if (parenthesized_expression "(cVar5 != '\v')" ( (binary_expression "cVar5 != '\v'" identifier != (char_literal "'\v'" ' escape_sequence ')) )) (compound_statement "{\n        uVar11 = uVar8 >> 5 & 1;\n        iVar12 = uVar11 << ((byte)uVar8 & 0x1f);\n        uVar8 = (uVar11 ^ 1) << ((byte)uVar8 & 0x1f);\n      }" { (expression_statement "uVar11 = uVar8 >> 5 & 1;" (assignment_expression "uVar11 = uVar8 >> 5 & 1" identifier = (binary_expression "uVar8 >> 5 & 1" (binary_expression "uVar8 >> 5" identifier >> number_literal) & number_literal)) ;) (expression_statement "iVar12 = uVar11 << ((byte)uVar8 & 0x1f);" (assignment_expression "iVar12 = uVar11 << ((byte)uVar8 & 0x1f)" identifier = (binary_expression "uVar11 << ((byte)uVar8 & 0x1f)" identifier << (parenthesized_expression "((byte)uVar8 & 0x1f)" ( (binary_expression "(byte)uVar8 & 0x1f" (cast_expression "(byte)uVar8" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )))) ;) (expression_statement "uVar8 = (uVar11 ^ 1) << ((byte)uVar8 & 0x1f);" (assignment_expression "uVar8 = (uVar11 ^ 1) << ((byte)uVar8 & 0x1f)" identifier = (binary_expression "(uVar11 ^ 1) << ((byte)uVar8 & 0x1f)" (parenthesized_expression "(uVar11 ^ 1)" ( (binary_expression "uVar11 ^ 1" identifier ^ number_literal) )) << (parenthesized_expression "((byte)uVar8 & 0x1f)" ( (binary_expression "(byte)uVar8 & 0x1f" (cast_expression "(byte)uVar8" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )))) ;) })) (if_statement "if (iVar12 != 0) {\n        return 0;\n      }" if (parenthesized_expression "(iVar12 != 0)" ( (binary_expression "iVar12 != 0" identifier != number_literal) )) (compound_statement "{\n        return 0;\n      }" { (return_statement "return 0;" return number_literal ;) })) (if_statement "if (piVar6[2] != uVar8) {\n        return 0;\n      }" if (parenthesized_expression "(piVar6[2] != uVar8)" ( (binary_expression "piVar6[2] != uVar8" (subscript_expression "piVar6[2]" identifier [ number_literal ]) != identifier) )) (compound_statement "{\n        return 0;\n      }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "iVar4 = piVar6[5];" (assignment_expression "iVar4 = piVar6[5]" identifier = (subscript_expression "piVar6[5]" identifier [ number_literal ])) ;) (expression_statement "iVar12 = piVar6[6];" (assignment_expression "iVar12 = piVar6[6]" identifier = (subscript_expression "piVar6[6]" identifier [ number_literal ])) ;) (expression_statement "uVar2 = FUN_00021220(iVar3 + 8);" (assignment_expression "uVar2 = FUN_00021220(iVar3 + 8)" identifier = (call_expression "FUN_00021220(iVar3 + 8)" identifier (argument_list "(iVar3 + 8)" ( (binary_expression "iVar3 + 8" identifier + number_literal) )))) ;) (expression_statement "iVar3 = piVar6[2] << 3;" (assignment_expression "iVar3 = piVar6[2] << 3" identifier = (binary_expression "piVar6[2] << 3" (subscript_expression "piVar6[2]" identifier [ number_literal ]) << number_literal)) ;) }))) (expression_statement "FUN_00024b60(0xc,4,0,iVar3,uVar2,iVar12,iVar12 >> 0x1f,iVar4);" (call_expression "FUN_00024b60(0xc,4,0,iVar3,uVar2,iVar12,iVar12 >> 0x1f,iVar4)" identifier (argument_list "(0xc,4,0,iVar3,uVar2,iVar12,iVar12 >> 0x1f,iVar4)" ( number_literal , number_literal , number_literal , identifier , identifier , identifier , (binary_expression "iVar12 >> 0x1f" identifier >> number_literal) , identifier ))) ;) (return_statement "return 1;" return number_literal ;)) (case_statement "default:\n    return 0;" default : (return_statement "return 0;" return number_literal ;)) })) (if_statement "if (piVar6[1] != 0) goto code_r0x0001ffd7;" if (parenthesized_expression "(piVar6[1] != 0)" ( (binary_expression "piVar6[1] != 0" (subscript_expression "piVar6[1]" identifier [ number_literal ]) != number_literal) )) (goto_statement "goto code_r0x0001ffd7;" goto statement_identifier ;)) (expression_statement "iStack_50 = **(int **)DAT_0008973c[0x20];" (assignment_expression "iStack_50 = **(int **)DAT_0008973c[0x20]" identifier = (pointer_expression "**(int **)DAT_0008973c[0x20]" * (pointer_expression "*(int **)DAT_0008973c[0x20]" * (cast_expression "(int **)DAT_0008973c[0x20]" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (subscript_expression "DAT_0008973c[0x20]" identifier [ number_literal ]))))) ;) (if_statement "if (iStack_50 != 0) {\n    uVar8 = *(uint *)(iStack_50 + 0x10);\n    iVar4 = *(int *)(iStack_50 + 0x14);\n    if (-iVar4 < (int)(uint)(4 < uVar8)) {\n      local_5c = 4;\n      iVar12 = 0;\n    }\n    else {\n      local_5c = 4;\n      do {\n        iStack_50 = *(int *)(iStack_50 + 0x30);\n        local_5c = local_5c - uVar8;\n        if (iStack_50 == 0) goto code_r0x00020226;\n        uVar8 = *(uint *)(iStack_50 + 0x10);\n        iVar4 = *(int *)(iStack_50 + 0x14);\n        iVar12 = (int)local_5c >> 0x1f;\n      } while ((SBORROW4(iVar12,iVar4) != SBORROW4(iVar12 - iVar4,(uint)(local_5c < uVar8))) ==\n               (int)((iVar12 - iVar4) - (uint)(local_5c < uVar8)) < 0);\n    }\n    iVar4 = (iVar4 - iVar12) - (uint)(uVar8 < local_5c);\n    uVar8 = (uint)(3 < uVar8 - local_5c);\n    bVar13 = iVar4 != 0 || (uint)-iVar4 < uVar8;\n    bVar15 = -uVar8 == iVar4;\n    if (-iVar4 < (int)uVar8) {\n      iVar4 = 0xc;\n      pbVar9 = (byte *)*DAT_0008973c;\n      pbVar7 = (byte *)".debug_frame";\n      do {\n        if (iVar4 == 0) break;\n        iVar4 = iVar4 + -1;\n        bVar13 = *pbVar9 < *pbVar7;\n        bVar15 = *pbVar9 == *pbVar7;\n        pbVar9 = pbVar9 + (uint)bVar16 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar16 * -2 + 1;\n      } while (bVar15);\n      cVar5 = -((!bVar13 && !bVar15) == bVar13);\n      if ((((*(char *)(iStack_50 + 0x68 + local_5c) == cVar5) &&\n           (*(char *)(iStack_50 + 0x69 + local_5c) == cVar5)) &&\n          (*(char *)(iStack_50 + 0x6a + local_5c) == cVar5)) &&\n         (*(char *)(iStack_50 + 0x6b + local_5c) == cVar5)) {\n        local_5c = local_5c + 4;\n        do {\n          iVar4 = (int)local_5c >> 0x1f;\n          iStack_40 = *(int *)(iStack_50 + 0x14);\n          uStack_44 = *(uint *)(iStack_50 + 0x10);\n          if ((SBORROW4(iVar4,iStack_40) != SBORROW4(iVar4 - iStack_40,(uint)(local_5c < uStack_44))\n              ) != (int)((iVar4 - iStack_40) - (uint)(local_5c < uStack_44)) < 0) {\n            if (((int)(uint)(uStack_44 != local_5c) <=\n                 (int)-((iStack_40 - iVar4) - (uint)(uStack_44 < local_5c))) ||\n               (*(char *)(iStack_50 + 0x68 + local_5c) != '\x01')) goto code_r0x00020226;\n            uVar8 = local_5c + 1;\n            iStack_38 = 0;\n            iVar4 = (*(int **)DAT_0008973c[0x20])[4];\n            goto code_r0x0002044e;\n          }\n          local_5c = local_5c - uStack_44;\n          iStack_50 = *(int *)(iStack_50 + 0x30);\n        } while (iStack_50 != 0);\n        piVar6[1] = 0;\n        goto code_r0x0002022d;\n      }\n    }\n  }" if (parenthesized_expression "(iStack_50 != 0)" ( (binary_expression "iStack_50 != 0" identifier != number_literal) )) (compound_statement "{\n    uVar8 = *(uint *)(iStack_50 + 0x10);\n    iVar4 = *(int *)(iStack_50 + 0x14);\n    if (-iVar4 < (int)(uint)(4 < uVar8)) {\n      local_5c = 4;\n      iVar12 = 0;\n    }\n    else {\n      local_5c = 4;\n      do {\n        iStack_50 = *(int *)(iStack_50 + 0x30);\n        local_5c = local_5c - uVar8;\n        if (iStack_50 == 0) goto code_r0x00020226;\n        uVar8 = *(uint *)(iStack_50 + 0x10);\n        iVar4 = *(int *)(iStack_50 + 0x14);\n        iVar12 = (int)local_5c >> 0x1f;\n      } while ((SBORROW4(iVar12,iVar4) != SBORROW4(iVar12 - iVar4,(uint)(local_5c < uVar8))) ==\n               (int)((iVar12 - iVar4) - (uint)(local_5c < uVar8)) < 0);\n    }\n    iVar4 = (iVar4 - iVar12) - (uint)(uVar8 < local_5c);\n    uVar8 = (uint)(3 < uVar8 - local_5c);\n    bVar13 = iVar4 != 0 || (uint)-iVar4 < uVar8;\n    bVar15 = -uVar8 == iVar4;\n    if (-iVar4 < (int)uVar8) {\n      iVar4 = 0xc;\n      pbVar9 = (byte *)*DAT_0008973c;\n      pbVar7 = (byte *)".debug_frame";\n      do {\n        if (iVar4 == 0) break;\n        iVar4 = iVar4 + -1;\n        bVar13 = *pbVar9 < *pbVar7;\n        bVar15 = *pbVar9 == *pbVar7;\n        pbVar9 = pbVar9 + (uint)bVar16 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar16 * -2 + 1;\n      } while (bVar15);\n      cVar5 = -((!bVar13 && !bVar15) == bVar13);\n      if ((((*(char *)(iStack_50 + 0x68 + local_5c) == cVar5) &&\n           (*(char *)(iStack_50 + 0x69 + local_5c) == cVar5)) &&\n          (*(char *)(iStack_50 + 0x6a + local_5c) == cVar5)) &&\n         (*(char *)(iStack_50 + 0x6b + local_5c) == cVar5)) {\n        local_5c = local_5c + 4;\n        do {\n          iVar4 = (int)local_5c >> 0x1f;\n          iStack_40 = *(int *)(iStack_50 + 0x14);\n          uStack_44 = *(uint *)(iStack_50 + 0x10);\n          if ((SBORROW4(iVar4,iStack_40) != SBORROW4(iVar4 - iStack_40,(uint)(local_5c < uStack_44))\n              ) != (int)((iVar4 - iStack_40) - (uint)(local_5c < uStack_44)) < 0) {\n            if (((int)(uint)(uStack_44 != local_5c) <=\n                 (int)-((iStack_40 - iVar4) - (uint)(uStack_44 < local_5c))) ||\n               (*(char *)(iStack_50 + 0x68 + local_5c) != '\x01')) goto code_r0x00020226;\n            uVar8 = local_5c + 1;\n            iStack_38 = 0;\n            iVar4 = (*(int **)DAT_0008973c[0x20])[4];\n            goto code_r0x0002044e;\n          }\n          local_5c = local_5c - uStack_44;\n          iStack_50 = *(int *)(iStack_50 + 0x30);\n        } while (iStack_50 != 0);\n        piVar6[1] = 0;\n        goto code_r0x0002022d;\n      }\n    }\n  }" { (expression_statement "uVar8 = *(uint *)(iStack_50 + 0x10);" (assignment_expression "uVar8 = *(uint *)(iStack_50 + 0x10)" identifier = (pointer_expression "*(uint *)(iStack_50 + 0x10)" * (cast_expression "(uint *)(iStack_50 + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iStack_50 + 0x10)" ( (binary_expression "iStack_50 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "iVar4 = *(int *)(iStack_50 + 0x14);" (assignment_expression "iVar4 = *(int *)(iStack_50 + 0x14)" identifier = (pointer_expression "*(int *)(iStack_50 + 0x14)" * (cast_expression "(int *)(iStack_50 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iStack_50 + 0x14)" ( (binary_expression "iStack_50 + 0x14" identifier + number_literal) ))))) ;) (if_statement "if (-iVar4 < (int)(uint)(4 < uVar8)) {\n      local_5c = 4;\n      iVar12 = 0;\n    }\n    else {\n      local_5c = 4;\n      do {\n        iStack_50 = *(int *)(iStack_50 + 0x30);\n        local_5c = local_5c - uVar8;\n        if (iStack_50 == 0) goto code_r0x00020226;\n        uVar8 = *(uint *)(iStack_50 + 0x10);\n        iVar4 = *(int *)(iStack_50 + 0x14);\n        iVar12 = (int)local_5c >> 0x1f;\n      } while ((SBORROW4(iVar12,iVar4) != SBORROW4(iVar12 - iVar4,(uint)(local_5c < uVar8))) ==\n               (int)((iVar12 - iVar4) - (uint)(local_5c < uVar8)) < 0);\n    }" if (parenthesized_expression "(-iVar4 < (int)(uint)(4 < uVar8))" ( (binary_expression "-iVar4 < (int)(uint)(4 < uVar8)" (unary_expression "-iVar4" - identifier) < (cast_expression "(int)(uint)(4 < uVar8)" ( (type_descriptor "int" primitive_type) ) (call_expression "(uint)(4 < uVar8)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(4 < uVar8)" ( (binary_expression "4 < uVar8" number_literal < identifier) ))))) )) (compound_statement "{\n      local_5c = 4;\n      iVar12 = 0;\n    }" { (expression_statement "local_5c = 4;" (assignment_expression "local_5c = 4" identifier = number_literal) ;) (expression_statement "iVar12 = 0;" (assignment_expression "iVar12 = 0" identifier = number_literal) ;) }) (else_clause "else {\n      local_5c = 4;\n      do {\n        iStack_50 = *(int *)(iStack_50 + 0x30);\n        local_5c = local_5c - uVar8;\n        if (iStack_50 == 0) goto code_r0x00020226;\n        uVar8 = *(uint *)(iStack_50 + 0x10);\n        iVar4 = *(int *)(iStack_50 + 0x14);\n        iVar12 = (int)local_5c >> 0x1f;\n      } while ((SBORROW4(iVar12,iVar4) != SBORROW4(iVar12 - iVar4,(uint)(local_5c < uVar8))) ==\n               (int)((iVar12 - iVar4) - (uint)(local_5c < uVar8)) < 0);\n    }" else (compound_statement "{\n      local_5c = 4;\n      do {\n        iStack_50 = *(int *)(iStack_50 + 0x30);\n        local_5c = local_5c - uVar8;\n        if (iStack_50 == 0) goto code_r0x00020226;\n        uVar8 = *(uint *)(iStack_50 + 0x10);\n        iVar4 = *(int *)(iStack_50 + 0x14);\n        iVar12 = (int)local_5c >> 0x1f;\n      } while ((SBORROW4(iVar12,iVar4) != SBORROW4(iVar12 - iVar4,(uint)(local_5c < uVar8))) ==\n               (int)((iVar12 - iVar4) - (uint)(local_5c < uVar8)) < 0);\n    }" { (expression_statement "local_5c = 4;" (assignment_expression "local_5c = 4" identifier = number_literal) ;) (do_statement "do {\n        iStack_50 = *(int *)(iStack_50 + 0x30);\n        local_5c = local_5c - uVar8;\n        if (iStack_50 == 0) goto code_r0x00020226;\n        uVar8 = *(uint *)(iStack_50 + 0x10);\n        iVar4 = *(int *)(iStack_50 + 0x14);\n        iVar12 = (int)local_5c >> 0x1f;\n      } while ((SBORROW4(iVar12,iVar4) != SBORROW4(iVar12 - iVar4,(uint)(local_5c < uVar8))) ==\n               (int)((iVar12 - iVar4) - (uint)(local_5c < uVar8)) < 0);" do (compound_statement "{\n        iStack_50 = *(int *)(iStack_50 + 0x30);\n        local_5c = local_5c - uVar8;\n        if (iStack_50 == 0) goto code_r0x00020226;\n        uVar8 = *(uint *)(iStack_50 + 0x10);\n        iVar4 = *(int *)(iStack_50 + 0x14);\n        iVar12 = (int)local_5c >> 0x1f;\n      }" { (expression_statement "iStack_50 = *(int *)(iStack_50 + 0x30);" (assignment_expression "iStack_50 = *(int *)(iStack_50 + 0x30)" identifier = (pointer_expression "*(int *)(iStack_50 + 0x30)" * (cast_expression "(int *)(iStack_50 + 0x30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iStack_50 + 0x30)" ( (binary_expression "iStack_50 + 0x30" identifier + number_literal) ))))) ;) (expression_statement "local_5c = local_5c - uVar8;" (assignment_expression "local_5c = local_5c - uVar8" identifier = (binary_expression "local_5c - uVar8" identifier - identifier)) ;) (if_statement "if (iStack_50 == 0) goto code_r0x00020226;" if (parenthesized_expression "(iStack_50 == 0)" ( (binary_expression "iStack_50 == 0" identifier == number_literal) )) (goto_statement "goto code_r0x00020226;" goto statement_identifier ;)) (expression_statement "uVar8 = *(uint *)(iStack_50 + 0x10);" (assignment_expression "uVar8 = *(uint *)(iStack_50 + 0x10)" identifier = (pointer_expression "*(uint *)(iStack_50 + 0x10)" * (cast_expression "(uint *)(iStack_50 + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iStack_50 + 0x10)" ( (binary_expression "iStack_50 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "iVar4 = *(int *)(iStack_50 + 0x14);" (assignment_expression "iVar4 = *(int *)(iStack_50 + 0x14)" identifier = (pointer_expression "*(int *)(iStack_50 + 0x14)" * (cast_expression "(int *)(iStack_50 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iStack_50 + 0x14)" ( (binary_expression "iStack_50 + 0x14" identifier + number_literal) ))))) ;) (expression_statement "iVar12 = (int)local_5c >> 0x1f;" (assignment_expression "iVar12 = (int)local_5c >> 0x1f" identifier = (binary_expression "(int)local_5c >> 0x1f" (cast_expression "(int)local_5c" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal)) ;) }) while (parenthesized_expression "((SBORROW4(iVar12,iVar4) != SBORROW4(iVar12 - iVar4,(uint)(local_5c < uVar8))) ==\n               (int)((iVar12 - iVar4) - (uint)(local_5c < uVar8)) < 0)" ( (binary_expression "(SBORROW4(iVar12,iVar4) != SBORROW4(iVar12 - iVar4,(uint)(local_5c < uVar8))) ==\n               (int)((iVar12 - iVar4) - (uint)(local_5c < uVar8)) < 0" (parenthesized_expression "(SBORROW4(iVar12,iVar4) != SBORROW4(iVar12 - iVar4,(uint)(local_5c < uVar8)))" ( (binary_expression "SBORROW4(iVar12,iVar4) != SBORROW4(iVar12 - iVar4,(uint)(local_5c < uVar8))" (call_expression "SBORROW4(iVar12,iVar4)" identifier (argument_list "(iVar12,iVar4)" ( identifier , identifier ))) != (call_expression "SBORROW4(iVar12 - iVar4,(uint)(local_5c < uVar8))" identifier (argument_list "(iVar12 - iVar4,(uint)(local_5c < uVar8))" ( (binary_expression "iVar12 - iVar4" identifier - identifier) , (call_expression "(uint)(local_5c < uVar8)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(local_5c < uVar8)" ( (binary_expression "local_5c < uVar8" identifier < identifier) ))) )))) )) == (binary_expression "(int)((iVar12 - iVar4) - (uint)(local_5c < uVar8)) < 0" (cast_expression "(int)((iVar12 - iVar4) - (uint)(local_5c < uVar8))" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((iVar12 - iVar4) - (uint)(local_5c < uVar8))" ( (binary_expression "(iVar12 - iVar4) - (uint)(local_5c < uVar8)" (parenthesized_expression "(iVar12 - iVar4)" ( (binary_expression "iVar12 - iVar4" identifier - identifier) )) - (call_expression "(uint)(local_5c < uVar8)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(local_5c < uVar8)" ( (binary_expression "local_5c < uVar8" identifier < identifier) )))) ))) < number_literal)) )) ;) }))) (expression_statement "iVar4 = (iVar4 - iVar12) - (uint)(uVar8 < local_5c);" (assignment_expression "iVar4 = (iVar4 - iVar12) - (uint)(uVar8 < local_5c)" identifier = (binary_expression "(iVar4 - iVar12) - (uint)(uVar8 < local_5c)" (parenthesized_expression "(iVar4 - iVar12)" ( (binary_expression "iVar4 - iVar12" identifier - identifier) )) - (call_expression "(uint)(uVar8 < local_5c)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar8 < local_5c)" ( (binary_expression "uVar8 < local_5c" identifier < identifier) ))))) ;) (expression_statement "uVar8 = (uint)(3 < uVar8 - local_5c);" (assignment_expression "uVar8 = (uint)(3 < uVar8 - local_5c)" identifier = (call_expression "(uint)(3 < uVar8 - local_5c)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(3 < uVar8 - local_5c)" ( (binary_expression "3 < uVar8 - local_5c" number_literal < (binary_expression "uVar8 - local_5c" identifier - identifier)) )))) ;) (expression_statement "bVar13 = iVar4 != 0 || (uint)-iVar4 < uVar8;" (assignment_expression "bVar13 = iVar4 != 0 || (uint)-iVar4 < uVar8" identifier = (binary_expression "iVar4 != 0 || (uint)-iVar4 < uVar8" (binary_expression "iVar4 != 0" identifier != number_literal) || (binary_expression "(uint)-iVar4 < uVar8" (binary_expression "(uint)-iVar4" (parenthesized_expression "(uint)" ( identifier )) - identifier) < identifier))) ;) (expression_statement "bVar15 = -uVar8 == iVar4;" (assignment_expression "bVar15 = -uVar8 == iVar4" identifier = (binary_expression "-uVar8 == iVar4" (unary_expression "-uVar8" - identifier) == identifier)) ;) (if_statement "if (-iVar4 < (int)uVar8) {\n      iVar4 = 0xc;\n      pbVar9 = (byte *)*DAT_0008973c;\n      pbVar7 = (byte *)".debug_frame";\n      do {\n        if (iVar4 == 0) break;\n        iVar4 = iVar4 + -1;\n        bVar13 = *pbVar9 < *pbVar7;\n        bVar15 = *pbVar9 == *pbVar7;\n        pbVar9 = pbVar9 + (uint)bVar16 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar16 * -2 + 1;\n      } while (bVar15);\n      cVar5 = -((!bVar13 && !bVar15) == bVar13);\n      if ((((*(char *)(iStack_50 + 0x68 + local_5c) == cVar5) &&\n           (*(char *)(iStack_50 + 0x69 + local_5c) == cVar5)) &&\n          (*(char *)(iStack_50 + 0x6a + local_5c) == cVar5)) &&\n         (*(char *)(iStack_50 + 0x6b + local_5c) == cVar5)) {\n        local_5c = local_5c + 4;\n        do {\n          iVar4 = (int)local_5c >> 0x1f;\n          iStack_40 = *(int *)(iStack_50 + 0x14);\n          uStack_44 = *(uint *)(iStack_50 + 0x10);\n          if ((SBORROW4(iVar4,iStack_40) != SBORROW4(iVar4 - iStack_40,(uint)(local_5c < uStack_44))\n              ) != (int)((iVar4 - iStack_40) - (uint)(local_5c < uStack_44)) < 0) {\n            if (((int)(uint)(uStack_44 != local_5c) <=\n                 (int)-((iStack_40 - iVar4) - (uint)(uStack_44 < local_5c))) ||\n               (*(char *)(iStack_50 + 0x68 + local_5c) != '\x01')) goto code_r0x00020226;\n            uVar8 = local_5c + 1;\n            iStack_38 = 0;\n            iVar4 = (*(int **)DAT_0008973c[0x20])[4];\n            goto code_r0x0002044e;\n          }\n          local_5c = local_5c - uStack_44;\n          iStack_50 = *(int *)(iStack_50 + 0x30);\n        } while (iStack_50 != 0);\n        piVar6[1] = 0;\n        goto code_r0x0002022d;\n      }\n    }" if (parenthesized_expression "(-iVar4 < (int)uVar8)" ( (binary_expression "-iVar4 < (int)uVar8" (unary_expression "-iVar4" - identifier) < (cast_expression "(int)uVar8" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n      iVar4 = 0xc;\n      pbVar9 = (byte *)*DAT_0008973c;\n      pbVar7 = (byte *)".debug_frame";\n      do {\n        if (iVar4 == 0) break;\n        iVar4 = iVar4 + -1;\n        bVar13 = *pbVar9 < *pbVar7;\n        bVar15 = *pbVar9 == *pbVar7;\n        pbVar9 = pbVar9 + (uint)bVar16 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar16 * -2 + 1;\n      } while (bVar15);\n      cVar5 = -((!bVar13 && !bVar15) == bVar13);\n      if ((((*(char *)(iStack_50 + 0x68 + local_5c) == cVar5) &&\n           (*(char *)(iStack_50 + 0x69 + local_5c) == cVar5)) &&\n          (*(char *)(iStack_50 + 0x6a + local_5c) == cVar5)) &&\n         (*(char *)(iStack_50 + 0x6b + local_5c) == cVar5)) {\n        local_5c = local_5c + 4;\n        do {\n          iVar4 = (int)local_5c >> 0x1f;\n          iStack_40 = *(int *)(iStack_50 + 0x14);\n          uStack_44 = *(uint *)(iStack_50 + 0x10);\n          if ((SBORROW4(iVar4,iStack_40) != SBORROW4(iVar4 - iStack_40,(uint)(local_5c < uStack_44))\n              ) != (int)((iVar4 - iStack_40) - (uint)(local_5c < uStack_44)) < 0) {\n            if (((int)(uint)(uStack_44 != local_5c) <=\n                 (int)-((iStack_40 - iVar4) - (uint)(uStack_44 < local_5c))) ||\n               (*(char *)(iStack_50 + 0x68 + local_5c) != '\x01')) goto code_r0x00020226;\n            uVar8 = local_5c + 1;\n            iStack_38 = 0;\n            iVar4 = (*(int **)DAT_0008973c[0x20])[4];\n            goto code_r0x0002044e;\n          }\n          local_5c = local_5c - uStack_44;\n          iStack_50 = *(int *)(iStack_50 + 0x30);\n        } while (iStack_50 != 0);\n        piVar6[1] = 0;\n        goto code_r0x0002022d;\n      }\n    }" { (expression_statement "iVar4 = 0xc;" (assignment_expression "iVar4 = 0xc" identifier = number_literal) ;) (expression_statement "pbVar9 = (byte *)*DAT_0008973c;" (assignment_expression "pbVar9 = (byte *)*DAT_0008973c" identifier = (cast_expression "(byte *)*DAT_0008973c" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*DAT_0008973c" * identifier))) ;) (expression_statement "pbVar7 = (byte *)".debug_frame";" (assignment_expression "pbVar7 = (byte *)".debug_frame"" identifier = (cast_expression "(byte *)".debug_frame"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal "".debug_frame"" " string_content "))) ;) (do_statement "do {\n        if (iVar4 == 0) break;\n        iVar4 = iVar4 + -1;\n        bVar13 = *pbVar9 < *pbVar7;\n        bVar15 = *pbVar9 == *pbVar7;\n        pbVar9 = pbVar9 + (uint)bVar16 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar16 * -2 + 1;\n      } while (bVar15);" do (compound_statement "{\n        if (iVar4 == 0) break;\n        iVar4 = iVar4 + -1;\n        bVar13 = *pbVar9 < *pbVar7;\n        bVar15 = *pbVar9 == *pbVar7;\n        pbVar9 = pbVar9 + (uint)bVar16 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar16 * -2 + 1;\n      }" { (if_statement "if (iVar4 == 0) break;" if (parenthesized_expression "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar4 = iVar4 + -1;" (assignment_expression "iVar4 = iVar4 + -1" identifier = (binary_expression "iVar4 + -1" identifier + number_literal)) ;) (expression_statement "bVar13 = *pbVar9 < *pbVar7;" (assignment_expression "bVar13 = *pbVar9 < *pbVar7" identifier = (binary_expression "*pbVar9 < *pbVar7" (pointer_expression "*pbVar9" * identifier) < (pointer_expression "*pbVar7" * identifier))) ;) (expression_statement "bVar15 = *pbVar9 == *pbVar7;" (assignment_expression "bVar15 = *pbVar9 == *pbVar7" identifier = (binary_expression "*pbVar9 == *pbVar7" (pointer_expression "*pbVar9" * identifier) == (pointer_expression "*pbVar7" * identifier))) ;) (expression_statement "pbVar9 = pbVar9 + (uint)bVar16 * -2 + 1;" (assignment_expression "pbVar9 = pbVar9 + (uint)bVar16 * -2 + 1" identifier = (binary_expression "pbVar9 + (uint)bVar16 * -2 + 1" (binary_expression "pbVar9 + (uint)bVar16 * -2" identifier + (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar7 = pbVar7 + (uint)bVar16 * -2 + 1;" (assignment_expression "pbVar7 = pbVar7 + (uint)bVar16 * -2 + 1" identifier = (binary_expression "pbVar7 + (uint)bVar16 * -2 + 1" (binary_expression "pbVar7 + (uint)bVar16 * -2" identifier + (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar15)" ( identifier )) ;) (expression_statement "cVar5 = -((!bVar13 && !bVar15) == bVar13);" (assignment_expression "cVar5 = -((!bVar13 && !bVar15) == bVar13)" identifier = (unary_expression "-((!bVar13 && !bVar15) == bVar13)" - (parenthesized_expression "((!bVar13 && !bVar15) == bVar13)" ( (binary_expression "(!bVar13 && !bVar15) == bVar13" (parenthesized_expression "(!bVar13 && !bVar15)" ( (binary_expression "!bVar13 && !bVar15" (unary_expression "!bVar13" ! identifier) && (unary_expression "!bVar15" ! identifier)) )) == identifier) )))) ;) (if_statement "if ((((*(char *)(iStack_50 + 0x68 + local_5c) == cVar5) &&\n           (*(char *)(iStack_50 + 0x69 + local_5c) == cVar5)) &&\n          (*(char *)(iStack_50 + 0x6a + local_5c) == cVar5)) &&\n         (*(char *)(iStack_50 + 0x6b + local_5c) == cVar5)) {\n        local_5c = local_5c + 4;\n        do {\n          iVar4 = (int)local_5c >> 0x1f;\n          iStack_40 = *(int *)(iStack_50 + 0x14);\n          uStack_44 = *(uint *)(iStack_50 + 0x10);\n          if ((SBORROW4(iVar4,iStack_40) != SBORROW4(iVar4 - iStack_40,(uint)(local_5c < uStack_44))\n              ) != (int)((iVar4 - iStack_40) - (uint)(local_5c < uStack_44)) < 0) {\n            if (((int)(uint)(uStack_44 != local_5c) <=\n                 (int)-((iStack_40 - iVar4) - (uint)(uStack_44 < local_5c))) ||\n               (*(char *)(iStack_50 + 0x68 + local_5c) != '\x01')) goto code_r0x00020226;\n            uVar8 = local_5c + 1;\n            iStack_38 = 0;\n            iVar4 = (*(int **)DAT_0008973c[0x20])[4];\n            goto code_r0x0002044e;\n          }\n          local_5c = local_5c - uStack_44;\n          iStack_50 = *(int *)(iStack_50 + 0x30);\n        } while (iStack_50 != 0);\n        piVar6[1] = 0;\n        goto code_r0x0002022d;\n      }" if (parenthesized_expression "((((*(char *)(iStack_50 + 0x68 + local_5c) == cVar5) &&\n           (*(char *)(iStack_50 + 0x69 + local_5c) == cVar5)) &&\n          (*(char *)(iStack_50 + 0x6a + local_5c) == cVar5)) &&\n         (*(char *)(iStack_50 + 0x6b + local_5c) == cVar5))" ( (binary_expression "(((*(char *)(iStack_50 + 0x68 + local_5c) == cVar5) &&\n           (*(char *)(iStack_50 + 0x69 + local_5c) == cVar5)) &&\n          (*(char *)(iStack_50 + 0x6a + local_5c) == cVar5)) &&\n         (*(char *)(iStack_50 + 0x6b + local_5c) == cVar5)" (parenthesized_expression "(((*(char *)(iStack_50 + 0x68 + local_5c) == cVar5) &&\n           (*(char *)(iStack_50 + 0x69 + local_5c) == cVar5)) &&\n          (*(char *)(iStack_50 + 0x6a + local_5c) == cVar5))" ( (binary_expression "((*(char *)(iStack_50 + 0x68 + local_5c) == cVar5) &&\n           (*(char *)(iStack_50 + 0x69 + local_5c) == cVar5)) &&\n          (*(char *)(iStack_50 + 0x6a + local_5c) == cVar5)" (parenthesized_expression "((*(char *)(iStack_50 + 0x68 + local_5c) == cVar5) &&\n           (*(char *)(iStack_50 + 0x69 + local_5c) == cVar5))" ( (binary_expression "(*(char *)(iStack_50 + 0x68 + local_5c) == cVar5) &&\n           (*(char *)(iStack_50 + 0x69 + local_5c) == cVar5)" (parenthesized_expression "(*(char *)(iStack_50 + 0x68 + local_5c) == cVar5)" ( (binary_expression "*(char *)(iStack_50 + 0x68 + local_5c) == cVar5" (pointer_expression "*(char *)(iStack_50 + 0x68 + local_5c)" * (cast_expression "(char *)(iStack_50 + 0x68 + local_5c)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iStack_50 + 0x68 + local_5c)" ( (binary_expression "iStack_50 + 0x68 + local_5c" (binary_expression "iStack_50 + 0x68" identifier + number_literal) + identifier) )))) == identifier) )) && (parenthesized_expression "(*(char *)(iStack_50 + 0x69 + local_5c) == cVar5)" ( (binary_expression "*(char *)(iStack_50 + 0x69 + local_5c) == cVar5" (pointer_expression "*(char *)(iStack_50 + 0x69 + local_5c)" * (cast_expression "(char *)(iStack_50 + 0x69 + local_5c)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iStack_50 + 0x69 + local_5c)" ( (binary_expression "iStack_50 + 0x69 + local_5c" (binary_expression "iStack_50 + 0x69" identifier + number_literal) + identifier) )))) == identifier) ))) )) && (parenthesized_expression "(*(char *)(iStack_50 + 0x6a + local_5c) == cVar5)" ( (binary_expression "*(char *)(iStack_50 + 0x6a + local_5c) == cVar5" (pointer_expression "*(char *)(iStack_50 + 0x6a + local_5c)" * (cast_expression "(char *)(iStack_50 + 0x6a + local_5c)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iStack_50 + 0x6a + local_5c)" ( (binary_expression "iStack_50 + 0x6a + local_5c" (binary_expression "iStack_50 + 0x6a" identifier + number_literal) + identifier) )))) == identifier) ))) )) && (parenthesized_expression "(*(char *)(iStack_50 + 0x6b + local_5c) == cVar5)" ( (binary_expression "*(char *)(iStack_50 + 0x6b + local_5c) == cVar5" (pointer_expression "*(char *)(iStack_50 + 0x6b + local_5c)" * (cast_expression "(char *)(iStack_50 + 0x6b + local_5c)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iStack_50 + 0x6b + local_5c)" ( (binary_expression "iStack_50 + 0x6b + local_5c" (binary_expression "iStack_50 + 0x6b" identifier + number_literal) + identifier) )))) == identifier) ))) )) (compound_statement "{\n        local_5c = local_5c + 4;\n        do {\n          iVar4 = (int)local_5c >> 0x1f;\n          iStack_40 = *(int *)(iStack_50 + 0x14);\n          uStack_44 = *(uint *)(iStack_50 + 0x10);\n          if ((SBORROW4(iVar4,iStack_40) != SBORROW4(iVar4 - iStack_40,(uint)(local_5c < uStack_44))\n              ) != (int)((iVar4 - iStack_40) - (uint)(local_5c < uStack_44)) < 0) {\n            if (((int)(uint)(uStack_44 != local_5c) <=\n                 (int)-((iStack_40 - iVar4) - (uint)(uStack_44 < local_5c))) ||\n               (*(char *)(iStack_50 + 0x68 + local_5c) != '\x01')) goto code_r0x00020226;\n            uVar8 = local_5c + 1;\n            iStack_38 = 0;\n            iVar4 = (*(int **)DAT_0008973c[0x20])[4];\n            goto code_r0x0002044e;\n          }\n          local_5c = local_5c - uStack_44;\n          iStack_50 = *(int *)(iStack_50 + 0x30);\n        } while (iStack_50 != 0);\n        piVar6[1] = 0;\n        goto code_r0x0002022d;\n      }" { (expression_statement "local_5c = local_5c + 4;" (assignment_expression "local_5c = local_5c + 4" identifier = (binary_expression "local_5c + 4" identifier + number_literal)) ;) (do_statement "do {\n          iVar4 = (int)local_5c >> 0x1f;\n          iStack_40 = *(int *)(iStack_50 + 0x14);\n          uStack_44 = *(uint *)(iStack_50 + 0x10);\n          if ((SBORROW4(iVar4,iStack_40) != SBORROW4(iVar4 - iStack_40,(uint)(local_5c < uStack_44))\n              ) != (int)((iVar4 - iStack_40) - (uint)(local_5c < uStack_44)) < 0) {\n            if (((int)(uint)(uStack_44 != local_5c) <=\n                 (int)-((iStack_40 - iVar4) - (uint)(uStack_44 < local_5c))) ||\n               (*(char *)(iStack_50 + 0x68 + local_5c) != '\x01')) goto code_r0x00020226;\n            uVar8 = local_5c + 1;\n            iStack_38 = 0;\n            iVar4 = (*(int **)DAT_0008973c[0x20])[4];\n            goto code_r0x0002044e;\n          }\n          local_5c = local_5c - uStack_44;\n          iStack_50 = *(int *)(iStack_50 + 0x30);\n        } while (iStack_50 != 0);" do (compound_statement "{\n          iVar4 = (int)local_5c >> 0x1f;\n          iStack_40 = *(int *)(iStack_50 + 0x14);\n          uStack_44 = *(uint *)(iStack_50 + 0x10);\n          if ((SBORROW4(iVar4,iStack_40) != SBORROW4(iVar4 - iStack_40,(uint)(local_5c < uStack_44))\n              ) != (int)((iVar4 - iStack_40) - (uint)(local_5c < uStack_44)) < 0) {\n            if (((int)(uint)(uStack_44 != local_5c) <=\n                 (int)-((iStack_40 - iVar4) - (uint)(uStack_44 < local_5c))) ||\n               (*(char *)(iStack_50 + 0x68 + local_5c) != '\x01')) goto code_r0x00020226;\n            uVar8 = local_5c + 1;\n            iStack_38 = 0;\n            iVar4 = (*(int **)DAT_0008973c[0x20])[4];\n            goto code_r0x0002044e;\n          }\n          local_5c = local_5c - uStack_44;\n          iStack_50 = *(int *)(iStack_50 + 0x30);\n        }" { (expression_statement "iVar4 = (int)local_5c >> 0x1f;" (assignment_expression "iVar4 = (int)local_5c >> 0x1f" identifier = (binary_expression "(int)local_5c >> 0x1f" (cast_expression "(int)local_5c" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal)) ;) (expression_statement "iStack_40 = *(int *)(iStack_50 + 0x14);" (assignment_expression "iStack_40 = *(int *)(iStack_50 + 0x14)" identifier = (pointer_expression "*(int *)(iStack_50 + 0x14)" * (cast_expression "(int *)(iStack_50 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iStack_50 + 0x14)" ( (binary_expression "iStack_50 + 0x14" identifier + number_literal) ))))) ;) (expression_statement "uStack_44 = *(uint *)(iStack_50 + 0x10);" (assignment_expression "uStack_44 = *(uint *)(iStack_50 + 0x10)" identifier = (pointer_expression "*(uint *)(iStack_50 + 0x10)" * (cast_expression "(uint *)(iStack_50 + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iStack_50 + 0x10)" ( (binary_expression "iStack_50 + 0x10" identifier + number_literal) ))))) ;) (if_statement "if ((SBORROW4(iVar4,iStack_40) != SBORROW4(iVar4 - iStack_40,(uint)(local_5c < uStack_44))\n              ) != (int)((iVar4 - iStack_40) - (uint)(local_5c < uStack_44)) < 0) {\n            if (((int)(uint)(uStack_44 != local_5c) <=\n                 (int)-((iStack_40 - iVar4) - (uint)(uStack_44 < local_5c))) ||\n               (*(char *)(iStack_50 + 0x68 + local_5c) != '\x01')) goto code_r0x00020226;\n            uVar8 = local_5c + 1;\n            iStack_38 = 0;\n            iVar4 = (*(int **)DAT_0008973c[0x20])[4];\n            goto code_r0x0002044e;\n          }" if (parenthesized_expression "((SBORROW4(iVar4,iStack_40) != SBORROW4(iVar4 - iStack_40,(uint)(local_5c < uStack_44))\n              ) != (int)((iVar4 - iStack_40) - (uint)(local_5c < uStack_44)) < 0)" ( (binary_expression "(SBORROW4(iVar4,iStack_40) != SBORROW4(iVar4 - iStack_40,(uint)(local_5c < uStack_44))\n              ) != (int)((iVar4 - iStack_40) - (uint)(local_5c < uStack_44)) < 0" (parenthesized_expression "(SBORROW4(iVar4,iStack_40) != SBORROW4(iVar4 - iStack_40,(uint)(local_5c < uStack_44))\n              )" ( (binary_expression "SBORROW4(iVar4,iStack_40) != SBORROW4(iVar4 - iStack_40,(uint)(local_5c < uStack_44))" (call_expression "SBORROW4(iVar4,iStack_40)" identifier (argument_list "(iVar4,iStack_40)" ( identifier , identifier ))) != (call_expression "SBORROW4(iVar4 - iStack_40,(uint)(local_5c < uStack_44))" identifier (argument_list "(iVar4 - iStack_40,(uint)(local_5c < uStack_44))" ( (binary_expression "iVar4 - iStack_40" identifier - identifier) , (call_expression "(uint)(local_5c < uStack_44)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(local_5c < uStack_44)" ( (binary_expression "local_5c < uStack_44" identifier < identifier) ))) )))) )) != (binary_expression "(int)((iVar4 - iStack_40) - (uint)(local_5c < uStack_44)) < 0" (cast_expression "(int)((iVar4 - iStack_40) - (uint)(local_5c < uStack_44))" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((iVar4 - iStack_40) - (uint)(local_5c < uStack_44))" ( (binary_expression "(iVar4 - iStack_40) - (uint)(local_5c < uStack_44)" (parenthesized_expression "(iVar4 - iStack_40)" ( (binary_expression "iVar4 - iStack_40" identifier - identifier) )) - (call_expression "(uint)(local_5c < uStack_44)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(local_5c < uStack_44)" ( (binary_expression "local_5c < uStack_44" identifier < identifier) )))) ))) < number_literal)) )) (compound_statement "{\n            if (((int)(uint)(uStack_44 != local_5c) <=\n                 (int)-((iStack_40 - iVar4) - (uint)(uStack_44 < local_5c))) ||\n               (*(char *)(iStack_50 + 0x68 + local_5c) != '\x01')) goto code_r0x00020226;\n            uVar8 = local_5c + 1;\n            iStack_38 = 0;\n            iVar4 = (*(int **)DAT_0008973c[0x20])[4];\n            goto code_r0x0002044e;\n          }" { (if_statement "if (((int)(uint)(uStack_44 != local_5c) <=\n                 (int)-((iStack_40 - iVar4) - (uint)(uStack_44 < local_5c))) ||\n               (*(char *)(iStack_50 + 0x68 + local_5c) != '\x01')) goto code_r0x00020226;" if (parenthesized_expression "(((int)(uint)(uStack_44 != local_5c) <=\n                 (int)-((iStack_40 - iVar4) - (uint)(uStack_44 < local_5c))) ||\n               (*(char *)(iStack_50 + 0x68 + local_5c) != '\x01'))" ( (binary_expression "((int)(uint)(uStack_44 != local_5c) <=\n                 (int)-((iStack_40 - iVar4) - (uint)(uStack_44 < local_5c))) ||\n               (*(char *)(iStack_50 + 0x68 + local_5c) != '\x01')" (parenthesized_expression "((int)(uint)(uStack_44 != local_5c) <=\n                 (int)-((iStack_40 - iVar4) - (uint)(uStack_44 < local_5c)))" ( (binary_expression "(int)(uint)(uStack_44 != local_5c) <=\n                 (int)-((iStack_40 - iVar4) - (uint)(uStack_44 < local_5c))" (cast_expression "(int)(uint)(uStack_44 != local_5c)" ( (type_descriptor "int" primitive_type) ) (call_expression "(uint)(uStack_44 != local_5c)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uStack_44 != local_5c)" ( (binary_expression "uStack_44 != local_5c" identifier != identifier) )))) <= (cast_expression "(int)-((iStack_40 - iVar4) - (uint)(uStack_44 < local_5c))" ( (type_descriptor "int" primitive_type) ) (unary_expression "-((iStack_40 - iVar4) - (uint)(uStack_44 < local_5c))" - (parenthesized_expression "((iStack_40 - iVar4) - (uint)(uStack_44 < local_5c))" ( (binary_expression "(iStack_40 - iVar4) - (uint)(uStack_44 < local_5c)" (parenthesized_expression "(iStack_40 - iVar4)" ( (binary_expression "iStack_40 - iVar4" identifier - identifier) )) - (call_expression "(uint)(uStack_44 < local_5c)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uStack_44 < local_5c)" ( (binary_expression "uStack_44 < local_5c" identifier < identifier) )))) ))))) )) || (parenthesized_expression "(*(char *)(iStack_50 + 0x68 + local_5c) != '\x01')" ( (binary_expression "*(char *)(iStack_50 + 0x68 + local_5c) != '\x01'" (pointer_expression "*(char *)(iStack_50 + 0x68 + local_5c)" * (cast_expression "(char *)(iStack_50 + 0x68 + local_5c)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iStack_50 + 0x68 + local_5c)" ( (binary_expression "iStack_50 + 0x68 + local_5c" (binary_expression "iStack_50 + 0x68" identifier + number_literal) + identifier) )))) != (char_literal "'\x01'" ' escape_sequence ')) ))) )) (goto_statement "goto code_r0x00020226;" goto statement_identifier ;)) (expression_statement "uVar8 = local_5c + 1;" (assignment_expression "uVar8 = local_5c + 1" identifier = (binary_expression "local_5c + 1" identifier + number_literal)) ;) (expression_statement "iStack_38 = 0;" (assignment_expression "iStack_38 = 0" identifier = number_literal) ;) (expression_statement "iVar4 = (*(int **)DAT_0008973c[0x20])[4];" (assignment_expression "iVar4 = (*(int **)DAT_0008973c[0x20])[4]" identifier = (subscript_expression "(*(int **)DAT_0008973c[0x20])[4]" (parenthesized_expression "(*(int **)DAT_0008973c[0x20])" ( (pointer_expression "*(int **)DAT_0008973c[0x20]" * (cast_expression "(int **)DAT_0008973c[0x20]" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (subscript_expression "DAT_0008973c[0x20]" identifier [ number_literal ]))) )) [ number_literal ])) ;) (goto_statement "goto code_r0x0002044e;" goto statement_identifier ;) })) (expression_statement "local_5c = local_5c - uStack_44;" (assignment_expression "local_5c = local_5c - uStack_44" identifier = (binary_expression "local_5c - uStack_44" identifier - identifier)) ;) (expression_statement "iStack_50 = *(int *)(iStack_50 + 0x30);" (assignment_expression "iStack_50 = *(int *)(iStack_50 + 0x30)" identifier = (pointer_expression "*(int *)(iStack_50 + 0x30)" * (cast_expression "(int *)(iStack_50 + 0x30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iStack_50 + 0x30)" ( (binary_expression "iStack_50 + 0x30" identifier + number_literal) ))))) ;) }) while (parenthesized_expression "(iStack_50 != 0)" ( (binary_expression "iStack_50 != 0" identifier != number_literal) )) ;) (expression_statement "piVar6[1] = 0;" (assignment_expression "piVar6[1] = 0" (subscript_expression "piVar6[1]" identifier [ number_literal ]) = number_literal) ;) (goto_statement "goto code_r0x0002022d;" goto statement_identifier ;) })) })) })) (goto_statement "goto code_r0x00020226;" goto statement_identifier ;) (labeled_statement "code_r0x0002044e:\n  iStack_58 = (int)uVar8 >> 0x1f;" statement_identifier : (expression_statement "iStack_58 = (int)uVar8 >> 0x1f;" (assignment_expression "iStack_58 = (int)uVar8 >> 0x1f" identifier = (binary_expression "(int)uVar8 >> 0x1f" (cast_expression "(int)uVar8" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal)) ;)) (if_statement "if ((SBORROW4(iStack_58,iStack_40) != SBORROW4(iStack_58 - iStack_40,(uint)(uVar8 < uStack_44)))\n      != (int)((iStack_58 - iStack_40) - (uint)(uVar8 < uStack_44)) < 0) {\n    cVar5 = *(char *)(iStack_50 + 0x68 + uVar8);\n    if (cVar5 == '\0') {\ncode_r0x00020509:\n      uVar8 = uVar8 + 1;\n      goto code_r0x00020523;\n    }\n    local_5c = uVar8;\n    while( true ) {\n      if (iStack_38 < 9) {\n        acStack_26[iStack_38] = cVar5;\n        iStack_38 = iStack_38 + 1;\n      }\n      uVar8 = uVar8 + 1;\n      if (iStack_58 == iStack_40 + -1 + (uint)(uStack_44 != 0) && local_5c == uStack_44 - 1) break;\n      bVar13 = 0xfffffffe < local_5c;\n      local_5c = local_5c + 1;\n      iStack_58 = iStack_58 + (uint)bVar13;\n      cVar5 = *(char *)(iStack_50 + 0x68 + uVar8);\n      if (cVar5 == '\0') goto code_r0x00020509;\n    }\n    goto code_r0x0002044e;\n  }" if (parenthesized_expression "((SBORROW4(iStack_58,iStack_40) != SBORROW4(iStack_58 - iStack_40,(uint)(uVar8 < uStack_44)))\n      != (int)((iStack_58 - iStack_40) - (uint)(uVar8 < uStack_44)) < 0)" ( (binary_expression "(SBORROW4(iStack_58,iStack_40) != SBORROW4(iStack_58 - iStack_40,(uint)(uVar8 < uStack_44)))\n      != (int)((iStack_58 - iStack_40) - (uint)(uVar8 < uStack_44)) < 0" (parenthesized_expression "(SBORROW4(iStack_58,iStack_40) != SBORROW4(iStack_58 - iStack_40,(uint)(uVar8 < uStack_44)))" ( (binary_expression "SBORROW4(iStack_58,iStack_40) != SBORROW4(iStack_58 - iStack_40,(uint)(uVar8 < uStack_44))" (call_expression "SBORROW4(iStack_58,iStack_40)" identifier (argument_list "(iStack_58,iStack_40)" ( identifier , identifier ))) != (call_expression "SBORROW4(iStack_58 - iStack_40,(uint)(uVar8 < uStack_44))" identifier (argument_list "(iStack_58 - iStack_40,(uint)(uVar8 < uStack_44))" ( (binary_expression "iStack_58 - iStack_40" identifier - identifier) , (call_expression "(uint)(uVar8 < uStack_44)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar8 < uStack_44)" ( (binary_expression "uVar8 < uStack_44" identifier < identifier) ))) )))) )) != (binary_expression "(int)((iStack_58 - iStack_40) - (uint)(uVar8 < uStack_44)) < 0" (cast_expression "(int)((iStack_58 - iStack_40) - (uint)(uVar8 < uStack_44))" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((iStack_58 - iStack_40) - (uint)(uVar8 < uStack_44))" ( (binary_expression "(iStack_58 - iStack_40) - (uint)(uVar8 < uStack_44)" (parenthesized_expression "(iStack_58 - iStack_40)" ( (binary_expression "iStack_58 - iStack_40" identifier - identifier) )) - (call_expression "(uint)(uVar8 < uStack_44)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar8 < uStack_44)" ( (binary_expression "uVar8 < uStack_44" identifier < identifier) )))) ))) < number_literal)) )) (compound_statement "{\n    cVar5 = *(char *)(iStack_50 + 0x68 + uVar8);\n    if (cVar5 == '\0') {\ncode_r0x00020509:\n      uVar8 = uVar8 + 1;\n      goto code_r0x00020523;\n    }\n    local_5c = uVar8;\n    while( true ) {\n      if (iStack_38 < 9) {\n        acStack_26[iStack_38] = cVar5;\n        iStack_38 = iStack_38 + 1;\n      }\n      uVar8 = uVar8 + 1;\n      if (iStack_58 == iStack_40 + -1 + (uint)(uStack_44 != 0) && local_5c == uStack_44 - 1) break;\n      bVar13 = 0xfffffffe < local_5c;\n      local_5c = local_5c + 1;\n      iStack_58 = iStack_58 + (uint)bVar13;\n      cVar5 = *(char *)(iStack_50 + 0x68 + uVar8);\n      if (cVar5 == '\0') goto code_r0x00020509;\n    }\n    goto code_r0x0002044e;\n  }" { (expression_statement "cVar5 = *(char *)(iStack_50 + 0x68 + uVar8);" (assignment_expression "cVar5 = *(char *)(iStack_50 + 0x68 + uVar8)" identifier = (pointer_expression "*(char *)(iStack_50 + 0x68 + uVar8)" * (cast_expression "(char *)(iStack_50 + 0x68 + uVar8)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iStack_50 + 0x68 + uVar8)" ( (binary_expression "iStack_50 + 0x68 + uVar8" (binary_expression "iStack_50 + 0x68" identifier + number_literal) + identifier) ))))) ;) (if_statement "if (cVar5 == '\0') {\ncode_r0x00020509:\n      uVar8 = uVar8 + 1;\n      goto code_r0x00020523;\n    }" if (parenthesized_expression "(cVar5 == '\0')" ( (binary_expression "cVar5 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\ncode_r0x00020509:\n      uVar8 = uVar8 + 1;\n      goto code_r0x00020523;\n    }" { (labeled_statement "code_r0x00020509:\n      uVar8 = uVar8 + 1;" statement_identifier : (expression_statement "uVar8 = uVar8 + 1;" (assignment_expression "uVar8 = uVar8 + 1" identifier = (binary_expression "uVar8 + 1" identifier + number_literal)) ;)) (goto_statement "goto code_r0x00020523;" goto statement_identifier ;) })) (expression_statement "local_5c = uVar8;" (assignment_expression "local_5c = uVar8" identifier = identifier) ;) (while_statement "while( true ) {\n      if (iStack_38 < 9) {\n        acStack_26[iStack_38] = cVar5;\n        iStack_38 = iStack_38 + 1;\n      }\n      uVar8 = uVar8 + 1;\n      if (iStack_58 == iStack_40 + -1 + (uint)(uStack_44 != 0) && local_5c == uStack_44 - 1) break;\n      bVar13 = 0xfffffffe < local_5c;\n      local_5c = local_5c + 1;\n      iStack_58 = iStack_58 + (uint)bVar13;\n      cVar5 = *(char *)(iStack_50 + 0x68 + uVar8);\n      if (cVar5 == '\0') goto code_r0x00020509;\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      if (iStack_38 < 9) {\n        acStack_26[iStack_38] = cVar5;\n        iStack_38 = iStack_38 + 1;\n      }\n      uVar8 = uVar8 + 1;\n      if (iStack_58 == iStack_40 + -1 + (uint)(uStack_44 != 0) && local_5c == uStack_44 - 1) break;\n      bVar13 = 0xfffffffe < local_5c;\n      local_5c = local_5c + 1;\n      iStack_58 = iStack_58 + (uint)bVar13;\n      cVar5 = *(char *)(iStack_50 + 0x68 + uVar8);\n      if (cVar5 == '\0') goto code_r0x00020509;\n    }" { (if_statement "if (iStack_38 < 9) {\n        acStack_26[iStack_38] = cVar5;\n        iStack_38 = iStack_38 + 1;\n      }" if (parenthesized_expression "(iStack_38 < 9)" ( (binary_expression "iStack_38 < 9" identifier < number_literal) )) (compound_statement "{\n        acStack_26[iStack_38] = cVar5;\n        iStack_38 = iStack_38 + 1;\n      }" { (expression_statement "acStack_26[iStack_38] = cVar5;" (assignment_expression "acStack_26[iStack_38] = cVar5" (subscript_expression "acStack_26[iStack_38]" identifier [ identifier ]) = identifier) ;) (expression_statement "iStack_38 = iStack_38 + 1;" (assignment_expression "iStack_38 = iStack_38 + 1" identifier = (binary_expression "iStack_38 + 1" identifier + number_literal)) ;) })) (expression_statement "uVar8 = uVar8 + 1;" (assignment_expression "uVar8 = uVar8 + 1" identifier = (binary_expression "uVar8 + 1" identifier + number_literal)) ;) (if_statement "if (iStack_58 == iStack_40 + -1 + (uint)(uStack_44 != 0) && local_5c == uStack_44 - 1) break;" if (parenthesized_expression "(iStack_58 == iStack_40 + -1 + (uint)(uStack_44 != 0) && local_5c == uStack_44 - 1)" ( (binary_expression "iStack_58 == iStack_40 + -1 + (uint)(uStack_44 != 0) && local_5c == uStack_44 - 1" (binary_expression "iStack_58 == iStack_40 + -1 + (uint)(uStack_44 != 0)" identifier == (binary_expression "iStack_40 + -1 + (uint)(uStack_44 != 0)" (binary_expression "iStack_40 + -1" identifier + number_literal) + (call_expression "(uint)(uStack_44 != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uStack_44 != 0)" ( (binary_expression "uStack_44 != 0" identifier != number_literal) ))))) && (binary_expression "local_5c == uStack_44 - 1" identifier == (binary_expression "uStack_44 - 1" identifier - number_literal))) )) (break_statement "break;" break ;)) (expression_statement "bVar13 = 0xfffffffe < local_5c;" (assignment_expression "bVar13 = 0xfffffffe < local_5c" identifier = (binary_expression "0xfffffffe < local_5c" number_literal < identifier)) ;) (expression_statement "local_5c = local_5c + 1;" (assignment_expression "local_5c = local_5c + 1" identifier = (binary_expression "local_5c + 1" identifier + number_literal)) ;) (expression_statement "iStack_58 = iStack_58 + (uint)bVar13;" (assignment_expression "iStack_58 = iStack_58 + (uint)bVar13" identifier = (binary_expression "iStack_58 + (uint)bVar13" identifier + (cast_expression "(uint)bVar13" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) (expression_statement "cVar5 = *(char *)(iStack_50 + 0x68 + uVar8);" (assignment_expression "cVar5 = *(char *)(iStack_50 + 0x68 + uVar8)" identifier = (pointer_expression "*(char *)(iStack_50 + 0x68 + uVar8)" * (cast_expression "(char *)(iStack_50 + 0x68 + uVar8)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iStack_50 + 0x68 + uVar8)" ( (binary_expression "iStack_50 + 0x68 + uVar8" (binary_expression "iStack_50 + 0x68" identifier + number_literal) + identifier) ))))) ;) (if_statement "if (cVar5 == '\0') goto code_r0x00020509;" if (parenthesized_expression "(cVar5 == '\0')" ( (binary_expression "cVar5 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto code_r0x00020509;" goto statement_identifier ;)) })) (goto_statement "goto code_r0x0002044e;" goto statement_identifier ;) })) (expression_statement "iStack_50 = *(int *)(iStack_50 + 0x30);" (assignment_expression "iStack_50 = *(int *)(iStack_50 + 0x30)" identifier = (pointer_expression "*(int *)(iStack_50 + 0x30)" * (cast_expression "(int *)(iStack_50 + 0x30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iStack_50 + 0x30)" ( (binary_expression "iStack_50 + 0x30" identifier + number_literal) ))))) ;) (if_statement "if (iStack_50 == 0) goto code_r0x00020226;" if (parenthesized_expression "(iStack_50 == 0)" ( (binary_expression "iStack_50 == 0" identifier == number_literal) )) (goto_statement "goto code_r0x00020226;" goto statement_identifier ;)) (expression_statement "iStack_40 = *(int *)(iStack_50 + 0x14);" (assignment_expression "iStack_40 = *(int *)(iStack_50 + 0x14)" identifier = (pointer_expression "*(int *)(iStack_50 + 0x14)" * (cast_expression "(int *)(iStack_50 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iStack_50 + 0x14)" ( (binary_expression "iStack_50 + 0x14" identifier + number_literal) ))))) ;) (expression_statement "uVar8 = uVar8 - uStack_44;" (assignment_expression "uVar8 = uVar8 - uStack_44" identifier = (binary_expression "uVar8 - uStack_44" identifier - identifier)) ;) (expression_statement "uStack_44 = *(uint *)(iStack_50 + 0x10);" (assignment_expression "uStack_44 = *(uint *)(iStack_50 + 0x10)" identifier = (pointer_expression "*(uint *)(iStack_50 + 0x10)" * (cast_expression "(uint *)(iStack_50 + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iStack_50 + 0x10)" ( (binary_expression "iStack_50 + 0x10" identifier + number_literal) ))))) ;) (goto_statement "goto code_r0x0002044e;" goto statement_identifier ;) (while_statement "while( true ) {\n    iStack_50 = *(int *)(iStack_50 + 0x30);\n    uVar8 = uVar8 - *puVar1;\n    if (iStack_50 == 0) break;\ncode_r0x00020523:\n    puVar1 = (uint *)(iStack_50 + 0x10);\n    uVar11 = (uint)(uVar8 < *puVar1);\n    iVar12 = ((int)uVar8 >> 0x1f) - *(int *)(iStack_50 + 0x14);\n    if ((SBORROW4((int)uVar8 >> 0x1f,*(int *)(iStack_50 + 0x14)) != SBORROW4(iVar12,uVar11)) !=\n        (int)(iVar12 - uVar11) < 0) {\n      acStack_26[iStack_38] = '\0';\n      if (acStack_26[0] == '\0') goto code_r0x000205bb;\n      iVar12 = strcmp(acStack_26,"eh");\n      if (iVar12 == 0) goto code_r0x00020575;\n      if (acStack_26[0] == 'z') goto code_r0x000205bb;\n      break;\n    }\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    iStack_50 = *(int *)(iStack_50 + 0x30);\n    uVar8 = uVar8 - *puVar1;\n    if (iStack_50 == 0) break;\ncode_r0x00020523:\n    puVar1 = (uint *)(iStack_50 + 0x10);\n    uVar11 = (uint)(uVar8 < *puVar1);\n    iVar12 = ((int)uVar8 >> 0x1f) - *(int *)(iStack_50 + 0x14);\n    if ((SBORROW4((int)uVar8 >> 0x1f,*(int *)(iStack_50 + 0x14)) != SBORROW4(iVar12,uVar11)) !=\n        (int)(iVar12 - uVar11) < 0) {\n      acStack_26[iStack_38] = '\0';\n      if (acStack_26[0] == '\0') goto code_r0x000205bb;\n      iVar12 = strcmp(acStack_26,"eh");\n      if (iVar12 == 0) goto code_r0x00020575;\n      if (acStack_26[0] == 'z') goto code_r0x000205bb;\n      break;\n    }\n  }" { (expression_statement "iStack_50 = *(int *)(iStack_50 + 0x30);" (assignment_expression "iStack_50 = *(int *)(iStack_50 + 0x30)" identifier = (pointer_expression "*(int *)(iStack_50 + 0x30)" * (cast_expression "(int *)(iStack_50 + 0x30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iStack_50 + 0x30)" ( (binary_expression "iStack_50 + 0x30" identifier + number_literal) ))))) ;) (expression_statement "uVar8 = uVar8 - *puVar1;" (assignment_expression "uVar8 = uVar8 - *puVar1" identifier = (binary_expression "uVar8 - *puVar1" identifier - (pointer_expression "*puVar1" * identifier))) ;) (if_statement "if (iStack_50 == 0) break;" if (parenthesized_expression "(iStack_50 == 0)" ( (binary_expression "iStack_50 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (labeled_statement "code_r0x00020523:\n    puVar1 = (uint *)(iStack_50 + 0x10);" statement_identifier : (expression_statement "puVar1 = (uint *)(iStack_50 + 0x10);" (assignment_expression "puVar1 = (uint *)(iStack_50 + 0x10)" identifier = (cast_expression "(uint *)(iStack_50 + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iStack_50 + 0x10)" ( (binary_expression "iStack_50 + 0x10" identifier + number_literal) )))) ;)) (expression_statement "uVar11 = (uint)(uVar8 < *puVar1);" (assignment_expression "uVar11 = (uint)(uVar8 < *puVar1)" identifier = (call_expression "(uint)(uVar8 < *puVar1)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar8 < *puVar1)" ( (binary_expression "uVar8 < *puVar1" identifier < (pointer_expression "*puVar1" * identifier)) )))) ;) (expression_statement "iVar12 = ((int)uVar8 >> 0x1f) - *(int *)(iStack_50 + 0x14);" (assignment_expression "iVar12 = ((int)uVar8 >> 0x1f) - *(int *)(iStack_50 + 0x14)" identifier = (binary_expression "((int)uVar8 >> 0x1f) - *(int *)(iStack_50 + 0x14)" (parenthesized_expression "((int)uVar8 >> 0x1f)" ( (binary_expression "(int)uVar8 >> 0x1f" (cast_expression "(int)uVar8" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) )) - (pointer_expression "*(int *)(iStack_50 + 0x14)" * (cast_expression "(int *)(iStack_50 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iStack_50 + 0x14)" ( (binary_expression "iStack_50 + 0x14" identifier + number_literal) )))))) ;) (if_statement "if ((SBORROW4((int)uVar8 >> 0x1f,*(int *)(iStack_50 + 0x14)) != SBORROW4(iVar12,uVar11)) !=\n        (int)(iVar12 - uVar11) < 0) {\n      acStack_26[iStack_38] = '\0';\n      if (acStack_26[0] == '\0') goto code_r0x000205bb;\n      iVar12 = strcmp(acStack_26,"eh");\n      if (iVar12 == 0) goto code_r0x00020575;\n      if (acStack_26[0] == 'z') goto code_r0x000205bb;\n      break;\n    }" if (parenthesized_expression "((SBORROW4((int)uVar8 >> 0x1f,*(int *)(iStack_50 + 0x14)) != SBORROW4(iVar12,uVar11)) !=\n        (int)(iVar12 - uVar11) < 0)" ( (binary_expression "(SBORROW4((int)uVar8 >> 0x1f,*(int *)(iStack_50 + 0x14)) != SBORROW4(iVar12,uVar11)) !=\n        (int)(iVar12 - uVar11) < 0" (parenthesized_expression "(SBORROW4((int)uVar8 >> 0x1f,*(int *)(iStack_50 + 0x14)) != SBORROW4(iVar12,uVar11))" ( (binary_expression "SBORROW4((int)uVar8 >> 0x1f,*(int *)(iStack_50 + 0x14)) != SBORROW4(iVar12,uVar11)" (call_expression "SBORROW4((int)uVar8 >> 0x1f,*(int *)(iStack_50 + 0x14))" identifier (argument_list "((int)uVar8 >> 0x1f,*(int *)(iStack_50 + 0x14))" ( (binary_expression "(int)uVar8 >> 0x1f" (cast_expression "(int)uVar8" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) , (pointer_expression "*(int *)(iStack_50 + 0x14)" * (cast_expression "(int *)(iStack_50 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iStack_50 + 0x14)" ( (binary_expression "iStack_50 + 0x14" identifier + number_literal) )))) ))) != (call_expression "SBORROW4(iVar12,uVar11)" identifier (argument_list "(iVar12,uVar11)" ( identifier , identifier )))) )) != (binary_expression "(int)(iVar12 - uVar11) < 0" (cast_expression "(int)(iVar12 - uVar11)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(iVar12 - uVar11)" ( (binary_expression "iVar12 - uVar11" identifier - identifier) ))) < number_literal)) )) (compound_statement "{\n      acStack_26[iStack_38] = '\0';\n      if (acStack_26[0] == '\0') goto code_r0x000205bb;\n      iVar12 = strcmp(acStack_26,"eh");\n      if (iVar12 == 0) goto code_r0x00020575;\n      if (acStack_26[0] == 'z') goto code_r0x000205bb;\n      break;\n    }" { (expression_statement "acStack_26[iStack_38] = '\0';" (assignment_expression "acStack_26[iStack_38] = '\0'" (subscript_expression "acStack_26[iStack_38]" identifier [ identifier ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (if_statement "if (acStack_26[0] == '\0') goto code_r0x000205bb;" if (parenthesized_expression "(acStack_26[0] == '\0')" ( (binary_expression "acStack_26[0] == '\0'" (subscript_expression "acStack_26[0]" identifier [ number_literal ]) == (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto code_r0x000205bb;" goto statement_identifier ;)) (expression_statement "iVar12 = strcmp(acStack_26,"eh");" (assignment_expression "iVar12 = strcmp(acStack_26,"eh")" identifier = (call_expression "strcmp(acStack_26,"eh")" identifier (argument_list "(acStack_26,"eh")" ( identifier , (string_literal ""eh"" " string_content ") )))) ;) (if_statement "if (iVar12 == 0) goto code_r0x00020575;" if (parenthesized_expression "(iVar12 == 0)" ( (binary_expression "iVar12 == 0" identifier == number_literal) )) (goto_statement "goto code_r0x00020575;" goto statement_identifier ;)) (if_statement "if (acStack_26[0] == 'z') goto code_r0x000205bb;" if (parenthesized_expression "(acStack_26[0] == 'z')" ( (binary_expression "acStack_26[0] == 'z'" (subscript_expression "acStack_26[0]" identifier [ number_literal ]) == (char_literal "'z'" ' character ')) )) (goto_statement "goto code_r0x000205bb;" goto statement_identifier ;)) (break_statement "break;" break ;) })) })) (goto_statement "goto code_r0x00020226;" goto statement_identifier ;) (labeled_statement "code_r0x00020575:\n  if (iVar4 == 0) goto code_r0x00020600;" statement_identifier : (if_statement "if (iVar4 == 0) goto code_r0x00020600;" if (parenthesized_expression "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) )) (goto_statement "goto code_r0x00020600;" goto statement_identifier ;))) (if_statement "if ((*(int *)(iVar4 + 4) == iStack_50) && (*(uint *)(iVar4 + 8) == uVar8)) {\n    uVar8 = uVar8 + *(byte *)(iVar4 + 2);\n    goto code_r0x000205a6;\n  }" if (parenthesized_expression "((*(int *)(iVar4 + 4) == iStack_50) && (*(uint *)(iVar4 + 8) == uVar8))" ( (binary_expression "(*(int *)(iVar4 + 4) == iStack_50) && (*(uint *)(iVar4 + 8) == uVar8)" (parenthesized_expression "(*(int *)(iVar4 + 4) == iStack_50)" ( (binary_expression "*(int *)(iVar4 + 4) == iStack_50" (pointer_expression "*(int *)(iVar4 + 4)" * (cast_expression "(int *)(iVar4 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 4)" ( (binary_expression "iVar4 + 4" identifier + number_literal) )))) == identifier) )) && (parenthesized_expression "(*(uint *)(iVar4 + 8) == uVar8)" ( (binary_expression "*(uint *)(iVar4 + 8) == uVar8" (pointer_expression "*(uint *)(iVar4 + 8)" * (cast_expression "(uint *)(iVar4 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 8)" ( (binary_expression "iVar4 + 8" identifier + number_literal) )))) == identifier) ))) )) (compound_statement "{\n    uVar8 = uVar8 + *(byte *)(iVar4 + 2);\n    goto code_r0x000205a6;\n  }" { (expression_statement "uVar8 = uVar8 + *(byte *)(iVar4 + 2);" (assignment_expression "uVar8 = uVar8 + *(byte *)(iVar4 + 2)" identifier = (binary_expression "uVar8 + *(byte *)(iVar4 + 2)" identifier + (pointer_expression "*(byte *)(iVar4 + 2)" * (cast_expression "(byte *)(iVar4 + 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 2)" ( (binary_expression "iVar4 + 2" identifier + number_literal) )))))) ;) (goto_statement "goto code_r0x000205a6;" goto statement_identifier ;) })) (expression_statement "iVar4 = *(int *)(iVar4 + 0x28);" (assignment_expression "iVar4 = *(int *)(iVar4 + 0x28)" identifier = (pointer_expression "*(int *)(iVar4 + 0x28)" * (cast_expression "(int *)(iVar4 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x28)" ( (binary_expression "iVar4 + 0x28" identifier + number_literal) ))))) ;) (goto_statement "goto code_r0x00020575;" goto statement_identifier ;) (labeled_statement "code_r0x000205bb:\n  cVar5 = *(char *)(iStack_50 + 0x68 + uVar8);" statement_identifier : (expression_statement "cVar5 = *(char *)(iStack_50 + 0x68 + uVar8);" (assignment_expression "cVar5 = *(char *)(iStack_50 + 0x68 + uVar8)" identifier = (pointer_expression "*(char *)(iStack_50 + 0x68 + uVar8)" * (cast_expression "(char *)(iStack_50 + 0x68 + uVar8)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iStack_50 + 0x68 + uVar8)" ( (binary_expression "iStack_50 + 0x68 + uVar8" (binary_expression "iStack_50 + 0x68" identifier + number_literal) + identifier) ))))) ;)) (expression_statement "iStack_3c = 0;" (assignment_expression "iStack_3c = 0" identifier = number_literal) ;) (if_statement "if (-1 < cVar5) {\n    iStack_3c = (int)cVar5;\n  }" if (parenthesized_expression "(-1 < cVar5)" ( (binary_expression "-1 < cVar5" number_literal < identifier) )) (compound_statement "{\n    iStack_3c = (int)cVar5;\n  }" { (expression_statement "iStack_3c = (int)cVar5;" (assignment_expression "iStack_3c = (int)cVar5" identifier = (cast_expression "(int)cVar5" ( (type_descriptor "int" primitive_type) ) identifier)) ;) })) (expression_statement "piVar6[1] = 1;" (assignment_expression "piVar6[1] = 1" (subscript_expression "piVar6[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar6[2] = iStack_3c;" (assignment_expression "piVar6[2] = iStack_3c" (subscript_expression "piVar6[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "piVar6[3] = (uint)(acStack_26[0] == 'z');" (assignment_expression "piVar6[3] = (uint)(acStack_26[0] == 'z')" (subscript_expression "piVar6[3]" identifier [ number_literal ]) = (call_expression "(uint)(acStack_26[0] == 'z')" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(acStack_26[0] == 'z')" ( (binary_expression "acStack_26[0] == 'z'" (subscript_expression "acStack_26[0]" identifier [ number_literal ]) == (char_literal "'z'" ' character ')) )))) ;) (labeled_statement "code_r0x0001ffd7:\n  if (piVar6[3] != 0) {\n    *piVar6 = 4;\n    piVar6[7] = 0;\n    piVar6[8] = 0;\n    return 0;\n  }" statement_identifier : (if_statement "if (piVar6[3] != 0) {\n    *piVar6 = 4;\n    piVar6[7] = 0;\n    piVar6[8] = 0;\n    return 0;\n  }" if (parenthesized_expression "(piVar6[3] != 0)" ( (binary_expression "piVar6[3] != 0" (subscript_expression "piVar6[3]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n    *piVar6 = 4;\n    piVar6[7] = 0;\n    piVar6[8] = 0;\n    return 0;\n  }" { (expression_statement "*piVar6 = 4;" (assignment_expression "*piVar6 = 4" (pointer_expression "*piVar6" * identifier) = number_literal) ;) (expression_statement "piVar6[7] = 0;" (assignment_expression "piVar6[7] = 0" (subscript_expression "piVar6[7]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar6[8] = 0;" (assignment_expression "piVar6[8] = 0" (subscript_expression "piVar6[8]" identifier [ number_literal ]) = number_literal) ;) (return_statement "return 0;" return number_literal ;) }))) (labeled_statement "code_r0x00020108:\n  *piVar6 = 6;" statement_identifier : (expression_statement "*piVar6 = 6;" (assignment_expression "*piVar6 = 6" (pointer_expression "*piVar6" * identifier) = number_literal) ;)) (return_statement "return 0;" return number_literal ;) (labeled_statement "code_r0x00020600:\n  uVar8 = uVar8 + 4;" statement_identifier : (expression_statement "uVar8 = uVar8 + 4;" (assignment_expression "uVar8 = uVar8 + 4" identifier = (binary_expression "uVar8 + 4" identifier + number_literal)) ;)) (labeled_statement "code_r0x000205a6:\n  do {\n    puVar1 = (uint *)(iStack_50 + 0x10);\n    uVar11 = (uint)(uVar8 < *puVar1);\n    iVar4 = ((int)uVar8 >> 0x1f) - *(int *)(iStack_50 + 0x14);\n    if ((SBORROW4((int)uVar8 >> 0x1f,*(int *)(iStack_50 + 0x14)) != SBORROW4(iVar4,uVar11)) !=\n        (int)(iVar4 - uVar11) < 0) goto code_r0x000205bb;\n    iStack_50 = *(int *)(iStack_50 + 0x30);\n    uVar8 = uVar8 - *puVar1;\n  } while (iStack_50 != 0);" statement_identifier : (do_statement "do {\n    puVar1 = (uint *)(iStack_50 + 0x10);\n    uVar11 = (uint)(uVar8 < *puVar1);\n    iVar4 = ((int)uVar8 >> 0x1f) - *(int *)(iStack_50 + 0x14);\n    if ((SBORROW4((int)uVar8 >> 0x1f,*(int *)(iStack_50 + 0x14)) != SBORROW4(iVar4,uVar11)) !=\n        (int)(iVar4 - uVar11) < 0) goto code_r0x000205bb;\n    iStack_50 = *(int *)(iStack_50 + 0x30);\n    uVar8 = uVar8 - *puVar1;\n  } while (iStack_50 != 0);" do (compound_statement "{\n    puVar1 = (uint *)(iStack_50 + 0x10);\n    uVar11 = (uint)(uVar8 < *puVar1);\n    iVar4 = ((int)uVar8 >> 0x1f) - *(int *)(iStack_50 + 0x14);\n    if ((SBORROW4((int)uVar8 >> 0x1f,*(int *)(iStack_50 + 0x14)) != SBORROW4(iVar4,uVar11)) !=\n        (int)(iVar4 - uVar11) < 0) goto code_r0x000205bb;\n    iStack_50 = *(int *)(iStack_50 + 0x30);\n    uVar8 = uVar8 - *puVar1;\n  }" { (expression_statement "puVar1 = (uint *)(iStack_50 + 0x10);" (assignment_expression "puVar1 = (uint *)(iStack_50 + 0x10)" identifier = (cast_expression "(uint *)(iStack_50 + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iStack_50 + 0x10)" ( (binary_expression "iStack_50 + 0x10" identifier + number_literal) )))) ;) (expression_statement "uVar11 = (uint)(uVar8 < *puVar1);" (assignment_expression "uVar11 = (uint)(uVar8 < *puVar1)" identifier = (call_expression "(uint)(uVar8 < *puVar1)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar8 < *puVar1)" ( (binary_expression "uVar8 < *puVar1" identifier < (pointer_expression "*puVar1" * identifier)) )))) ;) (expression_statement "iVar4 = ((int)uVar8 >> 0x1f) - *(int *)(iStack_50 + 0x14);" (assignment_expression "iVar4 = ((int)uVar8 >> 0x1f) - *(int *)(iStack_50 + 0x14)" identifier = (binary_expression "((int)uVar8 >> 0x1f) - *(int *)(iStack_50 + 0x14)" (parenthesized_expression "((int)uVar8 >> 0x1f)" ( (binary_expression "(int)uVar8 >> 0x1f" (cast_expression "(int)uVar8" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) )) - (pointer_expression "*(int *)(iStack_50 + 0x14)" * (cast_expression "(int *)(iStack_50 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iStack_50 + 0x14)" ( (binary_expression "iStack_50 + 0x14" identifier + number_literal) )))))) ;) (if_statement "if ((SBORROW4((int)uVar8 >> 0x1f,*(int *)(iStack_50 + 0x14)) != SBORROW4(iVar4,uVar11)) !=\n        (int)(iVar4 - uVar11) < 0) goto code_r0x000205bb;" if (parenthesized_expression "((SBORROW4((int)uVar8 >> 0x1f,*(int *)(iStack_50 + 0x14)) != SBORROW4(iVar4,uVar11)) !=\n        (int)(iVar4 - uVar11) < 0)" ( (binary_expression "(SBORROW4((int)uVar8 >> 0x1f,*(int *)(iStack_50 + 0x14)) != SBORROW4(iVar4,uVar11)) !=\n        (int)(iVar4 - uVar11) < 0" (parenthesized_expression "(SBORROW4((int)uVar8 >> 0x1f,*(int *)(iStack_50 + 0x14)) != SBORROW4(iVar4,uVar11))" ( (binary_expression "SBORROW4((int)uVar8 >> 0x1f,*(int *)(iStack_50 + 0x14)) != SBORROW4(iVar4,uVar11)" (call_expression "SBORROW4((int)uVar8 >> 0x1f,*(int *)(iStack_50 + 0x14))" identifier (argument_list "((int)uVar8 >> 0x1f,*(int *)(iStack_50 + 0x14))" ( (binary_expression "(int)uVar8 >> 0x1f" (cast_expression "(int)uVar8" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) , (pointer_expression "*(int *)(iStack_50 + 0x14)" * (cast_expression "(int *)(iStack_50 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iStack_50 + 0x14)" ( (binary_expression "iStack_50 + 0x14" identifier + number_literal) )))) ))) != (call_expression "SBORROW4(iVar4,uVar11)" identifier (argument_list "(iVar4,uVar11)" ( identifier , identifier )))) )) != (binary_expression "(int)(iVar4 - uVar11) < 0" (cast_expression "(int)(iVar4 - uVar11)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(iVar4 - uVar11)" ( (binary_expression "iVar4 - uVar11" identifier - identifier) ))) < number_literal)) )) (goto_statement "goto code_r0x000205bb;" goto statement_identifier ;)) (expression_statement "iStack_50 = *(int *)(iStack_50 + 0x30);" (assignment_expression "iStack_50 = *(int *)(iStack_50 + 0x30)" identifier = (pointer_expression "*(int *)(iStack_50 + 0x30)" * (cast_expression "(int *)(iStack_50 + 0x30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iStack_50 + 0x30)" ( (binary_expression "iStack_50 + 0x30" identifier + number_literal) ))))) ;) (expression_statement "uVar8 = uVar8 - *puVar1;" (assignment_expression "uVar8 = uVar8 - *puVar1" identifier = (binary_expression "uVar8 - *puVar1" identifier - (pointer_expression "*puVar1" * identifier))) ;) }) while (parenthesized_expression "(iStack_50 != 0)" ( (binary_expression "iStack_50 != 0" identifier != number_literal) )) ;)) (labeled_statement "code_r0x00020226:\n  piVar6[1] = 0;" statement_identifier : (expression_statement "piVar6[1] = 0;" (assignment_expression "piVar6[1] = 0" (subscript_expression "piVar6[1]" identifier [ number_literal ]) = number_literal) ;)) (labeled_statement "code_r0x0002022d:\n  *piVar6 = 8;" statement_identifier : (expression_statement "*piVar6 = 8;" (assignment_expression "*piVar6 = 8" (pointer_expression "*piVar6" * identifier) = number_literal) ;)) (return_statement "return 0;" return number_literal ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n/* WARNING: Type propagation algorithm not settling */\n/* WARNING: Unknown calling convention */\n\nint check_eh_frame(expressionS *exp,uint *pnbytes)\n\n{\n  uint *puVar1;\n  symbolS *psVar2;\n  symbolS *psVar3;\n  relax_substateT subtype;\n  int iVar4;\n  uint uVar5;\n  char cVar6;\n  frame_data *pfVar7;\n  byte *pbVar8;\n  uint uVar9;\n  byte *pbVar10;\n  byte *pbVar11;\n  uint uVar12;\n  int iVar13;\n  bool bVar14;\n  bool bVar15;\n  bool bVar16;\n  byte bVar17;\n  addressT aVar18;\n  fragS *opcode;\n  uint local_5c;\n  int local_58;\n  uint local_54;\n  int local_50;\n  uint local_44;\n  int local_40;\n  uint local_3c;\n  int local_38;\n  char augmentation [10];\n  \n  bVar17 = 0;\n  bVar14 = false;\n  bVar16 = flag_traditional_format == 0;\n  if (!bVar16) {\n    return 0;\n  }\n  iVar4 = 9;\n  pbVar10 = (byte *)now_seg->name;\n  pbVar8 = pbVar10;\n  pbVar11 = (byte *)".eh_frame";\n  do {\n    if (iVar4 == 0) break;\n    iVar4 = iVar4 + -1;\n    bVar14 = *pbVar8 < *pbVar11;\n    bVar16 = *pbVar8 == *pbVar11;\n    pbVar8 = pbVar8 + 1;\n    pbVar11 = pbVar11 + 1;\n  } while (bVar16);\n  bVar15 = false;\n  bVar14 = (!bVar14 && !bVar16) == bVar14;\n  if (bVar14) {\n    bVar15 = pbVar10[9] < 0x5f;\n    bVar14 = pbVar10[9] == 0x5f;\n    pfVar7 = &check_eh_frame::eh_frame_data;\n    if (bVar14) goto LAB_0001fe74;\n    if (check_eh_frame::eh_frame_data.state == state_idle) goto _L15;\n  }\n  else {\nLAB_0001fe74:\n    iVar4 = 0xc;\n    pbVar8 = (byte *)".debug_frame";\n    do {\n      if (iVar4 == 0) break;\n      iVar4 = iVar4 + -1;\n      bVar15 = *pbVar10 < *pbVar8;\n      bVar14 = *pbVar10 == *pbVar8;\n      pbVar10 = pbVar10 + 1;\n      pbVar8 = pbVar8 + 1;\n    } while (bVar14);\n    if ((!bVar15 && !bVar14) != bVar15) {\n      return 0;\n    }\n    pfVar7 = &check_eh_frame::debug_frame_data;\n    if (check_eh_frame::debug_frame_data.state == state_idle) goto _L15;\n  }\n  iVar4 = S_IS_DEFINED(pfVar7->size_end_sym);\n  if (iVar4 != 0) {\n    pfVar7->state = state_idle;\n_L15:\n    if ((*pnbytes == 4) &&\n       (((exp->field_0x10 == '\x03' || (exp->field_0x10 == '\x14')) &&\n        (iVar4 = S_IS_DEFINED(exp->X_add_symbol), iVar4 == 0)))) {\n      pfVar7->state = state_saw_size;\n      pfVar7->size_end_sym = exp->X_add_symbol;\n      return 0;\n    }\n    return 0;\n  }\n  switch(pfVar7->state) {\n  case state_idle:\n    goto _L15;\n  case state_saw_size:\n  case state_saw_cie_offset:\n    pfVar7->state = pfVar7->state + state_saw_size;\n    return 0;\n  case state_saw_pc_begin:\n    break;\n  case state_seeing_aug_size:\n    if (*pnbytes == 0xffffffff) {\n      if (exp->field_0x10 != '\x02') goto LAB_0001ffb8;\n      local_54 = (uint)exp->X_add_number;\n      pfVar7->state = state_skipping_aug;\n      pfVar7->aug_size = local_54;\n    }\n    else {\n      if ((*pnbytes != 1) || (exp->field_0x10 != '\x02')) {\nLAB_0001ffb8:\n        pfVar7->state = state_error;\n        return 0;\n      }\n      uVar5 = (uint)exp->X_add_number;\n      local_54 = (uVar5 & 0x7f) << ((byte)pfVar7->aug_shift & 0x1f) | pfVar7->aug_size;\n      pfVar7->aug_size = local_54;\n      pfVar7->aug_shift = pfVar7->aug_shift + 7;\n      if ((char)uVar5 < '\0') {\n        return 0;\n      }\n      pfVar7->state = state_skipping_aug;\n    }\n    if (local_54 != 0) {\n      return 0;\n    }\n    pfVar7->state = state_wait_loc4;\n    return 0;\n  case state_skipping_aug:\n    if ((int)*pnbytes < 0) {\nLAB_0001ff8e:\n      pfVar7->state = state_error;\n      return 0;\n    }\n    iVar4 = pfVar7->aug_size - *pnbytes;\n    pfVar7->aug_size = iVar4;\n    if (iVar4 != 0) {\n      if (-1 < iVar4) {\n        return 0;\n      }\n      goto LAB_0001ff8e;\n    }\n    goto LAB_00020108;\n  case state_wait_loc4:\n    if (*pnbytes != 1) {\n      return 0;\n    }\n    if (exp->field_0x10 != '\x02') {\n      return 0;\n    }\n    if ((int)exp->X_add_number != 4 || *(int *)((int)&exp->X_add_number + 4) != 0) {\n      return 0;\n    }\n    frag_grow(1);\n    pfVar7->state = state_saw_loc4;\n    pfVar7->loc4_frag = frag_now;\n    aVar18 = frag_now_fix();\n    pfVar7->loc4_fix = (int)aVar18;\n    return 0;\n  case state_saw_loc4:\n    pfVar7->state = state_wait_loc4;\n    if (*pnbytes != 4) {\n      return 0;\n    }\n    cVar6 = exp->field_0x10;\n    if (cVar6 == '\x02') {\n      uVar5 = (uint)exp->X_add_number;\n      iVar4 = *(int *)((int)&exp->X_add_number + 4);\n      if ((int)(uint)(0x3f < uVar5) <= -iVar4) {\n        pfVar7->loc4_frag->fr_literal[pfVar7->loc4_fix] = (byte)uVar5 | 0x40;\n        return 1;\n      }\n      if (-iVar4 < (int)(uint)(0xff < uVar5)) {\n        if (-iVar4 < (int)(uint)(0xffff < uVar5)) {\n          return 0;\n        }\n        pfVar7->loc4_frag->fr_literal[pfVar7->loc4_fix] = '\x03';\n        *pnbytes = 2;\n        return 0;\n      }\n      pfVar7->loc4_frag->fr_literal[pfVar7->loc4_fix] = '\x02';\n      *pnbytes = 1;\n      return 0;\n    }\n    if (cVar6 == '\x14') {\n      if ((pfVar7->cie_info).code_alignment != 1) {\n        return 0;\n      }\n      opcode = pfVar7->loc4_frag;\n      iVar4 = pfVar7->loc4_fix;\n      psVar3 = make_expr_symbol(exp);\n      subtype = 8;\n    }\n    else {\n      if ((cVar6 != '\v') && (cVar6 != '\x0e')) {\n        return 0;\n      }\n      uVar5 = (pfVar7->cie_info).code_alignment;\n      if (uVar5 < 2) {\n        return 0;\n      }\n      psVar3 = exp->X_add_symbol;\n      if (psVar3->bsym == (asymbol *)0x0) {\n        return 0;\n      }\n      psVar2 = exp->X_op_symbol;\n      if (psVar2->bsym == (asymbol *)0x0) {\n        return 0;\n      }\n      if ((psVar3->sy_value).field_0x10 != '\x14') {\n        return 0;\n      }\n      if ((psVar2->sy_value).field_0x10 != '\x02') {\n        return 0;\n      }\n      iVar4 = *(int *)((int)&(psVar2->sy_value).X_add_number + 4);\n      uVar9 = (uint)(psVar2->sy_value).X_add_number;\n      if (cVar6 != '\v') {\n        uVar12 = uVar9 >> 5 & 1;\n        iVar4 = uVar12 << ((byte)uVar9 & 0x1f);\n        uVar9 = (uVar12 ^ 1) << ((byte)uVar9 & 0x1f);\n      }\n      if (iVar4 != 0) {\n        return 0;\n      }\n      if (uVar5 != uVar9) {\n        return 0;\n      }\n      opcode = pfVar7->loc4_frag;\n      iVar4 = pfVar7->loc4_fix;\n      psVar3 = make_expr_symbol(&psVar3->sy_value);\n      subtype = (pfVar7->cie_info).code_alignment << 3;\n    }\n    frag_var(rs_cfa,4,0,subtype,psVar3,(longlong)iVar4,(char *)opcode);\n    return 1;\n  default:\n    return 0;\n  }\n  if (pfVar7->cie_info_ok != 0) goto LAB_0001ffd7;\n                    /* WARNING: Load size is inaccurate */\n  local_50 = **now_seg->userdata;\n  if (local_50 != 0) {\n    uVar5 = *(uint *)(local_50 + 0x10);\n    iVar4 = *(int *)(local_50 + 0x14);\n    if (-iVar4 < (int)(uint)(4 < uVar5)) {\n      local_5c = 4;\n      iVar13 = 0;\n    }\n    else {\n      local_5c = 4;\n      do {\n        local_50 = *(int *)(local_50 + 0x30);\n        local_5c = local_5c - uVar5;\n        if (local_50 == 0) goto LAB_00020226;\n        uVar5 = *(uint *)(local_50 + 0x10);\n        iVar4 = *(int *)(local_50 + 0x14);\n        iVar13 = (int)local_5c >> 0x1f;\n      } while ((SBORROW4(iVar13,iVar4) != SBORROW4(iVar13 - iVar4,(uint)(local_5c < uVar5))) ==\n               (int)((iVar13 - iVar4) - (uint)(local_5c < uVar5)) < 0);\n    }\n    iVar4 = (iVar4 - iVar13) - (uint)(uVar5 < local_5c);\n    uVar5 = (uint)(3 < uVar5 - local_5c);\n    bVar14 = iVar4 != 0 || (uint)-iVar4 < uVar5;\n    bVar16 = -uVar5 == iVar4;\n    if (-iVar4 < (int)uVar5) {\n      iVar4 = 0xc;\n      pbVar10 = (byte *)now_seg->name;\n      pbVar8 = (byte *)".debug_frame";\n      do {\n        if (iVar4 == 0) break;\n        iVar4 = iVar4 + -1;\n        bVar14 = *pbVar10 < *pbVar8;\n        bVar16 = *pbVar10 == *pbVar8;\n        pbVar10 = pbVar10 + (uint)bVar17 * -2 + 1;\n        pbVar8 = pbVar8 + (uint)bVar17 * -2 + 1;\n      } while (bVar16);\n      cVar6 = -((!bVar14 && !bVar16) == bVar14);\n      if ((((*(char *)(local_50 + 0x68 + local_5c) == cVar6) &&\n           (*(char *)(local_50 + 0x69 + local_5c) == cVar6)) &&\n          (*(char *)(local_50 + 0x6a + local_5c) == cVar6)) &&\n         (*(char *)(local_50 + 0x6b + local_5c) == cVar6)) {\n        local_5c = local_5c + 4;\n        do {\n          iVar4 = (int)local_5c >> 0x1f;\n          local_40 = *(int *)(local_50 + 0x14);\n          local_44 = *(uint *)(local_50 + 0x10);\n          if ((SBORROW4(iVar4,local_40) != SBORROW4(iVar4 - local_40,(uint)(local_5c < local_44)))\n              != (int)((iVar4 - local_40) - (uint)(local_5c < local_44)) < 0) {\n            if (((int)(uint)(local_44 != local_5c) <=\n                 (int)-((local_40 - iVar4) - (uint)(local_44 < local_5c))) ||\n               (*(char *)(local_50 + 0x68 + local_5c) != '\x01')) goto LAB_00020226;\n            uVar5 = local_5c + 1;\n            local_38 = 0;\n            iVar4 = (*now_seg->userdata)[4];\n            goto LAB_0002044e;\n          }\n          local_5c = local_5c - local_44;\n          local_50 = *(int *)(local_50 + 0x30);\n        } while (local_50 != 0);\n        pfVar7->cie_info_ok = 0;\n        goto LAB_0002022d;\n      }\n    }\n  }\n  goto LAB_00020226;\nLAB_0002044e:\n  local_58 = (int)uVar5 >> 0x1f;\n  if ((SBORROW4(local_58,local_40) != SBORROW4(local_58 - local_40,(uint)(uVar5 < local_44))) !=\n      (int)((local_58 - local_40) - (uint)(uVar5 < local_44)) < 0) {\n    cVar6 = *(char *)(local_50 + 0x68 + uVar5);\n    if (cVar6 == '\0') {\nLAB_00020509:\n      uVar5 = uVar5 + 1;\n      goto LAB_00020523;\n    }\n    local_5c = uVar5;\n    while( true ) {\n      if (local_38 < 9) {\n        augmentation[local_38] = cVar6;\n        local_38 = local_38 + 1;\n      }\n      uVar5 = uVar5 + 1;\n      if (local_58 == local_40 + -1 + (uint)(local_44 != 0) && local_5c == local_44 - 1) break;\n      bVar14 = 0xfffffffe < local_5c;\n      local_5c = local_5c + 1;\n      local_58 = local_58 + (uint)bVar14;\n      cVar6 = *(char *)(local_50 + 0x68 + uVar5);\n      if (cVar6 == '\0') goto LAB_00020509;\n    }\n    goto LAB_0002044e;\n  }\n  local_50 = *(int *)(local_50 + 0x30);\n  if (local_50 == 0) goto LAB_00020226;\n  local_40 = *(int *)(local_50 + 0x14);\n  uVar5 = uVar5 - local_44;\n  local_44 = *(uint *)(local_50 + 0x10);\n  goto LAB_0002044e;\n  while( true ) {\n    local_50 = *(int *)(local_50 + 0x30);\n    uVar5 = uVar5 - *puVar1;\n    if (local_50 == 0) break;\nLAB_00020523:\n    puVar1 = (uint *)(local_50 + 0x10);\n    uVar9 = (uint)(uVar5 < *puVar1);\n    iVar13 = ((int)uVar5 >> 0x1f) - *(int *)(local_50 + 0x14);\n    if ((SBORROW4((int)uVar5 >> 0x1f,*(int *)(local_50 + 0x14)) != SBORROW4(iVar13,uVar9)) !=\n        (int)(iVar13 - uVar9) < 0) {\n      augmentation[local_38] = '\0';\n      if (augmentation[0] == '\0') goto LAB_000205bb;\n      iVar13 = strcmp(augmentation,"eh");\n      if (iVar13 == 0) goto LAB_00020575;\n      if (augmentation[0] == 'z') goto LAB_000205bb;\n      break;\n    }\n  }\n  goto LAB_00020226;\nLAB_00020575:\n  if (iVar4 == 0) goto LAB_00020600;\n  if ((*(int *)(iVar4 + 4) == local_50) && (*(uint *)(iVar4 + 8) == uVar5)) {\n    uVar5 = uVar5 + *(byte *)(iVar4 + 2);\n    goto LAB_000205a6;\n  }\n  iVar4 = *(int *)(iVar4 + 0x28);\n  goto LAB_00020575;\nLAB_000205bb:\n  cVar6 = *(char *)(local_50 + 0x68 + uVar5);\n  local_3c = 0;\n  if (-1 < cVar6) {\n    local_3c = (int)cVar6;\n  }\n  pfVar7->cie_info_ok = 1;\n  (pfVar7->cie_info).code_alignment = local_3c;\n  (pfVar7->cie_info).z_augmentation = (uint)(augmentation[0] == 'z');\nLAB_0001ffd7:\n  if ((pfVar7->cie_info).z_augmentation != 0) {\n    pfVar7->state = state_seeing_aug_size;\n    pfVar7->aug_size = 0;\n    pfVar7->aug_shift = 0;\n    return 0;\n  }\nLAB_00020108:\n  pfVar7->state = state_wait_loc4;\n  return 0;\nLAB_00020600:\n  uVar5 = uVar5 + 4;\nLAB_000205a6:\n  do {\n    puVar1 = (uint *)(local_50 + 0x10);\n    uVar9 = (uint)(uVar5 < *puVar1);\n    iVar4 = ((int)uVar5 >> 0x1f) - *(int *)(local_50 + 0x14);\n    if ((SBORROW4((int)uVar5 >> 0x1f,*(int *)(local_50 + 0x14)) != SBORROW4(iVar4,uVar9)) !=\n        (int)(iVar4 - uVar9) < 0) goto LAB_000205bb;\n    local_50 = *(int *)(local_50 + 0x30);\n    uVar5 = uVar5 - *puVar1;\n  } while (local_50 != 0);\nLAB_00020226:\n  pfVar7->cie_info_ok = 0;\nLAB_0002022d:\n  pfVar7->state = state_error;\n  return 0;\n}\n\n" comment comment comment (function_definition "int check_eh_frame(expressionS *exp,uint *pnbytes)\n\n{\n  uint *puVar1;\n  symbolS *psVar2;\n  symbolS *psVar3;\n  relax_substateT subtype;\n  int iVar4;\n  uint uVar5;\n  char cVar6;\n  frame_data *pfVar7;\n  byte *pbVar8;\n  uint uVar9;\n  byte *pbVar10;\n  byte *pbVar11;\n  uint uVar12;\n  int iVar13;\n  bool bVar14;\n  bool bVar15;\n  bool bVar16;\n  byte bVar17;\n  addressT aVar18;\n  fragS *opcode;\n  uint local_5c;\n  int local_58;\n  uint local_54;\n  int local_50;\n  uint local_44;\n  int local_40;\n  uint local_3c;\n  int local_38;\n  char augmentation [10];\n  \n  bVar17 = 0;\n  bVar14 = false;\n  bVar16 = flag_traditional_format == 0;\n  if (!bVar16) {\n    return 0;\n  }\n  iVar4 = 9;\n  pbVar10 = (byte *)now_seg->name;\n  pbVar8 = pbVar10;\n  pbVar11 = (byte *)".eh_frame";\n  do {\n    if (iVar4 == 0) break;\n    iVar4 = iVar4 + -1;\n    bVar14 = *pbVar8 < *pbVar11;\n    bVar16 = *pbVar8 == *pbVar11;\n    pbVar8 = pbVar8 + 1;\n    pbVar11 = pbVar11 + 1;\n  } while (bVar16);\n  bVar15 = false;\n  bVar14 = (!bVar14 && !bVar16) == bVar14;\n  if (bVar14) {\n    bVar15 = pbVar10[9] < 0x5f;\n    bVar14 = pbVar10[9] == 0x5f;\n    pfVar7 = &check_eh_frame::eh_frame_data;\n    if (bVar14) goto LAB_0001fe74;\n    if (check_eh_frame::eh_frame_data.state == state_idle) goto _L15;\n  }\n  else {\nLAB_0001fe74:\n    iVar4 = 0xc;\n    pbVar8 = (byte *)".debug_frame";\n    do {\n      if (iVar4 == 0) break;\n      iVar4 = iVar4 + -1;\n      bVar15 = *pbVar10 < *pbVar8;\n      bVar14 = *pbVar10 == *pbVar8;\n      pbVar10 = pbVar10 + 1;\n      pbVar8 = pbVar8 + 1;\n    } while (bVar14);\n    if ((!bVar15 && !bVar14) != bVar15) {\n      return 0;\n    }\n    pfVar7 = &check_eh_frame::debug_frame_data;\n    if (check_eh_frame::debug_frame_data.state == state_idle) goto _L15;\n  }\n  iVar4 = S_IS_DEFINED(pfVar7->size_end_sym);\n  if (iVar4 != 0) {\n    pfVar7->state = state_idle;\n_L15:\n    if ((*pnbytes == 4) &&\n       (((exp->field_0x10 == '\x03' || (exp->field_0x10 == '\x14')) &&\n        (iVar4 = S_IS_DEFINED(exp->X_add_symbol), iVar4 == 0)))) {\n      pfVar7->state = state_saw_size;\n      pfVar7->size_end_sym = exp->X_add_symbol;\n      return 0;\n    }\n    return 0;\n  }\n  switch(pfVar7->state) {\n  case state_idle:\n    goto _L15;\n  case state_saw_size:\n  case state_saw_cie_offset:\n    pfVar7->state = pfVar7->state + state_saw_size;\n    return 0;\n  case state_saw_pc_begin:\n    break;\n  case state_seeing_aug_size:\n    if (*pnbytes == 0xffffffff) {\n      if (exp->field_0x10 != '\x02') goto LAB_0001ffb8;\n      local_54 = (uint)exp->X_add_number;\n      pfVar7->state = state_skipping_aug;\n      pfVar7->aug_size = local_54;\n    }\n    else {\n      if ((*pnbytes != 1) || (exp->field_0x10 != '\x02')) {\nLAB_0001ffb8:\n        pfVar7->state = state_error;\n        return 0;\n      }\n      uVar5 = (uint)exp->X_add_number;\n      local_54 = (uVar5 & 0x7f) << ((byte)pfVar7->aug_shift & 0x1f) | pfVar7->aug_size;\n      pfVar7->aug_size = local_54;\n      pfVar7->aug_shift = pfVar7->aug_shift + 7;\n      if ((char)uVar5 < '\0') {\n        return 0;\n      }\n      pfVar7->state = state_skipping_aug;\n    }\n    if (local_54 != 0) {\n      return 0;\n    }\n    pfVar7->state = state_wait_loc4;\n    return 0;\n  case state_skipping_aug:\n    if ((int)*pnbytes < 0) {\nLAB_0001ff8e:\n      pfVar7->state = state_error;\n      return 0;\n    }\n    iVar4 = pfVar7->aug_size - *pnbytes;\n    pfVar7->aug_size = iVar4;\n    if (iVar4 != 0) {\n      if (-1 < iVar4) {\n        return 0;\n      }\n      goto LAB_0001ff8e;\n    }\n    goto LAB_00020108;\n  case state_wait_loc4:\n    if (*pnbytes != 1) {\n      return 0;\n    }\n    if (exp->field_0x10 != '\x02') {\n      return 0;\n    }\n    if ((int)exp->X_add_number != 4 || *(int *)((int)&exp->X_add_number + 4) != 0) {\n      return 0;\n    }\n    frag_grow(1);\n    pfVar7->state = state_saw_loc4;\n    pfVar7->loc4_frag = frag_now;\n    aVar18 = frag_now_fix();\n    pfVar7->loc4_fix = (int)aVar18;\n    return 0;\n  case state_saw_loc4:\n    pfVar7->state = state_wait_loc4;\n    if (*pnbytes != 4) {\n      return 0;\n    }\n    cVar6 = exp->field_0x10;\n    if (cVar6 == '\x02') {\n      uVar5 = (uint)exp->X_add_number;\n      iVar4 = *(int *)((int)&exp->X_add_number + 4);\n      if ((int)(uint)(0x3f < uVar5) <= -iVar4) {\n        pfVar7->loc4_frag->fr_literal[pfVar7->loc4_fix] = (byte)uVar5 | 0x40;\n        return 1;\n      }\n      if (-iVar4 < (int)(uint)(0xff < uVar5)) {\n        if (-iVar4 < (int)(uint)(0xffff < uVar5)) {\n          return 0;\n        }\n        pfVar7->loc4_frag->fr_literal[pfVar7->loc4_fix] = '\x03';\n        *pnbytes = 2;\n        return 0;\n      }\n      pfVar7->loc4_frag->fr_literal[pfVar7->loc4_fix] = '\x02';\n      *pnbytes = 1;\n      return 0;\n    }\n    if (cVar6 == '\x14') {\n      if ((pfVar7->cie_info).code_alignment != 1) {\n        return 0;\n      }\n      opcode = pfVar7->loc4_frag;\n      iVar4 = pfVar7->loc4_fix;\n      psVar3 = make_expr_symbol(exp);\n      subtype = 8;\n    }\n    else {\n      if ((cVar6 != '\v') && (cVar6 != '\x0e')) {\n        return 0;\n      }\n      uVar5 = (pfVar7->cie_info).code_alignment;\n      if (uVar5 < 2) {\n        return 0;\n      }\n      psVar3 = exp->X_add_symbol;\n      if (psVar3->bsym == (asymbol *)0x0) {\n        return 0;\n      }\n      psVar2 = exp->X_op_symbol;\n      if (psVar2->bsym == (asymbol *)0x0) {\n        return 0;\n      }\n      if ((psVar3->sy_value).field_0x10 != '\x14') {\n        return 0;\n      }\n      if ((psVar2->sy_value).field_0x10 != '\x02') {\n        return 0;\n      }\n      iVar4 = *(int *)((int)&(psVar2->sy_value).X_add_number + 4);\n      uVar9 = (uint)(psVar2->sy_value).X_add_number;\n      if (cVar6 != '\v') {\n        uVar12 = uVar9 >> 5 & 1;\n        iVar4 = uVar12 << ((byte)uVar9 & 0x1f);\n        uVar9 = (uVar12 ^ 1) << ((byte)uVar9 & 0x1f);\n      }\n      if (iVar4 != 0) {\n        return 0;\n      }\n      if (uVar5 != uVar9) {\n        return 0;\n      }\n      opcode = pfVar7->loc4_frag;\n      iVar4 = pfVar7->loc4_fix;\n      psVar3 = make_expr_symbol(&psVar3->sy_value);\n      subtype = (pfVar7->cie_info).code_alignment << 3;\n    }\n    frag_var(rs_cfa,4,0,subtype,psVar3,(longlong)iVar4,(char *)opcode);\n    return 1;\n  default:\n    return 0;\n  }\n  if (pfVar7->cie_info_ok != 0) goto LAB_0001ffd7;\n                    /* WARNING: Load size is inaccurate */\n  local_50 = **now_seg->userdata;\n  if (local_50 != 0) {\n    uVar5 = *(uint *)(local_50 + 0x10);\n    iVar4 = *(int *)(local_50 + 0x14);\n    if (-iVar4 < (int)(uint)(4 < uVar5)) {\n      local_5c = 4;\n      iVar13 = 0;\n    }\n    else {\n      local_5c = 4;\n      do {\n        local_50 = *(int *)(local_50 + 0x30);\n        local_5c = local_5c - uVar5;\n        if (local_50 == 0) goto LAB_00020226;\n        uVar5 = *(uint *)(local_50 + 0x10);\n        iVar4 = *(int *)(local_50 + 0x14);\n        iVar13 = (int)local_5c >> 0x1f;\n      } while ((SBORROW4(iVar13,iVar4) != SBORROW4(iVar13 - iVar4,(uint)(local_5c < uVar5))) ==\n               (int)((iVar13 - iVar4) - (uint)(local_5c < uVar5)) < 0);\n    }\n    iVar4 = (iVar4 - iVar13) - (uint)(uVar5 < local_5c);\n    uVar5 = (uint)(3 < uVar5 - local_5c);\n    bVar14 = iVar4 != 0 || (uint)-iVar4 < uVar5;\n    bVar16 = -uVar5 == iVar4;\n    if (-iVar4 < (int)uVar5) {\n      iVar4 = 0xc;\n      pbVar10 = (byte *)now_seg->name;\n      pbVar8 = (byte *)".debug_frame";\n      do {\n        if (iVar4 == 0) break;\n        iVar4 = iVar4 + -1;\n        bVar14 = *pbVar10 < *pbVar8;\n        bVar16 = *pbVar10 == *pbVar8;\n        pbVar10 = pbVar10 + (uint)bVar17 * -2 + 1;\n        pbVar8 = pbVar8 + (uint)bVar17 * -2 + 1;\n      } while (bVar16);\n      cVar6 = -((!bVar14 && !bVar16) == bVar14);\n      if ((((*(char *)(local_50 + 0x68 + local_5c) == cVar6) &&\n           (*(char *)(local_50 + 0x69 + local_5c) == cVar6)) &&\n          (*(char *)(local_50 + 0x6a + local_5c) == cVar6)) &&\n         (*(char *)(local_50 + 0x6b + local_5c) == cVar6)) {\n        local_5c = local_5c + 4;\n        do {\n          iVar4 = (int)local_5c >> 0x1f;\n          local_40 = *(int *)(local_50 + 0x14);\n          local_44 = *(uint *)(local_50 + 0x10);\n          if ((SBORROW4(iVar4,local_40) != SBORROW4(iVar4 - local_40,(uint)(local_5c < local_44)))\n              != (int)((iVar4 - local_40) - (uint)(local_5c < local_44)) < 0) {\n            if (((int)(uint)(local_44 != local_5c) <=\n                 (int)-((local_40 - iVar4) - (uint)(local_44 < local_5c))) ||\n               (*(char *)(local_50 + 0x68 + local_5c) != '\x01')) goto LAB_00020226;\n            uVar5 = local_5c + 1;\n            local_38 = 0;\n            iVar4 = (*now_seg->userdata)[4];\n            goto LAB_0002044e;\n          }\n          local_5c = local_5c - local_44;\n          local_50 = *(int *)(local_50 + 0x30);\n        } while (local_50 != 0);\n        pfVar7->cie_info_ok = 0;\n        goto LAB_0002022d;\n      }\n    }\n  }\n  goto LAB_00020226;\nLAB_0002044e:\n  local_58 = (int)uVar5 >> 0x1f;\n  if ((SBORROW4(local_58,local_40) != SBORROW4(local_58 - local_40,(uint)(uVar5 < local_44))) !=\n      (int)((local_58 - local_40) - (uint)(uVar5 < local_44)) < 0) {\n    cVar6 = *(char *)(local_50 + 0x68 + uVar5);\n    if (cVar6 == '\0') {\nLAB_00020509:\n      uVar5 = uVar5 + 1;\n      goto LAB_00020523;\n    }\n    local_5c = uVar5;\n    while( true ) {\n      if (local_38 < 9) {\n        augmentation[local_38] = cVar6;\n        local_38 = local_38 + 1;\n      }\n      uVar5 = uVar5 + 1;\n      if (local_58 == local_40 + -1 + (uint)(local_44 != 0) && local_5c == local_44 - 1) break;\n      bVar14 = 0xfffffffe < local_5c;\n      local_5c = local_5c + 1;\n      local_58 = local_58 + (uint)bVar14;\n      cVar6 = *(char *)(local_50 + 0x68 + uVar5);\n      if (cVar6 == '\0') goto LAB_00020509;\n    }\n    goto LAB_0002044e;\n  }\n  local_50 = *(int *)(local_50 + 0x30);\n  if (local_50 == 0) goto LAB_00020226;\n  local_40 = *(int *)(local_50 + 0x14);\n  uVar5 = uVar5 - local_44;\n  local_44 = *(uint *)(local_50 + 0x10);\n  goto LAB_0002044e;\n  while( true ) {\n    local_50 = *(int *)(local_50 + 0x30);\n    uVar5 = uVar5 - *puVar1;\n    if (local_50 == 0) break;\nLAB_00020523:\n    puVar1 = (uint *)(local_50 + 0x10);\n    uVar9 = (uint)(uVar5 < *puVar1);\n    iVar13 = ((int)uVar5 >> 0x1f) - *(int *)(local_50 + 0x14);\n    if ((SBORROW4((int)uVar5 >> 0x1f,*(int *)(local_50 + 0x14)) != SBORROW4(iVar13,uVar9)) !=\n        (int)(iVar13 - uVar9) < 0) {\n      augmentation[local_38] = '\0';\n      if (augmentation[0] == '\0') goto LAB_000205bb;\n      iVar13 = strcmp(augmentation,"eh");\n      if (iVar13 == 0) goto LAB_00020575;\n      if (augmentation[0] == 'z') goto LAB_000205bb;\n      break;\n    }\n  }\n  goto LAB_00020226;\nLAB_00020575:\n  if (iVar4 == 0) goto LAB_00020600;\n  if ((*(int *)(iVar4 + 4) == local_50) && (*(uint *)(iVar4 + 8) == uVar5)) {\n    uVar5 = uVar5 + *(byte *)(iVar4 + 2);\n    goto LAB_000205a6;\n  }\n  iVar4 = *(int *)(iVar4 + 0x28);\n  goto LAB_00020575;\nLAB_000205bb:\n  cVar6 = *(char *)(local_50 + 0x68 + uVar5);\n  local_3c = 0;\n  if (-1 < cVar6) {\n    local_3c = (int)cVar6;\n  }\n  pfVar7->cie_info_ok = 1;\n  (pfVar7->cie_info).code_alignment = local_3c;\n  (pfVar7->cie_info).z_augmentation = (uint)(augmentation[0] == 'z');\nLAB_0001ffd7:\n  if ((pfVar7->cie_info).z_augmentation != 0) {\n    pfVar7->state = state_seeing_aug_size;\n    pfVar7->aug_size = 0;\n    pfVar7->aug_shift = 0;\n    return 0;\n  }\nLAB_00020108:\n  pfVar7->state = state_wait_loc4;\n  return 0;\nLAB_00020600:\n  uVar5 = uVar5 + 4;\nLAB_000205a6:\n  do {\n    puVar1 = (uint *)(local_50 + 0x10);\n    uVar9 = (uint)(uVar5 < *puVar1);\n    iVar4 = ((int)uVar5 >> 0x1f) - *(int *)(local_50 + 0x14);\n    if ((SBORROW4((int)uVar5 >> 0x1f,*(int *)(local_50 + 0x14)) != SBORROW4(iVar4,uVar9)) !=\n        (int)(iVar4 - uVar9) < 0) goto LAB_000205bb;\n    local_50 = *(int *)(local_50 + 0x30);\n    uVar5 = uVar5 - *puVar1;\n  } while (local_50 != 0);\nLAB_00020226:\n  pfVar7->cie_info_ok = 0;\nLAB_0002022d:\n  pfVar7->state = state_error;\n  return 0;\n}" primitive_type (function_declarator "check_eh_frame(expressionS *exp,uint *pnbytes)" identifier (parameter_list "(expressionS *exp,uint *pnbytes)" ( (parameter_declaration "expressionS *exp" type_identifier (pointer_declarator "*exp" * identifier)) , (parameter_declaration "uint *pnbytes" type_identifier (pointer_declarator "*pnbytes" * identifier)) ))) (compound_statement "{\n  uint *puVar1;\n  symbolS *psVar2;\n  symbolS *psVar3;\n  relax_substateT subtype;\n  int iVar4;\n  uint uVar5;\n  char cVar6;\n  frame_data *pfVar7;\n  byte *pbVar8;\n  uint uVar9;\n  byte *pbVar10;\n  byte *pbVar11;\n  uint uVar12;\n  int iVar13;\n  bool bVar14;\n  bool bVar15;\n  bool bVar16;\n  byte bVar17;\n  addressT aVar18;\n  fragS *opcode;\n  uint local_5c;\n  int local_58;\n  uint local_54;\n  int local_50;\n  uint local_44;\n  int local_40;\n  uint local_3c;\n  int local_38;\n  char augmentation [10];\n  \n  bVar17 = 0;\n  bVar14 = false;\n  bVar16 = flag_traditional_format == 0;\n  if (!bVar16) {\n    return 0;\n  }\n  iVar4 = 9;\n  pbVar10 = (byte *)now_seg->name;\n  pbVar8 = pbVar10;\n  pbVar11 = (byte *)".eh_frame";\n  do {\n    if (iVar4 == 0) break;\n    iVar4 = iVar4 + -1;\n    bVar14 = *pbVar8 < *pbVar11;\n    bVar16 = *pbVar8 == *pbVar11;\n    pbVar8 = pbVar8 + 1;\n    pbVar11 = pbVar11 + 1;\n  } while (bVar16);\n  bVar15 = false;\n  bVar14 = (!bVar14 && !bVar16) == bVar14;\n  if (bVar14) {\n    bVar15 = pbVar10[9] < 0x5f;\n    bVar14 = pbVar10[9] == 0x5f;\n    pfVar7 = &check_eh_frame::eh_frame_data;\n    if (bVar14) goto LAB_0001fe74;\n    if (check_eh_frame::eh_frame_data.state == state_idle) goto _L15;\n  }\n  else {\nLAB_0001fe74:\n    iVar4 = 0xc;\n    pbVar8 = (byte *)".debug_frame";\n    do {\n      if (iVar4 == 0) break;\n      iVar4 = iVar4 + -1;\n      bVar15 = *pbVar10 < *pbVar8;\n      bVar14 = *pbVar10 == *pbVar8;\n      pbVar10 = pbVar10 + 1;\n      pbVar8 = pbVar8 + 1;\n    } while (bVar14);\n    if ((!bVar15 && !bVar14) != bVar15) {\n      return 0;\n    }\n    pfVar7 = &check_eh_frame::debug_frame_data;\n    if (check_eh_frame::debug_frame_data.state == state_idle) goto _L15;\n  }\n  iVar4 = S_IS_DEFINED(pfVar7->size_end_sym);\n  if (iVar4 != 0) {\n    pfVar7->state = state_idle;\n_L15:\n    if ((*pnbytes == 4) &&\n       (((exp->field_0x10 == '\x03' || (exp->field_0x10 == '\x14')) &&\n        (iVar4 = S_IS_DEFINED(exp->X_add_symbol), iVar4 == 0)))) {\n      pfVar7->state = state_saw_size;\n      pfVar7->size_end_sym = exp->X_add_symbol;\n      return 0;\n    }\n    return 0;\n  }\n  switch(pfVar7->state) {\n  case state_idle:\n    goto _L15;\n  case state_saw_size:\n  case state_saw_cie_offset:\n    pfVar7->state = pfVar7->state + state_saw_size;\n    return 0;\n  case state_saw_pc_begin:\n    break;\n  case state_seeing_aug_size:\n    if (*pnbytes == 0xffffffff) {\n      if (exp->field_0x10 != '\x02') goto LAB_0001ffb8;\n      local_54 = (uint)exp->X_add_number;\n      pfVar7->state = state_skipping_aug;\n      pfVar7->aug_size = local_54;\n    }\n    else {\n      if ((*pnbytes != 1) || (exp->field_0x10 != '\x02')) {\nLAB_0001ffb8:\n        pfVar7->state = state_error;\n        return 0;\n      }\n      uVar5 = (uint)exp->X_add_number;\n      local_54 = (uVar5 & 0x7f) << ((byte)pfVar7->aug_shift & 0x1f) | pfVar7->aug_size;\n      pfVar7->aug_size = local_54;\n      pfVar7->aug_shift = pfVar7->aug_shift + 7;\n      if ((char)uVar5 < '\0') {\n        return 0;\n      }\n      pfVar7->state = state_skipping_aug;\n    }\n    if (local_54 != 0) {\n      return 0;\n    }\n    pfVar7->state = state_wait_loc4;\n    return 0;\n  case state_skipping_aug:\n    if ((int)*pnbytes < 0) {\nLAB_0001ff8e:\n      pfVar7->state = state_error;\n      return 0;\n    }\n    iVar4 = pfVar7->aug_size - *pnbytes;\n    pfVar7->aug_size = iVar4;\n    if (iVar4 != 0) {\n      if (-1 < iVar4) {\n        return 0;\n      }\n      goto LAB_0001ff8e;\n    }\n    goto LAB_00020108;\n  case state_wait_loc4:\n    if (*pnbytes != 1) {\n      return 0;\n    }\n    if (exp->field_0x10 != '\x02') {\n      return 0;\n    }\n    if ((int)exp->X_add_number != 4 || *(int *)((int)&exp->X_add_number + 4) != 0) {\n      return 0;\n    }\n    frag_grow(1);\n    pfVar7->state = state_saw_loc4;\n    pfVar7->loc4_frag = frag_now;\n    aVar18 = frag_now_fix();\n    pfVar7->loc4_fix = (int)aVar18;\n    return 0;\n  case state_saw_loc4:\n    pfVar7->state = state_wait_loc4;\n    if (*pnbytes != 4) {\n      return 0;\n    }\n    cVar6 = exp->field_0x10;\n    if (cVar6 == '\x02') {\n      uVar5 = (uint)exp->X_add_number;\n      iVar4 = *(int *)((int)&exp->X_add_number + 4);\n      if ((int)(uint)(0x3f < uVar5) <= -iVar4) {\n        pfVar7->loc4_frag->fr_literal[pfVar7->loc4_fix] = (byte)uVar5 | 0x40;\n        return 1;\n      }\n      if (-iVar4 < (int)(uint)(0xff < uVar5)) {\n        if (-iVar4 < (int)(uint)(0xffff < uVar5)) {\n          return 0;\n        }\n        pfVar7->loc4_frag->fr_literal[pfVar7->loc4_fix] = '\x03';\n        *pnbytes = 2;\n        return 0;\n      }\n      pfVar7->loc4_frag->fr_literal[pfVar7->loc4_fix] = '\x02';\n      *pnbytes = 1;\n      return 0;\n    }\n    if (cVar6 == '\x14') {\n      if ((pfVar7->cie_info).code_alignment != 1) {\n        return 0;\n      }\n      opcode = pfVar7->loc4_frag;\n      iVar4 = pfVar7->loc4_fix;\n      psVar3 = make_expr_symbol(exp);\n      subtype = 8;\n    }\n    else {\n      if ((cVar6 != '\v') && (cVar6 != '\x0e')) {\n        return 0;\n      }\n      uVar5 = (pfVar7->cie_info).code_alignment;\n      if (uVar5 < 2) {\n        return 0;\n      }\n      psVar3 = exp->X_add_symbol;\n      if (psVar3->bsym == (asymbol *)0x0) {\n        return 0;\n      }\n      psVar2 = exp->X_op_symbol;\n      if (psVar2->bsym == (asymbol *)0x0) {\n        return 0;\n      }\n      if ((psVar3->sy_value).field_0x10 != '\x14') {\n        return 0;\n      }\n      if ((psVar2->sy_value).field_0x10 != '\x02') {\n        return 0;\n      }\n      iVar4 = *(int *)((int)&(psVar2->sy_value).X_add_number + 4);\n      uVar9 = (uint)(psVar2->sy_value).X_add_number;\n      if (cVar6 != '\v') {\n        uVar12 = uVar9 >> 5 & 1;\n        iVar4 = uVar12 << ((byte)uVar9 & 0x1f);\n        uVar9 = (uVar12 ^ 1) << ((byte)uVar9 & 0x1f);\n      }\n      if (iVar4 != 0) {\n        return 0;\n      }\n      if (uVar5 != uVar9) {\n        return 0;\n      }\n      opcode = pfVar7->loc4_frag;\n      iVar4 = pfVar7->loc4_fix;\n      psVar3 = make_expr_symbol(&psVar3->sy_value);\n      subtype = (pfVar7->cie_info).code_alignment << 3;\n    }\n    frag_var(rs_cfa,4,0,subtype,psVar3,(longlong)iVar4,(char *)opcode);\n    return 1;\n  default:\n    return 0;\n  }\n  if (pfVar7->cie_info_ok != 0) goto LAB_0001ffd7;\n                    /* WARNING: Load size is inaccurate */\n  local_50 = **now_seg->userdata;\n  if (local_50 != 0) {\n    uVar5 = *(uint *)(local_50 + 0x10);\n    iVar4 = *(int *)(local_50 + 0x14);\n    if (-iVar4 < (int)(uint)(4 < uVar5)) {\n      local_5c = 4;\n      iVar13 = 0;\n    }\n    else {\n      local_5c = 4;\n      do {\n        local_50 = *(int *)(local_50 + 0x30);\n        local_5c = local_5c - uVar5;\n        if (local_50 == 0) goto LAB_00020226;\n        uVar5 = *(uint *)(local_50 + 0x10);\n        iVar4 = *(int *)(local_50 + 0x14);\n        iVar13 = (int)local_5c >> 0x1f;\n      } while ((SBORROW4(iVar13,iVar4) != SBORROW4(iVar13 - iVar4,(uint)(local_5c < uVar5))) ==\n               (int)((iVar13 - iVar4) - (uint)(local_5c < uVar5)) < 0);\n    }\n    iVar4 = (iVar4 - iVar13) - (uint)(uVar5 < local_5c);\n    uVar5 = (uint)(3 < uVar5 - local_5c);\n    bVar14 = iVar4 != 0 || (uint)-iVar4 < uVar5;\n    bVar16 = -uVar5 == iVar4;\n    if (-iVar4 < (int)uVar5) {\n      iVar4 = 0xc;\n      pbVar10 = (byte *)now_seg->name;\n      pbVar8 = (byte *)".debug_frame";\n      do {\n        if (iVar4 == 0) break;\n        iVar4 = iVar4 + -1;\n        bVar14 = *pbVar10 < *pbVar8;\n        bVar16 = *pbVar10 == *pbVar8;\n        pbVar10 = pbVar10 + (uint)bVar17 * -2 + 1;\n        pbVar8 = pbVar8 + (uint)bVar17 * -2 + 1;\n      } while (bVar16);\n      cVar6 = -((!bVar14 && !bVar16) == bVar14);\n      if ((((*(char *)(local_50 + 0x68 + local_5c) == cVar6) &&\n           (*(char *)(local_50 + 0x69 + local_5c) == cVar6)) &&\n          (*(char *)(local_50 + 0x6a + local_5c) == cVar6)) &&\n         (*(char *)(local_50 + 0x6b + local_5c) == cVar6)) {\n        local_5c = local_5c + 4;\n        do {\n          iVar4 = (int)local_5c >> 0x1f;\n          local_40 = *(int *)(local_50 + 0x14);\n          local_44 = *(uint *)(local_50 + 0x10);\n          if ((SBORROW4(iVar4,local_40) != SBORROW4(iVar4 - local_40,(uint)(local_5c < local_44)))\n              != (int)((iVar4 - local_40) - (uint)(local_5c < local_44)) < 0) {\n            if (((int)(uint)(local_44 != local_5c) <=\n                 (int)-((local_40 - iVar4) - (uint)(local_44 < local_5c))) ||\n               (*(char *)(local_50 + 0x68 + local_5c) != '\x01')) goto LAB_00020226;\n            uVar5 = local_5c + 1;\n            local_38 = 0;\n            iVar4 = (*now_seg->userdata)[4];\n            goto LAB_0002044e;\n          }\n          local_5c = local_5c - local_44;\n          local_50 = *(int *)(local_50 + 0x30);\n        } while (local_50 != 0);\n        pfVar7->cie_info_ok = 0;\n        goto LAB_0002022d;\n      }\n    }\n  }\n  goto LAB_00020226;\nLAB_0002044e:\n  local_58 = (int)uVar5 >> 0x1f;\n  if ((SBORROW4(local_58,local_40) != SBORROW4(local_58 - local_40,(uint)(uVar5 < local_44))) !=\n      (int)((local_58 - local_40) - (uint)(uVar5 < local_44)) < 0) {\n    cVar6 = *(char *)(local_50 + 0x68 + uVar5);\n    if (cVar6 == '\0') {\nLAB_00020509:\n      uVar5 = uVar5 + 1;\n      goto LAB_00020523;\n    }\n    local_5c = uVar5;\n    while( true ) {\n      if (local_38 < 9) {\n        augmentation[local_38] = cVar6;\n        local_38 = local_38 + 1;\n      }\n      uVar5 = uVar5 + 1;\n      if (local_58 == local_40 + -1 + (uint)(local_44 != 0) && local_5c == local_44 - 1) break;\n      bVar14 = 0xfffffffe < local_5c;\n      local_5c = local_5c + 1;\n      local_58 = local_58 + (uint)bVar14;\n      cVar6 = *(char *)(local_50 + 0x68 + uVar5);\n      if (cVar6 == '\0') goto LAB_00020509;\n    }\n    goto LAB_0002044e;\n  }\n  local_50 = *(int *)(local_50 + 0x30);\n  if (local_50 == 0) goto LAB_00020226;\n  local_40 = *(int *)(local_50 + 0x14);\n  uVar5 = uVar5 - local_44;\n  local_44 = *(uint *)(local_50 + 0x10);\n  goto LAB_0002044e;\n  while( true ) {\n    local_50 = *(int *)(local_50 + 0x30);\n    uVar5 = uVar5 - *puVar1;\n    if (local_50 == 0) break;\nLAB_00020523:\n    puVar1 = (uint *)(local_50 + 0x10);\n    uVar9 = (uint)(uVar5 < *puVar1);\n    iVar13 = ((int)uVar5 >> 0x1f) - *(int *)(local_50 + 0x14);\n    if ((SBORROW4((int)uVar5 >> 0x1f,*(int *)(local_50 + 0x14)) != SBORROW4(iVar13,uVar9)) !=\n        (int)(iVar13 - uVar9) < 0) {\n      augmentation[local_38] = '\0';\n      if (augmentation[0] == '\0') goto LAB_000205bb;\n      iVar13 = strcmp(augmentation,"eh");\n      if (iVar13 == 0) goto LAB_00020575;\n      if (augmentation[0] == 'z') goto LAB_000205bb;\n      break;\n    }\n  }\n  goto LAB_00020226;\nLAB_00020575:\n  if (iVar4 == 0) goto LAB_00020600;\n  if ((*(int *)(iVar4 + 4) == local_50) && (*(uint *)(iVar4 + 8) == uVar5)) {\n    uVar5 = uVar5 + *(byte *)(iVar4 + 2);\n    goto LAB_000205a6;\n  }\n  iVar4 = *(int *)(iVar4 + 0x28);\n  goto LAB_00020575;\nLAB_000205bb:\n  cVar6 = *(char *)(local_50 + 0x68 + uVar5);\n  local_3c = 0;\n  if (-1 < cVar6) {\n    local_3c = (int)cVar6;\n  }\n  pfVar7->cie_info_ok = 1;\n  (pfVar7->cie_info).code_alignment = local_3c;\n  (pfVar7->cie_info).z_augmentation = (uint)(augmentation[0] == 'z');\nLAB_0001ffd7:\n  if ((pfVar7->cie_info).z_augmentation != 0) {\n    pfVar7->state = state_seeing_aug_size;\n    pfVar7->aug_size = 0;\n    pfVar7->aug_shift = 0;\n    return 0;\n  }\nLAB_00020108:\n  pfVar7->state = state_wait_loc4;\n  return 0;\nLAB_00020600:\n  uVar5 = uVar5 + 4;\nLAB_000205a6:\n  do {\n    puVar1 = (uint *)(local_50 + 0x10);\n    uVar9 = (uint)(uVar5 < *puVar1);\n    iVar4 = ((int)uVar5 >> 0x1f) - *(int *)(local_50 + 0x14);\n    if ((SBORROW4((int)uVar5 >> 0x1f,*(int *)(local_50 + 0x14)) != SBORROW4(iVar4,uVar9)) !=\n        (int)(iVar4 - uVar9) < 0) goto LAB_000205bb;\n    local_50 = *(int *)(local_50 + 0x30);\n    uVar5 = uVar5 - *puVar1;\n  } while (local_50 != 0);\nLAB_00020226:\n  pfVar7->cie_info_ok = 0;\nLAB_0002022d:\n  pfVar7->state = state_error;\n  return 0;\n}" { (declaration "uint *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "symbolS *psVar2;" type_identifier (pointer_declarator "*psVar2" * identifier) ;) (declaration "symbolS *psVar3;" type_identifier (pointer_declarator "*psVar3" * identifier) ;) (declaration "relax_substateT subtype;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "char cVar6;" primitive_type identifier ;) (declaration "frame_data *pfVar7;" type_identifier (pointer_declarator "*pfVar7" * identifier) ;) (declaration "byte *pbVar8;" type_identifier (pointer_declarator "*pbVar8" * identifier) ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "byte *pbVar10;" type_identifier (pointer_declarator "*pbVar10" * identifier) ;) (declaration "byte *pbVar11;" type_identifier (pointer_declarator "*pbVar11" * identifier) ;) (declaration "uint uVar12;" type_identifier identifier ;) (declaration "int iVar13;" primitive_type identifier ;) (declaration "bool bVar14;" primitive_type identifier ;) (declaration "bool bVar15;" primitive_type identifier ;) (declaration "bool bVar16;" primitive_type identifier ;) (declaration "byte bVar17;" type_identifier identifier ;) (declaration "addressT aVar18;" type_identifier identifier ;) (declaration "fragS *opcode;" type_identifier (pointer_declarator "*opcode" * identifier) ;) (declaration "uint local_5c;" type_identifier identifier ;) (declaration "int local_58;" primitive_type identifier ;) (declaration "uint local_54;" type_identifier identifier ;) (declaration "int local_50;" primitive_type identifier ;) (declaration "uint local_44;" type_identifier identifier ;) (declaration "int local_40;" primitive_type identifier ;) (declaration "uint local_3c;" type_identifier identifier ;) (declaration "int local_38;" primitive_type identifier ;) (declaration "char augmentation [10];" primitive_type (array_declarator "augmentation [10]" identifier [ number_literal ]) ;) (expression_statement "bVar17 = 0;" (assignment_expression "bVar17 = 0" identifier = number_literal) ;) (expression_statement "bVar14 = false;" (assignment_expression "bVar14 = false" identifier = false) ;) (expression_statement "bVar16 = flag_traditional_format == 0;" (assignment_expression "bVar16 = flag_traditional_format == 0" identifier = (binary_expression "flag_traditional_format == 0" identifier == number_literal)) ;) (if_statement "if (!bVar16) {\n    return 0;\n  }" if (parenthesized_expression "(!bVar16)" ( (unary_expression "!bVar16" ! identifier) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "iVar4 = 9;" (assignment_expression "iVar4 = 9" identifier = number_literal) ;) (expression_statement "pbVar10 = (byte *)now_seg->name;" (assignment_expression "pbVar10 = (byte *)now_seg->name" identifier = (cast_expression "(byte *)now_seg->name" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "now_seg->name" identifier -> field_identifier))) ;) (expression_statement "pbVar8 = pbVar10;" (assignment_expression "pbVar8 = pbVar10" identifier = identifier) ;) (expression_statement "pbVar11 = (byte *)".eh_frame";" (assignment_expression "pbVar11 = (byte *)".eh_frame"" identifier = (cast_expression "(byte *)".eh_frame"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal "".eh_frame"" " string_content "))) ;) (do_statement "do {\n    if (iVar4 == 0) break;\n    iVar4 = iVar4 + -1;\n    bVar14 = *pbVar8 < *pbVar11;\n    bVar16 = *pbVar8 == *pbVar11;\n    pbVar8 = pbVar8 + 1;\n    pbVar11 = pbVar11 + 1;\n  } while (bVar16);" do (compound_statement "{\n    if (iVar4 == 0) break;\n    iVar4 = iVar4 + -1;\n    bVar14 = *pbVar8 < *pbVar11;\n    bVar16 = *pbVar8 == *pbVar11;\n    pbVar8 = pbVar8 + 1;\n    pbVar11 = pbVar11 + 1;\n  }" { (if_statement "if (iVar4 == 0) break;" if (parenthesized_expression "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar4 = iVar4 + -1;" (assignment_expression "iVar4 = iVar4 + -1" identifier = (binary_expression "iVar4 + -1" identifier + number_literal)) ;) (expression_statement "bVar14 = *pbVar8 < *pbVar11;" (assignment_expression "bVar14 = *pbVar8 < *pbVar11" identifier = (binary_expression "*pbVar8 < *pbVar11" (pointer_expression "*pbVar8" * identifier) < (pointer_expression "*pbVar11" * identifier))) ;) (expression_statement "bVar16 = *pbVar8 == *pbVar11;" (assignment_expression "bVar16 = *pbVar8 == *pbVar11" identifier = (binary_expression "*pbVar8 == *pbVar11" (pointer_expression "*pbVar8" * identifier) == (pointer_expression "*pbVar11" * identifier))) ;) (expression_statement "pbVar8 = pbVar8 + 1;" (assignment_expression "pbVar8 = pbVar8 + 1" identifier = (binary_expression "pbVar8 + 1" identifier + number_literal)) ;) (expression_statement "pbVar11 = pbVar11 + 1;" (assignment_expression "pbVar11 = pbVar11 + 1" identifier = (binary_expression "pbVar11 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(bVar16)" ( identifier )) ;) (expression_statement "bVar15 = false;" (assignment_expression "bVar15 = false" identifier = false) ;) (expression_statement "bVar14 = (!bVar14 && !bVar16) == bVar14;" (assignment_expression "bVar14 = (!bVar14 && !bVar16) == bVar14" identifier = (binary_expression "(!bVar14 && !bVar16) == bVar14" (parenthesized_expression "(!bVar14 && !bVar16)" ( (binary_expression "!bVar14 && !bVar16" (unary_expression "!bVar14" ! identifier) && (unary_expression "!bVar16" ! identifier)) )) == identifier)) ;) (if_statement "if (bVar14) {\n    bVar15 = pbVar10[9] < 0x5f;\n    bVar14 = pbVar10[9] == 0x5f;\n    pfVar7 = &check_eh_frame::eh_frame_data;\n    if (bVar14) goto LAB_0001fe74;\n    if (check_eh_frame::eh_frame_data.state == state_idle) goto _L15;\n  }\n  else {\nLAB_0001fe74:\n    iVar4 = 0xc;\n    pbVar8 = (byte *)".debug_frame";\n    do {\n      if (iVar4 == 0) break;\n      iVar4 = iVar4 + -1;\n      bVar15 = *pbVar10 < *pbVar8;\n      bVar14 = *pbVar10 == *pbVar8;\n      pbVar10 = pbVar10 + 1;\n      pbVar8 = pbVar8 + 1;\n    } while (bVar14);\n    if ((!bVar15 && !bVar14) != bVar15) {\n      return 0;\n    }\n    pfVar7 = &check_eh_frame::debug_frame_data;\n    if (check_eh_frame::debug_frame_data.state == state_idle) goto _L15;\n  }" if (parenthesized_expression "(bVar14)" ( identifier )) (compound_statement "{\n    bVar15 = pbVar10[9] < 0x5f;\n    bVar14 = pbVar10[9] == 0x5f;\n    pfVar7 = &check_eh_frame::eh_frame_data;\n    if (bVar14) goto LAB_0001fe74;\n    if (check_eh_frame::eh_frame_data.state == state_idle) goto _L15;\n  }" { (expression_statement "bVar15 = pbVar10[9] < 0x5f;" (assignment_expression "bVar15 = pbVar10[9] < 0x5f" identifier = (binary_expression "pbVar10[9] < 0x5f" (subscript_expression "pbVar10[9]" identifier [ number_literal ]) < number_literal)) ;) (expression_statement "bVar14 = pbVar10[9] == 0x5f;" (assignment_expression "bVar14 = pbVar10[9] == 0x5f" identifier = (binary_expression "pbVar10[9] == 0x5f" (subscript_expression "pbVar10[9]" identifier [ number_literal ]) == number_literal)) ;) (expression_statement "pfVar7 = &check_eh_frame::eh_frame_data;" (assignment_expression "pfVar7 = &check_eh_frame" identifier = (pointer_expression "&check_eh_frame" & identifier)) (ERROR "::eh_frame_data" : : identifier) ;) (if_statement "if (bVar14) goto LAB_0001fe74;" if (parenthesized_expression "(bVar14)" ( identifier )) (goto_statement "goto LAB_0001fe74;" goto statement_identifier ;)) (if_statement "if (check_eh_frame::eh_frame_data.state == state_idle) goto _L15;" if (parenthesized_expression "(check_eh_frame::eh_frame_data.state == state_idle)" ( (binary_expression "check_eh_frame::eh_frame_data.state == state_idle" (field_expression "check_eh_frame::eh_frame_data.state" identifier (ERROR "::eh_frame_data" : : identifier) . field_identifier) == identifier) )) (goto_statement "goto _L15;" goto statement_identifier ;)) }) (else_clause "else {\nLAB_0001fe74:\n    iVar4 = 0xc;\n    pbVar8 = (byte *)".debug_frame";\n    do {\n      if (iVar4 == 0) break;\n      iVar4 = iVar4 + -1;\n      bVar15 = *pbVar10 < *pbVar8;\n      bVar14 = *pbVar10 == *pbVar8;\n      pbVar10 = pbVar10 + 1;\n      pbVar8 = pbVar8 + 1;\n    } while (bVar14);\n    if ((!bVar15 && !bVar14) != bVar15) {\n      return 0;\n    }\n    pfVar7 = &check_eh_frame::debug_frame_data;\n    if (check_eh_frame::debug_frame_data.state == state_idle) goto _L15;\n  }" else (compound_statement "{\nLAB_0001fe74:\n    iVar4 = 0xc;\n    pbVar8 = (byte *)".debug_frame";\n    do {\n      if (iVar4 == 0) break;\n      iVar4 = iVar4 + -1;\n      bVar15 = *pbVar10 < *pbVar8;\n      bVar14 = *pbVar10 == *pbVar8;\n      pbVar10 = pbVar10 + 1;\n      pbVar8 = pbVar8 + 1;\n    } while (bVar14);\n    if ((!bVar15 && !bVar14) != bVar15) {\n      return 0;\n    }\n    pfVar7 = &check_eh_frame::debug_frame_data;\n    if (check_eh_frame::debug_frame_data.state == state_idle) goto _L15;\n  }" { (labeled_statement "LAB_0001fe74:\n    iVar4 = 0xc;" statement_identifier : (expression_statement "iVar4 = 0xc;" (assignment_expression "iVar4 = 0xc" identifier = number_literal) ;)) (expression_statement "pbVar8 = (byte *)".debug_frame";" (assignment_expression "pbVar8 = (byte *)".debug_frame"" identifier = (cast_expression "(byte *)".debug_frame"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal "".debug_frame"" " string_content "))) ;) (do_statement "do {\n      if (iVar4 == 0) break;\n      iVar4 = iVar4 + -1;\n      bVar15 = *pbVar10 < *pbVar8;\n      bVar14 = *pbVar10 == *pbVar8;\n      pbVar10 = pbVar10 + 1;\n      pbVar8 = pbVar8 + 1;\n    } while (bVar14);" do (compound_statement "{\n      if (iVar4 == 0) break;\n      iVar4 = iVar4 + -1;\n      bVar15 = *pbVar10 < *pbVar8;\n      bVar14 = *pbVar10 == *pbVar8;\n      pbVar10 = pbVar10 + 1;\n      pbVar8 = pbVar8 + 1;\n    }" { (if_statement "if (iVar4 == 0) break;" if (parenthesized_expression "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar4 = iVar4 + -1;" (assignment_expression "iVar4 = iVar4 + -1" identifier = (binary_expression "iVar4 + -1" identifier + number_literal)) ;) (expression_statement "bVar15 = *pbVar10 < *pbVar8;" (assignment_expression "bVar15 = *pbVar10 < *pbVar8" identifier = (binary_expression "*pbVar10 < *pbVar8" (pointer_expression "*pbVar10" * identifier) < (pointer_expression "*pbVar8" * identifier))) ;) (expression_statement "bVar14 = *pbVar10 == *pbVar8;" (assignment_expression "bVar14 = *pbVar10 == *pbVar8" identifier = (binary_expression "*pbVar10 == *pbVar8" (pointer_expression "*pbVar10" * identifier) == (pointer_expression "*pbVar8" * identifier))) ;) (expression_statement "pbVar10 = pbVar10 + 1;" (assignment_expression "pbVar10 = pbVar10 + 1" identifier = (binary_expression "pbVar10 + 1" identifier + number_literal)) ;) (expression_statement "pbVar8 = pbVar8 + 1;" (assignment_expression "pbVar8 = pbVar8 + 1" identifier = (binary_expression "pbVar8 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(bVar14)" ( identifier )) ;) (if_statement "if ((!bVar15 && !bVar14) != bVar15) {\n      return 0;\n    }" if (parenthesized_expression "((!bVar15 && !bVar14) != bVar15)" ( (binary_expression "(!bVar15 && !bVar14) != bVar15" (parenthesized_expression "(!bVar15 && !bVar14)" ( (binary_expression "!bVar15 && !bVar14" (unary_expression "!bVar15" ! identifier) && (unary_expression "!bVar14" ! identifier)) )) != identifier) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "pfVar7 = &check_eh_frame::debug_frame_data;" (assignment_expression "pfVar7 = &check_eh_frame" identifier = (pointer_expression "&check_eh_frame" & identifier)) (ERROR "::debug_frame_data" : : identifier) ;) (if_statement "if (check_eh_frame::debug_frame_data.state == state_idle) goto _L15;" if (parenthesized_expression "(check_eh_frame::debug_frame_data.state == state_idle)" ( (ERROR "check_eh_frame::" identifier : :) (binary_expression "debug_frame_data.state == state_idle" (field_expression "debug_frame_data.state" identifier . field_identifier) == identifier) )) (goto_statement "goto _L15;" goto statement_identifier ;)) }))) (expression_statement "iVar4 = S_IS_DEFINED(pfVar7->size_end_sym);" (assignment_expression "iVar4 = S_IS_DEFINED(pfVar7->size_end_sym)" identifier = (call_expression "S_IS_DEFINED(pfVar7->size_end_sym)" identifier (argument_list "(pfVar7->size_end_sym)" ( (field_expression "pfVar7->size_end_sym" identifier -> field_identifier) )))) ;) (if_statement "if (iVar4 != 0) {\n    pfVar7->state = state_idle;\n_L15:\n    if ((*pnbytes == 4) &&\n       (((exp->field_0x10 == '\x03' || (exp->field_0x10 == '\x14')) &&\n        (iVar4 = S_IS_DEFINED(exp->X_add_symbol), iVar4 == 0)))) {\n      pfVar7->state = state_saw_size;\n      pfVar7->size_end_sym = exp->X_add_symbol;\n      return 0;\n    }\n    return 0;\n  }" if (parenthesized_expression "(iVar4 != 0)" ( (binary_expression "iVar4 != 0" identifier != number_literal) )) (compound_statement "{\n    pfVar7->state = state_idle;\n_L15:\n    if ((*pnbytes == 4) &&\n       (((exp->field_0x10 == '\x03' || (exp->field_0x10 == '\x14')) &&\n        (iVar4 = S_IS_DEFINED(exp->X_add_symbol), iVar4 == 0)))) {\n      pfVar7->state = state_saw_size;\n      pfVar7->size_end_sym = exp->X_add_symbol;\n      return 0;\n    }\n    return 0;\n  }" { (expression_statement "pfVar7->state = state_idle;" (assignment_expression "pfVar7->state = state_idle" (field_expression "pfVar7->state" identifier -> field_identifier) = identifier) ;) (labeled_statement "_L15:\n    if ((*pnbytes == 4) &&\n       (((exp->field_0x10 == '\x03' || (exp->field_0x10 == '\x14')) &&\n        (iVar4 = S_IS_DEFINED(exp->X_add_symbol), iVar4 == 0)))) {\n      pfVar7->state = state_saw_size;\n      pfVar7->size_end_sym = exp->X_add_symbol;\n      return 0;\n    }" statement_identifier : (if_statement "if ((*pnbytes == 4) &&\n       (((exp->field_0x10 == '\x03' || (exp->field_0x10 == '\x14')) &&\n        (iVar4 = S_IS_DEFINED(exp->X_add_symbol), iVar4 == 0)))) {\n      pfVar7->state = state_saw_size;\n      pfVar7->size_end_sym = exp->X_add_symbol;\n      return 0;\n    }" if (parenthesized_expression "((*pnbytes == 4) &&\n       (((exp->field_0x10 == '\x03' || (exp->field_0x10 == '\x14')) &&\n        (iVar4 = S_IS_DEFINED(exp->X_add_symbol), iVar4 == 0))))" ( (binary_expression "(*pnbytes == 4) &&\n       (((exp->field_0x10 == '\x03' || (exp->field_0x10 == '\x14')) &&\n        (iVar4 = S_IS_DEFINED(exp->X_add_symbol), iVar4 == 0)))" (parenthesized_expression "(*pnbytes == 4)" ( (binary_expression "*pnbytes == 4" (pointer_expression "*pnbytes" * identifier) == number_literal) )) && (parenthesized_expression "(((exp->field_0x10 == '\x03' || (exp->field_0x10 == '\x14')) &&\n        (iVar4 = S_IS_DEFINED(exp->X_add_symbol), iVar4 == 0)))" ( (parenthesized_expression "((exp->field_0x10 == '\x03' || (exp->field_0x10 == '\x14')) &&\n        (iVar4 = S_IS_DEFINED(exp->X_add_symbol), iVar4 == 0))" ( (binary_expression "(exp->field_0x10 == '\x03' || (exp->field_0x10 == '\x14')) &&\n        (iVar4 = S_IS_DEFINED(exp->X_add_symbol), iVar4 == 0)" (parenthesized_expression "(exp->field_0x10 == '\x03' || (exp->field_0x10 == '\x14'))" ( (binary_expression "exp->field_0x10 == '\x03' || (exp->field_0x10 == '\x14')" (binary_expression "exp->field_0x10 == '\x03'" (field_expression "exp->field_0x10" identifier -> field_identifier) == (char_literal "'\x03'" ' escape_sequence ')) || (parenthesized_expression "(exp->field_0x10 == '\x14')" ( (binary_expression "exp->field_0x10 == '\x14'" (field_expression "exp->field_0x10" identifier -> field_identifier) == (char_literal "'\x14'" ' escape_sequence ')) ))) )) && (parenthesized_expression "(iVar4 = S_IS_DEFINED(exp->X_add_symbol), iVar4 == 0)" ( (comma_expression "iVar4 = S_IS_DEFINED(exp->X_add_symbol), iVar4 == 0" (assignment_expression "iVar4 = S_IS_DEFINED(exp->X_add_symbol)" identifier = (call_expression "S_IS_DEFINED(exp->X_add_symbol)" identifier (argument_list "(exp->X_add_symbol)" ( (field_expression "exp->X_add_symbol" identifier -> field_identifier) )))) , (binary_expression "iVar4 == 0" identifier == number_literal)) ))) )) ))) )) (compound_statement "{\n      pfVar7->state = state_saw_size;\n      pfVar7->size_end_sym = exp->X_add_symbol;\n      return 0;\n    }" { (expression_statement "pfVar7->state = state_saw_size;" (assignment_expression "pfVar7->state = state_saw_size" (field_expression "pfVar7->state" identifier -> field_identifier) = identifier) ;) (expression_statement "pfVar7->size_end_sym = exp->X_add_symbol;" (assignment_expression "pfVar7->size_end_sym = exp->X_add_symbol" (field_expression "pfVar7->size_end_sym" identifier -> field_identifier) = (field_expression "exp->X_add_symbol" identifier -> field_identifier)) ;) (return_statement "return 0;" return number_literal ;) }))) (return_statement "return 0;" return number_literal ;) })) (switch_statement "switch(pfVar7->state) {\n  case state_idle:\n    goto _L15;\n  case state_saw_size:\n  case state_saw_cie_offset:\n    pfVar7->state = pfVar7->state + state_saw_size;\n    return 0;\n  case state_saw_pc_begin:\n    break;\n  case state_seeing_aug_size:\n    if (*pnbytes == 0xffffffff) {\n      if (exp->field_0x10 != '\x02') goto LAB_0001ffb8;\n      local_54 = (uint)exp->X_add_number;\n      pfVar7->state = state_skipping_aug;\n      pfVar7->aug_size = local_54;\n    }\n    else {\n      if ((*pnbytes != 1) || (exp->field_0x10 != '\x02')) {\nLAB_0001ffb8:\n        pfVar7->state = state_error;\n        return 0;\n      }\n      uVar5 = (uint)exp->X_add_number;\n      local_54 = (uVar5 & 0x7f) << ((byte)pfVar7->aug_shift & 0x1f) | pfVar7->aug_size;\n      pfVar7->aug_size = local_54;\n      pfVar7->aug_shift = pfVar7->aug_shift + 7;\n      if ((char)uVar5 < '\0') {\n        return 0;\n      }\n      pfVar7->state = state_skipping_aug;\n    }\n    if (local_54 != 0) {\n      return 0;\n    }\n    pfVar7->state = state_wait_loc4;\n    return 0;\n  case state_skipping_aug:\n    if ((int)*pnbytes < 0) {\nLAB_0001ff8e:\n      pfVar7->state = state_error;\n      return 0;\n    }\n    iVar4 = pfVar7->aug_size - *pnbytes;\n    pfVar7->aug_size = iVar4;\n    if (iVar4 != 0) {\n      if (-1 < iVar4) {\n        return 0;\n      }\n      goto LAB_0001ff8e;\n    }\n    goto LAB_00020108;\n  case state_wait_loc4:\n    if (*pnbytes != 1) {\n      return 0;\n    }\n    if (exp->field_0x10 != '\x02') {\n      return 0;\n    }\n    if ((int)exp->X_add_number != 4 || *(int *)((int)&exp->X_add_number + 4) != 0) {\n      return 0;\n    }\n    frag_grow(1);\n    pfVar7->state = state_saw_loc4;\n    pfVar7->loc4_frag = frag_now;\n    aVar18 = frag_now_fix();\n    pfVar7->loc4_fix = (int)aVar18;\n    return 0;\n  case state_saw_loc4:\n    pfVar7->state = state_wait_loc4;\n    if (*pnbytes != 4) {\n      return 0;\n    }\n    cVar6 = exp->field_0x10;\n    if (cVar6 == '\x02') {\n      uVar5 = (uint)exp->X_add_number;\n      iVar4 = *(int *)((int)&exp->X_add_number + 4);\n      if ((int)(uint)(0x3f < uVar5) <= -iVar4) {\n        pfVar7->loc4_frag->fr_literal[pfVar7->loc4_fix] = (byte)uVar5 | 0x40;\n        return 1;\n      }\n      if (-iVar4 < (int)(uint)(0xff < uVar5)) {\n        if (-iVar4 < (int)(uint)(0xffff < uVar5)) {\n          return 0;\n        }\n        pfVar7->loc4_frag->fr_literal[pfVar7->loc4_fix] = '\x03';\n        *pnbytes = 2;\n        return 0;\n      }\n      pfVar7->loc4_frag->fr_literal[pfVar7->loc4_fix] = '\x02';\n      *pnbytes = 1;\n      return 0;\n    }\n    if (cVar6 == '\x14') {\n      if ((pfVar7->cie_info).code_alignment != 1) {\n        return 0;\n      }\n      opcode = pfVar7->loc4_frag;\n      iVar4 = pfVar7->loc4_fix;\n      psVar3 = make_expr_symbol(exp);\n      subtype = 8;\n    }\n    else {\n      if ((cVar6 != '\v') && (cVar6 != '\x0e')) {\n        return 0;\n      }\n      uVar5 = (pfVar7->cie_info).code_alignment;\n      if (uVar5 < 2) {\n        return 0;\n      }\n      psVar3 = exp->X_add_symbol;\n      if (psVar3->bsym == (asymbol *)0x0) {\n        return 0;\n      }\n      psVar2 = exp->X_op_symbol;\n      if (psVar2->bsym == (asymbol *)0x0) {\n        return 0;\n      }\n      if ((psVar3->sy_value).field_0x10 != '\x14') {\n        return 0;\n      }\n      if ((psVar2->sy_value).field_0x10 != '\x02') {\n        return 0;\n      }\n      iVar4 = *(int *)((int)&(psVar2->sy_value).X_add_number + 4);\n      uVar9 = (uint)(psVar2->sy_value).X_add_number;\n      if (cVar6 != '\v') {\n        uVar12 = uVar9 >> 5 & 1;\n        iVar4 = uVar12 << ((byte)uVar9 & 0x1f);\n        uVar9 = (uVar12 ^ 1) << ((byte)uVar9 & 0x1f);\n      }\n      if (iVar4 != 0) {\n        return 0;\n      }\n      if (uVar5 != uVar9) {\n        return 0;\n      }\n      opcode = pfVar7->loc4_frag;\n      iVar4 = pfVar7->loc4_fix;\n      psVar3 = make_expr_symbol(&psVar3->sy_value);\n      subtype = (pfVar7->cie_info).code_alignment << 3;\n    }\n    frag_var(rs_cfa,4,0,subtype,psVar3,(longlong)iVar4,(char *)opcode);\n    return 1;\n  default:\n    return 0;\n  }" switch (parenthesized_expression "(pfVar7->state)" ( (field_expression "pfVar7->state" identifier -> field_identifier) )) (compound_statement "{\n  case state_idle:\n    goto _L15;\n  case state_saw_size:\n  case state_saw_cie_offset:\n    pfVar7->state = pfVar7->state + state_saw_size;\n    return 0;\n  case state_saw_pc_begin:\n    break;\n  case state_seeing_aug_size:\n    if (*pnbytes == 0xffffffff) {\n      if (exp->field_0x10 != '\x02') goto LAB_0001ffb8;\n      local_54 = (uint)exp->X_add_number;\n      pfVar7->state = state_skipping_aug;\n      pfVar7->aug_size = local_54;\n    }\n    else {\n      if ((*pnbytes != 1) || (exp->field_0x10 != '\x02')) {\nLAB_0001ffb8:\n        pfVar7->state = state_error;\n        return 0;\n      }\n      uVar5 = (uint)exp->X_add_number;\n      local_54 = (uVar5 & 0x7f) << ((byte)pfVar7->aug_shift & 0x1f) | pfVar7->aug_size;\n      pfVar7->aug_size = local_54;\n      pfVar7->aug_shift = pfVar7->aug_shift + 7;\n      if ((char)uVar5 < '\0') {\n        return 0;\n      }\n      pfVar7->state = state_skipping_aug;\n    }\n    if (local_54 != 0) {\n      return 0;\n    }\n    pfVar7->state = state_wait_loc4;\n    return 0;\n  case state_skipping_aug:\n    if ((int)*pnbytes < 0) {\nLAB_0001ff8e:\n      pfVar7->state = state_error;\n      return 0;\n    }\n    iVar4 = pfVar7->aug_size - *pnbytes;\n    pfVar7->aug_size = iVar4;\n    if (iVar4 != 0) {\n      if (-1 < iVar4) {\n        return 0;\n      }\n      goto LAB_0001ff8e;\n    }\n    goto LAB_00020108;\n  case state_wait_loc4:\n    if (*pnbytes != 1) {\n      return 0;\n    }\n    if (exp->field_0x10 != '\x02') {\n      return 0;\n    }\n    if ((int)exp->X_add_number != 4 || *(int *)((int)&exp->X_add_number + 4) != 0) {\n      return 0;\n    }\n    frag_grow(1);\n    pfVar7->state = state_saw_loc4;\n    pfVar7->loc4_frag = frag_now;\n    aVar18 = frag_now_fix();\n    pfVar7->loc4_fix = (int)aVar18;\n    return 0;\n  case state_saw_loc4:\n    pfVar7->state = state_wait_loc4;\n    if (*pnbytes != 4) {\n      return 0;\n    }\n    cVar6 = exp->field_0x10;\n    if (cVar6 == '\x02') {\n      uVar5 = (uint)exp->X_add_number;\n      iVar4 = *(int *)((int)&exp->X_add_number + 4);\n      if ((int)(uint)(0x3f < uVar5) <= -iVar4) {\n        pfVar7->loc4_frag->fr_literal[pfVar7->loc4_fix] = (byte)uVar5 | 0x40;\n        return 1;\n      }\n      if (-iVar4 < (int)(uint)(0xff < uVar5)) {\n        if (-iVar4 < (int)(uint)(0xffff < uVar5)) {\n          return 0;\n        }\n        pfVar7->loc4_frag->fr_literal[pfVar7->loc4_fix] = '\x03';\n        *pnbytes = 2;\n        return 0;\n      }\n      pfVar7->loc4_frag->fr_literal[pfVar7->loc4_fix] = '\x02';\n      *pnbytes = 1;\n      return 0;\n    }\n    if (cVar6 == '\x14') {\n      if ((pfVar7->cie_info).code_alignment != 1) {\n        return 0;\n      }\n      opcode = pfVar7->loc4_frag;\n      iVar4 = pfVar7->loc4_fix;\n      psVar3 = make_expr_symbol(exp);\n      subtype = 8;\n    }\n    else {\n      if ((cVar6 != '\v') && (cVar6 != '\x0e')) {\n        return 0;\n      }\n      uVar5 = (pfVar7->cie_info).code_alignment;\n      if (uVar5 < 2) {\n        return 0;\n      }\n      psVar3 = exp->X_add_symbol;\n      if (psVar3->bsym == (asymbol *)0x0) {\n        return 0;\n      }\n      psVar2 = exp->X_op_symbol;\n      if (psVar2->bsym == (asymbol *)0x0) {\n        return 0;\n      }\n      if ((psVar3->sy_value).field_0x10 != '\x14') {\n        return 0;\n      }\n      if ((psVar2->sy_value).field_0x10 != '\x02') {\n        return 0;\n      }\n      iVar4 = *(int *)((int)&(psVar2->sy_value).X_add_number + 4);\n      uVar9 = (uint)(psVar2->sy_value).X_add_number;\n      if (cVar6 != '\v') {\n        uVar12 = uVar9 >> 5 & 1;\n        iVar4 = uVar12 << ((byte)uVar9 & 0x1f);\n        uVar9 = (uVar12 ^ 1) << ((byte)uVar9 & 0x1f);\n      }\n      if (iVar4 != 0) {\n        return 0;\n      }\n      if (uVar5 != uVar9) {\n        return 0;\n      }\n      opcode = pfVar7->loc4_frag;\n      iVar4 = pfVar7->loc4_fix;\n      psVar3 = make_expr_symbol(&psVar3->sy_value);\n      subtype = (pfVar7->cie_info).code_alignment << 3;\n    }\n    frag_var(rs_cfa,4,0,subtype,psVar3,(longlong)iVar4,(char *)opcode);\n    return 1;\n  default:\n    return 0;\n  }" { (case_statement "case state_idle:\n    goto _L15;" case identifier : (goto_statement "goto _L15;" goto statement_identifier ;)) (case_statement "case state_saw_size:" case identifier :) (case_statement "case state_saw_cie_offset:\n    pfVar7->state = pfVar7->state + state_saw_size;\n    return 0;" case identifier : (expression_statement "pfVar7->state = pfVar7->state + state_saw_size;" (assignment_expression "pfVar7->state = pfVar7->state + state_saw_size" (field_expression "pfVar7->state" identifier -> field_identifier) = (binary_expression "pfVar7->state + state_saw_size" (field_expression "pfVar7->state" identifier -> field_identifier) + identifier)) ;) (return_statement "return 0;" return number_literal ;)) (case_statement "case state_saw_pc_begin:\n    break;" case identifier : (break_statement "break;" break ;)) (case_statement "case state_seeing_aug_size:\n    if (*pnbytes == 0xffffffff) {\n      if (exp->field_0x10 != '\x02') goto LAB_0001ffb8;\n      local_54 = (uint)exp->X_add_number;\n      pfVar7->state = state_skipping_aug;\n      pfVar7->aug_size = local_54;\n    }\n    else {\n      if ((*pnbytes != 1) || (exp->field_0x10 != '\x02')) {\nLAB_0001ffb8:\n        pfVar7->state = state_error;\n        return 0;\n      }\n      uVar5 = (uint)exp->X_add_number;\n      local_54 = (uVar5 & 0x7f) << ((byte)pfVar7->aug_shift & 0x1f) | pfVar7->aug_size;\n      pfVar7->aug_size = local_54;\n      pfVar7->aug_shift = pfVar7->aug_shift + 7;\n      if ((char)uVar5 < '\0') {\n        return 0;\n      }\n      pfVar7->state = state_skipping_aug;\n    }\n    if (local_54 != 0) {\n      return 0;\n    }\n    pfVar7->state = state_wait_loc4;\n    return 0;" case identifier : (if_statement "if (*pnbytes == 0xffffffff) {\n      if (exp->field_0x10 != '\x02') goto LAB_0001ffb8;\n      local_54 = (uint)exp->X_add_number;\n      pfVar7->state = state_skipping_aug;\n      pfVar7->aug_size = local_54;\n    }\n    else {\n      if ((*pnbytes != 1) || (exp->field_0x10 != '\x02')) {\nLAB_0001ffb8:\n        pfVar7->state = state_error;\n        return 0;\n      }\n      uVar5 = (uint)exp->X_add_number;\n      local_54 = (uVar5 & 0x7f) << ((byte)pfVar7->aug_shift & 0x1f) | pfVar7->aug_size;\n      pfVar7->aug_size = local_54;\n      pfVar7->aug_shift = pfVar7->aug_shift + 7;\n      if ((char)uVar5 < '\0') {\n        return 0;\n      }\n      pfVar7->state = state_skipping_aug;\n    }" if (parenthesized_expression "(*pnbytes == 0xffffffff)" ( (binary_expression "*pnbytes == 0xffffffff" (pointer_expression "*pnbytes" * identifier) == number_literal) )) (compound_statement "{\n      if (exp->field_0x10 != '\x02') goto LAB_0001ffb8;\n      local_54 = (uint)exp->X_add_number;\n      pfVar7->state = state_skipping_aug;\n      pfVar7->aug_size = local_54;\n    }" { (if_statement "if (exp->field_0x10 != '\x02') goto LAB_0001ffb8;" if (parenthesized_expression "(exp->field_0x10 != '\x02')" ( (binary_expression "exp->field_0x10 != '\x02'" (field_expression "exp->field_0x10" identifier -> field_identifier) != (char_literal "'\x02'" ' escape_sequence ')) )) (goto_statement "goto LAB_0001ffb8;" goto statement_identifier ;)) (expression_statement "local_54 = (uint)exp->X_add_number;" (assignment_expression "local_54 = (uint)exp->X_add_number" identifier = (cast_expression "(uint)exp->X_add_number" ( (type_descriptor "uint" type_identifier) ) (field_expression "exp->X_add_number" identifier -> field_identifier))) ;) (expression_statement "pfVar7->state = state_skipping_aug;" (assignment_expression "pfVar7->state = state_skipping_aug" (field_expression "pfVar7->state" identifier -> field_identifier) = identifier) ;) (expression_statement "pfVar7->aug_size = local_54;" (assignment_expression "pfVar7->aug_size = local_54" (field_expression "pfVar7->aug_size" identifier -> field_identifier) = identifier) ;) }) (else_clause "else {\n      if ((*pnbytes != 1) || (exp->field_0x10 != '\x02')) {\nLAB_0001ffb8:\n        pfVar7->state = state_error;\n        return 0;\n      }\n      uVar5 = (uint)exp->X_add_number;\n      local_54 = (uVar5 & 0x7f) << ((byte)pfVar7->aug_shift & 0x1f) | pfVar7->aug_size;\n      pfVar7->aug_size = local_54;\n      pfVar7->aug_shift = pfVar7->aug_shift + 7;\n      if ((char)uVar5 < '\0') {\n        return 0;\n      }\n      pfVar7->state = state_skipping_aug;\n    }" else (compound_statement "{\n      if ((*pnbytes != 1) || (exp->field_0x10 != '\x02')) {\nLAB_0001ffb8:\n        pfVar7->state = state_error;\n        return 0;\n      }\n      uVar5 = (uint)exp->X_add_number;\n      local_54 = (uVar5 & 0x7f) << ((byte)pfVar7->aug_shift & 0x1f) | pfVar7->aug_size;\n      pfVar7->aug_size = local_54;\n      pfVar7->aug_shift = pfVar7->aug_shift + 7;\n      if ((char)uVar5 < '\0') {\n        return 0;\n      }\n      pfVar7->state = state_skipping_aug;\n    }" { (if_statement "if ((*pnbytes != 1) || (exp->field_0x10 != '\x02')) {\nLAB_0001ffb8:\n        pfVar7->state = state_error;\n        return 0;\n      }" if (parenthesized_expression "((*pnbytes != 1) || (exp->field_0x10 != '\x02'))" ( (binary_expression "(*pnbytes != 1) || (exp->field_0x10 != '\x02')" (parenthesized_expression "(*pnbytes != 1)" ( (binary_expression "*pnbytes != 1" (pointer_expression "*pnbytes" * identifier) != number_literal) )) || (parenthesized_expression "(exp->field_0x10 != '\x02')" ( (binary_expression "exp->field_0x10 != '\x02'" (field_expression "exp->field_0x10" identifier -> field_identifier) != (char_literal "'\x02'" ' escape_sequence ')) ))) )) (compound_statement "{\nLAB_0001ffb8:\n        pfVar7->state = state_error;\n        return 0;\n      }" { (labeled_statement "LAB_0001ffb8:\n        pfVar7->state = state_error;" statement_identifier : (expression_statement "pfVar7->state = state_error;" (assignment_expression "pfVar7->state = state_error" (field_expression "pfVar7->state" identifier -> field_identifier) = identifier) ;)) (return_statement "return 0;" return number_literal ;) })) (expression_statement "uVar5 = (uint)exp->X_add_number;" (assignment_expression "uVar5 = (uint)exp->X_add_number" identifier = (cast_expression "(uint)exp->X_add_number" ( (type_descriptor "uint" type_identifier) ) (field_expression "exp->X_add_number" identifier -> field_identifier))) ;) (expression_statement "local_54 = (uVar5 & 0x7f) << ((byte)pfVar7->aug_shift & 0x1f) | pfVar7->aug_size;" (assignment_expression "local_54 = (uVar5 & 0x7f) << ((byte)pfVar7->aug_shift & 0x1f) | pfVar7->aug_size" identifier = (binary_expression "(uVar5 & 0x7f) << ((byte)pfVar7->aug_shift & 0x1f) | pfVar7->aug_size" (binary_expression "(uVar5 & 0x7f) << ((byte)pfVar7->aug_shift & 0x1f)" (parenthesized_expression "(uVar5 & 0x7f)" ( (binary_expression "uVar5 & 0x7f" identifier & number_literal) )) << (parenthesized_expression "((byte)pfVar7->aug_shift & 0x1f)" ( (binary_expression "(byte)pfVar7->aug_shift & 0x1f" (cast_expression "(byte)pfVar7->aug_shift" ( (type_descriptor "byte" type_identifier) ) (field_expression "pfVar7->aug_shift" identifier -> field_identifier)) & number_literal) ))) | (field_expression "pfVar7->aug_size" identifier -> field_identifier))) ;) (expression_statement "pfVar7->aug_size = local_54;" (assignment_expression "pfVar7->aug_size = local_54" (field_expression "pfVar7->aug_size" identifier -> field_identifier) = identifier) ;) (expression_statement "pfVar7->aug_shift = pfVar7->aug_shift + 7;" (assignment_expression "pfVar7->aug_shift = pfVar7->aug_shift + 7" (field_expression "pfVar7->aug_shift" identifier -> field_identifier) = (binary_expression "pfVar7->aug_shift + 7" (field_expression "pfVar7->aug_shift" identifier -> field_identifier) + number_literal)) ;) (if_statement "if ((char)uVar5 < '\0') {\n        return 0;\n      }" if (parenthesized_expression "((char)uVar5 < '\0')" ( (binary_expression "(char)uVar5 < '\0'" (cast_expression "(char)uVar5" ( (type_descriptor "char" primitive_type) ) identifier) < (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        return 0;\n      }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "pfVar7->state = state_skipping_aug;" (assignment_expression "pfVar7->state = state_skipping_aug" (field_expression "pfVar7->state" identifier -> field_identifier) = identifier) ;) }))) (if_statement "if (local_54 != 0) {\n      return 0;\n    }" if (parenthesized_expression "(local_54 != 0)" ( (binary_expression "local_54 != 0" identifier != number_literal) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "pfVar7->state = state_wait_loc4;" (assignment_expression "pfVar7->state = state_wait_loc4" (field_expression "pfVar7->state" identifier -> field_identifier) = identifier) ;) (return_statement "return 0;" return number_literal ;)) (case_statement "case state_skipping_aug:\n    if ((int)*pnbytes < 0) {\nLAB_0001ff8e:\n      pfVar7->state = state_error;\n      return 0;\n    }\n    iVar4 = pfVar7->aug_size - *pnbytes;\n    pfVar7->aug_size = iVar4;\n    if (iVar4 != 0) {\n      if (-1 < iVar4) {\n        return 0;\n      }\n      goto LAB_0001ff8e;\n    }\n    goto LAB_00020108;" case identifier : (if_statement "if ((int)*pnbytes < 0) {\nLAB_0001ff8e:\n      pfVar7->state = state_error;\n      return 0;\n    }" if (parenthesized_expression "((int)*pnbytes < 0)" ( (binary_expression "(int)*pnbytes < 0" (cast_expression "(int)*pnbytes" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*pnbytes" * identifier)) < number_literal) )) (compound_statement "{\nLAB_0001ff8e:\n      pfVar7->state = state_error;\n      return 0;\n    }" { (labeled_statement "LAB_0001ff8e:\n      pfVar7->state = state_error;" statement_identifier : (expression_statement "pfVar7->state = state_error;" (assignment_expression "pfVar7->state = state_error" (field_expression "pfVar7->state" identifier -> field_identifier) = identifier) ;)) (return_statement "return 0;" return number_literal ;) })) (expression_statement "iVar4 = pfVar7->aug_size - *pnbytes;" (assignment_expression "iVar4 = pfVar7->aug_size - *pnbytes" identifier = (binary_expression "pfVar7->aug_size - *pnbytes" (field_expression "pfVar7->aug_size" identifier -> field_identifier) - (pointer_expression "*pnbytes" * identifier))) ;) (expression_statement "pfVar7->aug_size = iVar4;" (assignment_expression "pfVar7->aug_size = iVar4" (field_expression "pfVar7->aug_size" identifier -> field_identifier) = identifier) ;) (if_statement "if (iVar4 != 0) {\n      if (-1 < iVar4) {\n        return 0;\n      }\n      goto LAB_0001ff8e;\n    }" if (parenthesized_expression "(iVar4 != 0)" ( (binary_expression "iVar4 != 0" identifier != number_literal) )) (compound_statement "{\n      if (-1 < iVar4) {\n        return 0;\n      }\n      goto LAB_0001ff8e;\n    }" { (if_statement "if (-1 < iVar4) {\n        return 0;\n      }" if (parenthesized_expression "(-1 < iVar4)" ( (binary_expression "-1 < iVar4" number_literal < identifier) )) (compound_statement "{\n        return 0;\n      }" { (return_statement "return 0;" return number_literal ;) })) (goto_statement "goto LAB_0001ff8e;" goto statement_identifier ;) })) (goto_statement "goto LAB_00020108;" goto statement_identifier ;)) (case_statement "case state_wait_loc4:\n    if (*pnbytes != 1) {\n      return 0;\n    }\n    if (exp->field_0x10 != '\x02') {\n      return 0;\n    }\n    if ((int)exp->X_add_number != 4 || *(int *)((int)&exp->X_add_number + 4) != 0) {\n      return 0;\n    }\n    frag_grow(1);\n    pfVar7->state = state_saw_loc4;\n    pfVar7->loc4_frag = frag_now;\n    aVar18 = frag_now_fix();\n    pfVar7->loc4_fix = (int)aVar18;\n    return 0;" case identifier : (if_statement "if (*pnbytes != 1) {\n      return 0;\n    }" if (parenthesized_expression "(*pnbytes != 1)" ( (binary_expression "*pnbytes != 1" (pointer_expression "*pnbytes" * identifier) != number_literal) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) (if_statement "if (exp->field_0x10 != '\x02') {\n      return 0;\n    }" if (parenthesized_expression "(exp->field_0x10 != '\x02')" ( (binary_expression "exp->field_0x10 != '\x02'" (field_expression "exp->field_0x10" identifier -> field_identifier) != (char_literal "'\x02'" ' escape_sequence ')) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) (if_statement "if ((int)exp->X_add_number != 4 || *(int *)((int)&exp->X_add_number + 4) != 0) {\n      return 0;\n    }" if (parenthesized_expression "((int)exp->X_add_number != 4 || *(int *)((int)&exp->X_add_number + 4) != 0)" ( (binary_expression "(int)exp->X_add_number != 4 || *(int *)((int)&exp->X_add_number + 4) != 0" (binary_expression "(int)exp->X_add_number != 4" (cast_expression "(int)exp->X_add_number" ( (type_descriptor "int" primitive_type) ) (field_expression "exp->X_add_number" identifier -> field_identifier)) != number_literal) || (binary_expression "*(int *)((int)&exp->X_add_number + 4) != 0" (pointer_expression "*(int *)((int)&exp->X_add_number + 4)" * (cast_expression "(int *)((int)&exp->X_add_number + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&exp->X_add_number + 4)" ( (binary_expression "(int)&exp->X_add_number + 4" (cast_expression "(int)&exp->X_add_number" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&exp->X_add_number" & (field_expression "exp->X_add_number" identifier -> field_identifier))) + number_literal) )))) != number_literal)) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "frag_grow(1);" (call_expression "frag_grow(1)" identifier (argument_list "(1)" ( number_literal ))) ;) (expression_statement "pfVar7->state = state_saw_loc4;" (assignment_expression "pfVar7->state = state_saw_loc4" (field_expression "pfVar7->state" identifier -> field_identifier) = identifier) ;) (expression_statement "pfVar7->loc4_frag = frag_now;" (assignment_expression "pfVar7->loc4_frag = frag_now" (field_expression "pfVar7->loc4_frag" identifier -> field_identifier) = identifier) ;) (expression_statement "aVar18 = frag_now_fix();" (assignment_expression "aVar18 = frag_now_fix()" identifier = (call_expression "frag_now_fix()" identifier (argument_list "()" ( )))) ;) (expression_statement "pfVar7->loc4_fix = (int)aVar18;" (assignment_expression "pfVar7->loc4_fix = (int)aVar18" (field_expression "pfVar7->loc4_fix" identifier -> field_identifier) = (cast_expression "(int)aVar18" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (return_statement "return 0;" return number_literal ;)) (case_statement "case state_saw_loc4:\n    pfVar7->state = state_wait_loc4;\n    if (*pnbytes != 4) {\n      return 0;\n    }\n    cVar6 = exp->field_0x10;\n    if (cVar6 == '\x02') {\n      uVar5 = (uint)exp->X_add_number;\n      iVar4 = *(int *)((int)&exp->X_add_number + 4);\n      if ((int)(uint)(0x3f < uVar5) <= -iVar4) {\n        pfVar7->loc4_frag->fr_literal[pfVar7->loc4_fix] = (byte)uVar5 | 0x40;\n        return 1;\n      }\n      if (-iVar4 < (int)(uint)(0xff < uVar5)) {\n        if (-iVar4 < (int)(uint)(0xffff < uVar5)) {\n          return 0;\n        }\n        pfVar7->loc4_frag->fr_literal[pfVar7->loc4_fix] = '\x03';\n        *pnbytes = 2;\n        return 0;\n      }\n      pfVar7->loc4_frag->fr_literal[pfVar7->loc4_fix] = '\x02';\n      *pnbytes = 1;\n      return 0;\n    }\n    if (cVar6 == '\x14') {\n      if ((pfVar7->cie_info).code_alignment != 1) {\n        return 0;\n      }\n      opcode = pfVar7->loc4_frag;\n      iVar4 = pfVar7->loc4_fix;\n      psVar3 = make_expr_symbol(exp);\n      subtype = 8;\n    }\n    else {\n      if ((cVar6 != '\v') && (cVar6 != '\x0e')) {\n        return 0;\n      }\n      uVar5 = (pfVar7->cie_info).code_alignment;\n      if (uVar5 < 2) {\n        return 0;\n      }\n      psVar3 = exp->X_add_symbol;\n      if (psVar3->bsym == (asymbol *)0x0) {\n        return 0;\n      }\n      psVar2 = exp->X_op_symbol;\n      if (psVar2->bsym == (asymbol *)0x0) {\n        return 0;\n      }\n      if ((psVar3->sy_value).field_0x10 != '\x14') {\n        return 0;\n      }\n      if ((psVar2->sy_value).field_0x10 != '\x02') {\n        return 0;\n      }\n      iVar4 = *(int *)((int)&(psVar2->sy_value).X_add_number + 4);\n      uVar9 = (uint)(psVar2->sy_value).X_add_number;\n      if (cVar6 != '\v') {\n        uVar12 = uVar9 >> 5 & 1;\n        iVar4 = uVar12 << ((byte)uVar9 & 0x1f);\n        uVar9 = (uVar12 ^ 1) << ((byte)uVar9 & 0x1f);\n      }\n      if (iVar4 != 0) {\n        return 0;\n      }\n      if (uVar5 != uVar9) {\n        return 0;\n      }\n      opcode = pfVar7->loc4_frag;\n      iVar4 = pfVar7->loc4_fix;\n      psVar3 = make_expr_symbol(&psVar3->sy_value);\n      subtype = (pfVar7->cie_info).code_alignment << 3;\n    }\n    frag_var(rs_cfa,4,0,subtype,psVar3,(longlong)iVar4,(char *)opcode);\n    return 1;" case identifier : (expression_statement "pfVar7->state = state_wait_loc4;" (assignment_expression "pfVar7->state = state_wait_loc4" (field_expression "pfVar7->state" identifier -> field_identifier) = identifier) ;) (if_statement "if (*pnbytes != 4) {\n      return 0;\n    }" if (parenthesized_expression "(*pnbytes != 4)" ( (binary_expression "*pnbytes != 4" (pointer_expression "*pnbytes" * identifier) != number_literal) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "cVar6 = exp->field_0x10;" (assignment_expression "cVar6 = exp->field_0x10" identifier = (field_expression "exp->field_0x10" identifier -> field_identifier)) ;) (if_statement "if (cVar6 == '\x02') {\n      uVar5 = (uint)exp->X_add_number;\n      iVar4 = *(int *)((int)&exp->X_add_number + 4);\n      if ((int)(uint)(0x3f < uVar5) <= -iVar4) {\n        pfVar7->loc4_frag->fr_literal[pfVar7->loc4_fix] = (byte)uVar5 | 0x40;\n        return 1;\n      }\n      if (-iVar4 < (int)(uint)(0xff < uVar5)) {\n        if (-iVar4 < (int)(uint)(0xffff < uVar5)) {\n          return 0;\n        }\n        pfVar7->loc4_frag->fr_literal[pfVar7->loc4_fix] = '\x03';\n        *pnbytes = 2;\n        return 0;\n      }\n      pfVar7->loc4_frag->fr_literal[pfVar7->loc4_fix] = '\x02';\n      *pnbytes = 1;\n      return 0;\n    }" if (parenthesized_expression "(cVar6 == '\x02')" ( (binary_expression "cVar6 == '\x02'" identifier == (char_literal "'\x02'" ' escape_sequence ')) )) (compound_statement "{\n      uVar5 = (uint)exp->X_add_number;\n      iVar4 = *(int *)((int)&exp->X_add_number + 4);\n      if ((int)(uint)(0x3f < uVar5) <= -iVar4) {\n        pfVar7->loc4_frag->fr_literal[pfVar7->loc4_fix] = (byte)uVar5 | 0x40;\n        return 1;\n      }\n      if (-iVar4 < (int)(uint)(0xff < uVar5)) {\n        if (-iVar4 < (int)(uint)(0xffff < uVar5)) {\n          return 0;\n        }\n        pfVar7->loc4_frag->fr_literal[pfVar7->loc4_fix] = '\x03';\n        *pnbytes = 2;\n        return 0;\n      }\n      pfVar7->loc4_frag->fr_literal[pfVar7->loc4_fix] = '\x02';\n      *pnbytes = 1;\n      return 0;\n    }" { (expression_statement "uVar5 = (uint)exp->X_add_number;" (assignment_expression "uVar5 = (uint)exp->X_add_number" identifier = (cast_expression "(uint)exp->X_add_number" ( (type_descriptor "uint" type_identifier) ) (field_expression "exp->X_add_number" identifier -> field_identifier))) ;) (expression_statement "iVar4 = *(int *)((int)&exp->X_add_number + 4);" (assignment_expression "iVar4 = *(int *)((int)&exp->X_add_number + 4)" identifier = (pointer_expression "*(int *)((int)&exp->X_add_number + 4)" * (cast_expression "(int *)((int)&exp->X_add_number + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&exp->X_add_number + 4)" ( (binary_expression "(int)&exp->X_add_number + 4" (cast_expression "(int)&exp->X_add_number" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&exp->X_add_number" & (field_expression "exp->X_add_number" identifier -> field_identifier))) + number_literal) ))))) ;) (if_statement "if ((int)(uint)(0x3f < uVar5) <= -iVar4) {\n        pfVar7->loc4_frag->fr_literal[pfVar7->loc4_fix] = (byte)uVar5 | 0x40;\n        return 1;\n      }" if (parenthesized_expression "((int)(uint)(0x3f < uVar5) <= -iVar4)" ( (binary_expression "(int)(uint)(0x3f < uVar5) <= -iVar4" (cast_expression "(int)(uint)(0x3f < uVar5)" ( (type_descriptor "int" primitive_type) ) (call_expression "(uint)(0x3f < uVar5)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(0x3f < uVar5)" ( (binary_expression "0x3f < uVar5" number_literal < identifier) )))) <= (unary_expression "-iVar4" - identifier)) )) (compound_statement "{\n        pfVar7->loc4_frag->fr_literal[pfVar7->loc4_fix] = (byte)uVar5 | 0x40;\n        return 1;\n      }" { (expression_statement "pfVar7->loc4_frag->fr_literal[pfVar7->loc4_fix] = (byte)uVar5 | 0x40;" (assignment_expression "pfVar7->loc4_frag->fr_literal[pfVar7->loc4_fix] = (byte)uVar5 | 0x40" (subscript_expression "pfVar7->loc4_frag->fr_literal[pfVar7->loc4_fix]" (field_expression "pfVar7->loc4_frag->fr_literal" (field_expression "pfVar7->loc4_frag" identifier -> field_identifier) -> field_identifier) [ (field_expression "pfVar7->loc4_fix" identifier -> field_identifier) ]) = (binary_expression "(byte)uVar5 | 0x40" (cast_expression "(byte)uVar5" ( (type_descriptor "byte" type_identifier) ) identifier) | number_literal)) ;) (return_statement "return 1;" return number_literal ;) })) (if_statement "if (-iVar4 < (int)(uint)(0xff < uVar5)) {\n        if (-iVar4 < (int)(uint)(0xffff < uVar5)) {\n          return 0;\n        }\n        pfVar7->loc4_frag->fr_literal[pfVar7->loc4_fix] = '\x03';\n        *pnbytes = 2;\n        return 0;\n      }" if (parenthesized_expression "(-iVar4 < (int)(uint)(0xff < uVar5))" ( (binary_expression "-iVar4 < (int)(uint)(0xff < uVar5)" (unary_expression "-iVar4" - identifier) < (cast_expression "(int)(uint)(0xff < uVar5)" ( (type_descriptor "int" primitive_type) ) (call_expression "(uint)(0xff < uVar5)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(0xff < uVar5)" ( (binary_expression "0xff < uVar5" number_literal < identifier) ))))) )) (compound_statement "{\n        if (-iVar4 < (int)(uint)(0xffff < uVar5)) {\n          return 0;\n        }\n        pfVar7->loc4_frag->fr_literal[pfVar7->loc4_fix] = '\x03';\n        *pnbytes = 2;\n        return 0;\n      }" { (if_statement "if (-iVar4 < (int)(uint)(0xffff < uVar5)) {\n          return 0;\n        }" if (parenthesized_expression "(-iVar4 < (int)(uint)(0xffff < uVar5))" ( (binary_expression "-iVar4 < (int)(uint)(0xffff < uVar5)" (unary_expression "-iVar4" - identifier) < (cast_expression "(int)(uint)(0xffff < uVar5)" ( (type_descriptor "int" primitive_type) ) (call_expression "(uint)(0xffff < uVar5)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(0xffff < uVar5)" ( (binary_expression "0xffff < uVar5" number_literal < identifier) ))))) )) (compound_statement "{\n          return 0;\n        }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "pfVar7->loc4_frag->fr_literal[pfVar7->loc4_fix] = '\x03';" (assignment_expression "pfVar7->loc4_frag->fr_literal[pfVar7->loc4_fix] = '\x03'" (subscript_expression "pfVar7->loc4_frag->fr_literal[pfVar7->loc4_fix]" (field_expression "pfVar7->loc4_frag->fr_literal" (field_expression "pfVar7->loc4_frag" identifier -> field_identifier) -> field_identifier) [ (field_expression "pfVar7->loc4_fix" identifier -> field_identifier) ]) = (char_literal "'\x03'" ' escape_sequence ')) ;) (expression_statement "*pnbytes = 2;" (assignment_expression "*pnbytes = 2" (pointer_expression "*pnbytes" * identifier) = number_literal) ;) (return_statement "return 0;" return number_literal ;) })) (expression_statement "pfVar7->loc4_frag->fr_literal[pfVar7->loc4_fix] = '\x02';" (assignment_expression "pfVar7->loc4_frag->fr_literal[pfVar7->loc4_fix] = '\x02'" (subscript_expression "pfVar7->loc4_frag->fr_literal[pfVar7->loc4_fix]" (field_expression "pfVar7->loc4_frag->fr_literal" (field_expression "pfVar7->loc4_frag" identifier -> field_identifier) -> field_identifier) [ (field_expression "pfVar7->loc4_fix" identifier -> field_identifier) ]) = (char_literal "'\x02'" ' escape_sequence ')) ;) (expression_statement "*pnbytes = 1;" (assignment_expression "*pnbytes = 1" (pointer_expression "*pnbytes" * identifier) = number_literal) ;) (return_statement "return 0;" return number_literal ;) })) (if_statement "if (cVar6 == '\x14') {\n      if ((pfVar7->cie_info).code_alignment != 1) {\n        return 0;\n      }\n      opcode = pfVar7->loc4_frag;\n      iVar4 = pfVar7->loc4_fix;\n      psVar3 = make_expr_symbol(exp);\n      subtype = 8;\n    }\n    else {\n      if ((cVar6 != '\v') && (cVar6 != '\x0e')) {\n        return 0;\n      }\n      uVar5 = (pfVar7->cie_info).code_alignment;\n      if (uVar5 < 2) {\n        return 0;\n      }\n      psVar3 = exp->X_add_symbol;\n      if (psVar3->bsym == (asymbol *)0x0) {\n        return 0;\n      }\n      psVar2 = exp->X_op_symbol;\n      if (psVar2->bsym == (asymbol *)0x0) {\n        return 0;\n      }\n      if ((psVar3->sy_value).field_0x10 != '\x14') {\n        return 0;\n      }\n      if ((psVar2->sy_value).field_0x10 != '\x02') {\n        return 0;\n      }\n      iVar4 = *(int *)((int)&(psVar2->sy_value).X_add_number + 4);\n      uVar9 = (uint)(psVar2->sy_value).X_add_number;\n      if (cVar6 != '\v') {\n        uVar12 = uVar9 >> 5 & 1;\n        iVar4 = uVar12 << ((byte)uVar9 & 0x1f);\n        uVar9 = (uVar12 ^ 1) << ((byte)uVar9 & 0x1f);\n      }\n      if (iVar4 != 0) {\n        return 0;\n      }\n      if (uVar5 != uVar9) {\n        return 0;\n      }\n      opcode = pfVar7->loc4_frag;\n      iVar4 = pfVar7->loc4_fix;\n      psVar3 = make_expr_symbol(&psVar3->sy_value);\n      subtype = (pfVar7->cie_info).code_alignment << 3;\n    }" if (parenthesized_expression "(cVar6 == '\x14')" ( (binary_expression "cVar6 == '\x14'" identifier == (char_literal "'\x14'" ' escape_sequence ')) )) (compound_statement "{\n      if ((pfVar7->cie_info).code_alignment != 1) {\n        return 0;\n      }\n      opcode = pfVar7->loc4_frag;\n      iVar4 = pfVar7->loc4_fix;\n      psVar3 = make_expr_symbol(exp);\n      subtype = 8;\n    }" { (if_statement "if ((pfVar7->cie_info).code_alignment != 1) {\n        return 0;\n      }" if (parenthesized_expression "((pfVar7->cie_info).code_alignment != 1)" ( (binary_expression "(pfVar7->cie_info).code_alignment != 1" (field_expression "(pfVar7->cie_info).code_alignment" (parenthesized_expression "(pfVar7->cie_info)" ( (field_expression "pfVar7->cie_info" identifier -> field_identifier) )) . field_identifier) != number_literal) )) (compound_statement "{\n        return 0;\n      }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "opcode = pfVar7->loc4_frag;" (assignment_expression "opcode = pfVar7->loc4_frag" identifier = (field_expression "pfVar7->loc4_frag" identifier -> field_identifier)) ;) (expression_statement "iVar4 = pfVar7->loc4_fix;" (assignment_expression "iVar4 = pfVar7->loc4_fix" identifier = (field_expression "pfVar7->loc4_fix" identifier -> field_identifier)) ;) (expression_statement "psVar3 = make_expr_symbol(exp);" (assignment_expression "psVar3 = make_expr_symbol(exp)" identifier = (call_expression "make_expr_symbol(exp)" identifier (argument_list "(exp)" ( identifier )))) ;) (expression_statement "subtype = 8;" (assignment_expression "subtype = 8" identifier = number_literal) ;) }) (else_clause "else {\n      if ((cVar6 != '\v') && (cVar6 != '\x0e')) {\n        return 0;\n      }\n      uVar5 = (pfVar7->cie_info).code_alignment;\n      if (uVar5 < 2) {\n        return 0;\n      }\n      psVar3 = exp->X_add_symbol;\n      if (psVar3->bsym == (asymbol *)0x0) {\n        return 0;\n      }\n      psVar2 = exp->X_op_symbol;\n      if (psVar2->bsym == (asymbol *)0x0) {\n        return 0;\n      }\n      if ((psVar3->sy_value).field_0x10 != '\x14') {\n        return 0;\n      }\n      if ((psVar2->sy_value).field_0x10 != '\x02') {\n        return 0;\n      }\n      iVar4 = *(int *)((int)&(psVar2->sy_value).X_add_number + 4);\n      uVar9 = (uint)(psVar2->sy_value).X_add_number;\n      if (cVar6 != '\v') {\n        uVar12 = uVar9 >> 5 & 1;\n        iVar4 = uVar12 << ((byte)uVar9 & 0x1f);\n        uVar9 = (uVar12 ^ 1) << ((byte)uVar9 & 0x1f);\n      }\n      if (iVar4 != 0) {\n        return 0;\n      }\n      if (uVar5 != uVar9) {\n        return 0;\n      }\n      opcode = pfVar7->loc4_frag;\n      iVar4 = pfVar7->loc4_fix;\n      psVar3 = make_expr_symbol(&psVar3->sy_value);\n      subtype = (pfVar7->cie_info).code_alignment << 3;\n    }" else (compound_statement "{\n      if ((cVar6 != '\v') && (cVar6 != '\x0e')) {\n        return 0;\n      }\n      uVar5 = (pfVar7->cie_info).code_alignment;\n      if (uVar5 < 2) {\n        return 0;\n      }\n      psVar3 = exp->X_add_symbol;\n      if (psVar3->bsym == (asymbol *)0x0) {\n        return 0;\n      }\n      psVar2 = exp->X_op_symbol;\n      if (psVar2->bsym == (asymbol *)0x0) {\n        return 0;\n      }\n      if ((psVar3->sy_value).field_0x10 != '\x14') {\n        return 0;\n      }\n      if ((psVar2->sy_value).field_0x10 != '\x02') {\n        return 0;\n      }\n      iVar4 = *(int *)((int)&(psVar2->sy_value).X_add_number + 4);\n      uVar9 = (uint)(psVar2->sy_value).X_add_number;\n      if (cVar6 != '\v') {\n        uVar12 = uVar9 >> 5 & 1;\n        iVar4 = uVar12 << ((byte)uVar9 & 0x1f);\n        uVar9 = (uVar12 ^ 1) << ((byte)uVar9 & 0x1f);\n      }\n      if (iVar4 != 0) {\n        return 0;\n      }\n      if (uVar5 != uVar9) {\n        return 0;\n      }\n      opcode = pfVar7->loc4_frag;\n      iVar4 = pfVar7->loc4_fix;\n      psVar3 = make_expr_symbol(&psVar3->sy_value);\n      subtype = (pfVar7->cie_info).code_alignment << 3;\n    }" { (if_statement "if ((cVar6 != '\v') && (cVar6 != '\x0e')) {\n        return 0;\n      }" if (parenthesized_expression "((cVar6 != '\v') && (cVar6 != '\x0e'))" ( (binary_expression "(cVar6 != '\v') && (cVar6 != '\x0e')" (parenthesized_expression "(cVar6 != '\v')" ( (binary_expression "cVar6 != '\v'" identifier != (char_literal "'\v'" ' escape_sequence ')) )) && (parenthesized_expression "(cVar6 != '\x0e')" ( (binary_expression "cVar6 != '\x0e'" identifier != (char_literal "'\x0e'" ' escape_sequence ')) ))) )) (compound_statement "{\n        return 0;\n      }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "uVar5 = (pfVar7->cie_info).code_alignment;" (assignment_expression "uVar5 = (pfVar7->cie_info).code_alignment" identifier = (field_expression "(pfVar7->cie_info).code_alignment" (parenthesized_expression "(pfVar7->cie_info)" ( (field_expression "pfVar7->cie_info" identifier -> field_identifier) )) . field_identifier)) ;) (if_statement "if (uVar5 < 2) {\n        return 0;\n      }" if (parenthesized_expression "(uVar5 < 2)" ( (binary_expression "uVar5 < 2" identifier < number_literal) )) (compound_statement "{\n        return 0;\n      }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "psVar3 = exp->X_add_symbol;" (assignment_expression "psVar3 = exp->X_add_symbol" identifier = (field_expression "exp->X_add_symbol" identifier -> field_identifier)) ;) (if_statement "if (psVar3->bsym == (asymbol *)0x0) {\n        return 0;\n      }" if (parenthesized_expression "(psVar3->bsym == (asymbol *)0x0)" ( (binary_expression "psVar3->bsym == (asymbol *)0x0" (field_expression "psVar3->bsym" identifier -> field_identifier) == (cast_expression "(asymbol *)0x0" ( (type_descriptor "asymbol *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        return 0;\n      }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "psVar2 = exp->X_op_symbol;" (assignment_expression "psVar2 = exp->X_op_symbol" identifier = (field_expression "exp->X_op_symbol" identifier -> field_identifier)) ;) (if_statement "if (psVar2->bsym == (asymbol *)0x0) {\n        return 0;\n      }" if (parenthesized_expression "(psVar2->bsym == (asymbol *)0x0)" ( (binary_expression "psVar2->bsym == (asymbol *)0x0" (field_expression "psVar2->bsym" identifier -> field_identifier) == (cast_expression "(asymbol *)0x0" ( (type_descriptor "asymbol *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        return 0;\n      }" { (return_statement "return 0;" return number_literal ;) })) (if_statement "if ((psVar3->sy_value).field_0x10 != '\x14') {\n        return 0;\n      }" if (parenthesized_expression "((psVar3->sy_value).field_0x10 != '\x14')" ( (binary_expression "(psVar3->sy_value).field_0x10 != '\x14'" (field_expression "(psVar3->sy_value).field_0x10" (parenthesized_expression "(psVar3->sy_value)" ( (field_expression "psVar3->sy_value" identifier -> field_identifier) )) . field_identifier) != (char_literal "'\x14'" ' escape_sequence ')) )) (compound_statement "{\n        return 0;\n      }" { (return_statement "return 0;" return number_literal ;) })) (if_statement "if ((psVar2->sy_value).field_0x10 != '\x02') {\n        return 0;\n      }" if (parenthesized_expression "((psVar2->sy_value).field_0x10 != '\x02')" ( (binary_expression "(psVar2->sy_value).field_0x10 != '\x02'" (field_expression "(psVar2->sy_value).field_0x10" (parenthesized_expression "(psVar2->sy_value)" ( (field_expression "psVar2->sy_value" identifier -> field_identifier) )) . field_identifier) != (char_literal "'\x02'" ' escape_sequence ')) )) (compound_statement "{\n        return 0;\n      }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "iVar4 = *(int *)((int)&(psVar2->sy_value).X_add_number + 4);" (assignment_expression "iVar4 = *(int *)((int)&(psVar2->sy_value).X_add_number + 4)" identifier = (pointer_expression "*(int *)((int)&(psVar2->sy_value).X_add_number + 4)" * (cast_expression "(int *)((int)&(psVar2->sy_value).X_add_number + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&(psVar2->sy_value).X_add_number + 4)" ( (binary_expression "(int)&(psVar2->sy_value).X_add_number + 4" (cast_expression "(int)&(psVar2->sy_value).X_add_number" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&(psVar2->sy_value).X_add_number" & (field_expression "(psVar2->sy_value).X_add_number" (parenthesized_expression "(psVar2->sy_value)" ( (field_expression "psVar2->sy_value" identifier -> field_identifier) )) . field_identifier))) + number_literal) ))))) ;) (expression_statement "uVar9 = (uint)(psVar2->sy_value).X_add_number;" (assignment_expression "uVar9 = (uint)(psVar2->sy_value).X_add_number" identifier = (field_expression "(uint)(psVar2->sy_value).X_add_number" (call_expression "(uint)(psVar2->sy_value)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(psVar2->sy_value)" ( (field_expression "psVar2->sy_value" identifier -> field_identifier) ))) . field_identifier)) ;) (if_statement "if (cVar6 != '\v') {\n        uVar12 = uVar9 >> 5 & 1;\n        iVar4 = uVar12 << ((byte)uVar9 & 0x1f);\n        uVar9 = (uVar12 ^ 1) << ((byte)uVar9 & 0x1f);\n      }" if (parenthesized_expression "(cVar6 != '\v')" ( (binary_expression "cVar6 != '\v'" identifier != (char_literal "'\v'" ' escape_sequence ')) )) (compound_statement "{\n        uVar12 = uVar9 >> 5 & 1;\n        iVar4 = uVar12 << ((byte)uVar9 & 0x1f);\n        uVar9 = (uVar12 ^ 1) << ((byte)uVar9 & 0x1f);\n      }" { (expression_statement "uVar12 = uVar9 >> 5 & 1;" (assignment_expression "uVar12 = uVar9 >> 5 & 1" identifier = (binary_expression "uVar9 >> 5 & 1" (binary_expression "uVar9 >> 5" identifier >> number_literal) & number_literal)) ;) (expression_statement "iVar4 = uVar12 << ((byte)uVar9 & 0x1f);" (assignment_expression "iVar4 = uVar12 << ((byte)uVar9 & 0x1f)" identifier = (binary_expression "uVar12 << ((byte)uVar9 & 0x1f)" identifier << (parenthesized_expression "((byte)uVar9 & 0x1f)" ( (binary_expression "(byte)uVar9 & 0x1f" (cast_expression "(byte)uVar9" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )))) ;) (expression_statement "uVar9 = (uVar12 ^ 1) << ((byte)uVar9 & 0x1f);" (assignment_expression "uVar9 = (uVar12 ^ 1) << ((byte)uVar9 & 0x1f)" identifier = (binary_expression "(uVar12 ^ 1) << ((byte)uVar9 & 0x1f)" (parenthesized_expression "(uVar12 ^ 1)" ( (binary_expression "uVar12 ^ 1" identifier ^ number_literal) )) << (parenthesized_expression "((byte)uVar9 & 0x1f)" ( (binary_expression "(byte)uVar9 & 0x1f" (cast_expression "(byte)uVar9" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )))) ;) })) (if_statement "if (iVar4 != 0) {\n        return 0;\n      }" if (parenthesized_expression "(iVar4 != 0)" ( (binary_expression "iVar4 != 0" identifier != number_literal) )) (compound_statement "{\n        return 0;\n      }" { (return_statement "return 0;" return number_literal ;) })) (if_statement "if (uVar5 != uVar9) {\n        return 0;\n      }" if (parenthesized_expression "(uVar5 != uVar9)" ( (binary_expression "uVar5 != uVar9" identifier != identifier) )) (compound_statement "{\n        return 0;\n      }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "opcode = pfVar7->loc4_frag;" (assignment_expression "opcode = pfVar7->loc4_frag" identifier = (field_expression "pfVar7->loc4_frag" identifier -> field_identifier)) ;) (expression_statement "iVar4 = pfVar7->loc4_fix;" (assignment_expression "iVar4 = pfVar7->loc4_fix" identifier = (field_expression "pfVar7->loc4_fix" identifier -> field_identifier)) ;) (expression_statement "psVar3 = make_expr_symbol(&psVar3->sy_value);" (assignment_expression "psVar3 = make_expr_symbol(&psVar3->sy_value)" identifier = (call_expression "make_expr_symbol(&psVar3->sy_value)" identifier (argument_list "(&psVar3->sy_value)" ( (pointer_expression "&psVar3->sy_value" & (field_expression "psVar3->sy_value" identifier -> field_identifier)) )))) ;) (expression_statement "subtype = (pfVar7->cie_info).code_alignment << 3;" (assignment_expression "subtype = (pfVar7->cie_info).code_alignment << 3" identifier = (binary_expression "(pfVar7->cie_info).code_alignment << 3" (field_expression "(pfVar7->cie_info).code_alignment" (parenthesized_expression "(pfVar7->cie_info)" ( (field_expression "pfVar7->cie_info" identifier -> field_identifier) )) . field_identifier) << number_literal)) ;) }))) (expression_statement "frag_var(rs_cfa,4,0,subtype,psVar3,(longlong)iVar4,(char *)opcode);" (call_expression "frag_var(rs_cfa,4,0,subtype,psVar3,(longlong)iVar4,(char *)opcode)" identifier (argument_list "(rs_cfa,4,0,subtype,psVar3,(longlong)iVar4,(char *)opcode)" ( identifier , number_literal , number_literal , identifier , identifier , (cast_expression "(longlong)iVar4" ( (type_descriptor "longlong" type_identifier) ) identifier) , (cast_expression "(char *)opcode" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) ))) ;) (return_statement "return 1;" return number_literal ;)) (case_statement "default:\n    return 0;" default : (return_statement "return 0;" return number_literal ;)) })) (if_statement "if (pfVar7->cie_info_ok != 0) goto LAB_0001ffd7;" if (parenthesized_expression "(pfVar7->cie_info_ok != 0)" ( (binary_expression "pfVar7->cie_info_ok != 0" (field_expression "pfVar7->cie_info_ok" identifier -> field_identifier) != number_literal) )) (goto_statement "goto LAB_0001ffd7;" goto statement_identifier ;)) comment (expression_statement "local_50 = **now_seg->userdata;" (assignment_expression "local_50 = **now_seg->userdata" identifier = (pointer_expression "**now_seg->userdata" * (pointer_expression "*now_seg->userdata" * (field_expression "now_seg->userdata" identifier -> field_identifier)))) ;) (if_statement "if (local_50 != 0) {\n    uVar5 = *(uint *)(local_50 + 0x10);\n    iVar4 = *(int *)(local_50 + 0x14);\n    if (-iVar4 < (int)(uint)(4 < uVar5)) {\n      local_5c = 4;\n      iVar13 = 0;\n    }\n    else {\n      local_5c = 4;\n      do {\n        local_50 = *(int *)(local_50 + 0x30);\n        local_5c = local_5c - uVar5;\n        if (local_50 == 0) goto LAB_00020226;\n        uVar5 = *(uint *)(local_50 + 0x10);\n        iVar4 = *(int *)(local_50 + 0x14);\n        iVar13 = (int)local_5c >> 0x1f;\n      } while ((SBORROW4(iVar13,iVar4) != SBORROW4(iVar13 - iVar4,(uint)(local_5c < uVar5))) ==\n               (int)((iVar13 - iVar4) - (uint)(local_5c < uVar5)) < 0);\n    }\n    iVar4 = (iVar4 - iVar13) - (uint)(uVar5 < local_5c);\n    uVar5 = (uint)(3 < uVar5 - local_5c);\n    bVar14 = iVar4 != 0 || (uint)-iVar4 < uVar5;\n    bVar16 = -uVar5 == iVar4;\n    if (-iVar4 < (int)uVar5) {\n      iVar4 = 0xc;\n      pbVar10 = (byte *)now_seg->name;\n      pbVar8 = (byte *)".debug_frame";\n      do {\n        if (iVar4 == 0) break;\n        iVar4 = iVar4 + -1;\n        bVar14 = *pbVar10 < *pbVar8;\n        bVar16 = *pbVar10 == *pbVar8;\n        pbVar10 = pbVar10 + (uint)bVar17 * -2 + 1;\n        pbVar8 = pbVar8 + (uint)bVar17 * -2 + 1;\n      } while (bVar16);\n      cVar6 = -((!bVar14 && !bVar16) == bVar14);\n      if ((((*(char *)(local_50 + 0x68 + local_5c) == cVar6) &&\n           (*(char *)(local_50 + 0x69 + local_5c) == cVar6)) &&\n          (*(char *)(local_50 + 0x6a + local_5c) == cVar6)) &&\n         (*(char *)(local_50 + 0x6b + local_5c) == cVar6)) {\n        local_5c = local_5c + 4;\n        do {\n          iVar4 = (int)local_5c >> 0x1f;\n          local_40 = *(int *)(local_50 + 0x14);\n          local_44 = *(uint *)(local_50 + 0x10);\n          if ((SBORROW4(iVar4,local_40) != SBORROW4(iVar4 - local_40,(uint)(local_5c < local_44)))\n              != (int)((iVar4 - local_40) - (uint)(local_5c < local_44)) < 0) {\n            if (((int)(uint)(local_44 != local_5c) <=\n                 (int)-((local_40 - iVar4) - (uint)(local_44 < local_5c))) ||\n               (*(char *)(local_50 + 0x68 + local_5c) != '\x01')) goto LAB_00020226;\n            uVar5 = local_5c + 1;\n            local_38 = 0;\n            iVar4 = (*now_seg->userdata)[4];\n            goto LAB_0002044e;\n          }\n          local_5c = local_5c - local_44;\n          local_50 = *(int *)(local_50 + 0x30);\n        } while (local_50 != 0);\n        pfVar7->cie_info_ok = 0;\n        goto LAB_0002022d;\n      }\n    }\n  }" if (parenthesized_expression "(local_50 != 0)" ( (binary_expression "local_50 != 0" identifier != number_literal) )) (compound_statement "{\n    uVar5 = *(uint *)(local_50 + 0x10);\n    iVar4 = *(int *)(local_50 + 0x14);\n    if (-iVar4 < (int)(uint)(4 < uVar5)) {\n      local_5c = 4;\n      iVar13 = 0;\n    }\n    else {\n      local_5c = 4;\n      do {\n        local_50 = *(int *)(local_50 + 0x30);\n        local_5c = local_5c - uVar5;\n        if (local_50 == 0) goto LAB_00020226;\n        uVar5 = *(uint *)(local_50 + 0x10);\n        iVar4 = *(int *)(local_50 + 0x14);\n        iVar13 = (int)local_5c >> 0x1f;\n      } while ((SBORROW4(iVar13,iVar4) != SBORROW4(iVar13 - iVar4,(uint)(local_5c < uVar5))) ==\n               (int)((iVar13 - iVar4) - (uint)(local_5c < uVar5)) < 0);\n    }\n    iVar4 = (iVar4 - iVar13) - (uint)(uVar5 < local_5c);\n    uVar5 = (uint)(3 < uVar5 - local_5c);\n    bVar14 = iVar4 != 0 || (uint)-iVar4 < uVar5;\n    bVar16 = -uVar5 == iVar4;\n    if (-iVar4 < (int)uVar5) {\n      iVar4 = 0xc;\n      pbVar10 = (byte *)now_seg->name;\n      pbVar8 = (byte *)".debug_frame";\n      do {\n        if (iVar4 == 0) break;\n        iVar4 = iVar4 + -1;\n        bVar14 = *pbVar10 < *pbVar8;\n        bVar16 = *pbVar10 == *pbVar8;\n        pbVar10 = pbVar10 + (uint)bVar17 * -2 + 1;\n        pbVar8 = pbVar8 + (uint)bVar17 * -2 + 1;\n      } while (bVar16);\n      cVar6 = -((!bVar14 && !bVar16) == bVar14);\n      if ((((*(char *)(local_50 + 0x68 + local_5c) == cVar6) &&\n           (*(char *)(local_50 + 0x69 + local_5c) == cVar6)) &&\n          (*(char *)(local_50 + 0x6a + local_5c) == cVar6)) &&\n         (*(char *)(local_50 + 0x6b + local_5c) == cVar6)) {\n        local_5c = local_5c + 4;\n        do {\n          iVar4 = (int)local_5c >> 0x1f;\n          local_40 = *(int *)(local_50 + 0x14);\n          local_44 = *(uint *)(local_50 + 0x10);\n          if ((SBORROW4(iVar4,local_40) != SBORROW4(iVar4 - local_40,(uint)(local_5c < local_44)))\n              != (int)((iVar4 - local_40) - (uint)(local_5c < local_44)) < 0) {\n            if (((int)(uint)(local_44 != local_5c) <=\n                 (int)-((local_40 - iVar4) - (uint)(local_44 < local_5c))) ||\n               (*(char *)(local_50 + 0x68 + local_5c) != '\x01')) goto LAB_00020226;\n            uVar5 = local_5c + 1;\n            local_38 = 0;\n            iVar4 = (*now_seg->userdata)[4];\n            goto LAB_0002044e;\n          }\n          local_5c = local_5c - local_44;\n          local_50 = *(int *)(local_50 + 0x30);\n        } while (local_50 != 0);\n        pfVar7->cie_info_ok = 0;\n        goto LAB_0002022d;\n      }\n    }\n  }" { (expression_statement "uVar5 = *(uint *)(local_50 + 0x10);" (assignment_expression "uVar5 = *(uint *)(local_50 + 0x10)" identifier = (pointer_expression "*(uint *)(local_50 + 0x10)" * (cast_expression "(uint *)(local_50 + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_50 + 0x10)" ( (binary_expression "local_50 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "iVar4 = *(int *)(local_50 + 0x14);" (assignment_expression "iVar4 = *(int *)(local_50 + 0x14)" identifier = (pointer_expression "*(int *)(local_50 + 0x14)" * (cast_expression "(int *)(local_50 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_50 + 0x14)" ( (binary_expression "local_50 + 0x14" identifier + number_literal) ))))) ;) (if_statement "if (-iVar4 < (int)(uint)(4 < uVar5)) {\n      local_5c = 4;\n      iVar13 = 0;\n    }\n    else {\n      local_5c = 4;\n      do {\n        local_50 = *(int *)(local_50 + 0x30);\n        local_5c = local_5c - uVar5;\n        if (local_50 == 0) goto LAB_00020226;\n        uVar5 = *(uint *)(local_50 + 0x10);\n        iVar4 = *(int *)(local_50 + 0x14);\n        iVar13 = (int)local_5c >> 0x1f;\n      } while ((SBORROW4(iVar13,iVar4) != SBORROW4(iVar13 - iVar4,(uint)(local_5c < uVar5))) ==\n               (int)((iVar13 - iVar4) - (uint)(local_5c < uVar5)) < 0);\n    }" if (parenthesized_expression "(-iVar4 < (int)(uint)(4 < uVar5))" ( (binary_expression "-iVar4 < (int)(uint)(4 < uVar5)" (unary_expression "-iVar4" - identifier) < (cast_expression "(int)(uint)(4 < uVar5)" ( (type_descriptor "int" primitive_type) ) (call_expression "(uint)(4 < uVar5)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(4 < uVar5)" ( (binary_expression "4 < uVar5" number_literal < identifier) ))))) )) (compound_statement "{\n      local_5c = 4;\n      iVar13 = 0;\n    }" { (expression_statement "local_5c = 4;" (assignment_expression "local_5c = 4" identifier = number_literal) ;) (expression_statement "iVar13 = 0;" (assignment_expression "iVar13 = 0" identifier = number_literal) ;) }) (else_clause "else {\n      local_5c = 4;\n      do {\n        local_50 = *(int *)(local_50 + 0x30);\n        local_5c = local_5c - uVar5;\n        if (local_50 == 0) goto LAB_00020226;\n        uVar5 = *(uint *)(local_50 + 0x10);\n        iVar4 = *(int *)(local_50 + 0x14);\n        iVar13 = (int)local_5c >> 0x1f;\n      } while ((SBORROW4(iVar13,iVar4) != SBORROW4(iVar13 - iVar4,(uint)(local_5c < uVar5))) ==\n               (int)((iVar13 - iVar4) - (uint)(local_5c < uVar5)) < 0);\n    }" else (compound_statement "{\n      local_5c = 4;\n      do {\n        local_50 = *(int *)(local_50 + 0x30);\n        local_5c = local_5c - uVar5;\n        if (local_50 == 0) goto LAB_00020226;\n        uVar5 = *(uint *)(local_50 + 0x10);\n        iVar4 = *(int *)(local_50 + 0x14);\n        iVar13 = (int)local_5c >> 0x1f;\n      } while ((SBORROW4(iVar13,iVar4) != SBORROW4(iVar13 - iVar4,(uint)(local_5c < uVar5))) ==\n               (int)((iVar13 - iVar4) - (uint)(local_5c < uVar5)) < 0);\n    }" { (expression_statement "local_5c = 4;" (assignment_expression "local_5c = 4" identifier = number_literal) ;) (do_statement "do {\n        local_50 = *(int *)(local_50 + 0x30);\n        local_5c = local_5c - uVar5;\n        if (local_50 == 0) goto LAB_00020226;\n        uVar5 = *(uint *)(local_50 + 0x10);\n        iVar4 = *(int *)(local_50 + 0x14);\n        iVar13 = (int)local_5c >> 0x1f;\n      } while ((SBORROW4(iVar13,iVar4) != SBORROW4(iVar13 - iVar4,(uint)(local_5c < uVar5))) ==\n               (int)((iVar13 - iVar4) - (uint)(local_5c < uVar5)) < 0);" do (compound_statement "{\n        local_50 = *(int *)(local_50 + 0x30);\n        local_5c = local_5c - uVar5;\n        if (local_50 == 0) goto LAB_00020226;\n        uVar5 = *(uint *)(local_50 + 0x10);\n        iVar4 = *(int *)(local_50 + 0x14);\n        iVar13 = (int)local_5c >> 0x1f;\n      }" { (expression_statement "local_50 = *(int *)(local_50 + 0x30);" (assignment_expression "local_50 = *(int *)(local_50 + 0x30)" identifier = (pointer_expression "*(int *)(local_50 + 0x30)" * (cast_expression "(int *)(local_50 + 0x30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_50 + 0x30)" ( (binary_expression "local_50 + 0x30" identifier + number_literal) ))))) ;) (expression_statement "local_5c = local_5c - uVar5;" (assignment_expression "local_5c = local_5c - uVar5" identifier = (binary_expression "local_5c - uVar5" identifier - identifier)) ;) (if_statement "if (local_50 == 0) goto LAB_00020226;" if (parenthesized_expression "(local_50 == 0)" ( (binary_expression "local_50 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00020226;" goto statement_identifier ;)) (expression_statement "uVar5 = *(uint *)(local_50 + 0x10);" (assignment_expression "uVar5 = *(uint *)(local_50 + 0x10)" identifier = (pointer_expression "*(uint *)(local_50 + 0x10)" * (cast_expression "(uint *)(local_50 + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_50 + 0x10)" ( (binary_expression "local_50 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "iVar4 = *(int *)(local_50 + 0x14);" (assignment_expression "iVar4 = *(int *)(local_50 + 0x14)" identifier = (pointer_expression "*(int *)(local_50 + 0x14)" * (cast_expression "(int *)(local_50 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_50 + 0x14)" ( (binary_expression "local_50 + 0x14" identifier + number_literal) ))))) ;) (expression_statement "iVar13 = (int)local_5c >> 0x1f;" (assignment_expression "iVar13 = (int)local_5c >> 0x1f" identifier = (binary_expression "(int)local_5c >> 0x1f" (cast_expression "(int)local_5c" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal)) ;) }) while (parenthesized_expression "((SBORROW4(iVar13,iVar4) != SBORROW4(iVar13 - iVar4,(uint)(local_5c < uVar5))) ==\n               (int)((iVar13 - iVar4) - (uint)(local_5c < uVar5)) < 0)" ( (binary_expression "(SBORROW4(iVar13,iVar4) != SBORROW4(iVar13 - iVar4,(uint)(local_5c < uVar5))) ==\n               (int)((iVar13 - iVar4) - (uint)(local_5c < uVar5)) < 0" (parenthesized_expression "(SBORROW4(iVar13,iVar4) != SBORROW4(iVar13 - iVar4,(uint)(local_5c < uVar5)))" ( (binary_expression "SBORROW4(iVar13,iVar4) != SBORROW4(iVar13 - iVar4,(uint)(local_5c < uVar5))" (call_expression "SBORROW4(iVar13,iVar4)" identifier (argument_list "(iVar13,iVar4)" ( identifier , identifier ))) != (call_expression "SBORROW4(iVar13 - iVar4,(uint)(local_5c < uVar5))" identifier (argument_list "(iVar13 - iVar4,(uint)(local_5c < uVar5))" ( (binary_expression "iVar13 - iVar4" identifier - identifier) , (call_expression "(uint)(local_5c < uVar5)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(local_5c < uVar5)" ( (binary_expression "local_5c < uVar5" identifier < identifier) ))) )))) )) == (binary_expression "(int)((iVar13 - iVar4) - (uint)(local_5c < uVar5)) < 0" (cast_expression "(int)((iVar13 - iVar4) - (uint)(local_5c < uVar5))" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((iVar13 - iVar4) - (uint)(local_5c < uVar5))" ( (binary_expression "(iVar13 - iVar4) - (uint)(local_5c < uVar5)" (parenthesized_expression "(iVar13 - iVar4)" ( (binary_expression "iVar13 - iVar4" identifier - identifier) )) - (call_expression "(uint)(local_5c < uVar5)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(local_5c < uVar5)" ( (binary_expression "local_5c < uVar5" identifier < identifier) )))) ))) < number_literal)) )) ;) }))) (expression_statement "iVar4 = (iVar4 - iVar13) - (uint)(uVar5 < local_5c);" (assignment_expression "iVar4 = (iVar4 - iVar13) - (uint)(uVar5 < local_5c)" identifier = (binary_expression "(iVar4 - iVar13) - (uint)(uVar5 < local_5c)" (parenthesized_expression "(iVar4 - iVar13)" ( (binary_expression "iVar4 - iVar13" identifier - identifier) )) - (call_expression "(uint)(uVar5 < local_5c)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar5 < local_5c)" ( (binary_expression "uVar5 < local_5c" identifier < identifier) ))))) ;) (expression_statement "uVar5 = (uint)(3 < uVar5 - local_5c);" (assignment_expression "uVar5 = (uint)(3 < uVar5 - local_5c)" identifier = (call_expression "(uint)(3 < uVar5 - local_5c)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(3 < uVar5 - local_5c)" ( (binary_expression "3 < uVar5 - local_5c" number_literal < (binary_expression "uVar5 - local_5c" identifier - identifier)) )))) ;) (expression_statement "bVar14 = iVar4 != 0 || (uint)-iVar4 < uVar5;" (assignment_expression "bVar14 = iVar4 != 0 || (uint)-iVar4 < uVar5" identifier = (binary_expression "iVar4 != 0 || (uint)-iVar4 < uVar5" (binary_expression "iVar4 != 0" identifier != number_literal) || (binary_expression "(uint)-iVar4 < uVar5" (binary_expression "(uint)-iVar4" (parenthesized_expression "(uint)" ( identifier )) - identifier) < identifier))) ;) (expression_statement "bVar16 = -uVar5 == iVar4;" (assignment_expression "bVar16 = -uVar5 == iVar4" identifier = (binary_expression "-uVar5 == iVar4" (unary_expression "-uVar5" - identifier) == identifier)) ;) (if_statement "if (-iVar4 < (int)uVar5) {\n      iVar4 = 0xc;\n      pbVar10 = (byte *)now_seg->name;\n      pbVar8 = (byte *)".debug_frame";\n      do {\n        if (iVar4 == 0) break;\n        iVar4 = iVar4 + -1;\n        bVar14 = *pbVar10 < *pbVar8;\n        bVar16 = *pbVar10 == *pbVar8;\n        pbVar10 = pbVar10 + (uint)bVar17 * -2 + 1;\n        pbVar8 = pbVar8 + (uint)bVar17 * -2 + 1;\n      } while (bVar16);\n      cVar6 = -((!bVar14 && !bVar16) == bVar14);\n      if ((((*(char *)(local_50 + 0x68 + local_5c) == cVar6) &&\n           (*(char *)(local_50 + 0x69 + local_5c) == cVar6)) &&\n          (*(char *)(local_50 + 0x6a + local_5c) == cVar6)) &&\n         (*(char *)(local_50 + 0x6b + local_5c) == cVar6)) {\n        local_5c = local_5c + 4;\n        do {\n          iVar4 = (int)local_5c >> 0x1f;\n          local_40 = *(int *)(local_50 + 0x14);\n          local_44 = *(uint *)(local_50 + 0x10);\n          if ((SBORROW4(iVar4,local_40) != SBORROW4(iVar4 - local_40,(uint)(local_5c < local_44)))\n              != (int)((iVar4 - local_40) - (uint)(local_5c < local_44)) < 0) {\n            if (((int)(uint)(local_44 != local_5c) <=\n                 (int)-((local_40 - iVar4) - (uint)(local_44 < local_5c))) ||\n               (*(char *)(local_50 + 0x68 + local_5c) != '\x01')) goto LAB_00020226;\n            uVar5 = local_5c + 1;\n            local_38 = 0;\n            iVar4 = (*now_seg->userdata)[4];\n            goto LAB_0002044e;\n          }\n          local_5c = local_5c - local_44;\n          local_50 = *(int *)(local_50 + 0x30);\n        } while (local_50 != 0);\n        pfVar7->cie_info_ok = 0;\n        goto LAB_0002022d;\n      }\n    }" if (parenthesized_expression "(-iVar4 < (int)uVar5)" ( (binary_expression "-iVar4 < (int)uVar5" (unary_expression "-iVar4" - identifier) < (cast_expression "(int)uVar5" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n      iVar4 = 0xc;\n      pbVar10 = (byte *)now_seg->name;\n      pbVar8 = (byte *)".debug_frame";\n      do {\n        if (iVar4 == 0) break;\n        iVar4 = iVar4 + -1;\n        bVar14 = *pbVar10 < *pbVar8;\n        bVar16 = *pbVar10 == *pbVar8;\n        pbVar10 = pbVar10 + (uint)bVar17 * -2 + 1;\n        pbVar8 = pbVar8 + (uint)bVar17 * -2 + 1;\n      } while (bVar16);\n      cVar6 = -((!bVar14 && !bVar16) == bVar14);\n      if ((((*(char *)(local_50 + 0x68 + local_5c) == cVar6) &&\n           (*(char *)(local_50 + 0x69 + local_5c) == cVar6)) &&\n          (*(char *)(local_50 + 0x6a + local_5c) == cVar6)) &&\n         (*(char *)(local_50 + 0x6b + local_5c) == cVar6)) {\n        local_5c = local_5c + 4;\n        do {\n          iVar4 = (int)local_5c >> 0x1f;\n          local_40 = *(int *)(local_50 + 0x14);\n          local_44 = *(uint *)(local_50 + 0x10);\n          if ((SBORROW4(iVar4,local_40) != SBORROW4(iVar4 - local_40,(uint)(local_5c < local_44)))\n              != (int)((iVar4 - local_40) - (uint)(local_5c < local_44)) < 0) {\n            if (((int)(uint)(local_44 != local_5c) <=\n                 (int)-((local_40 - iVar4) - (uint)(local_44 < local_5c))) ||\n               (*(char *)(local_50 + 0x68 + local_5c) != '\x01')) goto LAB_00020226;\n            uVar5 = local_5c + 1;\n            local_38 = 0;\n            iVar4 = (*now_seg->userdata)[4];\n            goto LAB_0002044e;\n          }\n          local_5c = local_5c - local_44;\n          local_50 = *(int *)(local_50 + 0x30);\n        } while (local_50 != 0);\n        pfVar7->cie_info_ok = 0;\n        goto LAB_0002022d;\n      }\n    }" { (expression_statement "iVar4 = 0xc;" (assignment_expression "iVar4 = 0xc" identifier = number_literal) ;) (expression_statement "pbVar10 = (byte *)now_seg->name;" (assignment_expression "pbVar10 = (byte *)now_seg->name" identifier = (cast_expression "(byte *)now_seg->name" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "now_seg->name" identifier -> field_identifier))) ;) (expression_statement "pbVar8 = (byte *)".debug_frame";" (assignment_expression "pbVar8 = (byte *)".debug_frame"" identifier = (cast_expression "(byte *)".debug_frame"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal "".debug_frame"" " string_content "))) ;) (do_statement "do {\n        if (iVar4 == 0) break;\n        iVar4 = iVar4 + -1;\n        bVar14 = *pbVar10 < *pbVar8;\n        bVar16 = *pbVar10 == *pbVar8;\n        pbVar10 = pbVar10 + (uint)bVar17 * -2 + 1;\n        pbVar8 = pbVar8 + (uint)bVar17 * -2 + 1;\n      } while (bVar16);" do (compound_statement "{\n        if (iVar4 == 0) break;\n        iVar4 = iVar4 + -1;\n        bVar14 = *pbVar10 < *pbVar8;\n        bVar16 = *pbVar10 == *pbVar8;\n        pbVar10 = pbVar10 + (uint)bVar17 * -2 + 1;\n        pbVar8 = pbVar8 + (uint)bVar17 * -2 + 1;\n      }" { (if_statement "if (iVar4 == 0) break;" if (parenthesized_expression "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar4 = iVar4 + -1;" (assignment_expression "iVar4 = iVar4 + -1" identifier = (binary_expression "iVar4 + -1" identifier + number_literal)) ;) (expression_statement "bVar14 = *pbVar10 < *pbVar8;" (assignment_expression "bVar14 = *pbVar10 < *pbVar8" identifier = (binary_expression "*pbVar10 < *pbVar8" (pointer_expression "*pbVar10" * identifier) < (pointer_expression "*pbVar8" * identifier))) ;) (expression_statement "bVar16 = *pbVar10 == *pbVar8;" (assignment_expression "bVar16 = *pbVar10 == *pbVar8" identifier = (binary_expression "*pbVar10 == *pbVar8" (pointer_expression "*pbVar10" * identifier) == (pointer_expression "*pbVar8" * identifier))) ;) (expression_statement "pbVar10 = pbVar10 + (uint)bVar17 * -2 + 1;" (assignment_expression "pbVar10 = pbVar10 + (uint)bVar17 * -2 + 1" identifier = (binary_expression "pbVar10 + (uint)bVar17 * -2 + 1" (binary_expression "pbVar10 + (uint)bVar17 * -2" identifier + (binary_expression "(uint)bVar17 * -2" (cast_expression "(uint)bVar17" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar8 = pbVar8 + (uint)bVar17 * -2 + 1;" (assignment_expression "pbVar8 = pbVar8 + (uint)bVar17 * -2 + 1" identifier = (binary_expression "pbVar8 + (uint)bVar17 * -2 + 1" (binary_expression "pbVar8 + (uint)bVar17 * -2" identifier + (binary_expression "(uint)bVar17 * -2" (cast_expression "(uint)bVar17" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar16)" ( identifier )) ;) (expression_statement "cVar6 = -((!bVar14 && !bVar16) == bVar14);" (assignment_expression "cVar6 = -((!bVar14 && !bVar16) == bVar14)" identifier = (unary_expression "-((!bVar14 && !bVar16) == bVar14)" - (parenthesized_expression "((!bVar14 && !bVar16) == bVar14)" ( (binary_expression "(!bVar14 && !bVar16) == bVar14" (parenthesized_expression "(!bVar14 && !bVar16)" ( (binary_expression "!bVar14 && !bVar16" (unary_expression "!bVar14" ! identifier) && (unary_expression "!bVar16" ! identifier)) )) == identifier) )))) ;) (if_statement "if ((((*(char *)(local_50 + 0x68 + local_5c) == cVar6) &&\n           (*(char *)(local_50 + 0x69 + local_5c) == cVar6)) &&\n          (*(char *)(local_50 + 0x6a + local_5c) == cVar6)) &&\n         (*(char *)(local_50 + 0x6b + local_5c) == cVar6)) {\n        local_5c = local_5c + 4;\n        do {\n          iVar4 = (int)local_5c >> 0x1f;\n          local_40 = *(int *)(local_50 + 0x14);\n          local_44 = *(uint *)(local_50 + 0x10);\n          if ((SBORROW4(iVar4,local_40) != SBORROW4(iVar4 - local_40,(uint)(local_5c < local_44)))\n              != (int)((iVar4 - local_40) - (uint)(local_5c < local_44)) < 0) {\n            if (((int)(uint)(local_44 != local_5c) <=\n                 (int)-((local_40 - iVar4) - (uint)(local_44 < local_5c))) ||\n               (*(char *)(local_50 + 0x68 + local_5c) != '\x01')) goto LAB_00020226;\n            uVar5 = local_5c + 1;\n            local_38 = 0;\n            iVar4 = (*now_seg->userdata)[4];\n            goto LAB_0002044e;\n          }\n          local_5c = local_5c - local_44;\n          local_50 = *(int *)(local_50 + 0x30);\n        } while (local_50 != 0);\n        pfVar7->cie_info_ok = 0;\n        goto LAB_0002022d;\n      }" if (parenthesized_expression "((((*(char *)(local_50 + 0x68 + local_5c) == cVar6) &&\n           (*(char *)(local_50 + 0x69 + local_5c) == cVar6)) &&\n          (*(char *)(local_50 + 0x6a + local_5c) == cVar6)) &&\n         (*(char *)(local_50 + 0x6b + local_5c) == cVar6))" ( (binary_expression "(((*(char *)(local_50 + 0x68 + local_5c) == cVar6) &&\n           (*(char *)(local_50 + 0x69 + local_5c) == cVar6)) &&\n          (*(char *)(local_50 + 0x6a + local_5c) == cVar6)) &&\n         (*(char *)(local_50 + 0x6b + local_5c) == cVar6)" (parenthesized_expression "(((*(char *)(local_50 + 0x68 + local_5c) == cVar6) &&\n           (*(char *)(local_50 + 0x69 + local_5c) == cVar6)) &&\n          (*(char *)(local_50 + 0x6a + local_5c) == cVar6))" ( (binary_expression "((*(char *)(local_50 + 0x68 + local_5c) == cVar6) &&\n           (*(char *)(local_50 + 0x69 + local_5c) == cVar6)) &&\n          (*(char *)(local_50 + 0x6a + local_5c) == cVar6)" (parenthesized_expression "((*(char *)(local_50 + 0x68 + local_5c) == cVar6) &&\n           (*(char *)(local_50 + 0x69 + local_5c) == cVar6))" ( (binary_expression "(*(char *)(local_50 + 0x68 + local_5c) == cVar6) &&\n           (*(char *)(local_50 + 0x69 + local_5c) == cVar6)" (parenthesized_expression "(*(char *)(local_50 + 0x68 + local_5c) == cVar6)" ( (binary_expression "*(char *)(local_50 + 0x68 + local_5c) == cVar6" (pointer_expression "*(char *)(local_50 + 0x68 + local_5c)" * (cast_expression "(char *)(local_50 + 0x68 + local_5c)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_50 + 0x68 + local_5c)" ( (binary_expression "local_50 + 0x68 + local_5c" (binary_expression "local_50 + 0x68" identifier + number_literal) + identifier) )))) == identifier) )) && (parenthesized_expression "(*(char *)(local_50 + 0x69 + local_5c) == cVar6)" ( (binary_expression "*(char *)(local_50 + 0x69 + local_5c) == cVar6" (pointer_expression "*(char *)(local_50 + 0x69 + local_5c)" * (cast_expression "(char *)(local_50 + 0x69 + local_5c)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_50 + 0x69 + local_5c)" ( (binary_expression "local_50 + 0x69 + local_5c" (binary_expression "local_50 + 0x69" identifier + number_literal) + identifier) )))) == identifier) ))) )) && (parenthesized_expression "(*(char *)(local_50 + 0x6a + local_5c) == cVar6)" ( (binary_expression "*(char *)(local_50 + 0x6a + local_5c) == cVar6" (pointer_expression "*(char *)(local_50 + 0x6a + local_5c)" * (cast_expression "(char *)(local_50 + 0x6a + local_5c)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_50 + 0x6a + local_5c)" ( (binary_expression "local_50 + 0x6a + local_5c" (binary_expression "local_50 + 0x6a" identifier + number_literal) + identifier) )))) == identifier) ))) )) && (parenthesized_expression "(*(char *)(local_50 + 0x6b + local_5c) == cVar6)" ( (binary_expression "*(char *)(local_50 + 0x6b + local_5c) == cVar6" (pointer_expression "*(char *)(local_50 + 0x6b + local_5c)" * (cast_expression "(char *)(local_50 + 0x6b + local_5c)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_50 + 0x6b + local_5c)" ( (binary_expression "local_50 + 0x6b + local_5c" (binary_expression "local_50 + 0x6b" identifier + number_literal) + identifier) )))) == identifier) ))) )) (compound_statement "{\n        local_5c = local_5c + 4;\n        do {\n          iVar4 = (int)local_5c >> 0x1f;\n          local_40 = *(int *)(local_50 + 0x14);\n          local_44 = *(uint *)(local_50 + 0x10);\n          if ((SBORROW4(iVar4,local_40) != SBORROW4(iVar4 - local_40,(uint)(local_5c < local_44)))\n              != (int)((iVar4 - local_40) - (uint)(local_5c < local_44)) < 0) {\n            if (((int)(uint)(local_44 != local_5c) <=\n                 (int)-((local_40 - iVar4) - (uint)(local_44 < local_5c))) ||\n               (*(char *)(local_50 + 0x68 + local_5c) != '\x01')) goto LAB_00020226;\n            uVar5 = local_5c + 1;\n            local_38 = 0;\n            iVar4 = (*now_seg->userdata)[4];\n            goto LAB_0002044e;\n          }\n          local_5c = local_5c - local_44;\n          local_50 = *(int *)(local_50 + 0x30);\n        } while (local_50 != 0);\n        pfVar7->cie_info_ok = 0;\n        goto LAB_0002022d;\n      }" { (expression_statement "local_5c = local_5c + 4;" (assignment_expression "local_5c = local_5c + 4" identifier = (binary_expression "local_5c + 4" identifier + number_literal)) ;) (do_statement "do {\n          iVar4 = (int)local_5c >> 0x1f;\n          local_40 = *(int *)(local_50 + 0x14);\n          local_44 = *(uint *)(local_50 + 0x10);\n          if ((SBORROW4(iVar4,local_40) != SBORROW4(iVar4 - local_40,(uint)(local_5c < local_44)))\n              != (int)((iVar4 - local_40) - (uint)(local_5c < local_44)) < 0) {\n            if (((int)(uint)(local_44 != local_5c) <=\n                 (int)-((local_40 - iVar4) - (uint)(local_44 < local_5c))) ||\n               (*(char *)(local_50 + 0x68 + local_5c) != '\x01')) goto LAB_00020226;\n            uVar5 = local_5c + 1;\n            local_38 = 0;\n            iVar4 = (*now_seg->userdata)[4];\n            goto LAB_0002044e;\n          }\n          local_5c = local_5c - local_44;\n          local_50 = *(int *)(local_50 + 0x30);\n        } while (local_50 != 0);" do (compound_statement "{\n          iVar4 = (int)local_5c >> 0x1f;\n          local_40 = *(int *)(local_50 + 0x14);\n          local_44 = *(uint *)(local_50 + 0x10);\n          if ((SBORROW4(iVar4,local_40) != SBORROW4(iVar4 - local_40,(uint)(local_5c < local_44)))\n              != (int)((iVar4 - local_40) - (uint)(local_5c < local_44)) < 0) {\n            if (((int)(uint)(local_44 != local_5c) <=\n                 (int)-((local_40 - iVar4) - (uint)(local_44 < local_5c))) ||\n               (*(char *)(local_50 + 0x68 + local_5c) != '\x01')) goto LAB_00020226;\n            uVar5 = local_5c + 1;\n            local_38 = 0;\n            iVar4 = (*now_seg->userdata)[4];\n            goto LAB_0002044e;\n          }\n          local_5c = local_5c - local_44;\n          local_50 = *(int *)(local_50 + 0x30);\n        }" { (expression_statement "iVar4 = (int)local_5c >> 0x1f;" (assignment_expression "iVar4 = (int)local_5c >> 0x1f" identifier = (binary_expression "(int)local_5c >> 0x1f" (cast_expression "(int)local_5c" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal)) ;) (expression_statement "local_40 = *(int *)(local_50 + 0x14);" (assignment_expression "local_40 = *(int *)(local_50 + 0x14)" identifier = (pointer_expression "*(int *)(local_50 + 0x14)" * (cast_expression "(int *)(local_50 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_50 + 0x14)" ( (binary_expression "local_50 + 0x14" identifier + number_literal) ))))) ;) (expression_statement "local_44 = *(uint *)(local_50 + 0x10);" (assignment_expression "local_44 = *(uint *)(local_50 + 0x10)" identifier = (pointer_expression "*(uint *)(local_50 + 0x10)" * (cast_expression "(uint *)(local_50 + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_50 + 0x10)" ( (binary_expression "local_50 + 0x10" identifier + number_literal) ))))) ;) (if_statement "if ((SBORROW4(iVar4,local_40) != SBORROW4(iVar4 - local_40,(uint)(local_5c < local_44)))\n              != (int)((iVar4 - local_40) - (uint)(local_5c < local_44)) < 0) {\n            if (((int)(uint)(local_44 != local_5c) <=\n                 (int)-((local_40 - iVar4) - (uint)(local_44 < local_5c))) ||\n               (*(char *)(local_50 + 0x68 + local_5c) != '\x01')) goto LAB_00020226;\n            uVar5 = local_5c + 1;\n            local_38 = 0;\n            iVar4 = (*now_seg->userdata)[4];\n            goto LAB_0002044e;\n          }" if (parenthesized_expression "((SBORROW4(iVar4,local_40) != SBORROW4(iVar4 - local_40,(uint)(local_5c < local_44)))\n              != (int)((iVar4 - local_40) - (uint)(local_5c < local_44)) < 0)" ( (binary_expression "(SBORROW4(iVar4,local_40) != SBORROW4(iVar4 - local_40,(uint)(local_5c < local_44)))\n              != (int)((iVar4 - local_40) - (uint)(local_5c < local_44)) < 0" (parenthesized_expression "(SBORROW4(iVar4,local_40) != SBORROW4(iVar4 - local_40,(uint)(local_5c < local_44)))" ( (binary_expression "SBORROW4(iVar4,local_40) != SBORROW4(iVar4 - local_40,(uint)(local_5c < local_44))" (call_expression "SBORROW4(iVar4,local_40)" identifier (argument_list "(iVar4,local_40)" ( identifier , identifier ))) != (call_expression "SBORROW4(iVar4 - local_40,(uint)(local_5c < local_44))" identifier (argument_list "(iVar4 - local_40,(uint)(local_5c < local_44))" ( (binary_expression "iVar4 - local_40" identifier - identifier) , (call_expression "(uint)(local_5c < local_44)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(local_5c < local_44)" ( (binary_expression "local_5c < local_44" identifier < identifier) ))) )))) )) != (binary_expression "(int)((iVar4 - local_40) - (uint)(local_5c < local_44)) < 0" (cast_expression "(int)((iVar4 - local_40) - (uint)(local_5c < local_44))" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((iVar4 - local_40) - (uint)(local_5c < local_44))" ( (binary_expression "(iVar4 - local_40) - (uint)(local_5c < local_44)" (parenthesized_expression "(iVar4 - local_40)" ( (binary_expression "iVar4 - local_40" identifier - identifier) )) - (call_expression "(uint)(local_5c < local_44)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(local_5c < local_44)" ( (binary_expression "local_5c < local_44" identifier < identifier) )))) ))) < number_literal)) )) (compound_statement "{\n            if (((int)(uint)(local_44 != local_5c) <=\n                 (int)-((local_40 - iVar4) - (uint)(local_44 < local_5c))) ||\n               (*(char *)(local_50 + 0x68 + local_5c) != '\x01')) goto LAB_00020226;\n            uVar5 = local_5c + 1;\n            local_38 = 0;\n            iVar4 = (*now_seg->userdata)[4];\n            goto LAB_0002044e;\n          }" { (if_statement "if (((int)(uint)(local_44 != local_5c) <=\n                 (int)-((local_40 - iVar4) - (uint)(local_44 < local_5c))) ||\n               (*(char *)(local_50 + 0x68 + local_5c) != '\x01')) goto LAB_00020226;" if (parenthesized_expression "(((int)(uint)(local_44 != local_5c) <=\n                 (int)-((local_40 - iVar4) - (uint)(local_44 < local_5c))) ||\n               (*(char *)(local_50 + 0x68 + local_5c) != '\x01'))" ( (binary_expression "((int)(uint)(local_44 != local_5c) <=\n                 (int)-((local_40 - iVar4) - (uint)(local_44 < local_5c))) ||\n               (*(char *)(local_50 + 0x68 + local_5c) != '\x01')" (parenthesized_expression "((int)(uint)(local_44 != local_5c) <=\n                 (int)-((local_40 - iVar4) - (uint)(local_44 < local_5c)))" ( (binary_expression "(int)(uint)(local_44 != local_5c) <=\n                 (int)-((local_40 - iVar4) - (uint)(local_44 < local_5c))" (cast_expression "(int)(uint)(local_44 != local_5c)" ( (type_descriptor "int" primitive_type) ) (call_expression "(uint)(local_44 != local_5c)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(local_44 != local_5c)" ( (binary_expression "local_44 != local_5c" identifier != identifier) )))) <= (cast_expression "(int)-((local_40 - iVar4) - (uint)(local_44 < local_5c))" ( (type_descriptor "int" primitive_type) ) (unary_expression "-((local_40 - iVar4) - (uint)(local_44 < local_5c))" - (parenthesized_expression "((local_40 - iVar4) - (uint)(local_44 < local_5c))" ( (binary_expression "(local_40 - iVar4) - (uint)(local_44 < local_5c)" (parenthesized_expression "(local_40 - iVar4)" ( (binary_expression "local_40 - iVar4" identifier - identifier) )) - (call_expression "(uint)(local_44 < local_5c)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(local_44 < local_5c)" ( (binary_expression "local_44 < local_5c" identifier < identifier) )))) ))))) )) || (parenthesized_expression "(*(char *)(local_50 + 0x68 + local_5c) != '\x01')" ( (binary_expression "*(char *)(local_50 + 0x68 + local_5c) != '\x01'" (pointer_expression "*(char *)(local_50 + 0x68 + local_5c)" * (cast_expression "(char *)(local_50 + 0x68 + local_5c)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_50 + 0x68 + local_5c)" ( (binary_expression "local_50 + 0x68 + local_5c" (binary_expression "local_50 + 0x68" identifier + number_literal) + identifier) )))) != (char_literal "'\x01'" ' escape_sequence ')) ))) )) (goto_statement "goto LAB_00020226;" goto statement_identifier ;)) (expression_statement "uVar5 = local_5c + 1;" (assignment_expression "uVar5 = local_5c + 1" identifier = (binary_expression "local_5c + 1" identifier + number_literal)) ;) (expression_statement "local_38 = 0;" (assignment_expression "local_38 = 0" identifier = number_literal) ;) (expression_statement "iVar4 = (*now_seg->userdata)[4];" (assignment_expression "iVar4 = (*now_seg->userdata)[4]" identifier = (subscript_expression "(*now_seg->userdata)[4]" (parenthesized_expression "(*now_seg->userdata)" ( (pointer_expression "*now_seg->userdata" * (field_expression "now_seg->userdata" identifier -> field_identifier)) )) [ number_literal ])) ;) (goto_statement "goto LAB_0002044e;" goto statement_identifier ;) })) (expression_statement "local_5c = local_5c - local_44;" (assignment_expression "local_5c = local_5c - local_44" identifier = (binary_expression "local_5c - local_44" identifier - identifier)) ;) (expression_statement "local_50 = *(int *)(local_50 + 0x30);" (assignment_expression "local_50 = *(int *)(local_50 + 0x30)" identifier = (pointer_expression "*(int *)(local_50 + 0x30)" * (cast_expression "(int *)(local_50 + 0x30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_50 + 0x30)" ( (binary_expression "local_50 + 0x30" identifier + number_literal) ))))) ;) }) while (parenthesized_expression "(local_50 != 0)" ( (binary_expression "local_50 != 0" identifier != number_literal) )) ;) (expression_statement "pfVar7->cie_info_ok = 0;" (assignment_expression "pfVar7->cie_info_ok = 0" (field_expression "pfVar7->cie_info_ok" identifier -> field_identifier) = number_literal) ;) (goto_statement "goto LAB_0002022d;" goto statement_identifier ;) })) })) })) (goto_statement "goto LAB_00020226;" goto statement_identifier ;) (labeled_statement "LAB_0002044e:\n  local_58 = (int)uVar5 >> 0x1f;" statement_identifier : (expression_statement "local_58 = (int)uVar5 >> 0x1f;" (assignment_expression "local_58 = (int)uVar5 >> 0x1f" identifier = (binary_expression "(int)uVar5 >> 0x1f" (cast_expression "(int)uVar5" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal)) ;)) (if_statement "if ((SBORROW4(local_58,local_40) != SBORROW4(local_58 - local_40,(uint)(uVar5 < local_44))) !=\n      (int)((local_58 - local_40) - (uint)(uVar5 < local_44)) < 0) {\n    cVar6 = *(char *)(local_50 + 0x68 + uVar5);\n    if (cVar6 == '\0') {\nLAB_00020509:\n      uVar5 = uVar5 + 1;\n      goto LAB_00020523;\n    }\n    local_5c = uVar5;\n    while( true ) {\n      if (local_38 < 9) {\n        augmentation[local_38] = cVar6;\n        local_38 = local_38 + 1;\n      }\n      uVar5 = uVar5 + 1;\n      if (local_58 == local_40 + -1 + (uint)(local_44 != 0) && local_5c == local_44 - 1) break;\n      bVar14 = 0xfffffffe < local_5c;\n      local_5c = local_5c + 1;\n      local_58 = local_58 + (uint)bVar14;\n      cVar6 = *(char *)(local_50 + 0x68 + uVar5);\n      if (cVar6 == '\0') goto LAB_00020509;\n    }\n    goto LAB_0002044e;\n  }" if (parenthesized_expression "((SBORROW4(local_58,local_40) != SBORROW4(local_58 - local_40,(uint)(uVar5 < local_44))) !=\n      (int)((local_58 - local_40) - (uint)(uVar5 < local_44)) < 0)" ( (binary_expression "(SBORROW4(local_58,local_40) != SBORROW4(local_58 - local_40,(uint)(uVar5 < local_44))) !=\n      (int)((local_58 - local_40) - (uint)(uVar5 < local_44)) < 0" (parenthesized_expression "(SBORROW4(local_58,local_40) != SBORROW4(local_58 - local_40,(uint)(uVar5 < local_44)))" ( (binary_expression "SBORROW4(local_58,local_40) != SBORROW4(local_58 - local_40,(uint)(uVar5 < local_44))" (call_expression "SBORROW4(local_58,local_40)" identifier (argument_list "(local_58,local_40)" ( identifier , identifier ))) != (call_expression "SBORROW4(local_58 - local_40,(uint)(uVar5 < local_44))" identifier (argument_list "(local_58 - local_40,(uint)(uVar5 < local_44))" ( (binary_expression "local_58 - local_40" identifier - identifier) , (call_expression "(uint)(uVar5 < local_44)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar5 < local_44)" ( (binary_expression "uVar5 < local_44" identifier < identifier) ))) )))) )) != (binary_expression "(int)((local_58 - local_40) - (uint)(uVar5 < local_44)) < 0" (cast_expression "(int)((local_58 - local_40) - (uint)(uVar5 < local_44))" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((local_58 - local_40) - (uint)(uVar5 < local_44))" ( (binary_expression "(local_58 - local_40) - (uint)(uVar5 < local_44)" (parenthesized_expression "(local_58 - local_40)" ( (binary_expression "local_58 - local_40" identifier - identifier) )) - (call_expression "(uint)(uVar5 < local_44)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar5 < local_44)" ( (binary_expression "uVar5 < local_44" identifier < identifier) )))) ))) < number_literal)) )) (compound_statement "{\n    cVar6 = *(char *)(local_50 + 0x68 + uVar5);\n    if (cVar6 == '\0') {\nLAB_00020509:\n      uVar5 = uVar5 + 1;\n      goto LAB_00020523;\n    }\n    local_5c = uVar5;\n    while( true ) {\n      if (local_38 < 9) {\n        augmentation[local_38] = cVar6;\n        local_38 = local_38 + 1;\n      }\n      uVar5 = uVar5 + 1;\n      if (local_58 == local_40 + -1 + (uint)(local_44 != 0) && local_5c == local_44 - 1) break;\n      bVar14 = 0xfffffffe < local_5c;\n      local_5c = local_5c + 1;\n      local_58 = local_58 + (uint)bVar14;\n      cVar6 = *(char *)(local_50 + 0x68 + uVar5);\n      if (cVar6 == '\0') goto LAB_00020509;\n    }\n    goto LAB_0002044e;\n  }" { (expression_statement "cVar6 = *(char *)(local_50 + 0x68 + uVar5);" (assignment_expression "cVar6 = *(char *)(local_50 + 0x68 + uVar5)" identifier = (pointer_expression "*(char *)(local_50 + 0x68 + uVar5)" * (cast_expression "(char *)(local_50 + 0x68 + uVar5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_50 + 0x68 + uVar5)" ( (binary_expression "local_50 + 0x68 + uVar5" (binary_expression "local_50 + 0x68" identifier + number_literal) + identifier) ))))) ;) (if_statement "if (cVar6 == '\0') {\nLAB_00020509:\n      uVar5 = uVar5 + 1;\n      goto LAB_00020523;\n    }" if (parenthesized_expression "(cVar6 == '\0')" ( (binary_expression "cVar6 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\nLAB_00020509:\n      uVar5 = uVar5 + 1;\n      goto LAB_00020523;\n    }" { (labeled_statement "LAB_00020509:\n      uVar5 = uVar5 + 1;" statement_identifier : (expression_statement "uVar5 = uVar5 + 1;" (assignment_expression "uVar5 = uVar5 + 1" identifier = (binary_expression "uVar5 + 1" identifier + number_literal)) ;)) (goto_statement "goto LAB_00020523;" goto statement_identifier ;) })) (expression_statement "local_5c = uVar5;" (assignment_expression "local_5c = uVar5" identifier = identifier) ;) (while_statement "while( true ) {\n      if (local_38 < 9) {\n        augmentation[local_38] = cVar6;\n        local_38 = local_38 + 1;\n      }\n      uVar5 = uVar5 + 1;\n      if (local_58 == local_40 + -1 + (uint)(local_44 != 0) && local_5c == local_44 - 1) break;\n      bVar14 = 0xfffffffe < local_5c;\n      local_5c = local_5c + 1;\n      local_58 = local_58 + (uint)bVar14;\n      cVar6 = *(char *)(local_50 + 0x68 + uVar5);\n      if (cVar6 == '\0') goto LAB_00020509;\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      if (local_38 < 9) {\n        augmentation[local_38] = cVar6;\n        local_38 = local_38 + 1;\n      }\n      uVar5 = uVar5 + 1;\n      if (local_58 == local_40 + -1 + (uint)(local_44 != 0) && local_5c == local_44 - 1) break;\n      bVar14 = 0xfffffffe < local_5c;\n      local_5c = local_5c + 1;\n      local_58 = local_58 + (uint)bVar14;\n      cVar6 = *(char *)(local_50 + 0x68 + uVar5);\n      if (cVar6 == '\0') goto LAB_00020509;\n    }" { (if_statement "if (local_38 < 9) {\n        augmentation[local_38] = cVar6;\n        local_38 = local_38 + 1;\n      }" if (parenthesized_expression "(local_38 < 9)" ( (binary_expression "local_38 < 9" identifier < number_literal) )) (compound_statement "{\n        augmentation[local_38] = cVar6;\n        local_38 = local_38 + 1;\n      }" { (expression_statement "augmentation[local_38] = cVar6;" (assignment_expression "augmentation[local_38] = cVar6" (subscript_expression "augmentation[local_38]" identifier [ identifier ]) = identifier) ;) (expression_statement "local_38 = local_38 + 1;" (assignment_expression "local_38 = local_38 + 1" identifier = (binary_expression "local_38 + 1" identifier + number_literal)) ;) })) (expression_statement "uVar5 = uVar5 + 1;" (assignment_expression "uVar5 = uVar5 + 1" identifier = (binary_expression "uVar5 + 1" identifier + number_literal)) ;) (if_statement "if (local_58 == local_40 + -1 + (uint)(local_44 != 0) && local_5c == local_44 - 1) break;" if (parenthesized_expression "(local_58 == local_40 + -1 + (uint)(local_44 != 0) && local_5c == local_44 - 1)" ( (binary_expression "local_58 == local_40 + -1 + (uint)(local_44 != 0) && local_5c == local_44 - 1" (binary_expression "local_58 == local_40 + -1 + (uint)(local_44 != 0)" identifier == (binary_expression "local_40 + -1 + (uint)(local_44 != 0)" (binary_expression "local_40 + -1" identifier + number_literal) + (call_expression "(uint)(local_44 != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(local_44 != 0)" ( (binary_expression "local_44 != 0" identifier != number_literal) ))))) && (binary_expression "local_5c == local_44 - 1" identifier == (binary_expression "local_44 - 1" identifier - number_literal))) )) (break_statement "break;" break ;)) (expression_statement "bVar14 = 0xfffffffe < local_5c;" (assignment_expression "bVar14 = 0xfffffffe < local_5c" identifier = (binary_expression "0xfffffffe < local_5c" number_literal < identifier)) ;) (expression_statement "local_5c = local_5c + 1;" (assignment_expression "local_5c = local_5c + 1" identifier = (binary_expression "local_5c + 1" identifier + number_literal)) ;) (expression_statement "local_58 = local_58 + (uint)bVar14;" (assignment_expression "local_58 = local_58 + (uint)bVar14" identifier = (binary_expression "local_58 + (uint)bVar14" identifier + (cast_expression "(uint)bVar14" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) (expression_statement "cVar6 = *(char *)(local_50 + 0x68 + uVar5);" (assignment_expression "cVar6 = *(char *)(local_50 + 0x68 + uVar5)" identifier = (pointer_expression "*(char *)(local_50 + 0x68 + uVar5)" * (cast_expression "(char *)(local_50 + 0x68 + uVar5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_50 + 0x68 + uVar5)" ( (binary_expression "local_50 + 0x68 + uVar5" (binary_expression "local_50 + 0x68" identifier + number_literal) + identifier) ))))) ;) (if_statement "if (cVar6 == '\0') goto LAB_00020509;" if (parenthesized_expression "(cVar6 == '\0')" ( (binary_expression "cVar6 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_00020509;" goto statement_identifier ;)) })) (goto_statement "goto LAB_0002044e;" goto statement_identifier ;) })) (expression_statement "local_50 = *(int *)(local_50 + 0x30);" (assignment_expression "local_50 = *(int *)(local_50 + 0x30)" identifier = (pointer_expression "*(int *)(local_50 + 0x30)" * (cast_expression "(int *)(local_50 + 0x30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_50 + 0x30)" ( (binary_expression "local_50 + 0x30" identifier + number_literal) ))))) ;) (if_statement "if (local_50 == 0) goto LAB_00020226;" if (parenthesized_expression "(local_50 == 0)" ( (binary_expression "local_50 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00020226;" goto statement_identifier ;)) (expression_statement "local_40 = *(int *)(local_50 + 0x14);" (assignment_expression "local_40 = *(int *)(local_50 + 0x14)" identifier = (pointer_expression "*(int *)(local_50 + 0x14)" * (cast_expression "(int *)(local_50 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_50 + 0x14)" ( (binary_expression "local_50 + 0x14" identifier + number_literal) ))))) ;) (expression_statement "uVar5 = uVar5 - local_44;" (assignment_expression "uVar5 = uVar5 - local_44" identifier = (binary_expression "uVar5 - local_44" identifier - identifier)) ;) (expression_statement "local_44 = *(uint *)(local_50 + 0x10);" (assignment_expression "local_44 = *(uint *)(local_50 + 0x10)" identifier = (pointer_expression "*(uint *)(local_50 + 0x10)" * (cast_expression "(uint *)(local_50 + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_50 + 0x10)" ( (binary_expression "local_50 + 0x10" identifier + number_literal) ))))) ;) (goto_statement "goto LAB_0002044e;" goto statement_identifier ;) (while_statement "while( true ) {\n    local_50 = *(int *)(local_50 + 0x30);\n    uVar5 = uVar5 - *puVar1;\n    if (local_50 == 0) break;\nLAB_00020523:\n    puVar1 = (uint *)(local_50 + 0x10);\n    uVar9 = (uint)(uVar5 < *puVar1);\n    iVar13 = ((int)uVar5 >> 0x1f) - *(int *)(local_50 + 0x14);\n    if ((SBORROW4((int)uVar5 >> 0x1f,*(int *)(local_50 + 0x14)) != SBORROW4(iVar13,uVar9)) !=\n        (int)(iVar13 - uVar9) < 0) {\n      augmentation[local_38] = '\0';\n      if (augmentation[0] == '\0') goto LAB_000205bb;\n      iVar13 = strcmp(augmentation,"eh");\n      if (iVar13 == 0) goto LAB_00020575;\n      if (augmentation[0] == 'z') goto LAB_000205bb;\n      break;\n    }\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    local_50 = *(int *)(local_50 + 0x30);\n    uVar5 = uVar5 - *puVar1;\n    if (local_50 == 0) break;\nLAB_00020523:\n    puVar1 = (uint *)(local_50 + 0x10);\n    uVar9 = (uint)(uVar5 < *puVar1);\n    iVar13 = ((int)uVar5 >> 0x1f) - *(int *)(local_50 + 0x14);\n    if ((SBORROW4((int)uVar5 >> 0x1f,*(int *)(local_50 + 0x14)) != SBORROW4(iVar13,uVar9)) !=\n        (int)(iVar13 - uVar9) < 0) {\n      augmentation[local_38] = '\0';\n      if (augmentation[0] == '\0') goto LAB_000205bb;\n      iVar13 = strcmp(augmentation,"eh");\n      if (iVar13 == 0) goto LAB_00020575;\n      if (augmentation[0] == 'z') goto LAB_000205bb;\n      break;\n    }\n  }" { (expression_statement "local_50 = *(int *)(local_50 + 0x30);" (assignment_expression "local_50 = *(int *)(local_50 + 0x30)" identifier = (pointer_expression "*(int *)(local_50 + 0x30)" * (cast_expression "(int *)(local_50 + 0x30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_50 + 0x30)" ( (binary_expression "local_50 + 0x30" identifier + number_literal) ))))) ;) (expression_statement "uVar5 = uVar5 - *puVar1;" (assignment_expression "uVar5 = uVar5 - *puVar1" identifier = (binary_expression "uVar5 - *puVar1" identifier - (pointer_expression "*puVar1" * identifier))) ;) (if_statement "if (local_50 == 0) break;" if (parenthesized_expression "(local_50 == 0)" ( (binary_expression "local_50 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (labeled_statement "LAB_00020523:\n    puVar1 = (uint *)(local_50 + 0x10);" statement_identifier : (expression_statement "puVar1 = (uint *)(local_50 + 0x10);" (assignment_expression "puVar1 = (uint *)(local_50 + 0x10)" identifier = (cast_expression "(uint *)(local_50 + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_50 + 0x10)" ( (binary_expression "local_50 + 0x10" identifier + number_literal) )))) ;)) (expression_statement "uVar9 = (uint)(uVar5 < *puVar1);" (assignment_expression "uVar9 = (uint)(uVar5 < *puVar1)" identifier = (call_expression "(uint)(uVar5 < *puVar1)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar5 < *puVar1)" ( (binary_expression "uVar5 < *puVar1" identifier < (pointer_expression "*puVar1" * identifier)) )))) ;) (expression_statement "iVar13 = ((int)uVar5 >> 0x1f) - *(int *)(local_50 + 0x14);" (assignment_expression "iVar13 = ((int)uVar5 >> 0x1f) - *(int *)(local_50 + 0x14)" identifier = (binary_expression "((int)uVar5 >> 0x1f) - *(int *)(local_50 + 0x14)" (parenthesized_expression "((int)uVar5 >> 0x1f)" ( (binary_expression "(int)uVar5 >> 0x1f" (cast_expression "(int)uVar5" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) )) - (pointer_expression "*(int *)(local_50 + 0x14)" * (cast_expression "(int *)(local_50 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_50 + 0x14)" ( (binary_expression "local_50 + 0x14" identifier + number_literal) )))))) ;) (if_statement "if ((SBORROW4((int)uVar5 >> 0x1f,*(int *)(local_50 + 0x14)) != SBORROW4(iVar13,uVar9)) !=\n        (int)(iVar13 - uVar9) < 0) {\n      augmentation[local_38] = '\0';\n      if (augmentation[0] == '\0') goto LAB_000205bb;\n      iVar13 = strcmp(augmentation,"eh");\n      if (iVar13 == 0) goto LAB_00020575;\n      if (augmentation[0] == 'z') goto LAB_000205bb;\n      break;\n    }" if (parenthesized_expression "((SBORROW4((int)uVar5 >> 0x1f,*(int *)(local_50 + 0x14)) != SBORROW4(iVar13,uVar9)) !=\n        (int)(iVar13 - uVar9) < 0)" ( (binary_expression "(SBORROW4((int)uVar5 >> 0x1f,*(int *)(local_50 + 0x14)) != SBORROW4(iVar13,uVar9)) !=\n        (int)(iVar13 - uVar9) < 0" (parenthesized_expression "(SBORROW4((int)uVar5 >> 0x1f,*(int *)(local_50 + 0x14)) != SBORROW4(iVar13,uVar9))" ( (binary_expression "SBORROW4((int)uVar5 >> 0x1f,*(int *)(local_50 + 0x14)) != SBORROW4(iVar13,uVar9)" (call_expression "SBORROW4((int)uVar5 >> 0x1f,*(int *)(local_50 + 0x14))" identifier (argument_list "((int)uVar5 >> 0x1f,*(int *)(local_50 + 0x14))" ( (binary_expression "(int)uVar5 >> 0x1f" (cast_expression "(int)uVar5" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) , (pointer_expression "*(int *)(local_50 + 0x14)" * (cast_expression "(int *)(local_50 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_50 + 0x14)" ( (binary_expression "local_50 + 0x14" identifier + number_literal) )))) ))) != (call_expression "SBORROW4(iVar13,uVar9)" identifier (argument_list "(iVar13,uVar9)" ( identifier , identifier )))) )) != (binary_expression "(int)(iVar13 - uVar9) < 0" (cast_expression "(int)(iVar13 - uVar9)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(iVar13 - uVar9)" ( (binary_expression "iVar13 - uVar9" identifier - identifier) ))) < number_literal)) )) (compound_statement "{\n      augmentation[local_38] = '\0';\n      if (augmentation[0] == '\0') goto LAB_000205bb;\n      iVar13 = strcmp(augmentation,"eh");\n      if (iVar13 == 0) goto LAB_00020575;\n      if (augmentation[0] == 'z') goto LAB_000205bb;\n      break;\n    }" { (expression_statement "augmentation[local_38] = '\0';" (assignment_expression "augmentation[local_38] = '\0'" (subscript_expression "augmentation[local_38]" identifier [ identifier ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (if_statement "if (augmentation[0] == '\0') goto LAB_000205bb;" if (parenthesized_expression "(augmentation[0] == '\0')" ( (binary_expression "augmentation[0] == '\0'" (subscript_expression "augmentation[0]" identifier [ number_literal ]) == (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_000205bb;" goto statement_identifier ;)) (expression_statement "iVar13 = strcmp(augmentation,"eh");" (assignment_expression "iVar13 = strcmp(augmentation,"eh")" identifier = (call_expression "strcmp(augmentation,"eh")" identifier (argument_list "(augmentation,"eh")" ( identifier , (string_literal ""eh"" " string_content ") )))) ;) (if_statement "if (iVar13 == 0) goto LAB_00020575;" if (parenthesized_expression "(iVar13 == 0)" ( (binary_expression "iVar13 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00020575;" goto statement_identifier ;)) (if_statement "if (augmentation[0] == 'z') goto LAB_000205bb;" if (parenthesized_expression "(augmentation[0] == 'z')" ( (binary_expression "augmentation[0] == 'z'" (subscript_expression "augmentation[0]" identifier [ number_literal ]) == (char_literal "'z'" ' character ')) )) (goto_statement "goto LAB_000205bb;" goto statement_identifier ;)) (break_statement "break;" break ;) })) })) (goto_statement "goto LAB_00020226;" goto statement_identifier ;) (labeled_statement "LAB_00020575:\n  if (iVar4 == 0) goto LAB_00020600;" statement_identifier : (if_statement "if (iVar4 == 0) goto LAB_00020600;" if (parenthesized_expression "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00020600;" goto statement_identifier ;))) (if_statement "if ((*(int *)(iVar4 + 4) == local_50) && (*(uint *)(iVar4 + 8) == uVar5)) {\n    uVar5 = uVar5 + *(byte *)(iVar4 + 2);\n    goto LAB_000205a6;\n  }" if (parenthesized_expression "((*(int *)(iVar4 + 4) == local_50) && (*(uint *)(iVar4 + 8) == uVar5))" ( (binary_expression "(*(int *)(iVar4 + 4) == local_50) && (*(uint *)(iVar4 + 8) == uVar5)" (parenthesized_expression "(*(int *)(iVar4 + 4) == local_50)" ( (binary_expression "*(int *)(iVar4 + 4) == local_50" (pointer_expression "*(int *)(iVar4 + 4)" * (cast_expression "(int *)(iVar4 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 4)" ( (binary_expression "iVar4 + 4" identifier + number_literal) )))) == identifier) )) && (parenthesized_expression "(*(uint *)(iVar4 + 8) == uVar5)" ( (binary_expression "*(uint *)(iVar4 + 8) == uVar5" (pointer_expression "*(uint *)(iVar4 + 8)" * (cast_expression "(uint *)(iVar4 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 8)" ( (binary_expression "iVar4 + 8" identifier + number_literal) )))) == identifier) ))) )) (compound_statement "{\n    uVar5 = uVar5 + *(byte *)(iVar4 + 2);\n    goto LAB_000205a6;\n  }" { (expression_statement "uVar5 = uVar5 + *(byte *)(iVar4 + 2);" (assignment_expression "uVar5 = uVar5 + *(byte *)(iVar4 + 2)" identifier = (binary_expression "uVar5 + *(byte *)(iVar4 + 2)" identifier + (pointer_expression "*(byte *)(iVar4 + 2)" * (cast_expression "(byte *)(iVar4 + 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 2)" ( (binary_expression "iVar4 + 2" identifier + number_literal) )))))) ;) (goto_statement "goto LAB_000205a6;" goto statement_identifier ;) })) (expression_statement "iVar4 = *(int *)(iVar4 + 0x28);" (assignment_expression "iVar4 = *(int *)(iVar4 + 0x28)" identifier = (pointer_expression "*(int *)(iVar4 + 0x28)" * (cast_expression "(int *)(iVar4 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x28)" ( (binary_expression "iVar4 + 0x28" identifier + number_literal) ))))) ;) (goto_statement "goto LAB_00020575;" goto statement_identifier ;) (labeled_statement "LAB_000205bb:\n  cVar6 = *(char *)(local_50 + 0x68 + uVar5);" statement_identifier : (expression_statement "cVar6 = *(char *)(local_50 + 0x68 + uVar5);" (assignment_expression "cVar6 = *(char *)(local_50 + 0x68 + uVar5)" identifier = (pointer_expression "*(char *)(local_50 + 0x68 + uVar5)" * (cast_expression "(char *)(local_50 + 0x68 + uVar5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_50 + 0x68 + uVar5)" ( (binary_expression "local_50 + 0x68 + uVar5" (binary_expression "local_50 + 0x68" identifier + number_literal) + identifier) ))))) ;)) (expression_statement "local_3c = 0;" (assignment_expression "local_3c = 0" identifier = number_literal) ;) (if_statement "if (-1 < cVar6) {\n    local_3c = (int)cVar6;\n  }" if (parenthesized_expression "(-1 < cVar6)" ( (binary_expression "-1 < cVar6" number_literal < identifier) )) (compound_statement "{\n    local_3c = (int)cVar6;\n  }" { (expression_statement "local_3c = (int)cVar6;" (assignment_expression "local_3c = (int)cVar6" identifier = (cast_expression "(int)cVar6" ( (type_descriptor "int" primitive_type) ) identifier)) ;) })) (expression_statement "pfVar7->cie_info_ok = 1;" (assignment_expression "pfVar7->cie_info_ok = 1" (field_expression "pfVar7->cie_info_ok" identifier -> field_identifier) = number_literal) ;) (expression_statement "(pfVar7->cie_info).code_alignment = local_3c;" (assignment_expression "(pfVar7->cie_info).code_alignment = local_3c" (field_expression "(pfVar7->cie_info).code_alignment" (parenthesized_expression "(pfVar7->cie_info)" ( (field_expression "pfVar7->cie_info" identifier -> field_identifier) )) . field_identifier) = identifier) ;) (expression_statement "(pfVar7->cie_info).z_augmentation = (uint)(augmentation[0] == 'z');" (assignment_expression "(pfVar7->cie_info).z_augmentation = (uint)(augmentation[0] == 'z')" (field_expression "(pfVar7->cie_info).z_augmentation" (parenthesized_expression "(pfVar7->cie_info)" ( (field_expression "pfVar7->cie_info" identifier -> field_identifier) )) . field_identifier) = (call_expression "(uint)(augmentation[0] == 'z')" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(augmentation[0] == 'z')" ( (binary_expression "augmentation[0] == 'z'" (subscript_expression "augmentation[0]" identifier [ number_literal ]) == (char_literal "'z'" ' character ')) )))) ;) (labeled_statement "LAB_0001ffd7:\n  if ((pfVar7->cie_info).z_augmentation != 0) {\n    pfVar7->state = state_seeing_aug_size;\n    pfVar7->aug_size = 0;\n    pfVar7->aug_shift = 0;\n    return 0;\n  }" statement_identifier : (if_statement "if ((pfVar7->cie_info).z_augmentation != 0) {\n    pfVar7->state = state_seeing_aug_size;\n    pfVar7->aug_size = 0;\n    pfVar7->aug_shift = 0;\n    return 0;\n  }" if (parenthesized_expression "((pfVar7->cie_info).z_augmentation != 0)" ( (binary_expression "(pfVar7->cie_info).z_augmentation != 0" (field_expression "(pfVar7->cie_info).z_augmentation" (parenthesized_expression "(pfVar7->cie_info)" ( (field_expression "pfVar7->cie_info" identifier -> field_identifier) )) . field_identifier) != number_literal) )) (compound_statement "{\n    pfVar7->state = state_seeing_aug_size;\n    pfVar7->aug_size = 0;\n    pfVar7->aug_shift = 0;\n    return 0;\n  }" { (expression_statement "pfVar7->state = state_seeing_aug_size;" (assignment_expression "pfVar7->state = state_seeing_aug_size" (field_expression "pfVar7->state" identifier -> field_identifier) = identifier) ;) (expression_statement "pfVar7->aug_size = 0;" (assignment_expression "pfVar7->aug_size = 0" (field_expression "pfVar7->aug_size" identifier -> field_identifier) = number_literal) ;) (expression_statement "pfVar7->aug_shift = 0;" (assignment_expression "pfVar7->aug_shift = 0" (field_expression "pfVar7->aug_shift" identifier -> field_identifier) = number_literal) ;) (return_statement "return 0;" return number_literal ;) }))) (labeled_statement "LAB_00020108:\n  pfVar7->state = state_wait_loc4;" statement_identifier : (expression_statement "pfVar7->state = state_wait_loc4;" (assignment_expression "pfVar7->state = state_wait_loc4" (field_expression "pfVar7->state" identifier -> field_identifier) = identifier) ;)) (return_statement "return 0;" return number_literal ;) (labeled_statement "LAB_00020600:\n  uVar5 = uVar5 + 4;" statement_identifier : (expression_statement "uVar5 = uVar5 + 4;" (assignment_expression "uVar5 = uVar5 + 4" identifier = (binary_expression "uVar5 + 4" identifier + number_literal)) ;)) (labeled_statement "LAB_000205a6:\n  do {\n    puVar1 = (uint *)(local_50 + 0x10);\n    uVar9 = (uint)(uVar5 < *puVar1);\n    iVar4 = ((int)uVar5 >> 0x1f) - *(int *)(local_50 + 0x14);\n    if ((SBORROW4((int)uVar5 >> 0x1f,*(int *)(local_50 + 0x14)) != SBORROW4(iVar4,uVar9)) !=\n        (int)(iVar4 - uVar9) < 0) goto LAB_000205bb;\n    local_50 = *(int *)(local_50 + 0x30);\n    uVar5 = uVar5 - *puVar1;\n  } while (local_50 != 0);" statement_identifier : (do_statement "do {\n    puVar1 = (uint *)(local_50 + 0x10);\n    uVar9 = (uint)(uVar5 < *puVar1);\n    iVar4 = ((int)uVar5 >> 0x1f) - *(int *)(local_50 + 0x14);\n    if ((SBORROW4((int)uVar5 >> 0x1f,*(int *)(local_50 + 0x14)) != SBORROW4(iVar4,uVar9)) !=\n        (int)(iVar4 - uVar9) < 0) goto LAB_000205bb;\n    local_50 = *(int *)(local_50 + 0x30);\n    uVar5 = uVar5 - *puVar1;\n  } while (local_50 != 0);" do (compound_statement "{\n    puVar1 = (uint *)(local_50 + 0x10);\n    uVar9 = (uint)(uVar5 < *puVar1);\n    iVar4 = ((int)uVar5 >> 0x1f) - *(int *)(local_50 + 0x14);\n    if ((SBORROW4((int)uVar5 >> 0x1f,*(int *)(local_50 + 0x14)) != SBORROW4(iVar4,uVar9)) !=\n        (int)(iVar4 - uVar9) < 0) goto LAB_000205bb;\n    local_50 = *(int *)(local_50 + 0x30);\n    uVar5 = uVar5 - *puVar1;\n  }" { (expression_statement "puVar1 = (uint *)(local_50 + 0x10);" (assignment_expression "puVar1 = (uint *)(local_50 + 0x10)" identifier = (cast_expression "(uint *)(local_50 + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_50 + 0x10)" ( (binary_expression "local_50 + 0x10" identifier + number_literal) )))) ;) (expression_statement "uVar9 = (uint)(uVar5 < *puVar1);" (assignment_expression "uVar9 = (uint)(uVar5 < *puVar1)" identifier = (call_expression "(uint)(uVar5 < *puVar1)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar5 < *puVar1)" ( (binary_expression "uVar5 < *puVar1" identifier < (pointer_expression "*puVar1" * identifier)) )))) ;) (expression_statement "iVar4 = ((int)uVar5 >> 0x1f) - *(int *)(local_50 + 0x14);" (assignment_expression "iVar4 = ((int)uVar5 >> 0x1f) - *(int *)(local_50 + 0x14)" identifier = (binary_expression "((int)uVar5 >> 0x1f) - *(int *)(local_50 + 0x14)" (parenthesized_expression "((int)uVar5 >> 0x1f)" ( (binary_expression "(int)uVar5 >> 0x1f" (cast_expression "(int)uVar5" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) )) - (pointer_expression "*(int *)(local_50 + 0x14)" * (cast_expression "(int *)(local_50 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_50 + 0x14)" ( (binary_expression "local_50 + 0x14" identifier + number_literal) )))))) ;) (if_statement "if ((SBORROW4((int)uVar5 >> 0x1f,*(int *)(local_50 + 0x14)) != SBORROW4(iVar4,uVar9)) !=\n        (int)(iVar4 - uVar9) < 0) goto LAB_000205bb;" if (parenthesized_expression "((SBORROW4((int)uVar5 >> 0x1f,*(int *)(local_50 + 0x14)) != SBORROW4(iVar4,uVar9)) !=\n        (int)(iVar4 - uVar9) < 0)" ( (binary_expression "(SBORROW4((int)uVar5 >> 0x1f,*(int *)(local_50 + 0x14)) != SBORROW4(iVar4,uVar9)) !=\n        (int)(iVar4 - uVar9) < 0" (parenthesized_expression "(SBORROW4((int)uVar5 >> 0x1f,*(int *)(local_50 + 0x14)) != SBORROW4(iVar4,uVar9))" ( (binary_expression "SBORROW4((int)uVar5 >> 0x1f,*(int *)(local_50 + 0x14)) != SBORROW4(iVar4,uVar9)" (call_expression "SBORROW4((int)uVar5 >> 0x1f,*(int *)(local_50 + 0x14))" identifier (argument_list "((int)uVar5 >> 0x1f,*(int *)(local_50 + 0x14))" ( (binary_expression "(int)uVar5 >> 0x1f" (cast_expression "(int)uVar5" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) , (pointer_expression "*(int *)(local_50 + 0x14)" * (cast_expression "(int *)(local_50 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_50 + 0x14)" ( (binary_expression "local_50 + 0x14" identifier + number_literal) )))) ))) != (call_expression "SBORROW4(iVar4,uVar9)" identifier (argument_list "(iVar4,uVar9)" ( identifier , identifier )))) )) != (binary_expression "(int)(iVar4 - uVar9) < 0" (cast_expression "(int)(iVar4 - uVar9)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(iVar4 - uVar9)" ( (binary_expression "iVar4 - uVar9" identifier - identifier) ))) < number_literal)) )) (goto_statement "goto LAB_000205bb;" goto statement_identifier ;)) (expression_statement "local_50 = *(int *)(local_50 + 0x30);" (assignment_expression "local_50 = *(int *)(local_50 + 0x30)" identifier = (pointer_expression "*(int *)(local_50 + 0x30)" * (cast_expression "(int *)(local_50 + 0x30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_50 + 0x30)" ( (binary_expression "local_50 + 0x30" identifier + number_literal) ))))) ;) (expression_statement "uVar5 = uVar5 - *puVar1;" (assignment_expression "uVar5 = uVar5 - *puVar1" identifier = (binary_expression "uVar5 - *puVar1" identifier - (pointer_expression "*puVar1" * identifier))) ;) }) while (parenthesized_expression "(local_50 != 0)" ( (binary_expression "local_50 != 0" identifier != number_literal) )) ;)) (labeled_statement "LAB_00020226:\n  pfVar7->cie_info_ok = 0;" statement_identifier : (expression_statement "pfVar7->cie_info_ok = 0;" (assignment_expression "pfVar7->cie_info_ok = 0" (field_expression "pfVar7->cie_info_ok" identifier -> field_identifier) = number_literal) ;)) (labeled_statement "LAB_0002022d:\n  pfVar7->state = state_error;" statement_identifier : (expression_statement "pfVar7->state = state_error;" (assignment_expression "pfVar7->state = state_error" (field_expression "pfVar7->state" identifier -> field_identifier) = identifier) ;)) (return_statement "return 0;" return number_literal ;) })))
(translation_unit "undefined4 FUN_0001fe30(int *param_1,int *param_2)\n\n{\n  uint *puVar1;\n  undefined4 uVar2;\n  int iVar3;\n  int iVar4;\n  char cVar5;\n  int *piVar6;\n  byte *pbVar7;\n  uint uVar8;\n  byte *pbVar9;\n  byte *pbVar10;\n  uint uVar11;\n  int iVar12;\n  bool bVar13;\n  bool bVar14;\n  bool bVar15;\n  byte bVar16;\n  uint local_5c;\n  int iStack_58;\n  uint local_54;\n  int iStack_50;\n  uint uStack_44;\n  int iStack_40;\n  int iStack_3c;\n  int iStack_38;\n  char acStack_26 [18];\n  undefined4 uStack_14;\n  \n  bVar16 = 0;\n  uStack_14 = 0x1fe39;\n  bVar13 = false;\n  bVar15 = DAT_000897dc == 0;\n  if (!bVar15) {\n    return 0;\n  }\n  iVar4 = 9;\n  pbVar9 = (byte *)*DAT_0008973c;\n  pbVar7 = pbVar9;\n  pbVar10 = (byte *)".eh_frame";\n  do {\n    if (iVar4 == 0) break;\n    iVar4 = iVar4 + -1;\n    bVar13 = *pbVar7 < *pbVar10;\n    bVar15 = *pbVar7 == *pbVar10;\n    pbVar7 = pbVar7 + 1;\n    pbVar10 = pbVar10 + 1;\n  } while (bVar15);\n  bVar14 = false;\n  bVar13 = (!bVar13 && !bVar15) == bVar13;\n  if (bVar13) {\n    bVar14 = pbVar9[9] < 0x5f;\n    bVar13 = pbVar9[9] == 0x5f;\n    piVar6 = &DAT_000889e0;\n    if (bVar13) goto LAB_0001fe74;\n    if (DAT_000889e0 == 0) goto LAB_0001fe99;\n  }\n  else {\nLAB_0001fe74:\n    iVar4 = 0xc;\n    pbVar7 = (byte *)".debug_frame";\n    do {\n      if (iVar4 == 0) break;\n      iVar4 = iVar4 + -1;\n      bVar14 = *pbVar9 < *pbVar7;\n      bVar13 = *pbVar9 == *pbVar7;\n      pbVar9 = pbVar9 + 1;\n      pbVar7 = pbVar7 + 1;\n    } while (bVar13);\n    if ((!bVar14 && !bVar13) != bVar14) {\n      return 0;\n    }\n    piVar6 = &DAT_000889a0;\n    if (DAT_000889a0 == 0) goto LAB_0001fe99;\n  }\n  iVar4 = FUN_000386c0(piVar6[4]);\n  if (iVar4 != 0) {\n    *piVar6 = 0;\nLAB_0001fe99:\n    if ((*param_2 == 4) &&\n       ((((char)param_1[4] == '\x03' || ((char)param_1[4] == '\x14')) &&\n        (iVar4 = FUN_000386c0(*param_1), iVar4 == 0)))) {\n      *piVar6 = 1;\n      piVar6[4] = *param_1;\n      return 0;\n    }\n    return 0;\n  }\n  switch(*piVar6) {\n  case 0:\n    goto LAB_0001fe99;\n  case 1:\n  case 2:\n    *piVar6 = *piVar6 + 1;\n    return 0;\n  case 3:\n    break;\n  case 4:\n    if (*param_2 == -1) {\n      if ((char)param_1[4] != '\x02') goto code_r0x0001ffb8;\n      local_54 = param_1[2];\n      *piVar6 = 5;\n      piVar6[7] = local_54;\n    }\n    else {\n      if ((*param_2 != 1) || ((char)param_1[4] != '\x02')) {\ncode_r0x0001ffb8:\n        *piVar6 = 8;\n        return 0;\n      }\n      uVar8 = param_1[2];\n      local_54 = (uVar8 & 0x7f) << ((byte)piVar6[8] & 0x1f) | piVar6[7];\n      piVar6[7] = local_54;\n      piVar6[8] = piVar6[8] + 7;\n      if ((char)uVar8 < '\0') {\n        return 0;\n      }\n      *piVar6 = 5;\n    }\n    if (local_54 != 0) {\n      return 0;\n    }\n    *piVar6 = 6;\n    return 0;\n  case 5:\n    if (*param_2 < 0) {\ncode_r0x0001ff8e:\n      *piVar6 = 8;\n      return 0;\n    }\n    iVar4 = piVar6[7] - *param_2;\n    piVar6[7] = iVar4;\n    if (iVar4 != 0) {\n      if (-1 < iVar4) {\n        return 0;\n      }\n      goto code_r0x0001ff8e;\n    }\n    goto code_r0x00020108;\n  case 6:\n    if (*param_2 != 1) {\n      return 0;\n    }\n    if ((char)param_1[4] != '\x02') {\n      return 0;\n    }\n    if (param_1[2] != 4 || param_1[3] != 0) {\n      return 0;\n    }\n    FUN_000249b0(1);\n    *piVar6 = 7;\n    piVar6[5] = DAT_000898a0;\n    iVar4 = FUN_00024dc0();\n    piVar6[6] = iVar4;\n    return 0;\n  case 7:\n    *piVar6 = 6;\n    if (*param_2 != 4) {\n      return 0;\n    }\n    cVar5 = (char)param_1[4];\n    if (cVar5 == '\x02') {\n      uVar8 = param_1[2];\n      iVar4 = param_1[3];\n      if ((int)(uint)(0x3f < uVar8) <= -iVar4) {\n        *(byte *)(piVar6[5] + 0x68 + piVar6[6]) = (byte)uVar8 | 0x40;\n        return 1;\n      }\n      if (-iVar4 < (int)(uint)(0xff < uVar8)) {\n        if (-iVar4 < (int)(uint)(0xffff < uVar8)) {\n          return 0;\n        }\n        *(undefined1 *)(piVar6[5] + 0x68 + piVar6[6]) = 3;\n        *param_2 = 2;\n        return 0;\n      }\n      *(undefined1 *)(piVar6[5] + 0x68 + piVar6[6]) = 2;\n      *param_2 = 1;\n      return 0;\n    }\n    if (cVar5 == '\x14') {\n      if (piVar6[2] != 1) {\n        return 0;\n      }\n      iVar4 = piVar6[5];\n      iVar12 = piVar6[6];\n      uVar2 = FUN_00021220(param_1);\n      iVar3 = 8;\n    }\n    else {\n      if ((cVar5 != '\v') && (cVar5 != '\x0e')) {\n        return 0;\n      }\n      if ((uint)piVar6[2] < 2) {\n        return 0;\n      }\n      iVar3 = *param_1;\n      if (*(int *)(iVar3 + 4) == 0) {\n        return 0;\n      }\n      iVar4 = param_1[1];\n      if (*(int *)(iVar4 + 4) == 0) {\n        return 0;\n      }\n      if (*(char *)(iVar3 + 0x18) != '\x14') {\n        return 0;\n      }\n      if (*(char *)(iVar4 + 0x18) != '\x02') {\n        return 0;\n      }\n      iVar12 = *(int *)(iVar4 + 0x14);\n      uVar8 = *(uint *)(iVar4 + 0x10);\n      if (cVar5 != '\v') {\n        uVar11 = uVar8 >> 5 & 1;\n        iVar12 = uVar11 << ((byte)uVar8 & 0x1f);\n        uVar8 = (uVar11 ^ 1) << ((byte)uVar8 & 0x1f);\n      }\n      if (iVar12 != 0) {\n        return 0;\n      }\n      if (piVar6[2] != uVar8) {\n        return 0;\n      }\n      iVar4 = piVar6[5];\n      iVar12 = piVar6[6];\n      uVar2 = FUN_00021220(iVar3 + 8);\n      iVar3 = piVar6[2] << 3;\n    }\n    FUN_00024b60(0xc,4,0,iVar3,uVar2,iVar12,iVar12 >> 0x1f,iVar4);\n    return 1;\n  default:\n    return 0;\n  }\n  if (piVar6[1] != 0) goto code_r0x0001ffd7;\n  iStack_50 = **(int **)DAT_0008973c[0x20];\n  if (iStack_50 != 0) {\n    uVar8 = *(uint *)(iStack_50 + 0x10);\n    iVar4 = *(int *)(iStack_50 + 0x14);\n    if (-iVar4 < (int)(uint)(4 < uVar8)) {\n      local_5c = 4;\n      iVar12 = 0;\n    }\n    else {\n      local_5c = 4;\n      do {\n        iStack_50 = *(int *)(iStack_50 + 0x30);\n        local_5c = local_5c - uVar8;\n        if (iStack_50 == 0) goto code_r0x00020226;\n        uVar8 = *(uint *)(iStack_50 + 0x10);\n        iVar4 = *(int *)(iStack_50 + 0x14);\n        iVar12 = (int)local_5c >> 0x1f;\n      } while ((SBORROW4(iVar12,iVar4) != SBORROW4(iVar12 - iVar4,(uint)(local_5c < uVar8))) ==\n               (int)((iVar12 - iVar4) - (uint)(local_5c < uVar8)) < 0);\n    }\n    iVar4 = (iVar4 - iVar12) - (uint)(uVar8 < local_5c);\n    uVar8 = (uint)(3 < uVar8 - local_5c);\n    bVar13 = iVar4 != 0 || (uint)-iVar4 < uVar8;\n    bVar15 = -uVar8 == iVar4;\n    if (-iVar4 < (int)uVar8) {\n      iVar4 = 0xc;\n      pbVar9 = (byte *)*DAT_0008973c;\n      pbVar7 = (byte *)".debug_frame";\n      do {\n        if (iVar4 == 0) break;\n        iVar4 = iVar4 + -1;\n        bVar13 = *pbVar9 < *pbVar7;\n        bVar15 = *pbVar9 == *pbVar7;\n        pbVar9 = pbVar9 + (uint)bVar16 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar16 * -2 + 1;\n      } while (bVar15);\n      cVar5 = -((!bVar13 && !bVar15) == bVar13);\n      if ((((*(char *)(iStack_50 + 0x68 + local_5c) == cVar5) &&\n           (*(char *)(iStack_50 + 0x69 + local_5c) == cVar5)) &&\n          (*(char *)(iStack_50 + 0x6a + local_5c) == cVar5)) &&\n         (*(char *)(iStack_50 + 0x6b + local_5c) == cVar5)) {\n        local_5c = local_5c + 4;\n        do {\n          iVar4 = (int)local_5c >> 0x1f;\n          iStack_40 = *(int *)(iStack_50 + 0x14);\n          uStack_44 = *(uint *)(iStack_50 + 0x10);\n          if ((SBORROW4(iVar4,iStack_40) != SBORROW4(iVar4 - iStack_40,(uint)(local_5c < uStack_44))\n              ) != (int)((iVar4 - iStack_40) - (uint)(local_5c < uStack_44)) < 0) {\n            if (((int)(uint)(uStack_44 != local_5c) <=\n                 (int)-((iStack_40 - iVar4) - (uint)(uStack_44 < local_5c))) ||\n               (*(char *)(iStack_50 + 0x68 + local_5c) != '\x01')) goto code_r0x00020226;\n            uVar8 = local_5c + 1;\n            iStack_38 = 0;\n            iVar4 = (*(int **)DAT_0008973c[0x20])[4];\n            goto code_r0x0002044e;\n          }\n          local_5c = local_5c - uStack_44;\n          iStack_50 = *(int *)(iStack_50 + 0x30);\n        } while (iStack_50 != 0);\n        piVar6[1] = 0;\n        goto code_r0x0002022d;\n      }\n    }\n  }\n  goto code_r0x00020226;\ncode_r0x0002044e:\n  iStack_58 = (int)uVar8 >> 0x1f;\n  if ((SBORROW4(iStack_58,iStack_40) != SBORROW4(iStack_58 - iStack_40,(uint)(uVar8 < uStack_44)))\n      != (int)((iStack_58 - iStack_40) - (uint)(uVar8 < uStack_44)) < 0) {\n    cVar5 = *(char *)(iStack_50 + 0x68 + uVar8);\n    if (cVar5 == '\0') {\ncode_r0x00020509:\n      uVar8 = uVar8 + 1;\n      goto code_r0x00020523;\n    }\n    local_5c = uVar8;\n    while( true ) {\n      if (iStack_38 < 9) {\n        acStack_26[iStack_38] = cVar5;\n        iStack_38 = iStack_38 + 1;\n      }\n      uVar8 = uVar8 + 1;\n      if (iStack_58 == iStack_40 + -1 + (uint)(uStack_44 != 0) && local_5c == uStack_44 - 1) break;\n      bVar13 = 0xfffffffe < local_5c;\n      local_5c = local_5c + 1;\n      iStack_58 = iStack_58 + (uint)bVar13;\n      cVar5 = *(char *)(iStack_50 + 0x68 + uVar8);\n      if (cVar5 == '\0') goto code_r0x00020509;\n    }\n    goto code_r0x0002044e;\n  }\n  iStack_50 = *(int *)(iStack_50 + 0x30);\n  if (iStack_50 == 0) goto code_r0x00020226;\n  iStack_40 = *(int *)(iStack_50 + 0x14);\n  uVar8 = uVar8 - uStack_44;\n  uStack_44 = *(uint *)(iStack_50 + 0x10);\n  goto code_r0x0002044e;\n  while( true ) {\n    iStack_50 = *(int *)(iStack_50 + 0x30);\n    uVar8 = uVar8 - *puVar1;\n    if (iStack_50 == 0) break;\ncode_r0x00020523:\n    puVar1 = (uint *)(iStack_50 + 0x10);\n    uVar11 = (uint)(uVar8 < *puVar1);\n    iVar12 = ((int)uVar8 >> 0x1f) - *(int *)(iStack_50 + 0x14);\n    if ((SBORROW4((int)uVar8 >> 0x1f,*(int *)(iStack_50 + 0x14)) != SBORROW4(iVar12,uVar11)) !=\n        (int)(iVar12 - uVar11) < 0) {\n      acStack_26[iStack_38] = '\0';\n      if (acStack_26[0] == '\0') goto code_r0x000205bb;\n      iVar12 = strcmp(acStack_26,"eh");\n      if (iVar12 == 0) goto code_r0x00020575;\n      if (acStack_26[0] == 'z') goto code_r0x000205bb;\n      break;\n    }\n  }\n  goto code_r0x00020226;\ncode_r0x00020575:\n  if (iVar4 == 0) goto code_r0x00020600;\n  if ((*(int *)(iVar4 + 4) == iStack_50) && (*(uint *)(iVar4 + 8) == uVar8)) {\n    uVar8 = uVar8 + *(byte *)(iVar4 + 2);\n    goto code_r0x000205a6;\n  }\n  iVar4 = *(int *)(iVar4 + 0x28);\n  goto code_r0x00020575;\ncode_r0x000205bb:\n  cVar5 = *(char *)(iStack_50 + 0x68 + uVar8);\n  iStack_3c = 0;\n  if (-1 < cVar5) {\n    iStack_3c = (int)cVar5;\n  }\n  piVar6[1] = 1;\n  piVar6[2] = iStack_3c;\n  piVar6[3] = (uint)(acStack_26[0] == 'z');\ncode_r0x0001ffd7:\n  if (piVar6[3] != 0) {\n    *piVar6 = 4;\n    piVar6[7] = 0;\n    piVar6[8] = 0;\n    return 0;\n  }\ncode_r0x00020108:\n  *piVar6 = 6;\n  return 0;\ncode_r0x00020600:\n  uVar8 = uVar8 + 4;\ncode_r0x000205a6:\n  do {\n    puVar1 = (uint *)(iStack_50 + 0x10);\n    uVar11 = (uint)(uVar8 < *puVar1);\n    iVar4 = ((int)uVar8 >> 0x1f) - *(int *)(iStack_50 + 0x14);\n    if ((SBORROW4((int)uVar8 >> 0x1f,*(int *)(iStack_50 + 0x14)) != SBORROW4(iVar4,uVar11)) !=\n        (int)(iVar4 - uVar11) < 0) goto code_r0x000205bb;\n    iStack_50 = *(int *)(iStack_50 + 0x30);\n    uVar8 = uVar8 - *puVar1;\n  } while (iStack_50 != 0);\ncode_r0x00020226:\n  piVar6[1] = 0;\ncode_r0x0002022d:\n  *piVar6 = 8;\n  return 0;\n}\n\n" (function_definition "undefined4 FUN_0001fe30(int *param_1,int *param_2)\n\n{\n  uint *puVar1;\n  undefined4 uVar2;\n  int iVar3;\n  int iVar4;\n  char cVar5;\n  int *piVar6;\n  byte *pbVar7;\n  uint uVar8;\n  byte *pbVar9;\n  byte *pbVar10;\n  uint uVar11;\n  int iVar12;\n  bool bVar13;\n  bool bVar14;\n  bool bVar15;\n  byte bVar16;\n  uint local_5c;\n  int iStack_58;\n  uint local_54;\n  int iStack_50;\n  uint uStack_44;\n  int iStack_40;\n  int iStack_3c;\n  int iStack_38;\n  char acStack_26 [18];\n  undefined4 uStack_14;\n  \n  bVar16 = 0;\n  uStack_14 = 0x1fe39;\n  bVar13 = false;\n  bVar15 = DAT_000897dc == 0;\n  if (!bVar15) {\n    return 0;\n  }\n  iVar4 = 9;\n  pbVar9 = (byte *)*DAT_0008973c;\n  pbVar7 = pbVar9;\n  pbVar10 = (byte *)".eh_frame";\n  do {\n    if (iVar4 == 0) break;\n    iVar4 = iVar4 + -1;\n    bVar13 = *pbVar7 < *pbVar10;\n    bVar15 = *pbVar7 == *pbVar10;\n    pbVar7 = pbVar7 + 1;\n    pbVar10 = pbVar10 + 1;\n  } while (bVar15);\n  bVar14 = false;\n  bVar13 = (!bVar13 && !bVar15) == bVar13;\n  if (bVar13) {\n    bVar14 = pbVar9[9] < 0x5f;\n    bVar13 = pbVar9[9] == 0x5f;\n    piVar6 = &DAT_000889e0;\n    if (bVar13) goto LAB_0001fe74;\n    if (DAT_000889e0 == 0) goto LAB_0001fe99;\n  }\n  else {\nLAB_0001fe74:\n    iVar4 = 0xc;\n    pbVar7 = (byte *)".debug_frame";\n    do {\n      if (iVar4 == 0) break;\n      iVar4 = iVar4 + -1;\n      bVar14 = *pbVar9 < *pbVar7;\n      bVar13 = *pbVar9 == *pbVar7;\n      pbVar9 = pbVar9 + 1;\n      pbVar7 = pbVar7 + 1;\n    } while (bVar13);\n    if ((!bVar14 && !bVar13) != bVar14) {\n      return 0;\n    }\n    piVar6 = &DAT_000889a0;\n    if (DAT_000889a0 == 0) goto LAB_0001fe99;\n  }\n  iVar4 = FUN_000386c0(piVar6[4]);\n  if (iVar4 != 0) {\n    *piVar6 = 0;\nLAB_0001fe99:\n    if ((*param_2 == 4) &&\n       ((((char)param_1[4] == '\x03' || ((char)param_1[4] == '\x14')) &&\n        (iVar4 = FUN_000386c0(*param_1), iVar4 == 0)))) {\n      *piVar6 = 1;\n      piVar6[4] = *param_1;\n      return 0;\n    }\n    return 0;\n  }\n  switch(*piVar6) {\n  case 0:\n    goto LAB_0001fe99;\n  case 1:\n  case 2:\n    *piVar6 = *piVar6 + 1;\n    return 0;\n  case 3:\n    break;\n  case 4:\n    if (*param_2 == -1) {\n      if ((char)param_1[4] != '\x02') goto code_r0x0001ffb8;\n      local_54 = param_1[2];\n      *piVar6 = 5;\n      piVar6[7] = local_54;\n    }\n    else {\n      if ((*param_2 != 1) || ((char)param_1[4] != '\x02')) {\ncode_r0x0001ffb8:\n        *piVar6 = 8;\n        return 0;\n      }\n      uVar8 = param_1[2];\n      local_54 = (uVar8 & 0x7f) << ((byte)piVar6[8] & 0x1f) | piVar6[7];\n      piVar6[7] = local_54;\n      piVar6[8] = piVar6[8] + 7;\n      if ((char)uVar8 < '\0') {\n        return 0;\n      }\n      *piVar6 = 5;\n    }\n    if (local_54 != 0) {\n      return 0;\n    }\n    *piVar6 = 6;\n    return 0;\n  case 5:\n    if (*param_2 < 0) {\ncode_r0x0001ff8e:\n      *piVar6 = 8;\n      return 0;\n    }\n    iVar4 = piVar6[7] - *param_2;\n    piVar6[7] = iVar4;\n    if (iVar4 != 0) {\n      if (-1 < iVar4) {\n        return 0;\n      }\n      goto code_r0x0001ff8e;\n    }\n    goto code_r0x00020108;\n  case 6:\n    if (*param_2 != 1) {\n      return 0;\n    }\n    if ((char)param_1[4] != '\x02') {\n      return 0;\n    }\n    if (param_1[2] != 4 || param_1[3] != 0) {\n      return 0;\n    }\n    FUN_000249b0(1);\n    *piVar6 = 7;\n    piVar6[5] = DAT_000898a0;\n    iVar4 = FUN_00024dc0();\n    piVar6[6] = iVar4;\n    return 0;\n  case 7:\n    *piVar6 = 6;\n    if (*param_2 != 4) {\n      return 0;\n    }\n    cVar5 = (char)param_1[4];\n    if (cVar5 == '\x02') {\n      uVar8 = param_1[2];\n      iVar4 = param_1[3];\n      if ((int)(uint)(0x3f < uVar8) <= -iVar4) {\n        *(byte *)(piVar6[5] + 0x68 + piVar6[6]) = (byte)uVar8 | 0x40;\n        return 1;\n      }\n      if (-iVar4 < (int)(uint)(0xff < uVar8)) {\n        if (-iVar4 < (int)(uint)(0xffff < uVar8)) {\n          return 0;\n        }\n        *(undefined1 *)(piVar6[5] + 0x68 + piVar6[6]) = 3;\n        *param_2 = 2;\n        return 0;\n      }\n      *(undefined1 *)(piVar6[5] + 0x68 + piVar6[6]) = 2;\n      *param_2 = 1;\n      return 0;\n    }\n    if (cVar5 == '\x14') {\n      if (piVar6[2] != 1) {\n        return 0;\n      }\n      iVar4 = piVar6[5];\n      iVar12 = piVar6[6];\n      uVar2 = FUN_00021220(param_1);\n      iVar3 = 8;\n    }\n    else {\n      if ((cVar5 != '\v') && (cVar5 != '\x0e')) {\n        return 0;\n      }\n      if ((uint)piVar6[2] < 2) {\n        return 0;\n      }\n      iVar3 = *param_1;\n      if (*(int *)(iVar3 + 4) == 0) {\n        return 0;\n      }\n      iVar4 = param_1[1];\n      if (*(int *)(iVar4 + 4) == 0) {\n        return 0;\n      }\n      if (*(char *)(iVar3 + 0x18) != '\x14') {\n        return 0;\n      }\n      if (*(char *)(iVar4 + 0x18) != '\x02') {\n        return 0;\n      }\n      iVar12 = *(int *)(iVar4 + 0x14);\n      uVar8 = *(uint *)(iVar4 + 0x10);\n      if (cVar5 != '\v') {\n        uVar11 = uVar8 >> 5 & 1;\n        iVar12 = uVar11 << ((byte)uVar8 & 0x1f);\n        uVar8 = (uVar11 ^ 1) << ((byte)uVar8 & 0x1f);\n      }\n      if (iVar12 != 0) {\n        return 0;\n      }\n      if (piVar6[2] != uVar8) {\n        return 0;\n      }\n      iVar4 = piVar6[5];\n      iVar12 = piVar6[6];\n      uVar2 = FUN_00021220(iVar3 + 8);\n      iVar3 = piVar6[2] << 3;\n    }\n    FUN_00024b60(0xc,4,0,iVar3,uVar2,iVar12,iVar12 >> 0x1f,iVar4);\n    return 1;\n  default:\n    return 0;\n  }\n  if (piVar6[1] != 0) goto code_r0x0001ffd7;\n  iStack_50 = **(int **)DAT_0008973c[0x20];\n  if (iStack_50 != 0) {\n    uVar8 = *(uint *)(iStack_50 + 0x10);\n    iVar4 = *(int *)(iStack_50 + 0x14);\n    if (-iVar4 < (int)(uint)(4 < uVar8)) {\n      local_5c = 4;\n      iVar12 = 0;\n    }\n    else {\n      local_5c = 4;\n      do {\n        iStack_50 = *(int *)(iStack_50 + 0x30);\n        local_5c = local_5c - uVar8;\n        if (iStack_50 == 0) goto code_r0x00020226;\n        uVar8 = *(uint *)(iStack_50 + 0x10);\n        iVar4 = *(int *)(iStack_50 + 0x14);\n        iVar12 = (int)local_5c >> 0x1f;\n      } while ((SBORROW4(iVar12,iVar4) != SBORROW4(iVar12 - iVar4,(uint)(local_5c < uVar8))) ==\n               (int)((iVar12 - iVar4) - (uint)(local_5c < uVar8)) < 0);\n    }\n    iVar4 = (iVar4 - iVar12) - (uint)(uVar8 < local_5c);\n    uVar8 = (uint)(3 < uVar8 - local_5c);\n    bVar13 = iVar4 != 0 || (uint)-iVar4 < uVar8;\n    bVar15 = -uVar8 == iVar4;\n    if (-iVar4 < (int)uVar8) {\n      iVar4 = 0xc;\n      pbVar9 = (byte *)*DAT_0008973c;\n      pbVar7 = (byte *)".debug_frame";\n      do {\n        if (iVar4 == 0) break;\n        iVar4 = iVar4 + -1;\n        bVar13 = *pbVar9 < *pbVar7;\n        bVar15 = *pbVar9 == *pbVar7;\n        pbVar9 = pbVar9 + (uint)bVar16 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar16 * -2 + 1;\n      } while (bVar15);\n      cVar5 = -((!bVar13 && !bVar15) == bVar13);\n      if ((((*(char *)(iStack_50 + 0x68 + local_5c) == cVar5) &&\n           (*(char *)(iStack_50 + 0x69 + local_5c) == cVar5)) &&\n          (*(char *)(iStack_50 + 0x6a + local_5c) == cVar5)) &&\n         (*(char *)(iStack_50 + 0x6b + local_5c) == cVar5)) {\n        local_5c = local_5c + 4;\n        do {\n          iVar4 = (int)local_5c >> 0x1f;\n          iStack_40 = *(int *)(iStack_50 + 0x14);\n          uStack_44 = *(uint *)(iStack_50 + 0x10);\n          if ((SBORROW4(iVar4,iStack_40) != SBORROW4(iVar4 - iStack_40,(uint)(local_5c < uStack_44))\n              ) != (int)((iVar4 - iStack_40) - (uint)(local_5c < uStack_44)) < 0) {\n            if (((int)(uint)(uStack_44 != local_5c) <=\n                 (int)-((iStack_40 - iVar4) - (uint)(uStack_44 < local_5c))) ||\n               (*(char *)(iStack_50 + 0x68 + local_5c) != '\x01')) goto code_r0x00020226;\n            uVar8 = local_5c + 1;\n            iStack_38 = 0;\n            iVar4 = (*(int **)DAT_0008973c[0x20])[4];\n            goto code_r0x0002044e;\n          }\n          local_5c = local_5c - uStack_44;\n          iStack_50 = *(int *)(iStack_50 + 0x30);\n        } while (iStack_50 != 0);\n        piVar6[1] = 0;\n        goto code_r0x0002022d;\n      }\n    }\n  }\n  goto code_r0x00020226;\ncode_r0x0002044e:\n  iStack_58 = (int)uVar8 >> 0x1f;\n  if ((SBORROW4(iStack_58,iStack_40) != SBORROW4(iStack_58 - iStack_40,(uint)(uVar8 < uStack_44)))\n      != (int)((iStack_58 - iStack_40) - (uint)(uVar8 < uStack_44)) < 0) {\n    cVar5 = *(char *)(iStack_50 + 0x68 + uVar8);\n    if (cVar5 == '\0') {\ncode_r0x00020509:\n      uVar8 = uVar8 + 1;\n      goto code_r0x00020523;\n    }\n    local_5c = uVar8;\n    while( true ) {\n      if (iStack_38 < 9) {\n        acStack_26[iStack_38] = cVar5;\n        iStack_38 = iStack_38 + 1;\n      }\n      uVar8 = uVar8 + 1;\n      if (iStack_58 == iStack_40 + -1 + (uint)(uStack_44 != 0) && local_5c == uStack_44 - 1) break;\n      bVar13 = 0xfffffffe < local_5c;\n      local_5c = local_5c + 1;\n      iStack_58 = iStack_58 + (uint)bVar13;\n      cVar5 = *(char *)(iStack_50 + 0x68 + uVar8);\n      if (cVar5 == '\0') goto code_r0x00020509;\n    }\n    goto code_r0x0002044e;\n  }\n  iStack_50 = *(int *)(iStack_50 + 0x30);\n  if (iStack_50 == 0) goto code_r0x00020226;\n  iStack_40 = *(int *)(iStack_50 + 0x14);\n  uVar8 = uVar8 - uStack_44;\n  uStack_44 = *(uint *)(iStack_50 + 0x10);\n  goto code_r0x0002044e;\n  while( true ) {\n    iStack_50 = *(int *)(iStack_50 + 0x30);\n    uVar8 = uVar8 - *puVar1;\n    if (iStack_50 == 0) break;\ncode_r0x00020523:\n    puVar1 = (uint *)(iStack_50 + 0x10);\n    uVar11 = (uint)(uVar8 < *puVar1);\n    iVar12 = ((int)uVar8 >> 0x1f) - *(int *)(iStack_50 + 0x14);\n    if ((SBORROW4((int)uVar8 >> 0x1f,*(int *)(iStack_50 + 0x14)) != SBORROW4(iVar12,uVar11)) !=\n        (int)(iVar12 - uVar11) < 0) {\n      acStack_26[iStack_38] = '\0';\n      if (acStack_26[0] == '\0') goto code_r0x000205bb;\n      iVar12 = strcmp(acStack_26,"eh");\n      if (iVar12 == 0) goto code_r0x00020575;\n      if (acStack_26[0] == 'z') goto code_r0x000205bb;\n      break;\n    }\n  }\n  goto code_r0x00020226;\ncode_r0x00020575:\n  if (iVar4 == 0) goto code_r0x00020600;\n  if ((*(int *)(iVar4 + 4) == iStack_50) && (*(uint *)(iVar4 + 8) == uVar8)) {\n    uVar8 = uVar8 + *(byte *)(iVar4 + 2);\n    goto code_r0x000205a6;\n  }\n  iVar4 = *(int *)(iVar4 + 0x28);\n  goto code_r0x00020575;\ncode_r0x000205bb:\n  cVar5 = *(char *)(iStack_50 + 0x68 + uVar8);\n  iStack_3c = 0;\n  if (-1 < cVar5) {\n    iStack_3c = (int)cVar5;\n  }\n  piVar6[1] = 1;\n  piVar6[2] = iStack_3c;\n  piVar6[3] = (uint)(acStack_26[0] == 'z');\ncode_r0x0001ffd7:\n  if (piVar6[3] != 0) {\n    *piVar6 = 4;\n    piVar6[7] = 0;\n    piVar6[8] = 0;\n    return 0;\n  }\ncode_r0x00020108:\n  *piVar6 = 6;\n  return 0;\ncode_r0x00020600:\n  uVar8 = uVar8 + 4;\ncode_r0x000205a6:\n  do {\n    puVar1 = (uint *)(iStack_50 + 0x10);\n    uVar11 = (uint)(uVar8 < *puVar1);\n    iVar4 = ((int)uVar8 >> 0x1f) - *(int *)(iStack_50 + 0x14);\n    if ((SBORROW4((int)uVar8 >> 0x1f,*(int *)(iStack_50 + 0x14)) != SBORROW4(iVar4,uVar11)) !=\n        (int)(iVar4 - uVar11) < 0) goto code_r0x000205bb;\n    iStack_50 = *(int *)(iStack_50 + 0x30);\n    uVar8 = uVar8 - *puVar1;\n  } while (iStack_50 != 0);\ncode_r0x00020226:\n  piVar6[1] = 0;\ncode_r0x0002022d:\n  *piVar6 = 8;\n  return 0;\n}" type_identifier (function_declarator "FUN_0001fe30(int *param_1,int *param_2)" identifier (parameter_list "(int *param_1,int *param_2)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) ))) (compound_statement "{\n  uint *puVar1;\n  undefined4 uVar2;\n  int iVar3;\n  int iVar4;\n  char cVar5;\n  int *piVar6;\n  byte *pbVar7;\n  uint uVar8;\n  byte *pbVar9;\n  byte *pbVar10;\n  uint uVar11;\n  int iVar12;\n  bool bVar13;\n  bool bVar14;\n  bool bVar15;\n  byte bVar16;\n  uint local_5c;\n  int iStack_58;\n  uint local_54;\n  int iStack_50;\n  uint uStack_44;\n  int iStack_40;\n  int iStack_3c;\n  int iStack_38;\n  char acStack_26 [18];\n  undefined4 uStack_14;\n  \n  bVar16 = 0;\n  uStack_14 = 0x1fe39;\n  bVar13 = false;\n  bVar15 = DAT_000897dc == 0;\n  if (!bVar15) {\n    return 0;\n  }\n  iVar4 = 9;\n  pbVar9 = (byte *)*DAT_0008973c;\n  pbVar7 = pbVar9;\n  pbVar10 = (byte *)".eh_frame";\n  do {\n    if (iVar4 == 0) break;\n    iVar4 = iVar4 + -1;\n    bVar13 = *pbVar7 < *pbVar10;\n    bVar15 = *pbVar7 == *pbVar10;\n    pbVar7 = pbVar7 + 1;\n    pbVar10 = pbVar10 + 1;\n  } while (bVar15);\n  bVar14 = false;\n  bVar13 = (!bVar13 && !bVar15) == bVar13;\n  if (bVar13) {\n    bVar14 = pbVar9[9] < 0x5f;\n    bVar13 = pbVar9[9] == 0x5f;\n    piVar6 = &DAT_000889e0;\n    if (bVar13) goto LAB_0001fe74;\n    if (DAT_000889e0 == 0) goto LAB_0001fe99;\n  }\n  else {\nLAB_0001fe74:\n    iVar4 = 0xc;\n    pbVar7 = (byte *)".debug_frame";\n    do {\n      if (iVar4 == 0) break;\n      iVar4 = iVar4 + -1;\n      bVar14 = *pbVar9 < *pbVar7;\n      bVar13 = *pbVar9 == *pbVar7;\n      pbVar9 = pbVar9 + 1;\n      pbVar7 = pbVar7 + 1;\n    } while (bVar13);\n    if ((!bVar14 && !bVar13) != bVar14) {\n      return 0;\n    }\n    piVar6 = &DAT_000889a0;\n    if (DAT_000889a0 == 0) goto LAB_0001fe99;\n  }\n  iVar4 = FUN_000386c0(piVar6[4]);\n  if (iVar4 != 0) {\n    *piVar6 = 0;\nLAB_0001fe99:\n    if ((*param_2 == 4) &&\n       ((((char)param_1[4] == '\x03' || ((char)param_1[4] == '\x14')) &&\n        (iVar4 = FUN_000386c0(*param_1), iVar4 == 0)))) {\n      *piVar6 = 1;\n      piVar6[4] = *param_1;\n      return 0;\n    }\n    return 0;\n  }\n  switch(*piVar6) {\n  case 0:\n    goto LAB_0001fe99;\n  case 1:\n  case 2:\n    *piVar6 = *piVar6 + 1;\n    return 0;\n  case 3:\n    break;\n  case 4:\n    if (*param_2 == -1) {\n      if ((char)param_1[4] != '\x02') goto code_r0x0001ffb8;\n      local_54 = param_1[2];\n      *piVar6 = 5;\n      piVar6[7] = local_54;\n    }\n    else {\n      if ((*param_2 != 1) || ((char)param_1[4] != '\x02')) {\ncode_r0x0001ffb8:\n        *piVar6 = 8;\n        return 0;\n      }\n      uVar8 = param_1[2];\n      local_54 = (uVar8 & 0x7f) << ((byte)piVar6[8] & 0x1f) | piVar6[7];\n      piVar6[7] = local_54;\n      piVar6[8] = piVar6[8] + 7;\n      if ((char)uVar8 < '\0') {\n        return 0;\n      }\n      *piVar6 = 5;\n    }\n    if (local_54 != 0) {\n      return 0;\n    }\n    *piVar6 = 6;\n    return 0;\n  case 5:\n    if (*param_2 < 0) {\ncode_r0x0001ff8e:\n      *piVar6 = 8;\n      return 0;\n    }\n    iVar4 = piVar6[7] - *param_2;\n    piVar6[7] = iVar4;\n    if (iVar4 != 0) {\n      if (-1 < iVar4) {\n        return 0;\n      }\n      goto code_r0x0001ff8e;\n    }\n    goto code_r0x00020108;\n  case 6:\n    if (*param_2 != 1) {\n      return 0;\n    }\n    if ((char)param_1[4] != '\x02') {\n      return 0;\n    }\n    if (param_1[2] != 4 || param_1[3] != 0) {\n      return 0;\n    }\n    FUN_000249b0(1);\n    *piVar6 = 7;\n    piVar6[5] = DAT_000898a0;\n    iVar4 = FUN_00024dc0();\n    piVar6[6] = iVar4;\n    return 0;\n  case 7:\n    *piVar6 = 6;\n    if (*param_2 != 4) {\n      return 0;\n    }\n    cVar5 = (char)param_1[4];\n    if (cVar5 == '\x02') {\n      uVar8 = param_1[2];\n      iVar4 = param_1[3];\n      if ((int)(uint)(0x3f < uVar8) <= -iVar4) {\n        *(byte *)(piVar6[5] + 0x68 + piVar6[6]) = (byte)uVar8 | 0x40;\n        return 1;\n      }\n      if (-iVar4 < (int)(uint)(0xff < uVar8)) {\n        if (-iVar4 < (int)(uint)(0xffff < uVar8)) {\n          return 0;\n        }\n        *(undefined1 *)(piVar6[5] + 0x68 + piVar6[6]) = 3;\n        *param_2 = 2;\n        return 0;\n      }\n      *(undefined1 *)(piVar6[5] + 0x68 + piVar6[6]) = 2;\n      *param_2 = 1;\n      return 0;\n    }\n    if (cVar5 == '\x14') {\n      if (piVar6[2] != 1) {\n        return 0;\n      }\n      iVar4 = piVar6[5];\n      iVar12 = piVar6[6];\n      uVar2 = FUN_00021220(param_1);\n      iVar3 = 8;\n    }\n    else {\n      if ((cVar5 != '\v') && (cVar5 != '\x0e')) {\n        return 0;\n      }\n      if ((uint)piVar6[2] < 2) {\n        return 0;\n      }\n      iVar3 = *param_1;\n      if (*(int *)(iVar3 + 4) == 0) {\n        return 0;\n      }\n      iVar4 = param_1[1];\n      if (*(int *)(iVar4 + 4) == 0) {\n        return 0;\n      }\n      if (*(char *)(iVar3 + 0x18) != '\x14') {\n        return 0;\n      }\n      if (*(char *)(iVar4 + 0x18) != '\x02') {\n        return 0;\n      }\n      iVar12 = *(int *)(iVar4 + 0x14);\n      uVar8 = *(uint *)(iVar4 + 0x10);\n      if (cVar5 != '\v') {\n        uVar11 = uVar8 >> 5 & 1;\n        iVar12 = uVar11 << ((byte)uVar8 & 0x1f);\n        uVar8 = (uVar11 ^ 1) << ((byte)uVar8 & 0x1f);\n      }\n      if (iVar12 != 0) {\n        return 0;\n      }\n      if (piVar6[2] != uVar8) {\n        return 0;\n      }\n      iVar4 = piVar6[5];\n      iVar12 = piVar6[6];\n      uVar2 = FUN_00021220(iVar3 + 8);\n      iVar3 = piVar6[2] << 3;\n    }\n    FUN_00024b60(0xc,4,0,iVar3,uVar2,iVar12,iVar12 >> 0x1f,iVar4);\n    return 1;\n  default:\n    return 0;\n  }\n  if (piVar6[1] != 0) goto code_r0x0001ffd7;\n  iStack_50 = **(int **)DAT_0008973c[0x20];\n  if (iStack_50 != 0) {\n    uVar8 = *(uint *)(iStack_50 + 0x10);\n    iVar4 = *(int *)(iStack_50 + 0x14);\n    if (-iVar4 < (int)(uint)(4 < uVar8)) {\n      local_5c = 4;\n      iVar12 = 0;\n    }\n    else {\n      local_5c = 4;\n      do {\n        iStack_50 = *(int *)(iStack_50 + 0x30);\n        local_5c = local_5c - uVar8;\n        if (iStack_50 == 0) goto code_r0x00020226;\n        uVar8 = *(uint *)(iStack_50 + 0x10);\n        iVar4 = *(int *)(iStack_50 + 0x14);\n        iVar12 = (int)local_5c >> 0x1f;\n      } while ((SBORROW4(iVar12,iVar4) != SBORROW4(iVar12 - iVar4,(uint)(local_5c < uVar8))) ==\n               (int)((iVar12 - iVar4) - (uint)(local_5c < uVar8)) < 0);\n    }\n    iVar4 = (iVar4 - iVar12) - (uint)(uVar8 < local_5c);\n    uVar8 = (uint)(3 < uVar8 - local_5c);\n    bVar13 = iVar4 != 0 || (uint)-iVar4 < uVar8;\n    bVar15 = -uVar8 == iVar4;\n    if (-iVar4 < (int)uVar8) {\n      iVar4 = 0xc;\n      pbVar9 = (byte *)*DAT_0008973c;\n      pbVar7 = (byte *)".debug_frame";\n      do {\n        if (iVar4 == 0) break;\n        iVar4 = iVar4 + -1;\n        bVar13 = *pbVar9 < *pbVar7;\n        bVar15 = *pbVar9 == *pbVar7;\n        pbVar9 = pbVar9 + (uint)bVar16 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar16 * -2 + 1;\n      } while (bVar15);\n      cVar5 = -((!bVar13 && !bVar15) == bVar13);\n      if ((((*(char *)(iStack_50 + 0x68 + local_5c) == cVar5) &&\n           (*(char *)(iStack_50 + 0x69 + local_5c) == cVar5)) &&\n          (*(char *)(iStack_50 + 0x6a + local_5c) == cVar5)) &&\n         (*(char *)(iStack_50 + 0x6b + local_5c) == cVar5)) {\n        local_5c = local_5c + 4;\n        do {\n          iVar4 = (int)local_5c >> 0x1f;\n          iStack_40 = *(int *)(iStack_50 + 0x14);\n          uStack_44 = *(uint *)(iStack_50 + 0x10);\n          if ((SBORROW4(iVar4,iStack_40) != SBORROW4(iVar4 - iStack_40,(uint)(local_5c < uStack_44))\n              ) != (int)((iVar4 - iStack_40) - (uint)(local_5c < uStack_44)) < 0) {\n            if (((int)(uint)(uStack_44 != local_5c) <=\n                 (int)-((iStack_40 - iVar4) - (uint)(uStack_44 < local_5c))) ||\n               (*(char *)(iStack_50 + 0x68 + local_5c) != '\x01')) goto code_r0x00020226;\n            uVar8 = local_5c + 1;\n            iStack_38 = 0;\n            iVar4 = (*(int **)DAT_0008973c[0x20])[4];\n            goto code_r0x0002044e;\n          }\n          local_5c = local_5c - uStack_44;\n          iStack_50 = *(int *)(iStack_50 + 0x30);\n        } while (iStack_50 != 0);\n        piVar6[1] = 0;\n        goto code_r0x0002022d;\n      }\n    }\n  }\n  goto code_r0x00020226;\ncode_r0x0002044e:\n  iStack_58 = (int)uVar8 >> 0x1f;\n  if ((SBORROW4(iStack_58,iStack_40) != SBORROW4(iStack_58 - iStack_40,(uint)(uVar8 < uStack_44)))\n      != (int)((iStack_58 - iStack_40) - (uint)(uVar8 < uStack_44)) < 0) {\n    cVar5 = *(char *)(iStack_50 + 0x68 + uVar8);\n    if (cVar5 == '\0') {\ncode_r0x00020509:\n      uVar8 = uVar8 + 1;\n      goto code_r0x00020523;\n    }\n    local_5c = uVar8;\n    while( true ) {\n      if (iStack_38 < 9) {\n        acStack_26[iStack_38] = cVar5;\n        iStack_38 = iStack_38 + 1;\n      }\n      uVar8 = uVar8 + 1;\n      if (iStack_58 == iStack_40 + -1 + (uint)(uStack_44 != 0) && local_5c == uStack_44 - 1) break;\n      bVar13 = 0xfffffffe < local_5c;\n      local_5c = local_5c + 1;\n      iStack_58 = iStack_58 + (uint)bVar13;\n      cVar5 = *(char *)(iStack_50 + 0x68 + uVar8);\n      if (cVar5 == '\0') goto code_r0x00020509;\n    }\n    goto code_r0x0002044e;\n  }\n  iStack_50 = *(int *)(iStack_50 + 0x30);\n  if (iStack_50 == 0) goto code_r0x00020226;\n  iStack_40 = *(int *)(iStack_50 + 0x14);\n  uVar8 = uVar8 - uStack_44;\n  uStack_44 = *(uint *)(iStack_50 + 0x10);\n  goto code_r0x0002044e;\n  while( true ) {\n    iStack_50 = *(int *)(iStack_50 + 0x30);\n    uVar8 = uVar8 - *puVar1;\n    if (iStack_50 == 0) break;\ncode_r0x00020523:\n    puVar1 = (uint *)(iStack_50 + 0x10);\n    uVar11 = (uint)(uVar8 < *puVar1);\n    iVar12 = ((int)uVar8 >> 0x1f) - *(int *)(iStack_50 + 0x14);\n    if ((SBORROW4((int)uVar8 >> 0x1f,*(int *)(iStack_50 + 0x14)) != SBORROW4(iVar12,uVar11)) !=\n        (int)(iVar12 - uVar11) < 0) {\n      acStack_26[iStack_38] = '\0';\n      if (acStack_26[0] == '\0') goto code_r0x000205bb;\n      iVar12 = strcmp(acStack_26,"eh");\n      if (iVar12 == 0) goto code_r0x00020575;\n      if (acStack_26[0] == 'z') goto code_r0x000205bb;\n      break;\n    }\n  }\n  goto code_r0x00020226;\ncode_r0x00020575:\n  if (iVar4 == 0) goto code_r0x00020600;\n  if ((*(int *)(iVar4 + 4) == iStack_50) && (*(uint *)(iVar4 + 8) == uVar8)) {\n    uVar8 = uVar8 + *(byte *)(iVar4 + 2);\n    goto code_r0x000205a6;\n  }\n  iVar4 = *(int *)(iVar4 + 0x28);\n  goto code_r0x00020575;\ncode_r0x000205bb:\n  cVar5 = *(char *)(iStack_50 + 0x68 + uVar8);\n  iStack_3c = 0;\n  if (-1 < cVar5) {\n    iStack_3c = (int)cVar5;\n  }\n  piVar6[1] = 1;\n  piVar6[2] = iStack_3c;\n  piVar6[3] = (uint)(acStack_26[0] == 'z');\ncode_r0x0001ffd7:\n  if (piVar6[3] != 0) {\n    *piVar6 = 4;\n    piVar6[7] = 0;\n    piVar6[8] = 0;\n    return 0;\n  }\ncode_r0x00020108:\n  *piVar6 = 6;\n  return 0;\ncode_r0x00020600:\n  uVar8 = uVar8 + 4;\ncode_r0x000205a6:\n  do {\n    puVar1 = (uint *)(iStack_50 + 0x10);\n    uVar11 = (uint)(uVar8 < *puVar1);\n    iVar4 = ((int)uVar8 >> 0x1f) - *(int *)(iStack_50 + 0x14);\n    if ((SBORROW4((int)uVar8 >> 0x1f,*(int *)(iStack_50 + 0x14)) != SBORROW4(iVar4,uVar11)) !=\n        (int)(iVar4 - uVar11) < 0) goto code_r0x000205bb;\n    iStack_50 = *(int *)(iStack_50 + 0x30);\n    uVar8 = uVar8 - *puVar1;\n  } while (iStack_50 != 0);\ncode_r0x00020226:\n  piVar6[1] = 0;\ncode_r0x0002022d:\n  *piVar6 = 8;\n  return 0;\n}" { (declaration "uint *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "undefined4 uVar2;" type_identifier identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "char cVar5;" primitive_type identifier ;) (declaration "int *piVar6;" primitive_type (pointer_declarator "*piVar6" * identifier) ;) (declaration "byte *pbVar7;" type_identifier (pointer_declarator "*pbVar7" * identifier) ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "byte *pbVar9;" type_identifier (pointer_declarator "*pbVar9" * identifier) ;) (declaration "byte *pbVar10;" type_identifier (pointer_declarator "*pbVar10" * identifier) ;) (declaration "uint uVar11;" type_identifier identifier ;) (declaration "int iVar12;" primitive_type identifier ;) (declaration "bool bVar13;" primitive_type identifier ;) (declaration "bool bVar14;" primitive_type identifier ;) (declaration "bool bVar15;" primitive_type identifier ;) (declaration "byte bVar16;" type_identifier identifier ;) (declaration "uint local_5c;" type_identifier identifier ;) (declaration "int iStack_58;" primitive_type identifier ;) (declaration "uint local_54;" type_identifier identifier ;) (declaration "int iStack_50;" primitive_type identifier ;) (declaration "uint uStack_44;" type_identifier identifier ;) (declaration "int iStack_40;" primitive_type identifier ;) (declaration "int iStack_3c;" primitive_type identifier ;) (declaration "int iStack_38;" primitive_type identifier ;) (declaration "char acStack_26 [18];" primitive_type (array_declarator "acStack_26 [18]" identifier [ number_literal ]) ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (expression_statement "bVar16 = 0;" (assignment_expression "bVar16 = 0" identifier = number_literal) ;) (expression_statement "uStack_14 = 0x1fe39;" (assignment_expression "uStack_14 = 0x1fe39" identifier = number_literal) ;) (expression_statement "bVar13 = false;" (assignment_expression "bVar13 = false" identifier = false) ;) (expression_statement "bVar15 = DAT_000897dc == 0;" (assignment_expression "bVar15 = DAT_000897dc == 0" identifier = (binary_expression "DAT_000897dc == 0" identifier == number_literal)) ;) (if_statement "if (!bVar15) {\n    return 0;\n  }" if (parenthesized_expression "(!bVar15)" ( (unary_expression "!bVar15" ! identifier) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "iVar4 = 9;" (assignment_expression "iVar4 = 9" identifier = number_literal) ;) (expression_statement "pbVar9 = (byte *)*DAT_0008973c;" (assignment_expression "pbVar9 = (byte *)*DAT_0008973c" identifier = (cast_expression "(byte *)*DAT_0008973c" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*DAT_0008973c" * identifier))) ;) (expression_statement "pbVar7 = pbVar9;" (assignment_expression "pbVar7 = pbVar9" identifier = identifier) ;) (expression_statement "pbVar10 = (byte *)".eh_frame";" (assignment_expression "pbVar10 = (byte *)".eh_frame"" identifier = (cast_expression "(byte *)".eh_frame"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal "".eh_frame"" " string_content "))) ;) (do_statement "do {\n    if (iVar4 == 0) break;\n    iVar4 = iVar4 + -1;\n    bVar13 = *pbVar7 < *pbVar10;\n    bVar15 = *pbVar7 == *pbVar10;\n    pbVar7 = pbVar7 + 1;\n    pbVar10 = pbVar10 + 1;\n  } while (bVar15);" do (compound_statement "{\n    if (iVar4 == 0) break;\n    iVar4 = iVar4 + -1;\n    bVar13 = *pbVar7 < *pbVar10;\n    bVar15 = *pbVar7 == *pbVar10;\n    pbVar7 = pbVar7 + 1;\n    pbVar10 = pbVar10 + 1;\n  }" { (if_statement "if (iVar4 == 0) break;" if (parenthesized_expression "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar4 = iVar4 + -1;" (assignment_expression "iVar4 = iVar4 + -1" identifier = (binary_expression "iVar4 + -1" identifier + number_literal)) ;) (expression_statement "bVar13 = *pbVar7 < *pbVar10;" (assignment_expression "bVar13 = *pbVar7 < *pbVar10" identifier = (binary_expression "*pbVar7 < *pbVar10" (pointer_expression "*pbVar7" * identifier) < (pointer_expression "*pbVar10" * identifier))) ;) (expression_statement "bVar15 = *pbVar7 == *pbVar10;" (assignment_expression "bVar15 = *pbVar7 == *pbVar10" identifier = (binary_expression "*pbVar7 == *pbVar10" (pointer_expression "*pbVar7" * identifier) == (pointer_expression "*pbVar10" * identifier))) ;) (expression_statement "pbVar7 = pbVar7 + 1;" (assignment_expression "pbVar7 = pbVar7 + 1" identifier = (binary_expression "pbVar7 + 1" identifier + number_literal)) ;) (expression_statement "pbVar10 = pbVar10 + 1;" (assignment_expression "pbVar10 = pbVar10 + 1" identifier = (binary_expression "pbVar10 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(bVar15)" ( identifier )) ;) (expression_statement "bVar14 = false;" (assignment_expression "bVar14 = false" identifier = false) ;) (expression_statement "bVar13 = (!bVar13 && !bVar15) == bVar13;" (assignment_expression "bVar13 = (!bVar13 && !bVar15) == bVar13" identifier = (binary_expression "(!bVar13 && !bVar15) == bVar13" (parenthesized_expression "(!bVar13 && !bVar15)" ( (binary_expression "!bVar13 && !bVar15" (unary_expression "!bVar13" ! identifier) && (unary_expression "!bVar15" ! identifier)) )) == identifier)) ;) (if_statement "if (bVar13) {\n    bVar14 = pbVar9[9] < 0x5f;\n    bVar13 = pbVar9[9] == 0x5f;\n    piVar6 = &DAT_000889e0;\n    if (bVar13) goto LAB_0001fe74;\n    if (DAT_000889e0 == 0) goto LAB_0001fe99;\n  }\n  else {\nLAB_0001fe74:\n    iVar4 = 0xc;\n    pbVar7 = (byte *)".debug_frame";\n    do {\n      if (iVar4 == 0) break;\n      iVar4 = iVar4 + -1;\n      bVar14 = *pbVar9 < *pbVar7;\n      bVar13 = *pbVar9 == *pbVar7;\n      pbVar9 = pbVar9 + 1;\n      pbVar7 = pbVar7 + 1;\n    } while (bVar13);\n    if ((!bVar14 && !bVar13) != bVar14) {\n      return 0;\n    }\n    piVar6 = &DAT_000889a0;\n    if (DAT_000889a0 == 0) goto LAB_0001fe99;\n  }" if (parenthesized_expression "(bVar13)" ( identifier )) (compound_statement "{\n    bVar14 = pbVar9[9] < 0x5f;\n    bVar13 = pbVar9[9] == 0x5f;\n    piVar6 = &DAT_000889e0;\n    if (bVar13) goto LAB_0001fe74;\n    if (DAT_000889e0 == 0) goto LAB_0001fe99;\n  }" { (expression_statement "bVar14 = pbVar9[9] < 0x5f;" (assignment_expression "bVar14 = pbVar9[9] < 0x5f" identifier = (binary_expression "pbVar9[9] < 0x5f" (subscript_expression "pbVar9[9]" identifier [ number_literal ]) < number_literal)) ;) (expression_statement "bVar13 = pbVar9[9] == 0x5f;" (assignment_expression "bVar13 = pbVar9[9] == 0x5f" identifier = (binary_expression "pbVar9[9] == 0x5f" (subscript_expression "pbVar9[9]" identifier [ number_literal ]) == number_literal)) ;) (expression_statement "piVar6 = &DAT_000889e0;" (assignment_expression "piVar6 = &DAT_000889e0" identifier = (pointer_expression "&DAT_000889e0" & identifier)) ;) (if_statement "if (bVar13) goto LAB_0001fe74;" if (parenthesized_expression "(bVar13)" ( identifier )) (goto_statement "goto LAB_0001fe74;" goto statement_identifier ;)) (if_statement "if (DAT_000889e0 == 0) goto LAB_0001fe99;" if (parenthesized_expression "(DAT_000889e0 == 0)" ( (binary_expression "DAT_000889e0 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0001fe99;" goto statement_identifier ;)) }) (else_clause "else {\nLAB_0001fe74:\n    iVar4 = 0xc;\n    pbVar7 = (byte *)".debug_frame";\n    do {\n      if (iVar4 == 0) break;\n      iVar4 = iVar4 + -1;\n      bVar14 = *pbVar9 < *pbVar7;\n      bVar13 = *pbVar9 == *pbVar7;\n      pbVar9 = pbVar9 + 1;\n      pbVar7 = pbVar7 + 1;\n    } while (bVar13);\n    if ((!bVar14 && !bVar13) != bVar14) {\n      return 0;\n    }\n    piVar6 = &DAT_000889a0;\n    if (DAT_000889a0 == 0) goto LAB_0001fe99;\n  }" else (compound_statement "{\nLAB_0001fe74:\n    iVar4 = 0xc;\n    pbVar7 = (byte *)".debug_frame";\n    do {\n      if (iVar4 == 0) break;\n      iVar4 = iVar4 + -1;\n      bVar14 = *pbVar9 < *pbVar7;\n      bVar13 = *pbVar9 == *pbVar7;\n      pbVar9 = pbVar9 + 1;\n      pbVar7 = pbVar7 + 1;\n    } while (bVar13);\n    if ((!bVar14 && !bVar13) != bVar14) {\n      return 0;\n    }\n    piVar6 = &DAT_000889a0;\n    if (DAT_000889a0 == 0) goto LAB_0001fe99;\n  }" { (labeled_statement "LAB_0001fe74:\n    iVar4 = 0xc;" statement_identifier : (expression_statement "iVar4 = 0xc;" (assignment_expression "iVar4 = 0xc" identifier = number_literal) ;)) (expression_statement "pbVar7 = (byte *)".debug_frame";" (assignment_expression "pbVar7 = (byte *)".debug_frame"" identifier = (cast_expression "(byte *)".debug_frame"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal "".debug_frame"" " string_content "))) ;) (do_statement "do {\n      if (iVar4 == 0) break;\n      iVar4 = iVar4 + -1;\n      bVar14 = *pbVar9 < *pbVar7;\n      bVar13 = *pbVar9 == *pbVar7;\n      pbVar9 = pbVar9 + 1;\n      pbVar7 = pbVar7 + 1;\n    } while (bVar13);" do (compound_statement "{\n      if (iVar4 == 0) break;\n      iVar4 = iVar4 + -1;\n      bVar14 = *pbVar9 < *pbVar7;\n      bVar13 = *pbVar9 == *pbVar7;\n      pbVar9 = pbVar9 + 1;\n      pbVar7 = pbVar7 + 1;\n    }" { (if_statement "if (iVar4 == 0) break;" if (parenthesized_expression "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar4 = iVar4 + -1;" (assignment_expression "iVar4 = iVar4 + -1" identifier = (binary_expression "iVar4 + -1" identifier + number_literal)) ;) (expression_statement "bVar14 = *pbVar9 < *pbVar7;" (assignment_expression "bVar14 = *pbVar9 < *pbVar7" identifier = (binary_expression "*pbVar9 < *pbVar7" (pointer_expression "*pbVar9" * identifier) < (pointer_expression "*pbVar7" * identifier))) ;) (expression_statement "bVar13 = *pbVar9 == *pbVar7;" (assignment_expression "bVar13 = *pbVar9 == *pbVar7" identifier = (binary_expression "*pbVar9 == *pbVar7" (pointer_expression "*pbVar9" * identifier) == (pointer_expression "*pbVar7" * identifier))) ;) (expression_statement "pbVar9 = pbVar9 + 1;" (assignment_expression "pbVar9 = pbVar9 + 1" identifier = (binary_expression "pbVar9 + 1" identifier + number_literal)) ;) (expression_statement "pbVar7 = pbVar7 + 1;" (assignment_expression "pbVar7 = pbVar7 + 1" identifier = (binary_expression "pbVar7 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(bVar13)" ( identifier )) ;) (if_statement "if ((!bVar14 && !bVar13) != bVar14) {\n      return 0;\n    }" if (parenthesized_expression "((!bVar14 && !bVar13) != bVar14)" ( (binary_expression "(!bVar14 && !bVar13) != bVar14" (parenthesized_expression "(!bVar14 && !bVar13)" ( (binary_expression "!bVar14 && !bVar13" (unary_expression "!bVar14" ! identifier) && (unary_expression "!bVar13" ! identifier)) )) != identifier) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "piVar6 = &DAT_000889a0;" (assignment_expression "piVar6 = &DAT_000889a0" identifier = (pointer_expression "&DAT_000889a0" & identifier)) ;) (if_statement "if (DAT_000889a0 == 0) goto LAB_0001fe99;" if (parenthesized_expression "(DAT_000889a0 == 0)" ( (binary_expression "DAT_000889a0 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0001fe99;" goto statement_identifier ;)) }))) (expression_statement "iVar4 = FUN_000386c0(piVar6[4]);" (assignment_expression "iVar4 = FUN_000386c0(piVar6[4])" identifier = (call_expression "FUN_000386c0(piVar6[4])" identifier (argument_list "(piVar6[4])" ( (subscript_expression "piVar6[4]" identifier [ number_literal ]) )))) ;) (if_statement "if (iVar4 != 0) {\n    *piVar6 = 0;\nLAB_0001fe99:\n    if ((*param_2 == 4) &&\n       ((((char)param_1[4] == '\x03' || ((char)param_1[4] == '\x14')) &&\n        (iVar4 = FUN_000386c0(*param_1), iVar4 == 0)))) {\n      *piVar6 = 1;\n      piVar6[4] = *param_1;\n      return 0;\n    }\n    return 0;\n  }" if (parenthesized_expression "(iVar4 != 0)" ( (binary_expression "iVar4 != 0" identifier != number_literal) )) (compound_statement "{\n    *piVar6 = 0;\nLAB_0001fe99:\n    if ((*param_2 == 4) &&\n       ((((char)param_1[4] == '\x03' || ((char)param_1[4] == '\x14')) &&\n        (iVar4 = FUN_000386c0(*param_1), iVar4 == 0)))) {\n      *piVar6 = 1;\n      piVar6[4] = *param_1;\n      return 0;\n    }\n    return 0;\n  }" { (expression_statement "*piVar6 = 0;" (assignment_expression "*piVar6 = 0" (pointer_expression "*piVar6" * identifier) = number_literal) ;) (labeled_statement "LAB_0001fe99:\n    if ((*param_2 == 4) &&\n       ((((char)param_1[4] == '\x03' || ((char)param_1[4] == '\x14')) &&\n        (iVar4 = FUN_000386c0(*param_1), iVar4 == 0)))) {\n      *piVar6 = 1;\n      piVar6[4] = *param_1;\n      return 0;\n    }" statement_identifier : (if_statement "if ((*param_2 == 4) &&\n       ((((char)param_1[4] == '\x03' || ((char)param_1[4] == '\x14')) &&\n        (iVar4 = FUN_000386c0(*param_1), iVar4 == 0)))) {\n      *piVar6 = 1;\n      piVar6[4] = *param_1;\n      return 0;\n    }" if (parenthesized_expression "((*param_2 == 4) &&\n       ((((char)param_1[4] == '\x03' || ((char)param_1[4] == '\x14')) &&\n        (iVar4 = FUN_000386c0(*param_1), iVar4 == 0))))" ( (binary_expression "(*param_2 == 4) &&\n       ((((char)param_1[4] == '\x03' || ((char)param_1[4] == '\x14')) &&\n        (iVar4 = FUN_000386c0(*param_1), iVar4 == 0)))" (parenthesized_expression "(*param_2 == 4)" ( (binary_expression "*param_2 == 4" (pointer_expression "*param_2" * identifier) == number_literal) )) && (parenthesized_expression "((((char)param_1[4] == '\x03' || ((char)param_1[4] == '\x14')) &&\n        (iVar4 = FUN_000386c0(*param_1), iVar4 == 0)))" ( (parenthesized_expression "(((char)param_1[4] == '\x03' || ((char)param_1[4] == '\x14')) &&\n        (iVar4 = FUN_000386c0(*param_1), iVar4 == 0))" ( (binary_expression "((char)param_1[4] == '\x03' || ((char)param_1[4] == '\x14')) &&\n        (iVar4 = FUN_000386c0(*param_1), iVar4 == 0)" (parenthesized_expression "((char)param_1[4] == '\x03' || ((char)param_1[4] == '\x14'))" ( (binary_expression "(char)param_1[4] == '\x03' || ((char)param_1[4] == '\x14')" (binary_expression "(char)param_1[4] == '\x03'" (cast_expression "(char)param_1[4]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "param_1[4]" identifier [ number_literal ])) == (char_literal "'\x03'" ' escape_sequence ')) || (parenthesized_expression "((char)param_1[4] == '\x14')" ( (binary_expression "(char)param_1[4] == '\x14'" (cast_expression "(char)param_1[4]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "param_1[4]" identifier [ number_literal ])) == (char_literal "'\x14'" ' escape_sequence ')) ))) )) && (parenthesized_expression "(iVar4 = FUN_000386c0(*param_1), iVar4 == 0)" ( (comma_expression "iVar4 = FUN_000386c0(*param_1), iVar4 == 0" (assignment_expression "iVar4 = FUN_000386c0(*param_1)" identifier = (call_expression "FUN_000386c0(*param_1)" identifier (argument_list "(*param_1)" ( (pointer_expression "*param_1" * identifier) )))) , (binary_expression "iVar4 == 0" identifier == number_literal)) ))) )) ))) )) (compound_statement "{\n      *piVar6 = 1;\n      piVar6[4] = *param_1;\n      return 0;\n    }" { (expression_statement "*piVar6 = 1;" (assignment_expression "*piVar6 = 1" (pointer_expression "*piVar6" * identifier) = number_literal) ;) (expression_statement "piVar6[4] = *param_1;" (assignment_expression "piVar6[4] = *param_1" (subscript_expression "piVar6[4]" identifier [ number_literal ]) = (pointer_expression "*param_1" * identifier)) ;) (return_statement "return 0;" return number_literal ;) }))) (return_statement "return 0;" return number_literal ;) })) (switch_statement "switch(*piVar6) {\n  case 0:\n    goto LAB_0001fe99;\n  case 1:\n  case 2:\n    *piVar6 = *piVar6 + 1;\n    return 0;\n  case 3:\n    break;\n  case 4:\n    if (*param_2 == -1) {\n      if ((char)param_1[4] != '\x02') goto code_r0x0001ffb8;\n      local_54 = param_1[2];\n      *piVar6 = 5;\n      piVar6[7] = local_54;\n    }\n    else {\n      if ((*param_2 != 1) || ((char)param_1[4] != '\x02')) {\ncode_r0x0001ffb8:\n        *piVar6 = 8;\n        return 0;\n      }\n      uVar8 = param_1[2];\n      local_54 = (uVar8 & 0x7f) << ((byte)piVar6[8] & 0x1f) | piVar6[7];\n      piVar6[7] = local_54;\n      piVar6[8] = piVar6[8] + 7;\n      if ((char)uVar8 < '\0') {\n        return 0;\n      }\n      *piVar6 = 5;\n    }\n    if (local_54 != 0) {\n      return 0;\n    }\n    *piVar6 = 6;\n    return 0;\n  case 5:\n    if (*param_2 < 0) {\ncode_r0x0001ff8e:\n      *piVar6 = 8;\n      return 0;\n    }\n    iVar4 = piVar6[7] - *param_2;\n    piVar6[7] = iVar4;\n    if (iVar4 != 0) {\n      if (-1 < iVar4) {\n        return 0;\n      }\n      goto code_r0x0001ff8e;\n    }\n    goto code_r0x00020108;\n  case 6:\n    if (*param_2 != 1) {\n      return 0;\n    }\n    if ((char)param_1[4] != '\x02') {\n      return 0;\n    }\n    if (param_1[2] != 4 || param_1[3] != 0) {\n      return 0;\n    }\n    FUN_000249b0(1);\n    *piVar6 = 7;\n    piVar6[5] = DAT_000898a0;\n    iVar4 = FUN_00024dc0();\n    piVar6[6] = iVar4;\n    return 0;\n  case 7:\n    *piVar6 = 6;\n    if (*param_2 != 4) {\n      return 0;\n    }\n    cVar5 = (char)param_1[4];\n    if (cVar5 == '\x02') {\n      uVar8 = param_1[2];\n      iVar4 = param_1[3];\n      if ((int)(uint)(0x3f < uVar8) <= -iVar4) {\n        *(byte *)(piVar6[5] + 0x68 + piVar6[6]) = (byte)uVar8 | 0x40;\n        return 1;\n      }\n      if (-iVar4 < (int)(uint)(0xff < uVar8)) {\n        if (-iVar4 < (int)(uint)(0xffff < uVar8)) {\n          return 0;\n        }\n        *(undefined1 *)(piVar6[5] + 0x68 + piVar6[6]) = 3;\n        *param_2 = 2;\n        return 0;\n      }\n      *(undefined1 *)(piVar6[5] + 0x68 + piVar6[6]) = 2;\n      *param_2 = 1;\n      return 0;\n    }\n    if (cVar5 == '\x14') {\n      if (piVar6[2] != 1) {\n        return 0;\n      }\n      iVar4 = piVar6[5];\n      iVar12 = piVar6[6];\n      uVar2 = FUN_00021220(param_1);\n      iVar3 = 8;\n    }\n    else {\n      if ((cVar5 != '\v') && (cVar5 != '\x0e')) {\n        return 0;\n      }\n      if ((uint)piVar6[2] < 2) {\n        return 0;\n      }\n      iVar3 = *param_1;\n      if (*(int *)(iVar3 + 4) == 0) {\n        return 0;\n      }\n      iVar4 = param_1[1];\n      if (*(int *)(iVar4 + 4) == 0) {\n        return 0;\n      }\n      if (*(char *)(iVar3 + 0x18) != '\x14') {\n        return 0;\n      }\n      if (*(char *)(iVar4 + 0x18) != '\x02') {\n        return 0;\n      }\n      iVar12 = *(int *)(iVar4 + 0x14);\n      uVar8 = *(uint *)(iVar4 + 0x10);\n      if (cVar5 != '\v') {\n        uVar11 = uVar8 >> 5 & 1;\n        iVar12 = uVar11 << ((byte)uVar8 & 0x1f);\n        uVar8 = (uVar11 ^ 1) << ((byte)uVar8 & 0x1f);\n      }\n      if (iVar12 != 0) {\n        return 0;\n      }\n      if (piVar6[2] != uVar8) {\n        return 0;\n      }\n      iVar4 = piVar6[5];\n      iVar12 = piVar6[6];\n      uVar2 = FUN_00021220(iVar3 + 8);\n      iVar3 = piVar6[2] << 3;\n    }\n    FUN_00024b60(0xc,4,0,iVar3,uVar2,iVar12,iVar12 >> 0x1f,iVar4);\n    return 1;\n  default:\n    return 0;\n  }" switch (parenthesized_expression "(*piVar6)" ( (pointer_expression "*piVar6" * identifier) )) (compound_statement "{\n  case 0:\n    goto LAB_0001fe99;\n  case 1:\n  case 2:\n    *piVar6 = *piVar6 + 1;\n    return 0;\n  case 3:\n    break;\n  case 4:\n    if (*param_2 == -1) {\n      if ((char)param_1[4] != '\x02') goto code_r0x0001ffb8;\n      local_54 = param_1[2];\n      *piVar6 = 5;\n      piVar6[7] = local_54;\n    }\n    else {\n      if ((*param_2 != 1) || ((char)param_1[4] != '\x02')) {\ncode_r0x0001ffb8:\n        *piVar6 = 8;\n        return 0;\n      }\n      uVar8 = param_1[2];\n      local_54 = (uVar8 & 0x7f) << ((byte)piVar6[8] & 0x1f) | piVar6[7];\n      piVar6[7] = local_54;\n      piVar6[8] = piVar6[8] + 7;\n      if ((char)uVar8 < '\0') {\n        return 0;\n      }\n      *piVar6 = 5;\n    }\n    if (local_54 != 0) {\n      return 0;\n    }\n    *piVar6 = 6;\n    return 0;\n  case 5:\n    if (*param_2 < 0) {\ncode_r0x0001ff8e:\n      *piVar6 = 8;\n      return 0;\n    }\n    iVar4 = piVar6[7] - *param_2;\n    piVar6[7] = iVar4;\n    if (iVar4 != 0) {\n      if (-1 < iVar4) {\n        return 0;\n      }\n      goto code_r0x0001ff8e;\n    }\n    goto code_r0x00020108;\n  case 6:\n    if (*param_2 != 1) {\n      return 0;\n    }\n    if ((char)param_1[4] != '\x02') {\n      return 0;\n    }\n    if (param_1[2] != 4 || param_1[3] != 0) {\n      return 0;\n    }\n    FUN_000249b0(1);\n    *piVar6 = 7;\n    piVar6[5] = DAT_000898a0;\n    iVar4 = FUN_00024dc0();\n    piVar6[6] = iVar4;\n    return 0;\n  case 7:\n    *piVar6 = 6;\n    if (*param_2 != 4) {\n      return 0;\n    }\n    cVar5 = (char)param_1[4];\n    if (cVar5 == '\x02') {\n      uVar8 = param_1[2];\n      iVar4 = param_1[3];\n      if ((int)(uint)(0x3f < uVar8) <= -iVar4) {\n        *(byte *)(piVar6[5] + 0x68 + piVar6[6]) = (byte)uVar8 | 0x40;\n        return 1;\n      }\n      if (-iVar4 < (int)(uint)(0xff < uVar8)) {\n        if (-iVar4 < (int)(uint)(0xffff < uVar8)) {\n          return 0;\n        }\n        *(undefined1 *)(piVar6[5] + 0x68 + piVar6[6]) = 3;\n        *param_2 = 2;\n        return 0;\n      }\n      *(undefined1 *)(piVar6[5] + 0x68 + piVar6[6]) = 2;\n      *param_2 = 1;\n      return 0;\n    }\n    if (cVar5 == '\x14') {\n      if (piVar6[2] != 1) {\n        return 0;\n      }\n      iVar4 = piVar6[5];\n      iVar12 = piVar6[6];\n      uVar2 = FUN_00021220(param_1);\n      iVar3 = 8;\n    }\n    else {\n      if ((cVar5 != '\v') && (cVar5 != '\x0e')) {\n        return 0;\n      }\n      if ((uint)piVar6[2] < 2) {\n        return 0;\n      }\n      iVar3 = *param_1;\n      if (*(int *)(iVar3 + 4) == 0) {\n        return 0;\n      }\n      iVar4 = param_1[1];\n      if (*(int *)(iVar4 + 4) == 0) {\n        return 0;\n      }\n      if (*(char *)(iVar3 + 0x18) != '\x14') {\n        return 0;\n      }\n      if (*(char *)(iVar4 + 0x18) != '\x02') {\n        return 0;\n      }\n      iVar12 = *(int *)(iVar4 + 0x14);\n      uVar8 = *(uint *)(iVar4 + 0x10);\n      if (cVar5 != '\v') {\n        uVar11 = uVar8 >> 5 & 1;\n        iVar12 = uVar11 << ((byte)uVar8 & 0x1f);\n        uVar8 = (uVar11 ^ 1) << ((byte)uVar8 & 0x1f);\n      }\n      if (iVar12 != 0) {\n        return 0;\n      }\n      if (piVar6[2] != uVar8) {\n        return 0;\n      }\n      iVar4 = piVar6[5];\n      iVar12 = piVar6[6];\n      uVar2 = FUN_00021220(iVar3 + 8);\n      iVar3 = piVar6[2] << 3;\n    }\n    FUN_00024b60(0xc,4,0,iVar3,uVar2,iVar12,iVar12 >> 0x1f,iVar4);\n    return 1;\n  default:\n    return 0;\n  }" { (case_statement "case 0:\n    goto LAB_0001fe99;" case number_literal : (goto_statement "goto LAB_0001fe99;" goto statement_identifier ;)) (case_statement "case 1:" case number_literal :) (case_statement "case 2:\n    *piVar6 = *piVar6 + 1;\n    return 0;" case number_literal : (expression_statement "*piVar6 = *piVar6 + 1;" (assignment_expression "*piVar6 = *piVar6 + 1" (pointer_expression "*piVar6" * identifier) = (binary_expression "*piVar6 + 1" (pointer_expression "*piVar6" * identifier) + number_literal)) ;) (return_statement "return 0;" return number_literal ;)) (case_statement "case 3:\n    break;" case number_literal : (break_statement "break;" break ;)) (case_statement "case 4:\n    if (*param_2 == -1) {\n      if ((char)param_1[4] != '\x02') goto code_r0x0001ffb8;\n      local_54 = param_1[2];\n      *piVar6 = 5;\n      piVar6[7] = local_54;\n    }\n    else {\n      if ((*param_2 != 1) || ((char)param_1[4] != '\x02')) {\ncode_r0x0001ffb8:\n        *piVar6 = 8;\n        return 0;\n      }\n      uVar8 = param_1[2];\n      local_54 = (uVar8 & 0x7f) << ((byte)piVar6[8] & 0x1f) | piVar6[7];\n      piVar6[7] = local_54;\n      piVar6[8] = piVar6[8] + 7;\n      if ((char)uVar8 < '\0') {\n        return 0;\n      }\n      *piVar6 = 5;\n    }\n    if (local_54 != 0) {\n      return 0;\n    }\n    *piVar6 = 6;\n    return 0;" case number_literal : (if_statement "if (*param_2 == -1) {\n      if ((char)param_1[4] != '\x02') goto code_r0x0001ffb8;\n      local_54 = param_1[2];\n      *piVar6 = 5;\n      piVar6[7] = local_54;\n    }\n    else {\n      if ((*param_2 != 1) || ((char)param_1[4] != '\x02')) {\ncode_r0x0001ffb8:\n        *piVar6 = 8;\n        return 0;\n      }\n      uVar8 = param_1[2];\n      local_54 = (uVar8 & 0x7f) << ((byte)piVar6[8] & 0x1f) | piVar6[7];\n      piVar6[7] = local_54;\n      piVar6[8] = piVar6[8] + 7;\n      if ((char)uVar8 < '\0') {\n        return 0;\n      }\n      *piVar6 = 5;\n    }" if (parenthesized_expression "(*param_2 == -1)" ( (binary_expression "*param_2 == -1" (pointer_expression "*param_2" * identifier) == number_literal) )) (compound_statement "{\n      if ((char)param_1[4] != '\x02') goto code_r0x0001ffb8;\n      local_54 = param_1[2];\n      *piVar6 = 5;\n      piVar6[7] = local_54;\n    }" { (if_statement "if ((char)param_1[4] != '\x02') goto code_r0x0001ffb8;" if (parenthesized_expression "((char)param_1[4] != '\x02')" ( (binary_expression "(char)param_1[4] != '\x02'" (cast_expression "(char)param_1[4]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "param_1[4]" identifier [ number_literal ])) != (char_literal "'\x02'" ' escape_sequence ')) )) (goto_statement "goto code_r0x0001ffb8;" goto statement_identifier ;)) (expression_statement "local_54 = param_1[2];" (assignment_expression "local_54 = param_1[2]" identifier = (subscript_expression "param_1[2]" identifier [ number_literal ])) ;) (expression_statement "*piVar6 = 5;" (assignment_expression "*piVar6 = 5" (pointer_expression "*piVar6" * identifier) = number_literal) ;) (expression_statement "piVar6[7] = local_54;" (assignment_expression "piVar6[7] = local_54" (subscript_expression "piVar6[7]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n      if ((*param_2 != 1) || ((char)param_1[4] != '\x02')) {\ncode_r0x0001ffb8:\n        *piVar6 = 8;\n        return 0;\n      }\n      uVar8 = param_1[2];\n      local_54 = (uVar8 & 0x7f) << ((byte)piVar6[8] & 0x1f) | piVar6[7];\n      piVar6[7] = local_54;\n      piVar6[8] = piVar6[8] + 7;\n      if ((char)uVar8 < '\0') {\n        return 0;\n      }\n      *piVar6 = 5;\n    }" else (compound_statement "{\n      if ((*param_2 != 1) || ((char)param_1[4] != '\x02')) {\ncode_r0x0001ffb8:\n        *piVar6 = 8;\n        return 0;\n      }\n      uVar8 = param_1[2];\n      local_54 = (uVar8 & 0x7f) << ((byte)piVar6[8] & 0x1f) | piVar6[7];\n      piVar6[7] = local_54;\n      piVar6[8] = piVar6[8] + 7;\n      if ((char)uVar8 < '\0') {\n        return 0;\n      }\n      *piVar6 = 5;\n    }" { (if_statement "if ((*param_2 != 1) || ((char)param_1[4] != '\x02')) {\ncode_r0x0001ffb8:\n        *piVar6 = 8;\n        return 0;\n      }" if (parenthesized_expression "((*param_2 != 1) || ((char)param_1[4] != '\x02'))" ( (binary_expression "(*param_2 != 1) || ((char)param_1[4] != '\x02')" (parenthesized_expression "(*param_2 != 1)" ( (binary_expression "*param_2 != 1" (pointer_expression "*param_2" * identifier) != number_literal) )) || (parenthesized_expression "((char)param_1[4] != '\x02')" ( (binary_expression "(char)param_1[4] != '\x02'" (cast_expression "(char)param_1[4]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "param_1[4]" identifier [ number_literal ])) != (char_literal "'\x02'" ' escape_sequence ')) ))) )) (compound_statement "{\ncode_r0x0001ffb8:\n        *piVar6 = 8;\n        return 0;\n      }" { (labeled_statement "code_r0x0001ffb8:\n        *piVar6 = 8;" statement_identifier : (expression_statement "*piVar6 = 8;" (assignment_expression "*piVar6 = 8" (pointer_expression "*piVar6" * identifier) = number_literal) ;)) (return_statement "return 0;" return number_literal ;) })) (expression_statement "uVar8 = param_1[2];" (assignment_expression "uVar8 = param_1[2]" identifier = (subscript_expression "param_1[2]" identifier [ number_literal ])) ;) (expression_statement "local_54 = (uVar8 & 0x7f) << ((byte)piVar6[8] & 0x1f) | piVar6[7];" (assignment_expression "local_54 = (uVar8 & 0x7f) << ((byte)piVar6[8] & 0x1f) | piVar6[7]" identifier = (binary_expression "(uVar8 & 0x7f) << ((byte)piVar6[8] & 0x1f) | piVar6[7]" (binary_expression "(uVar8 & 0x7f) << ((byte)piVar6[8] & 0x1f)" (parenthesized_expression "(uVar8 & 0x7f)" ( (binary_expression "uVar8 & 0x7f" identifier & number_literal) )) << (parenthesized_expression "((byte)piVar6[8] & 0x1f)" ( (binary_expression "(byte)piVar6[8] & 0x1f" (cast_expression "(byte)piVar6[8]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "piVar6[8]" identifier [ number_literal ])) & number_literal) ))) | (subscript_expression "piVar6[7]" identifier [ number_literal ]))) ;) (expression_statement "piVar6[7] = local_54;" (assignment_expression "piVar6[7] = local_54" (subscript_expression "piVar6[7]" identifier [ number_literal ]) = identifier) ;) (expression_statement "piVar6[8] = piVar6[8] + 7;" (assignment_expression "piVar6[8] = piVar6[8] + 7" (subscript_expression "piVar6[8]" identifier [ number_literal ]) = (binary_expression "piVar6[8] + 7" (subscript_expression "piVar6[8]" identifier [ number_literal ]) + number_literal)) ;) (if_statement "if ((char)uVar8 < '\0') {\n        return 0;\n      }" if (parenthesized_expression "((char)uVar8 < '\0')" ( (binary_expression "(char)uVar8 < '\0'" (cast_expression "(char)uVar8" ( (type_descriptor "char" primitive_type) ) identifier) < (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        return 0;\n      }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "*piVar6 = 5;" (assignment_expression "*piVar6 = 5" (pointer_expression "*piVar6" * identifier) = number_literal) ;) }))) (if_statement "if (local_54 != 0) {\n      return 0;\n    }" if (parenthesized_expression "(local_54 != 0)" ( (binary_expression "local_54 != 0" identifier != number_literal) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "*piVar6 = 6;" (assignment_expression "*piVar6 = 6" (pointer_expression "*piVar6" * identifier) = number_literal) ;) (return_statement "return 0;" return number_literal ;)) (case_statement "case 5:\n    if (*param_2 < 0) {\ncode_r0x0001ff8e:\n      *piVar6 = 8;\n      return 0;\n    }\n    iVar4 = piVar6[7] - *param_2;\n    piVar6[7] = iVar4;\n    if (iVar4 != 0) {\n      if (-1 < iVar4) {\n        return 0;\n      }\n      goto code_r0x0001ff8e;\n    }\n    goto code_r0x00020108;" case number_literal : (if_statement "if (*param_2 < 0) {\ncode_r0x0001ff8e:\n      *piVar6 = 8;\n      return 0;\n    }" if (parenthesized_expression "(*param_2 < 0)" ( (binary_expression "*param_2 < 0" (pointer_expression "*param_2" * identifier) < number_literal) )) (compound_statement "{\ncode_r0x0001ff8e:\n      *piVar6 = 8;\n      return 0;\n    }" { (labeled_statement "code_r0x0001ff8e:\n      *piVar6 = 8;" statement_identifier : (expression_statement "*piVar6 = 8;" (assignment_expression "*piVar6 = 8" (pointer_expression "*piVar6" * identifier) = number_literal) ;)) (return_statement "return 0;" return number_literal ;) })) (expression_statement "iVar4 = piVar6[7] - *param_2;" (assignment_expression "iVar4 = piVar6[7] - *param_2" identifier = (binary_expression "piVar6[7] - *param_2" (subscript_expression "piVar6[7]" identifier [ number_literal ]) - (pointer_expression "*param_2" * identifier))) ;) (expression_statement "piVar6[7] = iVar4;" (assignment_expression "piVar6[7] = iVar4" (subscript_expression "piVar6[7]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (iVar4 != 0) {\n      if (-1 < iVar4) {\n        return 0;\n      }\n      goto code_r0x0001ff8e;\n    }" if (parenthesized_expression "(iVar4 != 0)" ( (binary_expression "iVar4 != 0" identifier != number_literal) )) (compound_statement "{\n      if (-1 < iVar4) {\n        return 0;\n      }\n      goto code_r0x0001ff8e;\n    }" { (if_statement "if (-1 < iVar4) {\n        return 0;\n      }" if (parenthesized_expression "(-1 < iVar4)" ( (binary_expression "-1 < iVar4" number_literal < identifier) )) (compound_statement "{\n        return 0;\n      }" { (return_statement "return 0;" return number_literal ;) })) (goto_statement "goto code_r0x0001ff8e;" goto statement_identifier ;) })) (goto_statement "goto code_r0x00020108;" goto statement_identifier ;)) (case_statement "case 6:\n    if (*param_2 != 1) {\n      return 0;\n    }\n    if ((char)param_1[4] != '\x02') {\n      return 0;\n    }\n    if (param_1[2] != 4 || param_1[3] != 0) {\n      return 0;\n    }\n    FUN_000249b0(1);\n    *piVar6 = 7;\n    piVar6[5] = DAT_000898a0;\n    iVar4 = FUN_00024dc0();\n    piVar6[6] = iVar4;\n    return 0;" case number_literal : (if_statement "if (*param_2 != 1) {\n      return 0;\n    }" if (parenthesized_expression "(*param_2 != 1)" ( (binary_expression "*param_2 != 1" (pointer_expression "*param_2" * identifier) != number_literal) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) (if_statement "if ((char)param_1[4] != '\x02') {\n      return 0;\n    }" if (parenthesized_expression "((char)param_1[4] != '\x02')" ( (binary_expression "(char)param_1[4] != '\x02'" (cast_expression "(char)param_1[4]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "param_1[4]" identifier [ number_literal ])) != (char_literal "'\x02'" ' escape_sequence ')) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) (if_statement "if (param_1[2] != 4 || param_1[3] != 0) {\n      return 0;\n    }" if (parenthesized_expression "(param_1[2] != 4 || param_1[3] != 0)" ( (binary_expression "param_1[2] != 4 || param_1[3] != 0" (binary_expression "param_1[2] != 4" (subscript_expression "param_1[2]" identifier [ number_literal ]) != number_literal) || (binary_expression "param_1[3] != 0" (subscript_expression "param_1[3]" identifier [ number_literal ]) != number_literal)) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "FUN_000249b0(1);" (call_expression "FUN_000249b0(1)" identifier (argument_list "(1)" ( number_literal ))) ;) (expression_statement "*piVar6 = 7;" (assignment_expression "*piVar6 = 7" (pointer_expression "*piVar6" * identifier) = number_literal) ;) (expression_statement "piVar6[5] = DAT_000898a0;" (assignment_expression "piVar6[5] = DAT_000898a0" (subscript_expression "piVar6[5]" identifier [ number_literal ]) = identifier) ;) (expression_statement "iVar4 = FUN_00024dc0();" (assignment_expression "iVar4 = FUN_00024dc0()" identifier = (call_expression "FUN_00024dc0()" identifier (argument_list "()" ( )))) ;) (expression_statement "piVar6[6] = iVar4;" (assignment_expression "piVar6[6] = iVar4" (subscript_expression "piVar6[6]" identifier [ number_literal ]) = identifier) ;) (return_statement "return 0;" return number_literal ;)) (case_statement "case 7:\n    *piVar6 = 6;\n    if (*param_2 != 4) {\n      return 0;\n    }\n    cVar5 = (char)param_1[4];\n    if (cVar5 == '\x02') {\n      uVar8 = param_1[2];\n      iVar4 = param_1[3];\n      if ((int)(uint)(0x3f < uVar8) <= -iVar4) {\n        *(byte *)(piVar6[5] + 0x68 + piVar6[6]) = (byte)uVar8 | 0x40;\n        return 1;\n      }\n      if (-iVar4 < (int)(uint)(0xff < uVar8)) {\n        if (-iVar4 < (int)(uint)(0xffff < uVar8)) {\n          return 0;\n        }\n        *(undefined1 *)(piVar6[5] + 0x68 + piVar6[6]) = 3;\n        *param_2 = 2;\n        return 0;\n      }\n      *(undefined1 *)(piVar6[5] + 0x68 + piVar6[6]) = 2;\n      *param_2 = 1;\n      return 0;\n    }\n    if (cVar5 == '\x14') {\n      if (piVar6[2] != 1) {\n        return 0;\n      }\n      iVar4 = piVar6[5];\n      iVar12 = piVar6[6];\n      uVar2 = FUN_00021220(param_1);\n      iVar3 = 8;\n    }\n    else {\n      if ((cVar5 != '\v') && (cVar5 != '\x0e')) {\n        return 0;\n      }\n      if ((uint)piVar6[2] < 2) {\n        return 0;\n      }\n      iVar3 = *param_1;\n      if (*(int *)(iVar3 + 4) == 0) {\n        return 0;\n      }\n      iVar4 = param_1[1];\n      if (*(int *)(iVar4 + 4) == 0) {\n        return 0;\n      }\n      if (*(char *)(iVar3 + 0x18) != '\x14') {\n        return 0;\n      }\n      if (*(char *)(iVar4 + 0x18) != '\x02') {\n        return 0;\n      }\n      iVar12 = *(int *)(iVar4 + 0x14);\n      uVar8 = *(uint *)(iVar4 + 0x10);\n      if (cVar5 != '\v') {\n        uVar11 = uVar8 >> 5 & 1;\n        iVar12 = uVar11 << ((byte)uVar8 & 0x1f);\n        uVar8 = (uVar11 ^ 1) << ((byte)uVar8 & 0x1f);\n      }\n      if (iVar12 != 0) {\n        return 0;\n      }\n      if (piVar6[2] != uVar8) {\n        return 0;\n      }\n      iVar4 = piVar6[5];\n      iVar12 = piVar6[6];\n      uVar2 = FUN_00021220(iVar3 + 8);\n      iVar3 = piVar6[2] << 3;\n    }\n    FUN_00024b60(0xc,4,0,iVar3,uVar2,iVar12,iVar12 >> 0x1f,iVar4);\n    return 1;" case number_literal : (expression_statement "*piVar6 = 6;" (assignment_expression "*piVar6 = 6" (pointer_expression "*piVar6" * identifier) = number_literal) ;) (if_statement "if (*param_2 != 4) {\n      return 0;\n    }" if (parenthesized_expression "(*param_2 != 4)" ( (binary_expression "*param_2 != 4" (pointer_expression "*param_2" * identifier) != number_literal) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "cVar5 = (char)param_1[4];" (assignment_expression "cVar5 = (char)param_1[4]" identifier = (cast_expression "(char)param_1[4]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "param_1[4]" identifier [ number_literal ]))) ;) (if_statement "if (cVar5 == '\x02') {\n      uVar8 = param_1[2];\n      iVar4 = param_1[3];\n      if ((int)(uint)(0x3f < uVar8) <= -iVar4) {\n        *(byte *)(piVar6[5] + 0x68 + piVar6[6]) = (byte)uVar8 | 0x40;\n        return 1;\n      }\n      if (-iVar4 < (int)(uint)(0xff < uVar8)) {\n        if (-iVar4 < (int)(uint)(0xffff < uVar8)) {\n          return 0;\n        }\n        *(undefined1 *)(piVar6[5] + 0x68 + piVar6[6]) = 3;\n        *param_2 = 2;\n        return 0;\n      }\n      *(undefined1 *)(piVar6[5] + 0x68 + piVar6[6]) = 2;\n      *param_2 = 1;\n      return 0;\n    }" if (parenthesized_expression "(cVar5 == '\x02')" ( (binary_expression "cVar5 == '\x02'" identifier == (char_literal "'\x02'" ' escape_sequence ')) )) (compound_statement "{\n      uVar8 = param_1[2];\n      iVar4 = param_1[3];\n      if ((int)(uint)(0x3f < uVar8) <= -iVar4) {\n        *(byte *)(piVar6[5] + 0x68 + piVar6[6]) = (byte)uVar8 | 0x40;\n        return 1;\n      }\n      if (-iVar4 < (int)(uint)(0xff < uVar8)) {\n        if (-iVar4 < (int)(uint)(0xffff < uVar8)) {\n          return 0;\n        }\n        *(undefined1 *)(piVar6[5] + 0x68 + piVar6[6]) = 3;\n        *param_2 = 2;\n        return 0;\n      }\n      *(undefined1 *)(piVar6[5] + 0x68 + piVar6[6]) = 2;\n      *param_2 = 1;\n      return 0;\n    }" { (expression_statement "uVar8 = param_1[2];" (assignment_expression "uVar8 = param_1[2]" identifier = (subscript_expression "param_1[2]" identifier [ number_literal ])) ;) (expression_statement "iVar4 = param_1[3];" (assignment_expression "iVar4 = param_1[3]" identifier = (subscript_expression "param_1[3]" identifier [ number_literal ])) ;) (if_statement "if ((int)(uint)(0x3f < uVar8) <= -iVar4) {\n        *(byte *)(piVar6[5] + 0x68 + piVar6[6]) = (byte)uVar8 | 0x40;\n        return 1;\n      }" if (parenthesized_expression "((int)(uint)(0x3f < uVar8) <= -iVar4)" ( (binary_expression "(int)(uint)(0x3f < uVar8) <= -iVar4" (cast_expression "(int)(uint)(0x3f < uVar8)" ( (type_descriptor "int" primitive_type) ) (call_expression "(uint)(0x3f < uVar8)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(0x3f < uVar8)" ( (binary_expression "0x3f < uVar8" number_literal < identifier) )))) <= (unary_expression "-iVar4" - identifier)) )) (compound_statement "{\n        *(byte *)(piVar6[5] + 0x68 + piVar6[6]) = (byte)uVar8 | 0x40;\n        return 1;\n      }" { (expression_statement "*(byte *)(piVar6[5] + 0x68 + piVar6[6]) = (byte)uVar8 | 0x40;" (assignment_expression "*(byte *)(piVar6[5] + 0x68 + piVar6[6]) = (byte)uVar8 | 0x40" (pointer_expression "*(byte *)(piVar6[5] + 0x68 + piVar6[6])" * (cast_expression "(byte *)(piVar6[5] + 0x68 + piVar6[6])" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar6[5] + 0x68 + piVar6[6])" ( (binary_expression "piVar6[5] + 0x68 + piVar6[6]" (binary_expression "piVar6[5] + 0x68" (subscript_expression "piVar6[5]" identifier [ number_literal ]) + number_literal) + (subscript_expression "piVar6[6]" identifier [ number_literal ])) )))) = (binary_expression "(byte)uVar8 | 0x40" (cast_expression "(byte)uVar8" ( (type_descriptor "byte" type_identifier) ) identifier) | number_literal)) ;) (return_statement "return 1;" return number_literal ;) })) (if_statement "if (-iVar4 < (int)(uint)(0xff < uVar8)) {\n        if (-iVar4 < (int)(uint)(0xffff < uVar8)) {\n          return 0;\n        }\n        *(undefined1 *)(piVar6[5] + 0x68 + piVar6[6]) = 3;\n        *param_2 = 2;\n        return 0;\n      }" if (parenthesized_expression "(-iVar4 < (int)(uint)(0xff < uVar8))" ( (binary_expression "-iVar4 < (int)(uint)(0xff < uVar8)" (unary_expression "-iVar4" - identifier) < (cast_expression "(int)(uint)(0xff < uVar8)" ( (type_descriptor "int" primitive_type) ) (call_expression "(uint)(0xff < uVar8)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(0xff < uVar8)" ( (binary_expression "0xff < uVar8" number_literal < identifier) ))))) )) (compound_statement "{\n        if (-iVar4 < (int)(uint)(0xffff < uVar8)) {\n          return 0;\n        }\n        *(undefined1 *)(piVar6[5] + 0x68 + piVar6[6]) = 3;\n        *param_2 = 2;\n        return 0;\n      }" { (if_statement "if (-iVar4 < (int)(uint)(0xffff < uVar8)) {\n          return 0;\n        }" if (parenthesized_expression "(-iVar4 < (int)(uint)(0xffff < uVar8))" ( (binary_expression "-iVar4 < (int)(uint)(0xffff < uVar8)" (unary_expression "-iVar4" - identifier) < (cast_expression "(int)(uint)(0xffff < uVar8)" ( (type_descriptor "int" primitive_type) ) (call_expression "(uint)(0xffff < uVar8)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(0xffff < uVar8)" ( (binary_expression "0xffff < uVar8" number_literal < identifier) ))))) )) (compound_statement "{\n          return 0;\n        }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "*(undefined1 *)(piVar6[5] + 0x68 + piVar6[6]) = 3;" (assignment_expression "*(undefined1 *)(piVar6[5] + 0x68 + piVar6[6]) = 3" (pointer_expression "*(undefined1 *)(piVar6[5] + 0x68 + piVar6[6])" * (cast_expression "(undefined1 *)(piVar6[5] + 0x68 + piVar6[6])" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar6[5] + 0x68 + piVar6[6])" ( (binary_expression "piVar6[5] + 0x68 + piVar6[6]" (binary_expression "piVar6[5] + 0x68" (subscript_expression "piVar6[5]" identifier [ number_literal ]) + number_literal) + (subscript_expression "piVar6[6]" identifier [ number_literal ])) )))) = number_literal) ;) (expression_statement "*param_2 = 2;" (assignment_expression "*param_2 = 2" (pointer_expression "*param_2" * identifier) = number_literal) ;) (return_statement "return 0;" return number_literal ;) })) (expression_statement "*(undefined1 *)(piVar6[5] + 0x68 + piVar6[6]) = 2;" (assignment_expression "*(undefined1 *)(piVar6[5] + 0x68 + piVar6[6]) = 2" (pointer_expression "*(undefined1 *)(piVar6[5] + 0x68 + piVar6[6])" * (cast_expression "(undefined1 *)(piVar6[5] + 0x68 + piVar6[6])" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar6[5] + 0x68 + piVar6[6])" ( (binary_expression "piVar6[5] + 0x68 + piVar6[6]" (binary_expression "piVar6[5] + 0x68" (subscript_expression "piVar6[5]" identifier [ number_literal ]) + number_literal) + (subscript_expression "piVar6[6]" identifier [ number_literal ])) )))) = number_literal) ;) (expression_statement "*param_2 = 1;" (assignment_expression "*param_2 = 1" (pointer_expression "*param_2" * identifier) = number_literal) ;) (return_statement "return 0;" return number_literal ;) })) (if_statement "if (cVar5 == '\x14') {\n      if (piVar6[2] != 1) {\n        return 0;\n      }\n      iVar4 = piVar6[5];\n      iVar12 = piVar6[6];\n      uVar2 = FUN_00021220(param_1);\n      iVar3 = 8;\n    }\n    else {\n      if ((cVar5 != '\v') && (cVar5 != '\x0e')) {\n        return 0;\n      }\n      if ((uint)piVar6[2] < 2) {\n        return 0;\n      }\n      iVar3 = *param_1;\n      if (*(int *)(iVar3 + 4) == 0) {\n        return 0;\n      }\n      iVar4 = param_1[1];\n      if (*(int *)(iVar4 + 4) == 0) {\n        return 0;\n      }\n      if (*(char *)(iVar3 + 0x18) != '\x14') {\n        return 0;\n      }\n      if (*(char *)(iVar4 + 0x18) != '\x02') {\n        return 0;\n      }\n      iVar12 = *(int *)(iVar4 + 0x14);\n      uVar8 = *(uint *)(iVar4 + 0x10);\n      if (cVar5 != '\v') {\n        uVar11 = uVar8 >> 5 & 1;\n        iVar12 = uVar11 << ((byte)uVar8 & 0x1f);\n        uVar8 = (uVar11 ^ 1) << ((byte)uVar8 & 0x1f);\n      }\n      if (iVar12 != 0) {\n        return 0;\n      }\n      if (piVar6[2] != uVar8) {\n        return 0;\n      }\n      iVar4 = piVar6[5];\n      iVar12 = piVar6[6];\n      uVar2 = FUN_00021220(iVar3 + 8);\n      iVar3 = piVar6[2] << 3;\n    }" if (parenthesized_expression "(cVar5 == '\x14')" ( (binary_expression "cVar5 == '\x14'" identifier == (char_literal "'\x14'" ' escape_sequence ')) )) (compound_statement "{\n      if (piVar6[2] != 1) {\n        return 0;\n      }\n      iVar4 = piVar6[5];\n      iVar12 = piVar6[6];\n      uVar2 = FUN_00021220(param_1);\n      iVar3 = 8;\n    }" { (if_statement "if (piVar6[2] != 1) {\n        return 0;\n      }" if (parenthesized_expression "(piVar6[2] != 1)" ( (binary_expression "piVar6[2] != 1" (subscript_expression "piVar6[2]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n        return 0;\n      }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "iVar4 = piVar6[5];" (assignment_expression "iVar4 = piVar6[5]" identifier = (subscript_expression "piVar6[5]" identifier [ number_literal ])) ;) (expression_statement "iVar12 = piVar6[6];" (assignment_expression "iVar12 = piVar6[6]" identifier = (subscript_expression "piVar6[6]" identifier [ number_literal ])) ;) (expression_statement "uVar2 = FUN_00021220(param_1);" (assignment_expression "uVar2 = FUN_00021220(param_1)" identifier = (call_expression "FUN_00021220(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (expression_statement "iVar3 = 8;" (assignment_expression "iVar3 = 8" identifier = number_literal) ;) }) (else_clause "else {\n      if ((cVar5 != '\v') && (cVar5 != '\x0e')) {\n        return 0;\n      }\n      if ((uint)piVar6[2] < 2) {\n        return 0;\n      }\n      iVar3 = *param_1;\n      if (*(int *)(iVar3 + 4) == 0) {\n        return 0;\n      }\n      iVar4 = param_1[1];\n      if (*(int *)(iVar4 + 4) == 0) {\n        return 0;\n      }\n      if (*(char *)(iVar3 + 0x18) != '\x14') {\n        return 0;\n      }\n      if (*(char *)(iVar4 + 0x18) != '\x02') {\n        return 0;\n      }\n      iVar12 = *(int *)(iVar4 + 0x14);\n      uVar8 = *(uint *)(iVar4 + 0x10);\n      if (cVar5 != '\v') {\n        uVar11 = uVar8 >> 5 & 1;\n        iVar12 = uVar11 << ((byte)uVar8 & 0x1f);\n        uVar8 = (uVar11 ^ 1) << ((byte)uVar8 & 0x1f);\n      }\n      if (iVar12 != 0) {\n        return 0;\n      }\n      if (piVar6[2] != uVar8) {\n        return 0;\n      }\n      iVar4 = piVar6[5];\n      iVar12 = piVar6[6];\n      uVar2 = FUN_00021220(iVar3 + 8);\n      iVar3 = piVar6[2] << 3;\n    }" else (compound_statement "{\n      if ((cVar5 != '\v') && (cVar5 != '\x0e')) {\n        return 0;\n      }\n      if ((uint)piVar6[2] < 2) {\n        return 0;\n      }\n      iVar3 = *param_1;\n      if (*(int *)(iVar3 + 4) == 0) {\n        return 0;\n      }\n      iVar4 = param_1[1];\n      if (*(int *)(iVar4 + 4) == 0) {\n        return 0;\n      }\n      if (*(char *)(iVar3 + 0x18) != '\x14') {\n        return 0;\n      }\n      if (*(char *)(iVar4 + 0x18) != '\x02') {\n        return 0;\n      }\n      iVar12 = *(int *)(iVar4 + 0x14);\n      uVar8 = *(uint *)(iVar4 + 0x10);\n      if (cVar5 != '\v') {\n        uVar11 = uVar8 >> 5 & 1;\n        iVar12 = uVar11 << ((byte)uVar8 & 0x1f);\n        uVar8 = (uVar11 ^ 1) << ((byte)uVar8 & 0x1f);\n      }\n      if (iVar12 != 0) {\n        return 0;\n      }\n      if (piVar6[2] != uVar8) {\n        return 0;\n      }\n      iVar4 = piVar6[5];\n      iVar12 = piVar6[6];\n      uVar2 = FUN_00021220(iVar3 + 8);\n      iVar3 = piVar6[2] << 3;\n    }" { (if_statement "if ((cVar5 != '\v') && (cVar5 != '\x0e')) {\n        return 0;\n      }" if (parenthesized_expression "((cVar5 != '\v') && (cVar5 != '\x0e'))" ( (binary_expression "(cVar5 != '\v') && (cVar5 != '\x0e')" (parenthesized_expression "(cVar5 != '\v')" ( (binary_expression "cVar5 != '\v'" identifier != (char_literal "'\v'" ' escape_sequence ')) )) && (parenthesized_expression "(cVar5 != '\x0e')" ( (binary_expression "cVar5 != '\x0e'" identifier != (char_literal "'\x0e'" ' escape_sequence ')) ))) )) (compound_statement "{\n        return 0;\n      }" { (return_statement "return 0;" return number_literal ;) })) (if_statement "if ((uint)piVar6[2] < 2) {\n        return 0;\n      }" if (parenthesized_expression "((uint)piVar6[2] < 2)" ( (binary_expression "(uint)piVar6[2] < 2" (cast_expression "(uint)piVar6[2]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "piVar6[2]" identifier [ number_literal ])) < number_literal) )) (compound_statement "{\n        return 0;\n      }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "iVar3 = *param_1;" (assignment_expression "iVar3 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (if_statement "if (*(int *)(iVar3 + 4) == 0) {\n        return 0;\n      }" if (parenthesized_expression "(*(int *)(iVar3 + 4) == 0)" ( (binary_expression "*(int *)(iVar3 + 4) == 0" (pointer_expression "*(int *)(iVar3 + 4)" * (cast_expression "(int *)(iVar3 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 4)" ( (binary_expression "iVar3 + 4" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n        return 0;\n      }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "iVar4 = param_1[1];" (assignment_expression "iVar4 = param_1[1]" identifier = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) (if_statement "if (*(int *)(iVar4 + 4) == 0) {\n        return 0;\n      }" if (parenthesized_expression "(*(int *)(iVar4 + 4) == 0)" ( (binary_expression "*(int *)(iVar4 + 4) == 0" (pointer_expression "*(int *)(iVar4 + 4)" * (cast_expression "(int *)(iVar4 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 4)" ( (binary_expression "iVar4 + 4" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n        return 0;\n      }" { (return_statement "return 0;" return number_literal ;) })) (if_statement "if (*(char *)(iVar3 + 0x18) != '\x14') {\n        return 0;\n      }" if (parenthesized_expression "(*(char *)(iVar3 + 0x18) != '\x14')" ( (binary_expression "*(char *)(iVar3 + 0x18) != '\x14'" (pointer_expression "*(char *)(iVar3 + 0x18)" * (cast_expression "(char *)(iVar3 + 0x18)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x18)" ( (binary_expression "iVar3 + 0x18" identifier + number_literal) )))) != (char_literal "'\x14'" ' escape_sequence ')) )) (compound_statement "{\n        return 0;\n      }" { (return_statement "return 0;" return number_literal ;) })) (if_statement "if (*(char *)(iVar4 + 0x18) != '\x02') {\n        return 0;\n      }" if (parenthesized_expression "(*(char *)(iVar4 + 0x18) != '\x02')" ( (binary_expression "*(char *)(iVar4 + 0x18) != '\x02'" (pointer_expression "*(char *)(iVar4 + 0x18)" * (cast_expression "(char *)(iVar4 + 0x18)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x18)" ( (binary_expression "iVar4 + 0x18" identifier + number_literal) )))) != (char_literal "'\x02'" ' escape_sequence ')) )) (compound_statement "{\n        return 0;\n      }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "iVar12 = *(int *)(iVar4 + 0x14);" (assignment_expression "iVar12 = *(int *)(iVar4 + 0x14)" identifier = (pointer_expression "*(int *)(iVar4 + 0x14)" * (cast_expression "(int *)(iVar4 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x14)" ( (binary_expression "iVar4 + 0x14" identifier + number_literal) ))))) ;) (expression_statement "uVar8 = *(uint *)(iVar4 + 0x10);" (assignment_expression "uVar8 = *(uint *)(iVar4 + 0x10)" identifier = (pointer_expression "*(uint *)(iVar4 + 0x10)" * (cast_expression "(uint *)(iVar4 + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x10)" ( (binary_expression "iVar4 + 0x10" identifier + number_literal) ))))) ;) (if_statement "if (cVar5 != '\v') {\n        uVar11 = uVar8 >> 5 & 1;\n        iVar12 = uVar11 << ((byte)uVar8 & 0x1f);\n        uVar8 = (uVar11 ^ 1) << ((byte)uVar8 & 0x1f);\n      }" if (parenthesized_expression "(cVar5 != '\v')" ( (binary_expression "cVar5 != '\v'" identifier != (char_literal "'\v'" ' escape_sequence ')) )) (compound_statement "{\n        uVar11 = uVar8 >> 5 & 1;\n        iVar12 = uVar11 << ((byte)uVar8 & 0x1f);\n        uVar8 = (uVar11 ^ 1) << ((byte)uVar8 & 0x1f);\n      }" { (expression_statement "uVar11 = uVar8 >> 5 & 1;" (assignment_expression "uVar11 = uVar8 >> 5 & 1" identifier = (binary_expression "uVar8 >> 5 & 1" (binary_expression "uVar8 >> 5" identifier >> number_literal) & number_literal)) ;) (expression_statement "iVar12 = uVar11 << ((byte)uVar8 & 0x1f);" (assignment_expression "iVar12 = uVar11 << ((byte)uVar8 & 0x1f)" identifier = (binary_expression "uVar11 << ((byte)uVar8 & 0x1f)" identifier << (parenthesized_expression "((byte)uVar8 & 0x1f)" ( (binary_expression "(byte)uVar8 & 0x1f" (cast_expression "(byte)uVar8" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )))) ;) (expression_statement "uVar8 = (uVar11 ^ 1) << ((byte)uVar8 & 0x1f);" (assignment_expression "uVar8 = (uVar11 ^ 1) << ((byte)uVar8 & 0x1f)" identifier = (binary_expression "(uVar11 ^ 1) << ((byte)uVar8 & 0x1f)" (parenthesized_expression "(uVar11 ^ 1)" ( (binary_expression "uVar11 ^ 1" identifier ^ number_literal) )) << (parenthesized_expression "((byte)uVar8 & 0x1f)" ( (binary_expression "(byte)uVar8 & 0x1f" (cast_expression "(byte)uVar8" ( (type_descriptor "byte" type_identifier) ) identifier) & number_literal) )))) ;) })) (if_statement "if (iVar12 != 0) {\n        return 0;\n      }" if (parenthesized_expression "(iVar12 != 0)" ( (binary_expression "iVar12 != 0" identifier != number_literal) )) (compound_statement "{\n        return 0;\n      }" { (return_statement "return 0;" return number_literal ;) })) (if_statement "if (piVar6[2] != uVar8) {\n        return 0;\n      }" if (parenthesized_expression "(piVar6[2] != uVar8)" ( (binary_expression "piVar6[2] != uVar8" (subscript_expression "piVar6[2]" identifier [ number_literal ]) != identifier) )) (compound_statement "{\n        return 0;\n      }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "iVar4 = piVar6[5];" (assignment_expression "iVar4 = piVar6[5]" identifier = (subscript_expression "piVar6[5]" identifier [ number_literal ])) ;) (expression_statement "iVar12 = piVar6[6];" (assignment_expression "iVar12 = piVar6[6]" identifier = (subscript_expression "piVar6[6]" identifier [ number_literal ])) ;) (expression_statement "uVar2 = FUN_00021220(iVar3 + 8);" (assignment_expression "uVar2 = FUN_00021220(iVar3 + 8)" identifier = (call_expression "FUN_00021220(iVar3 + 8)" identifier (argument_list "(iVar3 + 8)" ( (binary_expression "iVar3 + 8" identifier + number_literal) )))) ;) (expression_statement "iVar3 = piVar6[2] << 3;" (assignment_expression "iVar3 = piVar6[2] << 3" identifier = (binary_expression "piVar6[2] << 3" (subscript_expression "piVar6[2]" identifier [ number_literal ]) << number_literal)) ;) }))) (expression_statement "FUN_00024b60(0xc,4,0,iVar3,uVar2,iVar12,iVar12 >> 0x1f,iVar4);" (call_expression "FUN_00024b60(0xc,4,0,iVar3,uVar2,iVar12,iVar12 >> 0x1f,iVar4)" identifier (argument_list "(0xc,4,0,iVar3,uVar2,iVar12,iVar12 >> 0x1f,iVar4)" ( number_literal , number_literal , number_literal , identifier , identifier , identifier , (binary_expression "iVar12 >> 0x1f" identifier >> number_literal) , identifier ))) ;) (return_statement "return 1;" return number_literal ;)) (case_statement "default:\n    return 0;" default : (return_statement "return 0;" return number_literal ;)) })) (if_statement "if (piVar6[1] != 0) goto code_r0x0001ffd7;" if (parenthesized_expression "(piVar6[1] != 0)" ( (binary_expression "piVar6[1] != 0" (subscript_expression "piVar6[1]" identifier [ number_literal ]) != number_literal) )) (goto_statement "goto code_r0x0001ffd7;" goto statement_identifier ;)) (expression_statement "iStack_50 = **(int **)DAT_0008973c[0x20];" (assignment_expression "iStack_50 = **(int **)DAT_0008973c[0x20]" identifier = (pointer_expression "**(int **)DAT_0008973c[0x20]" * (pointer_expression "*(int **)DAT_0008973c[0x20]" * (cast_expression "(int **)DAT_0008973c[0x20]" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (subscript_expression "DAT_0008973c[0x20]" identifier [ number_literal ]))))) ;) (if_statement "if (iStack_50 != 0) {\n    uVar8 = *(uint *)(iStack_50 + 0x10);\n    iVar4 = *(int *)(iStack_50 + 0x14);\n    if (-iVar4 < (int)(uint)(4 < uVar8)) {\n      local_5c = 4;\n      iVar12 = 0;\n    }\n    else {\n      local_5c = 4;\n      do {\n        iStack_50 = *(int *)(iStack_50 + 0x30);\n        local_5c = local_5c - uVar8;\n        if (iStack_50 == 0) goto code_r0x00020226;\n        uVar8 = *(uint *)(iStack_50 + 0x10);\n        iVar4 = *(int *)(iStack_50 + 0x14);\n        iVar12 = (int)local_5c >> 0x1f;\n      } while ((SBORROW4(iVar12,iVar4) != SBORROW4(iVar12 - iVar4,(uint)(local_5c < uVar8))) ==\n               (int)((iVar12 - iVar4) - (uint)(local_5c < uVar8)) < 0);\n    }\n    iVar4 = (iVar4 - iVar12) - (uint)(uVar8 < local_5c);\n    uVar8 = (uint)(3 < uVar8 - local_5c);\n    bVar13 = iVar4 != 0 || (uint)-iVar4 < uVar8;\n    bVar15 = -uVar8 == iVar4;\n    if (-iVar4 < (int)uVar8) {\n      iVar4 = 0xc;\n      pbVar9 = (byte *)*DAT_0008973c;\n      pbVar7 = (byte *)".debug_frame";\n      do {\n        if (iVar4 == 0) break;\n        iVar4 = iVar4 + -1;\n        bVar13 = *pbVar9 < *pbVar7;\n        bVar15 = *pbVar9 == *pbVar7;\n        pbVar9 = pbVar9 + (uint)bVar16 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar16 * -2 + 1;\n      } while (bVar15);\n      cVar5 = -((!bVar13 && !bVar15) == bVar13);\n      if ((((*(char *)(iStack_50 + 0x68 + local_5c) == cVar5) &&\n           (*(char *)(iStack_50 + 0x69 + local_5c) == cVar5)) &&\n          (*(char *)(iStack_50 + 0x6a + local_5c) == cVar5)) &&\n         (*(char *)(iStack_50 + 0x6b + local_5c) == cVar5)) {\n        local_5c = local_5c + 4;\n        do {\n          iVar4 = (int)local_5c >> 0x1f;\n          iStack_40 = *(int *)(iStack_50 + 0x14);\n          uStack_44 = *(uint *)(iStack_50 + 0x10);\n          if ((SBORROW4(iVar4,iStack_40) != SBORROW4(iVar4 - iStack_40,(uint)(local_5c < uStack_44))\n              ) != (int)((iVar4 - iStack_40) - (uint)(local_5c < uStack_44)) < 0) {\n            if (((int)(uint)(uStack_44 != local_5c) <=\n                 (int)-((iStack_40 - iVar4) - (uint)(uStack_44 < local_5c))) ||\n               (*(char *)(iStack_50 + 0x68 + local_5c) != '\x01')) goto code_r0x00020226;\n            uVar8 = local_5c + 1;\n            iStack_38 = 0;\n            iVar4 = (*(int **)DAT_0008973c[0x20])[4];\n            goto code_r0x0002044e;\n          }\n          local_5c = local_5c - uStack_44;\n          iStack_50 = *(int *)(iStack_50 + 0x30);\n        } while (iStack_50 != 0);\n        piVar6[1] = 0;\n        goto code_r0x0002022d;\n      }\n    }\n  }" if (parenthesized_expression "(iStack_50 != 0)" ( (binary_expression "iStack_50 != 0" identifier != number_literal) )) (compound_statement "{\n    uVar8 = *(uint *)(iStack_50 + 0x10);\n    iVar4 = *(int *)(iStack_50 + 0x14);\n    if (-iVar4 < (int)(uint)(4 < uVar8)) {\n      local_5c = 4;\n      iVar12 = 0;\n    }\n    else {\n      local_5c = 4;\n      do {\n        iStack_50 = *(int *)(iStack_50 + 0x30);\n        local_5c = local_5c - uVar8;\n        if (iStack_50 == 0) goto code_r0x00020226;\n        uVar8 = *(uint *)(iStack_50 + 0x10);\n        iVar4 = *(int *)(iStack_50 + 0x14);\n        iVar12 = (int)local_5c >> 0x1f;\n      } while ((SBORROW4(iVar12,iVar4) != SBORROW4(iVar12 - iVar4,(uint)(local_5c < uVar8))) ==\n               (int)((iVar12 - iVar4) - (uint)(local_5c < uVar8)) < 0);\n    }\n    iVar4 = (iVar4 - iVar12) - (uint)(uVar8 < local_5c);\n    uVar8 = (uint)(3 < uVar8 - local_5c);\n    bVar13 = iVar4 != 0 || (uint)-iVar4 < uVar8;\n    bVar15 = -uVar8 == iVar4;\n    if (-iVar4 < (int)uVar8) {\n      iVar4 = 0xc;\n      pbVar9 = (byte *)*DAT_0008973c;\n      pbVar7 = (byte *)".debug_frame";\n      do {\n        if (iVar4 == 0) break;\n        iVar4 = iVar4 + -1;\n        bVar13 = *pbVar9 < *pbVar7;\n        bVar15 = *pbVar9 == *pbVar7;\n        pbVar9 = pbVar9 + (uint)bVar16 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar16 * -2 + 1;\n      } while (bVar15);\n      cVar5 = -((!bVar13 && !bVar15) == bVar13);\n      if ((((*(char *)(iStack_50 + 0x68 + local_5c) == cVar5) &&\n           (*(char *)(iStack_50 + 0x69 + local_5c) == cVar5)) &&\n          (*(char *)(iStack_50 + 0x6a + local_5c) == cVar5)) &&\n         (*(char *)(iStack_50 + 0x6b + local_5c) == cVar5)) {\n        local_5c = local_5c + 4;\n        do {\n          iVar4 = (int)local_5c >> 0x1f;\n          iStack_40 = *(int *)(iStack_50 + 0x14);\n          uStack_44 = *(uint *)(iStack_50 + 0x10);\n          if ((SBORROW4(iVar4,iStack_40) != SBORROW4(iVar4 - iStack_40,(uint)(local_5c < uStack_44))\n              ) != (int)((iVar4 - iStack_40) - (uint)(local_5c < uStack_44)) < 0) {\n            if (((int)(uint)(uStack_44 != local_5c) <=\n                 (int)-((iStack_40 - iVar4) - (uint)(uStack_44 < local_5c))) ||\n               (*(char *)(iStack_50 + 0x68 + local_5c) != '\x01')) goto code_r0x00020226;\n            uVar8 = local_5c + 1;\n            iStack_38 = 0;\n            iVar4 = (*(int **)DAT_0008973c[0x20])[4];\n            goto code_r0x0002044e;\n          }\n          local_5c = local_5c - uStack_44;\n          iStack_50 = *(int *)(iStack_50 + 0x30);\n        } while (iStack_50 != 0);\n        piVar6[1] = 0;\n        goto code_r0x0002022d;\n      }\n    }\n  }" { (expression_statement "uVar8 = *(uint *)(iStack_50 + 0x10);" (assignment_expression "uVar8 = *(uint *)(iStack_50 + 0x10)" identifier = (pointer_expression "*(uint *)(iStack_50 + 0x10)" * (cast_expression "(uint *)(iStack_50 + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iStack_50 + 0x10)" ( (binary_expression "iStack_50 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "iVar4 = *(int *)(iStack_50 + 0x14);" (assignment_expression "iVar4 = *(int *)(iStack_50 + 0x14)" identifier = (pointer_expression "*(int *)(iStack_50 + 0x14)" * (cast_expression "(int *)(iStack_50 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iStack_50 + 0x14)" ( (binary_expression "iStack_50 + 0x14" identifier + number_literal) ))))) ;) (if_statement "if (-iVar4 < (int)(uint)(4 < uVar8)) {\n      local_5c = 4;\n      iVar12 = 0;\n    }\n    else {\n      local_5c = 4;\n      do {\n        iStack_50 = *(int *)(iStack_50 + 0x30);\n        local_5c = local_5c - uVar8;\n        if (iStack_50 == 0) goto code_r0x00020226;\n        uVar8 = *(uint *)(iStack_50 + 0x10);\n        iVar4 = *(int *)(iStack_50 + 0x14);\n        iVar12 = (int)local_5c >> 0x1f;\n      } while ((SBORROW4(iVar12,iVar4) != SBORROW4(iVar12 - iVar4,(uint)(local_5c < uVar8))) ==\n               (int)((iVar12 - iVar4) - (uint)(local_5c < uVar8)) < 0);\n    }" if (parenthesized_expression "(-iVar4 < (int)(uint)(4 < uVar8))" ( (binary_expression "-iVar4 < (int)(uint)(4 < uVar8)" (unary_expression "-iVar4" - identifier) < (cast_expression "(int)(uint)(4 < uVar8)" ( (type_descriptor "int" primitive_type) ) (call_expression "(uint)(4 < uVar8)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(4 < uVar8)" ( (binary_expression "4 < uVar8" number_literal < identifier) ))))) )) (compound_statement "{\n      local_5c = 4;\n      iVar12 = 0;\n    }" { (expression_statement "local_5c = 4;" (assignment_expression "local_5c = 4" identifier = number_literal) ;) (expression_statement "iVar12 = 0;" (assignment_expression "iVar12 = 0" identifier = number_literal) ;) }) (else_clause "else {\n      local_5c = 4;\n      do {\n        iStack_50 = *(int *)(iStack_50 + 0x30);\n        local_5c = local_5c - uVar8;\n        if (iStack_50 == 0) goto code_r0x00020226;\n        uVar8 = *(uint *)(iStack_50 + 0x10);\n        iVar4 = *(int *)(iStack_50 + 0x14);\n        iVar12 = (int)local_5c >> 0x1f;\n      } while ((SBORROW4(iVar12,iVar4) != SBORROW4(iVar12 - iVar4,(uint)(local_5c < uVar8))) ==\n               (int)((iVar12 - iVar4) - (uint)(local_5c < uVar8)) < 0);\n    }" else (compound_statement "{\n      local_5c = 4;\n      do {\n        iStack_50 = *(int *)(iStack_50 + 0x30);\n        local_5c = local_5c - uVar8;\n        if (iStack_50 == 0) goto code_r0x00020226;\n        uVar8 = *(uint *)(iStack_50 + 0x10);\n        iVar4 = *(int *)(iStack_50 + 0x14);\n        iVar12 = (int)local_5c >> 0x1f;\n      } while ((SBORROW4(iVar12,iVar4) != SBORROW4(iVar12 - iVar4,(uint)(local_5c < uVar8))) ==\n               (int)((iVar12 - iVar4) - (uint)(local_5c < uVar8)) < 0);\n    }" { (expression_statement "local_5c = 4;" (assignment_expression "local_5c = 4" identifier = number_literal) ;) (do_statement "do {\n        iStack_50 = *(int *)(iStack_50 + 0x30);\n        local_5c = local_5c - uVar8;\n        if (iStack_50 == 0) goto code_r0x00020226;\n        uVar8 = *(uint *)(iStack_50 + 0x10);\n        iVar4 = *(int *)(iStack_50 + 0x14);\n        iVar12 = (int)local_5c >> 0x1f;\n      } while ((SBORROW4(iVar12,iVar4) != SBORROW4(iVar12 - iVar4,(uint)(local_5c < uVar8))) ==\n               (int)((iVar12 - iVar4) - (uint)(local_5c < uVar8)) < 0);" do (compound_statement "{\n        iStack_50 = *(int *)(iStack_50 + 0x30);\n        local_5c = local_5c - uVar8;\n        if (iStack_50 == 0) goto code_r0x00020226;\n        uVar8 = *(uint *)(iStack_50 + 0x10);\n        iVar4 = *(int *)(iStack_50 + 0x14);\n        iVar12 = (int)local_5c >> 0x1f;\n      }" { (expression_statement "iStack_50 = *(int *)(iStack_50 + 0x30);" (assignment_expression "iStack_50 = *(int *)(iStack_50 + 0x30)" identifier = (pointer_expression "*(int *)(iStack_50 + 0x30)" * (cast_expression "(int *)(iStack_50 + 0x30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iStack_50 + 0x30)" ( (binary_expression "iStack_50 + 0x30" identifier + number_literal) ))))) ;) (expression_statement "local_5c = local_5c - uVar8;" (assignment_expression "local_5c = local_5c - uVar8" identifier = (binary_expression "local_5c - uVar8" identifier - identifier)) ;) (if_statement "if (iStack_50 == 0) goto code_r0x00020226;" if (parenthesized_expression "(iStack_50 == 0)" ( (binary_expression "iStack_50 == 0" identifier == number_literal) )) (goto_statement "goto code_r0x00020226;" goto statement_identifier ;)) (expression_statement "uVar8 = *(uint *)(iStack_50 + 0x10);" (assignment_expression "uVar8 = *(uint *)(iStack_50 + 0x10)" identifier = (pointer_expression "*(uint *)(iStack_50 + 0x10)" * (cast_expression "(uint *)(iStack_50 + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iStack_50 + 0x10)" ( (binary_expression "iStack_50 + 0x10" identifier + number_literal) ))))) ;) (expression_statement "iVar4 = *(int *)(iStack_50 + 0x14);" (assignment_expression "iVar4 = *(int *)(iStack_50 + 0x14)" identifier = (pointer_expression "*(int *)(iStack_50 + 0x14)" * (cast_expression "(int *)(iStack_50 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iStack_50 + 0x14)" ( (binary_expression "iStack_50 + 0x14" identifier + number_literal) ))))) ;) (expression_statement "iVar12 = (int)local_5c >> 0x1f;" (assignment_expression "iVar12 = (int)local_5c >> 0x1f" identifier = (binary_expression "(int)local_5c >> 0x1f" (cast_expression "(int)local_5c" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal)) ;) }) while (parenthesized_expression "((SBORROW4(iVar12,iVar4) != SBORROW4(iVar12 - iVar4,(uint)(local_5c < uVar8))) ==\n               (int)((iVar12 - iVar4) - (uint)(local_5c < uVar8)) < 0)" ( (binary_expression "(SBORROW4(iVar12,iVar4) != SBORROW4(iVar12 - iVar4,(uint)(local_5c < uVar8))) ==\n               (int)((iVar12 - iVar4) - (uint)(local_5c < uVar8)) < 0" (parenthesized_expression "(SBORROW4(iVar12,iVar4) != SBORROW4(iVar12 - iVar4,(uint)(local_5c < uVar8)))" ( (binary_expression "SBORROW4(iVar12,iVar4) != SBORROW4(iVar12 - iVar4,(uint)(local_5c < uVar8))" (call_expression "SBORROW4(iVar12,iVar4)" identifier (argument_list "(iVar12,iVar4)" ( identifier , identifier ))) != (call_expression "SBORROW4(iVar12 - iVar4,(uint)(local_5c < uVar8))" identifier (argument_list "(iVar12 - iVar4,(uint)(local_5c < uVar8))" ( (binary_expression "iVar12 - iVar4" identifier - identifier) , (call_expression "(uint)(local_5c < uVar8)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(local_5c < uVar8)" ( (binary_expression "local_5c < uVar8" identifier < identifier) ))) )))) )) == (binary_expression "(int)((iVar12 - iVar4) - (uint)(local_5c < uVar8)) < 0" (cast_expression "(int)((iVar12 - iVar4) - (uint)(local_5c < uVar8))" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((iVar12 - iVar4) - (uint)(local_5c < uVar8))" ( (binary_expression "(iVar12 - iVar4) - (uint)(local_5c < uVar8)" (parenthesized_expression "(iVar12 - iVar4)" ( (binary_expression "iVar12 - iVar4" identifier - identifier) )) - (call_expression "(uint)(local_5c < uVar8)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(local_5c < uVar8)" ( (binary_expression "local_5c < uVar8" identifier < identifier) )))) ))) < number_literal)) )) ;) }))) (expression_statement "iVar4 = (iVar4 - iVar12) - (uint)(uVar8 < local_5c);" (assignment_expression "iVar4 = (iVar4 - iVar12) - (uint)(uVar8 < local_5c)" identifier = (binary_expression "(iVar4 - iVar12) - (uint)(uVar8 < local_5c)" (parenthesized_expression "(iVar4 - iVar12)" ( (binary_expression "iVar4 - iVar12" identifier - identifier) )) - (call_expression "(uint)(uVar8 < local_5c)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar8 < local_5c)" ( (binary_expression "uVar8 < local_5c" identifier < identifier) ))))) ;) (expression_statement "uVar8 = (uint)(3 < uVar8 - local_5c);" (assignment_expression "uVar8 = (uint)(3 < uVar8 - local_5c)" identifier = (call_expression "(uint)(3 < uVar8 - local_5c)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(3 < uVar8 - local_5c)" ( (binary_expression "3 < uVar8 - local_5c" number_literal < (binary_expression "uVar8 - local_5c" identifier - identifier)) )))) ;) (expression_statement "bVar13 = iVar4 != 0 || (uint)-iVar4 < uVar8;" (assignment_expression "bVar13 = iVar4 != 0 || (uint)-iVar4 < uVar8" identifier = (binary_expression "iVar4 != 0 || (uint)-iVar4 < uVar8" (binary_expression "iVar4 != 0" identifier != number_literal) || (binary_expression "(uint)-iVar4 < uVar8" (binary_expression "(uint)-iVar4" (parenthesized_expression "(uint)" ( identifier )) - identifier) < identifier))) ;) (expression_statement "bVar15 = -uVar8 == iVar4;" (assignment_expression "bVar15 = -uVar8 == iVar4" identifier = (binary_expression "-uVar8 == iVar4" (unary_expression "-uVar8" - identifier) == identifier)) ;) (if_statement "if (-iVar4 < (int)uVar8) {\n      iVar4 = 0xc;\n      pbVar9 = (byte *)*DAT_0008973c;\n      pbVar7 = (byte *)".debug_frame";\n      do {\n        if (iVar4 == 0) break;\n        iVar4 = iVar4 + -1;\n        bVar13 = *pbVar9 < *pbVar7;\n        bVar15 = *pbVar9 == *pbVar7;\n        pbVar9 = pbVar9 + (uint)bVar16 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar16 * -2 + 1;\n      } while (bVar15);\n      cVar5 = -((!bVar13 && !bVar15) == bVar13);\n      if ((((*(char *)(iStack_50 + 0x68 + local_5c) == cVar5) &&\n           (*(char *)(iStack_50 + 0x69 + local_5c) == cVar5)) &&\n          (*(char *)(iStack_50 + 0x6a + local_5c) == cVar5)) &&\n         (*(char *)(iStack_50 + 0x6b + local_5c) == cVar5)) {\n        local_5c = local_5c + 4;\n        do {\n          iVar4 = (int)local_5c >> 0x1f;\n          iStack_40 = *(int *)(iStack_50 + 0x14);\n          uStack_44 = *(uint *)(iStack_50 + 0x10);\n          if ((SBORROW4(iVar4,iStack_40) != SBORROW4(iVar4 - iStack_40,(uint)(local_5c < uStack_44))\n              ) != (int)((iVar4 - iStack_40) - (uint)(local_5c < uStack_44)) < 0) {\n            if (((int)(uint)(uStack_44 != local_5c) <=\n                 (int)-((iStack_40 - iVar4) - (uint)(uStack_44 < local_5c))) ||\n               (*(char *)(iStack_50 + 0x68 + local_5c) != '\x01')) goto code_r0x00020226;\n            uVar8 = local_5c + 1;\n            iStack_38 = 0;\n            iVar4 = (*(int **)DAT_0008973c[0x20])[4];\n            goto code_r0x0002044e;\n          }\n          local_5c = local_5c - uStack_44;\n          iStack_50 = *(int *)(iStack_50 + 0x30);\n        } while (iStack_50 != 0);\n        piVar6[1] = 0;\n        goto code_r0x0002022d;\n      }\n    }" if (parenthesized_expression "(-iVar4 < (int)uVar8)" ( (binary_expression "-iVar4 < (int)uVar8" (unary_expression "-iVar4" - identifier) < (cast_expression "(int)uVar8" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n      iVar4 = 0xc;\n      pbVar9 = (byte *)*DAT_0008973c;\n      pbVar7 = (byte *)".debug_frame";\n      do {\n        if (iVar4 == 0) break;\n        iVar4 = iVar4 + -1;\n        bVar13 = *pbVar9 < *pbVar7;\n        bVar15 = *pbVar9 == *pbVar7;\n        pbVar9 = pbVar9 + (uint)bVar16 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar16 * -2 + 1;\n      } while (bVar15);\n      cVar5 = -((!bVar13 && !bVar15) == bVar13);\n      if ((((*(char *)(iStack_50 + 0x68 + local_5c) == cVar5) &&\n           (*(char *)(iStack_50 + 0x69 + local_5c) == cVar5)) &&\n          (*(char *)(iStack_50 + 0x6a + local_5c) == cVar5)) &&\n         (*(char *)(iStack_50 + 0x6b + local_5c) == cVar5)) {\n        local_5c = local_5c + 4;\n        do {\n          iVar4 = (int)local_5c >> 0x1f;\n          iStack_40 = *(int *)(iStack_50 + 0x14);\n          uStack_44 = *(uint *)(iStack_50 + 0x10);\n          if ((SBORROW4(iVar4,iStack_40) != SBORROW4(iVar4 - iStack_40,(uint)(local_5c < uStack_44))\n              ) != (int)((iVar4 - iStack_40) - (uint)(local_5c < uStack_44)) < 0) {\n            if (((int)(uint)(uStack_44 != local_5c) <=\n                 (int)-((iStack_40 - iVar4) - (uint)(uStack_44 < local_5c))) ||\n               (*(char *)(iStack_50 + 0x68 + local_5c) != '\x01')) goto code_r0x00020226;\n            uVar8 = local_5c + 1;\n            iStack_38 = 0;\n            iVar4 = (*(int **)DAT_0008973c[0x20])[4];\n            goto code_r0x0002044e;\n          }\n          local_5c = local_5c - uStack_44;\n          iStack_50 = *(int *)(iStack_50 + 0x30);\n        } while (iStack_50 != 0);\n        piVar6[1] = 0;\n        goto code_r0x0002022d;\n      }\n    }" { (expression_statement "iVar4 = 0xc;" (assignment_expression "iVar4 = 0xc" identifier = number_literal) ;) (expression_statement "pbVar9 = (byte *)*DAT_0008973c;" (assignment_expression "pbVar9 = (byte *)*DAT_0008973c" identifier = (cast_expression "(byte *)*DAT_0008973c" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*DAT_0008973c" * identifier))) ;) (expression_statement "pbVar7 = (byte *)".debug_frame";" (assignment_expression "pbVar7 = (byte *)".debug_frame"" identifier = (cast_expression "(byte *)".debug_frame"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal "".debug_frame"" " string_content "))) ;) (do_statement "do {\n        if (iVar4 == 0) break;\n        iVar4 = iVar4 + -1;\n        bVar13 = *pbVar9 < *pbVar7;\n        bVar15 = *pbVar9 == *pbVar7;\n        pbVar9 = pbVar9 + (uint)bVar16 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar16 * -2 + 1;\n      } while (bVar15);" do (compound_statement "{\n        if (iVar4 == 0) break;\n        iVar4 = iVar4 + -1;\n        bVar13 = *pbVar9 < *pbVar7;\n        bVar15 = *pbVar9 == *pbVar7;\n        pbVar9 = pbVar9 + (uint)bVar16 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar16 * -2 + 1;\n      }" { (if_statement "if (iVar4 == 0) break;" if (parenthesized_expression "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar4 = iVar4 + -1;" (assignment_expression "iVar4 = iVar4 + -1" identifier = (binary_expression "iVar4 + -1" identifier + number_literal)) ;) (expression_statement "bVar13 = *pbVar9 < *pbVar7;" (assignment_expression "bVar13 = *pbVar9 < *pbVar7" identifier = (binary_expression "*pbVar9 < *pbVar7" (pointer_expression "*pbVar9" * identifier) < (pointer_expression "*pbVar7" * identifier))) ;) (expression_statement "bVar15 = *pbVar9 == *pbVar7;" (assignment_expression "bVar15 = *pbVar9 == *pbVar7" identifier = (binary_expression "*pbVar9 == *pbVar7" (pointer_expression "*pbVar9" * identifier) == (pointer_expression "*pbVar7" * identifier))) ;) (expression_statement "pbVar9 = pbVar9 + (uint)bVar16 * -2 + 1;" (assignment_expression "pbVar9 = pbVar9 + (uint)bVar16 * -2 + 1" identifier = (binary_expression "pbVar9 + (uint)bVar16 * -2 + 1" (binary_expression "pbVar9 + (uint)bVar16 * -2" identifier + (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar7 = pbVar7 + (uint)bVar16 * -2 + 1;" (assignment_expression "pbVar7 = pbVar7 + (uint)bVar16 * -2 + 1" identifier = (binary_expression "pbVar7 + (uint)bVar16 * -2 + 1" (binary_expression "pbVar7 + (uint)bVar16 * -2" identifier + (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar15)" ( identifier )) ;) (expression_statement "cVar5 = -((!bVar13 && !bVar15) == bVar13);" (assignment_expression "cVar5 = -((!bVar13 && !bVar15) == bVar13)" identifier = (unary_expression "-((!bVar13 && !bVar15) == bVar13)" - (parenthesized_expression "((!bVar13 && !bVar15) == bVar13)" ( (binary_expression "(!bVar13 && !bVar15) == bVar13" (parenthesized_expression "(!bVar13 && !bVar15)" ( (binary_expression "!bVar13 && !bVar15" (unary_expression "!bVar13" ! identifier) && (unary_expression "!bVar15" ! identifier)) )) == identifier) )))) ;) (if_statement "if ((((*(char *)(iStack_50 + 0x68 + local_5c) == cVar5) &&\n           (*(char *)(iStack_50 + 0x69 + local_5c) == cVar5)) &&\n          (*(char *)(iStack_50 + 0x6a + local_5c) == cVar5)) &&\n         (*(char *)(iStack_50 + 0x6b + local_5c) == cVar5)) {\n        local_5c = local_5c + 4;\n        do {\n          iVar4 = (int)local_5c >> 0x1f;\n          iStack_40 = *(int *)(iStack_50 + 0x14);\n          uStack_44 = *(uint *)(iStack_50 + 0x10);\n          if ((SBORROW4(iVar4,iStack_40) != SBORROW4(iVar4 - iStack_40,(uint)(local_5c < uStack_44))\n              ) != (int)((iVar4 - iStack_40) - (uint)(local_5c < uStack_44)) < 0) {\n            if (((int)(uint)(uStack_44 != local_5c) <=\n                 (int)-((iStack_40 - iVar4) - (uint)(uStack_44 < local_5c))) ||\n               (*(char *)(iStack_50 + 0x68 + local_5c) != '\x01')) goto code_r0x00020226;\n            uVar8 = local_5c + 1;\n            iStack_38 = 0;\n            iVar4 = (*(int **)DAT_0008973c[0x20])[4];\n            goto code_r0x0002044e;\n          }\n          local_5c = local_5c - uStack_44;\n          iStack_50 = *(int *)(iStack_50 + 0x30);\n        } while (iStack_50 != 0);\n        piVar6[1] = 0;\n        goto code_r0x0002022d;\n      }" if (parenthesized_expression "((((*(char *)(iStack_50 + 0x68 + local_5c) == cVar5) &&\n           (*(char *)(iStack_50 + 0x69 + local_5c) == cVar5)) &&\n          (*(char *)(iStack_50 + 0x6a + local_5c) == cVar5)) &&\n         (*(char *)(iStack_50 + 0x6b + local_5c) == cVar5))" ( (binary_expression "(((*(char *)(iStack_50 + 0x68 + local_5c) == cVar5) &&\n           (*(char *)(iStack_50 + 0x69 + local_5c) == cVar5)) &&\n          (*(char *)(iStack_50 + 0x6a + local_5c) == cVar5)) &&\n         (*(char *)(iStack_50 + 0x6b + local_5c) == cVar5)" (parenthesized_expression "(((*(char *)(iStack_50 + 0x68 + local_5c) == cVar5) &&\n           (*(char *)(iStack_50 + 0x69 + local_5c) == cVar5)) &&\n          (*(char *)(iStack_50 + 0x6a + local_5c) == cVar5))" ( (binary_expression "((*(char *)(iStack_50 + 0x68 + local_5c) == cVar5) &&\n           (*(char *)(iStack_50 + 0x69 + local_5c) == cVar5)) &&\n          (*(char *)(iStack_50 + 0x6a + local_5c) == cVar5)" (parenthesized_expression "((*(char *)(iStack_50 + 0x68 + local_5c) == cVar5) &&\n           (*(char *)(iStack_50 + 0x69 + local_5c) == cVar5))" ( (binary_expression "(*(char *)(iStack_50 + 0x68 + local_5c) == cVar5) &&\n           (*(char *)(iStack_50 + 0x69 + local_5c) == cVar5)" (parenthesized_expression "(*(char *)(iStack_50 + 0x68 + local_5c) == cVar5)" ( (binary_expression "*(char *)(iStack_50 + 0x68 + local_5c) == cVar5" (pointer_expression "*(char *)(iStack_50 + 0x68 + local_5c)" * (cast_expression "(char *)(iStack_50 + 0x68 + local_5c)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iStack_50 + 0x68 + local_5c)" ( (binary_expression "iStack_50 + 0x68 + local_5c" (binary_expression "iStack_50 + 0x68" identifier + number_literal) + identifier) )))) == identifier) )) && (parenthesized_expression "(*(char *)(iStack_50 + 0x69 + local_5c) == cVar5)" ( (binary_expression "*(char *)(iStack_50 + 0x69 + local_5c) == cVar5" (pointer_expression "*(char *)(iStack_50 + 0x69 + local_5c)" * (cast_expression "(char *)(iStack_50 + 0x69 + local_5c)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iStack_50 + 0x69 + local_5c)" ( (binary_expression "iStack_50 + 0x69 + local_5c" (binary_expression "iStack_50 + 0x69" identifier + number_literal) + identifier) )))) == identifier) ))) )) && (parenthesized_expression "(*(char *)(iStack_50 + 0x6a + local_5c) == cVar5)" ( (binary_expression "*(char *)(iStack_50 + 0x6a + local_5c) == cVar5" (pointer_expression "*(char *)(iStack_50 + 0x6a + local_5c)" * (cast_expression "(char *)(iStack_50 + 0x6a + local_5c)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iStack_50 + 0x6a + local_5c)" ( (binary_expression "iStack_50 + 0x6a + local_5c" (binary_expression "iStack_50 + 0x6a" identifier + number_literal) + identifier) )))) == identifier) ))) )) && (parenthesized_expression "(*(char *)(iStack_50 + 0x6b + local_5c) == cVar5)" ( (binary_expression "*(char *)(iStack_50 + 0x6b + local_5c) == cVar5" (pointer_expression "*(char *)(iStack_50 + 0x6b + local_5c)" * (cast_expression "(char *)(iStack_50 + 0x6b + local_5c)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iStack_50 + 0x6b + local_5c)" ( (binary_expression "iStack_50 + 0x6b + local_5c" (binary_expression "iStack_50 + 0x6b" identifier + number_literal) + identifier) )))) == identifier) ))) )) (compound_statement "{\n        local_5c = local_5c + 4;\n        do {\n          iVar4 = (int)local_5c >> 0x1f;\n          iStack_40 = *(int *)(iStack_50 + 0x14);\n          uStack_44 = *(uint *)(iStack_50 + 0x10);\n          if ((SBORROW4(iVar4,iStack_40) != SBORROW4(iVar4 - iStack_40,(uint)(local_5c < uStack_44))\n              ) != (int)((iVar4 - iStack_40) - (uint)(local_5c < uStack_44)) < 0) {\n            if (((int)(uint)(uStack_44 != local_5c) <=\n                 (int)-((iStack_40 - iVar4) - (uint)(uStack_44 < local_5c))) ||\n               (*(char *)(iStack_50 + 0x68 + local_5c) != '\x01')) goto code_r0x00020226;\n            uVar8 = local_5c + 1;\n            iStack_38 = 0;\n            iVar4 = (*(int **)DAT_0008973c[0x20])[4];\n            goto code_r0x0002044e;\n          }\n          local_5c = local_5c - uStack_44;\n          iStack_50 = *(int *)(iStack_50 + 0x30);\n        } while (iStack_50 != 0);\n        piVar6[1] = 0;\n        goto code_r0x0002022d;\n      }" { (expression_statement "local_5c = local_5c + 4;" (assignment_expression "local_5c = local_5c + 4" identifier = (binary_expression "local_5c + 4" identifier + number_literal)) ;) (do_statement "do {\n          iVar4 = (int)local_5c >> 0x1f;\n          iStack_40 = *(int *)(iStack_50 + 0x14);\n          uStack_44 = *(uint *)(iStack_50 + 0x10);\n          if ((SBORROW4(iVar4,iStack_40) != SBORROW4(iVar4 - iStack_40,(uint)(local_5c < uStack_44))\n              ) != (int)((iVar4 - iStack_40) - (uint)(local_5c < uStack_44)) < 0) {\n            if (((int)(uint)(uStack_44 != local_5c) <=\n                 (int)-((iStack_40 - iVar4) - (uint)(uStack_44 < local_5c))) ||\n               (*(char *)(iStack_50 + 0x68 + local_5c) != '\x01')) goto code_r0x00020226;\n            uVar8 = local_5c + 1;\n            iStack_38 = 0;\n            iVar4 = (*(int **)DAT_0008973c[0x20])[4];\n            goto code_r0x0002044e;\n          }\n          local_5c = local_5c - uStack_44;\n          iStack_50 = *(int *)(iStack_50 + 0x30);\n        } while (iStack_50 != 0);" do (compound_statement "{\n          iVar4 = (int)local_5c >> 0x1f;\n          iStack_40 = *(int *)(iStack_50 + 0x14);\n          uStack_44 = *(uint *)(iStack_50 + 0x10);\n          if ((SBORROW4(iVar4,iStack_40) != SBORROW4(iVar4 - iStack_40,(uint)(local_5c < uStack_44))\n              ) != (int)((iVar4 - iStack_40) - (uint)(local_5c < uStack_44)) < 0) {\n            if (((int)(uint)(uStack_44 != local_5c) <=\n                 (int)-((iStack_40 - iVar4) - (uint)(uStack_44 < local_5c))) ||\n               (*(char *)(iStack_50 + 0x68 + local_5c) != '\x01')) goto code_r0x00020226;\n            uVar8 = local_5c + 1;\n            iStack_38 = 0;\n            iVar4 = (*(int **)DAT_0008973c[0x20])[4];\n            goto code_r0x0002044e;\n          }\n          local_5c = local_5c - uStack_44;\n          iStack_50 = *(int *)(iStack_50 + 0x30);\n        }" { (expression_statement "iVar4 = (int)local_5c >> 0x1f;" (assignment_expression "iVar4 = (int)local_5c >> 0x1f" identifier = (binary_expression "(int)local_5c >> 0x1f" (cast_expression "(int)local_5c" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal)) ;) (expression_statement "iStack_40 = *(int *)(iStack_50 + 0x14);" (assignment_expression "iStack_40 = *(int *)(iStack_50 + 0x14)" identifier = (pointer_expression "*(int *)(iStack_50 + 0x14)" * (cast_expression "(int *)(iStack_50 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iStack_50 + 0x14)" ( (binary_expression "iStack_50 + 0x14" identifier + number_literal) ))))) ;) (expression_statement "uStack_44 = *(uint *)(iStack_50 + 0x10);" (assignment_expression "uStack_44 = *(uint *)(iStack_50 + 0x10)" identifier = (pointer_expression "*(uint *)(iStack_50 + 0x10)" * (cast_expression "(uint *)(iStack_50 + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iStack_50 + 0x10)" ( (binary_expression "iStack_50 + 0x10" identifier + number_literal) ))))) ;) (if_statement "if ((SBORROW4(iVar4,iStack_40) != SBORROW4(iVar4 - iStack_40,(uint)(local_5c < uStack_44))\n              ) != (int)((iVar4 - iStack_40) - (uint)(local_5c < uStack_44)) < 0) {\n            if (((int)(uint)(uStack_44 != local_5c) <=\n                 (int)-((iStack_40 - iVar4) - (uint)(uStack_44 < local_5c))) ||\n               (*(char *)(iStack_50 + 0x68 + local_5c) != '\x01')) goto code_r0x00020226;\n            uVar8 = local_5c + 1;\n            iStack_38 = 0;\n            iVar4 = (*(int **)DAT_0008973c[0x20])[4];\n            goto code_r0x0002044e;\n          }" if (parenthesized_expression "((SBORROW4(iVar4,iStack_40) != SBORROW4(iVar4 - iStack_40,(uint)(local_5c < uStack_44))\n              ) != (int)((iVar4 - iStack_40) - (uint)(local_5c < uStack_44)) < 0)" ( (binary_expression "(SBORROW4(iVar4,iStack_40) != SBORROW4(iVar4 - iStack_40,(uint)(local_5c < uStack_44))\n              ) != (int)((iVar4 - iStack_40) - (uint)(local_5c < uStack_44)) < 0" (parenthesized_expression "(SBORROW4(iVar4,iStack_40) != SBORROW4(iVar4 - iStack_40,(uint)(local_5c < uStack_44))\n              )" ( (binary_expression "SBORROW4(iVar4,iStack_40) != SBORROW4(iVar4 - iStack_40,(uint)(local_5c < uStack_44))" (call_expression "SBORROW4(iVar4,iStack_40)" identifier (argument_list "(iVar4,iStack_40)" ( identifier , identifier ))) != (call_expression "SBORROW4(iVar4 - iStack_40,(uint)(local_5c < uStack_44))" identifier (argument_list "(iVar4 - iStack_40,(uint)(local_5c < uStack_44))" ( (binary_expression "iVar4 - iStack_40" identifier - identifier) , (call_expression "(uint)(local_5c < uStack_44)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(local_5c < uStack_44)" ( (binary_expression "local_5c < uStack_44" identifier < identifier) ))) )))) )) != (binary_expression "(int)((iVar4 - iStack_40) - (uint)(local_5c < uStack_44)) < 0" (cast_expression "(int)((iVar4 - iStack_40) - (uint)(local_5c < uStack_44))" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((iVar4 - iStack_40) - (uint)(local_5c < uStack_44))" ( (binary_expression "(iVar4 - iStack_40) - (uint)(local_5c < uStack_44)" (parenthesized_expression "(iVar4 - iStack_40)" ( (binary_expression "iVar4 - iStack_40" identifier - identifier) )) - (call_expression "(uint)(local_5c < uStack_44)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(local_5c < uStack_44)" ( (binary_expression "local_5c < uStack_44" identifier < identifier) )))) ))) < number_literal)) )) (compound_statement "{\n            if (((int)(uint)(uStack_44 != local_5c) <=\n                 (int)-((iStack_40 - iVar4) - (uint)(uStack_44 < local_5c))) ||\n               (*(char *)(iStack_50 + 0x68 + local_5c) != '\x01')) goto code_r0x00020226;\n            uVar8 = local_5c + 1;\n            iStack_38 = 0;\n            iVar4 = (*(int **)DAT_0008973c[0x20])[4];\n            goto code_r0x0002044e;\n          }" { (if_statement "if (((int)(uint)(uStack_44 != local_5c) <=\n                 (int)-((iStack_40 - iVar4) - (uint)(uStack_44 < local_5c))) ||\n               (*(char *)(iStack_50 + 0x68 + local_5c) != '\x01')) goto code_r0x00020226;" if (parenthesized_expression "(((int)(uint)(uStack_44 != local_5c) <=\n                 (int)-((iStack_40 - iVar4) - (uint)(uStack_44 < local_5c))) ||\n               (*(char *)(iStack_50 + 0x68 + local_5c) != '\x01'))" ( (binary_expression "((int)(uint)(uStack_44 != local_5c) <=\n                 (int)-((iStack_40 - iVar4) - (uint)(uStack_44 < local_5c))) ||\n               (*(char *)(iStack_50 + 0x68 + local_5c) != '\x01')" (parenthesized_expression "((int)(uint)(uStack_44 != local_5c) <=\n                 (int)-((iStack_40 - iVar4) - (uint)(uStack_44 < local_5c)))" ( (binary_expression "(int)(uint)(uStack_44 != local_5c) <=\n                 (int)-((iStack_40 - iVar4) - (uint)(uStack_44 < local_5c))" (cast_expression "(int)(uint)(uStack_44 != local_5c)" ( (type_descriptor "int" primitive_type) ) (call_expression "(uint)(uStack_44 != local_5c)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uStack_44 != local_5c)" ( (binary_expression "uStack_44 != local_5c" identifier != identifier) )))) <= (cast_expression "(int)-((iStack_40 - iVar4) - (uint)(uStack_44 < local_5c))" ( (type_descriptor "int" primitive_type) ) (unary_expression "-((iStack_40 - iVar4) - (uint)(uStack_44 < local_5c))" - (parenthesized_expression "((iStack_40 - iVar4) - (uint)(uStack_44 < local_5c))" ( (binary_expression "(iStack_40 - iVar4) - (uint)(uStack_44 < local_5c)" (parenthesized_expression "(iStack_40 - iVar4)" ( (binary_expression "iStack_40 - iVar4" identifier - identifier) )) - (call_expression "(uint)(uStack_44 < local_5c)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uStack_44 < local_5c)" ( (binary_expression "uStack_44 < local_5c" identifier < identifier) )))) ))))) )) || (parenthesized_expression "(*(char *)(iStack_50 + 0x68 + local_5c) != '\x01')" ( (binary_expression "*(char *)(iStack_50 + 0x68 + local_5c) != '\x01'" (pointer_expression "*(char *)(iStack_50 + 0x68 + local_5c)" * (cast_expression "(char *)(iStack_50 + 0x68 + local_5c)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iStack_50 + 0x68 + local_5c)" ( (binary_expression "iStack_50 + 0x68 + local_5c" (binary_expression "iStack_50 + 0x68" identifier + number_literal) + identifier) )))) != (char_literal "'\x01'" ' escape_sequence ')) ))) )) (goto_statement "goto code_r0x00020226;" goto statement_identifier ;)) (expression_statement "uVar8 = local_5c + 1;" (assignment_expression "uVar8 = local_5c + 1" identifier = (binary_expression "local_5c + 1" identifier + number_literal)) ;) (expression_statement "iStack_38 = 0;" (assignment_expression "iStack_38 = 0" identifier = number_literal) ;) (expression_statement "iVar4 = (*(int **)DAT_0008973c[0x20])[4];" (assignment_expression "iVar4 = (*(int **)DAT_0008973c[0x20])[4]" identifier = (subscript_expression "(*(int **)DAT_0008973c[0x20])[4]" (parenthesized_expression "(*(int **)DAT_0008973c[0x20])" ( (pointer_expression "*(int **)DAT_0008973c[0x20]" * (cast_expression "(int **)DAT_0008973c[0x20]" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (subscript_expression "DAT_0008973c[0x20]" identifier [ number_literal ]))) )) [ number_literal ])) ;) (goto_statement "goto code_r0x0002044e;" goto statement_identifier ;) })) (expression_statement "local_5c = local_5c - uStack_44;" (assignment_expression "local_5c = local_5c - uStack_44" identifier = (binary_expression "local_5c - uStack_44" identifier - identifier)) ;) (expression_statement "iStack_50 = *(int *)(iStack_50 + 0x30);" (assignment_expression "iStack_50 = *(int *)(iStack_50 + 0x30)" identifier = (pointer_expression "*(int *)(iStack_50 + 0x30)" * (cast_expression "(int *)(iStack_50 + 0x30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iStack_50 + 0x30)" ( (binary_expression "iStack_50 + 0x30" identifier + number_literal) ))))) ;) }) while (parenthesized_expression "(iStack_50 != 0)" ( (binary_expression "iStack_50 != 0" identifier != number_literal) )) ;) (expression_statement "piVar6[1] = 0;" (assignment_expression "piVar6[1] = 0" (subscript_expression "piVar6[1]" identifier [ number_literal ]) = number_literal) ;) (goto_statement "goto code_r0x0002022d;" goto statement_identifier ;) })) })) })) (goto_statement "goto code_r0x00020226;" goto statement_identifier ;) (labeled_statement "code_r0x0002044e:\n  iStack_58 = (int)uVar8 >> 0x1f;" statement_identifier : (expression_statement "iStack_58 = (int)uVar8 >> 0x1f;" (assignment_expression "iStack_58 = (int)uVar8 >> 0x1f" identifier = (binary_expression "(int)uVar8 >> 0x1f" (cast_expression "(int)uVar8" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal)) ;)) (if_statement "if ((SBORROW4(iStack_58,iStack_40) != SBORROW4(iStack_58 - iStack_40,(uint)(uVar8 < uStack_44)))\n      != (int)((iStack_58 - iStack_40) - (uint)(uVar8 < uStack_44)) < 0) {\n    cVar5 = *(char *)(iStack_50 + 0x68 + uVar8);\n    if (cVar5 == '\0') {\ncode_r0x00020509:\n      uVar8 = uVar8 + 1;\n      goto code_r0x00020523;\n    }\n    local_5c = uVar8;\n    while( true ) {\n      if (iStack_38 < 9) {\n        acStack_26[iStack_38] = cVar5;\n        iStack_38 = iStack_38 + 1;\n      }\n      uVar8 = uVar8 + 1;\n      if (iStack_58 == iStack_40 + -1 + (uint)(uStack_44 != 0) && local_5c == uStack_44 - 1) break;\n      bVar13 = 0xfffffffe < local_5c;\n      local_5c = local_5c + 1;\n      iStack_58 = iStack_58 + (uint)bVar13;\n      cVar5 = *(char *)(iStack_50 + 0x68 + uVar8);\n      if (cVar5 == '\0') goto code_r0x00020509;\n    }\n    goto code_r0x0002044e;\n  }" if (parenthesized_expression "((SBORROW4(iStack_58,iStack_40) != SBORROW4(iStack_58 - iStack_40,(uint)(uVar8 < uStack_44)))\n      != (int)((iStack_58 - iStack_40) - (uint)(uVar8 < uStack_44)) < 0)" ( (binary_expression "(SBORROW4(iStack_58,iStack_40) != SBORROW4(iStack_58 - iStack_40,(uint)(uVar8 < uStack_44)))\n      != (int)((iStack_58 - iStack_40) - (uint)(uVar8 < uStack_44)) < 0" (parenthesized_expression "(SBORROW4(iStack_58,iStack_40) != SBORROW4(iStack_58 - iStack_40,(uint)(uVar8 < uStack_44)))" ( (binary_expression "SBORROW4(iStack_58,iStack_40) != SBORROW4(iStack_58 - iStack_40,(uint)(uVar8 < uStack_44))" (call_expression "SBORROW4(iStack_58,iStack_40)" identifier (argument_list "(iStack_58,iStack_40)" ( identifier , identifier ))) != (call_expression "SBORROW4(iStack_58 - iStack_40,(uint)(uVar8 < uStack_44))" identifier (argument_list "(iStack_58 - iStack_40,(uint)(uVar8 < uStack_44))" ( (binary_expression "iStack_58 - iStack_40" identifier - identifier) , (call_expression "(uint)(uVar8 < uStack_44)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar8 < uStack_44)" ( (binary_expression "uVar8 < uStack_44" identifier < identifier) ))) )))) )) != (binary_expression "(int)((iStack_58 - iStack_40) - (uint)(uVar8 < uStack_44)) < 0" (cast_expression "(int)((iStack_58 - iStack_40) - (uint)(uVar8 < uStack_44))" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((iStack_58 - iStack_40) - (uint)(uVar8 < uStack_44))" ( (binary_expression "(iStack_58 - iStack_40) - (uint)(uVar8 < uStack_44)" (parenthesized_expression "(iStack_58 - iStack_40)" ( (binary_expression "iStack_58 - iStack_40" identifier - identifier) )) - (call_expression "(uint)(uVar8 < uStack_44)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar8 < uStack_44)" ( (binary_expression "uVar8 < uStack_44" identifier < identifier) )))) ))) < number_literal)) )) (compound_statement "{\n    cVar5 = *(char *)(iStack_50 + 0x68 + uVar8);\n    if (cVar5 == '\0') {\ncode_r0x00020509:\n      uVar8 = uVar8 + 1;\n      goto code_r0x00020523;\n    }\n    local_5c = uVar8;\n    while( true ) {\n      if (iStack_38 < 9) {\n        acStack_26[iStack_38] = cVar5;\n        iStack_38 = iStack_38 + 1;\n      }\n      uVar8 = uVar8 + 1;\n      if (iStack_58 == iStack_40 + -1 + (uint)(uStack_44 != 0) && local_5c == uStack_44 - 1) break;\n      bVar13 = 0xfffffffe < local_5c;\n      local_5c = local_5c + 1;\n      iStack_58 = iStack_58 + (uint)bVar13;\n      cVar5 = *(char *)(iStack_50 + 0x68 + uVar8);\n      if (cVar5 == '\0') goto code_r0x00020509;\n    }\n    goto code_r0x0002044e;\n  }" { (expression_statement "cVar5 = *(char *)(iStack_50 + 0x68 + uVar8);" (assignment_expression "cVar5 = *(char *)(iStack_50 + 0x68 + uVar8)" identifier = (pointer_expression "*(char *)(iStack_50 + 0x68 + uVar8)" * (cast_expression "(char *)(iStack_50 + 0x68 + uVar8)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iStack_50 + 0x68 + uVar8)" ( (binary_expression "iStack_50 + 0x68 + uVar8" (binary_expression "iStack_50 + 0x68" identifier + number_literal) + identifier) ))))) ;) (if_statement "if (cVar5 == '\0') {\ncode_r0x00020509:\n      uVar8 = uVar8 + 1;\n      goto code_r0x00020523;\n    }" if (parenthesized_expression "(cVar5 == '\0')" ( (binary_expression "cVar5 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\ncode_r0x00020509:\n      uVar8 = uVar8 + 1;\n      goto code_r0x00020523;\n    }" { (labeled_statement "code_r0x00020509:\n      uVar8 = uVar8 + 1;" statement_identifier : (expression_statement "uVar8 = uVar8 + 1;" (assignment_expression "uVar8 = uVar8 + 1" identifier = (binary_expression "uVar8 + 1" identifier + number_literal)) ;)) (goto_statement "goto code_r0x00020523;" goto statement_identifier ;) })) (expression_statement "local_5c = uVar8;" (assignment_expression "local_5c = uVar8" identifier = identifier) ;) (while_statement "while( true ) {\n      if (iStack_38 < 9) {\n        acStack_26[iStack_38] = cVar5;\n        iStack_38 = iStack_38 + 1;\n      }\n      uVar8 = uVar8 + 1;\n      if (iStack_58 == iStack_40 + -1 + (uint)(uStack_44 != 0) && local_5c == uStack_44 - 1) break;\n      bVar13 = 0xfffffffe < local_5c;\n      local_5c = local_5c + 1;\n      iStack_58 = iStack_58 + (uint)bVar13;\n      cVar5 = *(char *)(iStack_50 + 0x68 + uVar8);\n      if (cVar5 == '\0') goto code_r0x00020509;\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      if (iStack_38 < 9) {\n        acStack_26[iStack_38] = cVar5;\n        iStack_38 = iStack_38 + 1;\n      }\n      uVar8 = uVar8 + 1;\n      if (iStack_58 == iStack_40 + -1 + (uint)(uStack_44 != 0) && local_5c == uStack_44 - 1) break;\n      bVar13 = 0xfffffffe < local_5c;\n      local_5c = local_5c + 1;\n      iStack_58 = iStack_58 + (uint)bVar13;\n      cVar5 = *(char *)(iStack_50 + 0x68 + uVar8);\n      if (cVar5 == '\0') goto code_r0x00020509;\n    }" { (if_statement "if (iStack_38 < 9) {\n        acStack_26[iStack_38] = cVar5;\n        iStack_38 = iStack_38 + 1;\n      }" if (parenthesized_expression "(iStack_38 < 9)" ( (binary_expression "iStack_38 < 9" identifier < number_literal) )) (compound_statement "{\n        acStack_26[iStack_38] = cVar5;\n        iStack_38 = iStack_38 + 1;\n      }" { (expression_statement "acStack_26[iStack_38] = cVar5;" (assignment_expression "acStack_26[iStack_38] = cVar5" (subscript_expression "acStack_26[iStack_38]" identifier [ identifier ]) = identifier) ;) (expression_statement "iStack_38 = iStack_38 + 1;" (assignment_expression "iStack_38 = iStack_38 + 1" identifier = (binary_expression "iStack_38 + 1" identifier + number_literal)) ;) })) (expression_statement "uVar8 = uVar8 + 1;" (assignment_expression "uVar8 = uVar8 + 1" identifier = (binary_expression "uVar8 + 1" identifier + number_literal)) ;) (if_statement "if (iStack_58 == iStack_40 + -1 + (uint)(uStack_44 != 0) && local_5c == uStack_44 - 1) break;" if (parenthesized_expression "(iStack_58 == iStack_40 + -1 + (uint)(uStack_44 != 0) && local_5c == uStack_44 - 1)" ( (binary_expression "iStack_58 == iStack_40 + -1 + (uint)(uStack_44 != 0) && local_5c == uStack_44 - 1" (binary_expression "iStack_58 == iStack_40 + -1 + (uint)(uStack_44 != 0)" identifier == (binary_expression "iStack_40 + -1 + (uint)(uStack_44 != 0)" (binary_expression "iStack_40 + -1" identifier + number_literal) + (call_expression "(uint)(uStack_44 != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uStack_44 != 0)" ( (binary_expression "uStack_44 != 0" identifier != number_literal) ))))) && (binary_expression "local_5c == uStack_44 - 1" identifier == (binary_expression "uStack_44 - 1" identifier - number_literal))) )) (break_statement "break;" break ;)) (expression_statement "bVar13 = 0xfffffffe < local_5c;" (assignment_expression "bVar13 = 0xfffffffe < local_5c" identifier = (binary_expression "0xfffffffe < local_5c" number_literal < identifier)) ;) (expression_statement "local_5c = local_5c + 1;" (assignment_expression "local_5c = local_5c + 1" identifier = (binary_expression "local_5c + 1" identifier + number_literal)) ;) (expression_statement "iStack_58 = iStack_58 + (uint)bVar13;" (assignment_expression "iStack_58 = iStack_58 + (uint)bVar13" identifier = (binary_expression "iStack_58 + (uint)bVar13" identifier + (cast_expression "(uint)bVar13" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) (expression_statement "cVar5 = *(char *)(iStack_50 + 0x68 + uVar8);" (assignment_expression "cVar5 = *(char *)(iStack_50 + 0x68 + uVar8)" identifier = (pointer_expression "*(char *)(iStack_50 + 0x68 + uVar8)" * (cast_expression "(char *)(iStack_50 + 0x68 + uVar8)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iStack_50 + 0x68 + uVar8)" ( (binary_expression "iStack_50 + 0x68 + uVar8" (binary_expression "iStack_50 + 0x68" identifier + number_literal) + identifier) ))))) ;) (if_statement "if (cVar5 == '\0') goto code_r0x00020509;" if (parenthesized_expression "(cVar5 == '\0')" ( (binary_expression "cVar5 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto code_r0x00020509;" goto statement_identifier ;)) })) (goto_statement "goto code_r0x0002044e;" goto statement_identifier ;) })) (expression_statement "iStack_50 = *(int *)(iStack_50 + 0x30);" (assignment_expression "iStack_50 = *(int *)(iStack_50 + 0x30)" identifier = (pointer_expression "*(int *)(iStack_50 + 0x30)" * (cast_expression "(int *)(iStack_50 + 0x30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iStack_50 + 0x30)" ( (binary_expression "iStack_50 + 0x30" identifier + number_literal) ))))) ;) (if_statement "if (iStack_50 == 0) goto code_r0x00020226;" if (parenthesized_expression "(iStack_50 == 0)" ( (binary_expression "iStack_50 == 0" identifier == number_literal) )) (goto_statement "goto code_r0x00020226;" goto statement_identifier ;)) (expression_statement "iStack_40 = *(int *)(iStack_50 + 0x14);" (assignment_expression "iStack_40 = *(int *)(iStack_50 + 0x14)" identifier = (pointer_expression "*(int *)(iStack_50 + 0x14)" * (cast_expression "(int *)(iStack_50 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iStack_50 + 0x14)" ( (binary_expression "iStack_50 + 0x14" identifier + number_literal) ))))) ;) (expression_statement "uVar8 = uVar8 - uStack_44;" (assignment_expression "uVar8 = uVar8 - uStack_44" identifier = (binary_expression "uVar8 - uStack_44" identifier - identifier)) ;) (expression_statement "uStack_44 = *(uint *)(iStack_50 + 0x10);" (assignment_expression "uStack_44 = *(uint *)(iStack_50 + 0x10)" identifier = (pointer_expression "*(uint *)(iStack_50 + 0x10)" * (cast_expression "(uint *)(iStack_50 + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iStack_50 + 0x10)" ( (binary_expression "iStack_50 + 0x10" identifier + number_literal) ))))) ;) (goto_statement "goto code_r0x0002044e;" goto statement_identifier ;) (while_statement "while( true ) {\n    iStack_50 = *(int *)(iStack_50 + 0x30);\n    uVar8 = uVar8 - *puVar1;\n    if (iStack_50 == 0) break;\ncode_r0x00020523:\n    puVar1 = (uint *)(iStack_50 + 0x10);\n    uVar11 = (uint)(uVar8 < *puVar1);\n    iVar12 = ((int)uVar8 >> 0x1f) - *(int *)(iStack_50 + 0x14);\n    if ((SBORROW4((int)uVar8 >> 0x1f,*(int *)(iStack_50 + 0x14)) != SBORROW4(iVar12,uVar11)) !=\n        (int)(iVar12 - uVar11) < 0) {\n      acStack_26[iStack_38] = '\0';\n      if (acStack_26[0] == '\0') goto code_r0x000205bb;\n      iVar12 = strcmp(acStack_26,"eh");\n      if (iVar12 == 0) goto code_r0x00020575;\n      if (acStack_26[0] == 'z') goto code_r0x000205bb;\n      break;\n    }\n  }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n    iStack_50 = *(int *)(iStack_50 + 0x30);\n    uVar8 = uVar8 - *puVar1;\n    if (iStack_50 == 0) break;\ncode_r0x00020523:\n    puVar1 = (uint *)(iStack_50 + 0x10);\n    uVar11 = (uint)(uVar8 < *puVar1);\n    iVar12 = ((int)uVar8 >> 0x1f) - *(int *)(iStack_50 + 0x14);\n    if ((SBORROW4((int)uVar8 >> 0x1f,*(int *)(iStack_50 + 0x14)) != SBORROW4(iVar12,uVar11)) !=\n        (int)(iVar12 - uVar11) < 0) {\n      acStack_26[iStack_38] = '\0';\n      if (acStack_26[0] == '\0') goto code_r0x000205bb;\n      iVar12 = strcmp(acStack_26,"eh");\n      if (iVar12 == 0) goto code_r0x00020575;\n      if (acStack_26[0] == 'z') goto code_r0x000205bb;\n      break;\n    }\n  }" { (expression_statement "iStack_50 = *(int *)(iStack_50 + 0x30);" (assignment_expression "iStack_50 = *(int *)(iStack_50 + 0x30)" identifier = (pointer_expression "*(int *)(iStack_50 + 0x30)" * (cast_expression "(int *)(iStack_50 + 0x30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iStack_50 + 0x30)" ( (binary_expression "iStack_50 + 0x30" identifier + number_literal) ))))) ;) (expression_statement "uVar8 = uVar8 - *puVar1;" (assignment_expression "uVar8 = uVar8 - *puVar1" identifier = (binary_expression "uVar8 - *puVar1" identifier - (pointer_expression "*puVar1" * identifier))) ;) (if_statement "if (iStack_50 == 0) break;" if (parenthesized_expression "(iStack_50 == 0)" ( (binary_expression "iStack_50 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (labeled_statement "code_r0x00020523:\n    puVar1 = (uint *)(iStack_50 + 0x10);" statement_identifier : (expression_statement "puVar1 = (uint *)(iStack_50 + 0x10);" (assignment_expression "puVar1 = (uint *)(iStack_50 + 0x10)" identifier = (cast_expression "(uint *)(iStack_50 + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iStack_50 + 0x10)" ( (binary_expression "iStack_50 + 0x10" identifier + number_literal) )))) ;)) (expression_statement "uVar11 = (uint)(uVar8 < *puVar1);" (assignment_expression "uVar11 = (uint)(uVar8 < *puVar1)" identifier = (call_expression "(uint)(uVar8 < *puVar1)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar8 < *puVar1)" ( (binary_expression "uVar8 < *puVar1" identifier < (pointer_expression "*puVar1" * identifier)) )))) ;) (expression_statement "iVar12 = ((int)uVar8 >> 0x1f) - *(int *)(iStack_50 + 0x14);" (assignment_expression "iVar12 = ((int)uVar8 >> 0x1f) - *(int *)(iStack_50 + 0x14)" identifier = (binary_expression "((int)uVar8 >> 0x1f) - *(int *)(iStack_50 + 0x14)" (parenthesized_expression "((int)uVar8 >> 0x1f)" ( (binary_expression "(int)uVar8 >> 0x1f" (cast_expression "(int)uVar8" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) )) - (pointer_expression "*(int *)(iStack_50 + 0x14)" * (cast_expression "(int *)(iStack_50 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iStack_50 + 0x14)" ( (binary_expression "iStack_50 + 0x14" identifier + number_literal) )))))) ;) (if_statement "if ((SBORROW4((int)uVar8 >> 0x1f,*(int *)(iStack_50 + 0x14)) != SBORROW4(iVar12,uVar11)) !=\n        (int)(iVar12 - uVar11) < 0) {\n      acStack_26[iStack_38] = '\0';\n      if (acStack_26[0] == '\0') goto code_r0x000205bb;\n      iVar12 = strcmp(acStack_26,"eh");\n      if (iVar12 == 0) goto code_r0x00020575;\n      if (acStack_26[0] == 'z') goto code_r0x000205bb;\n      break;\n    }" if (parenthesized_expression "((SBORROW4((int)uVar8 >> 0x1f,*(int *)(iStack_50 + 0x14)) != SBORROW4(iVar12,uVar11)) !=\n        (int)(iVar12 - uVar11) < 0)" ( (binary_expression "(SBORROW4((int)uVar8 >> 0x1f,*(int *)(iStack_50 + 0x14)) != SBORROW4(iVar12,uVar11)) !=\n        (int)(iVar12 - uVar11) < 0" (parenthesized_expression "(SBORROW4((int)uVar8 >> 0x1f,*(int *)(iStack_50 + 0x14)) != SBORROW4(iVar12,uVar11))" ( (binary_expression "SBORROW4((int)uVar8 >> 0x1f,*(int *)(iStack_50 + 0x14)) != SBORROW4(iVar12,uVar11)" (call_expression "SBORROW4((int)uVar8 >> 0x1f,*(int *)(iStack_50 + 0x14))" identifier (argument_list "((int)uVar8 >> 0x1f,*(int *)(iStack_50 + 0x14))" ( (binary_expression "(int)uVar8 >> 0x1f" (cast_expression "(int)uVar8" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) , (pointer_expression "*(int *)(iStack_50 + 0x14)" * (cast_expression "(int *)(iStack_50 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iStack_50 + 0x14)" ( (binary_expression "iStack_50 + 0x14" identifier + number_literal) )))) ))) != (call_expression "SBORROW4(iVar12,uVar11)" identifier (argument_list "(iVar12,uVar11)" ( identifier , identifier )))) )) != (binary_expression "(int)(iVar12 - uVar11) < 0" (cast_expression "(int)(iVar12 - uVar11)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(iVar12 - uVar11)" ( (binary_expression "iVar12 - uVar11" identifier - identifier) ))) < number_literal)) )) (compound_statement "{\n      acStack_26[iStack_38] = '\0';\n      if (acStack_26[0] == '\0') goto code_r0x000205bb;\n      iVar12 = strcmp(acStack_26,"eh");\n      if (iVar12 == 0) goto code_r0x00020575;\n      if (acStack_26[0] == 'z') goto code_r0x000205bb;\n      break;\n    }" { (expression_statement "acStack_26[iStack_38] = '\0';" (assignment_expression "acStack_26[iStack_38] = '\0'" (subscript_expression "acStack_26[iStack_38]" identifier [ identifier ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (if_statement "if (acStack_26[0] == '\0') goto code_r0x000205bb;" if (parenthesized_expression "(acStack_26[0] == '\0')" ( (binary_expression "acStack_26[0] == '\0'" (subscript_expression "acStack_26[0]" identifier [ number_literal ]) == (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto code_r0x000205bb;" goto statement_identifier ;)) (expression_statement "iVar12 = strcmp(acStack_26,"eh");" (assignment_expression "iVar12 = strcmp(acStack_26,"eh")" identifier = (call_expression "strcmp(acStack_26,"eh")" identifier (argument_list "(acStack_26,"eh")" ( identifier , (string_literal ""eh"" " string_content ") )))) ;) (if_statement "if (iVar12 == 0) goto code_r0x00020575;" if (parenthesized_expression "(iVar12 == 0)" ( (binary_expression "iVar12 == 0" identifier == number_literal) )) (goto_statement "goto code_r0x00020575;" goto statement_identifier ;)) (if_statement "if (acStack_26[0] == 'z') goto code_r0x000205bb;" if (parenthesized_expression "(acStack_26[0] == 'z')" ( (binary_expression "acStack_26[0] == 'z'" (subscript_expression "acStack_26[0]" identifier [ number_literal ]) == (char_literal "'z'" ' character ')) )) (goto_statement "goto code_r0x000205bb;" goto statement_identifier ;)) (break_statement "break;" break ;) })) })) (goto_statement "goto code_r0x00020226;" goto statement_identifier ;) (labeled_statement "code_r0x00020575:\n  if (iVar4 == 0) goto code_r0x00020600;" statement_identifier : (if_statement "if (iVar4 == 0) goto code_r0x00020600;" if (parenthesized_expression "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) )) (goto_statement "goto code_r0x00020600;" goto statement_identifier ;))) (if_statement "if ((*(int *)(iVar4 + 4) == iStack_50) && (*(uint *)(iVar4 + 8) == uVar8)) {\n    uVar8 = uVar8 + *(byte *)(iVar4 + 2);\n    goto code_r0x000205a6;\n  }" if (parenthesized_expression "((*(int *)(iVar4 + 4) == iStack_50) && (*(uint *)(iVar4 + 8) == uVar8))" ( (binary_expression "(*(int *)(iVar4 + 4) == iStack_50) && (*(uint *)(iVar4 + 8) == uVar8)" (parenthesized_expression "(*(int *)(iVar4 + 4) == iStack_50)" ( (binary_expression "*(int *)(iVar4 + 4) == iStack_50" (pointer_expression "*(int *)(iVar4 + 4)" * (cast_expression "(int *)(iVar4 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 4)" ( (binary_expression "iVar4 + 4" identifier + number_literal) )))) == identifier) )) && (parenthesized_expression "(*(uint *)(iVar4 + 8) == uVar8)" ( (binary_expression "*(uint *)(iVar4 + 8) == uVar8" (pointer_expression "*(uint *)(iVar4 + 8)" * (cast_expression "(uint *)(iVar4 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 8)" ( (binary_expression "iVar4 + 8" identifier + number_literal) )))) == identifier) ))) )) (compound_statement "{\n    uVar8 = uVar8 + *(byte *)(iVar4 + 2);\n    goto code_r0x000205a6;\n  }" { (expression_statement "uVar8 = uVar8 + *(byte *)(iVar4 + 2);" (assignment_expression "uVar8 = uVar8 + *(byte *)(iVar4 + 2)" identifier = (binary_expression "uVar8 + *(byte *)(iVar4 + 2)" identifier + (pointer_expression "*(byte *)(iVar4 + 2)" * (cast_expression "(byte *)(iVar4 + 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 2)" ( (binary_expression "iVar4 + 2" identifier + number_literal) )))))) ;) (goto_statement "goto code_r0x000205a6;" goto statement_identifier ;) })) (expression_statement "iVar4 = *(int *)(iVar4 + 0x28);" (assignment_expression "iVar4 = *(int *)(iVar4 + 0x28)" identifier = (pointer_expression "*(int *)(iVar4 + 0x28)" * (cast_expression "(int *)(iVar4 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0x28)" ( (binary_expression "iVar4 + 0x28" identifier + number_literal) ))))) ;) (goto_statement "goto code_r0x00020575;" goto statement_identifier ;) (labeled_statement "code_r0x000205bb:\n  cVar5 = *(char *)(iStack_50 + 0x68 + uVar8);" statement_identifier : (expression_statement "cVar5 = *(char *)(iStack_50 + 0x68 + uVar8);" (assignment_expression "cVar5 = *(char *)(iStack_50 + 0x68 + uVar8)" identifier = (pointer_expression "*(char *)(iStack_50 + 0x68 + uVar8)" * (cast_expression "(char *)(iStack_50 + 0x68 + uVar8)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iStack_50 + 0x68 + uVar8)" ( (binary_expression "iStack_50 + 0x68 + uVar8" (binary_expression "iStack_50 + 0x68" identifier + number_literal) + identifier) ))))) ;)) (expression_statement "iStack_3c = 0;" (assignment_expression "iStack_3c = 0" identifier = number_literal) ;) (if_statement "if (-1 < cVar5) {\n    iStack_3c = (int)cVar5;\n  }" if (parenthesized_expression "(-1 < cVar5)" ( (binary_expression "-1 < cVar5" number_literal < identifier) )) (compound_statement "{\n    iStack_3c = (int)cVar5;\n  }" { (expression_statement "iStack_3c = (int)cVar5;" (assignment_expression "iStack_3c = (int)cVar5" identifier = (cast_expression "(int)cVar5" ( (type_descriptor "int" primitive_type) ) identifier)) ;) })) (expression_statement "piVar6[1] = 1;" (assignment_expression "piVar6[1] = 1" (subscript_expression "piVar6[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar6[2] = iStack_3c;" (assignment_expression "piVar6[2] = iStack_3c" (subscript_expression "piVar6[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "piVar6[3] = (uint)(acStack_26[0] == 'z');" (assignment_expression "piVar6[3] = (uint)(acStack_26[0] == 'z')" (subscript_expression "piVar6[3]" identifier [ number_literal ]) = (call_expression "(uint)(acStack_26[0] == 'z')" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(acStack_26[0] == 'z')" ( (binary_expression "acStack_26[0] == 'z'" (subscript_expression "acStack_26[0]" identifier [ number_literal ]) == (char_literal "'z'" ' character ')) )))) ;) (labeled_statement "code_r0x0001ffd7:\n  if (piVar6[3] != 0) {\n    *piVar6 = 4;\n    piVar6[7] = 0;\n    piVar6[8] = 0;\n    return 0;\n  }" statement_identifier : (if_statement "if (piVar6[3] != 0) {\n    *piVar6 = 4;\n    piVar6[7] = 0;\n    piVar6[8] = 0;\n    return 0;\n  }" if (parenthesized_expression "(piVar6[3] != 0)" ( (binary_expression "piVar6[3] != 0" (subscript_expression "piVar6[3]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n    *piVar6 = 4;\n    piVar6[7] = 0;\n    piVar6[8] = 0;\n    return 0;\n  }" { (expression_statement "*piVar6 = 4;" (assignment_expression "*piVar6 = 4" (pointer_expression "*piVar6" * identifier) = number_literal) ;) (expression_statement "piVar6[7] = 0;" (assignment_expression "piVar6[7] = 0" (subscript_expression "piVar6[7]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar6[8] = 0;" (assignment_expression "piVar6[8] = 0" (subscript_expression "piVar6[8]" identifier [ number_literal ]) = number_literal) ;) (return_statement "return 0;" return number_literal ;) }))) (labeled_statement "code_r0x00020108:\n  *piVar6 = 6;" statement_identifier : (expression_statement "*piVar6 = 6;" (assignment_expression "*piVar6 = 6" (pointer_expression "*piVar6" * identifier) = number_literal) ;)) (return_statement "return 0;" return number_literal ;) (labeled_statement "code_r0x00020600:\n  uVar8 = uVar8 + 4;" statement_identifier : (expression_statement "uVar8 = uVar8 + 4;" (assignment_expression "uVar8 = uVar8 + 4" identifier = (binary_expression "uVar8 + 4" identifier + number_literal)) ;)) (labeled_statement "code_r0x000205a6:\n  do {\n    puVar1 = (uint *)(iStack_50 + 0x10);\n    uVar11 = (uint)(uVar8 < *puVar1);\n    iVar4 = ((int)uVar8 >> 0x1f) - *(int *)(iStack_50 + 0x14);\n    if ((SBORROW4((int)uVar8 >> 0x1f,*(int *)(iStack_50 + 0x14)) != SBORROW4(iVar4,uVar11)) !=\n        (int)(iVar4 - uVar11) < 0) goto code_r0x000205bb;\n    iStack_50 = *(int *)(iStack_50 + 0x30);\n    uVar8 = uVar8 - *puVar1;\n  } while (iStack_50 != 0);" statement_identifier : (do_statement "do {\n    puVar1 = (uint *)(iStack_50 + 0x10);\n    uVar11 = (uint)(uVar8 < *puVar1);\n    iVar4 = ((int)uVar8 >> 0x1f) - *(int *)(iStack_50 + 0x14);\n    if ((SBORROW4((int)uVar8 >> 0x1f,*(int *)(iStack_50 + 0x14)) != SBORROW4(iVar4,uVar11)) !=\n        (int)(iVar4 - uVar11) < 0) goto code_r0x000205bb;\n    iStack_50 = *(int *)(iStack_50 + 0x30);\n    uVar8 = uVar8 - *puVar1;\n  } while (iStack_50 != 0);" do (compound_statement "{\n    puVar1 = (uint *)(iStack_50 + 0x10);\n    uVar11 = (uint)(uVar8 < *puVar1);\n    iVar4 = ((int)uVar8 >> 0x1f) - *(int *)(iStack_50 + 0x14);\n    if ((SBORROW4((int)uVar8 >> 0x1f,*(int *)(iStack_50 + 0x14)) != SBORROW4(iVar4,uVar11)) !=\n        (int)(iVar4 - uVar11) < 0) goto code_r0x000205bb;\n    iStack_50 = *(int *)(iStack_50 + 0x30);\n    uVar8 = uVar8 - *puVar1;\n  }" { (expression_statement "puVar1 = (uint *)(iStack_50 + 0x10);" (assignment_expression "puVar1 = (uint *)(iStack_50 + 0x10)" identifier = (cast_expression "(uint *)(iStack_50 + 0x10)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iStack_50 + 0x10)" ( (binary_expression "iStack_50 + 0x10" identifier + number_literal) )))) ;) (expression_statement "uVar11 = (uint)(uVar8 < *puVar1);" (assignment_expression "uVar11 = (uint)(uVar8 < *puVar1)" identifier = (call_expression "(uint)(uVar8 < *puVar1)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(uVar8 < *puVar1)" ( (binary_expression "uVar8 < *puVar1" identifier < (pointer_expression "*puVar1" * identifier)) )))) ;) (expression_statement "iVar4 = ((int)uVar8 >> 0x1f) - *(int *)(iStack_50 + 0x14);" (assignment_expression "iVar4 = ((int)uVar8 >> 0x1f) - *(int *)(iStack_50 + 0x14)" identifier = (binary_expression "((int)uVar8 >> 0x1f) - *(int *)(iStack_50 + 0x14)" (parenthesized_expression "((int)uVar8 >> 0x1f)" ( (binary_expression "(int)uVar8 >> 0x1f" (cast_expression "(int)uVar8" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) )) - (pointer_expression "*(int *)(iStack_50 + 0x14)" * (cast_expression "(int *)(iStack_50 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iStack_50 + 0x14)" ( (binary_expression "iStack_50 + 0x14" identifier + number_literal) )))))) ;) (if_statement "if ((SBORROW4((int)uVar8 >> 0x1f,*(int *)(iStack_50 + 0x14)) != SBORROW4(iVar4,uVar11)) !=\n        (int)(iVar4 - uVar11) < 0) goto code_r0x000205bb;" if (parenthesized_expression "((SBORROW4((int)uVar8 >> 0x1f,*(int *)(iStack_50 + 0x14)) != SBORROW4(iVar4,uVar11)) !=\n        (int)(iVar4 - uVar11) < 0)" ( (binary_expression "(SBORROW4((int)uVar8 >> 0x1f,*(int *)(iStack_50 + 0x14)) != SBORROW4(iVar4,uVar11)) !=\n        (int)(iVar4 - uVar11) < 0" (parenthesized_expression "(SBORROW4((int)uVar8 >> 0x1f,*(int *)(iStack_50 + 0x14)) != SBORROW4(iVar4,uVar11))" ( (binary_expression "SBORROW4((int)uVar8 >> 0x1f,*(int *)(iStack_50 + 0x14)) != SBORROW4(iVar4,uVar11)" (call_expression "SBORROW4((int)uVar8 >> 0x1f,*(int *)(iStack_50 + 0x14))" identifier (argument_list "((int)uVar8 >> 0x1f,*(int *)(iStack_50 + 0x14))" ( (binary_expression "(int)uVar8 >> 0x1f" (cast_expression "(int)uVar8" ( (type_descriptor "int" primitive_type) ) identifier) >> number_literal) , (pointer_expression "*(int *)(iStack_50 + 0x14)" * (cast_expression "(int *)(iStack_50 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iStack_50 + 0x14)" ( (binary_expression "iStack_50 + 0x14" identifier + number_literal) )))) ))) != (call_expression "SBORROW4(iVar4,uVar11)" identifier (argument_list "(iVar4,uVar11)" ( identifier , identifier )))) )) != (binary_expression "(int)(iVar4 - uVar11) < 0" (cast_expression "(int)(iVar4 - uVar11)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(iVar4 - uVar11)" ( (binary_expression "iVar4 - uVar11" identifier - identifier) ))) < number_literal)) )) (goto_statement "goto code_r0x000205bb;" goto statement_identifier ;)) (expression_statement "iStack_50 = *(int *)(iStack_50 + 0x30);" (assignment_expression "iStack_50 = *(int *)(iStack_50 + 0x30)" identifier = (pointer_expression "*(int *)(iStack_50 + 0x30)" * (cast_expression "(int *)(iStack_50 + 0x30)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iStack_50 + 0x30)" ( (binary_expression "iStack_50 + 0x30" identifier + number_literal) ))))) ;) (expression_statement "uVar8 = uVar8 - *puVar1;" (assignment_expression "uVar8 = uVar8 - *puVar1" identifier = (binary_expression "uVar8 - *puVar1" identifier - (pointer_expression "*puVar1" * identifier))) ;) }) while (parenthesized_expression "(iStack_50 != 0)" ( (binary_expression "iStack_50 != 0" identifier != number_literal) )) ;)) (labeled_statement "code_r0x00020226:\n  piVar6[1] = 0;" statement_identifier : (expression_statement "piVar6[1] = 0;" (assignment_expression "piVar6[1] = 0" (subscript_expression "piVar6[1]" identifier [ number_literal ]) = number_literal) ;)) (labeled_statement "code_r0x0002022d:\n  *piVar6 = 8;" statement_identifier : (expression_statement "*piVar6 = 8;" (assignment_expression "*piVar6 = 8" (pointer_expression "*piVar6" * identifier) = number_literal) ;)) (return_statement "return 0;" return number_literal ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT == LIT)) ;) (if_statement if (parenthesized_expression ( (unary_expression ! IDENT) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (string_literal " string_content "))) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) < (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) == (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( IDENT )) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (unary_expression ! IDENT) && (unary_expression ! IDENT)) )) == IDENT)) ;) (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ LIT ]) < LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ LIT ]) == LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (if_statement if (parenthesized_expression ( IDENT )) (goto_statement goto statement_identifier ;)) (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 = LIT) ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (string_literal " string_content "))) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) < (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) == (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( IDENT )) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (unary_expression ! IDENT) && (unary_expression ! IDENT)) )) != IDENT) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) }))) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (subscript_expression IDENT [ LIT ]) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == LIT) )) && (parenthesized_expression ( (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) == (char_literal ' escape_sequence ')) || (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) == (char_literal ' escape_sequence ')) ))) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * IDENT) )))) , (binary_expression IDENT == LIT)) ))) )) ))) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (pointer_expression * IDENT)) ;) (return_statement return LIT ;) }))) (return_statement return LIT ;) })) (switch_statement switch (parenthesized_expression ( (pointer_expression * IDENT) )) (compound_statement { (case_statement case LIT : (goto_statement goto statement_identifier ;)) (case_statement case LIT :) (case_statement case LIT : (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (pointer_expression * IDENT) + LIT)) ;) (return_statement return LIT ;)) (case_statement case LIT : (break_statement break ;)) (case_statement case LIT : (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) != (char_literal ' escape_sequence ')) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != LIT) )) || (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) != (char_literal ' escape_sequence ')) ))) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;)) (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) << (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) & LIT) ))) | (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (subscript_expression IDENT [ LIT ]) + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < (char_literal ' escape_sequence ')) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (return_statement return LIT ;)) (case_statement case LIT : (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) < LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;)) (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ LIT ]) - (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (return_statement return LIT ;) })) (goto_statement goto statement_identifier ;) })) (goto_statement goto statement_identifier ;)) (case_statement case LIT : (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != LIT) )) (compound_statement { (return_statement return LIT ;) })) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) != (char_literal ' escape_sequence ')) )) (compound_statement { (return_statement return LIT ;) })) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) || (binary_expression (subscript_expression IDENT [ LIT ]) != LIT)) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (call_expression IDENT (argument_list ( LIT ))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (return_statement return LIT ;)) (case_statement case LIT : (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != LIT) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression LIT < IDENT) )))) <= (unary_expression - IDENT)) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) + (subscript_expression IDENT [ LIT ])) )))) = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) | LIT)) ;) (return_statement return LIT ;) })) (if_statement if (parenthesized_expression ( (binary_expression (unary_expression - IDENT) < (cast_expression ( (type_descriptor TYPE) ) (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression LIT < IDENT) ))))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (unary_expression - IDENT) < (cast_expression ( (type_descriptor TYPE) ) (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression LIT < IDENT) ))))) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) + (subscript_expression IDENT [ LIT ])) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (return_statement return LIT ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) + (subscript_expression IDENT [ LIT ])) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (return_statement return LIT ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) && (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) ))) )) (compound_statement { (return_statement return LIT ;) })) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) < LIT) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (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 { (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (subscript_expression 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) )))) == LIT) )) (compound_statement { (return_statement return 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 { (return_statement return 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 { (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT >> LIT) & LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT << (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT ^ LIT) )) << (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) )))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (return_statement return LIT ;) })) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != IDENT) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ LIT ]) << LIT)) ;) }))) (expression_statement (call_expression IDENT (argument_list ( LIT , LIT , LIT , IDENT , IDENT , IDENT , (binary_expression IDENT >> LIT) , IDENT ))) ;) (return_statement return LIT ;)) (case_statement default : (return_statement return LIT ;)) })) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (subscript_expression IDENT [ LIT ]))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (unary_expression - IDENT) < (cast_expression ( (type_descriptor TYPE) ) (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression LIT < IDENT) ))))) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT)) ;) }) while (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (call_expression IDENT (argument_list ( IDENT , IDENT ))) != (call_expression IDENT (argument_list ( (binary_expression IDENT - IDENT) , (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < IDENT) ))) )))) )) == (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT - IDENT) )) - (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < IDENT) )))) ))) < LIT)) )) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT - IDENT) )) - (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < IDENT) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression LIT < (binary_expression IDENT - IDENT)) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT != LIT) || (binary_expression (binary_expression (parenthesized_expression ( IDENT )) - IDENT) < IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (unary_expression - IDENT) == IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (unary_expression - IDENT) < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (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 *)) ) (string_literal " string_content "))) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) < (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) == (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) }) while (parenthesized_expression ( IDENT )) ;) (expression_statement (assignment_expression IDENT = (unary_expression - (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (unary_expression ! IDENT) && (unary_expression ! IDENT)) )) == IDENT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + IDENT) )))) == IDENT) )) && (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + IDENT) )))) == IDENT) ))) )) && (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + IDENT) )))) == IDENT) ))) )) && (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + IDENT) )))) == IDENT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (call_expression IDENT (argument_list ( IDENT , IDENT ))) != (call_expression IDENT (argument_list ( (binary_expression IDENT - IDENT) , (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < IDENT) ))) )))) )) != (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT - IDENT) )) - (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < IDENT) )))) ))) < LIT)) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT != IDENT) )))) <= (cast_expression ( (type_descriptor TYPE) ) (unary_expression - (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT - IDENT) )) - (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < IDENT) )))) ))))) )) || (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + IDENT) )))) != (char_literal ' escape_sequence ')) ))) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (subscript_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (subscript_expression IDENT [ LIT ]))) )) [ LIT ])) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (goto_statement goto statement_identifier ;) })) })) })) (goto_statement goto statement_identifier ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT)) ;)) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (call_expression IDENT (argument_list ( IDENT , IDENT ))) != (call_expression IDENT (argument_list ( (binary_expression IDENT - IDENT) , (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < IDENT) ))) )))) )) != (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT - IDENT) )) - (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < IDENT) )))) ))) < LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + IDENT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;)) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ IDENT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT == (binary_expression (binary_expression IDENT + LIT) + (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT != LIT) ))))) && (binary_expression IDENT == (binary_expression IDENT - LIT))) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression LIT < IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + IDENT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) (goto_statement goto statement_identifier ;)) })) (goto_statement goto statement_identifier ;) })) (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 == LIT) )) (goto_statement goto statement_identifier ;)) (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 = (binary_expression IDENT - IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (goto_statement goto statement_identifier ;) (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - (pointer_expression * IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;)) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < (pointer_expression * IDENT)) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )) - (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (call_expression IDENT (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ))) != (call_expression IDENT (argument_list ( IDENT , IDENT )))) )) != (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT - IDENT) ))) < LIT)) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ IDENT ]) = (char_literal ' escape_sequence ')) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == (char_literal ' escape_sequence ')) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content ") )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == (char_literal ' character ')) )) (goto_statement goto statement_identifier ;)) (break_statement break ;) })) })) (goto_statement goto statement_identifier ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;))) (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) )))) == IDENT) )) && (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == IDENT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (goto_statement goto statement_identifier ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + IDENT) ))))) ;)) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (subscript_expression IDENT [ LIT ]) == (char_literal ' character ')) )))) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (return_statement return LIT ;) }))) (labeled_statement statement_identifier : (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;)) (return_statement return LIT ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;)) (labeled_statement statement_identifier : (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT < (pointer_expression * IDENT)) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )) - (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (call_expression IDENT (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ))) != (call_expression IDENT (argument_list ( IDENT , IDENT )))) )) != (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT - IDENT) ))) < LIT)) )) (goto_statement goto statement_identifier ;)) (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 = (binary_expression IDENT - (pointer_expression * IDENT))) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;)) (return_statement return LIT ;) })))
(function_definition "undefined4 FUN_0001fe30(int *param_1,int *param_2)\n\n{\n  uint *puVar1;\n  undefined4 uVar2;\n  int iVar3;\n  int iVar4;\n  char cVar5;\n  int *piVar6;\n  byte *pbVar7;\n  uint uVar8;\n  byte *pbVar9;\n  byte *pbVar10;\n  uint uVar11;\n  int iVar12;\n  bool bVar13;\n  bool bVar14;\n  bool bVar15;\n  byte bVar16;\n  uint local_5c;\n  int iStack_58;\n  uint local_54;\n  int iStack_50;\n  uint uStack_44;\n  int iStack_40;\n  int iStack_3c;\n  int iStack_38;\n  char acStack_26 [18];\n  undefined4 uStack_14;\n  \n  bVar16 = 0;\n  uStack_14 = 0x1fe39;\n  bVar13 = false;\n  bVar15 = DAT_000897dc == 0;\n  if (!bVar15) {\n    return 0;\n  }\n  iVar4 = 9;\n  pbVar9 = (byte *)*DAT_0008973c;\n  pbVar7 = pbVar9;\n  pbVar10 = (byte *)".eh_frame";\n  do {\n    if (iVar4 == 0) break;\n    iVar4 = iVar4 + -1;\n    bVar13 = *pbVar7 < *pbVar10;\n    bVar15 = *pbVar7 == *pbVar10;\n    pbVar7 = pbVar7 + 1;\n    pbVar10 = pbVar10 + 1;\n  } while (bVar15);\n  bVar14 = false;\n  bVar13 = (!bVar13 && !bVar15) == bVar13;\n  if (bVar13) {\n    bVar14 = pbVar9[9] < 0x5f;\n    bVar13 = pbVar9[9] == 0x5f;\n    piVar6 = &DAT_000889e0;\n    if (bVar13) goto LAB_0001fe74;\n    if (DAT_000889e0 == 0) goto LAB_0001fe99;\n  }\n  else {\nLAB_0001fe74:\n    iVar4 = 0xc;\n    pbVar7 = (byte *)".debug_frame";\n    do {\n      if (iVar4 == 0) break;\n      iVar4 = iVar4 + -1;\n      bVar14 = *pbVar9 < *pbVar7;\n      bVar13 = *pbVar9 == *pbVar7;\n      pbVar9 = pbVar9 + 1;\n      pbVar7 = pbVar7 + 1;\n    } while (bVar13);\n    if ((!bVar14 && !bVar13) != bVar14) {\n      return 0;\n    }\n    piVar6 = &DAT_000889a0;\n    if (DAT_000889a0 == 0) goto LAB_0001fe99;\n  }\n  iVar4 = FUN_000386c0(piVar6[4]);\n  if (iVar4 != 0) {\n    *piVar6 = 0;\nLAB_0001fe99:\n    if ((*param_2 == 4) &&\n       ((((char)param_1[4] == '\x03' || ((char)param_1[4] == '\x14')) &&\n        (iVar4 = FUN_000386c0(*param_1), iVar4 == 0)))) {\n      *piVar6 = 1;\n      piVar6[4] = *param_1;\n      return 0;\n    }\n    return 0;\n  }\n  switch(*piVar6) {\n  case 0:\n    goto LAB_0001fe99;\n  case 1:\n  case 2:\n    *piVar6 = *piVar6 + 1;\n    return 0;\n  case 3:\n    break;\n  case 4:\n    if (*param_2 == -1) {\n      if ((char)param_1[4] != '\x02') goto code_r0x0001ffb8;\n      local_54 = param_1[2];\n      *piVar6 = 5;\n      piVar6[7] = local_54;\n    }\n    else {\n      if ((*param_2 != 1) || ((char)param_1[4] != '\x02')) {\ncode_r0x0001ffb8:\n        *piVar6 = 8;\n        return 0;\n      }\n      uVar8 = param_1[2];\n      local_54 = (uVar8 & 0x7f) << ((byte)piVar6[8] & 0x1f) | piVar6[7];\n      piVar6[7] = local_54;\n      piVar6[8] = piVar6[8] + 7;\n      if ((char)uVar8 < '\0') {\n        return 0;\n      }\n      *piVar6 = 5;\n    }\n    if (local_54 != 0) {\n      return 0;\n    }\n    *piVar6 = 6;\n    return 0;\n  case 5:\n    if (*param_2 < 0) {\ncode_r0x0001ff8e:\n      *piVar6 = 8;\n      return 0;\n    }\n    iVar4 = piVar6[7] - *param_2;\n    piVar6[7] = iVar4;\n    if (iVar4 != 0) {\n      if (-1 < iVar4) {\n        return 0;\n      }\n      goto code_r0x0001ff8e;\n    }\n    goto code_r0x00020108;\n  case 6:\n    if (*param_2 != 1) {\n      return 0;\n    }\n    if ((char)param_1[4] != '\x02') {\n      return 0;\n    }\n    if (param_1[2] != 4 || param_1[3] != 0) {\n      return 0;\n    }\n    FUN_000249b0(1);\n    *piVar6 = 7;\n    piVar6[5] = DAT_000898a0;\n    iVar4 = FUN_00024dc0();\n    piVar6[6] = iVar4;\n    return 0;\n  case 7:\n    *piVar6 = 6;\n    if (*param_2 != 4) {\n      return 0;\n    }\n    cVar5 = (char)param_1[4];\n    if (cVar5 == '\x02') {\n      uVar8 = param_1[2];\n      iVar4 = param_1[3];\n      if ((int)(uint)(0x3f < uVar8) <= -iVar4) {\n        *(byte *)(piVar6[5] + 0x68 + piVar6[6]) = (byte)uVar8 | 0x40;\n        return 1;\n      }\n      if (-iVar4 < (int)(uint)(0xff < uVar8)) {\n        if (-iVar4 < (int)(uint)(0xffff < uVar8)) {\n          return 0;\n        }\n        *(undefined1 *)(piVar6[5] + 0x68 + piVar6[6]) = 3;\n        *param_2 = 2;\n        return 0;\n      }\n      *(undefined1 *)(piVar6[5] + 0x68 + piVar6[6]) = 2;\n      *param_2 = 1;\n      return 0;\n    }\n    if (cVar5 == '\x14') {\n      if (piVar6[2] != 1) {\n        return 0;\n      }\n      iVar4 = piVar6[5];\n      iVar12 = piVar6[6];\n      uVar2 = FUN_00021220(param_1);\n      iVar3 = 8;\n    }\n    else {\n      if ((cVar5 != '\v') && (cVar5 != '\x0e')) {\n        return 0;\n      }\n      if ((uint)piVar6[2] < 2) {\n        return 0;\n      }\n      iVar3 = *param_1;\n      if (*(int *)(iVar3 + 4) == 0) {\n        return 0;\n      }\n      iVar4 = param_1[1];\n      if (*(int *)(iVar4 + 4) == 0) {\n        return 0;\n      }\n      if (*(char *)(iVar3 + 0x18) != '\x14') {\n        return 0;\n      }\n      if (*(char *)(iVar4 + 0x18) != '\x02') {\n        return 0;\n      }\n      iVar12 = *(int *)(iVar4 + 0x14);\n      uVar8 = *(uint *)(iVar4 + 0x10);\n      if (cVar5 != '\v') {\n        uVar11 = uVar8 >> 5 & 1;\n        iVar12 = uVar11 << ((byte)uVar8 & 0x1f);\n        uVar8 = (uVar11 ^ 1) << ((byte)uVar8 & 0x1f);\n      }\n      if (iVar12 != 0) {\n        return 0;\n      }\n      if (piVar6[2] != uVar8) {\n        return 0;\n      }\n      iVar4 = piVar6[5];\n      iVar12 = piVar6[6];\n      uVar2 = FUN_00021220(iVar3 + 8);\n      iVar3 = piVar6[2] << 3;\n    }\n    FUN_00024b60(0xc,4,0,iVar3,uVar2,iVar12,iVar12 >> 0x1f,iVar4);\n    return 1;\n  default:\n    return 0;\n  }\n  if (piVar6[1] != 0) goto code_r0x0001ffd7;\n  iStack_50 = **(int **)DAT_0008973c[0x20];\n  if (iStack_50 != 0) {\n    uVar8 = *(uint *)(iStack_50 + 0x10);\n    iVar4 = *(int *)(iStack_50 + 0x14);\n    if (-iVar4 < (int)(uint)(4 < uVar8)) {\n      local_5c = 4;\n      iVar12 = 0;\n    }\n    else {\n      local_5c = 4;\n      do {\n        iStack_50 = *(int *)(iStack_50 + 0x30);\n        local_5c = local_5c - uVar8;\n        if (iStack_50 == 0) goto code_r0x00020226;\n        uVar8 = *(uint *)(iStack_50 + 0x10);\n        iVar4 = *(int *)(iStack_50 + 0x14);\n        iVar12 = (int)local_5c >> 0x1f;\n      } while ((SBORROW4(iVar12,iVar4) != SBORROW4(iVar12 - iVar4,(uint)(local_5c < uVar8))) ==\n               (int)((iVar12 - iVar4) - (uint)(local_5c < uVar8)) < 0);\n    }\n    iVar4 = (iVar4 - iVar12) - (uint)(uVar8 < local_5c);\n    uVar8 = (uint)(3 < uVar8 - local_5c);\n    bVar13 = iVar4 != 0 || (uint)-iVar4 < uVar8;\n    bVar15 = -uVar8 == iVar4;\n    if (-iVar4 < (int)uVar8) {\n      iVar4 = 0xc;\n      pbVar9 = (byte *)*DAT_0008973c;\n      pbVar7 = (byte *)".debug_frame";\n      do {\n        if (iVar4 == 0) break;\n        iVar4 = iVar4 + -1;\n        bVar13 = *pbVar9 < *pbVar7;\n        bVar15 = *pbVar9 == *pbVar7;\n        pbVar9 = pbVar9 + (uint)bVar16 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar16 * -2 + 1;\n      } while (bVar15);\n      cVar5 = -((!bVar13 && !bVar15) == bVar13);\n      if ((((*(char *)(iStack_50 + 0x68 + local_5c) == cVar5) &&\n           (*(char *)(iStack_50 + 0x69 + local_5c) == cVar5)) &&\n          (*(char *)(iStack_50 + 0x6a + local_5c) == cVar5)) &&\n         (*(char *)(iStack_50 + 0x6b + local_5c) == cVar5)) {\n        local_5c = local_5c + 4;\n        do {\n          iVar4 = (int)local_5c >> 0x1f;\n          iStack_40 = *(int *)(iStack_50 + 0x14);\n          uStack_44 = *(uint *)(iStack_50 + 0x10);\n          if ((SBORROW4(iVar4,iStack_40) != SBORROW4(iVar4 - iStack_40,(uint)(local_5c < uStack_44))\n              ) != (int)((iVar4 - iStack_40) - (uint)(local_5c < uStack_44)) < 0) {\n            if (((int)(uint)(uStack_44 != local_5c) <=\n                 (int)-((iStack_40 - iVar4) - (uint)(uStack_44 < local_5c))) ||\n               (*(char *)(iStack_50 + 0x68 + local_5c) != '\x01')) goto code_r0x00020226;\n            uVar8 = local_5c + 1;\n            iStack_38 = 0;\n            iVar4 = (*(int **)DAT_0008973c[0x20])[4];\n            goto code_r0x0002044e;\n          }\n          local_5c = local_5c - uStack_44;\n          iStack_50 = *(int *)(iStack_50 + 0x30);\n        } while (iStack_50 != 0);\n        piVar6[1] = 0;\n        goto code_r0x0002022d;\n      }\n    }\n  }\n  goto code_r0x00020226;\ncode_r0x0002044e:\n  iStack_58 = (int)uVar8 >> 0x1f;\n  if ((SBORROW4(iStack_58,iStack_40) != SBORROW4(iStack_58 - iStack_40,(uint)(uVar8 < uStack_44)))\n      != (int)((iStack_58 - iStack_40) - (uint)(uVar8 < uStack_44)) < 0) {\n    cVar5 = *(char *)(iStack_50 + 0x68 + uVar8);\n    if (cVar5 == '\0') {\ncode_r0x00020509:\n      uVar8 = uVar8 + 1;\n      goto code_r0x00020523;\n    }\n    local_5c = uVar8;\n    while( true ) {\n      if (iStack_38 < 9) {\n        acStack_26[iStack_38] = cVar5;\n        iStack_38 = iStack_38 + 1;\n      }\n      uVar8 = uVar8 + 1;\n      if (iStack_58 == iStack_40 + -1 + (uint)(uStack_44 != 0) && local_5c == uStack_44 - 1) break;\n      bVar13 = 0xfffffffe < local_5c;\n      local_5c = local_5c + 1;\n      iStack_58 = iStack_58 + (uint)bVar13;\n      cVar5 = *(char *)(iStack_50 + 0x68 + uVar8);\n      if (cVar5 == '\0') goto code_r0x00020509;\n    }\n    goto code_r0x0002044e;\n  }\n  iStack_50 = *(int *)(iStack_50 + 0x30);\n  if (iStack_50 == 0) goto code_r0x00020226;\n  iStack_40 = *(int *)(iStack_50 + 0x14);\n  uVar8 = uVar8 - uStack_44;\n  uStack_44 = *(uint *)(iStack_50 + 0x10);\n  goto code_r0x0002044e;\n  while( true ) {\n    iStack_50 = *(int *)(iStack_50 + 0x30);\n    uVar8 = uVar8 - *puVar1;\n    if (iStack_50 == 0) break;\ncode_r0x00020523:\n    puVar1 = (uint *)(iStack_50 + 0x10);\n    uVar11 = (uint)(uVar8 < *puVar1);\n    iVar12 = ((int)uVar8 >> 0x1f) - *(int *)(iStack_50 + 0x14);\n    if ((SBORROW4((int)uVar8 >> 0x1f,*(int *)(iStack_50 + 0x14)) != SBORROW4(iVar12,uVar11)) !=\n        (int)(iVar12 - uVar11) < 0) {\n      acStack_26[iStack_38] = '\0';\n      if (acStack_26[0] == '\0') goto code_r0x000205bb;\n      iVar12 = strcmp(acStack_26,"eh");\n      if (iVar12 == 0) goto code_r0x00020575;\n      if (acStack_26[0] == 'z') goto code_r0x000205bb;\n      break;\n    }\n  }\n  goto code_r0x00020226;\ncode_r0x00020575:\n  if (iVar4 == 0) goto code_r0x00020600;\n  if ((*(int *)(iVar4 + 4) == iStack_50) && (*(uint *)(iVar4 + 8) == uVar8)) {\n    uVar8 = uVar8 + *(byte *)(iVar4 + 2);\n    goto code_r0x000205a6;\n  }\n  iVar4 = *(int *)(iVar4 + 0x28);\n  goto code_r0x00020575;\ncode_r0x000205bb:\n  cVar5 = *(char *)(iStack_50 + 0x68 + uVar8);\n  iStack_3c = 0;\n  if (-1 < cVar5) {\n    iStack_3c = (int)cVar5;\n  }\n  piVar6[1] = 1;\n  piVar6[2] = iStack_3c;\n  piVar6[3] = (uint)(acStack_26[0] == 'z');\ncode_r0x0001ffd7:\n  if (piVar6[3] != 0) {\n    *piVar6 = 4;\n    piVar6[7] = 0;\n    piVar6[8] = 0;\n    return 0;\n  }\ncode_r0x00020108:\n  *piVar6 = 6;\n  return 0;\ncode_r0x00020600:\n  uVar8 = uVar8 + 4;\ncode_r0x000205a6:\n  do {\n    puVar1 = (uint *)(iStack_50 + 0x10);\n    uVar11 = (uint)(uVar8 < *puVar1);\n    iVar4 = ((int)uVar8 >> 0x1f) - *(int *)(iStack_50 + 0x14);\n    if ((SBORROW4((int)uVar8 >> 0x1f,*(int *)(iStack_50 + 0x14)) != SBORROW4(iVar4,uVar11)) !=\n        (int)(iVar4 - uVar11) < 0) goto code_r0x000205bb;\n    iStack_50 = *(int *)(iStack_50 + 0x30);\n    uVar8 = uVar8 - *puVar1;\n  } while (iStack_50 != 0);\ncode_r0x00020226:\n  piVar6[1] = 0;\ncode_r0x0002022d:\n  *piVar6 = 8;\n  return 0;\n}" (type_identifier "undefined4") (function_declarator "FUN_0001fe30(int *param_1,int *param_2)" (identifier "FUN_0001fe30") (parameter_list "(int *param_1,int *param_2)" (( "(") (parameter_declaration "int *param_1" (primitive_type "int") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "int *param_2" (primitive_type "int") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) () ")"))) (compound_statement "{\n  uint *puVar1;\n  undefined4 uVar2;\n  int iVar3;\n  int iVar4;\n  char cVar5;\n  int *piVar6;\n  byte *pbVar7;\n  uint uVar8;\n  byte *pbVar9;\n  byte *pbVar10;\n  uint uVar11;\n  int iVar12;\n  bool bVar13;\n  bool bVar14;\n  bool bVar15;\n  byte bVar16;\n  uint local_5c;\n  int iStack_58;\n  uint local_54;\n  int iStack_50;\n  uint uStack_44;\n  int iStack_40;\n  int iStack_3c;\n  int iStack_38;\n  char acStack_26 [18];\n  undefined4 uStack_14;\n  \n  bVar16 = 0;\n  uStack_14 = 0x1fe39;\n  bVar13 = false;\n  bVar15 = DAT_000897dc == 0;\n  if (!bVar15) {\n    return 0;\n  }\n  iVar4 = 9;\n  pbVar9 = (byte *)*DAT_0008973c;\n  pbVar7 = pbVar9;\n  pbVar10 = (byte *)".eh_frame";\n  do {\n    if (iVar4 == 0) break;\n    iVar4 = iVar4 + -1;\n    bVar13 = *pbVar7 < *pbVar10;\n    bVar15 = *pbVar7 == *pbVar10;\n    pbVar7 = pbVar7 + 1;\n    pbVar10 = pbVar10 + 1;\n  } while (bVar15);\n  bVar14 = false;\n  bVar13 = (!bVar13 && !bVar15) == bVar13;\n  if (bVar13) {\n    bVar14 = pbVar9[9] < 0x5f;\n    bVar13 = pbVar9[9] == 0x5f;\n    piVar6 = &DAT_000889e0;\n    if (bVar13) goto LAB_0001fe74;\n    if (DAT_000889e0 == 0) goto LAB_0001fe99;\n  }\n  else {\nLAB_0001fe74:\n    iVar4 = 0xc;\n    pbVar7 = (byte *)".debug_frame";\n    do {\n      if (iVar4 == 0) break;\n      iVar4 = iVar4 + -1;\n      bVar14 = *pbVar9 < *pbVar7;\n      bVar13 = *pbVar9 == *pbVar7;\n      pbVar9 = pbVar9 + 1;\n      pbVar7 = pbVar7 + 1;\n    } while (bVar13);\n    if ((!bVar14 && !bVar13) != bVar14) {\n      return 0;\n    }\n    piVar6 = &DAT_000889a0;\n    if (DAT_000889a0 == 0) goto LAB_0001fe99;\n  }\n  iVar4 = FUN_000386c0(piVar6[4]);\n  if (iVar4 != 0) {\n    *piVar6 = 0;\nLAB_0001fe99:\n    if ((*param_2 == 4) &&\n       ((((char)param_1[4] == '\x03' || ((char)param_1[4] == '\x14')) &&\n        (iVar4 = FUN_000386c0(*param_1), iVar4 == 0)))) {\n      *piVar6 = 1;\n      piVar6[4] = *param_1;\n      return 0;\n    }\n    return 0;\n  }\n  switch(*piVar6) {\n  case 0:\n    goto LAB_0001fe99;\n  case 1:\n  case 2:\n    *piVar6 = *piVar6 + 1;\n    return 0;\n  case 3:\n    break;\n  case 4:\n    if (*param_2 == -1) {\n      if ((char)param_1[4] != '\x02') goto code_r0x0001ffb8;\n      local_54 = param_1[2];\n      *piVar6 = 5;\n      piVar6[7] = local_54;\n    }\n    else {\n      if ((*param_2 != 1) || ((char)param_1[4] != '\x02')) {\ncode_r0x0001ffb8:\n        *piVar6 = 8;\n        return 0;\n      }\n      uVar8 = param_1[2];\n      local_54 = (uVar8 & 0x7f) << ((byte)piVar6[8] & 0x1f) | piVar6[7];\n      piVar6[7] = local_54;\n      piVar6[8] = piVar6[8] + 7;\n      if ((char)uVar8 < '\0') {\n        return 0;\n      }\n      *piVar6 = 5;\n    }\n    if (local_54 != 0) {\n      return 0;\n    }\n    *piVar6 = 6;\n    return 0;\n  case 5:\n    if (*param_2 < 0) {\ncode_r0x0001ff8e:\n      *piVar6 = 8;\n      return 0;\n    }\n    iVar4 = piVar6[7] - *param_2;\n    piVar6[7] = iVar4;\n    if (iVar4 != 0) {\n      if (-1 < iVar4) {\n        return 0;\n      }\n      goto code_r0x0001ff8e;\n    }\n    goto code_r0x00020108;\n  case 6:\n    if (*param_2 != 1) {\n      return 0;\n    }\n    if ((char)param_1[4] != '\x02') {\n      return 0;\n    }\n    if (param_1[2] != 4 || param_1[3] != 0) {\n      return 0;\n    }\n    FUN_000249b0(1);\n    *piVar6 = 7;\n    piVar6[5] = DAT_000898a0;\n    iVar4 = FUN_00024dc0();\n    piVar6[6] = iVar4;\n    return 0;\n  case 7:\n    *piVar6 = 6;\n    if (*param_2 != 4) {\n      return 0;\n    }\n    cVar5 = (char)param_1[4];\n    if (cVar5 == '\x02') {\n      uVar8 = param_1[2];\n      iVar4 = param_1[3];\n      if ((int)(uint)(0x3f < uVar8) <= -iVar4) {\n        *(byte *)(piVar6[5] + 0x68 + piVar6[6]) = (byte)uVar8 | 0x40;\n        return 1;\n      }\n      if (-iVar4 < (int)(uint)(0xff < uVar8)) {\n        if (-iVar4 < (int)(uint)(0xffff < uVar8)) {\n          return 0;\n        }\n        *(undefined1 *)(piVar6[5] + 0x68 + piVar6[6]) = 3;\n        *param_2 = 2;\n        return 0;\n      }\n      *(undefined1 *)(piVar6[5] + 0x68 + piVar6[6]) = 2;\n      *param_2 = 1;\n      return 0;\n    }\n    if (cVar5 == '\x14') {\n      if (piVar6[2] != 1) {\n        return 0;\n      }\n      iVar4 = piVar6[5];\n      iVar12 = piVar6[6];\n      uVar2 = FUN_00021220(param_1);\n      iVar3 = 8;\n    }\n    else {\n      if ((cVar5 != '\v') && (cVar5 != '\x0e')) {\n        return 0;\n      }\n      if ((uint)piVar6[2] < 2) {\n        return 0;\n      }\n      iVar3 = *param_1;\n      if (*(int *)(iVar3 + 4) == 0) {\n        return 0;\n      }\n      iVar4 = param_1[1];\n      if (*(int *)(iVar4 + 4) == 0) {\n        return 0;\n      }\n      if (*(char *)(iVar3 + 0x18) != '\x14') {\n        return 0;\n      }\n      if (*(char *)(iVar4 + 0x18) != '\x02') {\n        return 0;\n      }\n      iVar12 = *(int *)(iVar4 + 0x14);\n      uVar8 = *(uint *)(iVar4 + 0x10);\n      if (cVar5 != '\v') {\n        uVar11 = uVar8 >> 5 & 1;\n        iVar12 = uVar11 << ((byte)uVar8 & 0x1f);\n        uVar8 = (uVar11 ^ 1) << ((byte)uVar8 & 0x1f);\n      }\n      if (iVar12 != 0) {\n        return 0;\n      }\n      if (piVar6[2] != uVar8) {\n        return 0;\n      }\n      iVar4 = piVar6[5];\n      iVar12 = piVar6[6];\n      uVar2 = FUN_00021220(iVar3 + 8);\n      iVar3 = piVar6[2] << 3;\n    }\n    FUN_00024b60(0xc,4,0,iVar3,uVar2,iVar12,iVar12 >> 0x1f,iVar4);\n    return 1;\n  default:\n    return 0;\n  }\n  if (piVar6[1] != 0) goto code_r0x0001ffd7;\n  iStack_50 = **(int **)DAT_0008973c[0x20];\n  if (iStack_50 != 0) {\n    uVar8 = *(uint *)(iStack_50 + 0x10);\n    iVar4 = *(int *)(iStack_50 + 0x14);\n    if (-iVar4 < (int)(uint)(4 < uVar8)) {\n      local_5c = 4;\n      iVar12 = 0;\n    }\n    else {\n      local_5c = 4;\n      do {\n        iStack_50 = *(int *)(iStack_50 + 0x30);\n        local_5c = local_5c - uVar8;\n        if (iStack_50 == 0) goto code_r0x00020226;\n        uVar8 = *(uint *)(iStack_50 + 0x10);\n        iVar4 = *(int *)(iStack_50 + 0x14);\n        iVar12 = (int)local_5c >> 0x1f;\n      } while ((SBORROW4(iVar12,iVar4) != SBORROW4(iVar12 - iVar4,(uint)(local_5c < uVar8))) ==\n               (int)((iVar12 - iVar4) - (uint)(local_5c < uVar8)) < 0);\n    }\n    iVar4 = (iVar4 - iVar12) - (uint)(uVar8 < local_5c);\n    uVar8 = (uint)(3 < uVar8 - local_5c);\n    bVar13 = iVar4 != 0 || (uint)-iVar4 < uVar8;\n    bVar15 = -uVar8 == iVar4;\n    if (-iVar4 < (int)uVar8) {\n      iVar4 = 0xc;\n      pbVar9 = (byte *)*DAT_0008973c;\n      pbVar7 = (byte *)".debug_frame";\n      do {\n        if (iVar4 == 0) break;\n        iVar4 = iVar4 + -1;\n        bVar13 = *pbVar9 < *pbVar7;\n        bVar15 = *pbVar9 == *pbVar7;\n        pbVar9 = pbVar9 + (uint)bVar16 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar16 * -2 + 1;\n      } while (bVar15);\n      cVar5 = -((!bVar13 && !bVar15) == bVar13);\n      if ((((*(char *)(iStack_50 + 0x68 + local_5c) == cVar5) &&\n           (*(char *)(iStack_50 + 0x69 + local_5c) == cVar5)) &&\n          (*(char *)(iStack_50 + 0x6a + local_5c) == cVar5)) &&\n         (*(char *)(iStack_50 + 0x6b + local_5c) == cVar5)) {\n        local_5c = local_5c + 4;\n        do {\n          iVar4 = (int)local_5c >> 0x1f;\n          iStack_40 = *(int *)(iStack_50 + 0x14);\n          uStack_44 = *(uint *)(iStack_50 + 0x10);\n          if ((SBORROW4(iVar4,iStack_40) != SBORROW4(iVar4 - iStack_40,(uint)(local_5c < uStack_44))\n              ) != (int)((iVar4 - iStack_40) - (uint)(local_5c < uStack_44)) < 0) {\n            if (((int)(uint)(uStack_44 != local_5c) <=\n                 (int)-((iStack_40 - iVar4) - (uint)(uStack_44 < local_5c))) ||\n               (*(char *)(iStack_50 + 0x68 + local_5c) != '\x01')) goto code_r0x00020226;\n            uVar8 = local_5c + 1;\n            iStack_38 = 0;\n            iVar4 = (*(int **)DAT_0008973c[0x20])[4];\n            goto code_r0x0002044e;\n          }\n          local_5c = local_5c - uStack_44;\n          iStack_50 = *(int *)(iStack_50 + 0x30);\n        } while (iStack_50 != 0);\n        piVar6[1] = 0;\n        goto code_r0x0002022d;\n      }\n    }\n  }\n  goto code_r0x00020226;\ncode_r0x0002044e:\n  iStack_58 = (int)uVar8 >> 0x1f;\n  if ((SBORROW4(iStack_58,iStack_40) != SBORROW4(iStack_58 - iStack_40,(uint)(uVar8 < uStack_44)))\n      != (int)((iStack_58 - iStack_40) - (uint)(uVar8 < uStack_44)) < 0) {\n    cVar5 = *(char *)(iStack_50 + 0x68 + uVar8);\n    if (cVar5 == '\0') {\ncode_r0x00020509:\n      uVar8 = uVar8 + 1;\n      goto code_r0x00020523;\n    }\n    local_5c = uVar8;\n    while( true ) {\n      if (iStack_38 < 9) {\n        acStack_26[iStack_38] = cVar5;\n        iStack_38 = iStack_38 + 1;\n      }\n      uVar8 = uVar8 + 1;\n      if (iStack_58 == iStack_40 + -1 + (uint)(uStack_44 != 0) && local_5c == uStack_44 - 1) break;\n      bVar13 = 0xfffffffe < local_5c;\n      local_5c = local_5c + 1;\n      iStack_58 = iStack_58 + (uint)bVar13;\n      cVar5 = *(char *)(iStack_50 + 0x68 + uVar8);\n      if (cVar5 == '\0') goto code_r0x00020509;\n    }\n    goto code_r0x0002044e;\n  }\n  iStack_50 = *(int *)(iStack_50 + 0x30);\n  if (iStack_50 == 0) goto code_r0x00020226;\n  iStack_40 = *(int *)(iStack_50 + 0x14);\n  uVar8 = uVar8 - uStack_44;\n  uStack_44 = *(uint *)(iStack_50 + 0x10);\n  goto code_r0x0002044e;\n  while( true ) {\n    iStack_50 = *(int *)(iStack_50 + 0x30);\n    uVar8 = uVar8 - *puVar1;\n    if (iStack_50 == 0) break;\ncode_r0x00020523:\n    puVar1 = (uint *)(iStack_50 + 0x10);\n    uVar11 = (uint)(uVar8 < *puVar1);\n    iVar12 = ((int)uVar8 >> 0x1f) - *(int *)(iStack_50 + 0x14);\n    if ((SBORROW4((int)uVar8 >> 0x1f,*(int *)(iStack_50 + 0x14)) != SBORROW4(iVar12,uVar11)) !=\n        (int)(iVar12 - uVar11) < 0) {\n      acStack_26[iStack_38] = '\0';\n      if (acStack_26[0] == '\0') goto code_r0x000205bb;\n      iVar12 = strcmp(acStack_26,"eh");\n      if (iVar12 == 0) goto code_r0x00020575;\n      if (acStack_26[0] == 'z') goto code_r0x000205bb;\n      break;\n    }\n  }\n  goto code_r0x00020226;\ncode_r0x00020575:\n  if (iVar4 == 0) goto code_r0x00020600;\n  if ((*(int *)(iVar4 + 4) == iStack_50) && (*(uint *)(iVar4 + 8) == uVar8)) {\n    uVar8 = uVar8 + *(byte *)(iVar4 + 2);\n    goto code_r0x000205a6;\n  }\n  iVar4 = *(int *)(iVar4 + 0x28);\n  goto code_r0x00020575;\ncode_r0x000205bb:\n  cVar5 = *(char *)(iStack_50 + 0x68 + uVar8);\n  iStack_3c = 0;\n  if (-1 < cVar5) {\n    iStack_3c = (int)cVar5;\n  }\n  piVar6[1] = 1;\n  piVar6[2] = iStack_3c;\n  piVar6[3] = (uint)(acStack_26[0] == 'z');\ncode_r0x0001ffd7:\n  if (piVar6[3] != 0) {\n    *piVar6 = 4;\n    piVar6[7] = 0;\n    piVar6[8] = 0;\n    return 0;\n  }\ncode_r0x00020108:\n  *piVar6 = 6;\n  return 0;\ncode_r0x00020600:\n  uVar8 = uVar8 + 4;\ncode_r0x000205a6:\n  do {\n    puVar1 = (uint *)(iStack_50 + 0x10);\n    uVar11 = (uint)(uVar8 < *puVar1);\n    iVar4 = ((int)uVar8 >> 0x1f) - *(int *)(iStack_50 + 0x14);\n    if ((SBORROW4((int)uVar8 >> 0x1f,*(int *)(iStack_50 + 0x14)) != SBORROW4(iVar4,uVar11)) !=\n        (int)(iVar4 - uVar11) < 0) goto code_r0x000205bb;\n    iStack_50 = *(int *)(iStack_50 + 0x30);\n    uVar8 = uVar8 - *puVar1;\n  } while (iStack_50 != 0);\ncode_r0x00020226:\n  piVar6[1] = 0;\ncode_r0x0002022d:\n  *piVar6 = 8;\n  return 0;\n}" ({ "{") (declaration "uint *puVar1;" (type_identifier "uint") (pointer_declarator "*puVar1" (* "*") (identifier "puVar1")) (; ";")) (declaration "undefined4 uVar2;" (type_identifier "undefined4") (identifier "uVar2") (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (declaration "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (declaration "char cVar5;" (primitive_type "char") (identifier "cVar5") (; ";")) (declaration "int *piVar6;" (primitive_type "int") (pointer_declarator "*piVar6" (* "*") (identifier "piVar6")) (; ";")) (declaration "byte *pbVar7;" (type_identifier "byte") (pointer_declarator "*pbVar7" (* "*") (identifier "pbVar7")) (; ";")) (declaration "uint uVar8;" (type_identifier "uint") (identifier "uVar8") (; ";")) (declaration "byte *pbVar9;" (type_identifier "byte") (pointer_declarator "*pbVar9" (* "*") (identifier "pbVar9")) (; ";")) (declaration "byte *pbVar10;" (type_identifier "byte") (pointer_declarator "*pbVar10" (* "*") (identifier "pbVar10")) (; ";")) (declaration "uint uVar11;" (type_identifier "uint") (identifier "uVar11") (; ";")) (declaration "int iVar12;" (primitive_type "int") (identifier "iVar12") (; ";")) (declaration "bool bVar13;" (primitive_type "bool") (identifier "bVar13") (; ";")) (declaration "bool bVar14;" (primitive_type "bool") (identifier "bVar14") (; ";")) (declaration "bool bVar15;" (primitive_type "bool") (identifier "bVar15") (; ";")) (declaration "byte bVar16;" (type_identifier "byte") (identifier "bVar16") (; ";")) (declaration "uint local_5c;" (type_identifier "uint") (identifier "local_5c") (; ";")) (declaration "int iStack_58;" (primitive_type "int") (identifier "iStack_58") (; ";")) (declaration "uint local_54;" (type_identifier "uint") (identifier "local_54") (; ";")) (declaration "int iStack_50;" (primitive_type "int") (identifier "iStack_50") (; ";")) (declaration "uint uStack_44;" (type_identifier "uint") (identifier "uStack_44") (; ";")) (declaration "int iStack_40;" (primitive_type "int") (identifier "iStack_40") (; ";")) (declaration "int iStack_3c;" (primitive_type "int") (identifier "iStack_3c") (; ";")) (declaration "int iStack_38;" (primitive_type "int") (identifier "iStack_38") (; ";")) (declaration "char acStack_26 [18];" (primitive_type "char") (array_declarator "acStack_26 [18]" (identifier "acStack_26") ([ "[") (number_literal "18") (] "]")) (; ";")) (declaration "undefined4 uStack_14;" (type_identifier "undefined4") (identifier "uStack_14") (; ";")) (expression_statement "bVar16 = 0;" (assignment_expression "bVar16 = 0" (identifier "bVar16") (= "=") (number_literal "0")) (; ";")) (expression_statement "uStack_14 = 0x1fe39;" (assignment_expression "uStack_14 = 0x1fe39" (identifier "uStack_14") (= "=") (number_literal "0x1fe39")) (; ";")) (expression_statement "bVar13 = false;" (assignment_expression "bVar13 = false" (identifier "bVar13") (= "=") (false "false")) (; ";")) (expression_statement "bVar15 = DAT_000897dc == 0;" (assignment_expression "bVar15 = DAT_000897dc == 0" (identifier "bVar15") (= "=") (binary_expression "DAT_000897dc == 0" (identifier "DAT_000897dc") (== "==") (number_literal "0"))) (; ";")) (if_statement "if (!bVar15) {\n    return 0;\n  }" (if "if") (parenthesized_expression "(!bVar15)" (( "(") (unary_expression "!bVar15" (! "!") (identifier "bVar15")) () ")")) (compound_statement "{\n    return 0;\n  }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "iVar4 = 9;" (assignment_expression "iVar4 = 9" (identifier "iVar4") (= "=") (number_literal "9")) (; ";")) (expression_statement "pbVar9 = (byte *)*DAT_0008973c;" (assignment_expression "pbVar9 = (byte *)*DAT_0008973c" (identifier "pbVar9") (= "=") (cast_expression "(byte *)*DAT_0008973c" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*DAT_0008973c" (* "*") (identifier "DAT_0008973c")))) (; ";")) (expression_statement "pbVar7 = pbVar9;" (assignment_expression "pbVar7 = pbVar9" (identifier "pbVar7") (= "=") (identifier "pbVar9")) (; ";")) (expression_statement "pbVar10 = (byte *)".eh_frame";" (assignment_expression "pbVar10 = (byte *)".eh_frame"" (identifier "pbVar10") (= "=") (cast_expression "(byte *)".eh_frame"" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (string_literal "".eh_frame"" (" """) (string_content ".eh_frame") (" """)))) (; ";")) (do_statement "do {\n    if (iVar4 == 0) break;\n    iVar4 = iVar4 + -1;\n    bVar13 = *pbVar7 < *pbVar10;\n    bVar15 = *pbVar7 == *pbVar10;\n    pbVar7 = pbVar7 + 1;\n    pbVar10 = pbVar10 + 1;\n  } while (bVar15);" (do "do") (compound_statement "{\n    if (iVar4 == 0) break;\n    iVar4 = iVar4 + -1;\n    bVar13 = *pbVar7 < *pbVar10;\n    bVar15 = *pbVar7 == *pbVar10;\n    pbVar7 = pbVar7 + 1;\n    pbVar10 = pbVar10 + 1;\n  }" ({ "{") (if_statement "if (iVar4 == 0) break;" (if "if") (parenthesized_expression "(iVar4 == 0)" (( "(") (binary_expression "iVar4 == 0" (identifier "iVar4") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar4 = iVar4 + -1;" (assignment_expression "iVar4 = iVar4 + -1" (identifier "iVar4") (= "=") (binary_expression "iVar4 + -1" (identifier "iVar4") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "bVar13 = *pbVar7 < *pbVar10;" (assignment_expression "bVar13 = *pbVar7 < *pbVar10" (identifier "bVar13") (= "=") (binary_expression "*pbVar7 < *pbVar10" (pointer_expression "*pbVar7" (* "*") (identifier "pbVar7")) (< "<") (pointer_expression "*pbVar10" (* "*") (identifier "pbVar10")))) (; ";")) (expression_statement "bVar15 = *pbVar7 == *pbVar10;" (assignment_expression "bVar15 = *pbVar7 == *pbVar10" (identifier "bVar15") (= "=") (binary_expression "*pbVar7 == *pbVar10" (pointer_expression "*pbVar7" (* "*") (identifier "pbVar7")) (== "==") (pointer_expression "*pbVar10" (* "*") (identifier "pbVar10")))) (; ";")) (expression_statement "pbVar7 = pbVar7 + 1;" (assignment_expression "pbVar7 = pbVar7 + 1" (identifier "pbVar7") (= "=") (binary_expression "pbVar7 + 1" (identifier "pbVar7") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pbVar10 = pbVar10 + 1;" (assignment_expression "pbVar10 = pbVar10 + 1" (identifier "pbVar10") (= "=") (binary_expression "pbVar10 + 1" (identifier "pbVar10") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar15)" (( "(") (identifier "bVar15") () ")")) (; ";")) (expression_statement "bVar14 = false;" (assignment_expression "bVar14 = false" (identifier "bVar14") (= "=") (false "false")) (; ";")) (expression_statement "bVar13 = (!bVar13 && !bVar15) == bVar13;" (assignment_expression "bVar13 = (!bVar13 && !bVar15) == bVar13" (identifier "bVar13") (= "=") (binary_expression "(!bVar13 && !bVar15) == bVar13" (parenthesized_expression "(!bVar13 && !bVar15)" (( "(") (binary_expression "!bVar13 && !bVar15" (unary_expression "!bVar13" (! "!") (identifier "bVar13")) (&& "&&") (unary_expression "!bVar15" (! "!") (identifier "bVar15"))) () ")")) (== "==") (identifier "bVar13"))) (; ";")) (if_statement "if (bVar13) {\n    bVar14 = pbVar9[9] < 0x5f;\n    bVar13 = pbVar9[9] == 0x5f;\n    piVar6 = &DAT_000889e0;\n    if (bVar13) goto LAB_0001fe74;\n    if (DAT_000889e0 == 0) goto LAB_0001fe99;\n  }\n  else {\nLAB_0001fe74:\n    iVar4 = 0xc;\n    pbVar7 = (byte *)".debug_frame";\n    do {\n      if (iVar4 == 0) break;\n      iVar4 = iVar4 + -1;\n      bVar14 = *pbVar9 < *pbVar7;\n      bVar13 = *pbVar9 == *pbVar7;\n      pbVar9 = pbVar9 + 1;\n      pbVar7 = pbVar7 + 1;\n    } while (bVar13);\n    if ((!bVar14 && !bVar13) != bVar14) {\n      return 0;\n    }\n    piVar6 = &DAT_000889a0;\n    if (DAT_000889a0 == 0) goto LAB_0001fe99;\n  }" (if "if") (parenthesized_expression "(bVar13)" (( "(") (identifier "bVar13") () ")")) (compound_statement "{\n    bVar14 = pbVar9[9] < 0x5f;\n    bVar13 = pbVar9[9] == 0x5f;\n    piVar6 = &DAT_000889e0;\n    if (bVar13) goto LAB_0001fe74;\n    if (DAT_000889e0 == 0) goto LAB_0001fe99;\n  }" ({ "{") (expression_statement "bVar14 = pbVar9[9] < 0x5f;" (assignment_expression "bVar14 = pbVar9[9] < 0x5f" (identifier "bVar14") (= "=") (binary_expression "pbVar9[9] < 0x5f" (subscript_expression "pbVar9[9]" (identifier "pbVar9") ([ "[") (number_literal "9") (] "]")) (< "<") (number_literal "0x5f"))) (; ";")) (expression_statement "bVar13 = pbVar9[9] == 0x5f;" (assignment_expression "bVar13 = pbVar9[9] == 0x5f" (identifier "bVar13") (= "=") (binary_expression "pbVar9[9] == 0x5f" (subscript_expression "pbVar9[9]" (identifier "pbVar9") ([ "[") (number_literal "9") (] "]")) (== "==") (number_literal "0x5f"))) (; ";")) (expression_statement "piVar6 = &DAT_000889e0;" (assignment_expression "piVar6 = &DAT_000889e0" (identifier "piVar6") (= "=") (pointer_expression "&DAT_000889e0" (& "&") (identifier "DAT_000889e0"))) (; ";")) (if_statement "if (bVar13) goto LAB_0001fe74;" (if "if") (parenthesized_expression "(bVar13)" (( "(") (identifier "bVar13") () ")")) (goto_statement "goto LAB_0001fe74;" (goto "goto") (statement_identifier "LAB_0001fe74") (; ";"))) (if_statement "if (DAT_000889e0 == 0) goto LAB_0001fe99;" (if "if") (parenthesized_expression "(DAT_000889e0 == 0)" (( "(") (binary_expression "DAT_000889e0 == 0" (identifier "DAT_000889e0") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_0001fe99;" (goto "goto") (statement_identifier "LAB_0001fe99") (; ";"))) (} "}")) (else_clause "else {\nLAB_0001fe74:\n    iVar4 = 0xc;\n    pbVar7 = (byte *)".debug_frame";\n    do {\n      if (iVar4 == 0) break;\n      iVar4 = iVar4 + -1;\n      bVar14 = *pbVar9 < *pbVar7;\n      bVar13 = *pbVar9 == *pbVar7;\n      pbVar9 = pbVar9 + 1;\n      pbVar7 = pbVar7 + 1;\n    } while (bVar13);\n    if ((!bVar14 && !bVar13) != bVar14) {\n      return 0;\n    }\n    piVar6 = &DAT_000889a0;\n    if (DAT_000889a0 == 0) goto LAB_0001fe99;\n  }" (else "else") (compound_statement "{\nLAB_0001fe74:\n    iVar4 = 0xc;\n    pbVar7 = (byte *)".debug_frame";\n    do {\n      if (iVar4 == 0) break;\n      iVar4 = iVar4 + -1;\n      bVar14 = *pbVar9 < *pbVar7;\n      bVar13 = *pbVar9 == *pbVar7;\n      pbVar9 = pbVar9 + 1;\n      pbVar7 = pbVar7 + 1;\n    } while (bVar13);\n    if ((!bVar14 && !bVar13) != bVar14) {\n      return 0;\n    }\n    piVar6 = &DAT_000889a0;\n    if (DAT_000889a0 == 0) goto LAB_0001fe99;\n  }" ({ "{") (labeled_statement "LAB_0001fe74:\n    iVar4 = 0xc;" (statement_identifier "LAB_0001fe74") (: ":") (expression_statement "iVar4 = 0xc;" (assignment_expression "iVar4 = 0xc" (identifier "iVar4") (= "=") (number_literal "0xc")) (; ";"))) (expression_statement "pbVar7 = (byte *)".debug_frame";" (assignment_expression "pbVar7 = (byte *)".debug_frame"" (identifier "pbVar7") (= "=") (cast_expression "(byte *)".debug_frame"" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (string_literal "".debug_frame"" (" """) (string_content ".debug_frame") (" """)))) (; ";")) (do_statement "do {\n      if (iVar4 == 0) break;\n      iVar4 = iVar4 + -1;\n      bVar14 = *pbVar9 < *pbVar7;\n      bVar13 = *pbVar9 == *pbVar7;\n      pbVar9 = pbVar9 + 1;\n      pbVar7 = pbVar7 + 1;\n    } while (bVar13);" (do "do") (compound_statement "{\n      if (iVar4 == 0) break;\n      iVar4 = iVar4 + -1;\n      bVar14 = *pbVar9 < *pbVar7;\n      bVar13 = *pbVar9 == *pbVar7;\n      pbVar9 = pbVar9 + 1;\n      pbVar7 = pbVar7 + 1;\n    }" ({ "{") (if_statement "if (iVar4 == 0) break;" (if "if") (parenthesized_expression "(iVar4 == 0)" (( "(") (binary_expression "iVar4 == 0" (identifier "iVar4") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar4 = iVar4 + -1;" (assignment_expression "iVar4 = iVar4 + -1" (identifier "iVar4") (= "=") (binary_expression "iVar4 + -1" (identifier "iVar4") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "bVar14 = *pbVar9 < *pbVar7;" (assignment_expression "bVar14 = *pbVar9 < *pbVar7" (identifier "bVar14") (= "=") (binary_expression "*pbVar9 < *pbVar7" (pointer_expression "*pbVar9" (* "*") (identifier "pbVar9")) (< "<") (pointer_expression "*pbVar7" (* "*") (identifier "pbVar7")))) (; ";")) (expression_statement "bVar13 = *pbVar9 == *pbVar7;" (assignment_expression "bVar13 = *pbVar9 == *pbVar7" (identifier "bVar13") (= "=") (binary_expression "*pbVar9 == *pbVar7" (pointer_expression "*pbVar9" (* "*") (identifier "pbVar9")) (== "==") (pointer_expression "*pbVar7" (* "*") (identifier "pbVar7")))) (; ";")) (expression_statement "pbVar9 = pbVar9 + 1;" (assignment_expression "pbVar9 = pbVar9 + 1" (identifier "pbVar9") (= "=") (binary_expression "pbVar9 + 1" (identifier "pbVar9") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pbVar7 = pbVar7 + 1;" (assignment_expression "pbVar7 = pbVar7 + 1" (identifier "pbVar7") (= "=") (binary_expression "pbVar7 + 1" (identifier "pbVar7") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar13)" (( "(") (identifier "bVar13") () ")")) (; ";")) (if_statement "if ((!bVar14 && !bVar13) != bVar14) {\n      return 0;\n    }" (if "if") (parenthesized_expression "((!bVar14 && !bVar13) != bVar14)" (( "(") (binary_expression "(!bVar14 && !bVar13) != bVar14" (parenthesized_expression "(!bVar14 && !bVar13)" (( "(") (binary_expression "!bVar14 && !bVar13" (unary_expression "!bVar14" (! "!") (identifier "bVar14")) (&& "&&") (unary_expression "!bVar13" (! "!") (identifier "bVar13"))) () ")")) (!= "!=") (identifier "bVar14")) () ")")) (compound_statement "{\n      return 0;\n    }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "piVar6 = &DAT_000889a0;" (assignment_expression "piVar6 = &DAT_000889a0" (identifier "piVar6") (= "=") (pointer_expression "&DAT_000889a0" (& "&") (identifier "DAT_000889a0"))) (; ";")) (if_statement "if (DAT_000889a0 == 0) goto LAB_0001fe99;" (if "if") (parenthesized_expression "(DAT_000889a0 == 0)" (( "(") (binary_expression "DAT_000889a0 == 0" (identifier "DAT_000889a0") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_0001fe99;" (goto "goto") (statement_identifier "LAB_0001fe99") (; ";"))) (} "}")))) (expression_statement "iVar4 = FUN_000386c0(piVar6[4]);" (assignment_expression "iVar4 = FUN_000386c0(piVar6[4])" (identifier "iVar4") (= "=") (call_expression "FUN_000386c0(piVar6[4])" (identifier "FUN_000386c0") (argument_list "(piVar6[4])" (( "(") (subscript_expression "piVar6[4]" (identifier "piVar6") ([ "[") (number_literal "4") (] "]")) () ")")))) (; ";")) (if_statement "if (iVar4 != 0) {\n    *piVar6 = 0;\nLAB_0001fe99:\n    if ((*param_2 == 4) &&\n       ((((char)param_1[4] == '\x03' || ((char)param_1[4] == '\x14')) &&\n        (iVar4 = FUN_000386c0(*param_1), iVar4 == 0)))) {\n      *piVar6 = 1;\n      piVar6[4] = *param_1;\n      return 0;\n    }\n    return 0;\n  }" (if "if") (parenthesized_expression "(iVar4 != 0)" (( "(") (binary_expression "iVar4 != 0" (identifier "iVar4") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    *piVar6 = 0;\nLAB_0001fe99:\n    if ((*param_2 == 4) &&\n       ((((char)param_1[4] == '\x03' || ((char)param_1[4] == '\x14')) &&\n        (iVar4 = FUN_000386c0(*param_1), iVar4 == 0)))) {\n      *piVar6 = 1;\n      piVar6[4] = *param_1;\n      return 0;\n    }\n    return 0;\n  }" ({ "{") (expression_statement "*piVar6 = 0;" (assignment_expression "*piVar6 = 0" (pointer_expression "*piVar6" (* "*") (identifier "piVar6")) (= "=") (number_literal "0")) (; ";")) (labeled_statement "LAB_0001fe99:\n    if ((*param_2 == 4) &&\n       ((((char)param_1[4] == '\x03' || ((char)param_1[4] == '\x14')) &&\n        (iVar4 = FUN_000386c0(*param_1), iVar4 == 0)))) {\n      *piVar6 = 1;\n      piVar6[4] = *param_1;\n      return 0;\n    }" (statement_identifier "LAB_0001fe99") (: ":") (if_statement "if ((*param_2 == 4) &&\n       ((((char)param_1[4] == '\x03' || ((char)param_1[4] == '\x14')) &&\n        (iVar4 = FUN_000386c0(*param_1), iVar4 == 0)))) {\n      *piVar6 = 1;\n      piVar6[4] = *param_1;\n      return 0;\n    }" (if "if") (parenthesized_expression "((*param_2 == 4) &&\n       ((((char)param_1[4] == '\x03' || ((char)param_1[4] == '\x14')) &&\n        (iVar4 = FUN_000386c0(*param_1), iVar4 == 0))))" (( "(") (binary_expression "(*param_2 == 4) &&\n       ((((char)param_1[4] == '\x03' || ((char)param_1[4] == '\x14')) &&\n        (iVar4 = FUN_000386c0(*param_1), iVar4 == 0)))" (parenthesized_expression "(*param_2 == 4)" (( "(") (binary_expression "*param_2 == 4" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (== "==") (number_literal "4")) () ")")) (&& "&&") (parenthesized_expression "((((char)param_1[4] == '\x03' || ((char)param_1[4] == '\x14')) &&\n        (iVar4 = FUN_000386c0(*param_1), iVar4 == 0)))" (( "(") (parenthesized_expression "(((char)param_1[4] == '\x03' || ((char)param_1[4] == '\x14')) &&\n        (iVar4 = FUN_000386c0(*param_1), iVar4 == 0))" (( "(") (binary_expression "((char)param_1[4] == '\x03' || ((char)param_1[4] == '\x14')) &&\n        (iVar4 = FUN_000386c0(*param_1), iVar4 == 0)" (parenthesized_expression "((char)param_1[4] == '\x03' || ((char)param_1[4] == '\x14'))" (( "(") (binary_expression "(char)param_1[4] == '\x03' || ((char)param_1[4] == '\x14')" (binary_expression "(char)param_1[4] == '\x03'" (cast_expression "(char)param_1[4]" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (subscript_expression "param_1[4]" (identifier "param_1") ([ "[") (number_literal "4") (] "]"))) (== "==") (char_literal "'\x03'" (' "'") (escape_sequence "\x03") (' "'"))) (|| "||") (parenthesized_expression "((char)param_1[4] == '\x14')" (( "(") (binary_expression "(char)param_1[4] == '\x14'" (cast_expression "(char)param_1[4]" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (subscript_expression "param_1[4]" (identifier "param_1") ([ "[") (number_literal "4") (] "]"))) (== "==") (char_literal "'\x14'" (' "'") (escape_sequence "\x14") (' "'"))) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(iVar4 = FUN_000386c0(*param_1), iVar4 == 0)" (( "(") (comma_expression "iVar4 = FUN_000386c0(*param_1), iVar4 == 0" (assignment_expression "iVar4 = FUN_000386c0(*param_1)" (identifier "iVar4") (= "=") (call_expression "FUN_000386c0(*param_1)" (identifier "FUN_000386c0") (argument_list "(*param_1)" (( "(") (pointer_expression "*param_1" (* "*") (identifier "param_1")) () ")")))) (, ",") (binary_expression "iVar4 == 0" (identifier "iVar4") (== "==") (number_literal "0"))) () ")"))) () ")")) () ")"))) () ")")) (compound_statement "{\n      *piVar6 = 1;\n      piVar6[4] = *param_1;\n      return 0;\n    }" ({ "{") (expression_statement "*piVar6 = 1;" (assignment_expression "*piVar6 = 1" (pointer_expression "*piVar6" (* "*") (identifier "piVar6")) (= "=") (number_literal "1")) (; ";")) (expression_statement "piVar6[4] = *param_1;" (assignment_expression "piVar6[4] = *param_1" (subscript_expression "piVar6[4]" (identifier "piVar6") ([ "[") (number_literal "4") (] "]")) (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}")))) (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (switch_statement "switch(*piVar6) {\n  case 0:\n    goto LAB_0001fe99;\n  case 1:\n  case 2:\n    *piVar6 = *piVar6 + 1;\n    return 0;\n  case 3:\n    break;\n  case 4:\n    if (*param_2 == -1) {\n      if ((char)param_1[4] != '\x02') goto code_r0x0001ffb8;\n      local_54 = param_1[2];\n      *piVar6 = 5;\n      piVar6[7] = local_54;\n    }\n    else {\n      if ((*param_2 != 1) || ((char)param_1[4] != '\x02')) {\ncode_r0x0001ffb8:\n        *piVar6 = 8;\n        return 0;\n      }\n      uVar8 = param_1[2];\n      local_54 = (uVar8 & 0x7f) << ((byte)piVar6[8] & 0x1f) | piVar6[7];\n      piVar6[7] = local_54;\n      piVar6[8] = piVar6[8] + 7;\n      if ((char)uVar8 < '\0') {\n        return 0;\n      }\n      *piVar6 = 5;\n    }\n    if (local_54 != 0) {\n      return 0;\n    }\n    *piVar6 = 6;\n    return 0;\n  case 5:\n    if (*param_2 < 0) {\ncode_r0x0001ff8e:\n      *piVar6 = 8;\n      return 0;\n    }\n    iVar4 = piVar6[7] - *param_2;\n    piVar6[7] = iVar4;\n    if (iVar4 != 0) {\n      if (-1 < iVar4) {\n        return 0;\n      }\n      goto code_r0x0001ff8e;\n    }\n    goto code_r0x00020108;\n  case 6:\n    if (*param_2 != 1) {\n      return 0;\n    }\n    if ((char)param_1[4] != '\x02') {\n      return 0;\n    }\n    if (param_1[2] != 4 || param_1[3] != 0) {\n      return 0;\n    }\n    FUN_000249b0(1);\n    *piVar6 = 7;\n    piVar6[5] = DAT_000898a0;\n    iVar4 = FUN_00024dc0();\n    piVar6[6] = iVar4;\n    return 0;\n  case 7:\n    *piVar6 = 6;\n    if (*param_2 != 4) {\n      return 0;\n    }\n    cVar5 = (char)param_1[4];\n    if (cVar5 == '\x02') {\n      uVar8 = param_1[2];\n      iVar4 = param_1[3];\n      if ((int)(uint)(0x3f < uVar8) <= -iVar4) {\n        *(byte *)(piVar6[5] + 0x68 + piVar6[6]) = (byte)uVar8 | 0x40;\n        return 1;\n      }\n      if (-iVar4 < (int)(uint)(0xff < uVar8)) {\n        if (-iVar4 < (int)(uint)(0xffff < uVar8)) {\n          return 0;\n        }\n        *(undefined1 *)(piVar6[5] + 0x68 + piVar6[6]) = 3;\n        *param_2 = 2;\n        return 0;\n      }\n      *(undefined1 *)(piVar6[5] + 0x68 + piVar6[6]) = 2;\n      *param_2 = 1;\n      return 0;\n    }\n    if (cVar5 == '\x14') {\n      if (piVar6[2] != 1) {\n        return 0;\n      }\n      iVar4 = piVar6[5];\n      iVar12 = piVar6[6];\n      uVar2 = FUN_00021220(param_1);\n      iVar3 = 8;\n    }\n    else {\n      if ((cVar5 != '\v') && (cVar5 != '\x0e')) {\n        return 0;\n      }\n      if ((uint)piVar6[2] < 2) {\n        return 0;\n      }\n      iVar3 = *param_1;\n      if (*(int *)(iVar3 + 4) == 0) {\n        return 0;\n      }\n      iVar4 = param_1[1];\n      if (*(int *)(iVar4 + 4) == 0) {\n        return 0;\n      }\n      if (*(char *)(iVar3 + 0x18) != '\x14') {\n        return 0;\n      }\n      if (*(char *)(iVar4 + 0x18) != '\x02') {\n        return 0;\n      }\n      iVar12 = *(int *)(iVar4 + 0x14);\n      uVar8 = *(uint *)(iVar4 + 0x10);\n      if (cVar5 != '\v') {\n        uVar11 = uVar8 >> 5 & 1;\n        iVar12 = uVar11 << ((byte)uVar8 & 0x1f);\n        uVar8 = (uVar11 ^ 1) << ((byte)uVar8 & 0x1f);\n      }\n      if (iVar12 != 0) {\n        return 0;\n      }\n      if (piVar6[2] != uVar8) {\n        return 0;\n      }\n      iVar4 = piVar6[5];\n      iVar12 = piVar6[6];\n      uVar2 = FUN_00021220(iVar3 + 8);\n      iVar3 = piVar6[2] << 3;\n    }\n    FUN_00024b60(0xc,4,0,iVar3,uVar2,iVar12,iVar12 >> 0x1f,iVar4);\n    return 1;\n  default:\n    return 0;\n  }" (switch "switch") (parenthesized_expression "(*piVar6)" (( "(") (pointer_expression "*piVar6" (* "*") (identifier "piVar6")) () ")")) (compound_statement "{\n  case 0:\n    goto LAB_0001fe99;\n  case 1:\n  case 2:\n    *piVar6 = *piVar6 + 1;\n    return 0;\n  case 3:\n    break;\n  case 4:\n    if (*param_2 == -1) {\n      if ((char)param_1[4] != '\x02') goto code_r0x0001ffb8;\n      local_54 = param_1[2];\n      *piVar6 = 5;\n      piVar6[7] = local_54;\n    }\n    else {\n      if ((*param_2 != 1) || ((char)param_1[4] != '\x02')) {\ncode_r0x0001ffb8:\n        *piVar6 = 8;\n        return 0;\n      }\n      uVar8 = param_1[2];\n      local_54 = (uVar8 & 0x7f) << ((byte)piVar6[8] & 0x1f) | piVar6[7];\n      piVar6[7] = local_54;\n      piVar6[8] = piVar6[8] + 7;\n      if ((char)uVar8 < '\0') {\n        return 0;\n      }\n      *piVar6 = 5;\n    }\n    if (local_54 != 0) {\n      return 0;\n    }\n    *piVar6 = 6;\n    return 0;\n  case 5:\n    if (*param_2 < 0) {\ncode_r0x0001ff8e:\n      *piVar6 = 8;\n      return 0;\n    }\n    iVar4 = piVar6[7] - *param_2;\n    piVar6[7] = iVar4;\n    if (iVar4 != 0) {\n      if (-1 < iVar4) {\n        return 0;\n      }\n      goto code_r0x0001ff8e;\n    }\n    goto code_r0x00020108;\n  case 6:\n    if (*param_2 != 1) {\n      return 0;\n    }\n    if ((char)param_1[4] != '\x02') {\n      return 0;\n    }\n    if (param_1[2] != 4 || param_1[3] != 0) {\n      return 0;\n    }\n    FUN_000249b0(1);\n    *piVar6 = 7;\n    piVar6[5] = DAT_000898a0;\n    iVar4 = FUN_00024dc0();\n    piVar6[6] = iVar4;\n    return 0;\n  case 7:\n    *piVar6 = 6;\n    if (*param_2 != 4) {\n      return 0;\n    }\n    cVar5 = (char)param_1[4];\n    if (cVar5 == '\x02') {\n      uVar8 = param_1[2];\n      iVar4 = param_1[3];\n      if ((int)(uint)(0x3f < uVar8) <= -iVar4) {\n        *(byte *)(piVar6[5] + 0x68 + piVar6[6]) = (byte)uVar8 | 0x40;\n        return 1;\n      }\n      if (-iVar4 < (int)(uint)(0xff < uVar8)) {\n        if (-iVar4 < (int)(uint)(0xffff < uVar8)) {\n          return 0;\n        }\n        *(undefined1 *)(piVar6[5] + 0x68 + piVar6[6]) = 3;\n        *param_2 = 2;\n        return 0;\n      }\n      *(undefined1 *)(piVar6[5] + 0x68 + piVar6[6]) = 2;\n      *param_2 = 1;\n      return 0;\n    }\n    if (cVar5 == '\x14') {\n      if (piVar6[2] != 1) {\n        return 0;\n      }\n      iVar4 = piVar6[5];\n      iVar12 = piVar6[6];\n      uVar2 = FUN_00021220(param_1);\n      iVar3 = 8;\n    }\n    else {\n      if ((cVar5 != '\v') && (cVar5 != '\x0e')) {\n        return 0;\n      }\n      if ((uint)piVar6[2] < 2) {\n        return 0;\n      }\n      iVar3 = *param_1;\n      if (*(int *)(iVar3 + 4) == 0) {\n        return 0;\n      }\n      iVar4 = param_1[1];\n      if (*(int *)(iVar4 + 4) == 0) {\n        return 0;\n      }\n      if (*(char *)(iVar3 + 0x18) != '\x14') {\n        return 0;\n      }\n      if (*(char *)(iVar4 + 0x18) != '\x02') {\n        return 0;\n      }\n      iVar12 = *(int *)(iVar4 + 0x14);\n      uVar8 = *(uint *)(iVar4 + 0x10);\n      if (cVar5 != '\v') {\n        uVar11 = uVar8 >> 5 & 1;\n        iVar12 = uVar11 << ((byte)uVar8 & 0x1f);\n        uVar8 = (uVar11 ^ 1) << ((byte)uVar8 & 0x1f);\n      }\n      if (iVar12 != 0) {\n        return 0;\n      }\n      if (piVar6[2] != uVar8) {\n        return 0;\n      }\n      iVar4 = piVar6[5];\n      iVar12 = piVar6[6];\n      uVar2 = FUN_00021220(iVar3 + 8);\n      iVar3 = piVar6[2] << 3;\n    }\n    FUN_00024b60(0xc,4,0,iVar3,uVar2,iVar12,iVar12 >> 0x1f,iVar4);\n    return 1;\n  default:\n    return 0;\n  }" ({ "{") (case_statement "case 0:\n    goto LAB_0001fe99;" (case "case") (number_literal "0") (: ":") (goto_statement "goto LAB_0001fe99;" (goto "goto") (statement_identifier "LAB_0001fe99") (; ";"))) (case_statement "case 1:" (case "case") (number_literal "1") (: ":")) (case_statement "case 2:\n    *piVar6 = *piVar6 + 1;\n    return 0;" (case "case") (number_literal "2") (: ":") (expression_statement "*piVar6 = *piVar6 + 1;" (assignment_expression "*piVar6 = *piVar6 + 1" (pointer_expression "*piVar6" (* "*") (identifier "piVar6")) (= "=") (binary_expression "*piVar6 + 1" (pointer_expression "*piVar6" (* "*") (identifier "piVar6")) (+ "+") (number_literal "1"))) (; ";")) (return_statement "return 0;" (return "return") (number_literal "0") (; ";"))) (case_statement "case 3:\n    break;" (case "case") (number_literal "3") (: ":") (break_statement "break;" (break "break") (; ";"))) (case_statement "case 4:\n    if (*param_2 == -1) {\n      if ((char)param_1[4] != '\x02') goto code_r0x0001ffb8;\n      local_54 = param_1[2];\n      *piVar6 = 5;\n      piVar6[7] = local_54;\n    }\n    else {\n      if ((*param_2 != 1) || ((char)param_1[4] != '\x02')) {\ncode_r0x0001ffb8:\n        *piVar6 = 8;\n        return 0;\n      }\n      uVar8 = param_1[2];\n      local_54 = (uVar8 & 0x7f) << ((byte)piVar6[8] & 0x1f) | piVar6[7];\n      piVar6[7] = local_54;\n      piVar6[8] = piVar6[8] + 7;\n      if ((char)uVar8 < '\0') {\n        return 0;\n      }\n      *piVar6 = 5;\n    }\n    if (local_54 != 0) {\n      return 0;\n    }\n    *piVar6 = 6;\n    return 0;" (case "case") (number_literal "4") (: ":") (if_statement "if (*param_2 == -1) {\n      if ((char)param_1[4] != '\x02') goto code_r0x0001ffb8;\n      local_54 = param_1[2];\n      *piVar6 = 5;\n      piVar6[7] = local_54;\n    }\n    else {\n      if ((*param_2 != 1) || ((char)param_1[4] != '\x02')) {\ncode_r0x0001ffb8:\n        *piVar6 = 8;\n        return 0;\n      }\n      uVar8 = param_1[2];\n      local_54 = (uVar8 & 0x7f) << ((byte)piVar6[8] & 0x1f) | piVar6[7];\n      piVar6[7] = local_54;\n      piVar6[8] = piVar6[8] + 7;\n      if ((char)uVar8 < '\0') {\n        return 0;\n      }\n      *piVar6 = 5;\n    }" (if "if") (parenthesized_expression "(*param_2 == -1)" (( "(") (binary_expression "*param_2 == -1" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (== "==") (number_literal "-1")) () ")")) (compound_statement "{\n      if ((char)param_1[4] != '\x02') goto code_r0x0001ffb8;\n      local_54 = param_1[2];\n      *piVar6 = 5;\n      piVar6[7] = local_54;\n    }" ({ "{") (if_statement "if ((char)param_1[4] != '\x02') goto code_r0x0001ffb8;" (if "if") (parenthesized_expression "((char)param_1[4] != '\x02')" (( "(") (binary_expression "(char)param_1[4] != '\x02'" (cast_expression "(char)param_1[4]" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (subscript_expression "param_1[4]" (identifier "param_1") ([ "[") (number_literal "4") (] "]"))) (!= "!=") (char_literal "'\x02'" (' "'") (escape_sequence "\x02") (' "'"))) () ")")) (goto_statement "goto code_r0x0001ffb8;" (goto "goto") (statement_identifier "code_r0x0001ffb8") (; ";"))) (expression_statement "local_54 = param_1[2];" (assignment_expression "local_54 = param_1[2]" (identifier "local_54") (= "=") (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "*piVar6 = 5;" (assignment_expression "*piVar6 = 5" (pointer_expression "*piVar6" (* "*") (identifier "piVar6")) (= "=") (number_literal "5")) (; ";")) (expression_statement "piVar6[7] = local_54;" (assignment_expression "piVar6[7] = local_54" (subscript_expression "piVar6[7]" (identifier "piVar6") ([ "[") (number_literal "7") (] "]")) (= "=") (identifier "local_54")) (; ";")) (} "}")) (else_clause "else {\n      if ((*param_2 != 1) || ((char)param_1[4] != '\x02')) {\ncode_r0x0001ffb8:\n        *piVar6 = 8;\n        return 0;\n      }\n      uVar8 = param_1[2];\n      local_54 = (uVar8 & 0x7f) << ((byte)piVar6[8] & 0x1f) | piVar6[7];\n      piVar6[7] = local_54;\n      piVar6[8] = piVar6[8] + 7;\n      if ((char)uVar8 < '\0') {\n        return 0;\n      }\n      *piVar6 = 5;\n    }" (else "else") (compound_statement "{\n      if ((*param_2 != 1) || ((char)param_1[4] != '\x02')) {\ncode_r0x0001ffb8:\n        *piVar6 = 8;\n        return 0;\n      }\n      uVar8 = param_1[2];\n      local_54 = (uVar8 & 0x7f) << ((byte)piVar6[8] & 0x1f) | piVar6[7];\n      piVar6[7] = local_54;\n      piVar6[8] = piVar6[8] + 7;\n      if ((char)uVar8 < '\0') {\n        return 0;\n      }\n      *piVar6 = 5;\n    }" ({ "{") (if_statement "if ((*param_2 != 1) || ((char)param_1[4] != '\x02')) {\ncode_r0x0001ffb8:\n        *piVar6 = 8;\n        return 0;\n      }" (if "if") (parenthesized_expression "((*param_2 != 1) || ((char)param_1[4] != '\x02'))" (( "(") (binary_expression "(*param_2 != 1) || ((char)param_1[4] != '\x02')" (parenthesized_expression "(*param_2 != 1)" (( "(") (binary_expression "*param_2 != 1" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (!= "!=") (number_literal "1")) () ")")) (|| "||") (parenthesized_expression "((char)param_1[4] != '\x02')" (( "(") (binary_expression "(char)param_1[4] != '\x02'" (cast_expression "(char)param_1[4]" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (subscript_expression "param_1[4]" (identifier "param_1") ([ "[") (number_literal "4") (] "]"))) (!= "!=") (char_literal "'\x02'" (' "'") (escape_sequence "\x02") (' "'"))) () ")"))) () ")")) (compound_statement "{\ncode_r0x0001ffb8:\n        *piVar6 = 8;\n        return 0;\n      }" ({ "{") (labeled_statement "code_r0x0001ffb8:\n        *piVar6 = 8;" (statement_identifier "code_r0x0001ffb8") (: ":") (expression_statement "*piVar6 = 8;" (assignment_expression "*piVar6 = 8" (pointer_expression "*piVar6" (* "*") (identifier "piVar6")) (= "=") (number_literal "8")) (; ";"))) (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "uVar8 = param_1[2];" (assignment_expression "uVar8 = param_1[2]" (identifier "uVar8") (= "=") (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "local_54 = (uVar8 & 0x7f) << ((byte)piVar6[8] & 0x1f) | piVar6[7];" (assignment_expression "local_54 = (uVar8 & 0x7f) << ((byte)piVar6[8] & 0x1f) | piVar6[7]" (identifier "local_54") (= "=") (binary_expression "(uVar8 & 0x7f) << ((byte)piVar6[8] & 0x1f) | piVar6[7]" (binary_expression "(uVar8 & 0x7f) << ((byte)piVar6[8] & 0x1f)" (parenthesized_expression "(uVar8 & 0x7f)" (( "(") (binary_expression "uVar8 & 0x7f" (identifier "uVar8") (& "&") (number_literal "0x7f")) () ")")) (<< "<<") (parenthesized_expression "((byte)piVar6[8] & 0x1f)" (( "(") (binary_expression "(byte)piVar6[8] & 0x1f" (cast_expression "(byte)piVar6[8]" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (subscript_expression "piVar6[8]" (identifier "piVar6") ([ "[") (number_literal "8") (] "]"))) (& "&") (number_literal "0x1f")) () ")"))) (| "|") (subscript_expression "piVar6[7]" (identifier "piVar6") ([ "[") (number_literal "7") (] "]")))) (; ";")) (expression_statement "piVar6[7] = local_54;" (assignment_expression "piVar6[7] = local_54" (subscript_expression "piVar6[7]" (identifier "piVar6") ([ "[") (number_literal "7") (] "]")) (= "=") (identifier "local_54")) (; ";")) (expression_statement "piVar6[8] = piVar6[8] + 7;" (assignment_expression "piVar6[8] = piVar6[8] + 7" (subscript_expression "piVar6[8]" (identifier "piVar6") ([ "[") (number_literal "8") (] "]")) (= "=") (binary_expression "piVar6[8] + 7" (subscript_expression "piVar6[8]" (identifier "piVar6") ([ "[") (number_literal "8") (] "]")) (+ "+") (number_literal "7"))) (; ";")) (if_statement "if ((char)uVar8 < '\0') {\n        return 0;\n      }" (if "if") (parenthesized_expression "((char)uVar8 < '\0')" (( "(") (binary_expression "(char)uVar8 < '\0'" (cast_expression "(char)uVar8" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "uVar8")) (< "<") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n        return 0;\n      }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "*piVar6 = 5;" (assignment_expression "*piVar6 = 5" (pointer_expression "*piVar6" (* "*") (identifier "piVar6")) (= "=") (number_literal "5")) (; ";")) (} "}")))) (if_statement "if (local_54 != 0) {\n      return 0;\n    }" (if "if") (parenthesized_expression "(local_54 != 0)" (( "(") (binary_expression "local_54 != 0" (identifier "local_54") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      return 0;\n    }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "*piVar6 = 6;" (assignment_expression "*piVar6 = 6" (pointer_expression "*piVar6" (* "*") (identifier "piVar6")) (= "=") (number_literal "6")) (; ";")) (return_statement "return 0;" (return "return") (number_literal "0") (; ";"))) (case_statement "case 5:\n    if (*param_2 < 0) {\ncode_r0x0001ff8e:\n      *piVar6 = 8;\n      return 0;\n    }\n    iVar4 = piVar6[7] - *param_2;\n    piVar6[7] = iVar4;\n    if (iVar4 != 0) {\n      if (-1 < iVar4) {\n        return 0;\n      }\n      goto code_r0x0001ff8e;\n    }\n    goto code_r0x00020108;" (case "case") (number_literal "5") (: ":") (if_statement "if (*param_2 < 0) {\ncode_r0x0001ff8e:\n      *piVar6 = 8;\n      return 0;\n    }" (if "if") (parenthesized_expression "(*param_2 < 0)" (( "(") (binary_expression "*param_2 < 0" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (< "<") (number_literal "0")) () ")")) (compound_statement "{\ncode_r0x0001ff8e:\n      *piVar6 = 8;\n      return 0;\n    }" ({ "{") (labeled_statement "code_r0x0001ff8e:\n      *piVar6 = 8;" (statement_identifier "code_r0x0001ff8e") (: ":") (expression_statement "*piVar6 = 8;" (assignment_expression "*piVar6 = 8" (pointer_expression "*piVar6" (* "*") (identifier "piVar6")) (= "=") (number_literal "8")) (; ";"))) (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "iVar4 = piVar6[7] - *param_2;" (assignment_expression "iVar4 = piVar6[7] - *param_2" (identifier "iVar4") (= "=") (binary_expression "piVar6[7] - *param_2" (subscript_expression "piVar6[7]" (identifier "piVar6") ([ "[") (number_literal "7") (] "]")) (- "-") (pointer_expression "*param_2" (* "*") (identifier "param_2")))) (; ";")) (expression_statement "piVar6[7] = iVar4;" (assignment_expression "piVar6[7] = iVar4" (subscript_expression "piVar6[7]" (identifier "piVar6") ([ "[") (number_literal "7") (] "]")) (= "=") (identifier "iVar4")) (; ";")) (if_statement "if (iVar4 != 0) {\n      if (-1 < iVar4) {\n        return 0;\n      }\n      goto code_r0x0001ff8e;\n    }" (if "if") (parenthesized_expression "(iVar4 != 0)" (( "(") (binary_expression "iVar4 != 0" (identifier "iVar4") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      if (-1 < iVar4) {\n        return 0;\n      }\n      goto code_r0x0001ff8e;\n    }" ({ "{") (if_statement "if (-1 < iVar4) {\n        return 0;\n      }" (if "if") (parenthesized_expression "(-1 < iVar4)" (( "(") (binary_expression "-1 < iVar4" (number_literal "-1") (< "<") (identifier "iVar4")) () ")")) (compound_statement "{\n        return 0;\n      }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (goto_statement "goto code_r0x0001ff8e;" (goto "goto") (statement_identifier "code_r0x0001ff8e") (; ";")) (} "}"))) (goto_statement "goto code_r0x00020108;" (goto "goto") (statement_identifier "code_r0x00020108") (; ";"))) (case_statement "case 6:\n    if (*param_2 != 1) {\n      return 0;\n    }\n    if ((char)param_1[4] != '\x02') {\n      return 0;\n    }\n    if (param_1[2] != 4 || param_1[3] != 0) {\n      return 0;\n    }\n    FUN_000249b0(1);\n    *piVar6 = 7;\n    piVar6[5] = DAT_000898a0;\n    iVar4 = FUN_00024dc0();\n    piVar6[6] = iVar4;\n    return 0;" (case "case") (number_literal "6") (: ":") (if_statement "if (*param_2 != 1) {\n      return 0;\n    }" (if "if") (parenthesized_expression "(*param_2 != 1)" (( "(") (binary_expression "*param_2 != 1" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (!= "!=") (number_literal "1")) () ")")) (compound_statement "{\n      return 0;\n    }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (if_statement "if ((char)param_1[4] != '\x02') {\n      return 0;\n    }" (if "if") (parenthesized_expression "((char)param_1[4] != '\x02')" (( "(") (binary_expression "(char)param_1[4] != '\x02'" (cast_expression "(char)param_1[4]" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (subscript_expression "param_1[4]" (identifier "param_1") ([ "[") (number_literal "4") (] "]"))) (!= "!=") (char_literal "'\x02'" (' "'") (escape_sequence "\x02") (' "'"))) () ")")) (compound_statement "{\n      return 0;\n    }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (if_statement "if (param_1[2] != 4 || param_1[3] != 0) {\n      return 0;\n    }" (if "if") (parenthesized_expression "(param_1[2] != 4 || param_1[3] != 0)" (( "(") (binary_expression "param_1[2] != 4 || param_1[3] != 0" (binary_expression "param_1[2] != 4" (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")) (!= "!=") (number_literal "4")) (|| "||") (binary_expression "param_1[3] != 0" (subscript_expression "param_1[3]" (identifier "param_1") ([ "[") (number_literal "3") (] "]")) (!= "!=") (number_literal "0"))) () ")")) (compound_statement "{\n      return 0;\n    }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "FUN_000249b0(1);" (call_expression "FUN_000249b0(1)" (identifier "FUN_000249b0") (argument_list "(1)" (( "(") (number_literal "1") () ")"))) (; ";")) (expression_statement "*piVar6 = 7;" (assignment_expression "*piVar6 = 7" (pointer_expression "*piVar6" (* "*") (identifier "piVar6")) (= "=") (number_literal "7")) (; ";")) (expression_statement "piVar6[5] = DAT_000898a0;" (assignment_expression "piVar6[5] = DAT_000898a0" (subscript_expression "piVar6[5]" (identifier "piVar6") ([ "[") (number_literal "5") (] "]")) (= "=") (identifier "DAT_000898a0")) (; ";")) (expression_statement "iVar4 = FUN_00024dc0();" (assignment_expression "iVar4 = FUN_00024dc0()" (identifier "iVar4") (= "=") (call_expression "FUN_00024dc0()" (identifier "FUN_00024dc0") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "piVar6[6] = iVar4;" (assignment_expression "piVar6[6] = iVar4" (subscript_expression "piVar6[6]" (identifier "piVar6") ([ "[") (number_literal "6") (] "]")) (= "=") (identifier "iVar4")) (; ";")) (return_statement "return 0;" (return "return") (number_literal "0") (; ";"))) (case_statement "case 7:\n    *piVar6 = 6;\n    if (*param_2 != 4) {\n      return 0;\n    }\n    cVar5 = (char)param_1[4];\n    if (cVar5 == '\x02') {\n      uVar8 = param_1[2];\n      iVar4 = param_1[3];\n      if ((int)(uint)(0x3f < uVar8) <= -iVar4) {\n        *(byte *)(piVar6[5] + 0x68 + piVar6[6]) = (byte)uVar8 | 0x40;\n        return 1;\n      }\n      if (-iVar4 < (int)(uint)(0xff < uVar8)) {\n        if (-iVar4 < (int)(uint)(0xffff < uVar8)) {\n          return 0;\n        }\n        *(undefined1 *)(piVar6[5] + 0x68 + piVar6[6]) = 3;\n        *param_2 = 2;\n        return 0;\n      }\n      *(undefined1 *)(piVar6[5] + 0x68 + piVar6[6]) = 2;\n      *param_2 = 1;\n      return 0;\n    }\n    if (cVar5 == '\x14') {\n      if (piVar6[2] != 1) {\n        return 0;\n      }\n      iVar4 = piVar6[5];\n      iVar12 = piVar6[6];\n      uVar2 = FUN_00021220(param_1);\n      iVar3 = 8;\n    }\n    else {\n      if ((cVar5 != '\v') && (cVar5 != '\x0e')) {\n        return 0;\n      }\n      if ((uint)piVar6[2] < 2) {\n        return 0;\n      }\n      iVar3 = *param_1;\n      if (*(int *)(iVar3 + 4) == 0) {\n        return 0;\n      }\n      iVar4 = param_1[1];\n      if (*(int *)(iVar4 + 4) == 0) {\n        return 0;\n      }\n      if (*(char *)(iVar3 + 0x18) != '\x14') {\n        return 0;\n      }\n      if (*(char *)(iVar4 + 0x18) != '\x02') {\n        return 0;\n      }\n      iVar12 = *(int *)(iVar4 + 0x14);\n      uVar8 = *(uint *)(iVar4 + 0x10);\n      if (cVar5 != '\v') {\n        uVar11 = uVar8 >> 5 & 1;\n        iVar12 = uVar11 << ((byte)uVar8 & 0x1f);\n        uVar8 = (uVar11 ^ 1) << ((byte)uVar8 & 0x1f);\n      }\n      if (iVar12 != 0) {\n        return 0;\n      }\n      if (piVar6[2] != uVar8) {\n        return 0;\n      }\n      iVar4 = piVar6[5];\n      iVar12 = piVar6[6];\n      uVar2 = FUN_00021220(iVar3 + 8);\n      iVar3 = piVar6[2] << 3;\n    }\n    FUN_00024b60(0xc,4,0,iVar3,uVar2,iVar12,iVar12 >> 0x1f,iVar4);\n    return 1;" (case "case") (number_literal "7") (: ":") (expression_statement "*piVar6 = 6;" (assignment_expression "*piVar6 = 6" (pointer_expression "*piVar6" (* "*") (identifier "piVar6")) (= "=") (number_literal "6")) (; ";")) (if_statement "if (*param_2 != 4) {\n      return 0;\n    }" (if "if") (parenthesized_expression "(*param_2 != 4)" (( "(") (binary_expression "*param_2 != 4" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (!= "!=") (number_literal "4")) () ")")) (compound_statement "{\n      return 0;\n    }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "cVar5 = (char)param_1[4];" (assignment_expression "cVar5 = (char)param_1[4]" (identifier "cVar5") (= "=") (cast_expression "(char)param_1[4]" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (subscript_expression "param_1[4]" (identifier "param_1") ([ "[") (number_literal "4") (] "]")))) (; ";")) (if_statement "if (cVar5 == '\x02') {\n      uVar8 = param_1[2];\n      iVar4 = param_1[3];\n      if ((int)(uint)(0x3f < uVar8) <= -iVar4) {\n        *(byte *)(piVar6[5] + 0x68 + piVar6[6]) = (byte)uVar8 | 0x40;\n        return 1;\n      }\n      if (-iVar4 < (int)(uint)(0xff < uVar8)) {\n        if (-iVar4 < (int)(uint)(0xffff < uVar8)) {\n          return 0;\n        }\n        *(undefined1 *)(piVar6[5] + 0x68 + piVar6[6]) = 3;\n        *param_2 = 2;\n        return 0;\n      }\n      *(undefined1 *)(piVar6[5] + 0x68 + piVar6[6]) = 2;\n      *param_2 = 1;\n      return 0;\n    }" (if "if") (parenthesized_expression "(cVar5 == '\x02')" (( "(") (binary_expression "cVar5 == '\x02'" (identifier "cVar5") (== "==") (char_literal "'\x02'" (' "'") (escape_sequence "\x02") (' "'"))) () ")")) (compound_statement "{\n      uVar8 = param_1[2];\n      iVar4 = param_1[3];\n      if ((int)(uint)(0x3f < uVar8) <= -iVar4) {\n        *(byte *)(piVar6[5] + 0x68 + piVar6[6]) = (byte)uVar8 | 0x40;\n        return 1;\n      }\n      if (-iVar4 < (int)(uint)(0xff < uVar8)) {\n        if (-iVar4 < (int)(uint)(0xffff < uVar8)) {\n          return 0;\n        }\n        *(undefined1 *)(piVar6[5] + 0x68 + piVar6[6]) = 3;\n        *param_2 = 2;\n        return 0;\n      }\n      *(undefined1 *)(piVar6[5] + 0x68 + piVar6[6]) = 2;\n      *param_2 = 1;\n      return 0;\n    }" ({ "{") (expression_statement "uVar8 = param_1[2];" (assignment_expression "uVar8 = param_1[2]" (identifier "uVar8") (= "=") (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "iVar4 = param_1[3];" (assignment_expression "iVar4 = param_1[3]" (identifier "iVar4") (= "=") (subscript_expression "param_1[3]" (identifier "param_1") ([ "[") (number_literal "3") (] "]"))) (; ";")) (if_statement "if ((int)(uint)(0x3f < uVar8) <= -iVar4) {\n        *(byte *)(piVar6[5] + 0x68 + piVar6[6]) = (byte)uVar8 | 0x40;\n        return 1;\n      }" (if "if") (parenthesized_expression "((int)(uint)(0x3f < uVar8) <= -iVar4)" (( "(") (binary_expression "(int)(uint)(0x3f < uVar8) <= -iVar4" (cast_expression "(int)(uint)(0x3f < uVar8)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (call_expression "(uint)(0x3f < uVar8)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(0x3f < uVar8)" (( "(") (binary_expression "0x3f < uVar8" (number_literal "0x3f") (< "<") (identifier "uVar8")) () ")")))) (<= "<=") (unary_expression "-iVar4" (- "-") (identifier "iVar4"))) () ")")) (compound_statement "{\n        *(byte *)(piVar6[5] + 0x68 + piVar6[6]) = (byte)uVar8 | 0x40;\n        return 1;\n      }" ({ "{") (expression_statement "*(byte *)(piVar6[5] + 0x68 + piVar6[6]) = (byte)uVar8 | 0x40;" (assignment_expression "*(byte *)(piVar6[5] + 0x68 + piVar6[6]) = (byte)uVar8 | 0x40" (pointer_expression "*(byte *)(piVar6[5] + 0x68 + piVar6[6])" (* "*") (cast_expression "(byte *)(piVar6[5] + 0x68 + piVar6[6])" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar6[5] + 0x68 + piVar6[6])" (( "(") (binary_expression "piVar6[5] + 0x68 + piVar6[6]" (binary_expression "piVar6[5] + 0x68" (subscript_expression "piVar6[5]" (identifier "piVar6") ([ "[") (number_literal "5") (] "]")) (+ "+") (number_literal "0x68")) (+ "+") (subscript_expression "piVar6[6]" (identifier "piVar6") ([ "[") (number_literal "6") (] "]"))) () ")")))) (= "=") (binary_expression "(byte)uVar8 | 0x40" (cast_expression "(byte)uVar8" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar8")) (| "|") (number_literal "0x40"))) (; ";")) (return_statement "return 1;" (return "return") (number_literal "1") (; ";")) (} "}"))) (if_statement "if (-iVar4 < (int)(uint)(0xff < uVar8)) {\n        if (-iVar4 < (int)(uint)(0xffff < uVar8)) {\n          return 0;\n        }\n        *(undefined1 *)(piVar6[5] + 0x68 + piVar6[6]) = 3;\n        *param_2 = 2;\n        return 0;\n      }" (if "if") (parenthesized_expression "(-iVar4 < (int)(uint)(0xff < uVar8))" (( "(") (binary_expression "-iVar4 < (int)(uint)(0xff < uVar8)" (unary_expression "-iVar4" (- "-") (identifier "iVar4")) (< "<") (cast_expression "(int)(uint)(0xff < uVar8)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (call_expression "(uint)(0xff < uVar8)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(0xff < uVar8)" (( "(") (binary_expression "0xff < uVar8" (number_literal "0xff") (< "<") (identifier "uVar8")) () ")"))))) () ")")) (compound_statement "{\n        if (-iVar4 < (int)(uint)(0xffff < uVar8)) {\n          return 0;\n        }\n        *(undefined1 *)(piVar6[5] + 0x68 + piVar6[6]) = 3;\n        *param_2 = 2;\n        return 0;\n      }" ({ "{") (if_statement "if (-iVar4 < (int)(uint)(0xffff < uVar8)) {\n          return 0;\n        }" (if "if") (parenthesized_expression "(-iVar4 < (int)(uint)(0xffff < uVar8))" (( "(") (binary_expression "-iVar4 < (int)(uint)(0xffff < uVar8)" (unary_expression "-iVar4" (- "-") (identifier "iVar4")) (< "<") (cast_expression "(int)(uint)(0xffff < uVar8)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (call_expression "(uint)(0xffff < uVar8)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(0xffff < uVar8)" (( "(") (binary_expression "0xffff < uVar8" (number_literal "0xffff") (< "<") (identifier "uVar8")) () ")"))))) () ")")) (compound_statement "{\n          return 0;\n        }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "*(undefined1 *)(piVar6[5] + 0x68 + piVar6[6]) = 3;" (assignment_expression "*(undefined1 *)(piVar6[5] + 0x68 + piVar6[6]) = 3" (pointer_expression "*(undefined1 *)(piVar6[5] + 0x68 + piVar6[6])" (* "*") (cast_expression "(undefined1 *)(piVar6[5] + 0x68 + piVar6[6])" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar6[5] + 0x68 + piVar6[6])" (( "(") (binary_expression "piVar6[5] + 0x68 + piVar6[6]" (binary_expression "piVar6[5] + 0x68" (subscript_expression "piVar6[5]" (identifier "piVar6") ([ "[") (number_literal "5") (] "]")) (+ "+") (number_literal "0x68")) (+ "+") (subscript_expression "piVar6[6]" (identifier "piVar6") ([ "[") (number_literal "6") (] "]"))) () ")")))) (= "=") (number_literal "3")) (; ";")) (expression_statement "*param_2 = 2;" (assignment_expression "*param_2 = 2" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (number_literal "2")) (; ";")) (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "*(undefined1 *)(piVar6[5] + 0x68 + piVar6[6]) = 2;" (assignment_expression "*(undefined1 *)(piVar6[5] + 0x68 + piVar6[6]) = 2" (pointer_expression "*(undefined1 *)(piVar6[5] + 0x68 + piVar6[6])" (* "*") (cast_expression "(undefined1 *)(piVar6[5] + 0x68 + piVar6[6])" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar6[5] + 0x68 + piVar6[6])" (( "(") (binary_expression "piVar6[5] + 0x68 + piVar6[6]" (binary_expression "piVar6[5] + 0x68" (subscript_expression "piVar6[5]" (identifier "piVar6") ([ "[") (number_literal "5") (] "]")) (+ "+") (number_literal "0x68")) (+ "+") (subscript_expression "piVar6[6]" (identifier "piVar6") ([ "[") (number_literal "6") (] "]"))) () ")")))) (= "=") (number_literal "2")) (; ";")) (expression_statement "*param_2 = 1;" (assignment_expression "*param_2 = 1" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (number_literal "1")) (; ";")) (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (if_statement "if (cVar5 == '\x14') {\n      if (piVar6[2] != 1) {\n        return 0;\n      }\n      iVar4 = piVar6[5];\n      iVar12 = piVar6[6];\n      uVar2 = FUN_00021220(param_1);\n      iVar3 = 8;\n    }\n    else {\n      if ((cVar5 != '\v') && (cVar5 != '\x0e')) {\n        return 0;\n      }\n      if ((uint)piVar6[2] < 2) {\n        return 0;\n      }\n      iVar3 = *param_1;\n      if (*(int *)(iVar3 + 4) == 0) {\n        return 0;\n      }\n      iVar4 = param_1[1];\n      if (*(int *)(iVar4 + 4) == 0) {\n        return 0;\n      }\n      if (*(char *)(iVar3 + 0x18) != '\x14') {\n        return 0;\n      }\n      if (*(char *)(iVar4 + 0x18) != '\x02') {\n        return 0;\n      }\n      iVar12 = *(int *)(iVar4 + 0x14);\n      uVar8 = *(uint *)(iVar4 + 0x10);\n      if (cVar5 != '\v') {\n        uVar11 = uVar8 >> 5 & 1;\n        iVar12 = uVar11 << ((byte)uVar8 & 0x1f);\n        uVar8 = (uVar11 ^ 1) << ((byte)uVar8 & 0x1f);\n      }\n      if (iVar12 != 0) {\n        return 0;\n      }\n      if (piVar6[2] != uVar8) {\n        return 0;\n      }\n      iVar4 = piVar6[5];\n      iVar12 = piVar6[6];\n      uVar2 = FUN_00021220(iVar3 + 8);\n      iVar3 = piVar6[2] << 3;\n    }" (if "if") (parenthesized_expression "(cVar5 == '\x14')" (( "(") (binary_expression "cVar5 == '\x14'" (identifier "cVar5") (== "==") (char_literal "'\x14'" (' "'") (escape_sequence "\x14") (' "'"))) () ")")) (compound_statement "{\n      if (piVar6[2] != 1) {\n        return 0;\n      }\n      iVar4 = piVar6[5];\n      iVar12 = piVar6[6];\n      uVar2 = FUN_00021220(param_1);\n      iVar3 = 8;\n    }" ({ "{") (if_statement "if (piVar6[2] != 1) {\n        return 0;\n      }" (if "if") (parenthesized_expression "(piVar6[2] != 1)" (( "(") (binary_expression "piVar6[2] != 1" (subscript_expression "piVar6[2]" (identifier "piVar6") ([ "[") (number_literal "2") (] "]")) (!= "!=") (number_literal "1")) () ")")) (compound_statement "{\n        return 0;\n      }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "iVar4 = piVar6[5];" (assignment_expression "iVar4 = piVar6[5]" (identifier "iVar4") (= "=") (subscript_expression "piVar6[5]" (identifier "piVar6") ([ "[") (number_literal "5") (] "]"))) (; ";")) (expression_statement "iVar12 = piVar6[6];" (assignment_expression "iVar12 = piVar6[6]" (identifier "iVar12") (= "=") (subscript_expression "piVar6[6]" (identifier "piVar6") ([ "[") (number_literal "6") (] "]"))) (; ";")) (expression_statement "uVar2 = FUN_00021220(param_1);" (assignment_expression "uVar2 = FUN_00021220(param_1)" (identifier "uVar2") (= "=") (call_expression "FUN_00021220(param_1)" (identifier "FUN_00021220") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")")))) (; ";")) (expression_statement "iVar3 = 8;" (assignment_expression "iVar3 = 8" (identifier "iVar3") (= "=") (number_literal "8")) (; ";")) (} "}")) (else_clause "else {\n      if ((cVar5 != '\v') && (cVar5 != '\x0e')) {\n        return 0;\n      }\n      if ((uint)piVar6[2] < 2) {\n        return 0;\n      }\n      iVar3 = *param_1;\n      if (*(int *)(iVar3 + 4) == 0) {\n        return 0;\n      }\n      iVar4 = param_1[1];\n      if (*(int *)(iVar4 + 4) == 0) {\n        return 0;\n      }\n      if (*(char *)(iVar3 + 0x18) != '\x14') {\n        return 0;\n      }\n      if (*(char *)(iVar4 + 0x18) != '\x02') {\n        return 0;\n      }\n      iVar12 = *(int *)(iVar4 + 0x14);\n      uVar8 = *(uint *)(iVar4 + 0x10);\n      if (cVar5 != '\v') {\n        uVar11 = uVar8 >> 5 & 1;\n        iVar12 = uVar11 << ((byte)uVar8 & 0x1f);\n        uVar8 = (uVar11 ^ 1) << ((byte)uVar8 & 0x1f);\n      }\n      if (iVar12 != 0) {\n        return 0;\n      }\n      if (piVar6[2] != uVar8) {\n        return 0;\n      }\n      iVar4 = piVar6[5];\n      iVar12 = piVar6[6];\n      uVar2 = FUN_00021220(iVar3 + 8);\n      iVar3 = piVar6[2] << 3;\n    }" (else "else") (compound_statement "{\n      if ((cVar5 != '\v') && (cVar5 != '\x0e')) {\n        return 0;\n      }\n      if ((uint)piVar6[2] < 2) {\n        return 0;\n      }\n      iVar3 = *param_1;\n      if (*(int *)(iVar3 + 4) == 0) {\n        return 0;\n      }\n      iVar4 = param_1[1];\n      if (*(int *)(iVar4 + 4) == 0) {\n        return 0;\n      }\n      if (*(char *)(iVar3 + 0x18) != '\x14') {\n        return 0;\n      }\n      if (*(char *)(iVar4 + 0x18) != '\x02') {\n        return 0;\n      }\n      iVar12 = *(int *)(iVar4 + 0x14);\n      uVar8 = *(uint *)(iVar4 + 0x10);\n      if (cVar5 != '\v') {\n        uVar11 = uVar8 >> 5 & 1;\n        iVar12 = uVar11 << ((byte)uVar8 & 0x1f);\n        uVar8 = (uVar11 ^ 1) << ((byte)uVar8 & 0x1f);\n      }\n      if (iVar12 != 0) {\n        return 0;\n      }\n      if (piVar6[2] != uVar8) {\n        return 0;\n      }\n      iVar4 = piVar6[5];\n      iVar12 = piVar6[6];\n      uVar2 = FUN_00021220(iVar3 + 8);\n      iVar3 = piVar6[2] << 3;\n    }" ({ "{") (if_statement "if ((cVar5 != '\v') && (cVar5 != '\x0e')) {\n        return 0;\n      }" (if "if") (parenthesized_expression "((cVar5 != '\v') && (cVar5 != '\x0e'))" (( "(") (binary_expression "(cVar5 != '\v') && (cVar5 != '\x0e')" (parenthesized_expression "(cVar5 != '\v')" (( "(") (binary_expression "cVar5 != '\v'" (identifier "cVar5") (!= "!=") (char_literal "'\v'" (' "'") (escape_sequence "\v") (' "'"))) () ")")) (&& "&&") (parenthesized_expression "(cVar5 != '\x0e')" (( "(") (binary_expression "cVar5 != '\x0e'" (identifier "cVar5") (!= "!=") (char_literal "'\x0e'" (' "'") (escape_sequence "\x0e") (' "'"))) () ")"))) () ")")) (compound_statement "{\n        return 0;\n      }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (if_statement "if ((uint)piVar6[2] < 2) {\n        return 0;\n      }" (if "if") (parenthesized_expression "((uint)piVar6[2] < 2)" (( "(") (binary_expression "(uint)piVar6[2] < 2" (cast_expression "(uint)piVar6[2]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "piVar6[2]" (identifier "piVar6") ([ "[") (number_literal "2") (] "]"))) (< "<") (number_literal "2")) () ")")) (compound_statement "{\n        return 0;\n      }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "iVar3 = *param_1;" (assignment_expression "iVar3 = *param_1" (identifier "iVar3") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (if_statement "if (*(int *)(iVar3 + 4) == 0) {\n        return 0;\n      }" (if "if") (parenthesized_expression "(*(int *)(iVar3 + 4) == 0)" (( "(") (binary_expression "*(int *)(iVar3 + 4) == 0" (pointer_expression "*(int *)(iVar3 + 4)" (* "*") (cast_expression "(int *)(iVar3 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 4)" (( "(") (binary_expression "iVar3 + 4" (identifier "iVar3") (+ "+") (number_literal "4")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        return 0;\n      }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "iVar4 = param_1[1];" (assignment_expression "iVar4 = param_1[1]" (identifier "iVar4") (= "=") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]"))) (; ";")) (if_statement "if (*(int *)(iVar4 + 4) == 0) {\n        return 0;\n      }" (if "if") (parenthesized_expression "(*(int *)(iVar4 + 4) == 0)" (( "(") (binary_expression "*(int *)(iVar4 + 4) == 0" (pointer_expression "*(int *)(iVar4 + 4)" (* "*") (cast_expression "(int *)(iVar4 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 4)" (( "(") (binary_expression "iVar4 + 4" (identifier "iVar4") (+ "+") (number_literal "4")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        return 0;\n      }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (if_statement "if (*(char *)(iVar3 + 0x18) != '\x14') {\n        return 0;\n      }" (if "if") (parenthesized_expression "(*(char *)(iVar3 + 0x18) != '\x14')" (( "(") (binary_expression "*(char *)(iVar3 + 0x18) != '\x14'" (pointer_expression "*(char *)(iVar3 + 0x18)" (* "*") (cast_expression "(char *)(iVar3 + 0x18)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 0x18)" (( "(") (binary_expression "iVar3 + 0x18" (identifier "iVar3") (+ "+") (number_literal "0x18")) () ")")))) (!= "!=") (char_literal "'\x14'" (' "'") (escape_sequence "\x14") (' "'"))) () ")")) (compound_statement "{\n        return 0;\n      }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (if_statement "if (*(char *)(iVar4 + 0x18) != '\x02') {\n        return 0;\n      }" (if "if") (parenthesized_expression "(*(char *)(iVar4 + 0x18) != '\x02')" (( "(") (binary_expression "*(char *)(iVar4 + 0x18) != '\x02'" (pointer_expression "*(char *)(iVar4 + 0x18)" (* "*") (cast_expression "(char *)(iVar4 + 0x18)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0x18)" (( "(") (binary_expression "iVar4 + 0x18" (identifier "iVar4") (+ "+") (number_literal "0x18")) () ")")))) (!= "!=") (char_literal "'\x02'" (' "'") (escape_sequence "\x02") (' "'"))) () ")")) (compound_statement "{\n        return 0;\n      }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "iVar12 = *(int *)(iVar4 + 0x14);" (assignment_expression "iVar12 = *(int *)(iVar4 + 0x14)" (identifier "iVar12") (= "=") (pointer_expression "*(int *)(iVar4 + 0x14)" (* "*") (cast_expression "(int *)(iVar4 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0x14)" (( "(") (binary_expression "iVar4 + 0x14" (identifier "iVar4") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (expression_statement "uVar8 = *(uint *)(iVar4 + 0x10);" (assignment_expression "uVar8 = *(uint *)(iVar4 + 0x10)" (identifier "uVar8") (= "=") (pointer_expression "*(uint *)(iVar4 + 0x10)" (* "*") (cast_expression "(uint *)(iVar4 + 0x10)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0x10)" (( "(") (binary_expression "iVar4 + 0x10" (identifier "iVar4") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (if_statement "if (cVar5 != '\v') {\n        uVar11 = uVar8 >> 5 & 1;\n        iVar12 = uVar11 << ((byte)uVar8 & 0x1f);\n        uVar8 = (uVar11 ^ 1) << ((byte)uVar8 & 0x1f);\n      }" (if "if") (parenthesized_expression "(cVar5 != '\v')" (( "(") (binary_expression "cVar5 != '\v'" (identifier "cVar5") (!= "!=") (char_literal "'\v'" (' "'") (escape_sequence "\v") (' "'"))) () ")")) (compound_statement "{\n        uVar11 = uVar8 >> 5 & 1;\n        iVar12 = uVar11 << ((byte)uVar8 & 0x1f);\n        uVar8 = (uVar11 ^ 1) << ((byte)uVar8 & 0x1f);\n      }" ({ "{") (expression_statement "uVar11 = uVar8 >> 5 & 1;" (assignment_expression "uVar11 = uVar8 >> 5 & 1" (identifier "uVar11") (= "=") (binary_expression "uVar8 >> 5 & 1" (binary_expression "uVar8 >> 5" (identifier "uVar8") (>> ">>") (number_literal "5")) (& "&") (number_literal "1"))) (; ";")) (expression_statement "iVar12 = uVar11 << ((byte)uVar8 & 0x1f);" (assignment_expression "iVar12 = uVar11 << ((byte)uVar8 & 0x1f)" (identifier "iVar12") (= "=") (binary_expression "uVar11 << ((byte)uVar8 & 0x1f)" (identifier "uVar11") (<< "<<") (parenthesized_expression "((byte)uVar8 & 0x1f)" (( "(") (binary_expression "(byte)uVar8 & 0x1f" (cast_expression "(byte)uVar8" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar8")) (& "&") (number_literal "0x1f")) () ")")))) (; ";")) (expression_statement "uVar8 = (uVar11 ^ 1) << ((byte)uVar8 & 0x1f);" (assignment_expression "uVar8 = (uVar11 ^ 1) << ((byte)uVar8 & 0x1f)" (identifier "uVar8") (= "=") (binary_expression "(uVar11 ^ 1) << ((byte)uVar8 & 0x1f)" (parenthesized_expression "(uVar11 ^ 1)" (( "(") (binary_expression "uVar11 ^ 1" (identifier "uVar11") (^ "^") (number_literal "1")) () ")")) (<< "<<") (parenthesized_expression "((byte)uVar8 & 0x1f)" (( "(") (binary_expression "(byte)uVar8 & 0x1f" (cast_expression "(byte)uVar8" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar8")) (& "&") (number_literal "0x1f")) () ")")))) (; ";")) (} "}"))) (if_statement "if (iVar12 != 0) {\n        return 0;\n      }" (if "if") (parenthesized_expression "(iVar12 != 0)" (( "(") (binary_expression "iVar12 != 0" (identifier "iVar12") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        return 0;\n      }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (if_statement "if (piVar6[2] != uVar8) {\n        return 0;\n      }" (if "if") (parenthesized_expression "(piVar6[2] != uVar8)" (( "(") (binary_expression "piVar6[2] != uVar8" (subscript_expression "piVar6[2]" (identifier "piVar6") ([ "[") (number_literal "2") (] "]")) (!= "!=") (identifier "uVar8")) () ")")) (compound_statement "{\n        return 0;\n      }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "iVar4 = piVar6[5];" (assignment_expression "iVar4 = piVar6[5]" (identifier "iVar4") (= "=") (subscript_expression "piVar6[5]" (identifier "piVar6") ([ "[") (number_literal "5") (] "]"))) (; ";")) (expression_statement "iVar12 = piVar6[6];" (assignment_expression "iVar12 = piVar6[6]" (identifier "iVar12") (= "=") (subscript_expression "piVar6[6]" (identifier "piVar6") ([ "[") (number_literal "6") (] "]"))) (; ";")) (expression_statement "uVar2 = FUN_00021220(iVar3 + 8);" (assignment_expression "uVar2 = FUN_00021220(iVar3 + 8)" (identifier "uVar2") (= "=") (call_expression "FUN_00021220(iVar3 + 8)" (identifier "FUN_00021220") (argument_list "(iVar3 + 8)" (( "(") (binary_expression "iVar3 + 8" (identifier "iVar3") (+ "+") (number_literal "8")) () ")")))) (; ";")) (expression_statement "iVar3 = piVar6[2] << 3;" (assignment_expression "iVar3 = piVar6[2] << 3" (identifier "iVar3") (= "=") (binary_expression "piVar6[2] << 3" (subscript_expression "piVar6[2]" (identifier "piVar6") ([ "[") (number_literal "2") (] "]")) (<< "<<") (number_literal "3"))) (; ";")) (} "}")))) (expression_statement "FUN_00024b60(0xc,4,0,iVar3,uVar2,iVar12,iVar12 >> 0x1f,iVar4);" (call_expression "FUN_00024b60(0xc,4,0,iVar3,uVar2,iVar12,iVar12 >> 0x1f,iVar4)" (identifier "FUN_00024b60") (argument_list "(0xc,4,0,iVar3,uVar2,iVar12,iVar12 >> 0x1f,iVar4)" (( "(") (number_literal "0xc") (, ",") (number_literal "4") (, ",") (number_literal "0") (, ",") (identifier "iVar3") (, ",") (identifier "uVar2") (, ",") (identifier "iVar12") (, ",") (binary_expression "iVar12 >> 0x1f" (identifier "iVar12") (>> ">>") (number_literal "0x1f")) (, ",") (identifier "iVar4") () ")"))) (; ";")) (return_statement "return 1;" (return "return") (number_literal "1") (; ";"))) (case_statement "default:\n    return 0;" (default "default") (: ":") (return_statement "return 0;" (return "return") (number_literal "0") (; ";"))) (} "}"))) (if_statement "if (piVar6[1] != 0) goto code_r0x0001ffd7;" (if "if") (parenthesized_expression "(piVar6[1] != 0)" (( "(") (binary_expression "piVar6[1] != 0" (subscript_expression "piVar6[1]" (identifier "piVar6") ([ "[") (number_literal "1") (] "]")) (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto code_r0x0001ffd7;" (goto "goto") (statement_identifier "code_r0x0001ffd7") (; ";"))) (expression_statement "iStack_50 = **(int **)DAT_0008973c[0x20];" (assignment_expression "iStack_50 = **(int **)DAT_0008973c[0x20]" (identifier "iStack_50") (= "=") (pointer_expression "**(int **)DAT_0008973c[0x20]" (* "*") (pointer_expression "*(int **)DAT_0008973c[0x20]" (* "*") (cast_expression "(int **)DAT_0008973c[0x20]" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (subscript_expression "DAT_0008973c[0x20]" (identifier "DAT_0008973c") ([ "[") (number_literal "0x20") (] "]")))))) (; ";")) (if_statement "if (iStack_50 != 0) {\n    uVar8 = *(uint *)(iStack_50 + 0x10);\n    iVar4 = *(int *)(iStack_50 + 0x14);\n    if (-iVar4 < (int)(uint)(4 < uVar8)) {\n      local_5c = 4;\n      iVar12 = 0;\n    }\n    else {\n      local_5c = 4;\n      do {\n        iStack_50 = *(int *)(iStack_50 + 0x30);\n        local_5c = local_5c - uVar8;\n        if (iStack_50 == 0) goto code_r0x00020226;\n        uVar8 = *(uint *)(iStack_50 + 0x10);\n        iVar4 = *(int *)(iStack_50 + 0x14);\n        iVar12 = (int)local_5c >> 0x1f;\n      } while ((SBORROW4(iVar12,iVar4) != SBORROW4(iVar12 - iVar4,(uint)(local_5c < uVar8))) ==\n               (int)((iVar12 - iVar4) - (uint)(local_5c < uVar8)) < 0);\n    }\n    iVar4 = (iVar4 - iVar12) - (uint)(uVar8 < local_5c);\n    uVar8 = (uint)(3 < uVar8 - local_5c);\n    bVar13 = iVar4 != 0 || (uint)-iVar4 < uVar8;\n    bVar15 = -uVar8 == iVar4;\n    if (-iVar4 < (int)uVar8) {\n      iVar4 = 0xc;\n      pbVar9 = (byte *)*DAT_0008973c;\n      pbVar7 = (byte *)".debug_frame";\n      do {\n        if (iVar4 == 0) break;\n        iVar4 = iVar4 + -1;\n        bVar13 = *pbVar9 < *pbVar7;\n        bVar15 = *pbVar9 == *pbVar7;\n        pbVar9 = pbVar9 + (uint)bVar16 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar16 * -2 + 1;\n      } while (bVar15);\n      cVar5 = -((!bVar13 && !bVar15) == bVar13);\n      if ((((*(char *)(iStack_50 + 0x68 + local_5c) == cVar5) &&\n           (*(char *)(iStack_50 + 0x69 + local_5c) == cVar5)) &&\n          (*(char *)(iStack_50 + 0x6a + local_5c) == cVar5)) &&\n         (*(char *)(iStack_50 + 0x6b + local_5c) == cVar5)) {\n        local_5c = local_5c + 4;\n        do {\n          iVar4 = (int)local_5c >> 0x1f;\n          iStack_40 = *(int *)(iStack_50 + 0x14);\n          uStack_44 = *(uint *)(iStack_50 + 0x10);\n          if ((SBORROW4(iVar4,iStack_40) != SBORROW4(iVar4 - iStack_40,(uint)(local_5c < uStack_44))\n              ) != (int)((iVar4 - iStack_40) - (uint)(local_5c < uStack_44)) < 0) {\n            if (((int)(uint)(uStack_44 != local_5c) <=\n                 (int)-((iStack_40 - iVar4) - (uint)(uStack_44 < local_5c))) ||\n               (*(char *)(iStack_50 + 0x68 + local_5c) != '\x01')) goto code_r0x00020226;\n            uVar8 = local_5c + 1;\n            iStack_38 = 0;\n            iVar4 = (*(int **)DAT_0008973c[0x20])[4];\n            goto code_r0x0002044e;\n          }\n          local_5c = local_5c - uStack_44;\n          iStack_50 = *(int *)(iStack_50 + 0x30);\n        } while (iStack_50 != 0);\n        piVar6[1] = 0;\n        goto code_r0x0002022d;\n      }\n    }\n  }" (if "if") (parenthesized_expression "(iStack_50 != 0)" (( "(") (binary_expression "iStack_50 != 0" (identifier "iStack_50") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    uVar8 = *(uint *)(iStack_50 + 0x10);\n    iVar4 = *(int *)(iStack_50 + 0x14);\n    if (-iVar4 < (int)(uint)(4 < uVar8)) {\n      local_5c = 4;\n      iVar12 = 0;\n    }\n    else {\n      local_5c = 4;\n      do {\n        iStack_50 = *(int *)(iStack_50 + 0x30);\n        local_5c = local_5c - uVar8;\n        if (iStack_50 == 0) goto code_r0x00020226;\n        uVar8 = *(uint *)(iStack_50 + 0x10);\n        iVar4 = *(int *)(iStack_50 + 0x14);\n        iVar12 = (int)local_5c >> 0x1f;\n      } while ((SBORROW4(iVar12,iVar4) != SBORROW4(iVar12 - iVar4,(uint)(local_5c < uVar8))) ==\n               (int)((iVar12 - iVar4) - (uint)(local_5c < uVar8)) < 0);\n    }\n    iVar4 = (iVar4 - iVar12) - (uint)(uVar8 < local_5c);\n    uVar8 = (uint)(3 < uVar8 - local_5c);\n    bVar13 = iVar4 != 0 || (uint)-iVar4 < uVar8;\n    bVar15 = -uVar8 == iVar4;\n    if (-iVar4 < (int)uVar8) {\n      iVar4 = 0xc;\n      pbVar9 = (byte *)*DAT_0008973c;\n      pbVar7 = (byte *)".debug_frame";\n      do {\n        if (iVar4 == 0) break;\n        iVar4 = iVar4 + -1;\n        bVar13 = *pbVar9 < *pbVar7;\n        bVar15 = *pbVar9 == *pbVar7;\n        pbVar9 = pbVar9 + (uint)bVar16 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar16 * -2 + 1;\n      } while (bVar15);\n      cVar5 = -((!bVar13 && !bVar15) == bVar13);\n      if ((((*(char *)(iStack_50 + 0x68 + local_5c) == cVar5) &&\n           (*(char *)(iStack_50 + 0x69 + local_5c) == cVar5)) &&\n          (*(char *)(iStack_50 + 0x6a + local_5c) == cVar5)) &&\n         (*(char *)(iStack_50 + 0x6b + local_5c) == cVar5)) {\n        local_5c = local_5c + 4;\n        do {\n          iVar4 = (int)local_5c >> 0x1f;\n          iStack_40 = *(int *)(iStack_50 + 0x14);\n          uStack_44 = *(uint *)(iStack_50 + 0x10);\n          if ((SBORROW4(iVar4,iStack_40) != SBORROW4(iVar4 - iStack_40,(uint)(local_5c < uStack_44))\n              ) != (int)((iVar4 - iStack_40) - (uint)(local_5c < uStack_44)) < 0) {\n            if (((int)(uint)(uStack_44 != local_5c) <=\n                 (int)-((iStack_40 - iVar4) - (uint)(uStack_44 < local_5c))) ||\n               (*(char *)(iStack_50 + 0x68 + local_5c) != '\x01')) goto code_r0x00020226;\n            uVar8 = local_5c + 1;\n            iStack_38 = 0;\n            iVar4 = (*(int **)DAT_0008973c[0x20])[4];\n            goto code_r0x0002044e;\n          }\n          local_5c = local_5c - uStack_44;\n          iStack_50 = *(int *)(iStack_50 + 0x30);\n        } while (iStack_50 != 0);\n        piVar6[1] = 0;\n        goto code_r0x0002022d;\n      }\n    }\n  }" ({ "{") (expression_statement "uVar8 = *(uint *)(iStack_50 + 0x10);" (assignment_expression "uVar8 = *(uint *)(iStack_50 + 0x10)" (identifier "uVar8") (= "=") (pointer_expression "*(uint *)(iStack_50 + 0x10)" (* "*") (cast_expression "(uint *)(iStack_50 + 0x10)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iStack_50 + 0x10)" (( "(") (binary_expression "iStack_50 + 0x10" (identifier "iStack_50") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (expression_statement "iVar4 = *(int *)(iStack_50 + 0x14);" (assignment_expression "iVar4 = *(int *)(iStack_50 + 0x14)" (identifier "iVar4") (= "=") (pointer_expression "*(int *)(iStack_50 + 0x14)" (* "*") (cast_expression "(int *)(iStack_50 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iStack_50 + 0x14)" (( "(") (binary_expression "iStack_50 + 0x14" (identifier "iStack_50") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (if_statement "if (-iVar4 < (int)(uint)(4 < uVar8)) {\n      local_5c = 4;\n      iVar12 = 0;\n    }\n    else {\n      local_5c = 4;\n      do {\n        iStack_50 = *(int *)(iStack_50 + 0x30);\n        local_5c = local_5c - uVar8;\n        if (iStack_50 == 0) goto code_r0x00020226;\n        uVar8 = *(uint *)(iStack_50 + 0x10);\n        iVar4 = *(int *)(iStack_50 + 0x14);\n        iVar12 = (int)local_5c >> 0x1f;\n      } while ((SBORROW4(iVar12,iVar4) != SBORROW4(iVar12 - iVar4,(uint)(local_5c < uVar8))) ==\n               (int)((iVar12 - iVar4) - (uint)(local_5c < uVar8)) < 0);\n    }" (if "if") (parenthesized_expression "(-iVar4 < (int)(uint)(4 < uVar8))" (( "(") (binary_expression "-iVar4 < (int)(uint)(4 < uVar8)" (unary_expression "-iVar4" (- "-") (identifier "iVar4")) (< "<") (cast_expression "(int)(uint)(4 < uVar8)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (call_expression "(uint)(4 < uVar8)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(4 < uVar8)" (( "(") (binary_expression "4 < uVar8" (number_literal "4") (< "<") (identifier "uVar8")) () ")"))))) () ")")) (compound_statement "{\n      local_5c = 4;\n      iVar12 = 0;\n    }" ({ "{") (expression_statement "local_5c = 4;" (assignment_expression "local_5c = 4" (identifier "local_5c") (= "=") (number_literal "4")) (; ";")) (expression_statement "iVar12 = 0;" (assignment_expression "iVar12 = 0" (identifier "iVar12") (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n      local_5c = 4;\n      do {\n        iStack_50 = *(int *)(iStack_50 + 0x30);\n        local_5c = local_5c - uVar8;\n        if (iStack_50 == 0) goto code_r0x00020226;\n        uVar8 = *(uint *)(iStack_50 + 0x10);\n        iVar4 = *(int *)(iStack_50 + 0x14);\n        iVar12 = (int)local_5c >> 0x1f;\n      } while ((SBORROW4(iVar12,iVar4) != SBORROW4(iVar12 - iVar4,(uint)(local_5c < uVar8))) ==\n               (int)((iVar12 - iVar4) - (uint)(local_5c < uVar8)) < 0);\n    }" (else "else") (compound_statement "{\n      local_5c = 4;\n      do {\n        iStack_50 = *(int *)(iStack_50 + 0x30);\n        local_5c = local_5c - uVar8;\n        if (iStack_50 == 0) goto code_r0x00020226;\n        uVar8 = *(uint *)(iStack_50 + 0x10);\n        iVar4 = *(int *)(iStack_50 + 0x14);\n        iVar12 = (int)local_5c >> 0x1f;\n      } while ((SBORROW4(iVar12,iVar4) != SBORROW4(iVar12 - iVar4,(uint)(local_5c < uVar8))) ==\n               (int)((iVar12 - iVar4) - (uint)(local_5c < uVar8)) < 0);\n    }" ({ "{") (expression_statement "local_5c = 4;" (assignment_expression "local_5c = 4" (identifier "local_5c") (= "=") (number_literal "4")) (; ";")) (do_statement "do {\n        iStack_50 = *(int *)(iStack_50 + 0x30);\n        local_5c = local_5c - uVar8;\n        if (iStack_50 == 0) goto code_r0x00020226;\n        uVar8 = *(uint *)(iStack_50 + 0x10);\n        iVar4 = *(int *)(iStack_50 + 0x14);\n        iVar12 = (int)local_5c >> 0x1f;\n      } while ((SBORROW4(iVar12,iVar4) != SBORROW4(iVar12 - iVar4,(uint)(local_5c < uVar8))) ==\n               (int)((iVar12 - iVar4) - (uint)(local_5c < uVar8)) < 0);" (do "do") (compound_statement "{\n        iStack_50 = *(int *)(iStack_50 + 0x30);\n        local_5c = local_5c - uVar8;\n        if (iStack_50 == 0) goto code_r0x00020226;\n        uVar8 = *(uint *)(iStack_50 + 0x10);\n        iVar4 = *(int *)(iStack_50 + 0x14);\n        iVar12 = (int)local_5c >> 0x1f;\n      }" ({ "{") (expression_statement "iStack_50 = *(int *)(iStack_50 + 0x30);" (assignment_expression "iStack_50 = *(int *)(iStack_50 + 0x30)" (identifier "iStack_50") (= "=") (pointer_expression "*(int *)(iStack_50 + 0x30)" (* "*") (cast_expression "(int *)(iStack_50 + 0x30)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iStack_50 + 0x30)" (( "(") (binary_expression "iStack_50 + 0x30" (identifier "iStack_50") (+ "+") (number_literal "0x30")) () ")"))))) (; ";")) (expression_statement "local_5c = local_5c - uVar8;" (assignment_expression "local_5c = local_5c - uVar8" (identifier "local_5c") (= "=") (binary_expression "local_5c - uVar8" (identifier "local_5c") (- "-") (identifier "uVar8"))) (; ";")) (if_statement "if (iStack_50 == 0) goto code_r0x00020226;" (if "if") (parenthesized_expression "(iStack_50 == 0)" (( "(") (binary_expression "iStack_50 == 0" (identifier "iStack_50") (== "==") (number_literal "0")) () ")")) (goto_statement "goto code_r0x00020226;" (goto "goto") (statement_identifier "code_r0x00020226") (; ";"))) (expression_statement "uVar8 = *(uint *)(iStack_50 + 0x10);" (assignment_expression "uVar8 = *(uint *)(iStack_50 + 0x10)" (identifier "uVar8") (= "=") (pointer_expression "*(uint *)(iStack_50 + 0x10)" (* "*") (cast_expression "(uint *)(iStack_50 + 0x10)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iStack_50 + 0x10)" (( "(") (binary_expression "iStack_50 + 0x10" (identifier "iStack_50") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (expression_statement "iVar4 = *(int *)(iStack_50 + 0x14);" (assignment_expression "iVar4 = *(int *)(iStack_50 + 0x14)" (identifier "iVar4") (= "=") (pointer_expression "*(int *)(iStack_50 + 0x14)" (* "*") (cast_expression "(int *)(iStack_50 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iStack_50 + 0x14)" (( "(") (binary_expression "iStack_50 + 0x14" (identifier "iStack_50") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (expression_statement "iVar12 = (int)local_5c >> 0x1f;" (assignment_expression "iVar12 = (int)local_5c >> 0x1f" (identifier "iVar12") (= "=") (binary_expression "(int)local_5c >> 0x1f" (cast_expression "(int)local_5c" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_5c")) (>> ">>") (number_literal "0x1f"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "((SBORROW4(iVar12,iVar4) != SBORROW4(iVar12 - iVar4,(uint)(local_5c < uVar8))) ==\n               (int)((iVar12 - iVar4) - (uint)(local_5c < uVar8)) < 0)" (( "(") (binary_expression "(SBORROW4(iVar12,iVar4) != SBORROW4(iVar12 - iVar4,(uint)(local_5c < uVar8))) ==\n               (int)((iVar12 - iVar4) - (uint)(local_5c < uVar8)) < 0" (parenthesized_expression "(SBORROW4(iVar12,iVar4) != SBORROW4(iVar12 - iVar4,(uint)(local_5c < uVar8)))" (( "(") (binary_expression "SBORROW4(iVar12,iVar4) != SBORROW4(iVar12 - iVar4,(uint)(local_5c < uVar8))" (call_expression "SBORROW4(iVar12,iVar4)" (identifier "SBORROW4") (argument_list "(iVar12,iVar4)" (( "(") (identifier "iVar12") (, ",") (identifier "iVar4") () ")"))) (!= "!=") (call_expression "SBORROW4(iVar12 - iVar4,(uint)(local_5c < uVar8))" (identifier "SBORROW4") (argument_list "(iVar12 - iVar4,(uint)(local_5c < uVar8))" (( "(") (binary_expression "iVar12 - iVar4" (identifier "iVar12") (- "-") (identifier "iVar4")) (, ",") (call_expression "(uint)(local_5c < uVar8)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(local_5c < uVar8)" (( "(") (binary_expression "local_5c < uVar8" (identifier "local_5c") (< "<") (identifier "uVar8")) () ")"))) () ")")))) () ")")) (== "==") (binary_expression "(int)((iVar12 - iVar4) - (uint)(local_5c < uVar8)) < 0" (cast_expression "(int)((iVar12 - iVar4) - (uint)(local_5c < uVar8))" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((iVar12 - iVar4) - (uint)(local_5c < uVar8))" (( "(") (binary_expression "(iVar12 - iVar4) - (uint)(local_5c < uVar8)" (parenthesized_expression "(iVar12 - iVar4)" (( "(") (binary_expression "iVar12 - iVar4" (identifier "iVar12") (- "-") (identifier "iVar4")) () ")")) (- "-") (call_expression "(uint)(local_5c < uVar8)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(local_5c < uVar8)" (( "(") (binary_expression "local_5c < uVar8" (identifier "local_5c") (< "<") (identifier "uVar8")) () ")")))) () ")"))) (< "<") (number_literal "0"))) () ")")) (; ";")) (} "}")))) (expression_statement "iVar4 = (iVar4 - iVar12) - (uint)(uVar8 < local_5c);" (assignment_expression "iVar4 = (iVar4 - iVar12) - (uint)(uVar8 < local_5c)" (identifier "iVar4") (= "=") (binary_expression "(iVar4 - iVar12) - (uint)(uVar8 < local_5c)" (parenthesized_expression "(iVar4 - iVar12)" (( "(") (binary_expression "iVar4 - iVar12" (identifier "iVar4") (- "-") (identifier "iVar12")) () ")")) (- "-") (call_expression "(uint)(uVar8 < local_5c)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar8 < local_5c)" (( "(") (binary_expression "uVar8 < local_5c" (identifier "uVar8") (< "<") (identifier "local_5c")) () ")"))))) (; ";")) (expression_statement "uVar8 = (uint)(3 < uVar8 - local_5c);" (assignment_expression "uVar8 = (uint)(3 < uVar8 - local_5c)" (identifier "uVar8") (= "=") (call_expression "(uint)(3 < uVar8 - local_5c)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(3 < uVar8 - local_5c)" (( "(") (binary_expression "3 < uVar8 - local_5c" (number_literal "3") (< "<") (binary_expression "uVar8 - local_5c" (identifier "uVar8") (- "-") (identifier "local_5c"))) () ")")))) (; ";")) (expression_statement "bVar13 = iVar4 != 0 || (uint)-iVar4 < uVar8;" (assignment_expression "bVar13 = iVar4 != 0 || (uint)-iVar4 < uVar8" (identifier "bVar13") (= "=") (binary_expression "iVar4 != 0 || (uint)-iVar4 < uVar8" (binary_expression "iVar4 != 0" (identifier "iVar4") (!= "!=") (number_literal "0")) (|| "||") (binary_expression "(uint)-iVar4 < uVar8" (binary_expression "(uint)-iVar4" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (- "-") (identifier "iVar4")) (< "<") (identifier "uVar8")))) (; ";")) (expression_statement "bVar15 = -uVar8 == iVar4;" (assignment_expression "bVar15 = -uVar8 == iVar4" (identifier "bVar15") (= "=") (binary_expression "-uVar8 == iVar4" (unary_expression "-uVar8" (- "-") (identifier "uVar8")) (== "==") (identifier "iVar4"))) (; ";")) (if_statement "if (-iVar4 < (int)uVar8) {\n      iVar4 = 0xc;\n      pbVar9 = (byte *)*DAT_0008973c;\n      pbVar7 = (byte *)".debug_frame";\n      do {\n        if (iVar4 == 0) break;\n        iVar4 = iVar4 + -1;\n        bVar13 = *pbVar9 < *pbVar7;\n        bVar15 = *pbVar9 == *pbVar7;\n        pbVar9 = pbVar9 + (uint)bVar16 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar16 * -2 + 1;\n      } while (bVar15);\n      cVar5 = -((!bVar13 && !bVar15) == bVar13);\n      if ((((*(char *)(iStack_50 + 0x68 + local_5c) == cVar5) &&\n           (*(char *)(iStack_50 + 0x69 + local_5c) == cVar5)) &&\n          (*(char *)(iStack_50 + 0x6a + local_5c) == cVar5)) &&\n         (*(char *)(iStack_50 + 0x6b + local_5c) == cVar5)) {\n        local_5c = local_5c + 4;\n        do {\n          iVar4 = (int)local_5c >> 0x1f;\n          iStack_40 = *(int *)(iStack_50 + 0x14);\n          uStack_44 = *(uint *)(iStack_50 + 0x10);\n          if ((SBORROW4(iVar4,iStack_40) != SBORROW4(iVar4 - iStack_40,(uint)(local_5c < uStack_44))\n              ) != (int)((iVar4 - iStack_40) - (uint)(local_5c < uStack_44)) < 0) {\n            if (((int)(uint)(uStack_44 != local_5c) <=\n                 (int)-((iStack_40 - iVar4) - (uint)(uStack_44 < local_5c))) ||\n               (*(char *)(iStack_50 + 0x68 + local_5c) != '\x01')) goto code_r0x00020226;\n            uVar8 = local_5c + 1;\n            iStack_38 = 0;\n            iVar4 = (*(int **)DAT_0008973c[0x20])[4];\n            goto code_r0x0002044e;\n          }\n          local_5c = local_5c - uStack_44;\n          iStack_50 = *(int *)(iStack_50 + 0x30);\n        } while (iStack_50 != 0);\n        piVar6[1] = 0;\n        goto code_r0x0002022d;\n      }\n    }" (if "if") (parenthesized_expression "(-iVar4 < (int)uVar8)" (( "(") (binary_expression "-iVar4 < (int)uVar8" (unary_expression "-iVar4" (- "-") (identifier "iVar4")) (< "<") (cast_expression "(int)uVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar8"))) () ")")) (compound_statement "{\n      iVar4 = 0xc;\n      pbVar9 = (byte *)*DAT_0008973c;\n      pbVar7 = (byte *)".debug_frame";\n      do {\n        if (iVar4 == 0) break;\n        iVar4 = iVar4 + -1;\n        bVar13 = *pbVar9 < *pbVar7;\n        bVar15 = *pbVar9 == *pbVar7;\n        pbVar9 = pbVar9 + (uint)bVar16 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar16 * -2 + 1;\n      } while (bVar15);\n      cVar5 = -((!bVar13 && !bVar15) == bVar13);\n      if ((((*(char *)(iStack_50 + 0x68 + local_5c) == cVar5) &&\n           (*(char *)(iStack_50 + 0x69 + local_5c) == cVar5)) &&\n          (*(char *)(iStack_50 + 0x6a + local_5c) == cVar5)) &&\n         (*(char *)(iStack_50 + 0x6b + local_5c) == cVar5)) {\n        local_5c = local_5c + 4;\n        do {\n          iVar4 = (int)local_5c >> 0x1f;\n          iStack_40 = *(int *)(iStack_50 + 0x14);\n          uStack_44 = *(uint *)(iStack_50 + 0x10);\n          if ((SBORROW4(iVar4,iStack_40) != SBORROW4(iVar4 - iStack_40,(uint)(local_5c < uStack_44))\n              ) != (int)((iVar4 - iStack_40) - (uint)(local_5c < uStack_44)) < 0) {\n            if (((int)(uint)(uStack_44 != local_5c) <=\n                 (int)-((iStack_40 - iVar4) - (uint)(uStack_44 < local_5c))) ||\n               (*(char *)(iStack_50 + 0x68 + local_5c) != '\x01')) goto code_r0x00020226;\n            uVar8 = local_5c + 1;\n            iStack_38 = 0;\n            iVar4 = (*(int **)DAT_0008973c[0x20])[4];\n            goto code_r0x0002044e;\n          }\n          local_5c = local_5c - uStack_44;\n          iStack_50 = *(int *)(iStack_50 + 0x30);\n        } while (iStack_50 != 0);\n        piVar6[1] = 0;\n        goto code_r0x0002022d;\n      }\n    }" ({ "{") (expression_statement "iVar4 = 0xc;" (assignment_expression "iVar4 = 0xc" (identifier "iVar4") (= "=") (number_literal "0xc")) (; ";")) (expression_statement "pbVar9 = (byte *)*DAT_0008973c;" (assignment_expression "pbVar9 = (byte *)*DAT_0008973c" (identifier "pbVar9") (= "=") (cast_expression "(byte *)*DAT_0008973c" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*DAT_0008973c" (* "*") (identifier "DAT_0008973c")))) (; ";")) (expression_statement "pbVar7 = (byte *)".debug_frame";" (assignment_expression "pbVar7 = (byte *)".debug_frame"" (identifier "pbVar7") (= "=") (cast_expression "(byte *)".debug_frame"" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (string_literal "".debug_frame"" (" """) (string_content ".debug_frame") (" """)))) (; ";")) (do_statement "do {\n        if (iVar4 == 0) break;\n        iVar4 = iVar4 + -1;\n        bVar13 = *pbVar9 < *pbVar7;\n        bVar15 = *pbVar9 == *pbVar7;\n        pbVar9 = pbVar9 + (uint)bVar16 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar16 * -2 + 1;\n      } while (bVar15);" (do "do") (compound_statement "{\n        if (iVar4 == 0) break;\n        iVar4 = iVar4 + -1;\n        bVar13 = *pbVar9 < *pbVar7;\n        bVar15 = *pbVar9 == *pbVar7;\n        pbVar9 = pbVar9 + (uint)bVar16 * -2 + 1;\n        pbVar7 = pbVar7 + (uint)bVar16 * -2 + 1;\n      }" ({ "{") (if_statement "if (iVar4 == 0) break;" (if "if") (parenthesized_expression "(iVar4 == 0)" (( "(") (binary_expression "iVar4 == 0" (identifier "iVar4") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar4 = iVar4 + -1;" (assignment_expression "iVar4 = iVar4 + -1" (identifier "iVar4") (= "=") (binary_expression "iVar4 + -1" (identifier "iVar4") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "bVar13 = *pbVar9 < *pbVar7;" (assignment_expression "bVar13 = *pbVar9 < *pbVar7" (identifier "bVar13") (= "=") (binary_expression "*pbVar9 < *pbVar7" (pointer_expression "*pbVar9" (* "*") (identifier "pbVar9")) (< "<") (pointer_expression "*pbVar7" (* "*") (identifier "pbVar7")))) (; ";")) (expression_statement "bVar15 = *pbVar9 == *pbVar7;" (assignment_expression "bVar15 = *pbVar9 == *pbVar7" (identifier "bVar15") (= "=") (binary_expression "*pbVar9 == *pbVar7" (pointer_expression "*pbVar9" (* "*") (identifier "pbVar9")) (== "==") (pointer_expression "*pbVar7" (* "*") (identifier "pbVar7")))) (; ";")) (expression_statement "pbVar9 = pbVar9 + (uint)bVar16 * -2 + 1;" (assignment_expression "pbVar9 = pbVar9 + (uint)bVar16 * -2 + 1" (identifier "pbVar9") (= "=") (binary_expression "pbVar9 + (uint)bVar16 * -2 + 1" (binary_expression "pbVar9 + (uint)bVar16 * -2" (identifier "pbVar9") (+ "+") (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar16")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pbVar7 = pbVar7 + (uint)bVar16 * -2 + 1;" (assignment_expression "pbVar7 = pbVar7 + (uint)bVar16 * -2 + 1" (identifier "pbVar7") (= "=") (binary_expression "pbVar7 + (uint)bVar16 * -2 + 1" (binary_expression "pbVar7 + (uint)bVar16 * -2" (identifier "pbVar7") (+ "+") (binary_expression "(uint)bVar16 * -2" (cast_expression "(uint)bVar16" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar16")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar15)" (( "(") (identifier "bVar15") () ")")) (; ";")) (expression_statement "cVar5 = -((!bVar13 && !bVar15) == bVar13);" (assignment_expression "cVar5 = -((!bVar13 && !bVar15) == bVar13)" (identifier "cVar5") (= "=") (unary_expression "-((!bVar13 && !bVar15) == bVar13)" (- "-") (parenthesized_expression "((!bVar13 && !bVar15) == bVar13)" (( "(") (binary_expression "(!bVar13 && !bVar15) == bVar13" (parenthesized_expression "(!bVar13 && !bVar15)" (( "(") (binary_expression "!bVar13 && !bVar15" (unary_expression "!bVar13" (! "!") (identifier "bVar13")) (&& "&&") (unary_expression "!bVar15" (! "!") (identifier "bVar15"))) () ")")) (== "==") (identifier "bVar13")) () ")")))) (; ";")) (if_statement "if ((((*(char *)(iStack_50 + 0x68 + local_5c) == cVar5) &&\n           (*(char *)(iStack_50 + 0x69 + local_5c) == cVar5)) &&\n          (*(char *)(iStack_50 + 0x6a + local_5c) == cVar5)) &&\n         (*(char *)(iStack_50 + 0x6b + local_5c) == cVar5)) {\n        local_5c = local_5c + 4;\n        do {\n          iVar4 = (int)local_5c >> 0x1f;\n          iStack_40 = *(int *)(iStack_50 + 0x14);\n          uStack_44 = *(uint *)(iStack_50 + 0x10);\n          if ((SBORROW4(iVar4,iStack_40) != SBORROW4(iVar4 - iStack_40,(uint)(local_5c < uStack_44))\n              ) != (int)((iVar4 - iStack_40) - (uint)(local_5c < uStack_44)) < 0) {\n            if (((int)(uint)(uStack_44 != local_5c) <=\n                 (int)-((iStack_40 - iVar4) - (uint)(uStack_44 < local_5c))) ||\n               (*(char *)(iStack_50 + 0x68 + local_5c) != '\x01')) goto code_r0x00020226;\n            uVar8 = local_5c + 1;\n            iStack_38 = 0;\n            iVar4 = (*(int **)DAT_0008973c[0x20])[4];\n            goto code_r0x0002044e;\n          }\n          local_5c = local_5c - uStack_44;\n          iStack_50 = *(int *)(iStack_50 + 0x30);\n        } while (iStack_50 != 0);\n        piVar6[1] = 0;\n        goto code_r0x0002022d;\n      }" (if "if") (parenthesized_expression "((((*(char *)(iStack_50 + 0x68 + local_5c) == cVar5) &&\n           (*(char *)(iStack_50 + 0x69 + local_5c) == cVar5)) &&\n          (*(char *)(iStack_50 + 0x6a + local_5c) == cVar5)) &&\n         (*(char *)(iStack_50 + 0x6b + local_5c) == cVar5))" (( "(") (binary_expression "(((*(char *)(iStack_50 + 0x68 + local_5c) == cVar5) &&\n           (*(char *)(iStack_50 + 0x69 + local_5c) == cVar5)) &&\n          (*(char *)(iStack_50 + 0x6a + local_5c) == cVar5)) &&\n         (*(char *)(iStack_50 + 0x6b + local_5c) == cVar5)" (parenthesized_expression "(((*(char *)(iStack_50 + 0x68 + local_5c) == cVar5) &&\n           (*(char *)(iStack_50 + 0x69 + local_5c) == cVar5)) &&\n          (*(char *)(iStack_50 + 0x6a + local_5c) == cVar5))" (( "(") (binary_expression "((*(char *)(iStack_50 + 0x68 + local_5c) == cVar5) &&\n           (*(char *)(iStack_50 + 0x69 + local_5c) == cVar5)) &&\n          (*(char *)(iStack_50 + 0x6a + local_5c) == cVar5)" (parenthesized_expression "((*(char *)(iStack_50 + 0x68 + local_5c) == cVar5) &&\n           (*(char *)(iStack_50 + 0x69 + local_5c) == cVar5))" (( "(") (binary_expression "(*(char *)(iStack_50 + 0x68 + local_5c) == cVar5) &&\n           (*(char *)(iStack_50 + 0x69 + local_5c) == cVar5)" (parenthesized_expression "(*(char *)(iStack_50 + 0x68 + local_5c) == cVar5)" (( "(") (binary_expression "*(char *)(iStack_50 + 0x68 + local_5c) == cVar5" (pointer_expression "*(char *)(iStack_50 + 0x68 + local_5c)" (* "*") (cast_expression "(char *)(iStack_50 + 0x68 + local_5c)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iStack_50 + 0x68 + local_5c)" (( "(") (binary_expression "iStack_50 + 0x68 + local_5c" (binary_expression "iStack_50 + 0x68" (identifier "iStack_50") (+ "+") (number_literal "0x68")) (+ "+") (identifier "local_5c")) () ")")))) (== "==") (identifier "cVar5")) () ")")) (&& "&&") (parenthesized_expression "(*(char *)(iStack_50 + 0x69 + local_5c) == cVar5)" (( "(") (binary_expression "*(char *)(iStack_50 + 0x69 + local_5c) == cVar5" (pointer_expression "*(char *)(iStack_50 + 0x69 + local_5c)" (* "*") (cast_expression "(char *)(iStack_50 + 0x69 + local_5c)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iStack_50 + 0x69 + local_5c)" (( "(") (binary_expression "iStack_50 + 0x69 + local_5c" (binary_expression "iStack_50 + 0x69" (identifier "iStack_50") (+ "+") (number_literal "0x69")) (+ "+") (identifier "local_5c")) () ")")))) (== "==") (identifier "cVar5")) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(*(char *)(iStack_50 + 0x6a + local_5c) == cVar5)" (( "(") (binary_expression "*(char *)(iStack_50 + 0x6a + local_5c) == cVar5" (pointer_expression "*(char *)(iStack_50 + 0x6a + local_5c)" (* "*") (cast_expression "(char *)(iStack_50 + 0x6a + local_5c)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iStack_50 + 0x6a + local_5c)" (( "(") (binary_expression "iStack_50 + 0x6a + local_5c" (binary_expression "iStack_50 + 0x6a" (identifier "iStack_50") (+ "+") (number_literal "0x6a")) (+ "+") (identifier "local_5c")) () ")")))) (== "==") (identifier "cVar5")) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(*(char *)(iStack_50 + 0x6b + local_5c) == cVar5)" (( "(") (binary_expression "*(char *)(iStack_50 + 0x6b + local_5c) == cVar5" (pointer_expression "*(char *)(iStack_50 + 0x6b + local_5c)" (* "*") (cast_expression "(char *)(iStack_50 + 0x6b + local_5c)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iStack_50 + 0x6b + local_5c)" (( "(") (binary_expression "iStack_50 + 0x6b + local_5c" (binary_expression "iStack_50 + 0x6b" (identifier "iStack_50") (+ "+") (number_literal "0x6b")) (+ "+") (identifier "local_5c")) () ")")))) (== "==") (identifier "cVar5")) () ")"))) () ")")) (compound_statement "{\n        local_5c = local_5c + 4;\n        do {\n          iVar4 = (int)local_5c >> 0x1f;\n          iStack_40 = *(int *)(iStack_50 + 0x14);\n          uStack_44 = *(uint *)(iStack_50 + 0x10);\n          if ((SBORROW4(iVar4,iStack_40) != SBORROW4(iVar4 - iStack_40,(uint)(local_5c < uStack_44))\n              ) != (int)((iVar4 - iStack_40) - (uint)(local_5c < uStack_44)) < 0) {\n            if (((int)(uint)(uStack_44 != local_5c) <=\n                 (int)-((iStack_40 - iVar4) - (uint)(uStack_44 < local_5c))) ||\n               (*(char *)(iStack_50 + 0x68 + local_5c) != '\x01')) goto code_r0x00020226;\n            uVar8 = local_5c + 1;\n            iStack_38 = 0;\n            iVar4 = (*(int **)DAT_0008973c[0x20])[4];\n            goto code_r0x0002044e;\n          }\n          local_5c = local_5c - uStack_44;\n          iStack_50 = *(int *)(iStack_50 + 0x30);\n        } while (iStack_50 != 0);\n        piVar6[1] = 0;\n        goto code_r0x0002022d;\n      }" ({ "{") (expression_statement "local_5c = local_5c + 4;" (assignment_expression "local_5c = local_5c + 4" (identifier "local_5c") (= "=") (binary_expression "local_5c + 4" (identifier "local_5c") (+ "+") (number_literal "4"))) (; ";")) (do_statement "do {\n          iVar4 = (int)local_5c >> 0x1f;\n          iStack_40 = *(int *)(iStack_50 + 0x14);\n          uStack_44 = *(uint *)(iStack_50 + 0x10);\n          if ((SBORROW4(iVar4,iStack_40) != SBORROW4(iVar4 - iStack_40,(uint)(local_5c < uStack_44))\n              ) != (int)((iVar4 - iStack_40) - (uint)(local_5c < uStack_44)) < 0) {\n            if (((int)(uint)(uStack_44 != local_5c) <=\n                 (int)-((iStack_40 - iVar4) - (uint)(uStack_44 < local_5c))) ||\n               (*(char *)(iStack_50 + 0x68 + local_5c) != '\x01')) goto code_r0x00020226;\n            uVar8 = local_5c + 1;\n            iStack_38 = 0;\n            iVar4 = (*(int **)DAT_0008973c[0x20])[4];\n            goto code_r0x0002044e;\n          }\n          local_5c = local_5c - uStack_44;\n          iStack_50 = *(int *)(iStack_50 + 0x30);\n        } while (iStack_50 != 0);" (do "do") (compound_statement "{\n          iVar4 = (int)local_5c >> 0x1f;\n          iStack_40 = *(int *)(iStack_50 + 0x14);\n          uStack_44 = *(uint *)(iStack_50 + 0x10);\n          if ((SBORROW4(iVar4,iStack_40) != SBORROW4(iVar4 - iStack_40,(uint)(local_5c < uStack_44))\n              ) != (int)((iVar4 - iStack_40) - (uint)(local_5c < uStack_44)) < 0) {\n            if (((int)(uint)(uStack_44 != local_5c) <=\n                 (int)-((iStack_40 - iVar4) - (uint)(uStack_44 < local_5c))) ||\n               (*(char *)(iStack_50 + 0x68 + local_5c) != '\x01')) goto code_r0x00020226;\n            uVar8 = local_5c + 1;\n            iStack_38 = 0;\n            iVar4 = (*(int **)DAT_0008973c[0x20])[4];\n            goto code_r0x0002044e;\n          }\n          local_5c = local_5c - uStack_44;\n          iStack_50 = *(int *)(iStack_50 + 0x30);\n        }" ({ "{") (expression_statement "iVar4 = (int)local_5c >> 0x1f;" (assignment_expression "iVar4 = (int)local_5c >> 0x1f" (identifier "iVar4") (= "=") (binary_expression "(int)local_5c >> 0x1f" (cast_expression "(int)local_5c" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_5c")) (>> ">>") (number_literal "0x1f"))) (; ";")) (expression_statement "iStack_40 = *(int *)(iStack_50 + 0x14);" (assignment_expression "iStack_40 = *(int *)(iStack_50 + 0x14)" (identifier "iStack_40") (= "=") (pointer_expression "*(int *)(iStack_50 + 0x14)" (* "*") (cast_expression "(int *)(iStack_50 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iStack_50 + 0x14)" (( "(") (binary_expression "iStack_50 + 0x14" (identifier "iStack_50") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (expression_statement "uStack_44 = *(uint *)(iStack_50 + 0x10);" (assignment_expression "uStack_44 = *(uint *)(iStack_50 + 0x10)" (identifier "uStack_44") (= "=") (pointer_expression "*(uint *)(iStack_50 + 0x10)" (* "*") (cast_expression "(uint *)(iStack_50 + 0x10)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iStack_50 + 0x10)" (( "(") (binary_expression "iStack_50 + 0x10" (identifier "iStack_50") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (if_statement "if ((SBORROW4(iVar4,iStack_40) != SBORROW4(iVar4 - iStack_40,(uint)(local_5c < uStack_44))\n              ) != (int)((iVar4 - iStack_40) - (uint)(local_5c < uStack_44)) < 0) {\n            if (((int)(uint)(uStack_44 != local_5c) <=\n                 (int)-((iStack_40 - iVar4) - (uint)(uStack_44 < local_5c))) ||\n               (*(char *)(iStack_50 + 0x68 + local_5c) != '\x01')) goto code_r0x00020226;\n            uVar8 = local_5c + 1;\n            iStack_38 = 0;\n            iVar4 = (*(int **)DAT_0008973c[0x20])[4];\n            goto code_r0x0002044e;\n          }" (if "if") (parenthesized_expression "((SBORROW4(iVar4,iStack_40) != SBORROW4(iVar4 - iStack_40,(uint)(local_5c < uStack_44))\n              ) != (int)((iVar4 - iStack_40) - (uint)(local_5c < uStack_44)) < 0)" (( "(") (binary_expression "(SBORROW4(iVar4,iStack_40) != SBORROW4(iVar4 - iStack_40,(uint)(local_5c < uStack_44))\n              ) != (int)((iVar4 - iStack_40) - (uint)(local_5c < uStack_44)) < 0" (parenthesized_expression "(SBORROW4(iVar4,iStack_40) != SBORROW4(iVar4 - iStack_40,(uint)(local_5c < uStack_44))\n              )" (( "(") (binary_expression "SBORROW4(iVar4,iStack_40) != SBORROW4(iVar4 - iStack_40,(uint)(local_5c < uStack_44))" (call_expression "SBORROW4(iVar4,iStack_40)" (identifier "SBORROW4") (argument_list "(iVar4,iStack_40)" (( "(") (identifier "iVar4") (, ",") (identifier "iStack_40") () ")"))) (!= "!=") (call_expression "SBORROW4(iVar4 - iStack_40,(uint)(local_5c < uStack_44))" (identifier "SBORROW4") (argument_list "(iVar4 - iStack_40,(uint)(local_5c < uStack_44))" (( "(") (binary_expression "iVar4 - iStack_40" (identifier "iVar4") (- "-") (identifier "iStack_40")) (, ",") (call_expression "(uint)(local_5c < uStack_44)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(local_5c < uStack_44)" (( "(") (binary_expression "local_5c < uStack_44" (identifier "local_5c") (< "<") (identifier "uStack_44")) () ")"))) () ")")))) () ")")) (!= "!=") (binary_expression "(int)((iVar4 - iStack_40) - (uint)(local_5c < uStack_44)) < 0" (cast_expression "(int)((iVar4 - iStack_40) - (uint)(local_5c < uStack_44))" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((iVar4 - iStack_40) - (uint)(local_5c < uStack_44))" (( "(") (binary_expression "(iVar4 - iStack_40) - (uint)(local_5c < uStack_44)" (parenthesized_expression "(iVar4 - iStack_40)" (( "(") (binary_expression "iVar4 - iStack_40" (identifier "iVar4") (- "-") (identifier "iStack_40")) () ")")) (- "-") (call_expression "(uint)(local_5c < uStack_44)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(local_5c < uStack_44)" (( "(") (binary_expression "local_5c < uStack_44" (identifier "local_5c") (< "<") (identifier "uStack_44")) () ")")))) () ")"))) (< "<") (number_literal "0"))) () ")")) (compound_statement "{\n            if (((int)(uint)(uStack_44 != local_5c) <=\n                 (int)-((iStack_40 - iVar4) - (uint)(uStack_44 < local_5c))) ||\n               (*(char *)(iStack_50 + 0x68 + local_5c) != '\x01')) goto code_r0x00020226;\n            uVar8 = local_5c + 1;\n            iStack_38 = 0;\n            iVar4 = (*(int **)DAT_0008973c[0x20])[4];\n            goto code_r0x0002044e;\n          }" ({ "{") (if_statement "if (((int)(uint)(uStack_44 != local_5c) <=\n                 (int)-((iStack_40 - iVar4) - (uint)(uStack_44 < local_5c))) ||\n               (*(char *)(iStack_50 + 0x68 + local_5c) != '\x01')) goto code_r0x00020226;" (if "if") (parenthesized_expression "(((int)(uint)(uStack_44 != local_5c) <=\n                 (int)-((iStack_40 - iVar4) - (uint)(uStack_44 < local_5c))) ||\n               (*(char *)(iStack_50 + 0x68 + local_5c) != '\x01'))" (( "(") (binary_expression "((int)(uint)(uStack_44 != local_5c) <=\n                 (int)-((iStack_40 - iVar4) - (uint)(uStack_44 < local_5c))) ||\n               (*(char *)(iStack_50 + 0x68 + local_5c) != '\x01')" (parenthesized_expression "((int)(uint)(uStack_44 != local_5c) <=\n                 (int)-((iStack_40 - iVar4) - (uint)(uStack_44 < local_5c)))" (( "(") (binary_expression "(int)(uint)(uStack_44 != local_5c) <=\n                 (int)-((iStack_40 - iVar4) - (uint)(uStack_44 < local_5c))" (cast_expression "(int)(uint)(uStack_44 != local_5c)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (call_expression "(uint)(uStack_44 != local_5c)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uStack_44 != local_5c)" (( "(") (binary_expression "uStack_44 != local_5c" (identifier "uStack_44") (!= "!=") (identifier "local_5c")) () ")")))) (<= "<=") (cast_expression "(int)-((iStack_40 - iVar4) - (uint)(uStack_44 < local_5c))" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (unary_expression "-((iStack_40 - iVar4) - (uint)(uStack_44 < local_5c))" (- "-") (parenthesized_expression "((iStack_40 - iVar4) - (uint)(uStack_44 < local_5c))" (( "(") (binary_expression "(iStack_40 - iVar4) - (uint)(uStack_44 < local_5c)" (parenthesized_expression "(iStack_40 - iVar4)" (( "(") (binary_expression "iStack_40 - iVar4" (identifier "iStack_40") (- "-") (identifier "iVar4")) () ")")) (- "-") (call_expression "(uint)(uStack_44 < local_5c)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uStack_44 < local_5c)" (( "(") (binary_expression "uStack_44 < local_5c" (identifier "uStack_44") (< "<") (identifier "local_5c")) () ")")))) () ")"))))) () ")")) (|| "||") (parenthesized_expression "(*(char *)(iStack_50 + 0x68 + local_5c) != '\x01')" (( "(") (binary_expression "*(char *)(iStack_50 + 0x68 + local_5c) != '\x01'" (pointer_expression "*(char *)(iStack_50 + 0x68 + local_5c)" (* "*") (cast_expression "(char *)(iStack_50 + 0x68 + local_5c)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iStack_50 + 0x68 + local_5c)" (( "(") (binary_expression "iStack_50 + 0x68 + local_5c" (binary_expression "iStack_50 + 0x68" (identifier "iStack_50") (+ "+") (number_literal "0x68")) (+ "+") (identifier "local_5c")) () ")")))) (!= "!=") (char_literal "'\x01'" (' "'") (escape_sequence "\x01") (' "'"))) () ")"))) () ")")) (goto_statement "goto code_r0x00020226;" (goto "goto") (statement_identifier "code_r0x00020226") (; ";"))) (expression_statement "uVar8 = local_5c + 1;" (assignment_expression "uVar8 = local_5c + 1" (identifier "uVar8") (= "=") (binary_expression "local_5c + 1" (identifier "local_5c") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "iStack_38 = 0;" (assignment_expression "iStack_38 = 0" (identifier "iStack_38") (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar4 = (*(int **)DAT_0008973c[0x20])[4];" (assignment_expression "iVar4 = (*(int **)DAT_0008973c[0x20])[4]" (identifier "iVar4") (= "=") (subscript_expression "(*(int **)DAT_0008973c[0x20])[4]" (parenthesized_expression "(*(int **)DAT_0008973c[0x20])" (( "(") (pointer_expression "*(int **)DAT_0008973c[0x20]" (* "*") (cast_expression "(int **)DAT_0008973c[0x20]" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (subscript_expression "DAT_0008973c[0x20]" (identifier "DAT_0008973c") ([ "[") (number_literal "0x20") (] "]")))) () ")")) ([ "[") (number_literal "4") (] "]"))) (; ";")) (goto_statement "goto code_r0x0002044e;" (goto "goto") (statement_identifier "code_r0x0002044e") (; ";")) (} "}"))) (expression_statement "local_5c = local_5c - uStack_44;" (assignment_expression "local_5c = local_5c - uStack_44" (identifier "local_5c") (= "=") (binary_expression "local_5c - uStack_44" (identifier "local_5c") (- "-") (identifier "uStack_44"))) (; ";")) (expression_statement "iStack_50 = *(int *)(iStack_50 + 0x30);" (assignment_expression "iStack_50 = *(int *)(iStack_50 + 0x30)" (identifier "iStack_50") (= "=") (pointer_expression "*(int *)(iStack_50 + 0x30)" (* "*") (cast_expression "(int *)(iStack_50 + 0x30)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iStack_50 + 0x30)" (( "(") (binary_expression "iStack_50 + 0x30" (identifier "iStack_50") (+ "+") (number_literal "0x30")) () ")"))))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iStack_50 != 0)" (( "(") (binary_expression "iStack_50 != 0" (identifier "iStack_50") (!= "!=") (number_literal "0")) () ")")) (; ";")) (expression_statement "piVar6[1] = 0;" (assignment_expression "piVar6[1] = 0" (subscript_expression "piVar6[1]" (identifier "piVar6") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0")) (; ";")) (goto_statement "goto code_r0x0002022d;" (goto "goto") (statement_identifier "code_r0x0002022d") (; ";")) (} "}"))) (} "}"))) (} "}"))) (goto_statement "goto code_r0x00020226;" (goto "goto") (statement_identifier "code_r0x00020226") (; ";")) (labeled_statement "code_r0x0002044e:\n  iStack_58 = (int)uVar8 >> 0x1f;" (statement_identifier "code_r0x0002044e") (: ":") (expression_statement "iStack_58 = (int)uVar8 >> 0x1f;" (assignment_expression "iStack_58 = (int)uVar8 >> 0x1f" (identifier "iStack_58") (= "=") (binary_expression "(int)uVar8 >> 0x1f" (cast_expression "(int)uVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar8")) (>> ">>") (number_literal "0x1f"))) (; ";"))) (if_statement "if ((SBORROW4(iStack_58,iStack_40) != SBORROW4(iStack_58 - iStack_40,(uint)(uVar8 < uStack_44)))\n      != (int)((iStack_58 - iStack_40) - (uint)(uVar8 < uStack_44)) < 0) {\n    cVar5 = *(char *)(iStack_50 + 0x68 + uVar8);\n    if (cVar5 == '\0') {\ncode_r0x00020509:\n      uVar8 = uVar8 + 1;\n      goto code_r0x00020523;\n    }\n    local_5c = uVar8;\n    while( true ) {\n      if (iStack_38 < 9) {\n        acStack_26[iStack_38] = cVar5;\n        iStack_38 = iStack_38 + 1;\n      }\n      uVar8 = uVar8 + 1;\n      if (iStack_58 == iStack_40 + -1 + (uint)(uStack_44 != 0) && local_5c == uStack_44 - 1) break;\n      bVar13 = 0xfffffffe < local_5c;\n      local_5c = local_5c + 1;\n      iStack_58 = iStack_58 + (uint)bVar13;\n      cVar5 = *(char *)(iStack_50 + 0x68 + uVar8);\n      if (cVar5 == '\0') goto code_r0x00020509;\n    }\n    goto code_r0x0002044e;\n  }" (if "if") (parenthesized_expression "((SBORROW4(iStack_58,iStack_40) != SBORROW4(iStack_58 - iStack_40,(uint)(uVar8 < uStack_44)))\n      != (int)((iStack_58 - iStack_40) - (uint)(uVar8 < uStack_44)) < 0)" (( "(") (binary_expression "(SBORROW4(iStack_58,iStack_40) != SBORROW4(iStack_58 - iStack_40,(uint)(uVar8 < uStack_44)))\n      != (int)((iStack_58 - iStack_40) - (uint)(uVar8 < uStack_44)) < 0" (parenthesized_expression "(SBORROW4(iStack_58,iStack_40) != SBORROW4(iStack_58 - iStack_40,(uint)(uVar8 < uStack_44)))" (( "(") (binary_expression "SBORROW4(iStack_58,iStack_40) != SBORROW4(iStack_58 - iStack_40,(uint)(uVar8 < uStack_44))" (call_expression "SBORROW4(iStack_58,iStack_40)" (identifier "SBORROW4") (argument_list "(iStack_58,iStack_40)" (( "(") (identifier "iStack_58") (, ",") (identifier "iStack_40") () ")"))) (!= "!=") (call_expression "SBORROW4(iStack_58 - iStack_40,(uint)(uVar8 < uStack_44))" (identifier "SBORROW4") (argument_list "(iStack_58 - iStack_40,(uint)(uVar8 < uStack_44))" (( "(") (binary_expression "iStack_58 - iStack_40" (identifier "iStack_58") (- "-") (identifier "iStack_40")) (, ",") (call_expression "(uint)(uVar8 < uStack_44)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar8 < uStack_44)" (( "(") (binary_expression "uVar8 < uStack_44" (identifier "uVar8") (< "<") (identifier "uStack_44")) () ")"))) () ")")))) () ")")) (!= "!=") (binary_expression "(int)((iStack_58 - iStack_40) - (uint)(uVar8 < uStack_44)) < 0" (cast_expression "(int)((iStack_58 - iStack_40) - (uint)(uVar8 < uStack_44))" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((iStack_58 - iStack_40) - (uint)(uVar8 < uStack_44))" (( "(") (binary_expression "(iStack_58 - iStack_40) - (uint)(uVar8 < uStack_44)" (parenthesized_expression "(iStack_58 - iStack_40)" (( "(") (binary_expression "iStack_58 - iStack_40" (identifier "iStack_58") (- "-") (identifier "iStack_40")) () ")")) (- "-") (call_expression "(uint)(uVar8 < uStack_44)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar8 < uStack_44)" (( "(") (binary_expression "uVar8 < uStack_44" (identifier "uVar8") (< "<") (identifier "uStack_44")) () ")")))) () ")"))) (< "<") (number_literal "0"))) () ")")) (compound_statement "{\n    cVar5 = *(char *)(iStack_50 + 0x68 + uVar8);\n    if (cVar5 == '\0') {\ncode_r0x00020509:\n      uVar8 = uVar8 + 1;\n      goto code_r0x00020523;\n    }\n    local_5c = uVar8;\n    while( true ) {\n      if (iStack_38 < 9) {\n        acStack_26[iStack_38] = cVar5;\n        iStack_38 = iStack_38 + 1;\n      }\n      uVar8 = uVar8 + 1;\n      if (iStack_58 == iStack_40 + -1 + (uint)(uStack_44 != 0) && local_5c == uStack_44 - 1) break;\n      bVar13 = 0xfffffffe < local_5c;\n      local_5c = local_5c + 1;\n      iStack_58 = iStack_58 + (uint)bVar13;\n      cVar5 = *(char *)(iStack_50 + 0x68 + uVar8);\n      if (cVar5 == '\0') goto code_r0x00020509;\n    }\n    goto code_r0x0002044e;\n  }" ({ "{") (expression_statement "cVar5 = *(char *)(iStack_50 + 0x68 + uVar8);" (assignment_expression "cVar5 = *(char *)(iStack_50 + 0x68 + uVar8)" (identifier "cVar5") (= "=") (pointer_expression "*(char *)(iStack_50 + 0x68 + uVar8)" (* "*") (cast_expression "(char *)(iStack_50 + 0x68 + uVar8)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iStack_50 + 0x68 + uVar8)" (( "(") (binary_expression "iStack_50 + 0x68 + uVar8" (binary_expression "iStack_50 + 0x68" (identifier "iStack_50") (+ "+") (number_literal "0x68")) (+ "+") (identifier "uVar8")) () ")"))))) (; ";")) (if_statement "if (cVar5 == '\0') {\ncode_r0x00020509:\n      uVar8 = uVar8 + 1;\n      goto code_r0x00020523;\n    }" (if "if") (parenthesized_expression "(cVar5 == '\0')" (( "(") (binary_expression "cVar5 == '\0'" (identifier "cVar5") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\ncode_r0x00020509:\n      uVar8 = uVar8 + 1;\n      goto code_r0x00020523;\n    }" ({ "{") (labeled_statement "code_r0x00020509:\n      uVar8 = uVar8 + 1;" (statement_identifier "code_r0x00020509") (: ":") (expression_statement "uVar8 = uVar8 + 1;" (assignment_expression "uVar8 = uVar8 + 1" (identifier "uVar8") (= "=") (binary_expression "uVar8 + 1" (identifier "uVar8") (+ "+") (number_literal "1"))) (; ";"))) (goto_statement "goto code_r0x00020523;" (goto "goto") (statement_identifier "code_r0x00020523") (; ";")) (} "}"))) (expression_statement "local_5c = uVar8;" (assignment_expression "local_5c = uVar8" (identifier "local_5c") (= "=") (identifier "uVar8")) (; ";")) (while_statement "while( true ) {\n      if (iStack_38 < 9) {\n        acStack_26[iStack_38] = cVar5;\n        iStack_38 = iStack_38 + 1;\n      }\n      uVar8 = uVar8 + 1;\n      if (iStack_58 == iStack_40 + -1 + (uint)(uStack_44 != 0) && local_5c == uStack_44 - 1) break;\n      bVar13 = 0xfffffffe < local_5c;\n      local_5c = local_5c + 1;\n      iStack_58 = iStack_58 + (uint)bVar13;\n      cVar5 = *(char *)(iStack_50 + 0x68 + uVar8);\n      if (cVar5 == '\0') goto code_r0x00020509;\n    }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n      if (iStack_38 < 9) {\n        acStack_26[iStack_38] = cVar5;\n        iStack_38 = iStack_38 + 1;\n      }\n      uVar8 = uVar8 + 1;\n      if (iStack_58 == iStack_40 + -1 + (uint)(uStack_44 != 0) && local_5c == uStack_44 - 1) break;\n      bVar13 = 0xfffffffe < local_5c;\n      local_5c = local_5c + 1;\n      iStack_58 = iStack_58 + (uint)bVar13;\n      cVar5 = *(char *)(iStack_50 + 0x68 + uVar8);\n      if (cVar5 == '\0') goto code_r0x00020509;\n    }" ({ "{") (if_statement "if (iStack_38 < 9) {\n        acStack_26[iStack_38] = cVar5;\n        iStack_38 = iStack_38 + 1;\n      }" (if "if") (parenthesized_expression "(iStack_38 < 9)" (( "(") (binary_expression "iStack_38 < 9" (identifier "iStack_38") (< "<") (number_literal "9")) () ")")) (compound_statement "{\n        acStack_26[iStack_38] = cVar5;\n        iStack_38 = iStack_38 + 1;\n      }" ({ "{") (expression_statement "acStack_26[iStack_38] = cVar5;" (assignment_expression "acStack_26[iStack_38] = cVar5" (subscript_expression "acStack_26[iStack_38]" (identifier "acStack_26") ([ "[") (identifier "iStack_38") (] "]")) (= "=") (identifier "cVar5")) (; ";")) (expression_statement "iStack_38 = iStack_38 + 1;" (assignment_expression "iStack_38 = iStack_38 + 1" (identifier "iStack_38") (= "=") (binary_expression "iStack_38 + 1" (identifier "iStack_38") (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (expression_statement "uVar8 = uVar8 + 1;" (assignment_expression "uVar8 = uVar8 + 1" (identifier "uVar8") (= "=") (binary_expression "uVar8 + 1" (identifier "uVar8") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (iStack_58 == iStack_40 + -1 + (uint)(uStack_44 != 0) && local_5c == uStack_44 - 1) break;" (if "if") (parenthesized_expression "(iStack_58 == iStack_40 + -1 + (uint)(uStack_44 != 0) && local_5c == uStack_44 - 1)" (( "(") (binary_expression "iStack_58 == iStack_40 + -1 + (uint)(uStack_44 != 0) && local_5c == uStack_44 - 1" (binary_expression "iStack_58 == iStack_40 + -1 + (uint)(uStack_44 != 0)" (identifier "iStack_58") (== "==") (binary_expression "iStack_40 + -1 + (uint)(uStack_44 != 0)" (binary_expression "iStack_40 + -1" (identifier "iStack_40") (+ "+") (number_literal "-1")) (+ "+") (call_expression "(uint)(uStack_44 != 0)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uStack_44 != 0)" (( "(") (binary_expression "uStack_44 != 0" (identifier "uStack_44") (!= "!=") (number_literal "0")) () ")"))))) (&& "&&") (binary_expression "local_5c == uStack_44 - 1" (identifier "local_5c") (== "==") (binary_expression "uStack_44 - 1" (identifier "uStack_44") (- "-") (number_literal "1")))) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "bVar13 = 0xfffffffe < local_5c;" (assignment_expression "bVar13 = 0xfffffffe < local_5c" (identifier "bVar13") (= "=") (binary_expression "0xfffffffe < local_5c" (number_literal "0xfffffffe") (< "<") (identifier "local_5c"))) (; ";")) (expression_statement "local_5c = local_5c + 1;" (assignment_expression "local_5c = local_5c + 1" (identifier "local_5c") (= "=") (binary_expression "local_5c + 1" (identifier "local_5c") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "iStack_58 = iStack_58 + (uint)bVar13;" (assignment_expression "iStack_58 = iStack_58 + (uint)bVar13" (identifier "iStack_58") (= "=") (binary_expression "iStack_58 + (uint)bVar13" (identifier "iStack_58") (+ "+") (cast_expression "(uint)bVar13" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar13")))) (; ";")) (expression_statement "cVar5 = *(char *)(iStack_50 + 0x68 + uVar8);" (assignment_expression "cVar5 = *(char *)(iStack_50 + 0x68 + uVar8)" (identifier "cVar5") (= "=") (pointer_expression "*(char *)(iStack_50 + 0x68 + uVar8)" (* "*") (cast_expression "(char *)(iStack_50 + 0x68 + uVar8)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iStack_50 + 0x68 + uVar8)" (( "(") (binary_expression "iStack_50 + 0x68 + uVar8" (binary_expression "iStack_50 + 0x68" (identifier "iStack_50") (+ "+") (number_literal "0x68")) (+ "+") (identifier "uVar8")) () ")"))))) (; ";")) (if_statement "if (cVar5 == '\0') goto code_r0x00020509;" (if "if") (parenthesized_expression "(cVar5 == '\0')" (( "(") (binary_expression "cVar5 == '\0'" (identifier "cVar5") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (goto_statement "goto code_r0x00020509;" (goto "goto") (statement_identifier "code_r0x00020509") (; ";"))) (} "}"))) (goto_statement "goto code_r0x0002044e;" (goto "goto") (statement_identifier "code_r0x0002044e") (; ";")) (} "}"))) (expression_statement "iStack_50 = *(int *)(iStack_50 + 0x30);" (assignment_expression "iStack_50 = *(int *)(iStack_50 + 0x30)" (identifier "iStack_50") (= "=") (pointer_expression "*(int *)(iStack_50 + 0x30)" (* "*") (cast_expression "(int *)(iStack_50 + 0x30)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iStack_50 + 0x30)" (( "(") (binary_expression "iStack_50 + 0x30" (identifier "iStack_50") (+ "+") (number_literal "0x30")) () ")"))))) (; ";")) (if_statement "if (iStack_50 == 0) goto code_r0x00020226;" (if "if") (parenthesized_expression "(iStack_50 == 0)" (( "(") (binary_expression "iStack_50 == 0" (identifier "iStack_50") (== "==") (number_literal "0")) () ")")) (goto_statement "goto code_r0x00020226;" (goto "goto") (statement_identifier "code_r0x00020226") (; ";"))) (expression_statement "iStack_40 = *(int *)(iStack_50 + 0x14);" (assignment_expression "iStack_40 = *(int *)(iStack_50 + 0x14)" (identifier "iStack_40") (= "=") (pointer_expression "*(int *)(iStack_50 + 0x14)" (* "*") (cast_expression "(int *)(iStack_50 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iStack_50 + 0x14)" (( "(") (binary_expression "iStack_50 + 0x14" (identifier "iStack_50") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (expression_statement "uVar8 = uVar8 - uStack_44;" (assignment_expression "uVar8 = uVar8 - uStack_44" (identifier "uVar8") (= "=") (binary_expression "uVar8 - uStack_44" (identifier "uVar8") (- "-") (identifier "uStack_44"))) (; ";")) (expression_statement "uStack_44 = *(uint *)(iStack_50 + 0x10);" (assignment_expression "uStack_44 = *(uint *)(iStack_50 + 0x10)" (identifier "uStack_44") (= "=") (pointer_expression "*(uint *)(iStack_50 + 0x10)" (* "*") (cast_expression "(uint *)(iStack_50 + 0x10)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iStack_50 + 0x10)" (( "(") (binary_expression "iStack_50 + 0x10" (identifier "iStack_50") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (goto_statement "goto code_r0x0002044e;" (goto "goto") (statement_identifier "code_r0x0002044e") (; ";")) (while_statement "while( true ) {\n    iStack_50 = *(int *)(iStack_50 + 0x30);\n    uVar8 = uVar8 - *puVar1;\n    if (iStack_50 == 0) break;\ncode_r0x00020523:\n    puVar1 = (uint *)(iStack_50 + 0x10);\n    uVar11 = (uint)(uVar8 < *puVar1);\n    iVar12 = ((int)uVar8 >> 0x1f) - *(int *)(iStack_50 + 0x14);\n    if ((SBORROW4((int)uVar8 >> 0x1f,*(int *)(iStack_50 + 0x14)) != SBORROW4(iVar12,uVar11)) !=\n        (int)(iVar12 - uVar11) < 0) {\n      acStack_26[iStack_38] = '\0';\n      if (acStack_26[0] == '\0') goto code_r0x000205bb;\n      iVar12 = strcmp(acStack_26,"eh");\n      if (iVar12 == 0) goto code_r0x00020575;\n      if (acStack_26[0] == 'z') goto code_r0x000205bb;\n      break;\n    }\n  }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n    iStack_50 = *(int *)(iStack_50 + 0x30);\n    uVar8 = uVar8 - *puVar1;\n    if (iStack_50 == 0) break;\ncode_r0x00020523:\n    puVar1 = (uint *)(iStack_50 + 0x10);\n    uVar11 = (uint)(uVar8 < *puVar1);\n    iVar12 = ((int)uVar8 >> 0x1f) - *(int *)(iStack_50 + 0x14);\n    if ((SBORROW4((int)uVar8 >> 0x1f,*(int *)(iStack_50 + 0x14)) != SBORROW4(iVar12,uVar11)) !=\n        (int)(iVar12 - uVar11) < 0) {\n      acStack_26[iStack_38] = '\0';\n      if (acStack_26[0] == '\0') goto code_r0x000205bb;\n      iVar12 = strcmp(acStack_26,"eh");\n      if (iVar12 == 0) goto code_r0x00020575;\n      if (acStack_26[0] == 'z') goto code_r0x000205bb;\n      break;\n    }\n  }" ({ "{") (expression_statement "iStack_50 = *(int *)(iStack_50 + 0x30);" (assignment_expression "iStack_50 = *(int *)(iStack_50 + 0x30)" (identifier "iStack_50") (= "=") (pointer_expression "*(int *)(iStack_50 + 0x30)" (* "*") (cast_expression "(int *)(iStack_50 + 0x30)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iStack_50 + 0x30)" (( "(") (binary_expression "iStack_50 + 0x30" (identifier "iStack_50") (+ "+") (number_literal "0x30")) () ")"))))) (; ";")) (expression_statement "uVar8 = uVar8 - *puVar1;" (assignment_expression "uVar8 = uVar8 - *puVar1" (identifier "uVar8") (= "=") (binary_expression "uVar8 - *puVar1" (identifier "uVar8") (- "-") (pointer_expression "*puVar1" (* "*") (identifier "puVar1")))) (; ";")) (if_statement "if (iStack_50 == 0) break;" (if "if") (parenthesized_expression "(iStack_50 == 0)" (( "(") (binary_expression "iStack_50 == 0" (identifier "iStack_50") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (labeled_statement "code_r0x00020523:\n    puVar1 = (uint *)(iStack_50 + 0x10);" (statement_identifier "code_r0x00020523") (: ":") (expression_statement "puVar1 = (uint *)(iStack_50 + 0x10);" (assignment_expression "puVar1 = (uint *)(iStack_50 + 0x10)" (identifier "puVar1") (= "=") (cast_expression "(uint *)(iStack_50 + 0x10)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iStack_50 + 0x10)" (( "(") (binary_expression "iStack_50 + 0x10" (identifier "iStack_50") (+ "+") (number_literal "0x10")) () ")")))) (; ";"))) (expression_statement "uVar11 = (uint)(uVar8 < *puVar1);" (assignment_expression "uVar11 = (uint)(uVar8 < *puVar1)" (identifier "uVar11") (= "=") (call_expression "(uint)(uVar8 < *puVar1)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar8 < *puVar1)" (( "(") (binary_expression "uVar8 < *puVar1" (identifier "uVar8") (< "<") (pointer_expression "*puVar1" (* "*") (identifier "puVar1"))) () ")")))) (; ";")) (expression_statement "iVar12 = ((int)uVar8 >> 0x1f) - *(int *)(iStack_50 + 0x14);" (assignment_expression "iVar12 = ((int)uVar8 >> 0x1f) - *(int *)(iStack_50 + 0x14)" (identifier "iVar12") (= "=") (binary_expression "((int)uVar8 >> 0x1f) - *(int *)(iStack_50 + 0x14)" (parenthesized_expression "((int)uVar8 >> 0x1f)" (( "(") (binary_expression "(int)uVar8 >> 0x1f" (cast_expression "(int)uVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar8")) (>> ">>") (number_literal "0x1f")) () ")")) (- "-") (pointer_expression "*(int *)(iStack_50 + 0x14)" (* "*") (cast_expression "(int *)(iStack_50 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iStack_50 + 0x14)" (( "(") (binary_expression "iStack_50 + 0x14" (identifier "iStack_50") (+ "+") (number_literal "0x14")) () ")")))))) (; ";")) (if_statement "if ((SBORROW4((int)uVar8 >> 0x1f,*(int *)(iStack_50 + 0x14)) != SBORROW4(iVar12,uVar11)) !=\n        (int)(iVar12 - uVar11) < 0) {\n      acStack_26[iStack_38] = '\0';\n      if (acStack_26[0] == '\0') goto code_r0x000205bb;\n      iVar12 = strcmp(acStack_26,"eh");\n      if (iVar12 == 0) goto code_r0x00020575;\n      if (acStack_26[0] == 'z') goto code_r0x000205bb;\n      break;\n    }" (if "if") (parenthesized_expression "((SBORROW4((int)uVar8 >> 0x1f,*(int *)(iStack_50 + 0x14)) != SBORROW4(iVar12,uVar11)) !=\n        (int)(iVar12 - uVar11) < 0)" (( "(") (binary_expression "(SBORROW4((int)uVar8 >> 0x1f,*(int *)(iStack_50 + 0x14)) != SBORROW4(iVar12,uVar11)) !=\n        (int)(iVar12 - uVar11) < 0" (parenthesized_expression "(SBORROW4((int)uVar8 >> 0x1f,*(int *)(iStack_50 + 0x14)) != SBORROW4(iVar12,uVar11))" (( "(") (binary_expression "SBORROW4((int)uVar8 >> 0x1f,*(int *)(iStack_50 + 0x14)) != SBORROW4(iVar12,uVar11)" (call_expression "SBORROW4((int)uVar8 >> 0x1f,*(int *)(iStack_50 + 0x14))" (identifier "SBORROW4") (argument_list "((int)uVar8 >> 0x1f,*(int *)(iStack_50 + 0x14))" (( "(") (binary_expression "(int)uVar8 >> 0x1f" (cast_expression "(int)uVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar8")) (>> ">>") (number_literal "0x1f")) (, ",") (pointer_expression "*(int *)(iStack_50 + 0x14)" (* "*") (cast_expression "(int *)(iStack_50 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iStack_50 + 0x14)" (( "(") (binary_expression "iStack_50 + 0x14" (identifier "iStack_50") (+ "+") (number_literal "0x14")) () ")")))) () ")"))) (!= "!=") (call_expression "SBORROW4(iVar12,uVar11)" (identifier "SBORROW4") (argument_list "(iVar12,uVar11)" (( "(") (identifier "iVar12") (, ",") (identifier "uVar11") () ")")))) () ")")) (!= "!=") (binary_expression "(int)(iVar12 - uVar11) < 0" (cast_expression "(int)(iVar12 - uVar11)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(iVar12 - uVar11)" (( "(") (binary_expression "iVar12 - uVar11" (identifier "iVar12") (- "-") (identifier "uVar11")) () ")"))) (< "<") (number_literal "0"))) () ")")) (compound_statement "{\n      acStack_26[iStack_38] = '\0';\n      if (acStack_26[0] == '\0') goto code_r0x000205bb;\n      iVar12 = strcmp(acStack_26,"eh");\n      if (iVar12 == 0) goto code_r0x00020575;\n      if (acStack_26[0] == 'z') goto code_r0x000205bb;\n      break;\n    }" ({ "{") (expression_statement "acStack_26[iStack_38] = '\0';" (assignment_expression "acStack_26[iStack_38] = '\0'" (subscript_expression "acStack_26[iStack_38]" (identifier "acStack_26") ([ "[") (identifier "iStack_38") (] "]")) (= "=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (; ";")) (if_statement "if (acStack_26[0] == '\0') goto code_r0x000205bb;" (if "if") (parenthesized_expression "(acStack_26[0] == '\0')" (( "(") (binary_expression "acStack_26[0] == '\0'" (subscript_expression "acStack_26[0]" (identifier "acStack_26") ([ "[") (number_literal "0") (] "]")) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (goto_statement "goto code_r0x000205bb;" (goto "goto") (statement_identifier "code_r0x000205bb") (; ";"))) (expression_statement "iVar12 = strcmp(acStack_26,"eh");" (assignment_expression "iVar12 = strcmp(acStack_26,"eh")" (identifier "iVar12") (= "=") (call_expression "strcmp(acStack_26,"eh")" (identifier "strcmp") (argument_list "(acStack_26,"eh")" (( "(") (identifier "acStack_26") (, ",") (string_literal ""eh"" (" """) (string_content "eh") (" """)) () ")")))) (; ";")) (if_statement "if (iVar12 == 0) goto code_r0x00020575;" (if "if") (parenthesized_expression "(iVar12 == 0)" (( "(") (binary_expression "iVar12 == 0" (identifier "iVar12") (== "==") (number_literal "0")) () ")")) (goto_statement "goto code_r0x00020575;" (goto "goto") (statement_identifier "code_r0x00020575") (; ";"))) (if_statement "if (acStack_26[0] == 'z') goto code_r0x000205bb;" (if "if") (parenthesized_expression "(acStack_26[0] == 'z')" (( "(") (binary_expression "acStack_26[0] == 'z'" (subscript_expression "acStack_26[0]" (identifier "acStack_26") ([ "[") (number_literal "0") (] "]")) (== "==") (char_literal "'z'" (' "'") (character "z") (' "'"))) () ")")) (goto_statement "goto code_r0x000205bb;" (goto "goto") (statement_identifier "code_r0x000205bb") (; ";"))) (break_statement "break;" (break "break") (; ";")) (} "}"))) (} "}"))) (goto_statement "goto code_r0x00020226;" (goto "goto") (statement_identifier "code_r0x00020226") (; ";")) (labeled_statement "code_r0x00020575:\n  if (iVar4 == 0) goto code_r0x00020600;" (statement_identifier "code_r0x00020575") (: ":") (if_statement "if (iVar4 == 0) goto code_r0x00020600;" (if "if") (parenthesized_expression "(iVar4 == 0)" (( "(") (binary_expression "iVar4 == 0" (identifier "iVar4") (== "==") (number_literal "0")) () ")")) (goto_statement "goto code_r0x00020600;" (goto "goto") (statement_identifier "code_r0x00020600") (; ";")))) (if_statement "if ((*(int *)(iVar4 + 4) == iStack_50) && (*(uint *)(iVar4 + 8) == uVar8)) {\n    uVar8 = uVar8 + *(byte *)(iVar4 + 2);\n    goto code_r0x000205a6;\n  }" (if "if") (parenthesized_expression "((*(int *)(iVar4 + 4) == iStack_50) && (*(uint *)(iVar4 + 8) == uVar8))" (( "(") (binary_expression "(*(int *)(iVar4 + 4) == iStack_50) && (*(uint *)(iVar4 + 8) == uVar8)" (parenthesized_expression "(*(int *)(iVar4 + 4) == iStack_50)" (( "(") (binary_expression "*(int *)(iVar4 + 4) == iStack_50" (pointer_expression "*(int *)(iVar4 + 4)" (* "*") (cast_expression "(int *)(iVar4 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 4)" (( "(") (binary_expression "iVar4 + 4" (identifier "iVar4") (+ "+") (number_literal "4")) () ")")))) (== "==") (identifier "iStack_50")) () ")")) (&& "&&") (parenthesized_expression "(*(uint *)(iVar4 + 8) == uVar8)" (( "(") (binary_expression "*(uint *)(iVar4 + 8) == uVar8" (pointer_expression "*(uint *)(iVar4 + 8)" (* "*") (cast_expression "(uint *)(iVar4 + 8)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 8)" (( "(") (binary_expression "iVar4 + 8" (identifier "iVar4") (+ "+") (number_literal "8")) () ")")))) (== "==") (identifier "uVar8")) () ")"))) () ")")) (compound_statement "{\n    uVar8 = uVar8 + *(byte *)(iVar4 + 2);\n    goto code_r0x000205a6;\n  }" ({ "{") (expression_statement "uVar8 = uVar8 + *(byte *)(iVar4 + 2);" (assignment_expression "uVar8 = uVar8 + *(byte *)(iVar4 + 2)" (identifier "uVar8") (= "=") (binary_expression "uVar8 + *(byte *)(iVar4 + 2)" (identifier "uVar8") (+ "+") (pointer_expression "*(byte *)(iVar4 + 2)" (* "*") (cast_expression "(byte *)(iVar4 + 2)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 2)" (( "(") (binary_expression "iVar4 + 2" (identifier "iVar4") (+ "+") (number_literal "2")) () ")")))))) (; ";")) (goto_statement "goto code_r0x000205a6;" (goto "goto") (statement_identifier "code_r0x000205a6") (; ";")) (} "}"))) (expression_statement "iVar4 = *(int *)(iVar4 + 0x28);" (assignment_expression "iVar4 = *(int *)(iVar4 + 0x28)" (identifier "iVar4") (= "=") (pointer_expression "*(int *)(iVar4 + 0x28)" (* "*") (cast_expression "(int *)(iVar4 + 0x28)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 0x28)" (( "(") (binary_expression "iVar4 + 0x28" (identifier "iVar4") (+ "+") (number_literal "0x28")) () ")"))))) (; ";")) (goto_statement "goto code_r0x00020575;" (goto "goto") (statement_identifier "code_r0x00020575") (; ";")) (labeled_statement "code_r0x000205bb:\n  cVar5 = *(char *)(iStack_50 + 0x68 + uVar8);" (statement_identifier "code_r0x000205bb") (: ":") (expression_statement "cVar5 = *(char *)(iStack_50 + 0x68 + uVar8);" (assignment_expression "cVar5 = *(char *)(iStack_50 + 0x68 + uVar8)" (identifier "cVar5") (= "=") (pointer_expression "*(char *)(iStack_50 + 0x68 + uVar8)" (* "*") (cast_expression "(char *)(iStack_50 + 0x68 + uVar8)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iStack_50 + 0x68 + uVar8)" (( "(") (binary_expression "iStack_50 + 0x68 + uVar8" (binary_expression "iStack_50 + 0x68" (identifier "iStack_50") (+ "+") (number_literal "0x68")) (+ "+") (identifier "uVar8")) () ")"))))) (; ";"))) (expression_statement "iStack_3c = 0;" (assignment_expression "iStack_3c = 0" (identifier "iStack_3c") (= "=") (number_literal "0")) (; ";")) (if_statement "if (-1 < cVar5) {\n    iStack_3c = (int)cVar5;\n  }" (if "if") (parenthesized_expression "(-1 < cVar5)" (( "(") (binary_expression "-1 < cVar5" (number_literal "-1") (< "<") (identifier "cVar5")) () ")")) (compound_statement "{\n    iStack_3c = (int)cVar5;\n  }" ({ "{") (expression_statement "iStack_3c = (int)cVar5;" (assignment_expression "iStack_3c = (int)cVar5" (identifier "iStack_3c") (= "=") (cast_expression "(int)cVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "cVar5"))) (; ";")) (} "}"))) (expression_statement "piVar6[1] = 1;" (assignment_expression "piVar6[1] = 1" (subscript_expression "piVar6[1]" (identifier "piVar6") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "1")) (; ";")) (expression_statement "piVar6[2] = iStack_3c;" (assignment_expression "piVar6[2] = iStack_3c" (subscript_expression "piVar6[2]" (identifier "piVar6") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "iStack_3c")) (; ";")) (expression_statement "piVar6[3] = (uint)(acStack_26[0] == 'z');" (assignment_expression "piVar6[3] = (uint)(acStack_26[0] == 'z')" (subscript_expression "piVar6[3]" (identifier "piVar6") ([ "[") (number_literal "3") (] "]")) (= "=") (call_expression "(uint)(acStack_26[0] == 'z')" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(acStack_26[0] == 'z')" (( "(") (binary_expression "acStack_26[0] == 'z'" (subscript_expression "acStack_26[0]" (identifier "acStack_26") ([ "[") (number_literal "0") (] "]")) (== "==") (char_literal "'z'" (' "'") (character "z") (' "'"))) () ")")))) (; ";")) (labeled_statement "code_r0x0001ffd7:\n  if (piVar6[3] != 0) {\n    *piVar6 = 4;\n    piVar6[7] = 0;\n    piVar6[8] = 0;\n    return 0;\n  }" (statement_identifier "code_r0x0001ffd7") (: ":") (if_statement "if (piVar6[3] != 0) {\n    *piVar6 = 4;\n    piVar6[7] = 0;\n    piVar6[8] = 0;\n    return 0;\n  }" (if "if") (parenthesized_expression "(piVar6[3] != 0)" (( "(") (binary_expression "piVar6[3] != 0" (subscript_expression "piVar6[3]" (identifier "piVar6") ([ "[") (number_literal "3") (] "]")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    *piVar6 = 4;\n    piVar6[7] = 0;\n    piVar6[8] = 0;\n    return 0;\n  }" ({ "{") (expression_statement "*piVar6 = 4;" (assignment_expression "*piVar6 = 4" (pointer_expression "*piVar6" (* "*") (identifier "piVar6")) (= "=") (number_literal "4")) (; ";")) (expression_statement "piVar6[7] = 0;" (assignment_expression "piVar6[7] = 0" (subscript_expression "piVar6[7]" (identifier "piVar6") ([ "[") (number_literal "7") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "piVar6[8] = 0;" (assignment_expression "piVar6[8] = 0" (subscript_expression "piVar6[8]" (identifier "piVar6") ([ "[") (number_literal "8") (] "]")) (= "=") (number_literal "0")) (; ";")) (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}")))) (labeled_statement "code_r0x00020108:\n  *piVar6 = 6;" (statement_identifier "code_r0x00020108") (: ":") (expression_statement "*piVar6 = 6;" (assignment_expression "*piVar6 = 6" (pointer_expression "*piVar6" (* "*") (identifier "piVar6")) (= "=") (number_literal "6")) (; ";"))) (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (labeled_statement "code_r0x00020600:\n  uVar8 = uVar8 + 4;" (statement_identifier "code_r0x00020600") (: ":") (expression_statement "uVar8 = uVar8 + 4;" (assignment_expression "uVar8 = uVar8 + 4" (identifier "uVar8") (= "=") (binary_expression "uVar8 + 4" (identifier "uVar8") (+ "+") (number_literal "4"))) (; ";"))) (labeled_statement "code_r0x000205a6:\n  do {\n    puVar1 = (uint *)(iStack_50 + 0x10);\n    uVar11 = (uint)(uVar8 < *puVar1);\n    iVar4 = ((int)uVar8 >> 0x1f) - *(int *)(iStack_50 + 0x14);\n    if ((SBORROW4((int)uVar8 >> 0x1f,*(int *)(iStack_50 + 0x14)) != SBORROW4(iVar4,uVar11)) !=\n        (int)(iVar4 - uVar11) < 0) goto code_r0x000205bb;\n    iStack_50 = *(int *)(iStack_50 + 0x30);\n    uVar8 = uVar8 - *puVar1;\n  } while (iStack_50 != 0);" (statement_identifier "code_r0x000205a6") (: ":") (do_statement "do {\n    puVar1 = (uint *)(iStack_50 + 0x10);\n    uVar11 = (uint)(uVar8 < *puVar1);\n    iVar4 = ((int)uVar8 >> 0x1f) - *(int *)(iStack_50 + 0x14);\n    if ((SBORROW4((int)uVar8 >> 0x1f,*(int *)(iStack_50 + 0x14)) != SBORROW4(iVar4,uVar11)) !=\n        (int)(iVar4 - uVar11) < 0) goto code_r0x000205bb;\n    iStack_50 = *(int *)(iStack_50 + 0x30);\n    uVar8 = uVar8 - *puVar1;\n  } while (iStack_50 != 0);" (do "do") (compound_statement "{\n    puVar1 = (uint *)(iStack_50 + 0x10);\n    uVar11 = (uint)(uVar8 < *puVar1);\n    iVar4 = ((int)uVar8 >> 0x1f) - *(int *)(iStack_50 + 0x14);\n    if ((SBORROW4((int)uVar8 >> 0x1f,*(int *)(iStack_50 + 0x14)) != SBORROW4(iVar4,uVar11)) !=\n        (int)(iVar4 - uVar11) < 0) goto code_r0x000205bb;\n    iStack_50 = *(int *)(iStack_50 + 0x30);\n    uVar8 = uVar8 - *puVar1;\n  }" ({ "{") (expression_statement "puVar1 = (uint *)(iStack_50 + 0x10);" (assignment_expression "puVar1 = (uint *)(iStack_50 + 0x10)" (identifier "puVar1") (= "=") (cast_expression "(uint *)(iStack_50 + 0x10)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iStack_50 + 0x10)" (( "(") (binary_expression "iStack_50 + 0x10" (identifier "iStack_50") (+ "+") (number_literal "0x10")) () ")")))) (; ";")) (expression_statement "uVar11 = (uint)(uVar8 < *puVar1);" (assignment_expression "uVar11 = (uint)(uVar8 < *puVar1)" (identifier "uVar11") (= "=") (call_expression "(uint)(uVar8 < *puVar1)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(uVar8 < *puVar1)" (( "(") (binary_expression "uVar8 < *puVar1" (identifier "uVar8") (< "<") (pointer_expression "*puVar1" (* "*") (identifier "puVar1"))) () ")")))) (; ";")) (expression_statement "iVar4 = ((int)uVar8 >> 0x1f) - *(int *)(iStack_50 + 0x14);" (assignment_expression "iVar4 = ((int)uVar8 >> 0x1f) - *(int *)(iStack_50 + 0x14)" (identifier "iVar4") (= "=") (binary_expression "((int)uVar8 >> 0x1f) - *(int *)(iStack_50 + 0x14)" (parenthesized_expression "((int)uVar8 >> 0x1f)" (( "(") (binary_expression "(int)uVar8 >> 0x1f" (cast_expression "(int)uVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar8")) (>> ">>") (number_literal "0x1f")) () ")")) (- "-") (pointer_expression "*(int *)(iStack_50 + 0x14)" (* "*") (cast_expression "(int *)(iStack_50 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iStack_50 + 0x14)" (( "(") (binary_expression "iStack_50 + 0x14" (identifier "iStack_50") (+ "+") (number_literal "0x14")) () ")")))))) (; ";")) (if_statement "if ((SBORROW4((int)uVar8 >> 0x1f,*(int *)(iStack_50 + 0x14)) != SBORROW4(iVar4,uVar11)) !=\n        (int)(iVar4 - uVar11) < 0) goto code_r0x000205bb;" (if "if") (parenthesized_expression "((SBORROW4((int)uVar8 >> 0x1f,*(int *)(iStack_50 + 0x14)) != SBORROW4(iVar4,uVar11)) !=\n        (int)(iVar4 - uVar11) < 0)" (( "(") (binary_expression "(SBORROW4((int)uVar8 >> 0x1f,*(int *)(iStack_50 + 0x14)) != SBORROW4(iVar4,uVar11)) !=\n        (int)(iVar4 - uVar11) < 0" (parenthesized_expression "(SBORROW4((int)uVar8 >> 0x1f,*(int *)(iStack_50 + 0x14)) != SBORROW4(iVar4,uVar11))" (( "(") (binary_expression "SBORROW4((int)uVar8 >> 0x1f,*(int *)(iStack_50 + 0x14)) != SBORROW4(iVar4,uVar11)" (call_expression "SBORROW4((int)uVar8 >> 0x1f,*(int *)(iStack_50 + 0x14))" (identifier "SBORROW4") (argument_list "((int)uVar8 >> 0x1f,*(int *)(iStack_50 + 0x14))" (( "(") (binary_expression "(int)uVar8 >> 0x1f" (cast_expression "(int)uVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar8")) (>> ">>") (number_literal "0x1f")) (, ",") (pointer_expression "*(int *)(iStack_50 + 0x14)" (* "*") (cast_expression "(int *)(iStack_50 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iStack_50 + 0x14)" (( "(") (binary_expression "iStack_50 + 0x14" (identifier "iStack_50") (+ "+") (number_literal "0x14")) () ")")))) () ")"))) (!= "!=") (call_expression "SBORROW4(iVar4,uVar11)" (identifier "SBORROW4") (argument_list "(iVar4,uVar11)" (( "(") (identifier "iVar4") (, ",") (identifier "uVar11") () ")")))) () ")")) (!= "!=") (binary_expression "(int)(iVar4 - uVar11) < 0" (cast_expression "(int)(iVar4 - uVar11)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(iVar4 - uVar11)" (( "(") (binary_expression "iVar4 - uVar11" (identifier "iVar4") (- "-") (identifier "uVar11")) () ")"))) (< "<") (number_literal "0"))) () ")")) (goto_statement "goto code_r0x000205bb;" (goto "goto") (statement_identifier "code_r0x000205bb") (; ";"))) (expression_statement "iStack_50 = *(int *)(iStack_50 + 0x30);" (assignment_expression "iStack_50 = *(int *)(iStack_50 + 0x30)" (identifier "iStack_50") (= "=") (pointer_expression "*(int *)(iStack_50 + 0x30)" (* "*") (cast_expression "(int *)(iStack_50 + 0x30)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iStack_50 + 0x30)" (( "(") (binary_expression "iStack_50 + 0x30" (identifier "iStack_50") (+ "+") (number_literal "0x30")) () ")"))))) (; ";")) (expression_statement "uVar8 = uVar8 - *puVar1;" (assignment_expression "uVar8 = uVar8 - *puVar1" (identifier "uVar8") (= "=") (binary_expression "uVar8 - *puVar1" (identifier "uVar8") (- "-") (pointer_expression "*puVar1" (* "*") (identifier "puVar1")))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iStack_50 != 0)" (( "(") (binary_expression "iStack_50 != 0" (identifier "iStack_50") (!= "!=") (number_literal "0")) () ")")) (; ";"))) (labeled_statement "code_r0x00020226:\n  piVar6[1] = 0;" (statement_identifier "code_r0x00020226") (: ":") (expression_statement "piVar6[1] = 0;" (assignment_expression "piVar6[1] = 0" (subscript_expression "piVar6[1]" (identifier "piVar6") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0")) (; ";"))) (labeled_statement "code_r0x0002022d:\n  *piVar6 = 8;" (statement_identifier "code_r0x0002022d") (: ":") (expression_statement "*piVar6 = 8;" (assignment_expression "*piVar6 = 8" (pointer_expression "*piVar6" (* "*") (identifier "piVar6")) (= "=") (number_literal "8")) (; ";"))) (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}")))

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

int function_1(type_1 *exp,type_2 *pnbytes)

{
  type_2 *puVar1;
  type_3 *psVar2;
  type_3 *psVar3;
  type_4 subtype;
  int var_2;
  type_2 var_11;
  char var_15;
  type_5 *pfVar7;
  type_6 *var_3;
  type_2 var_17;
  type_6 *var_7;
  type_6 *var_4;
  type_2 var_18;
  int var_23;
  bool var_5;
  bool var_8;
  bool bVar16;
  type_6 bVar17;
  type_7 aVar18;
  type_8 *opcode;
  type_2 var_21;
  int var_26;
  type_2 var_12;
  int var_20;
  type_2 var_25;
  int var_24;
  type_2 local_3c;
  int var_27;
  char augmentation [10];
  
  bVar17 = 0;
  var_5 = false;
  bVar16 = var_1 == 0;
  if (!bVar16) {
    return 0;
  }
  var_2 = 9;
  var_7 = (type_6 *)now_seg->name;
  var_3 = var_7;
  var_4 = (type_6 *)".eh_frame";
  do {
    if (var_2 == 0) break;
    var_2 = var_2 + -1;
    var_5 = *var_3 < *var_4;
    bVar16 = *var_3 == *var_4;
    var_3 = var_3 + 1;
    var_4 = var_4 + 1;
  } while (bVar16);
  var_8 = false;
  var_5 = (!var_5 && !bVar16) == var_5;
  if (var_5) {
    var_8 = var_7[9] < 0x5f;
    var_5 = var_7[9] == 0x5f;
    pfVar7 = &function_1::eh_frame_data;
    if (var_5) goto LAB_0001fe74;
    if (function_1::eh_frame_data.state == var_6) goto _L15;
  }
  else {
LAB_0001fe74:
    var_2 = 0xc;
    var_3 = (type_6 *)".debug_frame";
    do {
      if (var_2 == 0) break;
      var_2 = var_2 + -1;
      var_8 = *var_7 < *var_3;
      var_5 = *var_7 == *var_3;
      var_7 = var_7 + 1;
      var_3 = var_3 + 1;
    } while (var_5);
    if ((!var_8 && !var_5) != var_8) {
      return 0;
    }
    pfVar7 = &function_1::debug_frame_data;
    if (function_1::debug_frame_data.state == var_6) goto _L15;
  }
  var_2 = var_9(pfVar7->size_end_sym);
  if (var_2 != 0) {
    pfVar7->state = var_6;
_L15:
    if ((*pnbytes == 4) &&
       (((exp->field_0x10 == '\x03' || (exp->field_0x10 == '\x14')) &&
        (var_2 = var_9(exp->X_add_symbol), var_2 == 0)))) {
      pfVar7->state = var_10;
      pfVar7->size_end_sym = exp->X_add_symbol;
      return 0;
    }
    return 0;
  }
  switch(pfVar7->state) {
  case var_6:
    goto _L15;
  case var_10:
  case state_saw_cie_offset:
    pfVar7->state = pfVar7->state + var_10;
    return 0;
  case state_saw_pc_begin:
    break;
  case state_seeing_aug_size:
    if (*pnbytes == 0xffffffff) {
      if (exp->field_0x10 != '\x02') goto LAB_0001ffb8;
      var_12 = (type_2)exp->X_add_number;
      pfVar7->state = state_skipping_aug;
      pfVar7->aug_size = var_12;
    }
    else {
      if ((*pnbytes != 1) || (exp->field_0x10 != '\x02')) {
LAB_0001ffb8:
        pfVar7->state = state_error;
        return 0;
      }
      var_11 = (type_2)exp->X_add_number;
      var_12 = (var_11 & 0x7f) << ((type_6)pfVar7->aug_shift & 0x1f) | pfVar7->aug_size;
      pfVar7->aug_size = var_12;
      pfVar7->aug_shift = pfVar7->aug_shift + 7;
      if ((char)var_11 < '\0') {
        return 0;
      }
      pfVar7->state = state_skipping_aug;
    }
    if (var_12 != 0) {
      return 0;
    }
    pfVar7->state = state_wait_loc4;
    return 0;
  case state_skipping_aug:
    if ((int)*pnbytes < 0) {
LAB_0001ff8e:
      pfVar7->state = state_error;
      return 0;
    }
    var_2 = pfVar7->aug_size - *pnbytes;
    pfVar7->aug_size = var_2;
    if (var_2 != 0) {
      if (-1 < var_2) {
        return 0;
      }
      goto LAB_0001ff8e;
    }
    goto LAB_00020108;
  case state_wait_loc4:
    if (*pnbytes != 1) {
      return 0;
    }
    if (exp->field_0x10 != '\x02') {
      return 0;
    }
    if ((int)exp->X_add_number != 4 || *(int *)((int)&exp->X_add_number + 4) != 0) {
      return 0;
    }
    var_13(1);
    pfVar7->state = state_saw_loc4;
    pfVar7->loc4_frag = frag_now;
    aVar18 = var_14();
    pfVar7->loc4_fix = (int)aVar18;
    return 0;
  case state_saw_loc4:
    pfVar7->state = state_wait_loc4;
    if (*pnbytes != 4) {
      return 0;
    }
    var_15 = exp->field_0x10;
    if (var_15 == '\x02') {
      var_11 = (type_2)exp->X_add_number;
      var_2 = *(int *)((int)&exp->X_add_number + 4);
      if ((int)(type_2)(0x3f < var_11) <= -var_2) {
        pfVar7->loc4_frag->fr_literal[pfVar7->loc4_fix] = (type_6)var_11 | 0x40;
        return 1;
      }
      if (-var_2 < (int)(type_2)(0xff < var_11)) {
        if (-var_2 < (int)(type_2)(0xffff < var_11)) {
          return 0;
        }
        pfVar7->loc4_frag->fr_literal[pfVar7->loc4_fix] = '\x03';
        *pnbytes = 2;
        return 0;
      }
      pfVar7->loc4_frag->fr_literal[pfVar7->loc4_fix] = '\x02';
      *pnbytes = 1;
      return 0;
    }
    if (var_15 == '\x14') {
      if ((pfVar7->cie_info).code_alignment != 1) {
        return 0;
      }
      opcode = pfVar7->loc4_frag;
      var_2 = pfVar7->loc4_fix;
      psVar3 = var_16(exp);
      subtype = 8;
    }
    else {
      if ((var_15 != '\v') && (var_15 != '\x0e')) {
        return 0;
      }
      var_11 = (pfVar7->cie_info).code_alignment;
      if (var_11 < 2) {
        return 0;
      }
      psVar3 = exp->X_add_symbol;
      if (psVar3->bsym == (type_9 *)0x0) {
        return 0;
      }
      psVar2 = exp->X_op_symbol;
      if (psVar2->bsym == (type_9 *)0x0) {
        return 0;
      }
      if ((psVar3->sy_value).field_0x10 != '\x14') {
        return 0;
      }
      if ((psVar2->sy_value).field_0x10 != '\x02') {
        return 0;
      }
      var_2 = *(int *)((int)&(psVar2->sy_value).X_add_number + 4);
      var_17 = (type_2)(psVar2->sy_value).X_add_number;
      if (var_15 != '\v') {
        var_18 = var_17 >> 5 & 1;
        var_2 = var_18 << ((type_6)var_17 & 0x1f);
        var_17 = (var_18 ^ 1) << ((type_6)var_17 & 0x1f);
      }
      if (var_2 != 0) {
        return 0;
      }
      if (var_11 != var_17) {
        return 0;
      }
      opcode = pfVar7->loc4_frag;
      var_2 = pfVar7->loc4_fix;
      psVar3 = var_16(&psVar3->sy_value);
      subtype = (pfVar7->cie_info).code_alignment << 3;
    }
    var_19(rs_cfa,4,0,subtype,psVar3,(type_10)var_2,(char *)opcode);
    return 1;
  default:
    return 0;
  }
  if (pfVar7->cie_info_ok != 0) goto LAB_0001ffd7;
                    /* WARNING: Load size is inaccurate */
  var_20 = **now_seg->userdata;
  if (var_20 != 0) {
    var_11 = *(type_2 *)(var_20 + 0x10);
    var_2 = *(int *)(var_20 + 0x14);
    if (-var_2 < (int)(type_2)(4 < var_11)) {
      var_21 = 4;
      var_23 = 0;
    }
    else {
      var_21 = 4;
      do {
        var_20 = *(int *)(var_20 + 0x30);
        var_21 = var_21 - var_11;
        if (var_20 == 0) goto LAB_00020226;
        var_11 = *(type_2 *)(var_20 + 0x10);
        var_2 = *(int *)(var_20 + 0x14);
        var_23 = (int)var_21 >> 0x1f;
      } while ((var_22(var_23,var_2) != var_22(var_23 - var_2,(type_2)(var_21 < var_11))) ==
               (int)((var_23 - var_2) - (type_2)(var_21 < var_11)) < 0);
    }
    var_2 = (var_2 - var_23) - (type_2)(var_11 < var_21);
    var_11 = (type_2)(3 < var_11 - var_21);
    var_5 = var_2 != 0 || (type_2)-var_2 < var_11;
    bVar16 = -var_11 == var_2;
    if (-var_2 < (int)var_11) {
      var_2 = 0xc;
      var_7 = (type_6 *)now_seg->name;
      var_3 = (type_6 *)".debug_frame";
      do {
        if (var_2 == 0) break;
        var_2 = var_2 + -1;
        var_5 = *var_7 < *var_3;
        bVar16 = *var_7 == *var_3;
        var_7 = var_7 + (type_2)bVar17 * -2 + 1;
        var_3 = var_3 + (type_2)bVar17 * -2 + 1;
      } while (bVar16);
      var_15 = -((!var_5 && !bVar16) == var_5);
      if ((((*(char *)(var_20 + 0x68 + var_21) == var_15) &&
           (*(char *)(var_20 + 0x69 + var_21) == var_15)) &&
          (*(char *)(var_20 + 0x6a + var_21) == var_15)) &&
         (*(char *)(var_20 + 0x6b + var_21) == var_15)) {
        var_21 = var_21 + 4;
        do {
          var_2 = (int)var_21 >> 0x1f;
          var_24 = *(int *)(var_20 + 0x14);
          var_25 = *(type_2 *)(var_20 + 0x10);
          if ((var_22(var_2,var_24) != var_22(var_2 - var_24,(type_2)(var_21 < var_25)))
              != (int)((var_2 - var_24) - (type_2)(var_21 < var_25)) < 0) {
            if (((int)(type_2)(var_25 != var_21) <=
                 (int)-((var_24 - var_2) - (type_2)(var_25 < var_21))) ||
               (*(char *)(var_20 + 0x68 + var_21) != '\x01')) goto LAB_00020226;
            var_11 = var_21 + 1;
            var_27 = 0;
            var_2 = (*now_seg->userdata)[4];
            goto LAB_0002044e;
          }
          var_21 = var_21 - var_25;
          var_20 = *(int *)(var_20 + 0x30);
        } while (var_20 != 0);
        pfVar7->cie_info_ok = 0;
        goto LAB_0002022d;
      }
    }
  }
  goto LAB_00020226;
LAB_0002044e:
  var_26 = (int)var_11 >> 0x1f;
  if ((var_22(var_26,var_24) != var_22(var_26 - var_24,(type_2)(var_11 < var_25))) !=
      (int)((var_26 - var_24) - (type_2)(var_11 < var_25)) < 0) {
    var_15 = *(char *)(var_20 + 0x68 + var_11);
    if (var_15 == '\0') {
LAB_00020509:
      var_11 = var_11 + 1;
      goto LAB_00020523;
    }
    var_21 = var_11;
    while( true ) {
      if (var_27 < 9) {
        augmentation[var_27] = var_15;
        var_27 = var_27 + 1;
      }
      var_11 = var_11 + 1;
      if (var_26 == var_24 + -1 + (type_2)(var_25 != 0) && var_21 == var_25 - 1) break;
      var_5 = 0xfffffffe < var_21;
      var_21 = var_21 + 1;
      var_26 = var_26 + (type_2)var_5;
      var_15 = *(char *)(var_20 + 0x68 + var_11);
      if (var_15 == '\0') goto LAB_00020509;
    }
    goto LAB_0002044e;
  }
  var_20 = *(int *)(var_20 + 0x30);
  if (var_20 == 0) goto LAB_00020226;
  var_24 = *(int *)(var_20 + 0x14);
  var_11 = var_11 - var_25;
  var_25 = *(type_2 *)(var_20 + 0x10);
  goto LAB_0002044e;
  while( true ) {
    var_20 = *(int *)(var_20 + 0x30);
    var_11 = var_11 - *puVar1;
    if (var_20 == 0) break;
LAB_00020523:
    puVar1 = (type_2 *)(var_20 + 0x10);
    var_17 = (type_2)(var_11 < *puVar1);
    var_23 = ((int)var_11 >> 0x1f) - *(int *)(var_20 + 0x14);
    if ((var_22((int)var_11 >> 0x1f,*(int *)(var_20 + 0x14)) != var_22(var_23,var_17)) !=
        (int)(var_23 - var_17) < 0) {
      augmentation[var_27] = '\0';
      if (augmentation[0] == '\0') goto LAB_000205bb;
      var_23 = var_28(augmentation,"eh");
      if (var_23 == 0) goto LAB_00020575;
      if (augmentation[0] == 'z') goto LAB_000205bb;
      break;
    }
  }
  goto LAB_00020226;
LAB_00020575:
  if (var_2 == 0) goto LAB_00020600;
  if ((*(int *)(var_2 + 4) == var_20) && (*(type_2 *)(var_2 + 8) == var_11)) {
    var_11 = var_11 + *(type_6 *)(var_2 + 2);
    goto LAB_000205a6;
  }
  var_2 = *(int *)(var_2 + 0x28);
  goto LAB_00020575;
LAB_000205bb:
  var_15 = *(char *)(var_20 + 0x68 + var_11);
  local_3c = 0;
  if (-1 < var_15) {
    local_3c = (int)var_15;
  }
  pfVar7->cie_info_ok = 1;
  (pfVar7->cie_info).code_alignment = local_3c;
  (pfVar7->cie_info).z_augmentation = (type_2)(augmentation[0] == 'z');
LAB_0001ffd7:
  if ((pfVar7->cie_info).z_augmentation != 0) {
    pfVar7->state = state_seeing_aug_size;
    pfVar7->aug_size = 0;
    pfVar7->aug_shift = 0;
    return 0;
  }
LAB_00020108:
  pfVar7->state = state_wait_loc4;
  return 0;
LAB_00020600:
  var_11 = var_11 + 4;
LAB_000205a6:
  do {
    puVar1 = (type_2 *)(var_20 + 0x10);
    var_17 = (type_2)(var_11 < *puVar1);
    var_2 = ((int)var_11 >> 0x1f) - *(int *)(var_20 + 0x14);
    if ((var_22((int)var_11 >> 0x1f,*(int *)(var_20 + 0x14)) != var_22(var_2,var_17)) !=
        (int)(var_2 - var_17) < 0) goto LAB_000205bb;
    var_20 = *(int *)(var_20 + 0x30);
    var_11 = var_11 - *puVar1;
  } while (var_20 != 0);
LAB_00020226:
  pfVar7->cie_info_ok = 0;
LAB_0002022d:
  pfVar7->state = state_error;
  return 0;
}


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

/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* WARNING: Type propagation algorithm not settling */

undefined4 MASKED(int *param_1,int *param_2)

{
  uint *puVar1;
  undefined4 uVar2;
  int iVar3;
  int iVar4;
  char cVar5;
  int *piVar6;
  byte *pbVar7;
  uint uVar8;
  byte *pbVar9;
  byte *pbVar10;
  uint uVar11;
  int iVar12;
  bool bVar13;
  bool bVar14;
  bool bVar15;
  byte bVar16;
  uint local_5c;
  int iStack_58;
  uint local_54;
  int iStack_50;
  uint uStack_44;
  int iStack_40;
  int iStack_3c;
  int iStack_38;
  char acStack_26 [18];
  undefined4 uStack_14;
  
  bVar16 = 0;
  uStack_14 = 0x1fe39;
  bVar13 = false;
  bVar15 = DAT_000897dc == 0;
  if (!bVar15) {
    return 0;
  }
  iVar4 = 9;
  pbVar9 = (byte *)*DAT_0008973c;
  pbVar7 = pbVar9;
  pbVar10 = (byte *)".eh_frame";
  do {
    if (iVar4 == 0) break;
    iVar4 = iVar4 + -1;
    bVar13 = *pbVar7 < *pbVar10;
    bVar15 = *pbVar7 == *pbVar10;
    pbVar7 = pbVar7 + 1;
    pbVar10 = pbVar10 + 1;
  } while (bVar15);
  bVar14 = false;
  bVar13 = (!bVar13 && !bVar15) == bVar13;
  if (bVar13) {
    bVar14 = pbVar9[9] < 0x5f;
    bVar13 = pbVar9[9] == 0x5f;
    piVar6 = &DAT_000889e0;
    if (bVar13) goto LAB_0001fe74;
    if (DAT_000889e0 == 0) goto LAB_0001fe99;
  }
  else {
LAB_0001fe74:
    iVar4 = 0xc;
    pbVar7 = (byte *)".debug_frame";
    do {
      if (iVar4 == 0) break;
      iVar4 = iVar4 + -1;
      bVar14 = *pbVar9 < *pbVar7;
      bVar13 = *pbVar9 == *pbVar7;
      pbVar9 = pbVar9 + 1;
      pbVar7 = pbVar7 + 1;
    } while (bVar13);
    if ((!bVar14 && !bVar13) != bVar14) {
      return 0;
    }
    piVar6 = &DAT_000889a0;
    if (DAT_000889a0 == 0) goto LAB_0001fe99;
  }
  iVar4 = FUN_000386c0(piVar6[4]);
  if (iVar4 != 0) {
    *piVar6 = 0;
LAB_0001fe99:
    if ((*param_2 == 4) &&
       ((((char)param_1[4] == '\x03' || ((char)param_1[4] == '\x14')) &&
        (iVar4 = FUN_000386c0(*param_1), iVar4 == 0)))) {
      *piVar6 = 1;
      piVar6[4] = *param_1;
      return 0;
    }
    return 0;
  }
  switch(*piVar6) {
  case 0:
    goto LAB_0001fe99;
  case 1:
  case 2:
    *piVar6 = *piVar6 + 1;
    return 0;
  case 3:
    break;
  case 4:
    if (*param_2 == -1) {
      if ((char)param_1[4] != '\x02') goto code_r0x0001ffb8;
      local_54 = param_1[2];
      *piVar6 = 5;
      piVar6[7] = local_54;
    }
    else {
      if ((*param_2 != 1) || ((char)param_1[4] != '\x02')) {
code_r0x0001ffb8:
        *piVar6 = 8;
        return 0;
      }
      uVar8 = param_1[2];
      local_54 = (uVar8 & 0x7f) << ((byte)piVar6[8] & 0x1f) | piVar6[7];
      piVar6[7] = local_54;
      piVar6[8] = piVar6[8] + 7;
      if ((char)uVar8 < '\0') {
        return 0;
      }
      *piVar6 = 5;
    }
    if (local_54 != 0) {
      return 0;
    }
    *piVar6 = 6;
    return 0;
  case 5:
    if (*param_2 < 0) {
code_r0x0001ff8e:
      *piVar6 = 8;
      return 0;
    }
    iVar4 = piVar6[7] - *param_2;
    piVar6[7] = iVar4;
    if (iVar4 != 0) {
      if (-1 < iVar4) {
        return 0;
      }
      goto code_r0x0001ff8e;
    }
    goto code_r0x00020108;
  case 6:
    if (*param_2 != 1) {
      return 0;
    }
    if ((char)param_1[4] != '\x02') {
      return 0;
    }
    if (param_1[2] != 4 || param_1[3] != 0) {
      return 0;
    }
    FUN_000249b0(1);
    *piVar6 = 7;
    piVar6[5] = DAT_000898a0;
    iVar4 = FUN_00024dc0();
    piVar6[6] = iVar4;
    return 0;
  case 7:
    *piVar6 = 6;
    if (*param_2 != 4) {
      return 0;
    }
    cVar5 = (char)param_1[4];
    if (cVar5 == '\x02') {
      uVar8 = param_1[2];
      iVar4 = param_1[3];
      if ((int)(uint)(0x3f < uVar8) <= -iVar4) {
        *(byte *)(piVar6[5] + 0x68 + piVar6[6]) = (byte)uVar8 | 0x40;
        return 1;
      }
      if (-iVar4 < (int)(uint)(0xff < uVar8)) {
        if (-iVar4 < (int)(uint)(0xffff < uVar8)) {
          return 0;
        }
        *(undefined1 *)(piVar6[5] + 0x68 + piVar6[6]) = 3;
        *param_2 = 2;
        return 0;
      }
      *(undefined1 *)(piVar6[5] + 0x68 + piVar6[6]) = 2;
      *param_2 = 1;
      return 0;
    }
    if (cVar5 == '\x14') {
      if (piVar6[2] != 1) {
        return 0;
      }
      iVar4 = piVar6[5];
      iVar12 = piVar6[6];
      uVar2 = FUN_00021220(param_1);
      iVar3 = 8;
    }
    else {
      if ((cVar5 != '\v') && (cVar5 != '\x0e')) {
        return 0;
      }
      if ((uint)piVar6[2] < 2) {
        return 0;
      }
      iVar3 = *param_1;
      if (*(int *)(iVar3 + 4) == 0) {
        return 0;
      }
      iVar4 = param_1[1];
      if (*(int *)(iVar4 + 4) == 0) {
        return 0;
      }
      if (*(char *)(iVar3 + 0x18) != '\x14') {
        return 0;
      }
      if (*(char *)(iVar4 + 0x18) != '\x02') {
        return 0;
      }
      iVar12 = *(int *)(iVar4 + 0x14);
      uVar8 = *(uint *)(iVar4 + 0x10);
      if (cVar5 != '\v') {
        uVar11 = uVar8 >> 5 & 1;
        iVar12 = uVar11 << ((byte)uVar8 & 0x1f);
        uVar8 = (uVar11 ^ 1) << ((byte)uVar8 & 0x1f);
      }
      if (iVar12 != 0) {
        return 0;
      }
      if (piVar6[2] != uVar8) {
        return 0;
      }
      iVar4 = piVar6[5];
      iVar12 = piVar6[6];
      uVar2 = FUN_00021220(iVar3 + 8);
      iVar3 = piVar6[2] << 3;
    }
    FUN_00024b60(0xc,4,0,iVar3,uVar2,iVar12,iVar12 >> 0x1f,iVar4);
    return 1;
  default:
    return 0;
  }
  if (piVar6[1] != 0) goto code_r0x0001ffd7;
  iStack_50 = **(int **)DAT_0008973c[0x20];
  if (iStack_50 != 0) {
    uVar8 = *(uint *)(iStack_50 + 0x10);
    iVar4 = *(int *)(iStack_50 + 0x14);
    if (-iVar4 < (int)(uint)(4 < uVar8)) {
      local_5c = 4;
      iVar12 = 0;
    }
    else {
      local_5c = 4;
      do {
        iStack_50 = *(int *)(iStack_50 + 0x30);
        local_5c = local_5c - uVar8;
        if (iStack_50 == 0) goto code_r0x00020226;
        uVar8 = *(uint *)(iStack_50 + 0x10);
        iVar4 = *(int *)(iStack_50 + 0x14);
        iVar12 = (int)local_5c >> 0x1f;
      } while ((SBORROW4(iVar12,iVar4) != SBORROW4(iVar12 - iVar4,(uint)(local_5c < uVar8))) ==
               (int)((iVar12 - iVar4) - (uint)(local_5c < uVar8)) < 0);
    }
    iVar4 = (iVar4 - iVar12) - (uint)(uVar8 < local_5c);
    uVar8 = (uint)(3 < uVar8 - local_5c);
    bVar13 = iVar4 != 0 || (uint)-iVar4 < uVar8;
    bVar15 = -uVar8 == iVar4;
    if (-iVar4 < (int)uVar8) {
      iVar4 = 0xc;
      pbVar9 = (byte *)*DAT_0008973c;
      pbVar7 = (byte *)".debug_frame";
      do {
        if (iVar4 == 0) break;
        iVar4 = iVar4 + -1;
        bVar13 = *pbVar9 < *pbVar7;
        bVar15 = *pbVar9 == *pbVar7;
        pbVar9 = pbVar9 + (uint)bVar16 * -2 + 1;
        pbVar7 = pbVar7 + (uint)bVar16 * -2 + 1;
      } while (bVar15);
      cVar5 = -((!bVar13 && !bVar15) == bVar13);
      if ((((*(char *)(iStack_50 + 0x68 + local_5c) == cVar5) &&
           (*(char *)(iStack_50 + 0x69 + local_5c) == cVar5)) &&
          (*(char *)(iStack_50 + 0x6a + local_5c) == cVar5)) &&
         (*(char *)(iStack_50 + 0x6b + local_5c) == cVar5)) {
        local_5c = local_5c + 4;
        do {
          iVar4 = (int)local_5c >> 0x1f;
          iStack_40 = *(int *)(iStack_50 + 0x14);
          uStack_44 = *(uint *)(iStack_50 + 0x10);
          if ((SBORROW4(iVar4,iStack_40) != SBORROW4(iVar4 - iStack_40,(uint)(local_5c < uStack_44))
              ) != (int)((iVar4 - iStack_40) - (uint)(local_5c < uStack_44)) < 0) {
            if (((int)(uint)(uStack_44 != local_5c) <=
                 (int)-((iStack_40 - iVar4) - (uint)(uStack_44 < local_5c))) ||
               (*(char *)(iStack_50 + 0x68 + local_5c) != '\x01')) goto code_r0x00020226;
            uVar8 = local_5c + 1;
            iStack_38 = 0;
            iVar4 = (*(int **)DAT_0008973c[0x20])[4];
            goto code_r0x0002044e;
          }
          local_5c = local_5c - uStack_44;
          iStack_50 = *(int *)(iStack_50 + 0x30);
        } while (iStack_50 != 0);
        piVar6[1] = 0;
        goto code_r0x0002022d;
      }
    }
  }
  goto code_r0x00020226;
code_r0x0002044e:
  iStack_58 = (int)uVar8 >> 0x1f;
  if ((SBORROW4(iStack_58,iStack_40) != SBORROW4(iStack_58 - iStack_40,(uint)(uVar8 < uStack_44)))
      != (int)((iStack_58 - iStack_40) - (uint)(uVar8 < uStack_44)) < 0) {
    cVar5 = *(char *)(iStack_50 + 0x68 + uVar8);
    if (cVar5 == '\0') {
code_r0x00020509:
      uVar8 = uVar8 + 1;
      goto code_r0x00020523;
    }
    local_5c = uVar8;
    while( true ) {
      if (iStack_38 < 9) {
        acStack_26[iStack_38] = cVar5;
        iStack_38 = iStack_38 + 1;
      }
      uVar8 = uVar8 + 1;
      if (iStack_58 == iStack_40 + -1 + (uint)(uStack_44 != 0) && local_5c == uStack_44 - 1) break;
      bVar13 = 0xfffffffe < local_5c;
      local_5c = local_5c + 1;
      iStack_58 = iStack_58 + (uint)bVar13;
      cVar5 = *(char *)(iStack_50 + 0x68 + uVar8);
      if (cVar5 == '\0') goto code_r0x00020509;
    }
    goto code_r0x0002044e;
  }
  iStack_50 = *(int *)(iStack_50 + 0x30);
  if (iStack_50 == 0) goto code_r0x00020226;
  iStack_40 = *(int *)(iStack_50 + 0x14);
  uVar8 = uVar8 - uStack_44;
  uStack_44 = *(uint *)(iStack_50 + 0x10);
  goto code_r0x0002044e;
  while( true ) {
    iStack_50 = *(int *)(iStack_50 + 0x30);
    uVar8 = uVar8 - *puVar1;
    if (iStack_50 == 0) break;
code_r0x00020523:
    puVar1 = (uint *)(iStack_50 + 0x10);
    uVar11 = (uint)(uVar8 < *puVar1);
    iVar12 = ((int)uVar8 >> 0x1f) - *(int *)(iStack_50 + 0x14);
    if ((SBORROW4((int)uVar8 >> 0x1f,*(int *)(iStack_50 + 0x14)) != SBORROW4(iVar12,uVar11)) !=
        (int)(iVar12 - uVar11) < 0) {
      acStack_26[iStack_38] = '\0';
      if (acStack_26[0] == '\0') goto code_r0x000205bb;
      iVar12 = strcmp(acStack_26,"eh");
      if (iVar12 == 0) goto code_r0x00020575;
      if (acStack_26[0] == 'z') goto code_r0x000205bb;
      break;
    }
  }
  goto code_r0x00020226;
code_r0x00020575:
  if (iVar4 == 0) goto code_r0x00020600;
  if ((*(int *)(iVar4 + 4) == iStack_50) && (*(uint *)(iVar4 + 8) == uVar8)) {
    uVar8 = uVar8 + *(byte *)(iVar4 + 2);
    goto code_r0x000205a6;
  }
  iVar4 = *(int *)(iVar4 + 0x28);
  goto code_r0x00020575;
code_r0x000205bb:
  cVar5 = *(char *)(iStack_50 + 0x68 + uVar8);
  iStack_3c = 0;
  if (-1 < cVar5) {
    iStack_3c = (int)cVar5;
  }
  piVar6[1] = 1;
  piVar6[2] = iStack_3c;
  piVar6[3] = (uint)(acStack_26[0] == 'z');
code_r0x0001ffd7:
  if (piVar6[3] != 0) {
    *piVar6 = 4;
    piVar6[7] = 0;
    piVar6[8] = 0;
    return 0;
  }
code_r0x00020108:
  *piVar6 = 6;
  return 0;
code_r0x00020600:
  uVar8 = uVar8 + 4;
code_r0x000205a6:
  do {
    puVar1 = (uint *)(iStack_50 + 0x10);
    uVar11 = (uint)(uVar8 < *puVar1);
    iVar4 = ((int)uVar8 >> 0x1f) - *(int *)(iStack_50 + 0x14);
    if ((SBORROW4((int)uVar8 >> 0x1f,*(int *)(iStack_50 + 0x14)) != SBORROW4(iVar4,uVar11)) !=
        (int)(iVar4 - uVar11) < 0) goto code_r0x000205bb;
    iStack_50 = *(int *)(iStack_50 + 0x30);
    uVar8 = uVar8 - *puVar1;
  } while (iStack_50 != 0);
code_r0x00020226:
  piVar6[1] = 0;
code_r0x0002022d:
  *piVar6 = 8;
  return 0;
}

