
/* WARNING: Enum "anon_enum_32": Some values do not have unique names */

void clipme(Terminal *term,pos top,pos bottom,int rect,int desel)

{
  bool bVar1;
  bool bVar2;
  int *piVar3;
  int iVar4;
  int iVar5;
  ushort *puVar6;
  uint chr;
  int iVar7;
  termline *ptVar8;
  Context ctx;
  int iVar9;
  uint uVar10;
  int iVar11;
  uint uVar12;
  unicode_data *puVar13;
  Terminal *pTVar14;
  wchar_t *pwVar15;
  ulong uVar16;
  int in_a3;
  char cVar17;
  int iVar18;
  int iVar19;
  int iVar20;
  int iVar21;
  int iVar22;
  termchar *ptVar23;
  wchar_t *pwVar24;
  termchar *ptVar25;
  int in_t9;
  code *pcVar26;
  code *pcVar27;
  int local_d4;
  int iStack_cc;
  int iStack_c8;
  int iStack_c0;
  clip_workbuf buf;
  wchar_t wbuf [4];
  wchar_t cbuf [16];
  char buf_1 [4];
  
  piVar3 = *(int **)(in_t9 + 0x7e14c);
  iVar4 = *piVar3;
  buf.buflen = 0x1400;
  buf.bufpos = 0;
  buf.textbuf = (wchar_t *)(**(code **)(in_t9 + 0x7ce08))(0x1400,4);
  buf.textptr = buf.textbuf;
  buf.attrbuf = (int *)(**(code **)(in_t9 + 0x7ce08))(buf.buflen,4);
  iVar9 = *(int *)(in_t9 + 0x7d5f4);
  iVar20 = desel;
  if (top.x == 0) {
    iVar20 = 0;
  }
  iVar5 = *(int *)(in_t9 + 0x7d5f4);
  local_d4 = desel;
  iStack_cc = rect;
  buf.attrptr = buf.attrbuf;
LAB_000945cc:
  bVar1 = iStack_cc < in_a3;
  if ((bVar1) || ((iStack_cc == in_a3 && (local_d4 < top.y)))) {
    puVar6 = (ushort *)(*(code *)(iVar9 + 0x2a9c))(term,iStack_cc,0x1595,0);
    iStack_c0 = term->cols;
    if ((*puVar6 & 0x10) == 0) {
      if (iStack_c0 != 0) {
        iVar11 = *(int *)(puVar6 + 10) + iStack_c0 * 0xc;
        do {
          if ((((*(uint *)(iVar11 + -0xc) != 0x20) &&
               ((*(uint *)(iVar11 + -0xc) & 0xfffffcff) != 0xd820)) || (*(int *)(iVar11 + -4) != 0))
             || (iStack_c0 <= local_d4)) break;
          iStack_c0 = iStack_c0 + -1;
          iVar11 = iVar11 + -0xc;
        } while (iStack_c0 != 0);
      }
      if (bVar1) {
        iStack_c8 = iStack_cc;
        bVar2 = true;
      }
      else if (iStack_cc == in_a3) {
        bVar2 = iStack_c0 < top.y;
        iStack_c8 = iStack_cc;
      }
      else {
        bVar2 = false;
        iStack_c8 = iStack_cc;
      }
    }
    else if ((*puVar6 & 0x20) == 0) {
      bVar2 = false;
      iStack_c8 = iStack_cc;
    }
    else if (iStack_c0 == 0) {
      bVar2 = false;
      iStack_c8 = iStack_cc + -1;
    }
    else {
      bVar2 = false;
      iStack_c8 = iStack_cc;
      iStack_c0 = iStack_c0 + -1;
    }
    iVar11 = local_d4;
    if ((top.x != 0) && (bVar2 = bVar1, top.y < iStack_c0)) {
      iStack_c0 = top.y;
    }
joined_r0x00094680:
    do {
      iVar22 = iVar11;
      if (((!bVar1) && ((iStack_cc != in_a3 || (top.y <= iVar22)))) ||
         ((iStack_c8 <= iStack_cc && ((iStack_c8 != iStack_cc || (iStack_c0 <= iVar22))))))
      goto LAB_00094994;
      chr = *(uint *)(*(int *)(puVar6 + 10) + iVar22 * 0xc);
      if (chr != 0xdfff) {
        uVar12 = chr & 0xffffff00;
        iVar19 = iVar22 * 0xc;
        iVar21 = *(int *)(*(int *)(puVar6 + 10) + iVar19 + 4);
        uVar10 = chr & 0xff;
        local_d4 = iVar22;
        if (uVar12 == 0xd900) goto LAB_00094804;
        do {
          if (uVar12 == 0xda00) {
            chr = term->ucsdata->unitab_scoacs[uVar10];
            uVar12 = chr & 0xffffff00;
            uVar10 = chr & 0xff;
          }
          else if (uVar12 == 0xd800) {
            puVar13 = term->ucsdata;
            goto LAB_0009491c;
          }
joined_r0x00094728:
          if (uVar12 == 0xf000) {
            iVar11 = uVar10 + 0x404;
LAB_00094740:
            chr = term->ucsdata->unitab_scoacs[iVar11 + -4];
            uVar10 = chr & 0xff;
          }
          else if (uVar12 == 0xf100) {
            iVar11 = uVar10 + 0x204;
            goto LAB_00094740;
          }
          iVar11 = local_d4 + 1;
          cbuf[1] = 0;
          iVar18 = iVar11;
          cbuf[0] = chr;
          if (((chr & 0xfffffe00) == 0xf000) && ((chr & 0xe0) != 0)) {
            if (uVar10 != 0x7f) {
              cVar17 = (char)chr;
              iVar7 = (**(code **)(in_t9 + 0x7d674))(term->ucsdata->font_codepage,(int)cVar17);
              buf_1[0] = cVar17;
              if (iVar7 == 0) {
                iVar7 = (**(code **)(in_t9 + 0x7d0e8))
                                  (term->ucsdata->font_codepage,0,buf_1,1,wbuf,4);
              }
              else {
                buf_1[1] = (char)*(undefined4 *)(*(int *)(puVar6 + 10) + iVar11 * 0xc);
                iVar7 = (**(code **)(in_t9 + 0x7d0e8))
                                  (term->ucsdata->font_codepage,0,buf_1,2,wbuf,4);
                iVar18 = local_d4 + 2;
                local_d4 = iVar11;
              }
              if (0 < iVar7) {
                (**(code **)(in_t9 + 0x7db94))(cbuf,wbuf,iVar7 * 4,0x40);
                cbuf[iVar7] = 0;
                chr = cbuf[0];
              }
              goto LAB_00094778;
            }
            clip_addchar(&buf,chr,iVar21);
          }
          else {
LAB_00094778:
            iVar11 = iVar18;
            if (chr != 0) {
              uVar10 = cbuf[1];
              pwVar15 = cbuf;
              while( true ) {
                clip_addchar(&buf,chr,iVar21);
                if (uVar10 == 0) break;
                chr = uVar10;
                uVar10 = pwVar15[2];
                pwVar15 = pwVar15 + 1;
              }
            }
          }
          iVar21 = *(int *)(puVar6 + 10);
          iVar19 = *(int *)(iVar21 + iVar19 + 8);
          iVar22 = iVar22 + iVar19;
          if (iVar19 == 0) goto joined_r0x00094680;
          iVar19 = iVar22 * 0xc;
          chr = *(uint *)(iVar21 + iVar22 * 0xc);
          iVar21 = *(int *)(iVar21 + iVar19 + 4);
          uVar12 = chr & 0xffffff00;
          uVar10 = chr & 0xff;
        } while (uVar12 != 0xd900);
LAB_00094804:
        puVar13 = term->ucsdata;
        if (term->rawcnp == 0) {
          chr = puVar13->unitab_xterm[uVar10];
          uVar12 = chr & 0xffffff00;
          uVar10 = chr & 0xff;
        }
        else {
LAB_0009491c:
          chr = puVar13->unitab_line[uVar10];
          uVar12 = chr & 0xffffff00;
          uVar10 = chr & 0xff;
        }
        goto joined_r0x00094728;
      }
      iVar11 = iVar22 + 1;
    } while( true );
  }
  pwVar15 = buf.textbuf;
  (**(code **)(in_t9 + 0x7d678))(term->frontend,buf.textbuf,buf.attrbuf,buf.bufpos,bottom.y);
  (**(code **)(in_t9 + 0x7ce0c))(buf.textbuf);
  pTVar14 = (Terminal *)buf.attrbuf;
  (**(code **)(in_t9 + 0x7ce0c))();
  if (iVar4 == *piVar3) {
    return;
  }
  pcVar26 = *(code **)(in_t9 + 0x7dde4);
  (*pcVar26)();
  iVar20 = 1;
  if ((int)pwVar15 < 0) {
    iVar20 = -1;
    pwVar15 = (wchar_t *)-(int)pwVar15;
  }
  iVar4 = pTVar14->cols;
  iVar9 = (pTVar14->curs).x;
  iVar11 = (pTVar14->curs).y;
  iVar5 = (pTVar14->selend).y;
  pwVar24 = (wchar_t *)(iVar4 - iVar9);
  if ((int)pwVar24 <= (int)pwVar15) {
    pwVar15 = pwVar24;
  }
  iVar22 = (int)pwVar24 - (int)pwVar15;
  if (((iVar11 < iVar5) || ((iVar11 == iVar5 && (iVar9 < (pTVar14->selend).x)))) &&
     ((iVar19 = (pTVar14->selstart).y, iVar19 < iVar11 ||
      ((iVar11 == iVar19 && ((pTVar14->selstart).x < iVar4)))))) {
    iVar18 = iVar9 + (int)pwVar15;
    iVar21 = iVar4;
    if (iVar20 == 1) {
      iVar21 = iVar4 - (int)pwVar15;
      iVar18 = iVar9;
    }
    if ((iVar11 < iVar19) || ((iVar11 == iVar19 && (iVar18 <= (pTVar14->selstart).x)))) {
      if (iVar5 < iVar11) {
        iVar5 = (pTVar14->selend).x;
      }
      else if ((iVar11 != iVar5) || (iVar5 = (pTVar14->selend).x, iVar21 < iVar5))
      goto LAB_00094e08;
      iVar19 = iVar20 * (int)pwVar15 + (pTVar14->selstart).x;
      iVar5 = iVar20 * (int)pwVar15 + iVar5;
      (pTVar14->selstart).x = iVar19;
      (pTVar14->selend).x = iVar5;
      if (iVar19 < iVar9) goto LAB_000950ac;
      if (iVar19 < iVar4) {
        if (iVar9 < iVar5) {
          if (iVar4 < iVar5) {
            iVar11 = *(int *)(pcVar26 + 0x7c740) + 0x5830;
            (**(code **)(pcVar26 + 0x7d398))
                      (*(int *)(pcVar26 + 0x7c740) + 0x5a84,iVar11,0x9e0,
                       *(int *)(pcVar26 + 0x7c740) + 0x6200);
            goto LAB_00094ebc;
          }
          goto LAB_00094c48;
        }
        (**(code **)(pcVar26 + 0x7d398))
                  (*(int *)(pcVar26 + 0x7c740) + 0x5a64,*(int *)(pcVar26 + 0x7c740) + 0x5830,0x9df,
                   *(int *)(pcVar26 + 0x7c740) + 0x6200);
      }
      (**(code **)(pcVar26 + 0x7d398))
                (*(int *)(pcVar26 + 0x7c740) + 0x5a44,*(int *)(pcVar26 + 0x7c740) + 0x5830,0x9de,
                 *(int *)(pcVar26 + 0x7c740) + 0x6200);
LAB_000950ac:
      iVar20 = 0x9dd;
      pcVar27 = *(code **)(pcVar26 + 0x7d398);
      pTVar14 = (Terminal *)(*(int *)(pcVar26 + 0x7c740) + 0x5a20);
      (*pcVar27)(pTVar14,*(int *)(pcVar26 + 0x7c740) + 0x5830,0x9dd,
                 *(int *)(pcVar26 + 0x7c740) + 0x6200);
      pcVar26 = *(code **)(pcVar27 + 0x7ca90);
      pTVar14->window_update_pending = 0;
      ctx = (Context)(*pcVar26)(pTVar14->frontend);
      if (ctx != (Context)0x0) {
        if (pTVar14->seen_disp_event != 0) {
          if (pTVar14->scroll_on_disp != 0) {
            pTVar14->disptop = 0;
            pTVar14->seen_disp_event = 0;
          }
          update_sbar(pTVar14);
        }
        do_paint(pTVar14,ctx,iVar20);
        (**(code **)(pcVar27 + 0x7ca94))
                  (pTVar14->frontend,(pTVar14->curs).x,(pTVar14->curs).y - pTVar14->disptop);
                    /* WARNING: Could not recover jumptable at 0x0009518c. Too many branches */
                    /* WARNING: Treating indirect jump as call */
        (**(code **)(pcVar27 + 0x7ca98))(ctx);
        return;
      }
      return;
    }
LAB_00094e08:
    pTVar14->selstate = ADDRTYPE_UNSPEC;
    (pTVar14->selend).y = 0;
    (pTVar14->selend).x = 0;
    (pTVar14->selstart).y = 0;
    (pTVar14->selstart).x = 0;
  }
LAB_00094c48:
  if ((0 < iVar9) && (iVar9 <= iVar4)) {
    check_boundary(pTVar14,iVar9,iVar11);
    iVar11 = (pTVar14->curs).y;
  }
  if (iVar20 != -1) {
    iVar20 = iVar22 + -1;
    ptVar8 = lineptr(pTVar14,iVar11,0x9eb,1);
    if (iVar22 != 0) {
      iVar4 = *(int *)(pcVar26 + 0x7cf20);
      do {
        iVar9 = iVar20 + (pTVar14->curs).x;
        iVar11 = ((int)pwVar15 + iVar9) * 0xc;
        ptVar23 = ptVar8->chars + iVar9;
        ptVar25 = ptVar8->chars + (int)pwVar15 + iVar9;
        (*(code *)(iVar4 + 0xab0))(ptVar8,(iVar11 >> 2) * -0x55555555);
        iVar5 = ptVar23->cc_next;
        uVar16 = ptVar23->attr;
        ptVar25->chr = ptVar23->chr;
        ptVar25->attr = uVar16;
        ptVar25->cc_next = iVar5;
        if (ptVar23->cc_next != 0) {
          ptVar25->cc_next = (iVar11 + iVar9 * -0xc >> 2) * 0x55555555 + ptVar23->cc_next;
        }
        iVar20 = iVar20 + -1;
        ptVar23->cc_next = 0;
      } while (iVar20 != -1);
    }
    iVar20 = (int)pwVar15 + -1;
    if (pwVar15 == (wchar_t *)0x0) {
      return;
    }
    do {
      iVar4 = iVar20 + (pTVar14->curs).x;
      iVar20 = iVar20 + -1;
      copy_termchar(ptVar8,iVar4,&pTVar14->erase_char);
    } while (iVar20 != -1);
    return;
  }
LAB_00094ebc:
  iVar20 = (int)pwVar15 + (pTVar14->curs).x;
  if ((0 < iVar20) && (iVar20 <= pTVar14->cols)) {
    check_boundary(pTVar14,iVar20,iVar11);
    iVar11 = (pTVar14->curs).y;
  }
  ptVar8 = lineptr(pTVar14,iVar11,0x9eb,1);
  if (0 < iVar22) {
    iVar20 = *(int *)(pcVar26 + 0x7cf20);
    iVar4 = 0;
    do {
      iVar9 = iVar4 + (pTVar14->curs).x;
      ptVar23 = ptVar8->chars + iVar9 + (int)pwVar15;
      ptVar25 = ptVar8->chars + iVar9;
      (*(code *)(iVar20 + 0xab0))(ptVar8,(iVar9 * 0xc >> 2) * -0x55555555);
      iVar5 = ptVar23->cc_next;
      uVar16 = ptVar23->attr;
      ptVar25->chr = ptVar23->chr;
      ptVar25->attr = uVar16;
      ptVar25->cc_next = iVar5;
      if (ptVar23->cc_next != 0) {
        ptVar25->cc_next =
             (iVar9 * 0xc + (iVar9 + (int)pwVar15) * -0xc >> 2) * 0x55555555 + ptVar23->cc_next;
      }
      iVar4 = iVar4 + 1;
      ptVar23->cc_next = 0;
    } while (iVar22 != iVar4);
  }
  if (pwVar15 == (wchar_t *)0x0) {
    return;
  }
  iVar20 = iVar22;
  do {
    iVar4 = iVar20 + 1;
    copy_termchar(ptVar8,iVar20 + (pTVar14->curs).x,&pTVar14->erase_char);
    iVar20 = iVar4;
  } while (iVar4 != (int)pwVar15 + iVar22);
  return;
LAB_00094994:
  if (bVar2) {
    clip_addchar(&buf,10,0);
  }
  if (*(int *)(puVar6 + 6) != 0) {
    (*(code *)(iVar5 + 0x1270))(puVar6);
  }
  iStack_cc = iStack_cc + 1;
  local_d4 = iVar20;
  goto LAB_000945cc;
}



void FUN_000944e4(int param_1,int param_2,int param_3,int param_4,int param_5,int param_6,
                 undefined4 param_7)

{
  bool bVar1;
  bool bVar2;
  code *pcVar3;
  ushort *puVar4;
  uint uVar5;
  int iVar6;
  code *pcVar7;
  uint uVar8;
  int iVar9;
  int iVar10;
  uint uVar11;
  int iVar12;
  undefined4 uVar13;
  int iVar14;
  char cVar16;
  int iVar15;
  int iVar17;
  int iVar18;
  int iVar19;
  undefined4 uVar20;
  int iVar21;
  undefined4 *puVar22;
  uint *puVar23;
  int iVar24;
  undefined4 *puVar25;
  undefined *puVar26;
  int local_d4;
  int local_cc;
  int local_c8;
  int local_c0;
  undefined4 local_98;
  undefined4 local_94;
  int local_90;
  int local_8c;
  int local_88;
  int local_84;
  undefined1 auStack_80 [16];
  uint local_70 [16];
  char local_30;
  undefined1 local_2f;
  int local_2c;
  
  puVar26 = PTR___stack_chk_guard_00112630;
  local_2c = *(int *)PTR___stack_chk_guard_00112630;
  local_98 = 0x1400;
  local_94 = 0;
  local_90 = (*(code *)PTR_safemalloc_001112ec)(0x1400,4);
  local_8c = local_90;
  local_88 = (*(code *)PTR_safemalloc_001112ec)(local_98,4);
  pcVar7 = (code *)(PTR_LAB_00111ad8 + 0x2a9c);
  iVar19 = param_3;
  if (param_6 == 0) {
    iVar19 = 0;
  }
  pcVar3 = (code *)(PTR_LAB_00111ad8 + 0x1270);
  local_d4 = param_3;
  local_cc = param_2;
  local_84 = local_88;
LAB_000945cc:
  bVar1 = local_cc < param_4;
  if ((bVar1) || ((local_cc == param_4 && (local_d4 < param_5)))) {
    puVar4 = (ushort *)(*pcVar7)(param_1,local_cc,0x1595,0);
    local_c0 = *(int *)(param_1 + 300);
    if ((*puVar4 & 0x10) == 0) {
      if (local_c0 != 0) {
        iVar9 = *(int *)(puVar4 + 10) + local_c0 * 0xc;
        do {
          if ((((*(uint *)(iVar9 + -0xc) != 0x20) &&
               ((*(uint *)(iVar9 + -0xc) & 0xfffffcff) != 0xd820)) || (*(int *)(iVar9 + -4) != 0))
             || (local_c0 <= local_d4)) break;
          local_c0 = local_c0 + -1;
          iVar9 = iVar9 + -0xc;
        } while (local_c0 != 0);
      }
      if (bVar1) {
        local_c8 = local_cc;
        bVar2 = true;
      }
      else if (local_cc == param_4) {
        bVar2 = local_c0 < param_5;
        local_c8 = local_cc;
      }
      else {
        bVar2 = false;
        local_c8 = local_cc;
      }
    }
    else if ((*puVar4 & 0x20) == 0) {
      bVar2 = false;
      local_c8 = local_cc;
    }
    else if (local_c0 == 0) {
      bVar2 = false;
      local_c8 = local_cc + -1;
    }
    else {
      bVar2 = false;
      local_c8 = local_cc;
      local_c0 = local_c0 + -1;
    }
    iVar9 = local_d4;
    if ((param_6 != 0) && (bVar2 = bVar1, param_5 < local_c0)) {
      local_c0 = param_5;
    }
joined_r0x00094680:
    do {
      iVar21 = iVar9;
      if (((!bVar1) && ((local_cc != param_4 || (param_5 <= iVar21)))) ||
         ((local_c8 <= local_cc && ((local_c8 != local_cc || (local_c0 <= iVar21))))))
      goto LAB_00094994;
      uVar5 = *(uint *)(*(int *)(puVar4 + 10) + iVar21 * 0xc);
      if (uVar5 != 0xdfff) {
        uVar11 = uVar5 & 0xffffff00;
        iVar18 = iVar21 * 0xc;
        uVar20 = *(undefined4 *)(*(int *)(puVar4 + 10) + iVar18 + 4);
        uVar8 = uVar5 & 0xff;
        local_d4 = iVar21;
        if (uVar11 == 0xd900) goto LAB_00094804;
        do {
          if (uVar11 == 0xda00) {
            uVar5 = *(uint *)(*(int *)(param_1 + 0x1090) + (uVar8 + 4) * 4);
            uVar11 = uVar5 & 0xffffff00;
            uVar8 = uVar5 & 0xff;
          }
          else if (uVar11 == 0xd800) {
            iVar9 = *(int *)(param_1 + 0x1090);
            goto LAB_0009491c;
          }
joined_r0x00094728:
          if (uVar11 == 0xf000) {
            iVar9 = uVar8 + 0x404;
LAB_00094740:
            uVar5 = *(uint *)(*(int *)(param_1 + 0x1090) + iVar9 * 4);
            uVar8 = uVar5 & 0xff;
          }
          else if (uVar11 == 0xf100) {
            iVar9 = uVar8 + 0x204;
            goto LAB_00094740;
          }
          iVar9 = local_d4 + 1;
          local_70[1] = 0;
          iVar10 = iVar9;
          local_70[0] = uVar5;
          if (((uVar5 & 0xfffffe00) == 0xf000) && ((uVar5 & 0xe0) != 0)) {
            if (uVar8 != 0x7f) {
              cVar16 = (char)uVar5;
              iVar6 = (*(code *)PTR_is_dbcs_leadbyte_00111b58)
                                (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),(int)cVar16);
              local_30 = cVar16;
              if (iVar6 == 0) {
                iVar6 = (*(code *)PTR_mb_to_wc_001115cc)
                                  (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),0,&local_30,1,
                                   auStack_80,4);
              }
              else {
                local_2f = (undefined1)*(undefined4 *)(*(int *)(puVar4 + 10) + iVar9 * 0xc);
                iVar6 = (*(code *)PTR_mb_to_wc_001115cc)
                                  (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),0,&local_30,2,
                                   auStack_80,4);
                iVar10 = local_d4 + 2;
                local_d4 = iVar9;
              }
              if (0 < iVar6) {
                (*(code *)PTR___memcpy_chk_00112078)(local_70,auStack_80,iVar6 * 4,0x40);
                local_70[iVar6] = 0;
                uVar5 = local_70[0];
              }
              goto LAB_00094778;
            }
            FUN_000901cc(&local_98,uVar5,uVar20);
          }
          else {
LAB_00094778:
            iVar9 = iVar10;
            if (uVar5 != 0) {
              uVar8 = local_70[1];
              puVar23 = local_70;
              while( true ) {
                FUN_000901cc(&local_98,uVar5,uVar20);
                if (uVar8 == 0) break;
                uVar5 = uVar8;
                uVar8 = puVar23[2];
                puVar23 = puVar23 + 1;
              }
            }
          }
          iVar10 = *(int *)(puVar4 + 10);
          iVar18 = *(int *)(iVar10 + iVar18 + 8);
          iVar21 = iVar21 + iVar18;
          if (iVar18 == 0) goto joined_r0x00094680;
          iVar18 = iVar21 * 0xc;
          uVar5 = *(uint *)(iVar10 + iVar21 * 0xc);
          uVar20 = *(undefined4 *)(iVar10 + iVar18 + 4);
          uVar11 = uVar5 & 0xffffff00;
          uVar8 = uVar5 & 0xff;
        } while (uVar11 != 0xd900);
LAB_00094804:
        iVar9 = *(int *)(param_1 + 0x1090);
        if (*(int *)(param_1 + 0x1158) == 0) {
          uVar5 = *(uint *)(iVar9 + (uVar8 + 0x304) * 4);
          uVar11 = uVar5 & 0xffffff00;
          uVar8 = uVar5 & 0xff;
        }
        else {
LAB_0009491c:
          uVar5 = *(uint *)(iVar9 + (uVar8 + 0x104) * 4);
          uVar11 = uVar5 & 0xffffff00;
          uVar8 = uVar5 & 0xff;
        }
        goto joined_r0x00094728;
      }
      iVar9 = iVar21 + 1;
    } while( true );
  }
  iVar19 = local_90;
  (*(code *)PTR_write_clip_00111b5c)
            (*(undefined4 *)(param_1 + 0x1088),local_90,local_88,local_94,param_7);
  (*(code *)PTR_safefree_001112f0)(local_90);
  iVar9 = local_88;
  (*(code *)PTR_safefree_001112f0)();
  if (local_2c == *(int *)puVar26) {
    return;
  }
  puVar26 = PTR___stack_chk_fail_001122c8;
  (*(code *)PTR___stack_chk_fail_001122c8)();
  iVar21 = 1;
  if (iVar19 < 0) {
    iVar21 = -1;
    iVar19 = -iVar19;
  }
  iVar18 = *(int *)(iVar9 + 300);
  iVar10 = *(int *)(iVar9 + 0x70);
  iVar12 = *(int *)(iVar9 + 0x6c);
  iVar6 = *(int *)(iVar9 + 0xe5c);
  iVar24 = iVar18 - iVar10;
  if (iVar24 <= iVar19) {
    iVar19 = iVar24;
  }
  iVar24 = iVar24 - iVar19;
  if (((iVar6 <= iVar12) && ((iVar12 != iVar6 || (*(int *)(iVar9 + 0xe60) <= iVar10)))) ||
     ((iVar14 = *(int *)(iVar9 + 0xe54), iVar12 <= iVar14 &&
      ((iVar12 != iVar14 || (iVar18 <= *(int *)(iVar9 + 0xe58))))))) goto LAB_00094c48;
  iVar17 = iVar10 + iVar19;
  iVar15 = iVar18;
  if (iVar21 == 1) {
    iVar15 = iVar18 - iVar19;
    iVar17 = iVar10;
  }
  if ((iVar12 < iVar14) || ((iVar12 == iVar14 && (iVar17 <= *(int *)(iVar9 + 0xe58))))) {
    if (iVar6 < iVar12) {
      iVar6 = *(int *)(iVar9 + 0xe60);
    }
    else if ((iVar12 != iVar6) || (iVar6 = *(int *)(iVar9 + 0xe60), iVar15 < iVar6))
    goto LAB_00094e08;
    iVar14 = iVar21 * iVar19 + *(int *)(iVar9 + 0xe58);
    iVar6 = iVar21 * iVar19 + iVar6;
    *(int *)(iVar9 + 0xe58) = iVar14;
    *(int *)(iVar9 + 0xe60) = iVar6;
    if (iVar14 < iVar10) {
      (**(code **)(puVar26 + 0x7d398))
                (*(int *)(puVar26 + 0x7c740) + 0x5a20,*(int *)(puVar26 + 0x7c740) + 0x5830,0x9dd,
                 *(int *)(puVar26 + 0x7c740) + 0x6200);
      return;
    }
    if (iVar18 <= iVar14) {
      (**(code **)(puVar26 + 0x7d398))
                (*(int *)(puVar26 + 0x7c740) + 0x5a44,*(int *)(puVar26 + 0x7c740) + 0x5830,0x9de,
                 *(int *)(puVar26 + 0x7c740) + 0x6200);
      return;
    }
    if (iVar6 <= iVar10) {
      (**(code **)(puVar26 + 0x7d398))
                (*(int *)(puVar26 + 0x7c740) + 0x5a64,*(int *)(puVar26 + 0x7c740) + 0x5830,0x9df,
                 *(int *)(puVar26 + 0x7c740) + 0x6200);
      return;
    }
    if (iVar18 < iVar6) {
      (**(code **)(puVar26 + 0x7d398))
                (*(int *)(puVar26 + 0x7c740) + 0x5a84,*(int *)(puVar26 + 0x7c740) + 0x5830,0x9e0,
                 *(int *)(puVar26 + 0x7c740) + 0x6200);
      return;
    }
  }
  else {
LAB_00094e08:
    *(undefined4 *)(iVar9 + 0xe48) = 0;
    *(undefined4 *)(iVar9 + 0xe5c) = 0;
    *(undefined4 *)(iVar9 + 0xe60) = 0;
    *(undefined4 *)(iVar9 + 0xe54) = 0;
    *(undefined4 *)(iVar9 + 0xe58) = 0;
  }
LAB_00094c48:
  if ((0 < iVar10) && (iVar10 <= iVar18)) {
    FUN_00092d1c(iVar9,iVar10,iVar12);
    iVar12 = *(int *)(iVar9 + 0x6c);
  }
  if (iVar21 == -1) {
    iVar21 = iVar19 + *(int *)(iVar9 + 0x70);
    if ((0 < iVar21) && (iVar21 <= *(int *)(iVar9 + 300))) {
      FUN_00092d1c(iVar9,iVar21,iVar12,1);
      iVar12 = *(int *)(iVar9 + 0x6c);
    }
    iVar21 = FUN_00092a9c(iVar9,iVar12,0x9eb,1);
    if (0 < iVar24) {
      iVar18 = *(int *)(puVar26 + 0x7cf20);
      iVar10 = 0;
      do {
        iVar6 = iVar10 + *(int *)(iVar9 + 0x70);
        iVar12 = iVar6 + iVar19;
        iVar6 = iVar6 * 0xc;
        puVar22 = (undefined4 *)(*(int *)(iVar21 + 0x14) + iVar12 * 0xc);
        puVar25 = (undefined4 *)(*(int *)(iVar21 + 0x14) + iVar6);
        (*(code *)(iVar18 + 0xab0))(iVar21,(iVar6 >> 2) * -0x55555555);
        uVar20 = puVar22[2];
        uVar13 = puVar22[1];
        *puVar25 = *puVar22;
        puVar25[1] = uVar13;
        puVar25[2] = uVar20;
        if (puVar22[2] != 0) {
          puVar25[2] = (iVar6 + iVar12 * -0xc >> 2) * 0x55555555 + puVar22[2];
        }
        iVar10 = iVar10 + 1;
        puVar22[2] = 0;
      } while (iVar24 != iVar10);
    }
    if (iVar19 != 0) {
      iVar18 = iVar24;
      do {
        iVar10 = iVar18 + 1;
        FUN_00091070(iVar21,iVar18 + *(int *)(iVar9 + 0x70),iVar9 + 0x54);
        iVar18 = iVar10;
      } while (iVar10 != iVar19 + iVar24);
      return;
    }
  }
  else {
    iVar18 = iVar24 + -1;
    iVar21 = FUN_00092a9c(iVar9,iVar12,0x9eb,1);
    if (iVar24 != 0) {
      iVar10 = *(int *)(puVar26 + 0x7cf20);
      do {
        iVar6 = iVar18 + *(int *)(iVar9 + 0x70);
        iVar12 = (iVar19 + iVar6) * 0xc;
        puVar22 = (undefined4 *)(*(int *)(iVar21 + 0x14) + iVar6 * 0xc);
        puVar25 = (undefined4 *)(*(int *)(iVar21 + 0x14) + iVar12);
        (*(code *)(iVar10 + 0xab0))(iVar21,(iVar12 >> 2) * -0x55555555);
        uVar20 = puVar22[2];
        uVar13 = puVar22[1];
        *puVar25 = *puVar22;
        puVar25[1] = uVar13;
        puVar25[2] = uVar20;
        if (puVar22[2] != 0) {
          puVar25[2] = (iVar12 + iVar6 * -0xc >> 2) * 0x55555555 + puVar22[2];
        }
        iVar18 = iVar18 + -1;
        puVar22[2] = 0;
      } while (iVar18 != -1);
    }
    iVar18 = iVar19 + -1;
    if (iVar19 != 0) {
      do {
        iVar19 = iVar18 + *(int *)(iVar9 + 0x70);
        iVar18 = iVar18 + -1;
        FUN_00091070(iVar21,iVar19,iVar9 + 0x54);
      } while (iVar18 != -1);
    }
  }
  return;
LAB_00094994:
  if (bVar2) {
    FUN_000901cc(&local_98,10,0);
  }
  if (*(int *)(puVar4 + 6) != 0) {
    (*pcVar3)(puVar4);
  }
  local_cc = local_cc + 1;
  local_d4 = iVar19;
  goto LAB_000945cc;
}


lui gp,0x8
addiu gp,gp,0x4dcc
addu gp,gp,t9
lw v0,-0x6c80(gp)
addiu sp,sp,-0xf8
lw t9,-0x7fc4(gp)
lw v1,0x108(sp)
sw v0,0x54(sp)
sw s8,0xf0(sp)
or s8,a0,zero
sw s0,0xd0(sp)
li a0,0x1400
sw a1,0xfc(sp)
or s0,a1,zero
lw v0,0x0(v0)
li a1,0x4
sw gp,0x18(sp)
sw v1,0x44(sp)
sw v0,0xcc(sp)
li v0,0x1400
sw ra,0xf4(sp)
sw s6,0xe8(sp)
sw s1,0xd4(sp)
or s1,a2,zero
sw a2,0x24(sp)
sw a3,0x48(sp)
sw a2,0x100(sp)
sw a3,0x104(sp)
sw s7,0xec(sp)
sw s5,0xe4(sp)
sw s4,0xe0(sp)
sw s3,0xdc(sp)
sw s2,0xd8(sp)
sw v0,0x60(sp)
jalr t9
_sw zero,0x64(sp)
li a1,0x4
lw gp,0x18(sp)
lw a0,0x60(sp)
sw v0,0x68(sp)
lw t9,-0x7fc4(gp)
jalr t9
_sw v0,0x6c(sp)
lw gp,0x18(sp)
sw v0,0x70(sp)
sw v0,0x74(sp)
sw s0,0x2c(sp)
lw v0,-0x77d8(gp)
lw v1,-0x77d8(gp)
addiu s6,v0,0x1cc
lw v0,0x10c(sp)
addiu v1,v1,0x2a9c
movz s1,zero,v0
lw v0,-0x77d8(gp)
sw v1,0x58(sp)
sw s1,0x50(sp)
addiu v0,v0,0x1270
sw v0,0x5c(sp)
lw v1,0x2c(sp)
lw a0,0x48(sp)
slt v0,v1,a0
bne v0,zero,0x000945f8
_sw v0,0x34(sp)
bne v1,a0,0x00094af8
_lw v0,0x24(sp)
lw v1,0x44(sp)
slt v0,v0,v1
beq v0,zero,0x00094afc
_lw v0,0x110(sp)
lw a1,0x2c(sp)
or a3,zero,zero
lw t9,0x58(sp)
li a2,0x1595
jalr t9
_or a0,s8,zero
lw v1,0x12c(s8)
lw gp,0x18(sp)
sw v0,0x28(sp)
sw v1,0x38(sp)
lhu v0,0x0(v0)
andi v1,v0,0x10
beq v1,zero,0x00094a5c
_andi v0,v0,0x20
beq v0,zero,0x00094a28
_lw v0,0x2c(sp)
lw v0,0x38(sp)
bne v0,zero,0x00094ae4
_addiu v0,v0,-0x1
lw v0,0x2c(sp)
sw zero,0x4c(sp)
addiu v0,v0,-0x1
sw v0,0x30(sp)
lw v0,0x10c(sp)
beq v0,zero,0x0009467c
_addiu s7,sp,0x60
lw v1,0x38(sp)
lw a0,0x44(sp)
slt v0,a0,v1
movn v1,a0,v0
lw v0,0x34(sp)
sw v1,0x38(sp)
sw v0,0x4c(sp)
lw v0,0x34(sp)
beq v0,zero,0x00094974
_lw v0,0x2c(sp)
lw v1,0x30(sp)
lw a0,0x2c(sp)
slt v0,a0,v1
bne v0,zero,0x000946b4
_lw a1,0x24(sp)
bne v1,a0,0x00094990
_lw v0,0x38(sp)
lw v1,0x24(sp)
slt v0,v1,v0
beq v0,zero,0x00094994
_lw v0,0x4c(sp)
ori a0,zero,0xdfff
lw v0,0x28(sp)
sll s0,a1,0x1
lw v1,0x14(v0)
addu v0,s0,a1
sll v0,v0,0x2
addu v0,v1,v0
lw v0,0x0(v0)
beq v0,a0,0x000949dc
_lw s2,0x24(sp)
li a1,-0x100
addiu s5,sp,0x88
ori a2,zero,0xd900
addu s0,s0,s2
sw s5,0x40(sp)
and a0,v0,a1
sll s0,s0,0x2
or t0,v0,zero
addu v1,v1,s0
lw s1,0x4(v1)
beq a0,a2,0x00094804
_andi v1,v0,0xff
ori a2,zero,0xda00
beq a0,a2,0x00094940
_nop
ori a1,zero,0xd800
beq a0,a1,0x00094918
_nop
ori a1,zero,0xf000
beq a0,a1,0x00094834
_nop
ori a1,zero,0xf100
bne a0,a1,0x0009475c
_lw a0,0x24(sp)
addiu v1,v1,0x204
lw v0,0x1090(s8)
sll v1,v1,0x2
addu v1,v0,v1
lw t0,0x0(v1)
or v0,t0,zero
andi v1,t0,0xff
lw a0,0x24(sp)
sw t0,0x88(sp)
addiu s3,a0,0x1
li a0,-0x200
and v0,v0,a0
ori a0,zero,0xf000
beq v0,a0,0x0009483c
_sw zero,0x8c(sp)
beq t0,zero,0x000947b0
_or a1,t0,zero
lw s4,0x8c(sp)
b 0x00094794
_addiu s5,sp,0x88
or a1,s4,zero
lw s4,0x4(s5)
or a2,s1,zero
or t9,s6,zero
bal 0x000901cc
_or a0,s7,zero
addiu s5,s5,0x4
bne s4,zero,0x0009478c
_lw gp,0x18(sp)
lw v0,0x28(sp)
lw v1,0x14(v0)
addu s0,v1,s0
lw v0,0x8(s0)
beq v0,zero,0x00094964
_addu s2,s2,v0
li a1,-0x100
sll s0,s2,0x1
ori a2,zero,0xd900
addu v0,s0,s2
addu s0,s0,s2
sll v0,v0,0x2
sll s0,s0,0x2
addu v0,v1,v0
addu v1,v1,s0
lw v0,0x0(v0)
lw s1,0x4(v1)
and a0,v0,a1
or t0,v0,zero
bne a0,a2,0x0009470c
_andi v1,v0,0xff
lw v0,0x1158(s8)
bne v0,zero,0x0009491c
_lw a0,0x1090(s8)
addiu v0,v1,0x304
sll v0,v0,0x2
addu v0,a0,v0
lw v0,0x0(v0)
and a0,v0,a1
ori a1,zero,0xf000
or t0,v0,zero
bne a0,a1,0x00094730
_andi v1,v0,0xff
b 0x00094740
_addiu v1,v1,0x404
andi v0,t0,0xe0
beq v0,zero,0x00094778
_li v0,0x7f
beq v1,v0,0x000949c4
_or a2,s1,zero
lw v0,0x1090(s8)
seb s4,t0
lw t9,-0x7758(gp)
or a1,s4,zero
sw t0,0x3c(sp)
jalr t9
_lw a0,0x8(v0)
lw gp,0x18(sp)
beq v0,zero,0x000949e8
_lw t0,0x3c(sp)
lw v1,0x28(sp)
sll v0,s3,0x1
lw a0,0x1090(s8)
addiu s5,sp,0x78
addu v0,v0,s3
lw t9,-0x7ce4(gp)
sb s4,0xc8(sp)
li a3,0x2
lw a1,0x14(v1)
sll v0,v0,0x2
lw a0,0x8(a0)
li v1,0x4
addiu a2,sp,0xc8
addu v0,a1,v0
or a1,zero,zero
lw v0,0x0(v0)
sw v1,0x14(sp)
sw s5,0x10(sp)
jalr t9
_sb v0,0xc9(sp)
lw v1,0x24(sp)
lw gp,0x18(sp)
lw t0,0x3c(sp)
addiu v1,v1,0x2
sw s3,0x24(sp)
or s3,v1,zero
blez v0,0x00094778
_sll s4,v0,0x2
lw t9,-0x7238(gp)
lw a0,0x40(sp)
li a3,0x40
or a2,s4,zero
jalr t9
_or a1,s5,zero
addiu v0,sp,0xd0
lw gp,0x18(sp)
addu v0,v0,s4
sw zero,-0x48(v0)
b 0x00094778
_lw t0,0x88(sp)
lw a0,0x1090(s8)
addiu v1,v1,0x104
sll v1,v1,0x2
addu v1,a0,v1
li a0,-0x100
lw t0,0x0(v1)
or v0,t0,zero
and a0,t0,a0
b 0x00094724
_andi v1,t0,0xff
addiu v1,v1,0x4
lw v0,0x1090(s8)
sll v1,v1,0x2
addu v1,v0,v1
lw v0,0x0(v1)
or t0,v0,zero
and a0,v0,a1
b 0x00094724
_andi v1,v0,0xff
lw v0,0x34(sp)
bne v0,zero,0x00094688
_sw s3,0x24(sp)
lw v0,0x2c(sp)
lw v1,0x48(sp)
bne v0,v1,0x00094990
_lw v0,0x24(sp)
lw v1,0x44(sp)
slt v0,v0,v1
bne v0,zero,0x0009468c
_lw v1,0x30(sp)
lw v0,0x4c(sp)
bne v0,zero,0x00094a44
_or a2,zero,zero
lw v0,0x28(sp)
lw v0,0xc(v0)
bne v0,zero,0x00094a34
_lw t9,0x5c(sp)
lw v0,0x2c(sp)
addiu v0,v0,0x1
sw v0,0x2c(sp)
lw v0,0x50(sp)
b 0x000945cc
_sw v0,0x24(sp)
or a1,t0,zero
or t9,s6,zero
bal 0x000901cc
_or a0,s7,zero
b 0x000947b0
_lw gp,0x18(sp)
addiu v0,a1,0x1
b 0x0009467c
_sw v0,0x24(sp)
lw v0,0x1090(s8)
addiu s5,sp,0x78
lw t9,-0x7ce4(gp)
li a3,0x1
addiu a2,sp,0xc8
sw t0,0x3c(sp)
or a1,zero,zero
sb s4,0xc8(sp)
lw a0,0x8(v0)
li v0,0x4
sw s5,0x10(sp)
jalr t9
_sw v0,0x14(sp)
lw gp,0x18(sp)
b 0x000948e0
_lw t0,0x3c(sp)
sw zero,0x4c(sp)
b 0x00094654
_sw v0,0x30(sp)
jalr t9
_lw a0,0x28(sp)
b 0x000949ac
_lw gp,0x18(sp)
li a1,0xa
or t9,s6,zero
bal 0x000901cc
_addiu a0,sp,0x60
b 0x0009499c
_lw gp,0x18(sp)
lw a3,0x38(sp)
beq a3,zero,0x00094ac8
_lw v0,0x28(sp)
sll v1,a3,0x1
li a0,0x20
addu v1,v1,a3
li a2,-0x301
lw v0,0x14(v0)
sll v1,v1,0x2
ori a1,zero,0xd820
b 0x00094aa4
_addu v0,v0,v1
slt v1,v1,a3
beq v1,zero,0x00094ac4
_nop
addiu a3,a3,-0x1
beq a3,zero,0x00094ac4
_addiu v0,v0,-0xc
lw v1,-0xc(v0)
beq v1,a0,0x00094ab8
_and v1,v1,a2
bne v1,a1,0x00094ac4
_nop
lw v1,-0x4(v0)
beq v1,zero,0x00094a8c
_lw v1,0x24(sp)
sw a3,0x38(sp)
lw v0,0x34(sp)
beq v0,zero,0x00094b7c
_lw v0,0x2c(sp)
sw v0,0x30(sp)
li v0,0x1
b 0x00094654
_sw v0,0x4c(sp)
sw zero,0x4c(sp)
sw v0,0x38(sp)
lw v0,0x2c(sp)
b 0x00094654
_sw v0,0x30(sp)
lw v0,0x110(sp)
lw t9,-0x7754(gp)
lw a3,0x64(sp)
lw a2,0x70(sp)
lw a1,0x68(sp)
lw a0,0x1088(s8)
jalr t9
_sw v0,0x10(sp)
lw gp,0x18(sp)
lw t9,-0x7fc0(gp)
jalr t9
_lw a0,0x68(sp)
lw gp,0x18(sp)
lw t9,-0x7fc0(gp)
jalr t9
_lw a0,0x70(sp)
lw v0,0x54(sp)
lw v1,0xcc(sp)
lw gp,0x18(sp)
lw v0,0x0(v0)
bne v1,v0,0x00094bac
_lw ra,0xf4(sp)
lw s8,0xf0(sp)
lw s7,0xec(sp)
lw s6,0xe8(sp)
lw s5,0xe4(sp)
lw s4,0xe0(sp)
lw s3,0xdc(sp)
lw s2,0xd8(sp)
lw s1,0xd4(sp)
lw s0,0xd0(sp)
jr ra
_addiu sp,sp,0xf8
lw v1,0x48(sp)
beq v0,v1,0x00094b94
_lw v1,0x38(sp)
sw zero,0x4c(sp)
b 0x00094654
_sw v0,0x30(sp)
lw v0,0x44(sp)
slt v0,v1,v0
sw v0,0x4c(sp)
lw v0,0x2c(sp)
b 0x00094654
_sw v0,0x30(sp)
lw t9,-0x6fe8(gp)
jalr t9
_nop
(translation_unit "void FUN_000944e4(int param_1,int param_2,int param_3,int param_4,int param_5,int param_6,\n                 undefined4 param_7)\n\n{\n  bool bVar1;\n  bool bVar2;\n  code *pcVar3;\n  ushort *puVar4;\n  uint uVar5;\n  int iVar6;\n  code *pcVar7;\n  uint uVar8;\n  int iVar9;\n  int iVar10;\n  uint uVar11;\n  int iVar12;\n  undefined4 uVar13;\n  int iVar14;\n  char cVar16;\n  int iVar15;\n  int iVar17;\n  int iVar18;\n  int iVar19;\n  undefined4 uVar20;\n  int iVar21;\n  undefined4 *puVar22;\n  uint *puVar23;\n  int iVar24;\n  undefined4 *puVar25;\n  undefined *puVar26;\n  int local_d4;\n  int local_cc;\n  int local_c8;\n  int local_c0;\n  undefined4 local_98;\n  undefined4 local_94;\n  int local_90;\n  int local_8c;\n  int local_88;\n  int local_84;\n  undefined1 auStack_80 [16];\n  uint local_70 [16];\n  char local_30;\n  undefined1 local_2f;\n  int local_2c;\n  \n  puVar26 = PTR___stack_chk_guard_00112630;\n  local_2c = *(int *)PTR___stack_chk_guard_00112630;\n  local_98 = 0x1400;\n  local_94 = 0;\n  local_90 = (*(code *)PTR_safemalloc_001112ec)(0x1400,4);\n  local_8c = local_90;\n  local_88 = (*(code *)PTR_safemalloc_001112ec)(local_98,4);\n  pcVar7 = (code *)(PTR_LAB_00111ad8 + 0x2a9c);\n  iVar19 = param_3;\n  if (param_6 == 0) {\n    iVar19 = 0;\n  }\n  pcVar3 = (code *)(PTR_LAB_00111ad8 + 0x1270);\n  local_d4 = param_3;\n  local_cc = param_2;\n  local_84 = local_88;\nLAB_000945cc:\n  bVar1 = local_cc < param_4;\n  if ((bVar1) || ((local_cc == param_4 && (local_d4 < param_5)))) {\n    puVar4 = (ushort *)(*pcVar7)(param_1,local_cc,0x1595,0);\n    local_c0 = *(int *)(param_1 + 300);\n    if ((*puVar4 & 0x10) == 0) {\n      if (local_c0 != 0) {\n        iVar9 = *(int *)(puVar4 + 10) + local_c0 * 0xc;\n        do {\n          if ((((*(uint *)(iVar9 + -0xc) != 0x20) &&\n               ((*(uint *)(iVar9 + -0xc) & 0xfffffcff) != 0xd820)) || (*(int *)(iVar9 + -4) != 0))\n             || (local_c0 <= local_d4)) break;\n          local_c0 = local_c0 + -1;\n          iVar9 = iVar9 + -0xc;\n        } while (local_c0 != 0);\n      }\n      if (bVar1) {\n        local_c8 = local_cc;\n        bVar2 = true;\n      }\n      else if (local_cc == param_4) {\n        bVar2 = local_c0 < param_5;\n        local_c8 = local_cc;\n      }\n      else {\n        bVar2 = false;\n        local_c8 = local_cc;\n      }\n    }\n    else if ((*puVar4 & 0x20) == 0) {\n      bVar2 = false;\n      local_c8 = local_cc;\n    }\n    else if (local_c0 == 0) {\n      bVar2 = false;\n      local_c8 = local_cc + -1;\n    }\n    else {\n      bVar2 = false;\n      local_c8 = local_cc;\n      local_c0 = local_c0 + -1;\n    }\n    iVar9 = local_d4;\n    if ((param_6 != 0) && (bVar2 = bVar1, param_5 < local_c0)) {\n      local_c0 = param_5;\n    }\njoined_r0x00094680:\n    do {\n      iVar21 = iVar9;\n      if (((!bVar1) && ((local_cc != param_4 || (param_5 <= iVar21)))) ||\n         ((local_c8 <= local_cc && ((local_c8 != local_cc || (local_c0 <= iVar21))))))\n      goto LAB_00094994;\n      uVar5 = *(uint *)(*(int *)(puVar4 + 10) + iVar21 * 0xc);\n      if (uVar5 != 0xdfff) {\n        uVar11 = uVar5 & 0xffffff00;\n        iVar18 = iVar21 * 0xc;\n        uVar20 = *(undefined4 *)(*(int *)(puVar4 + 10) + iVar18 + 4);\n        uVar8 = uVar5 & 0xff;\n        local_d4 = iVar21;\n        if (uVar11 == 0xd900) goto LAB_00094804;\n        do {\n          if (uVar11 == 0xda00) {\n            uVar5 = *(uint *)(*(int *)(param_1 + 0x1090) + (uVar8 + 4) * 4);\n            uVar11 = uVar5 & 0xffffff00;\n            uVar8 = uVar5 & 0xff;\n          }\n          else if (uVar11 == 0xd800) {\n            iVar9 = *(int *)(param_1 + 0x1090);\n            goto LAB_0009491c;\n          }\njoined_r0x00094728:\n          if (uVar11 == 0xf000) {\n            iVar9 = uVar8 + 0x404;\nLAB_00094740:\n            uVar5 = *(uint *)(*(int *)(param_1 + 0x1090) + iVar9 * 4);\n            uVar8 = uVar5 & 0xff;\n          }\n          else if (uVar11 == 0xf100) {\n            iVar9 = uVar8 + 0x204;\n            goto LAB_00094740;\n          }\n          iVar9 = local_d4 + 1;\n          local_70[1] = 0;\n          iVar10 = iVar9;\n          local_70[0] = uVar5;\n          if (((uVar5 & 0xfffffe00) == 0xf000) && ((uVar5 & 0xe0) != 0)) {\n            if (uVar8 != 0x7f) {\n              cVar16 = (char)uVar5;\n              iVar6 = (*(code *)PTR_is_dbcs_leadbyte_00111b58)\n                                (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),(int)cVar16);\n              local_30 = cVar16;\n              if (iVar6 == 0) {\n                iVar6 = (*(code *)PTR_mb_to_wc_001115cc)\n                                  (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),0,&local_30,1,\n                                   auStack_80,4);\n              }\n              else {\n                local_2f = (undefined1)*(undefined4 *)(*(int *)(puVar4 + 10) + iVar9 * 0xc);\n                iVar6 = (*(code *)PTR_mb_to_wc_001115cc)\n                                  (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),0,&local_30,2,\n                                   auStack_80,4);\n                iVar10 = local_d4 + 2;\n                local_d4 = iVar9;\n              }\n              if (0 < iVar6) {\n                (*(code *)PTR___memcpy_chk_00112078)(local_70,auStack_80,iVar6 * 4,0x40);\n                local_70[iVar6] = 0;\n                uVar5 = local_70[0];\n              }\n              goto LAB_00094778;\n            }\n            FUN_000901cc(&local_98,uVar5,uVar20);\n          }\n          else {\nLAB_00094778:\n            iVar9 = iVar10;\n            if (uVar5 != 0) {\n              uVar8 = local_70[1];\n              puVar23 = local_70;\n              while( true ) {\n                FUN_000901cc(&local_98,uVar5,uVar20);\n                if (uVar8 == 0) break;\n                uVar5 = uVar8;\n                uVar8 = puVar23[2];\n                puVar23 = puVar23 + 1;\n              }\n            }\n          }\n          iVar10 = *(int *)(puVar4 + 10);\n          iVar18 = *(int *)(iVar10 + iVar18 + 8);\n          iVar21 = iVar21 + iVar18;\n          if (iVar18 == 0) goto joined_r0x00094680;\n          iVar18 = iVar21 * 0xc;\n          uVar5 = *(uint *)(iVar10 + iVar21 * 0xc);\n          uVar20 = *(undefined4 *)(iVar10 + iVar18 + 4);\n          uVar11 = uVar5 & 0xffffff00;\n          uVar8 = uVar5 & 0xff;\n        } while (uVar11 != 0xd900);\nLAB_00094804:\n        iVar9 = *(int *)(param_1 + 0x1090);\n        if (*(int *)(param_1 + 0x1158) == 0) {\n          uVar5 = *(uint *)(iVar9 + (uVar8 + 0x304) * 4);\n          uVar11 = uVar5 & 0xffffff00;\n          uVar8 = uVar5 & 0xff;\n        }\n        else {\nLAB_0009491c:\n          uVar5 = *(uint *)(iVar9 + (uVar8 + 0x104) * 4);\n          uVar11 = uVar5 & 0xffffff00;\n          uVar8 = uVar5 & 0xff;\n        }\n        goto joined_r0x00094728;\n      }\n      iVar9 = iVar21 + 1;\n    } while( true );\n  }\n  iVar19 = local_90;\n  (*(code *)PTR_write_clip_00111b5c)\n            (*(undefined4 *)(param_1 + 0x1088),local_90,local_88,local_94,param_7);\n  (*(code *)PTR_safefree_001112f0)(local_90);\n  iVar9 = local_88;\n  (*(code *)PTR_safefree_001112f0)();\n  if (local_2c == *(int *)puVar26) {\n    return;\n  }\n  puVar26 = PTR___stack_chk_fail_001122c8;\n  (*(code *)PTR___stack_chk_fail_001122c8)();\n  iVar21 = 1;\n  if (iVar19 < 0) {\n    iVar21 = -1;\n    iVar19 = -iVar19;\n  }\n  iVar18 = *(int *)(iVar9 + 300);\n  iVar10 = *(int *)(iVar9 + 0x70);\n  iVar12 = *(int *)(iVar9 + 0x6c);\n  iVar6 = *(int *)(iVar9 + 0xe5c);\n  iVar24 = iVar18 - iVar10;\n  if (iVar24 <= iVar19) {\n    iVar19 = iVar24;\n  }\n  iVar24 = iVar24 - iVar19;\n  if (((iVar6 <= iVar12) && ((iVar12 != iVar6 || (*(int *)(iVar9 + 0xe60) <= iVar10)))) ||\n     ((iVar14 = *(int *)(iVar9 + 0xe54), iVar12 <= iVar14 &&\n      ((iVar12 != iVar14 || (iVar18 <= *(int *)(iVar9 + 0xe58))))))) goto LAB_00094c48;\n  iVar17 = iVar10 + iVar19;\n  iVar15 = iVar18;\n  if (iVar21 == 1) {\n    iVar15 = iVar18 - iVar19;\n    iVar17 = iVar10;\n  }\n  if ((iVar12 < iVar14) || ((iVar12 == iVar14 && (iVar17 <= *(int *)(iVar9 + 0xe58))))) {\n    if (iVar6 < iVar12) {\n      iVar6 = *(int *)(iVar9 + 0xe60);\n    }\n    else if ((iVar12 != iVar6) || (iVar6 = *(int *)(iVar9 + 0xe60), iVar15 < iVar6))\n    goto LAB_00094e08;\n    iVar14 = iVar21 * iVar19 + *(int *)(iVar9 + 0xe58);\n    iVar6 = iVar21 * iVar19 + iVar6;\n    *(int *)(iVar9 + 0xe58) = iVar14;\n    *(int *)(iVar9 + 0xe60) = iVar6;\n    if (iVar14 < iVar10) {\n      (**(code **)(puVar26 + 0x7d398))\n                (*(int *)(puVar26 + 0x7c740) + 0x5a20,*(int *)(puVar26 + 0x7c740) + 0x5830,0x9dd,\n                 *(int *)(puVar26 + 0x7c740) + 0x6200);\n      return;\n    }\n    if (iVar18 <= iVar14) {\n      (**(code **)(puVar26 + 0x7d398))\n                (*(int *)(puVar26 + 0x7c740) + 0x5a44,*(int *)(puVar26 + 0x7c740) + 0x5830,0x9de,\n                 *(int *)(puVar26 + 0x7c740) + 0x6200);\n      return;\n    }\n    if (iVar6 <= iVar10) {\n      (**(code **)(puVar26 + 0x7d398))\n                (*(int *)(puVar26 + 0x7c740) + 0x5a64,*(int *)(puVar26 + 0x7c740) + 0x5830,0x9df,\n                 *(int *)(puVar26 + 0x7c740) + 0x6200);\n      return;\n    }\n    if (iVar18 < iVar6) {\n      (**(code **)(puVar26 + 0x7d398))\n                (*(int *)(puVar26 + 0x7c740) + 0x5a84,*(int *)(puVar26 + 0x7c740) + 0x5830,0x9e0,\n                 *(int *)(puVar26 + 0x7c740) + 0x6200);\n      return;\n    }\n  }\n  else {\nLAB_00094e08:\n    *(undefined4 *)(iVar9 + 0xe48) = 0;\n    *(undefined4 *)(iVar9 + 0xe5c) = 0;\n    *(undefined4 *)(iVar9 + 0xe60) = 0;\n    *(undefined4 *)(iVar9 + 0xe54) = 0;\n    *(undefined4 *)(iVar9 + 0xe58) = 0;\n  }\nLAB_00094c48:\n  if ((0 < iVar10) && (iVar10 <= iVar18)) {\n    FUN_00092d1c(iVar9,iVar10,iVar12);\n    iVar12 = *(int *)(iVar9 + 0x6c);\n  }\n  if (iVar21 == -1) {\n    iVar21 = iVar19 + *(int *)(iVar9 + 0x70);\n    if ((0 < iVar21) && (iVar21 <= *(int *)(iVar9 + 300))) {\n      FUN_00092d1c(iVar9,iVar21,iVar12,1);\n      iVar12 = *(int *)(iVar9 + 0x6c);\n    }\n    iVar21 = FUN_00092a9c(iVar9,iVar12,0x9eb,1);\n    if (0 < iVar24) {\n      iVar18 = *(int *)(puVar26 + 0x7cf20);\n      iVar10 = 0;\n      do {\n        iVar6 = iVar10 + *(int *)(iVar9 + 0x70);\n        iVar12 = iVar6 + iVar19;\n        iVar6 = iVar6 * 0xc;\n        puVar22 = (undefined4 *)(*(int *)(iVar21 + 0x14) + iVar12 * 0xc);\n        puVar25 = (undefined4 *)(*(int *)(iVar21 + 0x14) + iVar6);\n        (*(code *)(iVar18 + 0xab0))(iVar21,(iVar6 >> 2) * -0x55555555);\n        uVar20 = puVar22[2];\n        uVar13 = puVar22[1];\n        *puVar25 = *puVar22;\n        puVar25[1] = uVar13;\n        puVar25[2] = uVar20;\n        if (puVar22[2] != 0) {\n          puVar25[2] = (iVar6 + iVar12 * -0xc >> 2) * 0x55555555 + puVar22[2];\n        }\n        iVar10 = iVar10 + 1;\n        puVar22[2] = 0;\n      } while (iVar24 != iVar10);\n    }\n    if (iVar19 != 0) {\n      iVar18 = iVar24;\n      do {\n        iVar10 = iVar18 + 1;\n        FUN_00091070(iVar21,iVar18 + *(int *)(iVar9 + 0x70),iVar9 + 0x54);\n        iVar18 = iVar10;\n      } while (iVar10 != iVar19 + iVar24);\n      return;\n    }\n  }\n  else {\n    iVar18 = iVar24 + -1;\n    iVar21 = FUN_00092a9c(iVar9,iVar12,0x9eb,1);\n    if (iVar24 != 0) {\n      iVar10 = *(int *)(puVar26 + 0x7cf20);\n      do {\n        iVar6 = iVar18 + *(int *)(iVar9 + 0x70);\n        iVar12 = (iVar19 + iVar6) * 0xc;\n        puVar22 = (undefined4 *)(*(int *)(iVar21 + 0x14) + iVar6 * 0xc);\n        puVar25 = (undefined4 *)(*(int *)(iVar21 + 0x14) + iVar12);\n        (*(code *)(iVar10 + 0xab0))(iVar21,(iVar12 >> 2) * -0x55555555);\n        uVar20 = puVar22[2];\n        uVar13 = puVar22[1];\n        *puVar25 = *puVar22;\n        puVar25[1] = uVar13;\n        puVar25[2] = uVar20;\n        if (puVar22[2] != 0) {\n          puVar25[2] = (iVar12 + iVar6 * -0xc >> 2) * 0x55555555 + puVar22[2];\n        }\n        iVar18 = iVar18 + -1;\n        puVar22[2] = 0;\n      } while (iVar18 != -1);\n    }\n    iVar18 = iVar19 + -1;\n    if (iVar19 != 0) {\n      do {\n        iVar19 = iVar18 + *(int *)(iVar9 + 0x70);\n        iVar18 = iVar18 + -1;\n        FUN_00091070(iVar21,iVar19,iVar9 + 0x54);\n      } while (iVar18 != -1);\n    }\n  }\n  return;\nLAB_00094994:\n  if (bVar2) {\n    FUN_000901cc(&local_98,10,0);\n  }\n  if (*(int *)(puVar4 + 6) != 0) {\n    (*pcVar3)(puVar4);\n  }\n  local_cc = local_cc + 1;\n  local_d4 = iVar19;\n  goto LAB_000945cc;\n}\n\n" (function_definition "void FUN_000944e4(int param_1,int param_2,int param_3,int param_4,int param_5,int param_6,\n                 undefined4 param_7)\n\n{\n  bool bVar1;\n  bool bVar2;\n  code *pcVar3;\n  ushort *puVar4;\n  uint uVar5;\n  int iVar6;\n  code *pcVar7;\n  uint uVar8;\n  int iVar9;\n  int iVar10;\n  uint uVar11;\n  int iVar12;\n  undefined4 uVar13;\n  int iVar14;\n  char cVar16;\n  int iVar15;\n  int iVar17;\n  int iVar18;\n  int iVar19;\n  undefined4 uVar20;\n  int iVar21;\n  undefined4 *puVar22;\n  uint *puVar23;\n  int iVar24;\n  undefined4 *puVar25;\n  undefined *puVar26;\n  int local_d4;\n  int local_cc;\n  int local_c8;\n  int local_c0;\n  undefined4 local_98;\n  undefined4 local_94;\n  int local_90;\n  int local_8c;\n  int local_88;\n  int local_84;\n  undefined1 auStack_80 [16];\n  uint local_70 [16];\n  char local_30;\n  undefined1 local_2f;\n  int local_2c;\n  \n  puVar26 = PTR___stack_chk_guard_00112630;\n  local_2c = *(int *)PTR___stack_chk_guard_00112630;\n  local_98 = 0x1400;\n  local_94 = 0;\n  local_90 = (*(code *)PTR_safemalloc_001112ec)(0x1400,4);\n  local_8c = local_90;\n  local_88 = (*(code *)PTR_safemalloc_001112ec)(local_98,4);\n  pcVar7 = (code *)(PTR_LAB_00111ad8 + 0x2a9c);\n  iVar19 = param_3;\n  if (param_6 == 0) {\n    iVar19 = 0;\n  }\n  pcVar3 = (code *)(PTR_LAB_00111ad8 + 0x1270);\n  local_d4 = param_3;\n  local_cc = param_2;\n  local_84 = local_88;\nLAB_000945cc:\n  bVar1 = local_cc < param_4;\n  if ((bVar1) || ((local_cc == param_4 && (local_d4 < param_5)))) {\n    puVar4 = (ushort *)(*pcVar7)(param_1,local_cc,0x1595,0);\n    local_c0 = *(int *)(param_1 + 300);\n    if ((*puVar4 & 0x10) == 0) {\n      if (local_c0 != 0) {\n        iVar9 = *(int *)(puVar4 + 10) + local_c0 * 0xc;\n        do {\n          if ((((*(uint *)(iVar9 + -0xc) != 0x20) &&\n               ((*(uint *)(iVar9 + -0xc) & 0xfffffcff) != 0xd820)) || (*(int *)(iVar9 + -4) != 0))\n             || (local_c0 <= local_d4)) break;\n          local_c0 = local_c0 + -1;\n          iVar9 = iVar9 + -0xc;\n        } while (local_c0 != 0);\n      }\n      if (bVar1) {\n        local_c8 = local_cc;\n        bVar2 = true;\n      }\n      else if (local_cc == param_4) {\n        bVar2 = local_c0 < param_5;\n        local_c8 = local_cc;\n      }\n      else {\n        bVar2 = false;\n        local_c8 = local_cc;\n      }\n    }\n    else if ((*puVar4 & 0x20) == 0) {\n      bVar2 = false;\n      local_c8 = local_cc;\n    }\n    else if (local_c0 == 0) {\n      bVar2 = false;\n      local_c8 = local_cc + -1;\n    }\n    else {\n      bVar2 = false;\n      local_c8 = local_cc;\n      local_c0 = local_c0 + -1;\n    }\n    iVar9 = local_d4;\n    if ((param_6 != 0) && (bVar2 = bVar1, param_5 < local_c0)) {\n      local_c0 = param_5;\n    }\njoined_r0x00094680:\n    do {\n      iVar21 = iVar9;\n      if (((!bVar1) && ((local_cc != param_4 || (param_5 <= iVar21)))) ||\n         ((local_c8 <= local_cc && ((local_c8 != local_cc || (local_c0 <= iVar21))))))\n      goto LAB_00094994;\n      uVar5 = *(uint *)(*(int *)(puVar4 + 10) + iVar21 * 0xc);\n      if (uVar5 != 0xdfff) {\n        uVar11 = uVar5 & 0xffffff00;\n        iVar18 = iVar21 * 0xc;\n        uVar20 = *(undefined4 *)(*(int *)(puVar4 + 10) + iVar18 + 4);\n        uVar8 = uVar5 & 0xff;\n        local_d4 = iVar21;\n        if (uVar11 == 0xd900) goto LAB_00094804;\n        do {\n          if (uVar11 == 0xda00) {\n            uVar5 = *(uint *)(*(int *)(param_1 + 0x1090) + (uVar8 + 4) * 4);\n            uVar11 = uVar5 & 0xffffff00;\n            uVar8 = uVar5 & 0xff;\n          }\n          else if (uVar11 == 0xd800) {\n            iVar9 = *(int *)(param_1 + 0x1090);\n            goto LAB_0009491c;\n          }\njoined_r0x00094728:\n          if (uVar11 == 0xf000) {\n            iVar9 = uVar8 + 0x404;\nLAB_00094740:\n            uVar5 = *(uint *)(*(int *)(param_1 + 0x1090) + iVar9 * 4);\n            uVar8 = uVar5 & 0xff;\n          }\n          else if (uVar11 == 0xf100) {\n            iVar9 = uVar8 + 0x204;\n            goto LAB_00094740;\n          }\n          iVar9 = local_d4 + 1;\n          local_70[1] = 0;\n          iVar10 = iVar9;\n          local_70[0] = uVar5;\n          if (((uVar5 & 0xfffffe00) == 0xf000) && ((uVar5 & 0xe0) != 0)) {\n            if (uVar8 != 0x7f) {\n              cVar16 = (char)uVar5;\n              iVar6 = (*(code *)PTR_is_dbcs_leadbyte_00111b58)\n                                (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),(int)cVar16);\n              local_30 = cVar16;\n              if (iVar6 == 0) {\n                iVar6 = (*(code *)PTR_mb_to_wc_001115cc)\n                                  (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),0,&local_30,1,\n                                   auStack_80,4);\n              }\n              else {\n                local_2f = (undefined1)*(undefined4 *)(*(int *)(puVar4 + 10) + iVar9 * 0xc);\n                iVar6 = (*(code *)PTR_mb_to_wc_001115cc)\n                                  (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),0,&local_30,2,\n                                   auStack_80,4);\n                iVar10 = local_d4 + 2;\n                local_d4 = iVar9;\n              }\n              if (0 < iVar6) {\n                (*(code *)PTR___memcpy_chk_00112078)(local_70,auStack_80,iVar6 * 4,0x40);\n                local_70[iVar6] = 0;\n                uVar5 = local_70[0];\n              }\n              goto LAB_00094778;\n            }\n            FUN_000901cc(&local_98,uVar5,uVar20);\n          }\n          else {\nLAB_00094778:\n            iVar9 = iVar10;\n            if (uVar5 != 0) {\n              uVar8 = local_70[1];\n              puVar23 = local_70;\n              while( true ) {\n                FUN_000901cc(&local_98,uVar5,uVar20);\n                if (uVar8 == 0) break;\n                uVar5 = uVar8;\n                uVar8 = puVar23[2];\n                puVar23 = puVar23 + 1;\n              }\n            }\n          }\n          iVar10 = *(int *)(puVar4 + 10);\n          iVar18 = *(int *)(iVar10 + iVar18 + 8);\n          iVar21 = iVar21 + iVar18;\n          if (iVar18 == 0) goto joined_r0x00094680;\n          iVar18 = iVar21 * 0xc;\n          uVar5 = *(uint *)(iVar10 + iVar21 * 0xc);\n          uVar20 = *(undefined4 *)(iVar10 + iVar18 + 4);\n          uVar11 = uVar5 & 0xffffff00;\n          uVar8 = uVar5 & 0xff;\n        } while (uVar11 != 0xd900);\nLAB_00094804:\n        iVar9 = *(int *)(param_1 + 0x1090);\n        if (*(int *)(param_1 + 0x1158) == 0) {\n          uVar5 = *(uint *)(iVar9 + (uVar8 + 0x304) * 4);\n          uVar11 = uVar5 & 0xffffff00;\n          uVar8 = uVar5 & 0xff;\n        }\n        else {\nLAB_0009491c:\n          uVar5 = *(uint *)(iVar9 + (uVar8 + 0x104) * 4);\n          uVar11 = uVar5 & 0xffffff00;\n          uVar8 = uVar5 & 0xff;\n        }\n        goto joined_r0x00094728;\n      }\n      iVar9 = iVar21 + 1;\n    } while( true );\n  }\n  iVar19 = local_90;\n  (*(code *)PTR_write_clip_00111b5c)\n            (*(undefined4 *)(param_1 + 0x1088),local_90,local_88,local_94,param_7);\n  (*(code *)PTR_safefree_001112f0)(local_90);\n  iVar9 = local_88;\n  (*(code *)PTR_safefree_001112f0)();\n  if (local_2c == *(int *)puVar26) {\n    return;\n  }\n  puVar26 = PTR___stack_chk_fail_001122c8;\n  (*(code *)PTR___stack_chk_fail_001122c8)();\n  iVar21 = 1;\n  if (iVar19 < 0) {\n    iVar21 = -1;\n    iVar19 = -iVar19;\n  }\n  iVar18 = *(int *)(iVar9 + 300);\n  iVar10 = *(int *)(iVar9 + 0x70);\n  iVar12 = *(int *)(iVar9 + 0x6c);\n  iVar6 = *(int *)(iVar9 + 0xe5c);\n  iVar24 = iVar18 - iVar10;\n  if (iVar24 <= iVar19) {\n    iVar19 = iVar24;\n  }\n  iVar24 = iVar24 - iVar19;\n  if (((iVar6 <= iVar12) && ((iVar12 != iVar6 || (*(int *)(iVar9 + 0xe60) <= iVar10)))) ||\n     ((iVar14 = *(int *)(iVar9 + 0xe54), iVar12 <= iVar14 &&\n      ((iVar12 != iVar14 || (iVar18 <= *(int *)(iVar9 + 0xe58))))))) goto LAB_00094c48;\n  iVar17 = iVar10 + iVar19;\n  iVar15 = iVar18;\n  if (iVar21 == 1) {\n    iVar15 = iVar18 - iVar19;\n    iVar17 = iVar10;\n  }\n  if ((iVar12 < iVar14) || ((iVar12 == iVar14 && (iVar17 <= *(int *)(iVar9 + 0xe58))))) {\n    if (iVar6 < iVar12) {\n      iVar6 = *(int *)(iVar9 + 0xe60);\n    }\n    else if ((iVar12 != iVar6) || (iVar6 = *(int *)(iVar9 + 0xe60), iVar15 < iVar6))\n    goto LAB_00094e08;\n    iVar14 = iVar21 * iVar19 + *(int *)(iVar9 + 0xe58);\n    iVar6 = iVar21 * iVar19 + iVar6;\n    *(int *)(iVar9 + 0xe58) = iVar14;\n    *(int *)(iVar9 + 0xe60) = iVar6;\n    if (iVar14 < iVar10) {\n      (**(code **)(puVar26 + 0x7d398))\n                (*(int *)(puVar26 + 0x7c740) + 0x5a20,*(int *)(puVar26 + 0x7c740) + 0x5830,0x9dd,\n                 *(int *)(puVar26 + 0x7c740) + 0x6200);\n      return;\n    }\n    if (iVar18 <= iVar14) {\n      (**(code **)(puVar26 + 0x7d398))\n                (*(int *)(puVar26 + 0x7c740) + 0x5a44,*(int *)(puVar26 + 0x7c740) + 0x5830,0x9de,\n                 *(int *)(puVar26 + 0x7c740) + 0x6200);\n      return;\n    }\n    if (iVar6 <= iVar10) {\n      (**(code **)(puVar26 + 0x7d398))\n                (*(int *)(puVar26 + 0x7c740) + 0x5a64,*(int *)(puVar26 + 0x7c740) + 0x5830,0x9df,\n                 *(int *)(puVar26 + 0x7c740) + 0x6200);\n      return;\n    }\n    if (iVar18 < iVar6) {\n      (**(code **)(puVar26 + 0x7d398))\n                (*(int *)(puVar26 + 0x7c740) + 0x5a84,*(int *)(puVar26 + 0x7c740) + 0x5830,0x9e0,\n                 *(int *)(puVar26 + 0x7c740) + 0x6200);\n      return;\n    }\n  }\n  else {\nLAB_00094e08:\n    *(undefined4 *)(iVar9 + 0xe48) = 0;\n    *(undefined4 *)(iVar9 + 0xe5c) = 0;\n    *(undefined4 *)(iVar9 + 0xe60) = 0;\n    *(undefined4 *)(iVar9 + 0xe54) = 0;\n    *(undefined4 *)(iVar9 + 0xe58) = 0;\n  }\nLAB_00094c48:\n  if ((0 < iVar10) && (iVar10 <= iVar18)) {\n    FUN_00092d1c(iVar9,iVar10,iVar12);\n    iVar12 = *(int *)(iVar9 + 0x6c);\n  }\n  if (iVar21 == -1) {\n    iVar21 = iVar19 + *(int *)(iVar9 + 0x70);\n    if ((0 < iVar21) && (iVar21 <= *(int *)(iVar9 + 300))) {\n      FUN_00092d1c(iVar9,iVar21,iVar12,1);\n      iVar12 = *(int *)(iVar9 + 0x6c);\n    }\n    iVar21 = FUN_00092a9c(iVar9,iVar12,0x9eb,1);\n    if (0 < iVar24) {\n      iVar18 = *(int *)(puVar26 + 0x7cf20);\n      iVar10 = 0;\n      do {\n        iVar6 = iVar10 + *(int *)(iVar9 + 0x70);\n        iVar12 = iVar6 + iVar19;\n        iVar6 = iVar6 * 0xc;\n        puVar22 = (undefined4 *)(*(int *)(iVar21 + 0x14) + iVar12 * 0xc);\n        puVar25 = (undefined4 *)(*(int *)(iVar21 + 0x14) + iVar6);\n        (*(code *)(iVar18 + 0xab0))(iVar21,(iVar6 >> 2) * -0x55555555);\n        uVar20 = puVar22[2];\n        uVar13 = puVar22[1];\n        *puVar25 = *puVar22;\n        puVar25[1] = uVar13;\n        puVar25[2] = uVar20;\n        if (puVar22[2] != 0) {\n          puVar25[2] = (iVar6 + iVar12 * -0xc >> 2) * 0x55555555 + puVar22[2];\n        }\n        iVar10 = iVar10 + 1;\n        puVar22[2] = 0;\n      } while (iVar24 != iVar10);\n    }\n    if (iVar19 != 0) {\n      iVar18 = iVar24;\n      do {\n        iVar10 = iVar18 + 1;\n        FUN_00091070(iVar21,iVar18 + *(int *)(iVar9 + 0x70),iVar9 + 0x54);\n        iVar18 = iVar10;\n      } while (iVar10 != iVar19 + iVar24);\n      return;\n    }\n  }\n  else {\n    iVar18 = iVar24 + -1;\n    iVar21 = FUN_00092a9c(iVar9,iVar12,0x9eb,1);\n    if (iVar24 != 0) {\n      iVar10 = *(int *)(puVar26 + 0x7cf20);\n      do {\n        iVar6 = iVar18 + *(int *)(iVar9 + 0x70);\n        iVar12 = (iVar19 + iVar6) * 0xc;\n        puVar22 = (undefined4 *)(*(int *)(iVar21 + 0x14) + iVar6 * 0xc);\n        puVar25 = (undefined4 *)(*(int *)(iVar21 + 0x14) + iVar12);\n        (*(code *)(iVar10 + 0xab0))(iVar21,(iVar12 >> 2) * -0x55555555);\n        uVar20 = puVar22[2];\n        uVar13 = puVar22[1];\n        *puVar25 = *puVar22;\n        puVar25[1] = uVar13;\n        puVar25[2] = uVar20;\n        if (puVar22[2] != 0) {\n          puVar25[2] = (iVar12 + iVar6 * -0xc >> 2) * 0x55555555 + puVar22[2];\n        }\n        iVar18 = iVar18 + -1;\n        puVar22[2] = 0;\n      } while (iVar18 != -1);\n    }\n    iVar18 = iVar19 + -1;\n    if (iVar19 != 0) {\n      do {\n        iVar19 = iVar18 + *(int *)(iVar9 + 0x70);\n        iVar18 = iVar18 + -1;\n        FUN_00091070(iVar21,iVar19,iVar9 + 0x54);\n      } while (iVar18 != -1);\n    }\n  }\n  return;\nLAB_00094994:\n  if (bVar2) {\n    FUN_000901cc(&local_98,10,0);\n  }\n  if (*(int *)(puVar4 + 6) != 0) {\n    (*pcVar3)(puVar4);\n  }\n  local_cc = local_cc + 1;\n  local_d4 = iVar19;\n  goto LAB_000945cc;\n}" primitive_type (function_declarator "FUN_000944e4(int param_1,int param_2,int param_3,int param_4,int param_5,int param_6,\n                 undefined4 param_7)" identifier (parameter_list "(int param_1,int param_2,int param_3,int param_4,int param_5,int param_6,\n                 undefined4 param_7)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "int param_3" primitive_type identifier) , (parameter_declaration "int param_4" primitive_type identifier) , (parameter_declaration "int param_5" primitive_type identifier) , (parameter_declaration "int param_6" primitive_type identifier) , (parameter_declaration "undefined4 param_7" type_identifier identifier) ))) (compound_statement "{\n  bool bVar1;\n  bool bVar2;\n  code *pcVar3;\n  ushort *puVar4;\n  uint uVar5;\n  int iVar6;\n  code *pcVar7;\n  uint uVar8;\n  int iVar9;\n  int iVar10;\n  uint uVar11;\n  int iVar12;\n  undefined4 uVar13;\n  int iVar14;\n  char cVar16;\n  int iVar15;\n  int iVar17;\n  int iVar18;\n  int iVar19;\n  undefined4 uVar20;\n  int iVar21;\n  undefined4 *puVar22;\n  uint *puVar23;\n  int iVar24;\n  undefined4 *puVar25;\n  undefined *puVar26;\n  int local_d4;\n  int local_cc;\n  int local_c8;\n  int local_c0;\n  undefined4 local_98;\n  undefined4 local_94;\n  int local_90;\n  int local_8c;\n  int local_88;\n  int local_84;\n  undefined1 auStack_80 [16];\n  uint local_70 [16];\n  char local_30;\n  undefined1 local_2f;\n  int local_2c;\n  \n  puVar26 = PTR___stack_chk_guard_00112630;\n  local_2c = *(int *)PTR___stack_chk_guard_00112630;\n  local_98 = 0x1400;\n  local_94 = 0;\n  local_90 = (*(code *)PTR_safemalloc_001112ec)(0x1400,4);\n  local_8c = local_90;\n  local_88 = (*(code *)PTR_safemalloc_001112ec)(local_98,4);\n  pcVar7 = (code *)(PTR_LAB_00111ad8 + 0x2a9c);\n  iVar19 = param_3;\n  if (param_6 == 0) {\n    iVar19 = 0;\n  }\n  pcVar3 = (code *)(PTR_LAB_00111ad8 + 0x1270);\n  local_d4 = param_3;\n  local_cc = param_2;\n  local_84 = local_88;\nLAB_000945cc:\n  bVar1 = local_cc < param_4;\n  if ((bVar1) || ((local_cc == param_4 && (local_d4 < param_5)))) {\n    puVar4 = (ushort *)(*pcVar7)(param_1,local_cc,0x1595,0);\n    local_c0 = *(int *)(param_1 + 300);\n    if ((*puVar4 & 0x10) == 0) {\n      if (local_c0 != 0) {\n        iVar9 = *(int *)(puVar4 + 10) + local_c0 * 0xc;\n        do {\n          if ((((*(uint *)(iVar9 + -0xc) != 0x20) &&\n               ((*(uint *)(iVar9 + -0xc) & 0xfffffcff) != 0xd820)) || (*(int *)(iVar9 + -4) != 0))\n             || (local_c0 <= local_d4)) break;\n          local_c0 = local_c0 + -1;\n          iVar9 = iVar9 + -0xc;\n        } while (local_c0 != 0);\n      }\n      if (bVar1) {\n        local_c8 = local_cc;\n        bVar2 = true;\n      }\n      else if (local_cc == param_4) {\n        bVar2 = local_c0 < param_5;\n        local_c8 = local_cc;\n      }\n      else {\n        bVar2 = false;\n        local_c8 = local_cc;\n      }\n    }\n    else if ((*puVar4 & 0x20) == 0) {\n      bVar2 = false;\n      local_c8 = local_cc;\n    }\n    else if (local_c0 == 0) {\n      bVar2 = false;\n      local_c8 = local_cc + -1;\n    }\n    else {\n      bVar2 = false;\n      local_c8 = local_cc;\n      local_c0 = local_c0 + -1;\n    }\n    iVar9 = local_d4;\n    if ((param_6 != 0) && (bVar2 = bVar1, param_5 < local_c0)) {\n      local_c0 = param_5;\n    }\njoined_r0x00094680:\n    do {\n      iVar21 = iVar9;\n      if (((!bVar1) && ((local_cc != param_4 || (param_5 <= iVar21)))) ||\n         ((local_c8 <= local_cc && ((local_c8 != local_cc || (local_c0 <= iVar21))))))\n      goto LAB_00094994;\n      uVar5 = *(uint *)(*(int *)(puVar4 + 10) + iVar21 * 0xc);\n      if (uVar5 != 0xdfff) {\n        uVar11 = uVar5 & 0xffffff00;\n        iVar18 = iVar21 * 0xc;\n        uVar20 = *(undefined4 *)(*(int *)(puVar4 + 10) + iVar18 + 4);\n        uVar8 = uVar5 & 0xff;\n        local_d4 = iVar21;\n        if (uVar11 == 0xd900) goto LAB_00094804;\n        do {\n          if (uVar11 == 0xda00) {\n            uVar5 = *(uint *)(*(int *)(param_1 + 0x1090) + (uVar8 + 4) * 4);\n            uVar11 = uVar5 & 0xffffff00;\n            uVar8 = uVar5 & 0xff;\n          }\n          else if (uVar11 == 0xd800) {\n            iVar9 = *(int *)(param_1 + 0x1090);\n            goto LAB_0009491c;\n          }\njoined_r0x00094728:\n          if (uVar11 == 0xf000) {\n            iVar9 = uVar8 + 0x404;\nLAB_00094740:\n            uVar5 = *(uint *)(*(int *)(param_1 + 0x1090) + iVar9 * 4);\n            uVar8 = uVar5 & 0xff;\n          }\n          else if (uVar11 == 0xf100) {\n            iVar9 = uVar8 + 0x204;\n            goto LAB_00094740;\n          }\n          iVar9 = local_d4 + 1;\n          local_70[1] = 0;\n          iVar10 = iVar9;\n          local_70[0] = uVar5;\n          if (((uVar5 & 0xfffffe00) == 0xf000) && ((uVar5 & 0xe0) != 0)) {\n            if (uVar8 != 0x7f) {\n              cVar16 = (char)uVar5;\n              iVar6 = (*(code *)PTR_is_dbcs_leadbyte_00111b58)\n                                (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),(int)cVar16);\n              local_30 = cVar16;\n              if (iVar6 == 0) {\n                iVar6 = (*(code *)PTR_mb_to_wc_001115cc)\n                                  (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),0,&local_30,1,\n                                   auStack_80,4);\n              }\n              else {\n                local_2f = (undefined1)*(undefined4 *)(*(int *)(puVar4 + 10) + iVar9 * 0xc);\n                iVar6 = (*(code *)PTR_mb_to_wc_001115cc)\n                                  (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),0,&local_30,2,\n                                   auStack_80,4);\n                iVar10 = local_d4 + 2;\n                local_d4 = iVar9;\n              }\n              if (0 < iVar6) {\n                (*(code *)PTR___memcpy_chk_00112078)(local_70,auStack_80,iVar6 * 4,0x40);\n                local_70[iVar6] = 0;\n                uVar5 = local_70[0];\n              }\n              goto LAB_00094778;\n            }\n            FUN_000901cc(&local_98,uVar5,uVar20);\n          }\n          else {\nLAB_00094778:\n            iVar9 = iVar10;\n            if (uVar5 != 0) {\n              uVar8 = local_70[1];\n              puVar23 = local_70;\n              while( true ) {\n                FUN_000901cc(&local_98,uVar5,uVar20);\n                if (uVar8 == 0) break;\n                uVar5 = uVar8;\n                uVar8 = puVar23[2];\n                puVar23 = puVar23 + 1;\n              }\n            }\n          }\n          iVar10 = *(int *)(puVar4 + 10);\n          iVar18 = *(int *)(iVar10 + iVar18 + 8);\n          iVar21 = iVar21 + iVar18;\n          if (iVar18 == 0) goto joined_r0x00094680;\n          iVar18 = iVar21 * 0xc;\n          uVar5 = *(uint *)(iVar10 + iVar21 * 0xc);\n          uVar20 = *(undefined4 *)(iVar10 + iVar18 + 4);\n          uVar11 = uVar5 & 0xffffff00;\n          uVar8 = uVar5 & 0xff;\n        } while (uVar11 != 0xd900);\nLAB_00094804:\n        iVar9 = *(int *)(param_1 + 0x1090);\n        if (*(int *)(param_1 + 0x1158) == 0) {\n          uVar5 = *(uint *)(iVar9 + (uVar8 + 0x304) * 4);\n          uVar11 = uVar5 & 0xffffff00;\n          uVar8 = uVar5 & 0xff;\n        }\n        else {\nLAB_0009491c:\n          uVar5 = *(uint *)(iVar9 + (uVar8 + 0x104) * 4);\n          uVar11 = uVar5 & 0xffffff00;\n          uVar8 = uVar5 & 0xff;\n        }\n        goto joined_r0x00094728;\n      }\n      iVar9 = iVar21 + 1;\n    } while( true );\n  }\n  iVar19 = local_90;\n  (*(code *)PTR_write_clip_00111b5c)\n            (*(undefined4 *)(param_1 + 0x1088),local_90,local_88,local_94,param_7);\n  (*(code *)PTR_safefree_001112f0)(local_90);\n  iVar9 = local_88;\n  (*(code *)PTR_safefree_001112f0)();\n  if (local_2c == *(int *)puVar26) {\n    return;\n  }\n  puVar26 = PTR___stack_chk_fail_001122c8;\n  (*(code *)PTR___stack_chk_fail_001122c8)();\n  iVar21 = 1;\n  if (iVar19 < 0) {\n    iVar21 = -1;\n    iVar19 = -iVar19;\n  }\n  iVar18 = *(int *)(iVar9 + 300);\n  iVar10 = *(int *)(iVar9 + 0x70);\n  iVar12 = *(int *)(iVar9 + 0x6c);\n  iVar6 = *(int *)(iVar9 + 0xe5c);\n  iVar24 = iVar18 - iVar10;\n  if (iVar24 <= iVar19) {\n    iVar19 = iVar24;\n  }\n  iVar24 = iVar24 - iVar19;\n  if (((iVar6 <= iVar12) && ((iVar12 != iVar6 || (*(int *)(iVar9 + 0xe60) <= iVar10)))) ||\n     ((iVar14 = *(int *)(iVar9 + 0xe54), iVar12 <= iVar14 &&\n      ((iVar12 != iVar14 || (iVar18 <= *(int *)(iVar9 + 0xe58))))))) goto LAB_00094c48;\n  iVar17 = iVar10 + iVar19;\n  iVar15 = iVar18;\n  if (iVar21 == 1) {\n    iVar15 = iVar18 - iVar19;\n    iVar17 = iVar10;\n  }\n  if ((iVar12 < iVar14) || ((iVar12 == iVar14 && (iVar17 <= *(int *)(iVar9 + 0xe58))))) {\n    if (iVar6 < iVar12) {\n      iVar6 = *(int *)(iVar9 + 0xe60);\n    }\n    else if ((iVar12 != iVar6) || (iVar6 = *(int *)(iVar9 + 0xe60), iVar15 < iVar6))\n    goto LAB_00094e08;\n    iVar14 = iVar21 * iVar19 + *(int *)(iVar9 + 0xe58);\n    iVar6 = iVar21 * iVar19 + iVar6;\n    *(int *)(iVar9 + 0xe58) = iVar14;\n    *(int *)(iVar9 + 0xe60) = iVar6;\n    if (iVar14 < iVar10) {\n      (**(code **)(puVar26 + 0x7d398))\n                (*(int *)(puVar26 + 0x7c740) + 0x5a20,*(int *)(puVar26 + 0x7c740) + 0x5830,0x9dd,\n                 *(int *)(puVar26 + 0x7c740) + 0x6200);\n      return;\n    }\n    if (iVar18 <= iVar14) {\n      (**(code **)(puVar26 + 0x7d398))\n                (*(int *)(puVar26 + 0x7c740) + 0x5a44,*(int *)(puVar26 + 0x7c740) + 0x5830,0x9de,\n                 *(int *)(puVar26 + 0x7c740) + 0x6200);\n      return;\n    }\n    if (iVar6 <= iVar10) {\n      (**(code **)(puVar26 + 0x7d398))\n                (*(int *)(puVar26 + 0x7c740) + 0x5a64,*(int *)(puVar26 + 0x7c740) + 0x5830,0x9df,\n                 *(int *)(puVar26 + 0x7c740) + 0x6200);\n      return;\n    }\n    if (iVar18 < iVar6) {\n      (**(code **)(puVar26 + 0x7d398))\n                (*(int *)(puVar26 + 0x7c740) + 0x5a84,*(int *)(puVar26 + 0x7c740) + 0x5830,0x9e0,\n                 *(int *)(puVar26 + 0x7c740) + 0x6200);\n      return;\n    }\n  }\n  else {\nLAB_00094e08:\n    *(undefined4 *)(iVar9 + 0xe48) = 0;\n    *(undefined4 *)(iVar9 + 0xe5c) = 0;\n    *(undefined4 *)(iVar9 + 0xe60) = 0;\n    *(undefined4 *)(iVar9 + 0xe54) = 0;\n    *(undefined4 *)(iVar9 + 0xe58) = 0;\n  }\nLAB_00094c48:\n  if ((0 < iVar10) && (iVar10 <= iVar18)) {\n    FUN_00092d1c(iVar9,iVar10,iVar12);\n    iVar12 = *(int *)(iVar9 + 0x6c);\n  }\n  if (iVar21 == -1) {\n    iVar21 = iVar19 + *(int *)(iVar9 + 0x70);\n    if ((0 < iVar21) && (iVar21 <= *(int *)(iVar9 + 300))) {\n      FUN_00092d1c(iVar9,iVar21,iVar12,1);\n      iVar12 = *(int *)(iVar9 + 0x6c);\n    }\n    iVar21 = FUN_00092a9c(iVar9,iVar12,0x9eb,1);\n    if (0 < iVar24) {\n      iVar18 = *(int *)(puVar26 + 0x7cf20);\n      iVar10 = 0;\n      do {\n        iVar6 = iVar10 + *(int *)(iVar9 + 0x70);\n        iVar12 = iVar6 + iVar19;\n        iVar6 = iVar6 * 0xc;\n        puVar22 = (undefined4 *)(*(int *)(iVar21 + 0x14) + iVar12 * 0xc);\n        puVar25 = (undefined4 *)(*(int *)(iVar21 + 0x14) + iVar6);\n        (*(code *)(iVar18 + 0xab0))(iVar21,(iVar6 >> 2) * -0x55555555);\n        uVar20 = puVar22[2];\n        uVar13 = puVar22[1];\n        *puVar25 = *puVar22;\n        puVar25[1] = uVar13;\n        puVar25[2] = uVar20;\n        if (puVar22[2] != 0) {\n          puVar25[2] = (iVar6 + iVar12 * -0xc >> 2) * 0x55555555 + puVar22[2];\n        }\n        iVar10 = iVar10 + 1;\n        puVar22[2] = 0;\n      } while (iVar24 != iVar10);\n    }\n    if (iVar19 != 0) {\n      iVar18 = iVar24;\n      do {\n        iVar10 = iVar18 + 1;\n        FUN_00091070(iVar21,iVar18 + *(int *)(iVar9 + 0x70),iVar9 + 0x54);\n        iVar18 = iVar10;\n      } while (iVar10 != iVar19 + iVar24);\n      return;\n    }\n  }\n  else {\n    iVar18 = iVar24 + -1;\n    iVar21 = FUN_00092a9c(iVar9,iVar12,0x9eb,1);\n    if (iVar24 != 0) {\n      iVar10 = *(int *)(puVar26 + 0x7cf20);\n      do {\n        iVar6 = iVar18 + *(int *)(iVar9 + 0x70);\n        iVar12 = (iVar19 + iVar6) * 0xc;\n        puVar22 = (undefined4 *)(*(int *)(iVar21 + 0x14) + iVar6 * 0xc);\n        puVar25 = (undefined4 *)(*(int *)(iVar21 + 0x14) + iVar12);\n        (*(code *)(iVar10 + 0xab0))(iVar21,(iVar12 >> 2) * -0x55555555);\n        uVar20 = puVar22[2];\n        uVar13 = puVar22[1];\n        *puVar25 = *puVar22;\n        puVar25[1] = uVar13;\n        puVar25[2] = uVar20;\n        if (puVar22[2] != 0) {\n          puVar25[2] = (iVar12 + iVar6 * -0xc >> 2) * 0x55555555 + puVar22[2];\n        }\n        iVar18 = iVar18 + -1;\n        puVar22[2] = 0;\n      } while (iVar18 != -1);\n    }\n    iVar18 = iVar19 + -1;\n    if (iVar19 != 0) {\n      do {\n        iVar19 = iVar18 + *(int *)(iVar9 + 0x70);\n        iVar18 = iVar18 + -1;\n        FUN_00091070(iVar21,iVar19,iVar9 + 0x54);\n      } while (iVar18 != -1);\n    }\n  }\n  return;\nLAB_00094994:\n  if (bVar2) {\n    FUN_000901cc(&local_98,10,0);\n  }\n  if (*(int *)(puVar4 + 6) != 0) {\n    (*pcVar3)(puVar4);\n  }\n  local_cc = local_cc + 1;\n  local_d4 = iVar19;\n  goto LAB_000945cc;\n}" { (declaration "bool bVar1;" primitive_type identifier ;) (declaration "bool bVar2;" primitive_type identifier ;) (declaration "code *pcVar3;" type_identifier (pointer_declarator "*pcVar3" * identifier) ;) (declaration "ushort *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "code *pcVar7;" type_identifier (pointer_declarator "*pcVar7" * identifier) ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "uint uVar11;" type_identifier identifier ;) (declaration "int iVar12;" primitive_type identifier ;) (declaration "undefined4 uVar13;" type_identifier identifier ;) (declaration "int iVar14;" primitive_type identifier ;) (declaration "char cVar16;" primitive_type identifier ;) (declaration "int iVar15;" primitive_type identifier ;) (declaration "int iVar17;" primitive_type identifier ;) (declaration "int iVar18;" primitive_type identifier ;) (declaration "int iVar19;" primitive_type identifier ;) (declaration "undefined4 uVar20;" type_identifier identifier ;) (declaration "int iVar21;" primitive_type identifier ;) (declaration "undefined4 *puVar22;" type_identifier (pointer_declarator "*puVar22" * identifier) ;) (declaration "uint *puVar23;" type_identifier (pointer_declarator "*puVar23" * identifier) ;) (declaration "int iVar24;" primitive_type identifier ;) (declaration "undefined4 *puVar25;" type_identifier (pointer_declarator "*puVar25" * identifier) ;) (declaration "undefined *puVar26;" type_identifier (pointer_declarator "*puVar26" * identifier) ;) (declaration "int local_d4;" primitive_type identifier ;) (declaration "int local_cc;" primitive_type identifier ;) (declaration "int local_c8;" primitive_type identifier ;) (declaration "int local_c0;" primitive_type identifier ;) (declaration "undefined4 local_98;" type_identifier identifier ;) (declaration "undefined4 local_94;" type_identifier identifier ;) (declaration "int local_90;" primitive_type identifier ;) (declaration "int local_8c;" primitive_type identifier ;) (declaration "int local_88;" primitive_type identifier ;) (declaration "int local_84;" primitive_type identifier ;) (declaration "undefined1 auStack_80 [16];" type_identifier (array_declarator "auStack_80 [16]" identifier [ number_literal ]) ;) (declaration "uint local_70 [16];" type_identifier (array_declarator "local_70 [16]" identifier [ number_literal ]) ;) (declaration "char local_30;" primitive_type identifier ;) (declaration "undefined1 local_2f;" type_identifier identifier ;) (declaration "int local_2c;" primitive_type identifier ;) (expression_statement "puVar26 = PTR___stack_chk_guard_00112630;" (assignment_expression "puVar26 = PTR___stack_chk_guard_00112630" identifier = identifier) ;) (expression_statement "local_2c = *(int *)PTR___stack_chk_guard_00112630;" (assignment_expression "local_2c = *(int *)PTR___stack_chk_guard_00112630" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_00112630" * (cast_expression "(int *)PTR___stack_chk_guard_00112630" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "local_98 = 0x1400;" (assignment_expression "local_98 = 0x1400" identifier = number_literal) ;) (expression_statement "local_94 = 0;" (assignment_expression "local_94 = 0" identifier = number_literal) ;) (expression_statement "local_90 = (*(code *)PTR_safemalloc_001112ec)(0x1400,4);" (assignment_expression "local_90 = (*(code *)PTR_safemalloc_001112ec)(0x1400,4)" identifier = (call_expression "(*(code *)PTR_safemalloc_001112ec)(0x1400,4)" (parenthesized_expression "(*(code *)PTR_safemalloc_001112ec)" ( (pointer_expression "*(code *)PTR_safemalloc_001112ec" * (cast_expression "(code *)PTR_safemalloc_001112ec" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(0x1400,4)" ( number_literal , number_literal )))) ;) (expression_statement "local_8c = local_90;" (assignment_expression "local_8c = local_90" identifier = identifier) ;) (expression_statement "local_88 = (*(code *)PTR_safemalloc_001112ec)(local_98,4);" (assignment_expression "local_88 = (*(code *)PTR_safemalloc_001112ec)(local_98,4)" identifier = (call_expression "(*(code *)PTR_safemalloc_001112ec)(local_98,4)" (parenthesized_expression "(*(code *)PTR_safemalloc_001112ec)" ( (pointer_expression "*(code *)PTR_safemalloc_001112ec" * (cast_expression "(code *)PTR_safemalloc_001112ec" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(local_98,4)" ( identifier , number_literal )))) ;) (expression_statement "pcVar7 = (code *)(PTR_LAB_00111ad8 + 0x2a9c);" (assignment_expression "pcVar7 = (code *)(PTR_LAB_00111ad8 + 0x2a9c)" identifier = (cast_expression "(code *)(PTR_LAB_00111ad8 + 0x2a9c)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_00111ad8 + 0x2a9c)" ( (binary_expression "PTR_LAB_00111ad8 + 0x2a9c" identifier + number_literal) )))) ;) (expression_statement "iVar19 = param_3;" (assignment_expression "iVar19 = param_3" identifier = identifier) ;) (if_statement "if (param_6 == 0) {\n    iVar19 = 0;\n  }" if (parenthesized_expression "(param_6 == 0)" ( (binary_expression "param_6 == 0" identifier == number_literal) )) (compound_statement "{\n    iVar19 = 0;\n  }" { (expression_statement "iVar19 = 0;" (assignment_expression "iVar19 = 0" identifier = number_literal) ;) })) (expression_statement "pcVar3 = (code *)(PTR_LAB_00111ad8 + 0x1270);" (assignment_expression "pcVar3 = (code *)(PTR_LAB_00111ad8 + 0x1270)" identifier = (cast_expression "(code *)(PTR_LAB_00111ad8 + 0x1270)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_00111ad8 + 0x1270)" ( (binary_expression "PTR_LAB_00111ad8 + 0x1270" identifier + number_literal) )))) ;) (expression_statement "local_d4 = param_3;" (assignment_expression "local_d4 = param_3" identifier = identifier) ;) (expression_statement "local_cc = param_2;" (assignment_expression "local_cc = param_2" identifier = identifier) ;) (expression_statement "local_84 = local_88;" (assignment_expression "local_84 = local_88" identifier = identifier) ;) (labeled_statement "LAB_000945cc:\n  bVar1 = local_cc < param_4;" statement_identifier : (expression_statement "bVar1 = local_cc < param_4;" (assignment_expression "bVar1 = local_cc < param_4" identifier = (binary_expression "local_cc < param_4" identifier < identifier)) ;)) (if_statement "if ((bVar1) || ((local_cc == param_4 && (local_d4 < param_5)))) {\n    puVar4 = (ushort *)(*pcVar7)(param_1,local_cc,0x1595,0);\n    local_c0 = *(int *)(param_1 + 300);\n    if ((*puVar4 & 0x10) == 0) {\n      if (local_c0 != 0) {\n        iVar9 = *(int *)(puVar4 + 10) + local_c0 * 0xc;\n        do {\n          if ((((*(uint *)(iVar9 + -0xc) != 0x20) &&\n               ((*(uint *)(iVar9 + -0xc) & 0xfffffcff) != 0xd820)) || (*(int *)(iVar9 + -4) != 0))\n             || (local_c0 <= local_d4)) break;\n          local_c0 = local_c0 + -1;\n          iVar9 = iVar9 + -0xc;\n        } while (local_c0 != 0);\n      }\n      if (bVar1) {\n        local_c8 = local_cc;\n        bVar2 = true;\n      }\n      else if (local_cc == param_4) {\n        bVar2 = local_c0 < param_5;\n        local_c8 = local_cc;\n      }\n      else {\n        bVar2 = false;\n        local_c8 = local_cc;\n      }\n    }\n    else if ((*puVar4 & 0x20) == 0) {\n      bVar2 = false;\n      local_c8 = local_cc;\n    }\n    else if (local_c0 == 0) {\n      bVar2 = false;\n      local_c8 = local_cc + -1;\n    }\n    else {\n      bVar2 = false;\n      local_c8 = local_cc;\n      local_c0 = local_c0 + -1;\n    }\n    iVar9 = local_d4;\n    if ((param_6 != 0) && (bVar2 = bVar1, param_5 < local_c0)) {\n      local_c0 = param_5;\n    }\njoined_r0x00094680:\n    do {\n      iVar21 = iVar9;\n      if (((!bVar1) && ((local_cc != param_4 || (param_5 <= iVar21)))) ||\n         ((local_c8 <= local_cc && ((local_c8 != local_cc || (local_c0 <= iVar21))))))\n      goto LAB_00094994;\n      uVar5 = *(uint *)(*(int *)(puVar4 + 10) + iVar21 * 0xc);\n      if (uVar5 != 0xdfff) {\n        uVar11 = uVar5 & 0xffffff00;\n        iVar18 = iVar21 * 0xc;\n        uVar20 = *(undefined4 *)(*(int *)(puVar4 + 10) + iVar18 + 4);\n        uVar8 = uVar5 & 0xff;\n        local_d4 = iVar21;\n        if (uVar11 == 0xd900) goto LAB_00094804;\n        do {\n          if (uVar11 == 0xda00) {\n            uVar5 = *(uint *)(*(int *)(param_1 + 0x1090) + (uVar8 + 4) * 4);\n            uVar11 = uVar5 & 0xffffff00;\n            uVar8 = uVar5 & 0xff;\n          }\n          else if (uVar11 == 0xd800) {\n            iVar9 = *(int *)(param_1 + 0x1090);\n            goto LAB_0009491c;\n          }\njoined_r0x00094728:\n          if (uVar11 == 0xf000) {\n            iVar9 = uVar8 + 0x404;\nLAB_00094740:\n            uVar5 = *(uint *)(*(int *)(param_1 + 0x1090) + iVar9 * 4);\n            uVar8 = uVar5 & 0xff;\n          }\n          else if (uVar11 == 0xf100) {\n            iVar9 = uVar8 + 0x204;\n            goto LAB_00094740;\n          }\n          iVar9 = local_d4 + 1;\n          local_70[1] = 0;\n          iVar10 = iVar9;\n          local_70[0] = uVar5;\n          if (((uVar5 & 0xfffffe00) == 0xf000) && ((uVar5 & 0xe0) != 0)) {\n            if (uVar8 != 0x7f) {\n              cVar16 = (char)uVar5;\n              iVar6 = (*(code *)PTR_is_dbcs_leadbyte_00111b58)\n                                (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),(int)cVar16);\n              local_30 = cVar16;\n              if (iVar6 == 0) {\n                iVar6 = (*(code *)PTR_mb_to_wc_001115cc)\n                                  (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),0,&local_30,1,\n                                   auStack_80,4);\n              }\n              else {\n                local_2f = (undefined1)*(undefined4 *)(*(int *)(puVar4 + 10) + iVar9 * 0xc);\n                iVar6 = (*(code *)PTR_mb_to_wc_001115cc)\n                                  (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),0,&local_30,2,\n                                   auStack_80,4);\n                iVar10 = local_d4 + 2;\n                local_d4 = iVar9;\n              }\n              if (0 < iVar6) {\n                (*(code *)PTR___memcpy_chk_00112078)(local_70,auStack_80,iVar6 * 4,0x40);\n                local_70[iVar6] = 0;\n                uVar5 = local_70[0];\n              }\n              goto LAB_00094778;\n            }\n            FUN_000901cc(&local_98,uVar5,uVar20);\n          }\n          else {\nLAB_00094778:\n            iVar9 = iVar10;\n            if (uVar5 != 0) {\n              uVar8 = local_70[1];\n              puVar23 = local_70;\n              while( true ) {\n                FUN_000901cc(&local_98,uVar5,uVar20);\n                if (uVar8 == 0) break;\n                uVar5 = uVar8;\n                uVar8 = puVar23[2];\n                puVar23 = puVar23 + 1;\n              }\n            }\n          }\n          iVar10 = *(int *)(puVar4 + 10);\n          iVar18 = *(int *)(iVar10 + iVar18 + 8);\n          iVar21 = iVar21 + iVar18;\n          if (iVar18 == 0) goto joined_r0x00094680;\n          iVar18 = iVar21 * 0xc;\n          uVar5 = *(uint *)(iVar10 + iVar21 * 0xc);\n          uVar20 = *(undefined4 *)(iVar10 + iVar18 + 4);\n          uVar11 = uVar5 & 0xffffff00;\n          uVar8 = uVar5 & 0xff;\n        } while (uVar11 != 0xd900);\nLAB_00094804:\n        iVar9 = *(int *)(param_1 + 0x1090);\n        if (*(int *)(param_1 + 0x1158) == 0) {\n          uVar5 = *(uint *)(iVar9 + (uVar8 + 0x304) * 4);\n          uVar11 = uVar5 & 0xffffff00;\n          uVar8 = uVar5 & 0xff;\n        }\n        else {\nLAB_0009491c:\n          uVar5 = *(uint *)(iVar9 + (uVar8 + 0x104) * 4);\n          uVar11 = uVar5 & 0xffffff00;\n          uVar8 = uVar5 & 0xff;\n        }\n        goto joined_r0x00094728;\n      }\n      iVar9 = iVar21 + 1;\n    } while( true );\n  }" if (parenthesized_expression "((bVar1) || ((local_cc == param_4 && (local_d4 < param_5))))" ( (binary_expression "(bVar1) || ((local_cc == param_4 && (local_d4 < param_5)))" (parenthesized_expression "(bVar1)" ( identifier )) || (parenthesized_expression "((local_cc == param_4 && (local_d4 < param_5)))" ( (parenthesized_expression "(local_cc == param_4 && (local_d4 < param_5))" ( (binary_expression "local_cc == param_4 && (local_d4 < param_5)" (binary_expression "local_cc == param_4" identifier == identifier) && (parenthesized_expression "(local_d4 < param_5)" ( (binary_expression "local_d4 < param_5" identifier < identifier) ))) )) ))) )) (compound_statement "{\n    puVar4 = (ushort *)(*pcVar7)(param_1,local_cc,0x1595,0);\n    local_c0 = *(int *)(param_1 + 300);\n    if ((*puVar4 & 0x10) == 0) {\n      if (local_c0 != 0) {\n        iVar9 = *(int *)(puVar4 + 10) + local_c0 * 0xc;\n        do {\n          if ((((*(uint *)(iVar9 + -0xc) != 0x20) &&\n               ((*(uint *)(iVar9 + -0xc) & 0xfffffcff) != 0xd820)) || (*(int *)(iVar9 + -4) != 0))\n             || (local_c0 <= local_d4)) break;\n          local_c0 = local_c0 + -1;\n          iVar9 = iVar9 + -0xc;\n        } while (local_c0 != 0);\n      }\n      if (bVar1) {\n        local_c8 = local_cc;\n        bVar2 = true;\n      }\n      else if (local_cc == param_4) {\n        bVar2 = local_c0 < param_5;\n        local_c8 = local_cc;\n      }\n      else {\n        bVar2 = false;\n        local_c8 = local_cc;\n      }\n    }\n    else if ((*puVar4 & 0x20) == 0) {\n      bVar2 = false;\n      local_c8 = local_cc;\n    }\n    else if (local_c0 == 0) {\n      bVar2 = false;\n      local_c8 = local_cc + -1;\n    }\n    else {\n      bVar2 = false;\n      local_c8 = local_cc;\n      local_c0 = local_c0 + -1;\n    }\n    iVar9 = local_d4;\n    if ((param_6 != 0) && (bVar2 = bVar1, param_5 < local_c0)) {\n      local_c0 = param_5;\n    }\njoined_r0x00094680:\n    do {\n      iVar21 = iVar9;\n      if (((!bVar1) && ((local_cc != param_4 || (param_5 <= iVar21)))) ||\n         ((local_c8 <= local_cc && ((local_c8 != local_cc || (local_c0 <= iVar21))))))\n      goto LAB_00094994;\n      uVar5 = *(uint *)(*(int *)(puVar4 + 10) + iVar21 * 0xc);\n      if (uVar5 != 0xdfff) {\n        uVar11 = uVar5 & 0xffffff00;\n        iVar18 = iVar21 * 0xc;\n        uVar20 = *(undefined4 *)(*(int *)(puVar4 + 10) + iVar18 + 4);\n        uVar8 = uVar5 & 0xff;\n        local_d4 = iVar21;\n        if (uVar11 == 0xd900) goto LAB_00094804;\n        do {\n          if (uVar11 == 0xda00) {\n            uVar5 = *(uint *)(*(int *)(param_1 + 0x1090) + (uVar8 + 4) * 4);\n            uVar11 = uVar5 & 0xffffff00;\n            uVar8 = uVar5 & 0xff;\n          }\n          else if (uVar11 == 0xd800) {\n            iVar9 = *(int *)(param_1 + 0x1090);\n            goto LAB_0009491c;\n          }\njoined_r0x00094728:\n          if (uVar11 == 0xf000) {\n            iVar9 = uVar8 + 0x404;\nLAB_00094740:\n            uVar5 = *(uint *)(*(int *)(param_1 + 0x1090) + iVar9 * 4);\n            uVar8 = uVar5 & 0xff;\n          }\n          else if (uVar11 == 0xf100) {\n            iVar9 = uVar8 + 0x204;\n            goto LAB_00094740;\n          }\n          iVar9 = local_d4 + 1;\n          local_70[1] = 0;\n          iVar10 = iVar9;\n          local_70[0] = uVar5;\n          if (((uVar5 & 0xfffffe00) == 0xf000) && ((uVar5 & 0xe0) != 0)) {\n            if (uVar8 != 0x7f) {\n              cVar16 = (char)uVar5;\n              iVar6 = (*(code *)PTR_is_dbcs_leadbyte_00111b58)\n                                (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),(int)cVar16);\n              local_30 = cVar16;\n              if (iVar6 == 0) {\n                iVar6 = (*(code *)PTR_mb_to_wc_001115cc)\n                                  (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),0,&local_30,1,\n                                   auStack_80,4);\n              }\n              else {\n                local_2f = (undefined1)*(undefined4 *)(*(int *)(puVar4 + 10) + iVar9 * 0xc);\n                iVar6 = (*(code *)PTR_mb_to_wc_001115cc)\n                                  (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),0,&local_30,2,\n                                   auStack_80,4);\n                iVar10 = local_d4 + 2;\n                local_d4 = iVar9;\n              }\n              if (0 < iVar6) {\n                (*(code *)PTR___memcpy_chk_00112078)(local_70,auStack_80,iVar6 * 4,0x40);\n                local_70[iVar6] = 0;\n                uVar5 = local_70[0];\n              }\n              goto LAB_00094778;\n            }\n            FUN_000901cc(&local_98,uVar5,uVar20);\n          }\n          else {\nLAB_00094778:\n            iVar9 = iVar10;\n            if (uVar5 != 0) {\n              uVar8 = local_70[1];\n              puVar23 = local_70;\n              while( true ) {\n                FUN_000901cc(&local_98,uVar5,uVar20);\n                if (uVar8 == 0) break;\n                uVar5 = uVar8;\n                uVar8 = puVar23[2];\n                puVar23 = puVar23 + 1;\n              }\n            }\n          }\n          iVar10 = *(int *)(puVar4 + 10);\n          iVar18 = *(int *)(iVar10 + iVar18 + 8);\n          iVar21 = iVar21 + iVar18;\n          if (iVar18 == 0) goto joined_r0x00094680;\n          iVar18 = iVar21 * 0xc;\n          uVar5 = *(uint *)(iVar10 + iVar21 * 0xc);\n          uVar20 = *(undefined4 *)(iVar10 + iVar18 + 4);\n          uVar11 = uVar5 & 0xffffff00;\n          uVar8 = uVar5 & 0xff;\n        } while (uVar11 != 0xd900);\nLAB_00094804:\n        iVar9 = *(int *)(param_1 + 0x1090);\n        if (*(int *)(param_1 + 0x1158) == 0) {\n          uVar5 = *(uint *)(iVar9 + (uVar8 + 0x304) * 4);\n          uVar11 = uVar5 & 0xffffff00;\n          uVar8 = uVar5 & 0xff;\n        }\n        else {\nLAB_0009491c:\n          uVar5 = *(uint *)(iVar9 + (uVar8 + 0x104) * 4);\n          uVar11 = uVar5 & 0xffffff00;\n          uVar8 = uVar5 & 0xff;\n        }\n        goto joined_r0x00094728;\n      }\n      iVar9 = iVar21 + 1;\n    } while( true );\n  }" { (expression_statement "puVar4 = (ushort *)(*pcVar7)(param_1,local_cc,0x1595,0);" (assignment_expression "puVar4 = (ushort *)(*pcVar7)(param_1,local_cc,0x1595,0)" identifier = (cast_expression "(ushort *)(*pcVar7)(param_1,local_cc,0x1595,0)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*pcVar7)(param_1,local_cc,0x1595,0)" (parenthesized_expression "(*pcVar7)" ( (pointer_expression "*pcVar7" * identifier) )) (argument_list "(param_1,local_cc,0x1595,0)" ( identifier , identifier , number_literal , number_literal ))))) ;) (expression_statement "local_c0 = *(int *)(param_1 + 300);" (assignment_expression "local_c0 = *(int *)(param_1 + 300)" identifier = (pointer_expression "*(int *)(param_1 + 300)" * (cast_expression "(int *)(param_1 + 300)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 300)" ( (binary_expression "param_1 + 300" identifier + number_literal) ))))) ;) (if_statement "if ((*puVar4 & 0x10) == 0) {\n      if (local_c0 != 0) {\n        iVar9 = *(int *)(puVar4 + 10) + local_c0 * 0xc;\n        do {\n          if ((((*(uint *)(iVar9 + -0xc) != 0x20) &&\n               ((*(uint *)(iVar9 + -0xc) & 0xfffffcff) != 0xd820)) || (*(int *)(iVar9 + -4) != 0))\n             || (local_c0 <= local_d4)) break;\n          local_c0 = local_c0 + -1;\n          iVar9 = iVar9 + -0xc;\n        } while (local_c0 != 0);\n      }\n      if (bVar1) {\n        local_c8 = local_cc;\n        bVar2 = true;\n      }\n      else if (local_cc == param_4) {\n        bVar2 = local_c0 < param_5;\n        local_c8 = local_cc;\n      }\n      else {\n        bVar2 = false;\n        local_c8 = local_cc;\n      }\n    }\n    else if ((*puVar4 & 0x20) == 0) {\n      bVar2 = false;\n      local_c8 = local_cc;\n    }\n    else if (local_c0 == 0) {\n      bVar2 = false;\n      local_c8 = local_cc + -1;\n    }\n    else {\n      bVar2 = false;\n      local_c8 = local_cc;\n      local_c0 = local_c0 + -1;\n    }" if (parenthesized_expression "((*puVar4 & 0x10) == 0)" ( (binary_expression "(*puVar4 & 0x10) == 0" (parenthesized_expression "(*puVar4 & 0x10)" ( (binary_expression "*puVar4 & 0x10" (pointer_expression "*puVar4" * identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n      if (local_c0 != 0) {\n        iVar9 = *(int *)(puVar4 + 10) + local_c0 * 0xc;\n        do {\n          if ((((*(uint *)(iVar9 + -0xc) != 0x20) &&\n               ((*(uint *)(iVar9 + -0xc) & 0xfffffcff) != 0xd820)) || (*(int *)(iVar9 + -4) != 0))\n             || (local_c0 <= local_d4)) break;\n          local_c0 = local_c0 + -1;\n          iVar9 = iVar9 + -0xc;\n        } while (local_c0 != 0);\n      }\n      if (bVar1) {\n        local_c8 = local_cc;\n        bVar2 = true;\n      }\n      else if (local_cc == param_4) {\n        bVar2 = local_c0 < param_5;\n        local_c8 = local_cc;\n      }\n      else {\n        bVar2 = false;\n        local_c8 = local_cc;\n      }\n    }" { (if_statement "if (local_c0 != 0) {\n        iVar9 = *(int *)(puVar4 + 10) + local_c0 * 0xc;\n        do {\n          if ((((*(uint *)(iVar9 + -0xc) != 0x20) &&\n               ((*(uint *)(iVar9 + -0xc) & 0xfffffcff) != 0xd820)) || (*(int *)(iVar9 + -4) != 0))\n             || (local_c0 <= local_d4)) break;\n          local_c0 = local_c0 + -1;\n          iVar9 = iVar9 + -0xc;\n        } while (local_c0 != 0);\n      }" if (parenthesized_expression "(local_c0 != 0)" ( (binary_expression "local_c0 != 0" identifier != number_literal) )) (compound_statement "{\n        iVar9 = *(int *)(puVar4 + 10) + local_c0 * 0xc;\n        do {\n          if ((((*(uint *)(iVar9 + -0xc) != 0x20) &&\n               ((*(uint *)(iVar9 + -0xc) & 0xfffffcff) != 0xd820)) || (*(int *)(iVar9 + -4) != 0))\n             || (local_c0 <= local_d4)) break;\n          local_c0 = local_c0 + -1;\n          iVar9 = iVar9 + -0xc;\n        } while (local_c0 != 0);\n      }" { (expression_statement "iVar9 = *(int *)(puVar4 + 10) + local_c0 * 0xc;" (assignment_expression "iVar9 = *(int *)(puVar4 + 10) + local_c0 * 0xc" identifier = (binary_expression "*(int *)(puVar4 + 10) + local_c0 * 0xc" (pointer_expression "*(int *)(puVar4 + 10)" * (cast_expression "(int *)(puVar4 + 10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + 10)" ( (binary_expression "puVar4 + 10" identifier + number_literal) )))) + (binary_expression "local_c0 * 0xc" identifier * number_literal))) ;) (do_statement "do {\n          if ((((*(uint *)(iVar9 + -0xc) != 0x20) &&\n               ((*(uint *)(iVar9 + -0xc) & 0xfffffcff) != 0xd820)) || (*(int *)(iVar9 + -4) != 0))\n             || (local_c0 <= local_d4)) break;\n          local_c0 = local_c0 + -1;\n          iVar9 = iVar9 + -0xc;\n        } while (local_c0 != 0);" do (compound_statement "{\n          if ((((*(uint *)(iVar9 + -0xc) != 0x20) &&\n               ((*(uint *)(iVar9 + -0xc) & 0xfffffcff) != 0xd820)) || (*(int *)(iVar9 + -4) != 0))\n             || (local_c0 <= local_d4)) break;\n          local_c0 = local_c0 + -1;\n          iVar9 = iVar9 + -0xc;\n        }" { (if_statement "if ((((*(uint *)(iVar9 + -0xc) != 0x20) &&\n               ((*(uint *)(iVar9 + -0xc) & 0xfffffcff) != 0xd820)) || (*(int *)(iVar9 + -4) != 0))\n             || (local_c0 <= local_d4)) break;" if (parenthesized_expression "((((*(uint *)(iVar9 + -0xc) != 0x20) &&\n               ((*(uint *)(iVar9 + -0xc) & 0xfffffcff) != 0xd820)) || (*(int *)(iVar9 + -4) != 0))\n             || (local_c0 <= local_d4))" ( (binary_expression "(((*(uint *)(iVar9 + -0xc) != 0x20) &&\n               ((*(uint *)(iVar9 + -0xc) & 0xfffffcff) != 0xd820)) || (*(int *)(iVar9 + -4) != 0))\n             || (local_c0 <= local_d4)" (parenthesized_expression "(((*(uint *)(iVar9 + -0xc) != 0x20) &&\n               ((*(uint *)(iVar9 + -0xc) & 0xfffffcff) != 0xd820)) || (*(int *)(iVar9 + -4) != 0))" ( (binary_expression "((*(uint *)(iVar9 + -0xc) != 0x20) &&\n               ((*(uint *)(iVar9 + -0xc) & 0xfffffcff) != 0xd820)) || (*(int *)(iVar9 + -4) != 0)" (parenthesized_expression "((*(uint *)(iVar9 + -0xc) != 0x20) &&\n               ((*(uint *)(iVar9 + -0xc) & 0xfffffcff) != 0xd820))" ( (binary_expression "(*(uint *)(iVar9 + -0xc) != 0x20) &&\n               ((*(uint *)(iVar9 + -0xc) & 0xfffffcff) != 0xd820)" (parenthesized_expression "(*(uint *)(iVar9 + -0xc) != 0x20)" ( (binary_expression "*(uint *)(iVar9 + -0xc) != 0x20" (pointer_expression "*(uint *)(iVar9 + -0xc)" * (cast_expression "(uint *)(iVar9 + -0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + -0xc)" ( (binary_expression "iVar9 + -0xc" identifier + number_literal) )))) != number_literal) )) && (parenthesized_expression "((*(uint *)(iVar9 + -0xc) & 0xfffffcff) != 0xd820)" ( (binary_expression "(*(uint *)(iVar9 + -0xc) & 0xfffffcff) != 0xd820" (parenthesized_expression "(*(uint *)(iVar9 + -0xc) & 0xfffffcff)" ( (binary_expression "*(uint *)(iVar9 + -0xc) & 0xfffffcff" (pointer_expression "*(uint *)(iVar9 + -0xc)" * (cast_expression "(uint *)(iVar9 + -0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + -0xc)" ( (binary_expression "iVar9 + -0xc" identifier + number_literal) )))) & number_literal) )) != number_literal) ))) )) || (parenthesized_expression "(*(int *)(iVar9 + -4) != 0)" ( (binary_expression "*(int *)(iVar9 + -4) != 0" (pointer_expression "*(int *)(iVar9 + -4)" * (cast_expression "(int *)(iVar9 + -4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + -4)" ( (binary_expression "iVar9 + -4" identifier + number_literal) )))) != number_literal) ))) )) || (parenthesized_expression "(local_c0 <= local_d4)" ( (binary_expression "local_c0 <= local_d4" identifier <= identifier) ))) )) (break_statement "break;" break ;)) (expression_statement "local_c0 = local_c0 + -1;" (assignment_expression "local_c0 = local_c0 + -1" identifier = (binary_expression "local_c0 + -1" identifier + number_literal)) ;) (expression_statement "iVar9 = iVar9 + -0xc;" (assignment_expression "iVar9 = iVar9 + -0xc" identifier = (binary_expression "iVar9 + -0xc" identifier + number_literal)) ;) }) while (parenthesized_expression "(local_c0 != 0)" ( (binary_expression "local_c0 != 0" identifier != number_literal) )) ;) })) (if_statement "if (bVar1) {\n        local_c8 = local_cc;\n        bVar2 = true;\n      }\n      else if (local_cc == param_4) {\n        bVar2 = local_c0 < param_5;\n        local_c8 = local_cc;\n      }\n      else {\n        bVar2 = false;\n        local_c8 = local_cc;\n      }" if (parenthesized_expression "(bVar1)" ( identifier )) (compound_statement "{\n        local_c8 = local_cc;\n        bVar2 = true;\n      }" { (expression_statement "local_c8 = local_cc;" (assignment_expression "local_c8 = local_cc" identifier = identifier) ;) (expression_statement "bVar2 = true;" (assignment_expression "bVar2 = true" identifier = true) ;) }) (else_clause "else if (local_cc == param_4) {\n        bVar2 = local_c0 < param_5;\n        local_c8 = local_cc;\n      }\n      else {\n        bVar2 = false;\n        local_c8 = local_cc;\n      }" else (if_statement "if (local_cc == param_4) {\n        bVar2 = local_c0 < param_5;\n        local_c8 = local_cc;\n      }\n      else {\n        bVar2 = false;\n        local_c8 = local_cc;\n      }" if (parenthesized_expression "(local_cc == param_4)" ( (binary_expression "local_cc == param_4" identifier == identifier) )) (compound_statement "{\n        bVar2 = local_c0 < param_5;\n        local_c8 = local_cc;\n      }" { (expression_statement "bVar2 = local_c0 < param_5;" (assignment_expression "bVar2 = local_c0 < param_5" identifier = (binary_expression "local_c0 < param_5" identifier < identifier)) ;) (expression_statement "local_c8 = local_cc;" (assignment_expression "local_c8 = local_cc" identifier = identifier) ;) }) (else_clause "else {\n        bVar2 = false;\n        local_c8 = local_cc;\n      }" else (compound_statement "{\n        bVar2 = false;\n        local_c8 = local_cc;\n      }" { (expression_statement "bVar2 = false;" (assignment_expression "bVar2 = false" identifier = false) ;) (expression_statement "local_c8 = local_cc;" (assignment_expression "local_c8 = local_cc" identifier = identifier) ;) }))))) }) (else_clause "else if ((*puVar4 & 0x20) == 0) {\n      bVar2 = false;\n      local_c8 = local_cc;\n    }\n    else if (local_c0 == 0) {\n      bVar2 = false;\n      local_c8 = local_cc + -1;\n    }\n    else {\n      bVar2 = false;\n      local_c8 = local_cc;\n      local_c0 = local_c0 + -1;\n    }" else (if_statement "if ((*puVar4 & 0x20) == 0) {\n      bVar2 = false;\n      local_c8 = local_cc;\n    }\n    else if (local_c0 == 0) {\n      bVar2 = false;\n      local_c8 = local_cc + -1;\n    }\n    else {\n      bVar2 = false;\n      local_c8 = local_cc;\n      local_c0 = local_c0 + -1;\n    }" if (parenthesized_expression "((*puVar4 & 0x20) == 0)" ( (binary_expression "(*puVar4 & 0x20) == 0" (parenthesized_expression "(*puVar4 & 0x20)" ( (binary_expression "*puVar4 & 0x20" (pointer_expression "*puVar4" * identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n      bVar2 = false;\n      local_c8 = local_cc;\n    }" { (expression_statement "bVar2 = false;" (assignment_expression "bVar2 = false" identifier = false) ;) (expression_statement "local_c8 = local_cc;" (assignment_expression "local_c8 = local_cc" identifier = identifier) ;) }) (else_clause "else if (local_c0 == 0) {\n      bVar2 = false;\n      local_c8 = local_cc + -1;\n    }\n    else {\n      bVar2 = false;\n      local_c8 = local_cc;\n      local_c0 = local_c0 + -1;\n    }" else (if_statement "if (local_c0 == 0) {\n      bVar2 = false;\n      local_c8 = local_cc + -1;\n    }\n    else {\n      bVar2 = false;\n      local_c8 = local_cc;\n      local_c0 = local_c0 + -1;\n    }" if (parenthesized_expression "(local_c0 == 0)" ( (binary_expression "local_c0 == 0" identifier == number_literal) )) (compound_statement "{\n      bVar2 = false;\n      local_c8 = local_cc + -1;\n    }" { (expression_statement "bVar2 = false;" (assignment_expression "bVar2 = false" identifier = false) ;) (expression_statement "local_c8 = local_cc + -1;" (assignment_expression "local_c8 = local_cc + -1" identifier = (binary_expression "local_cc + -1" identifier + number_literal)) ;) }) (else_clause "else {\n      bVar2 = false;\n      local_c8 = local_cc;\n      local_c0 = local_c0 + -1;\n    }" else (compound_statement "{\n      bVar2 = false;\n      local_c8 = local_cc;\n      local_c0 = local_c0 + -1;\n    }" { (expression_statement "bVar2 = false;" (assignment_expression "bVar2 = false" identifier = false) ;) (expression_statement "local_c8 = local_cc;" (assignment_expression "local_c8 = local_cc" identifier = identifier) ;) (expression_statement "local_c0 = local_c0 + -1;" (assignment_expression "local_c0 = local_c0 + -1" identifier = (binary_expression "local_c0 + -1" identifier + number_literal)) ;) }))))))) (expression_statement "iVar9 = local_d4;" (assignment_expression "iVar9 = local_d4" identifier = identifier) ;) (if_statement "if ((param_6 != 0) && (bVar2 = bVar1, param_5 < local_c0)) {\n      local_c0 = param_5;\n    }" if (parenthesized_expression "((param_6 != 0) && (bVar2 = bVar1, param_5 < local_c0))" ( (binary_expression "(param_6 != 0) && (bVar2 = bVar1, param_5 < local_c0)" (parenthesized_expression "(param_6 != 0)" ( (binary_expression "param_6 != 0" identifier != number_literal) )) && (parenthesized_expression "(bVar2 = bVar1, param_5 < local_c0)" ( (comma_expression "bVar2 = bVar1, param_5 < local_c0" (assignment_expression "bVar2 = bVar1" identifier = identifier) , (binary_expression "param_5 < local_c0" identifier < identifier)) ))) )) (compound_statement "{\n      local_c0 = param_5;\n    }" { (expression_statement "local_c0 = param_5;" (assignment_expression "local_c0 = param_5" identifier = identifier) ;) })) (labeled_statement "joined_r0x00094680:\n    do {\n      iVar21 = iVar9;\n      if (((!bVar1) && ((local_cc != param_4 || (param_5 <= iVar21)))) ||\n         ((local_c8 <= local_cc && ((local_c8 != local_cc || (local_c0 <= iVar21))))))\n      goto LAB_00094994;\n      uVar5 = *(uint *)(*(int *)(puVar4 + 10) + iVar21 * 0xc);\n      if (uVar5 != 0xdfff) {\n        uVar11 = uVar5 & 0xffffff00;\n        iVar18 = iVar21 * 0xc;\n        uVar20 = *(undefined4 *)(*(int *)(puVar4 + 10) + iVar18 + 4);\n        uVar8 = uVar5 & 0xff;\n        local_d4 = iVar21;\n        if (uVar11 == 0xd900) goto LAB_00094804;\n        do {\n          if (uVar11 == 0xda00) {\n            uVar5 = *(uint *)(*(int *)(param_1 + 0x1090) + (uVar8 + 4) * 4);\n            uVar11 = uVar5 & 0xffffff00;\n            uVar8 = uVar5 & 0xff;\n          }\n          else if (uVar11 == 0xd800) {\n            iVar9 = *(int *)(param_1 + 0x1090);\n            goto LAB_0009491c;\n          }\njoined_r0x00094728:\n          if (uVar11 == 0xf000) {\n            iVar9 = uVar8 + 0x404;\nLAB_00094740:\n            uVar5 = *(uint *)(*(int *)(param_1 + 0x1090) + iVar9 * 4);\n            uVar8 = uVar5 & 0xff;\n          }\n          else if (uVar11 == 0xf100) {\n            iVar9 = uVar8 + 0x204;\n            goto LAB_00094740;\n          }\n          iVar9 = local_d4 + 1;\n          local_70[1] = 0;\n          iVar10 = iVar9;\n          local_70[0] = uVar5;\n          if (((uVar5 & 0xfffffe00) == 0xf000) && ((uVar5 & 0xe0) != 0)) {\n            if (uVar8 != 0x7f) {\n              cVar16 = (char)uVar5;\n              iVar6 = (*(code *)PTR_is_dbcs_leadbyte_00111b58)\n                                (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),(int)cVar16);\n              local_30 = cVar16;\n              if (iVar6 == 0) {\n                iVar6 = (*(code *)PTR_mb_to_wc_001115cc)\n                                  (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),0,&local_30,1,\n                                   auStack_80,4);\n              }\n              else {\n                local_2f = (undefined1)*(undefined4 *)(*(int *)(puVar4 + 10) + iVar9 * 0xc);\n                iVar6 = (*(code *)PTR_mb_to_wc_001115cc)\n                                  (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),0,&local_30,2,\n                                   auStack_80,4);\n                iVar10 = local_d4 + 2;\n                local_d4 = iVar9;\n              }\n              if (0 < iVar6) {\n                (*(code *)PTR___memcpy_chk_00112078)(local_70,auStack_80,iVar6 * 4,0x40);\n                local_70[iVar6] = 0;\n                uVar5 = local_70[0];\n              }\n              goto LAB_00094778;\n            }\n            FUN_000901cc(&local_98,uVar5,uVar20);\n          }\n          else {\nLAB_00094778:\n            iVar9 = iVar10;\n            if (uVar5 != 0) {\n              uVar8 = local_70[1];\n              puVar23 = local_70;\n              while( true ) {\n                FUN_000901cc(&local_98,uVar5,uVar20);\n                if (uVar8 == 0) break;\n                uVar5 = uVar8;\n                uVar8 = puVar23[2];\n                puVar23 = puVar23 + 1;\n              }\n            }\n          }\n          iVar10 = *(int *)(puVar4 + 10);\n          iVar18 = *(int *)(iVar10 + iVar18 + 8);\n          iVar21 = iVar21 + iVar18;\n          if (iVar18 == 0) goto joined_r0x00094680;\n          iVar18 = iVar21 * 0xc;\n          uVar5 = *(uint *)(iVar10 + iVar21 * 0xc);\n          uVar20 = *(undefined4 *)(iVar10 + iVar18 + 4);\n          uVar11 = uVar5 & 0xffffff00;\n          uVar8 = uVar5 & 0xff;\n        } while (uVar11 != 0xd900);\nLAB_00094804:\n        iVar9 = *(int *)(param_1 + 0x1090);\n        if (*(int *)(param_1 + 0x1158) == 0) {\n          uVar5 = *(uint *)(iVar9 + (uVar8 + 0x304) * 4);\n          uVar11 = uVar5 & 0xffffff00;\n          uVar8 = uVar5 & 0xff;\n        }\n        else {\nLAB_0009491c:\n          uVar5 = *(uint *)(iVar9 + (uVar8 + 0x104) * 4);\n          uVar11 = uVar5 & 0xffffff00;\n          uVar8 = uVar5 & 0xff;\n        }\n        goto joined_r0x00094728;\n      }\n      iVar9 = iVar21 + 1;\n    } while( true );" statement_identifier : (do_statement "do {\n      iVar21 = iVar9;\n      if (((!bVar1) && ((local_cc != param_4 || (param_5 <= iVar21)))) ||\n         ((local_c8 <= local_cc && ((local_c8 != local_cc || (local_c0 <= iVar21))))))\n      goto LAB_00094994;\n      uVar5 = *(uint *)(*(int *)(puVar4 + 10) + iVar21 * 0xc);\n      if (uVar5 != 0xdfff) {\n        uVar11 = uVar5 & 0xffffff00;\n        iVar18 = iVar21 * 0xc;\n        uVar20 = *(undefined4 *)(*(int *)(puVar4 + 10) + iVar18 + 4);\n        uVar8 = uVar5 & 0xff;\n        local_d4 = iVar21;\n        if (uVar11 == 0xd900) goto LAB_00094804;\n        do {\n          if (uVar11 == 0xda00) {\n            uVar5 = *(uint *)(*(int *)(param_1 + 0x1090) + (uVar8 + 4) * 4);\n            uVar11 = uVar5 & 0xffffff00;\n            uVar8 = uVar5 & 0xff;\n          }\n          else if (uVar11 == 0xd800) {\n            iVar9 = *(int *)(param_1 + 0x1090);\n            goto LAB_0009491c;\n          }\njoined_r0x00094728:\n          if (uVar11 == 0xf000) {\n            iVar9 = uVar8 + 0x404;\nLAB_00094740:\n            uVar5 = *(uint *)(*(int *)(param_1 + 0x1090) + iVar9 * 4);\n            uVar8 = uVar5 & 0xff;\n          }\n          else if (uVar11 == 0xf100) {\n            iVar9 = uVar8 + 0x204;\n            goto LAB_00094740;\n          }\n          iVar9 = local_d4 + 1;\n          local_70[1] = 0;\n          iVar10 = iVar9;\n          local_70[0] = uVar5;\n          if (((uVar5 & 0xfffffe00) == 0xf000) && ((uVar5 & 0xe0) != 0)) {\n            if (uVar8 != 0x7f) {\n              cVar16 = (char)uVar5;\n              iVar6 = (*(code *)PTR_is_dbcs_leadbyte_00111b58)\n                                (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),(int)cVar16);\n              local_30 = cVar16;\n              if (iVar6 == 0) {\n                iVar6 = (*(code *)PTR_mb_to_wc_001115cc)\n                                  (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),0,&local_30,1,\n                                   auStack_80,4);\n              }\n              else {\n                local_2f = (undefined1)*(undefined4 *)(*(int *)(puVar4 + 10) + iVar9 * 0xc);\n                iVar6 = (*(code *)PTR_mb_to_wc_001115cc)\n                                  (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),0,&local_30,2,\n                                   auStack_80,4);\n                iVar10 = local_d4 + 2;\n                local_d4 = iVar9;\n              }\n              if (0 < iVar6) {\n                (*(code *)PTR___memcpy_chk_00112078)(local_70,auStack_80,iVar6 * 4,0x40);\n                local_70[iVar6] = 0;\n                uVar5 = local_70[0];\n              }\n              goto LAB_00094778;\n            }\n            FUN_000901cc(&local_98,uVar5,uVar20);\n          }\n          else {\nLAB_00094778:\n            iVar9 = iVar10;\n            if (uVar5 != 0) {\n              uVar8 = local_70[1];\n              puVar23 = local_70;\n              while( true ) {\n                FUN_000901cc(&local_98,uVar5,uVar20);\n                if (uVar8 == 0) break;\n                uVar5 = uVar8;\n                uVar8 = puVar23[2];\n                puVar23 = puVar23 + 1;\n              }\n            }\n          }\n          iVar10 = *(int *)(puVar4 + 10);\n          iVar18 = *(int *)(iVar10 + iVar18 + 8);\n          iVar21 = iVar21 + iVar18;\n          if (iVar18 == 0) goto joined_r0x00094680;\n          iVar18 = iVar21 * 0xc;\n          uVar5 = *(uint *)(iVar10 + iVar21 * 0xc);\n          uVar20 = *(undefined4 *)(iVar10 + iVar18 + 4);\n          uVar11 = uVar5 & 0xffffff00;\n          uVar8 = uVar5 & 0xff;\n        } while (uVar11 != 0xd900);\nLAB_00094804:\n        iVar9 = *(int *)(param_1 + 0x1090);\n        if (*(int *)(param_1 + 0x1158) == 0) {\n          uVar5 = *(uint *)(iVar9 + (uVar8 + 0x304) * 4);\n          uVar11 = uVar5 & 0xffffff00;\n          uVar8 = uVar5 & 0xff;\n        }\n        else {\nLAB_0009491c:\n          uVar5 = *(uint *)(iVar9 + (uVar8 + 0x104) * 4);\n          uVar11 = uVar5 & 0xffffff00;\n          uVar8 = uVar5 & 0xff;\n        }\n        goto joined_r0x00094728;\n      }\n      iVar9 = iVar21 + 1;\n    } while( true );" do (compound_statement "{\n      iVar21 = iVar9;\n      if (((!bVar1) && ((local_cc != param_4 || (param_5 <= iVar21)))) ||\n         ((local_c8 <= local_cc && ((local_c8 != local_cc || (local_c0 <= iVar21))))))\n      goto LAB_00094994;\n      uVar5 = *(uint *)(*(int *)(puVar4 + 10) + iVar21 * 0xc);\n      if (uVar5 != 0xdfff) {\n        uVar11 = uVar5 & 0xffffff00;\n        iVar18 = iVar21 * 0xc;\n        uVar20 = *(undefined4 *)(*(int *)(puVar4 + 10) + iVar18 + 4);\n        uVar8 = uVar5 & 0xff;\n        local_d4 = iVar21;\n        if (uVar11 == 0xd900) goto LAB_00094804;\n        do {\n          if (uVar11 == 0xda00) {\n            uVar5 = *(uint *)(*(int *)(param_1 + 0x1090) + (uVar8 + 4) * 4);\n            uVar11 = uVar5 & 0xffffff00;\n            uVar8 = uVar5 & 0xff;\n          }\n          else if (uVar11 == 0xd800) {\n            iVar9 = *(int *)(param_1 + 0x1090);\n            goto LAB_0009491c;\n          }\njoined_r0x00094728:\n          if (uVar11 == 0xf000) {\n            iVar9 = uVar8 + 0x404;\nLAB_00094740:\n            uVar5 = *(uint *)(*(int *)(param_1 + 0x1090) + iVar9 * 4);\n            uVar8 = uVar5 & 0xff;\n          }\n          else if (uVar11 == 0xf100) {\n            iVar9 = uVar8 + 0x204;\n            goto LAB_00094740;\n          }\n          iVar9 = local_d4 + 1;\n          local_70[1] = 0;\n          iVar10 = iVar9;\n          local_70[0] = uVar5;\n          if (((uVar5 & 0xfffffe00) == 0xf000) && ((uVar5 & 0xe0) != 0)) {\n            if (uVar8 != 0x7f) {\n              cVar16 = (char)uVar5;\n              iVar6 = (*(code *)PTR_is_dbcs_leadbyte_00111b58)\n                                (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),(int)cVar16);\n              local_30 = cVar16;\n              if (iVar6 == 0) {\n                iVar6 = (*(code *)PTR_mb_to_wc_001115cc)\n                                  (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),0,&local_30,1,\n                                   auStack_80,4);\n              }\n              else {\n                local_2f = (undefined1)*(undefined4 *)(*(int *)(puVar4 + 10) + iVar9 * 0xc);\n                iVar6 = (*(code *)PTR_mb_to_wc_001115cc)\n                                  (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),0,&local_30,2,\n                                   auStack_80,4);\n                iVar10 = local_d4 + 2;\n                local_d4 = iVar9;\n              }\n              if (0 < iVar6) {\n                (*(code *)PTR___memcpy_chk_00112078)(local_70,auStack_80,iVar6 * 4,0x40);\n                local_70[iVar6] = 0;\n                uVar5 = local_70[0];\n              }\n              goto LAB_00094778;\n            }\n            FUN_000901cc(&local_98,uVar5,uVar20);\n          }\n          else {\nLAB_00094778:\n            iVar9 = iVar10;\n            if (uVar5 != 0) {\n              uVar8 = local_70[1];\n              puVar23 = local_70;\n              while( true ) {\n                FUN_000901cc(&local_98,uVar5,uVar20);\n                if (uVar8 == 0) break;\n                uVar5 = uVar8;\n                uVar8 = puVar23[2];\n                puVar23 = puVar23 + 1;\n              }\n            }\n          }\n          iVar10 = *(int *)(puVar4 + 10);\n          iVar18 = *(int *)(iVar10 + iVar18 + 8);\n          iVar21 = iVar21 + iVar18;\n          if (iVar18 == 0) goto joined_r0x00094680;\n          iVar18 = iVar21 * 0xc;\n          uVar5 = *(uint *)(iVar10 + iVar21 * 0xc);\n          uVar20 = *(undefined4 *)(iVar10 + iVar18 + 4);\n          uVar11 = uVar5 & 0xffffff00;\n          uVar8 = uVar5 & 0xff;\n        } while (uVar11 != 0xd900);\nLAB_00094804:\n        iVar9 = *(int *)(param_1 + 0x1090);\n        if (*(int *)(param_1 + 0x1158) == 0) {\n          uVar5 = *(uint *)(iVar9 + (uVar8 + 0x304) * 4);\n          uVar11 = uVar5 & 0xffffff00;\n          uVar8 = uVar5 & 0xff;\n        }\n        else {\nLAB_0009491c:\n          uVar5 = *(uint *)(iVar9 + (uVar8 + 0x104) * 4);\n          uVar11 = uVar5 & 0xffffff00;\n          uVar8 = uVar5 & 0xff;\n        }\n        goto joined_r0x00094728;\n      }\n      iVar9 = iVar21 + 1;\n    }" { (expression_statement "iVar21 = iVar9;" (assignment_expression "iVar21 = iVar9" identifier = identifier) ;) (if_statement "if (((!bVar1) && ((local_cc != param_4 || (param_5 <= iVar21)))) ||\n         ((local_c8 <= local_cc && ((local_c8 != local_cc || (local_c0 <= iVar21))))))\n      goto LAB_00094994;" if (parenthesized_expression "(((!bVar1) && ((local_cc != param_4 || (param_5 <= iVar21)))) ||\n         ((local_c8 <= local_cc && ((local_c8 != local_cc || (local_c0 <= iVar21))))))" ( (binary_expression "((!bVar1) && ((local_cc != param_4 || (param_5 <= iVar21)))) ||\n         ((local_c8 <= local_cc && ((local_c8 != local_cc || (local_c0 <= iVar21)))))" (parenthesized_expression "((!bVar1) && ((local_cc != param_4 || (param_5 <= iVar21))))" ( (binary_expression "(!bVar1) && ((local_cc != param_4 || (param_5 <= iVar21)))" (parenthesized_expression "(!bVar1)" ( (unary_expression "!bVar1" ! identifier) )) && (parenthesized_expression "((local_cc != param_4 || (param_5 <= iVar21)))" ( (parenthesized_expression "(local_cc != param_4 || (param_5 <= iVar21))" ( (binary_expression "local_cc != param_4 || (param_5 <= iVar21)" (binary_expression "local_cc != param_4" identifier != identifier) || (parenthesized_expression "(param_5 <= iVar21)" ( (binary_expression "param_5 <= iVar21" identifier <= identifier) ))) )) ))) )) || (parenthesized_expression "((local_c8 <= local_cc && ((local_c8 != local_cc || (local_c0 <= iVar21)))))" ( (parenthesized_expression "(local_c8 <= local_cc && ((local_c8 != local_cc || (local_c0 <= iVar21))))" ( (binary_expression "local_c8 <= local_cc && ((local_c8 != local_cc || (local_c0 <= iVar21)))" (binary_expression "local_c8 <= local_cc" identifier <= identifier) && (parenthesized_expression "((local_c8 != local_cc || (local_c0 <= iVar21)))" ( (parenthesized_expression "(local_c8 != local_cc || (local_c0 <= iVar21))" ( (binary_expression "local_c8 != local_cc || (local_c0 <= iVar21)" (binary_expression "local_c8 != local_cc" identifier != identifier) || (parenthesized_expression "(local_c0 <= iVar21)" ( (binary_expression "local_c0 <= iVar21" identifier <= identifier) ))) )) ))) )) ))) )) (goto_statement "goto LAB_00094994;" goto statement_identifier ;)) (expression_statement "uVar5 = *(uint *)(*(int *)(puVar4 + 10) + iVar21 * 0xc);" (assignment_expression "uVar5 = *(uint *)(*(int *)(puVar4 + 10) + iVar21 * 0xc)" identifier = (pointer_expression "*(uint *)(*(int *)(puVar4 + 10) + iVar21 * 0xc)" * (cast_expression "(uint *)(*(int *)(puVar4 + 10) + iVar21 * 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar4 + 10) + iVar21 * 0xc)" ( (binary_expression "*(int *)(puVar4 + 10) + iVar21 * 0xc" (pointer_expression "*(int *)(puVar4 + 10)" * (cast_expression "(int *)(puVar4 + 10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + 10)" ( (binary_expression "puVar4 + 10" identifier + number_literal) )))) + (binary_expression "iVar21 * 0xc" identifier * number_literal)) ))))) ;) (if_statement "if (uVar5 != 0xdfff) {\n        uVar11 = uVar5 & 0xffffff00;\n        iVar18 = iVar21 * 0xc;\n        uVar20 = *(undefined4 *)(*(int *)(puVar4 + 10) + iVar18 + 4);\n        uVar8 = uVar5 & 0xff;\n        local_d4 = iVar21;\n        if (uVar11 == 0xd900) goto LAB_00094804;\n        do {\n          if (uVar11 == 0xda00) {\n            uVar5 = *(uint *)(*(int *)(param_1 + 0x1090) + (uVar8 + 4) * 4);\n            uVar11 = uVar5 & 0xffffff00;\n            uVar8 = uVar5 & 0xff;\n          }\n          else if (uVar11 == 0xd800) {\n            iVar9 = *(int *)(param_1 + 0x1090);\n            goto LAB_0009491c;\n          }\njoined_r0x00094728:\n          if (uVar11 == 0xf000) {\n            iVar9 = uVar8 + 0x404;\nLAB_00094740:\n            uVar5 = *(uint *)(*(int *)(param_1 + 0x1090) + iVar9 * 4);\n            uVar8 = uVar5 & 0xff;\n          }\n          else if (uVar11 == 0xf100) {\n            iVar9 = uVar8 + 0x204;\n            goto LAB_00094740;\n          }\n          iVar9 = local_d4 + 1;\n          local_70[1] = 0;\n          iVar10 = iVar9;\n          local_70[0] = uVar5;\n          if (((uVar5 & 0xfffffe00) == 0xf000) && ((uVar5 & 0xe0) != 0)) {\n            if (uVar8 != 0x7f) {\n              cVar16 = (char)uVar5;\n              iVar6 = (*(code *)PTR_is_dbcs_leadbyte_00111b58)\n                                (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),(int)cVar16);\n              local_30 = cVar16;\n              if (iVar6 == 0) {\n                iVar6 = (*(code *)PTR_mb_to_wc_001115cc)\n                                  (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),0,&local_30,1,\n                                   auStack_80,4);\n              }\n              else {\n                local_2f = (undefined1)*(undefined4 *)(*(int *)(puVar4 + 10) + iVar9 * 0xc);\n                iVar6 = (*(code *)PTR_mb_to_wc_001115cc)\n                                  (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),0,&local_30,2,\n                                   auStack_80,4);\n                iVar10 = local_d4 + 2;\n                local_d4 = iVar9;\n              }\n              if (0 < iVar6) {\n                (*(code *)PTR___memcpy_chk_00112078)(local_70,auStack_80,iVar6 * 4,0x40);\n                local_70[iVar6] = 0;\n                uVar5 = local_70[0];\n              }\n              goto LAB_00094778;\n            }\n            FUN_000901cc(&local_98,uVar5,uVar20);\n          }\n          else {\nLAB_00094778:\n            iVar9 = iVar10;\n            if (uVar5 != 0) {\n              uVar8 = local_70[1];\n              puVar23 = local_70;\n              while( true ) {\n                FUN_000901cc(&local_98,uVar5,uVar20);\n                if (uVar8 == 0) break;\n                uVar5 = uVar8;\n                uVar8 = puVar23[2];\n                puVar23 = puVar23 + 1;\n              }\n            }\n          }\n          iVar10 = *(int *)(puVar4 + 10);\n          iVar18 = *(int *)(iVar10 + iVar18 + 8);\n          iVar21 = iVar21 + iVar18;\n          if (iVar18 == 0) goto joined_r0x00094680;\n          iVar18 = iVar21 * 0xc;\n          uVar5 = *(uint *)(iVar10 + iVar21 * 0xc);\n          uVar20 = *(undefined4 *)(iVar10 + iVar18 + 4);\n          uVar11 = uVar5 & 0xffffff00;\n          uVar8 = uVar5 & 0xff;\n        } while (uVar11 != 0xd900);\nLAB_00094804:\n        iVar9 = *(int *)(param_1 + 0x1090);\n        if (*(int *)(param_1 + 0x1158) == 0) {\n          uVar5 = *(uint *)(iVar9 + (uVar8 + 0x304) * 4);\n          uVar11 = uVar5 & 0xffffff00;\n          uVar8 = uVar5 & 0xff;\n        }\n        else {\nLAB_0009491c:\n          uVar5 = *(uint *)(iVar9 + (uVar8 + 0x104) * 4);\n          uVar11 = uVar5 & 0xffffff00;\n          uVar8 = uVar5 & 0xff;\n        }\n        goto joined_r0x00094728;\n      }" if (parenthesized_expression "(uVar5 != 0xdfff)" ( (binary_expression "uVar5 != 0xdfff" identifier != number_literal) )) (compound_statement "{\n        uVar11 = uVar5 & 0xffffff00;\n        iVar18 = iVar21 * 0xc;\n        uVar20 = *(undefined4 *)(*(int *)(puVar4 + 10) + iVar18 + 4);\n        uVar8 = uVar5 & 0xff;\n        local_d4 = iVar21;\n        if (uVar11 == 0xd900) goto LAB_00094804;\n        do {\n          if (uVar11 == 0xda00) {\n            uVar5 = *(uint *)(*(int *)(param_1 + 0x1090) + (uVar8 + 4) * 4);\n            uVar11 = uVar5 & 0xffffff00;\n            uVar8 = uVar5 & 0xff;\n          }\n          else if (uVar11 == 0xd800) {\n            iVar9 = *(int *)(param_1 + 0x1090);\n            goto LAB_0009491c;\n          }\njoined_r0x00094728:\n          if (uVar11 == 0xf000) {\n            iVar9 = uVar8 + 0x404;\nLAB_00094740:\n            uVar5 = *(uint *)(*(int *)(param_1 + 0x1090) + iVar9 * 4);\n            uVar8 = uVar5 & 0xff;\n          }\n          else if (uVar11 == 0xf100) {\n            iVar9 = uVar8 + 0x204;\n            goto LAB_00094740;\n          }\n          iVar9 = local_d4 + 1;\n          local_70[1] = 0;\n          iVar10 = iVar9;\n          local_70[0] = uVar5;\n          if (((uVar5 & 0xfffffe00) == 0xf000) && ((uVar5 & 0xe0) != 0)) {\n            if (uVar8 != 0x7f) {\n              cVar16 = (char)uVar5;\n              iVar6 = (*(code *)PTR_is_dbcs_leadbyte_00111b58)\n                                (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),(int)cVar16);\n              local_30 = cVar16;\n              if (iVar6 == 0) {\n                iVar6 = (*(code *)PTR_mb_to_wc_001115cc)\n                                  (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),0,&local_30,1,\n                                   auStack_80,4);\n              }\n              else {\n                local_2f = (undefined1)*(undefined4 *)(*(int *)(puVar4 + 10) + iVar9 * 0xc);\n                iVar6 = (*(code *)PTR_mb_to_wc_001115cc)\n                                  (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),0,&local_30,2,\n                                   auStack_80,4);\n                iVar10 = local_d4 + 2;\n                local_d4 = iVar9;\n              }\n              if (0 < iVar6) {\n                (*(code *)PTR___memcpy_chk_00112078)(local_70,auStack_80,iVar6 * 4,0x40);\n                local_70[iVar6] = 0;\n                uVar5 = local_70[0];\n              }\n              goto LAB_00094778;\n            }\n            FUN_000901cc(&local_98,uVar5,uVar20);\n          }\n          else {\nLAB_00094778:\n            iVar9 = iVar10;\n            if (uVar5 != 0) {\n              uVar8 = local_70[1];\n              puVar23 = local_70;\n              while( true ) {\n                FUN_000901cc(&local_98,uVar5,uVar20);\n                if (uVar8 == 0) break;\n                uVar5 = uVar8;\n                uVar8 = puVar23[2];\n                puVar23 = puVar23 + 1;\n              }\n            }\n          }\n          iVar10 = *(int *)(puVar4 + 10);\n          iVar18 = *(int *)(iVar10 + iVar18 + 8);\n          iVar21 = iVar21 + iVar18;\n          if (iVar18 == 0) goto joined_r0x00094680;\n          iVar18 = iVar21 * 0xc;\n          uVar5 = *(uint *)(iVar10 + iVar21 * 0xc);\n          uVar20 = *(undefined4 *)(iVar10 + iVar18 + 4);\n          uVar11 = uVar5 & 0xffffff00;\n          uVar8 = uVar5 & 0xff;\n        } while (uVar11 != 0xd900);\nLAB_00094804:\n        iVar9 = *(int *)(param_1 + 0x1090);\n        if (*(int *)(param_1 + 0x1158) == 0) {\n          uVar5 = *(uint *)(iVar9 + (uVar8 + 0x304) * 4);\n          uVar11 = uVar5 & 0xffffff00;\n          uVar8 = uVar5 & 0xff;\n        }\n        else {\nLAB_0009491c:\n          uVar5 = *(uint *)(iVar9 + (uVar8 + 0x104) * 4);\n          uVar11 = uVar5 & 0xffffff00;\n          uVar8 = uVar5 & 0xff;\n        }\n        goto joined_r0x00094728;\n      }" { (expression_statement "uVar11 = uVar5 & 0xffffff00;" (assignment_expression "uVar11 = uVar5 & 0xffffff00" identifier = (binary_expression "uVar5 & 0xffffff00" identifier & number_literal)) ;) (expression_statement "iVar18 = iVar21 * 0xc;" (assignment_expression "iVar18 = iVar21 * 0xc" identifier = (binary_expression "iVar21 * 0xc" identifier * number_literal)) ;) (expression_statement "uVar20 = *(undefined4 *)(*(int *)(puVar4 + 10) + iVar18 + 4);" (assignment_expression "uVar20 = *(undefined4 *)(*(int *)(puVar4 + 10) + iVar18 + 4)" identifier = (pointer_expression "*(undefined4 *)(*(int *)(puVar4 + 10) + iVar18 + 4)" * (cast_expression "(undefined4 *)(*(int *)(puVar4 + 10) + iVar18 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar4 + 10) + iVar18 + 4)" ( (binary_expression "*(int *)(puVar4 + 10) + iVar18 + 4" (binary_expression "*(int *)(puVar4 + 10) + iVar18" (pointer_expression "*(int *)(puVar4 + 10)" * (cast_expression "(int *)(puVar4 + 10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + 10)" ( (binary_expression "puVar4 + 10" identifier + number_literal) )))) + identifier) + number_literal) ))))) ;) (expression_statement "uVar8 = uVar5 & 0xff;" (assignment_expression "uVar8 = uVar5 & 0xff" identifier = (binary_expression "uVar5 & 0xff" identifier & number_literal)) ;) (expression_statement "local_d4 = iVar21;" (assignment_expression "local_d4 = iVar21" identifier = identifier) ;) (if_statement "if (uVar11 == 0xd900) goto LAB_00094804;" if (parenthesized_expression "(uVar11 == 0xd900)" ( (binary_expression "uVar11 == 0xd900" identifier == number_literal) )) (goto_statement "goto LAB_00094804;" goto statement_identifier ;)) (do_statement "do {\n          if (uVar11 == 0xda00) {\n            uVar5 = *(uint *)(*(int *)(param_1 + 0x1090) + (uVar8 + 4) * 4);\n            uVar11 = uVar5 & 0xffffff00;\n            uVar8 = uVar5 & 0xff;\n          }\n          else if (uVar11 == 0xd800) {\n            iVar9 = *(int *)(param_1 + 0x1090);\n            goto LAB_0009491c;\n          }\njoined_r0x00094728:\n          if (uVar11 == 0xf000) {\n            iVar9 = uVar8 + 0x404;\nLAB_00094740:\n            uVar5 = *(uint *)(*(int *)(param_1 + 0x1090) + iVar9 * 4);\n            uVar8 = uVar5 & 0xff;\n          }\n          else if (uVar11 == 0xf100) {\n            iVar9 = uVar8 + 0x204;\n            goto LAB_00094740;\n          }\n          iVar9 = local_d4 + 1;\n          local_70[1] = 0;\n          iVar10 = iVar9;\n          local_70[0] = uVar5;\n          if (((uVar5 & 0xfffffe00) == 0xf000) && ((uVar5 & 0xe0) != 0)) {\n            if (uVar8 != 0x7f) {\n              cVar16 = (char)uVar5;\n              iVar6 = (*(code *)PTR_is_dbcs_leadbyte_00111b58)\n                                (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),(int)cVar16);\n              local_30 = cVar16;\n              if (iVar6 == 0) {\n                iVar6 = (*(code *)PTR_mb_to_wc_001115cc)\n                                  (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),0,&local_30,1,\n                                   auStack_80,4);\n              }\n              else {\n                local_2f = (undefined1)*(undefined4 *)(*(int *)(puVar4 + 10) + iVar9 * 0xc);\n                iVar6 = (*(code *)PTR_mb_to_wc_001115cc)\n                                  (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),0,&local_30,2,\n                                   auStack_80,4);\n                iVar10 = local_d4 + 2;\n                local_d4 = iVar9;\n              }\n              if (0 < iVar6) {\n                (*(code *)PTR___memcpy_chk_00112078)(local_70,auStack_80,iVar6 * 4,0x40);\n                local_70[iVar6] = 0;\n                uVar5 = local_70[0];\n              }\n              goto LAB_00094778;\n            }\n            FUN_000901cc(&local_98,uVar5,uVar20);\n          }\n          else {\nLAB_00094778:\n            iVar9 = iVar10;\n            if (uVar5 != 0) {\n              uVar8 = local_70[1];\n              puVar23 = local_70;\n              while( true ) {\n                FUN_000901cc(&local_98,uVar5,uVar20);\n                if (uVar8 == 0) break;\n                uVar5 = uVar8;\n                uVar8 = puVar23[2];\n                puVar23 = puVar23 + 1;\n              }\n            }\n          }\n          iVar10 = *(int *)(puVar4 + 10);\n          iVar18 = *(int *)(iVar10 + iVar18 + 8);\n          iVar21 = iVar21 + iVar18;\n          if (iVar18 == 0) goto joined_r0x00094680;\n          iVar18 = iVar21 * 0xc;\n          uVar5 = *(uint *)(iVar10 + iVar21 * 0xc);\n          uVar20 = *(undefined4 *)(iVar10 + iVar18 + 4);\n          uVar11 = uVar5 & 0xffffff00;\n          uVar8 = uVar5 & 0xff;\n        } while (uVar11 != 0xd900);" do (compound_statement "{\n          if (uVar11 == 0xda00) {\n            uVar5 = *(uint *)(*(int *)(param_1 + 0x1090) + (uVar8 + 4) * 4);\n            uVar11 = uVar5 & 0xffffff00;\n            uVar8 = uVar5 & 0xff;\n          }\n          else if (uVar11 == 0xd800) {\n            iVar9 = *(int *)(param_1 + 0x1090);\n            goto LAB_0009491c;\n          }\njoined_r0x00094728:\n          if (uVar11 == 0xf000) {\n            iVar9 = uVar8 + 0x404;\nLAB_00094740:\n            uVar5 = *(uint *)(*(int *)(param_1 + 0x1090) + iVar9 * 4);\n            uVar8 = uVar5 & 0xff;\n          }\n          else if (uVar11 == 0xf100) {\n            iVar9 = uVar8 + 0x204;\n            goto LAB_00094740;\n          }\n          iVar9 = local_d4 + 1;\n          local_70[1] = 0;\n          iVar10 = iVar9;\n          local_70[0] = uVar5;\n          if (((uVar5 & 0xfffffe00) == 0xf000) && ((uVar5 & 0xe0) != 0)) {\n            if (uVar8 != 0x7f) {\n              cVar16 = (char)uVar5;\n              iVar6 = (*(code *)PTR_is_dbcs_leadbyte_00111b58)\n                                (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),(int)cVar16);\n              local_30 = cVar16;\n              if (iVar6 == 0) {\n                iVar6 = (*(code *)PTR_mb_to_wc_001115cc)\n                                  (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),0,&local_30,1,\n                                   auStack_80,4);\n              }\n              else {\n                local_2f = (undefined1)*(undefined4 *)(*(int *)(puVar4 + 10) + iVar9 * 0xc);\n                iVar6 = (*(code *)PTR_mb_to_wc_001115cc)\n                                  (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),0,&local_30,2,\n                                   auStack_80,4);\n                iVar10 = local_d4 + 2;\n                local_d4 = iVar9;\n              }\n              if (0 < iVar6) {\n                (*(code *)PTR___memcpy_chk_00112078)(local_70,auStack_80,iVar6 * 4,0x40);\n                local_70[iVar6] = 0;\n                uVar5 = local_70[0];\n              }\n              goto LAB_00094778;\n            }\n            FUN_000901cc(&local_98,uVar5,uVar20);\n          }\n          else {\nLAB_00094778:\n            iVar9 = iVar10;\n            if (uVar5 != 0) {\n              uVar8 = local_70[1];\n              puVar23 = local_70;\n              while( true ) {\n                FUN_000901cc(&local_98,uVar5,uVar20);\n                if (uVar8 == 0) break;\n                uVar5 = uVar8;\n                uVar8 = puVar23[2];\n                puVar23 = puVar23 + 1;\n              }\n            }\n          }\n          iVar10 = *(int *)(puVar4 + 10);\n          iVar18 = *(int *)(iVar10 + iVar18 + 8);\n          iVar21 = iVar21 + iVar18;\n          if (iVar18 == 0) goto joined_r0x00094680;\n          iVar18 = iVar21 * 0xc;\n          uVar5 = *(uint *)(iVar10 + iVar21 * 0xc);\n          uVar20 = *(undefined4 *)(iVar10 + iVar18 + 4);\n          uVar11 = uVar5 & 0xffffff00;\n          uVar8 = uVar5 & 0xff;\n        }" { (if_statement "if (uVar11 == 0xda00) {\n            uVar5 = *(uint *)(*(int *)(param_1 + 0x1090) + (uVar8 + 4) * 4);\n            uVar11 = uVar5 & 0xffffff00;\n            uVar8 = uVar5 & 0xff;\n          }\n          else if (uVar11 == 0xd800) {\n            iVar9 = *(int *)(param_1 + 0x1090);\n            goto LAB_0009491c;\n          }" if (parenthesized_expression "(uVar11 == 0xda00)" ( (binary_expression "uVar11 == 0xda00" identifier == number_literal) )) (compound_statement "{\n            uVar5 = *(uint *)(*(int *)(param_1 + 0x1090) + (uVar8 + 4) * 4);\n            uVar11 = uVar5 & 0xffffff00;\n            uVar8 = uVar5 & 0xff;\n          }" { (expression_statement "uVar5 = *(uint *)(*(int *)(param_1 + 0x1090) + (uVar8 + 4) * 4);" (assignment_expression "uVar5 = *(uint *)(*(int *)(param_1 + 0x1090) + (uVar8 + 4) * 4)" identifier = (pointer_expression "*(uint *)(*(int *)(param_1 + 0x1090) + (uVar8 + 4) * 4)" * (cast_expression "(uint *)(*(int *)(param_1 + 0x1090) + (uVar8 + 4) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x1090) + (uVar8 + 4) * 4)" ( (binary_expression "*(int *)(param_1 + 0x1090) + (uVar8 + 4) * 4" (pointer_expression "*(int *)(param_1 + 0x1090)" * (cast_expression "(int *)(param_1 + 0x1090)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1090)" ( (binary_expression "param_1 + 0x1090" identifier + number_literal) )))) + (binary_expression "(uVar8 + 4) * 4" (parenthesized_expression "(uVar8 + 4)" ( (binary_expression "uVar8 + 4" identifier + number_literal) )) * number_literal)) ))))) ;) (expression_statement "uVar11 = uVar5 & 0xffffff00;" (assignment_expression "uVar11 = uVar5 & 0xffffff00" identifier = (binary_expression "uVar5 & 0xffffff00" identifier & number_literal)) ;) (expression_statement "uVar8 = uVar5 & 0xff;" (assignment_expression "uVar8 = uVar5 & 0xff" identifier = (binary_expression "uVar5 & 0xff" identifier & number_literal)) ;) }) (else_clause "else if (uVar11 == 0xd800) {\n            iVar9 = *(int *)(param_1 + 0x1090);\n            goto LAB_0009491c;\n          }" else (if_statement "if (uVar11 == 0xd800) {\n            iVar9 = *(int *)(param_1 + 0x1090);\n            goto LAB_0009491c;\n          }" if (parenthesized_expression "(uVar11 == 0xd800)" ( (binary_expression "uVar11 == 0xd800" identifier == number_literal) )) (compound_statement "{\n            iVar9 = *(int *)(param_1 + 0x1090);\n            goto LAB_0009491c;\n          }" { (expression_statement "iVar9 = *(int *)(param_1 + 0x1090);" (assignment_expression "iVar9 = *(int *)(param_1 + 0x1090)" identifier = (pointer_expression "*(int *)(param_1 + 0x1090)" * (cast_expression "(int *)(param_1 + 0x1090)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1090)" ( (binary_expression "param_1 + 0x1090" identifier + number_literal) ))))) ;) (goto_statement "goto LAB_0009491c;" goto statement_identifier ;) })))) (labeled_statement "joined_r0x00094728:\n          if (uVar11 == 0xf000) {\n            iVar9 = uVar8 + 0x404;\nLAB_00094740:\n            uVar5 = *(uint *)(*(int *)(param_1 + 0x1090) + iVar9 * 4);\n            uVar8 = uVar5 & 0xff;\n          }\n          else if (uVar11 == 0xf100) {\n            iVar9 = uVar8 + 0x204;\n            goto LAB_00094740;\n          }" statement_identifier : (if_statement "if (uVar11 == 0xf000) {\n            iVar9 = uVar8 + 0x404;\nLAB_00094740:\n            uVar5 = *(uint *)(*(int *)(param_1 + 0x1090) + iVar9 * 4);\n            uVar8 = uVar5 & 0xff;\n          }\n          else if (uVar11 == 0xf100) {\n            iVar9 = uVar8 + 0x204;\n            goto LAB_00094740;\n          }" if (parenthesized_expression "(uVar11 == 0xf000)" ( (binary_expression "uVar11 == 0xf000" identifier == number_literal) )) (compound_statement "{\n            iVar9 = uVar8 + 0x404;\nLAB_00094740:\n            uVar5 = *(uint *)(*(int *)(param_1 + 0x1090) + iVar9 * 4);\n            uVar8 = uVar5 & 0xff;\n          }" { (expression_statement "iVar9 = uVar8 + 0x404;" (assignment_expression "iVar9 = uVar8 + 0x404" identifier = (binary_expression "uVar8 + 0x404" identifier + number_literal)) ;) (labeled_statement "LAB_00094740:\n            uVar5 = *(uint *)(*(int *)(param_1 + 0x1090) + iVar9 * 4);" statement_identifier : (expression_statement "uVar5 = *(uint *)(*(int *)(param_1 + 0x1090) + iVar9 * 4);" (assignment_expression "uVar5 = *(uint *)(*(int *)(param_1 + 0x1090) + iVar9 * 4)" identifier = (pointer_expression "*(uint *)(*(int *)(param_1 + 0x1090) + iVar9 * 4)" * (cast_expression "(uint *)(*(int *)(param_1 + 0x1090) + iVar9 * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x1090) + iVar9 * 4)" ( (binary_expression "*(int *)(param_1 + 0x1090) + iVar9 * 4" (pointer_expression "*(int *)(param_1 + 0x1090)" * (cast_expression "(int *)(param_1 + 0x1090)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1090)" ( (binary_expression "param_1 + 0x1090" identifier + number_literal) )))) + (binary_expression "iVar9 * 4" identifier * number_literal)) ))))) ;)) (expression_statement "uVar8 = uVar5 & 0xff;" (assignment_expression "uVar8 = uVar5 & 0xff" identifier = (binary_expression "uVar5 & 0xff" identifier & number_literal)) ;) }) (else_clause "else if (uVar11 == 0xf100) {\n            iVar9 = uVar8 + 0x204;\n            goto LAB_00094740;\n          }" else (if_statement "if (uVar11 == 0xf100) {\n            iVar9 = uVar8 + 0x204;\n            goto LAB_00094740;\n          }" if (parenthesized_expression "(uVar11 == 0xf100)" ( (binary_expression "uVar11 == 0xf100" identifier == number_literal) )) (compound_statement "{\n            iVar9 = uVar8 + 0x204;\n            goto LAB_00094740;\n          }" { (expression_statement "iVar9 = uVar8 + 0x204;" (assignment_expression "iVar9 = uVar8 + 0x204" identifier = (binary_expression "uVar8 + 0x204" identifier + number_literal)) ;) (goto_statement "goto LAB_00094740;" goto statement_identifier ;) }))))) (expression_statement "iVar9 = local_d4 + 1;" (assignment_expression "iVar9 = local_d4 + 1" identifier = (binary_expression "local_d4 + 1" identifier + number_literal)) ;) (expression_statement "local_70[1] = 0;" (assignment_expression "local_70[1] = 0" (subscript_expression "local_70[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "iVar10 = iVar9;" (assignment_expression "iVar10 = iVar9" identifier = identifier) ;) (expression_statement "local_70[0] = uVar5;" (assignment_expression "local_70[0] = uVar5" (subscript_expression "local_70[0]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (((uVar5 & 0xfffffe00) == 0xf000) && ((uVar5 & 0xe0) != 0)) {\n            if (uVar8 != 0x7f) {\n              cVar16 = (char)uVar5;\n              iVar6 = (*(code *)PTR_is_dbcs_leadbyte_00111b58)\n                                (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),(int)cVar16);\n              local_30 = cVar16;\n              if (iVar6 == 0) {\n                iVar6 = (*(code *)PTR_mb_to_wc_001115cc)\n                                  (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),0,&local_30,1,\n                                   auStack_80,4);\n              }\n              else {\n                local_2f = (undefined1)*(undefined4 *)(*(int *)(puVar4 + 10) + iVar9 * 0xc);\n                iVar6 = (*(code *)PTR_mb_to_wc_001115cc)\n                                  (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),0,&local_30,2,\n                                   auStack_80,4);\n                iVar10 = local_d4 + 2;\n                local_d4 = iVar9;\n              }\n              if (0 < iVar6) {\n                (*(code *)PTR___memcpy_chk_00112078)(local_70,auStack_80,iVar6 * 4,0x40);\n                local_70[iVar6] = 0;\n                uVar5 = local_70[0];\n              }\n              goto LAB_00094778;\n            }\n            FUN_000901cc(&local_98,uVar5,uVar20);\n          }\n          else {\nLAB_00094778:\n            iVar9 = iVar10;\n            if (uVar5 != 0) {\n              uVar8 = local_70[1];\n              puVar23 = local_70;\n              while( true ) {\n                FUN_000901cc(&local_98,uVar5,uVar20);\n                if (uVar8 == 0) break;\n                uVar5 = uVar8;\n                uVar8 = puVar23[2];\n                puVar23 = puVar23 + 1;\n              }\n            }\n          }" if (parenthesized_expression "(((uVar5 & 0xfffffe00) == 0xf000) && ((uVar5 & 0xe0) != 0))" ( (binary_expression "((uVar5 & 0xfffffe00) == 0xf000) && ((uVar5 & 0xe0) != 0)" (parenthesized_expression "((uVar5 & 0xfffffe00) == 0xf000)" ( (binary_expression "(uVar5 & 0xfffffe00) == 0xf000" (parenthesized_expression "(uVar5 & 0xfffffe00)" ( (binary_expression "uVar5 & 0xfffffe00" identifier & number_literal) )) == number_literal) )) && (parenthesized_expression "((uVar5 & 0xe0) != 0)" ( (binary_expression "(uVar5 & 0xe0) != 0" (parenthesized_expression "(uVar5 & 0xe0)" ( (binary_expression "uVar5 & 0xe0" identifier & number_literal) )) != number_literal) ))) )) (compound_statement "{\n            if (uVar8 != 0x7f) {\n              cVar16 = (char)uVar5;\n              iVar6 = (*(code *)PTR_is_dbcs_leadbyte_00111b58)\n                                (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),(int)cVar16);\n              local_30 = cVar16;\n              if (iVar6 == 0) {\n                iVar6 = (*(code *)PTR_mb_to_wc_001115cc)\n                                  (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),0,&local_30,1,\n                                   auStack_80,4);\n              }\n              else {\n                local_2f = (undefined1)*(undefined4 *)(*(int *)(puVar4 + 10) + iVar9 * 0xc);\n                iVar6 = (*(code *)PTR_mb_to_wc_001115cc)\n                                  (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),0,&local_30,2,\n                                   auStack_80,4);\n                iVar10 = local_d4 + 2;\n                local_d4 = iVar9;\n              }\n              if (0 < iVar6) {\n                (*(code *)PTR___memcpy_chk_00112078)(local_70,auStack_80,iVar6 * 4,0x40);\n                local_70[iVar6] = 0;\n                uVar5 = local_70[0];\n              }\n              goto LAB_00094778;\n            }\n            FUN_000901cc(&local_98,uVar5,uVar20);\n          }" { (if_statement "if (uVar8 != 0x7f) {\n              cVar16 = (char)uVar5;\n              iVar6 = (*(code *)PTR_is_dbcs_leadbyte_00111b58)\n                                (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),(int)cVar16);\n              local_30 = cVar16;\n              if (iVar6 == 0) {\n                iVar6 = (*(code *)PTR_mb_to_wc_001115cc)\n                                  (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),0,&local_30,1,\n                                   auStack_80,4);\n              }\n              else {\n                local_2f = (undefined1)*(undefined4 *)(*(int *)(puVar4 + 10) + iVar9 * 0xc);\n                iVar6 = (*(code *)PTR_mb_to_wc_001115cc)\n                                  (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),0,&local_30,2,\n                                   auStack_80,4);\n                iVar10 = local_d4 + 2;\n                local_d4 = iVar9;\n              }\n              if (0 < iVar6) {\n                (*(code *)PTR___memcpy_chk_00112078)(local_70,auStack_80,iVar6 * 4,0x40);\n                local_70[iVar6] = 0;\n                uVar5 = local_70[0];\n              }\n              goto LAB_00094778;\n            }" if (parenthesized_expression "(uVar8 != 0x7f)" ( (binary_expression "uVar8 != 0x7f" identifier != number_literal) )) (compound_statement "{\n              cVar16 = (char)uVar5;\n              iVar6 = (*(code *)PTR_is_dbcs_leadbyte_00111b58)\n                                (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),(int)cVar16);\n              local_30 = cVar16;\n              if (iVar6 == 0) {\n                iVar6 = (*(code *)PTR_mb_to_wc_001115cc)\n                                  (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),0,&local_30,1,\n                                   auStack_80,4);\n              }\n              else {\n                local_2f = (undefined1)*(undefined4 *)(*(int *)(puVar4 + 10) + iVar9 * 0xc);\n                iVar6 = (*(code *)PTR_mb_to_wc_001115cc)\n                                  (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),0,&local_30,2,\n                                   auStack_80,4);\n                iVar10 = local_d4 + 2;\n                local_d4 = iVar9;\n              }\n              if (0 < iVar6) {\n                (*(code *)PTR___memcpy_chk_00112078)(local_70,auStack_80,iVar6 * 4,0x40);\n                local_70[iVar6] = 0;\n                uVar5 = local_70[0];\n              }\n              goto LAB_00094778;\n            }" { (expression_statement "cVar16 = (char)uVar5;" (assignment_expression "cVar16 = (char)uVar5" identifier = (cast_expression "(char)uVar5" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "iVar6 = (*(code *)PTR_is_dbcs_leadbyte_00111b58)\n                                (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),(int)cVar16);" (assignment_expression "iVar6 = (*(code *)PTR_is_dbcs_leadbyte_00111b58)\n                                (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),(int)cVar16)" identifier = (call_expression "(*(code *)PTR_is_dbcs_leadbyte_00111b58)\n                                (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),(int)cVar16)" (parenthesized_expression "(*(code *)PTR_is_dbcs_leadbyte_00111b58)" ( (pointer_expression "*(code *)PTR_is_dbcs_leadbyte_00111b58" * (cast_expression "(code *)PTR_is_dbcs_leadbyte_00111b58" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),(int)cVar16)" ( (pointer_expression "*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8)" * (cast_expression "(undefined4 *)(*(int *)(param_1 + 0x1090) + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x1090) + 8)" ( (binary_expression "*(int *)(param_1 + 0x1090) + 8" (pointer_expression "*(int *)(param_1 + 0x1090)" * (cast_expression "(int *)(param_1 + 0x1090)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1090)" ( (binary_expression "param_1 + 0x1090" identifier + number_literal) )))) + number_literal) )))) , (cast_expression "(int)cVar16" ( (type_descriptor "int" primitive_type) ) identifier) )))) ;) (expression_statement "local_30 = cVar16;" (assignment_expression "local_30 = cVar16" identifier = identifier) ;) (if_statement "if (iVar6 == 0) {\n                iVar6 = (*(code *)PTR_mb_to_wc_001115cc)\n                                  (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),0,&local_30,1,\n                                   auStack_80,4);\n              }\n              else {\n                local_2f = (undefined1)*(undefined4 *)(*(int *)(puVar4 + 10) + iVar9 * 0xc);\n                iVar6 = (*(code *)PTR_mb_to_wc_001115cc)\n                                  (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),0,&local_30,2,\n                                   auStack_80,4);\n                iVar10 = local_d4 + 2;\n                local_d4 = iVar9;\n              }" if (parenthesized_expression "(iVar6 == 0)" ( (binary_expression "iVar6 == 0" identifier == number_literal) )) (compound_statement "{\n                iVar6 = (*(code *)PTR_mb_to_wc_001115cc)\n                                  (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),0,&local_30,1,\n                                   auStack_80,4);\n              }" { (expression_statement "iVar6 = (*(code *)PTR_mb_to_wc_001115cc)\n                                  (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),0,&local_30,1,\n                                   auStack_80,4);" (assignment_expression "iVar6 = (*(code *)PTR_mb_to_wc_001115cc)\n                                  (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),0,&local_30,1,\n                                   auStack_80,4)" identifier = (call_expression "(*(code *)PTR_mb_to_wc_001115cc)\n                                  (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),0,&local_30,1,\n                                   auStack_80,4)" (parenthesized_expression "(*(code *)PTR_mb_to_wc_001115cc)" ( (pointer_expression "*(code *)PTR_mb_to_wc_001115cc" * (cast_expression "(code *)PTR_mb_to_wc_001115cc" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),0,&local_30,1,\n                                   auStack_80,4)" ( (pointer_expression "*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8)" * (cast_expression "(undefined4 *)(*(int *)(param_1 + 0x1090) + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x1090) + 8)" ( (binary_expression "*(int *)(param_1 + 0x1090) + 8" (pointer_expression "*(int *)(param_1 + 0x1090)" * (cast_expression "(int *)(param_1 + 0x1090)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1090)" ( (binary_expression "param_1 + 0x1090" identifier + number_literal) )))) + number_literal) )))) , number_literal , (pointer_expression "&local_30" & identifier) , number_literal , identifier , number_literal )))) ;) }) (else_clause "else {\n                local_2f = (undefined1)*(undefined4 *)(*(int *)(puVar4 + 10) + iVar9 * 0xc);\n                iVar6 = (*(code *)PTR_mb_to_wc_001115cc)\n                                  (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),0,&local_30,2,\n                                   auStack_80,4);\n                iVar10 = local_d4 + 2;\n                local_d4 = iVar9;\n              }" else (compound_statement "{\n                local_2f = (undefined1)*(undefined4 *)(*(int *)(puVar4 + 10) + iVar9 * 0xc);\n                iVar6 = (*(code *)PTR_mb_to_wc_001115cc)\n                                  (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),0,&local_30,2,\n                                   auStack_80,4);\n                iVar10 = local_d4 + 2;\n                local_d4 = iVar9;\n              }" { (expression_statement "local_2f = (undefined1)*(undefined4 *)(*(int *)(puVar4 + 10) + iVar9 * 0xc);" (assignment_expression "local_2f = (undefined1)*(undefined4 *)(*(int *)(puVar4 + 10) + iVar9 * 0xc)" identifier = (binary_expression "(undefined1)*(undefined4 *)(*(int *)(puVar4 + 10) + iVar9 * 0xc)" (parenthesized_expression "(undefined1)" ( identifier )) * (cast_expression "(undefined4 *)(*(int *)(puVar4 + 10) + iVar9 * 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar4 + 10) + iVar9 * 0xc)" ( (binary_expression "*(int *)(puVar4 + 10) + iVar9 * 0xc" (pointer_expression "*(int *)(puVar4 + 10)" * (cast_expression "(int *)(puVar4 + 10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + 10)" ( (binary_expression "puVar4 + 10" identifier + number_literal) )))) + (binary_expression "iVar9 * 0xc" identifier * number_literal)) ))))) ;) (expression_statement "iVar6 = (*(code *)PTR_mb_to_wc_001115cc)\n                                  (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),0,&local_30,2,\n                                   auStack_80,4);" (assignment_expression "iVar6 = (*(code *)PTR_mb_to_wc_001115cc)\n                                  (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),0,&local_30,2,\n                                   auStack_80,4)" identifier = (call_expression "(*(code *)PTR_mb_to_wc_001115cc)\n                                  (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),0,&local_30,2,\n                                   auStack_80,4)" (parenthesized_expression "(*(code *)PTR_mb_to_wc_001115cc)" ( (pointer_expression "*(code *)PTR_mb_to_wc_001115cc" * (cast_expression "(code *)PTR_mb_to_wc_001115cc" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),0,&local_30,2,\n                                   auStack_80,4)" ( (pointer_expression "*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8)" * (cast_expression "(undefined4 *)(*(int *)(param_1 + 0x1090) + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x1090) + 8)" ( (binary_expression "*(int *)(param_1 + 0x1090) + 8" (pointer_expression "*(int *)(param_1 + 0x1090)" * (cast_expression "(int *)(param_1 + 0x1090)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1090)" ( (binary_expression "param_1 + 0x1090" identifier + number_literal) )))) + number_literal) )))) , number_literal , (pointer_expression "&local_30" & identifier) , number_literal , identifier , number_literal )))) ;) (expression_statement "iVar10 = local_d4 + 2;" (assignment_expression "iVar10 = local_d4 + 2" identifier = (binary_expression "local_d4 + 2" identifier + number_literal)) ;) (expression_statement "local_d4 = iVar9;" (assignment_expression "local_d4 = iVar9" identifier = identifier) ;) }))) (if_statement "if (0 < iVar6) {\n                (*(code *)PTR___memcpy_chk_00112078)(local_70,auStack_80,iVar6 * 4,0x40);\n                local_70[iVar6] = 0;\n                uVar5 = local_70[0];\n              }" if (parenthesized_expression "(0 < iVar6)" ( (binary_expression "0 < iVar6" number_literal < identifier) )) (compound_statement "{\n                (*(code *)PTR___memcpy_chk_00112078)(local_70,auStack_80,iVar6 * 4,0x40);\n                local_70[iVar6] = 0;\n                uVar5 = local_70[0];\n              }" { (expression_statement "(*(code *)PTR___memcpy_chk_00112078)(local_70,auStack_80,iVar6 * 4,0x40);" (call_expression "(*(code *)PTR___memcpy_chk_00112078)(local_70,auStack_80,iVar6 * 4,0x40)" (parenthesized_expression "(*(code *)PTR___memcpy_chk_00112078)" ( (pointer_expression "*(code *)PTR___memcpy_chk_00112078" * (cast_expression "(code *)PTR___memcpy_chk_00112078" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(local_70,auStack_80,iVar6 * 4,0x40)" ( identifier , identifier , (binary_expression "iVar6 * 4" identifier * number_literal) , number_literal ))) ;) (expression_statement "local_70[iVar6] = 0;" (assignment_expression "local_70[iVar6] = 0" (subscript_expression "local_70[iVar6]" identifier [ identifier ]) = number_literal) ;) (expression_statement "uVar5 = local_70[0];" (assignment_expression "uVar5 = local_70[0]" identifier = (subscript_expression "local_70[0]" identifier [ number_literal ])) ;) })) (goto_statement "goto LAB_00094778;" goto statement_identifier ;) })) (expression_statement "FUN_000901cc(&local_98,uVar5,uVar20);" (call_expression "FUN_000901cc(&local_98,uVar5,uVar20)" identifier (argument_list "(&local_98,uVar5,uVar20)" ( (pointer_expression "&local_98" & identifier) , identifier , identifier ))) ;) }) (else_clause "else {\nLAB_00094778:\n            iVar9 = iVar10;\n            if (uVar5 != 0) {\n              uVar8 = local_70[1];\n              puVar23 = local_70;\n              while( true ) {\n                FUN_000901cc(&local_98,uVar5,uVar20);\n                if (uVar8 == 0) break;\n                uVar5 = uVar8;\n                uVar8 = puVar23[2];\n                puVar23 = puVar23 + 1;\n              }\n            }\n          }" else (compound_statement "{\nLAB_00094778:\n            iVar9 = iVar10;\n            if (uVar5 != 0) {\n              uVar8 = local_70[1];\n              puVar23 = local_70;\n              while( true ) {\n                FUN_000901cc(&local_98,uVar5,uVar20);\n                if (uVar8 == 0) break;\n                uVar5 = uVar8;\n                uVar8 = puVar23[2];\n                puVar23 = puVar23 + 1;\n              }\n            }\n          }" { (labeled_statement "LAB_00094778:\n            iVar9 = iVar10;" statement_identifier : (expression_statement "iVar9 = iVar10;" (assignment_expression "iVar9 = iVar10" identifier = identifier) ;)) (if_statement "if (uVar5 != 0) {\n              uVar8 = local_70[1];\n              puVar23 = local_70;\n              while( true ) {\n                FUN_000901cc(&local_98,uVar5,uVar20);\n                if (uVar8 == 0) break;\n                uVar5 = uVar8;\n                uVar8 = puVar23[2];\n                puVar23 = puVar23 + 1;\n              }\n            }" if (parenthesized_expression "(uVar5 != 0)" ( (binary_expression "uVar5 != 0" identifier != number_literal) )) (compound_statement "{\n              uVar8 = local_70[1];\n              puVar23 = local_70;\n              while( true ) {\n                FUN_000901cc(&local_98,uVar5,uVar20);\n                if (uVar8 == 0) break;\n                uVar5 = uVar8;\n                uVar8 = puVar23[2];\n                puVar23 = puVar23 + 1;\n              }\n            }" { (expression_statement "uVar8 = local_70[1];" (assignment_expression "uVar8 = local_70[1]" identifier = (subscript_expression "local_70[1]" identifier [ number_literal ])) ;) (expression_statement "puVar23 = local_70;" (assignment_expression "puVar23 = local_70" identifier = identifier) ;) (while_statement "while( true ) {\n                FUN_000901cc(&local_98,uVar5,uVar20);\n                if (uVar8 == 0) break;\n                uVar5 = uVar8;\n                uVar8 = puVar23[2];\n                puVar23 = puVar23 + 1;\n              }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n                FUN_000901cc(&local_98,uVar5,uVar20);\n                if (uVar8 == 0) break;\n                uVar5 = uVar8;\n                uVar8 = puVar23[2];\n                puVar23 = puVar23 + 1;\n              }" { (expression_statement "FUN_000901cc(&local_98,uVar5,uVar20);" (call_expression "FUN_000901cc(&local_98,uVar5,uVar20)" identifier (argument_list "(&local_98,uVar5,uVar20)" ( (pointer_expression "&local_98" & identifier) , identifier , identifier ))) ;) (if_statement "if (uVar8 == 0) break;" if (parenthesized_expression "(uVar8 == 0)" ( (binary_expression "uVar8 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar5 = uVar8;" (assignment_expression "uVar5 = uVar8" identifier = identifier) ;) (expression_statement "uVar8 = puVar23[2];" (assignment_expression "uVar8 = puVar23[2]" identifier = (subscript_expression "puVar23[2]" identifier [ number_literal ])) ;) (expression_statement "puVar23 = puVar23 + 1;" (assignment_expression "puVar23 = puVar23 + 1" identifier = (binary_expression "puVar23 + 1" identifier + number_literal)) ;) })) })) }))) (expression_statement "iVar10 = *(int *)(puVar4 + 10);" (assignment_expression "iVar10 = *(int *)(puVar4 + 10)" identifier = (pointer_expression "*(int *)(puVar4 + 10)" * (cast_expression "(int *)(puVar4 + 10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + 10)" ( (binary_expression "puVar4 + 10" identifier + number_literal) ))))) ;) (expression_statement "iVar18 = *(int *)(iVar10 + iVar18 + 8);" (assignment_expression "iVar18 = *(int *)(iVar10 + iVar18 + 8)" identifier = (pointer_expression "*(int *)(iVar10 + iVar18 + 8)" * (cast_expression "(int *)(iVar10 + iVar18 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + iVar18 + 8)" ( (binary_expression "iVar10 + iVar18 + 8" (binary_expression "iVar10 + iVar18" identifier + identifier) + number_literal) ))))) ;) (expression_statement "iVar21 = iVar21 + iVar18;" (assignment_expression "iVar21 = iVar21 + iVar18" identifier = (binary_expression "iVar21 + iVar18" identifier + identifier)) ;) (if_statement "if (iVar18 == 0) goto joined_r0x00094680;" if (parenthesized_expression "(iVar18 == 0)" ( (binary_expression "iVar18 == 0" identifier == number_literal) )) (goto_statement "goto joined_r0x00094680;" goto statement_identifier ;)) (expression_statement "iVar18 = iVar21 * 0xc;" (assignment_expression "iVar18 = iVar21 * 0xc" identifier = (binary_expression "iVar21 * 0xc" identifier * number_literal)) ;) (expression_statement "uVar5 = *(uint *)(iVar10 + iVar21 * 0xc);" (assignment_expression "uVar5 = *(uint *)(iVar10 + iVar21 * 0xc)" identifier = (pointer_expression "*(uint *)(iVar10 + iVar21 * 0xc)" * (cast_expression "(uint *)(iVar10 + iVar21 * 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + iVar21 * 0xc)" ( (binary_expression "iVar10 + iVar21 * 0xc" identifier + (binary_expression "iVar21 * 0xc" identifier * number_literal)) ))))) ;) (expression_statement "uVar20 = *(undefined4 *)(iVar10 + iVar18 + 4);" (assignment_expression "uVar20 = *(undefined4 *)(iVar10 + iVar18 + 4)" identifier = (pointer_expression "*(undefined4 *)(iVar10 + iVar18 + 4)" * (cast_expression "(undefined4 *)(iVar10 + iVar18 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + iVar18 + 4)" ( (binary_expression "iVar10 + iVar18 + 4" (binary_expression "iVar10 + iVar18" identifier + identifier) + number_literal) ))))) ;) (expression_statement "uVar11 = uVar5 & 0xffffff00;" (assignment_expression "uVar11 = uVar5 & 0xffffff00" identifier = (binary_expression "uVar5 & 0xffffff00" identifier & number_literal)) ;) (expression_statement "uVar8 = uVar5 & 0xff;" (assignment_expression "uVar8 = uVar5 & 0xff" identifier = (binary_expression "uVar5 & 0xff" identifier & number_literal)) ;) }) while (parenthesized_expression "(uVar11 != 0xd900)" ( (binary_expression "uVar11 != 0xd900" identifier != number_literal) )) ;) (labeled_statement "LAB_00094804:\n        iVar9 = *(int *)(param_1 + 0x1090);" statement_identifier : (expression_statement "iVar9 = *(int *)(param_1 + 0x1090);" (assignment_expression "iVar9 = *(int *)(param_1 + 0x1090)" identifier = (pointer_expression "*(int *)(param_1 + 0x1090)" * (cast_expression "(int *)(param_1 + 0x1090)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1090)" ( (binary_expression "param_1 + 0x1090" identifier + number_literal) ))))) ;)) (if_statement "if (*(int *)(param_1 + 0x1158) == 0) {\n          uVar5 = *(uint *)(iVar9 + (uVar8 + 0x304) * 4);\n          uVar11 = uVar5 & 0xffffff00;\n          uVar8 = uVar5 & 0xff;\n        }\n        else {\nLAB_0009491c:\n          uVar5 = *(uint *)(iVar9 + (uVar8 + 0x104) * 4);\n          uVar11 = uVar5 & 0xffffff00;\n          uVar8 = uVar5 & 0xff;\n        }" if (parenthesized_expression "(*(int *)(param_1 + 0x1158) == 0)" ( (binary_expression "*(int *)(param_1 + 0x1158) == 0" (pointer_expression "*(int *)(param_1 + 0x1158)" * (cast_expression "(int *)(param_1 + 0x1158)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1158)" ( (binary_expression "param_1 + 0x1158" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n          uVar5 = *(uint *)(iVar9 + (uVar8 + 0x304) * 4);\n          uVar11 = uVar5 & 0xffffff00;\n          uVar8 = uVar5 & 0xff;\n        }" { (expression_statement "uVar5 = *(uint *)(iVar9 + (uVar8 + 0x304) * 4);" (assignment_expression "uVar5 = *(uint *)(iVar9 + (uVar8 + 0x304) * 4)" identifier = (pointer_expression "*(uint *)(iVar9 + (uVar8 + 0x304) * 4)" * (cast_expression "(uint *)(iVar9 + (uVar8 + 0x304) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + (uVar8 + 0x304) * 4)" ( (binary_expression "iVar9 + (uVar8 + 0x304) * 4" identifier + (binary_expression "(uVar8 + 0x304) * 4" (parenthesized_expression "(uVar8 + 0x304)" ( (binary_expression "uVar8 + 0x304" identifier + number_literal) )) * number_literal)) ))))) ;) (expression_statement "uVar11 = uVar5 & 0xffffff00;" (assignment_expression "uVar11 = uVar5 & 0xffffff00" identifier = (binary_expression "uVar5 & 0xffffff00" identifier & number_literal)) ;) (expression_statement "uVar8 = uVar5 & 0xff;" (assignment_expression "uVar8 = uVar5 & 0xff" identifier = (binary_expression "uVar5 & 0xff" identifier & number_literal)) ;) }) (else_clause "else {\nLAB_0009491c:\n          uVar5 = *(uint *)(iVar9 + (uVar8 + 0x104) * 4);\n          uVar11 = uVar5 & 0xffffff00;\n          uVar8 = uVar5 & 0xff;\n        }" else (compound_statement "{\nLAB_0009491c:\n          uVar5 = *(uint *)(iVar9 + (uVar8 + 0x104) * 4);\n          uVar11 = uVar5 & 0xffffff00;\n          uVar8 = uVar5 & 0xff;\n        }" { (labeled_statement "LAB_0009491c:\n          uVar5 = *(uint *)(iVar9 + (uVar8 + 0x104) * 4);" statement_identifier : (expression_statement "uVar5 = *(uint *)(iVar9 + (uVar8 + 0x104) * 4);" (assignment_expression "uVar5 = *(uint *)(iVar9 + (uVar8 + 0x104) * 4)" identifier = (pointer_expression "*(uint *)(iVar9 + (uVar8 + 0x104) * 4)" * (cast_expression "(uint *)(iVar9 + (uVar8 + 0x104) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + (uVar8 + 0x104) * 4)" ( (binary_expression "iVar9 + (uVar8 + 0x104) * 4" identifier + (binary_expression "(uVar8 + 0x104) * 4" (parenthesized_expression "(uVar8 + 0x104)" ( (binary_expression "uVar8 + 0x104" identifier + number_literal) )) * number_literal)) ))))) ;)) (expression_statement "uVar11 = uVar5 & 0xffffff00;" (assignment_expression "uVar11 = uVar5 & 0xffffff00" identifier = (binary_expression "uVar5 & 0xffffff00" identifier & number_literal)) ;) (expression_statement "uVar8 = uVar5 & 0xff;" (assignment_expression "uVar8 = uVar5 & 0xff" identifier = (binary_expression "uVar5 & 0xff" identifier & number_literal)) ;) }))) (goto_statement "goto joined_r0x00094728;" goto statement_identifier ;) })) (expression_statement "iVar9 = iVar21 + 1;" (assignment_expression "iVar9 = iVar21 + 1" identifier = (binary_expression "iVar21 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "( true )" ( true )) ;)) })) (expression_statement "iVar19 = local_90;" (assignment_expression "iVar19 = local_90" identifier = identifier) ;) (expression_statement "(*(code *)PTR_write_clip_00111b5c)\n            (*(undefined4 *)(param_1 + 0x1088),local_90,local_88,local_94,param_7);" (call_expression "(*(code *)PTR_write_clip_00111b5c)\n            (*(undefined4 *)(param_1 + 0x1088),local_90,local_88,local_94,param_7)" (parenthesized_expression "(*(code *)PTR_write_clip_00111b5c)" ( (pointer_expression "*(code *)PTR_write_clip_00111b5c" * (cast_expression "(code *)PTR_write_clip_00111b5c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(*(undefined4 *)(param_1 + 0x1088),local_90,local_88,local_94,param_7)" ( (pointer_expression "*(undefined4 *)(param_1 + 0x1088)" * (cast_expression "(undefined4 *)(param_1 + 0x1088)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1088)" ( (binary_expression "param_1 + 0x1088" identifier + number_literal) )))) , identifier , identifier , identifier , identifier ))) ;) (expression_statement "(*(code *)PTR_safefree_001112f0)(local_90);" (call_expression "(*(code *)PTR_safefree_001112f0)(local_90)" (parenthesized_expression "(*(code *)PTR_safefree_001112f0)" ( (pointer_expression "*(code *)PTR_safefree_001112f0" * (cast_expression "(code *)PTR_safefree_001112f0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(local_90)" ( identifier ))) ;) (expression_statement "iVar9 = local_88;" (assignment_expression "iVar9 = local_88" identifier = identifier) ;) (expression_statement "(*(code *)PTR_safefree_001112f0)();" (call_expression "(*(code *)PTR_safefree_001112f0)()" (parenthesized_expression "(*(code *)PTR_safefree_001112f0)" ( (pointer_expression "*(code *)PTR_safefree_001112f0" * (cast_expression "(code *)PTR_safefree_001112f0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (if_statement "if (local_2c == *(int *)puVar26) {\n    return;\n  }" if (parenthesized_expression "(local_2c == *(int *)puVar26)" ( (binary_expression "local_2c == *(int *)puVar26" identifier == (pointer_expression "*(int *)puVar26" * (cast_expression "(int *)puVar26" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "puVar26 = PTR___stack_chk_fail_001122c8;" (assignment_expression "puVar26 = PTR___stack_chk_fail_001122c8" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_001122c8)();" (call_expression "(*(code *)PTR___stack_chk_fail_001122c8)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_001122c8)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_001122c8" * (cast_expression "(code *)PTR___stack_chk_fail_001122c8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "iVar21 = 1;" (assignment_expression "iVar21 = 1" identifier = number_literal) ;) (if_statement "if (iVar19 < 0) {\n    iVar21 = -1;\n    iVar19 = -iVar19;\n  }" if (parenthesized_expression "(iVar19 < 0)" ( (binary_expression "iVar19 < 0" identifier < number_literal) )) (compound_statement "{\n    iVar21 = -1;\n    iVar19 = -iVar19;\n  }" { (expression_statement "iVar21 = -1;" (assignment_expression "iVar21 = -1" identifier = number_literal) ;) (expression_statement "iVar19 = -iVar19;" (assignment_expression "iVar19 = -iVar19" identifier = (unary_expression "-iVar19" - identifier)) ;) })) (expression_statement "iVar18 = *(int *)(iVar9 + 300);" (assignment_expression "iVar18 = *(int *)(iVar9 + 300)" identifier = (pointer_expression "*(int *)(iVar9 + 300)" * (cast_expression "(int *)(iVar9 + 300)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 300)" ( (binary_expression "iVar9 + 300" identifier + number_literal) ))))) ;) (expression_statement "iVar10 = *(int *)(iVar9 + 0x70);" (assignment_expression "iVar10 = *(int *)(iVar9 + 0x70)" identifier = (pointer_expression "*(int *)(iVar9 + 0x70)" * (cast_expression "(int *)(iVar9 + 0x70)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0x70)" ( (binary_expression "iVar9 + 0x70" identifier + number_literal) ))))) ;) (expression_statement "iVar12 = *(int *)(iVar9 + 0x6c);" (assignment_expression "iVar12 = *(int *)(iVar9 + 0x6c)" identifier = (pointer_expression "*(int *)(iVar9 + 0x6c)" * (cast_expression "(int *)(iVar9 + 0x6c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0x6c)" ( (binary_expression "iVar9 + 0x6c" identifier + number_literal) ))))) ;) (expression_statement "iVar6 = *(int *)(iVar9 + 0xe5c);" (assignment_expression "iVar6 = *(int *)(iVar9 + 0xe5c)" identifier = (pointer_expression "*(int *)(iVar9 + 0xe5c)" * (cast_expression "(int *)(iVar9 + 0xe5c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0xe5c)" ( (binary_expression "iVar9 + 0xe5c" identifier + number_literal) ))))) ;) (expression_statement "iVar24 = iVar18 - iVar10;" (assignment_expression "iVar24 = iVar18 - iVar10" identifier = (binary_expression "iVar18 - iVar10" identifier - identifier)) ;) (if_statement "if (iVar24 <= iVar19) {\n    iVar19 = iVar24;\n  }" if (parenthesized_expression "(iVar24 <= iVar19)" ( (binary_expression "iVar24 <= iVar19" identifier <= identifier) )) (compound_statement "{\n    iVar19 = iVar24;\n  }" { (expression_statement "iVar19 = iVar24;" (assignment_expression "iVar19 = iVar24" identifier = identifier) ;) })) (expression_statement "iVar24 = iVar24 - iVar19;" (assignment_expression "iVar24 = iVar24 - iVar19" identifier = (binary_expression "iVar24 - iVar19" identifier - identifier)) ;) (if_statement "if (((iVar6 <= iVar12) && ((iVar12 != iVar6 || (*(int *)(iVar9 + 0xe60) <= iVar10)))) ||\n     ((iVar14 = *(int *)(iVar9 + 0xe54), iVar12 <= iVar14 &&\n      ((iVar12 != iVar14 || (iVar18 <= *(int *)(iVar9 + 0xe58))))))) goto LAB_00094c48;" if (parenthesized_expression "(((iVar6 <= iVar12) && ((iVar12 != iVar6 || (*(int *)(iVar9 + 0xe60) <= iVar10)))) ||\n     ((iVar14 = *(int *)(iVar9 + 0xe54), iVar12 <= iVar14 &&\n      ((iVar12 != iVar14 || (iVar18 <= *(int *)(iVar9 + 0xe58)))))))" ( (binary_expression "((iVar6 <= iVar12) && ((iVar12 != iVar6 || (*(int *)(iVar9 + 0xe60) <= iVar10)))) ||\n     ((iVar14 = *(int *)(iVar9 + 0xe54), iVar12 <= iVar14 &&\n      ((iVar12 != iVar14 || (iVar18 <= *(int *)(iVar9 + 0xe58))))))" (parenthesized_expression "((iVar6 <= iVar12) && ((iVar12 != iVar6 || (*(int *)(iVar9 + 0xe60) <= iVar10))))" ( (binary_expression "(iVar6 <= iVar12) && ((iVar12 != iVar6 || (*(int *)(iVar9 + 0xe60) <= iVar10)))" (parenthesized_expression "(iVar6 <= iVar12)" ( (binary_expression "iVar6 <= iVar12" identifier <= identifier) )) && (parenthesized_expression "((iVar12 != iVar6 || (*(int *)(iVar9 + 0xe60) <= iVar10)))" ( (parenthesized_expression "(iVar12 != iVar6 || (*(int *)(iVar9 + 0xe60) <= iVar10))" ( (binary_expression "iVar12 != iVar6 || (*(int *)(iVar9 + 0xe60) <= iVar10)" (binary_expression "iVar12 != iVar6" identifier != identifier) || (parenthesized_expression "(*(int *)(iVar9 + 0xe60) <= iVar10)" ( (binary_expression "*(int *)(iVar9 + 0xe60) <= iVar10" (pointer_expression "*(int *)(iVar9 + 0xe60)" * (cast_expression "(int *)(iVar9 + 0xe60)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0xe60)" ( (binary_expression "iVar9 + 0xe60" identifier + number_literal) )))) <= identifier) ))) )) ))) )) || (parenthesized_expression "((iVar14 = *(int *)(iVar9 + 0xe54), iVar12 <= iVar14 &&\n      ((iVar12 != iVar14 || (iVar18 <= *(int *)(iVar9 + 0xe58))))))" ( (parenthesized_expression "(iVar14 = *(int *)(iVar9 + 0xe54), iVar12 <= iVar14 &&\n      ((iVar12 != iVar14 || (iVar18 <= *(int *)(iVar9 + 0xe58)))))" ( (comma_expression "iVar14 = *(int *)(iVar9 + 0xe54), iVar12 <= iVar14 &&\n      ((iVar12 != iVar14 || (iVar18 <= *(int *)(iVar9 + 0xe58))))" (assignment_expression "iVar14 = *(int *)(iVar9 + 0xe54)" identifier = (pointer_expression "*(int *)(iVar9 + 0xe54)" * (cast_expression "(int *)(iVar9 + 0xe54)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0xe54)" ( (binary_expression "iVar9 + 0xe54" identifier + number_literal) ))))) , (binary_expression "iVar12 <= iVar14 &&\n      ((iVar12 != iVar14 || (iVar18 <= *(int *)(iVar9 + 0xe58))))" (binary_expression "iVar12 <= iVar14" identifier <= identifier) && (parenthesized_expression "((iVar12 != iVar14 || (iVar18 <= *(int *)(iVar9 + 0xe58))))" ( (parenthesized_expression "(iVar12 != iVar14 || (iVar18 <= *(int *)(iVar9 + 0xe58)))" ( (binary_expression "iVar12 != iVar14 || (iVar18 <= *(int *)(iVar9 + 0xe58))" (binary_expression "iVar12 != iVar14" identifier != identifier) || (parenthesized_expression "(iVar18 <= *(int *)(iVar9 + 0xe58))" ( (binary_expression "iVar18 <= *(int *)(iVar9 + 0xe58)" identifier <= (pointer_expression "*(int *)(iVar9 + 0xe58)" * (cast_expression "(int *)(iVar9 + 0xe58)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0xe58)" ( (binary_expression "iVar9 + 0xe58" identifier + number_literal) ))))) ))) )) )))) )) ))) )) (goto_statement "goto LAB_00094c48;" goto statement_identifier ;)) (expression_statement "iVar17 = iVar10 + iVar19;" (assignment_expression "iVar17 = iVar10 + iVar19" identifier = (binary_expression "iVar10 + iVar19" identifier + identifier)) ;) (expression_statement "iVar15 = iVar18;" (assignment_expression "iVar15 = iVar18" identifier = identifier) ;) (if_statement "if (iVar21 == 1) {\n    iVar15 = iVar18 - iVar19;\n    iVar17 = iVar10;\n  }" if (parenthesized_expression "(iVar21 == 1)" ( (binary_expression "iVar21 == 1" identifier == number_literal) )) (compound_statement "{\n    iVar15 = iVar18 - iVar19;\n    iVar17 = iVar10;\n  }" { (expression_statement "iVar15 = iVar18 - iVar19;" (assignment_expression "iVar15 = iVar18 - iVar19" identifier = (binary_expression "iVar18 - iVar19" identifier - identifier)) ;) (expression_statement "iVar17 = iVar10;" (assignment_expression "iVar17 = iVar10" identifier = identifier) ;) })) (if_statement "if ((iVar12 < iVar14) || ((iVar12 == iVar14 && (iVar17 <= *(int *)(iVar9 + 0xe58))))) {\n    if (iVar6 < iVar12) {\n      iVar6 = *(int *)(iVar9 + 0xe60);\n    }\n    else if ((iVar12 != iVar6) || (iVar6 = *(int *)(iVar9 + 0xe60), iVar15 < iVar6))\n    goto LAB_00094e08;\n    iVar14 = iVar21 * iVar19 + *(int *)(iVar9 + 0xe58);\n    iVar6 = iVar21 * iVar19 + iVar6;\n    *(int *)(iVar9 + 0xe58) = iVar14;\n    *(int *)(iVar9 + 0xe60) = iVar6;\n    if (iVar14 < iVar10) {\n      (**(code **)(puVar26 + 0x7d398))\n                (*(int *)(puVar26 + 0x7c740) + 0x5a20,*(int *)(puVar26 + 0x7c740) + 0x5830,0x9dd,\n                 *(int *)(puVar26 + 0x7c740) + 0x6200);\n      return;\n    }\n    if (iVar18 <= iVar14) {\n      (**(code **)(puVar26 + 0x7d398))\n                (*(int *)(puVar26 + 0x7c740) + 0x5a44,*(int *)(puVar26 + 0x7c740) + 0x5830,0x9de,\n                 *(int *)(puVar26 + 0x7c740) + 0x6200);\n      return;\n    }\n    if (iVar6 <= iVar10) {\n      (**(code **)(puVar26 + 0x7d398))\n                (*(int *)(puVar26 + 0x7c740) + 0x5a64,*(int *)(puVar26 + 0x7c740) + 0x5830,0x9df,\n                 *(int *)(puVar26 + 0x7c740) + 0x6200);\n      return;\n    }\n    if (iVar18 < iVar6) {\n      (**(code **)(puVar26 + 0x7d398))\n                (*(int *)(puVar26 + 0x7c740) + 0x5a84,*(int *)(puVar26 + 0x7c740) + 0x5830,0x9e0,\n                 *(int *)(puVar26 + 0x7c740) + 0x6200);\n      return;\n    }\n  }\n  else {\nLAB_00094e08:\n    *(undefined4 *)(iVar9 + 0xe48) = 0;\n    *(undefined4 *)(iVar9 + 0xe5c) = 0;\n    *(undefined4 *)(iVar9 + 0xe60) = 0;\n    *(undefined4 *)(iVar9 + 0xe54) = 0;\n    *(undefined4 *)(iVar9 + 0xe58) = 0;\n  }" if (parenthesized_expression "((iVar12 < iVar14) || ((iVar12 == iVar14 && (iVar17 <= *(int *)(iVar9 + 0xe58)))))" ( (binary_expression "(iVar12 < iVar14) || ((iVar12 == iVar14 && (iVar17 <= *(int *)(iVar9 + 0xe58))))" (parenthesized_expression "(iVar12 < iVar14)" ( (binary_expression "iVar12 < iVar14" identifier < identifier) )) || (parenthesized_expression "((iVar12 == iVar14 && (iVar17 <= *(int *)(iVar9 + 0xe58))))" ( (parenthesized_expression "(iVar12 == iVar14 && (iVar17 <= *(int *)(iVar9 + 0xe58)))" ( (binary_expression "iVar12 == iVar14 && (iVar17 <= *(int *)(iVar9 + 0xe58))" (binary_expression "iVar12 == iVar14" identifier == identifier) && (parenthesized_expression "(iVar17 <= *(int *)(iVar9 + 0xe58))" ( (binary_expression "iVar17 <= *(int *)(iVar9 + 0xe58)" identifier <= (pointer_expression "*(int *)(iVar9 + 0xe58)" * (cast_expression "(int *)(iVar9 + 0xe58)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0xe58)" ( (binary_expression "iVar9 + 0xe58" identifier + number_literal) ))))) ))) )) ))) )) (compound_statement "{\n    if (iVar6 < iVar12) {\n      iVar6 = *(int *)(iVar9 + 0xe60);\n    }\n    else if ((iVar12 != iVar6) || (iVar6 = *(int *)(iVar9 + 0xe60), iVar15 < iVar6))\n    goto LAB_00094e08;\n    iVar14 = iVar21 * iVar19 + *(int *)(iVar9 + 0xe58);\n    iVar6 = iVar21 * iVar19 + iVar6;\n    *(int *)(iVar9 + 0xe58) = iVar14;\n    *(int *)(iVar9 + 0xe60) = iVar6;\n    if (iVar14 < iVar10) {\n      (**(code **)(puVar26 + 0x7d398))\n                (*(int *)(puVar26 + 0x7c740) + 0x5a20,*(int *)(puVar26 + 0x7c740) + 0x5830,0x9dd,\n                 *(int *)(puVar26 + 0x7c740) + 0x6200);\n      return;\n    }\n    if (iVar18 <= iVar14) {\n      (**(code **)(puVar26 + 0x7d398))\n                (*(int *)(puVar26 + 0x7c740) + 0x5a44,*(int *)(puVar26 + 0x7c740) + 0x5830,0x9de,\n                 *(int *)(puVar26 + 0x7c740) + 0x6200);\n      return;\n    }\n    if (iVar6 <= iVar10) {\n      (**(code **)(puVar26 + 0x7d398))\n                (*(int *)(puVar26 + 0x7c740) + 0x5a64,*(int *)(puVar26 + 0x7c740) + 0x5830,0x9df,\n                 *(int *)(puVar26 + 0x7c740) + 0x6200);\n      return;\n    }\n    if (iVar18 < iVar6) {\n      (**(code **)(puVar26 + 0x7d398))\n                (*(int *)(puVar26 + 0x7c740) + 0x5a84,*(int *)(puVar26 + 0x7c740) + 0x5830,0x9e0,\n                 *(int *)(puVar26 + 0x7c740) + 0x6200);\n      return;\n    }\n  }" { (if_statement "if (iVar6 < iVar12) {\n      iVar6 = *(int *)(iVar9 + 0xe60);\n    }\n    else if ((iVar12 != iVar6) || (iVar6 = *(int *)(iVar9 + 0xe60), iVar15 < iVar6))\n    goto LAB_00094e08;" if (parenthesized_expression "(iVar6 < iVar12)" ( (binary_expression "iVar6 < iVar12" identifier < identifier) )) (compound_statement "{\n      iVar6 = *(int *)(iVar9 + 0xe60);\n    }" { (expression_statement "iVar6 = *(int *)(iVar9 + 0xe60);" (assignment_expression "iVar6 = *(int *)(iVar9 + 0xe60)" identifier = (pointer_expression "*(int *)(iVar9 + 0xe60)" * (cast_expression "(int *)(iVar9 + 0xe60)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0xe60)" ( (binary_expression "iVar9 + 0xe60" identifier + number_literal) ))))) ;) }) (else_clause "else if ((iVar12 != iVar6) || (iVar6 = *(int *)(iVar9 + 0xe60), iVar15 < iVar6))\n    goto LAB_00094e08;" else (if_statement "if ((iVar12 != iVar6) || (iVar6 = *(int *)(iVar9 + 0xe60), iVar15 < iVar6))\n    goto LAB_00094e08;" if (parenthesized_expression "((iVar12 != iVar6) || (iVar6 = *(int *)(iVar9 + 0xe60), iVar15 < iVar6))" ( (binary_expression "(iVar12 != iVar6) || (iVar6 = *(int *)(iVar9 + 0xe60), iVar15 < iVar6)" (parenthesized_expression "(iVar12 != iVar6)" ( (binary_expression "iVar12 != iVar6" identifier != identifier) )) || (parenthesized_expression "(iVar6 = *(int *)(iVar9 + 0xe60), iVar15 < iVar6)" ( (comma_expression "iVar6 = *(int *)(iVar9 + 0xe60), iVar15 < iVar6" (assignment_expression "iVar6 = *(int *)(iVar9 + 0xe60)" identifier = (pointer_expression "*(int *)(iVar9 + 0xe60)" * (cast_expression "(int *)(iVar9 + 0xe60)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0xe60)" ( (binary_expression "iVar9 + 0xe60" identifier + number_literal) ))))) , (binary_expression "iVar15 < iVar6" identifier < identifier)) ))) )) (goto_statement "goto LAB_00094e08;" goto statement_identifier ;)))) (expression_statement "iVar14 = iVar21 * iVar19 + *(int *)(iVar9 + 0xe58);" (assignment_expression "iVar14 = iVar21 * iVar19 + *(int *)(iVar9 + 0xe58)" identifier = (binary_expression "iVar21 * iVar19 + *(int *)(iVar9 + 0xe58)" (binary_expression "iVar21 * iVar19" identifier * identifier) + (pointer_expression "*(int *)(iVar9 + 0xe58)" * (cast_expression "(int *)(iVar9 + 0xe58)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0xe58)" ( (binary_expression "iVar9 + 0xe58" identifier + number_literal) )))))) ;) (expression_statement "iVar6 = iVar21 * iVar19 + iVar6;" (assignment_expression "iVar6 = iVar21 * iVar19 + iVar6" identifier = (binary_expression "iVar21 * iVar19 + iVar6" (binary_expression "iVar21 * iVar19" identifier * identifier) + identifier)) ;) (expression_statement "*(int *)(iVar9 + 0xe58) = iVar14;" (assignment_expression "*(int *)(iVar9 + 0xe58) = iVar14" (pointer_expression "*(int *)(iVar9 + 0xe58)" * (cast_expression "(int *)(iVar9 + 0xe58)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0xe58)" ( (binary_expression "iVar9 + 0xe58" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(iVar9 + 0xe60) = iVar6;" (assignment_expression "*(int *)(iVar9 + 0xe60) = iVar6" (pointer_expression "*(int *)(iVar9 + 0xe60)" * (cast_expression "(int *)(iVar9 + 0xe60)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0xe60)" ( (binary_expression "iVar9 + 0xe60" identifier + number_literal) )))) = identifier) ;) (if_statement "if (iVar14 < iVar10) {\n      (**(code **)(puVar26 + 0x7d398))\n                (*(int *)(puVar26 + 0x7c740) + 0x5a20,*(int *)(puVar26 + 0x7c740) + 0x5830,0x9dd,\n                 *(int *)(puVar26 + 0x7c740) + 0x6200);\n      return;\n    }" if (parenthesized_expression "(iVar14 < iVar10)" ( (binary_expression "iVar14 < iVar10" identifier < identifier) )) (compound_statement "{\n      (**(code **)(puVar26 + 0x7d398))\n                (*(int *)(puVar26 + 0x7c740) + 0x5a20,*(int *)(puVar26 + 0x7c740) + 0x5830,0x9dd,\n                 *(int *)(puVar26 + 0x7c740) + 0x6200);\n      return;\n    }" { (expression_statement "(**(code **)(puVar26 + 0x7d398))\n                (*(int *)(puVar26 + 0x7c740) + 0x5a20,*(int *)(puVar26 + 0x7c740) + 0x5830,0x9dd,\n                 *(int *)(puVar26 + 0x7c740) + 0x6200);" (call_expression "(**(code **)(puVar26 + 0x7d398))\n                (*(int *)(puVar26 + 0x7c740) + 0x5a20,*(int *)(puVar26 + 0x7c740) + 0x5830,0x9dd,\n                 *(int *)(puVar26 + 0x7c740) + 0x6200)" (parenthesized_expression "(**(code **)(puVar26 + 0x7d398))" ( (pointer_expression "**(code **)(puVar26 + 0x7d398)" * (pointer_expression "*(code **)(puVar26 + 0x7d398)" * (cast_expression "(code **)(puVar26 + 0x7d398)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar26 + 0x7d398)" ( (binary_expression "puVar26 + 0x7d398" identifier + number_literal) ))))) )) (argument_list "(*(int *)(puVar26 + 0x7c740) + 0x5a20,*(int *)(puVar26 + 0x7c740) + 0x5830,0x9dd,\n                 *(int *)(puVar26 + 0x7c740) + 0x6200)" ( (binary_expression "*(int *)(puVar26 + 0x7c740) + 0x5a20" (pointer_expression "*(int *)(puVar26 + 0x7c740)" * (cast_expression "(int *)(puVar26 + 0x7c740)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar26 + 0x7c740)" ( (binary_expression "puVar26 + 0x7c740" identifier + number_literal) )))) + number_literal) , (binary_expression "*(int *)(puVar26 + 0x7c740) + 0x5830" (pointer_expression "*(int *)(puVar26 + 0x7c740)" * (cast_expression "(int *)(puVar26 + 0x7c740)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar26 + 0x7c740)" ( (binary_expression "puVar26 + 0x7c740" identifier + number_literal) )))) + number_literal) , number_literal , (binary_expression "*(int *)(puVar26 + 0x7c740) + 0x6200" (pointer_expression "*(int *)(puVar26 + 0x7c740)" * (cast_expression "(int *)(puVar26 + 0x7c740)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar26 + 0x7c740)" ( (binary_expression "puVar26 + 0x7c740" identifier + number_literal) )))) + number_literal) ))) ;) (return_statement "return;" return ;) })) (if_statement "if (iVar18 <= iVar14) {\n      (**(code **)(puVar26 + 0x7d398))\n                (*(int *)(puVar26 + 0x7c740) + 0x5a44,*(int *)(puVar26 + 0x7c740) + 0x5830,0x9de,\n                 *(int *)(puVar26 + 0x7c740) + 0x6200);\n      return;\n    }" if (parenthesized_expression "(iVar18 <= iVar14)" ( (binary_expression "iVar18 <= iVar14" identifier <= identifier) )) (compound_statement "{\n      (**(code **)(puVar26 + 0x7d398))\n                (*(int *)(puVar26 + 0x7c740) + 0x5a44,*(int *)(puVar26 + 0x7c740) + 0x5830,0x9de,\n                 *(int *)(puVar26 + 0x7c740) + 0x6200);\n      return;\n    }" { (expression_statement "(**(code **)(puVar26 + 0x7d398))\n                (*(int *)(puVar26 + 0x7c740) + 0x5a44,*(int *)(puVar26 + 0x7c740) + 0x5830,0x9de,\n                 *(int *)(puVar26 + 0x7c740) + 0x6200);" (call_expression "(**(code **)(puVar26 + 0x7d398))\n                (*(int *)(puVar26 + 0x7c740) + 0x5a44,*(int *)(puVar26 + 0x7c740) + 0x5830,0x9de,\n                 *(int *)(puVar26 + 0x7c740) + 0x6200)" (parenthesized_expression "(**(code **)(puVar26 + 0x7d398))" ( (pointer_expression "**(code **)(puVar26 + 0x7d398)" * (pointer_expression "*(code **)(puVar26 + 0x7d398)" * (cast_expression "(code **)(puVar26 + 0x7d398)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar26 + 0x7d398)" ( (binary_expression "puVar26 + 0x7d398" identifier + number_literal) ))))) )) (argument_list "(*(int *)(puVar26 + 0x7c740) + 0x5a44,*(int *)(puVar26 + 0x7c740) + 0x5830,0x9de,\n                 *(int *)(puVar26 + 0x7c740) + 0x6200)" ( (binary_expression "*(int *)(puVar26 + 0x7c740) + 0x5a44" (pointer_expression "*(int *)(puVar26 + 0x7c740)" * (cast_expression "(int *)(puVar26 + 0x7c740)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar26 + 0x7c740)" ( (binary_expression "puVar26 + 0x7c740" identifier + number_literal) )))) + number_literal) , (binary_expression "*(int *)(puVar26 + 0x7c740) + 0x5830" (pointer_expression "*(int *)(puVar26 + 0x7c740)" * (cast_expression "(int *)(puVar26 + 0x7c740)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar26 + 0x7c740)" ( (binary_expression "puVar26 + 0x7c740" identifier + number_literal) )))) + number_literal) , number_literal , (binary_expression "*(int *)(puVar26 + 0x7c740) + 0x6200" (pointer_expression "*(int *)(puVar26 + 0x7c740)" * (cast_expression "(int *)(puVar26 + 0x7c740)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar26 + 0x7c740)" ( (binary_expression "puVar26 + 0x7c740" identifier + number_literal) )))) + number_literal) ))) ;) (return_statement "return;" return ;) })) (if_statement "if (iVar6 <= iVar10) {\n      (**(code **)(puVar26 + 0x7d398))\n                (*(int *)(puVar26 + 0x7c740) + 0x5a64,*(int *)(puVar26 + 0x7c740) + 0x5830,0x9df,\n                 *(int *)(puVar26 + 0x7c740) + 0x6200);\n      return;\n    }" if (parenthesized_expression "(iVar6 <= iVar10)" ( (binary_expression "iVar6 <= iVar10" identifier <= identifier) )) (compound_statement "{\n      (**(code **)(puVar26 + 0x7d398))\n                (*(int *)(puVar26 + 0x7c740) + 0x5a64,*(int *)(puVar26 + 0x7c740) + 0x5830,0x9df,\n                 *(int *)(puVar26 + 0x7c740) + 0x6200);\n      return;\n    }" { (expression_statement "(**(code **)(puVar26 + 0x7d398))\n                (*(int *)(puVar26 + 0x7c740) + 0x5a64,*(int *)(puVar26 + 0x7c740) + 0x5830,0x9df,\n                 *(int *)(puVar26 + 0x7c740) + 0x6200);" (call_expression "(**(code **)(puVar26 + 0x7d398))\n                (*(int *)(puVar26 + 0x7c740) + 0x5a64,*(int *)(puVar26 + 0x7c740) + 0x5830,0x9df,\n                 *(int *)(puVar26 + 0x7c740) + 0x6200)" (parenthesized_expression "(**(code **)(puVar26 + 0x7d398))" ( (pointer_expression "**(code **)(puVar26 + 0x7d398)" * (pointer_expression "*(code **)(puVar26 + 0x7d398)" * (cast_expression "(code **)(puVar26 + 0x7d398)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar26 + 0x7d398)" ( (binary_expression "puVar26 + 0x7d398" identifier + number_literal) ))))) )) (argument_list "(*(int *)(puVar26 + 0x7c740) + 0x5a64,*(int *)(puVar26 + 0x7c740) + 0x5830,0x9df,\n                 *(int *)(puVar26 + 0x7c740) + 0x6200)" ( (binary_expression "*(int *)(puVar26 + 0x7c740) + 0x5a64" (pointer_expression "*(int *)(puVar26 + 0x7c740)" * (cast_expression "(int *)(puVar26 + 0x7c740)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar26 + 0x7c740)" ( (binary_expression "puVar26 + 0x7c740" identifier + number_literal) )))) + number_literal) , (binary_expression "*(int *)(puVar26 + 0x7c740) + 0x5830" (pointer_expression "*(int *)(puVar26 + 0x7c740)" * (cast_expression "(int *)(puVar26 + 0x7c740)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar26 + 0x7c740)" ( (binary_expression "puVar26 + 0x7c740" identifier + number_literal) )))) + number_literal) , number_literal , (binary_expression "*(int *)(puVar26 + 0x7c740) + 0x6200" (pointer_expression "*(int *)(puVar26 + 0x7c740)" * (cast_expression "(int *)(puVar26 + 0x7c740)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar26 + 0x7c740)" ( (binary_expression "puVar26 + 0x7c740" identifier + number_literal) )))) + number_literal) ))) ;) (return_statement "return;" return ;) })) (if_statement "if (iVar18 < iVar6) {\n      (**(code **)(puVar26 + 0x7d398))\n                (*(int *)(puVar26 + 0x7c740) + 0x5a84,*(int *)(puVar26 + 0x7c740) + 0x5830,0x9e0,\n                 *(int *)(puVar26 + 0x7c740) + 0x6200);\n      return;\n    }" if (parenthesized_expression "(iVar18 < iVar6)" ( (binary_expression "iVar18 < iVar6" identifier < identifier) )) (compound_statement "{\n      (**(code **)(puVar26 + 0x7d398))\n                (*(int *)(puVar26 + 0x7c740) + 0x5a84,*(int *)(puVar26 + 0x7c740) + 0x5830,0x9e0,\n                 *(int *)(puVar26 + 0x7c740) + 0x6200);\n      return;\n    }" { (expression_statement "(**(code **)(puVar26 + 0x7d398))\n                (*(int *)(puVar26 + 0x7c740) + 0x5a84,*(int *)(puVar26 + 0x7c740) + 0x5830,0x9e0,\n                 *(int *)(puVar26 + 0x7c740) + 0x6200);" (call_expression "(**(code **)(puVar26 + 0x7d398))\n                (*(int *)(puVar26 + 0x7c740) + 0x5a84,*(int *)(puVar26 + 0x7c740) + 0x5830,0x9e0,\n                 *(int *)(puVar26 + 0x7c740) + 0x6200)" (parenthesized_expression "(**(code **)(puVar26 + 0x7d398))" ( (pointer_expression "**(code **)(puVar26 + 0x7d398)" * (pointer_expression "*(code **)(puVar26 + 0x7d398)" * (cast_expression "(code **)(puVar26 + 0x7d398)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar26 + 0x7d398)" ( (binary_expression "puVar26 + 0x7d398" identifier + number_literal) ))))) )) (argument_list "(*(int *)(puVar26 + 0x7c740) + 0x5a84,*(int *)(puVar26 + 0x7c740) + 0x5830,0x9e0,\n                 *(int *)(puVar26 + 0x7c740) + 0x6200)" ( (binary_expression "*(int *)(puVar26 + 0x7c740) + 0x5a84" (pointer_expression "*(int *)(puVar26 + 0x7c740)" * (cast_expression "(int *)(puVar26 + 0x7c740)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar26 + 0x7c740)" ( (binary_expression "puVar26 + 0x7c740" identifier + number_literal) )))) + number_literal) , (binary_expression "*(int *)(puVar26 + 0x7c740) + 0x5830" (pointer_expression "*(int *)(puVar26 + 0x7c740)" * (cast_expression "(int *)(puVar26 + 0x7c740)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar26 + 0x7c740)" ( (binary_expression "puVar26 + 0x7c740" identifier + number_literal) )))) + number_literal) , number_literal , (binary_expression "*(int *)(puVar26 + 0x7c740) + 0x6200" (pointer_expression "*(int *)(puVar26 + 0x7c740)" * (cast_expression "(int *)(puVar26 + 0x7c740)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar26 + 0x7c740)" ( (binary_expression "puVar26 + 0x7c740" identifier + number_literal) )))) + number_literal) ))) ;) (return_statement "return;" return ;) })) }) (else_clause "else {\nLAB_00094e08:\n    *(undefined4 *)(iVar9 + 0xe48) = 0;\n    *(undefined4 *)(iVar9 + 0xe5c) = 0;\n    *(undefined4 *)(iVar9 + 0xe60) = 0;\n    *(undefined4 *)(iVar9 + 0xe54) = 0;\n    *(undefined4 *)(iVar9 + 0xe58) = 0;\n  }" else (compound_statement "{\nLAB_00094e08:\n    *(undefined4 *)(iVar9 + 0xe48) = 0;\n    *(undefined4 *)(iVar9 + 0xe5c) = 0;\n    *(undefined4 *)(iVar9 + 0xe60) = 0;\n    *(undefined4 *)(iVar9 + 0xe54) = 0;\n    *(undefined4 *)(iVar9 + 0xe58) = 0;\n  }" { (labeled_statement "LAB_00094e08:\n    *(undefined4 *)(iVar9 + 0xe48) = 0;" statement_identifier : (expression_statement "*(undefined4 *)(iVar9 + 0xe48) = 0;" (assignment_expression "*(undefined4 *)(iVar9 + 0xe48) = 0" (pointer_expression "*(undefined4 *)(iVar9 + 0xe48)" * (cast_expression "(undefined4 *)(iVar9 + 0xe48)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0xe48)" ( (binary_expression "iVar9 + 0xe48" identifier + number_literal) )))) = number_literal) ;)) (expression_statement "*(undefined4 *)(iVar9 + 0xe5c) = 0;" (assignment_expression "*(undefined4 *)(iVar9 + 0xe5c) = 0" (pointer_expression "*(undefined4 *)(iVar9 + 0xe5c)" * (cast_expression "(undefined4 *)(iVar9 + 0xe5c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0xe5c)" ( (binary_expression "iVar9 + 0xe5c" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(iVar9 + 0xe60) = 0;" (assignment_expression "*(undefined4 *)(iVar9 + 0xe60) = 0" (pointer_expression "*(undefined4 *)(iVar9 + 0xe60)" * (cast_expression "(undefined4 *)(iVar9 + 0xe60)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0xe60)" ( (binary_expression "iVar9 + 0xe60" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(iVar9 + 0xe54) = 0;" (assignment_expression "*(undefined4 *)(iVar9 + 0xe54) = 0" (pointer_expression "*(undefined4 *)(iVar9 + 0xe54)" * (cast_expression "(undefined4 *)(iVar9 + 0xe54)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0xe54)" ( (binary_expression "iVar9 + 0xe54" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(iVar9 + 0xe58) = 0;" (assignment_expression "*(undefined4 *)(iVar9 + 0xe58) = 0" (pointer_expression "*(undefined4 *)(iVar9 + 0xe58)" * (cast_expression "(undefined4 *)(iVar9 + 0xe58)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0xe58)" ( (binary_expression "iVar9 + 0xe58" identifier + number_literal) )))) = number_literal) ;) }))) (labeled_statement "LAB_00094c48:\n  if ((0 < iVar10) && (iVar10 <= iVar18)) {\n    FUN_00092d1c(iVar9,iVar10,iVar12);\n    iVar12 = *(int *)(iVar9 + 0x6c);\n  }" statement_identifier : (if_statement "if ((0 < iVar10) && (iVar10 <= iVar18)) {\n    FUN_00092d1c(iVar9,iVar10,iVar12);\n    iVar12 = *(int *)(iVar9 + 0x6c);\n  }" if (parenthesized_expression "((0 < iVar10) && (iVar10 <= iVar18))" ( (binary_expression "(0 < iVar10) && (iVar10 <= iVar18)" (parenthesized_expression "(0 < iVar10)" ( (binary_expression "0 < iVar10" number_literal < identifier) )) && (parenthesized_expression "(iVar10 <= iVar18)" ( (binary_expression "iVar10 <= iVar18" identifier <= identifier) ))) )) (compound_statement "{\n    FUN_00092d1c(iVar9,iVar10,iVar12);\n    iVar12 = *(int *)(iVar9 + 0x6c);\n  }" { (expression_statement "FUN_00092d1c(iVar9,iVar10,iVar12);" (call_expression "FUN_00092d1c(iVar9,iVar10,iVar12)" identifier (argument_list "(iVar9,iVar10,iVar12)" ( identifier , identifier , identifier ))) ;) (expression_statement "iVar12 = *(int *)(iVar9 + 0x6c);" (assignment_expression "iVar12 = *(int *)(iVar9 + 0x6c)" identifier = (pointer_expression "*(int *)(iVar9 + 0x6c)" * (cast_expression "(int *)(iVar9 + 0x6c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0x6c)" ( (binary_expression "iVar9 + 0x6c" identifier + number_literal) ))))) ;) }))) (if_statement "if (iVar21 == -1) {\n    iVar21 = iVar19 + *(int *)(iVar9 + 0x70);\n    if ((0 < iVar21) && (iVar21 <= *(int *)(iVar9 + 300))) {\n      FUN_00092d1c(iVar9,iVar21,iVar12,1);\n      iVar12 = *(int *)(iVar9 + 0x6c);\n    }\n    iVar21 = FUN_00092a9c(iVar9,iVar12,0x9eb,1);\n    if (0 < iVar24) {\n      iVar18 = *(int *)(puVar26 + 0x7cf20);\n      iVar10 = 0;\n      do {\n        iVar6 = iVar10 + *(int *)(iVar9 + 0x70);\n        iVar12 = iVar6 + iVar19;\n        iVar6 = iVar6 * 0xc;\n        puVar22 = (undefined4 *)(*(int *)(iVar21 + 0x14) + iVar12 * 0xc);\n        puVar25 = (undefined4 *)(*(int *)(iVar21 + 0x14) + iVar6);\n        (*(code *)(iVar18 + 0xab0))(iVar21,(iVar6 >> 2) * -0x55555555);\n        uVar20 = puVar22[2];\n        uVar13 = puVar22[1];\n        *puVar25 = *puVar22;\n        puVar25[1] = uVar13;\n        puVar25[2] = uVar20;\n        if (puVar22[2] != 0) {\n          puVar25[2] = (iVar6 + iVar12 * -0xc >> 2) * 0x55555555 + puVar22[2];\n        }\n        iVar10 = iVar10 + 1;\n        puVar22[2] = 0;\n      } while (iVar24 != iVar10);\n    }\n    if (iVar19 != 0) {\n      iVar18 = iVar24;\n      do {\n        iVar10 = iVar18 + 1;\n        FUN_00091070(iVar21,iVar18 + *(int *)(iVar9 + 0x70),iVar9 + 0x54);\n        iVar18 = iVar10;\n      } while (iVar10 != iVar19 + iVar24);\n      return;\n    }\n  }\n  else {\n    iVar18 = iVar24 + -1;\n    iVar21 = FUN_00092a9c(iVar9,iVar12,0x9eb,1);\n    if (iVar24 != 0) {\n      iVar10 = *(int *)(puVar26 + 0x7cf20);\n      do {\n        iVar6 = iVar18 + *(int *)(iVar9 + 0x70);\n        iVar12 = (iVar19 + iVar6) * 0xc;\n        puVar22 = (undefined4 *)(*(int *)(iVar21 + 0x14) + iVar6 * 0xc);\n        puVar25 = (undefined4 *)(*(int *)(iVar21 + 0x14) + iVar12);\n        (*(code *)(iVar10 + 0xab0))(iVar21,(iVar12 >> 2) * -0x55555555);\n        uVar20 = puVar22[2];\n        uVar13 = puVar22[1];\n        *puVar25 = *puVar22;\n        puVar25[1] = uVar13;\n        puVar25[2] = uVar20;\n        if (puVar22[2] != 0) {\n          puVar25[2] = (iVar12 + iVar6 * -0xc >> 2) * 0x55555555 + puVar22[2];\n        }\n        iVar18 = iVar18 + -1;\n        puVar22[2] = 0;\n      } while (iVar18 != -1);\n    }\n    iVar18 = iVar19 + -1;\n    if (iVar19 != 0) {\n      do {\n        iVar19 = iVar18 + *(int *)(iVar9 + 0x70);\n        iVar18 = iVar18 + -1;\n        FUN_00091070(iVar21,iVar19,iVar9 + 0x54);\n      } while (iVar18 != -1);\n    }\n  }" if (parenthesized_expression "(iVar21 == -1)" ( (binary_expression "iVar21 == -1" identifier == number_literal) )) (compound_statement "{\n    iVar21 = iVar19 + *(int *)(iVar9 + 0x70);\n    if ((0 < iVar21) && (iVar21 <= *(int *)(iVar9 + 300))) {\n      FUN_00092d1c(iVar9,iVar21,iVar12,1);\n      iVar12 = *(int *)(iVar9 + 0x6c);\n    }\n    iVar21 = FUN_00092a9c(iVar9,iVar12,0x9eb,1);\n    if (0 < iVar24) {\n      iVar18 = *(int *)(puVar26 + 0x7cf20);\n      iVar10 = 0;\n      do {\n        iVar6 = iVar10 + *(int *)(iVar9 + 0x70);\n        iVar12 = iVar6 + iVar19;\n        iVar6 = iVar6 * 0xc;\n        puVar22 = (undefined4 *)(*(int *)(iVar21 + 0x14) + iVar12 * 0xc);\n        puVar25 = (undefined4 *)(*(int *)(iVar21 + 0x14) + iVar6);\n        (*(code *)(iVar18 + 0xab0))(iVar21,(iVar6 >> 2) * -0x55555555);\n        uVar20 = puVar22[2];\n        uVar13 = puVar22[1];\n        *puVar25 = *puVar22;\n        puVar25[1] = uVar13;\n        puVar25[2] = uVar20;\n        if (puVar22[2] != 0) {\n          puVar25[2] = (iVar6 + iVar12 * -0xc >> 2) * 0x55555555 + puVar22[2];\n        }\n        iVar10 = iVar10 + 1;\n        puVar22[2] = 0;\n      } while (iVar24 != iVar10);\n    }\n    if (iVar19 != 0) {\n      iVar18 = iVar24;\n      do {\n        iVar10 = iVar18 + 1;\n        FUN_00091070(iVar21,iVar18 + *(int *)(iVar9 + 0x70),iVar9 + 0x54);\n        iVar18 = iVar10;\n      } while (iVar10 != iVar19 + iVar24);\n      return;\n    }\n  }" { (expression_statement "iVar21 = iVar19 + *(int *)(iVar9 + 0x70);" (assignment_expression "iVar21 = iVar19 + *(int *)(iVar9 + 0x70)" identifier = (binary_expression "iVar19 + *(int *)(iVar9 + 0x70)" identifier + (pointer_expression "*(int *)(iVar9 + 0x70)" * (cast_expression "(int *)(iVar9 + 0x70)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0x70)" ( (binary_expression "iVar9 + 0x70" identifier + number_literal) )))))) ;) (if_statement "if ((0 < iVar21) && (iVar21 <= *(int *)(iVar9 + 300))) {\n      FUN_00092d1c(iVar9,iVar21,iVar12,1);\n      iVar12 = *(int *)(iVar9 + 0x6c);\n    }" if (parenthesized_expression "((0 < iVar21) && (iVar21 <= *(int *)(iVar9 + 300)))" ( (binary_expression "(0 < iVar21) && (iVar21 <= *(int *)(iVar9 + 300))" (parenthesized_expression "(0 < iVar21)" ( (binary_expression "0 < iVar21" number_literal < identifier) )) && (parenthesized_expression "(iVar21 <= *(int *)(iVar9 + 300))" ( (binary_expression "iVar21 <= *(int *)(iVar9 + 300)" identifier <= (pointer_expression "*(int *)(iVar9 + 300)" * (cast_expression "(int *)(iVar9 + 300)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 300)" ( (binary_expression "iVar9 + 300" identifier + number_literal) ))))) ))) )) (compound_statement "{\n      FUN_00092d1c(iVar9,iVar21,iVar12,1);\n      iVar12 = *(int *)(iVar9 + 0x6c);\n    }" { (expression_statement "FUN_00092d1c(iVar9,iVar21,iVar12,1);" (call_expression "FUN_00092d1c(iVar9,iVar21,iVar12,1)" identifier (argument_list "(iVar9,iVar21,iVar12,1)" ( identifier , identifier , identifier , number_literal ))) ;) (expression_statement "iVar12 = *(int *)(iVar9 + 0x6c);" (assignment_expression "iVar12 = *(int *)(iVar9 + 0x6c)" identifier = (pointer_expression "*(int *)(iVar9 + 0x6c)" * (cast_expression "(int *)(iVar9 + 0x6c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0x6c)" ( (binary_expression "iVar9 + 0x6c" identifier + number_literal) ))))) ;) })) (expression_statement "iVar21 = FUN_00092a9c(iVar9,iVar12,0x9eb,1);" (assignment_expression "iVar21 = FUN_00092a9c(iVar9,iVar12,0x9eb,1)" identifier = (call_expression "FUN_00092a9c(iVar9,iVar12,0x9eb,1)" identifier (argument_list "(iVar9,iVar12,0x9eb,1)" ( identifier , identifier , number_literal , number_literal )))) ;) (if_statement "if (0 < iVar24) {\n      iVar18 = *(int *)(puVar26 + 0x7cf20);\n      iVar10 = 0;\n      do {\n        iVar6 = iVar10 + *(int *)(iVar9 + 0x70);\n        iVar12 = iVar6 + iVar19;\n        iVar6 = iVar6 * 0xc;\n        puVar22 = (undefined4 *)(*(int *)(iVar21 + 0x14) + iVar12 * 0xc);\n        puVar25 = (undefined4 *)(*(int *)(iVar21 + 0x14) + iVar6);\n        (*(code *)(iVar18 + 0xab0))(iVar21,(iVar6 >> 2) * -0x55555555);\n        uVar20 = puVar22[2];\n        uVar13 = puVar22[1];\n        *puVar25 = *puVar22;\n        puVar25[1] = uVar13;\n        puVar25[2] = uVar20;\n        if (puVar22[2] != 0) {\n          puVar25[2] = (iVar6 + iVar12 * -0xc >> 2) * 0x55555555 + puVar22[2];\n        }\n        iVar10 = iVar10 + 1;\n        puVar22[2] = 0;\n      } while (iVar24 != iVar10);\n    }" if (parenthesized_expression "(0 < iVar24)" ( (binary_expression "0 < iVar24" number_literal < identifier) )) (compound_statement "{\n      iVar18 = *(int *)(puVar26 + 0x7cf20);\n      iVar10 = 0;\n      do {\n        iVar6 = iVar10 + *(int *)(iVar9 + 0x70);\n        iVar12 = iVar6 + iVar19;\n        iVar6 = iVar6 * 0xc;\n        puVar22 = (undefined4 *)(*(int *)(iVar21 + 0x14) + iVar12 * 0xc);\n        puVar25 = (undefined4 *)(*(int *)(iVar21 + 0x14) + iVar6);\n        (*(code *)(iVar18 + 0xab0))(iVar21,(iVar6 >> 2) * -0x55555555);\n        uVar20 = puVar22[2];\n        uVar13 = puVar22[1];\n        *puVar25 = *puVar22;\n        puVar25[1] = uVar13;\n        puVar25[2] = uVar20;\n        if (puVar22[2] != 0) {\n          puVar25[2] = (iVar6 + iVar12 * -0xc >> 2) * 0x55555555 + puVar22[2];\n        }\n        iVar10 = iVar10 + 1;\n        puVar22[2] = 0;\n      } while (iVar24 != iVar10);\n    }" { (expression_statement "iVar18 = *(int *)(puVar26 + 0x7cf20);" (assignment_expression "iVar18 = *(int *)(puVar26 + 0x7cf20)" identifier = (pointer_expression "*(int *)(puVar26 + 0x7cf20)" * (cast_expression "(int *)(puVar26 + 0x7cf20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar26 + 0x7cf20)" ( (binary_expression "puVar26 + 0x7cf20" identifier + number_literal) ))))) ;) (expression_statement "iVar10 = 0;" (assignment_expression "iVar10 = 0" identifier = number_literal) ;) (do_statement "do {\n        iVar6 = iVar10 + *(int *)(iVar9 + 0x70);\n        iVar12 = iVar6 + iVar19;\n        iVar6 = iVar6 * 0xc;\n        puVar22 = (undefined4 *)(*(int *)(iVar21 + 0x14) + iVar12 * 0xc);\n        puVar25 = (undefined4 *)(*(int *)(iVar21 + 0x14) + iVar6);\n        (*(code *)(iVar18 + 0xab0))(iVar21,(iVar6 >> 2) * -0x55555555);\n        uVar20 = puVar22[2];\n        uVar13 = puVar22[1];\n        *puVar25 = *puVar22;\n        puVar25[1] = uVar13;\n        puVar25[2] = uVar20;\n        if (puVar22[2] != 0) {\n          puVar25[2] = (iVar6 + iVar12 * -0xc >> 2) * 0x55555555 + puVar22[2];\n        }\n        iVar10 = iVar10 + 1;\n        puVar22[2] = 0;\n      } while (iVar24 != iVar10);" do (compound_statement "{\n        iVar6 = iVar10 + *(int *)(iVar9 + 0x70);\n        iVar12 = iVar6 + iVar19;\n        iVar6 = iVar6 * 0xc;\n        puVar22 = (undefined4 *)(*(int *)(iVar21 + 0x14) + iVar12 * 0xc);\n        puVar25 = (undefined4 *)(*(int *)(iVar21 + 0x14) + iVar6);\n        (*(code *)(iVar18 + 0xab0))(iVar21,(iVar6 >> 2) * -0x55555555);\n        uVar20 = puVar22[2];\n        uVar13 = puVar22[1];\n        *puVar25 = *puVar22;\n        puVar25[1] = uVar13;\n        puVar25[2] = uVar20;\n        if (puVar22[2] != 0) {\n          puVar25[2] = (iVar6 + iVar12 * -0xc >> 2) * 0x55555555 + puVar22[2];\n        }\n        iVar10 = iVar10 + 1;\n        puVar22[2] = 0;\n      }" { (expression_statement "iVar6 = iVar10 + *(int *)(iVar9 + 0x70);" (assignment_expression "iVar6 = iVar10 + *(int *)(iVar9 + 0x70)" identifier = (binary_expression "iVar10 + *(int *)(iVar9 + 0x70)" identifier + (pointer_expression "*(int *)(iVar9 + 0x70)" * (cast_expression "(int *)(iVar9 + 0x70)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0x70)" ( (binary_expression "iVar9 + 0x70" identifier + number_literal) )))))) ;) (expression_statement "iVar12 = iVar6 + iVar19;" (assignment_expression "iVar12 = iVar6 + iVar19" identifier = (binary_expression "iVar6 + iVar19" identifier + identifier)) ;) (expression_statement "iVar6 = iVar6 * 0xc;" (assignment_expression "iVar6 = iVar6 * 0xc" identifier = (binary_expression "iVar6 * 0xc" identifier * number_literal)) ;) (expression_statement "puVar22 = (undefined4 *)(*(int *)(iVar21 + 0x14) + iVar12 * 0xc);" (assignment_expression "puVar22 = (undefined4 *)(*(int *)(iVar21 + 0x14) + iVar12 * 0xc)" identifier = (cast_expression "(undefined4 *)(*(int *)(iVar21 + 0x14) + iVar12 * 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar21 + 0x14) + iVar12 * 0xc)" ( (binary_expression "*(int *)(iVar21 + 0x14) + iVar12 * 0xc" (pointer_expression "*(int *)(iVar21 + 0x14)" * (cast_expression "(int *)(iVar21 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar21 + 0x14)" ( (binary_expression "iVar21 + 0x14" identifier + number_literal) )))) + (binary_expression "iVar12 * 0xc" identifier * number_literal)) )))) ;) (expression_statement "puVar25 = (undefined4 *)(*(int *)(iVar21 + 0x14) + iVar6);" (assignment_expression "puVar25 = (undefined4 *)(*(int *)(iVar21 + 0x14) + iVar6)" identifier = (cast_expression "(undefined4 *)(*(int *)(iVar21 + 0x14) + iVar6)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar21 + 0x14) + iVar6)" ( (binary_expression "*(int *)(iVar21 + 0x14) + iVar6" (pointer_expression "*(int *)(iVar21 + 0x14)" * (cast_expression "(int *)(iVar21 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar21 + 0x14)" ( (binary_expression "iVar21 + 0x14" identifier + number_literal) )))) + identifier) )))) ;) (expression_statement "(*(code *)(iVar18 + 0xab0))(iVar21,(iVar6 >> 2) * -0x55555555);" (call_expression "(*(code *)(iVar18 + 0xab0))(iVar21,(iVar6 >> 2) * -0x55555555)" (parenthesized_expression "(*(code *)(iVar18 + 0xab0))" ( (pointer_expression "*(code *)(iVar18 + 0xab0)" * (cast_expression "(code *)(iVar18 + 0xab0)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar18 + 0xab0)" ( (binary_expression "iVar18 + 0xab0" identifier + number_literal) )))) )) (argument_list "(iVar21,(iVar6 >> 2) * -0x55555555)" ( identifier , (binary_expression "(iVar6 >> 2) * -0x55555555" (parenthesized_expression "(iVar6 >> 2)" ( (binary_expression "iVar6 >> 2" identifier >> number_literal) )) * number_literal) ))) ;) (expression_statement "uVar20 = puVar22[2];" (assignment_expression "uVar20 = puVar22[2]" identifier = (subscript_expression "puVar22[2]" identifier [ number_literal ])) ;) (expression_statement "uVar13 = puVar22[1];" (assignment_expression "uVar13 = puVar22[1]" identifier = (subscript_expression "puVar22[1]" identifier [ number_literal ])) ;) (expression_statement "*puVar25 = *puVar22;" (assignment_expression "*puVar25 = *puVar22" (pointer_expression "*puVar25" * identifier) = (pointer_expression "*puVar22" * identifier)) ;) (expression_statement "puVar25[1] = uVar13;" (assignment_expression "puVar25[1] = uVar13" (subscript_expression "puVar25[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar25[2] = uVar20;" (assignment_expression "puVar25[2] = uVar20" (subscript_expression "puVar25[2]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (puVar22[2] != 0) {\n          puVar25[2] = (iVar6 + iVar12 * -0xc >> 2) * 0x55555555 + puVar22[2];\n        }" if (parenthesized_expression "(puVar22[2] != 0)" ( (binary_expression "puVar22[2] != 0" (subscript_expression "puVar22[2]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n          puVar25[2] = (iVar6 + iVar12 * -0xc >> 2) * 0x55555555 + puVar22[2];\n        }" { (expression_statement "puVar25[2] = (iVar6 + iVar12 * -0xc >> 2) * 0x55555555 + puVar22[2];" (assignment_expression "puVar25[2] = (iVar6 + iVar12 * -0xc >> 2) * 0x55555555 + puVar22[2]" (subscript_expression "puVar25[2]" identifier [ number_literal ]) = (binary_expression "(iVar6 + iVar12 * -0xc >> 2) * 0x55555555 + puVar22[2]" (binary_expression "(iVar6 + iVar12 * -0xc >> 2) * 0x55555555" (parenthesized_expression "(iVar6 + iVar12 * -0xc >> 2)" ( (binary_expression "iVar6 + iVar12 * -0xc >> 2" (binary_expression "iVar6 + iVar12 * -0xc" identifier + (binary_expression "iVar12 * -0xc" identifier * number_literal)) >> number_literal) )) * number_literal) + (subscript_expression "puVar22[2]" identifier [ number_literal ]))) ;) })) (expression_statement "iVar10 = iVar10 + 1;" (assignment_expression "iVar10 = iVar10 + 1" identifier = (binary_expression "iVar10 + 1" identifier + number_literal)) ;) (expression_statement "puVar22[2] = 0;" (assignment_expression "puVar22[2] = 0" (subscript_expression "puVar22[2]" identifier [ number_literal ]) = number_literal) ;) }) while (parenthesized_expression "(iVar24 != iVar10)" ( (binary_expression "iVar24 != iVar10" identifier != identifier) )) ;) })) (if_statement "if (iVar19 != 0) {\n      iVar18 = iVar24;\n      do {\n        iVar10 = iVar18 + 1;\n        FUN_00091070(iVar21,iVar18 + *(int *)(iVar9 + 0x70),iVar9 + 0x54);\n        iVar18 = iVar10;\n      } while (iVar10 != iVar19 + iVar24);\n      return;\n    }" if (parenthesized_expression "(iVar19 != 0)" ( (binary_expression "iVar19 != 0" identifier != number_literal) )) (compound_statement "{\n      iVar18 = iVar24;\n      do {\n        iVar10 = iVar18 + 1;\n        FUN_00091070(iVar21,iVar18 + *(int *)(iVar9 + 0x70),iVar9 + 0x54);\n        iVar18 = iVar10;\n      } while (iVar10 != iVar19 + iVar24);\n      return;\n    }" { (expression_statement "iVar18 = iVar24;" (assignment_expression "iVar18 = iVar24" identifier = identifier) ;) (do_statement "do {\n        iVar10 = iVar18 + 1;\n        FUN_00091070(iVar21,iVar18 + *(int *)(iVar9 + 0x70),iVar9 + 0x54);\n        iVar18 = iVar10;\n      } while (iVar10 != iVar19 + iVar24);" do (compound_statement "{\n        iVar10 = iVar18 + 1;\n        FUN_00091070(iVar21,iVar18 + *(int *)(iVar9 + 0x70),iVar9 + 0x54);\n        iVar18 = iVar10;\n      }" { (expression_statement "iVar10 = iVar18 + 1;" (assignment_expression "iVar10 = iVar18 + 1" identifier = (binary_expression "iVar18 + 1" identifier + number_literal)) ;) (expression_statement "FUN_00091070(iVar21,iVar18 + *(int *)(iVar9 + 0x70),iVar9 + 0x54);" (call_expression "FUN_00091070(iVar21,iVar18 + *(int *)(iVar9 + 0x70),iVar9 + 0x54)" identifier (argument_list "(iVar21,iVar18 + *(int *)(iVar9 + 0x70),iVar9 + 0x54)" ( identifier , (binary_expression "iVar18 + *(int *)(iVar9 + 0x70)" identifier + (pointer_expression "*(int *)(iVar9 + 0x70)" * (cast_expression "(int *)(iVar9 + 0x70)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0x70)" ( (binary_expression "iVar9 + 0x70" identifier + number_literal) ))))) , (binary_expression "iVar9 + 0x54" identifier + number_literal) ))) ;) (expression_statement "iVar18 = iVar10;" (assignment_expression "iVar18 = iVar10" identifier = identifier) ;) }) while (parenthesized_expression "(iVar10 != iVar19 + iVar24)" ( (binary_expression "iVar10 != iVar19 + iVar24" identifier != (binary_expression "iVar19 + iVar24" identifier + identifier)) )) ;) (return_statement "return;" return ;) })) }) (else_clause "else {\n    iVar18 = iVar24 + -1;\n    iVar21 = FUN_00092a9c(iVar9,iVar12,0x9eb,1);\n    if (iVar24 != 0) {\n      iVar10 = *(int *)(puVar26 + 0x7cf20);\n      do {\n        iVar6 = iVar18 + *(int *)(iVar9 + 0x70);\n        iVar12 = (iVar19 + iVar6) * 0xc;\n        puVar22 = (undefined4 *)(*(int *)(iVar21 + 0x14) + iVar6 * 0xc);\n        puVar25 = (undefined4 *)(*(int *)(iVar21 + 0x14) + iVar12);\n        (*(code *)(iVar10 + 0xab0))(iVar21,(iVar12 >> 2) * -0x55555555);\n        uVar20 = puVar22[2];\n        uVar13 = puVar22[1];\n        *puVar25 = *puVar22;\n        puVar25[1] = uVar13;\n        puVar25[2] = uVar20;\n        if (puVar22[2] != 0) {\n          puVar25[2] = (iVar12 + iVar6 * -0xc >> 2) * 0x55555555 + puVar22[2];\n        }\n        iVar18 = iVar18 + -1;\n        puVar22[2] = 0;\n      } while (iVar18 != -1);\n    }\n    iVar18 = iVar19 + -1;\n    if (iVar19 != 0) {\n      do {\n        iVar19 = iVar18 + *(int *)(iVar9 + 0x70);\n        iVar18 = iVar18 + -1;\n        FUN_00091070(iVar21,iVar19,iVar9 + 0x54);\n      } while (iVar18 != -1);\n    }\n  }" else (compound_statement "{\n    iVar18 = iVar24 + -1;\n    iVar21 = FUN_00092a9c(iVar9,iVar12,0x9eb,1);\n    if (iVar24 != 0) {\n      iVar10 = *(int *)(puVar26 + 0x7cf20);\n      do {\n        iVar6 = iVar18 + *(int *)(iVar9 + 0x70);\n        iVar12 = (iVar19 + iVar6) * 0xc;\n        puVar22 = (undefined4 *)(*(int *)(iVar21 + 0x14) + iVar6 * 0xc);\n        puVar25 = (undefined4 *)(*(int *)(iVar21 + 0x14) + iVar12);\n        (*(code *)(iVar10 + 0xab0))(iVar21,(iVar12 >> 2) * -0x55555555);\n        uVar20 = puVar22[2];\n        uVar13 = puVar22[1];\n        *puVar25 = *puVar22;\n        puVar25[1] = uVar13;\n        puVar25[2] = uVar20;\n        if (puVar22[2] != 0) {\n          puVar25[2] = (iVar12 + iVar6 * -0xc >> 2) * 0x55555555 + puVar22[2];\n        }\n        iVar18 = iVar18 + -1;\n        puVar22[2] = 0;\n      } while (iVar18 != -1);\n    }\n    iVar18 = iVar19 + -1;\n    if (iVar19 != 0) {\n      do {\n        iVar19 = iVar18 + *(int *)(iVar9 + 0x70);\n        iVar18 = iVar18 + -1;\n        FUN_00091070(iVar21,iVar19,iVar9 + 0x54);\n      } while (iVar18 != -1);\n    }\n  }" { (expression_statement "iVar18 = iVar24 + -1;" (assignment_expression "iVar18 = iVar24 + -1" identifier = (binary_expression "iVar24 + -1" identifier + number_literal)) ;) (expression_statement "iVar21 = FUN_00092a9c(iVar9,iVar12,0x9eb,1);" (assignment_expression "iVar21 = FUN_00092a9c(iVar9,iVar12,0x9eb,1)" identifier = (call_expression "FUN_00092a9c(iVar9,iVar12,0x9eb,1)" identifier (argument_list "(iVar9,iVar12,0x9eb,1)" ( identifier , identifier , number_literal , number_literal )))) ;) (if_statement "if (iVar24 != 0) {\n      iVar10 = *(int *)(puVar26 + 0x7cf20);\n      do {\n        iVar6 = iVar18 + *(int *)(iVar9 + 0x70);\n        iVar12 = (iVar19 + iVar6) * 0xc;\n        puVar22 = (undefined4 *)(*(int *)(iVar21 + 0x14) + iVar6 * 0xc);\n        puVar25 = (undefined4 *)(*(int *)(iVar21 + 0x14) + iVar12);\n        (*(code *)(iVar10 + 0xab0))(iVar21,(iVar12 >> 2) * -0x55555555);\n        uVar20 = puVar22[2];\n        uVar13 = puVar22[1];\n        *puVar25 = *puVar22;\n        puVar25[1] = uVar13;\n        puVar25[2] = uVar20;\n        if (puVar22[2] != 0) {\n          puVar25[2] = (iVar12 + iVar6 * -0xc >> 2) * 0x55555555 + puVar22[2];\n        }\n        iVar18 = iVar18 + -1;\n        puVar22[2] = 0;\n      } while (iVar18 != -1);\n    }" if (parenthesized_expression "(iVar24 != 0)" ( (binary_expression "iVar24 != 0" identifier != number_literal) )) (compound_statement "{\n      iVar10 = *(int *)(puVar26 + 0x7cf20);\n      do {\n        iVar6 = iVar18 + *(int *)(iVar9 + 0x70);\n        iVar12 = (iVar19 + iVar6) * 0xc;\n        puVar22 = (undefined4 *)(*(int *)(iVar21 + 0x14) + iVar6 * 0xc);\n        puVar25 = (undefined4 *)(*(int *)(iVar21 + 0x14) + iVar12);\n        (*(code *)(iVar10 + 0xab0))(iVar21,(iVar12 >> 2) * -0x55555555);\n        uVar20 = puVar22[2];\n        uVar13 = puVar22[1];\n        *puVar25 = *puVar22;\n        puVar25[1] = uVar13;\n        puVar25[2] = uVar20;\n        if (puVar22[2] != 0) {\n          puVar25[2] = (iVar12 + iVar6 * -0xc >> 2) * 0x55555555 + puVar22[2];\n        }\n        iVar18 = iVar18 + -1;\n        puVar22[2] = 0;\n      } while (iVar18 != -1);\n    }" { (expression_statement "iVar10 = *(int *)(puVar26 + 0x7cf20);" (assignment_expression "iVar10 = *(int *)(puVar26 + 0x7cf20)" identifier = (pointer_expression "*(int *)(puVar26 + 0x7cf20)" * (cast_expression "(int *)(puVar26 + 0x7cf20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar26 + 0x7cf20)" ( (binary_expression "puVar26 + 0x7cf20" identifier + number_literal) ))))) ;) (do_statement "do {\n        iVar6 = iVar18 + *(int *)(iVar9 + 0x70);\n        iVar12 = (iVar19 + iVar6) * 0xc;\n        puVar22 = (undefined4 *)(*(int *)(iVar21 + 0x14) + iVar6 * 0xc);\n        puVar25 = (undefined4 *)(*(int *)(iVar21 + 0x14) + iVar12);\n        (*(code *)(iVar10 + 0xab0))(iVar21,(iVar12 >> 2) * -0x55555555);\n        uVar20 = puVar22[2];\n        uVar13 = puVar22[1];\n        *puVar25 = *puVar22;\n        puVar25[1] = uVar13;\n        puVar25[2] = uVar20;\n        if (puVar22[2] != 0) {\n          puVar25[2] = (iVar12 + iVar6 * -0xc >> 2) * 0x55555555 + puVar22[2];\n        }\n        iVar18 = iVar18 + -1;\n        puVar22[2] = 0;\n      } while (iVar18 != -1);" do (compound_statement "{\n        iVar6 = iVar18 + *(int *)(iVar9 + 0x70);\n        iVar12 = (iVar19 + iVar6) * 0xc;\n        puVar22 = (undefined4 *)(*(int *)(iVar21 + 0x14) + iVar6 * 0xc);\n        puVar25 = (undefined4 *)(*(int *)(iVar21 + 0x14) + iVar12);\n        (*(code *)(iVar10 + 0xab0))(iVar21,(iVar12 >> 2) * -0x55555555);\n        uVar20 = puVar22[2];\n        uVar13 = puVar22[1];\n        *puVar25 = *puVar22;\n        puVar25[1] = uVar13;\n        puVar25[2] = uVar20;\n        if (puVar22[2] != 0) {\n          puVar25[2] = (iVar12 + iVar6 * -0xc >> 2) * 0x55555555 + puVar22[2];\n        }\n        iVar18 = iVar18 + -1;\n        puVar22[2] = 0;\n      }" { (expression_statement "iVar6 = iVar18 + *(int *)(iVar9 + 0x70);" (assignment_expression "iVar6 = iVar18 + *(int *)(iVar9 + 0x70)" identifier = (binary_expression "iVar18 + *(int *)(iVar9 + 0x70)" identifier + (pointer_expression "*(int *)(iVar9 + 0x70)" * (cast_expression "(int *)(iVar9 + 0x70)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0x70)" ( (binary_expression "iVar9 + 0x70" identifier + number_literal) )))))) ;) (expression_statement "iVar12 = (iVar19 + iVar6) * 0xc;" (assignment_expression "iVar12 = (iVar19 + iVar6) * 0xc" identifier = (binary_expression "(iVar19 + iVar6) * 0xc" (parenthesized_expression "(iVar19 + iVar6)" ( (binary_expression "iVar19 + iVar6" identifier + identifier) )) * number_literal)) ;) (expression_statement "puVar22 = (undefined4 *)(*(int *)(iVar21 + 0x14) + iVar6 * 0xc);" (assignment_expression "puVar22 = (undefined4 *)(*(int *)(iVar21 + 0x14) + iVar6 * 0xc)" identifier = (cast_expression "(undefined4 *)(*(int *)(iVar21 + 0x14) + iVar6 * 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar21 + 0x14) + iVar6 * 0xc)" ( (binary_expression "*(int *)(iVar21 + 0x14) + iVar6 * 0xc" (pointer_expression "*(int *)(iVar21 + 0x14)" * (cast_expression "(int *)(iVar21 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar21 + 0x14)" ( (binary_expression "iVar21 + 0x14" identifier + number_literal) )))) + (binary_expression "iVar6 * 0xc" identifier * number_literal)) )))) ;) (expression_statement "puVar25 = (undefined4 *)(*(int *)(iVar21 + 0x14) + iVar12);" (assignment_expression "puVar25 = (undefined4 *)(*(int *)(iVar21 + 0x14) + iVar12)" identifier = (cast_expression "(undefined4 *)(*(int *)(iVar21 + 0x14) + iVar12)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar21 + 0x14) + iVar12)" ( (binary_expression "*(int *)(iVar21 + 0x14) + iVar12" (pointer_expression "*(int *)(iVar21 + 0x14)" * (cast_expression "(int *)(iVar21 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar21 + 0x14)" ( (binary_expression "iVar21 + 0x14" identifier + number_literal) )))) + identifier) )))) ;) (expression_statement "(*(code *)(iVar10 + 0xab0))(iVar21,(iVar12 >> 2) * -0x55555555);" (call_expression "(*(code *)(iVar10 + 0xab0))(iVar21,(iVar12 >> 2) * -0x55555555)" (parenthesized_expression "(*(code *)(iVar10 + 0xab0))" ( (pointer_expression "*(code *)(iVar10 + 0xab0)" * (cast_expression "(code *)(iVar10 + 0xab0)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + 0xab0)" ( (binary_expression "iVar10 + 0xab0" identifier + number_literal) )))) )) (argument_list "(iVar21,(iVar12 >> 2) * -0x55555555)" ( identifier , (binary_expression "(iVar12 >> 2) * -0x55555555" (parenthesized_expression "(iVar12 >> 2)" ( (binary_expression "iVar12 >> 2" identifier >> number_literal) )) * number_literal) ))) ;) (expression_statement "uVar20 = puVar22[2];" (assignment_expression "uVar20 = puVar22[2]" identifier = (subscript_expression "puVar22[2]" identifier [ number_literal ])) ;) (expression_statement "uVar13 = puVar22[1];" (assignment_expression "uVar13 = puVar22[1]" identifier = (subscript_expression "puVar22[1]" identifier [ number_literal ])) ;) (expression_statement "*puVar25 = *puVar22;" (assignment_expression "*puVar25 = *puVar22" (pointer_expression "*puVar25" * identifier) = (pointer_expression "*puVar22" * identifier)) ;) (expression_statement "puVar25[1] = uVar13;" (assignment_expression "puVar25[1] = uVar13" (subscript_expression "puVar25[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar25[2] = uVar20;" (assignment_expression "puVar25[2] = uVar20" (subscript_expression "puVar25[2]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (puVar22[2] != 0) {\n          puVar25[2] = (iVar12 + iVar6 * -0xc >> 2) * 0x55555555 + puVar22[2];\n        }" if (parenthesized_expression "(puVar22[2] != 0)" ( (binary_expression "puVar22[2] != 0" (subscript_expression "puVar22[2]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n          puVar25[2] = (iVar12 + iVar6 * -0xc >> 2) * 0x55555555 + puVar22[2];\n        }" { (expression_statement "puVar25[2] = (iVar12 + iVar6 * -0xc >> 2) * 0x55555555 + puVar22[2];" (assignment_expression "puVar25[2] = (iVar12 + iVar6 * -0xc >> 2) * 0x55555555 + puVar22[2]" (subscript_expression "puVar25[2]" identifier [ number_literal ]) = (binary_expression "(iVar12 + iVar6 * -0xc >> 2) * 0x55555555 + puVar22[2]" (binary_expression "(iVar12 + iVar6 * -0xc >> 2) * 0x55555555" (parenthesized_expression "(iVar12 + iVar6 * -0xc >> 2)" ( (binary_expression "iVar12 + iVar6 * -0xc >> 2" (binary_expression "iVar12 + iVar6 * -0xc" identifier + (binary_expression "iVar6 * -0xc" identifier * number_literal)) >> number_literal) )) * number_literal) + (subscript_expression "puVar22[2]" identifier [ number_literal ]))) ;) })) (expression_statement "iVar18 = iVar18 + -1;" (assignment_expression "iVar18 = iVar18 + -1" identifier = (binary_expression "iVar18 + -1" identifier + number_literal)) ;) (expression_statement "puVar22[2] = 0;" (assignment_expression "puVar22[2] = 0" (subscript_expression "puVar22[2]" identifier [ number_literal ]) = number_literal) ;) }) while (parenthesized_expression "(iVar18 != -1)" ( (binary_expression "iVar18 != -1" identifier != number_literal) )) ;) })) (expression_statement "iVar18 = iVar19 + -1;" (assignment_expression "iVar18 = iVar19 + -1" identifier = (binary_expression "iVar19 + -1" identifier + number_literal)) ;) (if_statement "if (iVar19 != 0) {\n      do {\n        iVar19 = iVar18 + *(int *)(iVar9 + 0x70);\n        iVar18 = iVar18 + -1;\n        FUN_00091070(iVar21,iVar19,iVar9 + 0x54);\n      } while (iVar18 != -1);\n    }" if (parenthesized_expression "(iVar19 != 0)" ( (binary_expression "iVar19 != 0" identifier != number_literal) )) (compound_statement "{\n      do {\n        iVar19 = iVar18 + *(int *)(iVar9 + 0x70);\n        iVar18 = iVar18 + -1;\n        FUN_00091070(iVar21,iVar19,iVar9 + 0x54);\n      } while (iVar18 != -1);\n    }" { (do_statement "do {\n        iVar19 = iVar18 + *(int *)(iVar9 + 0x70);\n        iVar18 = iVar18 + -1;\n        FUN_00091070(iVar21,iVar19,iVar9 + 0x54);\n      } while (iVar18 != -1);" do (compound_statement "{\n        iVar19 = iVar18 + *(int *)(iVar9 + 0x70);\n        iVar18 = iVar18 + -1;\n        FUN_00091070(iVar21,iVar19,iVar9 + 0x54);\n      }" { (expression_statement "iVar19 = iVar18 + *(int *)(iVar9 + 0x70);" (assignment_expression "iVar19 = iVar18 + *(int *)(iVar9 + 0x70)" identifier = (binary_expression "iVar18 + *(int *)(iVar9 + 0x70)" identifier + (pointer_expression "*(int *)(iVar9 + 0x70)" * (cast_expression "(int *)(iVar9 + 0x70)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0x70)" ( (binary_expression "iVar9 + 0x70" identifier + number_literal) )))))) ;) (expression_statement "iVar18 = iVar18 + -1;" (assignment_expression "iVar18 = iVar18 + -1" identifier = (binary_expression "iVar18 + -1" identifier + number_literal)) ;) (expression_statement "FUN_00091070(iVar21,iVar19,iVar9 + 0x54);" (call_expression "FUN_00091070(iVar21,iVar19,iVar9 + 0x54)" identifier (argument_list "(iVar21,iVar19,iVar9 + 0x54)" ( identifier , identifier , (binary_expression "iVar9 + 0x54" identifier + number_literal) ))) ;) }) while (parenthesized_expression "(iVar18 != -1)" ( (binary_expression "iVar18 != -1" identifier != number_literal) )) ;) })) }))) (return_statement "return;" return ;) (labeled_statement "LAB_00094994:\n  if (bVar2) {\n    FUN_000901cc(&local_98,10,0);\n  }" statement_identifier : (if_statement "if (bVar2) {\n    FUN_000901cc(&local_98,10,0);\n  }" if (parenthesized_expression "(bVar2)" ( identifier )) (compound_statement "{\n    FUN_000901cc(&local_98,10,0);\n  }" { (expression_statement "FUN_000901cc(&local_98,10,0);" (call_expression "FUN_000901cc(&local_98,10,0)" identifier (argument_list "(&local_98,10,0)" ( (pointer_expression "&local_98" & identifier) , number_literal , number_literal ))) ;) }))) (if_statement "if (*(int *)(puVar4 + 6) != 0) {\n    (*pcVar3)(puVar4);\n  }" if (parenthesized_expression "(*(int *)(puVar4 + 6) != 0)" ( (binary_expression "*(int *)(puVar4 + 6) != 0" (pointer_expression "*(int *)(puVar4 + 6)" * (cast_expression "(int *)(puVar4 + 6)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + 6)" ( (binary_expression "puVar4 + 6" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n    (*pcVar3)(puVar4);\n  }" { (expression_statement "(*pcVar3)(puVar4);" (call_expression "(*pcVar3)(puVar4)" (parenthesized_expression "(*pcVar3)" ( (pointer_expression "*pcVar3" * identifier) )) (argument_list "(puVar4)" ( identifier ))) ;) })) (expression_statement "local_cc = local_cc + 1;" (assignment_expression "local_cc = local_cc + 1" identifier = (binary_expression "local_cc + 1" identifier + number_literal)) ;) (expression_statement "local_d4 = iVar19;" (assignment_expression "local_d4 = iVar19" identifier = identifier) ;) (goto_statement "goto LAB_000945cc;" goto statement_identifier ;) })))
(translation_unit "/* WARNING: Enum "anon_enum_32": Some values do not have unique names */\n\nvoid clipme(Terminal *term,pos top,pos bottom,int rect,int desel)\n\n{\n  bool bVar1;\n  bool bVar2;\n  int *piVar3;\n  int iVar4;\n  int iVar5;\n  ushort *puVar6;\n  uint chr;\n  int iVar7;\n  termline *ptVar8;\n  Context ctx;\n  int iVar9;\n  uint uVar10;\n  int iVar11;\n  uint uVar12;\n  unicode_data *puVar13;\n  Terminal *pTVar14;\n  wchar_t *pwVar15;\n  ulong uVar16;\n  int in_a3;\n  char cVar17;\n  int iVar18;\n  int iVar19;\n  int iVar20;\n  int iVar21;\n  int iVar22;\n  termchar *ptVar23;\n  wchar_t *pwVar24;\n  termchar *ptVar25;\n  int in_t9;\n  code *pcVar26;\n  code *pcVar27;\n  int local_d4;\n  int iStack_cc;\n  int iStack_c8;\n  int iStack_c0;\n  clip_workbuf buf;\n  wchar_t wbuf [4];\n  wchar_t cbuf [16];\n  char buf_1 [4];\n  \n  piVar3 = *(int **)(in_t9 + 0x7e14c);\n  iVar4 = *piVar3;\n  buf.buflen = 0x1400;\n  buf.bufpos = 0;\n  buf.textbuf = (wchar_t *)(**(code **)(in_t9 + 0x7ce08))(0x1400,4);\n  buf.textptr = buf.textbuf;\n  buf.attrbuf = (int *)(**(code **)(in_t9 + 0x7ce08))(buf.buflen,4);\n  iVar9 = *(int *)(in_t9 + 0x7d5f4);\n  iVar20 = desel;\n  if (top.x == 0) {\n    iVar20 = 0;\n  }\n  iVar5 = *(int *)(in_t9 + 0x7d5f4);\n  local_d4 = desel;\n  iStack_cc = rect;\n  buf.attrptr = buf.attrbuf;\nLAB_000945cc:\n  bVar1 = iStack_cc < in_a3;\n  if ((bVar1) || ((iStack_cc == in_a3 && (local_d4 < top.y)))) {\n    puVar6 = (ushort *)(*(code *)(iVar9 + 0x2a9c))(term,iStack_cc,0x1595,0);\n    iStack_c0 = term->cols;\n    if ((*puVar6 & 0x10) == 0) {\n      if (iStack_c0 != 0) {\n        iVar11 = *(int *)(puVar6 + 10) + iStack_c0 * 0xc;\n        do {\n          if ((((*(uint *)(iVar11 + -0xc) != 0x20) &&\n               ((*(uint *)(iVar11 + -0xc) & 0xfffffcff) != 0xd820)) || (*(int *)(iVar11 + -4) != 0))\n             || (iStack_c0 <= local_d4)) break;\n          iStack_c0 = iStack_c0 + -1;\n          iVar11 = iVar11 + -0xc;\n        } while (iStack_c0 != 0);\n      }\n      if (bVar1) {\n        iStack_c8 = iStack_cc;\n        bVar2 = true;\n      }\n      else if (iStack_cc == in_a3) {\n        bVar2 = iStack_c0 < top.y;\n        iStack_c8 = iStack_cc;\n      }\n      else {\n        bVar2 = false;\n        iStack_c8 = iStack_cc;\n      }\n    }\n    else if ((*puVar6 & 0x20) == 0) {\n      bVar2 = false;\n      iStack_c8 = iStack_cc;\n    }\n    else if (iStack_c0 == 0) {\n      bVar2 = false;\n      iStack_c8 = iStack_cc + -1;\n    }\n    else {\n      bVar2 = false;\n      iStack_c8 = iStack_cc;\n      iStack_c0 = iStack_c0 + -1;\n    }\n    iVar11 = local_d4;\n    if ((top.x != 0) && (bVar2 = bVar1, top.y < iStack_c0)) {\n      iStack_c0 = top.y;\n    }\njoined_r0x00094680:\n    do {\n      iVar22 = iVar11;\n      if (((!bVar1) && ((iStack_cc != in_a3 || (top.y <= iVar22)))) ||\n         ((iStack_c8 <= iStack_cc && ((iStack_c8 != iStack_cc || (iStack_c0 <= iVar22))))))\n      goto LAB_00094994;\n      chr = *(uint *)(*(int *)(puVar6 + 10) + iVar22 * 0xc);\n      if (chr != 0xdfff) {\n        uVar12 = chr & 0xffffff00;\n        iVar19 = iVar22 * 0xc;\n        iVar21 = *(int *)(*(int *)(puVar6 + 10) + iVar19 + 4);\n        uVar10 = chr & 0xff;\n        local_d4 = iVar22;\n        if (uVar12 == 0xd900) goto LAB_00094804;\n        do {\n          if (uVar12 == 0xda00) {\n            chr = term->ucsdata->unitab_scoacs[uVar10];\n            uVar12 = chr & 0xffffff00;\n            uVar10 = chr & 0xff;\n          }\n          else if (uVar12 == 0xd800) {\n            puVar13 = term->ucsdata;\n            goto LAB_0009491c;\n          }\njoined_r0x00094728:\n          if (uVar12 == 0xf000) {\n            iVar11 = uVar10 + 0x404;\nLAB_00094740:\n            chr = term->ucsdata->unitab_scoacs[iVar11 + -4];\n            uVar10 = chr & 0xff;\n          }\n          else if (uVar12 == 0xf100) {\n            iVar11 = uVar10 + 0x204;\n            goto LAB_00094740;\n          }\n          iVar11 = local_d4 + 1;\n          cbuf[1] = 0;\n          iVar18 = iVar11;\n          cbuf[0] = chr;\n          if (((chr & 0xfffffe00) == 0xf000) && ((chr & 0xe0) != 0)) {\n            if (uVar10 != 0x7f) {\n              cVar17 = (char)chr;\n              iVar7 = (**(code **)(in_t9 + 0x7d674))(term->ucsdata->font_codepage,(int)cVar17);\n              buf_1[0] = cVar17;\n              if (iVar7 == 0) {\n                iVar7 = (**(code **)(in_t9 + 0x7d0e8))\n                                  (term->ucsdata->font_codepage,0,buf_1,1,wbuf,4);\n              }\n              else {\n                buf_1[1] = (char)*(undefined4 *)(*(int *)(puVar6 + 10) + iVar11 * 0xc);\n                iVar7 = (**(code **)(in_t9 + 0x7d0e8))\n                                  (term->ucsdata->font_codepage,0,buf_1,2,wbuf,4);\n                iVar18 = local_d4 + 2;\n                local_d4 = iVar11;\n              }\n              if (0 < iVar7) {\n                (**(code **)(in_t9 + 0x7db94))(cbuf,wbuf,iVar7 * 4,0x40);\n                cbuf[iVar7] = 0;\n                chr = cbuf[0];\n              }\n              goto LAB_00094778;\n            }\n            clip_addchar(&buf,chr,iVar21);\n          }\n          else {\nLAB_00094778:\n            iVar11 = iVar18;\n            if (chr != 0) {\n              uVar10 = cbuf[1];\n              pwVar15 = cbuf;\n              while( true ) {\n                clip_addchar(&buf,chr,iVar21);\n                if (uVar10 == 0) break;\n                chr = uVar10;\n                uVar10 = pwVar15[2];\n                pwVar15 = pwVar15 + 1;\n              }\n            }\n          }\n          iVar21 = *(int *)(puVar6 + 10);\n          iVar19 = *(int *)(iVar21 + iVar19 + 8);\n          iVar22 = iVar22 + iVar19;\n          if (iVar19 == 0) goto joined_r0x00094680;\n          iVar19 = iVar22 * 0xc;\n          chr = *(uint *)(iVar21 + iVar22 * 0xc);\n          iVar21 = *(int *)(iVar21 + iVar19 + 4);\n          uVar12 = chr & 0xffffff00;\n          uVar10 = chr & 0xff;\n        } while (uVar12 != 0xd900);\nLAB_00094804:\n        puVar13 = term->ucsdata;\n        if (term->rawcnp == 0) {\n          chr = puVar13->unitab_xterm[uVar10];\n          uVar12 = chr & 0xffffff00;\n          uVar10 = chr & 0xff;\n        }\n        else {\nLAB_0009491c:\n          chr = puVar13->unitab_line[uVar10];\n          uVar12 = chr & 0xffffff00;\n          uVar10 = chr & 0xff;\n        }\n        goto joined_r0x00094728;\n      }\n      iVar11 = iVar22 + 1;\n    } while( true );\n  }\n  pwVar15 = buf.textbuf;\n  (**(code **)(in_t9 + 0x7d678))(term->frontend,buf.textbuf,buf.attrbuf,buf.bufpos,bottom.y);\n  (**(code **)(in_t9 + 0x7ce0c))(buf.textbuf);\n  pTVar14 = (Terminal *)buf.attrbuf;\n  (**(code **)(in_t9 + 0x7ce0c))();\n  if (iVar4 == *piVar3) {\n    return;\n  }\n  pcVar26 = *(code **)(in_t9 + 0x7dde4);\n  (*pcVar26)();\n  iVar20 = 1;\n  if ((int)pwVar15 < 0) {\n    iVar20 = -1;\n    pwVar15 = (wchar_t *)-(int)pwVar15;\n  }\n  iVar4 = pTVar14->cols;\n  iVar9 = (pTVar14->curs).x;\n  iVar11 = (pTVar14->curs).y;\n  iVar5 = (pTVar14->selend).y;\n  pwVar24 = (wchar_t *)(iVar4 - iVar9);\n  if ((int)pwVar24 <= (int)pwVar15) {\n    pwVar15 = pwVar24;\n  }\n  iVar22 = (int)pwVar24 - (int)pwVar15;\n  if (((iVar11 < iVar5) || ((iVar11 == iVar5 && (iVar9 < (pTVar14->selend).x)))) &&\n     ((iVar19 = (pTVar14->selstart).y, iVar19 < iVar11 ||\n      ((iVar11 == iVar19 && ((pTVar14->selstart).x < iVar4)))))) {\n    iVar18 = iVar9 + (int)pwVar15;\n    iVar21 = iVar4;\n    if (iVar20 == 1) {\n      iVar21 = iVar4 - (int)pwVar15;\n      iVar18 = iVar9;\n    }\n    if ((iVar11 < iVar19) || ((iVar11 == iVar19 && (iVar18 <= (pTVar14->selstart).x)))) {\n      if (iVar5 < iVar11) {\n        iVar5 = (pTVar14->selend).x;\n      }\n      else if ((iVar11 != iVar5) || (iVar5 = (pTVar14->selend).x, iVar21 < iVar5))\n      goto LAB_00094e08;\n      iVar19 = iVar20 * (int)pwVar15 + (pTVar14->selstart).x;\n      iVar5 = iVar20 * (int)pwVar15 + iVar5;\n      (pTVar14->selstart).x = iVar19;\n      (pTVar14->selend).x = iVar5;\n      if (iVar19 < iVar9) goto LAB_000950ac;\n      if (iVar19 < iVar4) {\n        if (iVar9 < iVar5) {\n          if (iVar4 < iVar5) {\n            iVar11 = *(int *)(pcVar26 + 0x7c740) + 0x5830;\n            (**(code **)(pcVar26 + 0x7d398))\n                      (*(int *)(pcVar26 + 0x7c740) + 0x5a84,iVar11,0x9e0,\n                       *(int *)(pcVar26 + 0x7c740) + 0x6200);\n            goto LAB_00094ebc;\n          }\n          goto LAB_00094c48;\n        }\n        (**(code **)(pcVar26 + 0x7d398))\n                  (*(int *)(pcVar26 + 0x7c740) + 0x5a64,*(int *)(pcVar26 + 0x7c740) + 0x5830,0x9df,\n                   *(int *)(pcVar26 + 0x7c740) + 0x6200);\n      }\n      (**(code **)(pcVar26 + 0x7d398))\n                (*(int *)(pcVar26 + 0x7c740) + 0x5a44,*(int *)(pcVar26 + 0x7c740) + 0x5830,0x9de,\n                 *(int *)(pcVar26 + 0x7c740) + 0x6200);\nLAB_000950ac:\n      iVar20 = 0x9dd;\n      pcVar27 = *(code **)(pcVar26 + 0x7d398);\n      pTVar14 = (Terminal *)(*(int *)(pcVar26 + 0x7c740) + 0x5a20);\n      (*pcVar27)(pTVar14,*(int *)(pcVar26 + 0x7c740) + 0x5830,0x9dd,\n                 *(int *)(pcVar26 + 0x7c740) + 0x6200);\n      pcVar26 = *(code **)(pcVar27 + 0x7ca90);\n      pTVar14->window_update_pending = 0;\n      ctx = (Context)(*pcVar26)(pTVar14->frontend);\n      if (ctx != (Context)0x0) {\n        if (pTVar14->seen_disp_event != 0) {\n          if (pTVar14->scroll_on_disp != 0) {\n            pTVar14->disptop = 0;\n            pTVar14->seen_disp_event = 0;\n          }\n          update_sbar(pTVar14);\n        }\n        do_paint(pTVar14,ctx,iVar20);\n        (**(code **)(pcVar27 + 0x7ca94))\n                  (pTVar14->frontend,(pTVar14->curs).x,(pTVar14->curs).y - pTVar14->disptop);\n                    /* WARNING: Could not recover jumptable at 0x0009518c. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n        (**(code **)(pcVar27 + 0x7ca98))(ctx);\n        return;\n      }\n      return;\n    }\nLAB_00094e08:\n    pTVar14->selstate = ADDRTYPE_UNSPEC;\n    (pTVar14->selend).y = 0;\n    (pTVar14->selend).x = 0;\n    (pTVar14->selstart).y = 0;\n    (pTVar14->selstart).x = 0;\n  }\nLAB_00094c48:\n  if ((0 < iVar9) && (iVar9 <= iVar4)) {\n    check_boundary(pTVar14,iVar9,iVar11);\n    iVar11 = (pTVar14->curs).y;\n  }\n  if (iVar20 != -1) {\n    iVar20 = iVar22 + -1;\n    ptVar8 = lineptr(pTVar14,iVar11,0x9eb,1);\n    if (iVar22 != 0) {\n      iVar4 = *(int *)(pcVar26 + 0x7cf20);\n      do {\n        iVar9 = iVar20 + (pTVar14->curs).x;\n        iVar11 = ((int)pwVar15 + iVar9) * 0xc;\n        ptVar23 = ptVar8->chars + iVar9;\n        ptVar25 = ptVar8->chars + (int)pwVar15 + iVar9;\n        (*(code *)(iVar4 + 0xab0))(ptVar8,(iVar11 >> 2) * -0x55555555);\n        iVar5 = ptVar23->cc_next;\n        uVar16 = ptVar23->attr;\n        ptVar25->chr = ptVar23->chr;\n        ptVar25->attr = uVar16;\n        ptVar25->cc_next = iVar5;\n        if (ptVar23->cc_next != 0) {\n          ptVar25->cc_next = (iVar11 + iVar9 * -0xc >> 2) * 0x55555555 + ptVar23->cc_next;\n        }\n        iVar20 = iVar20 + -1;\n        ptVar23->cc_next = 0;\n      } while (iVar20 != -1);\n    }\n    iVar20 = (int)pwVar15 + -1;\n    if (pwVar15 == (wchar_t *)0x0) {\n      return;\n    }\n    do {\n      iVar4 = iVar20 + (pTVar14->curs).x;\n      iVar20 = iVar20 + -1;\n      copy_termchar(ptVar8,iVar4,&pTVar14->erase_char);\n    } while (iVar20 != -1);\n    return;\n  }\nLAB_00094ebc:\n  iVar20 = (int)pwVar15 + (pTVar14->curs).x;\n  if ((0 < iVar20) && (iVar20 <= pTVar14->cols)) {\n    check_boundary(pTVar14,iVar20,iVar11);\n    iVar11 = (pTVar14->curs).y;\n  }\n  ptVar8 = lineptr(pTVar14,iVar11,0x9eb,1);\n  if (0 < iVar22) {\n    iVar20 = *(int *)(pcVar26 + 0x7cf20);\n    iVar4 = 0;\n    do {\n      iVar9 = iVar4 + (pTVar14->curs).x;\n      ptVar23 = ptVar8->chars + iVar9 + (int)pwVar15;\n      ptVar25 = ptVar8->chars + iVar9;\n      (*(code *)(iVar20 + 0xab0))(ptVar8,(iVar9 * 0xc >> 2) * -0x55555555);\n      iVar5 = ptVar23->cc_next;\n      uVar16 = ptVar23->attr;\n      ptVar25->chr = ptVar23->chr;\n      ptVar25->attr = uVar16;\n      ptVar25->cc_next = iVar5;\n      if (ptVar23->cc_next != 0) {\n        ptVar25->cc_next =\n             (iVar9 * 0xc + (iVar9 + (int)pwVar15) * -0xc >> 2) * 0x55555555 + ptVar23->cc_next;\n      }\n      iVar4 = iVar4 + 1;\n      ptVar23->cc_next = 0;\n    } while (iVar22 != iVar4);\n  }\n  if (pwVar15 == (wchar_t *)0x0) {\n    return;\n  }\n  iVar20 = iVar22;\n  do {\n    iVar4 = iVar20 + 1;\n    copy_termchar(ptVar8,iVar20 + (pTVar14->curs).x,&pTVar14->erase_char);\n    iVar20 = iVar4;\n  } while (iVar4 != (int)pwVar15 + iVar22);\n  return;\nLAB_00094994:\n  if (bVar2) {\n    clip_addchar(&buf,10,0);\n  }\n  if (*(int *)(puVar6 + 6) != 0) {\n    (*(code *)(iVar5 + 0x1270))(puVar6);\n  }\n  iStack_cc = iStack_cc + 1;\n  local_d4 = iVar20;\n  goto LAB_000945cc;\n}\n\n" comment (function_definition "void clipme(Terminal *term,pos top,pos bottom,int rect,int desel)\n\n{\n  bool bVar1;\n  bool bVar2;\n  int *piVar3;\n  int iVar4;\n  int iVar5;\n  ushort *puVar6;\n  uint chr;\n  int iVar7;\n  termline *ptVar8;\n  Context ctx;\n  int iVar9;\n  uint uVar10;\n  int iVar11;\n  uint uVar12;\n  unicode_data *puVar13;\n  Terminal *pTVar14;\n  wchar_t *pwVar15;\n  ulong uVar16;\n  int in_a3;\n  char cVar17;\n  int iVar18;\n  int iVar19;\n  int iVar20;\n  int iVar21;\n  int iVar22;\n  termchar *ptVar23;\n  wchar_t *pwVar24;\n  termchar *ptVar25;\n  int in_t9;\n  code *pcVar26;\n  code *pcVar27;\n  int local_d4;\n  int iStack_cc;\n  int iStack_c8;\n  int iStack_c0;\n  clip_workbuf buf;\n  wchar_t wbuf [4];\n  wchar_t cbuf [16];\n  char buf_1 [4];\n  \n  piVar3 = *(int **)(in_t9 + 0x7e14c);\n  iVar4 = *piVar3;\n  buf.buflen = 0x1400;\n  buf.bufpos = 0;\n  buf.textbuf = (wchar_t *)(**(code **)(in_t9 + 0x7ce08))(0x1400,4);\n  buf.textptr = buf.textbuf;\n  buf.attrbuf = (int *)(**(code **)(in_t9 + 0x7ce08))(buf.buflen,4);\n  iVar9 = *(int *)(in_t9 + 0x7d5f4);\n  iVar20 = desel;\n  if (top.x == 0) {\n    iVar20 = 0;\n  }\n  iVar5 = *(int *)(in_t9 + 0x7d5f4);\n  local_d4 = desel;\n  iStack_cc = rect;\n  buf.attrptr = buf.attrbuf;\nLAB_000945cc:\n  bVar1 = iStack_cc < in_a3;\n  if ((bVar1) || ((iStack_cc == in_a3 && (local_d4 < top.y)))) {\n    puVar6 = (ushort *)(*(code *)(iVar9 + 0x2a9c))(term,iStack_cc,0x1595,0);\n    iStack_c0 = term->cols;\n    if ((*puVar6 & 0x10) == 0) {\n      if (iStack_c0 != 0) {\n        iVar11 = *(int *)(puVar6 + 10) + iStack_c0 * 0xc;\n        do {\n          if ((((*(uint *)(iVar11 + -0xc) != 0x20) &&\n               ((*(uint *)(iVar11 + -0xc) & 0xfffffcff) != 0xd820)) || (*(int *)(iVar11 + -4) != 0))\n             || (iStack_c0 <= local_d4)) break;\n          iStack_c0 = iStack_c0 + -1;\n          iVar11 = iVar11 + -0xc;\n        } while (iStack_c0 != 0);\n      }\n      if (bVar1) {\n        iStack_c8 = iStack_cc;\n        bVar2 = true;\n      }\n      else if (iStack_cc == in_a3) {\n        bVar2 = iStack_c0 < top.y;\n        iStack_c8 = iStack_cc;\n      }\n      else {\n        bVar2 = false;\n        iStack_c8 = iStack_cc;\n      }\n    }\n    else if ((*puVar6 & 0x20) == 0) {\n      bVar2 = false;\n      iStack_c8 = iStack_cc;\n    }\n    else if (iStack_c0 == 0) {\n      bVar2 = false;\n      iStack_c8 = iStack_cc + -1;\n    }\n    else {\n      bVar2 = false;\n      iStack_c8 = iStack_cc;\n      iStack_c0 = iStack_c0 + -1;\n    }\n    iVar11 = local_d4;\n    if ((top.x != 0) && (bVar2 = bVar1, top.y < iStack_c0)) {\n      iStack_c0 = top.y;\n    }\njoined_r0x00094680:\n    do {\n      iVar22 = iVar11;\n      if (((!bVar1) && ((iStack_cc != in_a3 || (top.y <= iVar22)))) ||\n         ((iStack_c8 <= iStack_cc && ((iStack_c8 != iStack_cc || (iStack_c0 <= iVar22))))))\n      goto LAB_00094994;\n      chr = *(uint *)(*(int *)(puVar6 + 10) + iVar22 * 0xc);\n      if (chr != 0xdfff) {\n        uVar12 = chr & 0xffffff00;\n        iVar19 = iVar22 * 0xc;\n        iVar21 = *(int *)(*(int *)(puVar6 + 10) + iVar19 + 4);\n        uVar10 = chr & 0xff;\n        local_d4 = iVar22;\n        if (uVar12 == 0xd900) goto LAB_00094804;\n        do {\n          if (uVar12 == 0xda00) {\n            chr = term->ucsdata->unitab_scoacs[uVar10];\n            uVar12 = chr & 0xffffff00;\n            uVar10 = chr & 0xff;\n          }\n          else if (uVar12 == 0xd800) {\n            puVar13 = term->ucsdata;\n            goto LAB_0009491c;\n          }\njoined_r0x00094728:\n          if (uVar12 == 0xf000) {\n            iVar11 = uVar10 + 0x404;\nLAB_00094740:\n            chr = term->ucsdata->unitab_scoacs[iVar11 + -4];\n            uVar10 = chr & 0xff;\n          }\n          else if (uVar12 == 0xf100) {\n            iVar11 = uVar10 + 0x204;\n            goto LAB_00094740;\n          }\n          iVar11 = local_d4 + 1;\n          cbuf[1] = 0;\n          iVar18 = iVar11;\n          cbuf[0] = chr;\n          if (((chr & 0xfffffe00) == 0xf000) && ((chr & 0xe0) != 0)) {\n            if (uVar10 != 0x7f) {\n              cVar17 = (char)chr;\n              iVar7 = (**(code **)(in_t9 + 0x7d674))(term->ucsdata->font_codepage,(int)cVar17);\n              buf_1[0] = cVar17;\n              if (iVar7 == 0) {\n                iVar7 = (**(code **)(in_t9 + 0x7d0e8))\n                                  (term->ucsdata->font_codepage,0,buf_1,1,wbuf,4);\n              }\n              else {\n                buf_1[1] = (char)*(undefined4 *)(*(int *)(puVar6 + 10) + iVar11 * 0xc);\n                iVar7 = (**(code **)(in_t9 + 0x7d0e8))\n                                  (term->ucsdata->font_codepage,0,buf_1,2,wbuf,4);\n                iVar18 = local_d4 + 2;\n                local_d4 = iVar11;\n              }\n              if (0 < iVar7) {\n                (**(code **)(in_t9 + 0x7db94))(cbuf,wbuf,iVar7 * 4,0x40);\n                cbuf[iVar7] = 0;\n                chr = cbuf[0];\n              }\n              goto LAB_00094778;\n            }\n            clip_addchar(&buf,chr,iVar21);\n          }\n          else {\nLAB_00094778:\n            iVar11 = iVar18;\n            if (chr != 0) {\n              uVar10 = cbuf[1];\n              pwVar15 = cbuf;\n              while( true ) {\n                clip_addchar(&buf,chr,iVar21);\n                if (uVar10 == 0) break;\n                chr = uVar10;\n                uVar10 = pwVar15[2];\n                pwVar15 = pwVar15 + 1;\n              }\n            }\n          }\n          iVar21 = *(int *)(puVar6 + 10);\n          iVar19 = *(int *)(iVar21 + iVar19 + 8);\n          iVar22 = iVar22 + iVar19;\n          if (iVar19 == 0) goto joined_r0x00094680;\n          iVar19 = iVar22 * 0xc;\n          chr = *(uint *)(iVar21 + iVar22 * 0xc);\n          iVar21 = *(int *)(iVar21 + iVar19 + 4);\n          uVar12 = chr & 0xffffff00;\n          uVar10 = chr & 0xff;\n        } while (uVar12 != 0xd900);\nLAB_00094804:\n        puVar13 = term->ucsdata;\n        if (term->rawcnp == 0) {\n          chr = puVar13->unitab_xterm[uVar10];\n          uVar12 = chr & 0xffffff00;\n          uVar10 = chr & 0xff;\n        }\n        else {\nLAB_0009491c:\n          chr = puVar13->unitab_line[uVar10];\n          uVar12 = chr & 0xffffff00;\n          uVar10 = chr & 0xff;\n        }\n        goto joined_r0x00094728;\n      }\n      iVar11 = iVar22 + 1;\n    } while( true );\n  }\n  pwVar15 = buf.textbuf;\n  (**(code **)(in_t9 + 0x7d678))(term->frontend,buf.textbuf,buf.attrbuf,buf.bufpos,bottom.y);\n  (**(code **)(in_t9 + 0x7ce0c))(buf.textbuf);\n  pTVar14 = (Terminal *)buf.attrbuf;\n  (**(code **)(in_t9 + 0x7ce0c))();\n  if (iVar4 == *piVar3) {\n    return;\n  }\n  pcVar26 = *(code **)(in_t9 + 0x7dde4);\n  (*pcVar26)();\n  iVar20 = 1;\n  if ((int)pwVar15 < 0) {\n    iVar20 = -1;\n    pwVar15 = (wchar_t *)-(int)pwVar15;\n  }\n  iVar4 = pTVar14->cols;\n  iVar9 = (pTVar14->curs).x;\n  iVar11 = (pTVar14->curs).y;\n  iVar5 = (pTVar14->selend).y;\n  pwVar24 = (wchar_t *)(iVar4 - iVar9);\n  if ((int)pwVar24 <= (int)pwVar15) {\n    pwVar15 = pwVar24;\n  }\n  iVar22 = (int)pwVar24 - (int)pwVar15;\n  if (((iVar11 < iVar5) || ((iVar11 == iVar5 && (iVar9 < (pTVar14->selend).x)))) &&\n     ((iVar19 = (pTVar14->selstart).y, iVar19 < iVar11 ||\n      ((iVar11 == iVar19 && ((pTVar14->selstart).x < iVar4)))))) {\n    iVar18 = iVar9 + (int)pwVar15;\n    iVar21 = iVar4;\n    if (iVar20 == 1) {\n      iVar21 = iVar4 - (int)pwVar15;\n      iVar18 = iVar9;\n    }\n    if ((iVar11 < iVar19) || ((iVar11 == iVar19 && (iVar18 <= (pTVar14->selstart).x)))) {\n      if (iVar5 < iVar11) {\n        iVar5 = (pTVar14->selend).x;\n      }\n      else if ((iVar11 != iVar5) || (iVar5 = (pTVar14->selend).x, iVar21 < iVar5))\n      goto LAB_00094e08;\n      iVar19 = iVar20 * (int)pwVar15 + (pTVar14->selstart).x;\n      iVar5 = iVar20 * (int)pwVar15 + iVar5;\n      (pTVar14->selstart).x = iVar19;\n      (pTVar14->selend).x = iVar5;\n      if (iVar19 < iVar9) goto LAB_000950ac;\n      if (iVar19 < iVar4) {\n        if (iVar9 < iVar5) {\n          if (iVar4 < iVar5) {\n            iVar11 = *(int *)(pcVar26 + 0x7c740) + 0x5830;\n            (**(code **)(pcVar26 + 0x7d398))\n                      (*(int *)(pcVar26 + 0x7c740) + 0x5a84,iVar11,0x9e0,\n                       *(int *)(pcVar26 + 0x7c740) + 0x6200);\n            goto LAB_00094ebc;\n          }\n          goto LAB_00094c48;\n        }\n        (**(code **)(pcVar26 + 0x7d398))\n                  (*(int *)(pcVar26 + 0x7c740) + 0x5a64,*(int *)(pcVar26 + 0x7c740) + 0x5830,0x9df,\n                   *(int *)(pcVar26 + 0x7c740) + 0x6200);\n      }\n      (**(code **)(pcVar26 + 0x7d398))\n                (*(int *)(pcVar26 + 0x7c740) + 0x5a44,*(int *)(pcVar26 + 0x7c740) + 0x5830,0x9de,\n                 *(int *)(pcVar26 + 0x7c740) + 0x6200);\nLAB_000950ac:\n      iVar20 = 0x9dd;\n      pcVar27 = *(code **)(pcVar26 + 0x7d398);\n      pTVar14 = (Terminal *)(*(int *)(pcVar26 + 0x7c740) + 0x5a20);\n      (*pcVar27)(pTVar14,*(int *)(pcVar26 + 0x7c740) + 0x5830,0x9dd,\n                 *(int *)(pcVar26 + 0x7c740) + 0x6200);\n      pcVar26 = *(code **)(pcVar27 + 0x7ca90);\n      pTVar14->window_update_pending = 0;\n      ctx = (Context)(*pcVar26)(pTVar14->frontend);\n      if (ctx != (Context)0x0) {\n        if (pTVar14->seen_disp_event != 0) {\n          if (pTVar14->scroll_on_disp != 0) {\n            pTVar14->disptop = 0;\n            pTVar14->seen_disp_event = 0;\n          }\n          update_sbar(pTVar14);\n        }\n        do_paint(pTVar14,ctx,iVar20);\n        (**(code **)(pcVar27 + 0x7ca94))\n                  (pTVar14->frontend,(pTVar14->curs).x,(pTVar14->curs).y - pTVar14->disptop);\n                    /* WARNING: Could not recover jumptable at 0x0009518c. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n        (**(code **)(pcVar27 + 0x7ca98))(ctx);\n        return;\n      }\n      return;\n    }\nLAB_00094e08:\n    pTVar14->selstate = ADDRTYPE_UNSPEC;\n    (pTVar14->selend).y = 0;\n    (pTVar14->selend).x = 0;\n    (pTVar14->selstart).y = 0;\n    (pTVar14->selstart).x = 0;\n  }\nLAB_00094c48:\n  if ((0 < iVar9) && (iVar9 <= iVar4)) {\n    check_boundary(pTVar14,iVar9,iVar11);\n    iVar11 = (pTVar14->curs).y;\n  }\n  if (iVar20 != -1) {\n    iVar20 = iVar22 + -1;\n    ptVar8 = lineptr(pTVar14,iVar11,0x9eb,1);\n    if (iVar22 != 0) {\n      iVar4 = *(int *)(pcVar26 + 0x7cf20);\n      do {\n        iVar9 = iVar20 + (pTVar14->curs).x;\n        iVar11 = ((int)pwVar15 + iVar9) * 0xc;\n        ptVar23 = ptVar8->chars + iVar9;\n        ptVar25 = ptVar8->chars + (int)pwVar15 + iVar9;\n        (*(code *)(iVar4 + 0xab0))(ptVar8,(iVar11 >> 2) * -0x55555555);\n        iVar5 = ptVar23->cc_next;\n        uVar16 = ptVar23->attr;\n        ptVar25->chr = ptVar23->chr;\n        ptVar25->attr = uVar16;\n        ptVar25->cc_next = iVar5;\n        if (ptVar23->cc_next != 0) {\n          ptVar25->cc_next = (iVar11 + iVar9 * -0xc >> 2) * 0x55555555 + ptVar23->cc_next;\n        }\n        iVar20 = iVar20 + -1;\n        ptVar23->cc_next = 0;\n      } while (iVar20 != -1);\n    }\n    iVar20 = (int)pwVar15 + -1;\n    if (pwVar15 == (wchar_t *)0x0) {\n      return;\n    }\n    do {\n      iVar4 = iVar20 + (pTVar14->curs).x;\n      iVar20 = iVar20 + -1;\n      copy_termchar(ptVar8,iVar4,&pTVar14->erase_char);\n    } while (iVar20 != -1);\n    return;\n  }\nLAB_00094ebc:\n  iVar20 = (int)pwVar15 + (pTVar14->curs).x;\n  if ((0 < iVar20) && (iVar20 <= pTVar14->cols)) {\n    check_boundary(pTVar14,iVar20,iVar11);\n    iVar11 = (pTVar14->curs).y;\n  }\n  ptVar8 = lineptr(pTVar14,iVar11,0x9eb,1);\n  if (0 < iVar22) {\n    iVar20 = *(int *)(pcVar26 + 0x7cf20);\n    iVar4 = 0;\n    do {\n      iVar9 = iVar4 + (pTVar14->curs).x;\n      ptVar23 = ptVar8->chars + iVar9 + (int)pwVar15;\n      ptVar25 = ptVar8->chars + iVar9;\n      (*(code *)(iVar20 + 0xab0))(ptVar8,(iVar9 * 0xc >> 2) * -0x55555555);\n      iVar5 = ptVar23->cc_next;\n      uVar16 = ptVar23->attr;\n      ptVar25->chr = ptVar23->chr;\n      ptVar25->attr = uVar16;\n      ptVar25->cc_next = iVar5;\n      if (ptVar23->cc_next != 0) {\n        ptVar25->cc_next =\n             (iVar9 * 0xc + (iVar9 + (int)pwVar15) * -0xc >> 2) * 0x55555555 + ptVar23->cc_next;\n      }\n      iVar4 = iVar4 + 1;\n      ptVar23->cc_next = 0;\n    } while (iVar22 != iVar4);\n  }\n  if (pwVar15 == (wchar_t *)0x0) {\n    return;\n  }\n  iVar20 = iVar22;\n  do {\n    iVar4 = iVar20 + 1;\n    copy_termchar(ptVar8,iVar20 + (pTVar14->curs).x,&pTVar14->erase_char);\n    iVar20 = iVar4;\n  } while (iVar4 != (int)pwVar15 + iVar22);\n  return;\nLAB_00094994:\n  if (bVar2) {\n    clip_addchar(&buf,10,0);\n  }\n  if (*(int *)(puVar6 + 6) != 0) {\n    (*(code *)(iVar5 + 0x1270))(puVar6);\n  }\n  iStack_cc = iStack_cc + 1;\n  local_d4 = iVar20;\n  goto LAB_000945cc;\n}" primitive_type (function_declarator "clipme(Terminal *term,pos top,pos bottom,int rect,int desel)" identifier (parameter_list "(Terminal *term,pos top,pos bottom,int rect,int desel)" ( (parameter_declaration "Terminal *term" type_identifier (pointer_declarator "*term" * identifier)) , (parameter_declaration "pos top" type_identifier identifier) , (parameter_declaration "pos bottom" type_identifier identifier) , (parameter_declaration "int rect" primitive_type identifier) , (parameter_declaration "int desel" primitive_type identifier) ))) (compound_statement "{\n  bool bVar1;\n  bool bVar2;\n  int *piVar3;\n  int iVar4;\n  int iVar5;\n  ushort *puVar6;\n  uint chr;\n  int iVar7;\n  termline *ptVar8;\n  Context ctx;\n  int iVar9;\n  uint uVar10;\n  int iVar11;\n  uint uVar12;\n  unicode_data *puVar13;\n  Terminal *pTVar14;\n  wchar_t *pwVar15;\n  ulong uVar16;\n  int in_a3;\n  char cVar17;\n  int iVar18;\n  int iVar19;\n  int iVar20;\n  int iVar21;\n  int iVar22;\n  termchar *ptVar23;\n  wchar_t *pwVar24;\n  termchar *ptVar25;\n  int in_t9;\n  code *pcVar26;\n  code *pcVar27;\n  int local_d4;\n  int iStack_cc;\n  int iStack_c8;\n  int iStack_c0;\n  clip_workbuf buf;\n  wchar_t wbuf [4];\n  wchar_t cbuf [16];\n  char buf_1 [4];\n  \n  piVar3 = *(int **)(in_t9 + 0x7e14c);\n  iVar4 = *piVar3;\n  buf.buflen = 0x1400;\n  buf.bufpos = 0;\n  buf.textbuf = (wchar_t *)(**(code **)(in_t9 + 0x7ce08))(0x1400,4);\n  buf.textptr = buf.textbuf;\n  buf.attrbuf = (int *)(**(code **)(in_t9 + 0x7ce08))(buf.buflen,4);\n  iVar9 = *(int *)(in_t9 + 0x7d5f4);\n  iVar20 = desel;\n  if (top.x == 0) {\n    iVar20 = 0;\n  }\n  iVar5 = *(int *)(in_t9 + 0x7d5f4);\n  local_d4 = desel;\n  iStack_cc = rect;\n  buf.attrptr = buf.attrbuf;\nLAB_000945cc:\n  bVar1 = iStack_cc < in_a3;\n  if ((bVar1) || ((iStack_cc == in_a3 && (local_d4 < top.y)))) {\n    puVar6 = (ushort *)(*(code *)(iVar9 + 0x2a9c))(term,iStack_cc,0x1595,0);\n    iStack_c0 = term->cols;\n    if ((*puVar6 & 0x10) == 0) {\n      if (iStack_c0 != 0) {\n        iVar11 = *(int *)(puVar6 + 10) + iStack_c0 * 0xc;\n        do {\n          if ((((*(uint *)(iVar11 + -0xc) != 0x20) &&\n               ((*(uint *)(iVar11 + -0xc) & 0xfffffcff) != 0xd820)) || (*(int *)(iVar11 + -4) != 0))\n             || (iStack_c0 <= local_d4)) break;\n          iStack_c0 = iStack_c0 + -1;\n          iVar11 = iVar11 + -0xc;\n        } while (iStack_c0 != 0);\n      }\n      if (bVar1) {\n        iStack_c8 = iStack_cc;\n        bVar2 = true;\n      }\n      else if (iStack_cc == in_a3) {\n        bVar2 = iStack_c0 < top.y;\n        iStack_c8 = iStack_cc;\n      }\n      else {\n        bVar2 = false;\n        iStack_c8 = iStack_cc;\n      }\n    }\n    else if ((*puVar6 & 0x20) == 0) {\n      bVar2 = false;\n      iStack_c8 = iStack_cc;\n    }\n    else if (iStack_c0 == 0) {\n      bVar2 = false;\n      iStack_c8 = iStack_cc + -1;\n    }\n    else {\n      bVar2 = false;\n      iStack_c8 = iStack_cc;\n      iStack_c0 = iStack_c0 + -1;\n    }\n    iVar11 = local_d4;\n    if ((top.x != 0) && (bVar2 = bVar1, top.y < iStack_c0)) {\n      iStack_c0 = top.y;\n    }\njoined_r0x00094680:\n    do {\n      iVar22 = iVar11;\n      if (((!bVar1) && ((iStack_cc != in_a3 || (top.y <= iVar22)))) ||\n         ((iStack_c8 <= iStack_cc && ((iStack_c8 != iStack_cc || (iStack_c0 <= iVar22))))))\n      goto LAB_00094994;\n      chr = *(uint *)(*(int *)(puVar6 + 10) + iVar22 * 0xc);\n      if (chr != 0xdfff) {\n        uVar12 = chr & 0xffffff00;\n        iVar19 = iVar22 * 0xc;\n        iVar21 = *(int *)(*(int *)(puVar6 + 10) + iVar19 + 4);\n        uVar10 = chr & 0xff;\n        local_d4 = iVar22;\n        if (uVar12 == 0xd900) goto LAB_00094804;\n        do {\n          if (uVar12 == 0xda00) {\n            chr = term->ucsdata->unitab_scoacs[uVar10];\n            uVar12 = chr & 0xffffff00;\n            uVar10 = chr & 0xff;\n          }\n          else if (uVar12 == 0xd800) {\n            puVar13 = term->ucsdata;\n            goto LAB_0009491c;\n          }\njoined_r0x00094728:\n          if (uVar12 == 0xf000) {\n            iVar11 = uVar10 + 0x404;\nLAB_00094740:\n            chr = term->ucsdata->unitab_scoacs[iVar11 + -4];\n            uVar10 = chr & 0xff;\n          }\n          else if (uVar12 == 0xf100) {\n            iVar11 = uVar10 + 0x204;\n            goto LAB_00094740;\n          }\n          iVar11 = local_d4 + 1;\n          cbuf[1] = 0;\n          iVar18 = iVar11;\n          cbuf[0] = chr;\n          if (((chr & 0xfffffe00) == 0xf000) && ((chr & 0xe0) != 0)) {\n            if (uVar10 != 0x7f) {\n              cVar17 = (char)chr;\n              iVar7 = (**(code **)(in_t9 + 0x7d674))(term->ucsdata->font_codepage,(int)cVar17);\n              buf_1[0] = cVar17;\n              if (iVar7 == 0) {\n                iVar7 = (**(code **)(in_t9 + 0x7d0e8))\n                                  (term->ucsdata->font_codepage,0,buf_1,1,wbuf,4);\n              }\n              else {\n                buf_1[1] = (char)*(undefined4 *)(*(int *)(puVar6 + 10) + iVar11 * 0xc);\n                iVar7 = (**(code **)(in_t9 + 0x7d0e8))\n                                  (term->ucsdata->font_codepage,0,buf_1,2,wbuf,4);\n                iVar18 = local_d4 + 2;\n                local_d4 = iVar11;\n              }\n              if (0 < iVar7) {\n                (**(code **)(in_t9 + 0x7db94))(cbuf,wbuf,iVar7 * 4,0x40);\n                cbuf[iVar7] = 0;\n                chr = cbuf[0];\n              }\n              goto LAB_00094778;\n            }\n            clip_addchar(&buf,chr,iVar21);\n          }\n          else {\nLAB_00094778:\n            iVar11 = iVar18;\n            if (chr != 0) {\n              uVar10 = cbuf[1];\n              pwVar15 = cbuf;\n              while( true ) {\n                clip_addchar(&buf,chr,iVar21);\n                if (uVar10 == 0) break;\n                chr = uVar10;\n                uVar10 = pwVar15[2];\n                pwVar15 = pwVar15 + 1;\n              }\n            }\n          }\n          iVar21 = *(int *)(puVar6 + 10);\n          iVar19 = *(int *)(iVar21 + iVar19 + 8);\n          iVar22 = iVar22 + iVar19;\n          if (iVar19 == 0) goto joined_r0x00094680;\n          iVar19 = iVar22 * 0xc;\n          chr = *(uint *)(iVar21 + iVar22 * 0xc);\n          iVar21 = *(int *)(iVar21 + iVar19 + 4);\n          uVar12 = chr & 0xffffff00;\n          uVar10 = chr & 0xff;\n        } while (uVar12 != 0xd900);\nLAB_00094804:\n        puVar13 = term->ucsdata;\n        if (term->rawcnp == 0) {\n          chr = puVar13->unitab_xterm[uVar10];\n          uVar12 = chr & 0xffffff00;\n          uVar10 = chr & 0xff;\n        }\n        else {\nLAB_0009491c:\n          chr = puVar13->unitab_line[uVar10];\n          uVar12 = chr & 0xffffff00;\n          uVar10 = chr & 0xff;\n        }\n        goto joined_r0x00094728;\n      }\n      iVar11 = iVar22 + 1;\n    } while( true );\n  }\n  pwVar15 = buf.textbuf;\n  (**(code **)(in_t9 + 0x7d678))(term->frontend,buf.textbuf,buf.attrbuf,buf.bufpos,bottom.y);\n  (**(code **)(in_t9 + 0x7ce0c))(buf.textbuf);\n  pTVar14 = (Terminal *)buf.attrbuf;\n  (**(code **)(in_t9 + 0x7ce0c))();\n  if (iVar4 == *piVar3) {\n    return;\n  }\n  pcVar26 = *(code **)(in_t9 + 0x7dde4);\n  (*pcVar26)();\n  iVar20 = 1;\n  if ((int)pwVar15 < 0) {\n    iVar20 = -1;\n    pwVar15 = (wchar_t *)-(int)pwVar15;\n  }\n  iVar4 = pTVar14->cols;\n  iVar9 = (pTVar14->curs).x;\n  iVar11 = (pTVar14->curs).y;\n  iVar5 = (pTVar14->selend).y;\n  pwVar24 = (wchar_t *)(iVar4 - iVar9);\n  if ((int)pwVar24 <= (int)pwVar15) {\n    pwVar15 = pwVar24;\n  }\n  iVar22 = (int)pwVar24 - (int)pwVar15;\n  if (((iVar11 < iVar5) || ((iVar11 == iVar5 && (iVar9 < (pTVar14->selend).x)))) &&\n     ((iVar19 = (pTVar14->selstart).y, iVar19 < iVar11 ||\n      ((iVar11 == iVar19 && ((pTVar14->selstart).x < iVar4)))))) {\n    iVar18 = iVar9 + (int)pwVar15;\n    iVar21 = iVar4;\n    if (iVar20 == 1) {\n      iVar21 = iVar4 - (int)pwVar15;\n      iVar18 = iVar9;\n    }\n    if ((iVar11 < iVar19) || ((iVar11 == iVar19 && (iVar18 <= (pTVar14->selstart).x)))) {\n      if (iVar5 < iVar11) {\n        iVar5 = (pTVar14->selend).x;\n      }\n      else if ((iVar11 != iVar5) || (iVar5 = (pTVar14->selend).x, iVar21 < iVar5))\n      goto LAB_00094e08;\n      iVar19 = iVar20 * (int)pwVar15 + (pTVar14->selstart).x;\n      iVar5 = iVar20 * (int)pwVar15 + iVar5;\n      (pTVar14->selstart).x = iVar19;\n      (pTVar14->selend).x = iVar5;\n      if (iVar19 < iVar9) goto LAB_000950ac;\n      if (iVar19 < iVar4) {\n        if (iVar9 < iVar5) {\n          if (iVar4 < iVar5) {\n            iVar11 = *(int *)(pcVar26 + 0x7c740) + 0x5830;\n            (**(code **)(pcVar26 + 0x7d398))\n                      (*(int *)(pcVar26 + 0x7c740) + 0x5a84,iVar11,0x9e0,\n                       *(int *)(pcVar26 + 0x7c740) + 0x6200);\n            goto LAB_00094ebc;\n          }\n          goto LAB_00094c48;\n        }\n        (**(code **)(pcVar26 + 0x7d398))\n                  (*(int *)(pcVar26 + 0x7c740) + 0x5a64,*(int *)(pcVar26 + 0x7c740) + 0x5830,0x9df,\n                   *(int *)(pcVar26 + 0x7c740) + 0x6200);\n      }\n      (**(code **)(pcVar26 + 0x7d398))\n                (*(int *)(pcVar26 + 0x7c740) + 0x5a44,*(int *)(pcVar26 + 0x7c740) + 0x5830,0x9de,\n                 *(int *)(pcVar26 + 0x7c740) + 0x6200);\nLAB_000950ac:\n      iVar20 = 0x9dd;\n      pcVar27 = *(code **)(pcVar26 + 0x7d398);\n      pTVar14 = (Terminal *)(*(int *)(pcVar26 + 0x7c740) + 0x5a20);\n      (*pcVar27)(pTVar14,*(int *)(pcVar26 + 0x7c740) + 0x5830,0x9dd,\n                 *(int *)(pcVar26 + 0x7c740) + 0x6200);\n      pcVar26 = *(code **)(pcVar27 + 0x7ca90);\n      pTVar14->window_update_pending = 0;\n      ctx = (Context)(*pcVar26)(pTVar14->frontend);\n      if (ctx != (Context)0x0) {\n        if (pTVar14->seen_disp_event != 0) {\n          if (pTVar14->scroll_on_disp != 0) {\n            pTVar14->disptop = 0;\n            pTVar14->seen_disp_event = 0;\n          }\n          update_sbar(pTVar14);\n        }\n        do_paint(pTVar14,ctx,iVar20);\n        (**(code **)(pcVar27 + 0x7ca94))\n                  (pTVar14->frontend,(pTVar14->curs).x,(pTVar14->curs).y - pTVar14->disptop);\n                    /* WARNING: Could not recover jumptable at 0x0009518c. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n        (**(code **)(pcVar27 + 0x7ca98))(ctx);\n        return;\n      }\n      return;\n    }\nLAB_00094e08:\n    pTVar14->selstate = ADDRTYPE_UNSPEC;\n    (pTVar14->selend).y = 0;\n    (pTVar14->selend).x = 0;\n    (pTVar14->selstart).y = 0;\n    (pTVar14->selstart).x = 0;\n  }\nLAB_00094c48:\n  if ((0 < iVar9) && (iVar9 <= iVar4)) {\n    check_boundary(pTVar14,iVar9,iVar11);\n    iVar11 = (pTVar14->curs).y;\n  }\n  if (iVar20 != -1) {\n    iVar20 = iVar22 + -1;\n    ptVar8 = lineptr(pTVar14,iVar11,0x9eb,1);\n    if (iVar22 != 0) {\n      iVar4 = *(int *)(pcVar26 + 0x7cf20);\n      do {\n        iVar9 = iVar20 + (pTVar14->curs).x;\n        iVar11 = ((int)pwVar15 + iVar9) * 0xc;\n        ptVar23 = ptVar8->chars + iVar9;\n        ptVar25 = ptVar8->chars + (int)pwVar15 + iVar9;\n        (*(code *)(iVar4 + 0xab0))(ptVar8,(iVar11 >> 2) * -0x55555555);\n        iVar5 = ptVar23->cc_next;\n        uVar16 = ptVar23->attr;\n        ptVar25->chr = ptVar23->chr;\n        ptVar25->attr = uVar16;\n        ptVar25->cc_next = iVar5;\n        if (ptVar23->cc_next != 0) {\n          ptVar25->cc_next = (iVar11 + iVar9 * -0xc >> 2) * 0x55555555 + ptVar23->cc_next;\n        }\n        iVar20 = iVar20 + -1;\n        ptVar23->cc_next = 0;\n      } while (iVar20 != -1);\n    }\n    iVar20 = (int)pwVar15 + -1;\n    if (pwVar15 == (wchar_t *)0x0) {\n      return;\n    }\n    do {\n      iVar4 = iVar20 + (pTVar14->curs).x;\n      iVar20 = iVar20 + -1;\n      copy_termchar(ptVar8,iVar4,&pTVar14->erase_char);\n    } while (iVar20 != -1);\n    return;\n  }\nLAB_00094ebc:\n  iVar20 = (int)pwVar15 + (pTVar14->curs).x;\n  if ((0 < iVar20) && (iVar20 <= pTVar14->cols)) {\n    check_boundary(pTVar14,iVar20,iVar11);\n    iVar11 = (pTVar14->curs).y;\n  }\n  ptVar8 = lineptr(pTVar14,iVar11,0x9eb,1);\n  if (0 < iVar22) {\n    iVar20 = *(int *)(pcVar26 + 0x7cf20);\n    iVar4 = 0;\n    do {\n      iVar9 = iVar4 + (pTVar14->curs).x;\n      ptVar23 = ptVar8->chars + iVar9 + (int)pwVar15;\n      ptVar25 = ptVar8->chars + iVar9;\n      (*(code *)(iVar20 + 0xab0))(ptVar8,(iVar9 * 0xc >> 2) * -0x55555555);\n      iVar5 = ptVar23->cc_next;\n      uVar16 = ptVar23->attr;\n      ptVar25->chr = ptVar23->chr;\n      ptVar25->attr = uVar16;\n      ptVar25->cc_next = iVar5;\n      if (ptVar23->cc_next != 0) {\n        ptVar25->cc_next =\n             (iVar9 * 0xc + (iVar9 + (int)pwVar15) * -0xc >> 2) * 0x55555555 + ptVar23->cc_next;\n      }\n      iVar4 = iVar4 + 1;\n      ptVar23->cc_next = 0;\n    } while (iVar22 != iVar4);\n  }\n  if (pwVar15 == (wchar_t *)0x0) {\n    return;\n  }\n  iVar20 = iVar22;\n  do {\n    iVar4 = iVar20 + 1;\n    copy_termchar(ptVar8,iVar20 + (pTVar14->curs).x,&pTVar14->erase_char);\n    iVar20 = iVar4;\n  } while (iVar4 != (int)pwVar15 + iVar22);\n  return;\nLAB_00094994:\n  if (bVar2) {\n    clip_addchar(&buf,10,0);\n  }\n  if (*(int *)(puVar6 + 6) != 0) {\n    (*(code *)(iVar5 + 0x1270))(puVar6);\n  }\n  iStack_cc = iStack_cc + 1;\n  local_d4 = iVar20;\n  goto LAB_000945cc;\n}" { (declaration "bool bVar1;" primitive_type identifier ;) (declaration "bool bVar2;" primitive_type identifier ;) (declaration "int *piVar3;" primitive_type (pointer_declarator "*piVar3" * identifier) ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "ushort *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "uint chr;" type_identifier identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "termline *ptVar8;" type_identifier (pointer_declarator "*ptVar8" * identifier) ;) (declaration "Context ctx;" type_identifier identifier ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "uint uVar10;" type_identifier identifier ;) (declaration "int iVar11;" primitive_type identifier ;) (declaration "uint uVar12;" type_identifier identifier ;) (declaration "unicode_data *puVar13;" type_identifier (pointer_declarator "*puVar13" * identifier) ;) (declaration "Terminal *pTVar14;" type_identifier (pointer_declarator "*pTVar14" * identifier) ;) (declaration "wchar_t *pwVar15;" type_identifier (pointer_declarator "*pwVar15" * identifier) ;) (declaration "ulong uVar16;" type_identifier identifier ;) (declaration "int in_a3;" primitive_type identifier ;) (declaration "char cVar17;" primitive_type identifier ;) (declaration "int iVar18;" primitive_type identifier ;) (declaration "int iVar19;" primitive_type identifier ;) (declaration "int iVar20;" primitive_type identifier ;) (declaration "int iVar21;" primitive_type identifier ;) (declaration "int iVar22;" primitive_type identifier ;) (declaration "termchar *ptVar23;" type_identifier (pointer_declarator "*ptVar23" * identifier) ;) (declaration "wchar_t *pwVar24;" type_identifier (pointer_declarator "*pwVar24" * identifier) ;) (declaration "termchar *ptVar25;" type_identifier (pointer_declarator "*ptVar25" * identifier) ;) (declaration "int in_t9;" primitive_type identifier ;) (declaration "code *pcVar26;" type_identifier (pointer_declarator "*pcVar26" * identifier) ;) (declaration "code *pcVar27;" type_identifier (pointer_declarator "*pcVar27" * identifier) ;) (declaration "int local_d4;" primitive_type identifier ;) (declaration "int iStack_cc;" primitive_type identifier ;) (declaration "int iStack_c8;" primitive_type identifier ;) (declaration "int iStack_c0;" primitive_type identifier ;) (declaration "clip_workbuf buf;" type_identifier identifier ;) (declaration "wchar_t wbuf [4];" type_identifier (array_declarator "wbuf [4]" identifier [ number_literal ]) ;) (declaration "wchar_t cbuf [16];" type_identifier (array_declarator "cbuf [16]" identifier [ number_literal ]) ;) (declaration "char buf_1 [4];" primitive_type (array_declarator "buf_1 [4]" identifier [ number_literal ]) ;) (expression_statement "piVar3 = *(int **)(in_t9 + 0x7e14c);" (assignment_expression "piVar3 = *(int **)(in_t9 + 0x7e14c)" identifier = (pointer_expression "*(int **)(in_t9 + 0x7e14c)" * (cast_expression "(int **)(in_t9 + 0x7e14c)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(in_t9 + 0x7e14c)" ( (binary_expression "in_t9 + 0x7e14c" identifier + number_literal) ))))) ;) (expression_statement "iVar4 = *piVar3;" (assignment_expression "iVar4 = *piVar3" identifier = (pointer_expression "*piVar3" * identifier)) ;) (expression_statement "buf.buflen = 0x1400;" (assignment_expression "buf.buflen = 0x1400" (field_expression "buf.buflen" identifier . field_identifier) = number_literal) ;) (expression_statement "buf.bufpos = 0;" (assignment_expression "buf.bufpos = 0" (field_expression "buf.bufpos" identifier . field_identifier) = number_literal) ;) (expression_statement "buf.textbuf = (wchar_t *)(**(code **)(in_t9 + 0x7ce08))(0x1400,4);" (assignment_expression "buf.textbuf = (wchar_t *)(**(code **)(in_t9 + 0x7ce08))(0x1400,4)" (field_expression "buf.textbuf" identifier . field_identifier) = (cast_expression "(wchar_t *)(**(code **)(in_t9 + 0x7ce08))(0x1400,4)" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(in_t9 + 0x7ce08))(0x1400,4)" (parenthesized_expression "(**(code **)(in_t9 + 0x7ce08))" ( (pointer_expression "**(code **)(in_t9 + 0x7ce08)" * (pointer_expression "*(code **)(in_t9 + 0x7ce08)" * (cast_expression "(code **)(in_t9 + 0x7ce08)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(in_t9 + 0x7ce08)" ( (binary_expression "in_t9 + 0x7ce08" identifier + number_literal) ))))) )) (argument_list "(0x1400,4)" ( number_literal , number_literal ))))) ;) (expression_statement "buf.textptr = buf.textbuf;" (assignment_expression "buf.textptr = buf.textbuf" (field_expression "buf.textptr" identifier . field_identifier) = (field_expression "buf.textbuf" identifier . field_identifier)) ;) (expression_statement "buf.attrbuf = (int *)(**(code **)(in_t9 + 0x7ce08))(buf.buflen,4);" (assignment_expression "buf.attrbuf = (int *)(**(code **)(in_t9 + 0x7ce08))(buf.buflen,4)" (field_expression "buf.attrbuf" identifier . field_identifier) = (cast_expression "(int *)(**(code **)(in_t9 + 0x7ce08))(buf.buflen,4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(in_t9 + 0x7ce08))(buf.buflen,4)" (parenthesized_expression "(**(code **)(in_t9 + 0x7ce08))" ( (pointer_expression "**(code **)(in_t9 + 0x7ce08)" * (pointer_expression "*(code **)(in_t9 + 0x7ce08)" * (cast_expression "(code **)(in_t9 + 0x7ce08)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(in_t9 + 0x7ce08)" ( (binary_expression "in_t9 + 0x7ce08" identifier + number_literal) ))))) )) (argument_list "(buf.buflen,4)" ( (field_expression "buf.buflen" identifier . field_identifier) , number_literal ))))) ;) (expression_statement "iVar9 = *(int *)(in_t9 + 0x7d5f4);" (assignment_expression "iVar9 = *(int *)(in_t9 + 0x7d5f4)" identifier = (pointer_expression "*(int *)(in_t9 + 0x7d5f4)" * (cast_expression "(int *)(in_t9 + 0x7d5f4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_t9 + 0x7d5f4)" ( (binary_expression "in_t9 + 0x7d5f4" identifier + number_literal) ))))) ;) (expression_statement "iVar20 = desel;" (assignment_expression "iVar20 = desel" identifier = identifier) ;) (if_statement "if (top.x == 0) {\n    iVar20 = 0;\n  }" if (parenthesized_expression "(top.x == 0)" ( (binary_expression "top.x == 0" (field_expression "top.x" identifier . field_identifier) == number_literal) )) (compound_statement "{\n    iVar20 = 0;\n  }" { (expression_statement "iVar20 = 0;" (assignment_expression "iVar20 = 0" identifier = number_literal) ;) })) (expression_statement "iVar5 = *(int *)(in_t9 + 0x7d5f4);" (assignment_expression "iVar5 = *(int *)(in_t9 + 0x7d5f4)" identifier = (pointer_expression "*(int *)(in_t9 + 0x7d5f4)" * (cast_expression "(int *)(in_t9 + 0x7d5f4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_t9 + 0x7d5f4)" ( (binary_expression "in_t9 + 0x7d5f4" identifier + number_literal) ))))) ;) (expression_statement "local_d4 = desel;" (assignment_expression "local_d4 = desel" identifier = identifier) ;) (expression_statement "iStack_cc = rect;" (assignment_expression "iStack_cc = rect" identifier = identifier) ;) (expression_statement "buf.attrptr = buf.attrbuf;" (assignment_expression "buf.attrptr = buf.attrbuf" (field_expression "buf.attrptr" identifier . field_identifier) = (field_expression "buf.attrbuf" identifier . field_identifier)) ;) (labeled_statement "LAB_000945cc:\n  bVar1 = iStack_cc < in_a3;" statement_identifier : (expression_statement "bVar1 = iStack_cc < in_a3;" (assignment_expression "bVar1 = iStack_cc < in_a3" identifier = (binary_expression "iStack_cc < in_a3" identifier < identifier)) ;)) (if_statement "if ((bVar1) || ((iStack_cc == in_a3 && (local_d4 < top.y)))) {\n    puVar6 = (ushort *)(*(code *)(iVar9 + 0x2a9c))(term,iStack_cc,0x1595,0);\n    iStack_c0 = term->cols;\n    if ((*puVar6 & 0x10) == 0) {\n      if (iStack_c0 != 0) {\n        iVar11 = *(int *)(puVar6 + 10) + iStack_c0 * 0xc;\n        do {\n          if ((((*(uint *)(iVar11 + -0xc) != 0x20) &&\n               ((*(uint *)(iVar11 + -0xc) & 0xfffffcff) != 0xd820)) || (*(int *)(iVar11 + -4) != 0))\n             || (iStack_c0 <= local_d4)) break;\n          iStack_c0 = iStack_c0 + -1;\n          iVar11 = iVar11 + -0xc;\n        } while (iStack_c0 != 0);\n      }\n      if (bVar1) {\n        iStack_c8 = iStack_cc;\n        bVar2 = true;\n      }\n      else if (iStack_cc == in_a3) {\n        bVar2 = iStack_c0 < top.y;\n        iStack_c8 = iStack_cc;\n      }\n      else {\n        bVar2 = false;\n        iStack_c8 = iStack_cc;\n      }\n    }\n    else if ((*puVar6 & 0x20) == 0) {\n      bVar2 = false;\n      iStack_c8 = iStack_cc;\n    }\n    else if (iStack_c0 == 0) {\n      bVar2 = false;\n      iStack_c8 = iStack_cc + -1;\n    }\n    else {\n      bVar2 = false;\n      iStack_c8 = iStack_cc;\n      iStack_c0 = iStack_c0 + -1;\n    }\n    iVar11 = local_d4;\n    if ((top.x != 0) && (bVar2 = bVar1, top.y < iStack_c0)) {\n      iStack_c0 = top.y;\n    }\njoined_r0x00094680:\n    do {\n      iVar22 = iVar11;\n      if (((!bVar1) && ((iStack_cc != in_a3 || (top.y <= iVar22)))) ||\n         ((iStack_c8 <= iStack_cc && ((iStack_c8 != iStack_cc || (iStack_c0 <= iVar22))))))\n      goto LAB_00094994;\n      chr = *(uint *)(*(int *)(puVar6 + 10) + iVar22 * 0xc);\n      if (chr != 0xdfff) {\n        uVar12 = chr & 0xffffff00;\n        iVar19 = iVar22 * 0xc;\n        iVar21 = *(int *)(*(int *)(puVar6 + 10) + iVar19 + 4);\n        uVar10 = chr & 0xff;\n        local_d4 = iVar22;\n        if (uVar12 == 0xd900) goto LAB_00094804;\n        do {\n          if (uVar12 == 0xda00) {\n            chr = term->ucsdata->unitab_scoacs[uVar10];\n            uVar12 = chr & 0xffffff00;\n            uVar10 = chr & 0xff;\n          }\n          else if (uVar12 == 0xd800) {\n            puVar13 = term->ucsdata;\n            goto LAB_0009491c;\n          }\njoined_r0x00094728:\n          if (uVar12 == 0xf000) {\n            iVar11 = uVar10 + 0x404;\nLAB_00094740:\n            chr = term->ucsdata->unitab_scoacs[iVar11 + -4];\n            uVar10 = chr & 0xff;\n          }\n          else if (uVar12 == 0xf100) {\n            iVar11 = uVar10 + 0x204;\n            goto LAB_00094740;\n          }\n          iVar11 = local_d4 + 1;\n          cbuf[1] = 0;\n          iVar18 = iVar11;\n          cbuf[0] = chr;\n          if (((chr & 0xfffffe00) == 0xf000) && ((chr & 0xe0) != 0)) {\n            if (uVar10 != 0x7f) {\n              cVar17 = (char)chr;\n              iVar7 = (**(code **)(in_t9 + 0x7d674))(term->ucsdata->font_codepage,(int)cVar17);\n              buf_1[0] = cVar17;\n              if (iVar7 == 0) {\n                iVar7 = (**(code **)(in_t9 + 0x7d0e8))\n                                  (term->ucsdata->font_codepage,0,buf_1,1,wbuf,4);\n              }\n              else {\n                buf_1[1] = (char)*(undefined4 *)(*(int *)(puVar6 + 10) + iVar11 * 0xc);\n                iVar7 = (**(code **)(in_t9 + 0x7d0e8))\n                                  (term->ucsdata->font_codepage,0,buf_1,2,wbuf,4);\n                iVar18 = local_d4 + 2;\n                local_d4 = iVar11;\n              }\n              if (0 < iVar7) {\n                (**(code **)(in_t9 + 0x7db94))(cbuf,wbuf,iVar7 * 4,0x40);\n                cbuf[iVar7] = 0;\n                chr = cbuf[0];\n              }\n              goto LAB_00094778;\n            }\n            clip_addchar(&buf,chr,iVar21);\n          }\n          else {\nLAB_00094778:\n            iVar11 = iVar18;\n            if (chr != 0) {\n              uVar10 = cbuf[1];\n              pwVar15 = cbuf;\n              while( true ) {\n                clip_addchar(&buf,chr,iVar21);\n                if (uVar10 == 0) break;\n                chr = uVar10;\n                uVar10 = pwVar15[2];\n                pwVar15 = pwVar15 + 1;\n              }\n            }\n          }\n          iVar21 = *(int *)(puVar6 + 10);\n          iVar19 = *(int *)(iVar21 + iVar19 + 8);\n          iVar22 = iVar22 + iVar19;\n          if (iVar19 == 0) goto joined_r0x00094680;\n          iVar19 = iVar22 * 0xc;\n          chr = *(uint *)(iVar21 + iVar22 * 0xc);\n          iVar21 = *(int *)(iVar21 + iVar19 + 4);\n          uVar12 = chr & 0xffffff00;\n          uVar10 = chr & 0xff;\n        } while (uVar12 != 0xd900);\nLAB_00094804:\n        puVar13 = term->ucsdata;\n        if (term->rawcnp == 0) {\n          chr = puVar13->unitab_xterm[uVar10];\n          uVar12 = chr & 0xffffff00;\n          uVar10 = chr & 0xff;\n        }\n        else {\nLAB_0009491c:\n          chr = puVar13->unitab_line[uVar10];\n          uVar12 = chr & 0xffffff00;\n          uVar10 = chr & 0xff;\n        }\n        goto joined_r0x00094728;\n      }\n      iVar11 = iVar22 + 1;\n    } while( true );\n  }" if (parenthesized_expression "((bVar1) || ((iStack_cc == in_a3 && (local_d4 < top.y))))" ( (binary_expression "(bVar1) || ((iStack_cc == in_a3 && (local_d4 < top.y)))" (parenthesized_expression "(bVar1)" ( identifier )) || (parenthesized_expression "((iStack_cc == in_a3 && (local_d4 < top.y)))" ( (parenthesized_expression "(iStack_cc == in_a3 && (local_d4 < top.y))" ( (binary_expression "iStack_cc == in_a3 && (local_d4 < top.y)" (binary_expression "iStack_cc == in_a3" identifier == identifier) && (parenthesized_expression "(local_d4 < top.y)" ( (binary_expression "local_d4 < top.y" identifier < (field_expression "top.y" identifier . field_identifier)) ))) )) ))) )) (compound_statement "{\n    puVar6 = (ushort *)(*(code *)(iVar9 + 0x2a9c))(term,iStack_cc,0x1595,0);\n    iStack_c0 = term->cols;\n    if ((*puVar6 & 0x10) == 0) {\n      if (iStack_c0 != 0) {\n        iVar11 = *(int *)(puVar6 + 10) + iStack_c0 * 0xc;\n        do {\n          if ((((*(uint *)(iVar11 + -0xc) != 0x20) &&\n               ((*(uint *)(iVar11 + -0xc) & 0xfffffcff) != 0xd820)) || (*(int *)(iVar11 + -4) != 0))\n             || (iStack_c0 <= local_d4)) break;\n          iStack_c0 = iStack_c0 + -1;\n          iVar11 = iVar11 + -0xc;\n        } while (iStack_c0 != 0);\n      }\n      if (bVar1) {\n        iStack_c8 = iStack_cc;\n        bVar2 = true;\n      }\n      else if (iStack_cc == in_a3) {\n        bVar2 = iStack_c0 < top.y;\n        iStack_c8 = iStack_cc;\n      }\n      else {\n        bVar2 = false;\n        iStack_c8 = iStack_cc;\n      }\n    }\n    else if ((*puVar6 & 0x20) == 0) {\n      bVar2 = false;\n      iStack_c8 = iStack_cc;\n    }\n    else if (iStack_c0 == 0) {\n      bVar2 = false;\n      iStack_c8 = iStack_cc + -1;\n    }\n    else {\n      bVar2 = false;\n      iStack_c8 = iStack_cc;\n      iStack_c0 = iStack_c0 + -1;\n    }\n    iVar11 = local_d4;\n    if ((top.x != 0) && (bVar2 = bVar1, top.y < iStack_c0)) {\n      iStack_c0 = top.y;\n    }\njoined_r0x00094680:\n    do {\n      iVar22 = iVar11;\n      if (((!bVar1) && ((iStack_cc != in_a3 || (top.y <= iVar22)))) ||\n         ((iStack_c8 <= iStack_cc && ((iStack_c8 != iStack_cc || (iStack_c0 <= iVar22))))))\n      goto LAB_00094994;\n      chr = *(uint *)(*(int *)(puVar6 + 10) + iVar22 * 0xc);\n      if (chr != 0xdfff) {\n        uVar12 = chr & 0xffffff00;\n        iVar19 = iVar22 * 0xc;\n        iVar21 = *(int *)(*(int *)(puVar6 + 10) + iVar19 + 4);\n        uVar10 = chr & 0xff;\n        local_d4 = iVar22;\n        if (uVar12 == 0xd900) goto LAB_00094804;\n        do {\n          if (uVar12 == 0xda00) {\n            chr = term->ucsdata->unitab_scoacs[uVar10];\n            uVar12 = chr & 0xffffff00;\n            uVar10 = chr & 0xff;\n          }\n          else if (uVar12 == 0xd800) {\n            puVar13 = term->ucsdata;\n            goto LAB_0009491c;\n          }\njoined_r0x00094728:\n          if (uVar12 == 0xf000) {\n            iVar11 = uVar10 + 0x404;\nLAB_00094740:\n            chr = term->ucsdata->unitab_scoacs[iVar11 + -4];\n            uVar10 = chr & 0xff;\n          }\n          else if (uVar12 == 0xf100) {\n            iVar11 = uVar10 + 0x204;\n            goto LAB_00094740;\n          }\n          iVar11 = local_d4 + 1;\n          cbuf[1] = 0;\n          iVar18 = iVar11;\n          cbuf[0] = chr;\n          if (((chr & 0xfffffe00) == 0xf000) && ((chr & 0xe0) != 0)) {\n            if (uVar10 != 0x7f) {\n              cVar17 = (char)chr;\n              iVar7 = (**(code **)(in_t9 + 0x7d674))(term->ucsdata->font_codepage,(int)cVar17);\n              buf_1[0] = cVar17;\n              if (iVar7 == 0) {\n                iVar7 = (**(code **)(in_t9 + 0x7d0e8))\n                                  (term->ucsdata->font_codepage,0,buf_1,1,wbuf,4);\n              }\n              else {\n                buf_1[1] = (char)*(undefined4 *)(*(int *)(puVar6 + 10) + iVar11 * 0xc);\n                iVar7 = (**(code **)(in_t9 + 0x7d0e8))\n                                  (term->ucsdata->font_codepage,0,buf_1,2,wbuf,4);\n                iVar18 = local_d4 + 2;\n                local_d4 = iVar11;\n              }\n              if (0 < iVar7) {\n                (**(code **)(in_t9 + 0x7db94))(cbuf,wbuf,iVar7 * 4,0x40);\n                cbuf[iVar7] = 0;\n                chr = cbuf[0];\n              }\n              goto LAB_00094778;\n            }\n            clip_addchar(&buf,chr,iVar21);\n          }\n          else {\nLAB_00094778:\n            iVar11 = iVar18;\n            if (chr != 0) {\n              uVar10 = cbuf[1];\n              pwVar15 = cbuf;\n              while( true ) {\n                clip_addchar(&buf,chr,iVar21);\n                if (uVar10 == 0) break;\n                chr = uVar10;\n                uVar10 = pwVar15[2];\n                pwVar15 = pwVar15 + 1;\n              }\n            }\n          }\n          iVar21 = *(int *)(puVar6 + 10);\n          iVar19 = *(int *)(iVar21 + iVar19 + 8);\n          iVar22 = iVar22 + iVar19;\n          if (iVar19 == 0) goto joined_r0x00094680;\n          iVar19 = iVar22 * 0xc;\n          chr = *(uint *)(iVar21 + iVar22 * 0xc);\n          iVar21 = *(int *)(iVar21 + iVar19 + 4);\n          uVar12 = chr & 0xffffff00;\n          uVar10 = chr & 0xff;\n        } while (uVar12 != 0xd900);\nLAB_00094804:\n        puVar13 = term->ucsdata;\n        if (term->rawcnp == 0) {\n          chr = puVar13->unitab_xterm[uVar10];\n          uVar12 = chr & 0xffffff00;\n          uVar10 = chr & 0xff;\n        }\n        else {\nLAB_0009491c:\n          chr = puVar13->unitab_line[uVar10];\n          uVar12 = chr & 0xffffff00;\n          uVar10 = chr & 0xff;\n        }\n        goto joined_r0x00094728;\n      }\n      iVar11 = iVar22 + 1;\n    } while( true );\n  }" { (expression_statement "puVar6 = (ushort *)(*(code *)(iVar9 + 0x2a9c))(term,iStack_cc,0x1595,0);" (assignment_expression "puVar6 = (ushort *)(*(code *)(iVar9 + 0x2a9c))(term,iStack_cc,0x1595,0)" identifier = (cast_expression "(ushort *)(*(code *)(iVar9 + 0x2a9c))(term,iStack_cc,0x1595,0)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)(iVar9 + 0x2a9c))(term,iStack_cc,0x1595,0)" (parenthesized_expression "(*(code *)(iVar9 + 0x2a9c))" ( (pointer_expression "*(code *)(iVar9 + 0x2a9c)" * (cast_expression "(code *)(iVar9 + 0x2a9c)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0x2a9c)" ( (binary_expression "iVar9 + 0x2a9c" identifier + number_literal) )))) )) (argument_list "(term,iStack_cc,0x1595,0)" ( identifier , identifier , number_literal , number_literal ))))) ;) (expression_statement "iStack_c0 = term->cols;" (assignment_expression "iStack_c0 = term->cols" identifier = (field_expression "term->cols" identifier -> field_identifier)) ;) (if_statement "if ((*puVar6 & 0x10) == 0) {\n      if (iStack_c0 != 0) {\n        iVar11 = *(int *)(puVar6 + 10) + iStack_c0 * 0xc;\n        do {\n          if ((((*(uint *)(iVar11 + -0xc) != 0x20) &&\n               ((*(uint *)(iVar11 + -0xc) & 0xfffffcff) != 0xd820)) || (*(int *)(iVar11 + -4) != 0))\n             || (iStack_c0 <= local_d4)) break;\n          iStack_c0 = iStack_c0 + -1;\n          iVar11 = iVar11 + -0xc;\n        } while (iStack_c0 != 0);\n      }\n      if (bVar1) {\n        iStack_c8 = iStack_cc;\n        bVar2 = true;\n      }\n      else if (iStack_cc == in_a3) {\n        bVar2 = iStack_c0 < top.y;\n        iStack_c8 = iStack_cc;\n      }\n      else {\n        bVar2 = false;\n        iStack_c8 = iStack_cc;\n      }\n    }\n    else if ((*puVar6 & 0x20) == 0) {\n      bVar2 = false;\n      iStack_c8 = iStack_cc;\n    }\n    else if (iStack_c0 == 0) {\n      bVar2 = false;\n      iStack_c8 = iStack_cc + -1;\n    }\n    else {\n      bVar2 = false;\n      iStack_c8 = iStack_cc;\n      iStack_c0 = iStack_c0 + -1;\n    }" if (parenthesized_expression "((*puVar6 & 0x10) == 0)" ( (binary_expression "(*puVar6 & 0x10) == 0" (parenthesized_expression "(*puVar6 & 0x10)" ( (binary_expression "*puVar6 & 0x10" (pointer_expression "*puVar6" * identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n      if (iStack_c0 != 0) {\n        iVar11 = *(int *)(puVar6 + 10) + iStack_c0 * 0xc;\n        do {\n          if ((((*(uint *)(iVar11 + -0xc) != 0x20) &&\n               ((*(uint *)(iVar11 + -0xc) & 0xfffffcff) != 0xd820)) || (*(int *)(iVar11 + -4) != 0))\n             || (iStack_c0 <= local_d4)) break;\n          iStack_c0 = iStack_c0 + -1;\n          iVar11 = iVar11 + -0xc;\n        } while (iStack_c0 != 0);\n      }\n      if (bVar1) {\n        iStack_c8 = iStack_cc;\n        bVar2 = true;\n      }\n      else if (iStack_cc == in_a3) {\n        bVar2 = iStack_c0 < top.y;\n        iStack_c8 = iStack_cc;\n      }\n      else {\n        bVar2 = false;\n        iStack_c8 = iStack_cc;\n      }\n    }" { (if_statement "if (iStack_c0 != 0) {\n        iVar11 = *(int *)(puVar6 + 10) + iStack_c0 * 0xc;\n        do {\n          if ((((*(uint *)(iVar11 + -0xc) != 0x20) &&\n               ((*(uint *)(iVar11 + -0xc) & 0xfffffcff) != 0xd820)) || (*(int *)(iVar11 + -4) != 0))\n             || (iStack_c0 <= local_d4)) break;\n          iStack_c0 = iStack_c0 + -1;\n          iVar11 = iVar11 + -0xc;\n        } while (iStack_c0 != 0);\n      }" if (parenthesized_expression "(iStack_c0 != 0)" ( (binary_expression "iStack_c0 != 0" identifier != number_literal) )) (compound_statement "{\n        iVar11 = *(int *)(puVar6 + 10) + iStack_c0 * 0xc;\n        do {\n          if ((((*(uint *)(iVar11 + -0xc) != 0x20) &&\n               ((*(uint *)(iVar11 + -0xc) & 0xfffffcff) != 0xd820)) || (*(int *)(iVar11 + -4) != 0))\n             || (iStack_c0 <= local_d4)) break;\n          iStack_c0 = iStack_c0 + -1;\n          iVar11 = iVar11 + -0xc;\n        } while (iStack_c0 != 0);\n      }" { (expression_statement "iVar11 = *(int *)(puVar6 + 10) + iStack_c0 * 0xc;" (assignment_expression "iVar11 = *(int *)(puVar6 + 10) + iStack_c0 * 0xc" identifier = (binary_expression "*(int *)(puVar6 + 10) + iStack_c0 * 0xc" (pointer_expression "*(int *)(puVar6 + 10)" * (cast_expression "(int *)(puVar6 + 10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar6 + 10)" ( (binary_expression "puVar6 + 10" identifier + number_literal) )))) + (binary_expression "iStack_c0 * 0xc" identifier * number_literal))) ;) (do_statement "do {\n          if ((((*(uint *)(iVar11 + -0xc) != 0x20) &&\n               ((*(uint *)(iVar11 + -0xc) & 0xfffffcff) != 0xd820)) || (*(int *)(iVar11 + -4) != 0))\n             || (iStack_c0 <= local_d4)) break;\n          iStack_c0 = iStack_c0 + -1;\n          iVar11 = iVar11 + -0xc;\n        } while (iStack_c0 != 0);" do (compound_statement "{\n          if ((((*(uint *)(iVar11 + -0xc) != 0x20) &&\n               ((*(uint *)(iVar11 + -0xc) & 0xfffffcff) != 0xd820)) || (*(int *)(iVar11 + -4) != 0))\n             || (iStack_c0 <= local_d4)) break;\n          iStack_c0 = iStack_c0 + -1;\n          iVar11 = iVar11 + -0xc;\n        }" { (if_statement "if ((((*(uint *)(iVar11 + -0xc) != 0x20) &&\n               ((*(uint *)(iVar11 + -0xc) & 0xfffffcff) != 0xd820)) || (*(int *)(iVar11 + -4) != 0))\n             || (iStack_c0 <= local_d4)) break;" if (parenthesized_expression "((((*(uint *)(iVar11 + -0xc) != 0x20) &&\n               ((*(uint *)(iVar11 + -0xc) & 0xfffffcff) != 0xd820)) || (*(int *)(iVar11 + -4) != 0))\n             || (iStack_c0 <= local_d4))" ( (binary_expression "(((*(uint *)(iVar11 + -0xc) != 0x20) &&\n               ((*(uint *)(iVar11 + -0xc) & 0xfffffcff) != 0xd820)) || (*(int *)(iVar11 + -4) != 0))\n             || (iStack_c0 <= local_d4)" (parenthesized_expression "(((*(uint *)(iVar11 + -0xc) != 0x20) &&\n               ((*(uint *)(iVar11 + -0xc) & 0xfffffcff) != 0xd820)) || (*(int *)(iVar11 + -4) != 0))" ( (binary_expression "((*(uint *)(iVar11 + -0xc) != 0x20) &&\n               ((*(uint *)(iVar11 + -0xc) & 0xfffffcff) != 0xd820)) || (*(int *)(iVar11 + -4) != 0)" (parenthesized_expression "((*(uint *)(iVar11 + -0xc) != 0x20) &&\n               ((*(uint *)(iVar11 + -0xc) & 0xfffffcff) != 0xd820))" ( (binary_expression "(*(uint *)(iVar11 + -0xc) != 0x20) &&\n               ((*(uint *)(iVar11 + -0xc) & 0xfffffcff) != 0xd820)" (parenthesized_expression "(*(uint *)(iVar11 + -0xc) != 0x20)" ( (binary_expression "*(uint *)(iVar11 + -0xc) != 0x20" (pointer_expression "*(uint *)(iVar11 + -0xc)" * (cast_expression "(uint *)(iVar11 + -0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar11 + -0xc)" ( (binary_expression "iVar11 + -0xc" identifier + number_literal) )))) != number_literal) )) && (parenthesized_expression "((*(uint *)(iVar11 + -0xc) & 0xfffffcff) != 0xd820)" ( (binary_expression "(*(uint *)(iVar11 + -0xc) & 0xfffffcff) != 0xd820" (parenthesized_expression "(*(uint *)(iVar11 + -0xc) & 0xfffffcff)" ( (binary_expression "*(uint *)(iVar11 + -0xc) & 0xfffffcff" (pointer_expression "*(uint *)(iVar11 + -0xc)" * (cast_expression "(uint *)(iVar11 + -0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar11 + -0xc)" ( (binary_expression "iVar11 + -0xc" identifier + number_literal) )))) & number_literal) )) != number_literal) ))) )) || (parenthesized_expression "(*(int *)(iVar11 + -4) != 0)" ( (binary_expression "*(int *)(iVar11 + -4) != 0" (pointer_expression "*(int *)(iVar11 + -4)" * (cast_expression "(int *)(iVar11 + -4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar11 + -4)" ( (binary_expression "iVar11 + -4" identifier + number_literal) )))) != number_literal) ))) )) || (parenthesized_expression "(iStack_c0 <= local_d4)" ( (binary_expression "iStack_c0 <= local_d4" identifier <= identifier) ))) )) (break_statement "break;" break ;)) (expression_statement "iStack_c0 = iStack_c0 + -1;" (assignment_expression "iStack_c0 = iStack_c0 + -1" identifier = (binary_expression "iStack_c0 + -1" identifier + number_literal)) ;) (expression_statement "iVar11 = iVar11 + -0xc;" (assignment_expression "iVar11 = iVar11 + -0xc" identifier = (binary_expression "iVar11 + -0xc" identifier + number_literal)) ;) }) while (parenthesized_expression "(iStack_c0 != 0)" ( (binary_expression "iStack_c0 != 0" identifier != number_literal) )) ;) })) (if_statement "if (bVar1) {\n        iStack_c8 = iStack_cc;\n        bVar2 = true;\n      }\n      else if (iStack_cc == in_a3) {\n        bVar2 = iStack_c0 < top.y;\n        iStack_c8 = iStack_cc;\n      }\n      else {\n        bVar2 = false;\n        iStack_c8 = iStack_cc;\n      }" if (parenthesized_expression "(bVar1)" ( identifier )) (compound_statement "{\n        iStack_c8 = iStack_cc;\n        bVar2 = true;\n      }" { (expression_statement "iStack_c8 = iStack_cc;" (assignment_expression "iStack_c8 = iStack_cc" identifier = identifier) ;) (expression_statement "bVar2 = true;" (assignment_expression "bVar2 = true" identifier = true) ;) }) (else_clause "else if (iStack_cc == in_a3) {\n        bVar2 = iStack_c0 < top.y;\n        iStack_c8 = iStack_cc;\n      }\n      else {\n        bVar2 = false;\n        iStack_c8 = iStack_cc;\n      }" else (if_statement "if (iStack_cc == in_a3) {\n        bVar2 = iStack_c0 < top.y;\n        iStack_c8 = iStack_cc;\n      }\n      else {\n        bVar2 = false;\n        iStack_c8 = iStack_cc;\n      }" if (parenthesized_expression "(iStack_cc == in_a3)" ( (binary_expression "iStack_cc == in_a3" identifier == identifier) )) (compound_statement "{\n        bVar2 = iStack_c0 < top.y;\n        iStack_c8 = iStack_cc;\n      }" { (expression_statement "bVar2 = iStack_c0 < top.y;" (assignment_expression "bVar2 = iStack_c0 < top.y" identifier = (binary_expression "iStack_c0 < top.y" identifier < (field_expression "top.y" identifier . field_identifier))) ;) (expression_statement "iStack_c8 = iStack_cc;" (assignment_expression "iStack_c8 = iStack_cc" identifier = identifier) ;) }) (else_clause "else {\n        bVar2 = false;\n        iStack_c8 = iStack_cc;\n      }" else (compound_statement "{\n        bVar2 = false;\n        iStack_c8 = iStack_cc;\n      }" { (expression_statement "bVar2 = false;" (assignment_expression "bVar2 = false" identifier = false) ;) (expression_statement "iStack_c8 = iStack_cc;" (assignment_expression "iStack_c8 = iStack_cc" identifier = identifier) ;) }))))) }) (else_clause "else if ((*puVar6 & 0x20) == 0) {\n      bVar2 = false;\n      iStack_c8 = iStack_cc;\n    }\n    else if (iStack_c0 == 0) {\n      bVar2 = false;\n      iStack_c8 = iStack_cc + -1;\n    }\n    else {\n      bVar2 = false;\n      iStack_c8 = iStack_cc;\n      iStack_c0 = iStack_c0 + -1;\n    }" else (if_statement "if ((*puVar6 & 0x20) == 0) {\n      bVar2 = false;\n      iStack_c8 = iStack_cc;\n    }\n    else if (iStack_c0 == 0) {\n      bVar2 = false;\n      iStack_c8 = iStack_cc + -1;\n    }\n    else {\n      bVar2 = false;\n      iStack_c8 = iStack_cc;\n      iStack_c0 = iStack_c0 + -1;\n    }" if (parenthesized_expression "((*puVar6 & 0x20) == 0)" ( (binary_expression "(*puVar6 & 0x20) == 0" (parenthesized_expression "(*puVar6 & 0x20)" ( (binary_expression "*puVar6 & 0x20" (pointer_expression "*puVar6" * identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n      bVar2 = false;\n      iStack_c8 = iStack_cc;\n    }" { (expression_statement "bVar2 = false;" (assignment_expression "bVar2 = false" identifier = false) ;) (expression_statement "iStack_c8 = iStack_cc;" (assignment_expression "iStack_c8 = iStack_cc" identifier = identifier) ;) }) (else_clause "else if (iStack_c0 == 0) {\n      bVar2 = false;\n      iStack_c8 = iStack_cc + -1;\n    }\n    else {\n      bVar2 = false;\n      iStack_c8 = iStack_cc;\n      iStack_c0 = iStack_c0 + -1;\n    }" else (if_statement "if (iStack_c0 == 0) {\n      bVar2 = false;\n      iStack_c8 = iStack_cc + -1;\n    }\n    else {\n      bVar2 = false;\n      iStack_c8 = iStack_cc;\n      iStack_c0 = iStack_c0 + -1;\n    }" if (parenthesized_expression "(iStack_c0 == 0)" ( (binary_expression "iStack_c0 == 0" identifier == number_literal) )) (compound_statement "{\n      bVar2 = false;\n      iStack_c8 = iStack_cc + -1;\n    }" { (expression_statement "bVar2 = false;" (assignment_expression "bVar2 = false" identifier = false) ;) (expression_statement "iStack_c8 = iStack_cc + -1;" (assignment_expression "iStack_c8 = iStack_cc + -1" identifier = (binary_expression "iStack_cc + -1" identifier + number_literal)) ;) }) (else_clause "else {\n      bVar2 = false;\n      iStack_c8 = iStack_cc;\n      iStack_c0 = iStack_c0 + -1;\n    }" else (compound_statement "{\n      bVar2 = false;\n      iStack_c8 = iStack_cc;\n      iStack_c0 = iStack_c0 + -1;\n    }" { (expression_statement "bVar2 = false;" (assignment_expression "bVar2 = false" identifier = false) ;) (expression_statement "iStack_c8 = iStack_cc;" (assignment_expression "iStack_c8 = iStack_cc" identifier = identifier) ;) (expression_statement "iStack_c0 = iStack_c0 + -1;" (assignment_expression "iStack_c0 = iStack_c0 + -1" identifier = (binary_expression "iStack_c0 + -1" identifier + number_literal)) ;) }))))))) (expression_statement "iVar11 = local_d4;" (assignment_expression "iVar11 = local_d4" identifier = identifier) ;) (if_statement "if ((top.x != 0) && (bVar2 = bVar1, top.y < iStack_c0)) {\n      iStack_c0 = top.y;\n    }" if (parenthesized_expression "((top.x != 0) && (bVar2 = bVar1, top.y < iStack_c0))" ( (binary_expression "(top.x != 0) && (bVar2 = bVar1, top.y < iStack_c0)" (parenthesized_expression "(top.x != 0)" ( (binary_expression "top.x != 0" (field_expression "top.x" identifier . field_identifier) != number_literal) )) && (parenthesized_expression "(bVar2 = bVar1, top.y < iStack_c0)" ( (comma_expression "bVar2 = bVar1, top.y < iStack_c0" (assignment_expression "bVar2 = bVar1" identifier = identifier) , (binary_expression "top.y < iStack_c0" (field_expression "top.y" identifier . field_identifier) < identifier)) ))) )) (compound_statement "{\n      iStack_c0 = top.y;\n    }" { (expression_statement "iStack_c0 = top.y;" (assignment_expression "iStack_c0 = top.y" identifier = (field_expression "top.y" identifier . field_identifier)) ;) })) (labeled_statement "joined_r0x00094680:\n    do {\n      iVar22 = iVar11;\n      if (((!bVar1) && ((iStack_cc != in_a3 || (top.y <= iVar22)))) ||\n         ((iStack_c8 <= iStack_cc && ((iStack_c8 != iStack_cc || (iStack_c0 <= iVar22))))))\n      goto LAB_00094994;\n      chr = *(uint *)(*(int *)(puVar6 + 10) + iVar22 * 0xc);\n      if (chr != 0xdfff) {\n        uVar12 = chr & 0xffffff00;\n        iVar19 = iVar22 * 0xc;\n        iVar21 = *(int *)(*(int *)(puVar6 + 10) + iVar19 + 4);\n        uVar10 = chr & 0xff;\n        local_d4 = iVar22;\n        if (uVar12 == 0xd900) goto LAB_00094804;\n        do {\n          if (uVar12 == 0xda00) {\n            chr = term->ucsdata->unitab_scoacs[uVar10];\n            uVar12 = chr & 0xffffff00;\n            uVar10 = chr & 0xff;\n          }\n          else if (uVar12 == 0xd800) {\n            puVar13 = term->ucsdata;\n            goto LAB_0009491c;\n          }\njoined_r0x00094728:\n          if (uVar12 == 0xf000) {\n            iVar11 = uVar10 + 0x404;\nLAB_00094740:\n            chr = term->ucsdata->unitab_scoacs[iVar11 + -4];\n            uVar10 = chr & 0xff;\n          }\n          else if (uVar12 == 0xf100) {\n            iVar11 = uVar10 + 0x204;\n            goto LAB_00094740;\n          }\n          iVar11 = local_d4 + 1;\n          cbuf[1] = 0;\n          iVar18 = iVar11;\n          cbuf[0] = chr;\n          if (((chr & 0xfffffe00) == 0xf000) && ((chr & 0xe0) != 0)) {\n            if (uVar10 != 0x7f) {\n              cVar17 = (char)chr;\n              iVar7 = (**(code **)(in_t9 + 0x7d674))(term->ucsdata->font_codepage,(int)cVar17);\n              buf_1[0] = cVar17;\n              if (iVar7 == 0) {\n                iVar7 = (**(code **)(in_t9 + 0x7d0e8))\n                                  (term->ucsdata->font_codepage,0,buf_1,1,wbuf,4);\n              }\n              else {\n                buf_1[1] = (char)*(undefined4 *)(*(int *)(puVar6 + 10) + iVar11 * 0xc);\n                iVar7 = (**(code **)(in_t9 + 0x7d0e8))\n                                  (term->ucsdata->font_codepage,0,buf_1,2,wbuf,4);\n                iVar18 = local_d4 + 2;\n                local_d4 = iVar11;\n              }\n              if (0 < iVar7) {\n                (**(code **)(in_t9 + 0x7db94))(cbuf,wbuf,iVar7 * 4,0x40);\n                cbuf[iVar7] = 0;\n                chr = cbuf[0];\n              }\n              goto LAB_00094778;\n            }\n            clip_addchar(&buf,chr,iVar21);\n          }\n          else {\nLAB_00094778:\n            iVar11 = iVar18;\n            if (chr != 0) {\n              uVar10 = cbuf[1];\n              pwVar15 = cbuf;\n              while( true ) {\n                clip_addchar(&buf,chr,iVar21);\n                if (uVar10 == 0) break;\n                chr = uVar10;\n                uVar10 = pwVar15[2];\n                pwVar15 = pwVar15 + 1;\n              }\n            }\n          }\n          iVar21 = *(int *)(puVar6 + 10);\n          iVar19 = *(int *)(iVar21 + iVar19 + 8);\n          iVar22 = iVar22 + iVar19;\n          if (iVar19 == 0) goto joined_r0x00094680;\n          iVar19 = iVar22 * 0xc;\n          chr = *(uint *)(iVar21 + iVar22 * 0xc);\n          iVar21 = *(int *)(iVar21 + iVar19 + 4);\n          uVar12 = chr & 0xffffff00;\n          uVar10 = chr & 0xff;\n        } while (uVar12 != 0xd900);\nLAB_00094804:\n        puVar13 = term->ucsdata;\n        if (term->rawcnp == 0) {\n          chr = puVar13->unitab_xterm[uVar10];\n          uVar12 = chr & 0xffffff00;\n          uVar10 = chr & 0xff;\n        }\n        else {\nLAB_0009491c:\n          chr = puVar13->unitab_line[uVar10];\n          uVar12 = chr & 0xffffff00;\n          uVar10 = chr & 0xff;\n        }\n        goto joined_r0x00094728;\n      }\n      iVar11 = iVar22 + 1;\n    } while( true );" statement_identifier : (do_statement "do {\n      iVar22 = iVar11;\n      if (((!bVar1) && ((iStack_cc != in_a3 || (top.y <= iVar22)))) ||\n         ((iStack_c8 <= iStack_cc && ((iStack_c8 != iStack_cc || (iStack_c0 <= iVar22))))))\n      goto LAB_00094994;\n      chr = *(uint *)(*(int *)(puVar6 + 10) + iVar22 * 0xc);\n      if (chr != 0xdfff) {\n        uVar12 = chr & 0xffffff00;\n        iVar19 = iVar22 * 0xc;\n        iVar21 = *(int *)(*(int *)(puVar6 + 10) + iVar19 + 4);\n        uVar10 = chr & 0xff;\n        local_d4 = iVar22;\n        if (uVar12 == 0xd900) goto LAB_00094804;\n        do {\n          if (uVar12 == 0xda00) {\n            chr = term->ucsdata->unitab_scoacs[uVar10];\n            uVar12 = chr & 0xffffff00;\n            uVar10 = chr & 0xff;\n          }\n          else if (uVar12 == 0xd800) {\n            puVar13 = term->ucsdata;\n            goto LAB_0009491c;\n          }\njoined_r0x00094728:\n          if (uVar12 == 0xf000) {\n            iVar11 = uVar10 + 0x404;\nLAB_00094740:\n            chr = term->ucsdata->unitab_scoacs[iVar11 + -4];\n            uVar10 = chr & 0xff;\n          }\n          else if (uVar12 == 0xf100) {\n            iVar11 = uVar10 + 0x204;\n            goto LAB_00094740;\n          }\n          iVar11 = local_d4 + 1;\n          cbuf[1] = 0;\n          iVar18 = iVar11;\n          cbuf[0] = chr;\n          if (((chr & 0xfffffe00) == 0xf000) && ((chr & 0xe0) != 0)) {\n            if (uVar10 != 0x7f) {\n              cVar17 = (char)chr;\n              iVar7 = (**(code **)(in_t9 + 0x7d674))(term->ucsdata->font_codepage,(int)cVar17);\n              buf_1[0] = cVar17;\n              if (iVar7 == 0) {\n                iVar7 = (**(code **)(in_t9 + 0x7d0e8))\n                                  (term->ucsdata->font_codepage,0,buf_1,1,wbuf,4);\n              }\n              else {\n                buf_1[1] = (char)*(undefined4 *)(*(int *)(puVar6 + 10) + iVar11 * 0xc);\n                iVar7 = (**(code **)(in_t9 + 0x7d0e8))\n                                  (term->ucsdata->font_codepage,0,buf_1,2,wbuf,4);\n                iVar18 = local_d4 + 2;\n                local_d4 = iVar11;\n              }\n              if (0 < iVar7) {\n                (**(code **)(in_t9 + 0x7db94))(cbuf,wbuf,iVar7 * 4,0x40);\n                cbuf[iVar7] = 0;\n                chr = cbuf[0];\n              }\n              goto LAB_00094778;\n            }\n            clip_addchar(&buf,chr,iVar21);\n          }\n          else {\nLAB_00094778:\n            iVar11 = iVar18;\n            if (chr != 0) {\n              uVar10 = cbuf[1];\n              pwVar15 = cbuf;\n              while( true ) {\n                clip_addchar(&buf,chr,iVar21);\n                if (uVar10 == 0) break;\n                chr = uVar10;\n                uVar10 = pwVar15[2];\n                pwVar15 = pwVar15 + 1;\n              }\n            }\n          }\n          iVar21 = *(int *)(puVar6 + 10);\n          iVar19 = *(int *)(iVar21 + iVar19 + 8);\n          iVar22 = iVar22 + iVar19;\n          if (iVar19 == 0) goto joined_r0x00094680;\n          iVar19 = iVar22 * 0xc;\n          chr = *(uint *)(iVar21 + iVar22 * 0xc);\n          iVar21 = *(int *)(iVar21 + iVar19 + 4);\n          uVar12 = chr & 0xffffff00;\n          uVar10 = chr & 0xff;\n        } while (uVar12 != 0xd900);\nLAB_00094804:\n        puVar13 = term->ucsdata;\n        if (term->rawcnp == 0) {\n          chr = puVar13->unitab_xterm[uVar10];\n          uVar12 = chr & 0xffffff00;\n          uVar10 = chr & 0xff;\n        }\n        else {\nLAB_0009491c:\n          chr = puVar13->unitab_line[uVar10];\n          uVar12 = chr & 0xffffff00;\n          uVar10 = chr & 0xff;\n        }\n        goto joined_r0x00094728;\n      }\n      iVar11 = iVar22 + 1;\n    } while( true );" do (compound_statement "{\n      iVar22 = iVar11;\n      if (((!bVar1) && ((iStack_cc != in_a3 || (top.y <= iVar22)))) ||\n         ((iStack_c8 <= iStack_cc && ((iStack_c8 != iStack_cc || (iStack_c0 <= iVar22))))))\n      goto LAB_00094994;\n      chr = *(uint *)(*(int *)(puVar6 + 10) + iVar22 * 0xc);\n      if (chr != 0xdfff) {\n        uVar12 = chr & 0xffffff00;\n        iVar19 = iVar22 * 0xc;\n        iVar21 = *(int *)(*(int *)(puVar6 + 10) + iVar19 + 4);\n        uVar10 = chr & 0xff;\n        local_d4 = iVar22;\n        if (uVar12 == 0xd900) goto LAB_00094804;\n        do {\n          if (uVar12 == 0xda00) {\n            chr = term->ucsdata->unitab_scoacs[uVar10];\n            uVar12 = chr & 0xffffff00;\n            uVar10 = chr & 0xff;\n          }\n          else if (uVar12 == 0xd800) {\n            puVar13 = term->ucsdata;\n            goto LAB_0009491c;\n          }\njoined_r0x00094728:\n          if (uVar12 == 0xf000) {\n            iVar11 = uVar10 + 0x404;\nLAB_00094740:\n            chr = term->ucsdata->unitab_scoacs[iVar11 + -4];\n            uVar10 = chr & 0xff;\n          }\n          else if (uVar12 == 0xf100) {\n            iVar11 = uVar10 + 0x204;\n            goto LAB_00094740;\n          }\n          iVar11 = local_d4 + 1;\n          cbuf[1] = 0;\n          iVar18 = iVar11;\n          cbuf[0] = chr;\n          if (((chr & 0xfffffe00) == 0xf000) && ((chr & 0xe0) != 0)) {\n            if (uVar10 != 0x7f) {\n              cVar17 = (char)chr;\n              iVar7 = (**(code **)(in_t9 + 0x7d674))(term->ucsdata->font_codepage,(int)cVar17);\n              buf_1[0] = cVar17;\n              if (iVar7 == 0) {\n                iVar7 = (**(code **)(in_t9 + 0x7d0e8))\n                                  (term->ucsdata->font_codepage,0,buf_1,1,wbuf,4);\n              }\n              else {\n                buf_1[1] = (char)*(undefined4 *)(*(int *)(puVar6 + 10) + iVar11 * 0xc);\n                iVar7 = (**(code **)(in_t9 + 0x7d0e8))\n                                  (term->ucsdata->font_codepage,0,buf_1,2,wbuf,4);\n                iVar18 = local_d4 + 2;\n                local_d4 = iVar11;\n              }\n              if (0 < iVar7) {\n                (**(code **)(in_t9 + 0x7db94))(cbuf,wbuf,iVar7 * 4,0x40);\n                cbuf[iVar7] = 0;\n                chr = cbuf[0];\n              }\n              goto LAB_00094778;\n            }\n            clip_addchar(&buf,chr,iVar21);\n          }\n          else {\nLAB_00094778:\n            iVar11 = iVar18;\n            if (chr != 0) {\n              uVar10 = cbuf[1];\n              pwVar15 = cbuf;\n              while( true ) {\n                clip_addchar(&buf,chr,iVar21);\n                if (uVar10 == 0) break;\n                chr = uVar10;\n                uVar10 = pwVar15[2];\n                pwVar15 = pwVar15 + 1;\n              }\n            }\n          }\n          iVar21 = *(int *)(puVar6 + 10);\n          iVar19 = *(int *)(iVar21 + iVar19 + 8);\n          iVar22 = iVar22 + iVar19;\n          if (iVar19 == 0) goto joined_r0x00094680;\n          iVar19 = iVar22 * 0xc;\n          chr = *(uint *)(iVar21 + iVar22 * 0xc);\n          iVar21 = *(int *)(iVar21 + iVar19 + 4);\n          uVar12 = chr & 0xffffff00;\n          uVar10 = chr & 0xff;\n        } while (uVar12 != 0xd900);\nLAB_00094804:\n        puVar13 = term->ucsdata;\n        if (term->rawcnp == 0) {\n          chr = puVar13->unitab_xterm[uVar10];\n          uVar12 = chr & 0xffffff00;\n          uVar10 = chr & 0xff;\n        }\n        else {\nLAB_0009491c:\n          chr = puVar13->unitab_line[uVar10];\n          uVar12 = chr & 0xffffff00;\n          uVar10 = chr & 0xff;\n        }\n        goto joined_r0x00094728;\n      }\n      iVar11 = iVar22 + 1;\n    }" { (expression_statement "iVar22 = iVar11;" (assignment_expression "iVar22 = iVar11" identifier = identifier) ;) (if_statement "if (((!bVar1) && ((iStack_cc != in_a3 || (top.y <= iVar22)))) ||\n         ((iStack_c8 <= iStack_cc && ((iStack_c8 != iStack_cc || (iStack_c0 <= iVar22))))))\n      goto LAB_00094994;" if (parenthesized_expression "(((!bVar1) && ((iStack_cc != in_a3 || (top.y <= iVar22)))) ||\n         ((iStack_c8 <= iStack_cc && ((iStack_c8 != iStack_cc || (iStack_c0 <= iVar22))))))" ( (binary_expression "((!bVar1) && ((iStack_cc != in_a3 || (top.y <= iVar22)))) ||\n         ((iStack_c8 <= iStack_cc && ((iStack_c8 != iStack_cc || (iStack_c0 <= iVar22)))))" (parenthesized_expression "((!bVar1) && ((iStack_cc != in_a3 || (top.y <= iVar22))))" ( (binary_expression "(!bVar1) && ((iStack_cc != in_a3 || (top.y <= iVar22)))" (parenthesized_expression "(!bVar1)" ( (unary_expression "!bVar1" ! identifier) )) && (parenthesized_expression "((iStack_cc != in_a3 || (top.y <= iVar22)))" ( (parenthesized_expression "(iStack_cc != in_a3 || (top.y <= iVar22))" ( (binary_expression "iStack_cc != in_a3 || (top.y <= iVar22)" (binary_expression "iStack_cc != in_a3" identifier != identifier) || (parenthesized_expression "(top.y <= iVar22)" ( (binary_expression "top.y <= iVar22" (field_expression "top.y" identifier . field_identifier) <= identifier) ))) )) ))) )) || (parenthesized_expression "((iStack_c8 <= iStack_cc && ((iStack_c8 != iStack_cc || (iStack_c0 <= iVar22)))))" ( (parenthesized_expression "(iStack_c8 <= iStack_cc && ((iStack_c8 != iStack_cc || (iStack_c0 <= iVar22))))" ( (binary_expression "iStack_c8 <= iStack_cc && ((iStack_c8 != iStack_cc || (iStack_c0 <= iVar22)))" (binary_expression "iStack_c8 <= iStack_cc" identifier <= identifier) && (parenthesized_expression "((iStack_c8 != iStack_cc || (iStack_c0 <= iVar22)))" ( (parenthesized_expression "(iStack_c8 != iStack_cc || (iStack_c0 <= iVar22))" ( (binary_expression "iStack_c8 != iStack_cc || (iStack_c0 <= iVar22)" (binary_expression "iStack_c8 != iStack_cc" identifier != identifier) || (parenthesized_expression "(iStack_c0 <= iVar22)" ( (binary_expression "iStack_c0 <= iVar22" identifier <= identifier) ))) )) ))) )) ))) )) (goto_statement "goto LAB_00094994;" goto statement_identifier ;)) (expression_statement "chr = *(uint *)(*(int *)(puVar6 + 10) + iVar22 * 0xc);" (assignment_expression "chr = *(uint *)(*(int *)(puVar6 + 10) + iVar22 * 0xc)" identifier = (pointer_expression "*(uint *)(*(int *)(puVar6 + 10) + iVar22 * 0xc)" * (cast_expression "(uint *)(*(int *)(puVar6 + 10) + iVar22 * 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar6 + 10) + iVar22 * 0xc)" ( (binary_expression "*(int *)(puVar6 + 10) + iVar22 * 0xc" (pointer_expression "*(int *)(puVar6 + 10)" * (cast_expression "(int *)(puVar6 + 10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar6 + 10)" ( (binary_expression "puVar6 + 10" identifier + number_literal) )))) + (binary_expression "iVar22 * 0xc" identifier * number_literal)) ))))) ;) (if_statement "if (chr != 0xdfff) {\n        uVar12 = chr & 0xffffff00;\n        iVar19 = iVar22 * 0xc;\n        iVar21 = *(int *)(*(int *)(puVar6 + 10) + iVar19 + 4);\n        uVar10 = chr & 0xff;\n        local_d4 = iVar22;\n        if (uVar12 == 0xd900) goto LAB_00094804;\n        do {\n          if (uVar12 == 0xda00) {\n            chr = term->ucsdata->unitab_scoacs[uVar10];\n            uVar12 = chr & 0xffffff00;\n            uVar10 = chr & 0xff;\n          }\n          else if (uVar12 == 0xd800) {\n            puVar13 = term->ucsdata;\n            goto LAB_0009491c;\n          }\njoined_r0x00094728:\n          if (uVar12 == 0xf000) {\n            iVar11 = uVar10 + 0x404;\nLAB_00094740:\n            chr = term->ucsdata->unitab_scoacs[iVar11 + -4];\n            uVar10 = chr & 0xff;\n          }\n          else if (uVar12 == 0xf100) {\n            iVar11 = uVar10 + 0x204;\n            goto LAB_00094740;\n          }\n          iVar11 = local_d4 + 1;\n          cbuf[1] = 0;\n          iVar18 = iVar11;\n          cbuf[0] = chr;\n          if (((chr & 0xfffffe00) == 0xf000) && ((chr & 0xe0) != 0)) {\n            if (uVar10 != 0x7f) {\n              cVar17 = (char)chr;\n              iVar7 = (**(code **)(in_t9 + 0x7d674))(term->ucsdata->font_codepage,(int)cVar17);\n              buf_1[0] = cVar17;\n              if (iVar7 == 0) {\n                iVar7 = (**(code **)(in_t9 + 0x7d0e8))\n                                  (term->ucsdata->font_codepage,0,buf_1,1,wbuf,4);\n              }\n              else {\n                buf_1[1] = (char)*(undefined4 *)(*(int *)(puVar6 + 10) + iVar11 * 0xc);\n                iVar7 = (**(code **)(in_t9 + 0x7d0e8))\n                                  (term->ucsdata->font_codepage,0,buf_1,2,wbuf,4);\n                iVar18 = local_d4 + 2;\n                local_d4 = iVar11;\n              }\n              if (0 < iVar7) {\n                (**(code **)(in_t9 + 0x7db94))(cbuf,wbuf,iVar7 * 4,0x40);\n                cbuf[iVar7] = 0;\n                chr = cbuf[0];\n              }\n              goto LAB_00094778;\n            }\n            clip_addchar(&buf,chr,iVar21);\n          }\n          else {\nLAB_00094778:\n            iVar11 = iVar18;\n            if (chr != 0) {\n              uVar10 = cbuf[1];\n              pwVar15 = cbuf;\n              while( true ) {\n                clip_addchar(&buf,chr,iVar21);\n                if (uVar10 == 0) break;\n                chr = uVar10;\n                uVar10 = pwVar15[2];\n                pwVar15 = pwVar15 + 1;\n              }\n            }\n          }\n          iVar21 = *(int *)(puVar6 + 10);\n          iVar19 = *(int *)(iVar21 + iVar19 + 8);\n          iVar22 = iVar22 + iVar19;\n          if (iVar19 == 0) goto joined_r0x00094680;\n          iVar19 = iVar22 * 0xc;\n          chr = *(uint *)(iVar21 + iVar22 * 0xc);\n          iVar21 = *(int *)(iVar21 + iVar19 + 4);\n          uVar12 = chr & 0xffffff00;\n          uVar10 = chr & 0xff;\n        } while (uVar12 != 0xd900);\nLAB_00094804:\n        puVar13 = term->ucsdata;\n        if (term->rawcnp == 0) {\n          chr = puVar13->unitab_xterm[uVar10];\n          uVar12 = chr & 0xffffff00;\n          uVar10 = chr & 0xff;\n        }\n        else {\nLAB_0009491c:\n          chr = puVar13->unitab_line[uVar10];\n          uVar12 = chr & 0xffffff00;\n          uVar10 = chr & 0xff;\n        }\n        goto joined_r0x00094728;\n      }" if (parenthesized_expression "(chr != 0xdfff)" ( (binary_expression "chr != 0xdfff" identifier != number_literal) )) (compound_statement "{\n        uVar12 = chr & 0xffffff00;\n        iVar19 = iVar22 * 0xc;\n        iVar21 = *(int *)(*(int *)(puVar6 + 10) + iVar19 + 4);\n        uVar10 = chr & 0xff;\n        local_d4 = iVar22;\n        if (uVar12 == 0xd900) goto LAB_00094804;\n        do {\n          if (uVar12 == 0xda00) {\n            chr = term->ucsdata->unitab_scoacs[uVar10];\n            uVar12 = chr & 0xffffff00;\n            uVar10 = chr & 0xff;\n          }\n          else if (uVar12 == 0xd800) {\n            puVar13 = term->ucsdata;\n            goto LAB_0009491c;\n          }\njoined_r0x00094728:\n          if (uVar12 == 0xf000) {\n            iVar11 = uVar10 + 0x404;\nLAB_00094740:\n            chr = term->ucsdata->unitab_scoacs[iVar11 + -4];\n            uVar10 = chr & 0xff;\n          }\n          else if (uVar12 == 0xf100) {\n            iVar11 = uVar10 + 0x204;\n            goto LAB_00094740;\n          }\n          iVar11 = local_d4 + 1;\n          cbuf[1] = 0;\n          iVar18 = iVar11;\n          cbuf[0] = chr;\n          if (((chr & 0xfffffe00) == 0xf000) && ((chr & 0xe0) != 0)) {\n            if (uVar10 != 0x7f) {\n              cVar17 = (char)chr;\n              iVar7 = (**(code **)(in_t9 + 0x7d674))(term->ucsdata->font_codepage,(int)cVar17);\n              buf_1[0] = cVar17;\n              if (iVar7 == 0) {\n                iVar7 = (**(code **)(in_t9 + 0x7d0e8))\n                                  (term->ucsdata->font_codepage,0,buf_1,1,wbuf,4);\n              }\n              else {\n                buf_1[1] = (char)*(undefined4 *)(*(int *)(puVar6 + 10) + iVar11 * 0xc);\n                iVar7 = (**(code **)(in_t9 + 0x7d0e8))\n                                  (term->ucsdata->font_codepage,0,buf_1,2,wbuf,4);\n                iVar18 = local_d4 + 2;\n                local_d4 = iVar11;\n              }\n              if (0 < iVar7) {\n                (**(code **)(in_t9 + 0x7db94))(cbuf,wbuf,iVar7 * 4,0x40);\n                cbuf[iVar7] = 0;\n                chr = cbuf[0];\n              }\n              goto LAB_00094778;\n            }\n            clip_addchar(&buf,chr,iVar21);\n          }\n          else {\nLAB_00094778:\n            iVar11 = iVar18;\n            if (chr != 0) {\n              uVar10 = cbuf[1];\n              pwVar15 = cbuf;\n              while( true ) {\n                clip_addchar(&buf,chr,iVar21);\n                if (uVar10 == 0) break;\n                chr = uVar10;\n                uVar10 = pwVar15[2];\n                pwVar15 = pwVar15 + 1;\n              }\n            }\n          }\n          iVar21 = *(int *)(puVar6 + 10);\n          iVar19 = *(int *)(iVar21 + iVar19 + 8);\n          iVar22 = iVar22 + iVar19;\n          if (iVar19 == 0) goto joined_r0x00094680;\n          iVar19 = iVar22 * 0xc;\n          chr = *(uint *)(iVar21 + iVar22 * 0xc);\n          iVar21 = *(int *)(iVar21 + iVar19 + 4);\n          uVar12 = chr & 0xffffff00;\n          uVar10 = chr & 0xff;\n        } while (uVar12 != 0xd900);\nLAB_00094804:\n        puVar13 = term->ucsdata;\n        if (term->rawcnp == 0) {\n          chr = puVar13->unitab_xterm[uVar10];\n          uVar12 = chr & 0xffffff00;\n          uVar10 = chr & 0xff;\n        }\n        else {\nLAB_0009491c:\n          chr = puVar13->unitab_line[uVar10];\n          uVar12 = chr & 0xffffff00;\n          uVar10 = chr & 0xff;\n        }\n        goto joined_r0x00094728;\n      }" { (expression_statement "uVar12 = chr & 0xffffff00;" (assignment_expression "uVar12 = chr & 0xffffff00" identifier = (binary_expression "chr & 0xffffff00" identifier & number_literal)) ;) (expression_statement "iVar19 = iVar22 * 0xc;" (assignment_expression "iVar19 = iVar22 * 0xc" identifier = (binary_expression "iVar22 * 0xc" identifier * number_literal)) ;) (expression_statement "iVar21 = *(int *)(*(int *)(puVar6 + 10) + iVar19 + 4);" (assignment_expression "iVar21 = *(int *)(*(int *)(puVar6 + 10) + iVar19 + 4)" identifier = (pointer_expression "*(int *)(*(int *)(puVar6 + 10) + iVar19 + 4)" * (cast_expression "(int *)(*(int *)(puVar6 + 10) + iVar19 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar6 + 10) + iVar19 + 4)" ( (binary_expression "*(int *)(puVar6 + 10) + iVar19 + 4" (binary_expression "*(int *)(puVar6 + 10) + iVar19" (pointer_expression "*(int *)(puVar6 + 10)" * (cast_expression "(int *)(puVar6 + 10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar6 + 10)" ( (binary_expression "puVar6 + 10" identifier + number_literal) )))) + identifier) + number_literal) ))))) ;) (expression_statement "uVar10 = chr & 0xff;" (assignment_expression "uVar10 = chr & 0xff" identifier = (binary_expression "chr & 0xff" identifier & number_literal)) ;) (expression_statement "local_d4 = iVar22;" (assignment_expression "local_d4 = iVar22" identifier = identifier) ;) (if_statement "if (uVar12 == 0xd900) goto LAB_00094804;" if (parenthesized_expression "(uVar12 == 0xd900)" ( (binary_expression "uVar12 == 0xd900" identifier == number_literal) )) (goto_statement "goto LAB_00094804;" goto statement_identifier ;)) (do_statement "do {\n          if (uVar12 == 0xda00) {\n            chr = term->ucsdata->unitab_scoacs[uVar10];\n            uVar12 = chr & 0xffffff00;\n            uVar10 = chr & 0xff;\n          }\n          else if (uVar12 == 0xd800) {\n            puVar13 = term->ucsdata;\n            goto LAB_0009491c;\n          }\njoined_r0x00094728:\n          if (uVar12 == 0xf000) {\n            iVar11 = uVar10 + 0x404;\nLAB_00094740:\n            chr = term->ucsdata->unitab_scoacs[iVar11 + -4];\n            uVar10 = chr & 0xff;\n          }\n          else if (uVar12 == 0xf100) {\n            iVar11 = uVar10 + 0x204;\n            goto LAB_00094740;\n          }\n          iVar11 = local_d4 + 1;\n          cbuf[1] = 0;\n          iVar18 = iVar11;\n          cbuf[0] = chr;\n          if (((chr & 0xfffffe00) == 0xf000) && ((chr & 0xe0) != 0)) {\n            if (uVar10 != 0x7f) {\n              cVar17 = (char)chr;\n              iVar7 = (**(code **)(in_t9 + 0x7d674))(term->ucsdata->font_codepage,(int)cVar17);\n              buf_1[0] = cVar17;\n              if (iVar7 == 0) {\n                iVar7 = (**(code **)(in_t9 + 0x7d0e8))\n                                  (term->ucsdata->font_codepage,0,buf_1,1,wbuf,4);\n              }\n              else {\n                buf_1[1] = (char)*(undefined4 *)(*(int *)(puVar6 + 10) + iVar11 * 0xc);\n                iVar7 = (**(code **)(in_t9 + 0x7d0e8))\n                                  (term->ucsdata->font_codepage,0,buf_1,2,wbuf,4);\n                iVar18 = local_d4 + 2;\n                local_d4 = iVar11;\n              }\n              if (0 < iVar7) {\n                (**(code **)(in_t9 + 0x7db94))(cbuf,wbuf,iVar7 * 4,0x40);\n                cbuf[iVar7] = 0;\n                chr = cbuf[0];\n              }\n              goto LAB_00094778;\n            }\n            clip_addchar(&buf,chr,iVar21);\n          }\n          else {\nLAB_00094778:\n            iVar11 = iVar18;\n            if (chr != 0) {\n              uVar10 = cbuf[1];\n              pwVar15 = cbuf;\n              while( true ) {\n                clip_addchar(&buf,chr,iVar21);\n                if (uVar10 == 0) break;\n                chr = uVar10;\n                uVar10 = pwVar15[2];\n                pwVar15 = pwVar15 + 1;\n              }\n            }\n          }\n          iVar21 = *(int *)(puVar6 + 10);\n          iVar19 = *(int *)(iVar21 + iVar19 + 8);\n          iVar22 = iVar22 + iVar19;\n          if (iVar19 == 0) goto joined_r0x00094680;\n          iVar19 = iVar22 * 0xc;\n          chr = *(uint *)(iVar21 + iVar22 * 0xc);\n          iVar21 = *(int *)(iVar21 + iVar19 + 4);\n          uVar12 = chr & 0xffffff00;\n          uVar10 = chr & 0xff;\n        } while (uVar12 != 0xd900);" do (compound_statement "{\n          if (uVar12 == 0xda00) {\n            chr = term->ucsdata->unitab_scoacs[uVar10];\n            uVar12 = chr & 0xffffff00;\n            uVar10 = chr & 0xff;\n          }\n          else if (uVar12 == 0xd800) {\n            puVar13 = term->ucsdata;\n            goto LAB_0009491c;\n          }\njoined_r0x00094728:\n          if (uVar12 == 0xf000) {\n            iVar11 = uVar10 + 0x404;\nLAB_00094740:\n            chr = term->ucsdata->unitab_scoacs[iVar11 + -4];\n            uVar10 = chr & 0xff;\n          }\n          else if (uVar12 == 0xf100) {\n            iVar11 = uVar10 + 0x204;\n            goto LAB_00094740;\n          }\n          iVar11 = local_d4 + 1;\n          cbuf[1] = 0;\n          iVar18 = iVar11;\n          cbuf[0] = chr;\n          if (((chr & 0xfffffe00) == 0xf000) && ((chr & 0xe0) != 0)) {\n            if (uVar10 != 0x7f) {\n              cVar17 = (char)chr;\n              iVar7 = (**(code **)(in_t9 + 0x7d674))(term->ucsdata->font_codepage,(int)cVar17);\n              buf_1[0] = cVar17;\n              if (iVar7 == 0) {\n                iVar7 = (**(code **)(in_t9 + 0x7d0e8))\n                                  (term->ucsdata->font_codepage,0,buf_1,1,wbuf,4);\n              }\n              else {\n                buf_1[1] = (char)*(undefined4 *)(*(int *)(puVar6 + 10) + iVar11 * 0xc);\n                iVar7 = (**(code **)(in_t9 + 0x7d0e8))\n                                  (term->ucsdata->font_codepage,0,buf_1,2,wbuf,4);\n                iVar18 = local_d4 + 2;\n                local_d4 = iVar11;\n              }\n              if (0 < iVar7) {\n                (**(code **)(in_t9 + 0x7db94))(cbuf,wbuf,iVar7 * 4,0x40);\n                cbuf[iVar7] = 0;\n                chr = cbuf[0];\n              }\n              goto LAB_00094778;\n            }\n            clip_addchar(&buf,chr,iVar21);\n          }\n          else {\nLAB_00094778:\n            iVar11 = iVar18;\n            if (chr != 0) {\n              uVar10 = cbuf[1];\n              pwVar15 = cbuf;\n              while( true ) {\n                clip_addchar(&buf,chr,iVar21);\n                if (uVar10 == 0) break;\n                chr = uVar10;\n                uVar10 = pwVar15[2];\n                pwVar15 = pwVar15 + 1;\n              }\n            }\n          }\n          iVar21 = *(int *)(puVar6 + 10);\n          iVar19 = *(int *)(iVar21 + iVar19 + 8);\n          iVar22 = iVar22 + iVar19;\n          if (iVar19 == 0) goto joined_r0x00094680;\n          iVar19 = iVar22 * 0xc;\n          chr = *(uint *)(iVar21 + iVar22 * 0xc);\n          iVar21 = *(int *)(iVar21 + iVar19 + 4);\n          uVar12 = chr & 0xffffff00;\n          uVar10 = chr & 0xff;\n        }" { (if_statement "if (uVar12 == 0xda00) {\n            chr = term->ucsdata->unitab_scoacs[uVar10];\n            uVar12 = chr & 0xffffff00;\n            uVar10 = chr & 0xff;\n          }\n          else if (uVar12 == 0xd800) {\n            puVar13 = term->ucsdata;\n            goto LAB_0009491c;\n          }" if (parenthesized_expression "(uVar12 == 0xda00)" ( (binary_expression "uVar12 == 0xda00" identifier == number_literal) )) (compound_statement "{\n            chr = term->ucsdata->unitab_scoacs[uVar10];\n            uVar12 = chr & 0xffffff00;\n            uVar10 = chr & 0xff;\n          }" { (expression_statement "chr = term->ucsdata->unitab_scoacs[uVar10];" (assignment_expression "chr = term->ucsdata->unitab_scoacs[uVar10]" identifier = (subscript_expression "term->ucsdata->unitab_scoacs[uVar10]" (field_expression "term->ucsdata->unitab_scoacs" (field_expression "term->ucsdata" identifier -> field_identifier) -> field_identifier) [ identifier ])) ;) (expression_statement "uVar12 = chr & 0xffffff00;" (assignment_expression "uVar12 = chr & 0xffffff00" identifier = (binary_expression "chr & 0xffffff00" identifier & number_literal)) ;) (expression_statement "uVar10 = chr & 0xff;" (assignment_expression "uVar10 = chr & 0xff" identifier = (binary_expression "chr & 0xff" identifier & number_literal)) ;) }) (else_clause "else if (uVar12 == 0xd800) {\n            puVar13 = term->ucsdata;\n            goto LAB_0009491c;\n          }" else (if_statement "if (uVar12 == 0xd800) {\n            puVar13 = term->ucsdata;\n            goto LAB_0009491c;\n          }" if (parenthesized_expression "(uVar12 == 0xd800)" ( (binary_expression "uVar12 == 0xd800" identifier == number_literal) )) (compound_statement "{\n            puVar13 = term->ucsdata;\n            goto LAB_0009491c;\n          }" { (expression_statement "puVar13 = term->ucsdata;" (assignment_expression "puVar13 = term->ucsdata" identifier = (field_expression "term->ucsdata" identifier -> field_identifier)) ;) (goto_statement "goto LAB_0009491c;" goto statement_identifier ;) })))) (labeled_statement "joined_r0x00094728:\n          if (uVar12 == 0xf000) {\n            iVar11 = uVar10 + 0x404;\nLAB_00094740:\n            chr = term->ucsdata->unitab_scoacs[iVar11 + -4];\n            uVar10 = chr & 0xff;\n          }\n          else if (uVar12 == 0xf100) {\n            iVar11 = uVar10 + 0x204;\n            goto LAB_00094740;\n          }" statement_identifier : (if_statement "if (uVar12 == 0xf000) {\n            iVar11 = uVar10 + 0x404;\nLAB_00094740:\n            chr = term->ucsdata->unitab_scoacs[iVar11 + -4];\n            uVar10 = chr & 0xff;\n          }\n          else if (uVar12 == 0xf100) {\n            iVar11 = uVar10 + 0x204;\n            goto LAB_00094740;\n          }" if (parenthesized_expression "(uVar12 == 0xf000)" ( (binary_expression "uVar12 == 0xf000" identifier == number_literal) )) (compound_statement "{\n            iVar11 = uVar10 + 0x404;\nLAB_00094740:\n            chr = term->ucsdata->unitab_scoacs[iVar11 + -4];\n            uVar10 = chr & 0xff;\n          }" { (expression_statement "iVar11 = uVar10 + 0x404;" (assignment_expression "iVar11 = uVar10 + 0x404" identifier = (binary_expression "uVar10 + 0x404" identifier + number_literal)) ;) (labeled_statement "LAB_00094740:\n            chr = term->ucsdata->unitab_scoacs[iVar11 + -4];" statement_identifier : (expression_statement "chr = term->ucsdata->unitab_scoacs[iVar11 + -4];" (assignment_expression "chr = term->ucsdata->unitab_scoacs[iVar11 + -4]" identifier = (subscript_expression "term->ucsdata->unitab_scoacs[iVar11 + -4]" (field_expression "term->ucsdata->unitab_scoacs" (field_expression "term->ucsdata" identifier -> field_identifier) -> field_identifier) [ (binary_expression "iVar11 + -4" identifier + number_literal) ])) ;)) (expression_statement "uVar10 = chr & 0xff;" (assignment_expression "uVar10 = chr & 0xff" identifier = (binary_expression "chr & 0xff" identifier & number_literal)) ;) }) (else_clause "else if (uVar12 == 0xf100) {\n            iVar11 = uVar10 + 0x204;\n            goto LAB_00094740;\n          }" else (if_statement "if (uVar12 == 0xf100) {\n            iVar11 = uVar10 + 0x204;\n            goto LAB_00094740;\n          }" if (parenthesized_expression "(uVar12 == 0xf100)" ( (binary_expression "uVar12 == 0xf100" identifier == number_literal) )) (compound_statement "{\n            iVar11 = uVar10 + 0x204;\n            goto LAB_00094740;\n          }" { (expression_statement "iVar11 = uVar10 + 0x204;" (assignment_expression "iVar11 = uVar10 + 0x204" identifier = (binary_expression "uVar10 + 0x204" identifier + number_literal)) ;) (goto_statement "goto LAB_00094740;" goto statement_identifier ;) }))))) (expression_statement "iVar11 = local_d4 + 1;" (assignment_expression "iVar11 = local_d4 + 1" identifier = (binary_expression "local_d4 + 1" identifier + number_literal)) ;) (expression_statement "cbuf[1] = 0;" (assignment_expression "cbuf[1] = 0" (subscript_expression "cbuf[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "iVar18 = iVar11;" (assignment_expression "iVar18 = iVar11" identifier = identifier) ;) (expression_statement "cbuf[0] = chr;" (assignment_expression "cbuf[0] = chr" (subscript_expression "cbuf[0]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (((chr & 0xfffffe00) == 0xf000) && ((chr & 0xe0) != 0)) {\n            if (uVar10 != 0x7f) {\n              cVar17 = (char)chr;\n              iVar7 = (**(code **)(in_t9 + 0x7d674))(term->ucsdata->font_codepage,(int)cVar17);\n              buf_1[0] = cVar17;\n              if (iVar7 == 0) {\n                iVar7 = (**(code **)(in_t9 + 0x7d0e8))\n                                  (term->ucsdata->font_codepage,0,buf_1,1,wbuf,4);\n              }\n              else {\n                buf_1[1] = (char)*(undefined4 *)(*(int *)(puVar6 + 10) + iVar11 * 0xc);\n                iVar7 = (**(code **)(in_t9 + 0x7d0e8))\n                                  (term->ucsdata->font_codepage,0,buf_1,2,wbuf,4);\n                iVar18 = local_d4 + 2;\n                local_d4 = iVar11;\n              }\n              if (0 < iVar7) {\n                (**(code **)(in_t9 + 0x7db94))(cbuf,wbuf,iVar7 * 4,0x40);\n                cbuf[iVar7] = 0;\n                chr = cbuf[0];\n              }\n              goto LAB_00094778;\n            }\n            clip_addchar(&buf,chr,iVar21);\n          }\n          else {\nLAB_00094778:\n            iVar11 = iVar18;\n            if (chr != 0) {\n              uVar10 = cbuf[1];\n              pwVar15 = cbuf;\n              while( true ) {\n                clip_addchar(&buf,chr,iVar21);\n                if (uVar10 == 0) break;\n                chr = uVar10;\n                uVar10 = pwVar15[2];\n                pwVar15 = pwVar15 + 1;\n              }\n            }\n          }" if (parenthesized_expression "(((chr & 0xfffffe00) == 0xf000) && ((chr & 0xe0) != 0))" ( (binary_expression "((chr & 0xfffffe00) == 0xf000) && ((chr & 0xe0) != 0)" (parenthesized_expression "((chr & 0xfffffe00) == 0xf000)" ( (binary_expression "(chr & 0xfffffe00) == 0xf000" (parenthesized_expression "(chr & 0xfffffe00)" ( (binary_expression "chr & 0xfffffe00" identifier & number_literal) )) == number_literal) )) && (parenthesized_expression "((chr & 0xe0) != 0)" ( (binary_expression "(chr & 0xe0) != 0" (parenthesized_expression "(chr & 0xe0)" ( (binary_expression "chr & 0xe0" identifier & number_literal) )) != number_literal) ))) )) (compound_statement "{\n            if (uVar10 != 0x7f) {\n              cVar17 = (char)chr;\n              iVar7 = (**(code **)(in_t9 + 0x7d674))(term->ucsdata->font_codepage,(int)cVar17);\n              buf_1[0] = cVar17;\n              if (iVar7 == 0) {\n                iVar7 = (**(code **)(in_t9 + 0x7d0e8))\n                                  (term->ucsdata->font_codepage,0,buf_1,1,wbuf,4);\n              }\n              else {\n                buf_1[1] = (char)*(undefined4 *)(*(int *)(puVar6 + 10) + iVar11 * 0xc);\n                iVar7 = (**(code **)(in_t9 + 0x7d0e8))\n                                  (term->ucsdata->font_codepage,0,buf_1,2,wbuf,4);\n                iVar18 = local_d4 + 2;\n                local_d4 = iVar11;\n              }\n              if (0 < iVar7) {\n                (**(code **)(in_t9 + 0x7db94))(cbuf,wbuf,iVar7 * 4,0x40);\n                cbuf[iVar7] = 0;\n                chr = cbuf[0];\n              }\n              goto LAB_00094778;\n            }\n            clip_addchar(&buf,chr,iVar21);\n          }" { (if_statement "if (uVar10 != 0x7f) {\n              cVar17 = (char)chr;\n              iVar7 = (**(code **)(in_t9 + 0x7d674))(term->ucsdata->font_codepage,(int)cVar17);\n              buf_1[0] = cVar17;\n              if (iVar7 == 0) {\n                iVar7 = (**(code **)(in_t9 + 0x7d0e8))\n                                  (term->ucsdata->font_codepage,0,buf_1,1,wbuf,4);\n              }\n              else {\n                buf_1[1] = (char)*(undefined4 *)(*(int *)(puVar6 + 10) + iVar11 * 0xc);\n                iVar7 = (**(code **)(in_t9 + 0x7d0e8))\n                                  (term->ucsdata->font_codepage,0,buf_1,2,wbuf,4);\n                iVar18 = local_d4 + 2;\n                local_d4 = iVar11;\n              }\n              if (0 < iVar7) {\n                (**(code **)(in_t9 + 0x7db94))(cbuf,wbuf,iVar7 * 4,0x40);\n                cbuf[iVar7] = 0;\n                chr = cbuf[0];\n              }\n              goto LAB_00094778;\n            }" if (parenthesized_expression "(uVar10 != 0x7f)" ( (binary_expression "uVar10 != 0x7f" identifier != number_literal) )) (compound_statement "{\n              cVar17 = (char)chr;\n              iVar7 = (**(code **)(in_t9 + 0x7d674))(term->ucsdata->font_codepage,(int)cVar17);\n              buf_1[0] = cVar17;\n              if (iVar7 == 0) {\n                iVar7 = (**(code **)(in_t9 + 0x7d0e8))\n                                  (term->ucsdata->font_codepage,0,buf_1,1,wbuf,4);\n              }\n              else {\n                buf_1[1] = (char)*(undefined4 *)(*(int *)(puVar6 + 10) + iVar11 * 0xc);\n                iVar7 = (**(code **)(in_t9 + 0x7d0e8))\n                                  (term->ucsdata->font_codepage,0,buf_1,2,wbuf,4);\n                iVar18 = local_d4 + 2;\n                local_d4 = iVar11;\n              }\n              if (0 < iVar7) {\n                (**(code **)(in_t9 + 0x7db94))(cbuf,wbuf,iVar7 * 4,0x40);\n                cbuf[iVar7] = 0;\n                chr = cbuf[0];\n              }\n              goto LAB_00094778;\n            }" { (expression_statement "cVar17 = (char)chr;" (assignment_expression "cVar17 = (char)chr" identifier = (cast_expression "(char)chr" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "iVar7 = (**(code **)(in_t9 + 0x7d674))(term->ucsdata->font_codepage,(int)cVar17);" (assignment_expression "iVar7 = (**(code **)(in_t9 + 0x7d674))(term->ucsdata->font_codepage,(int)cVar17)" identifier = (call_expression "(**(code **)(in_t9 + 0x7d674))(term->ucsdata->font_codepage,(int)cVar17)" (parenthesized_expression "(**(code **)(in_t9 + 0x7d674))" ( (pointer_expression "**(code **)(in_t9 + 0x7d674)" * (pointer_expression "*(code **)(in_t9 + 0x7d674)" * (cast_expression "(code **)(in_t9 + 0x7d674)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(in_t9 + 0x7d674)" ( (binary_expression "in_t9 + 0x7d674" identifier + number_literal) ))))) )) (argument_list "(term->ucsdata->font_codepage,(int)cVar17)" ( (field_expression "term->ucsdata->font_codepage" (field_expression "term->ucsdata" identifier -> field_identifier) -> field_identifier) , (cast_expression "(int)cVar17" ( (type_descriptor "int" primitive_type) ) identifier) )))) ;) (expression_statement "buf_1[0] = cVar17;" (assignment_expression "buf_1[0] = cVar17" (subscript_expression "buf_1[0]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (iVar7 == 0) {\n                iVar7 = (**(code **)(in_t9 + 0x7d0e8))\n                                  (term->ucsdata->font_codepage,0,buf_1,1,wbuf,4);\n              }\n              else {\n                buf_1[1] = (char)*(undefined4 *)(*(int *)(puVar6 + 10) + iVar11 * 0xc);\n                iVar7 = (**(code **)(in_t9 + 0x7d0e8))\n                                  (term->ucsdata->font_codepage,0,buf_1,2,wbuf,4);\n                iVar18 = local_d4 + 2;\n                local_d4 = iVar11;\n              }" if (parenthesized_expression "(iVar7 == 0)" ( (binary_expression "iVar7 == 0" identifier == number_literal) )) (compound_statement "{\n                iVar7 = (**(code **)(in_t9 + 0x7d0e8))\n                                  (term->ucsdata->font_codepage,0,buf_1,1,wbuf,4);\n              }" { (expression_statement "iVar7 = (**(code **)(in_t9 + 0x7d0e8))\n                                  (term->ucsdata->font_codepage,0,buf_1,1,wbuf,4);" (assignment_expression "iVar7 = (**(code **)(in_t9 + 0x7d0e8))\n                                  (term->ucsdata->font_codepage,0,buf_1,1,wbuf,4)" identifier = (call_expression "(**(code **)(in_t9 + 0x7d0e8))\n                                  (term->ucsdata->font_codepage,0,buf_1,1,wbuf,4)" (parenthesized_expression "(**(code **)(in_t9 + 0x7d0e8))" ( (pointer_expression "**(code **)(in_t9 + 0x7d0e8)" * (pointer_expression "*(code **)(in_t9 + 0x7d0e8)" * (cast_expression "(code **)(in_t9 + 0x7d0e8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(in_t9 + 0x7d0e8)" ( (binary_expression "in_t9 + 0x7d0e8" identifier + number_literal) ))))) )) (argument_list "(term->ucsdata->font_codepage,0,buf_1,1,wbuf,4)" ( (field_expression "term->ucsdata->font_codepage" (field_expression "term->ucsdata" identifier -> field_identifier) -> field_identifier) , number_literal , identifier , number_literal , identifier , number_literal )))) ;) }) (else_clause "else {\n                buf_1[1] = (char)*(undefined4 *)(*(int *)(puVar6 + 10) + iVar11 * 0xc);\n                iVar7 = (**(code **)(in_t9 + 0x7d0e8))\n                                  (term->ucsdata->font_codepage,0,buf_1,2,wbuf,4);\n                iVar18 = local_d4 + 2;\n                local_d4 = iVar11;\n              }" else (compound_statement "{\n                buf_1[1] = (char)*(undefined4 *)(*(int *)(puVar6 + 10) + iVar11 * 0xc);\n                iVar7 = (**(code **)(in_t9 + 0x7d0e8))\n                                  (term->ucsdata->font_codepage,0,buf_1,2,wbuf,4);\n                iVar18 = local_d4 + 2;\n                local_d4 = iVar11;\n              }" { (expression_statement "buf_1[1] = (char)*(undefined4 *)(*(int *)(puVar6 + 10) + iVar11 * 0xc);" (assignment_expression "buf_1[1] = (char)*(undefined4 *)(*(int *)(puVar6 + 10) + iVar11 * 0xc)" (subscript_expression "buf_1[1]" identifier [ number_literal ]) = (cast_expression "(char)*(undefined4 *)(*(int *)(puVar6 + 10) + iVar11 * 0xc)" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*(undefined4 *)(*(int *)(puVar6 + 10) + iVar11 * 0xc)" * (cast_expression "(undefined4 *)(*(int *)(puVar6 + 10) + iVar11 * 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar6 + 10) + iVar11 * 0xc)" ( (binary_expression "*(int *)(puVar6 + 10) + iVar11 * 0xc" (pointer_expression "*(int *)(puVar6 + 10)" * (cast_expression "(int *)(puVar6 + 10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar6 + 10)" ( (binary_expression "puVar6 + 10" identifier + number_literal) )))) + (binary_expression "iVar11 * 0xc" identifier * number_literal)) )))))) ;) (expression_statement "iVar7 = (**(code **)(in_t9 + 0x7d0e8))\n                                  (term->ucsdata->font_codepage,0,buf_1,2,wbuf,4);" (assignment_expression "iVar7 = (**(code **)(in_t9 + 0x7d0e8))\n                                  (term->ucsdata->font_codepage,0,buf_1,2,wbuf,4)" identifier = (call_expression "(**(code **)(in_t9 + 0x7d0e8))\n                                  (term->ucsdata->font_codepage,0,buf_1,2,wbuf,4)" (parenthesized_expression "(**(code **)(in_t9 + 0x7d0e8))" ( (pointer_expression "**(code **)(in_t9 + 0x7d0e8)" * (pointer_expression "*(code **)(in_t9 + 0x7d0e8)" * (cast_expression "(code **)(in_t9 + 0x7d0e8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(in_t9 + 0x7d0e8)" ( (binary_expression "in_t9 + 0x7d0e8" identifier + number_literal) ))))) )) (argument_list "(term->ucsdata->font_codepage,0,buf_1,2,wbuf,4)" ( (field_expression "term->ucsdata->font_codepage" (field_expression "term->ucsdata" identifier -> field_identifier) -> field_identifier) , number_literal , identifier , number_literal , identifier , number_literal )))) ;) (expression_statement "iVar18 = local_d4 + 2;" (assignment_expression "iVar18 = local_d4 + 2" identifier = (binary_expression "local_d4 + 2" identifier + number_literal)) ;) (expression_statement "local_d4 = iVar11;" (assignment_expression "local_d4 = iVar11" identifier = identifier) ;) }))) (if_statement "if (0 < iVar7) {\n                (**(code **)(in_t9 + 0x7db94))(cbuf,wbuf,iVar7 * 4,0x40);\n                cbuf[iVar7] = 0;\n                chr = cbuf[0];\n              }" if (parenthesized_expression "(0 < iVar7)" ( (binary_expression "0 < iVar7" number_literal < identifier) )) (compound_statement "{\n                (**(code **)(in_t9 + 0x7db94))(cbuf,wbuf,iVar7 * 4,0x40);\n                cbuf[iVar7] = 0;\n                chr = cbuf[0];\n              }" { (expression_statement "(**(code **)(in_t9 + 0x7db94))(cbuf,wbuf,iVar7 * 4,0x40);" (call_expression "(**(code **)(in_t9 + 0x7db94))(cbuf,wbuf,iVar7 * 4,0x40)" (parenthesized_expression "(**(code **)(in_t9 + 0x7db94))" ( (pointer_expression "**(code **)(in_t9 + 0x7db94)" * (pointer_expression "*(code **)(in_t9 + 0x7db94)" * (cast_expression "(code **)(in_t9 + 0x7db94)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(in_t9 + 0x7db94)" ( (binary_expression "in_t9 + 0x7db94" identifier + number_literal) ))))) )) (argument_list "(cbuf,wbuf,iVar7 * 4,0x40)" ( identifier , identifier , (binary_expression "iVar7 * 4" identifier * number_literal) , number_literal ))) ;) (expression_statement "cbuf[iVar7] = 0;" (assignment_expression "cbuf[iVar7] = 0" (subscript_expression "cbuf[iVar7]" identifier [ identifier ]) = number_literal) ;) (expression_statement "chr = cbuf[0];" (assignment_expression "chr = cbuf[0]" identifier = (subscript_expression "cbuf[0]" identifier [ number_literal ])) ;) })) (goto_statement "goto LAB_00094778;" goto statement_identifier ;) })) (expression_statement "clip_addchar(&buf,chr,iVar21);" (call_expression "clip_addchar(&buf,chr,iVar21)" identifier (argument_list "(&buf,chr,iVar21)" ( (pointer_expression "&buf" & identifier) , identifier , identifier ))) ;) }) (else_clause "else {\nLAB_00094778:\n            iVar11 = iVar18;\n            if (chr != 0) {\n              uVar10 = cbuf[1];\n              pwVar15 = cbuf;\n              while( true ) {\n                clip_addchar(&buf,chr,iVar21);\n                if (uVar10 == 0) break;\n                chr = uVar10;\n                uVar10 = pwVar15[2];\n                pwVar15 = pwVar15 + 1;\n              }\n            }\n          }" else (compound_statement "{\nLAB_00094778:\n            iVar11 = iVar18;\n            if (chr != 0) {\n              uVar10 = cbuf[1];\n              pwVar15 = cbuf;\n              while( true ) {\n                clip_addchar(&buf,chr,iVar21);\n                if (uVar10 == 0) break;\n                chr = uVar10;\n                uVar10 = pwVar15[2];\n                pwVar15 = pwVar15 + 1;\n              }\n            }\n          }" { (labeled_statement "LAB_00094778:\n            iVar11 = iVar18;" statement_identifier : (expression_statement "iVar11 = iVar18;" (assignment_expression "iVar11 = iVar18" identifier = identifier) ;)) (if_statement "if (chr != 0) {\n              uVar10 = cbuf[1];\n              pwVar15 = cbuf;\n              while( true ) {\n                clip_addchar(&buf,chr,iVar21);\n                if (uVar10 == 0) break;\n                chr = uVar10;\n                uVar10 = pwVar15[2];\n                pwVar15 = pwVar15 + 1;\n              }\n            }" if (parenthesized_expression "(chr != 0)" ( (binary_expression "chr != 0" identifier != number_literal) )) (compound_statement "{\n              uVar10 = cbuf[1];\n              pwVar15 = cbuf;\n              while( true ) {\n                clip_addchar(&buf,chr,iVar21);\n                if (uVar10 == 0) break;\n                chr = uVar10;\n                uVar10 = pwVar15[2];\n                pwVar15 = pwVar15 + 1;\n              }\n            }" { (expression_statement "uVar10 = cbuf[1];" (assignment_expression "uVar10 = cbuf[1]" identifier = (subscript_expression "cbuf[1]" identifier [ number_literal ])) ;) (expression_statement "pwVar15 = cbuf;" (assignment_expression "pwVar15 = cbuf" identifier = identifier) ;) (while_statement "while( true ) {\n                clip_addchar(&buf,chr,iVar21);\n                if (uVar10 == 0) break;\n                chr = uVar10;\n                uVar10 = pwVar15[2];\n                pwVar15 = pwVar15 + 1;\n              }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n                clip_addchar(&buf,chr,iVar21);\n                if (uVar10 == 0) break;\n                chr = uVar10;\n                uVar10 = pwVar15[2];\n                pwVar15 = pwVar15 + 1;\n              }" { (expression_statement "clip_addchar(&buf,chr,iVar21);" (call_expression "clip_addchar(&buf,chr,iVar21)" identifier (argument_list "(&buf,chr,iVar21)" ( (pointer_expression "&buf" & identifier) , identifier , identifier ))) ;) (if_statement "if (uVar10 == 0) break;" if (parenthesized_expression "(uVar10 == 0)" ( (binary_expression "uVar10 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "chr = uVar10;" (assignment_expression "chr = uVar10" identifier = identifier) ;) (expression_statement "uVar10 = pwVar15[2];" (assignment_expression "uVar10 = pwVar15[2]" identifier = (subscript_expression "pwVar15[2]" identifier [ number_literal ])) ;) (expression_statement "pwVar15 = pwVar15 + 1;" (assignment_expression "pwVar15 = pwVar15 + 1" identifier = (binary_expression "pwVar15 + 1" identifier + number_literal)) ;) })) })) }))) (expression_statement "iVar21 = *(int *)(puVar6 + 10);" (assignment_expression "iVar21 = *(int *)(puVar6 + 10)" identifier = (pointer_expression "*(int *)(puVar6 + 10)" * (cast_expression "(int *)(puVar6 + 10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar6 + 10)" ( (binary_expression "puVar6 + 10" identifier + number_literal) ))))) ;) (expression_statement "iVar19 = *(int *)(iVar21 + iVar19 + 8);" (assignment_expression "iVar19 = *(int *)(iVar21 + iVar19 + 8)" identifier = (pointer_expression "*(int *)(iVar21 + iVar19 + 8)" * (cast_expression "(int *)(iVar21 + iVar19 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar21 + iVar19 + 8)" ( (binary_expression "iVar21 + iVar19 + 8" (binary_expression "iVar21 + iVar19" identifier + identifier) + number_literal) ))))) ;) (expression_statement "iVar22 = iVar22 + iVar19;" (assignment_expression "iVar22 = iVar22 + iVar19" identifier = (binary_expression "iVar22 + iVar19" identifier + identifier)) ;) (if_statement "if (iVar19 == 0) goto joined_r0x00094680;" if (parenthesized_expression "(iVar19 == 0)" ( (binary_expression "iVar19 == 0" identifier == number_literal) )) (goto_statement "goto joined_r0x00094680;" goto statement_identifier ;)) (expression_statement "iVar19 = iVar22 * 0xc;" (assignment_expression "iVar19 = iVar22 * 0xc" identifier = (binary_expression "iVar22 * 0xc" identifier * number_literal)) ;) (expression_statement "chr = *(uint *)(iVar21 + iVar22 * 0xc);" (assignment_expression "chr = *(uint *)(iVar21 + iVar22 * 0xc)" identifier = (pointer_expression "*(uint *)(iVar21 + iVar22 * 0xc)" * (cast_expression "(uint *)(iVar21 + iVar22 * 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar21 + iVar22 * 0xc)" ( (binary_expression "iVar21 + iVar22 * 0xc" identifier + (binary_expression "iVar22 * 0xc" identifier * number_literal)) ))))) ;) (expression_statement "iVar21 = *(int *)(iVar21 + iVar19 + 4);" (assignment_expression "iVar21 = *(int *)(iVar21 + iVar19 + 4)" identifier = (pointer_expression "*(int *)(iVar21 + iVar19 + 4)" * (cast_expression "(int *)(iVar21 + iVar19 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar21 + iVar19 + 4)" ( (binary_expression "iVar21 + iVar19 + 4" (binary_expression "iVar21 + iVar19" identifier + identifier) + number_literal) ))))) ;) (expression_statement "uVar12 = chr & 0xffffff00;" (assignment_expression "uVar12 = chr & 0xffffff00" identifier = (binary_expression "chr & 0xffffff00" identifier & number_literal)) ;) (expression_statement "uVar10 = chr & 0xff;" (assignment_expression "uVar10 = chr & 0xff" identifier = (binary_expression "chr & 0xff" identifier & number_literal)) ;) }) while (parenthesized_expression "(uVar12 != 0xd900)" ( (binary_expression "uVar12 != 0xd900" identifier != number_literal) )) ;) (labeled_statement "LAB_00094804:\n        puVar13 = term->ucsdata;" statement_identifier : (expression_statement "puVar13 = term->ucsdata;" (assignment_expression "puVar13 = term->ucsdata" identifier = (field_expression "term->ucsdata" identifier -> field_identifier)) ;)) (if_statement "if (term->rawcnp == 0) {\n          chr = puVar13->unitab_xterm[uVar10];\n          uVar12 = chr & 0xffffff00;\n          uVar10 = chr & 0xff;\n        }\n        else {\nLAB_0009491c:\n          chr = puVar13->unitab_line[uVar10];\n          uVar12 = chr & 0xffffff00;\n          uVar10 = chr & 0xff;\n        }" if (parenthesized_expression "(term->rawcnp == 0)" ( (binary_expression "term->rawcnp == 0" (field_expression "term->rawcnp" identifier -> field_identifier) == number_literal) )) (compound_statement "{\n          chr = puVar13->unitab_xterm[uVar10];\n          uVar12 = chr & 0xffffff00;\n          uVar10 = chr & 0xff;\n        }" { (expression_statement "chr = puVar13->unitab_xterm[uVar10];" (assignment_expression "chr = puVar13->unitab_xterm[uVar10]" identifier = (subscript_expression "puVar13->unitab_xterm[uVar10]" (field_expression "puVar13->unitab_xterm" identifier -> field_identifier) [ identifier ])) ;) (expression_statement "uVar12 = chr & 0xffffff00;" (assignment_expression "uVar12 = chr & 0xffffff00" identifier = (binary_expression "chr & 0xffffff00" identifier & number_literal)) ;) (expression_statement "uVar10 = chr & 0xff;" (assignment_expression "uVar10 = chr & 0xff" identifier = (binary_expression "chr & 0xff" identifier & number_literal)) ;) }) (else_clause "else {\nLAB_0009491c:\n          chr = puVar13->unitab_line[uVar10];\n          uVar12 = chr & 0xffffff00;\n          uVar10 = chr & 0xff;\n        }" else (compound_statement "{\nLAB_0009491c:\n          chr = puVar13->unitab_line[uVar10];\n          uVar12 = chr & 0xffffff00;\n          uVar10 = chr & 0xff;\n        }" { (labeled_statement "LAB_0009491c:\n          chr = puVar13->unitab_line[uVar10];" statement_identifier : (expression_statement "chr = puVar13->unitab_line[uVar10];" (assignment_expression "chr = puVar13->unitab_line[uVar10]" identifier = (subscript_expression "puVar13->unitab_line[uVar10]" (field_expression "puVar13->unitab_line" identifier -> field_identifier) [ identifier ])) ;)) (expression_statement "uVar12 = chr & 0xffffff00;" (assignment_expression "uVar12 = chr & 0xffffff00" identifier = (binary_expression "chr & 0xffffff00" identifier & number_literal)) ;) (expression_statement "uVar10 = chr & 0xff;" (assignment_expression "uVar10 = chr & 0xff" identifier = (binary_expression "chr & 0xff" identifier & number_literal)) ;) }))) (goto_statement "goto joined_r0x00094728;" goto statement_identifier ;) })) (expression_statement "iVar11 = iVar22 + 1;" (assignment_expression "iVar11 = iVar22 + 1" identifier = (binary_expression "iVar22 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "( true )" ( true )) ;)) })) (expression_statement "pwVar15 = buf.textbuf;" (assignment_expression "pwVar15 = buf.textbuf" identifier = (field_expression "buf.textbuf" identifier . field_identifier)) ;) (expression_statement "(**(code **)(in_t9 + 0x7d678))(term->frontend,buf.textbuf,buf.attrbuf,buf.bufpos,bottom.y);" (call_expression "(**(code **)(in_t9 + 0x7d678))(term->frontend,buf.textbuf,buf.attrbuf,buf.bufpos,bottom.y)" (parenthesized_expression "(**(code **)(in_t9 + 0x7d678))" ( (pointer_expression "**(code **)(in_t9 + 0x7d678)" * (pointer_expression "*(code **)(in_t9 + 0x7d678)" * (cast_expression "(code **)(in_t9 + 0x7d678)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(in_t9 + 0x7d678)" ( (binary_expression "in_t9 + 0x7d678" identifier + number_literal) ))))) )) (argument_list "(term->frontend,buf.textbuf,buf.attrbuf,buf.bufpos,bottom.y)" ( (field_expression "term->frontend" identifier -> field_identifier) , (field_expression "buf.textbuf" identifier . field_identifier) , (field_expression "buf.attrbuf" identifier . field_identifier) , (field_expression "buf.bufpos" identifier . field_identifier) , (field_expression "bottom.y" identifier . field_identifier) ))) ;) (expression_statement "(**(code **)(in_t9 + 0x7ce0c))(buf.textbuf);" (call_expression "(**(code **)(in_t9 + 0x7ce0c))(buf.textbuf)" (parenthesized_expression "(**(code **)(in_t9 + 0x7ce0c))" ( (pointer_expression "**(code **)(in_t9 + 0x7ce0c)" * (pointer_expression "*(code **)(in_t9 + 0x7ce0c)" * (cast_expression "(code **)(in_t9 + 0x7ce0c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(in_t9 + 0x7ce0c)" ( (binary_expression "in_t9 + 0x7ce0c" identifier + number_literal) ))))) )) (argument_list "(buf.textbuf)" ( (field_expression "buf.textbuf" identifier . field_identifier) ))) ;) (expression_statement "pTVar14 = (Terminal *)buf.attrbuf;" (assignment_expression "pTVar14 = (Terminal *)buf.attrbuf" identifier = (cast_expression "(Terminal *)buf.attrbuf" ( (type_descriptor "Terminal *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "buf.attrbuf" identifier . field_identifier))) ;) (expression_statement "(**(code **)(in_t9 + 0x7ce0c))();" (call_expression "(**(code **)(in_t9 + 0x7ce0c))()" (parenthesized_expression "(**(code **)(in_t9 + 0x7ce0c))" ( (pointer_expression "**(code **)(in_t9 + 0x7ce0c)" * (pointer_expression "*(code **)(in_t9 + 0x7ce0c)" * (cast_expression "(code **)(in_t9 + 0x7ce0c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(in_t9 + 0x7ce0c)" ( (binary_expression "in_t9 + 0x7ce0c" identifier + number_literal) ))))) )) (argument_list "()" ( ))) ;) (if_statement "if (iVar4 == *piVar3) {\n    return;\n  }" if (parenthesized_expression "(iVar4 == *piVar3)" ( (binary_expression "iVar4 == *piVar3" identifier == (pointer_expression "*piVar3" * identifier)) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "pcVar26 = *(code **)(in_t9 + 0x7dde4);" (assignment_expression "pcVar26 = *(code **)(in_t9 + 0x7dde4)" identifier = (pointer_expression "*(code **)(in_t9 + 0x7dde4)" * (cast_expression "(code **)(in_t9 + 0x7dde4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(in_t9 + 0x7dde4)" ( (binary_expression "in_t9 + 0x7dde4" identifier + number_literal) ))))) ;) (expression_statement "(*pcVar26)();" (call_expression "(*pcVar26)()" (parenthesized_expression "(*pcVar26)" ( (pointer_expression "*pcVar26" * identifier) )) (argument_list "()" ( ))) ;) (expression_statement "iVar20 = 1;" (assignment_expression "iVar20 = 1" identifier = number_literal) ;) (if_statement "if ((int)pwVar15 < 0) {\n    iVar20 = -1;\n    pwVar15 = (wchar_t *)-(int)pwVar15;\n  }" if (parenthesized_expression "((int)pwVar15 < 0)" ( (binary_expression "(int)pwVar15 < 0" (cast_expression "(int)pwVar15" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n    iVar20 = -1;\n    pwVar15 = (wchar_t *)-(int)pwVar15;\n  }" { (expression_statement "iVar20 = -1;" (assignment_expression "iVar20 = -1" identifier = number_literal) ;) (expression_statement "pwVar15 = (wchar_t *)-(int)pwVar15;" (assignment_expression "pwVar15 = (wchar_t *)-(int)pwVar15" identifier = (cast_expression "(wchar_t *)-(int)pwVar15" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (unary_expression "-(int)pwVar15" - (cast_expression "(int)pwVar15" ( (type_descriptor "int" primitive_type) ) identifier)))) ;) })) (expression_statement "iVar4 = pTVar14->cols;" (assignment_expression "iVar4 = pTVar14->cols" identifier = (field_expression "pTVar14->cols" identifier -> field_identifier)) ;) (expression_statement "iVar9 = (pTVar14->curs).x;" (assignment_expression "iVar9 = (pTVar14->curs).x" identifier = (field_expression "(pTVar14->curs).x" (parenthesized_expression "(pTVar14->curs)" ( (field_expression "pTVar14->curs" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "iVar11 = (pTVar14->curs).y;" (assignment_expression "iVar11 = (pTVar14->curs).y" identifier = (field_expression "(pTVar14->curs).y" (parenthesized_expression "(pTVar14->curs)" ( (field_expression "pTVar14->curs" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "iVar5 = (pTVar14->selend).y;" (assignment_expression "iVar5 = (pTVar14->selend).y" identifier = (field_expression "(pTVar14->selend).y" (parenthesized_expression "(pTVar14->selend)" ( (field_expression "pTVar14->selend" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "pwVar24 = (wchar_t *)(iVar4 - iVar9);" (assignment_expression "pwVar24 = (wchar_t *)(iVar4 - iVar9)" identifier = (cast_expression "(wchar_t *)(iVar4 - iVar9)" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 - iVar9)" ( (binary_expression "iVar4 - iVar9" identifier - identifier) )))) ;) (if_statement "if ((int)pwVar24 <= (int)pwVar15) {\n    pwVar15 = pwVar24;\n  }" if (parenthesized_expression "((int)pwVar24 <= (int)pwVar15)" ( (binary_expression "(int)pwVar24 <= (int)pwVar15" (cast_expression "(int)pwVar24" ( (type_descriptor "int" primitive_type) ) identifier) <= (cast_expression "(int)pwVar15" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n    pwVar15 = pwVar24;\n  }" { (expression_statement "pwVar15 = pwVar24;" (assignment_expression "pwVar15 = pwVar24" identifier = identifier) ;) })) (expression_statement "iVar22 = (int)pwVar24 - (int)pwVar15;" (assignment_expression "iVar22 = (int)pwVar24 - (int)pwVar15" identifier = (binary_expression "(int)pwVar24 - (int)pwVar15" (cast_expression "(int)pwVar24" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pwVar15" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (if_statement "if (((iVar11 < iVar5) || ((iVar11 == iVar5 && (iVar9 < (pTVar14->selend).x)))) &&\n     ((iVar19 = (pTVar14->selstart).y, iVar19 < iVar11 ||\n      ((iVar11 == iVar19 && ((pTVar14->selstart).x < iVar4)))))) {\n    iVar18 = iVar9 + (int)pwVar15;\n    iVar21 = iVar4;\n    if (iVar20 == 1) {\n      iVar21 = iVar4 - (int)pwVar15;\n      iVar18 = iVar9;\n    }\n    if ((iVar11 < iVar19) || ((iVar11 == iVar19 && (iVar18 <= (pTVar14->selstart).x)))) {\n      if (iVar5 < iVar11) {\n        iVar5 = (pTVar14->selend).x;\n      }\n      else if ((iVar11 != iVar5) || (iVar5 = (pTVar14->selend).x, iVar21 < iVar5))\n      goto LAB_00094e08;\n      iVar19 = iVar20 * (int)pwVar15 + (pTVar14->selstart).x;\n      iVar5 = iVar20 * (int)pwVar15 + iVar5;\n      (pTVar14->selstart).x = iVar19;\n      (pTVar14->selend).x = iVar5;\n      if (iVar19 < iVar9) goto LAB_000950ac;\n      if (iVar19 < iVar4) {\n        if (iVar9 < iVar5) {\n          if (iVar4 < iVar5) {\n            iVar11 = *(int *)(pcVar26 + 0x7c740) + 0x5830;\n            (**(code **)(pcVar26 + 0x7d398))\n                      (*(int *)(pcVar26 + 0x7c740) + 0x5a84,iVar11,0x9e0,\n                       *(int *)(pcVar26 + 0x7c740) + 0x6200);\n            goto LAB_00094ebc;\n          }\n          goto LAB_00094c48;\n        }\n        (**(code **)(pcVar26 + 0x7d398))\n                  (*(int *)(pcVar26 + 0x7c740) + 0x5a64,*(int *)(pcVar26 + 0x7c740) + 0x5830,0x9df,\n                   *(int *)(pcVar26 + 0x7c740) + 0x6200);\n      }\n      (**(code **)(pcVar26 + 0x7d398))\n                (*(int *)(pcVar26 + 0x7c740) + 0x5a44,*(int *)(pcVar26 + 0x7c740) + 0x5830,0x9de,\n                 *(int *)(pcVar26 + 0x7c740) + 0x6200);\nLAB_000950ac:\n      iVar20 = 0x9dd;\n      pcVar27 = *(code **)(pcVar26 + 0x7d398);\n      pTVar14 = (Terminal *)(*(int *)(pcVar26 + 0x7c740) + 0x5a20);\n      (*pcVar27)(pTVar14,*(int *)(pcVar26 + 0x7c740) + 0x5830,0x9dd,\n                 *(int *)(pcVar26 + 0x7c740) + 0x6200);\n      pcVar26 = *(code **)(pcVar27 + 0x7ca90);\n      pTVar14->window_update_pending = 0;\n      ctx = (Context)(*pcVar26)(pTVar14->frontend);\n      if (ctx != (Context)0x0) {\n        if (pTVar14->seen_disp_event != 0) {\n          if (pTVar14->scroll_on_disp != 0) {\n            pTVar14->disptop = 0;\n            pTVar14->seen_disp_event = 0;\n          }\n          update_sbar(pTVar14);\n        }\n        do_paint(pTVar14,ctx,iVar20);\n        (**(code **)(pcVar27 + 0x7ca94))\n                  (pTVar14->frontend,(pTVar14->curs).x,(pTVar14->curs).y - pTVar14->disptop);\n                    /* WARNING: Could not recover jumptable at 0x0009518c. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n        (**(code **)(pcVar27 + 0x7ca98))(ctx);\n        return;\n      }\n      return;\n    }\nLAB_00094e08:\n    pTVar14->selstate = ADDRTYPE_UNSPEC;\n    (pTVar14->selend).y = 0;\n    (pTVar14->selend).x = 0;\n    (pTVar14->selstart).y = 0;\n    (pTVar14->selstart).x = 0;\n  }" if (parenthesized_expression "(((iVar11 < iVar5) || ((iVar11 == iVar5 && (iVar9 < (pTVar14->selend).x)))) &&\n     ((iVar19 = (pTVar14->selstart).y, iVar19 < iVar11 ||\n      ((iVar11 == iVar19 && ((pTVar14->selstart).x < iVar4))))))" ( (binary_expression "((iVar11 < iVar5) || ((iVar11 == iVar5 && (iVar9 < (pTVar14->selend).x)))) &&\n     ((iVar19 = (pTVar14->selstart).y, iVar19 < iVar11 ||\n      ((iVar11 == iVar19 && ((pTVar14->selstart).x < iVar4)))))" (parenthesized_expression "((iVar11 < iVar5) || ((iVar11 == iVar5 && (iVar9 < (pTVar14->selend).x))))" ( (binary_expression "(iVar11 < iVar5) || ((iVar11 == iVar5 && (iVar9 < (pTVar14->selend).x)))" (parenthesized_expression "(iVar11 < iVar5)" ( (binary_expression "iVar11 < iVar5" identifier < identifier) )) || (parenthesized_expression "((iVar11 == iVar5 && (iVar9 < (pTVar14->selend).x)))" ( (parenthesized_expression "(iVar11 == iVar5 && (iVar9 < (pTVar14->selend).x))" ( (binary_expression "iVar11 == iVar5 && (iVar9 < (pTVar14->selend).x)" (binary_expression "iVar11 == iVar5" identifier == identifier) && (parenthesized_expression "(iVar9 < (pTVar14->selend).x)" ( (binary_expression "iVar9 < (pTVar14->selend).x" identifier < (field_expression "(pTVar14->selend).x" (parenthesized_expression "(pTVar14->selend)" ( (field_expression "pTVar14->selend" identifier -> field_identifier) )) . field_identifier)) ))) )) ))) )) && (parenthesized_expression "((iVar19 = (pTVar14->selstart).y, iVar19 < iVar11 ||\n      ((iVar11 == iVar19 && ((pTVar14->selstart).x < iVar4)))))" ( (parenthesized_expression "(iVar19 = (pTVar14->selstart).y, iVar19 < iVar11 ||\n      ((iVar11 == iVar19 && ((pTVar14->selstart).x < iVar4))))" ( (comma_expression "iVar19 = (pTVar14->selstart).y, iVar19 < iVar11 ||\n      ((iVar11 == iVar19 && ((pTVar14->selstart).x < iVar4)))" (assignment_expression "iVar19 = (pTVar14->selstart).y" identifier = (field_expression "(pTVar14->selstart).y" (parenthesized_expression "(pTVar14->selstart)" ( (field_expression "pTVar14->selstart" identifier -> field_identifier) )) . field_identifier)) , (binary_expression "iVar19 < iVar11 ||\n      ((iVar11 == iVar19 && ((pTVar14->selstart).x < iVar4)))" (binary_expression "iVar19 < iVar11" identifier < identifier) || (parenthesized_expression "((iVar11 == iVar19 && ((pTVar14->selstart).x < iVar4)))" ( (parenthesized_expression "(iVar11 == iVar19 && ((pTVar14->selstart).x < iVar4))" ( (binary_expression "iVar11 == iVar19 && ((pTVar14->selstart).x < iVar4)" (binary_expression "iVar11 == iVar19" identifier == identifier) && (parenthesized_expression "((pTVar14->selstart).x < iVar4)" ( (binary_expression "(pTVar14->selstart).x < iVar4" (field_expression "(pTVar14->selstart).x" (parenthesized_expression "(pTVar14->selstart)" ( (field_expression "pTVar14->selstart" identifier -> field_identifier) )) . field_identifier) < identifier) ))) )) )))) )) ))) )) (compound_statement "{\n    iVar18 = iVar9 + (int)pwVar15;\n    iVar21 = iVar4;\n    if (iVar20 == 1) {\n      iVar21 = iVar4 - (int)pwVar15;\n      iVar18 = iVar9;\n    }\n    if ((iVar11 < iVar19) || ((iVar11 == iVar19 && (iVar18 <= (pTVar14->selstart).x)))) {\n      if (iVar5 < iVar11) {\n        iVar5 = (pTVar14->selend).x;\n      }\n      else if ((iVar11 != iVar5) || (iVar5 = (pTVar14->selend).x, iVar21 < iVar5))\n      goto LAB_00094e08;\n      iVar19 = iVar20 * (int)pwVar15 + (pTVar14->selstart).x;\n      iVar5 = iVar20 * (int)pwVar15 + iVar5;\n      (pTVar14->selstart).x = iVar19;\n      (pTVar14->selend).x = iVar5;\n      if (iVar19 < iVar9) goto LAB_000950ac;\n      if (iVar19 < iVar4) {\n        if (iVar9 < iVar5) {\n          if (iVar4 < iVar5) {\n            iVar11 = *(int *)(pcVar26 + 0x7c740) + 0x5830;\n            (**(code **)(pcVar26 + 0x7d398))\n                      (*(int *)(pcVar26 + 0x7c740) + 0x5a84,iVar11,0x9e0,\n                       *(int *)(pcVar26 + 0x7c740) + 0x6200);\n            goto LAB_00094ebc;\n          }\n          goto LAB_00094c48;\n        }\n        (**(code **)(pcVar26 + 0x7d398))\n                  (*(int *)(pcVar26 + 0x7c740) + 0x5a64,*(int *)(pcVar26 + 0x7c740) + 0x5830,0x9df,\n                   *(int *)(pcVar26 + 0x7c740) + 0x6200);\n      }\n      (**(code **)(pcVar26 + 0x7d398))\n                (*(int *)(pcVar26 + 0x7c740) + 0x5a44,*(int *)(pcVar26 + 0x7c740) + 0x5830,0x9de,\n                 *(int *)(pcVar26 + 0x7c740) + 0x6200);\nLAB_000950ac:\n      iVar20 = 0x9dd;\n      pcVar27 = *(code **)(pcVar26 + 0x7d398);\n      pTVar14 = (Terminal *)(*(int *)(pcVar26 + 0x7c740) + 0x5a20);\n      (*pcVar27)(pTVar14,*(int *)(pcVar26 + 0x7c740) + 0x5830,0x9dd,\n                 *(int *)(pcVar26 + 0x7c740) + 0x6200);\n      pcVar26 = *(code **)(pcVar27 + 0x7ca90);\n      pTVar14->window_update_pending = 0;\n      ctx = (Context)(*pcVar26)(pTVar14->frontend);\n      if (ctx != (Context)0x0) {\n        if (pTVar14->seen_disp_event != 0) {\n          if (pTVar14->scroll_on_disp != 0) {\n            pTVar14->disptop = 0;\n            pTVar14->seen_disp_event = 0;\n          }\n          update_sbar(pTVar14);\n        }\n        do_paint(pTVar14,ctx,iVar20);\n        (**(code **)(pcVar27 + 0x7ca94))\n                  (pTVar14->frontend,(pTVar14->curs).x,(pTVar14->curs).y - pTVar14->disptop);\n                    /* WARNING: Could not recover jumptable at 0x0009518c. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n        (**(code **)(pcVar27 + 0x7ca98))(ctx);\n        return;\n      }\n      return;\n    }\nLAB_00094e08:\n    pTVar14->selstate = ADDRTYPE_UNSPEC;\n    (pTVar14->selend).y = 0;\n    (pTVar14->selend).x = 0;\n    (pTVar14->selstart).y = 0;\n    (pTVar14->selstart).x = 0;\n  }" { (expression_statement "iVar18 = iVar9 + (int)pwVar15;" (assignment_expression "iVar18 = iVar9 + (int)pwVar15" identifier = (binary_expression "iVar9 + (int)pwVar15" identifier + (cast_expression "(int)pwVar15" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "iVar21 = iVar4;" (assignment_expression "iVar21 = iVar4" identifier = identifier) ;) (if_statement "if (iVar20 == 1) {\n      iVar21 = iVar4 - (int)pwVar15;\n      iVar18 = iVar9;\n    }" if (parenthesized_expression "(iVar20 == 1)" ( (binary_expression "iVar20 == 1" identifier == number_literal) )) (compound_statement "{\n      iVar21 = iVar4 - (int)pwVar15;\n      iVar18 = iVar9;\n    }" { (expression_statement "iVar21 = iVar4 - (int)pwVar15;" (assignment_expression "iVar21 = iVar4 - (int)pwVar15" identifier = (binary_expression "iVar4 - (int)pwVar15" identifier - (cast_expression "(int)pwVar15" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "iVar18 = iVar9;" (assignment_expression "iVar18 = iVar9" identifier = identifier) ;) })) (if_statement "if ((iVar11 < iVar19) || ((iVar11 == iVar19 && (iVar18 <= (pTVar14->selstart).x)))) {\n      if (iVar5 < iVar11) {\n        iVar5 = (pTVar14->selend).x;\n      }\n      else if ((iVar11 != iVar5) || (iVar5 = (pTVar14->selend).x, iVar21 < iVar5))\n      goto LAB_00094e08;\n      iVar19 = iVar20 * (int)pwVar15 + (pTVar14->selstart).x;\n      iVar5 = iVar20 * (int)pwVar15 + iVar5;\n      (pTVar14->selstart).x = iVar19;\n      (pTVar14->selend).x = iVar5;\n      if (iVar19 < iVar9) goto LAB_000950ac;\n      if (iVar19 < iVar4) {\n        if (iVar9 < iVar5) {\n          if (iVar4 < iVar5) {\n            iVar11 = *(int *)(pcVar26 + 0x7c740) + 0x5830;\n            (**(code **)(pcVar26 + 0x7d398))\n                      (*(int *)(pcVar26 + 0x7c740) + 0x5a84,iVar11,0x9e0,\n                       *(int *)(pcVar26 + 0x7c740) + 0x6200);\n            goto LAB_00094ebc;\n          }\n          goto LAB_00094c48;\n        }\n        (**(code **)(pcVar26 + 0x7d398))\n                  (*(int *)(pcVar26 + 0x7c740) + 0x5a64,*(int *)(pcVar26 + 0x7c740) + 0x5830,0x9df,\n                   *(int *)(pcVar26 + 0x7c740) + 0x6200);\n      }\n      (**(code **)(pcVar26 + 0x7d398))\n                (*(int *)(pcVar26 + 0x7c740) + 0x5a44,*(int *)(pcVar26 + 0x7c740) + 0x5830,0x9de,\n                 *(int *)(pcVar26 + 0x7c740) + 0x6200);\nLAB_000950ac:\n      iVar20 = 0x9dd;\n      pcVar27 = *(code **)(pcVar26 + 0x7d398);\n      pTVar14 = (Terminal *)(*(int *)(pcVar26 + 0x7c740) + 0x5a20);\n      (*pcVar27)(pTVar14,*(int *)(pcVar26 + 0x7c740) + 0x5830,0x9dd,\n                 *(int *)(pcVar26 + 0x7c740) + 0x6200);\n      pcVar26 = *(code **)(pcVar27 + 0x7ca90);\n      pTVar14->window_update_pending = 0;\n      ctx = (Context)(*pcVar26)(pTVar14->frontend);\n      if (ctx != (Context)0x0) {\n        if (pTVar14->seen_disp_event != 0) {\n          if (pTVar14->scroll_on_disp != 0) {\n            pTVar14->disptop = 0;\n            pTVar14->seen_disp_event = 0;\n          }\n          update_sbar(pTVar14);\n        }\n        do_paint(pTVar14,ctx,iVar20);\n        (**(code **)(pcVar27 + 0x7ca94))\n                  (pTVar14->frontend,(pTVar14->curs).x,(pTVar14->curs).y - pTVar14->disptop);\n                    /* WARNING: Could not recover jumptable at 0x0009518c. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n        (**(code **)(pcVar27 + 0x7ca98))(ctx);\n        return;\n      }\n      return;\n    }" if (parenthesized_expression "((iVar11 < iVar19) || ((iVar11 == iVar19 && (iVar18 <= (pTVar14->selstart).x))))" ( (binary_expression "(iVar11 < iVar19) || ((iVar11 == iVar19 && (iVar18 <= (pTVar14->selstart).x)))" (parenthesized_expression "(iVar11 < iVar19)" ( (binary_expression "iVar11 < iVar19" identifier < identifier) )) || (parenthesized_expression "((iVar11 == iVar19 && (iVar18 <= (pTVar14->selstart).x)))" ( (parenthesized_expression "(iVar11 == iVar19 && (iVar18 <= (pTVar14->selstart).x))" ( (binary_expression "iVar11 == iVar19 && (iVar18 <= (pTVar14->selstart).x)" (binary_expression "iVar11 == iVar19" identifier == identifier) && (parenthesized_expression "(iVar18 <= (pTVar14->selstart).x)" ( (binary_expression "iVar18 <= (pTVar14->selstart).x" identifier <= (field_expression "(pTVar14->selstart).x" (parenthesized_expression "(pTVar14->selstart)" ( (field_expression "pTVar14->selstart" identifier -> field_identifier) )) . field_identifier)) ))) )) ))) )) (compound_statement "{\n      if (iVar5 < iVar11) {\n        iVar5 = (pTVar14->selend).x;\n      }\n      else if ((iVar11 != iVar5) || (iVar5 = (pTVar14->selend).x, iVar21 < iVar5))\n      goto LAB_00094e08;\n      iVar19 = iVar20 * (int)pwVar15 + (pTVar14->selstart).x;\n      iVar5 = iVar20 * (int)pwVar15 + iVar5;\n      (pTVar14->selstart).x = iVar19;\n      (pTVar14->selend).x = iVar5;\n      if (iVar19 < iVar9) goto LAB_000950ac;\n      if (iVar19 < iVar4) {\n        if (iVar9 < iVar5) {\n          if (iVar4 < iVar5) {\n            iVar11 = *(int *)(pcVar26 + 0x7c740) + 0x5830;\n            (**(code **)(pcVar26 + 0x7d398))\n                      (*(int *)(pcVar26 + 0x7c740) + 0x5a84,iVar11,0x9e0,\n                       *(int *)(pcVar26 + 0x7c740) + 0x6200);\n            goto LAB_00094ebc;\n          }\n          goto LAB_00094c48;\n        }\n        (**(code **)(pcVar26 + 0x7d398))\n                  (*(int *)(pcVar26 + 0x7c740) + 0x5a64,*(int *)(pcVar26 + 0x7c740) + 0x5830,0x9df,\n                   *(int *)(pcVar26 + 0x7c740) + 0x6200);\n      }\n      (**(code **)(pcVar26 + 0x7d398))\n                (*(int *)(pcVar26 + 0x7c740) + 0x5a44,*(int *)(pcVar26 + 0x7c740) + 0x5830,0x9de,\n                 *(int *)(pcVar26 + 0x7c740) + 0x6200);\nLAB_000950ac:\n      iVar20 = 0x9dd;\n      pcVar27 = *(code **)(pcVar26 + 0x7d398);\n      pTVar14 = (Terminal *)(*(int *)(pcVar26 + 0x7c740) + 0x5a20);\n      (*pcVar27)(pTVar14,*(int *)(pcVar26 + 0x7c740) + 0x5830,0x9dd,\n                 *(int *)(pcVar26 + 0x7c740) + 0x6200);\n      pcVar26 = *(code **)(pcVar27 + 0x7ca90);\n      pTVar14->window_update_pending = 0;\n      ctx = (Context)(*pcVar26)(pTVar14->frontend);\n      if (ctx != (Context)0x0) {\n        if (pTVar14->seen_disp_event != 0) {\n          if (pTVar14->scroll_on_disp != 0) {\n            pTVar14->disptop = 0;\n            pTVar14->seen_disp_event = 0;\n          }\n          update_sbar(pTVar14);\n        }\n        do_paint(pTVar14,ctx,iVar20);\n        (**(code **)(pcVar27 + 0x7ca94))\n                  (pTVar14->frontend,(pTVar14->curs).x,(pTVar14->curs).y - pTVar14->disptop);\n                    /* WARNING: Could not recover jumptable at 0x0009518c. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n        (**(code **)(pcVar27 + 0x7ca98))(ctx);\n        return;\n      }\n      return;\n    }" { (if_statement "if (iVar5 < iVar11) {\n        iVar5 = (pTVar14->selend).x;\n      }\n      else if ((iVar11 != iVar5) || (iVar5 = (pTVar14->selend).x, iVar21 < iVar5))\n      goto LAB_00094e08;" if (parenthesized_expression "(iVar5 < iVar11)" ( (binary_expression "iVar5 < iVar11" identifier < identifier) )) (compound_statement "{\n        iVar5 = (pTVar14->selend).x;\n      }" { (expression_statement "iVar5 = (pTVar14->selend).x;" (assignment_expression "iVar5 = (pTVar14->selend).x" identifier = (field_expression "(pTVar14->selend).x" (parenthesized_expression "(pTVar14->selend)" ( (field_expression "pTVar14->selend" identifier -> field_identifier) )) . field_identifier)) ;) }) (else_clause "else if ((iVar11 != iVar5) || (iVar5 = (pTVar14->selend).x, iVar21 < iVar5))\n      goto LAB_00094e08;" else (if_statement "if ((iVar11 != iVar5) || (iVar5 = (pTVar14->selend).x, iVar21 < iVar5))\n      goto LAB_00094e08;" if (parenthesized_expression "((iVar11 != iVar5) || (iVar5 = (pTVar14->selend).x, iVar21 < iVar5))" ( (binary_expression "(iVar11 != iVar5) || (iVar5 = (pTVar14->selend).x, iVar21 < iVar5)" (parenthesized_expression "(iVar11 != iVar5)" ( (binary_expression "iVar11 != iVar5" identifier != identifier) )) || (parenthesized_expression "(iVar5 = (pTVar14->selend).x, iVar21 < iVar5)" ( (comma_expression "iVar5 = (pTVar14->selend).x, iVar21 < iVar5" (assignment_expression "iVar5 = (pTVar14->selend).x" identifier = (field_expression "(pTVar14->selend).x" (parenthesized_expression "(pTVar14->selend)" ( (field_expression "pTVar14->selend" identifier -> field_identifier) )) . field_identifier)) , (binary_expression "iVar21 < iVar5" identifier < identifier)) ))) )) (goto_statement "goto LAB_00094e08;" goto statement_identifier ;)))) (expression_statement "iVar19 = iVar20 * (int)pwVar15 + (pTVar14->selstart).x;" (assignment_expression "iVar19 = iVar20 * (int)pwVar15 + (pTVar14->selstart).x" identifier = (binary_expression "iVar20 * (int)pwVar15 + (pTVar14->selstart).x" (binary_expression "iVar20 * (int)pwVar15" identifier * (cast_expression "(int)pwVar15" ( (type_descriptor "int" primitive_type) ) identifier)) + (field_expression "(pTVar14->selstart).x" (parenthesized_expression "(pTVar14->selstart)" ( (field_expression "pTVar14->selstart" identifier -> field_identifier) )) . field_identifier))) ;) (expression_statement "iVar5 = iVar20 * (int)pwVar15 + iVar5;" (assignment_expression "iVar5 = iVar20 * (int)pwVar15 + iVar5" identifier = (binary_expression "iVar20 * (int)pwVar15 + iVar5" (binary_expression "iVar20 * (int)pwVar15" identifier * (cast_expression "(int)pwVar15" ( (type_descriptor "int" primitive_type) ) identifier)) + identifier)) ;) (expression_statement "(pTVar14->selstart).x = iVar19;" (assignment_expression "(pTVar14->selstart).x = iVar19" (field_expression "(pTVar14->selstart).x" (parenthesized_expression "(pTVar14->selstart)" ( (field_expression "pTVar14->selstart" identifier -> field_identifier) )) . field_identifier) = identifier) ;) (expression_statement "(pTVar14->selend).x = iVar5;" (assignment_expression "(pTVar14->selend).x = iVar5" (field_expression "(pTVar14->selend).x" (parenthesized_expression "(pTVar14->selend)" ( (field_expression "pTVar14->selend" identifier -> field_identifier) )) . field_identifier) = identifier) ;) (if_statement "if (iVar19 < iVar9) goto LAB_000950ac;" if (parenthesized_expression "(iVar19 < iVar9)" ( (binary_expression "iVar19 < iVar9" identifier < identifier) )) (goto_statement "goto LAB_000950ac;" goto statement_identifier ;)) (if_statement "if (iVar19 < iVar4) {\n        if (iVar9 < iVar5) {\n          if (iVar4 < iVar5) {\n            iVar11 = *(int *)(pcVar26 + 0x7c740) + 0x5830;\n            (**(code **)(pcVar26 + 0x7d398))\n                      (*(int *)(pcVar26 + 0x7c740) + 0x5a84,iVar11,0x9e0,\n                       *(int *)(pcVar26 + 0x7c740) + 0x6200);\n            goto LAB_00094ebc;\n          }\n          goto LAB_00094c48;\n        }\n        (**(code **)(pcVar26 + 0x7d398))\n                  (*(int *)(pcVar26 + 0x7c740) + 0x5a64,*(int *)(pcVar26 + 0x7c740) + 0x5830,0x9df,\n                   *(int *)(pcVar26 + 0x7c740) + 0x6200);\n      }" if (parenthesized_expression "(iVar19 < iVar4)" ( (binary_expression "iVar19 < iVar4" identifier < identifier) )) (compound_statement "{\n        if (iVar9 < iVar5) {\n          if (iVar4 < iVar5) {\n            iVar11 = *(int *)(pcVar26 + 0x7c740) + 0x5830;\n            (**(code **)(pcVar26 + 0x7d398))\n                      (*(int *)(pcVar26 + 0x7c740) + 0x5a84,iVar11,0x9e0,\n                       *(int *)(pcVar26 + 0x7c740) + 0x6200);\n            goto LAB_00094ebc;\n          }\n          goto LAB_00094c48;\n        }\n        (**(code **)(pcVar26 + 0x7d398))\n                  (*(int *)(pcVar26 + 0x7c740) + 0x5a64,*(int *)(pcVar26 + 0x7c740) + 0x5830,0x9df,\n                   *(int *)(pcVar26 + 0x7c740) + 0x6200);\n      }" { (if_statement "if (iVar9 < iVar5) {\n          if (iVar4 < iVar5) {\n            iVar11 = *(int *)(pcVar26 + 0x7c740) + 0x5830;\n            (**(code **)(pcVar26 + 0x7d398))\n                      (*(int *)(pcVar26 + 0x7c740) + 0x5a84,iVar11,0x9e0,\n                       *(int *)(pcVar26 + 0x7c740) + 0x6200);\n            goto LAB_00094ebc;\n          }\n          goto LAB_00094c48;\n        }" if (parenthesized_expression "(iVar9 < iVar5)" ( (binary_expression "iVar9 < iVar5" identifier < identifier) )) (compound_statement "{\n          if (iVar4 < iVar5) {\n            iVar11 = *(int *)(pcVar26 + 0x7c740) + 0x5830;\n            (**(code **)(pcVar26 + 0x7d398))\n                      (*(int *)(pcVar26 + 0x7c740) + 0x5a84,iVar11,0x9e0,\n                       *(int *)(pcVar26 + 0x7c740) + 0x6200);\n            goto LAB_00094ebc;\n          }\n          goto LAB_00094c48;\n        }" { (if_statement "if (iVar4 < iVar5) {\n            iVar11 = *(int *)(pcVar26 + 0x7c740) + 0x5830;\n            (**(code **)(pcVar26 + 0x7d398))\n                      (*(int *)(pcVar26 + 0x7c740) + 0x5a84,iVar11,0x9e0,\n                       *(int *)(pcVar26 + 0x7c740) + 0x6200);\n            goto LAB_00094ebc;\n          }" if (parenthesized_expression "(iVar4 < iVar5)" ( (binary_expression "iVar4 < iVar5" identifier < identifier) )) (compound_statement "{\n            iVar11 = *(int *)(pcVar26 + 0x7c740) + 0x5830;\n            (**(code **)(pcVar26 + 0x7d398))\n                      (*(int *)(pcVar26 + 0x7c740) + 0x5a84,iVar11,0x9e0,\n                       *(int *)(pcVar26 + 0x7c740) + 0x6200);\n            goto LAB_00094ebc;\n          }" { (expression_statement "iVar11 = *(int *)(pcVar26 + 0x7c740) + 0x5830;" (assignment_expression "iVar11 = *(int *)(pcVar26 + 0x7c740) + 0x5830" identifier = (binary_expression "*(int *)(pcVar26 + 0x7c740) + 0x5830" (pointer_expression "*(int *)(pcVar26 + 0x7c740)" * (cast_expression "(int *)(pcVar26 + 0x7c740)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar26 + 0x7c740)" ( (binary_expression "pcVar26 + 0x7c740" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "(**(code **)(pcVar26 + 0x7d398))\n                      (*(int *)(pcVar26 + 0x7c740) + 0x5a84,iVar11,0x9e0,\n                       *(int *)(pcVar26 + 0x7c740) + 0x6200);" (call_expression "(**(code **)(pcVar26 + 0x7d398))\n                      (*(int *)(pcVar26 + 0x7c740) + 0x5a84,iVar11,0x9e0,\n                       *(int *)(pcVar26 + 0x7c740) + 0x6200)" (parenthesized_expression "(**(code **)(pcVar26 + 0x7d398))" ( (pointer_expression "**(code **)(pcVar26 + 0x7d398)" * (pointer_expression "*(code **)(pcVar26 + 0x7d398)" * (cast_expression "(code **)(pcVar26 + 0x7d398)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar26 + 0x7d398)" ( (binary_expression "pcVar26 + 0x7d398" identifier + number_literal) ))))) )) (argument_list "(*(int *)(pcVar26 + 0x7c740) + 0x5a84,iVar11,0x9e0,\n                       *(int *)(pcVar26 + 0x7c740) + 0x6200)" ( (binary_expression "*(int *)(pcVar26 + 0x7c740) + 0x5a84" (pointer_expression "*(int *)(pcVar26 + 0x7c740)" * (cast_expression "(int *)(pcVar26 + 0x7c740)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar26 + 0x7c740)" ( (binary_expression "pcVar26 + 0x7c740" identifier + number_literal) )))) + number_literal) , identifier , number_literal , (binary_expression "*(int *)(pcVar26 + 0x7c740) + 0x6200" (pointer_expression "*(int *)(pcVar26 + 0x7c740)" * (cast_expression "(int *)(pcVar26 + 0x7c740)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar26 + 0x7c740)" ( (binary_expression "pcVar26 + 0x7c740" identifier + number_literal) )))) + number_literal) ))) ;) (goto_statement "goto LAB_00094ebc;" goto statement_identifier ;) })) (goto_statement "goto LAB_00094c48;" goto statement_identifier ;) })) (expression_statement "(**(code **)(pcVar26 + 0x7d398))\n                  (*(int *)(pcVar26 + 0x7c740) + 0x5a64,*(int *)(pcVar26 + 0x7c740) + 0x5830,0x9df,\n                   *(int *)(pcVar26 + 0x7c740) + 0x6200);" (call_expression "(**(code **)(pcVar26 + 0x7d398))\n                  (*(int *)(pcVar26 + 0x7c740) + 0x5a64,*(int *)(pcVar26 + 0x7c740) + 0x5830,0x9df,\n                   *(int *)(pcVar26 + 0x7c740) + 0x6200)" (parenthesized_expression "(**(code **)(pcVar26 + 0x7d398))" ( (pointer_expression "**(code **)(pcVar26 + 0x7d398)" * (pointer_expression "*(code **)(pcVar26 + 0x7d398)" * (cast_expression "(code **)(pcVar26 + 0x7d398)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar26 + 0x7d398)" ( (binary_expression "pcVar26 + 0x7d398" identifier + number_literal) ))))) )) (argument_list "(*(int *)(pcVar26 + 0x7c740) + 0x5a64,*(int *)(pcVar26 + 0x7c740) + 0x5830,0x9df,\n                   *(int *)(pcVar26 + 0x7c740) + 0x6200)" ( (binary_expression "*(int *)(pcVar26 + 0x7c740) + 0x5a64" (pointer_expression "*(int *)(pcVar26 + 0x7c740)" * (cast_expression "(int *)(pcVar26 + 0x7c740)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar26 + 0x7c740)" ( (binary_expression "pcVar26 + 0x7c740" identifier + number_literal) )))) + number_literal) , (binary_expression "*(int *)(pcVar26 + 0x7c740) + 0x5830" (pointer_expression "*(int *)(pcVar26 + 0x7c740)" * (cast_expression "(int *)(pcVar26 + 0x7c740)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar26 + 0x7c740)" ( (binary_expression "pcVar26 + 0x7c740" identifier + number_literal) )))) + number_literal) , number_literal , (binary_expression "*(int *)(pcVar26 + 0x7c740) + 0x6200" (pointer_expression "*(int *)(pcVar26 + 0x7c740)" * (cast_expression "(int *)(pcVar26 + 0x7c740)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar26 + 0x7c740)" ( (binary_expression "pcVar26 + 0x7c740" identifier + number_literal) )))) + number_literal) ))) ;) })) (expression_statement "(**(code **)(pcVar26 + 0x7d398))\n                (*(int *)(pcVar26 + 0x7c740) + 0x5a44,*(int *)(pcVar26 + 0x7c740) + 0x5830,0x9de,\n                 *(int *)(pcVar26 + 0x7c740) + 0x6200);" (call_expression "(**(code **)(pcVar26 + 0x7d398))\n                (*(int *)(pcVar26 + 0x7c740) + 0x5a44,*(int *)(pcVar26 + 0x7c740) + 0x5830,0x9de,\n                 *(int *)(pcVar26 + 0x7c740) + 0x6200)" (parenthesized_expression "(**(code **)(pcVar26 + 0x7d398))" ( (pointer_expression "**(code **)(pcVar26 + 0x7d398)" * (pointer_expression "*(code **)(pcVar26 + 0x7d398)" * (cast_expression "(code **)(pcVar26 + 0x7d398)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar26 + 0x7d398)" ( (binary_expression "pcVar26 + 0x7d398" identifier + number_literal) ))))) )) (argument_list "(*(int *)(pcVar26 + 0x7c740) + 0x5a44,*(int *)(pcVar26 + 0x7c740) + 0x5830,0x9de,\n                 *(int *)(pcVar26 + 0x7c740) + 0x6200)" ( (binary_expression "*(int *)(pcVar26 + 0x7c740) + 0x5a44" (pointer_expression "*(int *)(pcVar26 + 0x7c740)" * (cast_expression "(int *)(pcVar26 + 0x7c740)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar26 + 0x7c740)" ( (binary_expression "pcVar26 + 0x7c740" identifier + number_literal) )))) + number_literal) , (binary_expression "*(int *)(pcVar26 + 0x7c740) + 0x5830" (pointer_expression "*(int *)(pcVar26 + 0x7c740)" * (cast_expression "(int *)(pcVar26 + 0x7c740)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar26 + 0x7c740)" ( (binary_expression "pcVar26 + 0x7c740" identifier + number_literal) )))) + number_literal) , number_literal , (binary_expression "*(int *)(pcVar26 + 0x7c740) + 0x6200" (pointer_expression "*(int *)(pcVar26 + 0x7c740)" * (cast_expression "(int *)(pcVar26 + 0x7c740)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar26 + 0x7c740)" ( (binary_expression "pcVar26 + 0x7c740" identifier + number_literal) )))) + number_literal) ))) ;) (labeled_statement "LAB_000950ac:\n      iVar20 = 0x9dd;" statement_identifier : (expression_statement "iVar20 = 0x9dd;" (assignment_expression "iVar20 = 0x9dd" identifier = number_literal) ;)) (expression_statement "pcVar27 = *(code **)(pcVar26 + 0x7d398);" (assignment_expression "pcVar27 = *(code **)(pcVar26 + 0x7d398)" identifier = (pointer_expression "*(code **)(pcVar26 + 0x7d398)" * (cast_expression "(code **)(pcVar26 + 0x7d398)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar26 + 0x7d398)" ( (binary_expression "pcVar26 + 0x7d398" identifier + number_literal) ))))) ;) (expression_statement "pTVar14 = (Terminal *)(*(int *)(pcVar26 + 0x7c740) + 0x5a20);" (assignment_expression "pTVar14 = (Terminal *)(*(int *)(pcVar26 + 0x7c740) + 0x5a20)" identifier = (cast_expression "(Terminal *)(*(int *)(pcVar26 + 0x7c740) + 0x5a20)" ( (type_descriptor "Terminal *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(pcVar26 + 0x7c740) + 0x5a20)" ( (binary_expression "*(int *)(pcVar26 + 0x7c740) + 0x5a20" (pointer_expression "*(int *)(pcVar26 + 0x7c740)" * (cast_expression "(int *)(pcVar26 + 0x7c740)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar26 + 0x7c740)" ( (binary_expression "pcVar26 + 0x7c740" identifier + number_literal) )))) + number_literal) )))) ;) (expression_statement "(*pcVar27)(pTVar14,*(int *)(pcVar26 + 0x7c740) + 0x5830,0x9dd,\n                 *(int *)(pcVar26 + 0x7c740) + 0x6200);" (call_expression "(*pcVar27)(pTVar14,*(int *)(pcVar26 + 0x7c740) + 0x5830,0x9dd,\n                 *(int *)(pcVar26 + 0x7c740) + 0x6200)" (parenthesized_expression "(*pcVar27)" ( (pointer_expression "*pcVar27" * identifier) )) (argument_list "(pTVar14,*(int *)(pcVar26 + 0x7c740) + 0x5830,0x9dd,\n                 *(int *)(pcVar26 + 0x7c740) + 0x6200)" ( identifier , (binary_expression "*(int *)(pcVar26 + 0x7c740) + 0x5830" (pointer_expression "*(int *)(pcVar26 + 0x7c740)" * (cast_expression "(int *)(pcVar26 + 0x7c740)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar26 + 0x7c740)" ( (binary_expression "pcVar26 + 0x7c740" identifier + number_literal) )))) + number_literal) , number_literal , (binary_expression "*(int *)(pcVar26 + 0x7c740) + 0x6200" (pointer_expression "*(int *)(pcVar26 + 0x7c740)" * (cast_expression "(int *)(pcVar26 + 0x7c740)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar26 + 0x7c740)" ( (binary_expression "pcVar26 + 0x7c740" identifier + number_literal) )))) + number_literal) ))) ;) (expression_statement "pcVar26 = *(code **)(pcVar27 + 0x7ca90);" (assignment_expression "pcVar26 = *(code **)(pcVar27 + 0x7ca90)" identifier = (pointer_expression "*(code **)(pcVar27 + 0x7ca90)" * (cast_expression "(code **)(pcVar27 + 0x7ca90)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar27 + 0x7ca90)" ( (binary_expression "pcVar27 + 0x7ca90" identifier + number_literal) ))))) ;) (expression_statement "pTVar14->window_update_pending = 0;" (assignment_expression "pTVar14->window_update_pending = 0" (field_expression "pTVar14->window_update_pending" identifier -> field_identifier) = number_literal) ;) (expression_statement "ctx = (Context)(*pcVar26)(pTVar14->frontend);" (assignment_expression "ctx = (Context)(*pcVar26)(pTVar14->frontend)" identifier = (call_expression "(Context)(*pcVar26)(pTVar14->frontend)" (call_expression "(Context)(*pcVar26)" (parenthesized_expression "(Context)" ( identifier )) (argument_list "(*pcVar26)" ( (pointer_expression "*pcVar26" * identifier) ))) (argument_list "(pTVar14->frontend)" ( (field_expression "pTVar14->frontend" identifier -> field_identifier) )))) ;) (if_statement "if (ctx != (Context)0x0) {\n        if (pTVar14->seen_disp_event != 0) {\n          if (pTVar14->scroll_on_disp != 0) {\n            pTVar14->disptop = 0;\n            pTVar14->seen_disp_event = 0;\n          }\n          update_sbar(pTVar14);\n        }\n        do_paint(pTVar14,ctx,iVar20);\n        (**(code **)(pcVar27 + 0x7ca94))\n                  (pTVar14->frontend,(pTVar14->curs).x,(pTVar14->curs).y - pTVar14->disptop);\n                    /* WARNING: Could not recover jumptable at 0x0009518c. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n        (**(code **)(pcVar27 + 0x7ca98))(ctx);\n        return;\n      }" if (parenthesized_expression "(ctx != (Context)0x0)" ( (binary_expression "ctx != (Context)0x0" identifier != (cast_expression "(Context)0x0" ( (type_descriptor "Context" type_identifier) ) number_literal)) )) (compound_statement "{\n        if (pTVar14->seen_disp_event != 0) {\n          if (pTVar14->scroll_on_disp != 0) {\n            pTVar14->disptop = 0;\n            pTVar14->seen_disp_event = 0;\n          }\n          update_sbar(pTVar14);\n        }\n        do_paint(pTVar14,ctx,iVar20);\n        (**(code **)(pcVar27 + 0x7ca94))\n                  (pTVar14->frontend,(pTVar14->curs).x,(pTVar14->curs).y - pTVar14->disptop);\n                    /* WARNING: Could not recover jumptable at 0x0009518c. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n        (**(code **)(pcVar27 + 0x7ca98))(ctx);\n        return;\n      }" { (if_statement "if (pTVar14->seen_disp_event != 0) {\n          if (pTVar14->scroll_on_disp != 0) {\n            pTVar14->disptop = 0;\n            pTVar14->seen_disp_event = 0;\n          }\n          update_sbar(pTVar14);\n        }" if (parenthesized_expression "(pTVar14->seen_disp_event != 0)" ( (binary_expression "pTVar14->seen_disp_event != 0" (field_expression "pTVar14->seen_disp_event" identifier -> field_identifier) != number_literal) )) (compound_statement "{\n          if (pTVar14->scroll_on_disp != 0) {\n            pTVar14->disptop = 0;\n            pTVar14->seen_disp_event = 0;\n          }\n          update_sbar(pTVar14);\n        }" { (if_statement "if (pTVar14->scroll_on_disp != 0) {\n            pTVar14->disptop = 0;\n            pTVar14->seen_disp_event = 0;\n          }" if (parenthesized_expression "(pTVar14->scroll_on_disp != 0)" ( (binary_expression "pTVar14->scroll_on_disp != 0" (field_expression "pTVar14->scroll_on_disp" identifier -> field_identifier) != number_literal) )) (compound_statement "{\n            pTVar14->disptop = 0;\n            pTVar14->seen_disp_event = 0;\n          }" { (expression_statement "pTVar14->disptop = 0;" (assignment_expression "pTVar14->disptop = 0" (field_expression "pTVar14->disptop" identifier -> field_identifier) = number_literal) ;) (expression_statement "pTVar14->seen_disp_event = 0;" (assignment_expression "pTVar14->seen_disp_event = 0" (field_expression "pTVar14->seen_disp_event" identifier -> field_identifier) = number_literal) ;) })) (expression_statement "update_sbar(pTVar14);" (call_expression "update_sbar(pTVar14)" identifier (argument_list "(pTVar14)" ( identifier ))) ;) })) (expression_statement "do_paint(pTVar14,ctx,iVar20);" (call_expression "do_paint(pTVar14,ctx,iVar20)" identifier (argument_list "(pTVar14,ctx,iVar20)" ( identifier , identifier , identifier ))) ;) (expression_statement "(**(code **)(pcVar27 + 0x7ca94))\n                  (pTVar14->frontend,(pTVar14->curs).x,(pTVar14->curs).y - pTVar14->disptop);" (call_expression "(**(code **)(pcVar27 + 0x7ca94))\n                  (pTVar14->frontend,(pTVar14->curs).x,(pTVar14->curs).y - pTVar14->disptop)" (parenthesized_expression "(**(code **)(pcVar27 + 0x7ca94))" ( (pointer_expression "**(code **)(pcVar27 + 0x7ca94)" * (pointer_expression "*(code **)(pcVar27 + 0x7ca94)" * (cast_expression "(code **)(pcVar27 + 0x7ca94)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar27 + 0x7ca94)" ( (binary_expression "pcVar27 + 0x7ca94" identifier + number_literal) ))))) )) (argument_list "(pTVar14->frontend,(pTVar14->curs).x,(pTVar14->curs).y - pTVar14->disptop)" ( (field_expression "pTVar14->frontend" identifier -> field_identifier) , (field_expression "(pTVar14->curs).x" (parenthesized_expression "(pTVar14->curs)" ( (field_expression "pTVar14->curs" identifier -> field_identifier) )) . field_identifier) , (binary_expression "(pTVar14->curs).y - pTVar14->disptop" (field_expression "(pTVar14->curs).y" (parenthesized_expression "(pTVar14->curs)" ( (field_expression "pTVar14->curs" identifier -> field_identifier) )) . field_identifier) - (field_expression "pTVar14->disptop" identifier -> field_identifier)) ))) ;) comment comment (expression_statement "(**(code **)(pcVar27 + 0x7ca98))(ctx);" (call_expression "(**(code **)(pcVar27 + 0x7ca98))(ctx)" (parenthesized_expression "(**(code **)(pcVar27 + 0x7ca98))" ( (pointer_expression "**(code **)(pcVar27 + 0x7ca98)" * (pointer_expression "*(code **)(pcVar27 + 0x7ca98)" * (cast_expression "(code **)(pcVar27 + 0x7ca98)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar27 + 0x7ca98)" ( (binary_expression "pcVar27 + 0x7ca98" identifier + number_literal) ))))) )) (argument_list "(ctx)" ( identifier ))) ;) (return_statement "return;" return ;) })) (return_statement "return;" return ;) })) (labeled_statement "LAB_00094e08:\n    pTVar14->selstate = ADDRTYPE_UNSPEC;" statement_identifier : (expression_statement "pTVar14->selstate = ADDRTYPE_UNSPEC;" (assignment_expression "pTVar14->selstate = ADDRTYPE_UNSPEC" (field_expression "pTVar14->selstate" identifier -> field_identifier) = identifier) ;)) (expression_statement "(pTVar14->selend).y = 0;" (assignment_expression "(pTVar14->selend).y = 0" (field_expression "(pTVar14->selend).y" (parenthesized_expression "(pTVar14->selend)" ( (field_expression "pTVar14->selend" identifier -> field_identifier) )) . field_identifier) = number_literal) ;) (expression_statement "(pTVar14->selend).x = 0;" (assignment_expression "(pTVar14->selend).x = 0" (field_expression "(pTVar14->selend).x" (parenthesized_expression "(pTVar14->selend)" ( (field_expression "pTVar14->selend" identifier -> field_identifier) )) . field_identifier) = number_literal) ;) (expression_statement "(pTVar14->selstart).y = 0;" (assignment_expression "(pTVar14->selstart).y = 0" (field_expression "(pTVar14->selstart).y" (parenthesized_expression "(pTVar14->selstart)" ( (field_expression "pTVar14->selstart" identifier -> field_identifier) )) . field_identifier) = number_literal) ;) (expression_statement "(pTVar14->selstart).x = 0;" (assignment_expression "(pTVar14->selstart).x = 0" (field_expression "(pTVar14->selstart).x" (parenthesized_expression "(pTVar14->selstart)" ( (field_expression "pTVar14->selstart" identifier -> field_identifier) )) . field_identifier) = number_literal) ;) })) (labeled_statement "LAB_00094c48:\n  if ((0 < iVar9) && (iVar9 <= iVar4)) {\n    check_boundary(pTVar14,iVar9,iVar11);\n    iVar11 = (pTVar14->curs).y;\n  }" statement_identifier : (if_statement "if ((0 < iVar9) && (iVar9 <= iVar4)) {\n    check_boundary(pTVar14,iVar9,iVar11);\n    iVar11 = (pTVar14->curs).y;\n  }" if (parenthesized_expression "((0 < iVar9) && (iVar9 <= iVar4))" ( (binary_expression "(0 < iVar9) && (iVar9 <= iVar4)" (parenthesized_expression "(0 < iVar9)" ( (binary_expression "0 < iVar9" number_literal < identifier) )) && (parenthesized_expression "(iVar9 <= iVar4)" ( (binary_expression "iVar9 <= iVar4" identifier <= identifier) ))) )) (compound_statement "{\n    check_boundary(pTVar14,iVar9,iVar11);\n    iVar11 = (pTVar14->curs).y;\n  }" { (expression_statement "check_boundary(pTVar14,iVar9,iVar11);" (call_expression "check_boundary(pTVar14,iVar9,iVar11)" identifier (argument_list "(pTVar14,iVar9,iVar11)" ( identifier , identifier , identifier ))) ;) (expression_statement "iVar11 = (pTVar14->curs).y;" (assignment_expression "iVar11 = (pTVar14->curs).y" identifier = (field_expression "(pTVar14->curs).y" (parenthesized_expression "(pTVar14->curs)" ( (field_expression "pTVar14->curs" identifier -> field_identifier) )) . field_identifier)) ;) }))) (if_statement "if (iVar20 != -1) {\n    iVar20 = iVar22 + -1;\n    ptVar8 = lineptr(pTVar14,iVar11,0x9eb,1);\n    if (iVar22 != 0) {\n      iVar4 = *(int *)(pcVar26 + 0x7cf20);\n      do {\n        iVar9 = iVar20 + (pTVar14->curs).x;\n        iVar11 = ((int)pwVar15 + iVar9) * 0xc;\n        ptVar23 = ptVar8->chars + iVar9;\n        ptVar25 = ptVar8->chars + (int)pwVar15 + iVar9;\n        (*(code *)(iVar4 + 0xab0))(ptVar8,(iVar11 >> 2) * -0x55555555);\n        iVar5 = ptVar23->cc_next;\n        uVar16 = ptVar23->attr;\n        ptVar25->chr = ptVar23->chr;\n        ptVar25->attr = uVar16;\n        ptVar25->cc_next = iVar5;\n        if (ptVar23->cc_next != 0) {\n          ptVar25->cc_next = (iVar11 + iVar9 * -0xc >> 2) * 0x55555555 + ptVar23->cc_next;\n        }\n        iVar20 = iVar20 + -1;\n        ptVar23->cc_next = 0;\n      } while (iVar20 != -1);\n    }\n    iVar20 = (int)pwVar15 + -1;\n    if (pwVar15 == (wchar_t *)0x0) {\n      return;\n    }\n    do {\n      iVar4 = iVar20 + (pTVar14->curs).x;\n      iVar20 = iVar20 + -1;\n      copy_termchar(ptVar8,iVar4,&pTVar14->erase_char);\n    } while (iVar20 != -1);\n    return;\n  }" if (parenthesized_expression "(iVar20 != -1)" ( (binary_expression "iVar20 != -1" identifier != number_literal) )) (compound_statement "{\n    iVar20 = iVar22 + -1;\n    ptVar8 = lineptr(pTVar14,iVar11,0x9eb,1);\n    if (iVar22 != 0) {\n      iVar4 = *(int *)(pcVar26 + 0x7cf20);\n      do {\n        iVar9 = iVar20 + (pTVar14->curs).x;\n        iVar11 = ((int)pwVar15 + iVar9) * 0xc;\n        ptVar23 = ptVar8->chars + iVar9;\n        ptVar25 = ptVar8->chars + (int)pwVar15 + iVar9;\n        (*(code *)(iVar4 + 0xab0))(ptVar8,(iVar11 >> 2) * -0x55555555);\n        iVar5 = ptVar23->cc_next;\n        uVar16 = ptVar23->attr;\n        ptVar25->chr = ptVar23->chr;\n        ptVar25->attr = uVar16;\n        ptVar25->cc_next = iVar5;\n        if (ptVar23->cc_next != 0) {\n          ptVar25->cc_next = (iVar11 + iVar9 * -0xc >> 2) * 0x55555555 + ptVar23->cc_next;\n        }\n        iVar20 = iVar20 + -1;\n        ptVar23->cc_next = 0;\n      } while (iVar20 != -1);\n    }\n    iVar20 = (int)pwVar15 + -1;\n    if (pwVar15 == (wchar_t *)0x0) {\n      return;\n    }\n    do {\n      iVar4 = iVar20 + (pTVar14->curs).x;\n      iVar20 = iVar20 + -1;\n      copy_termchar(ptVar8,iVar4,&pTVar14->erase_char);\n    } while (iVar20 != -1);\n    return;\n  }" { (expression_statement "iVar20 = iVar22 + -1;" (assignment_expression "iVar20 = iVar22 + -1" identifier = (binary_expression "iVar22 + -1" identifier + number_literal)) ;) (expression_statement "ptVar8 = lineptr(pTVar14,iVar11,0x9eb,1);" (assignment_expression "ptVar8 = lineptr(pTVar14,iVar11,0x9eb,1)" identifier = (call_expression "lineptr(pTVar14,iVar11,0x9eb,1)" identifier (argument_list "(pTVar14,iVar11,0x9eb,1)" ( identifier , identifier , number_literal , number_literal )))) ;) (if_statement "if (iVar22 != 0) {\n      iVar4 = *(int *)(pcVar26 + 0x7cf20);\n      do {\n        iVar9 = iVar20 + (pTVar14->curs).x;\n        iVar11 = ((int)pwVar15 + iVar9) * 0xc;\n        ptVar23 = ptVar8->chars + iVar9;\n        ptVar25 = ptVar8->chars + (int)pwVar15 + iVar9;\n        (*(code *)(iVar4 + 0xab0))(ptVar8,(iVar11 >> 2) * -0x55555555);\n        iVar5 = ptVar23->cc_next;\n        uVar16 = ptVar23->attr;\n        ptVar25->chr = ptVar23->chr;\n        ptVar25->attr = uVar16;\n        ptVar25->cc_next = iVar5;\n        if (ptVar23->cc_next != 0) {\n          ptVar25->cc_next = (iVar11 + iVar9 * -0xc >> 2) * 0x55555555 + ptVar23->cc_next;\n        }\n        iVar20 = iVar20 + -1;\n        ptVar23->cc_next = 0;\n      } while (iVar20 != -1);\n    }" if (parenthesized_expression "(iVar22 != 0)" ( (binary_expression "iVar22 != 0" identifier != number_literal) )) (compound_statement "{\n      iVar4 = *(int *)(pcVar26 + 0x7cf20);\n      do {\n        iVar9 = iVar20 + (pTVar14->curs).x;\n        iVar11 = ((int)pwVar15 + iVar9) * 0xc;\n        ptVar23 = ptVar8->chars + iVar9;\n        ptVar25 = ptVar8->chars + (int)pwVar15 + iVar9;\n        (*(code *)(iVar4 + 0xab0))(ptVar8,(iVar11 >> 2) * -0x55555555);\n        iVar5 = ptVar23->cc_next;\n        uVar16 = ptVar23->attr;\n        ptVar25->chr = ptVar23->chr;\n        ptVar25->attr = uVar16;\n        ptVar25->cc_next = iVar5;\n        if (ptVar23->cc_next != 0) {\n          ptVar25->cc_next = (iVar11 + iVar9 * -0xc >> 2) * 0x55555555 + ptVar23->cc_next;\n        }\n        iVar20 = iVar20 + -1;\n        ptVar23->cc_next = 0;\n      } while (iVar20 != -1);\n    }" { (expression_statement "iVar4 = *(int *)(pcVar26 + 0x7cf20);" (assignment_expression "iVar4 = *(int *)(pcVar26 + 0x7cf20)" identifier = (pointer_expression "*(int *)(pcVar26 + 0x7cf20)" * (cast_expression "(int *)(pcVar26 + 0x7cf20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar26 + 0x7cf20)" ( (binary_expression "pcVar26 + 0x7cf20" identifier + number_literal) ))))) ;) (do_statement "do {\n        iVar9 = iVar20 + (pTVar14->curs).x;\n        iVar11 = ((int)pwVar15 + iVar9) * 0xc;\n        ptVar23 = ptVar8->chars + iVar9;\n        ptVar25 = ptVar8->chars + (int)pwVar15 + iVar9;\n        (*(code *)(iVar4 + 0xab0))(ptVar8,(iVar11 >> 2) * -0x55555555);\n        iVar5 = ptVar23->cc_next;\n        uVar16 = ptVar23->attr;\n        ptVar25->chr = ptVar23->chr;\n        ptVar25->attr = uVar16;\n        ptVar25->cc_next = iVar5;\n        if (ptVar23->cc_next != 0) {\n          ptVar25->cc_next = (iVar11 + iVar9 * -0xc >> 2) * 0x55555555 + ptVar23->cc_next;\n        }\n        iVar20 = iVar20 + -1;\n        ptVar23->cc_next = 0;\n      } while (iVar20 != -1);" do (compound_statement "{\n        iVar9 = iVar20 + (pTVar14->curs).x;\n        iVar11 = ((int)pwVar15 + iVar9) * 0xc;\n        ptVar23 = ptVar8->chars + iVar9;\n        ptVar25 = ptVar8->chars + (int)pwVar15 + iVar9;\n        (*(code *)(iVar4 + 0xab0))(ptVar8,(iVar11 >> 2) * -0x55555555);\n        iVar5 = ptVar23->cc_next;\n        uVar16 = ptVar23->attr;\n        ptVar25->chr = ptVar23->chr;\n        ptVar25->attr = uVar16;\n        ptVar25->cc_next = iVar5;\n        if (ptVar23->cc_next != 0) {\n          ptVar25->cc_next = (iVar11 + iVar9 * -0xc >> 2) * 0x55555555 + ptVar23->cc_next;\n        }\n        iVar20 = iVar20 + -1;\n        ptVar23->cc_next = 0;\n      }" { (expression_statement "iVar9 = iVar20 + (pTVar14->curs).x;" (assignment_expression "iVar9 = iVar20 + (pTVar14->curs).x" identifier = (binary_expression "iVar20 + (pTVar14->curs).x" identifier + (field_expression "(pTVar14->curs).x" (parenthesized_expression "(pTVar14->curs)" ( (field_expression "pTVar14->curs" identifier -> field_identifier) )) . field_identifier))) ;) (expression_statement "iVar11 = ((int)pwVar15 + iVar9) * 0xc;" (assignment_expression "iVar11 = ((int)pwVar15 + iVar9) * 0xc" identifier = (binary_expression "((int)pwVar15 + iVar9) * 0xc" (parenthesized_expression "((int)pwVar15 + iVar9)" ( (binary_expression "(int)pwVar15 + iVar9" (cast_expression "(int)pwVar15" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )) * number_literal)) ;) (expression_statement "ptVar23 = ptVar8->chars + iVar9;" (assignment_expression "ptVar23 = ptVar8->chars + iVar9" identifier = (binary_expression "ptVar8->chars + iVar9" (field_expression "ptVar8->chars" identifier -> field_identifier) + identifier)) ;) (expression_statement "ptVar25 = ptVar8->chars + (int)pwVar15 + iVar9;" (assignment_expression "ptVar25 = ptVar8->chars + (int)pwVar15 + iVar9" identifier = (binary_expression "ptVar8->chars + (int)pwVar15 + iVar9" (binary_expression "ptVar8->chars + (int)pwVar15" (field_expression "ptVar8->chars" identifier -> field_identifier) + (cast_expression "(int)pwVar15" ( (type_descriptor "int" primitive_type) ) identifier)) + identifier)) ;) (expression_statement "(*(code *)(iVar4 + 0xab0))(ptVar8,(iVar11 >> 2) * -0x55555555);" (call_expression "(*(code *)(iVar4 + 0xab0))(ptVar8,(iVar11 >> 2) * -0x55555555)" (parenthesized_expression "(*(code *)(iVar4 + 0xab0))" ( (pointer_expression "*(code *)(iVar4 + 0xab0)" * (cast_expression "(code *)(iVar4 + 0xab0)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 0xab0)" ( (binary_expression "iVar4 + 0xab0" identifier + number_literal) )))) )) (argument_list "(ptVar8,(iVar11 >> 2) * -0x55555555)" ( identifier , (binary_expression "(iVar11 >> 2) * -0x55555555" (parenthesized_expression "(iVar11 >> 2)" ( (binary_expression "iVar11 >> 2" identifier >> number_literal) )) * number_literal) ))) ;) (expression_statement "iVar5 = ptVar23->cc_next;" (assignment_expression "iVar5 = ptVar23->cc_next" identifier = (field_expression "ptVar23->cc_next" identifier -> field_identifier)) ;) (expression_statement "uVar16 = ptVar23->attr;" (assignment_expression "uVar16 = ptVar23->attr" identifier = (field_expression "ptVar23->attr" identifier -> field_identifier)) ;) (expression_statement "ptVar25->chr = ptVar23->chr;" (assignment_expression "ptVar25->chr = ptVar23->chr" (field_expression "ptVar25->chr" identifier -> field_identifier) = (field_expression "ptVar23->chr" identifier -> field_identifier)) ;) (expression_statement "ptVar25->attr = uVar16;" (assignment_expression "ptVar25->attr = uVar16" (field_expression "ptVar25->attr" identifier -> field_identifier) = identifier) ;) (expression_statement "ptVar25->cc_next = iVar5;" (assignment_expression "ptVar25->cc_next = iVar5" (field_expression "ptVar25->cc_next" identifier -> field_identifier) = identifier) ;) (if_statement "if (ptVar23->cc_next != 0) {\n          ptVar25->cc_next = (iVar11 + iVar9 * -0xc >> 2) * 0x55555555 + ptVar23->cc_next;\n        }" if (parenthesized_expression "(ptVar23->cc_next != 0)" ( (binary_expression "ptVar23->cc_next != 0" (field_expression "ptVar23->cc_next" identifier -> field_identifier) != number_literal) )) (compound_statement "{\n          ptVar25->cc_next = (iVar11 + iVar9 * -0xc >> 2) * 0x55555555 + ptVar23->cc_next;\n        }" { (expression_statement "ptVar25->cc_next = (iVar11 + iVar9 * -0xc >> 2) * 0x55555555 + ptVar23->cc_next;" (assignment_expression "ptVar25->cc_next = (iVar11 + iVar9 * -0xc >> 2) * 0x55555555 + ptVar23->cc_next" (field_expression "ptVar25->cc_next" identifier -> field_identifier) = (binary_expression "(iVar11 + iVar9 * -0xc >> 2) * 0x55555555 + ptVar23->cc_next" (binary_expression "(iVar11 + iVar9 * -0xc >> 2) * 0x55555555" (parenthesized_expression "(iVar11 + iVar9 * -0xc >> 2)" ( (binary_expression "iVar11 + iVar9 * -0xc >> 2" (binary_expression "iVar11 + iVar9 * -0xc" identifier + (binary_expression "iVar9 * -0xc" identifier * number_literal)) >> number_literal) )) * number_literal) + (field_expression "ptVar23->cc_next" identifier -> field_identifier))) ;) })) (expression_statement "iVar20 = iVar20 + -1;" (assignment_expression "iVar20 = iVar20 + -1" identifier = (binary_expression "iVar20 + -1" identifier + number_literal)) ;) (expression_statement "ptVar23->cc_next = 0;" (assignment_expression "ptVar23->cc_next = 0" (field_expression "ptVar23->cc_next" identifier -> field_identifier) = number_literal) ;) }) while (parenthesized_expression "(iVar20 != -1)" ( (binary_expression "iVar20 != -1" identifier != number_literal) )) ;) })) (expression_statement "iVar20 = (int)pwVar15 + -1;" (assignment_expression "iVar20 = (int)pwVar15 + -1" identifier = (binary_expression "(int)pwVar15 + -1" (cast_expression "(int)pwVar15" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal)) ;) (if_statement "if (pwVar15 == (wchar_t *)0x0) {\n      return;\n    }" if (parenthesized_expression "(pwVar15 == (wchar_t *)0x0)" ( (binary_expression "pwVar15 == (wchar_t *)0x0" identifier == (cast_expression "(wchar_t *)0x0" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      return;\n    }" { (return_statement "return;" return ;) })) (do_statement "do {\n      iVar4 = iVar20 + (pTVar14->curs).x;\n      iVar20 = iVar20 + -1;\n      copy_termchar(ptVar8,iVar4,&pTVar14->erase_char);\n    } while (iVar20 != -1);" do (compound_statement "{\n      iVar4 = iVar20 + (pTVar14->curs).x;\n      iVar20 = iVar20 + -1;\n      copy_termchar(ptVar8,iVar4,&pTVar14->erase_char);\n    }" { (expression_statement "iVar4 = iVar20 + (pTVar14->curs).x;" (assignment_expression "iVar4 = iVar20 + (pTVar14->curs).x" identifier = (binary_expression "iVar20 + (pTVar14->curs).x" identifier + (field_expression "(pTVar14->curs).x" (parenthesized_expression "(pTVar14->curs)" ( (field_expression "pTVar14->curs" identifier -> field_identifier) )) . field_identifier))) ;) (expression_statement "iVar20 = iVar20 + -1;" (assignment_expression "iVar20 = iVar20 + -1" identifier = (binary_expression "iVar20 + -1" identifier + number_literal)) ;) (expression_statement "copy_termchar(ptVar8,iVar4,&pTVar14->erase_char);" (call_expression "copy_termchar(ptVar8,iVar4,&pTVar14->erase_char)" identifier (argument_list "(ptVar8,iVar4,&pTVar14->erase_char)" ( identifier , identifier , (pointer_expression "&pTVar14->erase_char" & (field_expression "pTVar14->erase_char" identifier -> field_identifier)) ))) ;) }) while (parenthesized_expression "(iVar20 != -1)" ( (binary_expression "iVar20 != -1" identifier != number_literal) )) ;) (return_statement "return;" return ;) })) (labeled_statement "LAB_00094ebc:\n  iVar20 = (int)pwVar15 + (pTVar14->curs).x;" statement_identifier : (expression_statement "iVar20 = (int)pwVar15 + (pTVar14->curs).x;" (assignment_expression "iVar20 = (int)pwVar15 + (pTVar14->curs).x" identifier = (binary_expression "(int)pwVar15 + (pTVar14->curs).x" (cast_expression "(int)pwVar15" ( (type_descriptor "int" primitive_type) ) identifier) + (field_expression "(pTVar14->curs).x" (parenthesized_expression "(pTVar14->curs)" ( (field_expression "pTVar14->curs" identifier -> field_identifier) )) . field_identifier))) ;)) (if_statement "if ((0 < iVar20) && (iVar20 <= pTVar14->cols)) {\n    check_boundary(pTVar14,iVar20,iVar11);\n    iVar11 = (pTVar14->curs).y;\n  }" if (parenthesized_expression "((0 < iVar20) && (iVar20 <= pTVar14->cols))" ( (binary_expression "(0 < iVar20) && (iVar20 <= pTVar14->cols)" (parenthesized_expression "(0 < iVar20)" ( (binary_expression "0 < iVar20" number_literal < identifier) )) && (parenthesized_expression "(iVar20 <= pTVar14->cols)" ( (binary_expression "iVar20 <= pTVar14->cols" identifier <= (field_expression "pTVar14->cols" identifier -> field_identifier)) ))) )) (compound_statement "{\n    check_boundary(pTVar14,iVar20,iVar11);\n    iVar11 = (pTVar14->curs).y;\n  }" { (expression_statement "check_boundary(pTVar14,iVar20,iVar11);" (call_expression "check_boundary(pTVar14,iVar20,iVar11)" identifier (argument_list "(pTVar14,iVar20,iVar11)" ( identifier , identifier , identifier ))) ;) (expression_statement "iVar11 = (pTVar14->curs).y;" (assignment_expression "iVar11 = (pTVar14->curs).y" identifier = (field_expression "(pTVar14->curs).y" (parenthesized_expression "(pTVar14->curs)" ( (field_expression "pTVar14->curs" identifier -> field_identifier) )) . field_identifier)) ;) })) (expression_statement "ptVar8 = lineptr(pTVar14,iVar11,0x9eb,1);" (assignment_expression "ptVar8 = lineptr(pTVar14,iVar11,0x9eb,1)" identifier = (call_expression "lineptr(pTVar14,iVar11,0x9eb,1)" identifier (argument_list "(pTVar14,iVar11,0x9eb,1)" ( identifier , identifier , number_literal , number_literal )))) ;) (if_statement "if (0 < iVar22) {\n    iVar20 = *(int *)(pcVar26 + 0x7cf20);\n    iVar4 = 0;\n    do {\n      iVar9 = iVar4 + (pTVar14->curs).x;\n      ptVar23 = ptVar8->chars + iVar9 + (int)pwVar15;\n      ptVar25 = ptVar8->chars + iVar9;\n      (*(code *)(iVar20 + 0xab0))(ptVar8,(iVar9 * 0xc >> 2) * -0x55555555);\n      iVar5 = ptVar23->cc_next;\n      uVar16 = ptVar23->attr;\n      ptVar25->chr = ptVar23->chr;\n      ptVar25->attr = uVar16;\n      ptVar25->cc_next = iVar5;\n      if (ptVar23->cc_next != 0) {\n        ptVar25->cc_next =\n             (iVar9 * 0xc + (iVar9 + (int)pwVar15) * -0xc >> 2) * 0x55555555 + ptVar23->cc_next;\n      }\n      iVar4 = iVar4 + 1;\n      ptVar23->cc_next = 0;\n    } while (iVar22 != iVar4);\n  }" if (parenthesized_expression "(0 < iVar22)" ( (binary_expression "0 < iVar22" number_literal < identifier) )) (compound_statement "{\n    iVar20 = *(int *)(pcVar26 + 0x7cf20);\n    iVar4 = 0;\n    do {\n      iVar9 = iVar4 + (pTVar14->curs).x;\n      ptVar23 = ptVar8->chars + iVar9 + (int)pwVar15;\n      ptVar25 = ptVar8->chars + iVar9;\n      (*(code *)(iVar20 + 0xab0))(ptVar8,(iVar9 * 0xc >> 2) * -0x55555555);\n      iVar5 = ptVar23->cc_next;\n      uVar16 = ptVar23->attr;\n      ptVar25->chr = ptVar23->chr;\n      ptVar25->attr = uVar16;\n      ptVar25->cc_next = iVar5;\n      if (ptVar23->cc_next != 0) {\n        ptVar25->cc_next =\n             (iVar9 * 0xc + (iVar9 + (int)pwVar15) * -0xc >> 2) * 0x55555555 + ptVar23->cc_next;\n      }\n      iVar4 = iVar4 + 1;\n      ptVar23->cc_next = 0;\n    } while (iVar22 != iVar4);\n  }" { (expression_statement "iVar20 = *(int *)(pcVar26 + 0x7cf20);" (assignment_expression "iVar20 = *(int *)(pcVar26 + 0x7cf20)" identifier = (pointer_expression "*(int *)(pcVar26 + 0x7cf20)" * (cast_expression "(int *)(pcVar26 + 0x7cf20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar26 + 0x7cf20)" ( (binary_expression "pcVar26 + 0x7cf20" identifier + number_literal) ))))) ;) (expression_statement "iVar4 = 0;" (assignment_expression "iVar4 = 0" identifier = number_literal) ;) (do_statement "do {\n      iVar9 = iVar4 + (pTVar14->curs).x;\n      ptVar23 = ptVar8->chars + iVar9 + (int)pwVar15;\n      ptVar25 = ptVar8->chars + iVar9;\n      (*(code *)(iVar20 + 0xab0))(ptVar8,(iVar9 * 0xc >> 2) * -0x55555555);\n      iVar5 = ptVar23->cc_next;\n      uVar16 = ptVar23->attr;\n      ptVar25->chr = ptVar23->chr;\n      ptVar25->attr = uVar16;\n      ptVar25->cc_next = iVar5;\n      if (ptVar23->cc_next != 0) {\n        ptVar25->cc_next =\n             (iVar9 * 0xc + (iVar9 + (int)pwVar15) * -0xc >> 2) * 0x55555555 + ptVar23->cc_next;\n      }\n      iVar4 = iVar4 + 1;\n      ptVar23->cc_next = 0;\n    } while (iVar22 != iVar4);" do (compound_statement "{\n      iVar9 = iVar4 + (pTVar14->curs).x;\n      ptVar23 = ptVar8->chars + iVar9 + (int)pwVar15;\n      ptVar25 = ptVar8->chars + iVar9;\n      (*(code *)(iVar20 + 0xab0))(ptVar8,(iVar9 * 0xc >> 2) * -0x55555555);\n      iVar5 = ptVar23->cc_next;\n      uVar16 = ptVar23->attr;\n      ptVar25->chr = ptVar23->chr;\n      ptVar25->attr = uVar16;\n      ptVar25->cc_next = iVar5;\n      if (ptVar23->cc_next != 0) {\n        ptVar25->cc_next =\n             (iVar9 * 0xc + (iVar9 + (int)pwVar15) * -0xc >> 2) * 0x55555555 + ptVar23->cc_next;\n      }\n      iVar4 = iVar4 + 1;\n      ptVar23->cc_next = 0;\n    }" { (expression_statement "iVar9 = iVar4 + (pTVar14->curs).x;" (assignment_expression "iVar9 = iVar4 + (pTVar14->curs).x" identifier = (binary_expression "iVar4 + (pTVar14->curs).x" identifier + (field_expression "(pTVar14->curs).x" (parenthesized_expression "(pTVar14->curs)" ( (field_expression "pTVar14->curs" identifier -> field_identifier) )) . field_identifier))) ;) (expression_statement "ptVar23 = ptVar8->chars + iVar9 + (int)pwVar15;" (assignment_expression "ptVar23 = ptVar8->chars + iVar9 + (int)pwVar15" identifier = (binary_expression "ptVar8->chars + iVar9 + (int)pwVar15" (binary_expression "ptVar8->chars + iVar9" (field_expression "ptVar8->chars" identifier -> field_identifier) + identifier) + (cast_expression "(int)pwVar15" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "ptVar25 = ptVar8->chars + iVar9;" (assignment_expression "ptVar25 = ptVar8->chars + iVar9" identifier = (binary_expression "ptVar8->chars + iVar9" (field_expression "ptVar8->chars" identifier -> field_identifier) + identifier)) ;) (expression_statement "(*(code *)(iVar20 + 0xab0))(ptVar8,(iVar9 * 0xc >> 2) * -0x55555555);" (call_expression "(*(code *)(iVar20 + 0xab0))(ptVar8,(iVar9 * 0xc >> 2) * -0x55555555)" (parenthesized_expression "(*(code *)(iVar20 + 0xab0))" ( (pointer_expression "*(code *)(iVar20 + 0xab0)" * (cast_expression "(code *)(iVar20 + 0xab0)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar20 + 0xab0)" ( (binary_expression "iVar20 + 0xab0" identifier + number_literal) )))) )) (argument_list "(ptVar8,(iVar9 * 0xc >> 2) * -0x55555555)" ( identifier , (binary_expression "(iVar9 * 0xc >> 2) * -0x55555555" (parenthesized_expression "(iVar9 * 0xc >> 2)" ( (binary_expression "iVar9 * 0xc >> 2" (binary_expression "iVar9 * 0xc" identifier * number_literal) >> number_literal) )) * number_literal) ))) ;) (expression_statement "iVar5 = ptVar23->cc_next;" (assignment_expression "iVar5 = ptVar23->cc_next" identifier = (field_expression "ptVar23->cc_next" identifier -> field_identifier)) ;) (expression_statement "uVar16 = ptVar23->attr;" (assignment_expression "uVar16 = ptVar23->attr" identifier = (field_expression "ptVar23->attr" identifier -> field_identifier)) ;) (expression_statement "ptVar25->chr = ptVar23->chr;" (assignment_expression "ptVar25->chr = ptVar23->chr" (field_expression "ptVar25->chr" identifier -> field_identifier) = (field_expression "ptVar23->chr" identifier -> field_identifier)) ;) (expression_statement "ptVar25->attr = uVar16;" (assignment_expression "ptVar25->attr = uVar16" (field_expression "ptVar25->attr" identifier -> field_identifier) = identifier) ;) (expression_statement "ptVar25->cc_next = iVar5;" (assignment_expression "ptVar25->cc_next = iVar5" (field_expression "ptVar25->cc_next" identifier -> field_identifier) = identifier) ;) (if_statement "if (ptVar23->cc_next != 0) {\n        ptVar25->cc_next =\n             (iVar9 * 0xc + (iVar9 + (int)pwVar15) * -0xc >> 2) * 0x55555555 + ptVar23->cc_next;\n      }" if (parenthesized_expression "(ptVar23->cc_next != 0)" ( (binary_expression "ptVar23->cc_next != 0" (field_expression "ptVar23->cc_next" identifier -> field_identifier) != number_literal) )) (compound_statement "{\n        ptVar25->cc_next =\n             (iVar9 * 0xc + (iVar9 + (int)pwVar15) * -0xc >> 2) * 0x55555555 + ptVar23->cc_next;\n      }" { (expression_statement "ptVar25->cc_next =\n             (iVar9 * 0xc + (iVar9 + (int)pwVar15) * -0xc >> 2) * 0x55555555 + ptVar23->cc_next;" (assignment_expression "ptVar25->cc_next =\n             (iVar9 * 0xc + (iVar9 + (int)pwVar15) * -0xc >> 2) * 0x55555555 + ptVar23->cc_next" (field_expression "ptVar25->cc_next" identifier -> field_identifier) = (binary_expression "(iVar9 * 0xc + (iVar9 + (int)pwVar15) * -0xc >> 2) * 0x55555555 + ptVar23->cc_next" (binary_expression "(iVar9 * 0xc + (iVar9 + (int)pwVar15) * -0xc >> 2) * 0x55555555" (parenthesized_expression "(iVar9 * 0xc + (iVar9 + (int)pwVar15) * -0xc >> 2)" ( (binary_expression "iVar9 * 0xc + (iVar9 + (int)pwVar15) * -0xc >> 2" (binary_expression "iVar9 * 0xc + (iVar9 + (int)pwVar15) * -0xc" (binary_expression "iVar9 * 0xc" identifier * number_literal) + (binary_expression "(iVar9 + (int)pwVar15) * -0xc" (parenthesized_expression "(iVar9 + (int)pwVar15)" ( (binary_expression "iVar9 + (int)pwVar15" identifier + (cast_expression "(int)pwVar15" ( (type_descriptor "int" primitive_type) ) identifier)) )) * number_literal)) >> number_literal) )) * number_literal) + (field_expression "ptVar23->cc_next" identifier -> field_identifier))) ;) })) (expression_statement "iVar4 = iVar4 + 1;" (assignment_expression "iVar4 = iVar4 + 1" identifier = (binary_expression "iVar4 + 1" identifier + number_literal)) ;) (expression_statement "ptVar23->cc_next = 0;" (assignment_expression "ptVar23->cc_next = 0" (field_expression "ptVar23->cc_next" identifier -> field_identifier) = number_literal) ;) }) while (parenthesized_expression "(iVar22 != iVar4)" ( (binary_expression "iVar22 != iVar4" identifier != identifier) )) ;) })) (if_statement "if (pwVar15 == (wchar_t *)0x0) {\n    return;\n  }" if (parenthesized_expression "(pwVar15 == (wchar_t *)0x0)" ( (binary_expression "pwVar15 == (wchar_t *)0x0" identifier == (cast_expression "(wchar_t *)0x0" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "iVar20 = iVar22;" (assignment_expression "iVar20 = iVar22" identifier = identifier) ;) (do_statement "do {\n    iVar4 = iVar20 + 1;\n    copy_termchar(ptVar8,iVar20 + (pTVar14->curs).x,&pTVar14->erase_char);\n    iVar20 = iVar4;\n  } while (iVar4 != (int)pwVar15 + iVar22);" do (compound_statement "{\n    iVar4 = iVar20 + 1;\n    copy_termchar(ptVar8,iVar20 + (pTVar14->curs).x,&pTVar14->erase_char);\n    iVar20 = iVar4;\n  }" { (expression_statement "iVar4 = iVar20 + 1;" (assignment_expression "iVar4 = iVar20 + 1" identifier = (binary_expression "iVar20 + 1" identifier + number_literal)) ;) (expression_statement "copy_termchar(ptVar8,iVar20 + (pTVar14->curs).x,&pTVar14->erase_char);" (call_expression "copy_termchar(ptVar8,iVar20 + (pTVar14->curs).x,&pTVar14->erase_char)" identifier (argument_list "(ptVar8,iVar20 + (pTVar14->curs).x,&pTVar14->erase_char)" ( identifier , (binary_expression "iVar20 + (pTVar14->curs).x" identifier + (field_expression "(pTVar14->curs).x" (parenthesized_expression "(pTVar14->curs)" ( (field_expression "pTVar14->curs" identifier -> field_identifier) )) . field_identifier)) , (pointer_expression "&pTVar14->erase_char" & (field_expression "pTVar14->erase_char" identifier -> field_identifier)) ))) ;) (expression_statement "iVar20 = iVar4;" (assignment_expression "iVar20 = iVar4" identifier = identifier) ;) }) while (parenthesized_expression "(iVar4 != (int)pwVar15 + iVar22)" ( (binary_expression "iVar4 != (int)pwVar15 + iVar22" identifier != (binary_expression "(int)pwVar15 + iVar22" (cast_expression "(int)pwVar15" ( (type_descriptor "int" primitive_type) ) identifier) + identifier)) )) ;) (return_statement "return;" return ;) (labeled_statement "LAB_00094994:\n  if (bVar2) {\n    clip_addchar(&buf,10,0);\n  }" statement_identifier : (if_statement "if (bVar2) {\n    clip_addchar(&buf,10,0);\n  }" if (parenthesized_expression "(bVar2)" ( identifier )) (compound_statement "{\n    clip_addchar(&buf,10,0);\n  }" { (expression_statement "clip_addchar(&buf,10,0);" (call_expression "clip_addchar(&buf,10,0)" identifier (argument_list "(&buf,10,0)" ( (pointer_expression "&buf" & identifier) , number_literal , number_literal ))) ;) }))) (if_statement "if (*(int *)(puVar6 + 6) != 0) {\n    (*(code *)(iVar5 + 0x1270))(puVar6);\n  }" if (parenthesized_expression "(*(int *)(puVar6 + 6) != 0)" ( (binary_expression "*(int *)(puVar6 + 6) != 0" (pointer_expression "*(int *)(puVar6 + 6)" * (cast_expression "(int *)(puVar6 + 6)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar6 + 6)" ( (binary_expression "puVar6 + 6" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n    (*(code *)(iVar5 + 0x1270))(puVar6);\n  }" { (expression_statement "(*(code *)(iVar5 + 0x1270))(puVar6);" (call_expression "(*(code *)(iVar5 + 0x1270))(puVar6)" (parenthesized_expression "(*(code *)(iVar5 + 0x1270))" ( (pointer_expression "*(code *)(iVar5 + 0x1270)" * (cast_expression "(code *)(iVar5 + 0x1270)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x1270)" ( (binary_expression "iVar5 + 0x1270" identifier + number_literal) )))) )) (argument_list "(puVar6)" ( identifier ))) ;) })) (expression_statement "iStack_cc = iStack_cc + 1;" (assignment_expression "iStack_cc = iStack_cc + 1" identifier = (binary_expression "iStack_cc + 1" identifier + number_literal)) ;) (expression_statement "local_d4 = iVar20;" (assignment_expression "local_d4 = iVar20" identifier = identifier) ;) (goto_statement "goto LAB_000945cc;" goto statement_identifier ;) })))
(translation_unit "void FUN_000944e4(int param_1,int param_2,int param_3,int param_4,int param_5,int param_6,\n                 undefined4 param_7)\n\n{\n  bool bVar1;\n  bool bVar2;\n  code *pcVar3;\n  ushort *puVar4;\n  uint uVar5;\n  int iVar6;\n  code *pcVar7;\n  uint uVar8;\n  int iVar9;\n  int iVar10;\n  uint uVar11;\n  int iVar12;\n  undefined4 uVar13;\n  int iVar14;\n  char cVar16;\n  int iVar15;\n  int iVar17;\n  int iVar18;\n  int iVar19;\n  undefined4 uVar20;\n  int iVar21;\n  undefined4 *puVar22;\n  uint *puVar23;\n  int iVar24;\n  undefined4 *puVar25;\n  undefined *puVar26;\n  int local_d4;\n  int local_cc;\n  int local_c8;\n  int local_c0;\n  undefined4 local_98;\n  undefined4 local_94;\n  int local_90;\n  int local_8c;\n  int local_88;\n  int local_84;\n  undefined1 auStack_80 [16];\n  uint local_70 [16];\n  char local_30;\n  undefined1 local_2f;\n  int local_2c;\n  \n  puVar26 = PTR___stack_chk_guard_00112630;\n  local_2c = *(int *)PTR___stack_chk_guard_00112630;\n  local_98 = 0x1400;\n  local_94 = 0;\n  local_90 = (*(code *)PTR_safemalloc_001112ec)(0x1400,4);\n  local_8c = local_90;\n  local_88 = (*(code *)PTR_safemalloc_001112ec)(local_98,4);\n  pcVar7 = (code *)(PTR_LAB_00111ad8 + 0x2a9c);\n  iVar19 = param_3;\n  if (param_6 == 0) {\n    iVar19 = 0;\n  }\n  pcVar3 = (code *)(PTR_LAB_00111ad8 + 0x1270);\n  local_d4 = param_3;\n  local_cc = param_2;\n  local_84 = local_88;\nLAB_000945cc:\n  bVar1 = local_cc < param_4;\n  if ((bVar1) || ((local_cc == param_4 && (local_d4 < param_5)))) {\n    puVar4 = (ushort *)(*pcVar7)(param_1,local_cc,0x1595,0);\n    local_c0 = *(int *)(param_1 + 300);\n    if ((*puVar4 & 0x10) == 0) {\n      if (local_c0 != 0) {\n        iVar9 = *(int *)(puVar4 + 10) + local_c0 * 0xc;\n        do {\n          if ((((*(uint *)(iVar9 + -0xc) != 0x20) &&\n               ((*(uint *)(iVar9 + -0xc) & 0xfffffcff) != 0xd820)) || (*(int *)(iVar9 + -4) != 0))\n             || (local_c0 <= local_d4)) break;\n          local_c0 = local_c0 + -1;\n          iVar9 = iVar9 + -0xc;\n        } while (local_c0 != 0);\n      }\n      if (bVar1) {\n        local_c8 = local_cc;\n        bVar2 = true;\n      }\n      else if (local_cc == param_4) {\n        bVar2 = local_c0 < param_5;\n        local_c8 = local_cc;\n      }\n      else {\n        bVar2 = false;\n        local_c8 = local_cc;\n      }\n    }\n    else if ((*puVar4 & 0x20) == 0) {\n      bVar2 = false;\n      local_c8 = local_cc;\n    }\n    else if (local_c0 == 0) {\n      bVar2 = false;\n      local_c8 = local_cc + -1;\n    }\n    else {\n      bVar2 = false;\n      local_c8 = local_cc;\n      local_c0 = local_c0 + -1;\n    }\n    iVar9 = local_d4;\n    if ((param_6 != 0) && (bVar2 = bVar1, param_5 < local_c0)) {\n      local_c0 = param_5;\n    }\njoined_r0x00094680:\n    do {\n      iVar21 = iVar9;\n      if (((!bVar1) && ((local_cc != param_4 || (param_5 <= iVar21)))) ||\n         ((local_c8 <= local_cc && ((local_c8 != local_cc || (local_c0 <= iVar21))))))\n      goto LAB_00094994;\n      uVar5 = *(uint *)(*(int *)(puVar4 + 10) + iVar21 * 0xc);\n      if (uVar5 != 0xdfff) {\n        uVar11 = uVar5 & 0xffffff00;\n        iVar18 = iVar21 * 0xc;\n        uVar20 = *(undefined4 *)(*(int *)(puVar4 + 10) + iVar18 + 4);\n        uVar8 = uVar5 & 0xff;\n        local_d4 = iVar21;\n        if (uVar11 == 0xd900) goto LAB_00094804;\n        do {\n          if (uVar11 == 0xda00) {\n            uVar5 = *(uint *)(*(int *)(param_1 + 0x1090) + (uVar8 + 4) * 4);\n            uVar11 = uVar5 & 0xffffff00;\n            uVar8 = uVar5 & 0xff;\n          }\n          else if (uVar11 == 0xd800) {\n            iVar9 = *(int *)(param_1 + 0x1090);\n            goto LAB_0009491c;\n          }\njoined_r0x00094728:\n          if (uVar11 == 0xf000) {\n            iVar9 = uVar8 + 0x404;\nLAB_00094740:\n            uVar5 = *(uint *)(*(int *)(param_1 + 0x1090) + iVar9 * 4);\n            uVar8 = uVar5 & 0xff;\n          }\n          else if (uVar11 == 0xf100) {\n            iVar9 = uVar8 + 0x204;\n            goto LAB_00094740;\n          }\n          iVar9 = local_d4 + 1;\n          local_70[1] = 0;\n          iVar10 = iVar9;\n          local_70[0] = uVar5;\n          if (((uVar5 & 0xfffffe00) == 0xf000) && ((uVar5 & 0xe0) != 0)) {\n            if (uVar8 != 0x7f) {\n              cVar16 = (char)uVar5;\n              iVar6 = (*(code *)PTR_is_dbcs_leadbyte_00111b58)\n                                (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),(int)cVar16);\n              local_30 = cVar16;\n              if (iVar6 == 0) {\n                iVar6 = (*(code *)PTR_mb_to_wc_001115cc)\n                                  (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),0,&local_30,1,\n                                   auStack_80,4);\n              }\n              else {\n                local_2f = (undefined1)*(undefined4 *)(*(int *)(puVar4 + 10) + iVar9 * 0xc);\n                iVar6 = (*(code *)PTR_mb_to_wc_001115cc)\n                                  (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),0,&local_30,2,\n                                   auStack_80,4);\n                iVar10 = local_d4 + 2;\n                local_d4 = iVar9;\n              }\n              if (0 < iVar6) {\n                (*(code *)PTR___memcpy_chk_00112078)(local_70,auStack_80,iVar6 * 4,0x40);\n                local_70[iVar6] = 0;\n                uVar5 = local_70[0];\n              }\n              goto LAB_00094778;\n            }\n            FUN_000901cc(&local_98,uVar5,uVar20);\n          }\n          else {\nLAB_00094778:\n            iVar9 = iVar10;\n            if (uVar5 != 0) {\n              uVar8 = local_70[1];\n              puVar23 = local_70;\n              while( true ) {\n                FUN_000901cc(&local_98,uVar5,uVar20);\n                if (uVar8 == 0) break;\n                uVar5 = uVar8;\n                uVar8 = puVar23[2];\n                puVar23 = puVar23 + 1;\n              }\n            }\n          }\n          iVar10 = *(int *)(puVar4 + 10);\n          iVar18 = *(int *)(iVar10 + iVar18 + 8);\n          iVar21 = iVar21 + iVar18;\n          if (iVar18 == 0) goto joined_r0x00094680;\n          iVar18 = iVar21 * 0xc;\n          uVar5 = *(uint *)(iVar10 + iVar21 * 0xc);\n          uVar20 = *(undefined4 *)(iVar10 + iVar18 + 4);\n          uVar11 = uVar5 & 0xffffff00;\n          uVar8 = uVar5 & 0xff;\n        } while (uVar11 != 0xd900);\nLAB_00094804:\n        iVar9 = *(int *)(param_1 + 0x1090);\n        if (*(int *)(param_1 + 0x1158) == 0) {\n          uVar5 = *(uint *)(iVar9 + (uVar8 + 0x304) * 4);\n          uVar11 = uVar5 & 0xffffff00;\n          uVar8 = uVar5 & 0xff;\n        }\n        else {\nLAB_0009491c:\n          uVar5 = *(uint *)(iVar9 + (uVar8 + 0x104) * 4);\n          uVar11 = uVar5 & 0xffffff00;\n          uVar8 = uVar5 & 0xff;\n        }\n        goto joined_r0x00094728;\n      }\n      iVar9 = iVar21 + 1;\n    } while( true );\n  }\n  iVar19 = local_90;\n  (*(code *)PTR_write_clip_00111b5c)\n            (*(undefined4 *)(param_1 + 0x1088),local_90,local_88,local_94,param_7);\n  (*(code *)PTR_safefree_001112f0)(local_90);\n  iVar9 = local_88;\n  (*(code *)PTR_safefree_001112f0)();\n  if (local_2c == *(int *)puVar26) {\n    return;\n  }\n  puVar26 = PTR___stack_chk_fail_001122c8;\n  (*(code *)PTR___stack_chk_fail_001122c8)();\n  iVar21 = 1;\n  if (iVar19 < 0) {\n    iVar21 = -1;\n    iVar19 = -iVar19;\n  }\n  iVar18 = *(int *)(iVar9 + 300);\n  iVar10 = *(int *)(iVar9 + 0x70);\n  iVar12 = *(int *)(iVar9 + 0x6c);\n  iVar6 = *(int *)(iVar9 + 0xe5c);\n  iVar24 = iVar18 - iVar10;\n  if (iVar24 <= iVar19) {\n    iVar19 = iVar24;\n  }\n  iVar24 = iVar24 - iVar19;\n  if (((iVar6 <= iVar12) && ((iVar12 != iVar6 || (*(int *)(iVar9 + 0xe60) <= iVar10)))) ||\n     ((iVar14 = *(int *)(iVar9 + 0xe54), iVar12 <= iVar14 &&\n      ((iVar12 != iVar14 || (iVar18 <= *(int *)(iVar9 + 0xe58))))))) goto LAB_00094c48;\n  iVar17 = iVar10 + iVar19;\n  iVar15 = iVar18;\n  if (iVar21 == 1) {\n    iVar15 = iVar18 - iVar19;\n    iVar17 = iVar10;\n  }\n  if ((iVar12 < iVar14) || ((iVar12 == iVar14 && (iVar17 <= *(int *)(iVar9 + 0xe58))))) {\n    if (iVar6 < iVar12) {\n      iVar6 = *(int *)(iVar9 + 0xe60);\n    }\n    else if ((iVar12 != iVar6) || (iVar6 = *(int *)(iVar9 + 0xe60), iVar15 < iVar6))\n    goto LAB_00094e08;\n    iVar14 = iVar21 * iVar19 + *(int *)(iVar9 + 0xe58);\n    iVar6 = iVar21 * iVar19 + iVar6;\n    *(int *)(iVar9 + 0xe58) = iVar14;\n    *(int *)(iVar9 + 0xe60) = iVar6;\n    if (iVar14 < iVar10) {\n      (**(code **)(puVar26 + 0x7d398))\n                (*(int *)(puVar26 + 0x7c740) + 0x5a20,*(int *)(puVar26 + 0x7c740) + 0x5830,0x9dd,\n                 *(int *)(puVar26 + 0x7c740) + 0x6200);\n      return;\n    }\n    if (iVar18 <= iVar14) {\n      (**(code **)(puVar26 + 0x7d398))\n                (*(int *)(puVar26 + 0x7c740) + 0x5a44,*(int *)(puVar26 + 0x7c740) + 0x5830,0x9de,\n                 *(int *)(puVar26 + 0x7c740) + 0x6200);\n      return;\n    }\n    if (iVar6 <= iVar10) {\n      (**(code **)(puVar26 + 0x7d398))\n                (*(int *)(puVar26 + 0x7c740) + 0x5a64,*(int *)(puVar26 + 0x7c740) + 0x5830,0x9df,\n                 *(int *)(puVar26 + 0x7c740) + 0x6200);\n      return;\n    }\n    if (iVar18 < iVar6) {\n      (**(code **)(puVar26 + 0x7d398))\n                (*(int *)(puVar26 + 0x7c740) + 0x5a84,*(int *)(puVar26 + 0x7c740) + 0x5830,0x9e0,\n                 *(int *)(puVar26 + 0x7c740) + 0x6200);\n      return;\n    }\n  }\n  else {\nLAB_00094e08:\n    *(undefined4 *)(iVar9 + 0xe48) = 0;\n    *(undefined4 *)(iVar9 + 0xe5c) = 0;\n    *(undefined4 *)(iVar9 + 0xe60) = 0;\n    *(undefined4 *)(iVar9 + 0xe54) = 0;\n    *(undefined4 *)(iVar9 + 0xe58) = 0;\n  }\nLAB_00094c48:\n  if ((0 < iVar10) && (iVar10 <= iVar18)) {\n    FUN_00092d1c(iVar9,iVar10,iVar12);\n    iVar12 = *(int *)(iVar9 + 0x6c);\n  }\n  if (iVar21 == -1) {\n    iVar21 = iVar19 + *(int *)(iVar9 + 0x70);\n    if ((0 < iVar21) && (iVar21 <= *(int *)(iVar9 + 300))) {\n      FUN_00092d1c(iVar9,iVar21,iVar12,1);\n      iVar12 = *(int *)(iVar9 + 0x6c);\n    }\n    iVar21 = FUN_00092a9c(iVar9,iVar12,0x9eb,1);\n    if (0 < iVar24) {\n      iVar18 = *(int *)(puVar26 + 0x7cf20);\n      iVar10 = 0;\n      do {\n        iVar6 = iVar10 + *(int *)(iVar9 + 0x70);\n        iVar12 = iVar6 + iVar19;\n        iVar6 = iVar6 * 0xc;\n        puVar22 = (undefined4 *)(*(int *)(iVar21 + 0x14) + iVar12 * 0xc);\n        puVar25 = (undefined4 *)(*(int *)(iVar21 + 0x14) + iVar6);\n        (*(code *)(iVar18 + 0xab0))(iVar21,(iVar6 >> 2) * -0x55555555);\n        uVar20 = puVar22[2];\n        uVar13 = puVar22[1];\n        *puVar25 = *puVar22;\n        puVar25[1] = uVar13;\n        puVar25[2] = uVar20;\n        if (puVar22[2] != 0) {\n          puVar25[2] = (iVar6 + iVar12 * -0xc >> 2) * 0x55555555 + puVar22[2];\n        }\n        iVar10 = iVar10 + 1;\n        puVar22[2] = 0;\n      } while (iVar24 != iVar10);\n    }\n    if (iVar19 != 0) {\n      iVar18 = iVar24;\n      do {\n        iVar10 = iVar18 + 1;\n        FUN_00091070(iVar21,iVar18 + *(int *)(iVar9 + 0x70),iVar9 + 0x54);\n        iVar18 = iVar10;\n      } while (iVar10 != iVar19 + iVar24);\n      return;\n    }\n  }\n  else {\n    iVar18 = iVar24 + -1;\n    iVar21 = FUN_00092a9c(iVar9,iVar12,0x9eb,1);\n    if (iVar24 != 0) {\n      iVar10 = *(int *)(puVar26 + 0x7cf20);\n      do {\n        iVar6 = iVar18 + *(int *)(iVar9 + 0x70);\n        iVar12 = (iVar19 + iVar6) * 0xc;\n        puVar22 = (undefined4 *)(*(int *)(iVar21 + 0x14) + iVar6 * 0xc);\n        puVar25 = (undefined4 *)(*(int *)(iVar21 + 0x14) + iVar12);\n        (*(code *)(iVar10 + 0xab0))(iVar21,(iVar12 >> 2) * -0x55555555);\n        uVar20 = puVar22[2];\n        uVar13 = puVar22[1];\n        *puVar25 = *puVar22;\n        puVar25[1] = uVar13;\n        puVar25[2] = uVar20;\n        if (puVar22[2] != 0) {\n          puVar25[2] = (iVar12 + iVar6 * -0xc >> 2) * 0x55555555 + puVar22[2];\n        }\n        iVar18 = iVar18 + -1;\n        puVar22[2] = 0;\n      } while (iVar18 != -1);\n    }\n    iVar18 = iVar19 + -1;\n    if (iVar19 != 0) {\n      do {\n        iVar19 = iVar18 + *(int *)(iVar9 + 0x70);\n        iVar18 = iVar18 + -1;\n        FUN_00091070(iVar21,iVar19,iVar9 + 0x54);\n      } while (iVar18 != -1);\n    }\n  }\n  return;\nLAB_00094994:\n  if (bVar2) {\n    FUN_000901cc(&local_98,10,0);\n  }\n  if (*(int *)(puVar4 + 6) != 0) {\n    (*pcVar3)(puVar4);\n  }\n  local_cc = local_cc + 1;\n  local_d4 = iVar19;\n  goto LAB_000945cc;\n}\n\n" (function_definition "void FUN_000944e4(int param_1,int param_2,int param_3,int param_4,int param_5,int param_6,\n                 undefined4 param_7)\n\n{\n  bool bVar1;\n  bool bVar2;\n  code *pcVar3;\n  ushort *puVar4;\n  uint uVar5;\n  int iVar6;\n  code *pcVar7;\n  uint uVar8;\n  int iVar9;\n  int iVar10;\n  uint uVar11;\n  int iVar12;\n  undefined4 uVar13;\n  int iVar14;\n  char cVar16;\n  int iVar15;\n  int iVar17;\n  int iVar18;\n  int iVar19;\n  undefined4 uVar20;\n  int iVar21;\n  undefined4 *puVar22;\n  uint *puVar23;\n  int iVar24;\n  undefined4 *puVar25;\n  undefined *puVar26;\n  int local_d4;\n  int local_cc;\n  int local_c8;\n  int local_c0;\n  undefined4 local_98;\n  undefined4 local_94;\n  int local_90;\n  int local_8c;\n  int local_88;\n  int local_84;\n  undefined1 auStack_80 [16];\n  uint local_70 [16];\n  char local_30;\n  undefined1 local_2f;\n  int local_2c;\n  \n  puVar26 = PTR___stack_chk_guard_00112630;\n  local_2c = *(int *)PTR___stack_chk_guard_00112630;\n  local_98 = 0x1400;\n  local_94 = 0;\n  local_90 = (*(code *)PTR_safemalloc_001112ec)(0x1400,4);\n  local_8c = local_90;\n  local_88 = (*(code *)PTR_safemalloc_001112ec)(local_98,4);\n  pcVar7 = (code *)(PTR_LAB_00111ad8 + 0x2a9c);\n  iVar19 = param_3;\n  if (param_6 == 0) {\n    iVar19 = 0;\n  }\n  pcVar3 = (code *)(PTR_LAB_00111ad8 + 0x1270);\n  local_d4 = param_3;\n  local_cc = param_2;\n  local_84 = local_88;\nLAB_000945cc:\n  bVar1 = local_cc < param_4;\n  if ((bVar1) || ((local_cc == param_4 && (local_d4 < param_5)))) {\n    puVar4 = (ushort *)(*pcVar7)(param_1,local_cc,0x1595,0);\n    local_c0 = *(int *)(param_1 + 300);\n    if ((*puVar4 & 0x10) == 0) {\n      if (local_c0 != 0) {\n        iVar9 = *(int *)(puVar4 + 10) + local_c0 * 0xc;\n        do {\n          if ((((*(uint *)(iVar9 + -0xc) != 0x20) &&\n               ((*(uint *)(iVar9 + -0xc) & 0xfffffcff) != 0xd820)) || (*(int *)(iVar9 + -4) != 0))\n             || (local_c0 <= local_d4)) break;\n          local_c0 = local_c0 + -1;\n          iVar9 = iVar9 + -0xc;\n        } while (local_c0 != 0);\n      }\n      if (bVar1) {\n        local_c8 = local_cc;\n        bVar2 = true;\n      }\n      else if (local_cc == param_4) {\n        bVar2 = local_c0 < param_5;\n        local_c8 = local_cc;\n      }\n      else {\n        bVar2 = false;\n        local_c8 = local_cc;\n      }\n    }\n    else if ((*puVar4 & 0x20) == 0) {\n      bVar2 = false;\n      local_c8 = local_cc;\n    }\n    else if (local_c0 == 0) {\n      bVar2 = false;\n      local_c8 = local_cc + -1;\n    }\n    else {\n      bVar2 = false;\n      local_c8 = local_cc;\n      local_c0 = local_c0 + -1;\n    }\n    iVar9 = local_d4;\n    if ((param_6 != 0) && (bVar2 = bVar1, param_5 < local_c0)) {\n      local_c0 = param_5;\n    }\njoined_r0x00094680:\n    do {\n      iVar21 = iVar9;\n      if (((!bVar1) && ((local_cc != param_4 || (param_5 <= iVar21)))) ||\n         ((local_c8 <= local_cc && ((local_c8 != local_cc || (local_c0 <= iVar21))))))\n      goto LAB_00094994;\n      uVar5 = *(uint *)(*(int *)(puVar4 + 10) + iVar21 * 0xc);\n      if (uVar5 != 0xdfff) {\n        uVar11 = uVar5 & 0xffffff00;\n        iVar18 = iVar21 * 0xc;\n        uVar20 = *(undefined4 *)(*(int *)(puVar4 + 10) + iVar18 + 4);\n        uVar8 = uVar5 & 0xff;\n        local_d4 = iVar21;\n        if (uVar11 == 0xd900) goto LAB_00094804;\n        do {\n          if (uVar11 == 0xda00) {\n            uVar5 = *(uint *)(*(int *)(param_1 + 0x1090) + (uVar8 + 4) * 4);\n            uVar11 = uVar5 & 0xffffff00;\n            uVar8 = uVar5 & 0xff;\n          }\n          else if (uVar11 == 0xd800) {\n            iVar9 = *(int *)(param_1 + 0x1090);\n            goto LAB_0009491c;\n          }\njoined_r0x00094728:\n          if (uVar11 == 0xf000) {\n            iVar9 = uVar8 + 0x404;\nLAB_00094740:\n            uVar5 = *(uint *)(*(int *)(param_1 + 0x1090) + iVar9 * 4);\n            uVar8 = uVar5 & 0xff;\n          }\n          else if (uVar11 == 0xf100) {\n            iVar9 = uVar8 + 0x204;\n            goto LAB_00094740;\n          }\n          iVar9 = local_d4 + 1;\n          local_70[1] = 0;\n          iVar10 = iVar9;\n          local_70[0] = uVar5;\n          if (((uVar5 & 0xfffffe00) == 0xf000) && ((uVar5 & 0xe0) != 0)) {\n            if (uVar8 != 0x7f) {\n              cVar16 = (char)uVar5;\n              iVar6 = (*(code *)PTR_is_dbcs_leadbyte_00111b58)\n                                (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),(int)cVar16);\n              local_30 = cVar16;\n              if (iVar6 == 0) {\n                iVar6 = (*(code *)PTR_mb_to_wc_001115cc)\n                                  (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),0,&local_30,1,\n                                   auStack_80,4);\n              }\n              else {\n                local_2f = (undefined1)*(undefined4 *)(*(int *)(puVar4 + 10) + iVar9 * 0xc);\n                iVar6 = (*(code *)PTR_mb_to_wc_001115cc)\n                                  (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),0,&local_30,2,\n                                   auStack_80,4);\n                iVar10 = local_d4 + 2;\n                local_d4 = iVar9;\n              }\n              if (0 < iVar6) {\n                (*(code *)PTR___memcpy_chk_00112078)(local_70,auStack_80,iVar6 * 4,0x40);\n                local_70[iVar6] = 0;\n                uVar5 = local_70[0];\n              }\n              goto LAB_00094778;\n            }\n            FUN_000901cc(&local_98,uVar5,uVar20);\n          }\n          else {\nLAB_00094778:\n            iVar9 = iVar10;\n            if (uVar5 != 0) {\n              uVar8 = local_70[1];\n              puVar23 = local_70;\n              while( true ) {\n                FUN_000901cc(&local_98,uVar5,uVar20);\n                if (uVar8 == 0) break;\n                uVar5 = uVar8;\n                uVar8 = puVar23[2];\n                puVar23 = puVar23 + 1;\n              }\n            }\n          }\n          iVar10 = *(int *)(puVar4 + 10);\n          iVar18 = *(int *)(iVar10 + iVar18 + 8);\n          iVar21 = iVar21 + iVar18;\n          if (iVar18 == 0) goto joined_r0x00094680;\n          iVar18 = iVar21 * 0xc;\n          uVar5 = *(uint *)(iVar10 + iVar21 * 0xc);\n          uVar20 = *(undefined4 *)(iVar10 + iVar18 + 4);\n          uVar11 = uVar5 & 0xffffff00;\n          uVar8 = uVar5 & 0xff;\n        } while (uVar11 != 0xd900);\nLAB_00094804:\n        iVar9 = *(int *)(param_1 + 0x1090);\n        if (*(int *)(param_1 + 0x1158) == 0) {\n          uVar5 = *(uint *)(iVar9 + (uVar8 + 0x304) * 4);\n          uVar11 = uVar5 & 0xffffff00;\n          uVar8 = uVar5 & 0xff;\n        }\n        else {\nLAB_0009491c:\n          uVar5 = *(uint *)(iVar9 + (uVar8 + 0x104) * 4);\n          uVar11 = uVar5 & 0xffffff00;\n          uVar8 = uVar5 & 0xff;\n        }\n        goto joined_r0x00094728;\n      }\n      iVar9 = iVar21 + 1;\n    } while( true );\n  }\n  iVar19 = local_90;\n  (*(code *)PTR_write_clip_00111b5c)\n            (*(undefined4 *)(param_1 + 0x1088),local_90,local_88,local_94,param_7);\n  (*(code *)PTR_safefree_001112f0)(local_90);\n  iVar9 = local_88;\n  (*(code *)PTR_safefree_001112f0)();\n  if (local_2c == *(int *)puVar26) {\n    return;\n  }\n  puVar26 = PTR___stack_chk_fail_001122c8;\n  (*(code *)PTR___stack_chk_fail_001122c8)();\n  iVar21 = 1;\n  if (iVar19 < 0) {\n    iVar21 = -1;\n    iVar19 = -iVar19;\n  }\n  iVar18 = *(int *)(iVar9 + 300);\n  iVar10 = *(int *)(iVar9 + 0x70);\n  iVar12 = *(int *)(iVar9 + 0x6c);\n  iVar6 = *(int *)(iVar9 + 0xe5c);\n  iVar24 = iVar18 - iVar10;\n  if (iVar24 <= iVar19) {\n    iVar19 = iVar24;\n  }\n  iVar24 = iVar24 - iVar19;\n  if (((iVar6 <= iVar12) && ((iVar12 != iVar6 || (*(int *)(iVar9 + 0xe60) <= iVar10)))) ||\n     ((iVar14 = *(int *)(iVar9 + 0xe54), iVar12 <= iVar14 &&\n      ((iVar12 != iVar14 || (iVar18 <= *(int *)(iVar9 + 0xe58))))))) goto LAB_00094c48;\n  iVar17 = iVar10 + iVar19;\n  iVar15 = iVar18;\n  if (iVar21 == 1) {\n    iVar15 = iVar18 - iVar19;\n    iVar17 = iVar10;\n  }\n  if ((iVar12 < iVar14) || ((iVar12 == iVar14 && (iVar17 <= *(int *)(iVar9 + 0xe58))))) {\n    if (iVar6 < iVar12) {\n      iVar6 = *(int *)(iVar9 + 0xe60);\n    }\n    else if ((iVar12 != iVar6) || (iVar6 = *(int *)(iVar9 + 0xe60), iVar15 < iVar6))\n    goto LAB_00094e08;\n    iVar14 = iVar21 * iVar19 + *(int *)(iVar9 + 0xe58);\n    iVar6 = iVar21 * iVar19 + iVar6;\n    *(int *)(iVar9 + 0xe58) = iVar14;\n    *(int *)(iVar9 + 0xe60) = iVar6;\n    if (iVar14 < iVar10) {\n      (**(code **)(puVar26 + 0x7d398))\n                (*(int *)(puVar26 + 0x7c740) + 0x5a20,*(int *)(puVar26 + 0x7c740) + 0x5830,0x9dd,\n                 *(int *)(puVar26 + 0x7c740) + 0x6200);\n      return;\n    }\n    if (iVar18 <= iVar14) {\n      (**(code **)(puVar26 + 0x7d398))\n                (*(int *)(puVar26 + 0x7c740) + 0x5a44,*(int *)(puVar26 + 0x7c740) + 0x5830,0x9de,\n                 *(int *)(puVar26 + 0x7c740) + 0x6200);\n      return;\n    }\n    if (iVar6 <= iVar10) {\n      (**(code **)(puVar26 + 0x7d398))\n                (*(int *)(puVar26 + 0x7c740) + 0x5a64,*(int *)(puVar26 + 0x7c740) + 0x5830,0x9df,\n                 *(int *)(puVar26 + 0x7c740) + 0x6200);\n      return;\n    }\n    if (iVar18 < iVar6) {\n      (**(code **)(puVar26 + 0x7d398))\n                (*(int *)(puVar26 + 0x7c740) + 0x5a84,*(int *)(puVar26 + 0x7c740) + 0x5830,0x9e0,\n                 *(int *)(puVar26 + 0x7c740) + 0x6200);\n      return;\n    }\n  }\n  else {\nLAB_00094e08:\n    *(undefined4 *)(iVar9 + 0xe48) = 0;\n    *(undefined4 *)(iVar9 + 0xe5c) = 0;\n    *(undefined4 *)(iVar9 + 0xe60) = 0;\n    *(undefined4 *)(iVar9 + 0xe54) = 0;\n    *(undefined4 *)(iVar9 + 0xe58) = 0;\n  }\nLAB_00094c48:\n  if ((0 < iVar10) && (iVar10 <= iVar18)) {\n    FUN_00092d1c(iVar9,iVar10,iVar12);\n    iVar12 = *(int *)(iVar9 + 0x6c);\n  }\n  if (iVar21 == -1) {\n    iVar21 = iVar19 + *(int *)(iVar9 + 0x70);\n    if ((0 < iVar21) && (iVar21 <= *(int *)(iVar9 + 300))) {\n      FUN_00092d1c(iVar9,iVar21,iVar12,1);\n      iVar12 = *(int *)(iVar9 + 0x6c);\n    }\n    iVar21 = FUN_00092a9c(iVar9,iVar12,0x9eb,1);\n    if (0 < iVar24) {\n      iVar18 = *(int *)(puVar26 + 0x7cf20);\n      iVar10 = 0;\n      do {\n        iVar6 = iVar10 + *(int *)(iVar9 + 0x70);\n        iVar12 = iVar6 + iVar19;\n        iVar6 = iVar6 * 0xc;\n        puVar22 = (undefined4 *)(*(int *)(iVar21 + 0x14) + iVar12 * 0xc);\n        puVar25 = (undefined4 *)(*(int *)(iVar21 + 0x14) + iVar6);\n        (*(code *)(iVar18 + 0xab0))(iVar21,(iVar6 >> 2) * -0x55555555);\n        uVar20 = puVar22[2];\n        uVar13 = puVar22[1];\n        *puVar25 = *puVar22;\n        puVar25[1] = uVar13;\n        puVar25[2] = uVar20;\n        if (puVar22[2] != 0) {\n          puVar25[2] = (iVar6 + iVar12 * -0xc >> 2) * 0x55555555 + puVar22[2];\n        }\n        iVar10 = iVar10 + 1;\n        puVar22[2] = 0;\n      } while (iVar24 != iVar10);\n    }\n    if (iVar19 != 0) {\n      iVar18 = iVar24;\n      do {\n        iVar10 = iVar18 + 1;\n        FUN_00091070(iVar21,iVar18 + *(int *)(iVar9 + 0x70),iVar9 + 0x54);\n        iVar18 = iVar10;\n      } while (iVar10 != iVar19 + iVar24);\n      return;\n    }\n  }\n  else {\n    iVar18 = iVar24 + -1;\n    iVar21 = FUN_00092a9c(iVar9,iVar12,0x9eb,1);\n    if (iVar24 != 0) {\n      iVar10 = *(int *)(puVar26 + 0x7cf20);\n      do {\n        iVar6 = iVar18 + *(int *)(iVar9 + 0x70);\n        iVar12 = (iVar19 + iVar6) * 0xc;\n        puVar22 = (undefined4 *)(*(int *)(iVar21 + 0x14) + iVar6 * 0xc);\n        puVar25 = (undefined4 *)(*(int *)(iVar21 + 0x14) + iVar12);\n        (*(code *)(iVar10 + 0xab0))(iVar21,(iVar12 >> 2) * -0x55555555);\n        uVar20 = puVar22[2];\n        uVar13 = puVar22[1];\n        *puVar25 = *puVar22;\n        puVar25[1] = uVar13;\n        puVar25[2] = uVar20;\n        if (puVar22[2] != 0) {\n          puVar25[2] = (iVar12 + iVar6 * -0xc >> 2) * 0x55555555 + puVar22[2];\n        }\n        iVar18 = iVar18 + -1;\n        puVar22[2] = 0;\n      } while (iVar18 != -1);\n    }\n    iVar18 = iVar19 + -1;\n    if (iVar19 != 0) {\n      do {\n        iVar19 = iVar18 + *(int *)(iVar9 + 0x70);\n        iVar18 = iVar18 + -1;\n        FUN_00091070(iVar21,iVar19,iVar9 + 0x54);\n      } while (iVar18 != -1);\n    }\n  }\n  return;\nLAB_00094994:\n  if (bVar2) {\n    FUN_000901cc(&local_98,10,0);\n  }\n  if (*(int *)(puVar4 + 6) != 0) {\n    (*pcVar3)(puVar4);\n  }\n  local_cc = local_cc + 1;\n  local_d4 = iVar19;\n  goto LAB_000945cc;\n}" primitive_type (function_declarator "FUN_000944e4(int param_1,int param_2,int param_3,int param_4,int param_5,int param_6,\n                 undefined4 param_7)" identifier (parameter_list "(int param_1,int param_2,int param_3,int param_4,int param_5,int param_6,\n                 undefined4 param_7)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "int param_3" primitive_type identifier) , (parameter_declaration "int param_4" primitive_type identifier) , (parameter_declaration "int param_5" primitive_type identifier) , (parameter_declaration "int param_6" primitive_type identifier) , (parameter_declaration "undefined4 param_7" type_identifier identifier) ))) (compound_statement "{\n  bool bVar1;\n  bool bVar2;\n  code *pcVar3;\n  ushort *puVar4;\n  uint uVar5;\n  int iVar6;\n  code *pcVar7;\n  uint uVar8;\n  int iVar9;\n  int iVar10;\n  uint uVar11;\n  int iVar12;\n  undefined4 uVar13;\n  int iVar14;\n  char cVar16;\n  int iVar15;\n  int iVar17;\n  int iVar18;\n  int iVar19;\n  undefined4 uVar20;\n  int iVar21;\n  undefined4 *puVar22;\n  uint *puVar23;\n  int iVar24;\n  undefined4 *puVar25;\n  undefined *puVar26;\n  int local_d4;\n  int local_cc;\n  int local_c8;\n  int local_c0;\n  undefined4 local_98;\n  undefined4 local_94;\n  int local_90;\n  int local_8c;\n  int local_88;\n  int local_84;\n  undefined1 auStack_80 [16];\n  uint local_70 [16];\n  char local_30;\n  undefined1 local_2f;\n  int local_2c;\n  \n  puVar26 = PTR___stack_chk_guard_00112630;\n  local_2c = *(int *)PTR___stack_chk_guard_00112630;\n  local_98 = 0x1400;\n  local_94 = 0;\n  local_90 = (*(code *)PTR_safemalloc_001112ec)(0x1400,4);\n  local_8c = local_90;\n  local_88 = (*(code *)PTR_safemalloc_001112ec)(local_98,4);\n  pcVar7 = (code *)(PTR_LAB_00111ad8 + 0x2a9c);\n  iVar19 = param_3;\n  if (param_6 == 0) {\n    iVar19 = 0;\n  }\n  pcVar3 = (code *)(PTR_LAB_00111ad8 + 0x1270);\n  local_d4 = param_3;\n  local_cc = param_2;\n  local_84 = local_88;\nLAB_000945cc:\n  bVar1 = local_cc < param_4;\n  if ((bVar1) || ((local_cc == param_4 && (local_d4 < param_5)))) {\n    puVar4 = (ushort *)(*pcVar7)(param_1,local_cc,0x1595,0);\n    local_c0 = *(int *)(param_1 + 300);\n    if ((*puVar4 & 0x10) == 0) {\n      if (local_c0 != 0) {\n        iVar9 = *(int *)(puVar4 + 10) + local_c0 * 0xc;\n        do {\n          if ((((*(uint *)(iVar9 + -0xc) != 0x20) &&\n               ((*(uint *)(iVar9 + -0xc) & 0xfffffcff) != 0xd820)) || (*(int *)(iVar9 + -4) != 0))\n             || (local_c0 <= local_d4)) break;\n          local_c0 = local_c0 + -1;\n          iVar9 = iVar9 + -0xc;\n        } while (local_c0 != 0);\n      }\n      if (bVar1) {\n        local_c8 = local_cc;\n        bVar2 = true;\n      }\n      else if (local_cc == param_4) {\n        bVar2 = local_c0 < param_5;\n        local_c8 = local_cc;\n      }\n      else {\n        bVar2 = false;\n        local_c8 = local_cc;\n      }\n    }\n    else if ((*puVar4 & 0x20) == 0) {\n      bVar2 = false;\n      local_c8 = local_cc;\n    }\n    else if (local_c0 == 0) {\n      bVar2 = false;\n      local_c8 = local_cc + -1;\n    }\n    else {\n      bVar2 = false;\n      local_c8 = local_cc;\n      local_c0 = local_c0 + -1;\n    }\n    iVar9 = local_d4;\n    if ((param_6 != 0) && (bVar2 = bVar1, param_5 < local_c0)) {\n      local_c0 = param_5;\n    }\njoined_r0x00094680:\n    do {\n      iVar21 = iVar9;\n      if (((!bVar1) && ((local_cc != param_4 || (param_5 <= iVar21)))) ||\n         ((local_c8 <= local_cc && ((local_c8 != local_cc || (local_c0 <= iVar21))))))\n      goto LAB_00094994;\n      uVar5 = *(uint *)(*(int *)(puVar4 + 10) + iVar21 * 0xc);\n      if (uVar5 != 0xdfff) {\n        uVar11 = uVar5 & 0xffffff00;\n        iVar18 = iVar21 * 0xc;\n        uVar20 = *(undefined4 *)(*(int *)(puVar4 + 10) + iVar18 + 4);\n        uVar8 = uVar5 & 0xff;\n        local_d4 = iVar21;\n        if (uVar11 == 0xd900) goto LAB_00094804;\n        do {\n          if (uVar11 == 0xda00) {\n            uVar5 = *(uint *)(*(int *)(param_1 + 0x1090) + (uVar8 + 4) * 4);\n            uVar11 = uVar5 & 0xffffff00;\n            uVar8 = uVar5 & 0xff;\n          }\n          else if (uVar11 == 0xd800) {\n            iVar9 = *(int *)(param_1 + 0x1090);\n            goto LAB_0009491c;\n          }\njoined_r0x00094728:\n          if (uVar11 == 0xf000) {\n            iVar9 = uVar8 + 0x404;\nLAB_00094740:\n            uVar5 = *(uint *)(*(int *)(param_1 + 0x1090) + iVar9 * 4);\n            uVar8 = uVar5 & 0xff;\n          }\n          else if (uVar11 == 0xf100) {\n            iVar9 = uVar8 + 0x204;\n            goto LAB_00094740;\n          }\n          iVar9 = local_d4 + 1;\n          local_70[1] = 0;\n          iVar10 = iVar9;\n          local_70[0] = uVar5;\n          if (((uVar5 & 0xfffffe00) == 0xf000) && ((uVar5 & 0xe0) != 0)) {\n            if (uVar8 != 0x7f) {\n              cVar16 = (char)uVar5;\n              iVar6 = (*(code *)PTR_is_dbcs_leadbyte_00111b58)\n                                (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),(int)cVar16);\n              local_30 = cVar16;\n              if (iVar6 == 0) {\n                iVar6 = (*(code *)PTR_mb_to_wc_001115cc)\n                                  (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),0,&local_30,1,\n                                   auStack_80,4);\n              }\n              else {\n                local_2f = (undefined1)*(undefined4 *)(*(int *)(puVar4 + 10) + iVar9 * 0xc);\n                iVar6 = (*(code *)PTR_mb_to_wc_001115cc)\n                                  (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),0,&local_30,2,\n                                   auStack_80,4);\n                iVar10 = local_d4 + 2;\n                local_d4 = iVar9;\n              }\n              if (0 < iVar6) {\n                (*(code *)PTR___memcpy_chk_00112078)(local_70,auStack_80,iVar6 * 4,0x40);\n                local_70[iVar6] = 0;\n                uVar5 = local_70[0];\n              }\n              goto LAB_00094778;\n            }\n            FUN_000901cc(&local_98,uVar5,uVar20);\n          }\n          else {\nLAB_00094778:\n            iVar9 = iVar10;\n            if (uVar5 != 0) {\n              uVar8 = local_70[1];\n              puVar23 = local_70;\n              while( true ) {\n                FUN_000901cc(&local_98,uVar5,uVar20);\n                if (uVar8 == 0) break;\n                uVar5 = uVar8;\n                uVar8 = puVar23[2];\n                puVar23 = puVar23 + 1;\n              }\n            }\n          }\n          iVar10 = *(int *)(puVar4 + 10);\n          iVar18 = *(int *)(iVar10 + iVar18 + 8);\n          iVar21 = iVar21 + iVar18;\n          if (iVar18 == 0) goto joined_r0x00094680;\n          iVar18 = iVar21 * 0xc;\n          uVar5 = *(uint *)(iVar10 + iVar21 * 0xc);\n          uVar20 = *(undefined4 *)(iVar10 + iVar18 + 4);\n          uVar11 = uVar5 & 0xffffff00;\n          uVar8 = uVar5 & 0xff;\n        } while (uVar11 != 0xd900);\nLAB_00094804:\n        iVar9 = *(int *)(param_1 + 0x1090);\n        if (*(int *)(param_1 + 0x1158) == 0) {\n          uVar5 = *(uint *)(iVar9 + (uVar8 + 0x304) * 4);\n          uVar11 = uVar5 & 0xffffff00;\n          uVar8 = uVar5 & 0xff;\n        }\n        else {\nLAB_0009491c:\n          uVar5 = *(uint *)(iVar9 + (uVar8 + 0x104) * 4);\n          uVar11 = uVar5 & 0xffffff00;\n          uVar8 = uVar5 & 0xff;\n        }\n        goto joined_r0x00094728;\n      }\n      iVar9 = iVar21 + 1;\n    } while( true );\n  }\n  iVar19 = local_90;\n  (*(code *)PTR_write_clip_00111b5c)\n            (*(undefined4 *)(param_1 + 0x1088),local_90,local_88,local_94,param_7);\n  (*(code *)PTR_safefree_001112f0)(local_90);\n  iVar9 = local_88;\n  (*(code *)PTR_safefree_001112f0)();\n  if (local_2c == *(int *)puVar26) {\n    return;\n  }\n  puVar26 = PTR___stack_chk_fail_001122c8;\n  (*(code *)PTR___stack_chk_fail_001122c8)();\n  iVar21 = 1;\n  if (iVar19 < 0) {\n    iVar21 = -1;\n    iVar19 = -iVar19;\n  }\n  iVar18 = *(int *)(iVar9 + 300);\n  iVar10 = *(int *)(iVar9 + 0x70);\n  iVar12 = *(int *)(iVar9 + 0x6c);\n  iVar6 = *(int *)(iVar9 + 0xe5c);\n  iVar24 = iVar18 - iVar10;\n  if (iVar24 <= iVar19) {\n    iVar19 = iVar24;\n  }\n  iVar24 = iVar24 - iVar19;\n  if (((iVar6 <= iVar12) && ((iVar12 != iVar6 || (*(int *)(iVar9 + 0xe60) <= iVar10)))) ||\n     ((iVar14 = *(int *)(iVar9 + 0xe54), iVar12 <= iVar14 &&\n      ((iVar12 != iVar14 || (iVar18 <= *(int *)(iVar9 + 0xe58))))))) goto LAB_00094c48;\n  iVar17 = iVar10 + iVar19;\n  iVar15 = iVar18;\n  if (iVar21 == 1) {\n    iVar15 = iVar18 - iVar19;\n    iVar17 = iVar10;\n  }\n  if ((iVar12 < iVar14) || ((iVar12 == iVar14 && (iVar17 <= *(int *)(iVar9 + 0xe58))))) {\n    if (iVar6 < iVar12) {\n      iVar6 = *(int *)(iVar9 + 0xe60);\n    }\n    else if ((iVar12 != iVar6) || (iVar6 = *(int *)(iVar9 + 0xe60), iVar15 < iVar6))\n    goto LAB_00094e08;\n    iVar14 = iVar21 * iVar19 + *(int *)(iVar9 + 0xe58);\n    iVar6 = iVar21 * iVar19 + iVar6;\n    *(int *)(iVar9 + 0xe58) = iVar14;\n    *(int *)(iVar9 + 0xe60) = iVar6;\n    if (iVar14 < iVar10) {\n      (**(code **)(puVar26 + 0x7d398))\n                (*(int *)(puVar26 + 0x7c740) + 0x5a20,*(int *)(puVar26 + 0x7c740) + 0x5830,0x9dd,\n                 *(int *)(puVar26 + 0x7c740) + 0x6200);\n      return;\n    }\n    if (iVar18 <= iVar14) {\n      (**(code **)(puVar26 + 0x7d398))\n                (*(int *)(puVar26 + 0x7c740) + 0x5a44,*(int *)(puVar26 + 0x7c740) + 0x5830,0x9de,\n                 *(int *)(puVar26 + 0x7c740) + 0x6200);\n      return;\n    }\n    if (iVar6 <= iVar10) {\n      (**(code **)(puVar26 + 0x7d398))\n                (*(int *)(puVar26 + 0x7c740) + 0x5a64,*(int *)(puVar26 + 0x7c740) + 0x5830,0x9df,\n                 *(int *)(puVar26 + 0x7c740) + 0x6200);\n      return;\n    }\n    if (iVar18 < iVar6) {\n      (**(code **)(puVar26 + 0x7d398))\n                (*(int *)(puVar26 + 0x7c740) + 0x5a84,*(int *)(puVar26 + 0x7c740) + 0x5830,0x9e0,\n                 *(int *)(puVar26 + 0x7c740) + 0x6200);\n      return;\n    }\n  }\n  else {\nLAB_00094e08:\n    *(undefined4 *)(iVar9 + 0xe48) = 0;\n    *(undefined4 *)(iVar9 + 0xe5c) = 0;\n    *(undefined4 *)(iVar9 + 0xe60) = 0;\n    *(undefined4 *)(iVar9 + 0xe54) = 0;\n    *(undefined4 *)(iVar9 + 0xe58) = 0;\n  }\nLAB_00094c48:\n  if ((0 < iVar10) && (iVar10 <= iVar18)) {\n    FUN_00092d1c(iVar9,iVar10,iVar12);\n    iVar12 = *(int *)(iVar9 + 0x6c);\n  }\n  if (iVar21 == -1) {\n    iVar21 = iVar19 + *(int *)(iVar9 + 0x70);\n    if ((0 < iVar21) && (iVar21 <= *(int *)(iVar9 + 300))) {\n      FUN_00092d1c(iVar9,iVar21,iVar12,1);\n      iVar12 = *(int *)(iVar9 + 0x6c);\n    }\n    iVar21 = FUN_00092a9c(iVar9,iVar12,0x9eb,1);\n    if (0 < iVar24) {\n      iVar18 = *(int *)(puVar26 + 0x7cf20);\n      iVar10 = 0;\n      do {\n        iVar6 = iVar10 + *(int *)(iVar9 + 0x70);\n        iVar12 = iVar6 + iVar19;\n        iVar6 = iVar6 * 0xc;\n        puVar22 = (undefined4 *)(*(int *)(iVar21 + 0x14) + iVar12 * 0xc);\n        puVar25 = (undefined4 *)(*(int *)(iVar21 + 0x14) + iVar6);\n        (*(code *)(iVar18 + 0xab0))(iVar21,(iVar6 >> 2) * -0x55555555);\n        uVar20 = puVar22[2];\n        uVar13 = puVar22[1];\n        *puVar25 = *puVar22;\n        puVar25[1] = uVar13;\n        puVar25[2] = uVar20;\n        if (puVar22[2] != 0) {\n          puVar25[2] = (iVar6 + iVar12 * -0xc >> 2) * 0x55555555 + puVar22[2];\n        }\n        iVar10 = iVar10 + 1;\n        puVar22[2] = 0;\n      } while (iVar24 != iVar10);\n    }\n    if (iVar19 != 0) {\n      iVar18 = iVar24;\n      do {\n        iVar10 = iVar18 + 1;\n        FUN_00091070(iVar21,iVar18 + *(int *)(iVar9 + 0x70),iVar9 + 0x54);\n        iVar18 = iVar10;\n      } while (iVar10 != iVar19 + iVar24);\n      return;\n    }\n  }\n  else {\n    iVar18 = iVar24 + -1;\n    iVar21 = FUN_00092a9c(iVar9,iVar12,0x9eb,1);\n    if (iVar24 != 0) {\n      iVar10 = *(int *)(puVar26 + 0x7cf20);\n      do {\n        iVar6 = iVar18 + *(int *)(iVar9 + 0x70);\n        iVar12 = (iVar19 + iVar6) * 0xc;\n        puVar22 = (undefined4 *)(*(int *)(iVar21 + 0x14) + iVar6 * 0xc);\n        puVar25 = (undefined4 *)(*(int *)(iVar21 + 0x14) + iVar12);\n        (*(code *)(iVar10 + 0xab0))(iVar21,(iVar12 >> 2) * -0x55555555);\n        uVar20 = puVar22[2];\n        uVar13 = puVar22[1];\n        *puVar25 = *puVar22;\n        puVar25[1] = uVar13;\n        puVar25[2] = uVar20;\n        if (puVar22[2] != 0) {\n          puVar25[2] = (iVar12 + iVar6 * -0xc >> 2) * 0x55555555 + puVar22[2];\n        }\n        iVar18 = iVar18 + -1;\n        puVar22[2] = 0;\n      } while (iVar18 != -1);\n    }\n    iVar18 = iVar19 + -1;\n    if (iVar19 != 0) {\n      do {\n        iVar19 = iVar18 + *(int *)(iVar9 + 0x70);\n        iVar18 = iVar18 + -1;\n        FUN_00091070(iVar21,iVar19,iVar9 + 0x54);\n      } while (iVar18 != -1);\n    }\n  }\n  return;\nLAB_00094994:\n  if (bVar2) {\n    FUN_000901cc(&local_98,10,0);\n  }\n  if (*(int *)(puVar4 + 6) != 0) {\n    (*pcVar3)(puVar4);\n  }\n  local_cc = local_cc + 1;\n  local_d4 = iVar19;\n  goto LAB_000945cc;\n}" { (declaration "bool bVar1;" primitive_type identifier ;) (declaration "bool bVar2;" primitive_type identifier ;) (declaration "code *pcVar3;" type_identifier (pointer_declarator "*pcVar3" * identifier) ;) (declaration "ushort *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "code *pcVar7;" type_identifier (pointer_declarator "*pcVar7" * identifier) ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "uint uVar11;" type_identifier identifier ;) (declaration "int iVar12;" primitive_type identifier ;) (declaration "undefined4 uVar13;" type_identifier identifier ;) (declaration "int iVar14;" primitive_type identifier ;) (declaration "char cVar16;" primitive_type identifier ;) (declaration "int iVar15;" primitive_type identifier ;) (declaration "int iVar17;" primitive_type identifier ;) (declaration "int iVar18;" primitive_type identifier ;) (declaration "int iVar19;" primitive_type identifier ;) (declaration "undefined4 uVar20;" type_identifier identifier ;) (declaration "int iVar21;" primitive_type identifier ;) (declaration "undefined4 *puVar22;" type_identifier (pointer_declarator "*puVar22" * identifier) ;) (declaration "uint *puVar23;" type_identifier (pointer_declarator "*puVar23" * identifier) ;) (declaration "int iVar24;" primitive_type identifier ;) (declaration "undefined4 *puVar25;" type_identifier (pointer_declarator "*puVar25" * identifier) ;) (declaration "undefined *puVar26;" type_identifier (pointer_declarator "*puVar26" * identifier) ;) (declaration "int local_d4;" primitive_type identifier ;) (declaration "int local_cc;" primitive_type identifier ;) (declaration "int local_c8;" primitive_type identifier ;) (declaration "int local_c0;" primitive_type identifier ;) (declaration "undefined4 local_98;" type_identifier identifier ;) (declaration "undefined4 local_94;" type_identifier identifier ;) (declaration "int local_90;" primitive_type identifier ;) (declaration "int local_8c;" primitive_type identifier ;) (declaration "int local_88;" primitive_type identifier ;) (declaration "int local_84;" primitive_type identifier ;) (declaration "undefined1 auStack_80 [16];" type_identifier (array_declarator "auStack_80 [16]" identifier [ number_literal ]) ;) (declaration "uint local_70 [16];" type_identifier (array_declarator "local_70 [16]" identifier [ number_literal ]) ;) (declaration "char local_30;" primitive_type identifier ;) (declaration "undefined1 local_2f;" type_identifier identifier ;) (declaration "int local_2c;" primitive_type identifier ;) (expression_statement "puVar26 = PTR___stack_chk_guard_00112630;" (assignment_expression "puVar26 = PTR___stack_chk_guard_00112630" identifier = identifier) ;) (expression_statement "local_2c = *(int *)PTR___stack_chk_guard_00112630;" (assignment_expression "local_2c = *(int *)PTR___stack_chk_guard_00112630" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_00112630" * (cast_expression "(int *)PTR___stack_chk_guard_00112630" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "local_98 = 0x1400;" (assignment_expression "local_98 = 0x1400" identifier = number_literal) ;) (expression_statement "local_94 = 0;" (assignment_expression "local_94 = 0" identifier = number_literal) ;) (expression_statement "local_90 = (*(code *)PTR_safemalloc_001112ec)(0x1400,4);" (assignment_expression "local_90 = (*(code *)PTR_safemalloc_001112ec)(0x1400,4)" identifier = (call_expression "(*(code *)PTR_safemalloc_001112ec)(0x1400,4)" (parenthesized_expression "(*(code *)PTR_safemalloc_001112ec)" ( (pointer_expression "*(code *)PTR_safemalloc_001112ec" * (cast_expression "(code *)PTR_safemalloc_001112ec" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(0x1400,4)" ( number_literal , number_literal )))) ;) (expression_statement "local_8c = local_90;" (assignment_expression "local_8c = local_90" identifier = identifier) ;) (expression_statement "local_88 = (*(code *)PTR_safemalloc_001112ec)(local_98,4);" (assignment_expression "local_88 = (*(code *)PTR_safemalloc_001112ec)(local_98,4)" identifier = (call_expression "(*(code *)PTR_safemalloc_001112ec)(local_98,4)" (parenthesized_expression "(*(code *)PTR_safemalloc_001112ec)" ( (pointer_expression "*(code *)PTR_safemalloc_001112ec" * (cast_expression "(code *)PTR_safemalloc_001112ec" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(local_98,4)" ( identifier , number_literal )))) ;) (expression_statement "pcVar7 = (code *)(PTR_LAB_00111ad8 + 0x2a9c);" (assignment_expression "pcVar7 = (code *)(PTR_LAB_00111ad8 + 0x2a9c)" identifier = (cast_expression "(code *)(PTR_LAB_00111ad8 + 0x2a9c)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_00111ad8 + 0x2a9c)" ( (binary_expression "PTR_LAB_00111ad8 + 0x2a9c" identifier + number_literal) )))) ;) (expression_statement "iVar19 = param_3;" (assignment_expression "iVar19 = param_3" identifier = identifier) ;) (if_statement "if (param_6 == 0) {\n    iVar19 = 0;\n  }" if (parenthesized_expression "(param_6 == 0)" ( (binary_expression "param_6 == 0" identifier == number_literal) )) (compound_statement "{\n    iVar19 = 0;\n  }" { (expression_statement "iVar19 = 0;" (assignment_expression "iVar19 = 0" identifier = number_literal) ;) })) (expression_statement "pcVar3 = (code *)(PTR_LAB_00111ad8 + 0x1270);" (assignment_expression "pcVar3 = (code *)(PTR_LAB_00111ad8 + 0x1270)" identifier = (cast_expression "(code *)(PTR_LAB_00111ad8 + 0x1270)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_00111ad8 + 0x1270)" ( (binary_expression "PTR_LAB_00111ad8 + 0x1270" identifier + number_literal) )))) ;) (expression_statement "local_d4 = param_3;" (assignment_expression "local_d4 = param_3" identifier = identifier) ;) (expression_statement "local_cc = param_2;" (assignment_expression "local_cc = param_2" identifier = identifier) ;) (expression_statement "local_84 = local_88;" (assignment_expression "local_84 = local_88" identifier = identifier) ;) (labeled_statement "LAB_000945cc:\n  bVar1 = local_cc < param_4;" statement_identifier : (expression_statement "bVar1 = local_cc < param_4;" (assignment_expression "bVar1 = local_cc < param_4" identifier = (binary_expression "local_cc < param_4" identifier < identifier)) ;)) (if_statement "if ((bVar1) || ((local_cc == param_4 && (local_d4 < param_5)))) {\n    puVar4 = (ushort *)(*pcVar7)(param_1,local_cc,0x1595,0);\n    local_c0 = *(int *)(param_1 + 300);\n    if ((*puVar4 & 0x10) == 0) {\n      if (local_c0 != 0) {\n        iVar9 = *(int *)(puVar4 + 10) + local_c0 * 0xc;\n        do {\n          if ((((*(uint *)(iVar9 + -0xc) != 0x20) &&\n               ((*(uint *)(iVar9 + -0xc) & 0xfffffcff) != 0xd820)) || (*(int *)(iVar9 + -4) != 0))\n             || (local_c0 <= local_d4)) break;\n          local_c0 = local_c0 + -1;\n          iVar9 = iVar9 + -0xc;\n        } while (local_c0 != 0);\n      }\n      if (bVar1) {\n        local_c8 = local_cc;\n        bVar2 = true;\n      }\n      else if (local_cc == param_4) {\n        bVar2 = local_c0 < param_5;\n        local_c8 = local_cc;\n      }\n      else {\n        bVar2 = false;\n        local_c8 = local_cc;\n      }\n    }\n    else if ((*puVar4 & 0x20) == 0) {\n      bVar2 = false;\n      local_c8 = local_cc;\n    }\n    else if (local_c0 == 0) {\n      bVar2 = false;\n      local_c8 = local_cc + -1;\n    }\n    else {\n      bVar2 = false;\n      local_c8 = local_cc;\n      local_c0 = local_c0 + -1;\n    }\n    iVar9 = local_d4;\n    if ((param_6 != 0) && (bVar2 = bVar1, param_5 < local_c0)) {\n      local_c0 = param_5;\n    }\njoined_r0x00094680:\n    do {\n      iVar21 = iVar9;\n      if (((!bVar1) && ((local_cc != param_4 || (param_5 <= iVar21)))) ||\n         ((local_c8 <= local_cc && ((local_c8 != local_cc || (local_c0 <= iVar21))))))\n      goto LAB_00094994;\n      uVar5 = *(uint *)(*(int *)(puVar4 + 10) + iVar21 * 0xc);\n      if (uVar5 != 0xdfff) {\n        uVar11 = uVar5 & 0xffffff00;\n        iVar18 = iVar21 * 0xc;\n        uVar20 = *(undefined4 *)(*(int *)(puVar4 + 10) + iVar18 + 4);\n        uVar8 = uVar5 & 0xff;\n        local_d4 = iVar21;\n        if (uVar11 == 0xd900) goto LAB_00094804;\n        do {\n          if (uVar11 == 0xda00) {\n            uVar5 = *(uint *)(*(int *)(param_1 + 0x1090) + (uVar8 + 4) * 4);\n            uVar11 = uVar5 & 0xffffff00;\n            uVar8 = uVar5 & 0xff;\n          }\n          else if (uVar11 == 0xd800) {\n            iVar9 = *(int *)(param_1 + 0x1090);\n            goto LAB_0009491c;\n          }\njoined_r0x00094728:\n          if (uVar11 == 0xf000) {\n            iVar9 = uVar8 + 0x404;\nLAB_00094740:\n            uVar5 = *(uint *)(*(int *)(param_1 + 0x1090) + iVar9 * 4);\n            uVar8 = uVar5 & 0xff;\n          }\n          else if (uVar11 == 0xf100) {\n            iVar9 = uVar8 + 0x204;\n            goto LAB_00094740;\n          }\n          iVar9 = local_d4 + 1;\n          local_70[1] = 0;\n          iVar10 = iVar9;\n          local_70[0] = uVar5;\n          if (((uVar5 & 0xfffffe00) == 0xf000) && ((uVar5 & 0xe0) != 0)) {\n            if (uVar8 != 0x7f) {\n              cVar16 = (char)uVar5;\n              iVar6 = (*(code *)PTR_is_dbcs_leadbyte_00111b58)\n                                (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),(int)cVar16);\n              local_30 = cVar16;\n              if (iVar6 == 0) {\n                iVar6 = (*(code *)PTR_mb_to_wc_001115cc)\n                                  (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),0,&local_30,1,\n                                   auStack_80,4);\n              }\n              else {\n                local_2f = (undefined1)*(undefined4 *)(*(int *)(puVar4 + 10) + iVar9 * 0xc);\n                iVar6 = (*(code *)PTR_mb_to_wc_001115cc)\n                                  (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),0,&local_30,2,\n                                   auStack_80,4);\n                iVar10 = local_d4 + 2;\n                local_d4 = iVar9;\n              }\n              if (0 < iVar6) {\n                (*(code *)PTR___memcpy_chk_00112078)(local_70,auStack_80,iVar6 * 4,0x40);\n                local_70[iVar6] = 0;\n                uVar5 = local_70[0];\n              }\n              goto LAB_00094778;\n            }\n            FUN_000901cc(&local_98,uVar5,uVar20);\n          }\n          else {\nLAB_00094778:\n            iVar9 = iVar10;\n            if (uVar5 != 0) {\n              uVar8 = local_70[1];\n              puVar23 = local_70;\n              while( true ) {\n                FUN_000901cc(&local_98,uVar5,uVar20);\n                if (uVar8 == 0) break;\n                uVar5 = uVar8;\n                uVar8 = puVar23[2];\n                puVar23 = puVar23 + 1;\n              }\n            }\n          }\n          iVar10 = *(int *)(puVar4 + 10);\n          iVar18 = *(int *)(iVar10 + iVar18 + 8);\n          iVar21 = iVar21 + iVar18;\n          if (iVar18 == 0) goto joined_r0x00094680;\n          iVar18 = iVar21 * 0xc;\n          uVar5 = *(uint *)(iVar10 + iVar21 * 0xc);\n          uVar20 = *(undefined4 *)(iVar10 + iVar18 + 4);\n          uVar11 = uVar5 & 0xffffff00;\n          uVar8 = uVar5 & 0xff;\n        } while (uVar11 != 0xd900);\nLAB_00094804:\n        iVar9 = *(int *)(param_1 + 0x1090);\n        if (*(int *)(param_1 + 0x1158) == 0) {\n          uVar5 = *(uint *)(iVar9 + (uVar8 + 0x304) * 4);\n          uVar11 = uVar5 & 0xffffff00;\n          uVar8 = uVar5 & 0xff;\n        }\n        else {\nLAB_0009491c:\n          uVar5 = *(uint *)(iVar9 + (uVar8 + 0x104) * 4);\n          uVar11 = uVar5 & 0xffffff00;\n          uVar8 = uVar5 & 0xff;\n        }\n        goto joined_r0x00094728;\n      }\n      iVar9 = iVar21 + 1;\n    } while( true );\n  }" if (parenthesized_expression "((bVar1) || ((local_cc == param_4 && (local_d4 < param_5))))" ( (binary_expression "(bVar1) || ((local_cc == param_4 && (local_d4 < param_5)))" (parenthesized_expression "(bVar1)" ( identifier )) || (parenthesized_expression "((local_cc == param_4 && (local_d4 < param_5)))" ( (parenthesized_expression "(local_cc == param_4 && (local_d4 < param_5))" ( (binary_expression "local_cc == param_4 && (local_d4 < param_5)" (binary_expression "local_cc == param_4" identifier == identifier) && (parenthesized_expression "(local_d4 < param_5)" ( (binary_expression "local_d4 < param_5" identifier < identifier) ))) )) ))) )) (compound_statement "{\n    puVar4 = (ushort *)(*pcVar7)(param_1,local_cc,0x1595,0);\n    local_c0 = *(int *)(param_1 + 300);\n    if ((*puVar4 & 0x10) == 0) {\n      if (local_c0 != 0) {\n        iVar9 = *(int *)(puVar4 + 10) + local_c0 * 0xc;\n        do {\n          if ((((*(uint *)(iVar9 + -0xc) != 0x20) &&\n               ((*(uint *)(iVar9 + -0xc) & 0xfffffcff) != 0xd820)) || (*(int *)(iVar9 + -4) != 0))\n             || (local_c0 <= local_d4)) break;\n          local_c0 = local_c0 + -1;\n          iVar9 = iVar9 + -0xc;\n        } while (local_c0 != 0);\n      }\n      if (bVar1) {\n        local_c8 = local_cc;\n        bVar2 = true;\n      }\n      else if (local_cc == param_4) {\n        bVar2 = local_c0 < param_5;\n        local_c8 = local_cc;\n      }\n      else {\n        bVar2 = false;\n        local_c8 = local_cc;\n      }\n    }\n    else if ((*puVar4 & 0x20) == 0) {\n      bVar2 = false;\n      local_c8 = local_cc;\n    }\n    else if (local_c0 == 0) {\n      bVar2 = false;\n      local_c8 = local_cc + -1;\n    }\n    else {\n      bVar2 = false;\n      local_c8 = local_cc;\n      local_c0 = local_c0 + -1;\n    }\n    iVar9 = local_d4;\n    if ((param_6 != 0) && (bVar2 = bVar1, param_5 < local_c0)) {\n      local_c0 = param_5;\n    }\njoined_r0x00094680:\n    do {\n      iVar21 = iVar9;\n      if (((!bVar1) && ((local_cc != param_4 || (param_5 <= iVar21)))) ||\n         ((local_c8 <= local_cc && ((local_c8 != local_cc || (local_c0 <= iVar21))))))\n      goto LAB_00094994;\n      uVar5 = *(uint *)(*(int *)(puVar4 + 10) + iVar21 * 0xc);\n      if (uVar5 != 0xdfff) {\n        uVar11 = uVar5 & 0xffffff00;\n        iVar18 = iVar21 * 0xc;\n        uVar20 = *(undefined4 *)(*(int *)(puVar4 + 10) + iVar18 + 4);\n        uVar8 = uVar5 & 0xff;\n        local_d4 = iVar21;\n        if (uVar11 == 0xd900) goto LAB_00094804;\n        do {\n          if (uVar11 == 0xda00) {\n            uVar5 = *(uint *)(*(int *)(param_1 + 0x1090) + (uVar8 + 4) * 4);\n            uVar11 = uVar5 & 0xffffff00;\n            uVar8 = uVar5 & 0xff;\n          }\n          else if (uVar11 == 0xd800) {\n            iVar9 = *(int *)(param_1 + 0x1090);\n            goto LAB_0009491c;\n          }\njoined_r0x00094728:\n          if (uVar11 == 0xf000) {\n            iVar9 = uVar8 + 0x404;\nLAB_00094740:\n            uVar5 = *(uint *)(*(int *)(param_1 + 0x1090) + iVar9 * 4);\n            uVar8 = uVar5 & 0xff;\n          }\n          else if (uVar11 == 0xf100) {\n            iVar9 = uVar8 + 0x204;\n            goto LAB_00094740;\n          }\n          iVar9 = local_d4 + 1;\n          local_70[1] = 0;\n          iVar10 = iVar9;\n          local_70[0] = uVar5;\n          if (((uVar5 & 0xfffffe00) == 0xf000) && ((uVar5 & 0xe0) != 0)) {\n            if (uVar8 != 0x7f) {\n              cVar16 = (char)uVar5;\n              iVar6 = (*(code *)PTR_is_dbcs_leadbyte_00111b58)\n                                (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),(int)cVar16);\n              local_30 = cVar16;\n              if (iVar6 == 0) {\n                iVar6 = (*(code *)PTR_mb_to_wc_001115cc)\n                                  (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),0,&local_30,1,\n                                   auStack_80,4);\n              }\n              else {\n                local_2f = (undefined1)*(undefined4 *)(*(int *)(puVar4 + 10) + iVar9 * 0xc);\n                iVar6 = (*(code *)PTR_mb_to_wc_001115cc)\n                                  (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),0,&local_30,2,\n                                   auStack_80,4);\n                iVar10 = local_d4 + 2;\n                local_d4 = iVar9;\n              }\n              if (0 < iVar6) {\n                (*(code *)PTR___memcpy_chk_00112078)(local_70,auStack_80,iVar6 * 4,0x40);\n                local_70[iVar6] = 0;\n                uVar5 = local_70[0];\n              }\n              goto LAB_00094778;\n            }\n            FUN_000901cc(&local_98,uVar5,uVar20);\n          }\n          else {\nLAB_00094778:\n            iVar9 = iVar10;\n            if (uVar5 != 0) {\n              uVar8 = local_70[1];\n              puVar23 = local_70;\n              while( true ) {\n                FUN_000901cc(&local_98,uVar5,uVar20);\n                if (uVar8 == 0) break;\n                uVar5 = uVar8;\n                uVar8 = puVar23[2];\n                puVar23 = puVar23 + 1;\n              }\n            }\n          }\n          iVar10 = *(int *)(puVar4 + 10);\n          iVar18 = *(int *)(iVar10 + iVar18 + 8);\n          iVar21 = iVar21 + iVar18;\n          if (iVar18 == 0) goto joined_r0x00094680;\n          iVar18 = iVar21 * 0xc;\n          uVar5 = *(uint *)(iVar10 + iVar21 * 0xc);\n          uVar20 = *(undefined4 *)(iVar10 + iVar18 + 4);\n          uVar11 = uVar5 & 0xffffff00;\n          uVar8 = uVar5 & 0xff;\n        } while (uVar11 != 0xd900);\nLAB_00094804:\n        iVar9 = *(int *)(param_1 + 0x1090);\n        if (*(int *)(param_1 + 0x1158) == 0) {\n          uVar5 = *(uint *)(iVar9 + (uVar8 + 0x304) * 4);\n          uVar11 = uVar5 & 0xffffff00;\n          uVar8 = uVar5 & 0xff;\n        }\n        else {\nLAB_0009491c:\n          uVar5 = *(uint *)(iVar9 + (uVar8 + 0x104) * 4);\n          uVar11 = uVar5 & 0xffffff00;\n          uVar8 = uVar5 & 0xff;\n        }\n        goto joined_r0x00094728;\n      }\n      iVar9 = iVar21 + 1;\n    } while( true );\n  }" { (expression_statement "puVar4 = (ushort *)(*pcVar7)(param_1,local_cc,0x1595,0);" (assignment_expression "puVar4 = (ushort *)(*pcVar7)(param_1,local_cc,0x1595,0)" identifier = (cast_expression "(ushort *)(*pcVar7)(param_1,local_cc,0x1595,0)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*pcVar7)(param_1,local_cc,0x1595,0)" (parenthesized_expression "(*pcVar7)" ( (pointer_expression "*pcVar7" * identifier) )) (argument_list "(param_1,local_cc,0x1595,0)" ( identifier , identifier , number_literal , number_literal ))))) ;) (expression_statement "local_c0 = *(int *)(param_1 + 300);" (assignment_expression "local_c0 = *(int *)(param_1 + 300)" identifier = (pointer_expression "*(int *)(param_1 + 300)" * (cast_expression "(int *)(param_1 + 300)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 300)" ( (binary_expression "param_1 + 300" identifier + number_literal) ))))) ;) (if_statement "if ((*puVar4 & 0x10) == 0) {\n      if (local_c0 != 0) {\n        iVar9 = *(int *)(puVar4 + 10) + local_c0 * 0xc;\n        do {\n          if ((((*(uint *)(iVar9 + -0xc) != 0x20) &&\n               ((*(uint *)(iVar9 + -0xc) & 0xfffffcff) != 0xd820)) || (*(int *)(iVar9 + -4) != 0))\n             || (local_c0 <= local_d4)) break;\n          local_c0 = local_c0 + -1;\n          iVar9 = iVar9 + -0xc;\n        } while (local_c0 != 0);\n      }\n      if (bVar1) {\n        local_c8 = local_cc;\n        bVar2 = true;\n      }\n      else if (local_cc == param_4) {\n        bVar2 = local_c0 < param_5;\n        local_c8 = local_cc;\n      }\n      else {\n        bVar2 = false;\n        local_c8 = local_cc;\n      }\n    }\n    else if ((*puVar4 & 0x20) == 0) {\n      bVar2 = false;\n      local_c8 = local_cc;\n    }\n    else if (local_c0 == 0) {\n      bVar2 = false;\n      local_c8 = local_cc + -1;\n    }\n    else {\n      bVar2 = false;\n      local_c8 = local_cc;\n      local_c0 = local_c0 + -1;\n    }" if (parenthesized_expression "((*puVar4 & 0x10) == 0)" ( (binary_expression "(*puVar4 & 0x10) == 0" (parenthesized_expression "(*puVar4 & 0x10)" ( (binary_expression "*puVar4 & 0x10" (pointer_expression "*puVar4" * identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n      if (local_c0 != 0) {\n        iVar9 = *(int *)(puVar4 + 10) + local_c0 * 0xc;\n        do {\n          if ((((*(uint *)(iVar9 + -0xc) != 0x20) &&\n               ((*(uint *)(iVar9 + -0xc) & 0xfffffcff) != 0xd820)) || (*(int *)(iVar9 + -4) != 0))\n             || (local_c0 <= local_d4)) break;\n          local_c0 = local_c0 + -1;\n          iVar9 = iVar9 + -0xc;\n        } while (local_c0 != 0);\n      }\n      if (bVar1) {\n        local_c8 = local_cc;\n        bVar2 = true;\n      }\n      else if (local_cc == param_4) {\n        bVar2 = local_c0 < param_5;\n        local_c8 = local_cc;\n      }\n      else {\n        bVar2 = false;\n        local_c8 = local_cc;\n      }\n    }" { (if_statement "if (local_c0 != 0) {\n        iVar9 = *(int *)(puVar4 + 10) + local_c0 * 0xc;\n        do {\n          if ((((*(uint *)(iVar9 + -0xc) != 0x20) &&\n               ((*(uint *)(iVar9 + -0xc) & 0xfffffcff) != 0xd820)) || (*(int *)(iVar9 + -4) != 0))\n             || (local_c0 <= local_d4)) break;\n          local_c0 = local_c0 + -1;\n          iVar9 = iVar9 + -0xc;\n        } while (local_c0 != 0);\n      }" if (parenthesized_expression "(local_c0 != 0)" ( (binary_expression "local_c0 != 0" identifier != number_literal) )) (compound_statement "{\n        iVar9 = *(int *)(puVar4 + 10) + local_c0 * 0xc;\n        do {\n          if ((((*(uint *)(iVar9 + -0xc) != 0x20) &&\n               ((*(uint *)(iVar9 + -0xc) & 0xfffffcff) != 0xd820)) || (*(int *)(iVar9 + -4) != 0))\n             || (local_c0 <= local_d4)) break;\n          local_c0 = local_c0 + -1;\n          iVar9 = iVar9 + -0xc;\n        } while (local_c0 != 0);\n      }" { (expression_statement "iVar9 = *(int *)(puVar4 + 10) + local_c0 * 0xc;" (assignment_expression "iVar9 = *(int *)(puVar4 + 10) + local_c0 * 0xc" identifier = (binary_expression "*(int *)(puVar4 + 10) + local_c0 * 0xc" (pointer_expression "*(int *)(puVar4 + 10)" * (cast_expression "(int *)(puVar4 + 10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + 10)" ( (binary_expression "puVar4 + 10" identifier + number_literal) )))) + (binary_expression "local_c0 * 0xc" identifier * number_literal))) ;) (do_statement "do {\n          if ((((*(uint *)(iVar9 + -0xc) != 0x20) &&\n               ((*(uint *)(iVar9 + -0xc) & 0xfffffcff) != 0xd820)) || (*(int *)(iVar9 + -4) != 0))\n             || (local_c0 <= local_d4)) break;\n          local_c0 = local_c0 + -1;\n          iVar9 = iVar9 + -0xc;\n        } while (local_c0 != 0);" do (compound_statement "{\n          if ((((*(uint *)(iVar9 + -0xc) != 0x20) &&\n               ((*(uint *)(iVar9 + -0xc) & 0xfffffcff) != 0xd820)) || (*(int *)(iVar9 + -4) != 0))\n             || (local_c0 <= local_d4)) break;\n          local_c0 = local_c0 + -1;\n          iVar9 = iVar9 + -0xc;\n        }" { (if_statement "if ((((*(uint *)(iVar9 + -0xc) != 0x20) &&\n               ((*(uint *)(iVar9 + -0xc) & 0xfffffcff) != 0xd820)) || (*(int *)(iVar9 + -4) != 0))\n             || (local_c0 <= local_d4)) break;" if (parenthesized_expression "((((*(uint *)(iVar9 + -0xc) != 0x20) &&\n               ((*(uint *)(iVar9 + -0xc) & 0xfffffcff) != 0xd820)) || (*(int *)(iVar9 + -4) != 0))\n             || (local_c0 <= local_d4))" ( (binary_expression "(((*(uint *)(iVar9 + -0xc) != 0x20) &&\n               ((*(uint *)(iVar9 + -0xc) & 0xfffffcff) != 0xd820)) || (*(int *)(iVar9 + -4) != 0))\n             || (local_c0 <= local_d4)" (parenthesized_expression "(((*(uint *)(iVar9 + -0xc) != 0x20) &&\n               ((*(uint *)(iVar9 + -0xc) & 0xfffffcff) != 0xd820)) || (*(int *)(iVar9 + -4) != 0))" ( (binary_expression "((*(uint *)(iVar9 + -0xc) != 0x20) &&\n               ((*(uint *)(iVar9 + -0xc) & 0xfffffcff) != 0xd820)) || (*(int *)(iVar9 + -4) != 0)" (parenthesized_expression "((*(uint *)(iVar9 + -0xc) != 0x20) &&\n               ((*(uint *)(iVar9 + -0xc) & 0xfffffcff) != 0xd820))" ( (binary_expression "(*(uint *)(iVar9 + -0xc) != 0x20) &&\n               ((*(uint *)(iVar9 + -0xc) & 0xfffffcff) != 0xd820)" (parenthesized_expression "(*(uint *)(iVar9 + -0xc) != 0x20)" ( (binary_expression "*(uint *)(iVar9 + -0xc) != 0x20" (pointer_expression "*(uint *)(iVar9 + -0xc)" * (cast_expression "(uint *)(iVar9 + -0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + -0xc)" ( (binary_expression "iVar9 + -0xc" identifier + number_literal) )))) != number_literal) )) && (parenthesized_expression "((*(uint *)(iVar9 + -0xc) & 0xfffffcff) != 0xd820)" ( (binary_expression "(*(uint *)(iVar9 + -0xc) & 0xfffffcff) != 0xd820" (parenthesized_expression "(*(uint *)(iVar9 + -0xc) & 0xfffffcff)" ( (binary_expression "*(uint *)(iVar9 + -0xc) & 0xfffffcff" (pointer_expression "*(uint *)(iVar9 + -0xc)" * (cast_expression "(uint *)(iVar9 + -0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + -0xc)" ( (binary_expression "iVar9 + -0xc" identifier + number_literal) )))) & number_literal) )) != number_literal) ))) )) || (parenthesized_expression "(*(int *)(iVar9 + -4) != 0)" ( (binary_expression "*(int *)(iVar9 + -4) != 0" (pointer_expression "*(int *)(iVar9 + -4)" * (cast_expression "(int *)(iVar9 + -4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + -4)" ( (binary_expression "iVar9 + -4" identifier + number_literal) )))) != number_literal) ))) )) || (parenthesized_expression "(local_c0 <= local_d4)" ( (binary_expression "local_c0 <= local_d4" identifier <= identifier) ))) )) (break_statement "break;" break ;)) (expression_statement "local_c0 = local_c0 + -1;" (assignment_expression "local_c0 = local_c0 + -1" identifier = (binary_expression "local_c0 + -1" identifier + number_literal)) ;) (expression_statement "iVar9 = iVar9 + -0xc;" (assignment_expression "iVar9 = iVar9 + -0xc" identifier = (binary_expression "iVar9 + -0xc" identifier + number_literal)) ;) }) while (parenthesized_expression "(local_c0 != 0)" ( (binary_expression "local_c0 != 0" identifier != number_literal) )) ;) })) (if_statement "if (bVar1) {\n        local_c8 = local_cc;\n        bVar2 = true;\n      }\n      else if (local_cc == param_4) {\n        bVar2 = local_c0 < param_5;\n        local_c8 = local_cc;\n      }\n      else {\n        bVar2 = false;\n        local_c8 = local_cc;\n      }" if (parenthesized_expression "(bVar1)" ( identifier )) (compound_statement "{\n        local_c8 = local_cc;\n        bVar2 = true;\n      }" { (expression_statement "local_c8 = local_cc;" (assignment_expression "local_c8 = local_cc" identifier = identifier) ;) (expression_statement "bVar2 = true;" (assignment_expression "bVar2 = true" identifier = true) ;) }) (else_clause "else if (local_cc == param_4) {\n        bVar2 = local_c0 < param_5;\n        local_c8 = local_cc;\n      }\n      else {\n        bVar2 = false;\n        local_c8 = local_cc;\n      }" else (if_statement "if (local_cc == param_4) {\n        bVar2 = local_c0 < param_5;\n        local_c8 = local_cc;\n      }\n      else {\n        bVar2 = false;\n        local_c8 = local_cc;\n      }" if (parenthesized_expression "(local_cc == param_4)" ( (binary_expression "local_cc == param_4" identifier == identifier) )) (compound_statement "{\n        bVar2 = local_c0 < param_5;\n        local_c8 = local_cc;\n      }" { (expression_statement "bVar2 = local_c0 < param_5;" (assignment_expression "bVar2 = local_c0 < param_5" identifier = (binary_expression "local_c0 < param_5" identifier < identifier)) ;) (expression_statement "local_c8 = local_cc;" (assignment_expression "local_c8 = local_cc" identifier = identifier) ;) }) (else_clause "else {\n        bVar2 = false;\n        local_c8 = local_cc;\n      }" else (compound_statement "{\n        bVar2 = false;\n        local_c8 = local_cc;\n      }" { (expression_statement "bVar2 = false;" (assignment_expression "bVar2 = false" identifier = false) ;) (expression_statement "local_c8 = local_cc;" (assignment_expression "local_c8 = local_cc" identifier = identifier) ;) }))))) }) (else_clause "else if ((*puVar4 & 0x20) == 0) {\n      bVar2 = false;\n      local_c8 = local_cc;\n    }\n    else if (local_c0 == 0) {\n      bVar2 = false;\n      local_c8 = local_cc + -1;\n    }\n    else {\n      bVar2 = false;\n      local_c8 = local_cc;\n      local_c0 = local_c0 + -1;\n    }" else (if_statement "if ((*puVar4 & 0x20) == 0) {\n      bVar2 = false;\n      local_c8 = local_cc;\n    }\n    else if (local_c0 == 0) {\n      bVar2 = false;\n      local_c8 = local_cc + -1;\n    }\n    else {\n      bVar2 = false;\n      local_c8 = local_cc;\n      local_c0 = local_c0 + -1;\n    }" if (parenthesized_expression "((*puVar4 & 0x20) == 0)" ( (binary_expression "(*puVar4 & 0x20) == 0" (parenthesized_expression "(*puVar4 & 0x20)" ( (binary_expression "*puVar4 & 0x20" (pointer_expression "*puVar4" * identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n      bVar2 = false;\n      local_c8 = local_cc;\n    }" { (expression_statement "bVar2 = false;" (assignment_expression "bVar2 = false" identifier = false) ;) (expression_statement "local_c8 = local_cc;" (assignment_expression "local_c8 = local_cc" identifier = identifier) ;) }) (else_clause "else if (local_c0 == 0) {\n      bVar2 = false;\n      local_c8 = local_cc + -1;\n    }\n    else {\n      bVar2 = false;\n      local_c8 = local_cc;\n      local_c0 = local_c0 + -1;\n    }" else (if_statement "if (local_c0 == 0) {\n      bVar2 = false;\n      local_c8 = local_cc + -1;\n    }\n    else {\n      bVar2 = false;\n      local_c8 = local_cc;\n      local_c0 = local_c0 + -1;\n    }" if (parenthesized_expression "(local_c0 == 0)" ( (binary_expression "local_c0 == 0" identifier == number_literal) )) (compound_statement "{\n      bVar2 = false;\n      local_c8 = local_cc + -1;\n    }" { (expression_statement "bVar2 = false;" (assignment_expression "bVar2 = false" identifier = false) ;) (expression_statement "local_c8 = local_cc + -1;" (assignment_expression "local_c8 = local_cc + -1" identifier = (binary_expression "local_cc + -1" identifier + number_literal)) ;) }) (else_clause "else {\n      bVar2 = false;\n      local_c8 = local_cc;\n      local_c0 = local_c0 + -1;\n    }" else (compound_statement "{\n      bVar2 = false;\n      local_c8 = local_cc;\n      local_c0 = local_c0 + -1;\n    }" { (expression_statement "bVar2 = false;" (assignment_expression "bVar2 = false" identifier = false) ;) (expression_statement "local_c8 = local_cc;" (assignment_expression "local_c8 = local_cc" identifier = identifier) ;) (expression_statement "local_c0 = local_c0 + -1;" (assignment_expression "local_c0 = local_c0 + -1" identifier = (binary_expression "local_c0 + -1" identifier + number_literal)) ;) }))))))) (expression_statement "iVar9 = local_d4;" (assignment_expression "iVar9 = local_d4" identifier = identifier) ;) (if_statement "if ((param_6 != 0) && (bVar2 = bVar1, param_5 < local_c0)) {\n      local_c0 = param_5;\n    }" if (parenthesized_expression "((param_6 != 0) && (bVar2 = bVar1, param_5 < local_c0))" ( (binary_expression "(param_6 != 0) && (bVar2 = bVar1, param_5 < local_c0)" (parenthesized_expression "(param_6 != 0)" ( (binary_expression "param_6 != 0" identifier != number_literal) )) && (parenthesized_expression "(bVar2 = bVar1, param_5 < local_c0)" ( (comma_expression "bVar2 = bVar1, param_5 < local_c0" (assignment_expression "bVar2 = bVar1" identifier = identifier) , (binary_expression "param_5 < local_c0" identifier < identifier)) ))) )) (compound_statement "{\n      local_c0 = param_5;\n    }" { (expression_statement "local_c0 = param_5;" (assignment_expression "local_c0 = param_5" identifier = identifier) ;) })) (labeled_statement "joined_r0x00094680:\n    do {\n      iVar21 = iVar9;\n      if (((!bVar1) && ((local_cc != param_4 || (param_5 <= iVar21)))) ||\n         ((local_c8 <= local_cc && ((local_c8 != local_cc || (local_c0 <= iVar21))))))\n      goto LAB_00094994;\n      uVar5 = *(uint *)(*(int *)(puVar4 + 10) + iVar21 * 0xc);\n      if (uVar5 != 0xdfff) {\n        uVar11 = uVar5 & 0xffffff00;\n        iVar18 = iVar21 * 0xc;\n        uVar20 = *(undefined4 *)(*(int *)(puVar4 + 10) + iVar18 + 4);\n        uVar8 = uVar5 & 0xff;\n        local_d4 = iVar21;\n        if (uVar11 == 0xd900) goto LAB_00094804;\n        do {\n          if (uVar11 == 0xda00) {\n            uVar5 = *(uint *)(*(int *)(param_1 + 0x1090) + (uVar8 + 4) * 4);\n            uVar11 = uVar5 & 0xffffff00;\n            uVar8 = uVar5 & 0xff;\n          }\n          else if (uVar11 == 0xd800) {\n            iVar9 = *(int *)(param_1 + 0x1090);\n            goto LAB_0009491c;\n          }\njoined_r0x00094728:\n          if (uVar11 == 0xf000) {\n            iVar9 = uVar8 + 0x404;\nLAB_00094740:\n            uVar5 = *(uint *)(*(int *)(param_1 + 0x1090) + iVar9 * 4);\n            uVar8 = uVar5 & 0xff;\n          }\n          else if (uVar11 == 0xf100) {\n            iVar9 = uVar8 + 0x204;\n            goto LAB_00094740;\n          }\n          iVar9 = local_d4 + 1;\n          local_70[1] = 0;\n          iVar10 = iVar9;\n          local_70[0] = uVar5;\n          if (((uVar5 & 0xfffffe00) == 0xf000) && ((uVar5 & 0xe0) != 0)) {\n            if (uVar8 != 0x7f) {\n              cVar16 = (char)uVar5;\n              iVar6 = (*(code *)PTR_is_dbcs_leadbyte_00111b58)\n                                (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),(int)cVar16);\n              local_30 = cVar16;\n              if (iVar6 == 0) {\n                iVar6 = (*(code *)PTR_mb_to_wc_001115cc)\n                                  (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),0,&local_30,1,\n                                   auStack_80,4);\n              }\n              else {\n                local_2f = (undefined1)*(undefined4 *)(*(int *)(puVar4 + 10) + iVar9 * 0xc);\n                iVar6 = (*(code *)PTR_mb_to_wc_001115cc)\n                                  (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),0,&local_30,2,\n                                   auStack_80,4);\n                iVar10 = local_d4 + 2;\n                local_d4 = iVar9;\n              }\n              if (0 < iVar6) {\n                (*(code *)PTR___memcpy_chk_00112078)(local_70,auStack_80,iVar6 * 4,0x40);\n                local_70[iVar6] = 0;\n                uVar5 = local_70[0];\n              }\n              goto LAB_00094778;\n            }\n            FUN_000901cc(&local_98,uVar5,uVar20);\n          }\n          else {\nLAB_00094778:\n            iVar9 = iVar10;\n            if (uVar5 != 0) {\n              uVar8 = local_70[1];\n              puVar23 = local_70;\n              while( true ) {\n                FUN_000901cc(&local_98,uVar5,uVar20);\n                if (uVar8 == 0) break;\n                uVar5 = uVar8;\n                uVar8 = puVar23[2];\n                puVar23 = puVar23 + 1;\n              }\n            }\n          }\n          iVar10 = *(int *)(puVar4 + 10);\n          iVar18 = *(int *)(iVar10 + iVar18 + 8);\n          iVar21 = iVar21 + iVar18;\n          if (iVar18 == 0) goto joined_r0x00094680;\n          iVar18 = iVar21 * 0xc;\n          uVar5 = *(uint *)(iVar10 + iVar21 * 0xc);\n          uVar20 = *(undefined4 *)(iVar10 + iVar18 + 4);\n          uVar11 = uVar5 & 0xffffff00;\n          uVar8 = uVar5 & 0xff;\n        } while (uVar11 != 0xd900);\nLAB_00094804:\n        iVar9 = *(int *)(param_1 + 0x1090);\n        if (*(int *)(param_1 + 0x1158) == 0) {\n          uVar5 = *(uint *)(iVar9 + (uVar8 + 0x304) * 4);\n          uVar11 = uVar5 & 0xffffff00;\n          uVar8 = uVar5 & 0xff;\n        }\n        else {\nLAB_0009491c:\n          uVar5 = *(uint *)(iVar9 + (uVar8 + 0x104) * 4);\n          uVar11 = uVar5 & 0xffffff00;\n          uVar8 = uVar5 & 0xff;\n        }\n        goto joined_r0x00094728;\n      }\n      iVar9 = iVar21 + 1;\n    } while( true );" statement_identifier : (do_statement "do {\n      iVar21 = iVar9;\n      if (((!bVar1) && ((local_cc != param_4 || (param_5 <= iVar21)))) ||\n         ((local_c8 <= local_cc && ((local_c8 != local_cc || (local_c0 <= iVar21))))))\n      goto LAB_00094994;\n      uVar5 = *(uint *)(*(int *)(puVar4 + 10) + iVar21 * 0xc);\n      if (uVar5 != 0xdfff) {\n        uVar11 = uVar5 & 0xffffff00;\n        iVar18 = iVar21 * 0xc;\n        uVar20 = *(undefined4 *)(*(int *)(puVar4 + 10) + iVar18 + 4);\n        uVar8 = uVar5 & 0xff;\n        local_d4 = iVar21;\n        if (uVar11 == 0xd900) goto LAB_00094804;\n        do {\n          if (uVar11 == 0xda00) {\n            uVar5 = *(uint *)(*(int *)(param_1 + 0x1090) + (uVar8 + 4) * 4);\n            uVar11 = uVar5 & 0xffffff00;\n            uVar8 = uVar5 & 0xff;\n          }\n          else if (uVar11 == 0xd800) {\n            iVar9 = *(int *)(param_1 + 0x1090);\n            goto LAB_0009491c;\n          }\njoined_r0x00094728:\n          if (uVar11 == 0xf000) {\n            iVar9 = uVar8 + 0x404;\nLAB_00094740:\n            uVar5 = *(uint *)(*(int *)(param_1 + 0x1090) + iVar9 * 4);\n            uVar8 = uVar5 & 0xff;\n          }\n          else if (uVar11 == 0xf100) {\n            iVar9 = uVar8 + 0x204;\n            goto LAB_00094740;\n          }\n          iVar9 = local_d4 + 1;\n          local_70[1] = 0;\n          iVar10 = iVar9;\n          local_70[0] = uVar5;\n          if (((uVar5 & 0xfffffe00) == 0xf000) && ((uVar5 & 0xe0) != 0)) {\n            if (uVar8 != 0x7f) {\n              cVar16 = (char)uVar5;\n              iVar6 = (*(code *)PTR_is_dbcs_leadbyte_00111b58)\n                                (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),(int)cVar16);\n              local_30 = cVar16;\n              if (iVar6 == 0) {\n                iVar6 = (*(code *)PTR_mb_to_wc_001115cc)\n                                  (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),0,&local_30,1,\n                                   auStack_80,4);\n              }\n              else {\n                local_2f = (undefined1)*(undefined4 *)(*(int *)(puVar4 + 10) + iVar9 * 0xc);\n                iVar6 = (*(code *)PTR_mb_to_wc_001115cc)\n                                  (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),0,&local_30,2,\n                                   auStack_80,4);\n                iVar10 = local_d4 + 2;\n                local_d4 = iVar9;\n              }\n              if (0 < iVar6) {\n                (*(code *)PTR___memcpy_chk_00112078)(local_70,auStack_80,iVar6 * 4,0x40);\n                local_70[iVar6] = 0;\n                uVar5 = local_70[0];\n              }\n              goto LAB_00094778;\n            }\n            FUN_000901cc(&local_98,uVar5,uVar20);\n          }\n          else {\nLAB_00094778:\n            iVar9 = iVar10;\n            if (uVar5 != 0) {\n              uVar8 = local_70[1];\n              puVar23 = local_70;\n              while( true ) {\n                FUN_000901cc(&local_98,uVar5,uVar20);\n                if (uVar8 == 0) break;\n                uVar5 = uVar8;\n                uVar8 = puVar23[2];\n                puVar23 = puVar23 + 1;\n              }\n            }\n          }\n          iVar10 = *(int *)(puVar4 + 10);\n          iVar18 = *(int *)(iVar10 + iVar18 + 8);\n          iVar21 = iVar21 + iVar18;\n          if (iVar18 == 0) goto joined_r0x00094680;\n          iVar18 = iVar21 * 0xc;\n          uVar5 = *(uint *)(iVar10 + iVar21 * 0xc);\n          uVar20 = *(undefined4 *)(iVar10 + iVar18 + 4);\n          uVar11 = uVar5 & 0xffffff00;\n          uVar8 = uVar5 & 0xff;\n        } while (uVar11 != 0xd900);\nLAB_00094804:\n        iVar9 = *(int *)(param_1 + 0x1090);\n        if (*(int *)(param_1 + 0x1158) == 0) {\n          uVar5 = *(uint *)(iVar9 + (uVar8 + 0x304) * 4);\n          uVar11 = uVar5 & 0xffffff00;\n          uVar8 = uVar5 & 0xff;\n        }\n        else {\nLAB_0009491c:\n          uVar5 = *(uint *)(iVar9 + (uVar8 + 0x104) * 4);\n          uVar11 = uVar5 & 0xffffff00;\n          uVar8 = uVar5 & 0xff;\n        }\n        goto joined_r0x00094728;\n      }\n      iVar9 = iVar21 + 1;\n    } while( true );" do (compound_statement "{\n      iVar21 = iVar9;\n      if (((!bVar1) && ((local_cc != param_4 || (param_5 <= iVar21)))) ||\n         ((local_c8 <= local_cc && ((local_c8 != local_cc || (local_c0 <= iVar21))))))\n      goto LAB_00094994;\n      uVar5 = *(uint *)(*(int *)(puVar4 + 10) + iVar21 * 0xc);\n      if (uVar5 != 0xdfff) {\n        uVar11 = uVar5 & 0xffffff00;\n        iVar18 = iVar21 * 0xc;\n        uVar20 = *(undefined4 *)(*(int *)(puVar4 + 10) + iVar18 + 4);\n        uVar8 = uVar5 & 0xff;\n        local_d4 = iVar21;\n        if (uVar11 == 0xd900) goto LAB_00094804;\n        do {\n          if (uVar11 == 0xda00) {\n            uVar5 = *(uint *)(*(int *)(param_1 + 0x1090) + (uVar8 + 4) * 4);\n            uVar11 = uVar5 & 0xffffff00;\n            uVar8 = uVar5 & 0xff;\n          }\n          else if (uVar11 == 0xd800) {\n            iVar9 = *(int *)(param_1 + 0x1090);\n            goto LAB_0009491c;\n          }\njoined_r0x00094728:\n          if (uVar11 == 0xf000) {\n            iVar9 = uVar8 + 0x404;\nLAB_00094740:\n            uVar5 = *(uint *)(*(int *)(param_1 + 0x1090) + iVar9 * 4);\n            uVar8 = uVar5 & 0xff;\n          }\n          else if (uVar11 == 0xf100) {\n            iVar9 = uVar8 + 0x204;\n            goto LAB_00094740;\n          }\n          iVar9 = local_d4 + 1;\n          local_70[1] = 0;\n          iVar10 = iVar9;\n          local_70[0] = uVar5;\n          if (((uVar5 & 0xfffffe00) == 0xf000) && ((uVar5 & 0xe0) != 0)) {\n            if (uVar8 != 0x7f) {\n              cVar16 = (char)uVar5;\n              iVar6 = (*(code *)PTR_is_dbcs_leadbyte_00111b58)\n                                (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),(int)cVar16);\n              local_30 = cVar16;\n              if (iVar6 == 0) {\n                iVar6 = (*(code *)PTR_mb_to_wc_001115cc)\n                                  (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),0,&local_30,1,\n                                   auStack_80,4);\n              }\n              else {\n                local_2f = (undefined1)*(undefined4 *)(*(int *)(puVar4 + 10) + iVar9 * 0xc);\n                iVar6 = (*(code *)PTR_mb_to_wc_001115cc)\n                                  (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),0,&local_30,2,\n                                   auStack_80,4);\n                iVar10 = local_d4 + 2;\n                local_d4 = iVar9;\n              }\n              if (0 < iVar6) {\n                (*(code *)PTR___memcpy_chk_00112078)(local_70,auStack_80,iVar6 * 4,0x40);\n                local_70[iVar6] = 0;\n                uVar5 = local_70[0];\n              }\n              goto LAB_00094778;\n            }\n            FUN_000901cc(&local_98,uVar5,uVar20);\n          }\n          else {\nLAB_00094778:\n            iVar9 = iVar10;\n            if (uVar5 != 0) {\n              uVar8 = local_70[1];\n              puVar23 = local_70;\n              while( true ) {\n                FUN_000901cc(&local_98,uVar5,uVar20);\n                if (uVar8 == 0) break;\n                uVar5 = uVar8;\n                uVar8 = puVar23[2];\n                puVar23 = puVar23 + 1;\n              }\n            }\n          }\n          iVar10 = *(int *)(puVar4 + 10);\n          iVar18 = *(int *)(iVar10 + iVar18 + 8);\n          iVar21 = iVar21 + iVar18;\n          if (iVar18 == 0) goto joined_r0x00094680;\n          iVar18 = iVar21 * 0xc;\n          uVar5 = *(uint *)(iVar10 + iVar21 * 0xc);\n          uVar20 = *(undefined4 *)(iVar10 + iVar18 + 4);\n          uVar11 = uVar5 & 0xffffff00;\n          uVar8 = uVar5 & 0xff;\n        } while (uVar11 != 0xd900);\nLAB_00094804:\n        iVar9 = *(int *)(param_1 + 0x1090);\n        if (*(int *)(param_1 + 0x1158) == 0) {\n          uVar5 = *(uint *)(iVar9 + (uVar8 + 0x304) * 4);\n          uVar11 = uVar5 & 0xffffff00;\n          uVar8 = uVar5 & 0xff;\n        }\n        else {\nLAB_0009491c:\n          uVar5 = *(uint *)(iVar9 + (uVar8 + 0x104) * 4);\n          uVar11 = uVar5 & 0xffffff00;\n          uVar8 = uVar5 & 0xff;\n        }\n        goto joined_r0x00094728;\n      }\n      iVar9 = iVar21 + 1;\n    }" { (expression_statement "iVar21 = iVar9;" (assignment_expression "iVar21 = iVar9" identifier = identifier) ;) (if_statement "if (((!bVar1) && ((local_cc != param_4 || (param_5 <= iVar21)))) ||\n         ((local_c8 <= local_cc && ((local_c8 != local_cc || (local_c0 <= iVar21))))))\n      goto LAB_00094994;" if (parenthesized_expression "(((!bVar1) && ((local_cc != param_4 || (param_5 <= iVar21)))) ||\n         ((local_c8 <= local_cc && ((local_c8 != local_cc || (local_c0 <= iVar21))))))" ( (binary_expression "((!bVar1) && ((local_cc != param_4 || (param_5 <= iVar21)))) ||\n         ((local_c8 <= local_cc && ((local_c8 != local_cc || (local_c0 <= iVar21)))))" (parenthesized_expression "((!bVar1) && ((local_cc != param_4 || (param_5 <= iVar21))))" ( (binary_expression "(!bVar1) && ((local_cc != param_4 || (param_5 <= iVar21)))" (parenthesized_expression "(!bVar1)" ( (unary_expression "!bVar1" ! identifier) )) && (parenthesized_expression "((local_cc != param_4 || (param_5 <= iVar21)))" ( (parenthesized_expression "(local_cc != param_4 || (param_5 <= iVar21))" ( (binary_expression "local_cc != param_4 || (param_5 <= iVar21)" (binary_expression "local_cc != param_4" identifier != identifier) || (parenthesized_expression "(param_5 <= iVar21)" ( (binary_expression "param_5 <= iVar21" identifier <= identifier) ))) )) ))) )) || (parenthesized_expression "((local_c8 <= local_cc && ((local_c8 != local_cc || (local_c0 <= iVar21)))))" ( (parenthesized_expression "(local_c8 <= local_cc && ((local_c8 != local_cc || (local_c0 <= iVar21))))" ( (binary_expression "local_c8 <= local_cc && ((local_c8 != local_cc || (local_c0 <= iVar21)))" (binary_expression "local_c8 <= local_cc" identifier <= identifier) && (parenthesized_expression "((local_c8 != local_cc || (local_c0 <= iVar21)))" ( (parenthesized_expression "(local_c8 != local_cc || (local_c0 <= iVar21))" ( (binary_expression "local_c8 != local_cc || (local_c0 <= iVar21)" (binary_expression "local_c8 != local_cc" identifier != identifier) || (parenthesized_expression "(local_c0 <= iVar21)" ( (binary_expression "local_c0 <= iVar21" identifier <= identifier) ))) )) ))) )) ))) )) (goto_statement "goto LAB_00094994;" goto statement_identifier ;)) (expression_statement "uVar5 = *(uint *)(*(int *)(puVar4 + 10) + iVar21 * 0xc);" (assignment_expression "uVar5 = *(uint *)(*(int *)(puVar4 + 10) + iVar21 * 0xc)" identifier = (pointer_expression "*(uint *)(*(int *)(puVar4 + 10) + iVar21 * 0xc)" * (cast_expression "(uint *)(*(int *)(puVar4 + 10) + iVar21 * 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar4 + 10) + iVar21 * 0xc)" ( (binary_expression "*(int *)(puVar4 + 10) + iVar21 * 0xc" (pointer_expression "*(int *)(puVar4 + 10)" * (cast_expression "(int *)(puVar4 + 10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + 10)" ( (binary_expression "puVar4 + 10" identifier + number_literal) )))) + (binary_expression "iVar21 * 0xc" identifier * number_literal)) ))))) ;) (if_statement "if (uVar5 != 0xdfff) {\n        uVar11 = uVar5 & 0xffffff00;\n        iVar18 = iVar21 * 0xc;\n        uVar20 = *(undefined4 *)(*(int *)(puVar4 + 10) + iVar18 + 4);\n        uVar8 = uVar5 & 0xff;\n        local_d4 = iVar21;\n        if (uVar11 == 0xd900) goto LAB_00094804;\n        do {\n          if (uVar11 == 0xda00) {\n            uVar5 = *(uint *)(*(int *)(param_1 + 0x1090) + (uVar8 + 4) * 4);\n            uVar11 = uVar5 & 0xffffff00;\n            uVar8 = uVar5 & 0xff;\n          }\n          else if (uVar11 == 0xd800) {\n            iVar9 = *(int *)(param_1 + 0x1090);\n            goto LAB_0009491c;\n          }\njoined_r0x00094728:\n          if (uVar11 == 0xf000) {\n            iVar9 = uVar8 + 0x404;\nLAB_00094740:\n            uVar5 = *(uint *)(*(int *)(param_1 + 0x1090) + iVar9 * 4);\n            uVar8 = uVar5 & 0xff;\n          }\n          else if (uVar11 == 0xf100) {\n            iVar9 = uVar8 + 0x204;\n            goto LAB_00094740;\n          }\n          iVar9 = local_d4 + 1;\n          local_70[1] = 0;\n          iVar10 = iVar9;\n          local_70[0] = uVar5;\n          if (((uVar5 & 0xfffffe00) == 0xf000) && ((uVar5 & 0xe0) != 0)) {\n            if (uVar8 != 0x7f) {\n              cVar16 = (char)uVar5;\n              iVar6 = (*(code *)PTR_is_dbcs_leadbyte_00111b58)\n                                (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),(int)cVar16);\n              local_30 = cVar16;\n              if (iVar6 == 0) {\n                iVar6 = (*(code *)PTR_mb_to_wc_001115cc)\n                                  (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),0,&local_30,1,\n                                   auStack_80,4);\n              }\n              else {\n                local_2f = (undefined1)*(undefined4 *)(*(int *)(puVar4 + 10) + iVar9 * 0xc);\n                iVar6 = (*(code *)PTR_mb_to_wc_001115cc)\n                                  (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),0,&local_30,2,\n                                   auStack_80,4);\n                iVar10 = local_d4 + 2;\n                local_d4 = iVar9;\n              }\n              if (0 < iVar6) {\n                (*(code *)PTR___memcpy_chk_00112078)(local_70,auStack_80,iVar6 * 4,0x40);\n                local_70[iVar6] = 0;\n                uVar5 = local_70[0];\n              }\n              goto LAB_00094778;\n            }\n            FUN_000901cc(&local_98,uVar5,uVar20);\n          }\n          else {\nLAB_00094778:\n            iVar9 = iVar10;\n            if (uVar5 != 0) {\n              uVar8 = local_70[1];\n              puVar23 = local_70;\n              while( true ) {\n                FUN_000901cc(&local_98,uVar5,uVar20);\n                if (uVar8 == 0) break;\n                uVar5 = uVar8;\n                uVar8 = puVar23[2];\n                puVar23 = puVar23 + 1;\n              }\n            }\n          }\n          iVar10 = *(int *)(puVar4 + 10);\n          iVar18 = *(int *)(iVar10 + iVar18 + 8);\n          iVar21 = iVar21 + iVar18;\n          if (iVar18 == 0) goto joined_r0x00094680;\n          iVar18 = iVar21 * 0xc;\n          uVar5 = *(uint *)(iVar10 + iVar21 * 0xc);\n          uVar20 = *(undefined4 *)(iVar10 + iVar18 + 4);\n          uVar11 = uVar5 & 0xffffff00;\n          uVar8 = uVar5 & 0xff;\n        } while (uVar11 != 0xd900);\nLAB_00094804:\n        iVar9 = *(int *)(param_1 + 0x1090);\n        if (*(int *)(param_1 + 0x1158) == 0) {\n          uVar5 = *(uint *)(iVar9 + (uVar8 + 0x304) * 4);\n          uVar11 = uVar5 & 0xffffff00;\n          uVar8 = uVar5 & 0xff;\n        }\n        else {\nLAB_0009491c:\n          uVar5 = *(uint *)(iVar9 + (uVar8 + 0x104) * 4);\n          uVar11 = uVar5 & 0xffffff00;\n          uVar8 = uVar5 & 0xff;\n        }\n        goto joined_r0x00094728;\n      }" if (parenthesized_expression "(uVar5 != 0xdfff)" ( (binary_expression "uVar5 != 0xdfff" identifier != number_literal) )) (compound_statement "{\n        uVar11 = uVar5 & 0xffffff00;\n        iVar18 = iVar21 * 0xc;\n        uVar20 = *(undefined4 *)(*(int *)(puVar4 + 10) + iVar18 + 4);\n        uVar8 = uVar5 & 0xff;\n        local_d4 = iVar21;\n        if (uVar11 == 0xd900) goto LAB_00094804;\n        do {\n          if (uVar11 == 0xda00) {\n            uVar5 = *(uint *)(*(int *)(param_1 + 0x1090) + (uVar8 + 4) * 4);\n            uVar11 = uVar5 & 0xffffff00;\n            uVar8 = uVar5 & 0xff;\n          }\n          else if (uVar11 == 0xd800) {\n            iVar9 = *(int *)(param_1 + 0x1090);\n            goto LAB_0009491c;\n          }\njoined_r0x00094728:\n          if (uVar11 == 0xf000) {\n            iVar9 = uVar8 + 0x404;\nLAB_00094740:\n            uVar5 = *(uint *)(*(int *)(param_1 + 0x1090) + iVar9 * 4);\n            uVar8 = uVar5 & 0xff;\n          }\n          else if (uVar11 == 0xf100) {\n            iVar9 = uVar8 + 0x204;\n            goto LAB_00094740;\n          }\n          iVar9 = local_d4 + 1;\n          local_70[1] = 0;\n          iVar10 = iVar9;\n          local_70[0] = uVar5;\n          if (((uVar5 & 0xfffffe00) == 0xf000) && ((uVar5 & 0xe0) != 0)) {\n            if (uVar8 != 0x7f) {\n              cVar16 = (char)uVar5;\n              iVar6 = (*(code *)PTR_is_dbcs_leadbyte_00111b58)\n                                (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),(int)cVar16);\n              local_30 = cVar16;\n              if (iVar6 == 0) {\n                iVar6 = (*(code *)PTR_mb_to_wc_001115cc)\n                                  (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),0,&local_30,1,\n                                   auStack_80,4);\n              }\n              else {\n                local_2f = (undefined1)*(undefined4 *)(*(int *)(puVar4 + 10) + iVar9 * 0xc);\n                iVar6 = (*(code *)PTR_mb_to_wc_001115cc)\n                                  (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),0,&local_30,2,\n                                   auStack_80,4);\n                iVar10 = local_d4 + 2;\n                local_d4 = iVar9;\n              }\n              if (0 < iVar6) {\n                (*(code *)PTR___memcpy_chk_00112078)(local_70,auStack_80,iVar6 * 4,0x40);\n                local_70[iVar6] = 0;\n                uVar5 = local_70[0];\n              }\n              goto LAB_00094778;\n            }\n            FUN_000901cc(&local_98,uVar5,uVar20);\n          }\n          else {\nLAB_00094778:\n            iVar9 = iVar10;\n            if (uVar5 != 0) {\n              uVar8 = local_70[1];\n              puVar23 = local_70;\n              while( true ) {\n                FUN_000901cc(&local_98,uVar5,uVar20);\n                if (uVar8 == 0) break;\n                uVar5 = uVar8;\n                uVar8 = puVar23[2];\n                puVar23 = puVar23 + 1;\n              }\n            }\n          }\n          iVar10 = *(int *)(puVar4 + 10);\n          iVar18 = *(int *)(iVar10 + iVar18 + 8);\n          iVar21 = iVar21 + iVar18;\n          if (iVar18 == 0) goto joined_r0x00094680;\n          iVar18 = iVar21 * 0xc;\n          uVar5 = *(uint *)(iVar10 + iVar21 * 0xc);\n          uVar20 = *(undefined4 *)(iVar10 + iVar18 + 4);\n          uVar11 = uVar5 & 0xffffff00;\n          uVar8 = uVar5 & 0xff;\n        } while (uVar11 != 0xd900);\nLAB_00094804:\n        iVar9 = *(int *)(param_1 + 0x1090);\n        if (*(int *)(param_1 + 0x1158) == 0) {\n          uVar5 = *(uint *)(iVar9 + (uVar8 + 0x304) * 4);\n          uVar11 = uVar5 & 0xffffff00;\n          uVar8 = uVar5 & 0xff;\n        }\n        else {\nLAB_0009491c:\n          uVar5 = *(uint *)(iVar9 + (uVar8 + 0x104) * 4);\n          uVar11 = uVar5 & 0xffffff00;\n          uVar8 = uVar5 & 0xff;\n        }\n        goto joined_r0x00094728;\n      }" { (expression_statement "uVar11 = uVar5 & 0xffffff00;" (assignment_expression "uVar11 = uVar5 & 0xffffff00" identifier = (binary_expression "uVar5 & 0xffffff00" identifier & number_literal)) ;) (expression_statement "iVar18 = iVar21 * 0xc;" (assignment_expression "iVar18 = iVar21 * 0xc" identifier = (binary_expression "iVar21 * 0xc" identifier * number_literal)) ;) (expression_statement "uVar20 = *(undefined4 *)(*(int *)(puVar4 + 10) + iVar18 + 4);" (assignment_expression "uVar20 = *(undefined4 *)(*(int *)(puVar4 + 10) + iVar18 + 4)" identifier = (pointer_expression "*(undefined4 *)(*(int *)(puVar4 + 10) + iVar18 + 4)" * (cast_expression "(undefined4 *)(*(int *)(puVar4 + 10) + iVar18 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar4 + 10) + iVar18 + 4)" ( (binary_expression "*(int *)(puVar4 + 10) + iVar18 + 4" (binary_expression "*(int *)(puVar4 + 10) + iVar18" (pointer_expression "*(int *)(puVar4 + 10)" * (cast_expression "(int *)(puVar4 + 10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + 10)" ( (binary_expression "puVar4 + 10" identifier + number_literal) )))) + identifier) + number_literal) ))))) ;) (expression_statement "uVar8 = uVar5 & 0xff;" (assignment_expression "uVar8 = uVar5 & 0xff" identifier = (binary_expression "uVar5 & 0xff" identifier & number_literal)) ;) (expression_statement "local_d4 = iVar21;" (assignment_expression "local_d4 = iVar21" identifier = identifier) ;) (if_statement "if (uVar11 == 0xd900) goto LAB_00094804;" if (parenthesized_expression "(uVar11 == 0xd900)" ( (binary_expression "uVar11 == 0xd900" identifier == number_literal) )) (goto_statement "goto LAB_00094804;" goto statement_identifier ;)) (do_statement "do {\n          if (uVar11 == 0xda00) {\n            uVar5 = *(uint *)(*(int *)(param_1 + 0x1090) + (uVar8 + 4) * 4);\n            uVar11 = uVar5 & 0xffffff00;\n            uVar8 = uVar5 & 0xff;\n          }\n          else if (uVar11 == 0xd800) {\n            iVar9 = *(int *)(param_1 + 0x1090);\n            goto LAB_0009491c;\n          }\njoined_r0x00094728:\n          if (uVar11 == 0xf000) {\n            iVar9 = uVar8 + 0x404;\nLAB_00094740:\n            uVar5 = *(uint *)(*(int *)(param_1 + 0x1090) + iVar9 * 4);\n            uVar8 = uVar5 & 0xff;\n          }\n          else if (uVar11 == 0xf100) {\n            iVar9 = uVar8 + 0x204;\n            goto LAB_00094740;\n          }\n          iVar9 = local_d4 + 1;\n          local_70[1] = 0;\n          iVar10 = iVar9;\n          local_70[0] = uVar5;\n          if (((uVar5 & 0xfffffe00) == 0xf000) && ((uVar5 & 0xe0) != 0)) {\n            if (uVar8 != 0x7f) {\n              cVar16 = (char)uVar5;\n              iVar6 = (*(code *)PTR_is_dbcs_leadbyte_00111b58)\n                                (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),(int)cVar16);\n              local_30 = cVar16;\n              if (iVar6 == 0) {\n                iVar6 = (*(code *)PTR_mb_to_wc_001115cc)\n                                  (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),0,&local_30,1,\n                                   auStack_80,4);\n              }\n              else {\n                local_2f = (undefined1)*(undefined4 *)(*(int *)(puVar4 + 10) + iVar9 * 0xc);\n                iVar6 = (*(code *)PTR_mb_to_wc_001115cc)\n                                  (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),0,&local_30,2,\n                                   auStack_80,4);\n                iVar10 = local_d4 + 2;\n                local_d4 = iVar9;\n              }\n              if (0 < iVar6) {\n                (*(code *)PTR___memcpy_chk_00112078)(local_70,auStack_80,iVar6 * 4,0x40);\n                local_70[iVar6] = 0;\n                uVar5 = local_70[0];\n              }\n              goto LAB_00094778;\n            }\n            FUN_000901cc(&local_98,uVar5,uVar20);\n          }\n          else {\nLAB_00094778:\n            iVar9 = iVar10;\n            if (uVar5 != 0) {\n              uVar8 = local_70[1];\n              puVar23 = local_70;\n              while( true ) {\n                FUN_000901cc(&local_98,uVar5,uVar20);\n                if (uVar8 == 0) break;\n                uVar5 = uVar8;\n                uVar8 = puVar23[2];\n                puVar23 = puVar23 + 1;\n              }\n            }\n          }\n          iVar10 = *(int *)(puVar4 + 10);\n          iVar18 = *(int *)(iVar10 + iVar18 + 8);\n          iVar21 = iVar21 + iVar18;\n          if (iVar18 == 0) goto joined_r0x00094680;\n          iVar18 = iVar21 * 0xc;\n          uVar5 = *(uint *)(iVar10 + iVar21 * 0xc);\n          uVar20 = *(undefined4 *)(iVar10 + iVar18 + 4);\n          uVar11 = uVar5 & 0xffffff00;\n          uVar8 = uVar5 & 0xff;\n        } while (uVar11 != 0xd900);" do (compound_statement "{\n          if (uVar11 == 0xda00) {\n            uVar5 = *(uint *)(*(int *)(param_1 + 0x1090) + (uVar8 + 4) * 4);\n            uVar11 = uVar5 & 0xffffff00;\n            uVar8 = uVar5 & 0xff;\n          }\n          else if (uVar11 == 0xd800) {\n            iVar9 = *(int *)(param_1 + 0x1090);\n            goto LAB_0009491c;\n          }\njoined_r0x00094728:\n          if (uVar11 == 0xf000) {\n            iVar9 = uVar8 + 0x404;\nLAB_00094740:\n            uVar5 = *(uint *)(*(int *)(param_1 + 0x1090) + iVar9 * 4);\n            uVar8 = uVar5 & 0xff;\n          }\n          else if (uVar11 == 0xf100) {\n            iVar9 = uVar8 + 0x204;\n            goto LAB_00094740;\n          }\n          iVar9 = local_d4 + 1;\n          local_70[1] = 0;\n          iVar10 = iVar9;\n          local_70[0] = uVar5;\n          if (((uVar5 & 0xfffffe00) == 0xf000) && ((uVar5 & 0xe0) != 0)) {\n            if (uVar8 != 0x7f) {\n              cVar16 = (char)uVar5;\n              iVar6 = (*(code *)PTR_is_dbcs_leadbyte_00111b58)\n                                (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),(int)cVar16);\n              local_30 = cVar16;\n              if (iVar6 == 0) {\n                iVar6 = (*(code *)PTR_mb_to_wc_001115cc)\n                                  (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),0,&local_30,1,\n                                   auStack_80,4);\n              }\n              else {\n                local_2f = (undefined1)*(undefined4 *)(*(int *)(puVar4 + 10) + iVar9 * 0xc);\n                iVar6 = (*(code *)PTR_mb_to_wc_001115cc)\n                                  (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),0,&local_30,2,\n                                   auStack_80,4);\n                iVar10 = local_d4 + 2;\n                local_d4 = iVar9;\n              }\n              if (0 < iVar6) {\n                (*(code *)PTR___memcpy_chk_00112078)(local_70,auStack_80,iVar6 * 4,0x40);\n                local_70[iVar6] = 0;\n                uVar5 = local_70[0];\n              }\n              goto LAB_00094778;\n            }\n            FUN_000901cc(&local_98,uVar5,uVar20);\n          }\n          else {\nLAB_00094778:\n            iVar9 = iVar10;\n            if (uVar5 != 0) {\n              uVar8 = local_70[1];\n              puVar23 = local_70;\n              while( true ) {\n                FUN_000901cc(&local_98,uVar5,uVar20);\n                if (uVar8 == 0) break;\n                uVar5 = uVar8;\n                uVar8 = puVar23[2];\n                puVar23 = puVar23 + 1;\n              }\n            }\n          }\n          iVar10 = *(int *)(puVar4 + 10);\n          iVar18 = *(int *)(iVar10 + iVar18 + 8);\n          iVar21 = iVar21 + iVar18;\n          if (iVar18 == 0) goto joined_r0x00094680;\n          iVar18 = iVar21 * 0xc;\n          uVar5 = *(uint *)(iVar10 + iVar21 * 0xc);\n          uVar20 = *(undefined4 *)(iVar10 + iVar18 + 4);\n          uVar11 = uVar5 & 0xffffff00;\n          uVar8 = uVar5 & 0xff;\n        }" { (if_statement "if (uVar11 == 0xda00) {\n            uVar5 = *(uint *)(*(int *)(param_1 + 0x1090) + (uVar8 + 4) * 4);\n            uVar11 = uVar5 & 0xffffff00;\n            uVar8 = uVar5 & 0xff;\n          }\n          else if (uVar11 == 0xd800) {\n            iVar9 = *(int *)(param_1 + 0x1090);\n            goto LAB_0009491c;\n          }" if (parenthesized_expression "(uVar11 == 0xda00)" ( (binary_expression "uVar11 == 0xda00" identifier == number_literal) )) (compound_statement "{\n            uVar5 = *(uint *)(*(int *)(param_1 + 0x1090) + (uVar8 + 4) * 4);\n            uVar11 = uVar5 & 0xffffff00;\n            uVar8 = uVar5 & 0xff;\n          }" { (expression_statement "uVar5 = *(uint *)(*(int *)(param_1 + 0x1090) + (uVar8 + 4) * 4);" (assignment_expression "uVar5 = *(uint *)(*(int *)(param_1 + 0x1090) + (uVar8 + 4) * 4)" identifier = (pointer_expression "*(uint *)(*(int *)(param_1 + 0x1090) + (uVar8 + 4) * 4)" * (cast_expression "(uint *)(*(int *)(param_1 + 0x1090) + (uVar8 + 4) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x1090) + (uVar8 + 4) * 4)" ( (binary_expression "*(int *)(param_1 + 0x1090) + (uVar8 + 4) * 4" (pointer_expression "*(int *)(param_1 + 0x1090)" * (cast_expression "(int *)(param_1 + 0x1090)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1090)" ( (binary_expression "param_1 + 0x1090" identifier + number_literal) )))) + (binary_expression "(uVar8 + 4) * 4" (parenthesized_expression "(uVar8 + 4)" ( (binary_expression "uVar8 + 4" identifier + number_literal) )) * number_literal)) ))))) ;) (expression_statement "uVar11 = uVar5 & 0xffffff00;" (assignment_expression "uVar11 = uVar5 & 0xffffff00" identifier = (binary_expression "uVar5 & 0xffffff00" identifier & number_literal)) ;) (expression_statement "uVar8 = uVar5 & 0xff;" (assignment_expression "uVar8 = uVar5 & 0xff" identifier = (binary_expression "uVar5 & 0xff" identifier & number_literal)) ;) }) (else_clause "else if (uVar11 == 0xd800) {\n            iVar9 = *(int *)(param_1 + 0x1090);\n            goto LAB_0009491c;\n          }" else (if_statement "if (uVar11 == 0xd800) {\n            iVar9 = *(int *)(param_1 + 0x1090);\n            goto LAB_0009491c;\n          }" if (parenthesized_expression "(uVar11 == 0xd800)" ( (binary_expression "uVar11 == 0xd800" identifier == number_literal) )) (compound_statement "{\n            iVar9 = *(int *)(param_1 + 0x1090);\n            goto LAB_0009491c;\n          }" { (expression_statement "iVar9 = *(int *)(param_1 + 0x1090);" (assignment_expression "iVar9 = *(int *)(param_1 + 0x1090)" identifier = (pointer_expression "*(int *)(param_1 + 0x1090)" * (cast_expression "(int *)(param_1 + 0x1090)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1090)" ( (binary_expression "param_1 + 0x1090" identifier + number_literal) ))))) ;) (goto_statement "goto LAB_0009491c;" goto statement_identifier ;) })))) (labeled_statement "joined_r0x00094728:\n          if (uVar11 == 0xf000) {\n            iVar9 = uVar8 + 0x404;\nLAB_00094740:\n            uVar5 = *(uint *)(*(int *)(param_1 + 0x1090) + iVar9 * 4);\n            uVar8 = uVar5 & 0xff;\n          }\n          else if (uVar11 == 0xf100) {\n            iVar9 = uVar8 + 0x204;\n            goto LAB_00094740;\n          }" statement_identifier : (if_statement "if (uVar11 == 0xf000) {\n            iVar9 = uVar8 + 0x404;\nLAB_00094740:\n            uVar5 = *(uint *)(*(int *)(param_1 + 0x1090) + iVar9 * 4);\n            uVar8 = uVar5 & 0xff;\n          }\n          else if (uVar11 == 0xf100) {\n            iVar9 = uVar8 + 0x204;\n            goto LAB_00094740;\n          }" if (parenthesized_expression "(uVar11 == 0xf000)" ( (binary_expression "uVar11 == 0xf000" identifier == number_literal) )) (compound_statement "{\n            iVar9 = uVar8 + 0x404;\nLAB_00094740:\n            uVar5 = *(uint *)(*(int *)(param_1 + 0x1090) + iVar9 * 4);\n            uVar8 = uVar5 & 0xff;\n          }" { (expression_statement "iVar9 = uVar8 + 0x404;" (assignment_expression "iVar9 = uVar8 + 0x404" identifier = (binary_expression "uVar8 + 0x404" identifier + number_literal)) ;) (labeled_statement "LAB_00094740:\n            uVar5 = *(uint *)(*(int *)(param_1 + 0x1090) + iVar9 * 4);" statement_identifier : (expression_statement "uVar5 = *(uint *)(*(int *)(param_1 + 0x1090) + iVar9 * 4);" (assignment_expression "uVar5 = *(uint *)(*(int *)(param_1 + 0x1090) + iVar9 * 4)" identifier = (pointer_expression "*(uint *)(*(int *)(param_1 + 0x1090) + iVar9 * 4)" * (cast_expression "(uint *)(*(int *)(param_1 + 0x1090) + iVar9 * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x1090) + iVar9 * 4)" ( (binary_expression "*(int *)(param_1 + 0x1090) + iVar9 * 4" (pointer_expression "*(int *)(param_1 + 0x1090)" * (cast_expression "(int *)(param_1 + 0x1090)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1090)" ( (binary_expression "param_1 + 0x1090" identifier + number_literal) )))) + (binary_expression "iVar9 * 4" identifier * number_literal)) ))))) ;)) (expression_statement "uVar8 = uVar5 & 0xff;" (assignment_expression "uVar8 = uVar5 & 0xff" identifier = (binary_expression "uVar5 & 0xff" identifier & number_literal)) ;) }) (else_clause "else if (uVar11 == 0xf100) {\n            iVar9 = uVar8 + 0x204;\n            goto LAB_00094740;\n          }" else (if_statement "if (uVar11 == 0xf100) {\n            iVar9 = uVar8 + 0x204;\n            goto LAB_00094740;\n          }" if (parenthesized_expression "(uVar11 == 0xf100)" ( (binary_expression "uVar11 == 0xf100" identifier == number_literal) )) (compound_statement "{\n            iVar9 = uVar8 + 0x204;\n            goto LAB_00094740;\n          }" { (expression_statement "iVar9 = uVar8 + 0x204;" (assignment_expression "iVar9 = uVar8 + 0x204" identifier = (binary_expression "uVar8 + 0x204" identifier + number_literal)) ;) (goto_statement "goto LAB_00094740;" goto statement_identifier ;) }))))) (expression_statement "iVar9 = local_d4 + 1;" (assignment_expression "iVar9 = local_d4 + 1" identifier = (binary_expression "local_d4 + 1" identifier + number_literal)) ;) (expression_statement "local_70[1] = 0;" (assignment_expression "local_70[1] = 0" (subscript_expression "local_70[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "iVar10 = iVar9;" (assignment_expression "iVar10 = iVar9" identifier = identifier) ;) (expression_statement "local_70[0] = uVar5;" (assignment_expression "local_70[0] = uVar5" (subscript_expression "local_70[0]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (((uVar5 & 0xfffffe00) == 0xf000) && ((uVar5 & 0xe0) != 0)) {\n            if (uVar8 != 0x7f) {\n              cVar16 = (char)uVar5;\n              iVar6 = (*(code *)PTR_is_dbcs_leadbyte_00111b58)\n                                (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),(int)cVar16);\n              local_30 = cVar16;\n              if (iVar6 == 0) {\n                iVar6 = (*(code *)PTR_mb_to_wc_001115cc)\n                                  (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),0,&local_30,1,\n                                   auStack_80,4);\n              }\n              else {\n                local_2f = (undefined1)*(undefined4 *)(*(int *)(puVar4 + 10) + iVar9 * 0xc);\n                iVar6 = (*(code *)PTR_mb_to_wc_001115cc)\n                                  (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),0,&local_30,2,\n                                   auStack_80,4);\n                iVar10 = local_d4 + 2;\n                local_d4 = iVar9;\n              }\n              if (0 < iVar6) {\n                (*(code *)PTR___memcpy_chk_00112078)(local_70,auStack_80,iVar6 * 4,0x40);\n                local_70[iVar6] = 0;\n                uVar5 = local_70[0];\n              }\n              goto LAB_00094778;\n            }\n            FUN_000901cc(&local_98,uVar5,uVar20);\n          }\n          else {\nLAB_00094778:\n            iVar9 = iVar10;\n            if (uVar5 != 0) {\n              uVar8 = local_70[1];\n              puVar23 = local_70;\n              while( true ) {\n                FUN_000901cc(&local_98,uVar5,uVar20);\n                if (uVar8 == 0) break;\n                uVar5 = uVar8;\n                uVar8 = puVar23[2];\n                puVar23 = puVar23 + 1;\n              }\n            }\n          }" if (parenthesized_expression "(((uVar5 & 0xfffffe00) == 0xf000) && ((uVar5 & 0xe0) != 0))" ( (binary_expression "((uVar5 & 0xfffffe00) == 0xf000) && ((uVar5 & 0xe0) != 0)" (parenthesized_expression "((uVar5 & 0xfffffe00) == 0xf000)" ( (binary_expression "(uVar5 & 0xfffffe00) == 0xf000" (parenthesized_expression "(uVar5 & 0xfffffe00)" ( (binary_expression "uVar5 & 0xfffffe00" identifier & number_literal) )) == number_literal) )) && (parenthesized_expression "((uVar5 & 0xe0) != 0)" ( (binary_expression "(uVar5 & 0xe0) != 0" (parenthesized_expression "(uVar5 & 0xe0)" ( (binary_expression "uVar5 & 0xe0" identifier & number_literal) )) != number_literal) ))) )) (compound_statement "{\n            if (uVar8 != 0x7f) {\n              cVar16 = (char)uVar5;\n              iVar6 = (*(code *)PTR_is_dbcs_leadbyte_00111b58)\n                                (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),(int)cVar16);\n              local_30 = cVar16;\n              if (iVar6 == 0) {\n                iVar6 = (*(code *)PTR_mb_to_wc_001115cc)\n                                  (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),0,&local_30,1,\n                                   auStack_80,4);\n              }\n              else {\n                local_2f = (undefined1)*(undefined4 *)(*(int *)(puVar4 + 10) + iVar9 * 0xc);\n                iVar6 = (*(code *)PTR_mb_to_wc_001115cc)\n                                  (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),0,&local_30,2,\n                                   auStack_80,4);\n                iVar10 = local_d4 + 2;\n                local_d4 = iVar9;\n              }\n              if (0 < iVar6) {\n                (*(code *)PTR___memcpy_chk_00112078)(local_70,auStack_80,iVar6 * 4,0x40);\n                local_70[iVar6] = 0;\n                uVar5 = local_70[0];\n              }\n              goto LAB_00094778;\n            }\n            FUN_000901cc(&local_98,uVar5,uVar20);\n          }" { (if_statement "if (uVar8 != 0x7f) {\n              cVar16 = (char)uVar5;\n              iVar6 = (*(code *)PTR_is_dbcs_leadbyte_00111b58)\n                                (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),(int)cVar16);\n              local_30 = cVar16;\n              if (iVar6 == 0) {\n                iVar6 = (*(code *)PTR_mb_to_wc_001115cc)\n                                  (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),0,&local_30,1,\n                                   auStack_80,4);\n              }\n              else {\n                local_2f = (undefined1)*(undefined4 *)(*(int *)(puVar4 + 10) + iVar9 * 0xc);\n                iVar6 = (*(code *)PTR_mb_to_wc_001115cc)\n                                  (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),0,&local_30,2,\n                                   auStack_80,4);\n                iVar10 = local_d4 + 2;\n                local_d4 = iVar9;\n              }\n              if (0 < iVar6) {\n                (*(code *)PTR___memcpy_chk_00112078)(local_70,auStack_80,iVar6 * 4,0x40);\n                local_70[iVar6] = 0;\n                uVar5 = local_70[0];\n              }\n              goto LAB_00094778;\n            }" if (parenthesized_expression "(uVar8 != 0x7f)" ( (binary_expression "uVar8 != 0x7f" identifier != number_literal) )) (compound_statement "{\n              cVar16 = (char)uVar5;\n              iVar6 = (*(code *)PTR_is_dbcs_leadbyte_00111b58)\n                                (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),(int)cVar16);\n              local_30 = cVar16;\n              if (iVar6 == 0) {\n                iVar6 = (*(code *)PTR_mb_to_wc_001115cc)\n                                  (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),0,&local_30,1,\n                                   auStack_80,4);\n              }\n              else {\n                local_2f = (undefined1)*(undefined4 *)(*(int *)(puVar4 + 10) + iVar9 * 0xc);\n                iVar6 = (*(code *)PTR_mb_to_wc_001115cc)\n                                  (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),0,&local_30,2,\n                                   auStack_80,4);\n                iVar10 = local_d4 + 2;\n                local_d4 = iVar9;\n              }\n              if (0 < iVar6) {\n                (*(code *)PTR___memcpy_chk_00112078)(local_70,auStack_80,iVar6 * 4,0x40);\n                local_70[iVar6] = 0;\n                uVar5 = local_70[0];\n              }\n              goto LAB_00094778;\n            }" { (expression_statement "cVar16 = (char)uVar5;" (assignment_expression "cVar16 = (char)uVar5" identifier = (cast_expression "(char)uVar5" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (expression_statement "iVar6 = (*(code *)PTR_is_dbcs_leadbyte_00111b58)\n                                (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),(int)cVar16);" (assignment_expression "iVar6 = (*(code *)PTR_is_dbcs_leadbyte_00111b58)\n                                (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),(int)cVar16)" identifier = (call_expression "(*(code *)PTR_is_dbcs_leadbyte_00111b58)\n                                (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),(int)cVar16)" (parenthesized_expression "(*(code *)PTR_is_dbcs_leadbyte_00111b58)" ( (pointer_expression "*(code *)PTR_is_dbcs_leadbyte_00111b58" * (cast_expression "(code *)PTR_is_dbcs_leadbyte_00111b58" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),(int)cVar16)" ( (pointer_expression "*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8)" * (cast_expression "(undefined4 *)(*(int *)(param_1 + 0x1090) + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x1090) + 8)" ( (binary_expression "*(int *)(param_1 + 0x1090) + 8" (pointer_expression "*(int *)(param_1 + 0x1090)" * (cast_expression "(int *)(param_1 + 0x1090)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1090)" ( (binary_expression "param_1 + 0x1090" identifier + number_literal) )))) + number_literal) )))) , (cast_expression "(int)cVar16" ( (type_descriptor "int" primitive_type) ) identifier) )))) ;) (expression_statement "local_30 = cVar16;" (assignment_expression "local_30 = cVar16" identifier = identifier) ;) (if_statement "if (iVar6 == 0) {\n                iVar6 = (*(code *)PTR_mb_to_wc_001115cc)\n                                  (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),0,&local_30,1,\n                                   auStack_80,4);\n              }\n              else {\n                local_2f = (undefined1)*(undefined4 *)(*(int *)(puVar4 + 10) + iVar9 * 0xc);\n                iVar6 = (*(code *)PTR_mb_to_wc_001115cc)\n                                  (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),0,&local_30,2,\n                                   auStack_80,4);\n                iVar10 = local_d4 + 2;\n                local_d4 = iVar9;\n              }" if (parenthesized_expression "(iVar6 == 0)" ( (binary_expression "iVar6 == 0" identifier == number_literal) )) (compound_statement "{\n                iVar6 = (*(code *)PTR_mb_to_wc_001115cc)\n                                  (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),0,&local_30,1,\n                                   auStack_80,4);\n              }" { (expression_statement "iVar6 = (*(code *)PTR_mb_to_wc_001115cc)\n                                  (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),0,&local_30,1,\n                                   auStack_80,4);" (assignment_expression "iVar6 = (*(code *)PTR_mb_to_wc_001115cc)\n                                  (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),0,&local_30,1,\n                                   auStack_80,4)" identifier = (call_expression "(*(code *)PTR_mb_to_wc_001115cc)\n                                  (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),0,&local_30,1,\n                                   auStack_80,4)" (parenthesized_expression "(*(code *)PTR_mb_to_wc_001115cc)" ( (pointer_expression "*(code *)PTR_mb_to_wc_001115cc" * (cast_expression "(code *)PTR_mb_to_wc_001115cc" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),0,&local_30,1,\n                                   auStack_80,4)" ( (pointer_expression "*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8)" * (cast_expression "(undefined4 *)(*(int *)(param_1 + 0x1090) + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x1090) + 8)" ( (binary_expression "*(int *)(param_1 + 0x1090) + 8" (pointer_expression "*(int *)(param_1 + 0x1090)" * (cast_expression "(int *)(param_1 + 0x1090)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1090)" ( (binary_expression "param_1 + 0x1090" identifier + number_literal) )))) + number_literal) )))) , number_literal , (pointer_expression "&local_30" & identifier) , number_literal , identifier , number_literal )))) ;) }) (else_clause "else {\n                local_2f = (undefined1)*(undefined4 *)(*(int *)(puVar4 + 10) + iVar9 * 0xc);\n                iVar6 = (*(code *)PTR_mb_to_wc_001115cc)\n                                  (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),0,&local_30,2,\n                                   auStack_80,4);\n                iVar10 = local_d4 + 2;\n                local_d4 = iVar9;\n              }" else (compound_statement "{\n                local_2f = (undefined1)*(undefined4 *)(*(int *)(puVar4 + 10) + iVar9 * 0xc);\n                iVar6 = (*(code *)PTR_mb_to_wc_001115cc)\n                                  (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),0,&local_30,2,\n                                   auStack_80,4);\n                iVar10 = local_d4 + 2;\n                local_d4 = iVar9;\n              }" { (expression_statement "local_2f = (undefined1)*(undefined4 *)(*(int *)(puVar4 + 10) + iVar9 * 0xc);" (assignment_expression "local_2f = (undefined1)*(undefined4 *)(*(int *)(puVar4 + 10) + iVar9 * 0xc)" identifier = (binary_expression "(undefined1)*(undefined4 *)(*(int *)(puVar4 + 10) + iVar9 * 0xc)" (parenthesized_expression "(undefined1)" ( identifier )) * (cast_expression "(undefined4 *)(*(int *)(puVar4 + 10) + iVar9 * 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar4 + 10) + iVar9 * 0xc)" ( (binary_expression "*(int *)(puVar4 + 10) + iVar9 * 0xc" (pointer_expression "*(int *)(puVar4 + 10)" * (cast_expression "(int *)(puVar4 + 10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + 10)" ( (binary_expression "puVar4 + 10" identifier + number_literal) )))) + (binary_expression "iVar9 * 0xc" identifier * number_literal)) ))))) ;) (expression_statement "iVar6 = (*(code *)PTR_mb_to_wc_001115cc)\n                                  (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),0,&local_30,2,\n                                   auStack_80,4);" (assignment_expression "iVar6 = (*(code *)PTR_mb_to_wc_001115cc)\n                                  (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),0,&local_30,2,\n                                   auStack_80,4)" identifier = (call_expression "(*(code *)PTR_mb_to_wc_001115cc)\n                                  (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),0,&local_30,2,\n                                   auStack_80,4)" (parenthesized_expression "(*(code *)PTR_mb_to_wc_001115cc)" ( (pointer_expression "*(code *)PTR_mb_to_wc_001115cc" * (cast_expression "(code *)PTR_mb_to_wc_001115cc" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),0,&local_30,2,\n                                   auStack_80,4)" ( (pointer_expression "*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8)" * (cast_expression "(undefined4 *)(*(int *)(param_1 + 0x1090) + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x1090) + 8)" ( (binary_expression "*(int *)(param_1 + 0x1090) + 8" (pointer_expression "*(int *)(param_1 + 0x1090)" * (cast_expression "(int *)(param_1 + 0x1090)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1090)" ( (binary_expression "param_1 + 0x1090" identifier + number_literal) )))) + number_literal) )))) , number_literal , (pointer_expression "&local_30" & identifier) , number_literal , identifier , number_literal )))) ;) (expression_statement "iVar10 = local_d4 + 2;" (assignment_expression "iVar10 = local_d4 + 2" identifier = (binary_expression "local_d4 + 2" identifier + number_literal)) ;) (expression_statement "local_d4 = iVar9;" (assignment_expression "local_d4 = iVar9" identifier = identifier) ;) }))) (if_statement "if (0 < iVar6) {\n                (*(code *)PTR___memcpy_chk_00112078)(local_70,auStack_80,iVar6 * 4,0x40);\n                local_70[iVar6] = 0;\n                uVar5 = local_70[0];\n              }" if (parenthesized_expression "(0 < iVar6)" ( (binary_expression "0 < iVar6" number_literal < identifier) )) (compound_statement "{\n                (*(code *)PTR___memcpy_chk_00112078)(local_70,auStack_80,iVar6 * 4,0x40);\n                local_70[iVar6] = 0;\n                uVar5 = local_70[0];\n              }" { (expression_statement "(*(code *)PTR___memcpy_chk_00112078)(local_70,auStack_80,iVar6 * 4,0x40);" (call_expression "(*(code *)PTR___memcpy_chk_00112078)(local_70,auStack_80,iVar6 * 4,0x40)" (parenthesized_expression "(*(code *)PTR___memcpy_chk_00112078)" ( (pointer_expression "*(code *)PTR___memcpy_chk_00112078" * (cast_expression "(code *)PTR___memcpy_chk_00112078" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(local_70,auStack_80,iVar6 * 4,0x40)" ( identifier , identifier , (binary_expression "iVar6 * 4" identifier * number_literal) , number_literal ))) ;) (expression_statement "local_70[iVar6] = 0;" (assignment_expression "local_70[iVar6] = 0" (subscript_expression "local_70[iVar6]" identifier [ identifier ]) = number_literal) ;) (expression_statement "uVar5 = local_70[0];" (assignment_expression "uVar5 = local_70[0]" identifier = (subscript_expression "local_70[0]" identifier [ number_literal ])) ;) })) (goto_statement "goto LAB_00094778;" goto statement_identifier ;) })) (expression_statement "FUN_000901cc(&local_98,uVar5,uVar20);" (call_expression "FUN_000901cc(&local_98,uVar5,uVar20)" identifier (argument_list "(&local_98,uVar5,uVar20)" ( (pointer_expression "&local_98" & identifier) , identifier , identifier ))) ;) }) (else_clause "else {\nLAB_00094778:\n            iVar9 = iVar10;\n            if (uVar5 != 0) {\n              uVar8 = local_70[1];\n              puVar23 = local_70;\n              while( true ) {\n                FUN_000901cc(&local_98,uVar5,uVar20);\n                if (uVar8 == 0) break;\n                uVar5 = uVar8;\n                uVar8 = puVar23[2];\n                puVar23 = puVar23 + 1;\n              }\n            }\n          }" else (compound_statement "{\nLAB_00094778:\n            iVar9 = iVar10;\n            if (uVar5 != 0) {\n              uVar8 = local_70[1];\n              puVar23 = local_70;\n              while( true ) {\n                FUN_000901cc(&local_98,uVar5,uVar20);\n                if (uVar8 == 0) break;\n                uVar5 = uVar8;\n                uVar8 = puVar23[2];\n                puVar23 = puVar23 + 1;\n              }\n            }\n          }" { (labeled_statement "LAB_00094778:\n            iVar9 = iVar10;" statement_identifier : (expression_statement "iVar9 = iVar10;" (assignment_expression "iVar9 = iVar10" identifier = identifier) ;)) (if_statement "if (uVar5 != 0) {\n              uVar8 = local_70[1];\n              puVar23 = local_70;\n              while( true ) {\n                FUN_000901cc(&local_98,uVar5,uVar20);\n                if (uVar8 == 0) break;\n                uVar5 = uVar8;\n                uVar8 = puVar23[2];\n                puVar23 = puVar23 + 1;\n              }\n            }" if (parenthesized_expression "(uVar5 != 0)" ( (binary_expression "uVar5 != 0" identifier != number_literal) )) (compound_statement "{\n              uVar8 = local_70[1];\n              puVar23 = local_70;\n              while( true ) {\n                FUN_000901cc(&local_98,uVar5,uVar20);\n                if (uVar8 == 0) break;\n                uVar5 = uVar8;\n                uVar8 = puVar23[2];\n                puVar23 = puVar23 + 1;\n              }\n            }" { (expression_statement "uVar8 = local_70[1];" (assignment_expression "uVar8 = local_70[1]" identifier = (subscript_expression "local_70[1]" identifier [ number_literal ])) ;) (expression_statement "puVar23 = local_70;" (assignment_expression "puVar23 = local_70" identifier = identifier) ;) (while_statement "while( true ) {\n                FUN_000901cc(&local_98,uVar5,uVar20);\n                if (uVar8 == 0) break;\n                uVar5 = uVar8;\n                uVar8 = puVar23[2];\n                puVar23 = puVar23 + 1;\n              }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n                FUN_000901cc(&local_98,uVar5,uVar20);\n                if (uVar8 == 0) break;\n                uVar5 = uVar8;\n                uVar8 = puVar23[2];\n                puVar23 = puVar23 + 1;\n              }" { (expression_statement "FUN_000901cc(&local_98,uVar5,uVar20);" (call_expression "FUN_000901cc(&local_98,uVar5,uVar20)" identifier (argument_list "(&local_98,uVar5,uVar20)" ( (pointer_expression "&local_98" & identifier) , identifier , identifier ))) ;) (if_statement "if (uVar8 == 0) break;" if (parenthesized_expression "(uVar8 == 0)" ( (binary_expression "uVar8 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "uVar5 = uVar8;" (assignment_expression "uVar5 = uVar8" identifier = identifier) ;) (expression_statement "uVar8 = puVar23[2];" (assignment_expression "uVar8 = puVar23[2]" identifier = (subscript_expression "puVar23[2]" identifier [ number_literal ])) ;) (expression_statement "puVar23 = puVar23 + 1;" (assignment_expression "puVar23 = puVar23 + 1" identifier = (binary_expression "puVar23 + 1" identifier + number_literal)) ;) })) })) }))) (expression_statement "iVar10 = *(int *)(puVar4 + 10);" (assignment_expression "iVar10 = *(int *)(puVar4 + 10)" identifier = (pointer_expression "*(int *)(puVar4 + 10)" * (cast_expression "(int *)(puVar4 + 10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + 10)" ( (binary_expression "puVar4 + 10" identifier + number_literal) ))))) ;) (expression_statement "iVar18 = *(int *)(iVar10 + iVar18 + 8);" (assignment_expression "iVar18 = *(int *)(iVar10 + iVar18 + 8)" identifier = (pointer_expression "*(int *)(iVar10 + iVar18 + 8)" * (cast_expression "(int *)(iVar10 + iVar18 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + iVar18 + 8)" ( (binary_expression "iVar10 + iVar18 + 8" (binary_expression "iVar10 + iVar18" identifier + identifier) + number_literal) ))))) ;) (expression_statement "iVar21 = iVar21 + iVar18;" (assignment_expression "iVar21 = iVar21 + iVar18" identifier = (binary_expression "iVar21 + iVar18" identifier + identifier)) ;) (if_statement "if (iVar18 == 0) goto joined_r0x00094680;" if (parenthesized_expression "(iVar18 == 0)" ( (binary_expression "iVar18 == 0" identifier == number_literal) )) (goto_statement "goto joined_r0x00094680;" goto statement_identifier ;)) (expression_statement "iVar18 = iVar21 * 0xc;" (assignment_expression "iVar18 = iVar21 * 0xc" identifier = (binary_expression "iVar21 * 0xc" identifier * number_literal)) ;) (expression_statement "uVar5 = *(uint *)(iVar10 + iVar21 * 0xc);" (assignment_expression "uVar5 = *(uint *)(iVar10 + iVar21 * 0xc)" identifier = (pointer_expression "*(uint *)(iVar10 + iVar21 * 0xc)" * (cast_expression "(uint *)(iVar10 + iVar21 * 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + iVar21 * 0xc)" ( (binary_expression "iVar10 + iVar21 * 0xc" identifier + (binary_expression "iVar21 * 0xc" identifier * number_literal)) ))))) ;) (expression_statement "uVar20 = *(undefined4 *)(iVar10 + iVar18 + 4);" (assignment_expression "uVar20 = *(undefined4 *)(iVar10 + iVar18 + 4)" identifier = (pointer_expression "*(undefined4 *)(iVar10 + iVar18 + 4)" * (cast_expression "(undefined4 *)(iVar10 + iVar18 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + iVar18 + 4)" ( (binary_expression "iVar10 + iVar18 + 4" (binary_expression "iVar10 + iVar18" identifier + identifier) + number_literal) ))))) ;) (expression_statement "uVar11 = uVar5 & 0xffffff00;" (assignment_expression "uVar11 = uVar5 & 0xffffff00" identifier = (binary_expression "uVar5 & 0xffffff00" identifier & number_literal)) ;) (expression_statement "uVar8 = uVar5 & 0xff;" (assignment_expression "uVar8 = uVar5 & 0xff" identifier = (binary_expression "uVar5 & 0xff" identifier & number_literal)) ;) }) while (parenthesized_expression "(uVar11 != 0xd900)" ( (binary_expression "uVar11 != 0xd900" identifier != number_literal) )) ;) (labeled_statement "LAB_00094804:\n        iVar9 = *(int *)(param_1 + 0x1090);" statement_identifier : (expression_statement "iVar9 = *(int *)(param_1 + 0x1090);" (assignment_expression "iVar9 = *(int *)(param_1 + 0x1090)" identifier = (pointer_expression "*(int *)(param_1 + 0x1090)" * (cast_expression "(int *)(param_1 + 0x1090)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1090)" ( (binary_expression "param_1 + 0x1090" identifier + number_literal) ))))) ;)) (if_statement "if (*(int *)(param_1 + 0x1158) == 0) {\n          uVar5 = *(uint *)(iVar9 + (uVar8 + 0x304) * 4);\n          uVar11 = uVar5 & 0xffffff00;\n          uVar8 = uVar5 & 0xff;\n        }\n        else {\nLAB_0009491c:\n          uVar5 = *(uint *)(iVar9 + (uVar8 + 0x104) * 4);\n          uVar11 = uVar5 & 0xffffff00;\n          uVar8 = uVar5 & 0xff;\n        }" if (parenthesized_expression "(*(int *)(param_1 + 0x1158) == 0)" ( (binary_expression "*(int *)(param_1 + 0x1158) == 0" (pointer_expression "*(int *)(param_1 + 0x1158)" * (cast_expression "(int *)(param_1 + 0x1158)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1158)" ( (binary_expression "param_1 + 0x1158" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n          uVar5 = *(uint *)(iVar9 + (uVar8 + 0x304) * 4);\n          uVar11 = uVar5 & 0xffffff00;\n          uVar8 = uVar5 & 0xff;\n        }" { (expression_statement "uVar5 = *(uint *)(iVar9 + (uVar8 + 0x304) * 4);" (assignment_expression "uVar5 = *(uint *)(iVar9 + (uVar8 + 0x304) * 4)" identifier = (pointer_expression "*(uint *)(iVar9 + (uVar8 + 0x304) * 4)" * (cast_expression "(uint *)(iVar9 + (uVar8 + 0x304) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + (uVar8 + 0x304) * 4)" ( (binary_expression "iVar9 + (uVar8 + 0x304) * 4" identifier + (binary_expression "(uVar8 + 0x304) * 4" (parenthesized_expression "(uVar8 + 0x304)" ( (binary_expression "uVar8 + 0x304" identifier + number_literal) )) * number_literal)) ))))) ;) (expression_statement "uVar11 = uVar5 & 0xffffff00;" (assignment_expression "uVar11 = uVar5 & 0xffffff00" identifier = (binary_expression "uVar5 & 0xffffff00" identifier & number_literal)) ;) (expression_statement "uVar8 = uVar5 & 0xff;" (assignment_expression "uVar8 = uVar5 & 0xff" identifier = (binary_expression "uVar5 & 0xff" identifier & number_literal)) ;) }) (else_clause "else {\nLAB_0009491c:\n          uVar5 = *(uint *)(iVar9 + (uVar8 + 0x104) * 4);\n          uVar11 = uVar5 & 0xffffff00;\n          uVar8 = uVar5 & 0xff;\n        }" else (compound_statement "{\nLAB_0009491c:\n          uVar5 = *(uint *)(iVar9 + (uVar8 + 0x104) * 4);\n          uVar11 = uVar5 & 0xffffff00;\n          uVar8 = uVar5 & 0xff;\n        }" { (labeled_statement "LAB_0009491c:\n          uVar5 = *(uint *)(iVar9 + (uVar8 + 0x104) * 4);" statement_identifier : (expression_statement "uVar5 = *(uint *)(iVar9 + (uVar8 + 0x104) * 4);" (assignment_expression "uVar5 = *(uint *)(iVar9 + (uVar8 + 0x104) * 4)" identifier = (pointer_expression "*(uint *)(iVar9 + (uVar8 + 0x104) * 4)" * (cast_expression "(uint *)(iVar9 + (uVar8 + 0x104) * 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + (uVar8 + 0x104) * 4)" ( (binary_expression "iVar9 + (uVar8 + 0x104) * 4" identifier + (binary_expression "(uVar8 + 0x104) * 4" (parenthesized_expression "(uVar8 + 0x104)" ( (binary_expression "uVar8 + 0x104" identifier + number_literal) )) * number_literal)) ))))) ;)) (expression_statement "uVar11 = uVar5 & 0xffffff00;" (assignment_expression "uVar11 = uVar5 & 0xffffff00" identifier = (binary_expression "uVar5 & 0xffffff00" identifier & number_literal)) ;) (expression_statement "uVar8 = uVar5 & 0xff;" (assignment_expression "uVar8 = uVar5 & 0xff" identifier = (binary_expression "uVar5 & 0xff" identifier & number_literal)) ;) }))) (goto_statement "goto joined_r0x00094728;" goto statement_identifier ;) })) (expression_statement "iVar9 = iVar21 + 1;" (assignment_expression "iVar9 = iVar21 + 1" identifier = (binary_expression "iVar21 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "( true )" ( true )) ;)) })) (expression_statement "iVar19 = local_90;" (assignment_expression "iVar19 = local_90" identifier = identifier) ;) (expression_statement "(*(code *)PTR_write_clip_00111b5c)\n            (*(undefined4 *)(param_1 + 0x1088),local_90,local_88,local_94,param_7);" (call_expression "(*(code *)PTR_write_clip_00111b5c)\n            (*(undefined4 *)(param_1 + 0x1088),local_90,local_88,local_94,param_7)" (parenthesized_expression "(*(code *)PTR_write_clip_00111b5c)" ( (pointer_expression "*(code *)PTR_write_clip_00111b5c" * (cast_expression "(code *)PTR_write_clip_00111b5c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(*(undefined4 *)(param_1 + 0x1088),local_90,local_88,local_94,param_7)" ( (pointer_expression "*(undefined4 *)(param_1 + 0x1088)" * (cast_expression "(undefined4 *)(param_1 + 0x1088)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1088)" ( (binary_expression "param_1 + 0x1088" identifier + number_literal) )))) , identifier , identifier , identifier , identifier ))) ;) (expression_statement "(*(code *)PTR_safefree_001112f0)(local_90);" (call_expression "(*(code *)PTR_safefree_001112f0)(local_90)" (parenthesized_expression "(*(code *)PTR_safefree_001112f0)" ( (pointer_expression "*(code *)PTR_safefree_001112f0" * (cast_expression "(code *)PTR_safefree_001112f0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(local_90)" ( identifier ))) ;) (expression_statement "iVar9 = local_88;" (assignment_expression "iVar9 = local_88" identifier = identifier) ;) (expression_statement "(*(code *)PTR_safefree_001112f0)();" (call_expression "(*(code *)PTR_safefree_001112f0)()" (parenthesized_expression "(*(code *)PTR_safefree_001112f0)" ( (pointer_expression "*(code *)PTR_safefree_001112f0" * (cast_expression "(code *)PTR_safefree_001112f0" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (if_statement "if (local_2c == *(int *)puVar26) {\n    return;\n  }" if (parenthesized_expression "(local_2c == *(int *)puVar26)" ( (binary_expression "local_2c == *(int *)puVar26" identifier == (pointer_expression "*(int *)puVar26" * (cast_expression "(int *)puVar26" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "puVar26 = PTR___stack_chk_fail_001122c8;" (assignment_expression "puVar26 = PTR___stack_chk_fail_001122c8" identifier = identifier) ;) (expression_statement "(*(code *)PTR___stack_chk_fail_001122c8)();" (call_expression "(*(code *)PTR___stack_chk_fail_001122c8)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_001122c8)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_001122c8" * (cast_expression "(code *)PTR___stack_chk_fail_001122c8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "iVar21 = 1;" (assignment_expression "iVar21 = 1" identifier = number_literal) ;) (if_statement "if (iVar19 < 0) {\n    iVar21 = -1;\n    iVar19 = -iVar19;\n  }" if (parenthesized_expression "(iVar19 < 0)" ( (binary_expression "iVar19 < 0" identifier < number_literal) )) (compound_statement "{\n    iVar21 = -1;\n    iVar19 = -iVar19;\n  }" { (expression_statement "iVar21 = -1;" (assignment_expression "iVar21 = -1" identifier = number_literal) ;) (expression_statement "iVar19 = -iVar19;" (assignment_expression "iVar19 = -iVar19" identifier = (unary_expression "-iVar19" - identifier)) ;) })) (expression_statement "iVar18 = *(int *)(iVar9 + 300);" (assignment_expression "iVar18 = *(int *)(iVar9 + 300)" identifier = (pointer_expression "*(int *)(iVar9 + 300)" * (cast_expression "(int *)(iVar9 + 300)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 300)" ( (binary_expression "iVar9 + 300" identifier + number_literal) ))))) ;) (expression_statement "iVar10 = *(int *)(iVar9 + 0x70);" (assignment_expression "iVar10 = *(int *)(iVar9 + 0x70)" identifier = (pointer_expression "*(int *)(iVar9 + 0x70)" * (cast_expression "(int *)(iVar9 + 0x70)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0x70)" ( (binary_expression "iVar9 + 0x70" identifier + number_literal) ))))) ;) (expression_statement "iVar12 = *(int *)(iVar9 + 0x6c);" (assignment_expression "iVar12 = *(int *)(iVar9 + 0x6c)" identifier = (pointer_expression "*(int *)(iVar9 + 0x6c)" * (cast_expression "(int *)(iVar9 + 0x6c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0x6c)" ( (binary_expression "iVar9 + 0x6c" identifier + number_literal) ))))) ;) (expression_statement "iVar6 = *(int *)(iVar9 + 0xe5c);" (assignment_expression "iVar6 = *(int *)(iVar9 + 0xe5c)" identifier = (pointer_expression "*(int *)(iVar9 + 0xe5c)" * (cast_expression "(int *)(iVar9 + 0xe5c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0xe5c)" ( (binary_expression "iVar9 + 0xe5c" identifier + number_literal) ))))) ;) (expression_statement "iVar24 = iVar18 - iVar10;" (assignment_expression "iVar24 = iVar18 - iVar10" identifier = (binary_expression "iVar18 - iVar10" identifier - identifier)) ;) (if_statement "if (iVar24 <= iVar19) {\n    iVar19 = iVar24;\n  }" if (parenthesized_expression "(iVar24 <= iVar19)" ( (binary_expression "iVar24 <= iVar19" identifier <= identifier) )) (compound_statement "{\n    iVar19 = iVar24;\n  }" { (expression_statement "iVar19 = iVar24;" (assignment_expression "iVar19 = iVar24" identifier = identifier) ;) })) (expression_statement "iVar24 = iVar24 - iVar19;" (assignment_expression "iVar24 = iVar24 - iVar19" identifier = (binary_expression "iVar24 - iVar19" identifier - identifier)) ;) (if_statement "if (((iVar6 <= iVar12) && ((iVar12 != iVar6 || (*(int *)(iVar9 + 0xe60) <= iVar10)))) ||\n     ((iVar14 = *(int *)(iVar9 + 0xe54), iVar12 <= iVar14 &&\n      ((iVar12 != iVar14 || (iVar18 <= *(int *)(iVar9 + 0xe58))))))) goto LAB_00094c48;" if (parenthesized_expression "(((iVar6 <= iVar12) && ((iVar12 != iVar6 || (*(int *)(iVar9 + 0xe60) <= iVar10)))) ||\n     ((iVar14 = *(int *)(iVar9 + 0xe54), iVar12 <= iVar14 &&\n      ((iVar12 != iVar14 || (iVar18 <= *(int *)(iVar9 + 0xe58)))))))" ( (binary_expression "((iVar6 <= iVar12) && ((iVar12 != iVar6 || (*(int *)(iVar9 + 0xe60) <= iVar10)))) ||\n     ((iVar14 = *(int *)(iVar9 + 0xe54), iVar12 <= iVar14 &&\n      ((iVar12 != iVar14 || (iVar18 <= *(int *)(iVar9 + 0xe58))))))" (parenthesized_expression "((iVar6 <= iVar12) && ((iVar12 != iVar6 || (*(int *)(iVar9 + 0xe60) <= iVar10))))" ( (binary_expression "(iVar6 <= iVar12) && ((iVar12 != iVar6 || (*(int *)(iVar9 + 0xe60) <= iVar10)))" (parenthesized_expression "(iVar6 <= iVar12)" ( (binary_expression "iVar6 <= iVar12" identifier <= identifier) )) && (parenthesized_expression "((iVar12 != iVar6 || (*(int *)(iVar9 + 0xe60) <= iVar10)))" ( (parenthesized_expression "(iVar12 != iVar6 || (*(int *)(iVar9 + 0xe60) <= iVar10))" ( (binary_expression "iVar12 != iVar6 || (*(int *)(iVar9 + 0xe60) <= iVar10)" (binary_expression "iVar12 != iVar6" identifier != identifier) || (parenthesized_expression "(*(int *)(iVar9 + 0xe60) <= iVar10)" ( (binary_expression "*(int *)(iVar9 + 0xe60) <= iVar10" (pointer_expression "*(int *)(iVar9 + 0xe60)" * (cast_expression "(int *)(iVar9 + 0xe60)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0xe60)" ( (binary_expression "iVar9 + 0xe60" identifier + number_literal) )))) <= identifier) ))) )) ))) )) || (parenthesized_expression "((iVar14 = *(int *)(iVar9 + 0xe54), iVar12 <= iVar14 &&\n      ((iVar12 != iVar14 || (iVar18 <= *(int *)(iVar9 + 0xe58))))))" ( (parenthesized_expression "(iVar14 = *(int *)(iVar9 + 0xe54), iVar12 <= iVar14 &&\n      ((iVar12 != iVar14 || (iVar18 <= *(int *)(iVar9 + 0xe58)))))" ( (comma_expression "iVar14 = *(int *)(iVar9 + 0xe54), iVar12 <= iVar14 &&\n      ((iVar12 != iVar14 || (iVar18 <= *(int *)(iVar9 + 0xe58))))" (assignment_expression "iVar14 = *(int *)(iVar9 + 0xe54)" identifier = (pointer_expression "*(int *)(iVar9 + 0xe54)" * (cast_expression "(int *)(iVar9 + 0xe54)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0xe54)" ( (binary_expression "iVar9 + 0xe54" identifier + number_literal) ))))) , (binary_expression "iVar12 <= iVar14 &&\n      ((iVar12 != iVar14 || (iVar18 <= *(int *)(iVar9 + 0xe58))))" (binary_expression "iVar12 <= iVar14" identifier <= identifier) && (parenthesized_expression "((iVar12 != iVar14 || (iVar18 <= *(int *)(iVar9 + 0xe58))))" ( (parenthesized_expression "(iVar12 != iVar14 || (iVar18 <= *(int *)(iVar9 + 0xe58)))" ( (binary_expression "iVar12 != iVar14 || (iVar18 <= *(int *)(iVar9 + 0xe58))" (binary_expression "iVar12 != iVar14" identifier != identifier) || (parenthesized_expression "(iVar18 <= *(int *)(iVar9 + 0xe58))" ( (binary_expression "iVar18 <= *(int *)(iVar9 + 0xe58)" identifier <= (pointer_expression "*(int *)(iVar9 + 0xe58)" * (cast_expression "(int *)(iVar9 + 0xe58)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0xe58)" ( (binary_expression "iVar9 + 0xe58" identifier + number_literal) ))))) ))) )) )))) )) ))) )) (goto_statement "goto LAB_00094c48;" goto statement_identifier ;)) (expression_statement "iVar17 = iVar10 + iVar19;" (assignment_expression "iVar17 = iVar10 + iVar19" identifier = (binary_expression "iVar10 + iVar19" identifier + identifier)) ;) (expression_statement "iVar15 = iVar18;" (assignment_expression "iVar15 = iVar18" identifier = identifier) ;) (if_statement "if (iVar21 == 1) {\n    iVar15 = iVar18 - iVar19;\n    iVar17 = iVar10;\n  }" if (parenthesized_expression "(iVar21 == 1)" ( (binary_expression "iVar21 == 1" identifier == number_literal) )) (compound_statement "{\n    iVar15 = iVar18 - iVar19;\n    iVar17 = iVar10;\n  }" { (expression_statement "iVar15 = iVar18 - iVar19;" (assignment_expression "iVar15 = iVar18 - iVar19" identifier = (binary_expression "iVar18 - iVar19" identifier - identifier)) ;) (expression_statement "iVar17 = iVar10;" (assignment_expression "iVar17 = iVar10" identifier = identifier) ;) })) (if_statement "if ((iVar12 < iVar14) || ((iVar12 == iVar14 && (iVar17 <= *(int *)(iVar9 + 0xe58))))) {\n    if (iVar6 < iVar12) {\n      iVar6 = *(int *)(iVar9 + 0xe60);\n    }\n    else if ((iVar12 != iVar6) || (iVar6 = *(int *)(iVar9 + 0xe60), iVar15 < iVar6))\n    goto LAB_00094e08;\n    iVar14 = iVar21 * iVar19 + *(int *)(iVar9 + 0xe58);\n    iVar6 = iVar21 * iVar19 + iVar6;\n    *(int *)(iVar9 + 0xe58) = iVar14;\n    *(int *)(iVar9 + 0xe60) = iVar6;\n    if (iVar14 < iVar10) {\n      (**(code **)(puVar26 + 0x7d398))\n                (*(int *)(puVar26 + 0x7c740) + 0x5a20,*(int *)(puVar26 + 0x7c740) + 0x5830,0x9dd,\n                 *(int *)(puVar26 + 0x7c740) + 0x6200);\n      return;\n    }\n    if (iVar18 <= iVar14) {\n      (**(code **)(puVar26 + 0x7d398))\n                (*(int *)(puVar26 + 0x7c740) + 0x5a44,*(int *)(puVar26 + 0x7c740) + 0x5830,0x9de,\n                 *(int *)(puVar26 + 0x7c740) + 0x6200);\n      return;\n    }\n    if (iVar6 <= iVar10) {\n      (**(code **)(puVar26 + 0x7d398))\n                (*(int *)(puVar26 + 0x7c740) + 0x5a64,*(int *)(puVar26 + 0x7c740) + 0x5830,0x9df,\n                 *(int *)(puVar26 + 0x7c740) + 0x6200);\n      return;\n    }\n    if (iVar18 < iVar6) {\n      (**(code **)(puVar26 + 0x7d398))\n                (*(int *)(puVar26 + 0x7c740) + 0x5a84,*(int *)(puVar26 + 0x7c740) + 0x5830,0x9e0,\n                 *(int *)(puVar26 + 0x7c740) + 0x6200);\n      return;\n    }\n  }\n  else {\nLAB_00094e08:\n    *(undefined4 *)(iVar9 + 0xe48) = 0;\n    *(undefined4 *)(iVar9 + 0xe5c) = 0;\n    *(undefined4 *)(iVar9 + 0xe60) = 0;\n    *(undefined4 *)(iVar9 + 0xe54) = 0;\n    *(undefined4 *)(iVar9 + 0xe58) = 0;\n  }" if (parenthesized_expression "((iVar12 < iVar14) || ((iVar12 == iVar14 && (iVar17 <= *(int *)(iVar9 + 0xe58)))))" ( (binary_expression "(iVar12 < iVar14) || ((iVar12 == iVar14 && (iVar17 <= *(int *)(iVar9 + 0xe58))))" (parenthesized_expression "(iVar12 < iVar14)" ( (binary_expression "iVar12 < iVar14" identifier < identifier) )) || (parenthesized_expression "((iVar12 == iVar14 && (iVar17 <= *(int *)(iVar9 + 0xe58))))" ( (parenthesized_expression "(iVar12 == iVar14 && (iVar17 <= *(int *)(iVar9 + 0xe58)))" ( (binary_expression "iVar12 == iVar14 && (iVar17 <= *(int *)(iVar9 + 0xe58))" (binary_expression "iVar12 == iVar14" identifier == identifier) && (parenthesized_expression "(iVar17 <= *(int *)(iVar9 + 0xe58))" ( (binary_expression "iVar17 <= *(int *)(iVar9 + 0xe58)" identifier <= (pointer_expression "*(int *)(iVar9 + 0xe58)" * (cast_expression "(int *)(iVar9 + 0xe58)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0xe58)" ( (binary_expression "iVar9 + 0xe58" identifier + number_literal) ))))) ))) )) ))) )) (compound_statement "{\n    if (iVar6 < iVar12) {\n      iVar6 = *(int *)(iVar9 + 0xe60);\n    }\n    else if ((iVar12 != iVar6) || (iVar6 = *(int *)(iVar9 + 0xe60), iVar15 < iVar6))\n    goto LAB_00094e08;\n    iVar14 = iVar21 * iVar19 + *(int *)(iVar9 + 0xe58);\n    iVar6 = iVar21 * iVar19 + iVar6;\n    *(int *)(iVar9 + 0xe58) = iVar14;\n    *(int *)(iVar9 + 0xe60) = iVar6;\n    if (iVar14 < iVar10) {\n      (**(code **)(puVar26 + 0x7d398))\n                (*(int *)(puVar26 + 0x7c740) + 0x5a20,*(int *)(puVar26 + 0x7c740) + 0x5830,0x9dd,\n                 *(int *)(puVar26 + 0x7c740) + 0x6200);\n      return;\n    }\n    if (iVar18 <= iVar14) {\n      (**(code **)(puVar26 + 0x7d398))\n                (*(int *)(puVar26 + 0x7c740) + 0x5a44,*(int *)(puVar26 + 0x7c740) + 0x5830,0x9de,\n                 *(int *)(puVar26 + 0x7c740) + 0x6200);\n      return;\n    }\n    if (iVar6 <= iVar10) {\n      (**(code **)(puVar26 + 0x7d398))\n                (*(int *)(puVar26 + 0x7c740) + 0x5a64,*(int *)(puVar26 + 0x7c740) + 0x5830,0x9df,\n                 *(int *)(puVar26 + 0x7c740) + 0x6200);\n      return;\n    }\n    if (iVar18 < iVar6) {\n      (**(code **)(puVar26 + 0x7d398))\n                (*(int *)(puVar26 + 0x7c740) + 0x5a84,*(int *)(puVar26 + 0x7c740) + 0x5830,0x9e0,\n                 *(int *)(puVar26 + 0x7c740) + 0x6200);\n      return;\n    }\n  }" { (if_statement "if (iVar6 < iVar12) {\n      iVar6 = *(int *)(iVar9 + 0xe60);\n    }\n    else if ((iVar12 != iVar6) || (iVar6 = *(int *)(iVar9 + 0xe60), iVar15 < iVar6))\n    goto LAB_00094e08;" if (parenthesized_expression "(iVar6 < iVar12)" ( (binary_expression "iVar6 < iVar12" identifier < identifier) )) (compound_statement "{\n      iVar6 = *(int *)(iVar9 + 0xe60);\n    }" { (expression_statement "iVar6 = *(int *)(iVar9 + 0xe60);" (assignment_expression "iVar6 = *(int *)(iVar9 + 0xe60)" identifier = (pointer_expression "*(int *)(iVar9 + 0xe60)" * (cast_expression "(int *)(iVar9 + 0xe60)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0xe60)" ( (binary_expression "iVar9 + 0xe60" identifier + number_literal) ))))) ;) }) (else_clause "else if ((iVar12 != iVar6) || (iVar6 = *(int *)(iVar9 + 0xe60), iVar15 < iVar6))\n    goto LAB_00094e08;" else (if_statement "if ((iVar12 != iVar6) || (iVar6 = *(int *)(iVar9 + 0xe60), iVar15 < iVar6))\n    goto LAB_00094e08;" if (parenthesized_expression "((iVar12 != iVar6) || (iVar6 = *(int *)(iVar9 + 0xe60), iVar15 < iVar6))" ( (binary_expression "(iVar12 != iVar6) || (iVar6 = *(int *)(iVar9 + 0xe60), iVar15 < iVar6)" (parenthesized_expression "(iVar12 != iVar6)" ( (binary_expression "iVar12 != iVar6" identifier != identifier) )) || (parenthesized_expression "(iVar6 = *(int *)(iVar9 + 0xe60), iVar15 < iVar6)" ( (comma_expression "iVar6 = *(int *)(iVar9 + 0xe60), iVar15 < iVar6" (assignment_expression "iVar6 = *(int *)(iVar9 + 0xe60)" identifier = (pointer_expression "*(int *)(iVar9 + 0xe60)" * (cast_expression "(int *)(iVar9 + 0xe60)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0xe60)" ( (binary_expression "iVar9 + 0xe60" identifier + number_literal) ))))) , (binary_expression "iVar15 < iVar6" identifier < identifier)) ))) )) (goto_statement "goto LAB_00094e08;" goto statement_identifier ;)))) (expression_statement "iVar14 = iVar21 * iVar19 + *(int *)(iVar9 + 0xe58);" (assignment_expression "iVar14 = iVar21 * iVar19 + *(int *)(iVar9 + 0xe58)" identifier = (binary_expression "iVar21 * iVar19 + *(int *)(iVar9 + 0xe58)" (binary_expression "iVar21 * iVar19" identifier * identifier) + (pointer_expression "*(int *)(iVar9 + 0xe58)" * (cast_expression "(int *)(iVar9 + 0xe58)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0xe58)" ( (binary_expression "iVar9 + 0xe58" identifier + number_literal) )))))) ;) (expression_statement "iVar6 = iVar21 * iVar19 + iVar6;" (assignment_expression "iVar6 = iVar21 * iVar19 + iVar6" identifier = (binary_expression "iVar21 * iVar19 + iVar6" (binary_expression "iVar21 * iVar19" identifier * identifier) + identifier)) ;) (expression_statement "*(int *)(iVar9 + 0xe58) = iVar14;" (assignment_expression "*(int *)(iVar9 + 0xe58) = iVar14" (pointer_expression "*(int *)(iVar9 + 0xe58)" * (cast_expression "(int *)(iVar9 + 0xe58)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0xe58)" ( (binary_expression "iVar9 + 0xe58" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(iVar9 + 0xe60) = iVar6;" (assignment_expression "*(int *)(iVar9 + 0xe60) = iVar6" (pointer_expression "*(int *)(iVar9 + 0xe60)" * (cast_expression "(int *)(iVar9 + 0xe60)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0xe60)" ( (binary_expression "iVar9 + 0xe60" identifier + number_literal) )))) = identifier) ;) (if_statement "if (iVar14 < iVar10) {\n      (**(code **)(puVar26 + 0x7d398))\n                (*(int *)(puVar26 + 0x7c740) + 0x5a20,*(int *)(puVar26 + 0x7c740) + 0x5830,0x9dd,\n                 *(int *)(puVar26 + 0x7c740) + 0x6200);\n      return;\n    }" if (parenthesized_expression "(iVar14 < iVar10)" ( (binary_expression "iVar14 < iVar10" identifier < identifier) )) (compound_statement "{\n      (**(code **)(puVar26 + 0x7d398))\n                (*(int *)(puVar26 + 0x7c740) + 0x5a20,*(int *)(puVar26 + 0x7c740) + 0x5830,0x9dd,\n                 *(int *)(puVar26 + 0x7c740) + 0x6200);\n      return;\n    }" { (expression_statement "(**(code **)(puVar26 + 0x7d398))\n                (*(int *)(puVar26 + 0x7c740) + 0x5a20,*(int *)(puVar26 + 0x7c740) + 0x5830,0x9dd,\n                 *(int *)(puVar26 + 0x7c740) + 0x6200);" (call_expression "(**(code **)(puVar26 + 0x7d398))\n                (*(int *)(puVar26 + 0x7c740) + 0x5a20,*(int *)(puVar26 + 0x7c740) + 0x5830,0x9dd,\n                 *(int *)(puVar26 + 0x7c740) + 0x6200)" (parenthesized_expression "(**(code **)(puVar26 + 0x7d398))" ( (pointer_expression "**(code **)(puVar26 + 0x7d398)" * (pointer_expression "*(code **)(puVar26 + 0x7d398)" * (cast_expression "(code **)(puVar26 + 0x7d398)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar26 + 0x7d398)" ( (binary_expression "puVar26 + 0x7d398" identifier + number_literal) ))))) )) (argument_list "(*(int *)(puVar26 + 0x7c740) + 0x5a20,*(int *)(puVar26 + 0x7c740) + 0x5830,0x9dd,\n                 *(int *)(puVar26 + 0x7c740) + 0x6200)" ( (binary_expression "*(int *)(puVar26 + 0x7c740) + 0x5a20" (pointer_expression "*(int *)(puVar26 + 0x7c740)" * (cast_expression "(int *)(puVar26 + 0x7c740)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar26 + 0x7c740)" ( (binary_expression "puVar26 + 0x7c740" identifier + number_literal) )))) + number_literal) , (binary_expression "*(int *)(puVar26 + 0x7c740) + 0x5830" (pointer_expression "*(int *)(puVar26 + 0x7c740)" * (cast_expression "(int *)(puVar26 + 0x7c740)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar26 + 0x7c740)" ( (binary_expression "puVar26 + 0x7c740" identifier + number_literal) )))) + number_literal) , number_literal , (binary_expression "*(int *)(puVar26 + 0x7c740) + 0x6200" (pointer_expression "*(int *)(puVar26 + 0x7c740)" * (cast_expression "(int *)(puVar26 + 0x7c740)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar26 + 0x7c740)" ( (binary_expression "puVar26 + 0x7c740" identifier + number_literal) )))) + number_literal) ))) ;) (return_statement "return;" return ;) })) (if_statement "if (iVar18 <= iVar14) {\n      (**(code **)(puVar26 + 0x7d398))\n                (*(int *)(puVar26 + 0x7c740) + 0x5a44,*(int *)(puVar26 + 0x7c740) + 0x5830,0x9de,\n                 *(int *)(puVar26 + 0x7c740) + 0x6200);\n      return;\n    }" if (parenthesized_expression "(iVar18 <= iVar14)" ( (binary_expression "iVar18 <= iVar14" identifier <= identifier) )) (compound_statement "{\n      (**(code **)(puVar26 + 0x7d398))\n                (*(int *)(puVar26 + 0x7c740) + 0x5a44,*(int *)(puVar26 + 0x7c740) + 0x5830,0x9de,\n                 *(int *)(puVar26 + 0x7c740) + 0x6200);\n      return;\n    }" { (expression_statement "(**(code **)(puVar26 + 0x7d398))\n                (*(int *)(puVar26 + 0x7c740) + 0x5a44,*(int *)(puVar26 + 0x7c740) + 0x5830,0x9de,\n                 *(int *)(puVar26 + 0x7c740) + 0x6200);" (call_expression "(**(code **)(puVar26 + 0x7d398))\n                (*(int *)(puVar26 + 0x7c740) + 0x5a44,*(int *)(puVar26 + 0x7c740) + 0x5830,0x9de,\n                 *(int *)(puVar26 + 0x7c740) + 0x6200)" (parenthesized_expression "(**(code **)(puVar26 + 0x7d398))" ( (pointer_expression "**(code **)(puVar26 + 0x7d398)" * (pointer_expression "*(code **)(puVar26 + 0x7d398)" * (cast_expression "(code **)(puVar26 + 0x7d398)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar26 + 0x7d398)" ( (binary_expression "puVar26 + 0x7d398" identifier + number_literal) ))))) )) (argument_list "(*(int *)(puVar26 + 0x7c740) + 0x5a44,*(int *)(puVar26 + 0x7c740) + 0x5830,0x9de,\n                 *(int *)(puVar26 + 0x7c740) + 0x6200)" ( (binary_expression "*(int *)(puVar26 + 0x7c740) + 0x5a44" (pointer_expression "*(int *)(puVar26 + 0x7c740)" * (cast_expression "(int *)(puVar26 + 0x7c740)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar26 + 0x7c740)" ( (binary_expression "puVar26 + 0x7c740" identifier + number_literal) )))) + number_literal) , (binary_expression "*(int *)(puVar26 + 0x7c740) + 0x5830" (pointer_expression "*(int *)(puVar26 + 0x7c740)" * (cast_expression "(int *)(puVar26 + 0x7c740)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar26 + 0x7c740)" ( (binary_expression "puVar26 + 0x7c740" identifier + number_literal) )))) + number_literal) , number_literal , (binary_expression "*(int *)(puVar26 + 0x7c740) + 0x6200" (pointer_expression "*(int *)(puVar26 + 0x7c740)" * (cast_expression "(int *)(puVar26 + 0x7c740)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar26 + 0x7c740)" ( (binary_expression "puVar26 + 0x7c740" identifier + number_literal) )))) + number_literal) ))) ;) (return_statement "return;" return ;) })) (if_statement "if (iVar6 <= iVar10) {\n      (**(code **)(puVar26 + 0x7d398))\n                (*(int *)(puVar26 + 0x7c740) + 0x5a64,*(int *)(puVar26 + 0x7c740) + 0x5830,0x9df,\n                 *(int *)(puVar26 + 0x7c740) + 0x6200);\n      return;\n    }" if (parenthesized_expression "(iVar6 <= iVar10)" ( (binary_expression "iVar6 <= iVar10" identifier <= identifier) )) (compound_statement "{\n      (**(code **)(puVar26 + 0x7d398))\n                (*(int *)(puVar26 + 0x7c740) + 0x5a64,*(int *)(puVar26 + 0x7c740) + 0x5830,0x9df,\n                 *(int *)(puVar26 + 0x7c740) + 0x6200);\n      return;\n    }" { (expression_statement "(**(code **)(puVar26 + 0x7d398))\n                (*(int *)(puVar26 + 0x7c740) + 0x5a64,*(int *)(puVar26 + 0x7c740) + 0x5830,0x9df,\n                 *(int *)(puVar26 + 0x7c740) + 0x6200);" (call_expression "(**(code **)(puVar26 + 0x7d398))\n                (*(int *)(puVar26 + 0x7c740) + 0x5a64,*(int *)(puVar26 + 0x7c740) + 0x5830,0x9df,\n                 *(int *)(puVar26 + 0x7c740) + 0x6200)" (parenthesized_expression "(**(code **)(puVar26 + 0x7d398))" ( (pointer_expression "**(code **)(puVar26 + 0x7d398)" * (pointer_expression "*(code **)(puVar26 + 0x7d398)" * (cast_expression "(code **)(puVar26 + 0x7d398)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar26 + 0x7d398)" ( (binary_expression "puVar26 + 0x7d398" identifier + number_literal) ))))) )) (argument_list "(*(int *)(puVar26 + 0x7c740) + 0x5a64,*(int *)(puVar26 + 0x7c740) + 0x5830,0x9df,\n                 *(int *)(puVar26 + 0x7c740) + 0x6200)" ( (binary_expression "*(int *)(puVar26 + 0x7c740) + 0x5a64" (pointer_expression "*(int *)(puVar26 + 0x7c740)" * (cast_expression "(int *)(puVar26 + 0x7c740)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar26 + 0x7c740)" ( (binary_expression "puVar26 + 0x7c740" identifier + number_literal) )))) + number_literal) , (binary_expression "*(int *)(puVar26 + 0x7c740) + 0x5830" (pointer_expression "*(int *)(puVar26 + 0x7c740)" * (cast_expression "(int *)(puVar26 + 0x7c740)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar26 + 0x7c740)" ( (binary_expression "puVar26 + 0x7c740" identifier + number_literal) )))) + number_literal) , number_literal , (binary_expression "*(int *)(puVar26 + 0x7c740) + 0x6200" (pointer_expression "*(int *)(puVar26 + 0x7c740)" * (cast_expression "(int *)(puVar26 + 0x7c740)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar26 + 0x7c740)" ( (binary_expression "puVar26 + 0x7c740" identifier + number_literal) )))) + number_literal) ))) ;) (return_statement "return;" return ;) })) (if_statement "if (iVar18 < iVar6) {\n      (**(code **)(puVar26 + 0x7d398))\n                (*(int *)(puVar26 + 0x7c740) + 0x5a84,*(int *)(puVar26 + 0x7c740) + 0x5830,0x9e0,\n                 *(int *)(puVar26 + 0x7c740) + 0x6200);\n      return;\n    }" if (parenthesized_expression "(iVar18 < iVar6)" ( (binary_expression "iVar18 < iVar6" identifier < identifier) )) (compound_statement "{\n      (**(code **)(puVar26 + 0x7d398))\n                (*(int *)(puVar26 + 0x7c740) + 0x5a84,*(int *)(puVar26 + 0x7c740) + 0x5830,0x9e0,\n                 *(int *)(puVar26 + 0x7c740) + 0x6200);\n      return;\n    }" { (expression_statement "(**(code **)(puVar26 + 0x7d398))\n                (*(int *)(puVar26 + 0x7c740) + 0x5a84,*(int *)(puVar26 + 0x7c740) + 0x5830,0x9e0,\n                 *(int *)(puVar26 + 0x7c740) + 0x6200);" (call_expression "(**(code **)(puVar26 + 0x7d398))\n                (*(int *)(puVar26 + 0x7c740) + 0x5a84,*(int *)(puVar26 + 0x7c740) + 0x5830,0x9e0,\n                 *(int *)(puVar26 + 0x7c740) + 0x6200)" (parenthesized_expression "(**(code **)(puVar26 + 0x7d398))" ( (pointer_expression "**(code **)(puVar26 + 0x7d398)" * (pointer_expression "*(code **)(puVar26 + 0x7d398)" * (cast_expression "(code **)(puVar26 + 0x7d398)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar26 + 0x7d398)" ( (binary_expression "puVar26 + 0x7d398" identifier + number_literal) ))))) )) (argument_list "(*(int *)(puVar26 + 0x7c740) + 0x5a84,*(int *)(puVar26 + 0x7c740) + 0x5830,0x9e0,\n                 *(int *)(puVar26 + 0x7c740) + 0x6200)" ( (binary_expression "*(int *)(puVar26 + 0x7c740) + 0x5a84" (pointer_expression "*(int *)(puVar26 + 0x7c740)" * (cast_expression "(int *)(puVar26 + 0x7c740)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar26 + 0x7c740)" ( (binary_expression "puVar26 + 0x7c740" identifier + number_literal) )))) + number_literal) , (binary_expression "*(int *)(puVar26 + 0x7c740) + 0x5830" (pointer_expression "*(int *)(puVar26 + 0x7c740)" * (cast_expression "(int *)(puVar26 + 0x7c740)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar26 + 0x7c740)" ( (binary_expression "puVar26 + 0x7c740" identifier + number_literal) )))) + number_literal) , number_literal , (binary_expression "*(int *)(puVar26 + 0x7c740) + 0x6200" (pointer_expression "*(int *)(puVar26 + 0x7c740)" * (cast_expression "(int *)(puVar26 + 0x7c740)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar26 + 0x7c740)" ( (binary_expression "puVar26 + 0x7c740" identifier + number_literal) )))) + number_literal) ))) ;) (return_statement "return;" return ;) })) }) (else_clause "else {\nLAB_00094e08:\n    *(undefined4 *)(iVar9 + 0xe48) = 0;\n    *(undefined4 *)(iVar9 + 0xe5c) = 0;\n    *(undefined4 *)(iVar9 + 0xe60) = 0;\n    *(undefined4 *)(iVar9 + 0xe54) = 0;\n    *(undefined4 *)(iVar9 + 0xe58) = 0;\n  }" else (compound_statement "{\nLAB_00094e08:\n    *(undefined4 *)(iVar9 + 0xe48) = 0;\n    *(undefined4 *)(iVar9 + 0xe5c) = 0;\n    *(undefined4 *)(iVar9 + 0xe60) = 0;\n    *(undefined4 *)(iVar9 + 0xe54) = 0;\n    *(undefined4 *)(iVar9 + 0xe58) = 0;\n  }" { (labeled_statement "LAB_00094e08:\n    *(undefined4 *)(iVar9 + 0xe48) = 0;" statement_identifier : (expression_statement "*(undefined4 *)(iVar9 + 0xe48) = 0;" (assignment_expression "*(undefined4 *)(iVar9 + 0xe48) = 0" (pointer_expression "*(undefined4 *)(iVar9 + 0xe48)" * (cast_expression "(undefined4 *)(iVar9 + 0xe48)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0xe48)" ( (binary_expression "iVar9 + 0xe48" identifier + number_literal) )))) = number_literal) ;)) (expression_statement "*(undefined4 *)(iVar9 + 0xe5c) = 0;" (assignment_expression "*(undefined4 *)(iVar9 + 0xe5c) = 0" (pointer_expression "*(undefined4 *)(iVar9 + 0xe5c)" * (cast_expression "(undefined4 *)(iVar9 + 0xe5c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0xe5c)" ( (binary_expression "iVar9 + 0xe5c" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(iVar9 + 0xe60) = 0;" (assignment_expression "*(undefined4 *)(iVar9 + 0xe60) = 0" (pointer_expression "*(undefined4 *)(iVar9 + 0xe60)" * (cast_expression "(undefined4 *)(iVar9 + 0xe60)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0xe60)" ( (binary_expression "iVar9 + 0xe60" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(iVar9 + 0xe54) = 0;" (assignment_expression "*(undefined4 *)(iVar9 + 0xe54) = 0" (pointer_expression "*(undefined4 *)(iVar9 + 0xe54)" * (cast_expression "(undefined4 *)(iVar9 + 0xe54)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0xe54)" ( (binary_expression "iVar9 + 0xe54" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined4 *)(iVar9 + 0xe58) = 0;" (assignment_expression "*(undefined4 *)(iVar9 + 0xe58) = 0" (pointer_expression "*(undefined4 *)(iVar9 + 0xe58)" * (cast_expression "(undefined4 *)(iVar9 + 0xe58)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0xe58)" ( (binary_expression "iVar9 + 0xe58" identifier + number_literal) )))) = number_literal) ;) }))) (labeled_statement "LAB_00094c48:\n  if ((0 < iVar10) && (iVar10 <= iVar18)) {\n    FUN_00092d1c(iVar9,iVar10,iVar12);\n    iVar12 = *(int *)(iVar9 + 0x6c);\n  }" statement_identifier : (if_statement "if ((0 < iVar10) && (iVar10 <= iVar18)) {\n    FUN_00092d1c(iVar9,iVar10,iVar12);\n    iVar12 = *(int *)(iVar9 + 0x6c);\n  }" if (parenthesized_expression "((0 < iVar10) && (iVar10 <= iVar18))" ( (binary_expression "(0 < iVar10) && (iVar10 <= iVar18)" (parenthesized_expression "(0 < iVar10)" ( (binary_expression "0 < iVar10" number_literal < identifier) )) && (parenthesized_expression "(iVar10 <= iVar18)" ( (binary_expression "iVar10 <= iVar18" identifier <= identifier) ))) )) (compound_statement "{\n    FUN_00092d1c(iVar9,iVar10,iVar12);\n    iVar12 = *(int *)(iVar9 + 0x6c);\n  }" { (expression_statement "FUN_00092d1c(iVar9,iVar10,iVar12);" (call_expression "FUN_00092d1c(iVar9,iVar10,iVar12)" identifier (argument_list "(iVar9,iVar10,iVar12)" ( identifier , identifier , identifier ))) ;) (expression_statement "iVar12 = *(int *)(iVar9 + 0x6c);" (assignment_expression "iVar12 = *(int *)(iVar9 + 0x6c)" identifier = (pointer_expression "*(int *)(iVar9 + 0x6c)" * (cast_expression "(int *)(iVar9 + 0x6c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0x6c)" ( (binary_expression "iVar9 + 0x6c" identifier + number_literal) ))))) ;) }))) (if_statement "if (iVar21 == -1) {\n    iVar21 = iVar19 + *(int *)(iVar9 + 0x70);\n    if ((0 < iVar21) && (iVar21 <= *(int *)(iVar9 + 300))) {\n      FUN_00092d1c(iVar9,iVar21,iVar12,1);\n      iVar12 = *(int *)(iVar9 + 0x6c);\n    }\n    iVar21 = FUN_00092a9c(iVar9,iVar12,0x9eb,1);\n    if (0 < iVar24) {\n      iVar18 = *(int *)(puVar26 + 0x7cf20);\n      iVar10 = 0;\n      do {\n        iVar6 = iVar10 + *(int *)(iVar9 + 0x70);\n        iVar12 = iVar6 + iVar19;\n        iVar6 = iVar6 * 0xc;\n        puVar22 = (undefined4 *)(*(int *)(iVar21 + 0x14) + iVar12 * 0xc);\n        puVar25 = (undefined4 *)(*(int *)(iVar21 + 0x14) + iVar6);\n        (*(code *)(iVar18 + 0xab0))(iVar21,(iVar6 >> 2) * -0x55555555);\n        uVar20 = puVar22[2];\n        uVar13 = puVar22[1];\n        *puVar25 = *puVar22;\n        puVar25[1] = uVar13;\n        puVar25[2] = uVar20;\n        if (puVar22[2] != 0) {\n          puVar25[2] = (iVar6 + iVar12 * -0xc >> 2) * 0x55555555 + puVar22[2];\n        }\n        iVar10 = iVar10 + 1;\n        puVar22[2] = 0;\n      } while (iVar24 != iVar10);\n    }\n    if (iVar19 != 0) {\n      iVar18 = iVar24;\n      do {\n        iVar10 = iVar18 + 1;\n        FUN_00091070(iVar21,iVar18 + *(int *)(iVar9 + 0x70),iVar9 + 0x54);\n        iVar18 = iVar10;\n      } while (iVar10 != iVar19 + iVar24);\n      return;\n    }\n  }\n  else {\n    iVar18 = iVar24 + -1;\n    iVar21 = FUN_00092a9c(iVar9,iVar12,0x9eb,1);\n    if (iVar24 != 0) {\n      iVar10 = *(int *)(puVar26 + 0x7cf20);\n      do {\n        iVar6 = iVar18 + *(int *)(iVar9 + 0x70);\n        iVar12 = (iVar19 + iVar6) * 0xc;\n        puVar22 = (undefined4 *)(*(int *)(iVar21 + 0x14) + iVar6 * 0xc);\n        puVar25 = (undefined4 *)(*(int *)(iVar21 + 0x14) + iVar12);\n        (*(code *)(iVar10 + 0xab0))(iVar21,(iVar12 >> 2) * -0x55555555);\n        uVar20 = puVar22[2];\n        uVar13 = puVar22[1];\n        *puVar25 = *puVar22;\n        puVar25[1] = uVar13;\n        puVar25[2] = uVar20;\n        if (puVar22[2] != 0) {\n          puVar25[2] = (iVar12 + iVar6 * -0xc >> 2) * 0x55555555 + puVar22[2];\n        }\n        iVar18 = iVar18 + -1;\n        puVar22[2] = 0;\n      } while (iVar18 != -1);\n    }\n    iVar18 = iVar19 + -1;\n    if (iVar19 != 0) {\n      do {\n        iVar19 = iVar18 + *(int *)(iVar9 + 0x70);\n        iVar18 = iVar18 + -1;\n        FUN_00091070(iVar21,iVar19,iVar9 + 0x54);\n      } while (iVar18 != -1);\n    }\n  }" if (parenthesized_expression "(iVar21 == -1)" ( (binary_expression "iVar21 == -1" identifier == number_literal) )) (compound_statement "{\n    iVar21 = iVar19 + *(int *)(iVar9 + 0x70);\n    if ((0 < iVar21) && (iVar21 <= *(int *)(iVar9 + 300))) {\n      FUN_00092d1c(iVar9,iVar21,iVar12,1);\n      iVar12 = *(int *)(iVar9 + 0x6c);\n    }\n    iVar21 = FUN_00092a9c(iVar9,iVar12,0x9eb,1);\n    if (0 < iVar24) {\n      iVar18 = *(int *)(puVar26 + 0x7cf20);\n      iVar10 = 0;\n      do {\n        iVar6 = iVar10 + *(int *)(iVar9 + 0x70);\n        iVar12 = iVar6 + iVar19;\n        iVar6 = iVar6 * 0xc;\n        puVar22 = (undefined4 *)(*(int *)(iVar21 + 0x14) + iVar12 * 0xc);\n        puVar25 = (undefined4 *)(*(int *)(iVar21 + 0x14) + iVar6);\n        (*(code *)(iVar18 + 0xab0))(iVar21,(iVar6 >> 2) * -0x55555555);\n        uVar20 = puVar22[2];\n        uVar13 = puVar22[1];\n        *puVar25 = *puVar22;\n        puVar25[1] = uVar13;\n        puVar25[2] = uVar20;\n        if (puVar22[2] != 0) {\n          puVar25[2] = (iVar6 + iVar12 * -0xc >> 2) * 0x55555555 + puVar22[2];\n        }\n        iVar10 = iVar10 + 1;\n        puVar22[2] = 0;\n      } while (iVar24 != iVar10);\n    }\n    if (iVar19 != 0) {\n      iVar18 = iVar24;\n      do {\n        iVar10 = iVar18 + 1;\n        FUN_00091070(iVar21,iVar18 + *(int *)(iVar9 + 0x70),iVar9 + 0x54);\n        iVar18 = iVar10;\n      } while (iVar10 != iVar19 + iVar24);\n      return;\n    }\n  }" { (expression_statement "iVar21 = iVar19 + *(int *)(iVar9 + 0x70);" (assignment_expression "iVar21 = iVar19 + *(int *)(iVar9 + 0x70)" identifier = (binary_expression "iVar19 + *(int *)(iVar9 + 0x70)" identifier + (pointer_expression "*(int *)(iVar9 + 0x70)" * (cast_expression "(int *)(iVar9 + 0x70)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0x70)" ( (binary_expression "iVar9 + 0x70" identifier + number_literal) )))))) ;) (if_statement "if ((0 < iVar21) && (iVar21 <= *(int *)(iVar9 + 300))) {\n      FUN_00092d1c(iVar9,iVar21,iVar12,1);\n      iVar12 = *(int *)(iVar9 + 0x6c);\n    }" if (parenthesized_expression "((0 < iVar21) && (iVar21 <= *(int *)(iVar9 + 300)))" ( (binary_expression "(0 < iVar21) && (iVar21 <= *(int *)(iVar9 + 300))" (parenthesized_expression "(0 < iVar21)" ( (binary_expression "0 < iVar21" number_literal < identifier) )) && (parenthesized_expression "(iVar21 <= *(int *)(iVar9 + 300))" ( (binary_expression "iVar21 <= *(int *)(iVar9 + 300)" identifier <= (pointer_expression "*(int *)(iVar9 + 300)" * (cast_expression "(int *)(iVar9 + 300)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 300)" ( (binary_expression "iVar9 + 300" identifier + number_literal) ))))) ))) )) (compound_statement "{\n      FUN_00092d1c(iVar9,iVar21,iVar12,1);\n      iVar12 = *(int *)(iVar9 + 0x6c);\n    }" { (expression_statement "FUN_00092d1c(iVar9,iVar21,iVar12,1);" (call_expression "FUN_00092d1c(iVar9,iVar21,iVar12,1)" identifier (argument_list "(iVar9,iVar21,iVar12,1)" ( identifier , identifier , identifier , number_literal ))) ;) (expression_statement "iVar12 = *(int *)(iVar9 + 0x6c);" (assignment_expression "iVar12 = *(int *)(iVar9 + 0x6c)" identifier = (pointer_expression "*(int *)(iVar9 + 0x6c)" * (cast_expression "(int *)(iVar9 + 0x6c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0x6c)" ( (binary_expression "iVar9 + 0x6c" identifier + number_literal) ))))) ;) })) (expression_statement "iVar21 = FUN_00092a9c(iVar9,iVar12,0x9eb,1);" (assignment_expression "iVar21 = FUN_00092a9c(iVar9,iVar12,0x9eb,1)" identifier = (call_expression "FUN_00092a9c(iVar9,iVar12,0x9eb,1)" identifier (argument_list "(iVar9,iVar12,0x9eb,1)" ( identifier , identifier , number_literal , number_literal )))) ;) (if_statement "if (0 < iVar24) {\n      iVar18 = *(int *)(puVar26 + 0x7cf20);\n      iVar10 = 0;\n      do {\n        iVar6 = iVar10 + *(int *)(iVar9 + 0x70);\n        iVar12 = iVar6 + iVar19;\n        iVar6 = iVar6 * 0xc;\n        puVar22 = (undefined4 *)(*(int *)(iVar21 + 0x14) + iVar12 * 0xc);\n        puVar25 = (undefined4 *)(*(int *)(iVar21 + 0x14) + iVar6);\n        (*(code *)(iVar18 + 0xab0))(iVar21,(iVar6 >> 2) * -0x55555555);\n        uVar20 = puVar22[2];\n        uVar13 = puVar22[1];\n        *puVar25 = *puVar22;\n        puVar25[1] = uVar13;\n        puVar25[2] = uVar20;\n        if (puVar22[2] != 0) {\n          puVar25[2] = (iVar6 + iVar12 * -0xc >> 2) * 0x55555555 + puVar22[2];\n        }\n        iVar10 = iVar10 + 1;\n        puVar22[2] = 0;\n      } while (iVar24 != iVar10);\n    }" if (parenthesized_expression "(0 < iVar24)" ( (binary_expression "0 < iVar24" number_literal < identifier) )) (compound_statement "{\n      iVar18 = *(int *)(puVar26 + 0x7cf20);\n      iVar10 = 0;\n      do {\n        iVar6 = iVar10 + *(int *)(iVar9 + 0x70);\n        iVar12 = iVar6 + iVar19;\n        iVar6 = iVar6 * 0xc;\n        puVar22 = (undefined4 *)(*(int *)(iVar21 + 0x14) + iVar12 * 0xc);\n        puVar25 = (undefined4 *)(*(int *)(iVar21 + 0x14) + iVar6);\n        (*(code *)(iVar18 + 0xab0))(iVar21,(iVar6 >> 2) * -0x55555555);\n        uVar20 = puVar22[2];\n        uVar13 = puVar22[1];\n        *puVar25 = *puVar22;\n        puVar25[1] = uVar13;\n        puVar25[2] = uVar20;\n        if (puVar22[2] != 0) {\n          puVar25[2] = (iVar6 + iVar12 * -0xc >> 2) * 0x55555555 + puVar22[2];\n        }\n        iVar10 = iVar10 + 1;\n        puVar22[2] = 0;\n      } while (iVar24 != iVar10);\n    }" { (expression_statement "iVar18 = *(int *)(puVar26 + 0x7cf20);" (assignment_expression "iVar18 = *(int *)(puVar26 + 0x7cf20)" identifier = (pointer_expression "*(int *)(puVar26 + 0x7cf20)" * (cast_expression "(int *)(puVar26 + 0x7cf20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar26 + 0x7cf20)" ( (binary_expression "puVar26 + 0x7cf20" identifier + number_literal) ))))) ;) (expression_statement "iVar10 = 0;" (assignment_expression "iVar10 = 0" identifier = number_literal) ;) (do_statement "do {\n        iVar6 = iVar10 + *(int *)(iVar9 + 0x70);\n        iVar12 = iVar6 + iVar19;\n        iVar6 = iVar6 * 0xc;\n        puVar22 = (undefined4 *)(*(int *)(iVar21 + 0x14) + iVar12 * 0xc);\n        puVar25 = (undefined4 *)(*(int *)(iVar21 + 0x14) + iVar6);\n        (*(code *)(iVar18 + 0xab0))(iVar21,(iVar6 >> 2) * -0x55555555);\n        uVar20 = puVar22[2];\n        uVar13 = puVar22[1];\n        *puVar25 = *puVar22;\n        puVar25[1] = uVar13;\n        puVar25[2] = uVar20;\n        if (puVar22[2] != 0) {\n          puVar25[2] = (iVar6 + iVar12 * -0xc >> 2) * 0x55555555 + puVar22[2];\n        }\n        iVar10 = iVar10 + 1;\n        puVar22[2] = 0;\n      } while (iVar24 != iVar10);" do (compound_statement "{\n        iVar6 = iVar10 + *(int *)(iVar9 + 0x70);\n        iVar12 = iVar6 + iVar19;\n        iVar6 = iVar6 * 0xc;\n        puVar22 = (undefined4 *)(*(int *)(iVar21 + 0x14) + iVar12 * 0xc);\n        puVar25 = (undefined4 *)(*(int *)(iVar21 + 0x14) + iVar6);\n        (*(code *)(iVar18 + 0xab0))(iVar21,(iVar6 >> 2) * -0x55555555);\n        uVar20 = puVar22[2];\n        uVar13 = puVar22[1];\n        *puVar25 = *puVar22;\n        puVar25[1] = uVar13;\n        puVar25[2] = uVar20;\n        if (puVar22[2] != 0) {\n          puVar25[2] = (iVar6 + iVar12 * -0xc >> 2) * 0x55555555 + puVar22[2];\n        }\n        iVar10 = iVar10 + 1;\n        puVar22[2] = 0;\n      }" { (expression_statement "iVar6 = iVar10 + *(int *)(iVar9 + 0x70);" (assignment_expression "iVar6 = iVar10 + *(int *)(iVar9 + 0x70)" identifier = (binary_expression "iVar10 + *(int *)(iVar9 + 0x70)" identifier + (pointer_expression "*(int *)(iVar9 + 0x70)" * (cast_expression "(int *)(iVar9 + 0x70)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0x70)" ( (binary_expression "iVar9 + 0x70" identifier + number_literal) )))))) ;) (expression_statement "iVar12 = iVar6 + iVar19;" (assignment_expression "iVar12 = iVar6 + iVar19" identifier = (binary_expression "iVar6 + iVar19" identifier + identifier)) ;) (expression_statement "iVar6 = iVar6 * 0xc;" (assignment_expression "iVar6 = iVar6 * 0xc" identifier = (binary_expression "iVar6 * 0xc" identifier * number_literal)) ;) (expression_statement "puVar22 = (undefined4 *)(*(int *)(iVar21 + 0x14) + iVar12 * 0xc);" (assignment_expression "puVar22 = (undefined4 *)(*(int *)(iVar21 + 0x14) + iVar12 * 0xc)" identifier = (cast_expression "(undefined4 *)(*(int *)(iVar21 + 0x14) + iVar12 * 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar21 + 0x14) + iVar12 * 0xc)" ( (binary_expression "*(int *)(iVar21 + 0x14) + iVar12 * 0xc" (pointer_expression "*(int *)(iVar21 + 0x14)" * (cast_expression "(int *)(iVar21 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar21 + 0x14)" ( (binary_expression "iVar21 + 0x14" identifier + number_literal) )))) + (binary_expression "iVar12 * 0xc" identifier * number_literal)) )))) ;) (expression_statement "puVar25 = (undefined4 *)(*(int *)(iVar21 + 0x14) + iVar6);" (assignment_expression "puVar25 = (undefined4 *)(*(int *)(iVar21 + 0x14) + iVar6)" identifier = (cast_expression "(undefined4 *)(*(int *)(iVar21 + 0x14) + iVar6)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar21 + 0x14) + iVar6)" ( (binary_expression "*(int *)(iVar21 + 0x14) + iVar6" (pointer_expression "*(int *)(iVar21 + 0x14)" * (cast_expression "(int *)(iVar21 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar21 + 0x14)" ( (binary_expression "iVar21 + 0x14" identifier + number_literal) )))) + identifier) )))) ;) (expression_statement "(*(code *)(iVar18 + 0xab0))(iVar21,(iVar6 >> 2) * -0x55555555);" (call_expression "(*(code *)(iVar18 + 0xab0))(iVar21,(iVar6 >> 2) * -0x55555555)" (parenthesized_expression "(*(code *)(iVar18 + 0xab0))" ( (pointer_expression "*(code *)(iVar18 + 0xab0)" * (cast_expression "(code *)(iVar18 + 0xab0)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar18 + 0xab0)" ( (binary_expression "iVar18 + 0xab0" identifier + number_literal) )))) )) (argument_list "(iVar21,(iVar6 >> 2) * -0x55555555)" ( identifier , (binary_expression "(iVar6 >> 2) * -0x55555555" (parenthesized_expression "(iVar6 >> 2)" ( (binary_expression "iVar6 >> 2" identifier >> number_literal) )) * number_literal) ))) ;) (expression_statement "uVar20 = puVar22[2];" (assignment_expression "uVar20 = puVar22[2]" identifier = (subscript_expression "puVar22[2]" identifier [ number_literal ])) ;) (expression_statement "uVar13 = puVar22[1];" (assignment_expression "uVar13 = puVar22[1]" identifier = (subscript_expression "puVar22[1]" identifier [ number_literal ])) ;) (expression_statement "*puVar25 = *puVar22;" (assignment_expression "*puVar25 = *puVar22" (pointer_expression "*puVar25" * identifier) = (pointer_expression "*puVar22" * identifier)) ;) (expression_statement "puVar25[1] = uVar13;" (assignment_expression "puVar25[1] = uVar13" (subscript_expression "puVar25[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar25[2] = uVar20;" (assignment_expression "puVar25[2] = uVar20" (subscript_expression "puVar25[2]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (puVar22[2] != 0) {\n          puVar25[2] = (iVar6 + iVar12 * -0xc >> 2) * 0x55555555 + puVar22[2];\n        }" if (parenthesized_expression "(puVar22[2] != 0)" ( (binary_expression "puVar22[2] != 0" (subscript_expression "puVar22[2]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n          puVar25[2] = (iVar6 + iVar12 * -0xc >> 2) * 0x55555555 + puVar22[2];\n        }" { (expression_statement "puVar25[2] = (iVar6 + iVar12 * -0xc >> 2) * 0x55555555 + puVar22[2];" (assignment_expression "puVar25[2] = (iVar6 + iVar12 * -0xc >> 2) * 0x55555555 + puVar22[2]" (subscript_expression "puVar25[2]" identifier [ number_literal ]) = (binary_expression "(iVar6 + iVar12 * -0xc >> 2) * 0x55555555 + puVar22[2]" (binary_expression "(iVar6 + iVar12 * -0xc >> 2) * 0x55555555" (parenthesized_expression "(iVar6 + iVar12 * -0xc >> 2)" ( (binary_expression "iVar6 + iVar12 * -0xc >> 2" (binary_expression "iVar6 + iVar12 * -0xc" identifier + (binary_expression "iVar12 * -0xc" identifier * number_literal)) >> number_literal) )) * number_literal) + (subscript_expression "puVar22[2]" identifier [ number_literal ]))) ;) })) (expression_statement "iVar10 = iVar10 + 1;" (assignment_expression "iVar10 = iVar10 + 1" identifier = (binary_expression "iVar10 + 1" identifier + number_literal)) ;) (expression_statement "puVar22[2] = 0;" (assignment_expression "puVar22[2] = 0" (subscript_expression "puVar22[2]" identifier [ number_literal ]) = number_literal) ;) }) while (parenthesized_expression "(iVar24 != iVar10)" ( (binary_expression "iVar24 != iVar10" identifier != identifier) )) ;) })) (if_statement "if (iVar19 != 0) {\n      iVar18 = iVar24;\n      do {\n        iVar10 = iVar18 + 1;\n        FUN_00091070(iVar21,iVar18 + *(int *)(iVar9 + 0x70),iVar9 + 0x54);\n        iVar18 = iVar10;\n      } while (iVar10 != iVar19 + iVar24);\n      return;\n    }" if (parenthesized_expression "(iVar19 != 0)" ( (binary_expression "iVar19 != 0" identifier != number_literal) )) (compound_statement "{\n      iVar18 = iVar24;\n      do {\n        iVar10 = iVar18 + 1;\n        FUN_00091070(iVar21,iVar18 + *(int *)(iVar9 + 0x70),iVar9 + 0x54);\n        iVar18 = iVar10;\n      } while (iVar10 != iVar19 + iVar24);\n      return;\n    }" { (expression_statement "iVar18 = iVar24;" (assignment_expression "iVar18 = iVar24" identifier = identifier) ;) (do_statement "do {\n        iVar10 = iVar18 + 1;\n        FUN_00091070(iVar21,iVar18 + *(int *)(iVar9 + 0x70),iVar9 + 0x54);\n        iVar18 = iVar10;\n      } while (iVar10 != iVar19 + iVar24);" do (compound_statement "{\n        iVar10 = iVar18 + 1;\n        FUN_00091070(iVar21,iVar18 + *(int *)(iVar9 + 0x70),iVar9 + 0x54);\n        iVar18 = iVar10;\n      }" { (expression_statement "iVar10 = iVar18 + 1;" (assignment_expression "iVar10 = iVar18 + 1" identifier = (binary_expression "iVar18 + 1" identifier + number_literal)) ;) (expression_statement "FUN_00091070(iVar21,iVar18 + *(int *)(iVar9 + 0x70),iVar9 + 0x54);" (call_expression "FUN_00091070(iVar21,iVar18 + *(int *)(iVar9 + 0x70),iVar9 + 0x54)" identifier (argument_list "(iVar21,iVar18 + *(int *)(iVar9 + 0x70),iVar9 + 0x54)" ( identifier , (binary_expression "iVar18 + *(int *)(iVar9 + 0x70)" identifier + (pointer_expression "*(int *)(iVar9 + 0x70)" * (cast_expression "(int *)(iVar9 + 0x70)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0x70)" ( (binary_expression "iVar9 + 0x70" identifier + number_literal) ))))) , (binary_expression "iVar9 + 0x54" identifier + number_literal) ))) ;) (expression_statement "iVar18 = iVar10;" (assignment_expression "iVar18 = iVar10" identifier = identifier) ;) }) while (parenthesized_expression "(iVar10 != iVar19 + iVar24)" ( (binary_expression "iVar10 != iVar19 + iVar24" identifier != (binary_expression "iVar19 + iVar24" identifier + identifier)) )) ;) (return_statement "return;" return ;) })) }) (else_clause "else {\n    iVar18 = iVar24 + -1;\n    iVar21 = FUN_00092a9c(iVar9,iVar12,0x9eb,1);\n    if (iVar24 != 0) {\n      iVar10 = *(int *)(puVar26 + 0x7cf20);\n      do {\n        iVar6 = iVar18 + *(int *)(iVar9 + 0x70);\n        iVar12 = (iVar19 + iVar6) * 0xc;\n        puVar22 = (undefined4 *)(*(int *)(iVar21 + 0x14) + iVar6 * 0xc);\n        puVar25 = (undefined4 *)(*(int *)(iVar21 + 0x14) + iVar12);\n        (*(code *)(iVar10 + 0xab0))(iVar21,(iVar12 >> 2) * -0x55555555);\n        uVar20 = puVar22[2];\n        uVar13 = puVar22[1];\n        *puVar25 = *puVar22;\n        puVar25[1] = uVar13;\n        puVar25[2] = uVar20;\n        if (puVar22[2] != 0) {\n          puVar25[2] = (iVar12 + iVar6 * -0xc >> 2) * 0x55555555 + puVar22[2];\n        }\n        iVar18 = iVar18 + -1;\n        puVar22[2] = 0;\n      } while (iVar18 != -1);\n    }\n    iVar18 = iVar19 + -1;\n    if (iVar19 != 0) {\n      do {\n        iVar19 = iVar18 + *(int *)(iVar9 + 0x70);\n        iVar18 = iVar18 + -1;\n        FUN_00091070(iVar21,iVar19,iVar9 + 0x54);\n      } while (iVar18 != -1);\n    }\n  }" else (compound_statement "{\n    iVar18 = iVar24 + -1;\n    iVar21 = FUN_00092a9c(iVar9,iVar12,0x9eb,1);\n    if (iVar24 != 0) {\n      iVar10 = *(int *)(puVar26 + 0x7cf20);\n      do {\n        iVar6 = iVar18 + *(int *)(iVar9 + 0x70);\n        iVar12 = (iVar19 + iVar6) * 0xc;\n        puVar22 = (undefined4 *)(*(int *)(iVar21 + 0x14) + iVar6 * 0xc);\n        puVar25 = (undefined4 *)(*(int *)(iVar21 + 0x14) + iVar12);\n        (*(code *)(iVar10 + 0xab0))(iVar21,(iVar12 >> 2) * -0x55555555);\n        uVar20 = puVar22[2];\n        uVar13 = puVar22[1];\n        *puVar25 = *puVar22;\n        puVar25[1] = uVar13;\n        puVar25[2] = uVar20;\n        if (puVar22[2] != 0) {\n          puVar25[2] = (iVar12 + iVar6 * -0xc >> 2) * 0x55555555 + puVar22[2];\n        }\n        iVar18 = iVar18 + -1;\n        puVar22[2] = 0;\n      } while (iVar18 != -1);\n    }\n    iVar18 = iVar19 + -1;\n    if (iVar19 != 0) {\n      do {\n        iVar19 = iVar18 + *(int *)(iVar9 + 0x70);\n        iVar18 = iVar18 + -1;\n        FUN_00091070(iVar21,iVar19,iVar9 + 0x54);\n      } while (iVar18 != -1);\n    }\n  }" { (expression_statement "iVar18 = iVar24 + -1;" (assignment_expression "iVar18 = iVar24 + -1" identifier = (binary_expression "iVar24 + -1" identifier + number_literal)) ;) (expression_statement "iVar21 = FUN_00092a9c(iVar9,iVar12,0x9eb,1);" (assignment_expression "iVar21 = FUN_00092a9c(iVar9,iVar12,0x9eb,1)" identifier = (call_expression "FUN_00092a9c(iVar9,iVar12,0x9eb,1)" identifier (argument_list "(iVar9,iVar12,0x9eb,1)" ( identifier , identifier , number_literal , number_literal )))) ;) (if_statement "if (iVar24 != 0) {\n      iVar10 = *(int *)(puVar26 + 0x7cf20);\n      do {\n        iVar6 = iVar18 + *(int *)(iVar9 + 0x70);\n        iVar12 = (iVar19 + iVar6) * 0xc;\n        puVar22 = (undefined4 *)(*(int *)(iVar21 + 0x14) + iVar6 * 0xc);\n        puVar25 = (undefined4 *)(*(int *)(iVar21 + 0x14) + iVar12);\n        (*(code *)(iVar10 + 0xab0))(iVar21,(iVar12 >> 2) * -0x55555555);\n        uVar20 = puVar22[2];\n        uVar13 = puVar22[1];\n        *puVar25 = *puVar22;\n        puVar25[1] = uVar13;\n        puVar25[2] = uVar20;\n        if (puVar22[2] != 0) {\n          puVar25[2] = (iVar12 + iVar6 * -0xc >> 2) * 0x55555555 + puVar22[2];\n        }\n        iVar18 = iVar18 + -1;\n        puVar22[2] = 0;\n      } while (iVar18 != -1);\n    }" if (parenthesized_expression "(iVar24 != 0)" ( (binary_expression "iVar24 != 0" identifier != number_literal) )) (compound_statement "{\n      iVar10 = *(int *)(puVar26 + 0x7cf20);\n      do {\n        iVar6 = iVar18 + *(int *)(iVar9 + 0x70);\n        iVar12 = (iVar19 + iVar6) * 0xc;\n        puVar22 = (undefined4 *)(*(int *)(iVar21 + 0x14) + iVar6 * 0xc);\n        puVar25 = (undefined4 *)(*(int *)(iVar21 + 0x14) + iVar12);\n        (*(code *)(iVar10 + 0xab0))(iVar21,(iVar12 >> 2) * -0x55555555);\n        uVar20 = puVar22[2];\n        uVar13 = puVar22[1];\n        *puVar25 = *puVar22;\n        puVar25[1] = uVar13;\n        puVar25[2] = uVar20;\n        if (puVar22[2] != 0) {\n          puVar25[2] = (iVar12 + iVar6 * -0xc >> 2) * 0x55555555 + puVar22[2];\n        }\n        iVar18 = iVar18 + -1;\n        puVar22[2] = 0;\n      } while (iVar18 != -1);\n    }" { (expression_statement "iVar10 = *(int *)(puVar26 + 0x7cf20);" (assignment_expression "iVar10 = *(int *)(puVar26 + 0x7cf20)" identifier = (pointer_expression "*(int *)(puVar26 + 0x7cf20)" * (cast_expression "(int *)(puVar26 + 0x7cf20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar26 + 0x7cf20)" ( (binary_expression "puVar26 + 0x7cf20" identifier + number_literal) ))))) ;) (do_statement "do {\n        iVar6 = iVar18 + *(int *)(iVar9 + 0x70);\n        iVar12 = (iVar19 + iVar6) * 0xc;\n        puVar22 = (undefined4 *)(*(int *)(iVar21 + 0x14) + iVar6 * 0xc);\n        puVar25 = (undefined4 *)(*(int *)(iVar21 + 0x14) + iVar12);\n        (*(code *)(iVar10 + 0xab0))(iVar21,(iVar12 >> 2) * -0x55555555);\n        uVar20 = puVar22[2];\n        uVar13 = puVar22[1];\n        *puVar25 = *puVar22;\n        puVar25[1] = uVar13;\n        puVar25[2] = uVar20;\n        if (puVar22[2] != 0) {\n          puVar25[2] = (iVar12 + iVar6 * -0xc >> 2) * 0x55555555 + puVar22[2];\n        }\n        iVar18 = iVar18 + -1;\n        puVar22[2] = 0;\n      } while (iVar18 != -1);" do (compound_statement "{\n        iVar6 = iVar18 + *(int *)(iVar9 + 0x70);\n        iVar12 = (iVar19 + iVar6) * 0xc;\n        puVar22 = (undefined4 *)(*(int *)(iVar21 + 0x14) + iVar6 * 0xc);\n        puVar25 = (undefined4 *)(*(int *)(iVar21 + 0x14) + iVar12);\n        (*(code *)(iVar10 + 0xab0))(iVar21,(iVar12 >> 2) * -0x55555555);\n        uVar20 = puVar22[2];\n        uVar13 = puVar22[1];\n        *puVar25 = *puVar22;\n        puVar25[1] = uVar13;\n        puVar25[2] = uVar20;\n        if (puVar22[2] != 0) {\n          puVar25[2] = (iVar12 + iVar6 * -0xc >> 2) * 0x55555555 + puVar22[2];\n        }\n        iVar18 = iVar18 + -1;\n        puVar22[2] = 0;\n      }" { (expression_statement "iVar6 = iVar18 + *(int *)(iVar9 + 0x70);" (assignment_expression "iVar6 = iVar18 + *(int *)(iVar9 + 0x70)" identifier = (binary_expression "iVar18 + *(int *)(iVar9 + 0x70)" identifier + (pointer_expression "*(int *)(iVar9 + 0x70)" * (cast_expression "(int *)(iVar9 + 0x70)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0x70)" ( (binary_expression "iVar9 + 0x70" identifier + number_literal) )))))) ;) (expression_statement "iVar12 = (iVar19 + iVar6) * 0xc;" (assignment_expression "iVar12 = (iVar19 + iVar6) * 0xc" identifier = (binary_expression "(iVar19 + iVar6) * 0xc" (parenthesized_expression "(iVar19 + iVar6)" ( (binary_expression "iVar19 + iVar6" identifier + identifier) )) * number_literal)) ;) (expression_statement "puVar22 = (undefined4 *)(*(int *)(iVar21 + 0x14) + iVar6 * 0xc);" (assignment_expression "puVar22 = (undefined4 *)(*(int *)(iVar21 + 0x14) + iVar6 * 0xc)" identifier = (cast_expression "(undefined4 *)(*(int *)(iVar21 + 0x14) + iVar6 * 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar21 + 0x14) + iVar6 * 0xc)" ( (binary_expression "*(int *)(iVar21 + 0x14) + iVar6 * 0xc" (pointer_expression "*(int *)(iVar21 + 0x14)" * (cast_expression "(int *)(iVar21 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar21 + 0x14)" ( (binary_expression "iVar21 + 0x14" identifier + number_literal) )))) + (binary_expression "iVar6 * 0xc" identifier * number_literal)) )))) ;) (expression_statement "puVar25 = (undefined4 *)(*(int *)(iVar21 + 0x14) + iVar12);" (assignment_expression "puVar25 = (undefined4 *)(*(int *)(iVar21 + 0x14) + iVar12)" identifier = (cast_expression "(undefined4 *)(*(int *)(iVar21 + 0x14) + iVar12)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(iVar21 + 0x14) + iVar12)" ( (binary_expression "*(int *)(iVar21 + 0x14) + iVar12" (pointer_expression "*(int *)(iVar21 + 0x14)" * (cast_expression "(int *)(iVar21 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar21 + 0x14)" ( (binary_expression "iVar21 + 0x14" identifier + number_literal) )))) + identifier) )))) ;) (expression_statement "(*(code *)(iVar10 + 0xab0))(iVar21,(iVar12 >> 2) * -0x55555555);" (call_expression "(*(code *)(iVar10 + 0xab0))(iVar21,(iVar12 >> 2) * -0x55555555)" (parenthesized_expression "(*(code *)(iVar10 + 0xab0))" ( (pointer_expression "*(code *)(iVar10 + 0xab0)" * (cast_expression "(code *)(iVar10 + 0xab0)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + 0xab0)" ( (binary_expression "iVar10 + 0xab0" identifier + number_literal) )))) )) (argument_list "(iVar21,(iVar12 >> 2) * -0x55555555)" ( identifier , (binary_expression "(iVar12 >> 2) * -0x55555555" (parenthesized_expression "(iVar12 >> 2)" ( (binary_expression "iVar12 >> 2" identifier >> number_literal) )) * number_literal) ))) ;) (expression_statement "uVar20 = puVar22[2];" (assignment_expression "uVar20 = puVar22[2]" identifier = (subscript_expression "puVar22[2]" identifier [ number_literal ])) ;) (expression_statement "uVar13 = puVar22[1];" (assignment_expression "uVar13 = puVar22[1]" identifier = (subscript_expression "puVar22[1]" identifier [ number_literal ])) ;) (expression_statement "*puVar25 = *puVar22;" (assignment_expression "*puVar25 = *puVar22" (pointer_expression "*puVar25" * identifier) = (pointer_expression "*puVar22" * identifier)) ;) (expression_statement "puVar25[1] = uVar13;" (assignment_expression "puVar25[1] = uVar13" (subscript_expression "puVar25[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar25[2] = uVar20;" (assignment_expression "puVar25[2] = uVar20" (subscript_expression "puVar25[2]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (puVar22[2] != 0) {\n          puVar25[2] = (iVar12 + iVar6 * -0xc >> 2) * 0x55555555 + puVar22[2];\n        }" if (parenthesized_expression "(puVar22[2] != 0)" ( (binary_expression "puVar22[2] != 0" (subscript_expression "puVar22[2]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n          puVar25[2] = (iVar12 + iVar6 * -0xc >> 2) * 0x55555555 + puVar22[2];\n        }" { (expression_statement "puVar25[2] = (iVar12 + iVar6 * -0xc >> 2) * 0x55555555 + puVar22[2];" (assignment_expression "puVar25[2] = (iVar12 + iVar6 * -0xc >> 2) * 0x55555555 + puVar22[2]" (subscript_expression "puVar25[2]" identifier [ number_literal ]) = (binary_expression "(iVar12 + iVar6 * -0xc >> 2) * 0x55555555 + puVar22[2]" (binary_expression "(iVar12 + iVar6 * -0xc >> 2) * 0x55555555" (parenthesized_expression "(iVar12 + iVar6 * -0xc >> 2)" ( (binary_expression "iVar12 + iVar6 * -0xc >> 2" (binary_expression "iVar12 + iVar6 * -0xc" identifier + (binary_expression "iVar6 * -0xc" identifier * number_literal)) >> number_literal) )) * number_literal) + (subscript_expression "puVar22[2]" identifier [ number_literal ]))) ;) })) (expression_statement "iVar18 = iVar18 + -1;" (assignment_expression "iVar18 = iVar18 + -1" identifier = (binary_expression "iVar18 + -1" identifier + number_literal)) ;) (expression_statement "puVar22[2] = 0;" (assignment_expression "puVar22[2] = 0" (subscript_expression "puVar22[2]" identifier [ number_literal ]) = number_literal) ;) }) while (parenthesized_expression "(iVar18 != -1)" ( (binary_expression "iVar18 != -1" identifier != number_literal) )) ;) })) (expression_statement "iVar18 = iVar19 + -1;" (assignment_expression "iVar18 = iVar19 + -1" identifier = (binary_expression "iVar19 + -1" identifier + number_literal)) ;) (if_statement "if (iVar19 != 0) {\n      do {\n        iVar19 = iVar18 + *(int *)(iVar9 + 0x70);\n        iVar18 = iVar18 + -1;\n        FUN_00091070(iVar21,iVar19,iVar9 + 0x54);\n      } while (iVar18 != -1);\n    }" if (parenthesized_expression "(iVar19 != 0)" ( (binary_expression "iVar19 != 0" identifier != number_literal) )) (compound_statement "{\n      do {\n        iVar19 = iVar18 + *(int *)(iVar9 + 0x70);\n        iVar18 = iVar18 + -1;\n        FUN_00091070(iVar21,iVar19,iVar9 + 0x54);\n      } while (iVar18 != -1);\n    }" { (do_statement "do {\n        iVar19 = iVar18 + *(int *)(iVar9 + 0x70);\n        iVar18 = iVar18 + -1;\n        FUN_00091070(iVar21,iVar19,iVar9 + 0x54);\n      } while (iVar18 != -1);" do (compound_statement "{\n        iVar19 = iVar18 + *(int *)(iVar9 + 0x70);\n        iVar18 = iVar18 + -1;\n        FUN_00091070(iVar21,iVar19,iVar9 + 0x54);\n      }" { (expression_statement "iVar19 = iVar18 + *(int *)(iVar9 + 0x70);" (assignment_expression "iVar19 = iVar18 + *(int *)(iVar9 + 0x70)" identifier = (binary_expression "iVar18 + *(int *)(iVar9 + 0x70)" identifier + (pointer_expression "*(int *)(iVar9 + 0x70)" * (cast_expression "(int *)(iVar9 + 0x70)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 0x70)" ( (binary_expression "iVar9 + 0x70" identifier + number_literal) )))))) ;) (expression_statement "iVar18 = iVar18 + -1;" (assignment_expression "iVar18 = iVar18 + -1" identifier = (binary_expression "iVar18 + -1" identifier + number_literal)) ;) (expression_statement "FUN_00091070(iVar21,iVar19,iVar9 + 0x54);" (call_expression "FUN_00091070(iVar21,iVar19,iVar9 + 0x54)" identifier (argument_list "(iVar21,iVar19,iVar9 + 0x54)" ( identifier , identifier , (binary_expression "iVar9 + 0x54" identifier + number_literal) ))) ;) }) while (parenthesized_expression "(iVar18 != -1)" ( (binary_expression "iVar18 != -1" identifier != number_literal) )) ;) })) }))) (return_statement "return;" return ;) (labeled_statement "LAB_00094994:\n  if (bVar2) {\n    FUN_000901cc(&local_98,10,0);\n  }" statement_identifier : (if_statement "if (bVar2) {\n    FUN_000901cc(&local_98,10,0);\n  }" if (parenthesized_expression "(bVar2)" ( identifier )) (compound_statement "{\n    FUN_000901cc(&local_98,10,0);\n  }" { (expression_statement "FUN_000901cc(&local_98,10,0);" (call_expression "FUN_000901cc(&local_98,10,0)" identifier (argument_list "(&local_98,10,0)" ( (pointer_expression "&local_98" & identifier) , number_literal , number_literal ))) ;) }))) (if_statement "if (*(int *)(puVar4 + 6) != 0) {\n    (*pcVar3)(puVar4);\n  }" if (parenthesized_expression "(*(int *)(puVar4 + 6) != 0)" ( (binary_expression "*(int *)(puVar4 + 6) != 0" (pointer_expression "*(int *)(puVar4 + 6)" * (cast_expression "(int *)(puVar4 + 6)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + 6)" ( (binary_expression "puVar4 + 6" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n    (*pcVar3)(puVar4);\n  }" { (expression_statement "(*pcVar3)(puVar4);" (call_expression "(*pcVar3)(puVar4)" (parenthesized_expression "(*pcVar3)" ( (pointer_expression "*pcVar3" * identifier) )) (argument_list "(puVar4)" ( identifier ))) ;) })) (expression_statement "local_cc = local_cc + 1;" (assignment_expression "local_cc = local_cc + 1" identifier = (binary_expression "local_cc + 1" identifier + number_literal)) ;) (expression_statement "local_d4 = iVar19;" (assignment_expression "local_d4 = iVar19" identifier = identifier) ;) (goto_statement "goto LAB_000945cc;" goto statement_identifier ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (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 (array_declarator IDENT [ LIT ]) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( LIT , LIT )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , LIT )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT < IDENT)) ;)) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( IDENT )) || (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression IDENT == IDENT) && (parenthesized_expression ( (binary_expression IDENT < IDENT) ))) )) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , IDENT , LIT , 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 (pointer_expression * IDENT) & LIT) )) == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (binary_expression IDENT * LIT))) ;) (do_statement do (compound_statement { (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 IDENT + LIT) )))) != LIT) )) && (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) != LIT) ))) )) || (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) ))) )) || (parenthesized_expression ( (binary_expression IDENT <= IDENT) ))) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) })) (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT < IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }))))) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }))))))) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = IDENT) , (binary_expression IDENT < IDENT)) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (labeled_statement statement_identifier : (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (unary_expression ! IDENT) )) && (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression IDENT != IDENT) || (parenthesized_expression ( (binary_expression IDENT <= IDENT) ))) )) ))) )) || (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression IDENT <= IDENT) && (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression IDENT != IDENT) || (parenthesized_expression ( (binary_expression IDENT <= IDENT) ))) )) ))) )) ))) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (binary_expression IDENT * LIT)) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT * LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + IDENT) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (do_statement do (compound_statement { (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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (binary_expression (parenthesized_expression ( (binary_expression IDENT + LIT) )) * LIT)) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) }) (else_clause else (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) ))))) ;) (goto_statement goto statement_identifier ;) })))) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (binary_expression IDENT * LIT)) ))))) ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (goto_statement goto statement_identifier ;) }))))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) && (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) ))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) , (cast_expression ( (type_descriptor TYPE) ) IDENT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) , LIT , (pointer_expression & IDENT) , LIT , IDENT , LIT )))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (binary_expression IDENT * LIT)) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) , LIT , (pointer_expression & IDENT) , LIT , IDENT , LIT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , IDENT , (binary_expression IDENT * LIT) , LIT ))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ IDENT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) })) (goto_statement goto statement_identifier ;) })) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , IDENT , IDENT ))) ;) }) (else_clause else (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = IDENT) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , IDENT , IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) })) }))) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + 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 = (binary_expression IDENT * LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) (labeled_statement 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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (parenthesized_expression ( (binary_expression IDENT + LIT) )) * LIT)) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) }) (else_clause else (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (parenthesized_expression ( (binary_expression IDENT + LIT) )) * LIT)) ))))) ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) }))) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( BOOL )) ;)) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , IDENT , IDENT , IDENT , IDENT ))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) )) (compound_statement { (return_statement return ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (unary_expression - IDENT)) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (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 = (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 <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) && (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression IDENT != IDENT) || (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) <= IDENT) ))) )) ))) )) || (parenthesized_expression ( (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) , (binary_expression (binary_expression IDENT <= IDENT) && (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression IDENT != IDENT) || (parenthesized_expression ( (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 = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT < IDENT) )) || (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression IDENT == IDENT) && (parenthesized_expression ( (binary_expression IDENT <= (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ))) )) ))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != IDENT) )) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) , (binary_expression IDENT < IDENT)) ))) )) (goto_statement goto statement_identifier ;)))) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT * IDENT) + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT * IDENT) + IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) , (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) , LIT , (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))) ;) (return_statement return ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) , (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) , LIT , (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))) ;) (return_statement return ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) , (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) , LIT , (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))) ;) (return_statement return ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) , (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) , LIT , (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))) ;) (return_statement return ;) })) }) (else_clause else (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;)) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) }))) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression LIT < IDENT) )) && (parenthesized_expression ( (binary_expression IDENT <= IDENT) ))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (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) )))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression LIT < IDENT) )) && (parenthesized_expression ( (binary_expression IDENT <= (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , LIT ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , LIT , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (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 = LIT) ;) (do_statement do (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) )))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT * LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (binary_expression IDENT * LIT)) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + IDENT) )))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )) (argument_list ( IDENT , (binary_expression (parenthesized_expression ( (binary_expression IDENT >> LIT) )) * LIT) ))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT + (binary_expression IDENT * LIT)) >> LIT) )) * LIT) + (subscript_expression IDENT [ LIT ]))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (binary_expression IDENT + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) , (binary_expression IDENT + LIT) ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (binary_expression IDENT + IDENT)) )) ;) (return_statement return ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , LIT , 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) ))))) ;) (do_statement do (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) )))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT + IDENT) )) * LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (binary_expression IDENT * LIT)) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + IDENT) )))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )) (argument_list ( IDENT , (binary_expression (parenthesized_expression ( (binary_expression IDENT >> LIT) )) * LIT) ))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT + (binary_expression IDENT * LIT)) >> LIT) )) * LIT) + (subscript_expression IDENT [ LIT ]))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (do_statement do (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) )))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , (binary_expression IDENT + LIT) ))) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) })) }))) (return_statement return ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , LIT , 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 { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT ))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (goto_statement goto statement_identifier ;) })))
(function_definition "void FUN_000944e4(int param_1,int param_2,int param_3,int param_4,int param_5,int param_6,\n                 undefined4 param_7)\n\n{\n  bool bVar1;\n  bool bVar2;\n  code *pcVar3;\n  ushort *puVar4;\n  uint uVar5;\n  int iVar6;\n  code *pcVar7;\n  uint uVar8;\n  int iVar9;\n  int iVar10;\n  uint uVar11;\n  int iVar12;\n  undefined4 uVar13;\n  int iVar14;\n  char cVar16;\n  int iVar15;\n  int iVar17;\n  int iVar18;\n  int iVar19;\n  undefined4 uVar20;\n  int iVar21;\n  undefined4 *puVar22;\n  uint *puVar23;\n  int iVar24;\n  undefined4 *puVar25;\n  undefined *puVar26;\n  int local_d4;\n  int local_cc;\n  int local_c8;\n  int local_c0;\n  undefined4 local_98;\n  undefined4 local_94;\n  int local_90;\n  int local_8c;\n  int local_88;\n  int local_84;\n  undefined1 auStack_80 [16];\n  uint local_70 [16];\n  char local_30;\n  undefined1 local_2f;\n  int local_2c;\n  \n  puVar26 = PTR___stack_chk_guard_00112630;\n  local_2c = *(int *)PTR___stack_chk_guard_00112630;\n  local_98 = 0x1400;\n  local_94 = 0;\n  local_90 = (*(code *)PTR_safemalloc_001112ec)(0x1400,4);\n  local_8c = local_90;\n  local_88 = (*(code *)PTR_safemalloc_001112ec)(local_98,4);\n  pcVar7 = (code *)(PTR_LAB_00111ad8 + 0x2a9c);\n  iVar19 = param_3;\n  if (param_6 == 0) {\n    iVar19 = 0;\n  }\n  pcVar3 = (code *)(PTR_LAB_00111ad8 + 0x1270);\n  local_d4 = param_3;\n  local_cc = param_2;\n  local_84 = local_88;\nLAB_000945cc:\n  bVar1 = local_cc < param_4;\n  if ((bVar1) || ((local_cc == param_4 && (local_d4 < param_5)))) {\n    puVar4 = (ushort *)(*pcVar7)(param_1,local_cc,0x1595,0);\n    local_c0 = *(int *)(param_1 + 300);\n    if ((*puVar4 & 0x10) == 0) {\n      if (local_c0 != 0) {\n        iVar9 = *(int *)(puVar4 + 10) + local_c0 * 0xc;\n        do {\n          if ((((*(uint *)(iVar9 + -0xc) != 0x20) &&\n               ((*(uint *)(iVar9 + -0xc) & 0xfffffcff) != 0xd820)) || (*(int *)(iVar9 + -4) != 0))\n             || (local_c0 <= local_d4)) break;\n          local_c0 = local_c0 + -1;\n          iVar9 = iVar9 + -0xc;\n        } while (local_c0 != 0);\n      }\n      if (bVar1) {\n        local_c8 = local_cc;\n        bVar2 = true;\n      }\n      else if (local_cc == param_4) {\n        bVar2 = local_c0 < param_5;\n        local_c8 = local_cc;\n      }\n      else {\n        bVar2 = false;\n        local_c8 = local_cc;\n      }\n    }\n    else if ((*puVar4 & 0x20) == 0) {\n      bVar2 = false;\n      local_c8 = local_cc;\n    }\n    else if (local_c0 == 0) {\n      bVar2 = false;\n      local_c8 = local_cc + -1;\n    }\n    else {\n      bVar2 = false;\n      local_c8 = local_cc;\n      local_c0 = local_c0 + -1;\n    }\n    iVar9 = local_d4;\n    if ((param_6 != 0) && (bVar2 = bVar1, param_5 < local_c0)) {\n      local_c0 = param_5;\n    }\njoined_r0x00094680:\n    do {\n      iVar21 = iVar9;\n      if (((!bVar1) && ((local_cc != param_4 || (param_5 <= iVar21)))) ||\n         ((local_c8 <= local_cc && ((local_c8 != local_cc || (local_c0 <= iVar21))))))\n      goto LAB_00094994;\n      uVar5 = *(uint *)(*(int *)(puVar4 + 10) + iVar21 * 0xc);\n      if (uVar5 != 0xdfff) {\n        uVar11 = uVar5 & 0xffffff00;\n        iVar18 = iVar21 * 0xc;\n        uVar20 = *(undefined4 *)(*(int *)(puVar4 + 10) + iVar18 + 4);\n        uVar8 = uVar5 & 0xff;\n        local_d4 = iVar21;\n        if (uVar11 == 0xd900) goto LAB_00094804;\n        do {\n          if (uVar11 == 0xda00) {\n            uVar5 = *(uint *)(*(int *)(param_1 + 0x1090) + (uVar8 + 4) * 4);\n            uVar11 = uVar5 & 0xffffff00;\n            uVar8 = uVar5 & 0xff;\n          }\n          else if (uVar11 == 0xd800) {\n            iVar9 = *(int *)(param_1 + 0x1090);\n            goto LAB_0009491c;\n          }\njoined_r0x00094728:\n          if (uVar11 == 0xf000) {\n            iVar9 = uVar8 + 0x404;\nLAB_00094740:\n            uVar5 = *(uint *)(*(int *)(param_1 + 0x1090) + iVar9 * 4);\n            uVar8 = uVar5 & 0xff;\n          }\n          else if (uVar11 == 0xf100) {\n            iVar9 = uVar8 + 0x204;\n            goto LAB_00094740;\n          }\n          iVar9 = local_d4 + 1;\n          local_70[1] = 0;\n          iVar10 = iVar9;\n          local_70[0] = uVar5;\n          if (((uVar5 & 0xfffffe00) == 0xf000) && ((uVar5 & 0xe0) != 0)) {\n            if (uVar8 != 0x7f) {\n              cVar16 = (char)uVar5;\n              iVar6 = (*(code *)PTR_is_dbcs_leadbyte_00111b58)\n                                (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),(int)cVar16);\n              local_30 = cVar16;\n              if (iVar6 == 0) {\n                iVar6 = (*(code *)PTR_mb_to_wc_001115cc)\n                                  (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),0,&local_30,1,\n                                   auStack_80,4);\n              }\n              else {\n                local_2f = (undefined1)*(undefined4 *)(*(int *)(puVar4 + 10) + iVar9 * 0xc);\n                iVar6 = (*(code *)PTR_mb_to_wc_001115cc)\n                                  (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),0,&local_30,2,\n                                   auStack_80,4);\n                iVar10 = local_d4 + 2;\n                local_d4 = iVar9;\n              }\n              if (0 < iVar6) {\n                (*(code *)PTR___memcpy_chk_00112078)(local_70,auStack_80,iVar6 * 4,0x40);\n                local_70[iVar6] = 0;\n                uVar5 = local_70[0];\n              }\n              goto LAB_00094778;\n            }\n            FUN_000901cc(&local_98,uVar5,uVar20);\n          }\n          else {\nLAB_00094778:\n            iVar9 = iVar10;\n            if (uVar5 != 0) {\n              uVar8 = local_70[1];\n              puVar23 = local_70;\n              while( true ) {\n                FUN_000901cc(&local_98,uVar5,uVar20);\n                if (uVar8 == 0) break;\n                uVar5 = uVar8;\n                uVar8 = puVar23[2];\n                puVar23 = puVar23 + 1;\n              }\n            }\n          }\n          iVar10 = *(int *)(puVar4 + 10);\n          iVar18 = *(int *)(iVar10 + iVar18 + 8);\n          iVar21 = iVar21 + iVar18;\n          if (iVar18 == 0) goto joined_r0x00094680;\n          iVar18 = iVar21 * 0xc;\n          uVar5 = *(uint *)(iVar10 + iVar21 * 0xc);\n          uVar20 = *(undefined4 *)(iVar10 + iVar18 + 4);\n          uVar11 = uVar5 & 0xffffff00;\n          uVar8 = uVar5 & 0xff;\n        } while (uVar11 != 0xd900);\nLAB_00094804:\n        iVar9 = *(int *)(param_1 + 0x1090);\n        if (*(int *)(param_1 + 0x1158) == 0) {\n          uVar5 = *(uint *)(iVar9 + (uVar8 + 0x304) * 4);\n          uVar11 = uVar5 & 0xffffff00;\n          uVar8 = uVar5 & 0xff;\n        }\n        else {\nLAB_0009491c:\n          uVar5 = *(uint *)(iVar9 + (uVar8 + 0x104) * 4);\n          uVar11 = uVar5 & 0xffffff00;\n          uVar8 = uVar5 & 0xff;\n        }\n        goto joined_r0x00094728;\n      }\n      iVar9 = iVar21 + 1;\n    } while( true );\n  }\n  iVar19 = local_90;\n  (*(code *)PTR_write_clip_00111b5c)\n            (*(undefined4 *)(param_1 + 0x1088),local_90,local_88,local_94,param_7);\n  (*(code *)PTR_safefree_001112f0)(local_90);\n  iVar9 = local_88;\n  (*(code *)PTR_safefree_001112f0)();\n  if (local_2c == *(int *)puVar26) {\n    return;\n  }\n  puVar26 = PTR___stack_chk_fail_001122c8;\n  (*(code *)PTR___stack_chk_fail_001122c8)();\n  iVar21 = 1;\n  if (iVar19 < 0) {\n    iVar21 = -1;\n    iVar19 = -iVar19;\n  }\n  iVar18 = *(int *)(iVar9 + 300);\n  iVar10 = *(int *)(iVar9 + 0x70);\n  iVar12 = *(int *)(iVar9 + 0x6c);\n  iVar6 = *(int *)(iVar9 + 0xe5c);\n  iVar24 = iVar18 - iVar10;\n  if (iVar24 <= iVar19) {\n    iVar19 = iVar24;\n  }\n  iVar24 = iVar24 - iVar19;\n  if (((iVar6 <= iVar12) && ((iVar12 != iVar6 || (*(int *)(iVar9 + 0xe60) <= iVar10)))) ||\n     ((iVar14 = *(int *)(iVar9 + 0xe54), iVar12 <= iVar14 &&\n      ((iVar12 != iVar14 || (iVar18 <= *(int *)(iVar9 + 0xe58))))))) goto LAB_00094c48;\n  iVar17 = iVar10 + iVar19;\n  iVar15 = iVar18;\n  if (iVar21 == 1) {\n    iVar15 = iVar18 - iVar19;\n    iVar17 = iVar10;\n  }\n  if ((iVar12 < iVar14) || ((iVar12 == iVar14 && (iVar17 <= *(int *)(iVar9 + 0xe58))))) {\n    if (iVar6 < iVar12) {\n      iVar6 = *(int *)(iVar9 + 0xe60);\n    }\n    else if ((iVar12 != iVar6) || (iVar6 = *(int *)(iVar9 + 0xe60), iVar15 < iVar6))\n    goto LAB_00094e08;\n    iVar14 = iVar21 * iVar19 + *(int *)(iVar9 + 0xe58);\n    iVar6 = iVar21 * iVar19 + iVar6;\n    *(int *)(iVar9 + 0xe58) = iVar14;\n    *(int *)(iVar9 + 0xe60) = iVar6;\n    if (iVar14 < iVar10) {\n      (**(code **)(puVar26 + 0x7d398))\n                (*(int *)(puVar26 + 0x7c740) + 0x5a20,*(int *)(puVar26 + 0x7c740) + 0x5830,0x9dd,\n                 *(int *)(puVar26 + 0x7c740) + 0x6200);\n      return;\n    }\n    if (iVar18 <= iVar14) {\n      (**(code **)(puVar26 + 0x7d398))\n                (*(int *)(puVar26 + 0x7c740) + 0x5a44,*(int *)(puVar26 + 0x7c740) + 0x5830,0x9de,\n                 *(int *)(puVar26 + 0x7c740) + 0x6200);\n      return;\n    }\n    if (iVar6 <= iVar10) {\n      (**(code **)(puVar26 + 0x7d398))\n                (*(int *)(puVar26 + 0x7c740) + 0x5a64,*(int *)(puVar26 + 0x7c740) + 0x5830,0x9df,\n                 *(int *)(puVar26 + 0x7c740) + 0x6200);\n      return;\n    }\n    if (iVar18 < iVar6) {\n      (**(code **)(puVar26 + 0x7d398))\n                (*(int *)(puVar26 + 0x7c740) + 0x5a84,*(int *)(puVar26 + 0x7c740) + 0x5830,0x9e0,\n                 *(int *)(puVar26 + 0x7c740) + 0x6200);\n      return;\n    }\n  }\n  else {\nLAB_00094e08:\n    *(undefined4 *)(iVar9 + 0xe48) = 0;\n    *(undefined4 *)(iVar9 + 0xe5c) = 0;\n    *(undefined4 *)(iVar9 + 0xe60) = 0;\n    *(undefined4 *)(iVar9 + 0xe54) = 0;\n    *(undefined4 *)(iVar9 + 0xe58) = 0;\n  }\nLAB_00094c48:\n  if ((0 < iVar10) && (iVar10 <= iVar18)) {\n    FUN_00092d1c(iVar9,iVar10,iVar12);\n    iVar12 = *(int *)(iVar9 + 0x6c);\n  }\n  if (iVar21 == -1) {\n    iVar21 = iVar19 + *(int *)(iVar9 + 0x70);\n    if ((0 < iVar21) && (iVar21 <= *(int *)(iVar9 + 300))) {\n      FUN_00092d1c(iVar9,iVar21,iVar12,1);\n      iVar12 = *(int *)(iVar9 + 0x6c);\n    }\n    iVar21 = FUN_00092a9c(iVar9,iVar12,0x9eb,1);\n    if (0 < iVar24) {\n      iVar18 = *(int *)(puVar26 + 0x7cf20);\n      iVar10 = 0;\n      do {\n        iVar6 = iVar10 + *(int *)(iVar9 + 0x70);\n        iVar12 = iVar6 + iVar19;\n        iVar6 = iVar6 * 0xc;\n        puVar22 = (undefined4 *)(*(int *)(iVar21 + 0x14) + iVar12 * 0xc);\n        puVar25 = (undefined4 *)(*(int *)(iVar21 + 0x14) + iVar6);\n        (*(code *)(iVar18 + 0xab0))(iVar21,(iVar6 >> 2) * -0x55555555);\n        uVar20 = puVar22[2];\n        uVar13 = puVar22[1];\n        *puVar25 = *puVar22;\n        puVar25[1] = uVar13;\n        puVar25[2] = uVar20;\n        if (puVar22[2] != 0) {\n          puVar25[2] = (iVar6 + iVar12 * -0xc >> 2) * 0x55555555 + puVar22[2];\n        }\n        iVar10 = iVar10 + 1;\n        puVar22[2] = 0;\n      } while (iVar24 != iVar10);\n    }\n    if (iVar19 != 0) {\n      iVar18 = iVar24;\n      do {\n        iVar10 = iVar18 + 1;\n        FUN_00091070(iVar21,iVar18 + *(int *)(iVar9 + 0x70),iVar9 + 0x54);\n        iVar18 = iVar10;\n      } while (iVar10 != iVar19 + iVar24);\n      return;\n    }\n  }\n  else {\n    iVar18 = iVar24 + -1;\n    iVar21 = FUN_00092a9c(iVar9,iVar12,0x9eb,1);\n    if (iVar24 != 0) {\n      iVar10 = *(int *)(puVar26 + 0x7cf20);\n      do {\n        iVar6 = iVar18 + *(int *)(iVar9 + 0x70);\n        iVar12 = (iVar19 + iVar6) * 0xc;\n        puVar22 = (undefined4 *)(*(int *)(iVar21 + 0x14) + iVar6 * 0xc);\n        puVar25 = (undefined4 *)(*(int *)(iVar21 + 0x14) + iVar12);\n        (*(code *)(iVar10 + 0xab0))(iVar21,(iVar12 >> 2) * -0x55555555);\n        uVar20 = puVar22[2];\n        uVar13 = puVar22[1];\n        *puVar25 = *puVar22;\n        puVar25[1] = uVar13;\n        puVar25[2] = uVar20;\n        if (puVar22[2] != 0) {\n          puVar25[2] = (iVar12 + iVar6 * -0xc >> 2) * 0x55555555 + puVar22[2];\n        }\n        iVar18 = iVar18 + -1;\n        puVar22[2] = 0;\n      } while (iVar18 != -1);\n    }\n    iVar18 = iVar19 + -1;\n    if (iVar19 != 0) {\n      do {\n        iVar19 = iVar18 + *(int *)(iVar9 + 0x70);\n        iVar18 = iVar18 + -1;\n        FUN_00091070(iVar21,iVar19,iVar9 + 0x54);\n      } while (iVar18 != -1);\n    }\n  }\n  return;\nLAB_00094994:\n  if (bVar2) {\n    FUN_000901cc(&local_98,10,0);\n  }\n  if (*(int *)(puVar4 + 6) != 0) {\n    (*pcVar3)(puVar4);\n  }\n  local_cc = local_cc + 1;\n  local_d4 = iVar19;\n  goto LAB_000945cc;\n}" (primitive_type "void") (function_declarator "FUN_000944e4(int param_1,int param_2,int param_3,int param_4,int param_5,int param_6,\n                 undefined4 param_7)" (identifier "FUN_000944e4") (parameter_list "(int param_1,int param_2,int param_3,int param_4,int param_5,int param_6,\n                 undefined4 param_7)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) (, ",") (parameter_declaration "int param_2" (primitive_type "int") (identifier "param_2")) (, ",") (parameter_declaration "int param_3" (primitive_type "int") (identifier "param_3")) (, ",") (parameter_declaration "int param_4" (primitive_type "int") (identifier "param_4")) (, ",") (parameter_declaration "int param_5" (primitive_type "int") (identifier "param_5")) (, ",") (parameter_declaration "int param_6" (primitive_type "int") (identifier "param_6")) (, ",") (parameter_declaration "undefined4 param_7" (type_identifier "undefined4") (identifier "param_7")) () ")"))) (compound_statement "{\n  bool bVar1;\n  bool bVar2;\n  code *pcVar3;\n  ushort *puVar4;\n  uint uVar5;\n  int iVar6;\n  code *pcVar7;\n  uint uVar8;\n  int iVar9;\n  int iVar10;\n  uint uVar11;\n  int iVar12;\n  undefined4 uVar13;\n  int iVar14;\n  char cVar16;\n  int iVar15;\n  int iVar17;\n  int iVar18;\n  int iVar19;\n  undefined4 uVar20;\n  int iVar21;\n  undefined4 *puVar22;\n  uint *puVar23;\n  int iVar24;\n  undefined4 *puVar25;\n  undefined *puVar26;\n  int local_d4;\n  int local_cc;\n  int local_c8;\n  int local_c0;\n  undefined4 local_98;\n  undefined4 local_94;\n  int local_90;\n  int local_8c;\n  int local_88;\n  int local_84;\n  undefined1 auStack_80 [16];\n  uint local_70 [16];\n  char local_30;\n  undefined1 local_2f;\n  int local_2c;\n  \n  puVar26 = PTR___stack_chk_guard_00112630;\n  local_2c = *(int *)PTR___stack_chk_guard_00112630;\n  local_98 = 0x1400;\n  local_94 = 0;\n  local_90 = (*(code *)PTR_safemalloc_001112ec)(0x1400,4);\n  local_8c = local_90;\n  local_88 = (*(code *)PTR_safemalloc_001112ec)(local_98,4);\n  pcVar7 = (code *)(PTR_LAB_00111ad8 + 0x2a9c);\n  iVar19 = param_3;\n  if (param_6 == 0) {\n    iVar19 = 0;\n  }\n  pcVar3 = (code *)(PTR_LAB_00111ad8 + 0x1270);\n  local_d4 = param_3;\n  local_cc = param_2;\n  local_84 = local_88;\nLAB_000945cc:\n  bVar1 = local_cc < param_4;\n  if ((bVar1) || ((local_cc == param_4 && (local_d4 < param_5)))) {\n    puVar4 = (ushort *)(*pcVar7)(param_1,local_cc,0x1595,0);\n    local_c0 = *(int *)(param_1 + 300);\n    if ((*puVar4 & 0x10) == 0) {\n      if (local_c0 != 0) {\n        iVar9 = *(int *)(puVar4 + 10) + local_c0 * 0xc;\n        do {\n          if ((((*(uint *)(iVar9 + -0xc) != 0x20) &&\n               ((*(uint *)(iVar9 + -0xc) & 0xfffffcff) != 0xd820)) || (*(int *)(iVar9 + -4) != 0))\n             || (local_c0 <= local_d4)) break;\n          local_c0 = local_c0 + -1;\n          iVar9 = iVar9 + -0xc;\n        } while (local_c0 != 0);\n      }\n      if (bVar1) {\n        local_c8 = local_cc;\n        bVar2 = true;\n      }\n      else if (local_cc == param_4) {\n        bVar2 = local_c0 < param_5;\n        local_c8 = local_cc;\n      }\n      else {\n        bVar2 = false;\n        local_c8 = local_cc;\n      }\n    }\n    else if ((*puVar4 & 0x20) == 0) {\n      bVar2 = false;\n      local_c8 = local_cc;\n    }\n    else if (local_c0 == 0) {\n      bVar2 = false;\n      local_c8 = local_cc + -1;\n    }\n    else {\n      bVar2 = false;\n      local_c8 = local_cc;\n      local_c0 = local_c0 + -1;\n    }\n    iVar9 = local_d4;\n    if ((param_6 != 0) && (bVar2 = bVar1, param_5 < local_c0)) {\n      local_c0 = param_5;\n    }\njoined_r0x00094680:\n    do {\n      iVar21 = iVar9;\n      if (((!bVar1) && ((local_cc != param_4 || (param_5 <= iVar21)))) ||\n         ((local_c8 <= local_cc && ((local_c8 != local_cc || (local_c0 <= iVar21))))))\n      goto LAB_00094994;\n      uVar5 = *(uint *)(*(int *)(puVar4 + 10) + iVar21 * 0xc);\n      if (uVar5 != 0xdfff) {\n        uVar11 = uVar5 & 0xffffff00;\n        iVar18 = iVar21 * 0xc;\n        uVar20 = *(undefined4 *)(*(int *)(puVar4 + 10) + iVar18 + 4);\n        uVar8 = uVar5 & 0xff;\n        local_d4 = iVar21;\n        if (uVar11 == 0xd900) goto LAB_00094804;\n        do {\n          if (uVar11 == 0xda00) {\n            uVar5 = *(uint *)(*(int *)(param_1 + 0x1090) + (uVar8 + 4) * 4);\n            uVar11 = uVar5 & 0xffffff00;\n            uVar8 = uVar5 & 0xff;\n          }\n          else if (uVar11 == 0xd800) {\n            iVar9 = *(int *)(param_1 + 0x1090);\n            goto LAB_0009491c;\n          }\njoined_r0x00094728:\n          if (uVar11 == 0xf000) {\n            iVar9 = uVar8 + 0x404;\nLAB_00094740:\n            uVar5 = *(uint *)(*(int *)(param_1 + 0x1090) + iVar9 * 4);\n            uVar8 = uVar5 & 0xff;\n          }\n          else if (uVar11 == 0xf100) {\n            iVar9 = uVar8 + 0x204;\n            goto LAB_00094740;\n          }\n          iVar9 = local_d4 + 1;\n          local_70[1] = 0;\n          iVar10 = iVar9;\n          local_70[0] = uVar5;\n          if (((uVar5 & 0xfffffe00) == 0xf000) && ((uVar5 & 0xe0) != 0)) {\n            if (uVar8 != 0x7f) {\n              cVar16 = (char)uVar5;\n              iVar6 = (*(code *)PTR_is_dbcs_leadbyte_00111b58)\n                                (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),(int)cVar16);\n              local_30 = cVar16;\n              if (iVar6 == 0) {\n                iVar6 = (*(code *)PTR_mb_to_wc_001115cc)\n                                  (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),0,&local_30,1,\n                                   auStack_80,4);\n              }\n              else {\n                local_2f = (undefined1)*(undefined4 *)(*(int *)(puVar4 + 10) + iVar9 * 0xc);\n                iVar6 = (*(code *)PTR_mb_to_wc_001115cc)\n                                  (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),0,&local_30,2,\n                                   auStack_80,4);\n                iVar10 = local_d4 + 2;\n                local_d4 = iVar9;\n              }\n              if (0 < iVar6) {\n                (*(code *)PTR___memcpy_chk_00112078)(local_70,auStack_80,iVar6 * 4,0x40);\n                local_70[iVar6] = 0;\n                uVar5 = local_70[0];\n              }\n              goto LAB_00094778;\n            }\n            FUN_000901cc(&local_98,uVar5,uVar20);\n          }\n          else {\nLAB_00094778:\n            iVar9 = iVar10;\n            if (uVar5 != 0) {\n              uVar8 = local_70[1];\n              puVar23 = local_70;\n              while( true ) {\n                FUN_000901cc(&local_98,uVar5,uVar20);\n                if (uVar8 == 0) break;\n                uVar5 = uVar8;\n                uVar8 = puVar23[2];\n                puVar23 = puVar23 + 1;\n              }\n            }\n          }\n          iVar10 = *(int *)(puVar4 + 10);\n          iVar18 = *(int *)(iVar10 + iVar18 + 8);\n          iVar21 = iVar21 + iVar18;\n          if (iVar18 == 0) goto joined_r0x00094680;\n          iVar18 = iVar21 * 0xc;\n          uVar5 = *(uint *)(iVar10 + iVar21 * 0xc);\n          uVar20 = *(undefined4 *)(iVar10 + iVar18 + 4);\n          uVar11 = uVar5 & 0xffffff00;\n          uVar8 = uVar5 & 0xff;\n        } while (uVar11 != 0xd900);\nLAB_00094804:\n        iVar9 = *(int *)(param_1 + 0x1090);\n        if (*(int *)(param_1 + 0x1158) == 0) {\n          uVar5 = *(uint *)(iVar9 + (uVar8 + 0x304) * 4);\n          uVar11 = uVar5 & 0xffffff00;\n          uVar8 = uVar5 & 0xff;\n        }\n        else {\nLAB_0009491c:\n          uVar5 = *(uint *)(iVar9 + (uVar8 + 0x104) * 4);\n          uVar11 = uVar5 & 0xffffff00;\n          uVar8 = uVar5 & 0xff;\n        }\n        goto joined_r0x00094728;\n      }\n      iVar9 = iVar21 + 1;\n    } while( true );\n  }\n  iVar19 = local_90;\n  (*(code *)PTR_write_clip_00111b5c)\n            (*(undefined4 *)(param_1 + 0x1088),local_90,local_88,local_94,param_7);\n  (*(code *)PTR_safefree_001112f0)(local_90);\n  iVar9 = local_88;\n  (*(code *)PTR_safefree_001112f0)();\n  if (local_2c == *(int *)puVar26) {\n    return;\n  }\n  puVar26 = PTR___stack_chk_fail_001122c8;\n  (*(code *)PTR___stack_chk_fail_001122c8)();\n  iVar21 = 1;\n  if (iVar19 < 0) {\n    iVar21 = -1;\n    iVar19 = -iVar19;\n  }\n  iVar18 = *(int *)(iVar9 + 300);\n  iVar10 = *(int *)(iVar9 + 0x70);\n  iVar12 = *(int *)(iVar9 + 0x6c);\n  iVar6 = *(int *)(iVar9 + 0xe5c);\n  iVar24 = iVar18 - iVar10;\n  if (iVar24 <= iVar19) {\n    iVar19 = iVar24;\n  }\n  iVar24 = iVar24 - iVar19;\n  if (((iVar6 <= iVar12) && ((iVar12 != iVar6 || (*(int *)(iVar9 + 0xe60) <= iVar10)))) ||\n     ((iVar14 = *(int *)(iVar9 + 0xe54), iVar12 <= iVar14 &&\n      ((iVar12 != iVar14 || (iVar18 <= *(int *)(iVar9 + 0xe58))))))) goto LAB_00094c48;\n  iVar17 = iVar10 + iVar19;\n  iVar15 = iVar18;\n  if (iVar21 == 1) {\n    iVar15 = iVar18 - iVar19;\n    iVar17 = iVar10;\n  }\n  if ((iVar12 < iVar14) || ((iVar12 == iVar14 && (iVar17 <= *(int *)(iVar9 + 0xe58))))) {\n    if (iVar6 < iVar12) {\n      iVar6 = *(int *)(iVar9 + 0xe60);\n    }\n    else if ((iVar12 != iVar6) || (iVar6 = *(int *)(iVar9 + 0xe60), iVar15 < iVar6))\n    goto LAB_00094e08;\n    iVar14 = iVar21 * iVar19 + *(int *)(iVar9 + 0xe58);\n    iVar6 = iVar21 * iVar19 + iVar6;\n    *(int *)(iVar9 + 0xe58) = iVar14;\n    *(int *)(iVar9 + 0xe60) = iVar6;\n    if (iVar14 < iVar10) {\n      (**(code **)(puVar26 + 0x7d398))\n                (*(int *)(puVar26 + 0x7c740) + 0x5a20,*(int *)(puVar26 + 0x7c740) + 0x5830,0x9dd,\n                 *(int *)(puVar26 + 0x7c740) + 0x6200);\n      return;\n    }\n    if (iVar18 <= iVar14) {\n      (**(code **)(puVar26 + 0x7d398))\n                (*(int *)(puVar26 + 0x7c740) + 0x5a44,*(int *)(puVar26 + 0x7c740) + 0x5830,0x9de,\n                 *(int *)(puVar26 + 0x7c740) + 0x6200);\n      return;\n    }\n    if (iVar6 <= iVar10) {\n      (**(code **)(puVar26 + 0x7d398))\n                (*(int *)(puVar26 + 0x7c740) + 0x5a64,*(int *)(puVar26 + 0x7c740) + 0x5830,0x9df,\n                 *(int *)(puVar26 + 0x7c740) + 0x6200);\n      return;\n    }\n    if (iVar18 < iVar6) {\n      (**(code **)(puVar26 + 0x7d398))\n                (*(int *)(puVar26 + 0x7c740) + 0x5a84,*(int *)(puVar26 + 0x7c740) + 0x5830,0x9e0,\n                 *(int *)(puVar26 + 0x7c740) + 0x6200);\n      return;\n    }\n  }\n  else {\nLAB_00094e08:\n    *(undefined4 *)(iVar9 + 0xe48) = 0;\n    *(undefined4 *)(iVar9 + 0xe5c) = 0;\n    *(undefined4 *)(iVar9 + 0xe60) = 0;\n    *(undefined4 *)(iVar9 + 0xe54) = 0;\n    *(undefined4 *)(iVar9 + 0xe58) = 0;\n  }\nLAB_00094c48:\n  if ((0 < iVar10) && (iVar10 <= iVar18)) {\n    FUN_00092d1c(iVar9,iVar10,iVar12);\n    iVar12 = *(int *)(iVar9 + 0x6c);\n  }\n  if (iVar21 == -1) {\n    iVar21 = iVar19 + *(int *)(iVar9 + 0x70);\n    if ((0 < iVar21) && (iVar21 <= *(int *)(iVar9 + 300))) {\n      FUN_00092d1c(iVar9,iVar21,iVar12,1);\n      iVar12 = *(int *)(iVar9 + 0x6c);\n    }\n    iVar21 = FUN_00092a9c(iVar9,iVar12,0x9eb,1);\n    if (0 < iVar24) {\n      iVar18 = *(int *)(puVar26 + 0x7cf20);\n      iVar10 = 0;\n      do {\n        iVar6 = iVar10 + *(int *)(iVar9 + 0x70);\n        iVar12 = iVar6 + iVar19;\n        iVar6 = iVar6 * 0xc;\n        puVar22 = (undefined4 *)(*(int *)(iVar21 + 0x14) + iVar12 * 0xc);\n        puVar25 = (undefined4 *)(*(int *)(iVar21 + 0x14) + iVar6);\n        (*(code *)(iVar18 + 0xab0))(iVar21,(iVar6 >> 2) * -0x55555555);\n        uVar20 = puVar22[2];\n        uVar13 = puVar22[1];\n        *puVar25 = *puVar22;\n        puVar25[1] = uVar13;\n        puVar25[2] = uVar20;\n        if (puVar22[2] != 0) {\n          puVar25[2] = (iVar6 + iVar12 * -0xc >> 2) * 0x55555555 + puVar22[2];\n        }\n        iVar10 = iVar10 + 1;\n        puVar22[2] = 0;\n      } while (iVar24 != iVar10);\n    }\n    if (iVar19 != 0) {\n      iVar18 = iVar24;\n      do {\n        iVar10 = iVar18 + 1;\n        FUN_00091070(iVar21,iVar18 + *(int *)(iVar9 + 0x70),iVar9 + 0x54);\n        iVar18 = iVar10;\n      } while (iVar10 != iVar19 + iVar24);\n      return;\n    }\n  }\n  else {\n    iVar18 = iVar24 + -1;\n    iVar21 = FUN_00092a9c(iVar9,iVar12,0x9eb,1);\n    if (iVar24 != 0) {\n      iVar10 = *(int *)(puVar26 + 0x7cf20);\n      do {\n        iVar6 = iVar18 + *(int *)(iVar9 + 0x70);\n        iVar12 = (iVar19 + iVar6) * 0xc;\n        puVar22 = (undefined4 *)(*(int *)(iVar21 + 0x14) + iVar6 * 0xc);\n        puVar25 = (undefined4 *)(*(int *)(iVar21 + 0x14) + iVar12);\n        (*(code *)(iVar10 + 0xab0))(iVar21,(iVar12 >> 2) * -0x55555555);\n        uVar20 = puVar22[2];\n        uVar13 = puVar22[1];\n        *puVar25 = *puVar22;\n        puVar25[1] = uVar13;\n        puVar25[2] = uVar20;\n        if (puVar22[2] != 0) {\n          puVar25[2] = (iVar12 + iVar6 * -0xc >> 2) * 0x55555555 + puVar22[2];\n        }\n        iVar18 = iVar18 + -1;\n        puVar22[2] = 0;\n      } while (iVar18 != -1);\n    }\n    iVar18 = iVar19 + -1;\n    if (iVar19 != 0) {\n      do {\n        iVar19 = iVar18 + *(int *)(iVar9 + 0x70);\n        iVar18 = iVar18 + -1;\n        FUN_00091070(iVar21,iVar19,iVar9 + 0x54);\n      } while (iVar18 != -1);\n    }\n  }\n  return;\nLAB_00094994:\n  if (bVar2) {\n    FUN_000901cc(&local_98,10,0);\n  }\n  if (*(int *)(puVar4 + 6) != 0) {\n    (*pcVar3)(puVar4);\n  }\n  local_cc = local_cc + 1;\n  local_d4 = iVar19;\n  goto LAB_000945cc;\n}" ({ "{") (declaration "bool bVar1;" (primitive_type "bool") (identifier "bVar1") (; ";")) (declaration "bool bVar2;" (primitive_type "bool") (identifier "bVar2") (; ";")) (declaration "code *pcVar3;" (type_identifier "code") (pointer_declarator "*pcVar3" (* "*") (identifier "pcVar3")) (; ";")) (declaration "ushort *puVar4;" (type_identifier "ushort") (pointer_declarator "*puVar4" (* "*") (identifier "puVar4")) (; ";")) (declaration "uint uVar5;" (type_identifier "uint") (identifier "uVar5") (; ";")) (declaration "int iVar6;" (primitive_type "int") (identifier "iVar6") (; ";")) (declaration "code *pcVar7;" (type_identifier "code") (pointer_declarator "*pcVar7" (* "*") (identifier "pcVar7")) (; ";")) (declaration "uint uVar8;" (type_identifier "uint") (identifier "uVar8") (; ";")) (declaration "int iVar9;" (primitive_type "int") (identifier "iVar9") (; ";")) (declaration "int iVar10;" (primitive_type "int") (identifier "iVar10") (; ";")) (declaration "uint uVar11;" (type_identifier "uint") (identifier "uVar11") (; ";")) (declaration "int iVar12;" (primitive_type "int") (identifier "iVar12") (; ";")) (declaration "undefined4 uVar13;" (type_identifier "undefined4") (identifier "uVar13") (; ";")) (declaration "int iVar14;" (primitive_type "int") (identifier "iVar14") (; ";")) (declaration "char cVar16;" (primitive_type "char") (identifier "cVar16") (; ";")) (declaration "int iVar15;" (primitive_type "int") (identifier "iVar15") (; ";")) (declaration "int iVar17;" (primitive_type "int") (identifier "iVar17") (; ";")) (declaration "int iVar18;" (primitive_type "int") (identifier "iVar18") (; ";")) (declaration "int iVar19;" (primitive_type "int") (identifier "iVar19") (; ";")) (declaration "undefined4 uVar20;" (type_identifier "undefined4") (identifier "uVar20") (; ";")) (declaration "int iVar21;" (primitive_type "int") (identifier "iVar21") (; ";")) (declaration "undefined4 *puVar22;" (type_identifier "undefined4") (pointer_declarator "*puVar22" (* "*") (identifier "puVar22")) (; ";")) (declaration "uint *puVar23;" (type_identifier "uint") (pointer_declarator "*puVar23" (* "*") (identifier "puVar23")) (; ";")) (declaration "int iVar24;" (primitive_type "int") (identifier "iVar24") (; ";")) (declaration "undefined4 *puVar25;" (type_identifier "undefined4") (pointer_declarator "*puVar25" (* "*") (identifier "puVar25")) (; ";")) (declaration "undefined *puVar26;" (type_identifier "undefined") (pointer_declarator "*puVar26" (* "*") (identifier "puVar26")) (; ";")) (declaration "int local_d4;" (primitive_type "int") (identifier "local_d4") (; ";")) (declaration "int local_cc;" (primitive_type "int") (identifier "local_cc") (; ";")) (declaration "int local_c8;" (primitive_type "int") (identifier "local_c8") (; ";")) (declaration "int local_c0;" (primitive_type "int") (identifier "local_c0") (; ";")) (declaration "undefined4 local_98;" (type_identifier "undefined4") (identifier "local_98") (; ";")) (declaration "undefined4 local_94;" (type_identifier "undefined4") (identifier "local_94") (; ";")) (declaration "int local_90;" (primitive_type "int") (identifier "local_90") (; ";")) (declaration "int local_8c;" (primitive_type "int") (identifier "local_8c") (; ";")) (declaration "int local_88;" (primitive_type "int") (identifier "local_88") (; ";")) (declaration "int local_84;" (primitive_type "int") (identifier "local_84") (; ";")) (declaration "undefined1 auStack_80 [16];" (type_identifier "undefined1") (array_declarator "auStack_80 [16]" (identifier "auStack_80") ([ "[") (number_literal "16") (] "]")) (; ";")) (declaration "uint local_70 [16];" (type_identifier "uint") (array_declarator "local_70 [16]" (identifier "local_70") ([ "[") (number_literal "16") (] "]")) (; ";")) (declaration "char local_30;" (primitive_type "char") (identifier "local_30") (; ";")) (declaration "undefined1 local_2f;" (type_identifier "undefined1") (identifier "local_2f") (; ";")) (declaration "int local_2c;" (primitive_type "int") (identifier "local_2c") (; ";")) (expression_statement "puVar26 = PTR___stack_chk_guard_00112630;" (assignment_expression "puVar26 = PTR___stack_chk_guard_00112630" (identifier "puVar26") (= "=") (identifier "PTR___stack_chk_guard_00112630")) (; ";")) (expression_statement "local_2c = *(int *)PTR___stack_chk_guard_00112630;" (assignment_expression "local_2c = *(int *)PTR___stack_chk_guard_00112630" (identifier "local_2c") (= "=") (pointer_expression "*(int *)PTR___stack_chk_guard_00112630" (* "*") (cast_expression "(int *)PTR___stack_chk_guard_00112630" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_guard_00112630")))) (; ";")) (expression_statement "local_98 = 0x1400;" (assignment_expression "local_98 = 0x1400" (identifier "local_98") (= "=") (number_literal "0x1400")) (; ";")) (expression_statement "local_94 = 0;" (assignment_expression "local_94 = 0" (identifier "local_94") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_90 = (*(code *)PTR_safemalloc_001112ec)(0x1400,4);" (assignment_expression "local_90 = (*(code *)PTR_safemalloc_001112ec)(0x1400,4)" (identifier "local_90") (= "=") (call_expression "(*(code *)PTR_safemalloc_001112ec)(0x1400,4)" (parenthesized_expression "(*(code *)PTR_safemalloc_001112ec)" (( "(") (pointer_expression "*(code *)PTR_safemalloc_001112ec" (* "*") (cast_expression "(code *)PTR_safemalloc_001112ec" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_safemalloc_001112ec"))) () ")")) (argument_list "(0x1400,4)" (( "(") (number_literal "0x1400") (, ",") (number_literal "4") () ")")))) (; ";")) (expression_statement "local_8c = local_90;" (assignment_expression "local_8c = local_90" (identifier "local_8c") (= "=") (identifier "local_90")) (; ";")) (expression_statement "local_88 = (*(code *)PTR_safemalloc_001112ec)(local_98,4);" (assignment_expression "local_88 = (*(code *)PTR_safemalloc_001112ec)(local_98,4)" (identifier "local_88") (= "=") (call_expression "(*(code *)PTR_safemalloc_001112ec)(local_98,4)" (parenthesized_expression "(*(code *)PTR_safemalloc_001112ec)" (( "(") (pointer_expression "*(code *)PTR_safemalloc_001112ec" (* "*") (cast_expression "(code *)PTR_safemalloc_001112ec" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_safemalloc_001112ec"))) () ")")) (argument_list "(local_98,4)" (( "(") (identifier "local_98") (, ",") (number_literal "4") () ")")))) (; ";")) (expression_statement "pcVar7 = (code *)(PTR_LAB_00111ad8 + 0x2a9c);" (assignment_expression "pcVar7 = (code *)(PTR_LAB_00111ad8 + 0x2a9c)" (identifier "pcVar7") (= "=") (cast_expression "(code *)(PTR_LAB_00111ad8 + 0x2a9c)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_LAB_00111ad8 + 0x2a9c)" (( "(") (binary_expression "PTR_LAB_00111ad8 + 0x2a9c" (identifier "PTR_LAB_00111ad8") (+ "+") (number_literal "0x2a9c")) () ")")))) (; ";")) (expression_statement "iVar19 = param_3;" (assignment_expression "iVar19 = param_3" (identifier "iVar19") (= "=") (identifier "param_3")) (; ";")) (if_statement "if (param_6 == 0) {\n    iVar19 = 0;\n  }" (if "if") (parenthesized_expression "(param_6 == 0)" (( "(") (binary_expression "param_6 == 0" (identifier "param_6") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    iVar19 = 0;\n  }" ({ "{") (expression_statement "iVar19 = 0;" (assignment_expression "iVar19 = 0" (identifier "iVar19") (= "=") (number_literal "0")) (; ";")) (} "}"))) (expression_statement "pcVar3 = (code *)(PTR_LAB_00111ad8 + 0x1270);" (assignment_expression "pcVar3 = (code *)(PTR_LAB_00111ad8 + 0x1270)" (identifier "pcVar3") (= "=") (cast_expression "(code *)(PTR_LAB_00111ad8 + 0x1270)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_LAB_00111ad8 + 0x1270)" (( "(") (binary_expression "PTR_LAB_00111ad8 + 0x1270" (identifier "PTR_LAB_00111ad8") (+ "+") (number_literal "0x1270")) () ")")))) (; ";")) (expression_statement "local_d4 = param_3;" (assignment_expression "local_d4 = param_3" (identifier "local_d4") (= "=") (identifier "param_3")) (; ";")) (expression_statement "local_cc = param_2;" (assignment_expression "local_cc = param_2" (identifier "local_cc") (= "=") (identifier "param_2")) (; ";")) (expression_statement "local_84 = local_88;" (assignment_expression "local_84 = local_88" (identifier "local_84") (= "=") (identifier "local_88")) (; ";")) (labeled_statement "LAB_000945cc:\n  bVar1 = local_cc < param_4;" (statement_identifier "LAB_000945cc") (: ":") (expression_statement "bVar1 = local_cc < param_4;" (assignment_expression "bVar1 = local_cc < param_4" (identifier "bVar1") (= "=") (binary_expression "local_cc < param_4" (identifier "local_cc") (< "<") (identifier "param_4"))) (; ";"))) (if_statement "if ((bVar1) || ((local_cc == param_4 && (local_d4 < param_5)))) {\n    puVar4 = (ushort *)(*pcVar7)(param_1,local_cc,0x1595,0);\n    local_c0 = *(int *)(param_1 + 300);\n    if ((*puVar4 & 0x10) == 0) {\n      if (local_c0 != 0) {\n        iVar9 = *(int *)(puVar4 + 10) + local_c0 * 0xc;\n        do {\n          if ((((*(uint *)(iVar9 + -0xc) != 0x20) &&\n               ((*(uint *)(iVar9 + -0xc) & 0xfffffcff) != 0xd820)) || (*(int *)(iVar9 + -4) != 0))\n             || (local_c0 <= local_d4)) break;\n          local_c0 = local_c0 + -1;\n          iVar9 = iVar9 + -0xc;\n        } while (local_c0 != 0);\n      }\n      if (bVar1) {\n        local_c8 = local_cc;\n        bVar2 = true;\n      }\n      else if (local_cc == param_4) {\n        bVar2 = local_c0 < param_5;\n        local_c8 = local_cc;\n      }\n      else {\n        bVar2 = false;\n        local_c8 = local_cc;\n      }\n    }\n    else if ((*puVar4 & 0x20) == 0) {\n      bVar2 = false;\n      local_c8 = local_cc;\n    }\n    else if (local_c0 == 0) {\n      bVar2 = false;\n      local_c8 = local_cc + -1;\n    }\n    else {\n      bVar2 = false;\n      local_c8 = local_cc;\n      local_c0 = local_c0 + -1;\n    }\n    iVar9 = local_d4;\n    if ((param_6 != 0) && (bVar2 = bVar1, param_5 < local_c0)) {\n      local_c0 = param_5;\n    }\njoined_r0x00094680:\n    do {\n      iVar21 = iVar9;\n      if (((!bVar1) && ((local_cc != param_4 || (param_5 <= iVar21)))) ||\n         ((local_c8 <= local_cc && ((local_c8 != local_cc || (local_c0 <= iVar21))))))\n      goto LAB_00094994;\n      uVar5 = *(uint *)(*(int *)(puVar4 + 10) + iVar21 * 0xc);\n      if (uVar5 != 0xdfff) {\n        uVar11 = uVar5 & 0xffffff00;\n        iVar18 = iVar21 * 0xc;\n        uVar20 = *(undefined4 *)(*(int *)(puVar4 + 10) + iVar18 + 4);\n        uVar8 = uVar5 & 0xff;\n        local_d4 = iVar21;\n        if (uVar11 == 0xd900) goto LAB_00094804;\n        do {\n          if (uVar11 == 0xda00) {\n            uVar5 = *(uint *)(*(int *)(param_1 + 0x1090) + (uVar8 + 4) * 4);\n            uVar11 = uVar5 & 0xffffff00;\n            uVar8 = uVar5 & 0xff;\n          }\n          else if (uVar11 == 0xd800) {\n            iVar9 = *(int *)(param_1 + 0x1090);\n            goto LAB_0009491c;\n          }\njoined_r0x00094728:\n          if (uVar11 == 0xf000) {\n            iVar9 = uVar8 + 0x404;\nLAB_00094740:\n            uVar5 = *(uint *)(*(int *)(param_1 + 0x1090) + iVar9 * 4);\n            uVar8 = uVar5 & 0xff;\n          }\n          else if (uVar11 == 0xf100) {\n            iVar9 = uVar8 + 0x204;\n            goto LAB_00094740;\n          }\n          iVar9 = local_d4 + 1;\n          local_70[1] = 0;\n          iVar10 = iVar9;\n          local_70[0] = uVar5;\n          if (((uVar5 & 0xfffffe00) == 0xf000) && ((uVar5 & 0xe0) != 0)) {\n            if (uVar8 != 0x7f) {\n              cVar16 = (char)uVar5;\n              iVar6 = (*(code *)PTR_is_dbcs_leadbyte_00111b58)\n                                (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),(int)cVar16);\n              local_30 = cVar16;\n              if (iVar6 == 0) {\n                iVar6 = (*(code *)PTR_mb_to_wc_001115cc)\n                                  (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),0,&local_30,1,\n                                   auStack_80,4);\n              }\n              else {\n                local_2f = (undefined1)*(undefined4 *)(*(int *)(puVar4 + 10) + iVar9 * 0xc);\n                iVar6 = (*(code *)PTR_mb_to_wc_001115cc)\n                                  (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),0,&local_30,2,\n                                   auStack_80,4);\n                iVar10 = local_d4 + 2;\n                local_d4 = iVar9;\n              }\n              if (0 < iVar6) {\n                (*(code *)PTR___memcpy_chk_00112078)(local_70,auStack_80,iVar6 * 4,0x40);\n                local_70[iVar6] = 0;\n                uVar5 = local_70[0];\n              }\n              goto LAB_00094778;\n            }\n            FUN_000901cc(&local_98,uVar5,uVar20);\n          }\n          else {\nLAB_00094778:\n            iVar9 = iVar10;\n            if (uVar5 != 0) {\n              uVar8 = local_70[1];\n              puVar23 = local_70;\n              while( true ) {\n                FUN_000901cc(&local_98,uVar5,uVar20);\n                if (uVar8 == 0) break;\n                uVar5 = uVar8;\n                uVar8 = puVar23[2];\n                puVar23 = puVar23 + 1;\n              }\n            }\n          }\n          iVar10 = *(int *)(puVar4 + 10);\n          iVar18 = *(int *)(iVar10 + iVar18 + 8);\n          iVar21 = iVar21 + iVar18;\n          if (iVar18 == 0) goto joined_r0x00094680;\n          iVar18 = iVar21 * 0xc;\n          uVar5 = *(uint *)(iVar10 + iVar21 * 0xc);\n          uVar20 = *(undefined4 *)(iVar10 + iVar18 + 4);\n          uVar11 = uVar5 & 0xffffff00;\n          uVar8 = uVar5 & 0xff;\n        } while (uVar11 != 0xd900);\nLAB_00094804:\n        iVar9 = *(int *)(param_1 + 0x1090);\n        if (*(int *)(param_1 + 0x1158) == 0) {\n          uVar5 = *(uint *)(iVar9 + (uVar8 + 0x304) * 4);\n          uVar11 = uVar5 & 0xffffff00;\n          uVar8 = uVar5 & 0xff;\n        }\n        else {\nLAB_0009491c:\n          uVar5 = *(uint *)(iVar9 + (uVar8 + 0x104) * 4);\n          uVar11 = uVar5 & 0xffffff00;\n          uVar8 = uVar5 & 0xff;\n        }\n        goto joined_r0x00094728;\n      }\n      iVar9 = iVar21 + 1;\n    } while( true );\n  }" (if "if") (parenthesized_expression "((bVar1) || ((local_cc == param_4 && (local_d4 < param_5))))" (( "(") (binary_expression "(bVar1) || ((local_cc == param_4 && (local_d4 < param_5)))" (parenthesized_expression "(bVar1)" (( "(") (identifier "bVar1") () ")")) (|| "||") (parenthesized_expression "((local_cc == param_4 && (local_d4 < param_5)))" (( "(") (parenthesized_expression "(local_cc == param_4 && (local_d4 < param_5))" (( "(") (binary_expression "local_cc == param_4 && (local_d4 < param_5)" (binary_expression "local_cc == param_4" (identifier "local_cc") (== "==") (identifier "param_4")) (&& "&&") (parenthesized_expression "(local_d4 < param_5)" (( "(") (binary_expression "local_d4 < param_5" (identifier "local_d4") (< "<") (identifier "param_5")) () ")"))) () ")")) () ")"))) () ")")) (compound_statement "{\n    puVar4 = (ushort *)(*pcVar7)(param_1,local_cc,0x1595,0);\n    local_c0 = *(int *)(param_1 + 300);\n    if ((*puVar4 & 0x10) == 0) {\n      if (local_c0 != 0) {\n        iVar9 = *(int *)(puVar4 + 10) + local_c0 * 0xc;\n        do {\n          if ((((*(uint *)(iVar9 + -0xc) != 0x20) &&\n               ((*(uint *)(iVar9 + -0xc) & 0xfffffcff) != 0xd820)) || (*(int *)(iVar9 + -4) != 0))\n             || (local_c0 <= local_d4)) break;\n          local_c0 = local_c0 + -1;\n          iVar9 = iVar9 + -0xc;\n        } while (local_c0 != 0);\n      }\n      if (bVar1) {\n        local_c8 = local_cc;\n        bVar2 = true;\n      }\n      else if (local_cc == param_4) {\n        bVar2 = local_c0 < param_5;\n        local_c8 = local_cc;\n      }\n      else {\n        bVar2 = false;\n        local_c8 = local_cc;\n      }\n    }\n    else if ((*puVar4 & 0x20) == 0) {\n      bVar2 = false;\n      local_c8 = local_cc;\n    }\n    else if (local_c0 == 0) {\n      bVar2 = false;\n      local_c8 = local_cc + -1;\n    }\n    else {\n      bVar2 = false;\n      local_c8 = local_cc;\n      local_c0 = local_c0 + -1;\n    }\n    iVar9 = local_d4;\n    if ((param_6 != 0) && (bVar2 = bVar1, param_5 < local_c0)) {\n      local_c0 = param_5;\n    }\njoined_r0x00094680:\n    do {\n      iVar21 = iVar9;\n      if (((!bVar1) && ((local_cc != param_4 || (param_5 <= iVar21)))) ||\n         ((local_c8 <= local_cc && ((local_c8 != local_cc || (local_c0 <= iVar21))))))\n      goto LAB_00094994;\n      uVar5 = *(uint *)(*(int *)(puVar4 + 10) + iVar21 * 0xc);\n      if (uVar5 != 0xdfff) {\n        uVar11 = uVar5 & 0xffffff00;\n        iVar18 = iVar21 * 0xc;\n        uVar20 = *(undefined4 *)(*(int *)(puVar4 + 10) + iVar18 + 4);\n        uVar8 = uVar5 & 0xff;\n        local_d4 = iVar21;\n        if (uVar11 == 0xd900) goto LAB_00094804;\n        do {\n          if (uVar11 == 0xda00) {\n            uVar5 = *(uint *)(*(int *)(param_1 + 0x1090) + (uVar8 + 4) * 4);\n            uVar11 = uVar5 & 0xffffff00;\n            uVar8 = uVar5 & 0xff;\n          }\n          else if (uVar11 == 0xd800) {\n            iVar9 = *(int *)(param_1 + 0x1090);\n            goto LAB_0009491c;\n          }\njoined_r0x00094728:\n          if (uVar11 == 0xf000) {\n            iVar9 = uVar8 + 0x404;\nLAB_00094740:\n            uVar5 = *(uint *)(*(int *)(param_1 + 0x1090) + iVar9 * 4);\n            uVar8 = uVar5 & 0xff;\n          }\n          else if (uVar11 == 0xf100) {\n            iVar9 = uVar8 + 0x204;\n            goto LAB_00094740;\n          }\n          iVar9 = local_d4 + 1;\n          local_70[1] = 0;\n          iVar10 = iVar9;\n          local_70[0] = uVar5;\n          if (((uVar5 & 0xfffffe00) == 0xf000) && ((uVar5 & 0xe0) != 0)) {\n            if (uVar8 != 0x7f) {\n              cVar16 = (char)uVar5;\n              iVar6 = (*(code *)PTR_is_dbcs_leadbyte_00111b58)\n                                (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),(int)cVar16);\n              local_30 = cVar16;\n              if (iVar6 == 0) {\n                iVar6 = (*(code *)PTR_mb_to_wc_001115cc)\n                                  (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),0,&local_30,1,\n                                   auStack_80,4);\n              }\n              else {\n                local_2f = (undefined1)*(undefined4 *)(*(int *)(puVar4 + 10) + iVar9 * 0xc);\n                iVar6 = (*(code *)PTR_mb_to_wc_001115cc)\n                                  (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),0,&local_30,2,\n                                   auStack_80,4);\n                iVar10 = local_d4 + 2;\n                local_d4 = iVar9;\n              }\n              if (0 < iVar6) {\n                (*(code *)PTR___memcpy_chk_00112078)(local_70,auStack_80,iVar6 * 4,0x40);\n                local_70[iVar6] = 0;\n                uVar5 = local_70[0];\n              }\n              goto LAB_00094778;\n            }\n            FUN_000901cc(&local_98,uVar5,uVar20);\n          }\n          else {\nLAB_00094778:\n            iVar9 = iVar10;\n            if (uVar5 != 0) {\n              uVar8 = local_70[1];\n              puVar23 = local_70;\n              while( true ) {\n                FUN_000901cc(&local_98,uVar5,uVar20);\n                if (uVar8 == 0) break;\n                uVar5 = uVar8;\n                uVar8 = puVar23[2];\n                puVar23 = puVar23 + 1;\n              }\n            }\n          }\n          iVar10 = *(int *)(puVar4 + 10);\n          iVar18 = *(int *)(iVar10 + iVar18 + 8);\n          iVar21 = iVar21 + iVar18;\n          if (iVar18 == 0) goto joined_r0x00094680;\n          iVar18 = iVar21 * 0xc;\n          uVar5 = *(uint *)(iVar10 + iVar21 * 0xc);\n          uVar20 = *(undefined4 *)(iVar10 + iVar18 + 4);\n          uVar11 = uVar5 & 0xffffff00;\n          uVar8 = uVar5 & 0xff;\n        } while (uVar11 != 0xd900);\nLAB_00094804:\n        iVar9 = *(int *)(param_1 + 0x1090);\n        if (*(int *)(param_1 + 0x1158) == 0) {\n          uVar5 = *(uint *)(iVar9 + (uVar8 + 0x304) * 4);\n          uVar11 = uVar5 & 0xffffff00;\n          uVar8 = uVar5 & 0xff;\n        }\n        else {\nLAB_0009491c:\n          uVar5 = *(uint *)(iVar9 + (uVar8 + 0x104) * 4);\n          uVar11 = uVar5 & 0xffffff00;\n          uVar8 = uVar5 & 0xff;\n        }\n        goto joined_r0x00094728;\n      }\n      iVar9 = iVar21 + 1;\n    } while( true );\n  }" ({ "{") (expression_statement "puVar4 = (ushort *)(*pcVar7)(param_1,local_cc,0x1595,0);" (assignment_expression "puVar4 = (ushort *)(*pcVar7)(param_1,local_cc,0x1595,0)" (identifier "puVar4") (= "=") (cast_expression "(ushort *)(*pcVar7)(param_1,local_cc,0x1595,0)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(*pcVar7)(param_1,local_cc,0x1595,0)" (parenthesized_expression "(*pcVar7)" (( "(") (pointer_expression "*pcVar7" (* "*") (identifier "pcVar7")) () ")")) (argument_list "(param_1,local_cc,0x1595,0)" (( "(") (identifier "param_1") (, ",") (identifier "local_cc") (, ",") (number_literal "0x1595") (, ",") (number_literal "0") () ")"))))) (; ";")) (expression_statement "local_c0 = *(int *)(param_1 + 300);" (assignment_expression "local_c0 = *(int *)(param_1 + 300)" (identifier "local_c0") (= "=") (pointer_expression "*(int *)(param_1 + 300)" (* "*") (cast_expression "(int *)(param_1 + 300)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 300)" (( "(") (binary_expression "param_1 + 300" (identifier "param_1") (+ "+") (number_literal "300")) () ")"))))) (; ";")) (if_statement "if ((*puVar4 & 0x10) == 0) {\n      if (local_c0 != 0) {\n        iVar9 = *(int *)(puVar4 + 10) + local_c0 * 0xc;\n        do {\n          if ((((*(uint *)(iVar9 + -0xc) != 0x20) &&\n               ((*(uint *)(iVar9 + -0xc) & 0xfffffcff) != 0xd820)) || (*(int *)(iVar9 + -4) != 0))\n             || (local_c0 <= local_d4)) break;\n          local_c0 = local_c0 + -1;\n          iVar9 = iVar9 + -0xc;\n        } while (local_c0 != 0);\n      }\n      if (bVar1) {\n        local_c8 = local_cc;\n        bVar2 = true;\n      }\n      else if (local_cc == param_4) {\n        bVar2 = local_c0 < param_5;\n        local_c8 = local_cc;\n      }\n      else {\n        bVar2 = false;\n        local_c8 = local_cc;\n      }\n    }\n    else if ((*puVar4 & 0x20) == 0) {\n      bVar2 = false;\n      local_c8 = local_cc;\n    }\n    else if (local_c0 == 0) {\n      bVar2 = false;\n      local_c8 = local_cc + -1;\n    }\n    else {\n      bVar2 = false;\n      local_c8 = local_cc;\n      local_c0 = local_c0 + -1;\n    }" (if "if") (parenthesized_expression "((*puVar4 & 0x10) == 0)" (( "(") (binary_expression "(*puVar4 & 0x10) == 0" (parenthesized_expression "(*puVar4 & 0x10)" (( "(") (binary_expression "*puVar4 & 0x10" (pointer_expression "*puVar4" (* "*") (identifier "puVar4")) (& "&") (number_literal "0x10")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      if (local_c0 != 0) {\n        iVar9 = *(int *)(puVar4 + 10) + local_c0 * 0xc;\n        do {\n          if ((((*(uint *)(iVar9 + -0xc) != 0x20) &&\n               ((*(uint *)(iVar9 + -0xc) & 0xfffffcff) != 0xd820)) || (*(int *)(iVar9 + -4) != 0))\n             || (local_c0 <= local_d4)) break;\n          local_c0 = local_c0 + -1;\n          iVar9 = iVar9 + -0xc;\n        } while (local_c0 != 0);\n      }\n      if (bVar1) {\n        local_c8 = local_cc;\n        bVar2 = true;\n      }\n      else if (local_cc == param_4) {\n        bVar2 = local_c0 < param_5;\n        local_c8 = local_cc;\n      }\n      else {\n        bVar2 = false;\n        local_c8 = local_cc;\n      }\n    }" ({ "{") (if_statement "if (local_c0 != 0) {\n        iVar9 = *(int *)(puVar4 + 10) + local_c0 * 0xc;\n        do {\n          if ((((*(uint *)(iVar9 + -0xc) != 0x20) &&\n               ((*(uint *)(iVar9 + -0xc) & 0xfffffcff) != 0xd820)) || (*(int *)(iVar9 + -4) != 0))\n             || (local_c0 <= local_d4)) break;\n          local_c0 = local_c0 + -1;\n          iVar9 = iVar9 + -0xc;\n        } while (local_c0 != 0);\n      }" (if "if") (parenthesized_expression "(local_c0 != 0)" (( "(") (binary_expression "local_c0 != 0" (identifier "local_c0") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        iVar9 = *(int *)(puVar4 + 10) + local_c0 * 0xc;\n        do {\n          if ((((*(uint *)(iVar9 + -0xc) != 0x20) &&\n               ((*(uint *)(iVar9 + -0xc) & 0xfffffcff) != 0xd820)) || (*(int *)(iVar9 + -4) != 0))\n             || (local_c0 <= local_d4)) break;\n          local_c0 = local_c0 + -1;\n          iVar9 = iVar9 + -0xc;\n        } while (local_c0 != 0);\n      }" ({ "{") (expression_statement "iVar9 = *(int *)(puVar4 + 10) + local_c0 * 0xc;" (assignment_expression "iVar9 = *(int *)(puVar4 + 10) + local_c0 * 0xc" (identifier "iVar9") (= "=") (binary_expression "*(int *)(puVar4 + 10) + local_c0 * 0xc" (pointer_expression "*(int *)(puVar4 + 10)" (* "*") (cast_expression "(int *)(puVar4 + 10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar4 + 10)" (( "(") (binary_expression "puVar4 + 10" (identifier "puVar4") (+ "+") (number_literal "10")) () ")")))) (+ "+") (binary_expression "local_c0 * 0xc" (identifier "local_c0") (* "*") (number_literal "0xc")))) (; ";")) (do_statement "do {\n          if ((((*(uint *)(iVar9 + -0xc) != 0x20) &&\n               ((*(uint *)(iVar9 + -0xc) & 0xfffffcff) != 0xd820)) || (*(int *)(iVar9 + -4) != 0))\n             || (local_c0 <= local_d4)) break;\n          local_c0 = local_c0 + -1;\n          iVar9 = iVar9 + -0xc;\n        } while (local_c0 != 0);" (do "do") (compound_statement "{\n          if ((((*(uint *)(iVar9 + -0xc) != 0x20) &&\n               ((*(uint *)(iVar9 + -0xc) & 0xfffffcff) != 0xd820)) || (*(int *)(iVar9 + -4) != 0))\n             || (local_c0 <= local_d4)) break;\n          local_c0 = local_c0 + -1;\n          iVar9 = iVar9 + -0xc;\n        }" ({ "{") (if_statement "if ((((*(uint *)(iVar9 + -0xc) != 0x20) &&\n               ((*(uint *)(iVar9 + -0xc) & 0xfffffcff) != 0xd820)) || (*(int *)(iVar9 + -4) != 0))\n             || (local_c0 <= local_d4)) break;" (if "if") (parenthesized_expression "((((*(uint *)(iVar9 + -0xc) != 0x20) &&\n               ((*(uint *)(iVar9 + -0xc) & 0xfffffcff) != 0xd820)) || (*(int *)(iVar9 + -4) != 0))\n             || (local_c0 <= local_d4))" (( "(") (binary_expression "(((*(uint *)(iVar9 + -0xc) != 0x20) &&\n               ((*(uint *)(iVar9 + -0xc) & 0xfffffcff) != 0xd820)) || (*(int *)(iVar9 + -4) != 0))\n             || (local_c0 <= local_d4)" (parenthesized_expression "(((*(uint *)(iVar9 + -0xc) != 0x20) &&\n               ((*(uint *)(iVar9 + -0xc) & 0xfffffcff) != 0xd820)) || (*(int *)(iVar9 + -4) != 0))" (( "(") (binary_expression "((*(uint *)(iVar9 + -0xc) != 0x20) &&\n               ((*(uint *)(iVar9 + -0xc) & 0xfffffcff) != 0xd820)) || (*(int *)(iVar9 + -4) != 0)" (parenthesized_expression "((*(uint *)(iVar9 + -0xc) != 0x20) &&\n               ((*(uint *)(iVar9 + -0xc) & 0xfffffcff) != 0xd820))" (( "(") (binary_expression "(*(uint *)(iVar9 + -0xc) != 0x20) &&\n               ((*(uint *)(iVar9 + -0xc) & 0xfffffcff) != 0xd820)" (parenthesized_expression "(*(uint *)(iVar9 + -0xc) != 0x20)" (( "(") (binary_expression "*(uint *)(iVar9 + -0xc) != 0x20" (pointer_expression "*(uint *)(iVar9 + -0xc)" (* "*") (cast_expression "(uint *)(iVar9 + -0xc)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar9 + -0xc)" (( "(") (binary_expression "iVar9 + -0xc" (identifier "iVar9") (+ "+") (number_literal "-0xc")) () ")")))) (!= "!=") (number_literal "0x20")) () ")")) (&& "&&") (parenthesized_expression "((*(uint *)(iVar9 + -0xc) & 0xfffffcff) != 0xd820)" (( "(") (binary_expression "(*(uint *)(iVar9 + -0xc) & 0xfffffcff) != 0xd820" (parenthesized_expression "(*(uint *)(iVar9 + -0xc) & 0xfffffcff)" (( "(") (binary_expression "*(uint *)(iVar9 + -0xc) & 0xfffffcff" (pointer_expression "*(uint *)(iVar9 + -0xc)" (* "*") (cast_expression "(uint *)(iVar9 + -0xc)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar9 + -0xc)" (( "(") (binary_expression "iVar9 + -0xc" (identifier "iVar9") (+ "+") (number_literal "-0xc")) () ")")))) (& "&") (number_literal "0xfffffcff")) () ")")) (!= "!=") (number_literal "0xd820")) () ")"))) () ")")) (|| "||") (parenthesized_expression "(*(int *)(iVar9 + -4) != 0)" (( "(") (binary_expression "*(int *)(iVar9 + -4) != 0" (pointer_expression "*(int *)(iVar9 + -4)" (* "*") (cast_expression "(int *)(iVar9 + -4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar9 + -4)" (( "(") (binary_expression "iVar9 + -4" (identifier "iVar9") (+ "+") (number_literal "-4")) () ")")))) (!= "!=") (number_literal "0")) () ")"))) () ")")) (|| "||") (parenthesized_expression "(local_c0 <= local_d4)" (( "(") (binary_expression "local_c0 <= local_d4" (identifier "local_c0") (<= "<=") (identifier "local_d4")) () ")"))) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "local_c0 = local_c0 + -1;" (assignment_expression "local_c0 = local_c0 + -1" (identifier "local_c0") (= "=") (binary_expression "local_c0 + -1" (identifier "local_c0") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "iVar9 = iVar9 + -0xc;" (assignment_expression "iVar9 = iVar9 + -0xc" (identifier "iVar9") (= "=") (binary_expression "iVar9 + -0xc" (identifier "iVar9") (+ "+") (number_literal "-0xc"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(local_c0 != 0)" (( "(") (binary_expression "local_c0 != 0" (identifier "local_c0") (!= "!=") (number_literal "0")) () ")")) (; ";")) (} "}"))) (if_statement "if (bVar1) {\n        local_c8 = local_cc;\n        bVar2 = true;\n      }\n      else if (local_cc == param_4) {\n        bVar2 = local_c0 < param_5;\n        local_c8 = local_cc;\n      }\n      else {\n        bVar2 = false;\n        local_c8 = local_cc;\n      }" (if "if") (parenthesized_expression "(bVar1)" (( "(") (identifier "bVar1") () ")")) (compound_statement "{\n        local_c8 = local_cc;\n        bVar2 = true;\n      }" ({ "{") (expression_statement "local_c8 = local_cc;" (assignment_expression "local_c8 = local_cc" (identifier "local_c8") (= "=") (identifier "local_cc")) (; ";")) (expression_statement "bVar2 = true;" (assignment_expression "bVar2 = true" (identifier "bVar2") (= "=") (true "true")) (; ";")) (} "}")) (else_clause "else if (local_cc == param_4) {\n        bVar2 = local_c0 < param_5;\n        local_c8 = local_cc;\n      }\n      else {\n        bVar2 = false;\n        local_c8 = local_cc;\n      }" (else "else") (if_statement "if (local_cc == param_4) {\n        bVar2 = local_c0 < param_5;\n        local_c8 = local_cc;\n      }\n      else {\n        bVar2 = false;\n        local_c8 = local_cc;\n      }" (if "if") (parenthesized_expression "(local_cc == param_4)" (( "(") (binary_expression "local_cc == param_4" (identifier "local_cc") (== "==") (identifier "param_4")) () ")")) (compound_statement "{\n        bVar2 = local_c0 < param_5;\n        local_c8 = local_cc;\n      }" ({ "{") (expression_statement "bVar2 = local_c0 < param_5;" (assignment_expression "bVar2 = local_c0 < param_5" (identifier "bVar2") (= "=") (binary_expression "local_c0 < param_5" (identifier "local_c0") (< "<") (identifier "param_5"))) (; ";")) (expression_statement "local_c8 = local_cc;" (assignment_expression "local_c8 = local_cc" (identifier "local_c8") (= "=") (identifier "local_cc")) (; ";")) (} "}")) (else_clause "else {\n        bVar2 = false;\n        local_c8 = local_cc;\n      }" (else "else") (compound_statement "{\n        bVar2 = false;\n        local_c8 = local_cc;\n      }" ({ "{") (expression_statement "bVar2 = false;" (assignment_expression "bVar2 = false" (identifier "bVar2") (= "=") (false "false")) (; ";")) (expression_statement "local_c8 = local_cc;" (assignment_expression "local_c8 = local_cc" (identifier "local_c8") (= "=") (identifier "local_cc")) (; ";")) (} "}")))))) (} "}")) (else_clause "else if ((*puVar4 & 0x20) == 0) {\n      bVar2 = false;\n      local_c8 = local_cc;\n    }\n    else if (local_c0 == 0) {\n      bVar2 = false;\n      local_c8 = local_cc + -1;\n    }\n    else {\n      bVar2 = false;\n      local_c8 = local_cc;\n      local_c0 = local_c0 + -1;\n    }" (else "else") (if_statement "if ((*puVar4 & 0x20) == 0) {\n      bVar2 = false;\n      local_c8 = local_cc;\n    }\n    else if (local_c0 == 0) {\n      bVar2 = false;\n      local_c8 = local_cc + -1;\n    }\n    else {\n      bVar2 = false;\n      local_c8 = local_cc;\n      local_c0 = local_c0 + -1;\n    }" (if "if") (parenthesized_expression "((*puVar4 & 0x20) == 0)" (( "(") (binary_expression "(*puVar4 & 0x20) == 0" (parenthesized_expression "(*puVar4 & 0x20)" (( "(") (binary_expression "*puVar4 & 0x20" (pointer_expression "*puVar4" (* "*") (identifier "puVar4")) (& "&") (number_literal "0x20")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      bVar2 = false;\n      local_c8 = local_cc;\n    }" ({ "{") (expression_statement "bVar2 = false;" (assignment_expression "bVar2 = false" (identifier "bVar2") (= "=") (false "false")) (; ";")) (expression_statement "local_c8 = local_cc;" (assignment_expression "local_c8 = local_cc" (identifier "local_c8") (= "=") (identifier "local_cc")) (; ";")) (} "}")) (else_clause "else if (local_c0 == 0) {\n      bVar2 = false;\n      local_c8 = local_cc + -1;\n    }\n    else {\n      bVar2 = false;\n      local_c8 = local_cc;\n      local_c0 = local_c0 + -1;\n    }" (else "else") (if_statement "if (local_c0 == 0) {\n      bVar2 = false;\n      local_c8 = local_cc + -1;\n    }\n    else {\n      bVar2 = false;\n      local_c8 = local_cc;\n      local_c0 = local_c0 + -1;\n    }" (if "if") (parenthesized_expression "(local_c0 == 0)" (( "(") (binary_expression "local_c0 == 0" (identifier "local_c0") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      bVar2 = false;\n      local_c8 = local_cc + -1;\n    }" ({ "{") (expression_statement "bVar2 = false;" (assignment_expression "bVar2 = false" (identifier "bVar2") (= "=") (false "false")) (; ";")) (expression_statement "local_c8 = local_cc + -1;" (assignment_expression "local_c8 = local_cc + -1" (identifier "local_c8") (= "=") (binary_expression "local_cc + -1" (identifier "local_cc") (+ "+") (number_literal "-1"))) (; ";")) (} "}")) (else_clause "else {\n      bVar2 = false;\n      local_c8 = local_cc;\n      local_c0 = local_c0 + -1;\n    }" (else "else") (compound_statement "{\n      bVar2 = false;\n      local_c8 = local_cc;\n      local_c0 = local_c0 + -1;\n    }" ({ "{") (expression_statement "bVar2 = false;" (assignment_expression "bVar2 = false" (identifier "bVar2") (= "=") (false "false")) (; ";")) (expression_statement "local_c8 = local_cc;" (assignment_expression "local_c8 = local_cc" (identifier "local_c8") (= "=") (identifier "local_cc")) (; ";")) (expression_statement "local_c0 = local_c0 + -1;" (assignment_expression "local_c0 = local_c0 + -1" (identifier "local_c0") (= "=") (binary_expression "local_c0 + -1" (identifier "local_c0") (+ "+") (number_literal "-1"))) (; ";")) (} "}")))))))) (expression_statement "iVar9 = local_d4;" (assignment_expression "iVar9 = local_d4" (identifier "iVar9") (= "=") (identifier "local_d4")) (; ";")) (if_statement "if ((param_6 != 0) && (bVar2 = bVar1, param_5 < local_c0)) {\n      local_c0 = param_5;\n    }" (if "if") (parenthesized_expression "((param_6 != 0) && (bVar2 = bVar1, param_5 < local_c0))" (( "(") (binary_expression "(param_6 != 0) && (bVar2 = bVar1, param_5 < local_c0)" (parenthesized_expression "(param_6 != 0)" (( "(") (binary_expression "param_6 != 0" (identifier "param_6") (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(bVar2 = bVar1, param_5 < local_c0)" (( "(") (comma_expression "bVar2 = bVar1, param_5 < local_c0" (assignment_expression "bVar2 = bVar1" (identifier "bVar2") (= "=") (identifier "bVar1")) (, ",") (binary_expression "param_5 < local_c0" (identifier "param_5") (< "<") (identifier "local_c0"))) () ")"))) () ")")) (compound_statement "{\n      local_c0 = param_5;\n    }" ({ "{") (expression_statement "local_c0 = param_5;" (assignment_expression "local_c0 = param_5" (identifier "local_c0") (= "=") (identifier "param_5")) (; ";")) (} "}"))) (labeled_statement "joined_r0x00094680:\n    do {\n      iVar21 = iVar9;\n      if (((!bVar1) && ((local_cc != param_4 || (param_5 <= iVar21)))) ||\n         ((local_c8 <= local_cc && ((local_c8 != local_cc || (local_c0 <= iVar21))))))\n      goto LAB_00094994;\n      uVar5 = *(uint *)(*(int *)(puVar4 + 10) + iVar21 * 0xc);\n      if (uVar5 != 0xdfff) {\n        uVar11 = uVar5 & 0xffffff00;\n        iVar18 = iVar21 * 0xc;\n        uVar20 = *(undefined4 *)(*(int *)(puVar4 + 10) + iVar18 + 4);\n        uVar8 = uVar5 & 0xff;\n        local_d4 = iVar21;\n        if (uVar11 == 0xd900) goto LAB_00094804;\n        do {\n          if (uVar11 == 0xda00) {\n            uVar5 = *(uint *)(*(int *)(param_1 + 0x1090) + (uVar8 + 4) * 4);\n            uVar11 = uVar5 & 0xffffff00;\n            uVar8 = uVar5 & 0xff;\n          }\n          else if (uVar11 == 0xd800) {\n            iVar9 = *(int *)(param_1 + 0x1090);\n            goto LAB_0009491c;\n          }\njoined_r0x00094728:\n          if (uVar11 == 0xf000) {\n            iVar9 = uVar8 + 0x404;\nLAB_00094740:\n            uVar5 = *(uint *)(*(int *)(param_1 + 0x1090) + iVar9 * 4);\n            uVar8 = uVar5 & 0xff;\n          }\n          else if (uVar11 == 0xf100) {\n            iVar9 = uVar8 + 0x204;\n            goto LAB_00094740;\n          }\n          iVar9 = local_d4 + 1;\n          local_70[1] = 0;\n          iVar10 = iVar9;\n          local_70[0] = uVar5;\n          if (((uVar5 & 0xfffffe00) == 0xf000) && ((uVar5 & 0xe0) != 0)) {\n            if (uVar8 != 0x7f) {\n              cVar16 = (char)uVar5;\n              iVar6 = (*(code *)PTR_is_dbcs_leadbyte_00111b58)\n                                (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),(int)cVar16);\n              local_30 = cVar16;\n              if (iVar6 == 0) {\n                iVar6 = (*(code *)PTR_mb_to_wc_001115cc)\n                                  (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),0,&local_30,1,\n                                   auStack_80,4);\n              }\n              else {\n                local_2f = (undefined1)*(undefined4 *)(*(int *)(puVar4 + 10) + iVar9 * 0xc);\n                iVar6 = (*(code *)PTR_mb_to_wc_001115cc)\n                                  (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),0,&local_30,2,\n                                   auStack_80,4);\n                iVar10 = local_d4 + 2;\n                local_d4 = iVar9;\n              }\n              if (0 < iVar6) {\n                (*(code *)PTR___memcpy_chk_00112078)(local_70,auStack_80,iVar6 * 4,0x40);\n                local_70[iVar6] = 0;\n                uVar5 = local_70[0];\n              }\n              goto LAB_00094778;\n            }\n            FUN_000901cc(&local_98,uVar5,uVar20);\n          }\n          else {\nLAB_00094778:\n            iVar9 = iVar10;\n            if (uVar5 != 0) {\n              uVar8 = local_70[1];\n              puVar23 = local_70;\n              while( true ) {\n                FUN_000901cc(&local_98,uVar5,uVar20);\n                if (uVar8 == 0) break;\n                uVar5 = uVar8;\n                uVar8 = puVar23[2];\n                puVar23 = puVar23 + 1;\n              }\n            }\n          }\n          iVar10 = *(int *)(puVar4 + 10);\n          iVar18 = *(int *)(iVar10 + iVar18 + 8);\n          iVar21 = iVar21 + iVar18;\n          if (iVar18 == 0) goto joined_r0x00094680;\n          iVar18 = iVar21 * 0xc;\n          uVar5 = *(uint *)(iVar10 + iVar21 * 0xc);\n          uVar20 = *(undefined4 *)(iVar10 + iVar18 + 4);\n          uVar11 = uVar5 & 0xffffff00;\n          uVar8 = uVar5 & 0xff;\n        } while (uVar11 != 0xd900);\nLAB_00094804:\n        iVar9 = *(int *)(param_1 + 0x1090);\n        if (*(int *)(param_1 + 0x1158) == 0) {\n          uVar5 = *(uint *)(iVar9 + (uVar8 + 0x304) * 4);\n          uVar11 = uVar5 & 0xffffff00;\n          uVar8 = uVar5 & 0xff;\n        }\n        else {\nLAB_0009491c:\n          uVar5 = *(uint *)(iVar9 + (uVar8 + 0x104) * 4);\n          uVar11 = uVar5 & 0xffffff00;\n          uVar8 = uVar5 & 0xff;\n        }\n        goto joined_r0x00094728;\n      }\n      iVar9 = iVar21 + 1;\n    } while( true );" (statement_identifier "joined_r0x00094680") (: ":") (do_statement "do {\n      iVar21 = iVar9;\n      if (((!bVar1) && ((local_cc != param_4 || (param_5 <= iVar21)))) ||\n         ((local_c8 <= local_cc && ((local_c8 != local_cc || (local_c0 <= iVar21))))))\n      goto LAB_00094994;\n      uVar5 = *(uint *)(*(int *)(puVar4 + 10) + iVar21 * 0xc);\n      if (uVar5 != 0xdfff) {\n        uVar11 = uVar5 & 0xffffff00;\n        iVar18 = iVar21 * 0xc;\n        uVar20 = *(undefined4 *)(*(int *)(puVar4 + 10) + iVar18 + 4);\n        uVar8 = uVar5 & 0xff;\n        local_d4 = iVar21;\n        if (uVar11 == 0xd900) goto LAB_00094804;\n        do {\n          if (uVar11 == 0xda00) {\n            uVar5 = *(uint *)(*(int *)(param_1 + 0x1090) + (uVar8 + 4) * 4);\n            uVar11 = uVar5 & 0xffffff00;\n            uVar8 = uVar5 & 0xff;\n          }\n          else if (uVar11 == 0xd800) {\n            iVar9 = *(int *)(param_1 + 0x1090);\n            goto LAB_0009491c;\n          }\njoined_r0x00094728:\n          if (uVar11 == 0xf000) {\n            iVar9 = uVar8 + 0x404;\nLAB_00094740:\n            uVar5 = *(uint *)(*(int *)(param_1 + 0x1090) + iVar9 * 4);\n            uVar8 = uVar5 & 0xff;\n          }\n          else if (uVar11 == 0xf100) {\n            iVar9 = uVar8 + 0x204;\n            goto LAB_00094740;\n          }\n          iVar9 = local_d4 + 1;\n          local_70[1] = 0;\n          iVar10 = iVar9;\n          local_70[0] = uVar5;\n          if (((uVar5 & 0xfffffe00) == 0xf000) && ((uVar5 & 0xe0) != 0)) {\n            if (uVar8 != 0x7f) {\n              cVar16 = (char)uVar5;\n              iVar6 = (*(code *)PTR_is_dbcs_leadbyte_00111b58)\n                                (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),(int)cVar16);\n              local_30 = cVar16;\n              if (iVar6 == 0) {\n                iVar6 = (*(code *)PTR_mb_to_wc_001115cc)\n                                  (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),0,&local_30,1,\n                                   auStack_80,4);\n              }\n              else {\n                local_2f = (undefined1)*(undefined4 *)(*(int *)(puVar4 + 10) + iVar9 * 0xc);\n                iVar6 = (*(code *)PTR_mb_to_wc_001115cc)\n                                  (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),0,&local_30,2,\n                                   auStack_80,4);\n                iVar10 = local_d4 + 2;\n                local_d4 = iVar9;\n              }\n              if (0 < iVar6) {\n                (*(code *)PTR___memcpy_chk_00112078)(local_70,auStack_80,iVar6 * 4,0x40);\n                local_70[iVar6] = 0;\n                uVar5 = local_70[0];\n              }\n              goto LAB_00094778;\n            }\n            FUN_000901cc(&local_98,uVar5,uVar20);\n          }\n          else {\nLAB_00094778:\n            iVar9 = iVar10;\n            if (uVar5 != 0) {\n              uVar8 = local_70[1];\n              puVar23 = local_70;\n              while( true ) {\n                FUN_000901cc(&local_98,uVar5,uVar20);\n                if (uVar8 == 0) break;\n                uVar5 = uVar8;\n                uVar8 = puVar23[2];\n                puVar23 = puVar23 + 1;\n              }\n            }\n          }\n          iVar10 = *(int *)(puVar4 + 10);\n          iVar18 = *(int *)(iVar10 + iVar18 + 8);\n          iVar21 = iVar21 + iVar18;\n          if (iVar18 == 0) goto joined_r0x00094680;\n          iVar18 = iVar21 * 0xc;\n          uVar5 = *(uint *)(iVar10 + iVar21 * 0xc);\n          uVar20 = *(undefined4 *)(iVar10 + iVar18 + 4);\n          uVar11 = uVar5 & 0xffffff00;\n          uVar8 = uVar5 & 0xff;\n        } while (uVar11 != 0xd900);\nLAB_00094804:\n        iVar9 = *(int *)(param_1 + 0x1090);\n        if (*(int *)(param_1 + 0x1158) == 0) {\n          uVar5 = *(uint *)(iVar9 + (uVar8 + 0x304) * 4);\n          uVar11 = uVar5 & 0xffffff00;\n          uVar8 = uVar5 & 0xff;\n        }\n        else {\nLAB_0009491c:\n          uVar5 = *(uint *)(iVar9 + (uVar8 + 0x104) * 4);\n          uVar11 = uVar5 & 0xffffff00;\n          uVar8 = uVar5 & 0xff;\n        }\n        goto joined_r0x00094728;\n      }\n      iVar9 = iVar21 + 1;\n    } while( true );" (do "do") (compound_statement "{\n      iVar21 = iVar9;\n      if (((!bVar1) && ((local_cc != param_4 || (param_5 <= iVar21)))) ||\n         ((local_c8 <= local_cc && ((local_c8 != local_cc || (local_c0 <= iVar21))))))\n      goto LAB_00094994;\n      uVar5 = *(uint *)(*(int *)(puVar4 + 10) + iVar21 * 0xc);\n      if (uVar5 != 0xdfff) {\n        uVar11 = uVar5 & 0xffffff00;\n        iVar18 = iVar21 * 0xc;\n        uVar20 = *(undefined4 *)(*(int *)(puVar4 + 10) + iVar18 + 4);\n        uVar8 = uVar5 & 0xff;\n        local_d4 = iVar21;\n        if (uVar11 == 0xd900) goto LAB_00094804;\n        do {\n          if (uVar11 == 0xda00) {\n            uVar5 = *(uint *)(*(int *)(param_1 + 0x1090) + (uVar8 + 4) * 4);\n            uVar11 = uVar5 & 0xffffff00;\n            uVar8 = uVar5 & 0xff;\n          }\n          else if (uVar11 == 0xd800) {\n            iVar9 = *(int *)(param_1 + 0x1090);\n            goto LAB_0009491c;\n          }\njoined_r0x00094728:\n          if (uVar11 == 0xf000) {\n            iVar9 = uVar8 + 0x404;\nLAB_00094740:\n            uVar5 = *(uint *)(*(int *)(param_1 + 0x1090) + iVar9 * 4);\n            uVar8 = uVar5 & 0xff;\n          }\n          else if (uVar11 == 0xf100) {\n            iVar9 = uVar8 + 0x204;\n            goto LAB_00094740;\n          }\n          iVar9 = local_d4 + 1;\n          local_70[1] = 0;\n          iVar10 = iVar9;\n          local_70[0] = uVar5;\n          if (((uVar5 & 0xfffffe00) == 0xf000) && ((uVar5 & 0xe0) != 0)) {\n            if (uVar8 != 0x7f) {\n              cVar16 = (char)uVar5;\n              iVar6 = (*(code *)PTR_is_dbcs_leadbyte_00111b58)\n                                (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),(int)cVar16);\n              local_30 = cVar16;\n              if (iVar6 == 0) {\n                iVar6 = (*(code *)PTR_mb_to_wc_001115cc)\n                                  (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),0,&local_30,1,\n                                   auStack_80,4);\n              }\n              else {\n                local_2f = (undefined1)*(undefined4 *)(*(int *)(puVar4 + 10) + iVar9 * 0xc);\n                iVar6 = (*(code *)PTR_mb_to_wc_001115cc)\n                                  (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),0,&local_30,2,\n                                   auStack_80,4);\n                iVar10 = local_d4 + 2;\n                local_d4 = iVar9;\n              }\n              if (0 < iVar6) {\n                (*(code *)PTR___memcpy_chk_00112078)(local_70,auStack_80,iVar6 * 4,0x40);\n                local_70[iVar6] = 0;\n                uVar5 = local_70[0];\n              }\n              goto LAB_00094778;\n            }\n            FUN_000901cc(&local_98,uVar5,uVar20);\n          }\n          else {\nLAB_00094778:\n            iVar9 = iVar10;\n            if (uVar5 != 0) {\n              uVar8 = local_70[1];\n              puVar23 = local_70;\n              while( true ) {\n                FUN_000901cc(&local_98,uVar5,uVar20);\n                if (uVar8 == 0) break;\n                uVar5 = uVar8;\n                uVar8 = puVar23[2];\n                puVar23 = puVar23 + 1;\n              }\n            }\n          }\n          iVar10 = *(int *)(puVar4 + 10);\n          iVar18 = *(int *)(iVar10 + iVar18 + 8);\n          iVar21 = iVar21 + iVar18;\n          if (iVar18 == 0) goto joined_r0x00094680;\n          iVar18 = iVar21 * 0xc;\n          uVar5 = *(uint *)(iVar10 + iVar21 * 0xc);\n          uVar20 = *(undefined4 *)(iVar10 + iVar18 + 4);\n          uVar11 = uVar5 & 0xffffff00;\n          uVar8 = uVar5 & 0xff;\n        } while (uVar11 != 0xd900);\nLAB_00094804:\n        iVar9 = *(int *)(param_1 + 0x1090);\n        if (*(int *)(param_1 + 0x1158) == 0) {\n          uVar5 = *(uint *)(iVar9 + (uVar8 + 0x304) * 4);\n          uVar11 = uVar5 & 0xffffff00;\n          uVar8 = uVar5 & 0xff;\n        }\n        else {\nLAB_0009491c:\n          uVar5 = *(uint *)(iVar9 + (uVar8 + 0x104) * 4);\n          uVar11 = uVar5 & 0xffffff00;\n          uVar8 = uVar5 & 0xff;\n        }\n        goto joined_r0x00094728;\n      }\n      iVar9 = iVar21 + 1;\n    }" ({ "{") (expression_statement "iVar21 = iVar9;" (assignment_expression "iVar21 = iVar9" (identifier "iVar21") (= "=") (identifier "iVar9")) (; ";")) (if_statement "if (((!bVar1) && ((local_cc != param_4 || (param_5 <= iVar21)))) ||\n         ((local_c8 <= local_cc && ((local_c8 != local_cc || (local_c0 <= iVar21))))))\n      goto LAB_00094994;" (if "if") (parenthesized_expression "(((!bVar1) && ((local_cc != param_4 || (param_5 <= iVar21)))) ||\n         ((local_c8 <= local_cc && ((local_c8 != local_cc || (local_c0 <= iVar21))))))" (( "(") (binary_expression "((!bVar1) && ((local_cc != param_4 || (param_5 <= iVar21)))) ||\n         ((local_c8 <= local_cc && ((local_c8 != local_cc || (local_c0 <= iVar21)))))" (parenthesized_expression "((!bVar1) && ((local_cc != param_4 || (param_5 <= iVar21))))" (( "(") (binary_expression "(!bVar1) && ((local_cc != param_4 || (param_5 <= iVar21)))" (parenthesized_expression "(!bVar1)" (( "(") (unary_expression "!bVar1" (! "!") (identifier "bVar1")) () ")")) (&& "&&") (parenthesized_expression "((local_cc != param_4 || (param_5 <= iVar21)))" (( "(") (parenthesized_expression "(local_cc != param_4 || (param_5 <= iVar21))" (( "(") (binary_expression "local_cc != param_4 || (param_5 <= iVar21)" (binary_expression "local_cc != param_4" (identifier "local_cc") (!= "!=") (identifier "param_4")) (|| "||") (parenthesized_expression "(param_5 <= iVar21)" (( "(") (binary_expression "param_5 <= iVar21" (identifier "param_5") (<= "<=") (identifier "iVar21")) () ")"))) () ")")) () ")"))) () ")")) (|| "||") (parenthesized_expression "((local_c8 <= local_cc && ((local_c8 != local_cc || (local_c0 <= iVar21)))))" (( "(") (parenthesized_expression "(local_c8 <= local_cc && ((local_c8 != local_cc || (local_c0 <= iVar21))))" (( "(") (binary_expression "local_c8 <= local_cc && ((local_c8 != local_cc || (local_c0 <= iVar21)))" (binary_expression "local_c8 <= local_cc" (identifier "local_c8") (<= "<=") (identifier "local_cc")) (&& "&&") (parenthesized_expression "((local_c8 != local_cc || (local_c0 <= iVar21)))" (( "(") (parenthesized_expression "(local_c8 != local_cc || (local_c0 <= iVar21))" (( "(") (binary_expression "local_c8 != local_cc || (local_c0 <= iVar21)" (binary_expression "local_c8 != local_cc" (identifier "local_c8") (!= "!=") (identifier "local_cc")) (|| "||") (parenthesized_expression "(local_c0 <= iVar21)" (( "(") (binary_expression "local_c0 <= iVar21" (identifier "local_c0") (<= "<=") (identifier "iVar21")) () ")"))) () ")")) () ")"))) () ")")) () ")"))) () ")")) (goto_statement "goto LAB_00094994;" (goto "goto") (statement_identifier "LAB_00094994") (; ";"))) (expression_statement "uVar5 = *(uint *)(*(int *)(puVar4 + 10) + iVar21 * 0xc);" (assignment_expression "uVar5 = *(uint *)(*(int *)(puVar4 + 10) + iVar21 * 0xc)" (identifier "uVar5") (= "=") (pointer_expression "*(uint *)(*(int *)(puVar4 + 10) + iVar21 * 0xc)" (* "*") (cast_expression "(uint *)(*(int *)(puVar4 + 10) + iVar21 * 0xc)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(puVar4 + 10) + iVar21 * 0xc)" (( "(") (binary_expression "*(int *)(puVar4 + 10) + iVar21 * 0xc" (pointer_expression "*(int *)(puVar4 + 10)" (* "*") (cast_expression "(int *)(puVar4 + 10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar4 + 10)" (( "(") (binary_expression "puVar4 + 10" (identifier "puVar4") (+ "+") (number_literal "10")) () ")")))) (+ "+") (binary_expression "iVar21 * 0xc" (identifier "iVar21") (* "*") (number_literal "0xc"))) () ")"))))) (; ";")) (if_statement "if (uVar5 != 0xdfff) {\n        uVar11 = uVar5 & 0xffffff00;\n        iVar18 = iVar21 * 0xc;\n        uVar20 = *(undefined4 *)(*(int *)(puVar4 + 10) + iVar18 + 4);\n        uVar8 = uVar5 & 0xff;\n        local_d4 = iVar21;\n        if (uVar11 == 0xd900) goto LAB_00094804;\n        do {\n          if (uVar11 == 0xda00) {\n            uVar5 = *(uint *)(*(int *)(param_1 + 0x1090) + (uVar8 + 4) * 4);\n            uVar11 = uVar5 & 0xffffff00;\n            uVar8 = uVar5 & 0xff;\n          }\n          else if (uVar11 == 0xd800) {\n            iVar9 = *(int *)(param_1 + 0x1090);\n            goto LAB_0009491c;\n          }\njoined_r0x00094728:\n          if (uVar11 == 0xf000) {\n            iVar9 = uVar8 + 0x404;\nLAB_00094740:\n            uVar5 = *(uint *)(*(int *)(param_1 + 0x1090) + iVar9 * 4);\n            uVar8 = uVar5 & 0xff;\n          }\n          else if (uVar11 == 0xf100) {\n            iVar9 = uVar8 + 0x204;\n            goto LAB_00094740;\n          }\n          iVar9 = local_d4 + 1;\n          local_70[1] = 0;\n          iVar10 = iVar9;\n          local_70[0] = uVar5;\n          if (((uVar5 & 0xfffffe00) == 0xf000) && ((uVar5 & 0xe0) != 0)) {\n            if (uVar8 != 0x7f) {\n              cVar16 = (char)uVar5;\n              iVar6 = (*(code *)PTR_is_dbcs_leadbyte_00111b58)\n                                (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),(int)cVar16);\n              local_30 = cVar16;\n              if (iVar6 == 0) {\n                iVar6 = (*(code *)PTR_mb_to_wc_001115cc)\n                                  (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),0,&local_30,1,\n                                   auStack_80,4);\n              }\n              else {\n                local_2f = (undefined1)*(undefined4 *)(*(int *)(puVar4 + 10) + iVar9 * 0xc);\n                iVar6 = (*(code *)PTR_mb_to_wc_001115cc)\n                                  (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),0,&local_30,2,\n                                   auStack_80,4);\n                iVar10 = local_d4 + 2;\n                local_d4 = iVar9;\n              }\n              if (0 < iVar6) {\n                (*(code *)PTR___memcpy_chk_00112078)(local_70,auStack_80,iVar6 * 4,0x40);\n                local_70[iVar6] = 0;\n                uVar5 = local_70[0];\n              }\n              goto LAB_00094778;\n            }\n            FUN_000901cc(&local_98,uVar5,uVar20);\n          }\n          else {\nLAB_00094778:\n            iVar9 = iVar10;\n            if (uVar5 != 0) {\n              uVar8 = local_70[1];\n              puVar23 = local_70;\n              while( true ) {\n                FUN_000901cc(&local_98,uVar5,uVar20);\n                if (uVar8 == 0) break;\n                uVar5 = uVar8;\n                uVar8 = puVar23[2];\n                puVar23 = puVar23 + 1;\n              }\n            }\n          }\n          iVar10 = *(int *)(puVar4 + 10);\n          iVar18 = *(int *)(iVar10 + iVar18 + 8);\n          iVar21 = iVar21 + iVar18;\n          if (iVar18 == 0) goto joined_r0x00094680;\n          iVar18 = iVar21 * 0xc;\n          uVar5 = *(uint *)(iVar10 + iVar21 * 0xc);\n          uVar20 = *(undefined4 *)(iVar10 + iVar18 + 4);\n          uVar11 = uVar5 & 0xffffff00;\n          uVar8 = uVar5 & 0xff;\n        } while (uVar11 != 0xd900);\nLAB_00094804:\n        iVar9 = *(int *)(param_1 + 0x1090);\n        if (*(int *)(param_1 + 0x1158) == 0) {\n          uVar5 = *(uint *)(iVar9 + (uVar8 + 0x304) * 4);\n          uVar11 = uVar5 & 0xffffff00;\n          uVar8 = uVar5 & 0xff;\n        }\n        else {\nLAB_0009491c:\n          uVar5 = *(uint *)(iVar9 + (uVar8 + 0x104) * 4);\n          uVar11 = uVar5 & 0xffffff00;\n          uVar8 = uVar5 & 0xff;\n        }\n        goto joined_r0x00094728;\n      }" (if "if") (parenthesized_expression "(uVar5 != 0xdfff)" (( "(") (binary_expression "uVar5 != 0xdfff" (identifier "uVar5") (!= "!=") (number_literal "0xdfff")) () ")")) (compound_statement "{\n        uVar11 = uVar5 & 0xffffff00;\n        iVar18 = iVar21 * 0xc;\n        uVar20 = *(undefined4 *)(*(int *)(puVar4 + 10) + iVar18 + 4);\n        uVar8 = uVar5 & 0xff;\n        local_d4 = iVar21;\n        if (uVar11 == 0xd900) goto LAB_00094804;\n        do {\n          if (uVar11 == 0xda00) {\n            uVar5 = *(uint *)(*(int *)(param_1 + 0x1090) + (uVar8 + 4) * 4);\n            uVar11 = uVar5 & 0xffffff00;\n            uVar8 = uVar5 & 0xff;\n          }\n          else if (uVar11 == 0xd800) {\n            iVar9 = *(int *)(param_1 + 0x1090);\n            goto LAB_0009491c;\n          }\njoined_r0x00094728:\n          if (uVar11 == 0xf000) {\n            iVar9 = uVar8 + 0x404;\nLAB_00094740:\n            uVar5 = *(uint *)(*(int *)(param_1 + 0x1090) + iVar9 * 4);\n            uVar8 = uVar5 & 0xff;\n          }\n          else if (uVar11 == 0xf100) {\n            iVar9 = uVar8 + 0x204;\n            goto LAB_00094740;\n          }\n          iVar9 = local_d4 + 1;\n          local_70[1] = 0;\n          iVar10 = iVar9;\n          local_70[0] = uVar5;\n          if (((uVar5 & 0xfffffe00) == 0xf000) && ((uVar5 & 0xe0) != 0)) {\n            if (uVar8 != 0x7f) {\n              cVar16 = (char)uVar5;\n              iVar6 = (*(code *)PTR_is_dbcs_leadbyte_00111b58)\n                                (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),(int)cVar16);\n              local_30 = cVar16;\n              if (iVar6 == 0) {\n                iVar6 = (*(code *)PTR_mb_to_wc_001115cc)\n                                  (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),0,&local_30,1,\n                                   auStack_80,4);\n              }\n              else {\n                local_2f = (undefined1)*(undefined4 *)(*(int *)(puVar4 + 10) + iVar9 * 0xc);\n                iVar6 = (*(code *)PTR_mb_to_wc_001115cc)\n                                  (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),0,&local_30,2,\n                                   auStack_80,4);\n                iVar10 = local_d4 + 2;\n                local_d4 = iVar9;\n              }\n              if (0 < iVar6) {\n                (*(code *)PTR___memcpy_chk_00112078)(local_70,auStack_80,iVar6 * 4,0x40);\n                local_70[iVar6] = 0;\n                uVar5 = local_70[0];\n              }\n              goto LAB_00094778;\n            }\n            FUN_000901cc(&local_98,uVar5,uVar20);\n          }\n          else {\nLAB_00094778:\n            iVar9 = iVar10;\n            if (uVar5 != 0) {\n              uVar8 = local_70[1];\n              puVar23 = local_70;\n              while( true ) {\n                FUN_000901cc(&local_98,uVar5,uVar20);\n                if (uVar8 == 0) break;\n                uVar5 = uVar8;\n                uVar8 = puVar23[2];\n                puVar23 = puVar23 + 1;\n              }\n            }\n          }\n          iVar10 = *(int *)(puVar4 + 10);\n          iVar18 = *(int *)(iVar10 + iVar18 + 8);\n          iVar21 = iVar21 + iVar18;\n          if (iVar18 == 0) goto joined_r0x00094680;\n          iVar18 = iVar21 * 0xc;\n          uVar5 = *(uint *)(iVar10 + iVar21 * 0xc);\n          uVar20 = *(undefined4 *)(iVar10 + iVar18 + 4);\n          uVar11 = uVar5 & 0xffffff00;\n          uVar8 = uVar5 & 0xff;\n        } while (uVar11 != 0xd900);\nLAB_00094804:\n        iVar9 = *(int *)(param_1 + 0x1090);\n        if (*(int *)(param_1 + 0x1158) == 0) {\n          uVar5 = *(uint *)(iVar9 + (uVar8 + 0x304) * 4);\n          uVar11 = uVar5 & 0xffffff00;\n          uVar8 = uVar5 & 0xff;\n        }\n        else {\nLAB_0009491c:\n          uVar5 = *(uint *)(iVar9 + (uVar8 + 0x104) * 4);\n          uVar11 = uVar5 & 0xffffff00;\n          uVar8 = uVar5 & 0xff;\n        }\n        goto joined_r0x00094728;\n      }" ({ "{") (expression_statement "uVar11 = uVar5 & 0xffffff00;" (assignment_expression "uVar11 = uVar5 & 0xffffff00" (identifier "uVar11") (= "=") (binary_expression "uVar5 & 0xffffff00" (identifier "uVar5") (& "&") (number_literal "0xffffff00"))) (; ";")) (expression_statement "iVar18 = iVar21 * 0xc;" (assignment_expression "iVar18 = iVar21 * 0xc" (identifier "iVar18") (= "=") (binary_expression "iVar21 * 0xc" (identifier "iVar21") (* "*") (number_literal "0xc"))) (; ";")) (expression_statement "uVar20 = *(undefined4 *)(*(int *)(puVar4 + 10) + iVar18 + 4);" (assignment_expression "uVar20 = *(undefined4 *)(*(int *)(puVar4 + 10) + iVar18 + 4)" (identifier "uVar20") (= "=") (pointer_expression "*(undefined4 *)(*(int *)(puVar4 + 10) + iVar18 + 4)" (* "*") (cast_expression "(undefined4 *)(*(int *)(puVar4 + 10) + iVar18 + 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(puVar4 + 10) + iVar18 + 4)" (( "(") (binary_expression "*(int *)(puVar4 + 10) + iVar18 + 4" (binary_expression "*(int *)(puVar4 + 10) + iVar18" (pointer_expression "*(int *)(puVar4 + 10)" (* "*") (cast_expression "(int *)(puVar4 + 10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar4 + 10)" (( "(") (binary_expression "puVar4 + 10" (identifier "puVar4") (+ "+") (number_literal "10")) () ")")))) (+ "+") (identifier "iVar18")) (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "uVar8 = uVar5 & 0xff;" (assignment_expression "uVar8 = uVar5 & 0xff" (identifier "uVar8") (= "=") (binary_expression "uVar5 & 0xff" (identifier "uVar5") (& "&") (number_literal "0xff"))) (; ";")) (expression_statement "local_d4 = iVar21;" (assignment_expression "local_d4 = iVar21" (identifier "local_d4") (= "=") (identifier "iVar21")) (; ";")) (if_statement "if (uVar11 == 0xd900) goto LAB_00094804;" (if "if") (parenthesized_expression "(uVar11 == 0xd900)" (( "(") (binary_expression "uVar11 == 0xd900" (identifier "uVar11") (== "==") (number_literal "0xd900")) () ")")) (goto_statement "goto LAB_00094804;" (goto "goto") (statement_identifier "LAB_00094804") (; ";"))) (do_statement "do {\n          if (uVar11 == 0xda00) {\n            uVar5 = *(uint *)(*(int *)(param_1 + 0x1090) + (uVar8 + 4) * 4);\n            uVar11 = uVar5 & 0xffffff00;\n            uVar8 = uVar5 & 0xff;\n          }\n          else if (uVar11 == 0xd800) {\n            iVar9 = *(int *)(param_1 + 0x1090);\n            goto LAB_0009491c;\n          }\njoined_r0x00094728:\n          if (uVar11 == 0xf000) {\n            iVar9 = uVar8 + 0x404;\nLAB_00094740:\n            uVar5 = *(uint *)(*(int *)(param_1 + 0x1090) + iVar9 * 4);\n            uVar8 = uVar5 & 0xff;\n          }\n          else if (uVar11 == 0xf100) {\n            iVar9 = uVar8 + 0x204;\n            goto LAB_00094740;\n          }\n          iVar9 = local_d4 + 1;\n          local_70[1] = 0;\n          iVar10 = iVar9;\n          local_70[0] = uVar5;\n          if (((uVar5 & 0xfffffe00) == 0xf000) && ((uVar5 & 0xe0) != 0)) {\n            if (uVar8 != 0x7f) {\n              cVar16 = (char)uVar5;\n              iVar6 = (*(code *)PTR_is_dbcs_leadbyte_00111b58)\n                                (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),(int)cVar16);\n              local_30 = cVar16;\n              if (iVar6 == 0) {\n                iVar6 = (*(code *)PTR_mb_to_wc_001115cc)\n                                  (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),0,&local_30,1,\n                                   auStack_80,4);\n              }\n              else {\n                local_2f = (undefined1)*(undefined4 *)(*(int *)(puVar4 + 10) + iVar9 * 0xc);\n                iVar6 = (*(code *)PTR_mb_to_wc_001115cc)\n                                  (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),0,&local_30,2,\n                                   auStack_80,4);\n                iVar10 = local_d4 + 2;\n                local_d4 = iVar9;\n              }\n              if (0 < iVar6) {\n                (*(code *)PTR___memcpy_chk_00112078)(local_70,auStack_80,iVar6 * 4,0x40);\n                local_70[iVar6] = 0;\n                uVar5 = local_70[0];\n              }\n              goto LAB_00094778;\n            }\n            FUN_000901cc(&local_98,uVar5,uVar20);\n          }\n          else {\nLAB_00094778:\n            iVar9 = iVar10;\n            if (uVar5 != 0) {\n              uVar8 = local_70[1];\n              puVar23 = local_70;\n              while( true ) {\n                FUN_000901cc(&local_98,uVar5,uVar20);\n                if (uVar8 == 0) break;\n                uVar5 = uVar8;\n                uVar8 = puVar23[2];\n                puVar23 = puVar23 + 1;\n              }\n            }\n          }\n          iVar10 = *(int *)(puVar4 + 10);\n          iVar18 = *(int *)(iVar10 + iVar18 + 8);\n          iVar21 = iVar21 + iVar18;\n          if (iVar18 == 0) goto joined_r0x00094680;\n          iVar18 = iVar21 * 0xc;\n          uVar5 = *(uint *)(iVar10 + iVar21 * 0xc);\n          uVar20 = *(undefined4 *)(iVar10 + iVar18 + 4);\n          uVar11 = uVar5 & 0xffffff00;\n          uVar8 = uVar5 & 0xff;\n        } while (uVar11 != 0xd900);" (do "do") (compound_statement "{\n          if (uVar11 == 0xda00) {\n            uVar5 = *(uint *)(*(int *)(param_1 + 0x1090) + (uVar8 + 4) * 4);\n            uVar11 = uVar5 & 0xffffff00;\n            uVar8 = uVar5 & 0xff;\n          }\n          else if (uVar11 == 0xd800) {\n            iVar9 = *(int *)(param_1 + 0x1090);\n            goto LAB_0009491c;\n          }\njoined_r0x00094728:\n          if (uVar11 == 0xf000) {\n            iVar9 = uVar8 + 0x404;\nLAB_00094740:\n            uVar5 = *(uint *)(*(int *)(param_1 + 0x1090) + iVar9 * 4);\n            uVar8 = uVar5 & 0xff;\n          }\n          else if (uVar11 == 0xf100) {\n            iVar9 = uVar8 + 0x204;\n            goto LAB_00094740;\n          }\n          iVar9 = local_d4 + 1;\n          local_70[1] = 0;\n          iVar10 = iVar9;\n          local_70[0] = uVar5;\n          if (((uVar5 & 0xfffffe00) == 0xf000) && ((uVar5 & 0xe0) != 0)) {\n            if (uVar8 != 0x7f) {\n              cVar16 = (char)uVar5;\n              iVar6 = (*(code *)PTR_is_dbcs_leadbyte_00111b58)\n                                (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),(int)cVar16);\n              local_30 = cVar16;\n              if (iVar6 == 0) {\n                iVar6 = (*(code *)PTR_mb_to_wc_001115cc)\n                                  (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),0,&local_30,1,\n                                   auStack_80,4);\n              }\n              else {\n                local_2f = (undefined1)*(undefined4 *)(*(int *)(puVar4 + 10) + iVar9 * 0xc);\n                iVar6 = (*(code *)PTR_mb_to_wc_001115cc)\n                                  (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),0,&local_30,2,\n                                   auStack_80,4);\n                iVar10 = local_d4 + 2;\n                local_d4 = iVar9;\n              }\n              if (0 < iVar6) {\n                (*(code *)PTR___memcpy_chk_00112078)(local_70,auStack_80,iVar6 * 4,0x40);\n                local_70[iVar6] = 0;\n                uVar5 = local_70[0];\n              }\n              goto LAB_00094778;\n            }\n            FUN_000901cc(&local_98,uVar5,uVar20);\n          }\n          else {\nLAB_00094778:\n            iVar9 = iVar10;\n            if (uVar5 != 0) {\n              uVar8 = local_70[1];\n              puVar23 = local_70;\n              while( true ) {\n                FUN_000901cc(&local_98,uVar5,uVar20);\n                if (uVar8 == 0) break;\n                uVar5 = uVar8;\n                uVar8 = puVar23[2];\n                puVar23 = puVar23 + 1;\n              }\n            }\n          }\n          iVar10 = *(int *)(puVar4 + 10);\n          iVar18 = *(int *)(iVar10 + iVar18 + 8);\n          iVar21 = iVar21 + iVar18;\n          if (iVar18 == 0) goto joined_r0x00094680;\n          iVar18 = iVar21 * 0xc;\n          uVar5 = *(uint *)(iVar10 + iVar21 * 0xc);\n          uVar20 = *(undefined4 *)(iVar10 + iVar18 + 4);\n          uVar11 = uVar5 & 0xffffff00;\n          uVar8 = uVar5 & 0xff;\n        }" ({ "{") (if_statement "if (uVar11 == 0xda00) {\n            uVar5 = *(uint *)(*(int *)(param_1 + 0x1090) + (uVar8 + 4) * 4);\n            uVar11 = uVar5 & 0xffffff00;\n            uVar8 = uVar5 & 0xff;\n          }\n          else if (uVar11 == 0xd800) {\n            iVar9 = *(int *)(param_1 + 0x1090);\n            goto LAB_0009491c;\n          }" (if "if") (parenthesized_expression "(uVar11 == 0xda00)" (( "(") (binary_expression "uVar11 == 0xda00" (identifier "uVar11") (== "==") (number_literal "0xda00")) () ")")) (compound_statement "{\n            uVar5 = *(uint *)(*(int *)(param_1 + 0x1090) + (uVar8 + 4) * 4);\n            uVar11 = uVar5 & 0xffffff00;\n            uVar8 = uVar5 & 0xff;\n          }" ({ "{") (expression_statement "uVar5 = *(uint *)(*(int *)(param_1 + 0x1090) + (uVar8 + 4) * 4);" (assignment_expression "uVar5 = *(uint *)(*(int *)(param_1 + 0x1090) + (uVar8 + 4) * 4)" (identifier "uVar5") (= "=") (pointer_expression "*(uint *)(*(int *)(param_1 + 0x1090) + (uVar8 + 4) * 4)" (* "*") (cast_expression "(uint *)(*(int *)(param_1 + 0x1090) + (uVar8 + 4) * 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(param_1 + 0x1090) + (uVar8 + 4) * 4)" (( "(") (binary_expression "*(int *)(param_1 + 0x1090) + (uVar8 + 4) * 4" (pointer_expression "*(int *)(param_1 + 0x1090)" (* "*") (cast_expression "(int *)(param_1 + 0x1090)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x1090)" (( "(") (binary_expression "param_1 + 0x1090" (identifier "param_1") (+ "+") (number_literal "0x1090")) () ")")))) (+ "+") (binary_expression "(uVar8 + 4) * 4" (parenthesized_expression "(uVar8 + 4)" (( "(") (binary_expression "uVar8 + 4" (identifier "uVar8") (+ "+") (number_literal "4")) () ")")) (* "*") (number_literal "4"))) () ")"))))) (; ";")) (expression_statement "uVar11 = uVar5 & 0xffffff00;" (assignment_expression "uVar11 = uVar5 & 0xffffff00" (identifier "uVar11") (= "=") (binary_expression "uVar5 & 0xffffff00" (identifier "uVar5") (& "&") (number_literal "0xffffff00"))) (; ";")) (expression_statement "uVar8 = uVar5 & 0xff;" (assignment_expression "uVar8 = uVar5 & 0xff" (identifier "uVar8") (= "=") (binary_expression "uVar5 & 0xff" (identifier "uVar5") (& "&") (number_literal "0xff"))) (; ";")) (} "}")) (else_clause "else if (uVar11 == 0xd800) {\n            iVar9 = *(int *)(param_1 + 0x1090);\n            goto LAB_0009491c;\n          }" (else "else") (if_statement "if (uVar11 == 0xd800) {\n            iVar9 = *(int *)(param_1 + 0x1090);\n            goto LAB_0009491c;\n          }" (if "if") (parenthesized_expression "(uVar11 == 0xd800)" (( "(") (binary_expression "uVar11 == 0xd800" (identifier "uVar11") (== "==") (number_literal "0xd800")) () ")")) (compound_statement "{\n            iVar9 = *(int *)(param_1 + 0x1090);\n            goto LAB_0009491c;\n          }" ({ "{") (expression_statement "iVar9 = *(int *)(param_1 + 0x1090);" (assignment_expression "iVar9 = *(int *)(param_1 + 0x1090)" (identifier "iVar9") (= "=") (pointer_expression "*(int *)(param_1 + 0x1090)" (* "*") (cast_expression "(int *)(param_1 + 0x1090)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x1090)" (( "(") (binary_expression "param_1 + 0x1090" (identifier "param_1") (+ "+") (number_literal "0x1090")) () ")"))))) (; ";")) (goto_statement "goto LAB_0009491c;" (goto "goto") (statement_identifier "LAB_0009491c") (; ";")) (} "}"))))) (labeled_statement "joined_r0x00094728:\n          if (uVar11 == 0xf000) {\n            iVar9 = uVar8 + 0x404;\nLAB_00094740:\n            uVar5 = *(uint *)(*(int *)(param_1 + 0x1090) + iVar9 * 4);\n            uVar8 = uVar5 & 0xff;\n          }\n          else if (uVar11 == 0xf100) {\n            iVar9 = uVar8 + 0x204;\n            goto LAB_00094740;\n          }" (statement_identifier "joined_r0x00094728") (: ":") (if_statement "if (uVar11 == 0xf000) {\n            iVar9 = uVar8 + 0x404;\nLAB_00094740:\n            uVar5 = *(uint *)(*(int *)(param_1 + 0x1090) + iVar9 * 4);\n            uVar8 = uVar5 & 0xff;\n          }\n          else if (uVar11 == 0xf100) {\n            iVar9 = uVar8 + 0x204;\n            goto LAB_00094740;\n          }" (if "if") (parenthesized_expression "(uVar11 == 0xf000)" (( "(") (binary_expression "uVar11 == 0xf000" (identifier "uVar11") (== "==") (number_literal "0xf000")) () ")")) (compound_statement "{\n            iVar9 = uVar8 + 0x404;\nLAB_00094740:\n            uVar5 = *(uint *)(*(int *)(param_1 + 0x1090) + iVar9 * 4);\n            uVar8 = uVar5 & 0xff;\n          }" ({ "{") (expression_statement "iVar9 = uVar8 + 0x404;" (assignment_expression "iVar9 = uVar8 + 0x404" (identifier "iVar9") (= "=") (binary_expression "uVar8 + 0x404" (identifier "uVar8") (+ "+") (number_literal "0x404"))) (; ";")) (labeled_statement "LAB_00094740:\n            uVar5 = *(uint *)(*(int *)(param_1 + 0x1090) + iVar9 * 4);" (statement_identifier "LAB_00094740") (: ":") (expression_statement "uVar5 = *(uint *)(*(int *)(param_1 + 0x1090) + iVar9 * 4);" (assignment_expression "uVar5 = *(uint *)(*(int *)(param_1 + 0x1090) + iVar9 * 4)" (identifier "uVar5") (= "=") (pointer_expression "*(uint *)(*(int *)(param_1 + 0x1090) + iVar9 * 4)" (* "*") (cast_expression "(uint *)(*(int *)(param_1 + 0x1090) + iVar9 * 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(param_1 + 0x1090) + iVar9 * 4)" (( "(") (binary_expression "*(int *)(param_1 + 0x1090) + iVar9 * 4" (pointer_expression "*(int *)(param_1 + 0x1090)" (* "*") (cast_expression "(int *)(param_1 + 0x1090)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x1090)" (( "(") (binary_expression "param_1 + 0x1090" (identifier "param_1") (+ "+") (number_literal "0x1090")) () ")")))) (+ "+") (binary_expression "iVar9 * 4" (identifier "iVar9") (* "*") (number_literal "4"))) () ")"))))) (; ";"))) (expression_statement "uVar8 = uVar5 & 0xff;" (assignment_expression "uVar8 = uVar5 & 0xff" (identifier "uVar8") (= "=") (binary_expression "uVar5 & 0xff" (identifier "uVar5") (& "&") (number_literal "0xff"))) (; ";")) (} "}")) (else_clause "else if (uVar11 == 0xf100) {\n            iVar9 = uVar8 + 0x204;\n            goto LAB_00094740;\n          }" (else "else") (if_statement "if (uVar11 == 0xf100) {\n            iVar9 = uVar8 + 0x204;\n            goto LAB_00094740;\n          }" (if "if") (parenthesized_expression "(uVar11 == 0xf100)" (( "(") (binary_expression "uVar11 == 0xf100" (identifier "uVar11") (== "==") (number_literal "0xf100")) () ")")) (compound_statement "{\n            iVar9 = uVar8 + 0x204;\n            goto LAB_00094740;\n          }" ({ "{") (expression_statement "iVar9 = uVar8 + 0x204;" (assignment_expression "iVar9 = uVar8 + 0x204" (identifier "iVar9") (= "=") (binary_expression "uVar8 + 0x204" (identifier "uVar8") (+ "+") (number_literal "0x204"))) (; ";")) (goto_statement "goto LAB_00094740;" (goto "goto") (statement_identifier "LAB_00094740") (; ";")) (} "}")))))) (expression_statement "iVar9 = local_d4 + 1;" (assignment_expression "iVar9 = local_d4 + 1" (identifier "iVar9") (= "=") (binary_expression "local_d4 + 1" (identifier "local_d4") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "local_70[1] = 0;" (assignment_expression "local_70[1] = 0" (subscript_expression "local_70[1]" (identifier "local_70") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar10 = iVar9;" (assignment_expression "iVar10 = iVar9" (identifier "iVar10") (= "=") (identifier "iVar9")) (; ";")) (expression_statement "local_70[0] = uVar5;" (assignment_expression "local_70[0] = uVar5" (subscript_expression "local_70[0]" (identifier "local_70") ([ "[") (number_literal "0") (] "]")) (= "=") (identifier "uVar5")) (; ";")) (if_statement "if (((uVar5 & 0xfffffe00) == 0xf000) && ((uVar5 & 0xe0) != 0)) {\n            if (uVar8 != 0x7f) {\n              cVar16 = (char)uVar5;\n              iVar6 = (*(code *)PTR_is_dbcs_leadbyte_00111b58)\n                                (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),(int)cVar16);\n              local_30 = cVar16;\n              if (iVar6 == 0) {\n                iVar6 = (*(code *)PTR_mb_to_wc_001115cc)\n                                  (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),0,&local_30,1,\n                                   auStack_80,4);\n              }\n              else {\n                local_2f = (undefined1)*(undefined4 *)(*(int *)(puVar4 + 10) + iVar9 * 0xc);\n                iVar6 = (*(code *)PTR_mb_to_wc_001115cc)\n                                  (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),0,&local_30,2,\n                                   auStack_80,4);\n                iVar10 = local_d4 + 2;\n                local_d4 = iVar9;\n              }\n              if (0 < iVar6) {\n                (*(code *)PTR___memcpy_chk_00112078)(local_70,auStack_80,iVar6 * 4,0x40);\n                local_70[iVar6] = 0;\n                uVar5 = local_70[0];\n              }\n              goto LAB_00094778;\n            }\n            FUN_000901cc(&local_98,uVar5,uVar20);\n          }\n          else {\nLAB_00094778:\n            iVar9 = iVar10;\n            if (uVar5 != 0) {\n              uVar8 = local_70[1];\n              puVar23 = local_70;\n              while( true ) {\n                FUN_000901cc(&local_98,uVar5,uVar20);\n                if (uVar8 == 0) break;\n                uVar5 = uVar8;\n                uVar8 = puVar23[2];\n                puVar23 = puVar23 + 1;\n              }\n            }\n          }" (if "if") (parenthesized_expression "(((uVar5 & 0xfffffe00) == 0xf000) && ((uVar5 & 0xe0) != 0))" (( "(") (binary_expression "((uVar5 & 0xfffffe00) == 0xf000) && ((uVar5 & 0xe0) != 0)" (parenthesized_expression "((uVar5 & 0xfffffe00) == 0xf000)" (( "(") (binary_expression "(uVar5 & 0xfffffe00) == 0xf000" (parenthesized_expression "(uVar5 & 0xfffffe00)" (( "(") (binary_expression "uVar5 & 0xfffffe00" (identifier "uVar5") (& "&") (number_literal "0xfffffe00")) () ")")) (== "==") (number_literal "0xf000")) () ")")) (&& "&&") (parenthesized_expression "((uVar5 & 0xe0) != 0)" (( "(") (binary_expression "(uVar5 & 0xe0) != 0" (parenthesized_expression "(uVar5 & 0xe0)" (( "(") (binary_expression "uVar5 & 0xe0" (identifier "uVar5") (& "&") (number_literal "0xe0")) () ")")) (!= "!=") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n            if (uVar8 != 0x7f) {\n              cVar16 = (char)uVar5;\n              iVar6 = (*(code *)PTR_is_dbcs_leadbyte_00111b58)\n                                (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),(int)cVar16);\n              local_30 = cVar16;\n              if (iVar6 == 0) {\n                iVar6 = (*(code *)PTR_mb_to_wc_001115cc)\n                                  (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),0,&local_30,1,\n                                   auStack_80,4);\n              }\n              else {\n                local_2f = (undefined1)*(undefined4 *)(*(int *)(puVar4 + 10) + iVar9 * 0xc);\n                iVar6 = (*(code *)PTR_mb_to_wc_001115cc)\n                                  (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),0,&local_30,2,\n                                   auStack_80,4);\n                iVar10 = local_d4 + 2;\n                local_d4 = iVar9;\n              }\n              if (0 < iVar6) {\n                (*(code *)PTR___memcpy_chk_00112078)(local_70,auStack_80,iVar6 * 4,0x40);\n                local_70[iVar6] = 0;\n                uVar5 = local_70[0];\n              }\n              goto LAB_00094778;\n            }\n            FUN_000901cc(&local_98,uVar5,uVar20);\n          }" ({ "{") (if_statement "if (uVar8 != 0x7f) {\n              cVar16 = (char)uVar5;\n              iVar6 = (*(code *)PTR_is_dbcs_leadbyte_00111b58)\n                                (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),(int)cVar16);\n              local_30 = cVar16;\n              if (iVar6 == 0) {\n                iVar6 = (*(code *)PTR_mb_to_wc_001115cc)\n                                  (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),0,&local_30,1,\n                                   auStack_80,4);\n              }\n              else {\n                local_2f = (undefined1)*(undefined4 *)(*(int *)(puVar4 + 10) + iVar9 * 0xc);\n                iVar6 = (*(code *)PTR_mb_to_wc_001115cc)\n                                  (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),0,&local_30,2,\n                                   auStack_80,4);\n                iVar10 = local_d4 + 2;\n                local_d4 = iVar9;\n              }\n              if (0 < iVar6) {\n                (*(code *)PTR___memcpy_chk_00112078)(local_70,auStack_80,iVar6 * 4,0x40);\n                local_70[iVar6] = 0;\n                uVar5 = local_70[0];\n              }\n              goto LAB_00094778;\n            }" (if "if") (parenthesized_expression "(uVar8 != 0x7f)" (( "(") (binary_expression "uVar8 != 0x7f" (identifier "uVar8") (!= "!=") (number_literal "0x7f")) () ")")) (compound_statement "{\n              cVar16 = (char)uVar5;\n              iVar6 = (*(code *)PTR_is_dbcs_leadbyte_00111b58)\n                                (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),(int)cVar16);\n              local_30 = cVar16;\n              if (iVar6 == 0) {\n                iVar6 = (*(code *)PTR_mb_to_wc_001115cc)\n                                  (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),0,&local_30,1,\n                                   auStack_80,4);\n              }\n              else {\n                local_2f = (undefined1)*(undefined4 *)(*(int *)(puVar4 + 10) + iVar9 * 0xc);\n                iVar6 = (*(code *)PTR_mb_to_wc_001115cc)\n                                  (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),0,&local_30,2,\n                                   auStack_80,4);\n                iVar10 = local_d4 + 2;\n                local_d4 = iVar9;\n              }\n              if (0 < iVar6) {\n                (*(code *)PTR___memcpy_chk_00112078)(local_70,auStack_80,iVar6 * 4,0x40);\n                local_70[iVar6] = 0;\n                uVar5 = local_70[0];\n              }\n              goto LAB_00094778;\n            }" ({ "{") (expression_statement "cVar16 = (char)uVar5;" (assignment_expression "cVar16 = (char)uVar5" (identifier "cVar16") (= "=") (cast_expression "(char)uVar5" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "uVar5"))) (; ";")) (expression_statement "iVar6 = (*(code *)PTR_is_dbcs_leadbyte_00111b58)\n                                (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),(int)cVar16);" (assignment_expression "iVar6 = (*(code *)PTR_is_dbcs_leadbyte_00111b58)\n                                (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),(int)cVar16)" (identifier "iVar6") (= "=") (call_expression "(*(code *)PTR_is_dbcs_leadbyte_00111b58)\n                                (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),(int)cVar16)" (parenthesized_expression "(*(code *)PTR_is_dbcs_leadbyte_00111b58)" (( "(") (pointer_expression "*(code *)PTR_is_dbcs_leadbyte_00111b58" (* "*") (cast_expression "(code *)PTR_is_dbcs_leadbyte_00111b58" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_is_dbcs_leadbyte_00111b58"))) () ")")) (argument_list "(*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),(int)cVar16)" (( "(") (pointer_expression "*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8)" (* "*") (cast_expression "(undefined4 *)(*(int *)(param_1 + 0x1090) + 8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(param_1 + 0x1090) + 8)" (( "(") (binary_expression "*(int *)(param_1 + 0x1090) + 8" (pointer_expression "*(int *)(param_1 + 0x1090)" (* "*") (cast_expression "(int *)(param_1 + 0x1090)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x1090)" (( "(") (binary_expression "param_1 + 0x1090" (identifier "param_1") (+ "+") (number_literal "0x1090")) () ")")))) (+ "+") (number_literal "8")) () ")")))) (, ",") (cast_expression "(int)cVar16" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "cVar16")) () ")")))) (; ";")) (expression_statement "local_30 = cVar16;" (assignment_expression "local_30 = cVar16" (identifier "local_30") (= "=") (identifier "cVar16")) (; ";")) (if_statement "if (iVar6 == 0) {\n                iVar6 = (*(code *)PTR_mb_to_wc_001115cc)\n                                  (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),0,&local_30,1,\n                                   auStack_80,4);\n              }\n              else {\n                local_2f = (undefined1)*(undefined4 *)(*(int *)(puVar4 + 10) + iVar9 * 0xc);\n                iVar6 = (*(code *)PTR_mb_to_wc_001115cc)\n                                  (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),0,&local_30,2,\n                                   auStack_80,4);\n                iVar10 = local_d4 + 2;\n                local_d4 = iVar9;\n              }" (if "if") (parenthesized_expression "(iVar6 == 0)" (( "(") (binary_expression "iVar6 == 0" (identifier "iVar6") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                iVar6 = (*(code *)PTR_mb_to_wc_001115cc)\n                                  (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),0,&local_30,1,\n                                   auStack_80,4);\n              }" ({ "{") (expression_statement "iVar6 = (*(code *)PTR_mb_to_wc_001115cc)\n                                  (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),0,&local_30,1,\n                                   auStack_80,4);" (assignment_expression "iVar6 = (*(code *)PTR_mb_to_wc_001115cc)\n                                  (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),0,&local_30,1,\n                                   auStack_80,4)" (identifier "iVar6") (= "=") (call_expression "(*(code *)PTR_mb_to_wc_001115cc)\n                                  (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),0,&local_30,1,\n                                   auStack_80,4)" (parenthesized_expression "(*(code *)PTR_mb_to_wc_001115cc)" (( "(") (pointer_expression "*(code *)PTR_mb_to_wc_001115cc" (* "*") (cast_expression "(code *)PTR_mb_to_wc_001115cc" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_mb_to_wc_001115cc"))) () ")")) (argument_list "(*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),0,&local_30,1,\n                                   auStack_80,4)" (( "(") (pointer_expression "*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8)" (* "*") (cast_expression "(undefined4 *)(*(int *)(param_1 + 0x1090) + 8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(param_1 + 0x1090) + 8)" (( "(") (binary_expression "*(int *)(param_1 + 0x1090) + 8" (pointer_expression "*(int *)(param_1 + 0x1090)" (* "*") (cast_expression "(int *)(param_1 + 0x1090)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x1090)" (( "(") (binary_expression "param_1 + 0x1090" (identifier "param_1") (+ "+") (number_literal "0x1090")) () ")")))) (+ "+") (number_literal "8")) () ")")))) (, ",") (number_literal "0") (, ",") (pointer_expression "&local_30" (& "&") (identifier "local_30")) (, ",") (number_literal "1") (, ",") (identifier "auStack_80") (, ",") (number_literal "4") () ")")))) (; ";")) (} "}")) (else_clause "else {\n                local_2f = (undefined1)*(undefined4 *)(*(int *)(puVar4 + 10) + iVar9 * 0xc);\n                iVar6 = (*(code *)PTR_mb_to_wc_001115cc)\n                                  (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),0,&local_30,2,\n                                   auStack_80,4);\n                iVar10 = local_d4 + 2;\n                local_d4 = iVar9;\n              }" (else "else") (compound_statement "{\n                local_2f = (undefined1)*(undefined4 *)(*(int *)(puVar4 + 10) + iVar9 * 0xc);\n                iVar6 = (*(code *)PTR_mb_to_wc_001115cc)\n                                  (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),0,&local_30,2,\n                                   auStack_80,4);\n                iVar10 = local_d4 + 2;\n                local_d4 = iVar9;\n              }" ({ "{") (expression_statement "local_2f = (undefined1)*(undefined4 *)(*(int *)(puVar4 + 10) + iVar9 * 0xc);" (assignment_expression "local_2f = (undefined1)*(undefined4 *)(*(int *)(puVar4 + 10) + iVar9 * 0xc)" (identifier "local_2f") (= "=") (binary_expression "(undefined1)*(undefined4 *)(*(int *)(puVar4 + 10) + iVar9 * 0xc)" (parenthesized_expression "(undefined1)" (( "(") (identifier "undefined1") () ")")) (* "*") (cast_expression "(undefined4 *)(*(int *)(puVar4 + 10) + iVar9 * 0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(puVar4 + 10) + iVar9 * 0xc)" (( "(") (binary_expression "*(int *)(puVar4 + 10) + iVar9 * 0xc" (pointer_expression "*(int *)(puVar4 + 10)" (* "*") (cast_expression "(int *)(puVar4 + 10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar4 + 10)" (( "(") (binary_expression "puVar4 + 10" (identifier "puVar4") (+ "+") (number_literal "10")) () ")")))) (+ "+") (binary_expression "iVar9 * 0xc" (identifier "iVar9") (* "*") (number_literal "0xc"))) () ")"))))) (; ";")) (expression_statement "iVar6 = (*(code *)PTR_mb_to_wc_001115cc)\n                                  (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),0,&local_30,2,\n                                   auStack_80,4);" (assignment_expression "iVar6 = (*(code *)PTR_mb_to_wc_001115cc)\n                                  (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),0,&local_30,2,\n                                   auStack_80,4)" (identifier "iVar6") (= "=") (call_expression "(*(code *)PTR_mb_to_wc_001115cc)\n                                  (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),0,&local_30,2,\n                                   auStack_80,4)" (parenthesized_expression "(*(code *)PTR_mb_to_wc_001115cc)" (( "(") (pointer_expression "*(code *)PTR_mb_to_wc_001115cc" (* "*") (cast_expression "(code *)PTR_mb_to_wc_001115cc" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_mb_to_wc_001115cc"))) () ")")) (argument_list "(*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),0,&local_30,2,\n                                   auStack_80,4)" (( "(") (pointer_expression "*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8)" (* "*") (cast_expression "(undefined4 *)(*(int *)(param_1 + 0x1090) + 8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(param_1 + 0x1090) + 8)" (( "(") (binary_expression "*(int *)(param_1 + 0x1090) + 8" (pointer_expression "*(int *)(param_1 + 0x1090)" (* "*") (cast_expression "(int *)(param_1 + 0x1090)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x1090)" (( "(") (binary_expression "param_1 + 0x1090" (identifier "param_1") (+ "+") (number_literal "0x1090")) () ")")))) (+ "+") (number_literal "8")) () ")")))) (, ",") (number_literal "0") (, ",") (pointer_expression "&local_30" (& "&") (identifier "local_30")) (, ",") (number_literal "2") (, ",") (identifier "auStack_80") (, ",") (number_literal "4") () ")")))) (; ";")) (expression_statement "iVar10 = local_d4 + 2;" (assignment_expression "iVar10 = local_d4 + 2" (identifier "iVar10") (= "=") (binary_expression "local_d4 + 2" (identifier "local_d4") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "local_d4 = iVar9;" (assignment_expression "local_d4 = iVar9" (identifier "local_d4") (= "=") (identifier "iVar9")) (; ";")) (} "}")))) (if_statement "if (0 < iVar6) {\n                (*(code *)PTR___memcpy_chk_00112078)(local_70,auStack_80,iVar6 * 4,0x40);\n                local_70[iVar6] = 0;\n                uVar5 = local_70[0];\n              }" (if "if") (parenthesized_expression "(0 < iVar6)" (( "(") (binary_expression "0 < iVar6" (number_literal "0") (< "<") (identifier "iVar6")) () ")")) (compound_statement "{\n                (*(code *)PTR___memcpy_chk_00112078)(local_70,auStack_80,iVar6 * 4,0x40);\n                local_70[iVar6] = 0;\n                uVar5 = local_70[0];\n              }" ({ "{") (expression_statement "(*(code *)PTR___memcpy_chk_00112078)(local_70,auStack_80,iVar6 * 4,0x40);" (call_expression "(*(code *)PTR___memcpy_chk_00112078)(local_70,auStack_80,iVar6 * 4,0x40)" (parenthesized_expression "(*(code *)PTR___memcpy_chk_00112078)" (( "(") (pointer_expression "*(code *)PTR___memcpy_chk_00112078" (* "*") (cast_expression "(code *)PTR___memcpy_chk_00112078" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___memcpy_chk_00112078"))) () ")")) (argument_list "(local_70,auStack_80,iVar6 * 4,0x40)" (( "(") (identifier "local_70") (, ",") (identifier "auStack_80") (, ",") (binary_expression "iVar6 * 4" (identifier "iVar6") (* "*") (number_literal "4")) (, ",") (number_literal "0x40") () ")"))) (; ";")) (expression_statement "local_70[iVar6] = 0;" (assignment_expression "local_70[iVar6] = 0" (subscript_expression "local_70[iVar6]" (identifier "local_70") ([ "[") (identifier "iVar6") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar5 = local_70[0];" (assignment_expression "uVar5 = local_70[0]" (identifier "uVar5") (= "=") (subscript_expression "local_70[0]" (identifier "local_70") ([ "[") (number_literal "0") (] "]"))) (; ";")) (} "}"))) (goto_statement "goto LAB_00094778;" (goto "goto") (statement_identifier "LAB_00094778") (; ";")) (} "}"))) (expression_statement "FUN_000901cc(&local_98,uVar5,uVar20);" (call_expression "FUN_000901cc(&local_98,uVar5,uVar20)" (identifier "FUN_000901cc") (argument_list "(&local_98,uVar5,uVar20)" (( "(") (pointer_expression "&local_98" (& "&") (identifier "local_98")) (, ",") (identifier "uVar5") (, ",") (identifier "uVar20") () ")"))) (; ";")) (} "}")) (else_clause "else {\nLAB_00094778:\n            iVar9 = iVar10;\n            if (uVar5 != 0) {\n              uVar8 = local_70[1];\n              puVar23 = local_70;\n              while( true ) {\n                FUN_000901cc(&local_98,uVar5,uVar20);\n                if (uVar8 == 0) break;\n                uVar5 = uVar8;\n                uVar8 = puVar23[2];\n                puVar23 = puVar23 + 1;\n              }\n            }\n          }" (else "else") (compound_statement "{\nLAB_00094778:\n            iVar9 = iVar10;\n            if (uVar5 != 0) {\n              uVar8 = local_70[1];\n              puVar23 = local_70;\n              while( true ) {\n                FUN_000901cc(&local_98,uVar5,uVar20);\n                if (uVar8 == 0) break;\n                uVar5 = uVar8;\n                uVar8 = puVar23[2];\n                puVar23 = puVar23 + 1;\n              }\n            }\n          }" ({ "{") (labeled_statement "LAB_00094778:\n            iVar9 = iVar10;" (statement_identifier "LAB_00094778") (: ":") (expression_statement "iVar9 = iVar10;" (assignment_expression "iVar9 = iVar10" (identifier "iVar9") (= "=") (identifier "iVar10")) (; ";"))) (if_statement "if (uVar5 != 0) {\n              uVar8 = local_70[1];\n              puVar23 = local_70;\n              while( true ) {\n                FUN_000901cc(&local_98,uVar5,uVar20);\n                if (uVar8 == 0) break;\n                uVar5 = uVar8;\n                uVar8 = puVar23[2];\n                puVar23 = puVar23 + 1;\n              }\n            }" (if "if") (parenthesized_expression "(uVar5 != 0)" (( "(") (binary_expression "uVar5 != 0" (identifier "uVar5") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n              uVar8 = local_70[1];\n              puVar23 = local_70;\n              while( true ) {\n                FUN_000901cc(&local_98,uVar5,uVar20);\n                if (uVar8 == 0) break;\n                uVar5 = uVar8;\n                uVar8 = puVar23[2];\n                puVar23 = puVar23 + 1;\n              }\n            }" ({ "{") (expression_statement "uVar8 = local_70[1];" (assignment_expression "uVar8 = local_70[1]" (identifier "uVar8") (= "=") (subscript_expression "local_70[1]" (identifier "local_70") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "puVar23 = local_70;" (assignment_expression "puVar23 = local_70" (identifier "puVar23") (= "=") (identifier "local_70")) (; ";")) (while_statement "while( true ) {\n                FUN_000901cc(&local_98,uVar5,uVar20);\n                if (uVar8 == 0) break;\n                uVar5 = uVar8;\n                uVar8 = puVar23[2];\n                puVar23 = puVar23 + 1;\n              }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n                FUN_000901cc(&local_98,uVar5,uVar20);\n                if (uVar8 == 0) break;\n                uVar5 = uVar8;\n                uVar8 = puVar23[2];\n                puVar23 = puVar23 + 1;\n              }" ({ "{") (expression_statement "FUN_000901cc(&local_98,uVar5,uVar20);" (call_expression "FUN_000901cc(&local_98,uVar5,uVar20)" (identifier "FUN_000901cc") (argument_list "(&local_98,uVar5,uVar20)" (( "(") (pointer_expression "&local_98" (& "&") (identifier "local_98")) (, ",") (identifier "uVar5") (, ",") (identifier "uVar20") () ")"))) (; ";")) (if_statement "if (uVar8 == 0) break;" (if "if") (parenthesized_expression "(uVar8 == 0)" (( "(") (binary_expression "uVar8 == 0" (identifier "uVar8") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "uVar5 = uVar8;" (assignment_expression "uVar5 = uVar8" (identifier "uVar5") (= "=") (identifier "uVar8")) (; ";")) (expression_statement "uVar8 = puVar23[2];" (assignment_expression "uVar8 = puVar23[2]" (identifier "uVar8") (= "=") (subscript_expression "puVar23[2]" (identifier "puVar23") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "puVar23 = puVar23 + 1;" (assignment_expression "puVar23 = puVar23 + 1" (identifier "puVar23") (= "=") (binary_expression "puVar23 + 1" (identifier "puVar23") (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (} "}"))) (} "}")))) (expression_statement "iVar10 = *(int *)(puVar4 + 10);" (assignment_expression "iVar10 = *(int *)(puVar4 + 10)" (identifier "iVar10") (= "=") (pointer_expression "*(int *)(puVar4 + 10)" (* "*") (cast_expression "(int *)(puVar4 + 10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar4 + 10)" (( "(") (binary_expression "puVar4 + 10" (identifier "puVar4") (+ "+") (number_literal "10")) () ")"))))) (; ";")) (expression_statement "iVar18 = *(int *)(iVar10 + iVar18 + 8);" (assignment_expression "iVar18 = *(int *)(iVar10 + iVar18 + 8)" (identifier "iVar18") (= "=") (pointer_expression "*(int *)(iVar10 + iVar18 + 8)" (* "*") (cast_expression "(int *)(iVar10 + iVar18 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar10 + iVar18 + 8)" (( "(") (binary_expression "iVar10 + iVar18 + 8" (binary_expression "iVar10 + iVar18" (identifier "iVar10") (+ "+") (identifier "iVar18")) (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "iVar21 = iVar21 + iVar18;" (assignment_expression "iVar21 = iVar21 + iVar18" (identifier "iVar21") (= "=") (binary_expression "iVar21 + iVar18" (identifier "iVar21") (+ "+") (identifier "iVar18"))) (; ";")) (if_statement "if (iVar18 == 0) goto joined_r0x00094680;" (if "if") (parenthesized_expression "(iVar18 == 0)" (( "(") (binary_expression "iVar18 == 0" (identifier "iVar18") (== "==") (number_literal "0")) () ")")) (goto_statement "goto joined_r0x00094680;" (goto "goto") (statement_identifier "joined_r0x00094680") (; ";"))) (expression_statement "iVar18 = iVar21 * 0xc;" (assignment_expression "iVar18 = iVar21 * 0xc" (identifier "iVar18") (= "=") (binary_expression "iVar21 * 0xc" (identifier "iVar21") (* "*") (number_literal "0xc"))) (; ";")) (expression_statement "uVar5 = *(uint *)(iVar10 + iVar21 * 0xc);" (assignment_expression "uVar5 = *(uint *)(iVar10 + iVar21 * 0xc)" (identifier "uVar5") (= "=") (pointer_expression "*(uint *)(iVar10 + iVar21 * 0xc)" (* "*") (cast_expression "(uint *)(iVar10 + iVar21 * 0xc)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar10 + iVar21 * 0xc)" (( "(") (binary_expression "iVar10 + iVar21 * 0xc" (identifier "iVar10") (+ "+") (binary_expression "iVar21 * 0xc" (identifier "iVar21") (* "*") (number_literal "0xc"))) () ")"))))) (; ";")) (expression_statement "uVar20 = *(undefined4 *)(iVar10 + iVar18 + 4);" (assignment_expression "uVar20 = *(undefined4 *)(iVar10 + iVar18 + 4)" (identifier "uVar20") (= "=") (pointer_expression "*(undefined4 *)(iVar10 + iVar18 + 4)" (* "*") (cast_expression "(undefined4 *)(iVar10 + iVar18 + 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar10 + iVar18 + 4)" (( "(") (binary_expression "iVar10 + iVar18 + 4" (binary_expression "iVar10 + iVar18" (identifier "iVar10") (+ "+") (identifier "iVar18")) (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "uVar11 = uVar5 & 0xffffff00;" (assignment_expression "uVar11 = uVar5 & 0xffffff00" (identifier "uVar11") (= "=") (binary_expression "uVar5 & 0xffffff00" (identifier "uVar5") (& "&") (number_literal "0xffffff00"))) (; ";")) (expression_statement "uVar8 = uVar5 & 0xff;" (assignment_expression "uVar8 = uVar5 & 0xff" (identifier "uVar8") (= "=") (binary_expression "uVar5 & 0xff" (identifier "uVar5") (& "&") (number_literal "0xff"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar11 != 0xd900)" (( "(") (binary_expression "uVar11 != 0xd900" (identifier "uVar11") (!= "!=") (number_literal "0xd900")) () ")")) (; ";")) (labeled_statement "LAB_00094804:\n        iVar9 = *(int *)(param_1 + 0x1090);" (statement_identifier "LAB_00094804") (: ":") (expression_statement "iVar9 = *(int *)(param_1 + 0x1090);" (assignment_expression "iVar9 = *(int *)(param_1 + 0x1090)" (identifier "iVar9") (= "=") (pointer_expression "*(int *)(param_1 + 0x1090)" (* "*") (cast_expression "(int *)(param_1 + 0x1090)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x1090)" (( "(") (binary_expression "param_1 + 0x1090" (identifier "param_1") (+ "+") (number_literal "0x1090")) () ")"))))) (; ";"))) (if_statement "if (*(int *)(param_1 + 0x1158) == 0) {\n          uVar5 = *(uint *)(iVar9 + (uVar8 + 0x304) * 4);\n          uVar11 = uVar5 & 0xffffff00;\n          uVar8 = uVar5 & 0xff;\n        }\n        else {\nLAB_0009491c:\n          uVar5 = *(uint *)(iVar9 + (uVar8 + 0x104) * 4);\n          uVar11 = uVar5 & 0xffffff00;\n          uVar8 = uVar5 & 0xff;\n        }" (if "if") (parenthesized_expression "(*(int *)(param_1 + 0x1158) == 0)" (( "(") (binary_expression "*(int *)(param_1 + 0x1158) == 0" (pointer_expression "*(int *)(param_1 + 0x1158)" (* "*") (cast_expression "(int *)(param_1 + 0x1158)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x1158)" (( "(") (binary_expression "param_1 + 0x1158" (identifier "param_1") (+ "+") (number_literal "0x1158")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          uVar5 = *(uint *)(iVar9 + (uVar8 + 0x304) * 4);\n          uVar11 = uVar5 & 0xffffff00;\n          uVar8 = uVar5 & 0xff;\n        }" ({ "{") (expression_statement "uVar5 = *(uint *)(iVar9 + (uVar8 + 0x304) * 4);" (assignment_expression "uVar5 = *(uint *)(iVar9 + (uVar8 + 0x304) * 4)" (identifier "uVar5") (= "=") (pointer_expression "*(uint *)(iVar9 + (uVar8 + 0x304) * 4)" (* "*") (cast_expression "(uint *)(iVar9 + (uVar8 + 0x304) * 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar9 + (uVar8 + 0x304) * 4)" (( "(") (binary_expression "iVar9 + (uVar8 + 0x304) * 4" (identifier "iVar9") (+ "+") (binary_expression "(uVar8 + 0x304) * 4" (parenthesized_expression "(uVar8 + 0x304)" (( "(") (binary_expression "uVar8 + 0x304" (identifier "uVar8") (+ "+") (number_literal "0x304")) () ")")) (* "*") (number_literal "4"))) () ")"))))) (; ";")) (expression_statement "uVar11 = uVar5 & 0xffffff00;" (assignment_expression "uVar11 = uVar5 & 0xffffff00" (identifier "uVar11") (= "=") (binary_expression "uVar5 & 0xffffff00" (identifier "uVar5") (& "&") (number_literal "0xffffff00"))) (; ";")) (expression_statement "uVar8 = uVar5 & 0xff;" (assignment_expression "uVar8 = uVar5 & 0xff" (identifier "uVar8") (= "=") (binary_expression "uVar5 & 0xff" (identifier "uVar5") (& "&") (number_literal "0xff"))) (; ";")) (} "}")) (else_clause "else {\nLAB_0009491c:\n          uVar5 = *(uint *)(iVar9 + (uVar8 + 0x104) * 4);\n          uVar11 = uVar5 & 0xffffff00;\n          uVar8 = uVar5 & 0xff;\n        }" (else "else") (compound_statement "{\nLAB_0009491c:\n          uVar5 = *(uint *)(iVar9 + (uVar8 + 0x104) * 4);\n          uVar11 = uVar5 & 0xffffff00;\n          uVar8 = uVar5 & 0xff;\n        }" ({ "{") (labeled_statement "LAB_0009491c:\n          uVar5 = *(uint *)(iVar9 + (uVar8 + 0x104) * 4);" (statement_identifier "LAB_0009491c") (: ":") (expression_statement "uVar5 = *(uint *)(iVar9 + (uVar8 + 0x104) * 4);" (assignment_expression "uVar5 = *(uint *)(iVar9 + (uVar8 + 0x104) * 4)" (identifier "uVar5") (= "=") (pointer_expression "*(uint *)(iVar9 + (uVar8 + 0x104) * 4)" (* "*") (cast_expression "(uint *)(iVar9 + (uVar8 + 0x104) * 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar9 + (uVar8 + 0x104) * 4)" (( "(") (binary_expression "iVar9 + (uVar8 + 0x104) * 4" (identifier "iVar9") (+ "+") (binary_expression "(uVar8 + 0x104) * 4" (parenthesized_expression "(uVar8 + 0x104)" (( "(") (binary_expression "uVar8 + 0x104" (identifier "uVar8") (+ "+") (number_literal "0x104")) () ")")) (* "*") (number_literal "4"))) () ")"))))) (; ";"))) (expression_statement "uVar11 = uVar5 & 0xffffff00;" (assignment_expression "uVar11 = uVar5 & 0xffffff00" (identifier "uVar11") (= "=") (binary_expression "uVar5 & 0xffffff00" (identifier "uVar5") (& "&") (number_literal "0xffffff00"))) (; ";")) (expression_statement "uVar8 = uVar5 & 0xff;" (assignment_expression "uVar8 = uVar5 & 0xff" (identifier "uVar8") (= "=") (binary_expression "uVar5 & 0xff" (identifier "uVar5") (& "&") (number_literal "0xff"))) (; ";")) (} "}")))) (goto_statement "goto joined_r0x00094728;" (goto "goto") (statement_identifier "joined_r0x00094728") (; ";")) (} "}"))) (expression_statement "iVar9 = iVar21 + 1;" (assignment_expression "iVar9 = iVar21 + 1" (identifier "iVar9") (= "=") (binary_expression "iVar21 + 1" (identifier "iVar21") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";"))) (} "}"))) (expression_statement "iVar19 = local_90;" (assignment_expression "iVar19 = local_90" (identifier "iVar19") (= "=") (identifier "local_90")) (; ";")) (expression_statement "(*(code *)PTR_write_clip_00111b5c)\n            (*(undefined4 *)(param_1 + 0x1088),local_90,local_88,local_94,param_7);" (call_expression "(*(code *)PTR_write_clip_00111b5c)\n            (*(undefined4 *)(param_1 + 0x1088),local_90,local_88,local_94,param_7)" (parenthesized_expression "(*(code *)PTR_write_clip_00111b5c)" (( "(") (pointer_expression "*(code *)PTR_write_clip_00111b5c" (* "*") (cast_expression "(code *)PTR_write_clip_00111b5c" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_write_clip_00111b5c"))) () ")")) (argument_list "(*(undefined4 *)(param_1 + 0x1088),local_90,local_88,local_94,param_7)" (( "(") (pointer_expression "*(undefined4 *)(param_1 + 0x1088)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x1088)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x1088)" (( "(") (binary_expression "param_1 + 0x1088" (identifier "param_1") (+ "+") (number_literal "0x1088")) () ")")))) (, ",") (identifier "local_90") (, ",") (identifier "local_88") (, ",") (identifier "local_94") (, ",") (identifier "param_7") () ")"))) (; ";")) (expression_statement "(*(code *)PTR_safefree_001112f0)(local_90);" (call_expression "(*(code *)PTR_safefree_001112f0)(local_90)" (parenthesized_expression "(*(code *)PTR_safefree_001112f0)" (( "(") (pointer_expression "*(code *)PTR_safefree_001112f0" (* "*") (cast_expression "(code *)PTR_safefree_001112f0" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_safefree_001112f0"))) () ")")) (argument_list "(local_90)" (( "(") (identifier "local_90") () ")"))) (; ";")) (expression_statement "iVar9 = local_88;" (assignment_expression "iVar9 = local_88" (identifier "iVar9") (= "=") (identifier "local_88")) (; ";")) (expression_statement "(*(code *)PTR_safefree_001112f0)();" (call_expression "(*(code *)PTR_safefree_001112f0)()" (parenthesized_expression "(*(code *)PTR_safefree_001112f0)" (( "(") (pointer_expression "*(code *)PTR_safefree_001112f0" (* "*") (cast_expression "(code *)PTR_safefree_001112f0" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_safefree_001112f0"))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (if_statement "if (local_2c == *(int *)puVar26) {\n    return;\n  }" (if "if") (parenthesized_expression "(local_2c == *(int *)puVar26)" (( "(") (binary_expression "local_2c == *(int *)puVar26" (identifier "local_2c") (== "==") (pointer_expression "*(int *)puVar26" (* "*") (cast_expression "(int *)puVar26" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar26")))) () ")")) (compound_statement "{\n    return;\n  }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "puVar26 = PTR___stack_chk_fail_001122c8;" (assignment_expression "puVar26 = PTR___stack_chk_fail_001122c8" (identifier "puVar26") (= "=") (identifier "PTR___stack_chk_fail_001122c8")) (; ";")) (expression_statement "(*(code *)PTR___stack_chk_fail_001122c8)();" (call_expression "(*(code *)PTR___stack_chk_fail_001122c8)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_001122c8)" (( "(") (pointer_expression "*(code *)PTR___stack_chk_fail_001122c8" (* "*") (cast_expression "(code *)PTR___stack_chk_fail_001122c8" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_fail_001122c8"))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "iVar21 = 1;" (assignment_expression "iVar21 = 1" (identifier "iVar21") (= "=") (number_literal "1")) (; ";")) (if_statement "if (iVar19 < 0) {\n    iVar21 = -1;\n    iVar19 = -iVar19;\n  }" (if "if") (parenthesized_expression "(iVar19 < 0)" (( "(") (binary_expression "iVar19 < 0" (identifier "iVar19") (< "<") (number_literal "0")) () ")")) (compound_statement "{\n    iVar21 = -1;\n    iVar19 = -iVar19;\n  }" ({ "{") (expression_statement "iVar21 = -1;" (assignment_expression "iVar21 = -1" (identifier "iVar21") (= "=") (number_literal "-1")) (; ";")) (expression_statement "iVar19 = -iVar19;" (assignment_expression "iVar19 = -iVar19" (identifier "iVar19") (= "=") (unary_expression "-iVar19" (- "-") (identifier "iVar19"))) (; ";")) (} "}"))) (expression_statement "iVar18 = *(int *)(iVar9 + 300);" (assignment_expression "iVar18 = *(int *)(iVar9 + 300)" (identifier "iVar18") (= "=") (pointer_expression "*(int *)(iVar9 + 300)" (* "*") (cast_expression "(int *)(iVar9 + 300)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar9 + 300)" (( "(") (binary_expression "iVar9 + 300" (identifier "iVar9") (+ "+") (number_literal "300")) () ")"))))) (; ";")) (expression_statement "iVar10 = *(int *)(iVar9 + 0x70);" (assignment_expression "iVar10 = *(int *)(iVar9 + 0x70)" (identifier "iVar10") (= "=") (pointer_expression "*(int *)(iVar9 + 0x70)" (* "*") (cast_expression "(int *)(iVar9 + 0x70)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar9 + 0x70)" (( "(") (binary_expression "iVar9 + 0x70" (identifier "iVar9") (+ "+") (number_literal "0x70")) () ")"))))) (; ";")) (expression_statement "iVar12 = *(int *)(iVar9 + 0x6c);" (assignment_expression "iVar12 = *(int *)(iVar9 + 0x6c)" (identifier "iVar12") (= "=") (pointer_expression "*(int *)(iVar9 + 0x6c)" (* "*") (cast_expression "(int *)(iVar9 + 0x6c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar9 + 0x6c)" (( "(") (binary_expression "iVar9 + 0x6c" (identifier "iVar9") (+ "+") (number_literal "0x6c")) () ")"))))) (; ";")) (expression_statement "iVar6 = *(int *)(iVar9 + 0xe5c);" (assignment_expression "iVar6 = *(int *)(iVar9 + 0xe5c)" (identifier "iVar6") (= "=") (pointer_expression "*(int *)(iVar9 + 0xe5c)" (* "*") (cast_expression "(int *)(iVar9 + 0xe5c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar9 + 0xe5c)" (( "(") (binary_expression "iVar9 + 0xe5c" (identifier "iVar9") (+ "+") (number_literal "0xe5c")) () ")"))))) (; ";")) (expression_statement "iVar24 = iVar18 - iVar10;" (assignment_expression "iVar24 = iVar18 - iVar10" (identifier "iVar24") (= "=") (binary_expression "iVar18 - iVar10" (identifier "iVar18") (- "-") (identifier "iVar10"))) (; ";")) (if_statement "if (iVar24 <= iVar19) {\n    iVar19 = iVar24;\n  }" (if "if") (parenthesized_expression "(iVar24 <= iVar19)" (( "(") (binary_expression "iVar24 <= iVar19" (identifier "iVar24") (<= "<=") (identifier "iVar19")) () ")")) (compound_statement "{\n    iVar19 = iVar24;\n  }" ({ "{") (expression_statement "iVar19 = iVar24;" (assignment_expression "iVar19 = iVar24" (identifier "iVar19") (= "=") (identifier "iVar24")) (; ";")) (} "}"))) (expression_statement "iVar24 = iVar24 - iVar19;" (assignment_expression "iVar24 = iVar24 - iVar19" (identifier "iVar24") (= "=") (binary_expression "iVar24 - iVar19" (identifier "iVar24") (- "-") (identifier "iVar19"))) (; ";")) (if_statement "if (((iVar6 <= iVar12) && ((iVar12 != iVar6 || (*(int *)(iVar9 + 0xe60) <= iVar10)))) ||\n     ((iVar14 = *(int *)(iVar9 + 0xe54), iVar12 <= iVar14 &&\n      ((iVar12 != iVar14 || (iVar18 <= *(int *)(iVar9 + 0xe58))))))) goto LAB_00094c48;" (if "if") (parenthesized_expression "(((iVar6 <= iVar12) && ((iVar12 != iVar6 || (*(int *)(iVar9 + 0xe60) <= iVar10)))) ||\n     ((iVar14 = *(int *)(iVar9 + 0xe54), iVar12 <= iVar14 &&\n      ((iVar12 != iVar14 || (iVar18 <= *(int *)(iVar9 + 0xe58)))))))" (( "(") (binary_expression "((iVar6 <= iVar12) && ((iVar12 != iVar6 || (*(int *)(iVar9 + 0xe60) <= iVar10)))) ||\n     ((iVar14 = *(int *)(iVar9 + 0xe54), iVar12 <= iVar14 &&\n      ((iVar12 != iVar14 || (iVar18 <= *(int *)(iVar9 + 0xe58))))))" (parenthesized_expression "((iVar6 <= iVar12) && ((iVar12 != iVar6 || (*(int *)(iVar9 + 0xe60) <= iVar10))))" (( "(") (binary_expression "(iVar6 <= iVar12) && ((iVar12 != iVar6 || (*(int *)(iVar9 + 0xe60) <= iVar10)))" (parenthesized_expression "(iVar6 <= iVar12)" (( "(") (binary_expression "iVar6 <= iVar12" (identifier "iVar6") (<= "<=") (identifier "iVar12")) () ")")) (&& "&&") (parenthesized_expression "((iVar12 != iVar6 || (*(int *)(iVar9 + 0xe60) <= iVar10)))" (( "(") (parenthesized_expression "(iVar12 != iVar6 || (*(int *)(iVar9 + 0xe60) <= iVar10))" (( "(") (binary_expression "iVar12 != iVar6 || (*(int *)(iVar9 + 0xe60) <= iVar10)" (binary_expression "iVar12 != iVar6" (identifier "iVar12") (!= "!=") (identifier "iVar6")) (|| "||") (parenthesized_expression "(*(int *)(iVar9 + 0xe60) <= iVar10)" (( "(") (binary_expression "*(int *)(iVar9 + 0xe60) <= iVar10" (pointer_expression "*(int *)(iVar9 + 0xe60)" (* "*") (cast_expression "(int *)(iVar9 + 0xe60)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar9 + 0xe60)" (( "(") (binary_expression "iVar9 + 0xe60" (identifier "iVar9") (+ "+") (number_literal "0xe60")) () ")")))) (<= "<=") (identifier "iVar10")) () ")"))) () ")")) () ")"))) () ")")) (|| "||") (parenthesized_expression "((iVar14 = *(int *)(iVar9 + 0xe54), iVar12 <= iVar14 &&\n      ((iVar12 != iVar14 || (iVar18 <= *(int *)(iVar9 + 0xe58))))))" (( "(") (parenthesized_expression "(iVar14 = *(int *)(iVar9 + 0xe54), iVar12 <= iVar14 &&\n      ((iVar12 != iVar14 || (iVar18 <= *(int *)(iVar9 + 0xe58)))))" (( "(") (comma_expression "iVar14 = *(int *)(iVar9 + 0xe54), iVar12 <= iVar14 &&\n      ((iVar12 != iVar14 || (iVar18 <= *(int *)(iVar9 + 0xe58))))" (assignment_expression "iVar14 = *(int *)(iVar9 + 0xe54)" (identifier "iVar14") (= "=") (pointer_expression "*(int *)(iVar9 + 0xe54)" (* "*") (cast_expression "(int *)(iVar9 + 0xe54)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar9 + 0xe54)" (( "(") (binary_expression "iVar9 + 0xe54" (identifier "iVar9") (+ "+") (number_literal "0xe54")) () ")"))))) (, ",") (binary_expression "iVar12 <= iVar14 &&\n      ((iVar12 != iVar14 || (iVar18 <= *(int *)(iVar9 + 0xe58))))" (binary_expression "iVar12 <= iVar14" (identifier "iVar12") (<= "<=") (identifier "iVar14")) (&& "&&") (parenthesized_expression "((iVar12 != iVar14 || (iVar18 <= *(int *)(iVar9 + 0xe58))))" (( "(") (parenthesized_expression "(iVar12 != iVar14 || (iVar18 <= *(int *)(iVar9 + 0xe58)))" (( "(") (binary_expression "iVar12 != iVar14 || (iVar18 <= *(int *)(iVar9 + 0xe58))" (binary_expression "iVar12 != iVar14" (identifier "iVar12") (!= "!=") (identifier "iVar14")) (|| "||") (parenthesized_expression "(iVar18 <= *(int *)(iVar9 + 0xe58))" (( "(") (binary_expression "iVar18 <= *(int *)(iVar9 + 0xe58)" (identifier "iVar18") (<= "<=") (pointer_expression "*(int *)(iVar9 + 0xe58)" (* "*") (cast_expression "(int *)(iVar9 + 0xe58)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar9 + 0xe58)" (( "(") (binary_expression "iVar9 + 0xe58" (identifier "iVar9") (+ "+") (number_literal "0xe58")) () ")"))))) () ")"))) () ")")) () ")")))) () ")")) () ")"))) () ")")) (goto_statement "goto LAB_00094c48;" (goto "goto") (statement_identifier "LAB_00094c48") (; ";"))) (expression_statement "iVar17 = iVar10 + iVar19;" (assignment_expression "iVar17 = iVar10 + iVar19" (identifier "iVar17") (= "=") (binary_expression "iVar10 + iVar19" (identifier "iVar10") (+ "+") (identifier "iVar19"))) (; ";")) (expression_statement "iVar15 = iVar18;" (assignment_expression "iVar15 = iVar18" (identifier "iVar15") (= "=") (identifier "iVar18")) (; ";")) (if_statement "if (iVar21 == 1) {\n    iVar15 = iVar18 - iVar19;\n    iVar17 = iVar10;\n  }" (if "if") (parenthesized_expression "(iVar21 == 1)" (( "(") (binary_expression "iVar21 == 1" (identifier "iVar21") (== "==") (number_literal "1")) () ")")) (compound_statement "{\n    iVar15 = iVar18 - iVar19;\n    iVar17 = iVar10;\n  }" ({ "{") (expression_statement "iVar15 = iVar18 - iVar19;" (assignment_expression "iVar15 = iVar18 - iVar19" (identifier "iVar15") (= "=") (binary_expression "iVar18 - iVar19" (identifier "iVar18") (- "-") (identifier "iVar19"))) (; ";")) (expression_statement "iVar17 = iVar10;" (assignment_expression "iVar17 = iVar10" (identifier "iVar17") (= "=") (identifier "iVar10")) (; ";")) (} "}"))) (if_statement "if ((iVar12 < iVar14) || ((iVar12 == iVar14 && (iVar17 <= *(int *)(iVar9 + 0xe58))))) {\n    if (iVar6 < iVar12) {\n      iVar6 = *(int *)(iVar9 + 0xe60);\n    }\n    else if ((iVar12 != iVar6) || (iVar6 = *(int *)(iVar9 + 0xe60), iVar15 < iVar6))\n    goto LAB_00094e08;\n    iVar14 = iVar21 * iVar19 + *(int *)(iVar9 + 0xe58);\n    iVar6 = iVar21 * iVar19 + iVar6;\n    *(int *)(iVar9 + 0xe58) = iVar14;\n    *(int *)(iVar9 + 0xe60) = iVar6;\n    if (iVar14 < iVar10) {\n      (**(code **)(puVar26 + 0x7d398))\n                (*(int *)(puVar26 + 0x7c740) + 0x5a20,*(int *)(puVar26 + 0x7c740) + 0x5830,0x9dd,\n                 *(int *)(puVar26 + 0x7c740) + 0x6200);\n      return;\n    }\n    if (iVar18 <= iVar14) {\n      (**(code **)(puVar26 + 0x7d398))\n                (*(int *)(puVar26 + 0x7c740) + 0x5a44,*(int *)(puVar26 + 0x7c740) + 0x5830,0x9de,\n                 *(int *)(puVar26 + 0x7c740) + 0x6200);\n      return;\n    }\n    if (iVar6 <= iVar10) {\n      (**(code **)(puVar26 + 0x7d398))\n                (*(int *)(puVar26 + 0x7c740) + 0x5a64,*(int *)(puVar26 + 0x7c740) + 0x5830,0x9df,\n                 *(int *)(puVar26 + 0x7c740) + 0x6200);\n      return;\n    }\n    if (iVar18 < iVar6) {\n      (**(code **)(puVar26 + 0x7d398))\n                (*(int *)(puVar26 + 0x7c740) + 0x5a84,*(int *)(puVar26 + 0x7c740) + 0x5830,0x9e0,\n                 *(int *)(puVar26 + 0x7c740) + 0x6200);\n      return;\n    }\n  }\n  else {\nLAB_00094e08:\n    *(undefined4 *)(iVar9 + 0xe48) = 0;\n    *(undefined4 *)(iVar9 + 0xe5c) = 0;\n    *(undefined4 *)(iVar9 + 0xe60) = 0;\n    *(undefined4 *)(iVar9 + 0xe54) = 0;\n    *(undefined4 *)(iVar9 + 0xe58) = 0;\n  }" (if "if") (parenthesized_expression "((iVar12 < iVar14) || ((iVar12 == iVar14 && (iVar17 <= *(int *)(iVar9 + 0xe58)))))" (( "(") (binary_expression "(iVar12 < iVar14) || ((iVar12 == iVar14 && (iVar17 <= *(int *)(iVar9 + 0xe58))))" (parenthesized_expression "(iVar12 < iVar14)" (( "(") (binary_expression "iVar12 < iVar14" (identifier "iVar12") (< "<") (identifier "iVar14")) () ")")) (|| "||") (parenthesized_expression "((iVar12 == iVar14 && (iVar17 <= *(int *)(iVar9 + 0xe58))))" (( "(") (parenthesized_expression "(iVar12 == iVar14 && (iVar17 <= *(int *)(iVar9 + 0xe58)))" (( "(") (binary_expression "iVar12 == iVar14 && (iVar17 <= *(int *)(iVar9 + 0xe58))" (binary_expression "iVar12 == iVar14" (identifier "iVar12") (== "==") (identifier "iVar14")) (&& "&&") (parenthesized_expression "(iVar17 <= *(int *)(iVar9 + 0xe58))" (( "(") (binary_expression "iVar17 <= *(int *)(iVar9 + 0xe58)" (identifier "iVar17") (<= "<=") (pointer_expression "*(int *)(iVar9 + 0xe58)" (* "*") (cast_expression "(int *)(iVar9 + 0xe58)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar9 + 0xe58)" (( "(") (binary_expression "iVar9 + 0xe58" (identifier "iVar9") (+ "+") (number_literal "0xe58")) () ")"))))) () ")"))) () ")")) () ")"))) () ")")) (compound_statement "{\n    if (iVar6 < iVar12) {\n      iVar6 = *(int *)(iVar9 + 0xe60);\n    }\n    else if ((iVar12 != iVar6) || (iVar6 = *(int *)(iVar9 + 0xe60), iVar15 < iVar6))\n    goto LAB_00094e08;\n    iVar14 = iVar21 * iVar19 + *(int *)(iVar9 + 0xe58);\n    iVar6 = iVar21 * iVar19 + iVar6;\n    *(int *)(iVar9 + 0xe58) = iVar14;\n    *(int *)(iVar9 + 0xe60) = iVar6;\n    if (iVar14 < iVar10) {\n      (**(code **)(puVar26 + 0x7d398))\n                (*(int *)(puVar26 + 0x7c740) + 0x5a20,*(int *)(puVar26 + 0x7c740) + 0x5830,0x9dd,\n                 *(int *)(puVar26 + 0x7c740) + 0x6200);\n      return;\n    }\n    if (iVar18 <= iVar14) {\n      (**(code **)(puVar26 + 0x7d398))\n                (*(int *)(puVar26 + 0x7c740) + 0x5a44,*(int *)(puVar26 + 0x7c740) + 0x5830,0x9de,\n                 *(int *)(puVar26 + 0x7c740) + 0x6200);\n      return;\n    }\n    if (iVar6 <= iVar10) {\n      (**(code **)(puVar26 + 0x7d398))\n                (*(int *)(puVar26 + 0x7c740) + 0x5a64,*(int *)(puVar26 + 0x7c740) + 0x5830,0x9df,\n                 *(int *)(puVar26 + 0x7c740) + 0x6200);\n      return;\n    }\n    if (iVar18 < iVar6) {\n      (**(code **)(puVar26 + 0x7d398))\n                (*(int *)(puVar26 + 0x7c740) + 0x5a84,*(int *)(puVar26 + 0x7c740) + 0x5830,0x9e0,\n                 *(int *)(puVar26 + 0x7c740) + 0x6200);\n      return;\n    }\n  }" ({ "{") (if_statement "if (iVar6 < iVar12) {\n      iVar6 = *(int *)(iVar9 + 0xe60);\n    }\n    else if ((iVar12 != iVar6) || (iVar6 = *(int *)(iVar9 + 0xe60), iVar15 < iVar6))\n    goto LAB_00094e08;" (if "if") (parenthesized_expression "(iVar6 < iVar12)" (( "(") (binary_expression "iVar6 < iVar12" (identifier "iVar6") (< "<") (identifier "iVar12")) () ")")) (compound_statement "{\n      iVar6 = *(int *)(iVar9 + 0xe60);\n    }" ({ "{") (expression_statement "iVar6 = *(int *)(iVar9 + 0xe60);" (assignment_expression "iVar6 = *(int *)(iVar9 + 0xe60)" (identifier "iVar6") (= "=") (pointer_expression "*(int *)(iVar9 + 0xe60)" (* "*") (cast_expression "(int *)(iVar9 + 0xe60)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar9 + 0xe60)" (( "(") (binary_expression "iVar9 + 0xe60" (identifier "iVar9") (+ "+") (number_literal "0xe60")) () ")"))))) (; ";")) (} "}")) (else_clause "else if ((iVar12 != iVar6) || (iVar6 = *(int *)(iVar9 + 0xe60), iVar15 < iVar6))\n    goto LAB_00094e08;" (else "else") (if_statement "if ((iVar12 != iVar6) || (iVar6 = *(int *)(iVar9 + 0xe60), iVar15 < iVar6))\n    goto LAB_00094e08;" (if "if") (parenthesized_expression "((iVar12 != iVar6) || (iVar6 = *(int *)(iVar9 + 0xe60), iVar15 < iVar6))" (( "(") (binary_expression "(iVar12 != iVar6) || (iVar6 = *(int *)(iVar9 + 0xe60), iVar15 < iVar6)" (parenthesized_expression "(iVar12 != iVar6)" (( "(") (binary_expression "iVar12 != iVar6" (identifier "iVar12") (!= "!=") (identifier "iVar6")) () ")")) (|| "||") (parenthesized_expression "(iVar6 = *(int *)(iVar9 + 0xe60), iVar15 < iVar6)" (( "(") (comma_expression "iVar6 = *(int *)(iVar9 + 0xe60), iVar15 < iVar6" (assignment_expression "iVar6 = *(int *)(iVar9 + 0xe60)" (identifier "iVar6") (= "=") (pointer_expression "*(int *)(iVar9 + 0xe60)" (* "*") (cast_expression "(int *)(iVar9 + 0xe60)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar9 + 0xe60)" (( "(") (binary_expression "iVar9 + 0xe60" (identifier "iVar9") (+ "+") (number_literal "0xe60")) () ")"))))) (, ",") (binary_expression "iVar15 < iVar6" (identifier "iVar15") (< "<") (identifier "iVar6"))) () ")"))) () ")")) (goto_statement "goto LAB_00094e08;" (goto "goto") (statement_identifier "LAB_00094e08") (; ";"))))) (expression_statement "iVar14 = iVar21 * iVar19 + *(int *)(iVar9 + 0xe58);" (assignment_expression "iVar14 = iVar21 * iVar19 + *(int *)(iVar9 + 0xe58)" (identifier "iVar14") (= "=") (binary_expression "iVar21 * iVar19 + *(int *)(iVar9 + 0xe58)" (binary_expression "iVar21 * iVar19" (identifier "iVar21") (* "*") (identifier "iVar19")) (+ "+") (pointer_expression "*(int *)(iVar9 + 0xe58)" (* "*") (cast_expression "(int *)(iVar9 + 0xe58)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar9 + 0xe58)" (( "(") (binary_expression "iVar9 + 0xe58" (identifier "iVar9") (+ "+") (number_literal "0xe58")) () ")")))))) (; ";")) (expression_statement "iVar6 = iVar21 * iVar19 + iVar6;" (assignment_expression "iVar6 = iVar21 * iVar19 + iVar6" (identifier "iVar6") (= "=") (binary_expression "iVar21 * iVar19 + iVar6" (binary_expression "iVar21 * iVar19" (identifier "iVar21") (* "*") (identifier "iVar19")) (+ "+") (identifier "iVar6"))) (; ";")) (expression_statement "*(int *)(iVar9 + 0xe58) = iVar14;" (assignment_expression "*(int *)(iVar9 + 0xe58) = iVar14" (pointer_expression "*(int *)(iVar9 + 0xe58)" (* "*") (cast_expression "(int *)(iVar9 + 0xe58)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar9 + 0xe58)" (( "(") (binary_expression "iVar9 + 0xe58" (identifier "iVar9") (+ "+") (number_literal "0xe58")) () ")")))) (= "=") (identifier "iVar14")) (; ";")) (expression_statement "*(int *)(iVar9 + 0xe60) = iVar6;" (assignment_expression "*(int *)(iVar9 + 0xe60) = iVar6" (pointer_expression "*(int *)(iVar9 + 0xe60)" (* "*") (cast_expression "(int *)(iVar9 + 0xe60)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar9 + 0xe60)" (( "(") (binary_expression "iVar9 + 0xe60" (identifier "iVar9") (+ "+") (number_literal "0xe60")) () ")")))) (= "=") (identifier "iVar6")) (; ";")) (if_statement "if (iVar14 < iVar10) {\n      (**(code **)(puVar26 + 0x7d398))\n                (*(int *)(puVar26 + 0x7c740) + 0x5a20,*(int *)(puVar26 + 0x7c740) + 0x5830,0x9dd,\n                 *(int *)(puVar26 + 0x7c740) + 0x6200);\n      return;\n    }" (if "if") (parenthesized_expression "(iVar14 < iVar10)" (( "(") (binary_expression "iVar14 < iVar10" (identifier "iVar14") (< "<") (identifier "iVar10")) () ")")) (compound_statement "{\n      (**(code **)(puVar26 + 0x7d398))\n                (*(int *)(puVar26 + 0x7c740) + 0x5a20,*(int *)(puVar26 + 0x7c740) + 0x5830,0x9dd,\n                 *(int *)(puVar26 + 0x7c740) + 0x6200);\n      return;\n    }" ({ "{") (expression_statement "(**(code **)(puVar26 + 0x7d398))\n                (*(int *)(puVar26 + 0x7c740) + 0x5a20,*(int *)(puVar26 + 0x7c740) + 0x5830,0x9dd,\n                 *(int *)(puVar26 + 0x7c740) + 0x6200);" (call_expression "(**(code **)(puVar26 + 0x7d398))\n                (*(int *)(puVar26 + 0x7c740) + 0x5a20,*(int *)(puVar26 + 0x7c740) + 0x5830,0x9dd,\n                 *(int *)(puVar26 + 0x7c740) + 0x6200)" (parenthesized_expression "(**(code **)(puVar26 + 0x7d398))" (( "(") (pointer_expression "**(code **)(puVar26 + 0x7d398)" (* "*") (pointer_expression "*(code **)(puVar26 + 0x7d398)" (* "*") (cast_expression "(code **)(puVar26 + 0x7d398)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar26 + 0x7d398)" (( "(") (binary_expression "puVar26 + 0x7d398" (identifier "puVar26") (+ "+") (number_literal "0x7d398")) () ")"))))) () ")")) (argument_list "(*(int *)(puVar26 + 0x7c740) + 0x5a20,*(int *)(puVar26 + 0x7c740) + 0x5830,0x9dd,\n                 *(int *)(puVar26 + 0x7c740) + 0x6200)" (( "(") (binary_expression "*(int *)(puVar26 + 0x7c740) + 0x5a20" (pointer_expression "*(int *)(puVar26 + 0x7c740)" (* "*") (cast_expression "(int *)(puVar26 + 0x7c740)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar26 + 0x7c740)" (( "(") (binary_expression "puVar26 + 0x7c740" (identifier "puVar26") (+ "+") (number_literal "0x7c740")) () ")")))) (+ "+") (number_literal "0x5a20")) (, ",") (binary_expression "*(int *)(puVar26 + 0x7c740) + 0x5830" (pointer_expression "*(int *)(puVar26 + 0x7c740)" (* "*") (cast_expression "(int *)(puVar26 + 0x7c740)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar26 + 0x7c740)" (( "(") (binary_expression "puVar26 + 0x7c740" (identifier "puVar26") (+ "+") (number_literal "0x7c740")) () ")")))) (+ "+") (number_literal "0x5830")) (, ",") (number_literal "0x9dd") (, ",") (binary_expression "*(int *)(puVar26 + 0x7c740) + 0x6200" (pointer_expression "*(int *)(puVar26 + 0x7c740)" (* "*") (cast_expression "(int *)(puVar26 + 0x7c740)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar26 + 0x7c740)" (( "(") (binary_expression "puVar26 + 0x7c740" (identifier "puVar26") (+ "+") (number_literal "0x7c740")) () ")")))) (+ "+") (number_literal "0x6200")) () ")"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (if_statement "if (iVar18 <= iVar14) {\n      (**(code **)(puVar26 + 0x7d398))\n                (*(int *)(puVar26 + 0x7c740) + 0x5a44,*(int *)(puVar26 + 0x7c740) + 0x5830,0x9de,\n                 *(int *)(puVar26 + 0x7c740) + 0x6200);\n      return;\n    }" (if "if") (parenthesized_expression "(iVar18 <= iVar14)" (( "(") (binary_expression "iVar18 <= iVar14" (identifier "iVar18") (<= "<=") (identifier "iVar14")) () ")")) (compound_statement "{\n      (**(code **)(puVar26 + 0x7d398))\n                (*(int *)(puVar26 + 0x7c740) + 0x5a44,*(int *)(puVar26 + 0x7c740) + 0x5830,0x9de,\n                 *(int *)(puVar26 + 0x7c740) + 0x6200);\n      return;\n    }" ({ "{") (expression_statement "(**(code **)(puVar26 + 0x7d398))\n                (*(int *)(puVar26 + 0x7c740) + 0x5a44,*(int *)(puVar26 + 0x7c740) + 0x5830,0x9de,\n                 *(int *)(puVar26 + 0x7c740) + 0x6200);" (call_expression "(**(code **)(puVar26 + 0x7d398))\n                (*(int *)(puVar26 + 0x7c740) + 0x5a44,*(int *)(puVar26 + 0x7c740) + 0x5830,0x9de,\n                 *(int *)(puVar26 + 0x7c740) + 0x6200)" (parenthesized_expression "(**(code **)(puVar26 + 0x7d398))" (( "(") (pointer_expression "**(code **)(puVar26 + 0x7d398)" (* "*") (pointer_expression "*(code **)(puVar26 + 0x7d398)" (* "*") (cast_expression "(code **)(puVar26 + 0x7d398)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar26 + 0x7d398)" (( "(") (binary_expression "puVar26 + 0x7d398" (identifier "puVar26") (+ "+") (number_literal "0x7d398")) () ")"))))) () ")")) (argument_list "(*(int *)(puVar26 + 0x7c740) + 0x5a44,*(int *)(puVar26 + 0x7c740) + 0x5830,0x9de,\n                 *(int *)(puVar26 + 0x7c740) + 0x6200)" (( "(") (binary_expression "*(int *)(puVar26 + 0x7c740) + 0x5a44" (pointer_expression "*(int *)(puVar26 + 0x7c740)" (* "*") (cast_expression "(int *)(puVar26 + 0x7c740)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar26 + 0x7c740)" (( "(") (binary_expression "puVar26 + 0x7c740" (identifier "puVar26") (+ "+") (number_literal "0x7c740")) () ")")))) (+ "+") (number_literal "0x5a44")) (, ",") (binary_expression "*(int *)(puVar26 + 0x7c740) + 0x5830" (pointer_expression "*(int *)(puVar26 + 0x7c740)" (* "*") (cast_expression "(int *)(puVar26 + 0x7c740)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar26 + 0x7c740)" (( "(") (binary_expression "puVar26 + 0x7c740" (identifier "puVar26") (+ "+") (number_literal "0x7c740")) () ")")))) (+ "+") (number_literal "0x5830")) (, ",") (number_literal "0x9de") (, ",") (binary_expression "*(int *)(puVar26 + 0x7c740) + 0x6200" (pointer_expression "*(int *)(puVar26 + 0x7c740)" (* "*") (cast_expression "(int *)(puVar26 + 0x7c740)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar26 + 0x7c740)" (( "(") (binary_expression "puVar26 + 0x7c740" (identifier "puVar26") (+ "+") (number_literal "0x7c740")) () ")")))) (+ "+") (number_literal "0x6200")) () ")"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (if_statement "if (iVar6 <= iVar10) {\n      (**(code **)(puVar26 + 0x7d398))\n                (*(int *)(puVar26 + 0x7c740) + 0x5a64,*(int *)(puVar26 + 0x7c740) + 0x5830,0x9df,\n                 *(int *)(puVar26 + 0x7c740) + 0x6200);\n      return;\n    }" (if "if") (parenthesized_expression "(iVar6 <= iVar10)" (( "(") (binary_expression "iVar6 <= iVar10" (identifier "iVar6") (<= "<=") (identifier "iVar10")) () ")")) (compound_statement "{\n      (**(code **)(puVar26 + 0x7d398))\n                (*(int *)(puVar26 + 0x7c740) + 0x5a64,*(int *)(puVar26 + 0x7c740) + 0x5830,0x9df,\n                 *(int *)(puVar26 + 0x7c740) + 0x6200);\n      return;\n    }" ({ "{") (expression_statement "(**(code **)(puVar26 + 0x7d398))\n                (*(int *)(puVar26 + 0x7c740) + 0x5a64,*(int *)(puVar26 + 0x7c740) + 0x5830,0x9df,\n                 *(int *)(puVar26 + 0x7c740) + 0x6200);" (call_expression "(**(code **)(puVar26 + 0x7d398))\n                (*(int *)(puVar26 + 0x7c740) + 0x5a64,*(int *)(puVar26 + 0x7c740) + 0x5830,0x9df,\n                 *(int *)(puVar26 + 0x7c740) + 0x6200)" (parenthesized_expression "(**(code **)(puVar26 + 0x7d398))" (( "(") (pointer_expression "**(code **)(puVar26 + 0x7d398)" (* "*") (pointer_expression "*(code **)(puVar26 + 0x7d398)" (* "*") (cast_expression "(code **)(puVar26 + 0x7d398)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar26 + 0x7d398)" (( "(") (binary_expression "puVar26 + 0x7d398" (identifier "puVar26") (+ "+") (number_literal "0x7d398")) () ")"))))) () ")")) (argument_list "(*(int *)(puVar26 + 0x7c740) + 0x5a64,*(int *)(puVar26 + 0x7c740) + 0x5830,0x9df,\n                 *(int *)(puVar26 + 0x7c740) + 0x6200)" (( "(") (binary_expression "*(int *)(puVar26 + 0x7c740) + 0x5a64" (pointer_expression "*(int *)(puVar26 + 0x7c740)" (* "*") (cast_expression "(int *)(puVar26 + 0x7c740)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar26 + 0x7c740)" (( "(") (binary_expression "puVar26 + 0x7c740" (identifier "puVar26") (+ "+") (number_literal "0x7c740")) () ")")))) (+ "+") (number_literal "0x5a64")) (, ",") (binary_expression "*(int *)(puVar26 + 0x7c740) + 0x5830" (pointer_expression "*(int *)(puVar26 + 0x7c740)" (* "*") (cast_expression "(int *)(puVar26 + 0x7c740)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar26 + 0x7c740)" (( "(") (binary_expression "puVar26 + 0x7c740" (identifier "puVar26") (+ "+") (number_literal "0x7c740")) () ")")))) (+ "+") (number_literal "0x5830")) (, ",") (number_literal "0x9df") (, ",") (binary_expression "*(int *)(puVar26 + 0x7c740) + 0x6200" (pointer_expression "*(int *)(puVar26 + 0x7c740)" (* "*") (cast_expression "(int *)(puVar26 + 0x7c740)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar26 + 0x7c740)" (( "(") (binary_expression "puVar26 + 0x7c740" (identifier "puVar26") (+ "+") (number_literal "0x7c740")) () ")")))) (+ "+") (number_literal "0x6200")) () ")"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (if_statement "if (iVar18 < iVar6) {\n      (**(code **)(puVar26 + 0x7d398))\n                (*(int *)(puVar26 + 0x7c740) + 0x5a84,*(int *)(puVar26 + 0x7c740) + 0x5830,0x9e0,\n                 *(int *)(puVar26 + 0x7c740) + 0x6200);\n      return;\n    }" (if "if") (parenthesized_expression "(iVar18 < iVar6)" (( "(") (binary_expression "iVar18 < iVar6" (identifier "iVar18") (< "<") (identifier "iVar6")) () ")")) (compound_statement "{\n      (**(code **)(puVar26 + 0x7d398))\n                (*(int *)(puVar26 + 0x7c740) + 0x5a84,*(int *)(puVar26 + 0x7c740) + 0x5830,0x9e0,\n                 *(int *)(puVar26 + 0x7c740) + 0x6200);\n      return;\n    }" ({ "{") (expression_statement "(**(code **)(puVar26 + 0x7d398))\n                (*(int *)(puVar26 + 0x7c740) + 0x5a84,*(int *)(puVar26 + 0x7c740) + 0x5830,0x9e0,\n                 *(int *)(puVar26 + 0x7c740) + 0x6200);" (call_expression "(**(code **)(puVar26 + 0x7d398))\n                (*(int *)(puVar26 + 0x7c740) + 0x5a84,*(int *)(puVar26 + 0x7c740) + 0x5830,0x9e0,\n                 *(int *)(puVar26 + 0x7c740) + 0x6200)" (parenthesized_expression "(**(code **)(puVar26 + 0x7d398))" (( "(") (pointer_expression "**(code **)(puVar26 + 0x7d398)" (* "*") (pointer_expression "*(code **)(puVar26 + 0x7d398)" (* "*") (cast_expression "(code **)(puVar26 + 0x7d398)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar26 + 0x7d398)" (( "(") (binary_expression "puVar26 + 0x7d398" (identifier "puVar26") (+ "+") (number_literal "0x7d398")) () ")"))))) () ")")) (argument_list "(*(int *)(puVar26 + 0x7c740) + 0x5a84,*(int *)(puVar26 + 0x7c740) + 0x5830,0x9e0,\n                 *(int *)(puVar26 + 0x7c740) + 0x6200)" (( "(") (binary_expression "*(int *)(puVar26 + 0x7c740) + 0x5a84" (pointer_expression "*(int *)(puVar26 + 0x7c740)" (* "*") (cast_expression "(int *)(puVar26 + 0x7c740)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar26 + 0x7c740)" (( "(") (binary_expression "puVar26 + 0x7c740" (identifier "puVar26") (+ "+") (number_literal "0x7c740")) () ")")))) (+ "+") (number_literal "0x5a84")) (, ",") (binary_expression "*(int *)(puVar26 + 0x7c740) + 0x5830" (pointer_expression "*(int *)(puVar26 + 0x7c740)" (* "*") (cast_expression "(int *)(puVar26 + 0x7c740)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar26 + 0x7c740)" (( "(") (binary_expression "puVar26 + 0x7c740" (identifier "puVar26") (+ "+") (number_literal "0x7c740")) () ")")))) (+ "+") (number_literal "0x5830")) (, ",") (number_literal "0x9e0") (, ",") (binary_expression "*(int *)(puVar26 + 0x7c740) + 0x6200" (pointer_expression "*(int *)(puVar26 + 0x7c740)" (* "*") (cast_expression "(int *)(puVar26 + 0x7c740)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar26 + 0x7c740)" (( "(") (binary_expression "puVar26 + 0x7c740" (identifier "puVar26") (+ "+") (number_literal "0x7c740")) () ")")))) (+ "+") (number_literal "0x6200")) () ")"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (} "}")) (else_clause "else {\nLAB_00094e08:\n    *(undefined4 *)(iVar9 + 0xe48) = 0;\n    *(undefined4 *)(iVar9 + 0xe5c) = 0;\n    *(undefined4 *)(iVar9 + 0xe60) = 0;\n    *(undefined4 *)(iVar9 + 0xe54) = 0;\n    *(undefined4 *)(iVar9 + 0xe58) = 0;\n  }" (else "else") (compound_statement "{\nLAB_00094e08:\n    *(undefined4 *)(iVar9 + 0xe48) = 0;\n    *(undefined4 *)(iVar9 + 0xe5c) = 0;\n    *(undefined4 *)(iVar9 + 0xe60) = 0;\n    *(undefined4 *)(iVar9 + 0xe54) = 0;\n    *(undefined4 *)(iVar9 + 0xe58) = 0;\n  }" ({ "{") (labeled_statement "LAB_00094e08:\n    *(undefined4 *)(iVar9 + 0xe48) = 0;" (statement_identifier "LAB_00094e08") (: ":") (expression_statement "*(undefined4 *)(iVar9 + 0xe48) = 0;" (assignment_expression "*(undefined4 *)(iVar9 + 0xe48) = 0" (pointer_expression "*(undefined4 *)(iVar9 + 0xe48)" (* "*") (cast_expression "(undefined4 *)(iVar9 + 0xe48)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar9 + 0xe48)" (( "(") (binary_expression "iVar9 + 0xe48" (identifier "iVar9") (+ "+") (number_literal "0xe48")) () ")")))) (= "=") (number_literal "0")) (; ";"))) (expression_statement "*(undefined4 *)(iVar9 + 0xe5c) = 0;" (assignment_expression "*(undefined4 *)(iVar9 + 0xe5c) = 0" (pointer_expression "*(undefined4 *)(iVar9 + 0xe5c)" (* "*") (cast_expression "(undefined4 *)(iVar9 + 0xe5c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar9 + 0xe5c)" (( "(") (binary_expression "iVar9 + 0xe5c" (identifier "iVar9") (+ "+") (number_literal "0xe5c")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 *)(iVar9 + 0xe60) = 0;" (assignment_expression "*(undefined4 *)(iVar9 + 0xe60) = 0" (pointer_expression "*(undefined4 *)(iVar9 + 0xe60)" (* "*") (cast_expression "(undefined4 *)(iVar9 + 0xe60)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar9 + 0xe60)" (( "(") (binary_expression "iVar9 + 0xe60" (identifier "iVar9") (+ "+") (number_literal "0xe60")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 *)(iVar9 + 0xe54) = 0;" (assignment_expression "*(undefined4 *)(iVar9 + 0xe54) = 0" (pointer_expression "*(undefined4 *)(iVar9 + 0xe54)" (* "*") (cast_expression "(undefined4 *)(iVar9 + 0xe54)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar9 + 0xe54)" (( "(") (binary_expression "iVar9 + 0xe54" (identifier "iVar9") (+ "+") (number_literal "0xe54")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 *)(iVar9 + 0xe58) = 0;" (assignment_expression "*(undefined4 *)(iVar9 + 0xe58) = 0" (pointer_expression "*(undefined4 *)(iVar9 + 0xe58)" (* "*") (cast_expression "(undefined4 *)(iVar9 + 0xe58)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar9 + 0xe58)" (( "(") (binary_expression "iVar9 + 0xe58" (identifier "iVar9") (+ "+") (number_literal "0xe58")) () ")")))) (= "=") (number_literal "0")) (; ";")) (} "}")))) (labeled_statement "LAB_00094c48:\n  if ((0 < iVar10) && (iVar10 <= iVar18)) {\n    FUN_00092d1c(iVar9,iVar10,iVar12);\n    iVar12 = *(int *)(iVar9 + 0x6c);\n  }" (statement_identifier "LAB_00094c48") (: ":") (if_statement "if ((0 < iVar10) && (iVar10 <= iVar18)) {\n    FUN_00092d1c(iVar9,iVar10,iVar12);\n    iVar12 = *(int *)(iVar9 + 0x6c);\n  }" (if "if") (parenthesized_expression "((0 < iVar10) && (iVar10 <= iVar18))" (( "(") (binary_expression "(0 < iVar10) && (iVar10 <= iVar18)" (parenthesized_expression "(0 < iVar10)" (( "(") (binary_expression "0 < iVar10" (number_literal "0") (< "<") (identifier "iVar10")) () ")")) (&& "&&") (parenthesized_expression "(iVar10 <= iVar18)" (( "(") (binary_expression "iVar10 <= iVar18" (identifier "iVar10") (<= "<=") (identifier "iVar18")) () ")"))) () ")")) (compound_statement "{\n    FUN_00092d1c(iVar9,iVar10,iVar12);\n    iVar12 = *(int *)(iVar9 + 0x6c);\n  }" ({ "{") (expression_statement "FUN_00092d1c(iVar9,iVar10,iVar12);" (call_expression "FUN_00092d1c(iVar9,iVar10,iVar12)" (identifier "FUN_00092d1c") (argument_list "(iVar9,iVar10,iVar12)" (( "(") (identifier "iVar9") (, ",") (identifier "iVar10") (, ",") (identifier "iVar12") () ")"))) (; ";")) (expression_statement "iVar12 = *(int *)(iVar9 + 0x6c);" (assignment_expression "iVar12 = *(int *)(iVar9 + 0x6c)" (identifier "iVar12") (= "=") (pointer_expression "*(int *)(iVar9 + 0x6c)" (* "*") (cast_expression "(int *)(iVar9 + 0x6c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar9 + 0x6c)" (( "(") (binary_expression "iVar9 + 0x6c" (identifier "iVar9") (+ "+") (number_literal "0x6c")) () ")"))))) (; ";")) (} "}")))) (if_statement "if (iVar21 == -1) {\n    iVar21 = iVar19 + *(int *)(iVar9 + 0x70);\n    if ((0 < iVar21) && (iVar21 <= *(int *)(iVar9 + 300))) {\n      FUN_00092d1c(iVar9,iVar21,iVar12,1);\n      iVar12 = *(int *)(iVar9 + 0x6c);\n    }\n    iVar21 = FUN_00092a9c(iVar9,iVar12,0x9eb,1);\n    if (0 < iVar24) {\n      iVar18 = *(int *)(puVar26 + 0x7cf20);\n      iVar10 = 0;\n      do {\n        iVar6 = iVar10 + *(int *)(iVar9 + 0x70);\n        iVar12 = iVar6 + iVar19;\n        iVar6 = iVar6 * 0xc;\n        puVar22 = (undefined4 *)(*(int *)(iVar21 + 0x14) + iVar12 * 0xc);\n        puVar25 = (undefined4 *)(*(int *)(iVar21 + 0x14) + iVar6);\n        (*(code *)(iVar18 + 0xab0))(iVar21,(iVar6 >> 2) * -0x55555555);\n        uVar20 = puVar22[2];\n        uVar13 = puVar22[1];\n        *puVar25 = *puVar22;\n        puVar25[1] = uVar13;\n        puVar25[2] = uVar20;\n        if (puVar22[2] != 0) {\n          puVar25[2] = (iVar6 + iVar12 * -0xc >> 2) * 0x55555555 + puVar22[2];\n        }\n        iVar10 = iVar10 + 1;\n        puVar22[2] = 0;\n      } while (iVar24 != iVar10);\n    }\n    if (iVar19 != 0) {\n      iVar18 = iVar24;\n      do {\n        iVar10 = iVar18 + 1;\n        FUN_00091070(iVar21,iVar18 + *(int *)(iVar9 + 0x70),iVar9 + 0x54);\n        iVar18 = iVar10;\n      } while (iVar10 != iVar19 + iVar24);\n      return;\n    }\n  }\n  else {\n    iVar18 = iVar24 + -1;\n    iVar21 = FUN_00092a9c(iVar9,iVar12,0x9eb,1);\n    if (iVar24 != 0) {\n      iVar10 = *(int *)(puVar26 + 0x7cf20);\n      do {\n        iVar6 = iVar18 + *(int *)(iVar9 + 0x70);\n        iVar12 = (iVar19 + iVar6) * 0xc;\n        puVar22 = (undefined4 *)(*(int *)(iVar21 + 0x14) + iVar6 * 0xc);\n        puVar25 = (undefined4 *)(*(int *)(iVar21 + 0x14) + iVar12);\n        (*(code *)(iVar10 + 0xab0))(iVar21,(iVar12 >> 2) * -0x55555555);\n        uVar20 = puVar22[2];\n        uVar13 = puVar22[1];\n        *puVar25 = *puVar22;\n        puVar25[1] = uVar13;\n        puVar25[2] = uVar20;\n        if (puVar22[2] != 0) {\n          puVar25[2] = (iVar12 + iVar6 * -0xc >> 2) * 0x55555555 + puVar22[2];\n        }\n        iVar18 = iVar18 + -1;\n        puVar22[2] = 0;\n      } while (iVar18 != -1);\n    }\n    iVar18 = iVar19 + -1;\n    if (iVar19 != 0) {\n      do {\n        iVar19 = iVar18 + *(int *)(iVar9 + 0x70);\n        iVar18 = iVar18 + -1;\n        FUN_00091070(iVar21,iVar19,iVar9 + 0x54);\n      } while (iVar18 != -1);\n    }\n  }" (if "if") (parenthesized_expression "(iVar21 == -1)" (( "(") (binary_expression "iVar21 == -1" (identifier "iVar21") (== "==") (number_literal "-1")) () ")")) (compound_statement "{\n    iVar21 = iVar19 + *(int *)(iVar9 + 0x70);\n    if ((0 < iVar21) && (iVar21 <= *(int *)(iVar9 + 300))) {\n      FUN_00092d1c(iVar9,iVar21,iVar12,1);\n      iVar12 = *(int *)(iVar9 + 0x6c);\n    }\n    iVar21 = FUN_00092a9c(iVar9,iVar12,0x9eb,1);\n    if (0 < iVar24) {\n      iVar18 = *(int *)(puVar26 + 0x7cf20);\n      iVar10 = 0;\n      do {\n        iVar6 = iVar10 + *(int *)(iVar9 + 0x70);\n        iVar12 = iVar6 + iVar19;\n        iVar6 = iVar6 * 0xc;\n        puVar22 = (undefined4 *)(*(int *)(iVar21 + 0x14) + iVar12 * 0xc);\n        puVar25 = (undefined4 *)(*(int *)(iVar21 + 0x14) + iVar6);\n        (*(code *)(iVar18 + 0xab0))(iVar21,(iVar6 >> 2) * -0x55555555);\n        uVar20 = puVar22[2];\n        uVar13 = puVar22[1];\n        *puVar25 = *puVar22;\n        puVar25[1] = uVar13;\n        puVar25[2] = uVar20;\n        if (puVar22[2] != 0) {\n          puVar25[2] = (iVar6 + iVar12 * -0xc >> 2) * 0x55555555 + puVar22[2];\n        }\n        iVar10 = iVar10 + 1;\n        puVar22[2] = 0;\n      } while (iVar24 != iVar10);\n    }\n    if (iVar19 != 0) {\n      iVar18 = iVar24;\n      do {\n        iVar10 = iVar18 + 1;\n        FUN_00091070(iVar21,iVar18 + *(int *)(iVar9 + 0x70),iVar9 + 0x54);\n        iVar18 = iVar10;\n      } while (iVar10 != iVar19 + iVar24);\n      return;\n    }\n  }" ({ "{") (expression_statement "iVar21 = iVar19 + *(int *)(iVar9 + 0x70);" (assignment_expression "iVar21 = iVar19 + *(int *)(iVar9 + 0x70)" (identifier "iVar21") (= "=") (binary_expression "iVar19 + *(int *)(iVar9 + 0x70)" (identifier "iVar19") (+ "+") (pointer_expression "*(int *)(iVar9 + 0x70)" (* "*") (cast_expression "(int *)(iVar9 + 0x70)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar9 + 0x70)" (( "(") (binary_expression "iVar9 + 0x70" (identifier "iVar9") (+ "+") (number_literal "0x70")) () ")")))))) (; ";")) (if_statement "if ((0 < iVar21) && (iVar21 <= *(int *)(iVar9 + 300))) {\n      FUN_00092d1c(iVar9,iVar21,iVar12,1);\n      iVar12 = *(int *)(iVar9 + 0x6c);\n    }" (if "if") (parenthesized_expression "((0 < iVar21) && (iVar21 <= *(int *)(iVar9 + 300)))" (( "(") (binary_expression "(0 < iVar21) && (iVar21 <= *(int *)(iVar9 + 300))" (parenthesized_expression "(0 < iVar21)" (( "(") (binary_expression "0 < iVar21" (number_literal "0") (< "<") (identifier "iVar21")) () ")")) (&& "&&") (parenthesized_expression "(iVar21 <= *(int *)(iVar9 + 300))" (( "(") (binary_expression "iVar21 <= *(int *)(iVar9 + 300)" (identifier "iVar21") (<= "<=") (pointer_expression "*(int *)(iVar9 + 300)" (* "*") (cast_expression "(int *)(iVar9 + 300)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar9 + 300)" (( "(") (binary_expression "iVar9 + 300" (identifier "iVar9") (+ "+") (number_literal "300")) () ")"))))) () ")"))) () ")")) (compound_statement "{\n      FUN_00092d1c(iVar9,iVar21,iVar12,1);\n      iVar12 = *(int *)(iVar9 + 0x6c);\n    }" ({ "{") (expression_statement "FUN_00092d1c(iVar9,iVar21,iVar12,1);" (call_expression "FUN_00092d1c(iVar9,iVar21,iVar12,1)" (identifier "FUN_00092d1c") (argument_list "(iVar9,iVar21,iVar12,1)" (( "(") (identifier "iVar9") (, ",") (identifier "iVar21") (, ",") (identifier "iVar12") (, ",") (number_literal "1") () ")"))) (; ";")) (expression_statement "iVar12 = *(int *)(iVar9 + 0x6c);" (assignment_expression "iVar12 = *(int *)(iVar9 + 0x6c)" (identifier "iVar12") (= "=") (pointer_expression "*(int *)(iVar9 + 0x6c)" (* "*") (cast_expression "(int *)(iVar9 + 0x6c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar9 + 0x6c)" (( "(") (binary_expression "iVar9 + 0x6c" (identifier "iVar9") (+ "+") (number_literal "0x6c")) () ")"))))) (; ";")) (} "}"))) (expression_statement "iVar21 = FUN_00092a9c(iVar9,iVar12,0x9eb,1);" (assignment_expression "iVar21 = FUN_00092a9c(iVar9,iVar12,0x9eb,1)" (identifier "iVar21") (= "=") (call_expression "FUN_00092a9c(iVar9,iVar12,0x9eb,1)" (identifier "FUN_00092a9c") (argument_list "(iVar9,iVar12,0x9eb,1)" (( "(") (identifier "iVar9") (, ",") (identifier "iVar12") (, ",") (number_literal "0x9eb") (, ",") (number_literal "1") () ")")))) (; ";")) (if_statement "if (0 < iVar24) {\n      iVar18 = *(int *)(puVar26 + 0x7cf20);\n      iVar10 = 0;\n      do {\n        iVar6 = iVar10 + *(int *)(iVar9 + 0x70);\n        iVar12 = iVar6 + iVar19;\n        iVar6 = iVar6 * 0xc;\n        puVar22 = (undefined4 *)(*(int *)(iVar21 + 0x14) + iVar12 * 0xc);\n        puVar25 = (undefined4 *)(*(int *)(iVar21 + 0x14) + iVar6);\n        (*(code *)(iVar18 + 0xab0))(iVar21,(iVar6 >> 2) * -0x55555555);\n        uVar20 = puVar22[2];\n        uVar13 = puVar22[1];\n        *puVar25 = *puVar22;\n        puVar25[1] = uVar13;\n        puVar25[2] = uVar20;\n        if (puVar22[2] != 0) {\n          puVar25[2] = (iVar6 + iVar12 * -0xc >> 2) * 0x55555555 + puVar22[2];\n        }\n        iVar10 = iVar10 + 1;\n        puVar22[2] = 0;\n      } while (iVar24 != iVar10);\n    }" (if "if") (parenthesized_expression "(0 < iVar24)" (( "(") (binary_expression "0 < iVar24" (number_literal "0") (< "<") (identifier "iVar24")) () ")")) (compound_statement "{\n      iVar18 = *(int *)(puVar26 + 0x7cf20);\n      iVar10 = 0;\n      do {\n        iVar6 = iVar10 + *(int *)(iVar9 + 0x70);\n        iVar12 = iVar6 + iVar19;\n        iVar6 = iVar6 * 0xc;\n        puVar22 = (undefined4 *)(*(int *)(iVar21 + 0x14) + iVar12 * 0xc);\n        puVar25 = (undefined4 *)(*(int *)(iVar21 + 0x14) + iVar6);\n        (*(code *)(iVar18 + 0xab0))(iVar21,(iVar6 >> 2) * -0x55555555);\n        uVar20 = puVar22[2];\n        uVar13 = puVar22[1];\n        *puVar25 = *puVar22;\n        puVar25[1] = uVar13;\n        puVar25[2] = uVar20;\n        if (puVar22[2] != 0) {\n          puVar25[2] = (iVar6 + iVar12 * -0xc >> 2) * 0x55555555 + puVar22[2];\n        }\n        iVar10 = iVar10 + 1;\n        puVar22[2] = 0;\n      } while (iVar24 != iVar10);\n    }" ({ "{") (expression_statement "iVar18 = *(int *)(puVar26 + 0x7cf20);" (assignment_expression "iVar18 = *(int *)(puVar26 + 0x7cf20)" (identifier "iVar18") (= "=") (pointer_expression "*(int *)(puVar26 + 0x7cf20)" (* "*") (cast_expression "(int *)(puVar26 + 0x7cf20)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar26 + 0x7cf20)" (( "(") (binary_expression "puVar26 + 0x7cf20" (identifier "puVar26") (+ "+") (number_literal "0x7cf20")) () ")"))))) (; ";")) (expression_statement "iVar10 = 0;" (assignment_expression "iVar10 = 0" (identifier "iVar10") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n        iVar6 = iVar10 + *(int *)(iVar9 + 0x70);\n        iVar12 = iVar6 + iVar19;\n        iVar6 = iVar6 * 0xc;\n        puVar22 = (undefined4 *)(*(int *)(iVar21 + 0x14) + iVar12 * 0xc);\n        puVar25 = (undefined4 *)(*(int *)(iVar21 + 0x14) + iVar6);\n        (*(code *)(iVar18 + 0xab0))(iVar21,(iVar6 >> 2) * -0x55555555);\n        uVar20 = puVar22[2];\n        uVar13 = puVar22[1];\n        *puVar25 = *puVar22;\n        puVar25[1] = uVar13;\n        puVar25[2] = uVar20;\n        if (puVar22[2] != 0) {\n          puVar25[2] = (iVar6 + iVar12 * -0xc >> 2) * 0x55555555 + puVar22[2];\n        }\n        iVar10 = iVar10 + 1;\n        puVar22[2] = 0;\n      } while (iVar24 != iVar10);" (do "do") (compound_statement "{\n        iVar6 = iVar10 + *(int *)(iVar9 + 0x70);\n        iVar12 = iVar6 + iVar19;\n        iVar6 = iVar6 * 0xc;\n        puVar22 = (undefined4 *)(*(int *)(iVar21 + 0x14) + iVar12 * 0xc);\n        puVar25 = (undefined4 *)(*(int *)(iVar21 + 0x14) + iVar6);\n        (*(code *)(iVar18 + 0xab0))(iVar21,(iVar6 >> 2) * -0x55555555);\n        uVar20 = puVar22[2];\n        uVar13 = puVar22[1];\n        *puVar25 = *puVar22;\n        puVar25[1] = uVar13;\n        puVar25[2] = uVar20;\n        if (puVar22[2] != 0) {\n          puVar25[2] = (iVar6 + iVar12 * -0xc >> 2) * 0x55555555 + puVar22[2];\n        }\n        iVar10 = iVar10 + 1;\n        puVar22[2] = 0;\n      }" ({ "{") (expression_statement "iVar6 = iVar10 + *(int *)(iVar9 + 0x70);" (assignment_expression "iVar6 = iVar10 + *(int *)(iVar9 + 0x70)" (identifier "iVar6") (= "=") (binary_expression "iVar10 + *(int *)(iVar9 + 0x70)" (identifier "iVar10") (+ "+") (pointer_expression "*(int *)(iVar9 + 0x70)" (* "*") (cast_expression "(int *)(iVar9 + 0x70)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar9 + 0x70)" (( "(") (binary_expression "iVar9 + 0x70" (identifier "iVar9") (+ "+") (number_literal "0x70")) () ")")))))) (; ";")) (expression_statement "iVar12 = iVar6 + iVar19;" (assignment_expression "iVar12 = iVar6 + iVar19" (identifier "iVar12") (= "=") (binary_expression "iVar6 + iVar19" (identifier "iVar6") (+ "+") (identifier "iVar19"))) (; ";")) (expression_statement "iVar6 = iVar6 * 0xc;" (assignment_expression "iVar6 = iVar6 * 0xc" (identifier "iVar6") (= "=") (binary_expression "iVar6 * 0xc" (identifier "iVar6") (* "*") (number_literal "0xc"))) (; ";")) (expression_statement "puVar22 = (undefined4 *)(*(int *)(iVar21 + 0x14) + iVar12 * 0xc);" (assignment_expression "puVar22 = (undefined4 *)(*(int *)(iVar21 + 0x14) + iVar12 * 0xc)" (identifier "puVar22") (= "=") (cast_expression "(undefined4 *)(*(int *)(iVar21 + 0x14) + iVar12 * 0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(iVar21 + 0x14) + iVar12 * 0xc)" (( "(") (binary_expression "*(int *)(iVar21 + 0x14) + iVar12 * 0xc" (pointer_expression "*(int *)(iVar21 + 0x14)" (* "*") (cast_expression "(int *)(iVar21 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar21 + 0x14)" (( "(") (binary_expression "iVar21 + 0x14" (identifier "iVar21") (+ "+") (number_literal "0x14")) () ")")))) (+ "+") (binary_expression "iVar12 * 0xc" (identifier "iVar12") (* "*") (number_literal "0xc"))) () ")")))) (; ";")) (expression_statement "puVar25 = (undefined4 *)(*(int *)(iVar21 + 0x14) + iVar6);" (assignment_expression "puVar25 = (undefined4 *)(*(int *)(iVar21 + 0x14) + iVar6)" (identifier "puVar25") (= "=") (cast_expression "(undefined4 *)(*(int *)(iVar21 + 0x14) + iVar6)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(iVar21 + 0x14) + iVar6)" (( "(") (binary_expression "*(int *)(iVar21 + 0x14) + iVar6" (pointer_expression "*(int *)(iVar21 + 0x14)" (* "*") (cast_expression "(int *)(iVar21 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar21 + 0x14)" (( "(") (binary_expression "iVar21 + 0x14" (identifier "iVar21") (+ "+") (number_literal "0x14")) () ")")))) (+ "+") (identifier "iVar6")) () ")")))) (; ";")) (expression_statement "(*(code *)(iVar18 + 0xab0))(iVar21,(iVar6 >> 2) * -0x55555555);" (call_expression "(*(code *)(iVar18 + 0xab0))(iVar21,(iVar6 >> 2) * -0x55555555)" (parenthesized_expression "(*(code *)(iVar18 + 0xab0))" (( "(") (pointer_expression "*(code *)(iVar18 + 0xab0)" (* "*") (cast_expression "(code *)(iVar18 + 0xab0)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar18 + 0xab0)" (( "(") (binary_expression "iVar18 + 0xab0" (identifier "iVar18") (+ "+") (number_literal "0xab0")) () ")")))) () ")")) (argument_list "(iVar21,(iVar6 >> 2) * -0x55555555)" (( "(") (identifier "iVar21") (, ",") (binary_expression "(iVar6 >> 2) * -0x55555555" (parenthesized_expression "(iVar6 >> 2)" (( "(") (binary_expression "iVar6 >> 2" (identifier "iVar6") (>> ">>") (number_literal "2")) () ")")) (* "*") (number_literal "-0x55555555")) () ")"))) (; ";")) (expression_statement "uVar20 = puVar22[2];" (assignment_expression "uVar20 = puVar22[2]" (identifier "uVar20") (= "=") (subscript_expression "puVar22[2]" (identifier "puVar22") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "uVar13 = puVar22[1];" (assignment_expression "uVar13 = puVar22[1]" (identifier "uVar13") (= "=") (subscript_expression "puVar22[1]" (identifier "puVar22") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "*puVar25 = *puVar22;" (assignment_expression "*puVar25 = *puVar22" (pointer_expression "*puVar25" (* "*") (identifier "puVar25")) (= "=") (pointer_expression "*puVar22" (* "*") (identifier "puVar22"))) (; ";")) (expression_statement "puVar25[1] = uVar13;" (assignment_expression "puVar25[1] = uVar13" (subscript_expression "puVar25[1]" (identifier "puVar25") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "uVar13")) (; ";")) (expression_statement "puVar25[2] = uVar20;" (assignment_expression "puVar25[2] = uVar20" (subscript_expression "puVar25[2]" (identifier "puVar25") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "uVar20")) (; ";")) (if_statement "if (puVar22[2] != 0) {\n          puVar25[2] = (iVar6 + iVar12 * -0xc >> 2) * 0x55555555 + puVar22[2];\n        }" (if "if") (parenthesized_expression "(puVar22[2] != 0)" (( "(") (binary_expression "puVar22[2] != 0" (subscript_expression "puVar22[2]" (identifier "puVar22") ([ "[") (number_literal "2") (] "]")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          puVar25[2] = (iVar6 + iVar12 * -0xc >> 2) * 0x55555555 + puVar22[2];\n        }" ({ "{") (expression_statement "puVar25[2] = (iVar6 + iVar12 * -0xc >> 2) * 0x55555555 + puVar22[2];" (assignment_expression "puVar25[2] = (iVar6 + iVar12 * -0xc >> 2) * 0x55555555 + puVar22[2]" (subscript_expression "puVar25[2]" (identifier "puVar25") ([ "[") (number_literal "2") (] "]")) (= "=") (binary_expression "(iVar6 + iVar12 * -0xc >> 2) * 0x55555555 + puVar22[2]" (binary_expression "(iVar6 + iVar12 * -0xc >> 2) * 0x55555555" (parenthesized_expression "(iVar6 + iVar12 * -0xc >> 2)" (( "(") (binary_expression "iVar6 + iVar12 * -0xc >> 2" (binary_expression "iVar6 + iVar12 * -0xc" (identifier "iVar6") (+ "+") (binary_expression "iVar12 * -0xc" (identifier "iVar12") (* "*") (number_literal "-0xc"))) (>> ">>") (number_literal "2")) () ")")) (* "*") (number_literal "0x55555555")) (+ "+") (subscript_expression "puVar22[2]" (identifier "puVar22") ([ "[") (number_literal "2") (] "]")))) (; ";")) (} "}"))) (expression_statement "iVar10 = iVar10 + 1;" (assignment_expression "iVar10 = iVar10 + 1" (identifier "iVar10") (= "=") (binary_expression "iVar10 + 1" (identifier "iVar10") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar22[2] = 0;" (assignment_expression "puVar22[2] = 0" (subscript_expression "puVar22[2]" (identifier "puVar22") ([ "[") (number_literal "2") (] "]")) (= "=") (number_literal "0")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar24 != iVar10)" (( "(") (binary_expression "iVar24 != iVar10" (identifier "iVar24") (!= "!=") (identifier "iVar10")) () ")")) (; ";")) (} "}"))) (if_statement "if (iVar19 != 0) {\n      iVar18 = iVar24;\n      do {\n        iVar10 = iVar18 + 1;\n        FUN_00091070(iVar21,iVar18 + *(int *)(iVar9 + 0x70),iVar9 + 0x54);\n        iVar18 = iVar10;\n      } while (iVar10 != iVar19 + iVar24);\n      return;\n    }" (if "if") (parenthesized_expression "(iVar19 != 0)" (( "(") (binary_expression "iVar19 != 0" (identifier "iVar19") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      iVar18 = iVar24;\n      do {\n        iVar10 = iVar18 + 1;\n        FUN_00091070(iVar21,iVar18 + *(int *)(iVar9 + 0x70),iVar9 + 0x54);\n        iVar18 = iVar10;\n      } while (iVar10 != iVar19 + iVar24);\n      return;\n    }" ({ "{") (expression_statement "iVar18 = iVar24;" (assignment_expression "iVar18 = iVar24" (identifier "iVar18") (= "=") (identifier "iVar24")) (; ";")) (do_statement "do {\n        iVar10 = iVar18 + 1;\n        FUN_00091070(iVar21,iVar18 + *(int *)(iVar9 + 0x70),iVar9 + 0x54);\n        iVar18 = iVar10;\n      } while (iVar10 != iVar19 + iVar24);" (do "do") (compound_statement "{\n        iVar10 = iVar18 + 1;\n        FUN_00091070(iVar21,iVar18 + *(int *)(iVar9 + 0x70),iVar9 + 0x54);\n        iVar18 = iVar10;\n      }" ({ "{") (expression_statement "iVar10 = iVar18 + 1;" (assignment_expression "iVar10 = iVar18 + 1" (identifier "iVar10") (= "=") (binary_expression "iVar18 + 1" (identifier "iVar18") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "FUN_00091070(iVar21,iVar18 + *(int *)(iVar9 + 0x70),iVar9 + 0x54);" (call_expression "FUN_00091070(iVar21,iVar18 + *(int *)(iVar9 + 0x70),iVar9 + 0x54)" (identifier "FUN_00091070") (argument_list "(iVar21,iVar18 + *(int *)(iVar9 + 0x70),iVar9 + 0x54)" (( "(") (identifier "iVar21") (, ",") (binary_expression "iVar18 + *(int *)(iVar9 + 0x70)" (identifier "iVar18") (+ "+") (pointer_expression "*(int *)(iVar9 + 0x70)" (* "*") (cast_expression "(int *)(iVar9 + 0x70)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar9 + 0x70)" (( "(") (binary_expression "iVar9 + 0x70" (identifier "iVar9") (+ "+") (number_literal "0x70")) () ")"))))) (, ",") (binary_expression "iVar9 + 0x54" (identifier "iVar9") (+ "+") (number_literal "0x54")) () ")"))) (; ";")) (expression_statement "iVar18 = iVar10;" (assignment_expression "iVar18 = iVar10" (identifier "iVar18") (= "=") (identifier "iVar10")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar10 != iVar19 + iVar24)" (( "(") (binary_expression "iVar10 != iVar19 + iVar24" (identifier "iVar10") (!= "!=") (binary_expression "iVar19 + iVar24" (identifier "iVar19") (+ "+") (identifier "iVar24"))) () ")")) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (} "}")) (else_clause "else {\n    iVar18 = iVar24 + -1;\n    iVar21 = FUN_00092a9c(iVar9,iVar12,0x9eb,1);\n    if (iVar24 != 0) {\n      iVar10 = *(int *)(puVar26 + 0x7cf20);\n      do {\n        iVar6 = iVar18 + *(int *)(iVar9 + 0x70);\n        iVar12 = (iVar19 + iVar6) * 0xc;\n        puVar22 = (undefined4 *)(*(int *)(iVar21 + 0x14) + iVar6 * 0xc);\n        puVar25 = (undefined4 *)(*(int *)(iVar21 + 0x14) + iVar12);\n        (*(code *)(iVar10 + 0xab0))(iVar21,(iVar12 >> 2) * -0x55555555);\n        uVar20 = puVar22[2];\n        uVar13 = puVar22[1];\n        *puVar25 = *puVar22;\n        puVar25[1] = uVar13;\n        puVar25[2] = uVar20;\n        if (puVar22[2] != 0) {\n          puVar25[2] = (iVar12 + iVar6 * -0xc >> 2) * 0x55555555 + puVar22[2];\n        }\n        iVar18 = iVar18 + -1;\n        puVar22[2] = 0;\n      } while (iVar18 != -1);\n    }\n    iVar18 = iVar19 + -1;\n    if (iVar19 != 0) {\n      do {\n        iVar19 = iVar18 + *(int *)(iVar9 + 0x70);\n        iVar18 = iVar18 + -1;\n        FUN_00091070(iVar21,iVar19,iVar9 + 0x54);\n      } while (iVar18 != -1);\n    }\n  }" (else "else") (compound_statement "{\n    iVar18 = iVar24 + -1;\n    iVar21 = FUN_00092a9c(iVar9,iVar12,0x9eb,1);\n    if (iVar24 != 0) {\n      iVar10 = *(int *)(puVar26 + 0x7cf20);\n      do {\n        iVar6 = iVar18 + *(int *)(iVar9 + 0x70);\n        iVar12 = (iVar19 + iVar6) * 0xc;\n        puVar22 = (undefined4 *)(*(int *)(iVar21 + 0x14) + iVar6 * 0xc);\n        puVar25 = (undefined4 *)(*(int *)(iVar21 + 0x14) + iVar12);\n        (*(code *)(iVar10 + 0xab0))(iVar21,(iVar12 >> 2) * -0x55555555);\n        uVar20 = puVar22[2];\n        uVar13 = puVar22[1];\n        *puVar25 = *puVar22;\n        puVar25[1] = uVar13;\n        puVar25[2] = uVar20;\n        if (puVar22[2] != 0) {\n          puVar25[2] = (iVar12 + iVar6 * -0xc >> 2) * 0x55555555 + puVar22[2];\n        }\n        iVar18 = iVar18 + -1;\n        puVar22[2] = 0;\n      } while (iVar18 != -1);\n    }\n    iVar18 = iVar19 + -1;\n    if (iVar19 != 0) {\n      do {\n        iVar19 = iVar18 + *(int *)(iVar9 + 0x70);\n        iVar18 = iVar18 + -1;\n        FUN_00091070(iVar21,iVar19,iVar9 + 0x54);\n      } while (iVar18 != -1);\n    }\n  }" ({ "{") (expression_statement "iVar18 = iVar24 + -1;" (assignment_expression "iVar18 = iVar24 + -1" (identifier "iVar18") (= "=") (binary_expression "iVar24 + -1" (identifier "iVar24") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "iVar21 = FUN_00092a9c(iVar9,iVar12,0x9eb,1);" (assignment_expression "iVar21 = FUN_00092a9c(iVar9,iVar12,0x9eb,1)" (identifier "iVar21") (= "=") (call_expression "FUN_00092a9c(iVar9,iVar12,0x9eb,1)" (identifier "FUN_00092a9c") (argument_list "(iVar9,iVar12,0x9eb,1)" (( "(") (identifier "iVar9") (, ",") (identifier "iVar12") (, ",") (number_literal "0x9eb") (, ",") (number_literal "1") () ")")))) (; ";")) (if_statement "if (iVar24 != 0) {\n      iVar10 = *(int *)(puVar26 + 0x7cf20);\n      do {\n        iVar6 = iVar18 + *(int *)(iVar9 + 0x70);\n        iVar12 = (iVar19 + iVar6) * 0xc;\n        puVar22 = (undefined4 *)(*(int *)(iVar21 + 0x14) + iVar6 * 0xc);\n        puVar25 = (undefined4 *)(*(int *)(iVar21 + 0x14) + iVar12);\n        (*(code *)(iVar10 + 0xab0))(iVar21,(iVar12 >> 2) * -0x55555555);\n        uVar20 = puVar22[2];\n        uVar13 = puVar22[1];\n        *puVar25 = *puVar22;\n        puVar25[1] = uVar13;\n        puVar25[2] = uVar20;\n        if (puVar22[2] != 0) {\n          puVar25[2] = (iVar12 + iVar6 * -0xc >> 2) * 0x55555555 + puVar22[2];\n        }\n        iVar18 = iVar18 + -1;\n        puVar22[2] = 0;\n      } while (iVar18 != -1);\n    }" (if "if") (parenthesized_expression "(iVar24 != 0)" (( "(") (binary_expression "iVar24 != 0" (identifier "iVar24") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      iVar10 = *(int *)(puVar26 + 0x7cf20);\n      do {\n        iVar6 = iVar18 + *(int *)(iVar9 + 0x70);\n        iVar12 = (iVar19 + iVar6) * 0xc;\n        puVar22 = (undefined4 *)(*(int *)(iVar21 + 0x14) + iVar6 * 0xc);\n        puVar25 = (undefined4 *)(*(int *)(iVar21 + 0x14) + iVar12);\n        (*(code *)(iVar10 + 0xab0))(iVar21,(iVar12 >> 2) * -0x55555555);\n        uVar20 = puVar22[2];\n        uVar13 = puVar22[1];\n        *puVar25 = *puVar22;\n        puVar25[1] = uVar13;\n        puVar25[2] = uVar20;\n        if (puVar22[2] != 0) {\n          puVar25[2] = (iVar12 + iVar6 * -0xc >> 2) * 0x55555555 + puVar22[2];\n        }\n        iVar18 = iVar18 + -1;\n        puVar22[2] = 0;\n      } while (iVar18 != -1);\n    }" ({ "{") (expression_statement "iVar10 = *(int *)(puVar26 + 0x7cf20);" (assignment_expression "iVar10 = *(int *)(puVar26 + 0x7cf20)" (identifier "iVar10") (= "=") (pointer_expression "*(int *)(puVar26 + 0x7cf20)" (* "*") (cast_expression "(int *)(puVar26 + 0x7cf20)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar26 + 0x7cf20)" (( "(") (binary_expression "puVar26 + 0x7cf20" (identifier "puVar26") (+ "+") (number_literal "0x7cf20")) () ")"))))) (; ";")) (do_statement "do {\n        iVar6 = iVar18 + *(int *)(iVar9 + 0x70);\n        iVar12 = (iVar19 + iVar6) * 0xc;\n        puVar22 = (undefined4 *)(*(int *)(iVar21 + 0x14) + iVar6 * 0xc);\n        puVar25 = (undefined4 *)(*(int *)(iVar21 + 0x14) + iVar12);\n        (*(code *)(iVar10 + 0xab0))(iVar21,(iVar12 >> 2) * -0x55555555);\n        uVar20 = puVar22[2];\n        uVar13 = puVar22[1];\n        *puVar25 = *puVar22;\n        puVar25[1] = uVar13;\n        puVar25[2] = uVar20;\n        if (puVar22[2] != 0) {\n          puVar25[2] = (iVar12 + iVar6 * -0xc >> 2) * 0x55555555 + puVar22[2];\n        }\n        iVar18 = iVar18 + -1;\n        puVar22[2] = 0;\n      } while (iVar18 != -1);" (do "do") (compound_statement "{\n        iVar6 = iVar18 + *(int *)(iVar9 + 0x70);\n        iVar12 = (iVar19 + iVar6) * 0xc;\n        puVar22 = (undefined4 *)(*(int *)(iVar21 + 0x14) + iVar6 * 0xc);\n        puVar25 = (undefined4 *)(*(int *)(iVar21 + 0x14) + iVar12);\n        (*(code *)(iVar10 + 0xab0))(iVar21,(iVar12 >> 2) * -0x55555555);\n        uVar20 = puVar22[2];\n        uVar13 = puVar22[1];\n        *puVar25 = *puVar22;\n        puVar25[1] = uVar13;\n        puVar25[2] = uVar20;\n        if (puVar22[2] != 0) {\n          puVar25[2] = (iVar12 + iVar6 * -0xc >> 2) * 0x55555555 + puVar22[2];\n        }\n        iVar18 = iVar18 + -1;\n        puVar22[2] = 0;\n      }" ({ "{") (expression_statement "iVar6 = iVar18 + *(int *)(iVar9 + 0x70);" (assignment_expression "iVar6 = iVar18 + *(int *)(iVar9 + 0x70)" (identifier "iVar6") (= "=") (binary_expression "iVar18 + *(int *)(iVar9 + 0x70)" (identifier "iVar18") (+ "+") (pointer_expression "*(int *)(iVar9 + 0x70)" (* "*") (cast_expression "(int *)(iVar9 + 0x70)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar9 + 0x70)" (( "(") (binary_expression "iVar9 + 0x70" (identifier "iVar9") (+ "+") (number_literal "0x70")) () ")")))))) (; ";")) (expression_statement "iVar12 = (iVar19 + iVar6) * 0xc;" (assignment_expression "iVar12 = (iVar19 + iVar6) * 0xc" (identifier "iVar12") (= "=") (binary_expression "(iVar19 + iVar6) * 0xc" (parenthesized_expression "(iVar19 + iVar6)" (( "(") (binary_expression "iVar19 + iVar6" (identifier "iVar19") (+ "+") (identifier "iVar6")) () ")")) (* "*") (number_literal "0xc"))) (; ";")) (expression_statement "puVar22 = (undefined4 *)(*(int *)(iVar21 + 0x14) + iVar6 * 0xc);" (assignment_expression "puVar22 = (undefined4 *)(*(int *)(iVar21 + 0x14) + iVar6 * 0xc)" (identifier "puVar22") (= "=") (cast_expression "(undefined4 *)(*(int *)(iVar21 + 0x14) + iVar6 * 0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(iVar21 + 0x14) + iVar6 * 0xc)" (( "(") (binary_expression "*(int *)(iVar21 + 0x14) + iVar6 * 0xc" (pointer_expression "*(int *)(iVar21 + 0x14)" (* "*") (cast_expression "(int *)(iVar21 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar21 + 0x14)" (( "(") (binary_expression "iVar21 + 0x14" (identifier "iVar21") (+ "+") (number_literal "0x14")) () ")")))) (+ "+") (binary_expression "iVar6 * 0xc" (identifier "iVar6") (* "*") (number_literal "0xc"))) () ")")))) (; ";")) (expression_statement "puVar25 = (undefined4 *)(*(int *)(iVar21 + 0x14) + iVar12);" (assignment_expression "puVar25 = (undefined4 *)(*(int *)(iVar21 + 0x14) + iVar12)" (identifier "puVar25") (= "=") (cast_expression "(undefined4 *)(*(int *)(iVar21 + 0x14) + iVar12)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(iVar21 + 0x14) + iVar12)" (( "(") (binary_expression "*(int *)(iVar21 + 0x14) + iVar12" (pointer_expression "*(int *)(iVar21 + 0x14)" (* "*") (cast_expression "(int *)(iVar21 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar21 + 0x14)" (( "(") (binary_expression "iVar21 + 0x14" (identifier "iVar21") (+ "+") (number_literal "0x14")) () ")")))) (+ "+") (identifier "iVar12")) () ")")))) (; ";")) (expression_statement "(*(code *)(iVar10 + 0xab0))(iVar21,(iVar12 >> 2) * -0x55555555);" (call_expression "(*(code *)(iVar10 + 0xab0))(iVar21,(iVar12 >> 2) * -0x55555555)" (parenthesized_expression "(*(code *)(iVar10 + 0xab0))" (( "(") (pointer_expression "*(code *)(iVar10 + 0xab0)" (* "*") (cast_expression "(code *)(iVar10 + 0xab0)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar10 + 0xab0)" (( "(") (binary_expression "iVar10 + 0xab0" (identifier "iVar10") (+ "+") (number_literal "0xab0")) () ")")))) () ")")) (argument_list "(iVar21,(iVar12 >> 2) * -0x55555555)" (( "(") (identifier "iVar21") (, ",") (binary_expression "(iVar12 >> 2) * -0x55555555" (parenthesized_expression "(iVar12 >> 2)" (( "(") (binary_expression "iVar12 >> 2" (identifier "iVar12") (>> ">>") (number_literal "2")) () ")")) (* "*") (number_literal "-0x55555555")) () ")"))) (; ";")) (expression_statement "uVar20 = puVar22[2];" (assignment_expression "uVar20 = puVar22[2]" (identifier "uVar20") (= "=") (subscript_expression "puVar22[2]" (identifier "puVar22") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "uVar13 = puVar22[1];" (assignment_expression "uVar13 = puVar22[1]" (identifier "uVar13") (= "=") (subscript_expression "puVar22[1]" (identifier "puVar22") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "*puVar25 = *puVar22;" (assignment_expression "*puVar25 = *puVar22" (pointer_expression "*puVar25" (* "*") (identifier "puVar25")) (= "=") (pointer_expression "*puVar22" (* "*") (identifier "puVar22"))) (; ";")) (expression_statement "puVar25[1] = uVar13;" (assignment_expression "puVar25[1] = uVar13" (subscript_expression "puVar25[1]" (identifier "puVar25") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "uVar13")) (; ";")) (expression_statement "puVar25[2] = uVar20;" (assignment_expression "puVar25[2] = uVar20" (subscript_expression "puVar25[2]" (identifier "puVar25") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "uVar20")) (; ";")) (if_statement "if (puVar22[2] != 0) {\n          puVar25[2] = (iVar12 + iVar6 * -0xc >> 2) * 0x55555555 + puVar22[2];\n        }" (if "if") (parenthesized_expression "(puVar22[2] != 0)" (( "(") (binary_expression "puVar22[2] != 0" (subscript_expression "puVar22[2]" (identifier "puVar22") ([ "[") (number_literal "2") (] "]")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          puVar25[2] = (iVar12 + iVar6 * -0xc >> 2) * 0x55555555 + puVar22[2];\n        }" ({ "{") (expression_statement "puVar25[2] = (iVar12 + iVar6 * -0xc >> 2) * 0x55555555 + puVar22[2];" (assignment_expression "puVar25[2] = (iVar12 + iVar6 * -0xc >> 2) * 0x55555555 + puVar22[2]" (subscript_expression "puVar25[2]" (identifier "puVar25") ([ "[") (number_literal "2") (] "]")) (= "=") (binary_expression "(iVar12 + iVar6 * -0xc >> 2) * 0x55555555 + puVar22[2]" (binary_expression "(iVar12 + iVar6 * -0xc >> 2) * 0x55555555" (parenthesized_expression "(iVar12 + iVar6 * -0xc >> 2)" (( "(") (binary_expression "iVar12 + iVar6 * -0xc >> 2" (binary_expression "iVar12 + iVar6 * -0xc" (identifier "iVar12") (+ "+") (binary_expression "iVar6 * -0xc" (identifier "iVar6") (* "*") (number_literal "-0xc"))) (>> ">>") (number_literal "2")) () ")")) (* "*") (number_literal "0x55555555")) (+ "+") (subscript_expression "puVar22[2]" (identifier "puVar22") ([ "[") (number_literal "2") (] "]")))) (; ";")) (} "}"))) (expression_statement "iVar18 = iVar18 + -1;" (assignment_expression "iVar18 = iVar18 + -1" (identifier "iVar18") (= "=") (binary_expression "iVar18 + -1" (identifier "iVar18") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "puVar22[2] = 0;" (assignment_expression "puVar22[2] = 0" (subscript_expression "puVar22[2]" (identifier "puVar22") ([ "[") (number_literal "2") (] "]")) (= "=") (number_literal "0")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar18 != -1)" (( "(") (binary_expression "iVar18 != -1" (identifier "iVar18") (!= "!=") (number_literal "-1")) () ")")) (; ";")) (} "}"))) (expression_statement "iVar18 = iVar19 + -1;" (assignment_expression "iVar18 = iVar19 + -1" (identifier "iVar18") (= "=") (binary_expression "iVar19 + -1" (identifier "iVar19") (+ "+") (number_literal "-1"))) (; ";")) (if_statement "if (iVar19 != 0) {\n      do {\n        iVar19 = iVar18 + *(int *)(iVar9 + 0x70);\n        iVar18 = iVar18 + -1;\n        FUN_00091070(iVar21,iVar19,iVar9 + 0x54);\n      } while (iVar18 != -1);\n    }" (if "if") (parenthesized_expression "(iVar19 != 0)" (( "(") (binary_expression "iVar19 != 0" (identifier "iVar19") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      do {\n        iVar19 = iVar18 + *(int *)(iVar9 + 0x70);\n        iVar18 = iVar18 + -1;\n        FUN_00091070(iVar21,iVar19,iVar9 + 0x54);\n      } while (iVar18 != -1);\n    }" ({ "{") (do_statement "do {\n        iVar19 = iVar18 + *(int *)(iVar9 + 0x70);\n        iVar18 = iVar18 + -1;\n        FUN_00091070(iVar21,iVar19,iVar9 + 0x54);\n      } while (iVar18 != -1);" (do "do") (compound_statement "{\n        iVar19 = iVar18 + *(int *)(iVar9 + 0x70);\n        iVar18 = iVar18 + -1;\n        FUN_00091070(iVar21,iVar19,iVar9 + 0x54);\n      }" ({ "{") (expression_statement "iVar19 = iVar18 + *(int *)(iVar9 + 0x70);" (assignment_expression "iVar19 = iVar18 + *(int *)(iVar9 + 0x70)" (identifier "iVar19") (= "=") (binary_expression "iVar18 + *(int *)(iVar9 + 0x70)" (identifier "iVar18") (+ "+") (pointer_expression "*(int *)(iVar9 + 0x70)" (* "*") (cast_expression "(int *)(iVar9 + 0x70)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar9 + 0x70)" (( "(") (binary_expression "iVar9 + 0x70" (identifier "iVar9") (+ "+") (number_literal "0x70")) () ")")))))) (; ";")) (expression_statement "iVar18 = iVar18 + -1;" (assignment_expression "iVar18 = iVar18 + -1" (identifier "iVar18") (= "=") (binary_expression "iVar18 + -1" (identifier "iVar18") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "FUN_00091070(iVar21,iVar19,iVar9 + 0x54);" (call_expression "FUN_00091070(iVar21,iVar19,iVar9 + 0x54)" (identifier "FUN_00091070") (argument_list "(iVar21,iVar19,iVar9 + 0x54)" (( "(") (identifier "iVar21") (, ",") (identifier "iVar19") (, ",") (binary_expression "iVar9 + 0x54" (identifier "iVar9") (+ "+") (number_literal "0x54")) () ")"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar18 != -1)" (( "(") (binary_expression "iVar18 != -1" (identifier "iVar18") (!= "!=") (number_literal "-1")) () ")")) (; ";")) (} "}"))) (} "}")))) (return_statement "return;" (return "return") (; ";")) (labeled_statement "LAB_00094994:\n  if (bVar2) {\n    FUN_000901cc(&local_98,10,0);\n  }" (statement_identifier "LAB_00094994") (: ":") (if_statement "if (bVar2) {\n    FUN_000901cc(&local_98,10,0);\n  }" (if "if") (parenthesized_expression "(bVar2)" (( "(") (identifier "bVar2") () ")")) (compound_statement "{\n    FUN_000901cc(&local_98,10,0);\n  }" ({ "{") (expression_statement "FUN_000901cc(&local_98,10,0);" (call_expression "FUN_000901cc(&local_98,10,0)" (identifier "FUN_000901cc") (argument_list "(&local_98,10,0)" (( "(") (pointer_expression "&local_98" (& "&") (identifier "local_98")) (, ",") (number_literal "10") (, ",") (number_literal "0") () ")"))) (; ";")) (} "}")))) (if_statement "if (*(int *)(puVar4 + 6) != 0) {\n    (*pcVar3)(puVar4);\n  }" (if "if") (parenthesized_expression "(*(int *)(puVar4 + 6) != 0)" (( "(") (binary_expression "*(int *)(puVar4 + 6) != 0" (pointer_expression "*(int *)(puVar4 + 6)" (* "*") (cast_expression "(int *)(puVar4 + 6)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar4 + 6)" (( "(") (binary_expression "puVar4 + 6" (identifier "puVar4") (+ "+") (number_literal "6")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    (*pcVar3)(puVar4);\n  }" ({ "{") (expression_statement "(*pcVar3)(puVar4);" (call_expression "(*pcVar3)(puVar4)" (parenthesized_expression "(*pcVar3)" (( "(") (pointer_expression "*pcVar3" (* "*") (identifier "pcVar3")) () ")")) (argument_list "(puVar4)" (( "(") (identifier "puVar4") () ")"))) (; ";")) (} "}"))) (expression_statement "local_cc = local_cc + 1;" (assignment_expression "local_cc = local_cc + 1" (identifier "local_cc") (= "=") (binary_expression "local_cc + 1" (identifier "local_cc") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "local_d4 = iVar19;" (assignment_expression "local_d4 = iVar19" (identifier "local_d4") (= "=") (identifier "iVar19")) (; ";")) (goto_statement "goto LAB_000945cc;" (goto "goto") (statement_identifier "LAB_000945cc") (; ";")) (} "}")))

/* WARNING: Enum "anon_enum_32": Some values do not have unique names */

void function_1(type_1 *term,type_2 top,type_2 bottom,int rect,int desel)

{
  bool bVar1;
  bool bVar2;
  int *piVar3;
  int var_19;
  int var_20;
  type_3 *var_7;
  type_4 var_11;
  int var_15;
  type_5 *ptVar8;
  type_6 var_25;
  int var_5;
  type_4 var_14;
  int var_8;
  type_4 var_13;
  type_7 *puVar13;
  type_1 *pTVar14;
  type_8 *var_17;
  type_9 uVar16;
  int var_3;
  char cVar17;
  int var_22;
  int var_12;
  int var_21;
  int var_18;
  int var_9;
  type_10 *ptVar23;
  type_8 *pwVar24;
  type_10 *ptVar25;
  int var_1;
  type_11 *var_23;
  type_11 *var_24;
  int var_4;
  int var_2;
  int var_10;
  int var_6;
  type_12 buf;
  type_8 wbuf [4];
  type_8 cbuf [16];
  char buf_1 [4];
  
  piVar3 = *(int **)(var_1 + 0x7e14c);
  var_19 = *piVar3;
  buf.buflen = 0x1400;
  buf.bufpos = 0;
  buf.textbuf = (type_8 *)(**(type_11 **)(var_1 + 0x7ce08))(0x1400,4);
  buf.textptr = buf.textbuf;
  buf.attrbuf = (int *)(**(type_11 **)(var_1 + 0x7ce08))(buf.buflen,4);
  var_5 = *(int *)(var_1 + 0x7d5f4);
  var_21 = desel;
  if (top.x == 0) {
    var_21 = 0;
  }
  var_20 = *(int *)(var_1 + 0x7d5f4);
  var_4 = desel;
  var_2 = rect;
  buf.attrptr = buf.attrbuf;
LAB_000945cc:
  bVar1 = var_2 < var_3;
  if ((bVar1) || ((var_2 == var_3 && (var_4 < top.y)))) {
    var_7 = (type_3 *)(*(type_11 *)(var_5 + 0x2a9c))(term,var_2,0x1595,0);
    var_6 = term->cols;
    if ((*var_7 & 0x10) == 0) {
      if (var_6 != 0) {
        var_8 = *(int *)(var_7 + 10) + var_6 * 0xc;
        do {
          if ((((*(type_4 *)(var_8 + -0xc) != 0x20) &&
               ((*(type_4 *)(var_8 + -0xc) & 0xfffffcff) != 0xd820)) || (*(int *)(var_8 + -4) != 0))
             || (var_6 <= var_4)) break;
          var_6 = var_6 + -1;
          var_8 = var_8 + -0xc;
        } while (var_6 != 0);
      }
      if (bVar1) {
        var_10 = var_2;
        bVar2 = true;
      }
      else if (var_2 == var_3) {
        bVar2 = var_6 < top.y;
        var_10 = var_2;
      }
      else {
        bVar2 = false;
        var_10 = var_2;
      }
    }
    else if ((*var_7 & 0x20) == 0) {
      bVar2 = false;
      var_10 = var_2;
    }
    else if (var_6 == 0) {
      bVar2 = false;
      var_10 = var_2 + -1;
    }
    else {
      bVar2 = false;
      var_10 = var_2;
      var_6 = var_6 + -1;
    }
    var_8 = var_4;
    if ((top.x != 0) && (bVar2 = bVar1, top.y < var_6)) {
      var_6 = top.y;
    }
joined_r0x00094680:
    do {
      var_9 = var_8;
      if (((!bVar1) && ((var_2 != var_3 || (top.y <= var_9)))) ||
         ((var_10 <= var_2 && ((var_10 != var_2 || (var_6 <= var_9))))))
      goto LAB_00094994;
      var_11 = *(type_4 *)(*(int *)(var_7 + 10) + var_9 * 0xc);
      if (var_11 != 0xdfff) {
        var_13 = var_11 & 0xffffff00;
        var_12 = var_9 * 0xc;
        var_18 = *(int *)(*(int *)(var_7 + 10) + var_12 + 4);
        var_14 = var_11 & 0xff;
        var_4 = var_9;
        if (var_13 == 0xd900) goto LAB_00094804;
        do {
          if (var_13 == 0xda00) {
            var_11 = term->ucsdata->unitab_scoacs[var_14];
            var_13 = var_11 & 0xffffff00;
            var_14 = var_11 & 0xff;
          }
          else if (var_13 == 0xd800) {
            puVar13 = term->ucsdata;
            goto LAB_0009491c;
          }
joined_r0x00094728:
          if (var_13 == 0xf000) {
            var_8 = var_14 + 0x404;
LAB_00094740:
            var_11 = term->ucsdata->unitab_scoacs[var_8 + -4];
            var_14 = var_11 & 0xff;
          }
          else if (var_13 == 0xf100) {
            var_8 = var_14 + 0x204;
            goto LAB_00094740;
          }
          var_8 = var_4 + 1;
          cbuf[1] = 0;
          var_22 = var_8;
          cbuf[0] = var_11;
          if (((var_11 & 0xfffffe00) == 0xf000) && ((var_11 & 0xe0) != 0)) {
            if (var_14 != 0x7f) {
              cVar17 = (char)var_11;
              var_15 = (**(type_11 **)(var_1 + 0x7d674))(term->ucsdata->font_codepage,(int)cVar17);
              buf_1[0] = cVar17;
              if (var_15 == 0) {
                var_15 = (**(type_11 **)(var_1 + 0x7d0e8))
                                  (term->ucsdata->font_codepage,0,buf_1,1,wbuf,4);
              }
              else {
                buf_1[1] = (char)*(type_13 *)(*(int *)(var_7 + 10) + var_8 * 0xc);
                var_15 = (**(type_11 **)(var_1 + 0x7d0e8))
                                  (term->ucsdata->font_codepage,0,buf_1,2,wbuf,4);
                var_22 = var_4 + 2;
                var_4 = var_8;
              }
              if (0 < var_15) {
                (**(type_11 **)(var_1 + 0x7db94))(cbuf,wbuf,var_15 * 4,0x40);
                cbuf[var_15] = 0;
                var_11 = cbuf[0];
              }
              goto LAB_00094778;
            }
            var_16(&buf,var_11,var_18);
          }
          else {
LAB_00094778:
            var_8 = var_22;
            if (var_11 != 0) {
              var_14 = cbuf[1];
              var_17 = cbuf;
              while( true ) {
                var_16(&buf,var_11,var_18);
                if (var_14 == 0) break;
                var_11 = var_14;
                var_14 = var_17[2];
                var_17 = var_17 + 1;
              }
            }
          }
          var_18 = *(int *)(var_7 + 10);
          var_12 = *(int *)(var_18 + var_12 + 8);
          var_9 = var_9 + var_12;
          if (var_12 == 0) goto joined_r0x00094680;
          var_12 = var_9 * 0xc;
          var_11 = *(type_4 *)(var_18 + var_9 * 0xc);
          var_18 = *(int *)(var_18 + var_12 + 4);
          var_13 = var_11 & 0xffffff00;
          var_14 = var_11 & 0xff;
        } while (var_13 != 0xd900);
LAB_00094804:
        puVar13 = term->ucsdata;
        if (term->rawcnp == 0) {
          var_11 = puVar13->unitab_xterm[var_14];
          var_13 = var_11 & 0xffffff00;
          var_14 = var_11 & 0xff;
        }
        else {
LAB_0009491c:
          var_11 = puVar13->unitab_line[var_14];
          var_13 = var_11 & 0xffffff00;
          var_14 = var_11 & 0xff;
        }
        goto joined_r0x00094728;
      }
      var_8 = var_9 + 1;
    } while( true );
  }
  var_17 = buf.textbuf;
  (**(type_11 **)(var_1 + 0x7d678))(term->frontend,buf.textbuf,buf.attrbuf,buf.bufpos,bottom.y);
  (**(type_11 **)(var_1 + 0x7ce0c))(buf.textbuf);
  pTVar14 = (type_1 *)buf.attrbuf;
  (**(type_11 **)(var_1 + 0x7ce0c))();
  if (var_19 == *piVar3) {
    return;
  }
  var_23 = *(type_11 **)(var_1 + 0x7dde4);
  (*var_23)();
  var_21 = 1;
  if ((int)var_17 < 0) {
    var_21 = -1;
    var_17 = (type_8 *)-(int)var_17;
  }
  var_19 = pTVar14->cols;
  var_5 = (pTVar14->curs).x;
  var_8 = (pTVar14->curs).y;
  var_20 = (pTVar14->selend).y;
  pwVar24 = (type_8 *)(var_19 - var_5);
  if ((int)pwVar24 <= (int)var_17) {
    var_17 = pwVar24;
  }
  var_9 = (int)pwVar24 - (int)var_17;
  if (((var_8 < var_20) || ((var_8 == var_20 && (var_5 < (pTVar14->selend).x)))) &&
     ((var_12 = (pTVar14->selstart).y, var_12 < var_8 ||
      ((var_8 == var_12 && ((pTVar14->selstart).x < var_19)))))) {
    var_22 = var_5 + (int)var_17;
    var_18 = var_19;
    if (var_21 == 1) {
      var_18 = var_19 - (int)var_17;
      var_22 = var_5;
    }
    if ((var_8 < var_12) || ((var_8 == var_12 && (var_22 <= (pTVar14->selstart).x)))) {
      if (var_20 < var_8) {
        var_20 = (pTVar14->selend).x;
      }
      else if ((var_8 != var_20) || (var_20 = (pTVar14->selend).x, var_18 < var_20))
      goto LAB_00094e08;
      var_12 = var_21 * (int)var_17 + (pTVar14->selstart).x;
      var_20 = var_21 * (int)var_17 + var_20;
      (pTVar14->selstart).x = var_12;
      (pTVar14->selend).x = var_20;
      if (var_12 < var_5) goto LAB_000950ac;
      if (var_12 < var_19) {
        if (var_5 < var_20) {
          if (var_19 < var_20) {
            var_8 = *(int *)(var_23 + 0x7c740) + 0x5830;
            (**(type_11 **)(var_23 + 0x7d398))
                      (*(int *)(var_23 + 0x7c740) + 0x5a84,var_8,0x9e0,
                       *(int *)(var_23 + 0x7c740) + 0x6200);
            goto LAB_00094ebc;
          }
          goto LAB_00094c48;
        }
        (**(type_11 **)(var_23 + 0x7d398))
                  (*(int *)(var_23 + 0x7c740) + 0x5a64,*(int *)(var_23 + 0x7c740) + 0x5830,0x9df,
                   *(int *)(var_23 + 0x7c740) + 0x6200);
      }
      (**(type_11 **)(var_23 + 0x7d398))
                (*(int *)(var_23 + 0x7c740) + 0x5a44,*(int *)(var_23 + 0x7c740) + 0x5830,0x9de,
                 *(int *)(var_23 + 0x7c740) + 0x6200);
LAB_000950ac:
      var_21 = 0x9dd;
      var_24 = *(type_11 **)(var_23 + 0x7d398);
      pTVar14 = (type_1 *)(*(int *)(var_23 + 0x7c740) + 0x5a20);
      (*var_24)(pTVar14,*(int *)(var_23 + 0x7c740) + 0x5830,0x9dd,
                 *(int *)(var_23 + 0x7c740) + 0x6200);
      var_23 = *(type_11 **)(var_24 + 0x7ca90);
      pTVar14->window_update_pending = 0;
      var_25 = (type_6)(*var_23)(pTVar14->frontend);
      if (var_25 != (type_6)0x0) {
        if (pTVar14->seen_disp_event != 0) {
          if (pTVar14->scroll_on_disp != 0) {
            pTVar14->disptop = 0;
            pTVar14->seen_disp_event = 0;
          }
          var_26(pTVar14);
        }
        var_27(pTVar14,var_25,var_21);
        (**(type_11 **)(var_24 + 0x7ca94))
                  (pTVar14->frontend,(pTVar14->curs).x,(pTVar14->curs).y - pTVar14->disptop);
                    /* WARNING: Could not recover jumptable at 0x0009518c. Too many branches */
                    /* WARNING: Treating indirect jump as call */
        (**(type_11 **)(var_24 + 0x7ca98))(var_25);
        return;
      }
      return;
    }
LAB_00094e08:
    pTVar14->selstate = ADDRTYPE_UNSPEC;
    (pTVar14->selend).y = 0;
    (pTVar14->selend).x = 0;
    (pTVar14->selstart).y = 0;
    (pTVar14->selstart).x = 0;
  }
LAB_00094c48:
  if ((0 < var_5) && (var_5 <= var_19)) {
    var_28(pTVar14,var_5,var_8);
    var_8 = (pTVar14->curs).y;
  }
  if (var_21 != -1) {
    var_21 = var_9 + -1;
    ptVar8 = var_29(pTVar14,var_8,0x9eb,1);
    if (var_9 != 0) {
      var_19 = *(int *)(var_23 + 0x7cf20);
      do {
        var_5 = var_21 + (pTVar14->curs).x;
        var_8 = ((int)var_17 + var_5) * 0xc;
        ptVar23 = ptVar8->chars + var_5;
        ptVar25 = ptVar8->chars + (int)var_17 + var_5;
        (*(type_11 *)(var_19 + 0xab0))(ptVar8,(var_8 >> 2) * -0x55555555);
        var_20 = ptVar23->cc_next;
        uVar16 = ptVar23->attr;
        ptVar25->var_11 = ptVar23->var_11;
        ptVar25->attr = uVar16;
        ptVar25->cc_next = var_20;
        if (ptVar23->cc_next != 0) {
          ptVar25->cc_next = (var_8 + var_5 * -0xc >> 2) * 0x55555555 + ptVar23->cc_next;
        }
        var_21 = var_21 + -1;
        ptVar23->cc_next = 0;
      } while (var_21 != -1);
    }
    var_21 = (int)var_17 + -1;
    if (var_17 == (type_8 *)0x0) {
      return;
    }
    do {
      var_19 = var_21 + (pTVar14->curs).x;
      var_21 = var_21 + -1;
      var_30(ptVar8,var_19,&pTVar14->erase_char);
    } while (var_21 != -1);
    return;
  }
LAB_00094ebc:
  var_21 = (int)var_17 + (pTVar14->curs).x;
  if ((0 < var_21) && (var_21 <= pTVar14->cols)) {
    var_28(pTVar14,var_21,var_8);
    var_8 = (pTVar14->curs).y;
  }
  ptVar8 = var_29(pTVar14,var_8,0x9eb,1);
  if (0 < var_9) {
    var_21 = *(int *)(var_23 + 0x7cf20);
    var_19 = 0;
    do {
      var_5 = var_19 + (pTVar14->curs).x;
      ptVar23 = ptVar8->chars + var_5 + (int)var_17;
      ptVar25 = ptVar8->chars + var_5;
      (*(type_11 *)(var_21 + 0xab0))(ptVar8,(var_5 * 0xc >> 2) * -0x55555555);
      var_20 = ptVar23->cc_next;
      uVar16 = ptVar23->attr;
      ptVar25->var_11 = ptVar23->var_11;
      ptVar25->attr = uVar16;
      ptVar25->cc_next = var_20;
      if (ptVar23->cc_next != 0) {
        ptVar25->cc_next =
             (var_5 * 0xc + (var_5 + (int)var_17) * -0xc >> 2) * 0x55555555 + ptVar23->cc_next;
      }
      var_19 = var_19 + 1;
      ptVar23->cc_next = 0;
    } while (var_9 != var_19);
  }
  if (var_17 == (type_8 *)0x0) {
    return;
  }
  var_21 = var_9;
  do {
    var_19 = var_21 + 1;
    var_30(ptVar8,var_21 + (pTVar14->curs).x,&pTVar14->erase_char);
    var_21 = var_19;
  } while (var_19 != (int)var_17 + var_9);
  return;
LAB_00094994:
  if (bVar2) {
    var_16(&buf,10,0);
  }
  if (*(int *)(var_7 + 6) != 0) {
    (*(type_11 *)(var_20 + 0x1270))(var_7);
  }
  var_2 = var_2 + 1;
  var_4 = var_21;
  goto LAB_000945cc;
}


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

void MASKED(int param_1,int param_2,int param_3,int param_4,int param_5,int param_6,
                 undefined4 param_7)

{
  bool bVar1;
  bool bVar2;
  code *pcVar3;
  ushort *puVar4;
  uint uVar5;
  int iVar6;
  code *pcVar7;
  uint uVar8;
  int iVar9;
  int iVar10;
  uint uVar11;
  int iVar12;
  undefined4 uVar13;
  int iVar14;
  char cVar16;
  int iVar15;
  int iVar17;
  int iVar18;
  int iVar19;
  undefined4 uVar20;
  int iVar21;
  undefined4 *puVar22;
  uint *puVar23;
  int iVar24;
  undefined4 *puVar25;
  undefined *puVar26;
  int local_d4;
  int local_cc;
  int local_c8;
  int local_c0;
  undefined4 local_98;
  undefined4 local_94;
  int local_90;
  int local_8c;
  int local_88;
  int local_84;
  undefined1 auStack_80 [16];
  uint local_70 [16];
  char local_30;
  undefined1 local_2f;
  int local_2c;
  
  puVar26 = PTR___stack_chk_guard_00112630;
  local_2c = *(int *)PTR___stack_chk_guard_00112630;
  local_98 = 0x1400;
  local_94 = 0;
  local_90 = (*(code *)PTR_safemalloc_001112ec)(0x1400,4);
  local_8c = local_90;
  local_88 = (*(code *)PTR_safemalloc_001112ec)(local_98,4);
  pcVar7 = (code *)(PTR_LAB_00111ad8 + 0x2a9c);
  iVar19 = param_3;
  if (param_6 == 0) {
    iVar19 = 0;
  }
  pcVar3 = (code *)(PTR_LAB_00111ad8 + 0x1270);
  local_d4 = param_3;
  local_cc = param_2;
  local_84 = local_88;
LAB_000945cc:
  bVar1 = local_cc < param_4;
  if ((bVar1) || ((local_cc == param_4 && (local_d4 < param_5)))) {
    puVar4 = (ushort *)(*pcVar7)(param_1,local_cc,0x1595,0);
    local_c0 = *(int *)(param_1 + 300);
    if ((*puVar4 & 0x10) == 0) {
      if (local_c0 != 0) {
        iVar9 = *(int *)(puVar4 + 10) + local_c0 * 0xc;
        do {
          if ((((*(uint *)(iVar9 + -0xc) != 0x20) &&
               ((*(uint *)(iVar9 + -0xc) & 0xfffffcff) != 0xd820)) || (*(int *)(iVar9 + -4) != 0))
             || (local_c0 <= local_d4)) break;
          local_c0 = local_c0 + -1;
          iVar9 = iVar9 + -0xc;
        } while (local_c0 != 0);
      }
      if (bVar1) {
        local_c8 = local_cc;
        bVar2 = true;
      }
      else if (local_cc == param_4) {
        bVar2 = local_c0 < param_5;
        local_c8 = local_cc;
      }
      else {
        bVar2 = false;
        local_c8 = local_cc;
      }
    }
    else if ((*puVar4 & 0x20) == 0) {
      bVar2 = false;
      local_c8 = local_cc;
    }
    else if (local_c0 == 0) {
      bVar2 = false;
      local_c8 = local_cc + -1;
    }
    else {
      bVar2 = false;
      local_c8 = local_cc;
      local_c0 = local_c0 + -1;
    }
    iVar9 = local_d4;
    if ((param_6 != 0) && (bVar2 = bVar1, param_5 < local_c0)) {
      local_c0 = param_5;
    }
joined_r0x00094680:
    do {
      iVar21 = iVar9;
      if (((!bVar1) && ((local_cc != param_4 || (param_5 <= iVar21)))) ||
         ((local_c8 <= local_cc && ((local_c8 != local_cc || (local_c0 <= iVar21))))))
      goto LAB_00094994;
      uVar5 = *(uint *)(*(int *)(puVar4 + 10) + iVar21 * 0xc);
      if (uVar5 != 0xdfff) {
        uVar11 = uVar5 & 0xffffff00;
        iVar18 = iVar21 * 0xc;
        uVar20 = *(undefined4 *)(*(int *)(puVar4 + 10) + iVar18 + 4);
        uVar8 = uVar5 & 0xff;
        local_d4 = iVar21;
        if (uVar11 == 0xd900) goto LAB_00094804;
        do {
          if (uVar11 == 0xda00) {
            uVar5 = *(uint *)(*(int *)(param_1 + 0x1090) + (uVar8 + 4) * 4);
            uVar11 = uVar5 & 0xffffff00;
            uVar8 = uVar5 & 0xff;
          }
          else if (uVar11 == 0xd800) {
            iVar9 = *(int *)(param_1 + 0x1090);
            goto LAB_0009491c;
          }
joined_r0x00094728:
          if (uVar11 == 0xf000) {
            iVar9 = uVar8 + 0x404;
LAB_00094740:
            uVar5 = *(uint *)(*(int *)(param_1 + 0x1090) + iVar9 * 4);
            uVar8 = uVar5 & 0xff;
          }
          else if (uVar11 == 0xf100) {
            iVar9 = uVar8 + 0x204;
            goto LAB_00094740;
          }
          iVar9 = local_d4 + 1;
          local_70[1] = 0;
          iVar10 = iVar9;
          local_70[0] = uVar5;
          if (((uVar5 & 0xfffffe00) == 0xf000) && ((uVar5 & 0xe0) != 0)) {
            if (uVar8 != 0x7f) {
              cVar16 = (char)uVar5;
              iVar6 = (*(code *)PTR_is_dbcs_leadbyte_00111b58)
                                (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),(int)cVar16);
              local_30 = cVar16;
              if (iVar6 == 0) {
                iVar6 = (*(code *)PTR_mb_to_wc_001115cc)
                                  (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),0,&local_30,1,
                                   auStack_80,4);
              }
              else {
                local_2f = (undefined1)*(undefined4 *)(*(int *)(puVar4 + 10) + iVar9 * 0xc);
                iVar6 = (*(code *)PTR_mb_to_wc_001115cc)
                                  (*(undefined4 *)(*(int *)(param_1 + 0x1090) + 8),0,&local_30,2,
                                   auStack_80,4);
                iVar10 = local_d4 + 2;
                local_d4 = iVar9;
              }
              if (0 < iVar6) {
                (*(code *)PTR___memcpy_chk_00112078)(local_70,auStack_80,iVar6 * 4,0x40);
                local_70[iVar6] = 0;
                uVar5 = local_70[0];
              }
              goto LAB_00094778;
            }
            FUN_000901cc(&local_98,uVar5,uVar20);
          }
          else {
LAB_00094778:
            iVar9 = iVar10;
            if (uVar5 != 0) {
              uVar8 = local_70[1];
              puVar23 = local_70;
              while( true ) {
                FUN_000901cc(&local_98,uVar5,uVar20);
                if (uVar8 == 0) break;
                uVar5 = uVar8;
                uVar8 = puVar23[2];
                puVar23 = puVar23 + 1;
              }
            }
          }
          iVar10 = *(int *)(puVar4 + 10);
          iVar18 = *(int *)(iVar10 + iVar18 + 8);
          iVar21 = iVar21 + iVar18;
          if (iVar18 == 0) goto joined_r0x00094680;
          iVar18 = iVar21 * 0xc;
          uVar5 = *(uint *)(iVar10 + iVar21 * 0xc);
          uVar20 = *(undefined4 *)(iVar10 + iVar18 + 4);
          uVar11 = uVar5 & 0xffffff00;
          uVar8 = uVar5 & 0xff;
        } while (uVar11 != 0xd900);
LAB_00094804:
        iVar9 = *(int *)(param_1 + 0x1090);
        if (*(int *)(param_1 + 0x1158) == 0) {
          uVar5 = *(uint *)(iVar9 + (uVar8 + 0x304) * 4);
          uVar11 = uVar5 & 0xffffff00;
          uVar8 = uVar5 & 0xff;
        }
        else {
LAB_0009491c:
          uVar5 = *(uint *)(iVar9 + (uVar8 + 0x104) * 4);
          uVar11 = uVar5 & 0xffffff00;
          uVar8 = uVar5 & 0xff;
        }
        goto joined_r0x00094728;
      }
      iVar9 = iVar21 + 1;
    } while( true );
  }
  iVar19 = local_90;
  (*(code *)PTR_write_clip_00111b5c)
            (*(undefined4 *)(param_1 + 0x1088),local_90,local_88,local_94,param_7);
  (*(code *)PTR_safefree_001112f0)(local_90);
  iVar9 = local_88;
  (*(code *)PTR_safefree_001112f0)();
  if (local_2c == *(int *)puVar26) {
    return;
  }
  puVar26 = PTR___stack_chk_fail_001122c8;
  (*(code *)PTR___stack_chk_fail_001122c8)();
  iVar21 = 1;
  if (iVar19 < 0) {
    iVar21 = -1;
    iVar19 = -iVar19;
  }
  iVar18 = *(int *)(iVar9 + 300);
  iVar10 = *(int *)(iVar9 + 0x70);
  iVar12 = *(int *)(iVar9 + 0x6c);
  iVar6 = *(int *)(iVar9 + 0xe5c);
  iVar24 = iVar18 - iVar10;
  if (iVar24 <= iVar19) {
    iVar19 = iVar24;
  }
  iVar24 = iVar24 - iVar19;
  if (((iVar6 <= iVar12) && ((iVar12 != iVar6 || (*(int *)(iVar9 + 0xe60) <= iVar10)))) ||
     ((iVar14 = *(int *)(iVar9 + 0xe54), iVar12 <= iVar14 &&
      ((iVar12 != iVar14 || (iVar18 <= *(int *)(iVar9 + 0xe58))))))) goto LAB_00094c48;
  iVar17 = iVar10 + iVar19;
  iVar15 = iVar18;
  if (iVar21 == 1) {
    iVar15 = iVar18 - iVar19;
    iVar17 = iVar10;
  }
  if ((iVar12 < iVar14) || ((iVar12 == iVar14 && (iVar17 <= *(int *)(iVar9 + 0xe58))))) {
    if (iVar6 < iVar12) {
      iVar6 = *(int *)(iVar9 + 0xe60);
    }
    else if ((iVar12 != iVar6) || (iVar6 = *(int *)(iVar9 + 0xe60), iVar15 < iVar6))
    goto LAB_00094e08;
    iVar14 = iVar21 * iVar19 + *(int *)(iVar9 + 0xe58);
    iVar6 = iVar21 * iVar19 + iVar6;
    *(int *)(iVar9 + 0xe58) = iVar14;
    *(int *)(iVar9 + 0xe60) = iVar6;
    if (iVar14 < iVar10) {
      (**(code **)(puVar26 + 0x7d398))
                (*(int *)(puVar26 + 0x7c740) + 0x5a20,*(int *)(puVar26 + 0x7c740) + 0x5830,0x9dd,
                 *(int *)(puVar26 + 0x7c740) + 0x6200);
      return;
    }
    if (iVar18 <= iVar14) {
      (**(code **)(puVar26 + 0x7d398))
                (*(int *)(puVar26 + 0x7c740) + 0x5a44,*(int *)(puVar26 + 0x7c740) + 0x5830,0x9de,
                 *(int *)(puVar26 + 0x7c740) + 0x6200);
      return;
    }
    if (iVar6 <= iVar10) {
      (**(code **)(puVar26 + 0x7d398))
                (*(int *)(puVar26 + 0x7c740) + 0x5a64,*(int *)(puVar26 + 0x7c740) + 0x5830,0x9df,
                 *(int *)(puVar26 + 0x7c740) + 0x6200);
      return;
    }
    if (iVar18 < iVar6) {
      (**(code **)(puVar26 + 0x7d398))
                (*(int *)(puVar26 + 0x7c740) + 0x5a84,*(int *)(puVar26 + 0x7c740) + 0x5830,0x9e0,
                 *(int *)(puVar26 + 0x7c740) + 0x6200);
      return;
    }
  }
  else {
LAB_00094e08:
    *(undefined4 *)(iVar9 + 0xe48) = 0;
    *(undefined4 *)(iVar9 + 0xe5c) = 0;
    *(undefined4 *)(iVar9 + 0xe60) = 0;
    *(undefined4 *)(iVar9 + 0xe54) = 0;
    *(undefined4 *)(iVar9 + 0xe58) = 0;
  }
LAB_00094c48:
  if ((0 < iVar10) && (iVar10 <= iVar18)) {
    FUN_00092d1c(iVar9,iVar10,iVar12);
    iVar12 = *(int *)(iVar9 + 0x6c);
  }
  if (iVar21 == -1) {
    iVar21 = iVar19 + *(int *)(iVar9 + 0x70);
    if ((0 < iVar21) && (iVar21 <= *(int *)(iVar9 + 300))) {
      FUN_00092d1c(iVar9,iVar21,iVar12,1);
      iVar12 = *(int *)(iVar9 + 0x6c);
    }
    iVar21 = FUN_00092a9c(iVar9,iVar12,0x9eb,1);
    if (0 < iVar24) {
      iVar18 = *(int *)(puVar26 + 0x7cf20);
      iVar10 = 0;
      do {
        iVar6 = iVar10 + *(int *)(iVar9 + 0x70);
        iVar12 = iVar6 + iVar19;
        iVar6 = iVar6 * 0xc;
        puVar22 = (undefined4 *)(*(int *)(iVar21 + 0x14) + iVar12 * 0xc);
        puVar25 = (undefined4 *)(*(int *)(iVar21 + 0x14) + iVar6);
        (*(code *)(iVar18 + 0xab0))(iVar21,(iVar6 >> 2) * -0x55555555);
        uVar20 = puVar22[2];
        uVar13 = puVar22[1];
        *puVar25 = *puVar22;
        puVar25[1] = uVar13;
        puVar25[2] = uVar20;
        if (puVar22[2] != 0) {
          puVar25[2] = (iVar6 + iVar12 * -0xc >> 2) * 0x55555555 + puVar22[2];
        }
        iVar10 = iVar10 + 1;
        puVar22[2] = 0;
      } while (iVar24 != iVar10);
    }
    if (iVar19 != 0) {
      iVar18 = iVar24;
      do {
        iVar10 = iVar18 + 1;
        FUN_00091070(iVar21,iVar18 + *(int *)(iVar9 + 0x70),iVar9 + 0x54);
        iVar18 = iVar10;
      } while (iVar10 != iVar19 + iVar24);
      return;
    }
  }
  else {
    iVar18 = iVar24 + -1;
    iVar21 = FUN_00092a9c(iVar9,iVar12,0x9eb,1);
    if (iVar24 != 0) {
      iVar10 = *(int *)(puVar26 + 0x7cf20);
      do {
        iVar6 = iVar18 + *(int *)(iVar9 + 0x70);
        iVar12 = (iVar19 + iVar6) * 0xc;
        puVar22 = (undefined4 *)(*(int *)(iVar21 + 0x14) + iVar6 * 0xc);
        puVar25 = (undefined4 *)(*(int *)(iVar21 + 0x14) + iVar12);
        (*(code *)(iVar10 + 0xab0))(iVar21,(iVar12 >> 2) * -0x55555555);
        uVar20 = puVar22[2];
        uVar13 = puVar22[1];
        *puVar25 = *puVar22;
        puVar25[1] = uVar13;
        puVar25[2] = uVar20;
        if (puVar22[2] != 0) {
          puVar25[2] = (iVar12 + iVar6 * -0xc >> 2) * 0x55555555 + puVar22[2];
        }
        iVar18 = iVar18 + -1;
        puVar22[2] = 0;
      } while (iVar18 != -1);
    }
    iVar18 = iVar19 + -1;
    if (iVar19 != 0) {
      do {
        iVar19 = iVar18 + *(int *)(iVar9 + 0x70);
        iVar18 = iVar18 + -1;
        FUN_00091070(iVar21,iVar19,iVar9 + 0x54);
      } while (iVar18 != -1);
    }
  }
  return;
LAB_00094994:
  if (bVar2) {
    FUN_000901cc(&local_98,10,0);
  }
  if (*(int *)(puVar4 + 6) != 0) {
    (*pcVar3)(puVar4);
  }
  local_cc = local_cc + 1;
  local_d4 = iVar19;
  goto LAB_000945cc;
}

