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

void erase_lots(Terminal *term,int line_only,int from_begin,int to_end)

{
  bool bVar1;
  bool bVar2;
  pos from;
  pos to;
  bool bVar3;
  bool bVar4;
  int iVar5;
  termline *ptVar6;
  int iVar7;
  int iVar8;
  int iVar9;
  Terminal *term_00;
  uint x;
  uint y;
  uint y_00;
  uint uVar10;
  uint lines;
  uint uVar11;
  int in_stack_ffffffac;
  undefined1 *puVar12;
  int in_stack_ffffffb4;
  
  puVar12 = &_gp;
  if (line_only == 0) {
    lines = term->rows;
    bVar3 = true;
    y = 0;
    if (from_begin != 0) goto LAB_00095da4;
LAB_00095d68:
    x = (term->curs).x;
    y_00 = (term->curs).y;
    uVar10 = y_00 | x;
    y = y_00;
    uVar11 = x;
    if (to_end == 0) {
      if (term->cols == x) {
LAB_00095dc0:
        lines = y_00 + 1;
        from_begin = 0;
      }
      else {
LAB_00095d88:
        from_begin = x + 1;
        lines = y_00;
      }
    }
    if ((0 < (int)x) && ((int)x <= term->cols)) {
      check_boundary(term,x,y_00);
    }
  }
  else {
    y = (term->curs).y;
    bVar3 = false;
    lines = y + 1;
    if (from_begin == 0) goto LAB_00095d68;
LAB_00095da4:
    uVar11 = 0;
    uVar10 = y;
    if (to_end == 0) {
      x = (term->curs).x;
      y_00 = (term->curs).y;
      if (term->cols == x) goto LAB_00095dc0;
      goto LAB_00095d88;
    }
    from_begin = 0;
  }
  from.y = from_begin;
  from.x = in_stack_ffffffac;
  to.y = (int)puVar12;
  to.x = in_stack_ffffffb4;
  term_00 = term;
  check_selection(term,from,to);
  if (uVar10 == 0) {
    if (term->rows == lines) {
      term_invalidate(term_00);
    }
    if ((from_begin != 0) || (!bVar3)) goto LAB_00095e48;
    bVar4 = bVar3;
    if (term->erase_to_scrollback != 0) {
      if (term->rows == lines) {
        iVar5 = find_last_nonempty_line(term,term->screen);
        lines = iVar5 + 1;
      }
      if (0 < (int)lines) {
        scroll(term,0,lines - 1,lines,1);
      }
      goto LAB_00095ff4;
    }
  }
  else {
LAB_00095e48:
    bVar4 = false;
  }
  iVar5 = *(int *)(puVar12 + -0x77d8);
  ptVar6 = lineptr(term,y,0x99b,1);
  bVar1 = (int)y < (int)lines;
  iVar7 = *(int *)(puVar12 + -0x77d8);
  iVar8 = *(int *)(puVar12 + -0x77d8);
LAB_00095e94:
  if (bVar1) goto LAB_00095eb0;
  if (y == lines) {
    bVar2 = (int)uVar11 < from_begin;
    do {
      if (!bVar2) break;
LAB_00095eb0:
      do {
        uVar10 = ptVar6->cols;
        if (term->cols != uVar10) {
          (*(code *)(iVar7 + 0xb64))(term,ptVar6);
          uVar10 = term->cols;
        }
        if (uVar11 == uVar10) {
          if (!bVar3) {
            ptVar6->lattr = ptVar6->lattr & 0xffcf;
            goto LAB_00095eec;
          }
          iVar9 = term->rows;
          ptVar6->lattr = 0;
          if ((int)(y + 1) < iVar9) goto LAB_00095f88;
        }
        else {
          (*(code *)(iVar8 + 0x1070))(ptVar6,uVar11,&term->erase_char);
          if (term->cols != uVar11) {
            uVar11 = uVar11 + 1;
            goto LAB_00095e94;
          }
LAB_00095eec:
          if ((int)(y + 1) < term->rows) {
LAB_00095f88:
            y = y + 1;
            ptVar6 = (termline *)(*(code *)(iVar5 + 0x2a9c))(term,y,0x9a7,1);
            uVar11 = 0;
            bVar1 = (int)y < (int)lines;
            goto LAB_00095e94;
          }
        }
        y = y + 1;
        bVar1 = (int)y < (int)lines;
        uVar11 = 0;
      } while (bVar1);
      bVar2 = 0 < from_begin;
    } while (y == lines);
  }
  if (!bVar4) {
    return;
  }
LAB_00095ff4:
  if (term->alt_which != 0) {
    return;
  }
  term->tempsblines = 0;
  return;
}



void FUN_00095d10(int param_1,int param_2,int param_3,int param_4)

{
  bool bVar1;
  bool bVar2;
  bool bVar3;
  bool bVar4;
  ushort *puVar5;
  code *pcVar6;
  code *pcVar7;
  int iVar8;
  uint uVar9;
  uint uVar10;
  uint uVar11;
  uint uVar12;
  uint uVar13;
  code *pcVar14;
  uint uVar15;
  
  if (param_2 == 0) {
    uVar13 = *(uint *)(param_1 + 0x128);
    bVar3 = true;
    uVar10 = 0;
    if (param_3 != 0) goto LAB_00095da4;
LAB_00095d68:
    uVar9 = *(uint *)(param_1 + 0x70);
    uVar11 = *(uint *)(param_1 + 0x6c);
    uVar12 = uVar11 | uVar9;
    uVar10 = uVar11;
    uVar15 = uVar9;
    if (param_4 == 0) {
      if (*(uint *)(param_1 + 300) == uVar9) {
LAB_00095dc0:
        uVar13 = uVar11 + 1;
        param_3 = 0;
      }
      else {
LAB_00095d88:
        param_3 = uVar9 + 1;
        uVar13 = uVar11;
      }
    }
    if ((0 < (int)uVar9) && ((int)uVar9 <= *(int *)(param_1 + 300))) {
      FUN_00092d1c(param_1,uVar9,uVar11,uVar13);
    }
  }
  else {
    uVar10 = *(uint *)(param_1 + 0x6c);
    bVar3 = false;
    uVar13 = uVar10 + 1;
    if (param_3 == 0) goto LAB_00095d68;
LAB_00095da4:
    uVar15 = 0;
    uVar12 = uVar10;
    if (param_4 == 0) {
      uVar9 = *(uint *)(param_1 + 0x70);
      uVar11 = *(uint *)(param_1 + 0x6c);
      if (*(uint *)(param_1 + 300) == uVar9) goto LAB_00095dc0;
      goto LAB_00095d88;
    }
    param_3 = 0;
  }
  FUN_00090a2c(param_1,uVar10,uVar15,uVar13,param_3);
  if (uVar12 == 0) {
    if (*(uint *)(param_1 + 0x128) == uVar13) {
      term_invalidate();
    }
    if ((param_3 != 0) || (!bVar3)) goto LAB_00095e48;
    bVar4 = bVar3;
    if (*(int *)(param_1 + 0x1118) != 0) {
      if (*(uint *)(param_1 + 0x128) == uVar13) {
        iVar8 = FUN_00090860(param_1,*(undefined4 *)(param_1 + 8));
        uVar13 = iVar8 + 1;
      }
      if (0 < (int)uVar13) {
        FUN_0009228c(param_1,0,uVar13 - 1,uVar13,1);
      }
      goto LAB_00095ff4;
    }
  }
  else {
LAB_00095e48:
    bVar4 = false;
  }
  pcVar14 = (code *)(PTR_LAB_00111ad8 + 0x2a9c);
  puVar5 = (ushort *)FUN_00092a9c(param_1,uVar10,0x99b,1);
  bVar1 = (int)uVar10 < (int)uVar13;
  pcVar6 = (code *)(PTR_LAB_00111ad8 + 0xb64);
  pcVar7 = (code *)(PTR_LAB_00111ad8 + 0x1070);
LAB_00095e94:
  if (bVar1) goto LAB_00095eb0;
  if (uVar10 == uVar13) {
    bVar2 = (int)uVar15 < param_3;
    do {
      if (!bVar2) break;
LAB_00095eb0:
      do {
        uVar12 = *(uint *)(puVar5 + 2);
        if (*(uint *)(param_1 + 300) != uVar12) {
          (*pcVar6)(param_1,puVar5);
          uVar12 = *(uint *)(param_1 + 300);
        }
        if (uVar15 == uVar12) {
          if (!bVar3) {
            *puVar5 = *puVar5 & 0xffcf;
            goto LAB_00095eec;
          }
          iVar8 = *(int *)(param_1 + 0x128);
          *puVar5 = 0;
          if ((int)(uVar10 + 1) < iVar8) goto LAB_00095f88;
        }
        else {
          (*pcVar7)(puVar5,uVar15,param_1 + 0x54);
          if (*(uint *)(param_1 + 300) != uVar15) {
            uVar15 = uVar15 + 1;
            goto LAB_00095e94;
          }
LAB_00095eec:
          if ((int)(uVar10 + 1) < *(int *)(param_1 + 0x128)) {
LAB_00095f88:
            uVar10 = uVar10 + 1;
            puVar5 = (ushort *)(*pcVar14)(param_1,uVar10,0x9a7,1);
            uVar15 = 0;
            bVar1 = (int)uVar10 < (int)uVar13;
            goto LAB_00095e94;
          }
        }
        uVar10 = uVar10 + 1;
        bVar1 = (int)uVar10 < (int)uVar13;
        uVar15 = 0;
      } while (bVar1);
      bVar2 = 0 < param_3;
    } while (uVar10 == uVar13);
  }
  if (!bVar4) {
    return;
  }
LAB_00095ff4:
  if (*(int *)(param_1 + 0x1a4) != 0) {
    return;
  }
  *(undefined4 *)(param_1 + 0x14) = 0;
  return;
}


lui gp,0x8
addiu gp,gp,0x35a0
addu gp,gp,t9
addiu sp,sp,-0x68
sw gp,0x18(sp)
sw s6,0x58(sp)
or s6,a0,zero
sw s3,0x4c(sp)
or s3,a2,zero
sw ra,0x64(sp)
sw s8,0x60(sp)
sw s7,0x5c(sp)
sw s5,0x54(sp)
sw s4,0x50(sp)
sw s2,0x48(sp)
sw s1,0x44(sp)
beq a1,zero,0x00095d94
_sw s0,0x40(sp)
lw s0,0x6c(a0)
or s7,zero,zero
bne s3,zero,0x00095da4
_addiu s2,s0,0x1
lw a1,0x70(s6)
lw s0,0x6c(s6)
or s8,a1,zero
bne a3,zero,0x00095dcc
_or s1,s0,a1
lw v0,0x12c(s6)
beq v0,a1,0x00095dc0
_or a2,s0,zero
addiu s3,a1,0x1
b 0x00095dd0
_or s2,a2,zero
or s0,a1,zero
lw s2,0x128(a0)
beq s3,zero,0x00095d68
_li s7,0x1
bne a3,zero,0x00096030
_or s8,zero,zero
lw a1,0x70(s6)
or s1,s0,zero
lw v0,0x12c(s6)
bne v0,a1,0x00095d88
_lw a2,0x6c(s6)
addiu s2,a2,0x1
b 0x00095dd0
_or s3,zero,zero
or a2,s0,zero
blez a1,0x00095e00
_lw t9,-0x77d8(gp)
lw v0,0x12c(s6)
slt v0,v0,a1
bne v0,zero,0x00095e04
_or a3,s2,zero
lw t9,-0x77d8(gp)
addiu t9,t9,0x2d1c
bal 0x00092d1c
_or a0,s6,zero
lw gp,0x18(sp)
lw t9,-0x77d8(gp)
or a3,s2,zero
sw s3,0x10(sp)
or a1,s0,zero
or a2,s8,zero
sw s0,0x30(sp)
addiu t9,t9,0xa2c
sw s8,0x34(sp)
or a0,s6,zero
sw s2,0x38(sp)
bal 0x00090a2c
_sw s3,0x3c(sp)
bne s1,zero,0x00095e48
_lw gp,0x18(sp)
lw v0,0x128(s6)
beq v0,s2,0x0009603c
_lw t9,-0x7740(gp)
beq s3,zero,0x00095fac
_nop
sw zero,0x2c(sp)
lw v0,-0x77d8(gp)
li a3,0x1
li a2,0x99b
or a1,s0,zero
addiu t9,v0,0x2a9c
or a0,s6,zero
sw t9,0x28(sp)
bal 0x00092a9c
_addiu s5,s6,0x54
slt s1,s0,s2
lw gp,0x18(sp)
or s4,v0,zero
lw v0,-0x77d8(gp)
addiu v0,v0,0xb64
sw v0,0x24(sp)
lw v0,-0x77d8(gp)
addiu v0,v0,0x1070
sw v0,0x20(sp)
bne s1,zero,0x00095eb0
_nop
bne s0,s2,0x00095f18
_lw v0,0x2c(sp)
slt a0,s8,s3
beq a0,zero,0x00095f18
_lw v0,0x2c(sp)
lw a2,0x12c(s6)
lw a0,0x4(s4)
beq a2,a0,0x00095ed0
_lw t9,0x24(sp)
or a0,s6,zero
jalr t9
_or a1,s4,zero
lw a0,0x12c(s6)
bne s8,a0,0x00095f4c
_lw t9,0x20(sp)
bne s7,zero,0x00095f70
_nop
lhu v1,0x0(s4)
andi v1,v1,0xffcf
sh v1,0x0(s4)
lw v1,0x128(s6)
addiu s0,s0,0x1
slt v1,s0,v1
bne v1,zero,0x00095f88
_lw t9,0x28(sp)
slt s1,s0,s2
bne s1,zero,0x00095eb0
_or s8,zero,zero
beq s0,s2,0x00095ea8
_slt a0,s8,s3
lw v0,0x2c(sp)
bne v0,zero,0x00095ff4
_lw ra,0x64(sp)
lw s8,0x60(sp)
lw s7,0x5c(sp)
lw s6,0x58(sp)
lw s5,0x54(sp)
lw s4,0x50(sp)
lw s3,0x4c(sp)
lw s2,0x48(sp)
lw s1,0x44(sp)
lw s0,0x40(sp)
jr ra
_addiu sp,sp,0x68
or a0,s4,zero
or a2,s5,zero
jalr t9
_or a1,s8,zero
lw a0,0x12c(s6)
beq a0,s8,0x00095eec
_nop
b 0x00095e94
_addiu s8,s8,0x1
lw v1,0x128(s6)
addiu s0,s0,0x1
slt v1,s0,v1
beq v1,zero,0x00095f00
_sh zero,0x0(s4)
lw t9,0x28(sp)
li a3,0x1
li a2,0x9a7
or a1,s0,zero
jalr t9
_or a0,s6,zero
or s8,zero,zero
or s4,v0,zero
b 0x00095e94
_slt s1,s0,s2
beq s7,zero,0x00095e48
_nop
lw v0,0x1118(s6)
beq v0,zero,0x00096068
_nop
lw v0,0x128(s6)
beq v0,s2,0x0009604c
_lw t9,-0x77d8(gp)
blez s2,0x00095ff4
_lw t9,-0x77d8(gp)
li v0,0x1
addiu a2,s2,-0x1
or a1,zero,zero
sw v0,0x10(sp)
addiu t9,t9,0x228c
or a3,s2,zero
bal 0x0009228c
_or a0,s6,zero
lw v0,0x1a4(s6)
bne v0,zero,0x00095f20
_lw ra,0x64(sp)
lw s8,0x60(sp)
lw s7,0x5c(sp)
lw s5,0x54(sp)
lw s4,0x50(sp)
lw s3,0x4c(sp)
lw s2,0x48(sp)
lw s1,0x44(sp)
lw s0,0x40(sp)
sw zero,0x14(s6)
lw s6,0x58(sp)
jr ra
_addiu sp,sp,0x68
or s3,zero,zero
b 0x00095dfc
_or s1,s0,zero
bal 0x00095c7c
_nop
b 0x00095e40
_lw gp,0x18(sp)
or a0,s6,zero
addiu t9,t9,0x860
bal 0x00090860
_lw a1,0x8(s6)
lw gp,0x18(sp)
b 0x00095fcc
_addiu s2,v0,0x1
b 0x00095e4c
_sw s7,0x2c(sp)
(translation_unit "void FUN_00095d10(int param_1,int param_2,int param_3,int param_4)\n\n{\n  bool bVar1;\n  bool bVar2;\n  bool bVar3;\n  bool bVar4;\n  ushort *puVar5;\n  code *pcVar6;\n  code *pcVar7;\n  int iVar8;\n  uint uVar9;\n  uint uVar10;\n  uint uVar11;\n  uint uVar12;\n  uint uVar13;\n  code *pcVar14;\n  uint uVar15;\n  \n  if (param_2 == 0) {\n    uVar13 = *(uint *)(param_1 + 0x128);\n    bVar3 = true;\n    uVar10 = 0;\n    if (param_3 != 0) goto LAB_00095da4;\nLAB_00095d68:\n    uVar9 = *(uint *)(param_1 + 0x70);\n    uVar11 = *(uint *)(param_1 + 0x6c);\n    uVar12 = uVar11 | uVar9;\n    uVar10 = uVar11;\n    uVar15 = uVar9;\n    if (param_4 == 0) {\n      if (*(uint *)(param_1 + 300) == uVar9) {\nLAB_00095dc0:\n        uVar13 = uVar11 + 1;\n        param_3 = 0;\n      }\n      else {\nLAB_00095d88:\n        param_3 = uVar9 + 1;\n        uVar13 = uVar11;\n      }\n    }\n    if ((0 < (int)uVar9) && ((int)uVar9 <= *(int *)(param_1 + 300))) {\n      FUN_00092d1c(param_1,uVar9,uVar11,uVar13);\n    }\n  }\n  else {\n    uVar10 = *(uint *)(param_1 + 0x6c);\n    bVar3 = false;\n    uVar13 = uVar10 + 1;\n    if (param_3 == 0) goto LAB_00095d68;\nLAB_00095da4:\n    uVar15 = 0;\n    uVar12 = uVar10;\n    if (param_4 == 0) {\n      uVar9 = *(uint *)(param_1 + 0x70);\n      uVar11 = *(uint *)(param_1 + 0x6c);\n      if (*(uint *)(param_1 + 300) == uVar9) goto LAB_00095dc0;\n      goto LAB_00095d88;\n    }\n    param_3 = 0;\n  }\n  FUN_00090a2c(param_1,uVar10,uVar15,uVar13,param_3);\n  if (uVar12 == 0) {\n    if (*(uint *)(param_1 + 0x128) == uVar13) {\n      term_invalidate();\n    }\n    if ((param_3 != 0) || (!bVar3)) goto LAB_00095e48;\n    bVar4 = bVar3;\n    if (*(int *)(param_1 + 0x1118) != 0) {\n      if (*(uint *)(param_1 + 0x128) == uVar13) {\n        iVar8 = FUN_00090860(param_1,*(undefined4 *)(param_1 + 8));\n        uVar13 = iVar8 + 1;\n      }\n      if (0 < (int)uVar13) {\n        FUN_0009228c(param_1,0,uVar13 - 1,uVar13,1);\n      }\n      goto LAB_00095ff4;\n    }\n  }\n  else {\nLAB_00095e48:\n    bVar4 = false;\n  }\n  pcVar14 = (code *)(PTR_LAB_00111ad8 + 0x2a9c);\n  puVar5 = (ushort *)FUN_00092a9c(param_1,uVar10,0x99b,1);\n  bVar1 = (int)uVar10 < (int)uVar13;\n  pcVar6 = (code *)(PTR_LAB_00111ad8 + 0xb64);\n  pcVar7 = (code *)(PTR_LAB_00111ad8 + 0x1070);\nLAB_00095e94:\n  if (bVar1) goto LAB_00095eb0;\n  if (uVar10 == uVar13) {\n    bVar2 = (int)uVar15 < param_3;\n    do {\n      if (!bVar2) break;\nLAB_00095eb0:\n      do {\n        uVar12 = *(uint *)(puVar5 + 2);\n        if (*(uint *)(param_1 + 300) != uVar12) {\n          (*pcVar6)(param_1,puVar5);\n          uVar12 = *(uint *)(param_1 + 300);\n        }\n        if (uVar15 == uVar12) {\n          if (!bVar3) {\n            *puVar5 = *puVar5 & 0xffcf;\n            goto LAB_00095eec;\n          }\n          iVar8 = *(int *)(param_1 + 0x128);\n          *puVar5 = 0;\n          if ((int)(uVar10 + 1) < iVar8) goto LAB_00095f88;\n        }\n        else {\n          (*pcVar7)(puVar5,uVar15,param_1 + 0x54);\n          if (*(uint *)(param_1 + 300) != uVar15) {\n            uVar15 = uVar15 + 1;\n            goto LAB_00095e94;\n          }\nLAB_00095eec:\n          if ((int)(uVar10 + 1) < *(int *)(param_1 + 0x128)) {\nLAB_00095f88:\n            uVar10 = uVar10 + 1;\n            puVar5 = (ushort *)(*pcVar14)(param_1,uVar10,0x9a7,1);\n            uVar15 = 0;\n            bVar1 = (int)uVar10 < (int)uVar13;\n            goto LAB_00095e94;\n          }\n        }\n        uVar10 = uVar10 + 1;\n        bVar1 = (int)uVar10 < (int)uVar13;\n        uVar15 = 0;\n      } while (bVar1);\n      bVar2 = 0 < param_3;\n    } while (uVar10 == uVar13);\n  }\n  if (!bVar4) {\n    return;\n  }\nLAB_00095ff4:\n  if (*(int *)(param_1 + 0x1a4) != 0) {\n    return;\n  }\n  *(undefined4 *)(param_1 + 0x14) = 0;\n  return;\n}\n\n" (function_definition "void FUN_00095d10(int param_1,int param_2,int param_3,int param_4)\n\n{\n  bool bVar1;\n  bool bVar2;\n  bool bVar3;\n  bool bVar4;\n  ushort *puVar5;\n  code *pcVar6;\n  code *pcVar7;\n  int iVar8;\n  uint uVar9;\n  uint uVar10;\n  uint uVar11;\n  uint uVar12;\n  uint uVar13;\n  code *pcVar14;\n  uint uVar15;\n  \n  if (param_2 == 0) {\n    uVar13 = *(uint *)(param_1 + 0x128);\n    bVar3 = true;\n    uVar10 = 0;\n    if (param_3 != 0) goto LAB_00095da4;\nLAB_00095d68:\n    uVar9 = *(uint *)(param_1 + 0x70);\n    uVar11 = *(uint *)(param_1 + 0x6c);\n    uVar12 = uVar11 | uVar9;\n    uVar10 = uVar11;\n    uVar15 = uVar9;\n    if (param_4 == 0) {\n      if (*(uint *)(param_1 + 300) == uVar9) {\nLAB_00095dc0:\n        uVar13 = uVar11 + 1;\n        param_3 = 0;\n      }\n      else {\nLAB_00095d88:\n        param_3 = uVar9 + 1;\n        uVar13 = uVar11;\n      }\n    }\n    if ((0 < (int)uVar9) && ((int)uVar9 <= *(int *)(param_1 + 300))) {\n      FUN_00092d1c(param_1,uVar9,uVar11,uVar13);\n    }\n  }\n  else {\n    uVar10 = *(uint *)(param_1 + 0x6c);\n    bVar3 = false;\n    uVar13 = uVar10 + 1;\n    if (param_3 == 0) goto LAB_00095d68;\nLAB_00095da4:\n    uVar15 = 0;\n    uVar12 = uVar10;\n    if (param_4 == 0) {\n      uVar9 = *(uint *)(param_1 + 0x70);\n      uVar11 = *(uint *)(param_1 + 0x6c);\n      if (*(uint *)(param_1 + 300) == uVar9) goto LAB_00095dc0;\n      goto LAB_00095d88;\n    }\n    param_3 = 0;\n  }\n  FUN_00090a2c(param_1,uVar10,uVar15,uVar13,param_3);\n  if (uVar12 == 0) {\n    if (*(uint *)(param_1 + 0x128) == uVar13) {\n      term_invalidate();\n    }\n    if ((param_3 != 0) || (!bVar3)) goto LAB_00095e48;\n    bVar4 = bVar3;\n    if (*(int *)(param_1 + 0x1118) != 0) {\n      if (*(uint *)(param_1 + 0x128) == uVar13) {\n        iVar8 = FUN_00090860(param_1,*(undefined4 *)(param_1 + 8));\n        uVar13 = iVar8 + 1;\n      }\n      if (0 < (int)uVar13) {\n        FUN_0009228c(param_1,0,uVar13 - 1,uVar13,1);\n      }\n      goto LAB_00095ff4;\n    }\n  }\n  else {\nLAB_00095e48:\n    bVar4 = false;\n  }\n  pcVar14 = (code *)(PTR_LAB_00111ad8 + 0x2a9c);\n  puVar5 = (ushort *)FUN_00092a9c(param_1,uVar10,0x99b,1);\n  bVar1 = (int)uVar10 < (int)uVar13;\n  pcVar6 = (code *)(PTR_LAB_00111ad8 + 0xb64);\n  pcVar7 = (code *)(PTR_LAB_00111ad8 + 0x1070);\nLAB_00095e94:\n  if (bVar1) goto LAB_00095eb0;\n  if (uVar10 == uVar13) {\n    bVar2 = (int)uVar15 < param_3;\n    do {\n      if (!bVar2) break;\nLAB_00095eb0:\n      do {\n        uVar12 = *(uint *)(puVar5 + 2);\n        if (*(uint *)(param_1 + 300) != uVar12) {\n          (*pcVar6)(param_1,puVar5);\n          uVar12 = *(uint *)(param_1 + 300);\n        }\n        if (uVar15 == uVar12) {\n          if (!bVar3) {\n            *puVar5 = *puVar5 & 0xffcf;\n            goto LAB_00095eec;\n          }\n          iVar8 = *(int *)(param_1 + 0x128);\n          *puVar5 = 0;\n          if ((int)(uVar10 + 1) < iVar8) goto LAB_00095f88;\n        }\n        else {\n          (*pcVar7)(puVar5,uVar15,param_1 + 0x54);\n          if (*(uint *)(param_1 + 300) != uVar15) {\n            uVar15 = uVar15 + 1;\n            goto LAB_00095e94;\n          }\nLAB_00095eec:\n          if ((int)(uVar10 + 1) < *(int *)(param_1 + 0x128)) {\nLAB_00095f88:\n            uVar10 = uVar10 + 1;\n            puVar5 = (ushort *)(*pcVar14)(param_1,uVar10,0x9a7,1);\n            uVar15 = 0;\n            bVar1 = (int)uVar10 < (int)uVar13;\n            goto LAB_00095e94;\n          }\n        }\n        uVar10 = uVar10 + 1;\n        bVar1 = (int)uVar10 < (int)uVar13;\n        uVar15 = 0;\n      } while (bVar1);\n      bVar2 = 0 < param_3;\n    } while (uVar10 == uVar13);\n  }\n  if (!bVar4) {\n    return;\n  }\nLAB_00095ff4:\n  if (*(int *)(param_1 + 0x1a4) != 0) {\n    return;\n  }\n  *(undefined4 *)(param_1 + 0x14) = 0;\n  return;\n}" primitive_type (function_declarator "FUN_00095d10(int param_1,int param_2,int param_3,int param_4)" identifier (parameter_list "(int param_1,int param_2,int param_3,int param_4)" ( (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) ))) (compound_statement "{\n  bool bVar1;\n  bool bVar2;\n  bool bVar3;\n  bool bVar4;\n  ushort *puVar5;\n  code *pcVar6;\n  code *pcVar7;\n  int iVar8;\n  uint uVar9;\n  uint uVar10;\n  uint uVar11;\n  uint uVar12;\n  uint uVar13;\n  code *pcVar14;\n  uint uVar15;\n  \n  if (param_2 == 0) {\n    uVar13 = *(uint *)(param_1 + 0x128);\n    bVar3 = true;\n    uVar10 = 0;\n    if (param_3 != 0) goto LAB_00095da4;\nLAB_00095d68:\n    uVar9 = *(uint *)(param_1 + 0x70);\n    uVar11 = *(uint *)(param_1 + 0x6c);\n    uVar12 = uVar11 | uVar9;\n    uVar10 = uVar11;\n    uVar15 = uVar9;\n    if (param_4 == 0) {\n      if (*(uint *)(param_1 + 300) == uVar9) {\nLAB_00095dc0:\n        uVar13 = uVar11 + 1;\n        param_3 = 0;\n      }\n      else {\nLAB_00095d88:\n        param_3 = uVar9 + 1;\n        uVar13 = uVar11;\n      }\n    }\n    if ((0 < (int)uVar9) && ((int)uVar9 <= *(int *)(param_1 + 300))) {\n      FUN_00092d1c(param_1,uVar9,uVar11,uVar13);\n    }\n  }\n  else {\n    uVar10 = *(uint *)(param_1 + 0x6c);\n    bVar3 = false;\n    uVar13 = uVar10 + 1;\n    if (param_3 == 0) goto LAB_00095d68;\nLAB_00095da4:\n    uVar15 = 0;\n    uVar12 = uVar10;\n    if (param_4 == 0) {\n      uVar9 = *(uint *)(param_1 + 0x70);\n      uVar11 = *(uint *)(param_1 + 0x6c);\n      if (*(uint *)(param_1 + 300) == uVar9) goto LAB_00095dc0;\n      goto LAB_00095d88;\n    }\n    param_3 = 0;\n  }\n  FUN_00090a2c(param_1,uVar10,uVar15,uVar13,param_3);\n  if (uVar12 == 0) {\n    if (*(uint *)(param_1 + 0x128) == uVar13) {\n      term_invalidate();\n    }\n    if ((param_3 != 0) || (!bVar3)) goto LAB_00095e48;\n    bVar4 = bVar3;\n    if (*(int *)(param_1 + 0x1118) != 0) {\n      if (*(uint *)(param_1 + 0x128) == uVar13) {\n        iVar8 = FUN_00090860(param_1,*(undefined4 *)(param_1 + 8));\n        uVar13 = iVar8 + 1;\n      }\n      if (0 < (int)uVar13) {\n        FUN_0009228c(param_1,0,uVar13 - 1,uVar13,1);\n      }\n      goto LAB_00095ff4;\n    }\n  }\n  else {\nLAB_00095e48:\n    bVar4 = false;\n  }\n  pcVar14 = (code *)(PTR_LAB_00111ad8 + 0x2a9c);\n  puVar5 = (ushort *)FUN_00092a9c(param_1,uVar10,0x99b,1);\n  bVar1 = (int)uVar10 < (int)uVar13;\n  pcVar6 = (code *)(PTR_LAB_00111ad8 + 0xb64);\n  pcVar7 = (code *)(PTR_LAB_00111ad8 + 0x1070);\nLAB_00095e94:\n  if (bVar1) goto LAB_00095eb0;\n  if (uVar10 == uVar13) {\n    bVar2 = (int)uVar15 < param_3;\n    do {\n      if (!bVar2) break;\nLAB_00095eb0:\n      do {\n        uVar12 = *(uint *)(puVar5 + 2);\n        if (*(uint *)(param_1 + 300) != uVar12) {\n          (*pcVar6)(param_1,puVar5);\n          uVar12 = *(uint *)(param_1 + 300);\n        }\n        if (uVar15 == uVar12) {\n          if (!bVar3) {\n            *puVar5 = *puVar5 & 0xffcf;\n            goto LAB_00095eec;\n          }\n          iVar8 = *(int *)(param_1 + 0x128);\n          *puVar5 = 0;\n          if ((int)(uVar10 + 1) < iVar8) goto LAB_00095f88;\n        }\n        else {\n          (*pcVar7)(puVar5,uVar15,param_1 + 0x54);\n          if (*(uint *)(param_1 + 300) != uVar15) {\n            uVar15 = uVar15 + 1;\n            goto LAB_00095e94;\n          }\nLAB_00095eec:\n          if ((int)(uVar10 + 1) < *(int *)(param_1 + 0x128)) {\nLAB_00095f88:\n            uVar10 = uVar10 + 1;\n            puVar5 = (ushort *)(*pcVar14)(param_1,uVar10,0x9a7,1);\n            uVar15 = 0;\n            bVar1 = (int)uVar10 < (int)uVar13;\n            goto LAB_00095e94;\n          }\n        }\n        uVar10 = uVar10 + 1;\n        bVar1 = (int)uVar10 < (int)uVar13;\n        uVar15 = 0;\n      } while (bVar1);\n      bVar2 = 0 < param_3;\n    } while (uVar10 == uVar13);\n  }\n  if (!bVar4) {\n    return;\n  }\nLAB_00095ff4:\n  if (*(int *)(param_1 + 0x1a4) != 0) {\n    return;\n  }\n  *(undefined4 *)(param_1 + 0x14) = 0;\n  return;\n}" { (declaration "bool bVar1;" primitive_type identifier ;) (declaration "bool bVar2;" primitive_type identifier ;) (declaration "bool bVar3;" primitive_type identifier ;) (declaration "bool bVar4;" primitive_type identifier ;) (declaration "ushort *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "code *pcVar6;" type_identifier (pointer_declarator "*pcVar6" * identifier) ;) (declaration "code *pcVar7;" type_identifier (pointer_declarator "*pcVar7" * identifier) ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "uint uVar10;" type_identifier identifier ;) (declaration "uint uVar11;" type_identifier identifier ;) (declaration "uint uVar12;" type_identifier identifier ;) (declaration "uint uVar13;" type_identifier identifier ;) (declaration "code *pcVar14;" type_identifier (pointer_declarator "*pcVar14" * identifier) ;) (declaration "uint uVar15;" type_identifier identifier ;) (if_statement "if (param_2 == 0) {\n    uVar13 = *(uint *)(param_1 + 0x128);\n    bVar3 = true;\n    uVar10 = 0;\n    if (param_3 != 0) goto LAB_00095da4;\nLAB_00095d68:\n    uVar9 = *(uint *)(param_1 + 0x70);\n    uVar11 = *(uint *)(param_1 + 0x6c);\n    uVar12 = uVar11 | uVar9;\n    uVar10 = uVar11;\n    uVar15 = uVar9;\n    if (param_4 == 0) {\n      if (*(uint *)(param_1 + 300) == uVar9) {\nLAB_00095dc0:\n        uVar13 = uVar11 + 1;\n        param_3 = 0;\n      }\n      else {\nLAB_00095d88:\n        param_3 = uVar9 + 1;\n        uVar13 = uVar11;\n      }\n    }\n    if ((0 < (int)uVar9) && ((int)uVar9 <= *(int *)(param_1 + 300))) {\n      FUN_00092d1c(param_1,uVar9,uVar11,uVar13);\n    }\n  }\n  else {\n    uVar10 = *(uint *)(param_1 + 0x6c);\n    bVar3 = false;\n    uVar13 = uVar10 + 1;\n    if (param_3 == 0) goto LAB_00095d68;\nLAB_00095da4:\n    uVar15 = 0;\n    uVar12 = uVar10;\n    if (param_4 == 0) {\n      uVar9 = *(uint *)(param_1 + 0x70);\n      uVar11 = *(uint *)(param_1 + 0x6c);\n      if (*(uint *)(param_1 + 300) == uVar9) goto LAB_00095dc0;\n      goto LAB_00095d88;\n    }\n    param_3 = 0;\n  }" if (parenthesized_expression "(param_2 == 0)" ( (binary_expression "param_2 == 0" identifier == number_literal) )) (compound_statement "{\n    uVar13 = *(uint *)(param_1 + 0x128);\n    bVar3 = true;\n    uVar10 = 0;\n    if (param_3 != 0) goto LAB_00095da4;\nLAB_00095d68:\n    uVar9 = *(uint *)(param_1 + 0x70);\n    uVar11 = *(uint *)(param_1 + 0x6c);\n    uVar12 = uVar11 | uVar9;\n    uVar10 = uVar11;\n    uVar15 = uVar9;\n    if (param_4 == 0) {\n      if (*(uint *)(param_1 + 300) == uVar9) {\nLAB_00095dc0:\n        uVar13 = uVar11 + 1;\n        param_3 = 0;\n      }\n      else {\nLAB_00095d88:\n        param_3 = uVar9 + 1;\n        uVar13 = uVar11;\n      }\n    }\n    if ((0 < (int)uVar9) && ((int)uVar9 <= *(int *)(param_1 + 300))) {\n      FUN_00092d1c(param_1,uVar9,uVar11,uVar13);\n    }\n  }" { (expression_statement "uVar13 = *(uint *)(param_1 + 0x128);" (assignment_expression "uVar13 = *(uint *)(param_1 + 0x128)" identifier = (pointer_expression "*(uint *)(param_1 + 0x128)" * (cast_expression "(uint *)(param_1 + 0x128)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x128)" ( (binary_expression "param_1 + 0x128" identifier + number_literal) ))))) ;) (expression_statement "bVar3 = true;" (assignment_expression "bVar3 = true" identifier = true) ;) (expression_statement "uVar10 = 0;" (assignment_expression "uVar10 = 0" identifier = number_literal) ;) (if_statement "if (param_3 != 0) goto LAB_00095da4;" if (parenthesized_expression "(param_3 != 0)" ( (binary_expression "param_3 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00095da4;" goto statement_identifier ;)) (labeled_statement "LAB_00095d68:\n    uVar9 = *(uint *)(param_1 + 0x70);" statement_identifier : (expression_statement "uVar9 = *(uint *)(param_1 + 0x70);" (assignment_expression "uVar9 = *(uint *)(param_1 + 0x70)" identifier = (pointer_expression "*(uint *)(param_1 + 0x70)" * (cast_expression "(uint *)(param_1 + 0x70)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x70)" ( (binary_expression "param_1 + 0x70" identifier + number_literal) ))))) ;)) (expression_statement "uVar11 = *(uint *)(param_1 + 0x6c);" (assignment_expression "uVar11 = *(uint *)(param_1 + 0x6c)" identifier = (pointer_expression "*(uint *)(param_1 + 0x6c)" * (cast_expression "(uint *)(param_1 + 0x6c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x6c)" ( (binary_expression "param_1 + 0x6c" identifier + number_literal) ))))) ;) (expression_statement "uVar12 = uVar11 | uVar9;" (assignment_expression "uVar12 = uVar11 | uVar9" identifier = (binary_expression "uVar11 | uVar9" identifier | identifier)) ;) (expression_statement "uVar10 = uVar11;" (assignment_expression "uVar10 = uVar11" identifier = identifier) ;) (expression_statement "uVar15 = uVar9;" (assignment_expression "uVar15 = uVar9" identifier = identifier) ;) (if_statement "if (param_4 == 0) {\n      if (*(uint *)(param_1 + 300) == uVar9) {\nLAB_00095dc0:\n        uVar13 = uVar11 + 1;\n        param_3 = 0;\n      }\n      else {\nLAB_00095d88:\n        param_3 = uVar9 + 1;\n        uVar13 = uVar11;\n      }\n    }" if (parenthesized_expression "(param_4 == 0)" ( (binary_expression "param_4 == 0" identifier == number_literal) )) (compound_statement "{\n      if (*(uint *)(param_1 + 300) == uVar9) {\nLAB_00095dc0:\n        uVar13 = uVar11 + 1;\n        param_3 = 0;\n      }\n      else {\nLAB_00095d88:\n        param_3 = uVar9 + 1;\n        uVar13 = uVar11;\n      }\n    }" { (if_statement "if (*(uint *)(param_1 + 300) == uVar9) {\nLAB_00095dc0:\n        uVar13 = uVar11 + 1;\n        param_3 = 0;\n      }\n      else {\nLAB_00095d88:\n        param_3 = uVar9 + 1;\n        uVar13 = uVar11;\n      }" if (parenthesized_expression "(*(uint *)(param_1 + 300) == uVar9)" ( (binary_expression "*(uint *)(param_1 + 300) == uVar9" (pointer_expression "*(uint *)(param_1 + 300)" * (cast_expression "(uint *)(param_1 + 300)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 300)" ( (binary_expression "param_1 + 300" identifier + number_literal) )))) == identifier) )) (compound_statement "{\nLAB_00095dc0:\n        uVar13 = uVar11 + 1;\n        param_3 = 0;\n      }" { (labeled_statement "LAB_00095dc0:\n        uVar13 = uVar11 + 1;" statement_identifier : (expression_statement "uVar13 = uVar11 + 1;" (assignment_expression "uVar13 = uVar11 + 1" identifier = (binary_expression "uVar11 + 1" identifier + number_literal)) ;)) (expression_statement "param_3 = 0;" (assignment_expression "param_3 = 0" identifier = number_literal) ;) }) (else_clause "else {\nLAB_00095d88:\n        param_3 = uVar9 + 1;\n        uVar13 = uVar11;\n      }" else (compound_statement "{\nLAB_00095d88:\n        param_3 = uVar9 + 1;\n        uVar13 = uVar11;\n      }" { (labeled_statement "LAB_00095d88:\n        param_3 = uVar9 + 1;" statement_identifier : (expression_statement "param_3 = uVar9 + 1;" (assignment_expression "param_3 = uVar9 + 1" identifier = (binary_expression "uVar9 + 1" identifier + number_literal)) ;)) (expression_statement "uVar13 = uVar11;" (assignment_expression "uVar13 = uVar11" identifier = identifier) ;) }))) })) (if_statement "if ((0 < (int)uVar9) && ((int)uVar9 <= *(int *)(param_1 + 300))) {\n      FUN_00092d1c(param_1,uVar9,uVar11,uVar13);\n    }" if (parenthesized_expression "((0 < (int)uVar9) && ((int)uVar9 <= *(int *)(param_1 + 300)))" ( (binary_expression "(0 < (int)uVar9) && ((int)uVar9 <= *(int *)(param_1 + 300))" (parenthesized_expression "(0 < (int)uVar9)" ( (binary_expression "0 < (int)uVar9" number_literal < (cast_expression "(int)uVar9" ( (type_descriptor "int" primitive_type) ) identifier)) )) && (parenthesized_expression "((int)uVar9 <= *(int *)(param_1 + 300))" ( (binary_expression "(int)uVar9 <= *(int *)(param_1 + 300)" (cast_expression "(int)uVar9" ( (type_descriptor "int" primitive_type) ) 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) ))))) ))) )) (compound_statement "{\n      FUN_00092d1c(param_1,uVar9,uVar11,uVar13);\n    }" { (expression_statement "FUN_00092d1c(param_1,uVar9,uVar11,uVar13);" (call_expression "FUN_00092d1c(param_1,uVar9,uVar11,uVar13)" identifier (argument_list "(param_1,uVar9,uVar11,uVar13)" ( identifier , identifier , identifier , identifier ))) ;) })) }) (else_clause "else {\n    uVar10 = *(uint *)(param_1 + 0x6c);\n    bVar3 = false;\n    uVar13 = uVar10 + 1;\n    if (param_3 == 0) goto LAB_00095d68;\nLAB_00095da4:\n    uVar15 = 0;\n    uVar12 = uVar10;\n    if (param_4 == 0) {\n      uVar9 = *(uint *)(param_1 + 0x70);\n      uVar11 = *(uint *)(param_1 + 0x6c);\n      if (*(uint *)(param_1 + 300) == uVar9) goto LAB_00095dc0;\n      goto LAB_00095d88;\n    }\n    param_3 = 0;\n  }" else (compound_statement "{\n    uVar10 = *(uint *)(param_1 + 0x6c);\n    bVar3 = false;\n    uVar13 = uVar10 + 1;\n    if (param_3 == 0) goto LAB_00095d68;\nLAB_00095da4:\n    uVar15 = 0;\n    uVar12 = uVar10;\n    if (param_4 == 0) {\n      uVar9 = *(uint *)(param_1 + 0x70);\n      uVar11 = *(uint *)(param_1 + 0x6c);\n      if (*(uint *)(param_1 + 300) == uVar9) goto LAB_00095dc0;\n      goto LAB_00095d88;\n    }\n    param_3 = 0;\n  }" { (expression_statement "uVar10 = *(uint *)(param_1 + 0x6c);" (assignment_expression "uVar10 = *(uint *)(param_1 + 0x6c)" identifier = (pointer_expression "*(uint *)(param_1 + 0x6c)" * (cast_expression "(uint *)(param_1 + 0x6c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x6c)" ( (binary_expression "param_1 + 0x6c" identifier + number_literal) ))))) ;) (expression_statement "bVar3 = false;" (assignment_expression "bVar3 = false" identifier = false) ;) (expression_statement "uVar13 = uVar10 + 1;" (assignment_expression "uVar13 = uVar10 + 1" identifier = (binary_expression "uVar10 + 1" identifier + number_literal)) ;) (if_statement "if (param_3 == 0) goto LAB_00095d68;" if (parenthesized_expression "(param_3 == 0)" ( (binary_expression "param_3 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00095d68;" goto statement_identifier ;)) (labeled_statement "LAB_00095da4:\n    uVar15 = 0;" statement_identifier : (expression_statement "uVar15 = 0;" (assignment_expression "uVar15 = 0" identifier = number_literal) ;)) (expression_statement "uVar12 = uVar10;" (assignment_expression "uVar12 = uVar10" identifier = identifier) ;) (if_statement "if (param_4 == 0) {\n      uVar9 = *(uint *)(param_1 + 0x70);\n      uVar11 = *(uint *)(param_1 + 0x6c);\n      if (*(uint *)(param_1 + 300) == uVar9) goto LAB_00095dc0;\n      goto LAB_00095d88;\n    }" if (parenthesized_expression "(param_4 == 0)" ( (binary_expression "param_4 == 0" identifier == number_literal) )) (compound_statement "{\n      uVar9 = *(uint *)(param_1 + 0x70);\n      uVar11 = *(uint *)(param_1 + 0x6c);\n      if (*(uint *)(param_1 + 300) == uVar9) goto LAB_00095dc0;\n      goto LAB_00095d88;\n    }" { (expression_statement "uVar9 = *(uint *)(param_1 + 0x70);" (assignment_expression "uVar9 = *(uint *)(param_1 + 0x70)" identifier = (pointer_expression "*(uint *)(param_1 + 0x70)" * (cast_expression "(uint *)(param_1 + 0x70)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x70)" ( (binary_expression "param_1 + 0x70" identifier + number_literal) ))))) ;) (expression_statement "uVar11 = *(uint *)(param_1 + 0x6c);" (assignment_expression "uVar11 = *(uint *)(param_1 + 0x6c)" identifier = (pointer_expression "*(uint *)(param_1 + 0x6c)" * (cast_expression "(uint *)(param_1 + 0x6c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x6c)" ( (binary_expression "param_1 + 0x6c" identifier + number_literal) ))))) ;) (if_statement "if (*(uint *)(param_1 + 300) == uVar9) goto LAB_00095dc0;" if (parenthesized_expression "(*(uint *)(param_1 + 300) == uVar9)" ( (binary_expression "*(uint *)(param_1 + 300) == uVar9" (pointer_expression "*(uint *)(param_1 + 300)" * (cast_expression "(uint *)(param_1 + 300)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 300)" ( (binary_expression "param_1 + 300" identifier + number_literal) )))) == identifier) )) (goto_statement "goto LAB_00095dc0;" goto statement_identifier ;)) (goto_statement "goto LAB_00095d88;" goto statement_identifier ;) })) (expression_statement "param_3 = 0;" (assignment_expression "param_3 = 0" identifier = number_literal) ;) }))) (expression_statement "FUN_00090a2c(param_1,uVar10,uVar15,uVar13,param_3);" (call_expression "FUN_00090a2c(param_1,uVar10,uVar15,uVar13,param_3)" identifier (argument_list "(param_1,uVar10,uVar15,uVar13,param_3)" ( identifier , identifier , identifier , identifier , identifier ))) ;) (if_statement "if (uVar12 == 0) {\n    if (*(uint *)(param_1 + 0x128) == uVar13) {\n      term_invalidate();\n    }\n    if ((param_3 != 0) || (!bVar3)) goto LAB_00095e48;\n    bVar4 = bVar3;\n    if (*(int *)(param_1 + 0x1118) != 0) {\n      if (*(uint *)(param_1 + 0x128) == uVar13) {\n        iVar8 = FUN_00090860(param_1,*(undefined4 *)(param_1 + 8));\n        uVar13 = iVar8 + 1;\n      }\n      if (0 < (int)uVar13) {\n        FUN_0009228c(param_1,0,uVar13 - 1,uVar13,1);\n      }\n      goto LAB_00095ff4;\n    }\n  }\n  else {\nLAB_00095e48:\n    bVar4 = false;\n  }" if (parenthesized_expression "(uVar12 == 0)" ( (binary_expression "uVar12 == 0" identifier == number_literal) )) (compound_statement "{\n    if (*(uint *)(param_1 + 0x128) == uVar13) {\n      term_invalidate();\n    }\n    if ((param_3 != 0) || (!bVar3)) goto LAB_00095e48;\n    bVar4 = bVar3;\n    if (*(int *)(param_1 + 0x1118) != 0) {\n      if (*(uint *)(param_1 + 0x128) == uVar13) {\n        iVar8 = FUN_00090860(param_1,*(undefined4 *)(param_1 + 8));\n        uVar13 = iVar8 + 1;\n      }\n      if (0 < (int)uVar13) {\n        FUN_0009228c(param_1,0,uVar13 - 1,uVar13,1);\n      }\n      goto LAB_00095ff4;\n    }\n  }" { (if_statement "if (*(uint *)(param_1 + 0x128) == uVar13) {\n      term_invalidate();\n    }" if (parenthesized_expression "(*(uint *)(param_1 + 0x128) == uVar13)" ( (binary_expression "*(uint *)(param_1 + 0x128) == uVar13" (pointer_expression "*(uint *)(param_1 + 0x128)" * (cast_expression "(uint *)(param_1 + 0x128)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x128)" ( (binary_expression "param_1 + 0x128" identifier + number_literal) )))) == identifier) )) (compound_statement "{\n      term_invalidate();\n    }" { (expression_statement "term_invalidate();" (call_expression "term_invalidate()" identifier (argument_list "()" ( ))) ;) })) (if_statement "if ((param_3 != 0) || (!bVar3)) goto LAB_00095e48;" if (parenthesized_expression "((param_3 != 0) || (!bVar3))" ( (binary_expression "(param_3 != 0) || (!bVar3)" (parenthesized_expression "(param_3 != 0)" ( (binary_expression "param_3 != 0" identifier != number_literal) )) || (parenthesized_expression "(!bVar3)" ( (unary_expression "!bVar3" ! identifier) ))) )) (goto_statement "goto LAB_00095e48;" goto statement_identifier ;)) (expression_statement "bVar4 = bVar3;" (assignment_expression "bVar4 = bVar3" identifier = identifier) ;) (if_statement "if (*(int *)(param_1 + 0x1118) != 0) {\n      if (*(uint *)(param_1 + 0x128) == uVar13) {\n        iVar8 = FUN_00090860(param_1,*(undefined4 *)(param_1 + 8));\n        uVar13 = iVar8 + 1;\n      }\n      if (0 < (int)uVar13) {\n        FUN_0009228c(param_1,0,uVar13 - 1,uVar13,1);\n      }\n      goto LAB_00095ff4;\n    }" if (parenthesized_expression "(*(int *)(param_1 + 0x1118) != 0)" ( (binary_expression "*(int *)(param_1 + 0x1118) != 0" (pointer_expression "*(int *)(param_1 + 0x1118)" * (cast_expression "(int *)(param_1 + 0x1118)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1118)" ( (binary_expression "param_1 + 0x1118" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n      if (*(uint *)(param_1 + 0x128) == uVar13) {\n        iVar8 = FUN_00090860(param_1,*(undefined4 *)(param_1 + 8));\n        uVar13 = iVar8 + 1;\n      }\n      if (0 < (int)uVar13) {\n        FUN_0009228c(param_1,0,uVar13 - 1,uVar13,1);\n      }\n      goto LAB_00095ff4;\n    }" { (if_statement "if (*(uint *)(param_1 + 0x128) == uVar13) {\n        iVar8 = FUN_00090860(param_1,*(undefined4 *)(param_1 + 8));\n        uVar13 = iVar8 + 1;\n      }" if (parenthesized_expression "(*(uint *)(param_1 + 0x128) == uVar13)" ( (binary_expression "*(uint *)(param_1 + 0x128) == uVar13" (pointer_expression "*(uint *)(param_1 + 0x128)" * (cast_expression "(uint *)(param_1 + 0x128)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x128)" ( (binary_expression "param_1 + 0x128" identifier + number_literal) )))) == identifier) )) (compound_statement "{\n        iVar8 = FUN_00090860(param_1,*(undefined4 *)(param_1 + 8));\n        uVar13 = iVar8 + 1;\n      }" { (expression_statement "iVar8 = FUN_00090860(param_1,*(undefined4 *)(param_1 + 8));" (assignment_expression "iVar8 = FUN_00090860(param_1,*(undefined4 *)(param_1 + 8))" identifier = (call_expression "FUN_00090860(param_1,*(undefined4 *)(param_1 + 8))" identifier (argument_list "(param_1,*(undefined4 *)(param_1 + 8))" ( identifier , (pointer_expression "*(undefined4 *)(param_1 + 8)" * (cast_expression "(undefined4 *)(param_1 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) )))) ;) (expression_statement "uVar13 = iVar8 + 1;" (assignment_expression "uVar13 = iVar8 + 1" identifier = (binary_expression "iVar8 + 1" identifier + number_literal)) ;) })) (if_statement "if (0 < (int)uVar13) {\n        FUN_0009228c(param_1,0,uVar13 - 1,uVar13,1);\n      }" if (parenthesized_expression "(0 < (int)uVar13)" ( (binary_expression "0 < (int)uVar13" number_literal < (cast_expression "(int)uVar13" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n        FUN_0009228c(param_1,0,uVar13 - 1,uVar13,1);\n      }" { (expression_statement "FUN_0009228c(param_1,0,uVar13 - 1,uVar13,1);" (call_expression "FUN_0009228c(param_1,0,uVar13 - 1,uVar13,1)" identifier (argument_list "(param_1,0,uVar13 - 1,uVar13,1)" ( identifier , number_literal , (binary_expression "uVar13 - 1" identifier - number_literal) , identifier , number_literal ))) ;) })) (goto_statement "goto LAB_00095ff4;" goto statement_identifier ;) })) }) (else_clause "else {\nLAB_00095e48:\n    bVar4 = false;\n  }" else (compound_statement "{\nLAB_00095e48:\n    bVar4 = false;\n  }" { (labeled_statement "LAB_00095e48:\n    bVar4 = false;" statement_identifier : (expression_statement "bVar4 = false;" (assignment_expression "bVar4 = false" identifier = false) ;)) }))) (expression_statement "pcVar14 = (code *)(PTR_LAB_00111ad8 + 0x2a9c);" (assignment_expression "pcVar14 = (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 "puVar5 = (ushort *)FUN_00092a9c(param_1,uVar10,0x99b,1);" (assignment_expression "puVar5 = (ushort *)FUN_00092a9c(param_1,uVar10,0x99b,1)" identifier = (cast_expression "(ushort *)FUN_00092a9c(param_1,uVar10,0x99b,1)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00092a9c(param_1,uVar10,0x99b,1)" identifier (argument_list "(param_1,uVar10,0x99b,1)" ( identifier , identifier , number_literal , number_literal ))))) ;) (expression_statement "bVar1 = (int)uVar10 < (int)uVar13;" (assignment_expression "bVar1 = (int)uVar10 < (int)uVar13" identifier = (binary_expression "(int)uVar10 < (int)uVar13" (cast_expression "(int)uVar10" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)uVar13" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "pcVar6 = (code *)(PTR_LAB_00111ad8 + 0xb64);" (assignment_expression "pcVar6 = (code *)(PTR_LAB_00111ad8 + 0xb64)" identifier = (cast_expression "(code *)(PTR_LAB_00111ad8 + 0xb64)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_00111ad8 + 0xb64)" ( (binary_expression "PTR_LAB_00111ad8 + 0xb64" identifier + number_literal) )))) ;) (expression_statement "pcVar7 = (code *)(PTR_LAB_00111ad8 + 0x1070);" (assignment_expression "pcVar7 = (code *)(PTR_LAB_00111ad8 + 0x1070)" identifier = (cast_expression "(code *)(PTR_LAB_00111ad8 + 0x1070)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_00111ad8 + 0x1070)" ( (binary_expression "PTR_LAB_00111ad8 + 0x1070" identifier + number_literal) )))) ;) (labeled_statement "LAB_00095e94:\n  if (bVar1) goto LAB_00095eb0;" statement_identifier : (if_statement "if (bVar1) goto LAB_00095eb0;" if (parenthesized_expression "(bVar1)" ( identifier )) (goto_statement "goto LAB_00095eb0;" goto statement_identifier ;))) (if_statement "if (uVar10 == uVar13) {\n    bVar2 = (int)uVar15 < param_3;\n    do {\n      if (!bVar2) break;\nLAB_00095eb0:\n      do {\n        uVar12 = *(uint *)(puVar5 + 2);\n        if (*(uint *)(param_1 + 300) != uVar12) {\n          (*pcVar6)(param_1,puVar5);\n          uVar12 = *(uint *)(param_1 + 300);\n        }\n        if (uVar15 == uVar12) {\n          if (!bVar3) {\n            *puVar5 = *puVar5 & 0xffcf;\n            goto LAB_00095eec;\n          }\n          iVar8 = *(int *)(param_1 + 0x128);\n          *puVar5 = 0;\n          if ((int)(uVar10 + 1) < iVar8) goto LAB_00095f88;\n        }\n        else {\n          (*pcVar7)(puVar5,uVar15,param_1 + 0x54);\n          if (*(uint *)(param_1 + 300) != uVar15) {\n            uVar15 = uVar15 + 1;\n            goto LAB_00095e94;\n          }\nLAB_00095eec:\n          if ((int)(uVar10 + 1) < *(int *)(param_1 + 0x128)) {\nLAB_00095f88:\n            uVar10 = uVar10 + 1;\n            puVar5 = (ushort *)(*pcVar14)(param_1,uVar10,0x9a7,1);\n            uVar15 = 0;\n            bVar1 = (int)uVar10 < (int)uVar13;\n            goto LAB_00095e94;\n          }\n        }\n        uVar10 = uVar10 + 1;\n        bVar1 = (int)uVar10 < (int)uVar13;\n        uVar15 = 0;\n      } while (bVar1);\n      bVar2 = 0 < param_3;\n    } while (uVar10 == uVar13);\n  }" if (parenthesized_expression "(uVar10 == uVar13)" ( (binary_expression "uVar10 == uVar13" identifier == identifier) )) (compound_statement "{\n    bVar2 = (int)uVar15 < param_3;\n    do {\n      if (!bVar2) break;\nLAB_00095eb0:\n      do {\n        uVar12 = *(uint *)(puVar5 + 2);\n        if (*(uint *)(param_1 + 300) != uVar12) {\n          (*pcVar6)(param_1,puVar5);\n          uVar12 = *(uint *)(param_1 + 300);\n        }\n        if (uVar15 == uVar12) {\n          if (!bVar3) {\n            *puVar5 = *puVar5 & 0xffcf;\n            goto LAB_00095eec;\n          }\n          iVar8 = *(int *)(param_1 + 0x128);\n          *puVar5 = 0;\n          if ((int)(uVar10 + 1) < iVar8) goto LAB_00095f88;\n        }\n        else {\n          (*pcVar7)(puVar5,uVar15,param_1 + 0x54);\n          if (*(uint *)(param_1 + 300) != uVar15) {\n            uVar15 = uVar15 + 1;\n            goto LAB_00095e94;\n          }\nLAB_00095eec:\n          if ((int)(uVar10 + 1) < *(int *)(param_1 + 0x128)) {\nLAB_00095f88:\n            uVar10 = uVar10 + 1;\n            puVar5 = (ushort *)(*pcVar14)(param_1,uVar10,0x9a7,1);\n            uVar15 = 0;\n            bVar1 = (int)uVar10 < (int)uVar13;\n            goto LAB_00095e94;\n          }\n        }\n        uVar10 = uVar10 + 1;\n        bVar1 = (int)uVar10 < (int)uVar13;\n        uVar15 = 0;\n      } while (bVar1);\n      bVar2 = 0 < param_3;\n    } while (uVar10 == uVar13);\n  }" { (expression_statement "bVar2 = (int)uVar15 < param_3;" (assignment_expression "bVar2 = (int)uVar15 < param_3" identifier = (binary_expression "(int)uVar15 < param_3" (cast_expression "(int)uVar15" ( (type_descriptor "int" primitive_type) ) identifier) < identifier)) ;) (do_statement "do {\n      if (!bVar2) break;\nLAB_00095eb0:\n      do {\n        uVar12 = *(uint *)(puVar5 + 2);\n        if (*(uint *)(param_1 + 300) != uVar12) {\n          (*pcVar6)(param_1,puVar5);\n          uVar12 = *(uint *)(param_1 + 300);\n        }\n        if (uVar15 == uVar12) {\n          if (!bVar3) {\n            *puVar5 = *puVar5 & 0xffcf;\n            goto LAB_00095eec;\n          }\n          iVar8 = *(int *)(param_1 + 0x128);\n          *puVar5 = 0;\n          if ((int)(uVar10 + 1) < iVar8) goto LAB_00095f88;\n        }\n        else {\n          (*pcVar7)(puVar5,uVar15,param_1 + 0x54);\n          if (*(uint *)(param_1 + 300) != uVar15) {\n            uVar15 = uVar15 + 1;\n            goto LAB_00095e94;\n          }\nLAB_00095eec:\n          if ((int)(uVar10 + 1) < *(int *)(param_1 + 0x128)) {\nLAB_00095f88:\n            uVar10 = uVar10 + 1;\n            puVar5 = (ushort *)(*pcVar14)(param_1,uVar10,0x9a7,1);\n            uVar15 = 0;\n            bVar1 = (int)uVar10 < (int)uVar13;\n            goto LAB_00095e94;\n          }\n        }\n        uVar10 = uVar10 + 1;\n        bVar1 = (int)uVar10 < (int)uVar13;\n        uVar15 = 0;\n      } while (bVar1);\n      bVar2 = 0 < param_3;\n    } while (uVar10 == uVar13);" do (compound_statement "{\n      if (!bVar2) break;\nLAB_00095eb0:\n      do {\n        uVar12 = *(uint *)(puVar5 + 2);\n        if (*(uint *)(param_1 + 300) != uVar12) {\n          (*pcVar6)(param_1,puVar5);\n          uVar12 = *(uint *)(param_1 + 300);\n        }\n        if (uVar15 == uVar12) {\n          if (!bVar3) {\n            *puVar5 = *puVar5 & 0xffcf;\n            goto LAB_00095eec;\n          }\n          iVar8 = *(int *)(param_1 + 0x128);\n          *puVar5 = 0;\n          if ((int)(uVar10 + 1) < iVar8) goto LAB_00095f88;\n        }\n        else {\n          (*pcVar7)(puVar5,uVar15,param_1 + 0x54);\n          if (*(uint *)(param_1 + 300) != uVar15) {\n            uVar15 = uVar15 + 1;\n            goto LAB_00095e94;\n          }\nLAB_00095eec:\n          if ((int)(uVar10 + 1) < *(int *)(param_1 + 0x128)) {\nLAB_00095f88:\n            uVar10 = uVar10 + 1;\n            puVar5 = (ushort *)(*pcVar14)(param_1,uVar10,0x9a7,1);\n            uVar15 = 0;\n            bVar1 = (int)uVar10 < (int)uVar13;\n            goto LAB_00095e94;\n          }\n        }\n        uVar10 = uVar10 + 1;\n        bVar1 = (int)uVar10 < (int)uVar13;\n        uVar15 = 0;\n      } while (bVar1);\n      bVar2 = 0 < param_3;\n    }" { (if_statement "if (!bVar2) break;" if (parenthesized_expression "(!bVar2)" ( (unary_expression "!bVar2" ! identifier) )) (break_statement "break;" break ;)) (labeled_statement "LAB_00095eb0:\n      do {\n        uVar12 = *(uint *)(puVar5 + 2);\n        if (*(uint *)(param_1 + 300) != uVar12) {\n          (*pcVar6)(param_1,puVar5);\n          uVar12 = *(uint *)(param_1 + 300);\n        }\n        if (uVar15 == uVar12) {\n          if (!bVar3) {\n            *puVar5 = *puVar5 & 0xffcf;\n            goto LAB_00095eec;\n          }\n          iVar8 = *(int *)(param_1 + 0x128);\n          *puVar5 = 0;\n          if ((int)(uVar10 + 1) < iVar8) goto LAB_00095f88;\n        }\n        else {\n          (*pcVar7)(puVar5,uVar15,param_1 + 0x54);\n          if (*(uint *)(param_1 + 300) != uVar15) {\n            uVar15 = uVar15 + 1;\n            goto LAB_00095e94;\n          }\nLAB_00095eec:\n          if ((int)(uVar10 + 1) < *(int *)(param_1 + 0x128)) {\nLAB_00095f88:\n            uVar10 = uVar10 + 1;\n            puVar5 = (ushort *)(*pcVar14)(param_1,uVar10,0x9a7,1);\n            uVar15 = 0;\n            bVar1 = (int)uVar10 < (int)uVar13;\n            goto LAB_00095e94;\n          }\n        }\n        uVar10 = uVar10 + 1;\n        bVar1 = (int)uVar10 < (int)uVar13;\n        uVar15 = 0;\n      } while (bVar1);" statement_identifier : (do_statement "do {\n        uVar12 = *(uint *)(puVar5 + 2);\n        if (*(uint *)(param_1 + 300) != uVar12) {\n          (*pcVar6)(param_1,puVar5);\n          uVar12 = *(uint *)(param_1 + 300);\n        }\n        if (uVar15 == uVar12) {\n          if (!bVar3) {\n            *puVar5 = *puVar5 & 0xffcf;\n            goto LAB_00095eec;\n          }\n          iVar8 = *(int *)(param_1 + 0x128);\n          *puVar5 = 0;\n          if ((int)(uVar10 + 1) < iVar8) goto LAB_00095f88;\n        }\n        else {\n          (*pcVar7)(puVar5,uVar15,param_1 + 0x54);\n          if (*(uint *)(param_1 + 300) != uVar15) {\n            uVar15 = uVar15 + 1;\n            goto LAB_00095e94;\n          }\nLAB_00095eec:\n          if ((int)(uVar10 + 1) < *(int *)(param_1 + 0x128)) {\nLAB_00095f88:\n            uVar10 = uVar10 + 1;\n            puVar5 = (ushort *)(*pcVar14)(param_1,uVar10,0x9a7,1);\n            uVar15 = 0;\n            bVar1 = (int)uVar10 < (int)uVar13;\n            goto LAB_00095e94;\n          }\n        }\n        uVar10 = uVar10 + 1;\n        bVar1 = (int)uVar10 < (int)uVar13;\n        uVar15 = 0;\n      } while (bVar1);" do (compound_statement "{\n        uVar12 = *(uint *)(puVar5 + 2);\n        if (*(uint *)(param_1 + 300) != uVar12) {\n          (*pcVar6)(param_1,puVar5);\n          uVar12 = *(uint *)(param_1 + 300);\n        }\n        if (uVar15 == uVar12) {\n          if (!bVar3) {\n            *puVar5 = *puVar5 & 0xffcf;\n            goto LAB_00095eec;\n          }\n          iVar8 = *(int *)(param_1 + 0x128);\n          *puVar5 = 0;\n          if ((int)(uVar10 + 1) < iVar8) goto LAB_00095f88;\n        }\n        else {\n          (*pcVar7)(puVar5,uVar15,param_1 + 0x54);\n          if (*(uint *)(param_1 + 300) != uVar15) {\n            uVar15 = uVar15 + 1;\n            goto LAB_00095e94;\n          }\nLAB_00095eec:\n          if ((int)(uVar10 + 1) < *(int *)(param_1 + 0x128)) {\nLAB_00095f88:\n            uVar10 = uVar10 + 1;\n            puVar5 = (ushort *)(*pcVar14)(param_1,uVar10,0x9a7,1);\n            uVar15 = 0;\n            bVar1 = (int)uVar10 < (int)uVar13;\n            goto LAB_00095e94;\n          }\n        }\n        uVar10 = uVar10 + 1;\n        bVar1 = (int)uVar10 < (int)uVar13;\n        uVar15 = 0;\n      }" { (expression_statement "uVar12 = *(uint *)(puVar5 + 2);" (assignment_expression "uVar12 = *(uint *)(puVar5 + 2)" identifier = (pointer_expression "*(uint *)(puVar5 + 2)" * (cast_expression "(uint *)(puVar5 + 2)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar5 + 2)" ( (binary_expression "puVar5 + 2" identifier + number_literal) ))))) ;) (if_statement "if (*(uint *)(param_1 + 300) != uVar12) {\n          (*pcVar6)(param_1,puVar5);\n          uVar12 = *(uint *)(param_1 + 300);\n        }" if (parenthesized_expression "(*(uint *)(param_1 + 300) != uVar12)" ( (binary_expression "*(uint *)(param_1 + 300) != uVar12" (pointer_expression "*(uint *)(param_1 + 300)" * (cast_expression "(uint *)(param_1 + 300)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 300)" ( (binary_expression "param_1 + 300" identifier + number_literal) )))) != identifier) )) (compound_statement "{\n          (*pcVar6)(param_1,puVar5);\n          uVar12 = *(uint *)(param_1 + 300);\n        }" { (expression_statement "(*pcVar6)(param_1,puVar5);" (call_expression "(*pcVar6)(param_1,puVar5)" (parenthesized_expression "(*pcVar6)" ( (pointer_expression "*pcVar6" * identifier) )) (argument_list "(param_1,puVar5)" ( identifier , identifier ))) ;) (expression_statement "uVar12 = *(uint *)(param_1 + 300);" (assignment_expression "uVar12 = *(uint *)(param_1 + 300)" identifier = (pointer_expression "*(uint *)(param_1 + 300)" * (cast_expression "(uint *)(param_1 + 300)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 300)" ( (binary_expression "param_1 + 300" identifier + number_literal) ))))) ;) })) (if_statement "if (uVar15 == uVar12) {\n          if (!bVar3) {\n            *puVar5 = *puVar5 & 0xffcf;\n            goto LAB_00095eec;\n          }\n          iVar8 = *(int *)(param_1 + 0x128);\n          *puVar5 = 0;\n          if ((int)(uVar10 + 1) < iVar8) goto LAB_00095f88;\n        }\n        else {\n          (*pcVar7)(puVar5,uVar15,param_1 + 0x54);\n          if (*(uint *)(param_1 + 300) != uVar15) {\n            uVar15 = uVar15 + 1;\n            goto LAB_00095e94;\n          }\nLAB_00095eec:\n          if ((int)(uVar10 + 1) < *(int *)(param_1 + 0x128)) {\nLAB_00095f88:\n            uVar10 = uVar10 + 1;\n            puVar5 = (ushort *)(*pcVar14)(param_1,uVar10,0x9a7,1);\n            uVar15 = 0;\n            bVar1 = (int)uVar10 < (int)uVar13;\n            goto LAB_00095e94;\n          }\n        }" if (parenthesized_expression "(uVar15 == uVar12)" ( (binary_expression "uVar15 == uVar12" identifier == identifier) )) (compound_statement "{\n          if (!bVar3) {\n            *puVar5 = *puVar5 & 0xffcf;\n            goto LAB_00095eec;\n          }\n          iVar8 = *(int *)(param_1 + 0x128);\n          *puVar5 = 0;\n          if ((int)(uVar10 + 1) < iVar8) goto LAB_00095f88;\n        }" { (if_statement "if (!bVar3) {\n            *puVar5 = *puVar5 & 0xffcf;\n            goto LAB_00095eec;\n          }" if (parenthesized_expression "(!bVar3)" ( (unary_expression "!bVar3" ! identifier) )) (compound_statement "{\n            *puVar5 = *puVar5 & 0xffcf;\n            goto LAB_00095eec;\n          }" { (expression_statement "*puVar5 = *puVar5 & 0xffcf;" (assignment_expression "*puVar5 = *puVar5 & 0xffcf" (pointer_expression "*puVar5" * identifier) = (binary_expression "*puVar5 & 0xffcf" (pointer_expression "*puVar5" * identifier) & number_literal)) ;) (goto_statement "goto LAB_00095eec;" goto statement_identifier ;) })) (expression_statement "iVar8 = *(int *)(param_1 + 0x128);" (assignment_expression "iVar8 = *(int *)(param_1 + 0x128)" identifier = (pointer_expression "*(int *)(param_1 + 0x128)" * (cast_expression "(int *)(param_1 + 0x128)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x128)" ( (binary_expression "param_1 + 0x128" identifier + number_literal) ))))) ;) (expression_statement "*puVar5 = 0;" (assignment_expression "*puVar5 = 0" (pointer_expression "*puVar5" * identifier) = number_literal) ;) (if_statement "if ((int)(uVar10 + 1) < iVar8) goto LAB_00095f88;" if (parenthesized_expression "((int)(uVar10 + 1) < iVar8)" ( (binary_expression "(int)(uVar10 + 1) < iVar8" (cast_expression "(int)(uVar10 + 1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(uVar10 + 1)" ( (binary_expression "uVar10 + 1" identifier + number_literal) ))) < identifier) )) (goto_statement "goto LAB_00095f88;" goto statement_identifier ;)) }) (else_clause "else {\n          (*pcVar7)(puVar5,uVar15,param_1 + 0x54);\n          if (*(uint *)(param_1 + 300) != uVar15) {\n            uVar15 = uVar15 + 1;\n            goto LAB_00095e94;\n          }\nLAB_00095eec:\n          if ((int)(uVar10 + 1) < *(int *)(param_1 + 0x128)) {\nLAB_00095f88:\n            uVar10 = uVar10 + 1;\n            puVar5 = (ushort *)(*pcVar14)(param_1,uVar10,0x9a7,1);\n            uVar15 = 0;\n            bVar1 = (int)uVar10 < (int)uVar13;\n            goto LAB_00095e94;\n          }\n        }" else (compound_statement "{\n          (*pcVar7)(puVar5,uVar15,param_1 + 0x54);\n          if (*(uint *)(param_1 + 300) != uVar15) {\n            uVar15 = uVar15 + 1;\n            goto LAB_00095e94;\n          }\nLAB_00095eec:\n          if ((int)(uVar10 + 1) < *(int *)(param_1 + 0x128)) {\nLAB_00095f88:\n            uVar10 = uVar10 + 1;\n            puVar5 = (ushort *)(*pcVar14)(param_1,uVar10,0x9a7,1);\n            uVar15 = 0;\n            bVar1 = (int)uVar10 < (int)uVar13;\n            goto LAB_00095e94;\n          }\n        }" { (expression_statement "(*pcVar7)(puVar5,uVar15,param_1 + 0x54);" (call_expression "(*pcVar7)(puVar5,uVar15,param_1 + 0x54)" (parenthesized_expression "(*pcVar7)" ( (pointer_expression "*pcVar7" * identifier) )) (argument_list "(puVar5,uVar15,param_1 + 0x54)" ( identifier , identifier , (binary_expression "param_1 + 0x54" identifier + number_literal) ))) ;) (if_statement "if (*(uint *)(param_1 + 300) != uVar15) {\n            uVar15 = uVar15 + 1;\n            goto LAB_00095e94;\n          }" if (parenthesized_expression "(*(uint *)(param_1 + 300) != uVar15)" ( (binary_expression "*(uint *)(param_1 + 300) != uVar15" (pointer_expression "*(uint *)(param_1 + 300)" * (cast_expression "(uint *)(param_1 + 300)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 300)" ( (binary_expression "param_1 + 300" identifier + number_literal) )))) != identifier) )) (compound_statement "{\n            uVar15 = uVar15 + 1;\n            goto LAB_00095e94;\n          }" { (expression_statement "uVar15 = uVar15 + 1;" (assignment_expression "uVar15 = uVar15 + 1" identifier = (binary_expression "uVar15 + 1" identifier + number_literal)) ;) (goto_statement "goto LAB_00095e94;" goto statement_identifier ;) })) (labeled_statement "LAB_00095eec:\n          if ((int)(uVar10 + 1) < *(int *)(param_1 + 0x128)) {\nLAB_00095f88:\n            uVar10 = uVar10 + 1;\n            puVar5 = (ushort *)(*pcVar14)(param_1,uVar10,0x9a7,1);\n            uVar15 = 0;\n            bVar1 = (int)uVar10 < (int)uVar13;\n            goto LAB_00095e94;\n          }" statement_identifier : (if_statement "if ((int)(uVar10 + 1) < *(int *)(param_1 + 0x128)) {\nLAB_00095f88:\n            uVar10 = uVar10 + 1;\n            puVar5 = (ushort *)(*pcVar14)(param_1,uVar10,0x9a7,1);\n            uVar15 = 0;\n            bVar1 = (int)uVar10 < (int)uVar13;\n            goto LAB_00095e94;\n          }" if (parenthesized_expression "((int)(uVar10 + 1) < *(int *)(param_1 + 0x128))" ( (binary_expression "(int)(uVar10 + 1) < *(int *)(param_1 + 0x128)" (cast_expression "(int)(uVar10 + 1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(uVar10 + 1)" ( (binary_expression "uVar10 + 1" identifier + number_literal) ))) < (pointer_expression "*(int *)(param_1 + 0x128)" * (cast_expression "(int *)(param_1 + 0x128)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x128)" ( (binary_expression "param_1 + 0x128" identifier + number_literal) ))))) )) (compound_statement "{\nLAB_00095f88:\n            uVar10 = uVar10 + 1;\n            puVar5 = (ushort *)(*pcVar14)(param_1,uVar10,0x9a7,1);\n            uVar15 = 0;\n            bVar1 = (int)uVar10 < (int)uVar13;\n            goto LAB_00095e94;\n          }" { (labeled_statement "LAB_00095f88:\n            uVar10 = uVar10 + 1;" statement_identifier : (expression_statement "uVar10 = uVar10 + 1;" (assignment_expression "uVar10 = uVar10 + 1" identifier = (binary_expression "uVar10 + 1" identifier + number_literal)) ;)) (expression_statement "puVar5 = (ushort *)(*pcVar14)(param_1,uVar10,0x9a7,1);" (assignment_expression "puVar5 = (ushort *)(*pcVar14)(param_1,uVar10,0x9a7,1)" identifier = (cast_expression "(ushort *)(*pcVar14)(param_1,uVar10,0x9a7,1)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*pcVar14)(param_1,uVar10,0x9a7,1)" (parenthesized_expression "(*pcVar14)" ( (pointer_expression "*pcVar14" * identifier) )) (argument_list "(param_1,uVar10,0x9a7,1)" ( identifier , identifier , number_literal , number_literal ))))) ;) (expression_statement "uVar15 = 0;" (assignment_expression "uVar15 = 0" identifier = number_literal) ;) (expression_statement "bVar1 = (int)uVar10 < (int)uVar13;" (assignment_expression "bVar1 = (int)uVar10 < (int)uVar13" identifier = (binary_expression "(int)uVar10 < (int)uVar13" (cast_expression "(int)uVar10" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)uVar13" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (goto_statement "goto LAB_00095e94;" goto statement_identifier ;) }))) }))) (expression_statement "uVar10 = uVar10 + 1;" (assignment_expression "uVar10 = uVar10 + 1" identifier = (binary_expression "uVar10 + 1" identifier + number_literal)) ;) (expression_statement "bVar1 = (int)uVar10 < (int)uVar13;" (assignment_expression "bVar1 = (int)uVar10 < (int)uVar13" identifier = (binary_expression "(int)uVar10 < (int)uVar13" (cast_expression "(int)uVar10" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)uVar13" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "uVar15 = 0;" (assignment_expression "uVar15 = 0" identifier = number_literal) ;) }) while (parenthesized_expression "(bVar1)" ( identifier )) ;)) (expression_statement "bVar2 = 0 < param_3;" (assignment_expression "bVar2 = 0 < param_3" identifier = (binary_expression "0 < param_3" number_literal < identifier)) ;) }) while (parenthesized_expression "(uVar10 == uVar13)" ( (binary_expression "uVar10 == uVar13" identifier == identifier) )) ;) })) (if_statement "if (!bVar4) {\n    return;\n  }" if (parenthesized_expression "(!bVar4)" ( (unary_expression "!bVar4" ! identifier) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (labeled_statement "LAB_00095ff4:\n  if (*(int *)(param_1 + 0x1a4) != 0) {\n    return;\n  }" statement_identifier : (if_statement "if (*(int *)(param_1 + 0x1a4) != 0) {\n    return;\n  }" if (parenthesized_expression "(*(int *)(param_1 + 0x1a4) != 0)" ( (binary_expression "*(int *)(param_1 + 0x1a4) != 0" (pointer_expression "*(int *)(param_1 + 0x1a4)" * (cast_expression "(int *)(param_1 + 0x1a4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1a4)" ( (binary_expression "param_1 + 0x1a4" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) }))) (expression_statement "*(undefined4 *)(param_1 + 0x14) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x14) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x14)" * (cast_expression "(undefined4 *)(param_1 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) )))) = number_literal) ;) (return_statement "return;" return ;) })))
(translation_unit "/* WARNING: Enum "anon_enum_32": Some values do not have unique names */\n\nvoid erase_lots(Terminal *term,int line_only,int from_begin,int to_end)\n\n{\n  bool bVar1;\n  bool bVar2;\n  pos from;\n  pos to;\n  bool bVar3;\n  bool bVar4;\n  int iVar5;\n  termline *ptVar6;\n  int iVar7;\n  int iVar8;\n  int iVar9;\n  Terminal *term_00;\n  uint x;\n  uint y;\n  uint y_00;\n  uint uVar10;\n  uint lines;\n  uint uVar11;\n  int in_stack_ffffffac;\n  undefined1 *puVar12;\n  int in_stack_ffffffb4;\n  \n  puVar12 = &_gp;\n  if (line_only == 0) {\n    lines = term->rows;\n    bVar3 = true;\n    y = 0;\n    if (from_begin != 0) goto LAB_00095da4;\nLAB_00095d68:\n    x = (term->curs).x;\n    y_00 = (term->curs).y;\n    uVar10 = y_00 | x;\n    y = y_00;\n    uVar11 = x;\n    if (to_end == 0) {\n      if (term->cols == x) {\nLAB_00095dc0:\n        lines = y_00 + 1;\n        from_begin = 0;\n      }\n      else {\nLAB_00095d88:\n        from_begin = x + 1;\n        lines = y_00;\n      }\n    }\n    if ((0 < (int)x) && ((int)x <= term->cols)) {\n      check_boundary(term,x,y_00);\n    }\n  }\n  else {\n    y = (term->curs).y;\n    bVar3 = false;\n    lines = y + 1;\n    if (from_begin == 0) goto LAB_00095d68;\nLAB_00095da4:\n    uVar11 = 0;\n    uVar10 = y;\n    if (to_end == 0) {\n      x = (term->curs).x;\n      y_00 = (term->curs).y;\n      if (term->cols == x) goto LAB_00095dc0;\n      goto LAB_00095d88;\n    }\n    from_begin = 0;\n  }\n  from.y = from_begin;\n  from.x = in_stack_ffffffac;\n  to.y = (int)puVar12;\n  to.x = in_stack_ffffffb4;\n  term_00 = term;\n  check_selection(term,from,to);\n  if (uVar10 == 0) {\n    if (term->rows == lines) {\n      term_invalidate(term_00);\n    }\n    if ((from_begin != 0) || (!bVar3)) goto LAB_00095e48;\n    bVar4 = bVar3;\n    if (term->erase_to_scrollback != 0) {\n      if (term->rows == lines) {\n        iVar5 = find_last_nonempty_line(term,term->screen);\n        lines = iVar5 + 1;\n      }\n      if (0 < (int)lines) {\n        scroll(term,0,lines - 1,lines,1);\n      }\n      goto LAB_00095ff4;\n    }\n  }\n  else {\nLAB_00095e48:\n    bVar4 = false;\n  }\n  iVar5 = *(int *)(puVar12 + -0x77d8);\n  ptVar6 = lineptr(term,y,0x99b,1);\n  bVar1 = (int)y < (int)lines;\n  iVar7 = *(int *)(puVar12 + -0x77d8);\n  iVar8 = *(int *)(puVar12 + -0x77d8);\nLAB_00095e94:\n  if (bVar1) goto LAB_00095eb0;\n  if (y == lines) {\n    bVar2 = (int)uVar11 < from_begin;\n    do {\n      if (!bVar2) break;\nLAB_00095eb0:\n      do {\n        uVar10 = ptVar6->cols;\n        if (term->cols != uVar10) {\n          (*(code *)(iVar7 + 0xb64))(term,ptVar6);\n          uVar10 = term->cols;\n        }\n        if (uVar11 == uVar10) {\n          if (!bVar3) {\n            ptVar6->lattr = ptVar6->lattr & 0xffcf;\n            goto LAB_00095eec;\n          }\n          iVar9 = term->rows;\n          ptVar6->lattr = 0;\n          if ((int)(y + 1) < iVar9) goto LAB_00095f88;\n        }\n        else {\n          (*(code *)(iVar8 + 0x1070))(ptVar6,uVar11,&term->erase_char);\n          if (term->cols != uVar11) {\n            uVar11 = uVar11 + 1;\n            goto LAB_00095e94;\n          }\nLAB_00095eec:\n          if ((int)(y + 1) < term->rows) {\nLAB_00095f88:\n            y = y + 1;\n            ptVar6 = (termline *)(*(code *)(iVar5 + 0x2a9c))(term,y,0x9a7,1);\n            uVar11 = 0;\n            bVar1 = (int)y < (int)lines;\n            goto LAB_00095e94;\n          }\n        }\n        y = y + 1;\n        bVar1 = (int)y < (int)lines;\n        uVar11 = 0;\n      } while (bVar1);\n      bVar2 = 0 < from_begin;\n    } while (y == lines);\n  }\n  if (!bVar4) {\n    return;\n  }\nLAB_00095ff4:\n  if (term->alt_which != 0) {\n    return;\n  }\n  term->tempsblines = 0;\n  return;\n}\n\n" comment (function_definition "void erase_lots(Terminal *term,int line_only,int from_begin,int to_end)\n\n{\n  bool bVar1;\n  bool bVar2;\n  pos from;\n  pos to;\n  bool bVar3;\n  bool bVar4;\n  int iVar5;\n  termline *ptVar6;\n  int iVar7;\n  int iVar8;\n  int iVar9;\n  Terminal *term_00;\n  uint x;\n  uint y;\n  uint y_00;\n  uint uVar10;\n  uint lines;\n  uint uVar11;\n  int in_stack_ffffffac;\n  undefined1 *puVar12;\n  int in_stack_ffffffb4;\n  \n  puVar12 = &_gp;\n  if (line_only == 0) {\n    lines = term->rows;\n    bVar3 = true;\n    y = 0;\n    if (from_begin != 0) goto LAB_00095da4;\nLAB_00095d68:\n    x = (term->curs).x;\n    y_00 = (term->curs).y;\n    uVar10 = y_00 | x;\n    y = y_00;\n    uVar11 = x;\n    if (to_end == 0) {\n      if (term->cols == x) {\nLAB_00095dc0:\n        lines = y_00 + 1;\n        from_begin = 0;\n      }\n      else {\nLAB_00095d88:\n        from_begin = x + 1;\n        lines = y_00;\n      }\n    }\n    if ((0 < (int)x) && ((int)x <= term->cols)) {\n      check_boundary(term,x,y_00);\n    }\n  }\n  else {\n    y = (term->curs).y;\n    bVar3 = false;\n    lines = y + 1;\n    if (from_begin == 0) goto LAB_00095d68;\nLAB_00095da4:\n    uVar11 = 0;\n    uVar10 = y;\n    if (to_end == 0) {\n      x = (term->curs).x;\n      y_00 = (term->curs).y;\n      if (term->cols == x) goto LAB_00095dc0;\n      goto LAB_00095d88;\n    }\n    from_begin = 0;\n  }\n  from.y = from_begin;\n  from.x = in_stack_ffffffac;\n  to.y = (int)puVar12;\n  to.x = in_stack_ffffffb4;\n  term_00 = term;\n  check_selection(term,from,to);\n  if (uVar10 == 0) {\n    if (term->rows == lines) {\n      term_invalidate(term_00);\n    }\n    if ((from_begin != 0) || (!bVar3)) goto LAB_00095e48;\n    bVar4 = bVar3;\n    if (term->erase_to_scrollback != 0) {\n      if (term->rows == lines) {\n        iVar5 = find_last_nonempty_line(term,term->screen);\n        lines = iVar5 + 1;\n      }\n      if (0 < (int)lines) {\n        scroll(term,0,lines - 1,lines,1);\n      }\n      goto LAB_00095ff4;\n    }\n  }\n  else {\nLAB_00095e48:\n    bVar4 = false;\n  }\n  iVar5 = *(int *)(puVar12 + -0x77d8);\n  ptVar6 = lineptr(term,y,0x99b,1);\n  bVar1 = (int)y < (int)lines;\n  iVar7 = *(int *)(puVar12 + -0x77d8);\n  iVar8 = *(int *)(puVar12 + -0x77d8);\nLAB_00095e94:\n  if (bVar1) goto LAB_00095eb0;\n  if (y == lines) {\n    bVar2 = (int)uVar11 < from_begin;\n    do {\n      if (!bVar2) break;\nLAB_00095eb0:\n      do {\n        uVar10 = ptVar6->cols;\n        if (term->cols != uVar10) {\n          (*(code *)(iVar7 + 0xb64))(term,ptVar6);\n          uVar10 = term->cols;\n        }\n        if (uVar11 == uVar10) {\n          if (!bVar3) {\n            ptVar6->lattr = ptVar6->lattr & 0xffcf;\n            goto LAB_00095eec;\n          }\n          iVar9 = term->rows;\n          ptVar6->lattr = 0;\n          if ((int)(y + 1) < iVar9) goto LAB_00095f88;\n        }\n        else {\n          (*(code *)(iVar8 + 0x1070))(ptVar6,uVar11,&term->erase_char);\n          if (term->cols != uVar11) {\n            uVar11 = uVar11 + 1;\n            goto LAB_00095e94;\n          }\nLAB_00095eec:\n          if ((int)(y + 1) < term->rows) {\nLAB_00095f88:\n            y = y + 1;\n            ptVar6 = (termline *)(*(code *)(iVar5 + 0x2a9c))(term,y,0x9a7,1);\n            uVar11 = 0;\n            bVar1 = (int)y < (int)lines;\n            goto LAB_00095e94;\n          }\n        }\n        y = y + 1;\n        bVar1 = (int)y < (int)lines;\n        uVar11 = 0;\n      } while (bVar1);\n      bVar2 = 0 < from_begin;\n    } while (y == lines);\n  }\n  if (!bVar4) {\n    return;\n  }\nLAB_00095ff4:\n  if (term->alt_which != 0) {\n    return;\n  }\n  term->tempsblines = 0;\n  return;\n}" primitive_type (function_declarator "erase_lots(Terminal *term,int line_only,int from_begin,int to_end)" identifier (parameter_list "(Terminal *term,int line_only,int from_begin,int to_end)" ( (parameter_declaration "Terminal *term" type_identifier (pointer_declarator "*term" * identifier)) , (parameter_declaration "int line_only" primitive_type identifier) , (parameter_declaration "int from_begin" primitive_type identifier) , (parameter_declaration "int to_end" primitive_type identifier) ))) (compound_statement "{\n  bool bVar1;\n  bool bVar2;\n  pos from;\n  pos to;\n  bool bVar3;\n  bool bVar4;\n  int iVar5;\n  termline *ptVar6;\n  int iVar7;\n  int iVar8;\n  int iVar9;\n  Terminal *term_00;\n  uint x;\n  uint y;\n  uint y_00;\n  uint uVar10;\n  uint lines;\n  uint uVar11;\n  int in_stack_ffffffac;\n  undefined1 *puVar12;\n  int in_stack_ffffffb4;\n  \n  puVar12 = &_gp;\n  if (line_only == 0) {\n    lines = term->rows;\n    bVar3 = true;\n    y = 0;\n    if (from_begin != 0) goto LAB_00095da4;\nLAB_00095d68:\n    x = (term->curs).x;\n    y_00 = (term->curs).y;\n    uVar10 = y_00 | x;\n    y = y_00;\n    uVar11 = x;\n    if (to_end == 0) {\n      if (term->cols == x) {\nLAB_00095dc0:\n        lines = y_00 + 1;\n        from_begin = 0;\n      }\n      else {\nLAB_00095d88:\n        from_begin = x + 1;\n        lines = y_00;\n      }\n    }\n    if ((0 < (int)x) && ((int)x <= term->cols)) {\n      check_boundary(term,x,y_00);\n    }\n  }\n  else {\n    y = (term->curs).y;\n    bVar3 = false;\n    lines = y + 1;\n    if (from_begin == 0) goto LAB_00095d68;\nLAB_00095da4:\n    uVar11 = 0;\n    uVar10 = y;\n    if (to_end == 0) {\n      x = (term->curs).x;\n      y_00 = (term->curs).y;\n      if (term->cols == x) goto LAB_00095dc0;\n      goto LAB_00095d88;\n    }\n    from_begin = 0;\n  }\n  from.y = from_begin;\n  from.x = in_stack_ffffffac;\n  to.y = (int)puVar12;\n  to.x = in_stack_ffffffb4;\n  term_00 = term;\n  check_selection(term,from,to);\n  if (uVar10 == 0) {\n    if (term->rows == lines) {\n      term_invalidate(term_00);\n    }\n    if ((from_begin != 0) || (!bVar3)) goto LAB_00095e48;\n    bVar4 = bVar3;\n    if (term->erase_to_scrollback != 0) {\n      if (term->rows == lines) {\n        iVar5 = find_last_nonempty_line(term,term->screen);\n        lines = iVar5 + 1;\n      }\n      if (0 < (int)lines) {\n        scroll(term,0,lines - 1,lines,1);\n      }\n      goto LAB_00095ff4;\n    }\n  }\n  else {\nLAB_00095e48:\n    bVar4 = false;\n  }\n  iVar5 = *(int *)(puVar12 + -0x77d8);\n  ptVar6 = lineptr(term,y,0x99b,1);\n  bVar1 = (int)y < (int)lines;\n  iVar7 = *(int *)(puVar12 + -0x77d8);\n  iVar8 = *(int *)(puVar12 + -0x77d8);\nLAB_00095e94:\n  if (bVar1) goto LAB_00095eb0;\n  if (y == lines) {\n    bVar2 = (int)uVar11 < from_begin;\n    do {\n      if (!bVar2) break;\nLAB_00095eb0:\n      do {\n        uVar10 = ptVar6->cols;\n        if (term->cols != uVar10) {\n          (*(code *)(iVar7 + 0xb64))(term,ptVar6);\n          uVar10 = term->cols;\n        }\n        if (uVar11 == uVar10) {\n          if (!bVar3) {\n            ptVar6->lattr = ptVar6->lattr & 0xffcf;\n            goto LAB_00095eec;\n          }\n          iVar9 = term->rows;\n          ptVar6->lattr = 0;\n          if ((int)(y + 1) < iVar9) goto LAB_00095f88;\n        }\n        else {\n          (*(code *)(iVar8 + 0x1070))(ptVar6,uVar11,&term->erase_char);\n          if (term->cols != uVar11) {\n            uVar11 = uVar11 + 1;\n            goto LAB_00095e94;\n          }\nLAB_00095eec:\n          if ((int)(y + 1) < term->rows) {\nLAB_00095f88:\n            y = y + 1;\n            ptVar6 = (termline *)(*(code *)(iVar5 + 0x2a9c))(term,y,0x9a7,1);\n            uVar11 = 0;\n            bVar1 = (int)y < (int)lines;\n            goto LAB_00095e94;\n          }\n        }\n        y = y + 1;\n        bVar1 = (int)y < (int)lines;\n        uVar11 = 0;\n      } while (bVar1);\n      bVar2 = 0 < from_begin;\n    } while (y == lines);\n  }\n  if (!bVar4) {\n    return;\n  }\nLAB_00095ff4:\n  if (term->alt_which != 0) {\n    return;\n  }\n  term->tempsblines = 0;\n  return;\n}" { (declaration "bool bVar1;" primitive_type identifier ;) (declaration "bool bVar2;" primitive_type identifier ;) (declaration "pos from;" type_identifier identifier ;) (declaration "pos to;" type_identifier identifier ;) (declaration "bool bVar3;" primitive_type identifier ;) (declaration "bool bVar4;" primitive_type identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "termline *ptVar6;" type_identifier (pointer_declarator "*ptVar6" * identifier) ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "Terminal *term_00;" type_identifier (pointer_declarator "*term_00" * identifier) ;) (declaration "uint x;" type_identifier identifier ;) (declaration "uint y;" type_identifier identifier ;) (declaration "uint y_00;" type_identifier identifier ;) (declaration "uint uVar10;" type_identifier identifier ;) (declaration "uint lines;" type_identifier identifier ;) (declaration "uint uVar11;" type_identifier identifier ;) (declaration "int in_stack_ffffffac;" primitive_type identifier ;) (declaration "undefined1 *puVar12;" type_identifier (pointer_declarator "*puVar12" * identifier) ;) (declaration "int in_stack_ffffffb4;" primitive_type identifier ;) (expression_statement "puVar12 = &_gp;" (assignment_expression "puVar12 = &_gp" identifier = (pointer_expression "&_gp" & identifier)) ;) (if_statement "if (line_only == 0) {\n    lines = term->rows;\n    bVar3 = true;\n    y = 0;\n    if (from_begin != 0) goto LAB_00095da4;\nLAB_00095d68:\n    x = (term->curs).x;\n    y_00 = (term->curs).y;\n    uVar10 = y_00 | x;\n    y = y_00;\n    uVar11 = x;\n    if (to_end == 0) {\n      if (term->cols == x) {\nLAB_00095dc0:\n        lines = y_00 + 1;\n        from_begin = 0;\n      }\n      else {\nLAB_00095d88:\n        from_begin = x + 1;\n        lines = y_00;\n      }\n    }\n    if ((0 < (int)x) && ((int)x <= term->cols)) {\n      check_boundary(term,x,y_00);\n    }\n  }\n  else {\n    y = (term->curs).y;\n    bVar3 = false;\n    lines = y + 1;\n    if (from_begin == 0) goto LAB_00095d68;\nLAB_00095da4:\n    uVar11 = 0;\n    uVar10 = y;\n    if (to_end == 0) {\n      x = (term->curs).x;\n      y_00 = (term->curs).y;\n      if (term->cols == x) goto LAB_00095dc0;\n      goto LAB_00095d88;\n    }\n    from_begin = 0;\n  }" if (parenthesized_expression "(line_only == 0)" ( (binary_expression "line_only == 0" identifier == number_literal) )) (compound_statement "{\n    lines = term->rows;\n    bVar3 = true;\n    y = 0;\n    if (from_begin != 0) goto LAB_00095da4;\nLAB_00095d68:\n    x = (term->curs).x;\n    y_00 = (term->curs).y;\n    uVar10 = y_00 | x;\n    y = y_00;\n    uVar11 = x;\n    if (to_end == 0) {\n      if (term->cols == x) {\nLAB_00095dc0:\n        lines = y_00 + 1;\n        from_begin = 0;\n      }\n      else {\nLAB_00095d88:\n        from_begin = x + 1;\n        lines = y_00;\n      }\n    }\n    if ((0 < (int)x) && ((int)x <= term->cols)) {\n      check_boundary(term,x,y_00);\n    }\n  }" { (expression_statement "lines = term->rows;" (assignment_expression "lines = term->rows" identifier = (field_expression "term->rows" identifier -> field_identifier)) ;) (expression_statement "bVar3 = true;" (assignment_expression "bVar3 = true" identifier = true) ;) (expression_statement "y = 0;" (assignment_expression "y = 0" identifier = number_literal) ;) (if_statement "if (from_begin != 0) goto LAB_00095da4;" if (parenthesized_expression "(from_begin != 0)" ( (binary_expression "from_begin != 0" identifier != number_literal) )) (goto_statement "goto LAB_00095da4;" goto statement_identifier ;)) (labeled_statement "LAB_00095d68:\n    x = (term->curs).x;" statement_identifier : (expression_statement "x = (term->curs).x;" (assignment_expression "x = (term->curs).x" identifier = (field_expression "(term->curs).x" (parenthesized_expression "(term->curs)" ( (field_expression "term->curs" identifier -> field_identifier) )) . field_identifier)) ;)) (expression_statement "y_00 = (term->curs).y;" (assignment_expression "y_00 = (term->curs).y" identifier = (field_expression "(term->curs).y" (parenthesized_expression "(term->curs)" ( (field_expression "term->curs" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "uVar10 = y_00 | x;" (assignment_expression "uVar10 = y_00 | x" identifier = (binary_expression "y_00 | x" identifier | identifier)) ;) (expression_statement "y = y_00;" (assignment_expression "y = y_00" identifier = identifier) ;) (expression_statement "uVar11 = x;" (assignment_expression "uVar11 = x" identifier = identifier) ;) (if_statement "if (to_end == 0) {\n      if (term->cols == x) {\nLAB_00095dc0:\n        lines = y_00 + 1;\n        from_begin = 0;\n      }\n      else {\nLAB_00095d88:\n        from_begin = x + 1;\n        lines = y_00;\n      }\n    }" if (parenthesized_expression "(to_end == 0)" ( (binary_expression "to_end == 0" identifier == number_literal) )) (compound_statement "{\n      if (term->cols == x) {\nLAB_00095dc0:\n        lines = y_00 + 1;\n        from_begin = 0;\n      }\n      else {\nLAB_00095d88:\n        from_begin = x + 1;\n        lines = y_00;\n      }\n    }" { (if_statement "if (term->cols == x) {\nLAB_00095dc0:\n        lines = y_00 + 1;\n        from_begin = 0;\n      }\n      else {\nLAB_00095d88:\n        from_begin = x + 1;\n        lines = y_00;\n      }" if (parenthesized_expression "(term->cols == x)" ( (binary_expression "term->cols == x" (field_expression "term->cols" identifier -> field_identifier) == identifier) )) (compound_statement "{\nLAB_00095dc0:\n        lines = y_00 + 1;\n        from_begin = 0;\n      }" { (labeled_statement "LAB_00095dc0:\n        lines = y_00 + 1;" statement_identifier : (expression_statement "lines = y_00 + 1;" (assignment_expression "lines = y_00 + 1" identifier = (binary_expression "y_00 + 1" identifier + number_literal)) ;)) (expression_statement "from_begin = 0;" (assignment_expression "from_begin = 0" identifier = number_literal) ;) }) (else_clause "else {\nLAB_00095d88:\n        from_begin = x + 1;\n        lines = y_00;\n      }" else (compound_statement "{\nLAB_00095d88:\n        from_begin = x + 1;\n        lines = y_00;\n      }" { (labeled_statement "LAB_00095d88:\n        from_begin = x + 1;" statement_identifier : (expression_statement "from_begin = x + 1;" (assignment_expression "from_begin = x + 1" identifier = (binary_expression "x + 1" identifier + number_literal)) ;)) (expression_statement "lines = y_00;" (assignment_expression "lines = y_00" identifier = identifier) ;) }))) })) (if_statement "if ((0 < (int)x) && ((int)x <= term->cols)) {\n      check_boundary(term,x,y_00);\n    }" if (parenthesized_expression "((0 < (int)x) && ((int)x <= term->cols))" ( (binary_expression "(0 < (int)x) && ((int)x <= term->cols)" (parenthesized_expression "(0 < (int)x)" ( (binary_expression "0 < (int)x" number_literal < (cast_expression "(int)x" ( (type_descriptor "int" primitive_type) ) identifier)) )) && (parenthesized_expression "((int)x <= term->cols)" ( (binary_expression "(int)x <= term->cols" (cast_expression "(int)x" ( (type_descriptor "int" primitive_type) ) identifier) <= (field_expression "term->cols" identifier -> field_identifier)) ))) )) (compound_statement "{\n      check_boundary(term,x,y_00);\n    }" { (expression_statement "check_boundary(term,x,y_00);" (call_expression "check_boundary(term,x,y_00)" identifier (argument_list "(term,x,y_00)" ( identifier , identifier , identifier ))) ;) })) }) (else_clause "else {\n    y = (term->curs).y;\n    bVar3 = false;\n    lines = y + 1;\n    if (from_begin == 0) goto LAB_00095d68;\nLAB_00095da4:\n    uVar11 = 0;\n    uVar10 = y;\n    if (to_end == 0) {\n      x = (term->curs).x;\n      y_00 = (term->curs).y;\n      if (term->cols == x) goto LAB_00095dc0;\n      goto LAB_00095d88;\n    }\n    from_begin = 0;\n  }" else (compound_statement "{\n    y = (term->curs).y;\n    bVar3 = false;\n    lines = y + 1;\n    if (from_begin == 0) goto LAB_00095d68;\nLAB_00095da4:\n    uVar11 = 0;\n    uVar10 = y;\n    if (to_end == 0) {\n      x = (term->curs).x;\n      y_00 = (term->curs).y;\n      if (term->cols == x) goto LAB_00095dc0;\n      goto LAB_00095d88;\n    }\n    from_begin = 0;\n  }" { (expression_statement "y = (term->curs).y;" (assignment_expression "y = (term->curs).y" identifier = (field_expression "(term->curs).y" (parenthesized_expression "(term->curs)" ( (field_expression "term->curs" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "bVar3 = false;" (assignment_expression "bVar3 = false" identifier = false) ;) (expression_statement "lines = y + 1;" (assignment_expression "lines = y + 1" identifier = (binary_expression "y + 1" identifier + number_literal)) ;) (if_statement "if (from_begin == 0) goto LAB_00095d68;" if (parenthesized_expression "(from_begin == 0)" ( (binary_expression "from_begin == 0" identifier == number_literal) )) (goto_statement "goto LAB_00095d68;" goto statement_identifier ;)) (labeled_statement "LAB_00095da4:\n    uVar11 = 0;" statement_identifier : (expression_statement "uVar11 = 0;" (assignment_expression "uVar11 = 0" identifier = number_literal) ;)) (expression_statement "uVar10 = y;" (assignment_expression "uVar10 = y" identifier = identifier) ;) (if_statement "if (to_end == 0) {\n      x = (term->curs).x;\n      y_00 = (term->curs).y;\n      if (term->cols == x) goto LAB_00095dc0;\n      goto LAB_00095d88;\n    }" if (parenthesized_expression "(to_end == 0)" ( (binary_expression "to_end == 0" identifier == number_literal) )) (compound_statement "{\n      x = (term->curs).x;\n      y_00 = (term->curs).y;\n      if (term->cols == x) goto LAB_00095dc0;\n      goto LAB_00095d88;\n    }" { (expression_statement "x = (term->curs).x;" (assignment_expression "x = (term->curs).x" identifier = (field_expression "(term->curs).x" (parenthesized_expression "(term->curs)" ( (field_expression "term->curs" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "y_00 = (term->curs).y;" (assignment_expression "y_00 = (term->curs).y" identifier = (field_expression "(term->curs).y" (parenthesized_expression "(term->curs)" ( (field_expression "term->curs" identifier -> field_identifier) )) . field_identifier)) ;) (if_statement "if (term->cols == x) goto LAB_00095dc0;" if (parenthesized_expression "(term->cols == x)" ( (binary_expression "term->cols == x" (field_expression "term->cols" identifier -> field_identifier) == identifier) )) (goto_statement "goto LAB_00095dc0;" goto statement_identifier ;)) (goto_statement "goto LAB_00095d88;" goto statement_identifier ;) })) (expression_statement "from_begin = 0;" (assignment_expression "from_begin = 0" identifier = number_literal) ;) }))) (expression_statement "from.y = from_begin;" (assignment_expression "from.y = from_begin" (field_expression "from.y" identifier . field_identifier) = identifier) ;) (expression_statement "from.x = in_stack_ffffffac;" (assignment_expression "from.x = in_stack_ffffffac" (field_expression "from.x" identifier . field_identifier) = identifier) ;) (expression_statement "to.y = (int)puVar12;" (assignment_expression "to.y = (int)puVar12" (field_expression "to.y" identifier . field_identifier) = (cast_expression "(int)puVar12" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "to.x = in_stack_ffffffb4;" (assignment_expression "to.x = in_stack_ffffffb4" (field_expression "to.x" identifier . field_identifier) = identifier) ;) (expression_statement "term_00 = term;" (assignment_expression "term_00 = term" identifier = identifier) ;) (expression_statement "check_selection(term,from,to);" (call_expression "check_selection(term,from,to)" identifier (argument_list "(term,from,to)" ( identifier , identifier , identifier ))) ;) (if_statement "if (uVar10 == 0) {\n    if (term->rows == lines) {\n      term_invalidate(term_00);\n    }\n    if ((from_begin != 0) || (!bVar3)) goto LAB_00095e48;\n    bVar4 = bVar3;\n    if (term->erase_to_scrollback != 0) {\n      if (term->rows == lines) {\n        iVar5 = find_last_nonempty_line(term,term->screen);\n        lines = iVar5 + 1;\n      }\n      if (0 < (int)lines) {\n        scroll(term,0,lines - 1,lines,1);\n      }\n      goto LAB_00095ff4;\n    }\n  }\n  else {\nLAB_00095e48:\n    bVar4 = false;\n  }" if (parenthesized_expression "(uVar10 == 0)" ( (binary_expression "uVar10 == 0" identifier == number_literal) )) (compound_statement "{\n    if (term->rows == lines) {\n      term_invalidate(term_00);\n    }\n    if ((from_begin != 0) || (!bVar3)) goto LAB_00095e48;\n    bVar4 = bVar3;\n    if (term->erase_to_scrollback != 0) {\n      if (term->rows == lines) {\n        iVar5 = find_last_nonempty_line(term,term->screen);\n        lines = iVar5 + 1;\n      }\n      if (0 < (int)lines) {\n        scroll(term,0,lines - 1,lines,1);\n      }\n      goto LAB_00095ff4;\n    }\n  }" { (if_statement "if (term->rows == lines) {\n      term_invalidate(term_00);\n    }" if (parenthesized_expression "(term->rows == lines)" ( (binary_expression "term->rows == lines" (field_expression "term->rows" identifier -> field_identifier) == identifier) )) (compound_statement "{\n      term_invalidate(term_00);\n    }" { (expression_statement "term_invalidate(term_00);" (call_expression "term_invalidate(term_00)" identifier (argument_list "(term_00)" ( identifier ))) ;) })) (if_statement "if ((from_begin != 0) || (!bVar3)) goto LAB_00095e48;" if (parenthesized_expression "((from_begin != 0) || (!bVar3))" ( (binary_expression "(from_begin != 0) || (!bVar3)" (parenthesized_expression "(from_begin != 0)" ( (binary_expression "from_begin != 0" identifier != number_literal) )) || (parenthesized_expression "(!bVar3)" ( (unary_expression "!bVar3" ! identifier) ))) )) (goto_statement "goto LAB_00095e48;" goto statement_identifier ;)) (expression_statement "bVar4 = bVar3;" (assignment_expression "bVar4 = bVar3" identifier = identifier) ;) (if_statement "if (term->erase_to_scrollback != 0) {\n      if (term->rows == lines) {\n        iVar5 = find_last_nonempty_line(term,term->screen);\n        lines = iVar5 + 1;\n      }\n      if (0 < (int)lines) {\n        scroll(term,0,lines - 1,lines,1);\n      }\n      goto LAB_00095ff4;\n    }" if (parenthesized_expression "(term->erase_to_scrollback != 0)" ( (binary_expression "term->erase_to_scrollback != 0" (field_expression "term->erase_to_scrollback" identifier -> field_identifier) != number_literal) )) (compound_statement "{\n      if (term->rows == lines) {\n        iVar5 = find_last_nonempty_line(term,term->screen);\n        lines = iVar5 + 1;\n      }\n      if (0 < (int)lines) {\n        scroll(term,0,lines - 1,lines,1);\n      }\n      goto LAB_00095ff4;\n    }" { (if_statement "if (term->rows == lines) {\n        iVar5 = find_last_nonempty_line(term,term->screen);\n        lines = iVar5 + 1;\n      }" if (parenthesized_expression "(term->rows == lines)" ( (binary_expression "term->rows == lines" (field_expression "term->rows" identifier -> field_identifier) == identifier) )) (compound_statement "{\n        iVar5 = find_last_nonempty_line(term,term->screen);\n        lines = iVar5 + 1;\n      }" { (expression_statement "iVar5 = find_last_nonempty_line(term,term->screen);" (assignment_expression "iVar5 = find_last_nonempty_line(term,term->screen)" identifier = (call_expression "find_last_nonempty_line(term,term->screen)" identifier (argument_list "(term,term->screen)" ( identifier , (field_expression "term->screen" identifier -> field_identifier) )))) ;) (expression_statement "lines = iVar5 + 1;" (assignment_expression "lines = iVar5 + 1" identifier = (binary_expression "iVar5 + 1" identifier + number_literal)) ;) })) (if_statement "if (0 < (int)lines) {\n        scroll(term,0,lines - 1,lines,1);\n      }" if (parenthesized_expression "(0 < (int)lines)" ( (binary_expression "0 < (int)lines" number_literal < (cast_expression "(int)lines" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n        scroll(term,0,lines - 1,lines,1);\n      }" { (expression_statement "scroll(term,0,lines - 1,lines,1);" (call_expression "scroll(term,0,lines - 1,lines,1)" identifier (argument_list "(term,0,lines - 1,lines,1)" ( identifier , number_literal , (binary_expression "lines - 1" identifier - number_literal) , identifier , number_literal ))) ;) })) (goto_statement "goto LAB_00095ff4;" goto statement_identifier ;) })) }) (else_clause "else {\nLAB_00095e48:\n    bVar4 = false;\n  }" else (compound_statement "{\nLAB_00095e48:\n    bVar4 = false;\n  }" { (labeled_statement "LAB_00095e48:\n    bVar4 = false;" statement_identifier : (expression_statement "bVar4 = false;" (assignment_expression "bVar4 = false" identifier = false) ;)) }))) (expression_statement "iVar5 = *(int *)(puVar12 + -0x77d8);" (assignment_expression "iVar5 = *(int *)(puVar12 + -0x77d8)" identifier = (pointer_expression "*(int *)(puVar12 + -0x77d8)" * (cast_expression "(int *)(puVar12 + -0x77d8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar12 + -0x77d8)" ( (binary_expression "puVar12 + -0x77d8" identifier + number_literal) ))))) ;) (expression_statement "ptVar6 = lineptr(term,y,0x99b,1);" (assignment_expression "ptVar6 = lineptr(term,y,0x99b,1)" identifier = (call_expression "lineptr(term,y,0x99b,1)" identifier (argument_list "(term,y,0x99b,1)" ( identifier , identifier , number_literal , number_literal )))) ;) (expression_statement "bVar1 = (int)y < (int)lines;" (assignment_expression "bVar1 = (int)y < (int)lines" identifier = (binary_expression "(int)y < (int)lines" (cast_expression "(int)y" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)lines" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "iVar7 = *(int *)(puVar12 + -0x77d8);" (assignment_expression "iVar7 = *(int *)(puVar12 + -0x77d8)" identifier = (pointer_expression "*(int *)(puVar12 + -0x77d8)" * (cast_expression "(int *)(puVar12 + -0x77d8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar12 + -0x77d8)" ( (binary_expression "puVar12 + -0x77d8" identifier + number_literal) ))))) ;) (expression_statement "iVar8 = *(int *)(puVar12 + -0x77d8);" (assignment_expression "iVar8 = *(int *)(puVar12 + -0x77d8)" identifier = (pointer_expression "*(int *)(puVar12 + -0x77d8)" * (cast_expression "(int *)(puVar12 + -0x77d8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar12 + -0x77d8)" ( (binary_expression "puVar12 + -0x77d8" identifier + number_literal) ))))) ;) (labeled_statement "LAB_00095e94:\n  if (bVar1) goto LAB_00095eb0;" statement_identifier : (if_statement "if (bVar1) goto LAB_00095eb0;" if (parenthesized_expression "(bVar1)" ( identifier )) (goto_statement "goto LAB_00095eb0;" goto statement_identifier ;))) (if_statement "if (y == lines) {\n    bVar2 = (int)uVar11 < from_begin;\n    do {\n      if (!bVar2) break;\nLAB_00095eb0:\n      do {\n        uVar10 = ptVar6->cols;\n        if (term->cols != uVar10) {\n          (*(code *)(iVar7 + 0xb64))(term,ptVar6);\n          uVar10 = term->cols;\n        }\n        if (uVar11 == uVar10) {\n          if (!bVar3) {\n            ptVar6->lattr = ptVar6->lattr & 0xffcf;\n            goto LAB_00095eec;\n          }\n          iVar9 = term->rows;\n          ptVar6->lattr = 0;\n          if ((int)(y + 1) < iVar9) goto LAB_00095f88;\n        }\n        else {\n          (*(code *)(iVar8 + 0x1070))(ptVar6,uVar11,&term->erase_char);\n          if (term->cols != uVar11) {\n            uVar11 = uVar11 + 1;\n            goto LAB_00095e94;\n          }\nLAB_00095eec:\n          if ((int)(y + 1) < term->rows) {\nLAB_00095f88:\n            y = y + 1;\n            ptVar6 = (termline *)(*(code *)(iVar5 + 0x2a9c))(term,y,0x9a7,1);\n            uVar11 = 0;\n            bVar1 = (int)y < (int)lines;\n            goto LAB_00095e94;\n          }\n        }\n        y = y + 1;\n        bVar1 = (int)y < (int)lines;\n        uVar11 = 0;\n      } while (bVar1);\n      bVar2 = 0 < from_begin;\n    } while (y == lines);\n  }" if (parenthesized_expression "(y == lines)" ( (binary_expression "y == lines" identifier == identifier) )) (compound_statement "{\n    bVar2 = (int)uVar11 < from_begin;\n    do {\n      if (!bVar2) break;\nLAB_00095eb0:\n      do {\n        uVar10 = ptVar6->cols;\n        if (term->cols != uVar10) {\n          (*(code *)(iVar7 + 0xb64))(term,ptVar6);\n          uVar10 = term->cols;\n        }\n        if (uVar11 == uVar10) {\n          if (!bVar3) {\n            ptVar6->lattr = ptVar6->lattr & 0xffcf;\n            goto LAB_00095eec;\n          }\n          iVar9 = term->rows;\n          ptVar6->lattr = 0;\n          if ((int)(y + 1) < iVar9) goto LAB_00095f88;\n        }\n        else {\n          (*(code *)(iVar8 + 0x1070))(ptVar6,uVar11,&term->erase_char);\n          if (term->cols != uVar11) {\n            uVar11 = uVar11 + 1;\n            goto LAB_00095e94;\n          }\nLAB_00095eec:\n          if ((int)(y + 1) < term->rows) {\nLAB_00095f88:\n            y = y + 1;\n            ptVar6 = (termline *)(*(code *)(iVar5 + 0x2a9c))(term,y,0x9a7,1);\n            uVar11 = 0;\n            bVar1 = (int)y < (int)lines;\n            goto LAB_00095e94;\n          }\n        }\n        y = y + 1;\n        bVar1 = (int)y < (int)lines;\n        uVar11 = 0;\n      } while (bVar1);\n      bVar2 = 0 < from_begin;\n    } while (y == lines);\n  }" { (expression_statement "bVar2 = (int)uVar11 < from_begin;" (assignment_expression "bVar2 = (int)uVar11 < from_begin" identifier = (binary_expression "(int)uVar11 < from_begin" (cast_expression "(int)uVar11" ( (type_descriptor "int" primitive_type) ) identifier) < identifier)) ;) (do_statement "do {\n      if (!bVar2) break;\nLAB_00095eb0:\n      do {\n        uVar10 = ptVar6->cols;\n        if (term->cols != uVar10) {\n          (*(code *)(iVar7 + 0xb64))(term,ptVar6);\n          uVar10 = term->cols;\n        }\n        if (uVar11 == uVar10) {\n          if (!bVar3) {\n            ptVar6->lattr = ptVar6->lattr & 0xffcf;\n            goto LAB_00095eec;\n          }\n          iVar9 = term->rows;\n          ptVar6->lattr = 0;\n          if ((int)(y + 1) < iVar9) goto LAB_00095f88;\n        }\n        else {\n          (*(code *)(iVar8 + 0x1070))(ptVar6,uVar11,&term->erase_char);\n          if (term->cols != uVar11) {\n            uVar11 = uVar11 + 1;\n            goto LAB_00095e94;\n          }\nLAB_00095eec:\n          if ((int)(y + 1) < term->rows) {\nLAB_00095f88:\n            y = y + 1;\n            ptVar6 = (termline *)(*(code *)(iVar5 + 0x2a9c))(term,y,0x9a7,1);\n            uVar11 = 0;\n            bVar1 = (int)y < (int)lines;\n            goto LAB_00095e94;\n          }\n        }\n        y = y + 1;\n        bVar1 = (int)y < (int)lines;\n        uVar11 = 0;\n      } while (bVar1);\n      bVar2 = 0 < from_begin;\n    } while (y == lines);" do (compound_statement "{\n      if (!bVar2) break;\nLAB_00095eb0:\n      do {\n        uVar10 = ptVar6->cols;\n        if (term->cols != uVar10) {\n          (*(code *)(iVar7 + 0xb64))(term,ptVar6);\n          uVar10 = term->cols;\n        }\n        if (uVar11 == uVar10) {\n          if (!bVar3) {\n            ptVar6->lattr = ptVar6->lattr & 0xffcf;\n            goto LAB_00095eec;\n          }\n          iVar9 = term->rows;\n          ptVar6->lattr = 0;\n          if ((int)(y + 1) < iVar9) goto LAB_00095f88;\n        }\n        else {\n          (*(code *)(iVar8 + 0x1070))(ptVar6,uVar11,&term->erase_char);\n          if (term->cols != uVar11) {\n            uVar11 = uVar11 + 1;\n            goto LAB_00095e94;\n          }\nLAB_00095eec:\n          if ((int)(y + 1) < term->rows) {\nLAB_00095f88:\n            y = y + 1;\n            ptVar6 = (termline *)(*(code *)(iVar5 + 0x2a9c))(term,y,0x9a7,1);\n            uVar11 = 0;\n            bVar1 = (int)y < (int)lines;\n            goto LAB_00095e94;\n          }\n        }\n        y = y + 1;\n        bVar1 = (int)y < (int)lines;\n        uVar11 = 0;\n      } while (bVar1);\n      bVar2 = 0 < from_begin;\n    }" { (if_statement "if (!bVar2) break;" if (parenthesized_expression "(!bVar2)" ( (unary_expression "!bVar2" ! identifier) )) (break_statement "break;" break ;)) (labeled_statement "LAB_00095eb0:\n      do {\n        uVar10 = ptVar6->cols;\n        if (term->cols != uVar10) {\n          (*(code *)(iVar7 + 0xb64))(term,ptVar6);\n          uVar10 = term->cols;\n        }\n        if (uVar11 == uVar10) {\n          if (!bVar3) {\n            ptVar6->lattr = ptVar6->lattr & 0xffcf;\n            goto LAB_00095eec;\n          }\n          iVar9 = term->rows;\n          ptVar6->lattr = 0;\n          if ((int)(y + 1) < iVar9) goto LAB_00095f88;\n        }\n        else {\n          (*(code *)(iVar8 + 0x1070))(ptVar6,uVar11,&term->erase_char);\n          if (term->cols != uVar11) {\n            uVar11 = uVar11 + 1;\n            goto LAB_00095e94;\n          }\nLAB_00095eec:\n          if ((int)(y + 1) < term->rows) {\nLAB_00095f88:\n            y = y + 1;\n            ptVar6 = (termline *)(*(code *)(iVar5 + 0x2a9c))(term,y,0x9a7,1);\n            uVar11 = 0;\n            bVar1 = (int)y < (int)lines;\n            goto LAB_00095e94;\n          }\n        }\n        y = y + 1;\n        bVar1 = (int)y < (int)lines;\n        uVar11 = 0;\n      } while (bVar1);" statement_identifier : (do_statement "do {\n        uVar10 = ptVar6->cols;\n        if (term->cols != uVar10) {\n          (*(code *)(iVar7 + 0xb64))(term,ptVar6);\n          uVar10 = term->cols;\n        }\n        if (uVar11 == uVar10) {\n          if (!bVar3) {\n            ptVar6->lattr = ptVar6->lattr & 0xffcf;\n            goto LAB_00095eec;\n          }\n          iVar9 = term->rows;\n          ptVar6->lattr = 0;\n          if ((int)(y + 1) < iVar9) goto LAB_00095f88;\n        }\n        else {\n          (*(code *)(iVar8 + 0x1070))(ptVar6,uVar11,&term->erase_char);\n          if (term->cols != uVar11) {\n            uVar11 = uVar11 + 1;\n            goto LAB_00095e94;\n          }\nLAB_00095eec:\n          if ((int)(y + 1) < term->rows) {\nLAB_00095f88:\n            y = y + 1;\n            ptVar6 = (termline *)(*(code *)(iVar5 + 0x2a9c))(term,y,0x9a7,1);\n            uVar11 = 0;\n            bVar1 = (int)y < (int)lines;\n            goto LAB_00095e94;\n          }\n        }\n        y = y + 1;\n        bVar1 = (int)y < (int)lines;\n        uVar11 = 0;\n      } while (bVar1);" do (compound_statement "{\n        uVar10 = ptVar6->cols;\n        if (term->cols != uVar10) {\n          (*(code *)(iVar7 + 0xb64))(term,ptVar6);\n          uVar10 = term->cols;\n        }\n        if (uVar11 == uVar10) {\n          if (!bVar3) {\n            ptVar6->lattr = ptVar6->lattr & 0xffcf;\n            goto LAB_00095eec;\n          }\n          iVar9 = term->rows;\n          ptVar6->lattr = 0;\n          if ((int)(y + 1) < iVar9) goto LAB_00095f88;\n        }\n        else {\n          (*(code *)(iVar8 + 0x1070))(ptVar6,uVar11,&term->erase_char);\n          if (term->cols != uVar11) {\n            uVar11 = uVar11 + 1;\n            goto LAB_00095e94;\n          }\nLAB_00095eec:\n          if ((int)(y + 1) < term->rows) {\nLAB_00095f88:\n            y = y + 1;\n            ptVar6 = (termline *)(*(code *)(iVar5 + 0x2a9c))(term,y,0x9a7,1);\n            uVar11 = 0;\n            bVar1 = (int)y < (int)lines;\n            goto LAB_00095e94;\n          }\n        }\n        y = y + 1;\n        bVar1 = (int)y < (int)lines;\n        uVar11 = 0;\n      }" { (expression_statement "uVar10 = ptVar6->cols;" (assignment_expression "uVar10 = ptVar6->cols" identifier = (field_expression "ptVar6->cols" identifier -> field_identifier)) ;) (if_statement "if (term->cols != uVar10) {\n          (*(code *)(iVar7 + 0xb64))(term,ptVar6);\n          uVar10 = term->cols;\n        }" if (parenthesized_expression "(term->cols != uVar10)" ( (binary_expression "term->cols != uVar10" (field_expression "term->cols" identifier -> field_identifier) != identifier) )) (compound_statement "{\n          (*(code *)(iVar7 + 0xb64))(term,ptVar6);\n          uVar10 = term->cols;\n        }" { (expression_statement "(*(code *)(iVar7 + 0xb64))(term,ptVar6);" (call_expression "(*(code *)(iVar7 + 0xb64))(term,ptVar6)" (parenthesized_expression "(*(code *)(iVar7 + 0xb64))" ( (pointer_expression "*(code *)(iVar7 + 0xb64)" * (cast_expression "(code *)(iVar7 + 0xb64)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 0xb64)" ( (binary_expression "iVar7 + 0xb64" identifier + number_literal) )))) )) (argument_list "(term,ptVar6)" ( identifier , identifier ))) ;) (expression_statement "uVar10 = term->cols;" (assignment_expression "uVar10 = term->cols" identifier = (field_expression "term->cols" identifier -> field_identifier)) ;) })) (if_statement "if (uVar11 == uVar10) {\n          if (!bVar3) {\n            ptVar6->lattr = ptVar6->lattr & 0xffcf;\n            goto LAB_00095eec;\n          }\n          iVar9 = term->rows;\n          ptVar6->lattr = 0;\n          if ((int)(y + 1) < iVar9) goto LAB_00095f88;\n        }\n        else {\n          (*(code *)(iVar8 + 0x1070))(ptVar6,uVar11,&term->erase_char);\n          if (term->cols != uVar11) {\n            uVar11 = uVar11 + 1;\n            goto LAB_00095e94;\n          }\nLAB_00095eec:\n          if ((int)(y + 1) < term->rows) {\nLAB_00095f88:\n            y = y + 1;\n            ptVar6 = (termline *)(*(code *)(iVar5 + 0x2a9c))(term,y,0x9a7,1);\n            uVar11 = 0;\n            bVar1 = (int)y < (int)lines;\n            goto LAB_00095e94;\n          }\n        }" if (parenthesized_expression "(uVar11 == uVar10)" ( (binary_expression "uVar11 == uVar10" identifier == identifier) )) (compound_statement "{\n          if (!bVar3) {\n            ptVar6->lattr = ptVar6->lattr & 0xffcf;\n            goto LAB_00095eec;\n          }\n          iVar9 = term->rows;\n          ptVar6->lattr = 0;\n          if ((int)(y + 1) < iVar9) goto LAB_00095f88;\n        }" { (if_statement "if (!bVar3) {\n            ptVar6->lattr = ptVar6->lattr & 0xffcf;\n            goto LAB_00095eec;\n          }" if (parenthesized_expression "(!bVar3)" ( (unary_expression "!bVar3" ! identifier) )) (compound_statement "{\n            ptVar6->lattr = ptVar6->lattr & 0xffcf;\n            goto LAB_00095eec;\n          }" { (expression_statement "ptVar6->lattr = ptVar6->lattr & 0xffcf;" (assignment_expression "ptVar6->lattr = ptVar6->lattr & 0xffcf" (field_expression "ptVar6->lattr" identifier -> field_identifier) = (binary_expression "ptVar6->lattr & 0xffcf" (field_expression "ptVar6->lattr" identifier -> field_identifier) & number_literal)) ;) (goto_statement "goto LAB_00095eec;" goto statement_identifier ;) })) (expression_statement "iVar9 = term->rows;" (assignment_expression "iVar9 = term->rows" identifier = (field_expression "term->rows" identifier -> field_identifier)) ;) (expression_statement "ptVar6->lattr = 0;" (assignment_expression "ptVar6->lattr = 0" (field_expression "ptVar6->lattr" identifier -> field_identifier) = number_literal) ;) (if_statement "if ((int)(y + 1) < iVar9) goto LAB_00095f88;" if (parenthesized_expression "((int)(y + 1) < iVar9)" ( (binary_expression "(int)(y + 1) < iVar9" (cast_expression "(int)(y + 1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(y + 1)" ( (binary_expression "y + 1" identifier + number_literal) ))) < identifier) )) (goto_statement "goto LAB_00095f88;" goto statement_identifier ;)) }) (else_clause "else {\n          (*(code *)(iVar8 + 0x1070))(ptVar6,uVar11,&term->erase_char);\n          if (term->cols != uVar11) {\n            uVar11 = uVar11 + 1;\n            goto LAB_00095e94;\n          }\nLAB_00095eec:\n          if ((int)(y + 1) < term->rows) {\nLAB_00095f88:\n            y = y + 1;\n            ptVar6 = (termline *)(*(code *)(iVar5 + 0x2a9c))(term,y,0x9a7,1);\n            uVar11 = 0;\n            bVar1 = (int)y < (int)lines;\n            goto LAB_00095e94;\n          }\n        }" else (compound_statement "{\n          (*(code *)(iVar8 + 0x1070))(ptVar6,uVar11,&term->erase_char);\n          if (term->cols != uVar11) {\n            uVar11 = uVar11 + 1;\n            goto LAB_00095e94;\n          }\nLAB_00095eec:\n          if ((int)(y + 1) < term->rows) {\nLAB_00095f88:\n            y = y + 1;\n            ptVar6 = (termline *)(*(code *)(iVar5 + 0x2a9c))(term,y,0x9a7,1);\n            uVar11 = 0;\n            bVar1 = (int)y < (int)lines;\n            goto LAB_00095e94;\n          }\n        }" { (expression_statement "(*(code *)(iVar8 + 0x1070))(ptVar6,uVar11,&term->erase_char);" (call_expression "(*(code *)(iVar8 + 0x1070))(ptVar6,uVar11,&term->erase_char)" (parenthesized_expression "(*(code *)(iVar8 + 0x1070))" ( (pointer_expression "*(code *)(iVar8 + 0x1070)" * (cast_expression "(code *)(iVar8 + 0x1070)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x1070)" ( (binary_expression "iVar8 + 0x1070" identifier + number_literal) )))) )) (argument_list "(ptVar6,uVar11,&term->erase_char)" ( identifier , identifier , (pointer_expression "&term->erase_char" & (field_expression "term->erase_char" identifier -> field_identifier)) ))) ;) (if_statement "if (term->cols != uVar11) {\n            uVar11 = uVar11 + 1;\n            goto LAB_00095e94;\n          }" if (parenthesized_expression "(term->cols != uVar11)" ( (binary_expression "term->cols != uVar11" (field_expression "term->cols" identifier -> field_identifier) != identifier) )) (compound_statement "{\n            uVar11 = uVar11 + 1;\n            goto LAB_00095e94;\n          }" { (expression_statement "uVar11 = uVar11 + 1;" (assignment_expression "uVar11 = uVar11 + 1" identifier = (binary_expression "uVar11 + 1" identifier + number_literal)) ;) (goto_statement "goto LAB_00095e94;" goto statement_identifier ;) })) (labeled_statement "LAB_00095eec:\n          if ((int)(y + 1) < term->rows) {\nLAB_00095f88:\n            y = y + 1;\n            ptVar6 = (termline *)(*(code *)(iVar5 + 0x2a9c))(term,y,0x9a7,1);\n            uVar11 = 0;\n            bVar1 = (int)y < (int)lines;\n            goto LAB_00095e94;\n          }" statement_identifier : (if_statement "if ((int)(y + 1) < term->rows) {\nLAB_00095f88:\n            y = y + 1;\n            ptVar6 = (termline *)(*(code *)(iVar5 + 0x2a9c))(term,y,0x9a7,1);\n            uVar11 = 0;\n            bVar1 = (int)y < (int)lines;\n            goto LAB_00095e94;\n          }" if (parenthesized_expression "((int)(y + 1) < term->rows)" ( (binary_expression "(int)(y + 1) < term->rows" (cast_expression "(int)(y + 1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(y + 1)" ( (binary_expression "y + 1" identifier + number_literal) ))) < (field_expression "term->rows" identifier -> field_identifier)) )) (compound_statement "{\nLAB_00095f88:\n            y = y + 1;\n            ptVar6 = (termline *)(*(code *)(iVar5 + 0x2a9c))(term,y,0x9a7,1);\n            uVar11 = 0;\n            bVar1 = (int)y < (int)lines;\n            goto LAB_00095e94;\n          }" { (labeled_statement "LAB_00095f88:\n            y = y + 1;" statement_identifier : (expression_statement "y = y + 1;" (assignment_expression "y = y + 1" identifier = (binary_expression "y + 1" identifier + number_literal)) ;)) (expression_statement "ptVar6 = (termline *)(*(code *)(iVar5 + 0x2a9c))(term,y,0x9a7,1);" (assignment_expression "ptVar6 = (termline *)(*(code *)(iVar5 + 0x2a9c))(term,y,0x9a7,1)" identifier = (cast_expression "(termline *)(*(code *)(iVar5 + 0x2a9c))(term,y,0x9a7,1)" ( (type_descriptor "termline *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)(iVar5 + 0x2a9c))(term,y,0x9a7,1)" (parenthesized_expression "(*(code *)(iVar5 + 0x2a9c))" ( (pointer_expression "*(code *)(iVar5 + 0x2a9c)" * (cast_expression "(code *)(iVar5 + 0x2a9c)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar5 + 0x2a9c)" ( (binary_expression "iVar5 + 0x2a9c" identifier + number_literal) )))) )) (argument_list "(term,y,0x9a7,1)" ( identifier , identifier , number_literal , number_literal ))))) ;) (expression_statement "uVar11 = 0;" (assignment_expression "uVar11 = 0" identifier = number_literal) ;) (expression_statement "bVar1 = (int)y < (int)lines;" (assignment_expression "bVar1 = (int)y < (int)lines" identifier = (binary_expression "(int)y < (int)lines" (cast_expression "(int)y" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)lines" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (goto_statement "goto LAB_00095e94;" goto statement_identifier ;) }))) }))) (expression_statement "y = y + 1;" (assignment_expression "y = y + 1" identifier = (binary_expression "y + 1" identifier + number_literal)) ;) (expression_statement "bVar1 = (int)y < (int)lines;" (assignment_expression "bVar1 = (int)y < (int)lines" identifier = (binary_expression "(int)y < (int)lines" (cast_expression "(int)y" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)lines" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "uVar11 = 0;" (assignment_expression "uVar11 = 0" identifier = number_literal) ;) }) while (parenthesized_expression "(bVar1)" ( identifier )) ;)) (expression_statement "bVar2 = 0 < from_begin;" (assignment_expression "bVar2 = 0 < from_begin" identifier = (binary_expression "0 < from_begin" number_literal < identifier)) ;) }) while (parenthesized_expression "(y == lines)" ( (binary_expression "y == lines" identifier == identifier) )) ;) })) (if_statement "if (!bVar4) {\n    return;\n  }" if (parenthesized_expression "(!bVar4)" ( (unary_expression "!bVar4" ! identifier) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (labeled_statement "LAB_00095ff4:\n  if (term->alt_which != 0) {\n    return;\n  }" statement_identifier : (if_statement "if (term->alt_which != 0) {\n    return;\n  }" if (parenthesized_expression "(term->alt_which != 0)" ( (binary_expression "term->alt_which != 0" (field_expression "term->alt_which" identifier -> field_identifier) != number_literal) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) }))) (expression_statement "term->tempsblines = 0;" (assignment_expression "term->tempsblines = 0" (field_expression "term->tempsblines" identifier -> field_identifier) = number_literal) ;) (return_statement "return;" return ;) })))
(translation_unit "void FUN_00095d10(int param_1,int param_2,int param_3,int param_4)\n\n{\n  bool bVar1;\n  bool bVar2;\n  bool bVar3;\n  bool bVar4;\n  ushort *puVar5;\n  code *pcVar6;\n  code *pcVar7;\n  int iVar8;\n  uint uVar9;\n  uint uVar10;\n  uint uVar11;\n  uint uVar12;\n  uint uVar13;\n  code *pcVar14;\n  uint uVar15;\n  \n  if (param_2 == 0) {\n    uVar13 = *(uint *)(param_1 + 0x128);\n    bVar3 = true;\n    uVar10 = 0;\n    if (param_3 != 0) goto LAB_00095da4;\nLAB_00095d68:\n    uVar9 = *(uint *)(param_1 + 0x70);\n    uVar11 = *(uint *)(param_1 + 0x6c);\n    uVar12 = uVar11 | uVar9;\n    uVar10 = uVar11;\n    uVar15 = uVar9;\n    if (param_4 == 0) {\n      if (*(uint *)(param_1 + 300) == uVar9) {\nLAB_00095dc0:\n        uVar13 = uVar11 + 1;\n        param_3 = 0;\n      }\n      else {\nLAB_00095d88:\n        param_3 = uVar9 + 1;\n        uVar13 = uVar11;\n      }\n    }\n    if ((0 < (int)uVar9) && ((int)uVar9 <= *(int *)(param_1 + 300))) {\n      FUN_00092d1c(param_1,uVar9,uVar11,uVar13);\n    }\n  }\n  else {\n    uVar10 = *(uint *)(param_1 + 0x6c);\n    bVar3 = false;\n    uVar13 = uVar10 + 1;\n    if (param_3 == 0) goto LAB_00095d68;\nLAB_00095da4:\n    uVar15 = 0;\n    uVar12 = uVar10;\n    if (param_4 == 0) {\n      uVar9 = *(uint *)(param_1 + 0x70);\n      uVar11 = *(uint *)(param_1 + 0x6c);\n      if (*(uint *)(param_1 + 300) == uVar9) goto LAB_00095dc0;\n      goto LAB_00095d88;\n    }\n    param_3 = 0;\n  }\n  FUN_00090a2c(param_1,uVar10,uVar15,uVar13,param_3);\n  if (uVar12 == 0) {\n    if (*(uint *)(param_1 + 0x128) == uVar13) {\n      term_invalidate();\n    }\n    if ((param_3 != 0) || (!bVar3)) goto LAB_00095e48;\n    bVar4 = bVar3;\n    if (*(int *)(param_1 + 0x1118) != 0) {\n      if (*(uint *)(param_1 + 0x128) == uVar13) {\n        iVar8 = FUN_00090860(param_1,*(undefined4 *)(param_1 + 8));\n        uVar13 = iVar8 + 1;\n      }\n      if (0 < (int)uVar13) {\n        FUN_0009228c(param_1,0,uVar13 - 1,uVar13,1);\n      }\n      goto LAB_00095ff4;\n    }\n  }\n  else {\nLAB_00095e48:\n    bVar4 = false;\n  }\n  pcVar14 = (code *)(PTR_LAB_00111ad8 + 0x2a9c);\n  puVar5 = (ushort *)FUN_00092a9c(param_1,uVar10,0x99b,1);\n  bVar1 = (int)uVar10 < (int)uVar13;\n  pcVar6 = (code *)(PTR_LAB_00111ad8 + 0xb64);\n  pcVar7 = (code *)(PTR_LAB_00111ad8 + 0x1070);\nLAB_00095e94:\n  if (bVar1) goto LAB_00095eb0;\n  if (uVar10 == uVar13) {\n    bVar2 = (int)uVar15 < param_3;\n    do {\n      if (!bVar2) break;\nLAB_00095eb0:\n      do {\n        uVar12 = *(uint *)(puVar5 + 2);\n        if (*(uint *)(param_1 + 300) != uVar12) {\n          (*pcVar6)(param_1,puVar5);\n          uVar12 = *(uint *)(param_1 + 300);\n        }\n        if (uVar15 == uVar12) {\n          if (!bVar3) {\n            *puVar5 = *puVar5 & 0xffcf;\n            goto LAB_00095eec;\n          }\n          iVar8 = *(int *)(param_1 + 0x128);\n          *puVar5 = 0;\n          if ((int)(uVar10 + 1) < iVar8) goto LAB_00095f88;\n        }\n        else {\n          (*pcVar7)(puVar5,uVar15,param_1 + 0x54);\n          if (*(uint *)(param_1 + 300) != uVar15) {\n            uVar15 = uVar15 + 1;\n            goto LAB_00095e94;\n          }\nLAB_00095eec:\n          if ((int)(uVar10 + 1) < *(int *)(param_1 + 0x128)) {\nLAB_00095f88:\n            uVar10 = uVar10 + 1;\n            puVar5 = (ushort *)(*pcVar14)(param_1,uVar10,0x9a7,1);\n            uVar15 = 0;\n            bVar1 = (int)uVar10 < (int)uVar13;\n            goto LAB_00095e94;\n          }\n        }\n        uVar10 = uVar10 + 1;\n        bVar1 = (int)uVar10 < (int)uVar13;\n        uVar15 = 0;\n      } while (bVar1);\n      bVar2 = 0 < param_3;\n    } while (uVar10 == uVar13);\n  }\n  if (!bVar4) {\n    return;\n  }\nLAB_00095ff4:\n  if (*(int *)(param_1 + 0x1a4) != 0) {\n    return;\n  }\n  *(undefined4 *)(param_1 + 0x14) = 0;\n  return;\n}\n\n" (function_definition "void FUN_00095d10(int param_1,int param_2,int param_3,int param_4)\n\n{\n  bool bVar1;\n  bool bVar2;\n  bool bVar3;\n  bool bVar4;\n  ushort *puVar5;\n  code *pcVar6;\n  code *pcVar7;\n  int iVar8;\n  uint uVar9;\n  uint uVar10;\n  uint uVar11;\n  uint uVar12;\n  uint uVar13;\n  code *pcVar14;\n  uint uVar15;\n  \n  if (param_2 == 0) {\n    uVar13 = *(uint *)(param_1 + 0x128);\n    bVar3 = true;\n    uVar10 = 0;\n    if (param_3 != 0) goto LAB_00095da4;\nLAB_00095d68:\n    uVar9 = *(uint *)(param_1 + 0x70);\n    uVar11 = *(uint *)(param_1 + 0x6c);\n    uVar12 = uVar11 | uVar9;\n    uVar10 = uVar11;\n    uVar15 = uVar9;\n    if (param_4 == 0) {\n      if (*(uint *)(param_1 + 300) == uVar9) {\nLAB_00095dc0:\n        uVar13 = uVar11 + 1;\n        param_3 = 0;\n      }\n      else {\nLAB_00095d88:\n        param_3 = uVar9 + 1;\n        uVar13 = uVar11;\n      }\n    }\n    if ((0 < (int)uVar9) && ((int)uVar9 <= *(int *)(param_1 + 300))) {\n      FUN_00092d1c(param_1,uVar9,uVar11,uVar13);\n    }\n  }\n  else {\n    uVar10 = *(uint *)(param_1 + 0x6c);\n    bVar3 = false;\n    uVar13 = uVar10 + 1;\n    if (param_3 == 0) goto LAB_00095d68;\nLAB_00095da4:\n    uVar15 = 0;\n    uVar12 = uVar10;\n    if (param_4 == 0) {\n      uVar9 = *(uint *)(param_1 + 0x70);\n      uVar11 = *(uint *)(param_1 + 0x6c);\n      if (*(uint *)(param_1 + 300) == uVar9) goto LAB_00095dc0;\n      goto LAB_00095d88;\n    }\n    param_3 = 0;\n  }\n  FUN_00090a2c(param_1,uVar10,uVar15,uVar13,param_3);\n  if (uVar12 == 0) {\n    if (*(uint *)(param_1 + 0x128) == uVar13) {\n      term_invalidate();\n    }\n    if ((param_3 != 0) || (!bVar3)) goto LAB_00095e48;\n    bVar4 = bVar3;\n    if (*(int *)(param_1 + 0x1118) != 0) {\n      if (*(uint *)(param_1 + 0x128) == uVar13) {\n        iVar8 = FUN_00090860(param_1,*(undefined4 *)(param_1 + 8));\n        uVar13 = iVar8 + 1;\n      }\n      if (0 < (int)uVar13) {\n        FUN_0009228c(param_1,0,uVar13 - 1,uVar13,1);\n      }\n      goto LAB_00095ff4;\n    }\n  }\n  else {\nLAB_00095e48:\n    bVar4 = false;\n  }\n  pcVar14 = (code *)(PTR_LAB_00111ad8 + 0x2a9c);\n  puVar5 = (ushort *)FUN_00092a9c(param_1,uVar10,0x99b,1);\n  bVar1 = (int)uVar10 < (int)uVar13;\n  pcVar6 = (code *)(PTR_LAB_00111ad8 + 0xb64);\n  pcVar7 = (code *)(PTR_LAB_00111ad8 + 0x1070);\nLAB_00095e94:\n  if (bVar1) goto LAB_00095eb0;\n  if (uVar10 == uVar13) {\n    bVar2 = (int)uVar15 < param_3;\n    do {\n      if (!bVar2) break;\nLAB_00095eb0:\n      do {\n        uVar12 = *(uint *)(puVar5 + 2);\n        if (*(uint *)(param_1 + 300) != uVar12) {\n          (*pcVar6)(param_1,puVar5);\n          uVar12 = *(uint *)(param_1 + 300);\n        }\n        if (uVar15 == uVar12) {\n          if (!bVar3) {\n            *puVar5 = *puVar5 & 0xffcf;\n            goto LAB_00095eec;\n          }\n          iVar8 = *(int *)(param_1 + 0x128);\n          *puVar5 = 0;\n          if ((int)(uVar10 + 1) < iVar8) goto LAB_00095f88;\n        }\n        else {\n          (*pcVar7)(puVar5,uVar15,param_1 + 0x54);\n          if (*(uint *)(param_1 + 300) != uVar15) {\n            uVar15 = uVar15 + 1;\n            goto LAB_00095e94;\n          }\nLAB_00095eec:\n          if ((int)(uVar10 + 1) < *(int *)(param_1 + 0x128)) {\nLAB_00095f88:\n            uVar10 = uVar10 + 1;\n            puVar5 = (ushort *)(*pcVar14)(param_1,uVar10,0x9a7,1);\n            uVar15 = 0;\n            bVar1 = (int)uVar10 < (int)uVar13;\n            goto LAB_00095e94;\n          }\n        }\n        uVar10 = uVar10 + 1;\n        bVar1 = (int)uVar10 < (int)uVar13;\n        uVar15 = 0;\n      } while (bVar1);\n      bVar2 = 0 < param_3;\n    } while (uVar10 == uVar13);\n  }\n  if (!bVar4) {\n    return;\n  }\nLAB_00095ff4:\n  if (*(int *)(param_1 + 0x1a4) != 0) {\n    return;\n  }\n  *(undefined4 *)(param_1 + 0x14) = 0;\n  return;\n}" primitive_type (function_declarator "FUN_00095d10(int param_1,int param_2,int param_3,int param_4)" identifier (parameter_list "(int param_1,int param_2,int param_3,int param_4)" ( (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) ))) (compound_statement "{\n  bool bVar1;\n  bool bVar2;\n  bool bVar3;\n  bool bVar4;\n  ushort *puVar5;\n  code *pcVar6;\n  code *pcVar7;\n  int iVar8;\n  uint uVar9;\n  uint uVar10;\n  uint uVar11;\n  uint uVar12;\n  uint uVar13;\n  code *pcVar14;\n  uint uVar15;\n  \n  if (param_2 == 0) {\n    uVar13 = *(uint *)(param_1 + 0x128);\n    bVar3 = true;\n    uVar10 = 0;\n    if (param_3 != 0) goto LAB_00095da4;\nLAB_00095d68:\n    uVar9 = *(uint *)(param_1 + 0x70);\n    uVar11 = *(uint *)(param_1 + 0x6c);\n    uVar12 = uVar11 | uVar9;\n    uVar10 = uVar11;\n    uVar15 = uVar9;\n    if (param_4 == 0) {\n      if (*(uint *)(param_1 + 300) == uVar9) {\nLAB_00095dc0:\n        uVar13 = uVar11 + 1;\n        param_3 = 0;\n      }\n      else {\nLAB_00095d88:\n        param_3 = uVar9 + 1;\n        uVar13 = uVar11;\n      }\n    }\n    if ((0 < (int)uVar9) && ((int)uVar9 <= *(int *)(param_1 + 300))) {\n      FUN_00092d1c(param_1,uVar9,uVar11,uVar13);\n    }\n  }\n  else {\n    uVar10 = *(uint *)(param_1 + 0x6c);\n    bVar3 = false;\n    uVar13 = uVar10 + 1;\n    if (param_3 == 0) goto LAB_00095d68;\nLAB_00095da4:\n    uVar15 = 0;\n    uVar12 = uVar10;\n    if (param_4 == 0) {\n      uVar9 = *(uint *)(param_1 + 0x70);\n      uVar11 = *(uint *)(param_1 + 0x6c);\n      if (*(uint *)(param_1 + 300) == uVar9) goto LAB_00095dc0;\n      goto LAB_00095d88;\n    }\n    param_3 = 0;\n  }\n  FUN_00090a2c(param_1,uVar10,uVar15,uVar13,param_3);\n  if (uVar12 == 0) {\n    if (*(uint *)(param_1 + 0x128) == uVar13) {\n      term_invalidate();\n    }\n    if ((param_3 != 0) || (!bVar3)) goto LAB_00095e48;\n    bVar4 = bVar3;\n    if (*(int *)(param_1 + 0x1118) != 0) {\n      if (*(uint *)(param_1 + 0x128) == uVar13) {\n        iVar8 = FUN_00090860(param_1,*(undefined4 *)(param_1 + 8));\n        uVar13 = iVar8 + 1;\n      }\n      if (0 < (int)uVar13) {\n        FUN_0009228c(param_1,0,uVar13 - 1,uVar13,1);\n      }\n      goto LAB_00095ff4;\n    }\n  }\n  else {\nLAB_00095e48:\n    bVar4 = false;\n  }\n  pcVar14 = (code *)(PTR_LAB_00111ad8 + 0x2a9c);\n  puVar5 = (ushort *)FUN_00092a9c(param_1,uVar10,0x99b,1);\n  bVar1 = (int)uVar10 < (int)uVar13;\n  pcVar6 = (code *)(PTR_LAB_00111ad8 + 0xb64);\n  pcVar7 = (code *)(PTR_LAB_00111ad8 + 0x1070);\nLAB_00095e94:\n  if (bVar1) goto LAB_00095eb0;\n  if (uVar10 == uVar13) {\n    bVar2 = (int)uVar15 < param_3;\n    do {\n      if (!bVar2) break;\nLAB_00095eb0:\n      do {\n        uVar12 = *(uint *)(puVar5 + 2);\n        if (*(uint *)(param_1 + 300) != uVar12) {\n          (*pcVar6)(param_1,puVar5);\n          uVar12 = *(uint *)(param_1 + 300);\n        }\n        if (uVar15 == uVar12) {\n          if (!bVar3) {\n            *puVar5 = *puVar5 & 0xffcf;\n            goto LAB_00095eec;\n          }\n          iVar8 = *(int *)(param_1 + 0x128);\n          *puVar5 = 0;\n          if ((int)(uVar10 + 1) < iVar8) goto LAB_00095f88;\n        }\n        else {\n          (*pcVar7)(puVar5,uVar15,param_1 + 0x54);\n          if (*(uint *)(param_1 + 300) != uVar15) {\n            uVar15 = uVar15 + 1;\n            goto LAB_00095e94;\n          }\nLAB_00095eec:\n          if ((int)(uVar10 + 1) < *(int *)(param_1 + 0x128)) {\nLAB_00095f88:\n            uVar10 = uVar10 + 1;\n            puVar5 = (ushort *)(*pcVar14)(param_1,uVar10,0x9a7,1);\n            uVar15 = 0;\n            bVar1 = (int)uVar10 < (int)uVar13;\n            goto LAB_00095e94;\n          }\n        }\n        uVar10 = uVar10 + 1;\n        bVar1 = (int)uVar10 < (int)uVar13;\n        uVar15 = 0;\n      } while (bVar1);\n      bVar2 = 0 < param_3;\n    } while (uVar10 == uVar13);\n  }\n  if (!bVar4) {\n    return;\n  }\nLAB_00095ff4:\n  if (*(int *)(param_1 + 0x1a4) != 0) {\n    return;\n  }\n  *(undefined4 *)(param_1 + 0x14) = 0;\n  return;\n}" { (declaration "bool bVar1;" primitive_type identifier ;) (declaration "bool bVar2;" primitive_type identifier ;) (declaration "bool bVar3;" primitive_type identifier ;) (declaration "bool bVar4;" primitive_type identifier ;) (declaration "ushort *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "code *pcVar6;" type_identifier (pointer_declarator "*pcVar6" * identifier) ;) (declaration "code *pcVar7;" type_identifier (pointer_declarator "*pcVar7" * identifier) ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "uint uVar10;" type_identifier identifier ;) (declaration "uint uVar11;" type_identifier identifier ;) (declaration "uint uVar12;" type_identifier identifier ;) (declaration "uint uVar13;" type_identifier identifier ;) (declaration "code *pcVar14;" type_identifier (pointer_declarator "*pcVar14" * identifier) ;) (declaration "uint uVar15;" type_identifier identifier ;) (if_statement "if (param_2 == 0) {\n    uVar13 = *(uint *)(param_1 + 0x128);\n    bVar3 = true;\n    uVar10 = 0;\n    if (param_3 != 0) goto LAB_00095da4;\nLAB_00095d68:\n    uVar9 = *(uint *)(param_1 + 0x70);\n    uVar11 = *(uint *)(param_1 + 0x6c);\n    uVar12 = uVar11 | uVar9;\n    uVar10 = uVar11;\n    uVar15 = uVar9;\n    if (param_4 == 0) {\n      if (*(uint *)(param_1 + 300) == uVar9) {\nLAB_00095dc0:\n        uVar13 = uVar11 + 1;\n        param_3 = 0;\n      }\n      else {\nLAB_00095d88:\n        param_3 = uVar9 + 1;\n        uVar13 = uVar11;\n      }\n    }\n    if ((0 < (int)uVar9) && ((int)uVar9 <= *(int *)(param_1 + 300))) {\n      FUN_00092d1c(param_1,uVar9,uVar11,uVar13);\n    }\n  }\n  else {\n    uVar10 = *(uint *)(param_1 + 0x6c);\n    bVar3 = false;\n    uVar13 = uVar10 + 1;\n    if (param_3 == 0) goto LAB_00095d68;\nLAB_00095da4:\n    uVar15 = 0;\n    uVar12 = uVar10;\n    if (param_4 == 0) {\n      uVar9 = *(uint *)(param_1 + 0x70);\n      uVar11 = *(uint *)(param_1 + 0x6c);\n      if (*(uint *)(param_1 + 300) == uVar9) goto LAB_00095dc0;\n      goto LAB_00095d88;\n    }\n    param_3 = 0;\n  }" if (parenthesized_expression "(param_2 == 0)" ( (binary_expression "param_2 == 0" identifier == number_literal) )) (compound_statement "{\n    uVar13 = *(uint *)(param_1 + 0x128);\n    bVar3 = true;\n    uVar10 = 0;\n    if (param_3 != 0) goto LAB_00095da4;\nLAB_00095d68:\n    uVar9 = *(uint *)(param_1 + 0x70);\n    uVar11 = *(uint *)(param_1 + 0x6c);\n    uVar12 = uVar11 | uVar9;\n    uVar10 = uVar11;\n    uVar15 = uVar9;\n    if (param_4 == 0) {\n      if (*(uint *)(param_1 + 300) == uVar9) {\nLAB_00095dc0:\n        uVar13 = uVar11 + 1;\n        param_3 = 0;\n      }\n      else {\nLAB_00095d88:\n        param_3 = uVar9 + 1;\n        uVar13 = uVar11;\n      }\n    }\n    if ((0 < (int)uVar9) && ((int)uVar9 <= *(int *)(param_1 + 300))) {\n      FUN_00092d1c(param_1,uVar9,uVar11,uVar13);\n    }\n  }" { (expression_statement "uVar13 = *(uint *)(param_1 + 0x128);" (assignment_expression "uVar13 = *(uint *)(param_1 + 0x128)" identifier = (pointer_expression "*(uint *)(param_1 + 0x128)" * (cast_expression "(uint *)(param_1 + 0x128)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x128)" ( (binary_expression "param_1 + 0x128" identifier + number_literal) ))))) ;) (expression_statement "bVar3 = true;" (assignment_expression "bVar3 = true" identifier = true) ;) (expression_statement "uVar10 = 0;" (assignment_expression "uVar10 = 0" identifier = number_literal) ;) (if_statement "if (param_3 != 0) goto LAB_00095da4;" if (parenthesized_expression "(param_3 != 0)" ( (binary_expression "param_3 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00095da4;" goto statement_identifier ;)) (labeled_statement "LAB_00095d68:\n    uVar9 = *(uint *)(param_1 + 0x70);" statement_identifier : (expression_statement "uVar9 = *(uint *)(param_1 + 0x70);" (assignment_expression "uVar9 = *(uint *)(param_1 + 0x70)" identifier = (pointer_expression "*(uint *)(param_1 + 0x70)" * (cast_expression "(uint *)(param_1 + 0x70)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x70)" ( (binary_expression "param_1 + 0x70" identifier + number_literal) ))))) ;)) (expression_statement "uVar11 = *(uint *)(param_1 + 0x6c);" (assignment_expression "uVar11 = *(uint *)(param_1 + 0x6c)" identifier = (pointer_expression "*(uint *)(param_1 + 0x6c)" * (cast_expression "(uint *)(param_1 + 0x6c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x6c)" ( (binary_expression "param_1 + 0x6c" identifier + number_literal) ))))) ;) (expression_statement "uVar12 = uVar11 | uVar9;" (assignment_expression "uVar12 = uVar11 | uVar9" identifier = (binary_expression "uVar11 | uVar9" identifier | identifier)) ;) (expression_statement "uVar10 = uVar11;" (assignment_expression "uVar10 = uVar11" identifier = identifier) ;) (expression_statement "uVar15 = uVar9;" (assignment_expression "uVar15 = uVar9" identifier = identifier) ;) (if_statement "if (param_4 == 0) {\n      if (*(uint *)(param_1 + 300) == uVar9) {\nLAB_00095dc0:\n        uVar13 = uVar11 + 1;\n        param_3 = 0;\n      }\n      else {\nLAB_00095d88:\n        param_3 = uVar9 + 1;\n        uVar13 = uVar11;\n      }\n    }" if (parenthesized_expression "(param_4 == 0)" ( (binary_expression "param_4 == 0" identifier == number_literal) )) (compound_statement "{\n      if (*(uint *)(param_1 + 300) == uVar9) {\nLAB_00095dc0:\n        uVar13 = uVar11 + 1;\n        param_3 = 0;\n      }\n      else {\nLAB_00095d88:\n        param_3 = uVar9 + 1;\n        uVar13 = uVar11;\n      }\n    }" { (if_statement "if (*(uint *)(param_1 + 300) == uVar9) {\nLAB_00095dc0:\n        uVar13 = uVar11 + 1;\n        param_3 = 0;\n      }\n      else {\nLAB_00095d88:\n        param_3 = uVar9 + 1;\n        uVar13 = uVar11;\n      }" if (parenthesized_expression "(*(uint *)(param_1 + 300) == uVar9)" ( (binary_expression "*(uint *)(param_1 + 300) == uVar9" (pointer_expression "*(uint *)(param_1 + 300)" * (cast_expression "(uint *)(param_1 + 300)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 300)" ( (binary_expression "param_1 + 300" identifier + number_literal) )))) == identifier) )) (compound_statement "{\nLAB_00095dc0:\n        uVar13 = uVar11 + 1;\n        param_3 = 0;\n      }" { (labeled_statement "LAB_00095dc0:\n        uVar13 = uVar11 + 1;" statement_identifier : (expression_statement "uVar13 = uVar11 + 1;" (assignment_expression "uVar13 = uVar11 + 1" identifier = (binary_expression "uVar11 + 1" identifier + number_literal)) ;)) (expression_statement "param_3 = 0;" (assignment_expression "param_3 = 0" identifier = number_literal) ;) }) (else_clause "else {\nLAB_00095d88:\n        param_3 = uVar9 + 1;\n        uVar13 = uVar11;\n      }" else (compound_statement "{\nLAB_00095d88:\n        param_3 = uVar9 + 1;\n        uVar13 = uVar11;\n      }" { (labeled_statement "LAB_00095d88:\n        param_3 = uVar9 + 1;" statement_identifier : (expression_statement "param_3 = uVar9 + 1;" (assignment_expression "param_3 = uVar9 + 1" identifier = (binary_expression "uVar9 + 1" identifier + number_literal)) ;)) (expression_statement "uVar13 = uVar11;" (assignment_expression "uVar13 = uVar11" identifier = identifier) ;) }))) })) (if_statement "if ((0 < (int)uVar9) && ((int)uVar9 <= *(int *)(param_1 + 300))) {\n      FUN_00092d1c(param_1,uVar9,uVar11,uVar13);\n    }" if (parenthesized_expression "((0 < (int)uVar9) && ((int)uVar9 <= *(int *)(param_1 + 300)))" ( (binary_expression "(0 < (int)uVar9) && ((int)uVar9 <= *(int *)(param_1 + 300))" (parenthesized_expression "(0 < (int)uVar9)" ( (binary_expression "0 < (int)uVar9" number_literal < (cast_expression "(int)uVar9" ( (type_descriptor "int" primitive_type) ) identifier)) )) && (parenthesized_expression "((int)uVar9 <= *(int *)(param_1 + 300))" ( (binary_expression "(int)uVar9 <= *(int *)(param_1 + 300)" (cast_expression "(int)uVar9" ( (type_descriptor "int" primitive_type) ) 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) ))))) ))) )) (compound_statement "{\n      FUN_00092d1c(param_1,uVar9,uVar11,uVar13);\n    }" { (expression_statement "FUN_00092d1c(param_1,uVar9,uVar11,uVar13);" (call_expression "FUN_00092d1c(param_1,uVar9,uVar11,uVar13)" identifier (argument_list "(param_1,uVar9,uVar11,uVar13)" ( identifier , identifier , identifier , identifier ))) ;) })) }) (else_clause "else {\n    uVar10 = *(uint *)(param_1 + 0x6c);\n    bVar3 = false;\n    uVar13 = uVar10 + 1;\n    if (param_3 == 0) goto LAB_00095d68;\nLAB_00095da4:\n    uVar15 = 0;\n    uVar12 = uVar10;\n    if (param_4 == 0) {\n      uVar9 = *(uint *)(param_1 + 0x70);\n      uVar11 = *(uint *)(param_1 + 0x6c);\n      if (*(uint *)(param_1 + 300) == uVar9) goto LAB_00095dc0;\n      goto LAB_00095d88;\n    }\n    param_3 = 0;\n  }" else (compound_statement "{\n    uVar10 = *(uint *)(param_1 + 0x6c);\n    bVar3 = false;\n    uVar13 = uVar10 + 1;\n    if (param_3 == 0) goto LAB_00095d68;\nLAB_00095da4:\n    uVar15 = 0;\n    uVar12 = uVar10;\n    if (param_4 == 0) {\n      uVar9 = *(uint *)(param_1 + 0x70);\n      uVar11 = *(uint *)(param_1 + 0x6c);\n      if (*(uint *)(param_1 + 300) == uVar9) goto LAB_00095dc0;\n      goto LAB_00095d88;\n    }\n    param_3 = 0;\n  }" { (expression_statement "uVar10 = *(uint *)(param_1 + 0x6c);" (assignment_expression "uVar10 = *(uint *)(param_1 + 0x6c)" identifier = (pointer_expression "*(uint *)(param_1 + 0x6c)" * (cast_expression "(uint *)(param_1 + 0x6c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x6c)" ( (binary_expression "param_1 + 0x6c" identifier + number_literal) ))))) ;) (expression_statement "bVar3 = false;" (assignment_expression "bVar3 = false" identifier = false) ;) (expression_statement "uVar13 = uVar10 + 1;" (assignment_expression "uVar13 = uVar10 + 1" identifier = (binary_expression "uVar10 + 1" identifier + number_literal)) ;) (if_statement "if (param_3 == 0) goto LAB_00095d68;" if (parenthesized_expression "(param_3 == 0)" ( (binary_expression "param_3 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00095d68;" goto statement_identifier ;)) (labeled_statement "LAB_00095da4:\n    uVar15 = 0;" statement_identifier : (expression_statement "uVar15 = 0;" (assignment_expression "uVar15 = 0" identifier = number_literal) ;)) (expression_statement "uVar12 = uVar10;" (assignment_expression "uVar12 = uVar10" identifier = identifier) ;) (if_statement "if (param_4 == 0) {\n      uVar9 = *(uint *)(param_1 + 0x70);\n      uVar11 = *(uint *)(param_1 + 0x6c);\n      if (*(uint *)(param_1 + 300) == uVar9) goto LAB_00095dc0;\n      goto LAB_00095d88;\n    }" if (parenthesized_expression "(param_4 == 0)" ( (binary_expression "param_4 == 0" identifier == number_literal) )) (compound_statement "{\n      uVar9 = *(uint *)(param_1 + 0x70);\n      uVar11 = *(uint *)(param_1 + 0x6c);\n      if (*(uint *)(param_1 + 300) == uVar9) goto LAB_00095dc0;\n      goto LAB_00095d88;\n    }" { (expression_statement "uVar9 = *(uint *)(param_1 + 0x70);" (assignment_expression "uVar9 = *(uint *)(param_1 + 0x70)" identifier = (pointer_expression "*(uint *)(param_1 + 0x70)" * (cast_expression "(uint *)(param_1 + 0x70)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x70)" ( (binary_expression "param_1 + 0x70" identifier + number_literal) ))))) ;) (expression_statement "uVar11 = *(uint *)(param_1 + 0x6c);" (assignment_expression "uVar11 = *(uint *)(param_1 + 0x6c)" identifier = (pointer_expression "*(uint *)(param_1 + 0x6c)" * (cast_expression "(uint *)(param_1 + 0x6c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x6c)" ( (binary_expression "param_1 + 0x6c" identifier + number_literal) ))))) ;) (if_statement "if (*(uint *)(param_1 + 300) == uVar9) goto LAB_00095dc0;" if (parenthesized_expression "(*(uint *)(param_1 + 300) == uVar9)" ( (binary_expression "*(uint *)(param_1 + 300) == uVar9" (pointer_expression "*(uint *)(param_1 + 300)" * (cast_expression "(uint *)(param_1 + 300)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 300)" ( (binary_expression "param_1 + 300" identifier + number_literal) )))) == identifier) )) (goto_statement "goto LAB_00095dc0;" goto statement_identifier ;)) (goto_statement "goto LAB_00095d88;" goto statement_identifier ;) })) (expression_statement "param_3 = 0;" (assignment_expression "param_3 = 0" identifier = number_literal) ;) }))) (expression_statement "FUN_00090a2c(param_1,uVar10,uVar15,uVar13,param_3);" (call_expression "FUN_00090a2c(param_1,uVar10,uVar15,uVar13,param_3)" identifier (argument_list "(param_1,uVar10,uVar15,uVar13,param_3)" ( identifier , identifier , identifier , identifier , identifier ))) ;) (if_statement "if (uVar12 == 0) {\n    if (*(uint *)(param_1 + 0x128) == uVar13) {\n      term_invalidate();\n    }\n    if ((param_3 != 0) || (!bVar3)) goto LAB_00095e48;\n    bVar4 = bVar3;\n    if (*(int *)(param_1 + 0x1118) != 0) {\n      if (*(uint *)(param_1 + 0x128) == uVar13) {\n        iVar8 = FUN_00090860(param_1,*(undefined4 *)(param_1 + 8));\n        uVar13 = iVar8 + 1;\n      }\n      if (0 < (int)uVar13) {\n        FUN_0009228c(param_1,0,uVar13 - 1,uVar13,1);\n      }\n      goto LAB_00095ff4;\n    }\n  }\n  else {\nLAB_00095e48:\n    bVar4 = false;\n  }" if (parenthesized_expression "(uVar12 == 0)" ( (binary_expression "uVar12 == 0" identifier == number_literal) )) (compound_statement "{\n    if (*(uint *)(param_1 + 0x128) == uVar13) {\n      term_invalidate();\n    }\n    if ((param_3 != 0) || (!bVar3)) goto LAB_00095e48;\n    bVar4 = bVar3;\n    if (*(int *)(param_1 + 0x1118) != 0) {\n      if (*(uint *)(param_1 + 0x128) == uVar13) {\n        iVar8 = FUN_00090860(param_1,*(undefined4 *)(param_1 + 8));\n        uVar13 = iVar8 + 1;\n      }\n      if (0 < (int)uVar13) {\n        FUN_0009228c(param_1,0,uVar13 - 1,uVar13,1);\n      }\n      goto LAB_00095ff4;\n    }\n  }" { (if_statement "if (*(uint *)(param_1 + 0x128) == uVar13) {\n      term_invalidate();\n    }" if (parenthesized_expression "(*(uint *)(param_1 + 0x128) == uVar13)" ( (binary_expression "*(uint *)(param_1 + 0x128) == uVar13" (pointer_expression "*(uint *)(param_1 + 0x128)" * (cast_expression "(uint *)(param_1 + 0x128)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x128)" ( (binary_expression "param_1 + 0x128" identifier + number_literal) )))) == identifier) )) (compound_statement "{\n      term_invalidate();\n    }" { (expression_statement "term_invalidate();" (call_expression "term_invalidate()" identifier (argument_list "()" ( ))) ;) })) (if_statement "if ((param_3 != 0) || (!bVar3)) goto LAB_00095e48;" if (parenthesized_expression "((param_3 != 0) || (!bVar3))" ( (binary_expression "(param_3 != 0) || (!bVar3)" (parenthesized_expression "(param_3 != 0)" ( (binary_expression "param_3 != 0" identifier != number_literal) )) || (parenthesized_expression "(!bVar3)" ( (unary_expression "!bVar3" ! identifier) ))) )) (goto_statement "goto LAB_00095e48;" goto statement_identifier ;)) (expression_statement "bVar4 = bVar3;" (assignment_expression "bVar4 = bVar3" identifier = identifier) ;) (if_statement "if (*(int *)(param_1 + 0x1118) != 0) {\n      if (*(uint *)(param_1 + 0x128) == uVar13) {\n        iVar8 = FUN_00090860(param_1,*(undefined4 *)(param_1 + 8));\n        uVar13 = iVar8 + 1;\n      }\n      if (0 < (int)uVar13) {\n        FUN_0009228c(param_1,0,uVar13 - 1,uVar13,1);\n      }\n      goto LAB_00095ff4;\n    }" if (parenthesized_expression "(*(int *)(param_1 + 0x1118) != 0)" ( (binary_expression "*(int *)(param_1 + 0x1118) != 0" (pointer_expression "*(int *)(param_1 + 0x1118)" * (cast_expression "(int *)(param_1 + 0x1118)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1118)" ( (binary_expression "param_1 + 0x1118" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n      if (*(uint *)(param_1 + 0x128) == uVar13) {\n        iVar8 = FUN_00090860(param_1,*(undefined4 *)(param_1 + 8));\n        uVar13 = iVar8 + 1;\n      }\n      if (0 < (int)uVar13) {\n        FUN_0009228c(param_1,0,uVar13 - 1,uVar13,1);\n      }\n      goto LAB_00095ff4;\n    }" { (if_statement "if (*(uint *)(param_1 + 0x128) == uVar13) {\n        iVar8 = FUN_00090860(param_1,*(undefined4 *)(param_1 + 8));\n        uVar13 = iVar8 + 1;\n      }" if (parenthesized_expression "(*(uint *)(param_1 + 0x128) == uVar13)" ( (binary_expression "*(uint *)(param_1 + 0x128) == uVar13" (pointer_expression "*(uint *)(param_1 + 0x128)" * (cast_expression "(uint *)(param_1 + 0x128)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x128)" ( (binary_expression "param_1 + 0x128" identifier + number_literal) )))) == identifier) )) (compound_statement "{\n        iVar8 = FUN_00090860(param_1,*(undefined4 *)(param_1 + 8));\n        uVar13 = iVar8 + 1;\n      }" { (expression_statement "iVar8 = FUN_00090860(param_1,*(undefined4 *)(param_1 + 8));" (assignment_expression "iVar8 = FUN_00090860(param_1,*(undefined4 *)(param_1 + 8))" identifier = (call_expression "FUN_00090860(param_1,*(undefined4 *)(param_1 + 8))" identifier (argument_list "(param_1,*(undefined4 *)(param_1 + 8))" ( identifier , (pointer_expression "*(undefined4 *)(param_1 + 8)" * (cast_expression "(undefined4 *)(param_1 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) )))) ;) (expression_statement "uVar13 = iVar8 + 1;" (assignment_expression "uVar13 = iVar8 + 1" identifier = (binary_expression "iVar8 + 1" identifier + number_literal)) ;) })) (if_statement "if (0 < (int)uVar13) {\n        FUN_0009228c(param_1,0,uVar13 - 1,uVar13,1);\n      }" if (parenthesized_expression "(0 < (int)uVar13)" ( (binary_expression "0 < (int)uVar13" number_literal < (cast_expression "(int)uVar13" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n        FUN_0009228c(param_1,0,uVar13 - 1,uVar13,1);\n      }" { (expression_statement "FUN_0009228c(param_1,0,uVar13 - 1,uVar13,1);" (call_expression "FUN_0009228c(param_1,0,uVar13 - 1,uVar13,1)" identifier (argument_list "(param_1,0,uVar13 - 1,uVar13,1)" ( identifier , number_literal , (binary_expression "uVar13 - 1" identifier - number_literal) , identifier , number_literal ))) ;) })) (goto_statement "goto LAB_00095ff4;" goto statement_identifier ;) })) }) (else_clause "else {\nLAB_00095e48:\n    bVar4 = false;\n  }" else (compound_statement "{\nLAB_00095e48:\n    bVar4 = false;\n  }" { (labeled_statement "LAB_00095e48:\n    bVar4 = false;" statement_identifier : (expression_statement "bVar4 = false;" (assignment_expression "bVar4 = false" identifier = false) ;)) }))) (expression_statement "pcVar14 = (code *)(PTR_LAB_00111ad8 + 0x2a9c);" (assignment_expression "pcVar14 = (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 "puVar5 = (ushort *)FUN_00092a9c(param_1,uVar10,0x99b,1);" (assignment_expression "puVar5 = (ushort *)FUN_00092a9c(param_1,uVar10,0x99b,1)" identifier = (cast_expression "(ushort *)FUN_00092a9c(param_1,uVar10,0x99b,1)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00092a9c(param_1,uVar10,0x99b,1)" identifier (argument_list "(param_1,uVar10,0x99b,1)" ( identifier , identifier , number_literal , number_literal ))))) ;) (expression_statement "bVar1 = (int)uVar10 < (int)uVar13;" (assignment_expression "bVar1 = (int)uVar10 < (int)uVar13" identifier = (binary_expression "(int)uVar10 < (int)uVar13" (cast_expression "(int)uVar10" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)uVar13" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "pcVar6 = (code *)(PTR_LAB_00111ad8 + 0xb64);" (assignment_expression "pcVar6 = (code *)(PTR_LAB_00111ad8 + 0xb64)" identifier = (cast_expression "(code *)(PTR_LAB_00111ad8 + 0xb64)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_00111ad8 + 0xb64)" ( (binary_expression "PTR_LAB_00111ad8 + 0xb64" identifier + number_literal) )))) ;) (expression_statement "pcVar7 = (code *)(PTR_LAB_00111ad8 + 0x1070);" (assignment_expression "pcVar7 = (code *)(PTR_LAB_00111ad8 + 0x1070)" identifier = (cast_expression "(code *)(PTR_LAB_00111ad8 + 0x1070)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_00111ad8 + 0x1070)" ( (binary_expression "PTR_LAB_00111ad8 + 0x1070" identifier + number_literal) )))) ;) (labeled_statement "LAB_00095e94:\n  if (bVar1) goto LAB_00095eb0;" statement_identifier : (if_statement "if (bVar1) goto LAB_00095eb0;" if (parenthesized_expression "(bVar1)" ( identifier )) (goto_statement "goto LAB_00095eb0;" goto statement_identifier ;))) (if_statement "if (uVar10 == uVar13) {\n    bVar2 = (int)uVar15 < param_3;\n    do {\n      if (!bVar2) break;\nLAB_00095eb0:\n      do {\n        uVar12 = *(uint *)(puVar5 + 2);\n        if (*(uint *)(param_1 + 300) != uVar12) {\n          (*pcVar6)(param_1,puVar5);\n          uVar12 = *(uint *)(param_1 + 300);\n        }\n        if (uVar15 == uVar12) {\n          if (!bVar3) {\n            *puVar5 = *puVar5 & 0xffcf;\n            goto LAB_00095eec;\n          }\n          iVar8 = *(int *)(param_1 + 0x128);\n          *puVar5 = 0;\n          if ((int)(uVar10 + 1) < iVar8) goto LAB_00095f88;\n        }\n        else {\n          (*pcVar7)(puVar5,uVar15,param_1 + 0x54);\n          if (*(uint *)(param_1 + 300) != uVar15) {\n            uVar15 = uVar15 + 1;\n            goto LAB_00095e94;\n          }\nLAB_00095eec:\n          if ((int)(uVar10 + 1) < *(int *)(param_1 + 0x128)) {\nLAB_00095f88:\n            uVar10 = uVar10 + 1;\n            puVar5 = (ushort *)(*pcVar14)(param_1,uVar10,0x9a7,1);\n            uVar15 = 0;\n            bVar1 = (int)uVar10 < (int)uVar13;\n            goto LAB_00095e94;\n          }\n        }\n        uVar10 = uVar10 + 1;\n        bVar1 = (int)uVar10 < (int)uVar13;\n        uVar15 = 0;\n      } while (bVar1);\n      bVar2 = 0 < param_3;\n    } while (uVar10 == uVar13);\n  }" if (parenthesized_expression "(uVar10 == uVar13)" ( (binary_expression "uVar10 == uVar13" identifier == identifier) )) (compound_statement "{\n    bVar2 = (int)uVar15 < param_3;\n    do {\n      if (!bVar2) break;\nLAB_00095eb0:\n      do {\n        uVar12 = *(uint *)(puVar5 + 2);\n        if (*(uint *)(param_1 + 300) != uVar12) {\n          (*pcVar6)(param_1,puVar5);\n          uVar12 = *(uint *)(param_1 + 300);\n        }\n        if (uVar15 == uVar12) {\n          if (!bVar3) {\n            *puVar5 = *puVar5 & 0xffcf;\n            goto LAB_00095eec;\n          }\n          iVar8 = *(int *)(param_1 + 0x128);\n          *puVar5 = 0;\n          if ((int)(uVar10 + 1) < iVar8) goto LAB_00095f88;\n        }\n        else {\n          (*pcVar7)(puVar5,uVar15,param_1 + 0x54);\n          if (*(uint *)(param_1 + 300) != uVar15) {\n            uVar15 = uVar15 + 1;\n            goto LAB_00095e94;\n          }\nLAB_00095eec:\n          if ((int)(uVar10 + 1) < *(int *)(param_1 + 0x128)) {\nLAB_00095f88:\n            uVar10 = uVar10 + 1;\n            puVar5 = (ushort *)(*pcVar14)(param_1,uVar10,0x9a7,1);\n            uVar15 = 0;\n            bVar1 = (int)uVar10 < (int)uVar13;\n            goto LAB_00095e94;\n          }\n        }\n        uVar10 = uVar10 + 1;\n        bVar1 = (int)uVar10 < (int)uVar13;\n        uVar15 = 0;\n      } while (bVar1);\n      bVar2 = 0 < param_3;\n    } while (uVar10 == uVar13);\n  }" { (expression_statement "bVar2 = (int)uVar15 < param_3;" (assignment_expression "bVar2 = (int)uVar15 < param_3" identifier = (binary_expression "(int)uVar15 < param_3" (cast_expression "(int)uVar15" ( (type_descriptor "int" primitive_type) ) identifier) < identifier)) ;) (do_statement "do {\n      if (!bVar2) break;\nLAB_00095eb0:\n      do {\n        uVar12 = *(uint *)(puVar5 + 2);\n        if (*(uint *)(param_1 + 300) != uVar12) {\n          (*pcVar6)(param_1,puVar5);\n          uVar12 = *(uint *)(param_1 + 300);\n        }\n        if (uVar15 == uVar12) {\n          if (!bVar3) {\n            *puVar5 = *puVar5 & 0xffcf;\n            goto LAB_00095eec;\n          }\n          iVar8 = *(int *)(param_1 + 0x128);\n          *puVar5 = 0;\n          if ((int)(uVar10 + 1) < iVar8) goto LAB_00095f88;\n        }\n        else {\n          (*pcVar7)(puVar5,uVar15,param_1 + 0x54);\n          if (*(uint *)(param_1 + 300) != uVar15) {\n            uVar15 = uVar15 + 1;\n            goto LAB_00095e94;\n          }\nLAB_00095eec:\n          if ((int)(uVar10 + 1) < *(int *)(param_1 + 0x128)) {\nLAB_00095f88:\n            uVar10 = uVar10 + 1;\n            puVar5 = (ushort *)(*pcVar14)(param_1,uVar10,0x9a7,1);\n            uVar15 = 0;\n            bVar1 = (int)uVar10 < (int)uVar13;\n            goto LAB_00095e94;\n          }\n        }\n        uVar10 = uVar10 + 1;\n        bVar1 = (int)uVar10 < (int)uVar13;\n        uVar15 = 0;\n      } while (bVar1);\n      bVar2 = 0 < param_3;\n    } while (uVar10 == uVar13);" do (compound_statement "{\n      if (!bVar2) break;\nLAB_00095eb0:\n      do {\n        uVar12 = *(uint *)(puVar5 + 2);\n        if (*(uint *)(param_1 + 300) != uVar12) {\n          (*pcVar6)(param_1,puVar5);\n          uVar12 = *(uint *)(param_1 + 300);\n        }\n        if (uVar15 == uVar12) {\n          if (!bVar3) {\n            *puVar5 = *puVar5 & 0xffcf;\n            goto LAB_00095eec;\n          }\n          iVar8 = *(int *)(param_1 + 0x128);\n          *puVar5 = 0;\n          if ((int)(uVar10 + 1) < iVar8) goto LAB_00095f88;\n        }\n        else {\n          (*pcVar7)(puVar5,uVar15,param_1 + 0x54);\n          if (*(uint *)(param_1 + 300) != uVar15) {\n            uVar15 = uVar15 + 1;\n            goto LAB_00095e94;\n          }\nLAB_00095eec:\n          if ((int)(uVar10 + 1) < *(int *)(param_1 + 0x128)) {\nLAB_00095f88:\n            uVar10 = uVar10 + 1;\n            puVar5 = (ushort *)(*pcVar14)(param_1,uVar10,0x9a7,1);\n            uVar15 = 0;\n            bVar1 = (int)uVar10 < (int)uVar13;\n            goto LAB_00095e94;\n          }\n        }\n        uVar10 = uVar10 + 1;\n        bVar1 = (int)uVar10 < (int)uVar13;\n        uVar15 = 0;\n      } while (bVar1);\n      bVar2 = 0 < param_3;\n    }" { (if_statement "if (!bVar2) break;" if (parenthesized_expression "(!bVar2)" ( (unary_expression "!bVar2" ! identifier) )) (break_statement "break;" break ;)) (labeled_statement "LAB_00095eb0:\n      do {\n        uVar12 = *(uint *)(puVar5 + 2);\n        if (*(uint *)(param_1 + 300) != uVar12) {\n          (*pcVar6)(param_1,puVar5);\n          uVar12 = *(uint *)(param_1 + 300);\n        }\n        if (uVar15 == uVar12) {\n          if (!bVar3) {\n            *puVar5 = *puVar5 & 0xffcf;\n            goto LAB_00095eec;\n          }\n          iVar8 = *(int *)(param_1 + 0x128);\n          *puVar5 = 0;\n          if ((int)(uVar10 + 1) < iVar8) goto LAB_00095f88;\n        }\n        else {\n          (*pcVar7)(puVar5,uVar15,param_1 + 0x54);\n          if (*(uint *)(param_1 + 300) != uVar15) {\n            uVar15 = uVar15 + 1;\n            goto LAB_00095e94;\n          }\nLAB_00095eec:\n          if ((int)(uVar10 + 1) < *(int *)(param_1 + 0x128)) {\nLAB_00095f88:\n            uVar10 = uVar10 + 1;\n            puVar5 = (ushort *)(*pcVar14)(param_1,uVar10,0x9a7,1);\n            uVar15 = 0;\n            bVar1 = (int)uVar10 < (int)uVar13;\n            goto LAB_00095e94;\n          }\n        }\n        uVar10 = uVar10 + 1;\n        bVar1 = (int)uVar10 < (int)uVar13;\n        uVar15 = 0;\n      } while (bVar1);" statement_identifier : (do_statement "do {\n        uVar12 = *(uint *)(puVar5 + 2);\n        if (*(uint *)(param_1 + 300) != uVar12) {\n          (*pcVar6)(param_1,puVar5);\n          uVar12 = *(uint *)(param_1 + 300);\n        }\n        if (uVar15 == uVar12) {\n          if (!bVar3) {\n            *puVar5 = *puVar5 & 0xffcf;\n            goto LAB_00095eec;\n          }\n          iVar8 = *(int *)(param_1 + 0x128);\n          *puVar5 = 0;\n          if ((int)(uVar10 + 1) < iVar8) goto LAB_00095f88;\n        }\n        else {\n          (*pcVar7)(puVar5,uVar15,param_1 + 0x54);\n          if (*(uint *)(param_1 + 300) != uVar15) {\n            uVar15 = uVar15 + 1;\n            goto LAB_00095e94;\n          }\nLAB_00095eec:\n          if ((int)(uVar10 + 1) < *(int *)(param_1 + 0x128)) {\nLAB_00095f88:\n            uVar10 = uVar10 + 1;\n            puVar5 = (ushort *)(*pcVar14)(param_1,uVar10,0x9a7,1);\n            uVar15 = 0;\n            bVar1 = (int)uVar10 < (int)uVar13;\n            goto LAB_00095e94;\n          }\n        }\n        uVar10 = uVar10 + 1;\n        bVar1 = (int)uVar10 < (int)uVar13;\n        uVar15 = 0;\n      } while (bVar1);" do (compound_statement "{\n        uVar12 = *(uint *)(puVar5 + 2);\n        if (*(uint *)(param_1 + 300) != uVar12) {\n          (*pcVar6)(param_1,puVar5);\n          uVar12 = *(uint *)(param_1 + 300);\n        }\n        if (uVar15 == uVar12) {\n          if (!bVar3) {\n            *puVar5 = *puVar5 & 0xffcf;\n            goto LAB_00095eec;\n          }\n          iVar8 = *(int *)(param_1 + 0x128);\n          *puVar5 = 0;\n          if ((int)(uVar10 + 1) < iVar8) goto LAB_00095f88;\n        }\n        else {\n          (*pcVar7)(puVar5,uVar15,param_1 + 0x54);\n          if (*(uint *)(param_1 + 300) != uVar15) {\n            uVar15 = uVar15 + 1;\n            goto LAB_00095e94;\n          }\nLAB_00095eec:\n          if ((int)(uVar10 + 1) < *(int *)(param_1 + 0x128)) {\nLAB_00095f88:\n            uVar10 = uVar10 + 1;\n            puVar5 = (ushort *)(*pcVar14)(param_1,uVar10,0x9a7,1);\n            uVar15 = 0;\n            bVar1 = (int)uVar10 < (int)uVar13;\n            goto LAB_00095e94;\n          }\n        }\n        uVar10 = uVar10 + 1;\n        bVar1 = (int)uVar10 < (int)uVar13;\n        uVar15 = 0;\n      }" { (expression_statement "uVar12 = *(uint *)(puVar5 + 2);" (assignment_expression "uVar12 = *(uint *)(puVar5 + 2)" identifier = (pointer_expression "*(uint *)(puVar5 + 2)" * (cast_expression "(uint *)(puVar5 + 2)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar5 + 2)" ( (binary_expression "puVar5 + 2" identifier + number_literal) ))))) ;) (if_statement "if (*(uint *)(param_1 + 300) != uVar12) {\n          (*pcVar6)(param_1,puVar5);\n          uVar12 = *(uint *)(param_1 + 300);\n        }" if (parenthesized_expression "(*(uint *)(param_1 + 300) != uVar12)" ( (binary_expression "*(uint *)(param_1 + 300) != uVar12" (pointer_expression "*(uint *)(param_1 + 300)" * (cast_expression "(uint *)(param_1 + 300)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 300)" ( (binary_expression "param_1 + 300" identifier + number_literal) )))) != identifier) )) (compound_statement "{\n          (*pcVar6)(param_1,puVar5);\n          uVar12 = *(uint *)(param_1 + 300);\n        }" { (expression_statement "(*pcVar6)(param_1,puVar5);" (call_expression "(*pcVar6)(param_1,puVar5)" (parenthesized_expression "(*pcVar6)" ( (pointer_expression "*pcVar6" * identifier) )) (argument_list "(param_1,puVar5)" ( identifier , identifier ))) ;) (expression_statement "uVar12 = *(uint *)(param_1 + 300);" (assignment_expression "uVar12 = *(uint *)(param_1 + 300)" identifier = (pointer_expression "*(uint *)(param_1 + 300)" * (cast_expression "(uint *)(param_1 + 300)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 300)" ( (binary_expression "param_1 + 300" identifier + number_literal) ))))) ;) })) (if_statement "if (uVar15 == uVar12) {\n          if (!bVar3) {\n            *puVar5 = *puVar5 & 0xffcf;\n            goto LAB_00095eec;\n          }\n          iVar8 = *(int *)(param_1 + 0x128);\n          *puVar5 = 0;\n          if ((int)(uVar10 + 1) < iVar8) goto LAB_00095f88;\n        }\n        else {\n          (*pcVar7)(puVar5,uVar15,param_1 + 0x54);\n          if (*(uint *)(param_1 + 300) != uVar15) {\n            uVar15 = uVar15 + 1;\n            goto LAB_00095e94;\n          }\nLAB_00095eec:\n          if ((int)(uVar10 + 1) < *(int *)(param_1 + 0x128)) {\nLAB_00095f88:\n            uVar10 = uVar10 + 1;\n            puVar5 = (ushort *)(*pcVar14)(param_1,uVar10,0x9a7,1);\n            uVar15 = 0;\n            bVar1 = (int)uVar10 < (int)uVar13;\n            goto LAB_00095e94;\n          }\n        }" if (parenthesized_expression "(uVar15 == uVar12)" ( (binary_expression "uVar15 == uVar12" identifier == identifier) )) (compound_statement "{\n          if (!bVar3) {\n            *puVar5 = *puVar5 & 0xffcf;\n            goto LAB_00095eec;\n          }\n          iVar8 = *(int *)(param_1 + 0x128);\n          *puVar5 = 0;\n          if ((int)(uVar10 + 1) < iVar8) goto LAB_00095f88;\n        }" { (if_statement "if (!bVar3) {\n            *puVar5 = *puVar5 & 0xffcf;\n            goto LAB_00095eec;\n          }" if (parenthesized_expression "(!bVar3)" ( (unary_expression "!bVar3" ! identifier) )) (compound_statement "{\n            *puVar5 = *puVar5 & 0xffcf;\n            goto LAB_00095eec;\n          }" { (expression_statement "*puVar5 = *puVar5 & 0xffcf;" (assignment_expression "*puVar5 = *puVar5 & 0xffcf" (pointer_expression "*puVar5" * identifier) = (binary_expression "*puVar5 & 0xffcf" (pointer_expression "*puVar5" * identifier) & number_literal)) ;) (goto_statement "goto LAB_00095eec;" goto statement_identifier ;) })) (expression_statement "iVar8 = *(int *)(param_1 + 0x128);" (assignment_expression "iVar8 = *(int *)(param_1 + 0x128)" identifier = (pointer_expression "*(int *)(param_1 + 0x128)" * (cast_expression "(int *)(param_1 + 0x128)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x128)" ( (binary_expression "param_1 + 0x128" identifier + number_literal) ))))) ;) (expression_statement "*puVar5 = 0;" (assignment_expression "*puVar5 = 0" (pointer_expression "*puVar5" * identifier) = number_literal) ;) (if_statement "if ((int)(uVar10 + 1) < iVar8) goto LAB_00095f88;" if (parenthesized_expression "((int)(uVar10 + 1) < iVar8)" ( (binary_expression "(int)(uVar10 + 1) < iVar8" (cast_expression "(int)(uVar10 + 1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(uVar10 + 1)" ( (binary_expression "uVar10 + 1" identifier + number_literal) ))) < identifier) )) (goto_statement "goto LAB_00095f88;" goto statement_identifier ;)) }) (else_clause "else {\n          (*pcVar7)(puVar5,uVar15,param_1 + 0x54);\n          if (*(uint *)(param_1 + 300) != uVar15) {\n            uVar15 = uVar15 + 1;\n            goto LAB_00095e94;\n          }\nLAB_00095eec:\n          if ((int)(uVar10 + 1) < *(int *)(param_1 + 0x128)) {\nLAB_00095f88:\n            uVar10 = uVar10 + 1;\n            puVar5 = (ushort *)(*pcVar14)(param_1,uVar10,0x9a7,1);\n            uVar15 = 0;\n            bVar1 = (int)uVar10 < (int)uVar13;\n            goto LAB_00095e94;\n          }\n        }" else (compound_statement "{\n          (*pcVar7)(puVar5,uVar15,param_1 + 0x54);\n          if (*(uint *)(param_1 + 300) != uVar15) {\n            uVar15 = uVar15 + 1;\n            goto LAB_00095e94;\n          }\nLAB_00095eec:\n          if ((int)(uVar10 + 1) < *(int *)(param_1 + 0x128)) {\nLAB_00095f88:\n            uVar10 = uVar10 + 1;\n            puVar5 = (ushort *)(*pcVar14)(param_1,uVar10,0x9a7,1);\n            uVar15 = 0;\n            bVar1 = (int)uVar10 < (int)uVar13;\n            goto LAB_00095e94;\n          }\n        }" { (expression_statement "(*pcVar7)(puVar5,uVar15,param_1 + 0x54);" (call_expression "(*pcVar7)(puVar5,uVar15,param_1 + 0x54)" (parenthesized_expression "(*pcVar7)" ( (pointer_expression "*pcVar7" * identifier) )) (argument_list "(puVar5,uVar15,param_1 + 0x54)" ( identifier , identifier , (binary_expression "param_1 + 0x54" identifier + number_literal) ))) ;) (if_statement "if (*(uint *)(param_1 + 300) != uVar15) {\n            uVar15 = uVar15 + 1;\n            goto LAB_00095e94;\n          }" if (parenthesized_expression "(*(uint *)(param_1 + 300) != uVar15)" ( (binary_expression "*(uint *)(param_1 + 300) != uVar15" (pointer_expression "*(uint *)(param_1 + 300)" * (cast_expression "(uint *)(param_1 + 300)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 300)" ( (binary_expression "param_1 + 300" identifier + number_literal) )))) != identifier) )) (compound_statement "{\n            uVar15 = uVar15 + 1;\n            goto LAB_00095e94;\n          }" { (expression_statement "uVar15 = uVar15 + 1;" (assignment_expression "uVar15 = uVar15 + 1" identifier = (binary_expression "uVar15 + 1" identifier + number_literal)) ;) (goto_statement "goto LAB_00095e94;" goto statement_identifier ;) })) (labeled_statement "LAB_00095eec:\n          if ((int)(uVar10 + 1) < *(int *)(param_1 + 0x128)) {\nLAB_00095f88:\n            uVar10 = uVar10 + 1;\n            puVar5 = (ushort *)(*pcVar14)(param_1,uVar10,0x9a7,1);\n            uVar15 = 0;\n            bVar1 = (int)uVar10 < (int)uVar13;\n            goto LAB_00095e94;\n          }" statement_identifier : (if_statement "if ((int)(uVar10 + 1) < *(int *)(param_1 + 0x128)) {\nLAB_00095f88:\n            uVar10 = uVar10 + 1;\n            puVar5 = (ushort *)(*pcVar14)(param_1,uVar10,0x9a7,1);\n            uVar15 = 0;\n            bVar1 = (int)uVar10 < (int)uVar13;\n            goto LAB_00095e94;\n          }" if (parenthesized_expression "((int)(uVar10 + 1) < *(int *)(param_1 + 0x128))" ( (binary_expression "(int)(uVar10 + 1) < *(int *)(param_1 + 0x128)" (cast_expression "(int)(uVar10 + 1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(uVar10 + 1)" ( (binary_expression "uVar10 + 1" identifier + number_literal) ))) < (pointer_expression "*(int *)(param_1 + 0x128)" * (cast_expression "(int *)(param_1 + 0x128)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x128)" ( (binary_expression "param_1 + 0x128" identifier + number_literal) ))))) )) (compound_statement "{\nLAB_00095f88:\n            uVar10 = uVar10 + 1;\n            puVar5 = (ushort *)(*pcVar14)(param_1,uVar10,0x9a7,1);\n            uVar15 = 0;\n            bVar1 = (int)uVar10 < (int)uVar13;\n            goto LAB_00095e94;\n          }" { (labeled_statement "LAB_00095f88:\n            uVar10 = uVar10 + 1;" statement_identifier : (expression_statement "uVar10 = uVar10 + 1;" (assignment_expression "uVar10 = uVar10 + 1" identifier = (binary_expression "uVar10 + 1" identifier + number_literal)) ;)) (expression_statement "puVar5 = (ushort *)(*pcVar14)(param_1,uVar10,0x9a7,1);" (assignment_expression "puVar5 = (ushort *)(*pcVar14)(param_1,uVar10,0x9a7,1)" identifier = (cast_expression "(ushort *)(*pcVar14)(param_1,uVar10,0x9a7,1)" ( (type_descriptor "ushort *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*pcVar14)(param_1,uVar10,0x9a7,1)" (parenthesized_expression "(*pcVar14)" ( (pointer_expression "*pcVar14" * identifier) )) (argument_list "(param_1,uVar10,0x9a7,1)" ( identifier , identifier , number_literal , number_literal ))))) ;) (expression_statement "uVar15 = 0;" (assignment_expression "uVar15 = 0" identifier = number_literal) ;) (expression_statement "bVar1 = (int)uVar10 < (int)uVar13;" (assignment_expression "bVar1 = (int)uVar10 < (int)uVar13" identifier = (binary_expression "(int)uVar10 < (int)uVar13" (cast_expression "(int)uVar10" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)uVar13" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (goto_statement "goto LAB_00095e94;" goto statement_identifier ;) }))) }))) (expression_statement "uVar10 = uVar10 + 1;" (assignment_expression "uVar10 = uVar10 + 1" identifier = (binary_expression "uVar10 + 1" identifier + number_literal)) ;) (expression_statement "bVar1 = (int)uVar10 < (int)uVar13;" (assignment_expression "bVar1 = (int)uVar10 < (int)uVar13" identifier = (binary_expression "(int)uVar10 < (int)uVar13" (cast_expression "(int)uVar10" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)uVar13" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "uVar15 = 0;" (assignment_expression "uVar15 = 0" identifier = number_literal) ;) }) while (parenthesized_expression "(bVar1)" ( identifier )) ;)) (expression_statement "bVar2 = 0 < param_3;" (assignment_expression "bVar2 = 0 < param_3" identifier = (binary_expression "0 < param_3" number_literal < identifier)) ;) }) while (parenthesized_expression "(uVar10 == uVar13)" ( (binary_expression "uVar10 == uVar13" identifier == identifier) )) ;) })) (if_statement "if (!bVar4) {\n    return;\n  }" if (parenthesized_expression "(!bVar4)" ( (unary_expression "!bVar4" ! identifier) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (labeled_statement "LAB_00095ff4:\n  if (*(int *)(param_1 + 0x1a4) != 0) {\n    return;\n  }" statement_identifier : (if_statement "if (*(int *)(param_1 + 0x1a4) != 0) {\n    return;\n  }" if (parenthesized_expression "(*(int *)(param_1 + 0x1a4) != 0)" ( (binary_expression "*(int *)(param_1 + 0x1a4) != 0" (pointer_expression "*(int *)(param_1 + 0x1a4)" * (cast_expression "(int *)(param_1 + 0x1a4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1a4)" ( (binary_expression "param_1 + 0x1a4" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) }))) (expression_statement "*(undefined4 *)(param_1 + 0x14) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x14) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x14)" * (cast_expression "(undefined4 *)(param_1 + 0x14)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) )))) = number_literal) ;) (return_statement "return;" return ;) })))
(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) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression 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)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == IDENT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;)) (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (labeled_statement statement_identifier : (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 LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) && (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) 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 , IDENT ))) ;) })) }) (else_clause else (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 = BOOL) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_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 = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == IDENT) )) (goto_statement goto statement_identifier ;)) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) }))) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT , IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) || (parenthesized_expression ( (unary_expression ! IDENT) ))) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( 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)) ;) })) (if_statement if (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT , (binary_expression IDENT - LIT) , IDENT , LIT ))) ;) })) (goto_statement goto statement_identifier ;) })) }) (else_clause else (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = BOOL) ;)) }))) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT , IDENT , LIT , LIT ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( IDENT )) (goto_statement goto statement_identifier ;))) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < IDENT)) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (unary_expression ! IDENT) )) (break_statement break ;)) (labeled_statement statement_identifier : (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != IDENT) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( 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 == IDENT) )) (compound_statement { (if_statement if (parenthesized_expression ( (unary_expression ! IDENT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (pointer_expression * IDENT) & LIT)) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))) < IDENT) )) (goto_statement goto statement_identifier ;)) }) (else_clause else (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , IDENT , (binary_expression IDENT + LIT) ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (goto_statement goto statement_identifier ;) })) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))) < (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;)) (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 = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (goto_statement goto statement_identifier ;) }))) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }) while (parenthesized_expression ( IDENT )) ;)) (expression_statement (assignment_expression IDENT = (binary_expression LIT < IDENT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT == IDENT) )) ;) })) (if_statement if (parenthesized_expression ( (unary_expression ! IDENT) )) (compound_statement { (return_statement return ;) })) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) )) (compound_statement { (return_statement return ;) }))) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (return_statement return ;) })))
(function_definition "void FUN_00095d10(int param_1,int param_2,int param_3,int param_4)\n\n{\n  bool bVar1;\n  bool bVar2;\n  bool bVar3;\n  bool bVar4;\n  ushort *puVar5;\n  code *pcVar6;\n  code *pcVar7;\n  int iVar8;\n  uint uVar9;\n  uint uVar10;\n  uint uVar11;\n  uint uVar12;\n  uint uVar13;\n  code *pcVar14;\n  uint uVar15;\n  \n  if (param_2 == 0) {\n    uVar13 = *(uint *)(param_1 + 0x128);\n    bVar3 = true;\n    uVar10 = 0;\n    if (param_3 != 0) goto LAB_00095da4;\nLAB_00095d68:\n    uVar9 = *(uint *)(param_1 + 0x70);\n    uVar11 = *(uint *)(param_1 + 0x6c);\n    uVar12 = uVar11 | uVar9;\n    uVar10 = uVar11;\n    uVar15 = uVar9;\n    if (param_4 == 0) {\n      if (*(uint *)(param_1 + 300) == uVar9) {\nLAB_00095dc0:\n        uVar13 = uVar11 + 1;\n        param_3 = 0;\n      }\n      else {\nLAB_00095d88:\n        param_3 = uVar9 + 1;\n        uVar13 = uVar11;\n      }\n    }\n    if ((0 < (int)uVar9) && ((int)uVar9 <= *(int *)(param_1 + 300))) {\n      FUN_00092d1c(param_1,uVar9,uVar11,uVar13);\n    }\n  }\n  else {\n    uVar10 = *(uint *)(param_1 + 0x6c);\n    bVar3 = false;\n    uVar13 = uVar10 + 1;\n    if (param_3 == 0) goto LAB_00095d68;\nLAB_00095da4:\n    uVar15 = 0;\n    uVar12 = uVar10;\n    if (param_4 == 0) {\n      uVar9 = *(uint *)(param_1 + 0x70);\n      uVar11 = *(uint *)(param_1 + 0x6c);\n      if (*(uint *)(param_1 + 300) == uVar9) goto LAB_00095dc0;\n      goto LAB_00095d88;\n    }\n    param_3 = 0;\n  }\n  FUN_00090a2c(param_1,uVar10,uVar15,uVar13,param_3);\n  if (uVar12 == 0) {\n    if (*(uint *)(param_1 + 0x128) == uVar13) {\n      term_invalidate();\n    }\n    if ((param_3 != 0) || (!bVar3)) goto LAB_00095e48;\n    bVar4 = bVar3;\n    if (*(int *)(param_1 + 0x1118) != 0) {\n      if (*(uint *)(param_1 + 0x128) == uVar13) {\n        iVar8 = FUN_00090860(param_1,*(undefined4 *)(param_1 + 8));\n        uVar13 = iVar8 + 1;\n      }\n      if (0 < (int)uVar13) {\n        FUN_0009228c(param_1,0,uVar13 - 1,uVar13,1);\n      }\n      goto LAB_00095ff4;\n    }\n  }\n  else {\nLAB_00095e48:\n    bVar4 = false;\n  }\n  pcVar14 = (code *)(PTR_LAB_00111ad8 + 0x2a9c);\n  puVar5 = (ushort *)FUN_00092a9c(param_1,uVar10,0x99b,1);\n  bVar1 = (int)uVar10 < (int)uVar13;\n  pcVar6 = (code *)(PTR_LAB_00111ad8 + 0xb64);\n  pcVar7 = (code *)(PTR_LAB_00111ad8 + 0x1070);\nLAB_00095e94:\n  if (bVar1) goto LAB_00095eb0;\n  if (uVar10 == uVar13) {\n    bVar2 = (int)uVar15 < param_3;\n    do {\n      if (!bVar2) break;\nLAB_00095eb0:\n      do {\n        uVar12 = *(uint *)(puVar5 + 2);\n        if (*(uint *)(param_1 + 300) != uVar12) {\n          (*pcVar6)(param_1,puVar5);\n          uVar12 = *(uint *)(param_1 + 300);\n        }\n        if (uVar15 == uVar12) {\n          if (!bVar3) {\n            *puVar5 = *puVar5 & 0xffcf;\n            goto LAB_00095eec;\n          }\n          iVar8 = *(int *)(param_1 + 0x128);\n          *puVar5 = 0;\n          if ((int)(uVar10 + 1) < iVar8) goto LAB_00095f88;\n        }\n        else {\n          (*pcVar7)(puVar5,uVar15,param_1 + 0x54);\n          if (*(uint *)(param_1 + 300) != uVar15) {\n            uVar15 = uVar15 + 1;\n            goto LAB_00095e94;\n          }\nLAB_00095eec:\n          if ((int)(uVar10 + 1) < *(int *)(param_1 + 0x128)) {\nLAB_00095f88:\n            uVar10 = uVar10 + 1;\n            puVar5 = (ushort *)(*pcVar14)(param_1,uVar10,0x9a7,1);\n            uVar15 = 0;\n            bVar1 = (int)uVar10 < (int)uVar13;\n            goto LAB_00095e94;\n          }\n        }\n        uVar10 = uVar10 + 1;\n        bVar1 = (int)uVar10 < (int)uVar13;\n        uVar15 = 0;\n      } while (bVar1);\n      bVar2 = 0 < param_3;\n    } while (uVar10 == uVar13);\n  }\n  if (!bVar4) {\n    return;\n  }\nLAB_00095ff4:\n  if (*(int *)(param_1 + 0x1a4) != 0) {\n    return;\n  }\n  *(undefined4 *)(param_1 + 0x14) = 0;\n  return;\n}" (primitive_type "void") (function_declarator "FUN_00095d10(int param_1,int param_2,int param_3,int param_4)" (identifier "FUN_00095d10") (parameter_list "(int param_1,int param_2,int param_3,int param_4)" (( "(") (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")) () ")"))) (compound_statement "{\n  bool bVar1;\n  bool bVar2;\n  bool bVar3;\n  bool bVar4;\n  ushort *puVar5;\n  code *pcVar6;\n  code *pcVar7;\n  int iVar8;\n  uint uVar9;\n  uint uVar10;\n  uint uVar11;\n  uint uVar12;\n  uint uVar13;\n  code *pcVar14;\n  uint uVar15;\n  \n  if (param_2 == 0) {\n    uVar13 = *(uint *)(param_1 + 0x128);\n    bVar3 = true;\n    uVar10 = 0;\n    if (param_3 != 0) goto LAB_00095da4;\nLAB_00095d68:\n    uVar9 = *(uint *)(param_1 + 0x70);\n    uVar11 = *(uint *)(param_1 + 0x6c);\n    uVar12 = uVar11 | uVar9;\n    uVar10 = uVar11;\n    uVar15 = uVar9;\n    if (param_4 == 0) {\n      if (*(uint *)(param_1 + 300) == uVar9) {\nLAB_00095dc0:\n        uVar13 = uVar11 + 1;\n        param_3 = 0;\n      }\n      else {\nLAB_00095d88:\n        param_3 = uVar9 + 1;\n        uVar13 = uVar11;\n      }\n    }\n    if ((0 < (int)uVar9) && ((int)uVar9 <= *(int *)(param_1 + 300))) {\n      FUN_00092d1c(param_1,uVar9,uVar11,uVar13);\n    }\n  }\n  else {\n    uVar10 = *(uint *)(param_1 + 0x6c);\n    bVar3 = false;\n    uVar13 = uVar10 + 1;\n    if (param_3 == 0) goto LAB_00095d68;\nLAB_00095da4:\n    uVar15 = 0;\n    uVar12 = uVar10;\n    if (param_4 == 0) {\n      uVar9 = *(uint *)(param_1 + 0x70);\n      uVar11 = *(uint *)(param_1 + 0x6c);\n      if (*(uint *)(param_1 + 300) == uVar9) goto LAB_00095dc0;\n      goto LAB_00095d88;\n    }\n    param_3 = 0;\n  }\n  FUN_00090a2c(param_1,uVar10,uVar15,uVar13,param_3);\n  if (uVar12 == 0) {\n    if (*(uint *)(param_1 + 0x128) == uVar13) {\n      term_invalidate();\n    }\n    if ((param_3 != 0) || (!bVar3)) goto LAB_00095e48;\n    bVar4 = bVar3;\n    if (*(int *)(param_1 + 0x1118) != 0) {\n      if (*(uint *)(param_1 + 0x128) == uVar13) {\n        iVar8 = FUN_00090860(param_1,*(undefined4 *)(param_1 + 8));\n        uVar13 = iVar8 + 1;\n      }\n      if (0 < (int)uVar13) {\n        FUN_0009228c(param_1,0,uVar13 - 1,uVar13,1);\n      }\n      goto LAB_00095ff4;\n    }\n  }\n  else {\nLAB_00095e48:\n    bVar4 = false;\n  }\n  pcVar14 = (code *)(PTR_LAB_00111ad8 + 0x2a9c);\n  puVar5 = (ushort *)FUN_00092a9c(param_1,uVar10,0x99b,1);\n  bVar1 = (int)uVar10 < (int)uVar13;\n  pcVar6 = (code *)(PTR_LAB_00111ad8 + 0xb64);\n  pcVar7 = (code *)(PTR_LAB_00111ad8 + 0x1070);\nLAB_00095e94:\n  if (bVar1) goto LAB_00095eb0;\n  if (uVar10 == uVar13) {\n    bVar2 = (int)uVar15 < param_3;\n    do {\n      if (!bVar2) break;\nLAB_00095eb0:\n      do {\n        uVar12 = *(uint *)(puVar5 + 2);\n        if (*(uint *)(param_1 + 300) != uVar12) {\n          (*pcVar6)(param_1,puVar5);\n          uVar12 = *(uint *)(param_1 + 300);\n        }\n        if (uVar15 == uVar12) {\n          if (!bVar3) {\n            *puVar5 = *puVar5 & 0xffcf;\n            goto LAB_00095eec;\n          }\n          iVar8 = *(int *)(param_1 + 0x128);\n          *puVar5 = 0;\n          if ((int)(uVar10 + 1) < iVar8) goto LAB_00095f88;\n        }\n        else {\n          (*pcVar7)(puVar5,uVar15,param_1 + 0x54);\n          if (*(uint *)(param_1 + 300) != uVar15) {\n            uVar15 = uVar15 + 1;\n            goto LAB_00095e94;\n          }\nLAB_00095eec:\n          if ((int)(uVar10 + 1) < *(int *)(param_1 + 0x128)) {\nLAB_00095f88:\n            uVar10 = uVar10 + 1;\n            puVar5 = (ushort *)(*pcVar14)(param_1,uVar10,0x9a7,1);\n            uVar15 = 0;\n            bVar1 = (int)uVar10 < (int)uVar13;\n            goto LAB_00095e94;\n          }\n        }\n        uVar10 = uVar10 + 1;\n        bVar1 = (int)uVar10 < (int)uVar13;\n        uVar15 = 0;\n      } while (bVar1);\n      bVar2 = 0 < param_3;\n    } while (uVar10 == uVar13);\n  }\n  if (!bVar4) {\n    return;\n  }\nLAB_00095ff4:\n  if (*(int *)(param_1 + 0x1a4) != 0) {\n    return;\n  }\n  *(undefined4 *)(param_1 + 0x14) = 0;\n  return;\n}" ({ "{") (declaration "bool bVar1;" (primitive_type "bool") (identifier "bVar1") (; ";")) (declaration "bool bVar2;" (primitive_type "bool") (identifier "bVar2") (; ";")) (declaration "bool bVar3;" (primitive_type "bool") (identifier "bVar3") (; ";")) (declaration "bool bVar4;" (primitive_type "bool") (identifier "bVar4") (; ";")) (declaration "ushort *puVar5;" (type_identifier "ushort") (pointer_declarator "*puVar5" (* "*") (identifier "puVar5")) (; ";")) (declaration "code *pcVar6;" (type_identifier "code") (pointer_declarator "*pcVar6" (* "*") (identifier "pcVar6")) (; ";")) (declaration "code *pcVar7;" (type_identifier "code") (pointer_declarator "*pcVar7" (* "*") (identifier "pcVar7")) (; ";")) (declaration "int iVar8;" (primitive_type "int") (identifier "iVar8") (; ";")) (declaration "uint uVar9;" (type_identifier "uint") (identifier "uVar9") (; ";")) (declaration "uint uVar10;" (type_identifier "uint") (identifier "uVar10") (; ";")) (declaration "uint uVar11;" (type_identifier "uint") (identifier "uVar11") (; ";")) (declaration "uint uVar12;" (type_identifier "uint") (identifier "uVar12") (; ";")) (declaration "uint uVar13;" (type_identifier "uint") (identifier "uVar13") (; ";")) (declaration "code *pcVar14;" (type_identifier "code") (pointer_declarator "*pcVar14" (* "*") (identifier "pcVar14")) (; ";")) (declaration "uint uVar15;" (type_identifier "uint") (identifier "uVar15") (; ";")) (if_statement "if (param_2 == 0) {\n    uVar13 = *(uint *)(param_1 + 0x128);\n    bVar3 = true;\n    uVar10 = 0;\n    if (param_3 != 0) goto LAB_00095da4;\nLAB_00095d68:\n    uVar9 = *(uint *)(param_1 + 0x70);\n    uVar11 = *(uint *)(param_1 + 0x6c);\n    uVar12 = uVar11 | uVar9;\n    uVar10 = uVar11;\n    uVar15 = uVar9;\n    if (param_4 == 0) {\n      if (*(uint *)(param_1 + 300) == uVar9) {\nLAB_00095dc0:\n        uVar13 = uVar11 + 1;\n        param_3 = 0;\n      }\n      else {\nLAB_00095d88:\n        param_3 = uVar9 + 1;\n        uVar13 = uVar11;\n      }\n    }\n    if ((0 < (int)uVar9) && ((int)uVar9 <= *(int *)(param_1 + 300))) {\n      FUN_00092d1c(param_1,uVar9,uVar11,uVar13);\n    }\n  }\n  else {\n    uVar10 = *(uint *)(param_1 + 0x6c);\n    bVar3 = false;\n    uVar13 = uVar10 + 1;\n    if (param_3 == 0) goto LAB_00095d68;\nLAB_00095da4:\n    uVar15 = 0;\n    uVar12 = uVar10;\n    if (param_4 == 0) {\n      uVar9 = *(uint *)(param_1 + 0x70);\n      uVar11 = *(uint *)(param_1 + 0x6c);\n      if (*(uint *)(param_1 + 300) == uVar9) goto LAB_00095dc0;\n      goto LAB_00095d88;\n    }\n    param_3 = 0;\n  }" (if "if") (parenthesized_expression "(param_2 == 0)" (( "(") (binary_expression "param_2 == 0" (identifier "param_2") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    uVar13 = *(uint *)(param_1 + 0x128);\n    bVar3 = true;\n    uVar10 = 0;\n    if (param_3 != 0) goto LAB_00095da4;\nLAB_00095d68:\n    uVar9 = *(uint *)(param_1 + 0x70);\n    uVar11 = *(uint *)(param_1 + 0x6c);\n    uVar12 = uVar11 | uVar9;\n    uVar10 = uVar11;\n    uVar15 = uVar9;\n    if (param_4 == 0) {\n      if (*(uint *)(param_1 + 300) == uVar9) {\nLAB_00095dc0:\n        uVar13 = uVar11 + 1;\n        param_3 = 0;\n      }\n      else {\nLAB_00095d88:\n        param_3 = uVar9 + 1;\n        uVar13 = uVar11;\n      }\n    }\n    if ((0 < (int)uVar9) && ((int)uVar9 <= *(int *)(param_1 + 300))) {\n      FUN_00092d1c(param_1,uVar9,uVar11,uVar13);\n    }\n  }" ({ "{") (expression_statement "uVar13 = *(uint *)(param_1 + 0x128);" (assignment_expression "uVar13 = *(uint *)(param_1 + 0x128)" (identifier "uVar13") (= "=") (pointer_expression "*(uint *)(param_1 + 0x128)" (* "*") (cast_expression "(uint *)(param_1 + 0x128)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x128)" (( "(") (binary_expression "param_1 + 0x128" (identifier "param_1") (+ "+") (number_literal "0x128")) () ")"))))) (; ";")) (expression_statement "bVar3 = true;" (assignment_expression "bVar3 = true" (identifier "bVar3") (= "=") (true "true")) (; ";")) (expression_statement "uVar10 = 0;" (assignment_expression "uVar10 = 0" (identifier "uVar10") (= "=") (number_literal "0")) (; ";")) (if_statement "if (param_3 != 0) goto LAB_00095da4;" (if "if") (parenthesized_expression "(param_3 != 0)" (( "(") (binary_expression "param_3 != 0" (identifier "param_3") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_00095da4;" (goto "goto") (statement_identifier "LAB_00095da4") (; ";"))) (labeled_statement "LAB_00095d68:\n    uVar9 = *(uint *)(param_1 + 0x70);" (statement_identifier "LAB_00095d68") (: ":") (expression_statement "uVar9 = *(uint *)(param_1 + 0x70);" (assignment_expression "uVar9 = *(uint *)(param_1 + 0x70)" (identifier "uVar9") (= "=") (pointer_expression "*(uint *)(param_1 + 0x70)" (* "*") (cast_expression "(uint *)(param_1 + 0x70)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x70)" (( "(") (binary_expression "param_1 + 0x70" (identifier "param_1") (+ "+") (number_literal "0x70")) () ")"))))) (; ";"))) (expression_statement "uVar11 = *(uint *)(param_1 + 0x6c);" (assignment_expression "uVar11 = *(uint *)(param_1 + 0x6c)" (identifier "uVar11") (= "=") (pointer_expression "*(uint *)(param_1 + 0x6c)" (* "*") (cast_expression "(uint *)(param_1 + 0x6c)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x6c)" (( "(") (binary_expression "param_1 + 0x6c" (identifier "param_1") (+ "+") (number_literal "0x6c")) () ")"))))) (; ";")) (expression_statement "uVar12 = uVar11 | uVar9;" (assignment_expression "uVar12 = uVar11 | uVar9" (identifier "uVar12") (= "=") (binary_expression "uVar11 | uVar9" (identifier "uVar11") (| "|") (identifier "uVar9"))) (; ";")) (expression_statement "uVar10 = uVar11;" (assignment_expression "uVar10 = uVar11" (identifier "uVar10") (= "=") (identifier "uVar11")) (; ";")) (expression_statement "uVar15 = uVar9;" (assignment_expression "uVar15 = uVar9" (identifier "uVar15") (= "=") (identifier "uVar9")) (; ";")) (if_statement "if (param_4 == 0) {\n      if (*(uint *)(param_1 + 300) == uVar9) {\nLAB_00095dc0:\n        uVar13 = uVar11 + 1;\n        param_3 = 0;\n      }\n      else {\nLAB_00095d88:\n        param_3 = uVar9 + 1;\n        uVar13 = uVar11;\n      }\n    }" (if "if") (parenthesized_expression "(param_4 == 0)" (( "(") (binary_expression "param_4 == 0" (identifier "param_4") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      if (*(uint *)(param_1 + 300) == uVar9) {\nLAB_00095dc0:\n        uVar13 = uVar11 + 1;\n        param_3 = 0;\n      }\n      else {\nLAB_00095d88:\n        param_3 = uVar9 + 1;\n        uVar13 = uVar11;\n      }\n    }" ({ "{") (if_statement "if (*(uint *)(param_1 + 300) == uVar9) {\nLAB_00095dc0:\n        uVar13 = uVar11 + 1;\n        param_3 = 0;\n      }\n      else {\nLAB_00095d88:\n        param_3 = uVar9 + 1;\n        uVar13 = uVar11;\n      }" (if "if") (parenthesized_expression "(*(uint *)(param_1 + 300) == uVar9)" (( "(") (binary_expression "*(uint *)(param_1 + 300) == uVar9" (pointer_expression "*(uint *)(param_1 + 300)" (* "*") (cast_expression "(uint *)(param_1 + 300)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 300)" (( "(") (binary_expression "param_1 + 300" (identifier "param_1") (+ "+") (number_literal "300")) () ")")))) (== "==") (identifier "uVar9")) () ")")) (compound_statement "{\nLAB_00095dc0:\n        uVar13 = uVar11 + 1;\n        param_3 = 0;\n      }" ({ "{") (labeled_statement "LAB_00095dc0:\n        uVar13 = uVar11 + 1;" (statement_identifier "LAB_00095dc0") (: ":") (expression_statement "uVar13 = uVar11 + 1;" (assignment_expression "uVar13 = uVar11 + 1" (identifier "uVar13") (= "=") (binary_expression "uVar11 + 1" (identifier "uVar11") (+ "+") (number_literal "1"))) (; ";"))) (expression_statement "param_3 = 0;" (assignment_expression "param_3 = 0" (identifier "param_3") (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\nLAB_00095d88:\n        param_3 = uVar9 + 1;\n        uVar13 = uVar11;\n      }" (else "else") (compound_statement "{\nLAB_00095d88:\n        param_3 = uVar9 + 1;\n        uVar13 = uVar11;\n      }" ({ "{") (labeled_statement "LAB_00095d88:\n        param_3 = uVar9 + 1;" (statement_identifier "LAB_00095d88") (: ":") (expression_statement "param_3 = uVar9 + 1;" (assignment_expression "param_3 = uVar9 + 1" (identifier "param_3") (= "=") (binary_expression "uVar9 + 1" (identifier "uVar9") (+ "+") (number_literal "1"))) (; ";"))) (expression_statement "uVar13 = uVar11;" (assignment_expression "uVar13 = uVar11" (identifier "uVar13") (= "=") (identifier "uVar11")) (; ";")) (} "}")))) (} "}"))) (if_statement "if ((0 < (int)uVar9) && ((int)uVar9 <= *(int *)(param_1 + 300))) {\n      FUN_00092d1c(param_1,uVar9,uVar11,uVar13);\n    }" (if "if") (parenthesized_expression "((0 < (int)uVar9) && ((int)uVar9 <= *(int *)(param_1 + 300)))" (( "(") (binary_expression "(0 < (int)uVar9) && ((int)uVar9 <= *(int *)(param_1 + 300))" (parenthesized_expression "(0 < (int)uVar9)" (( "(") (binary_expression "0 < (int)uVar9" (number_literal "0") (< "<") (cast_expression "(int)uVar9" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar9"))) () ")")) (&& "&&") (parenthesized_expression "((int)uVar9 <= *(int *)(param_1 + 300))" (( "(") (binary_expression "(int)uVar9 <= *(int *)(param_1 + 300)" (cast_expression "(int)uVar9" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar9")) (<= "<=") (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")) () ")"))))) () ")"))) () ")")) (compound_statement "{\n      FUN_00092d1c(param_1,uVar9,uVar11,uVar13);\n    }" ({ "{") (expression_statement "FUN_00092d1c(param_1,uVar9,uVar11,uVar13);" (call_expression "FUN_00092d1c(param_1,uVar9,uVar11,uVar13)" (identifier "FUN_00092d1c") (argument_list "(param_1,uVar9,uVar11,uVar13)" (( "(") (identifier "param_1") (, ",") (identifier "uVar9") (, ",") (identifier "uVar11") (, ",") (identifier "uVar13") () ")"))) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n    uVar10 = *(uint *)(param_1 + 0x6c);\n    bVar3 = false;\n    uVar13 = uVar10 + 1;\n    if (param_3 == 0) goto LAB_00095d68;\nLAB_00095da4:\n    uVar15 = 0;\n    uVar12 = uVar10;\n    if (param_4 == 0) {\n      uVar9 = *(uint *)(param_1 + 0x70);\n      uVar11 = *(uint *)(param_1 + 0x6c);\n      if (*(uint *)(param_1 + 300) == uVar9) goto LAB_00095dc0;\n      goto LAB_00095d88;\n    }\n    param_3 = 0;\n  }" (else "else") (compound_statement "{\n    uVar10 = *(uint *)(param_1 + 0x6c);\n    bVar3 = false;\n    uVar13 = uVar10 + 1;\n    if (param_3 == 0) goto LAB_00095d68;\nLAB_00095da4:\n    uVar15 = 0;\n    uVar12 = uVar10;\n    if (param_4 == 0) {\n      uVar9 = *(uint *)(param_1 + 0x70);\n      uVar11 = *(uint *)(param_1 + 0x6c);\n      if (*(uint *)(param_1 + 300) == uVar9) goto LAB_00095dc0;\n      goto LAB_00095d88;\n    }\n    param_3 = 0;\n  }" ({ "{") (expression_statement "uVar10 = *(uint *)(param_1 + 0x6c);" (assignment_expression "uVar10 = *(uint *)(param_1 + 0x6c)" (identifier "uVar10") (= "=") (pointer_expression "*(uint *)(param_1 + 0x6c)" (* "*") (cast_expression "(uint *)(param_1 + 0x6c)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x6c)" (( "(") (binary_expression "param_1 + 0x6c" (identifier "param_1") (+ "+") (number_literal "0x6c")) () ")"))))) (; ";")) (expression_statement "bVar3 = false;" (assignment_expression "bVar3 = false" (identifier "bVar3") (= "=") (false "false")) (; ";")) (expression_statement "uVar13 = uVar10 + 1;" (assignment_expression "uVar13 = uVar10 + 1" (identifier "uVar13") (= "=") (binary_expression "uVar10 + 1" (identifier "uVar10") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (param_3 == 0) goto LAB_00095d68;" (if "if") (parenthesized_expression "(param_3 == 0)" (( "(") (binary_expression "param_3 == 0" (identifier "param_3") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_00095d68;" (goto "goto") (statement_identifier "LAB_00095d68") (; ";"))) (labeled_statement "LAB_00095da4:\n    uVar15 = 0;" (statement_identifier "LAB_00095da4") (: ":") (expression_statement "uVar15 = 0;" (assignment_expression "uVar15 = 0" (identifier "uVar15") (= "=") (number_literal "0")) (; ";"))) (expression_statement "uVar12 = uVar10;" (assignment_expression "uVar12 = uVar10" (identifier "uVar12") (= "=") (identifier "uVar10")) (; ";")) (if_statement "if (param_4 == 0) {\n      uVar9 = *(uint *)(param_1 + 0x70);\n      uVar11 = *(uint *)(param_1 + 0x6c);\n      if (*(uint *)(param_1 + 300) == uVar9) goto LAB_00095dc0;\n      goto LAB_00095d88;\n    }" (if "if") (parenthesized_expression "(param_4 == 0)" (( "(") (binary_expression "param_4 == 0" (identifier "param_4") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      uVar9 = *(uint *)(param_1 + 0x70);\n      uVar11 = *(uint *)(param_1 + 0x6c);\n      if (*(uint *)(param_1 + 300) == uVar9) goto LAB_00095dc0;\n      goto LAB_00095d88;\n    }" ({ "{") (expression_statement "uVar9 = *(uint *)(param_1 + 0x70);" (assignment_expression "uVar9 = *(uint *)(param_1 + 0x70)" (identifier "uVar9") (= "=") (pointer_expression "*(uint *)(param_1 + 0x70)" (* "*") (cast_expression "(uint *)(param_1 + 0x70)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x70)" (( "(") (binary_expression "param_1 + 0x70" (identifier "param_1") (+ "+") (number_literal "0x70")) () ")"))))) (; ";")) (expression_statement "uVar11 = *(uint *)(param_1 + 0x6c);" (assignment_expression "uVar11 = *(uint *)(param_1 + 0x6c)" (identifier "uVar11") (= "=") (pointer_expression "*(uint *)(param_1 + 0x6c)" (* "*") (cast_expression "(uint *)(param_1 + 0x6c)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x6c)" (( "(") (binary_expression "param_1 + 0x6c" (identifier "param_1") (+ "+") (number_literal "0x6c")) () ")"))))) (; ";")) (if_statement "if (*(uint *)(param_1 + 300) == uVar9) goto LAB_00095dc0;" (if "if") (parenthesized_expression "(*(uint *)(param_1 + 300) == uVar9)" (( "(") (binary_expression "*(uint *)(param_1 + 300) == uVar9" (pointer_expression "*(uint *)(param_1 + 300)" (* "*") (cast_expression "(uint *)(param_1 + 300)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 300)" (( "(") (binary_expression "param_1 + 300" (identifier "param_1") (+ "+") (number_literal "300")) () ")")))) (== "==") (identifier "uVar9")) () ")")) (goto_statement "goto LAB_00095dc0;" (goto "goto") (statement_identifier "LAB_00095dc0") (; ";"))) (goto_statement "goto LAB_00095d88;" (goto "goto") (statement_identifier "LAB_00095d88") (; ";")) (} "}"))) (expression_statement "param_3 = 0;" (assignment_expression "param_3 = 0" (identifier "param_3") (= "=") (number_literal "0")) (; ";")) (} "}")))) (expression_statement "FUN_00090a2c(param_1,uVar10,uVar15,uVar13,param_3);" (call_expression "FUN_00090a2c(param_1,uVar10,uVar15,uVar13,param_3)" (identifier "FUN_00090a2c") (argument_list "(param_1,uVar10,uVar15,uVar13,param_3)" (( "(") (identifier "param_1") (, ",") (identifier "uVar10") (, ",") (identifier "uVar15") (, ",") (identifier "uVar13") (, ",") (identifier "param_3") () ")"))) (; ";")) (if_statement "if (uVar12 == 0) {\n    if (*(uint *)(param_1 + 0x128) == uVar13) {\n      term_invalidate();\n    }\n    if ((param_3 != 0) || (!bVar3)) goto LAB_00095e48;\n    bVar4 = bVar3;\n    if (*(int *)(param_1 + 0x1118) != 0) {\n      if (*(uint *)(param_1 + 0x128) == uVar13) {\n        iVar8 = FUN_00090860(param_1,*(undefined4 *)(param_1 + 8));\n        uVar13 = iVar8 + 1;\n      }\n      if (0 < (int)uVar13) {\n        FUN_0009228c(param_1,0,uVar13 - 1,uVar13,1);\n      }\n      goto LAB_00095ff4;\n    }\n  }\n  else {\nLAB_00095e48:\n    bVar4 = false;\n  }" (if "if") (parenthesized_expression "(uVar12 == 0)" (( "(") (binary_expression "uVar12 == 0" (identifier "uVar12") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    if (*(uint *)(param_1 + 0x128) == uVar13) {\n      term_invalidate();\n    }\n    if ((param_3 != 0) || (!bVar3)) goto LAB_00095e48;\n    bVar4 = bVar3;\n    if (*(int *)(param_1 + 0x1118) != 0) {\n      if (*(uint *)(param_1 + 0x128) == uVar13) {\n        iVar8 = FUN_00090860(param_1,*(undefined4 *)(param_1 + 8));\n        uVar13 = iVar8 + 1;\n      }\n      if (0 < (int)uVar13) {\n        FUN_0009228c(param_1,0,uVar13 - 1,uVar13,1);\n      }\n      goto LAB_00095ff4;\n    }\n  }" ({ "{") (if_statement "if (*(uint *)(param_1 + 0x128) == uVar13) {\n      term_invalidate();\n    }" (if "if") (parenthesized_expression "(*(uint *)(param_1 + 0x128) == uVar13)" (( "(") (binary_expression "*(uint *)(param_1 + 0x128) == uVar13" (pointer_expression "*(uint *)(param_1 + 0x128)" (* "*") (cast_expression "(uint *)(param_1 + 0x128)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x128)" (( "(") (binary_expression "param_1 + 0x128" (identifier "param_1") (+ "+") (number_literal "0x128")) () ")")))) (== "==") (identifier "uVar13")) () ")")) (compound_statement "{\n      term_invalidate();\n    }" ({ "{") (expression_statement "term_invalidate();" (call_expression "term_invalidate()" (identifier "term_invalidate") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (if_statement "if ((param_3 != 0) || (!bVar3)) goto LAB_00095e48;" (if "if") (parenthesized_expression "((param_3 != 0) || (!bVar3))" (( "(") (binary_expression "(param_3 != 0) || (!bVar3)" (parenthesized_expression "(param_3 != 0)" (( "(") (binary_expression "param_3 != 0" (identifier "param_3") (!= "!=") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(!bVar3)" (( "(") (unary_expression "!bVar3" (! "!") (identifier "bVar3")) () ")"))) () ")")) (goto_statement "goto LAB_00095e48;" (goto "goto") (statement_identifier "LAB_00095e48") (; ";"))) (expression_statement "bVar4 = bVar3;" (assignment_expression "bVar4 = bVar3" (identifier "bVar4") (= "=") (identifier "bVar3")) (; ";")) (if_statement "if (*(int *)(param_1 + 0x1118) != 0) {\n      if (*(uint *)(param_1 + 0x128) == uVar13) {\n        iVar8 = FUN_00090860(param_1,*(undefined4 *)(param_1 + 8));\n        uVar13 = iVar8 + 1;\n      }\n      if (0 < (int)uVar13) {\n        FUN_0009228c(param_1,0,uVar13 - 1,uVar13,1);\n      }\n      goto LAB_00095ff4;\n    }" (if "if") (parenthesized_expression "(*(int *)(param_1 + 0x1118) != 0)" (( "(") (binary_expression "*(int *)(param_1 + 0x1118) != 0" (pointer_expression "*(int *)(param_1 + 0x1118)" (* "*") (cast_expression "(int *)(param_1 + 0x1118)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x1118)" (( "(") (binary_expression "param_1 + 0x1118" (identifier "param_1") (+ "+") (number_literal "0x1118")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      if (*(uint *)(param_1 + 0x128) == uVar13) {\n        iVar8 = FUN_00090860(param_1,*(undefined4 *)(param_1 + 8));\n        uVar13 = iVar8 + 1;\n      }\n      if (0 < (int)uVar13) {\n        FUN_0009228c(param_1,0,uVar13 - 1,uVar13,1);\n      }\n      goto LAB_00095ff4;\n    }" ({ "{") (if_statement "if (*(uint *)(param_1 + 0x128) == uVar13) {\n        iVar8 = FUN_00090860(param_1,*(undefined4 *)(param_1 + 8));\n        uVar13 = iVar8 + 1;\n      }" (if "if") (parenthesized_expression "(*(uint *)(param_1 + 0x128) == uVar13)" (( "(") (binary_expression "*(uint *)(param_1 + 0x128) == uVar13" (pointer_expression "*(uint *)(param_1 + 0x128)" (* "*") (cast_expression "(uint *)(param_1 + 0x128)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x128)" (( "(") (binary_expression "param_1 + 0x128" (identifier "param_1") (+ "+") (number_literal "0x128")) () ")")))) (== "==") (identifier "uVar13")) () ")")) (compound_statement "{\n        iVar8 = FUN_00090860(param_1,*(undefined4 *)(param_1 + 8));\n        uVar13 = iVar8 + 1;\n      }" ({ "{") (expression_statement "iVar8 = FUN_00090860(param_1,*(undefined4 *)(param_1 + 8));" (assignment_expression "iVar8 = FUN_00090860(param_1,*(undefined4 *)(param_1 + 8))" (identifier "iVar8") (= "=") (call_expression "FUN_00090860(param_1,*(undefined4 *)(param_1 + 8))" (identifier "FUN_00090860") (argument_list "(param_1,*(undefined4 *)(param_1 + 8))" (( "(") (identifier "param_1") (, ",") (pointer_expression "*(undefined4 *)(param_1 + 8)" (* "*") (cast_expression "(undefined4 *)(param_1 + 8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")")))) () ")")))) (; ";")) (expression_statement "uVar13 = iVar8 + 1;" (assignment_expression "uVar13 = iVar8 + 1" (identifier "uVar13") (= "=") (binary_expression "iVar8 + 1" (identifier "iVar8") (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (if_statement "if (0 < (int)uVar13) {\n        FUN_0009228c(param_1,0,uVar13 - 1,uVar13,1);\n      }" (if "if") (parenthesized_expression "(0 < (int)uVar13)" (( "(") (binary_expression "0 < (int)uVar13" (number_literal "0") (< "<") (cast_expression "(int)uVar13" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar13"))) () ")")) (compound_statement "{\n        FUN_0009228c(param_1,0,uVar13 - 1,uVar13,1);\n      }" ({ "{") (expression_statement "FUN_0009228c(param_1,0,uVar13 - 1,uVar13,1);" (call_expression "FUN_0009228c(param_1,0,uVar13 - 1,uVar13,1)" (identifier "FUN_0009228c") (argument_list "(param_1,0,uVar13 - 1,uVar13,1)" (( "(") (identifier "param_1") (, ",") (number_literal "0") (, ",") (binary_expression "uVar13 - 1" (identifier "uVar13") (- "-") (number_literal "1")) (, ",") (identifier "uVar13") (, ",") (number_literal "1") () ")"))) (; ";")) (} "}"))) (goto_statement "goto LAB_00095ff4;" (goto "goto") (statement_identifier "LAB_00095ff4") (; ";")) (} "}"))) (} "}")) (else_clause "else {\nLAB_00095e48:\n    bVar4 = false;\n  }" (else "else") (compound_statement "{\nLAB_00095e48:\n    bVar4 = false;\n  }" ({ "{") (labeled_statement "LAB_00095e48:\n    bVar4 = false;" (statement_identifier "LAB_00095e48") (: ":") (expression_statement "bVar4 = false;" (assignment_expression "bVar4 = false" (identifier "bVar4") (= "=") (false "false")) (; ";"))) (} "}")))) (expression_statement "pcVar14 = (code *)(PTR_LAB_00111ad8 + 0x2a9c);" (assignment_expression "pcVar14 = (code *)(PTR_LAB_00111ad8 + 0x2a9c)" (identifier "pcVar14") (= "=") (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 "puVar5 = (ushort *)FUN_00092a9c(param_1,uVar10,0x99b,1);" (assignment_expression "puVar5 = (ushort *)FUN_00092a9c(param_1,uVar10,0x99b,1)" (identifier "puVar5") (= "=") (cast_expression "(ushort *)FUN_00092a9c(param_1,uVar10,0x99b,1)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00092a9c(param_1,uVar10,0x99b,1)" (identifier "FUN_00092a9c") (argument_list "(param_1,uVar10,0x99b,1)" (( "(") (identifier "param_1") (, ",") (identifier "uVar10") (, ",") (number_literal "0x99b") (, ",") (number_literal "1") () ")"))))) (; ";")) (expression_statement "bVar1 = (int)uVar10 < (int)uVar13;" (assignment_expression "bVar1 = (int)uVar10 < (int)uVar13" (identifier "bVar1") (= "=") (binary_expression "(int)uVar10 < (int)uVar13" (cast_expression "(int)uVar10" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar10")) (< "<") (cast_expression "(int)uVar13" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar13")))) (; ";")) (expression_statement "pcVar6 = (code *)(PTR_LAB_00111ad8 + 0xb64);" (assignment_expression "pcVar6 = (code *)(PTR_LAB_00111ad8 + 0xb64)" (identifier "pcVar6") (= "=") (cast_expression "(code *)(PTR_LAB_00111ad8 + 0xb64)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_LAB_00111ad8 + 0xb64)" (( "(") (binary_expression "PTR_LAB_00111ad8 + 0xb64" (identifier "PTR_LAB_00111ad8") (+ "+") (number_literal "0xb64")) () ")")))) (; ";")) (expression_statement "pcVar7 = (code *)(PTR_LAB_00111ad8 + 0x1070);" (assignment_expression "pcVar7 = (code *)(PTR_LAB_00111ad8 + 0x1070)" (identifier "pcVar7") (= "=") (cast_expression "(code *)(PTR_LAB_00111ad8 + 0x1070)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_LAB_00111ad8 + 0x1070)" (( "(") (binary_expression "PTR_LAB_00111ad8 + 0x1070" (identifier "PTR_LAB_00111ad8") (+ "+") (number_literal "0x1070")) () ")")))) (; ";")) (labeled_statement "LAB_00095e94:\n  if (bVar1) goto LAB_00095eb0;" (statement_identifier "LAB_00095e94") (: ":") (if_statement "if (bVar1) goto LAB_00095eb0;" (if "if") (parenthesized_expression "(bVar1)" (( "(") (identifier "bVar1") () ")")) (goto_statement "goto LAB_00095eb0;" (goto "goto") (statement_identifier "LAB_00095eb0") (; ";")))) (if_statement "if (uVar10 == uVar13) {\n    bVar2 = (int)uVar15 < param_3;\n    do {\n      if (!bVar2) break;\nLAB_00095eb0:\n      do {\n        uVar12 = *(uint *)(puVar5 + 2);\n        if (*(uint *)(param_1 + 300) != uVar12) {\n          (*pcVar6)(param_1,puVar5);\n          uVar12 = *(uint *)(param_1 + 300);\n        }\n        if (uVar15 == uVar12) {\n          if (!bVar3) {\n            *puVar5 = *puVar5 & 0xffcf;\n            goto LAB_00095eec;\n          }\n          iVar8 = *(int *)(param_1 + 0x128);\n          *puVar5 = 0;\n          if ((int)(uVar10 + 1) < iVar8) goto LAB_00095f88;\n        }\n        else {\n          (*pcVar7)(puVar5,uVar15,param_1 + 0x54);\n          if (*(uint *)(param_1 + 300) != uVar15) {\n            uVar15 = uVar15 + 1;\n            goto LAB_00095e94;\n          }\nLAB_00095eec:\n          if ((int)(uVar10 + 1) < *(int *)(param_1 + 0x128)) {\nLAB_00095f88:\n            uVar10 = uVar10 + 1;\n            puVar5 = (ushort *)(*pcVar14)(param_1,uVar10,0x9a7,1);\n            uVar15 = 0;\n            bVar1 = (int)uVar10 < (int)uVar13;\n            goto LAB_00095e94;\n          }\n        }\n        uVar10 = uVar10 + 1;\n        bVar1 = (int)uVar10 < (int)uVar13;\n        uVar15 = 0;\n      } while (bVar1);\n      bVar2 = 0 < param_3;\n    } while (uVar10 == uVar13);\n  }" (if "if") (parenthesized_expression "(uVar10 == uVar13)" (( "(") (binary_expression "uVar10 == uVar13" (identifier "uVar10") (== "==") (identifier "uVar13")) () ")")) (compound_statement "{\n    bVar2 = (int)uVar15 < param_3;\n    do {\n      if (!bVar2) break;\nLAB_00095eb0:\n      do {\n        uVar12 = *(uint *)(puVar5 + 2);\n        if (*(uint *)(param_1 + 300) != uVar12) {\n          (*pcVar6)(param_1,puVar5);\n          uVar12 = *(uint *)(param_1 + 300);\n        }\n        if (uVar15 == uVar12) {\n          if (!bVar3) {\n            *puVar5 = *puVar5 & 0xffcf;\n            goto LAB_00095eec;\n          }\n          iVar8 = *(int *)(param_1 + 0x128);\n          *puVar5 = 0;\n          if ((int)(uVar10 + 1) < iVar8) goto LAB_00095f88;\n        }\n        else {\n          (*pcVar7)(puVar5,uVar15,param_1 + 0x54);\n          if (*(uint *)(param_1 + 300) != uVar15) {\n            uVar15 = uVar15 + 1;\n            goto LAB_00095e94;\n          }\nLAB_00095eec:\n          if ((int)(uVar10 + 1) < *(int *)(param_1 + 0x128)) {\nLAB_00095f88:\n            uVar10 = uVar10 + 1;\n            puVar5 = (ushort *)(*pcVar14)(param_1,uVar10,0x9a7,1);\n            uVar15 = 0;\n            bVar1 = (int)uVar10 < (int)uVar13;\n            goto LAB_00095e94;\n          }\n        }\n        uVar10 = uVar10 + 1;\n        bVar1 = (int)uVar10 < (int)uVar13;\n        uVar15 = 0;\n      } while (bVar1);\n      bVar2 = 0 < param_3;\n    } while (uVar10 == uVar13);\n  }" ({ "{") (expression_statement "bVar2 = (int)uVar15 < param_3;" (assignment_expression "bVar2 = (int)uVar15 < param_3" (identifier "bVar2") (= "=") (binary_expression "(int)uVar15 < param_3" (cast_expression "(int)uVar15" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar15")) (< "<") (identifier "param_3"))) (; ";")) (do_statement "do {\n      if (!bVar2) break;\nLAB_00095eb0:\n      do {\n        uVar12 = *(uint *)(puVar5 + 2);\n        if (*(uint *)(param_1 + 300) != uVar12) {\n          (*pcVar6)(param_1,puVar5);\n          uVar12 = *(uint *)(param_1 + 300);\n        }\n        if (uVar15 == uVar12) {\n          if (!bVar3) {\n            *puVar5 = *puVar5 & 0xffcf;\n            goto LAB_00095eec;\n          }\n          iVar8 = *(int *)(param_1 + 0x128);\n          *puVar5 = 0;\n          if ((int)(uVar10 + 1) < iVar8) goto LAB_00095f88;\n        }\n        else {\n          (*pcVar7)(puVar5,uVar15,param_1 + 0x54);\n          if (*(uint *)(param_1 + 300) != uVar15) {\n            uVar15 = uVar15 + 1;\n            goto LAB_00095e94;\n          }\nLAB_00095eec:\n          if ((int)(uVar10 + 1) < *(int *)(param_1 + 0x128)) {\nLAB_00095f88:\n            uVar10 = uVar10 + 1;\n            puVar5 = (ushort *)(*pcVar14)(param_1,uVar10,0x9a7,1);\n            uVar15 = 0;\n            bVar1 = (int)uVar10 < (int)uVar13;\n            goto LAB_00095e94;\n          }\n        }\n        uVar10 = uVar10 + 1;\n        bVar1 = (int)uVar10 < (int)uVar13;\n        uVar15 = 0;\n      } while (bVar1);\n      bVar2 = 0 < param_3;\n    } while (uVar10 == uVar13);" (do "do") (compound_statement "{\n      if (!bVar2) break;\nLAB_00095eb0:\n      do {\n        uVar12 = *(uint *)(puVar5 + 2);\n        if (*(uint *)(param_1 + 300) != uVar12) {\n          (*pcVar6)(param_1,puVar5);\n          uVar12 = *(uint *)(param_1 + 300);\n        }\n        if (uVar15 == uVar12) {\n          if (!bVar3) {\n            *puVar5 = *puVar5 & 0xffcf;\n            goto LAB_00095eec;\n          }\n          iVar8 = *(int *)(param_1 + 0x128);\n          *puVar5 = 0;\n          if ((int)(uVar10 + 1) < iVar8) goto LAB_00095f88;\n        }\n        else {\n          (*pcVar7)(puVar5,uVar15,param_1 + 0x54);\n          if (*(uint *)(param_1 + 300) != uVar15) {\n            uVar15 = uVar15 + 1;\n            goto LAB_00095e94;\n          }\nLAB_00095eec:\n          if ((int)(uVar10 + 1) < *(int *)(param_1 + 0x128)) {\nLAB_00095f88:\n            uVar10 = uVar10 + 1;\n            puVar5 = (ushort *)(*pcVar14)(param_1,uVar10,0x9a7,1);\n            uVar15 = 0;\n            bVar1 = (int)uVar10 < (int)uVar13;\n            goto LAB_00095e94;\n          }\n        }\n        uVar10 = uVar10 + 1;\n        bVar1 = (int)uVar10 < (int)uVar13;\n        uVar15 = 0;\n      } while (bVar1);\n      bVar2 = 0 < param_3;\n    }" ({ "{") (if_statement "if (!bVar2) break;" (if "if") (parenthesized_expression "(!bVar2)" (( "(") (unary_expression "!bVar2" (! "!") (identifier "bVar2")) () ")")) (break_statement "break;" (break "break") (; ";"))) (labeled_statement "LAB_00095eb0:\n      do {\n        uVar12 = *(uint *)(puVar5 + 2);\n        if (*(uint *)(param_1 + 300) != uVar12) {\n          (*pcVar6)(param_1,puVar5);\n          uVar12 = *(uint *)(param_1 + 300);\n        }\n        if (uVar15 == uVar12) {\n          if (!bVar3) {\n            *puVar5 = *puVar5 & 0xffcf;\n            goto LAB_00095eec;\n          }\n          iVar8 = *(int *)(param_1 + 0x128);\n          *puVar5 = 0;\n          if ((int)(uVar10 + 1) < iVar8) goto LAB_00095f88;\n        }\n        else {\n          (*pcVar7)(puVar5,uVar15,param_1 + 0x54);\n          if (*(uint *)(param_1 + 300) != uVar15) {\n            uVar15 = uVar15 + 1;\n            goto LAB_00095e94;\n          }\nLAB_00095eec:\n          if ((int)(uVar10 + 1) < *(int *)(param_1 + 0x128)) {\nLAB_00095f88:\n            uVar10 = uVar10 + 1;\n            puVar5 = (ushort *)(*pcVar14)(param_1,uVar10,0x9a7,1);\n            uVar15 = 0;\n            bVar1 = (int)uVar10 < (int)uVar13;\n            goto LAB_00095e94;\n          }\n        }\n        uVar10 = uVar10 + 1;\n        bVar1 = (int)uVar10 < (int)uVar13;\n        uVar15 = 0;\n      } while (bVar1);" (statement_identifier "LAB_00095eb0") (: ":") (do_statement "do {\n        uVar12 = *(uint *)(puVar5 + 2);\n        if (*(uint *)(param_1 + 300) != uVar12) {\n          (*pcVar6)(param_1,puVar5);\n          uVar12 = *(uint *)(param_1 + 300);\n        }\n        if (uVar15 == uVar12) {\n          if (!bVar3) {\n            *puVar5 = *puVar5 & 0xffcf;\n            goto LAB_00095eec;\n          }\n          iVar8 = *(int *)(param_1 + 0x128);\n          *puVar5 = 0;\n          if ((int)(uVar10 + 1) < iVar8) goto LAB_00095f88;\n        }\n        else {\n          (*pcVar7)(puVar5,uVar15,param_1 + 0x54);\n          if (*(uint *)(param_1 + 300) != uVar15) {\n            uVar15 = uVar15 + 1;\n            goto LAB_00095e94;\n          }\nLAB_00095eec:\n          if ((int)(uVar10 + 1) < *(int *)(param_1 + 0x128)) {\nLAB_00095f88:\n            uVar10 = uVar10 + 1;\n            puVar5 = (ushort *)(*pcVar14)(param_1,uVar10,0x9a7,1);\n            uVar15 = 0;\n            bVar1 = (int)uVar10 < (int)uVar13;\n            goto LAB_00095e94;\n          }\n        }\n        uVar10 = uVar10 + 1;\n        bVar1 = (int)uVar10 < (int)uVar13;\n        uVar15 = 0;\n      } while (bVar1);" (do "do") (compound_statement "{\n        uVar12 = *(uint *)(puVar5 + 2);\n        if (*(uint *)(param_1 + 300) != uVar12) {\n          (*pcVar6)(param_1,puVar5);\n          uVar12 = *(uint *)(param_1 + 300);\n        }\n        if (uVar15 == uVar12) {\n          if (!bVar3) {\n            *puVar5 = *puVar5 & 0xffcf;\n            goto LAB_00095eec;\n          }\n          iVar8 = *(int *)(param_1 + 0x128);\n          *puVar5 = 0;\n          if ((int)(uVar10 + 1) < iVar8) goto LAB_00095f88;\n        }\n        else {\n          (*pcVar7)(puVar5,uVar15,param_1 + 0x54);\n          if (*(uint *)(param_1 + 300) != uVar15) {\n            uVar15 = uVar15 + 1;\n            goto LAB_00095e94;\n          }\nLAB_00095eec:\n          if ((int)(uVar10 + 1) < *(int *)(param_1 + 0x128)) {\nLAB_00095f88:\n            uVar10 = uVar10 + 1;\n            puVar5 = (ushort *)(*pcVar14)(param_1,uVar10,0x9a7,1);\n            uVar15 = 0;\n            bVar1 = (int)uVar10 < (int)uVar13;\n            goto LAB_00095e94;\n          }\n        }\n        uVar10 = uVar10 + 1;\n        bVar1 = (int)uVar10 < (int)uVar13;\n        uVar15 = 0;\n      }" ({ "{") (expression_statement "uVar12 = *(uint *)(puVar5 + 2);" (assignment_expression "uVar12 = *(uint *)(puVar5 + 2)" (identifier "uVar12") (= "=") (pointer_expression "*(uint *)(puVar5 + 2)" (* "*") (cast_expression "(uint *)(puVar5 + 2)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar5 + 2)" (( "(") (binary_expression "puVar5 + 2" (identifier "puVar5") (+ "+") (number_literal "2")) () ")"))))) (; ";")) (if_statement "if (*(uint *)(param_1 + 300) != uVar12) {\n          (*pcVar6)(param_1,puVar5);\n          uVar12 = *(uint *)(param_1 + 300);\n        }" (if "if") (parenthesized_expression "(*(uint *)(param_1 + 300) != uVar12)" (( "(") (binary_expression "*(uint *)(param_1 + 300) != uVar12" (pointer_expression "*(uint *)(param_1 + 300)" (* "*") (cast_expression "(uint *)(param_1 + 300)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 300)" (( "(") (binary_expression "param_1 + 300" (identifier "param_1") (+ "+") (number_literal "300")) () ")")))) (!= "!=") (identifier "uVar12")) () ")")) (compound_statement "{\n          (*pcVar6)(param_1,puVar5);\n          uVar12 = *(uint *)(param_1 + 300);\n        }" ({ "{") (expression_statement "(*pcVar6)(param_1,puVar5);" (call_expression "(*pcVar6)(param_1,puVar5)" (parenthesized_expression "(*pcVar6)" (( "(") (pointer_expression "*pcVar6" (* "*") (identifier "pcVar6")) () ")")) (argument_list "(param_1,puVar5)" (( "(") (identifier "param_1") (, ",") (identifier "puVar5") () ")"))) (; ";")) (expression_statement "uVar12 = *(uint *)(param_1 + 300);" (assignment_expression "uVar12 = *(uint *)(param_1 + 300)" (identifier "uVar12") (= "=") (pointer_expression "*(uint *)(param_1 + 300)" (* "*") (cast_expression "(uint *)(param_1 + 300)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 300)" (( "(") (binary_expression "param_1 + 300" (identifier "param_1") (+ "+") (number_literal "300")) () ")"))))) (; ";")) (} "}"))) (if_statement "if (uVar15 == uVar12) {\n          if (!bVar3) {\n            *puVar5 = *puVar5 & 0xffcf;\n            goto LAB_00095eec;\n          }\n          iVar8 = *(int *)(param_1 + 0x128);\n          *puVar5 = 0;\n          if ((int)(uVar10 + 1) < iVar8) goto LAB_00095f88;\n        }\n        else {\n          (*pcVar7)(puVar5,uVar15,param_1 + 0x54);\n          if (*(uint *)(param_1 + 300) != uVar15) {\n            uVar15 = uVar15 + 1;\n            goto LAB_00095e94;\n          }\nLAB_00095eec:\n          if ((int)(uVar10 + 1) < *(int *)(param_1 + 0x128)) {\nLAB_00095f88:\n            uVar10 = uVar10 + 1;\n            puVar5 = (ushort *)(*pcVar14)(param_1,uVar10,0x9a7,1);\n            uVar15 = 0;\n            bVar1 = (int)uVar10 < (int)uVar13;\n            goto LAB_00095e94;\n          }\n        }" (if "if") (parenthesized_expression "(uVar15 == uVar12)" (( "(") (binary_expression "uVar15 == uVar12" (identifier "uVar15") (== "==") (identifier "uVar12")) () ")")) (compound_statement "{\n          if (!bVar3) {\n            *puVar5 = *puVar5 & 0xffcf;\n            goto LAB_00095eec;\n          }\n          iVar8 = *(int *)(param_1 + 0x128);\n          *puVar5 = 0;\n          if ((int)(uVar10 + 1) < iVar8) goto LAB_00095f88;\n        }" ({ "{") (if_statement "if (!bVar3) {\n            *puVar5 = *puVar5 & 0xffcf;\n            goto LAB_00095eec;\n          }" (if "if") (parenthesized_expression "(!bVar3)" (( "(") (unary_expression "!bVar3" (! "!") (identifier "bVar3")) () ")")) (compound_statement "{\n            *puVar5 = *puVar5 & 0xffcf;\n            goto LAB_00095eec;\n          }" ({ "{") (expression_statement "*puVar5 = *puVar5 & 0xffcf;" (assignment_expression "*puVar5 = *puVar5 & 0xffcf" (pointer_expression "*puVar5" (* "*") (identifier "puVar5")) (= "=") (binary_expression "*puVar5 & 0xffcf" (pointer_expression "*puVar5" (* "*") (identifier "puVar5")) (& "&") (number_literal "0xffcf"))) (; ";")) (goto_statement "goto LAB_00095eec;" (goto "goto") (statement_identifier "LAB_00095eec") (; ";")) (} "}"))) (expression_statement "iVar8 = *(int *)(param_1 + 0x128);" (assignment_expression "iVar8 = *(int *)(param_1 + 0x128)" (identifier "iVar8") (= "=") (pointer_expression "*(int *)(param_1 + 0x128)" (* "*") (cast_expression "(int *)(param_1 + 0x128)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x128)" (( "(") (binary_expression "param_1 + 0x128" (identifier "param_1") (+ "+") (number_literal "0x128")) () ")"))))) (; ";")) (expression_statement "*puVar5 = 0;" (assignment_expression "*puVar5 = 0" (pointer_expression "*puVar5" (* "*") (identifier "puVar5")) (= "=") (number_literal "0")) (; ";")) (if_statement "if ((int)(uVar10 + 1) < iVar8) goto LAB_00095f88;" (if "if") (parenthesized_expression "((int)(uVar10 + 1) < iVar8)" (( "(") (binary_expression "(int)(uVar10 + 1) < iVar8" (cast_expression "(int)(uVar10 + 1)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(uVar10 + 1)" (( "(") (binary_expression "uVar10 + 1" (identifier "uVar10") (+ "+") (number_literal "1")) () ")"))) (< "<") (identifier "iVar8")) () ")")) (goto_statement "goto LAB_00095f88;" (goto "goto") (statement_identifier "LAB_00095f88") (; ";"))) (} "}")) (else_clause "else {\n          (*pcVar7)(puVar5,uVar15,param_1 + 0x54);\n          if (*(uint *)(param_1 + 300) != uVar15) {\n            uVar15 = uVar15 + 1;\n            goto LAB_00095e94;\n          }\nLAB_00095eec:\n          if ((int)(uVar10 + 1) < *(int *)(param_1 + 0x128)) {\nLAB_00095f88:\n            uVar10 = uVar10 + 1;\n            puVar5 = (ushort *)(*pcVar14)(param_1,uVar10,0x9a7,1);\n            uVar15 = 0;\n            bVar1 = (int)uVar10 < (int)uVar13;\n            goto LAB_00095e94;\n          }\n        }" (else "else") (compound_statement "{\n          (*pcVar7)(puVar5,uVar15,param_1 + 0x54);\n          if (*(uint *)(param_1 + 300) != uVar15) {\n            uVar15 = uVar15 + 1;\n            goto LAB_00095e94;\n          }\nLAB_00095eec:\n          if ((int)(uVar10 + 1) < *(int *)(param_1 + 0x128)) {\nLAB_00095f88:\n            uVar10 = uVar10 + 1;\n            puVar5 = (ushort *)(*pcVar14)(param_1,uVar10,0x9a7,1);\n            uVar15 = 0;\n            bVar1 = (int)uVar10 < (int)uVar13;\n            goto LAB_00095e94;\n          }\n        }" ({ "{") (expression_statement "(*pcVar7)(puVar5,uVar15,param_1 + 0x54);" (call_expression "(*pcVar7)(puVar5,uVar15,param_1 + 0x54)" (parenthesized_expression "(*pcVar7)" (( "(") (pointer_expression "*pcVar7" (* "*") (identifier "pcVar7")) () ")")) (argument_list "(puVar5,uVar15,param_1 + 0x54)" (( "(") (identifier "puVar5") (, ",") (identifier "uVar15") (, ",") (binary_expression "param_1 + 0x54" (identifier "param_1") (+ "+") (number_literal "0x54")) () ")"))) (; ";")) (if_statement "if (*(uint *)(param_1 + 300) != uVar15) {\n            uVar15 = uVar15 + 1;\n            goto LAB_00095e94;\n          }" (if "if") (parenthesized_expression "(*(uint *)(param_1 + 300) != uVar15)" (( "(") (binary_expression "*(uint *)(param_1 + 300) != uVar15" (pointer_expression "*(uint *)(param_1 + 300)" (* "*") (cast_expression "(uint *)(param_1 + 300)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 300)" (( "(") (binary_expression "param_1 + 300" (identifier "param_1") (+ "+") (number_literal "300")) () ")")))) (!= "!=") (identifier "uVar15")) () ")")) (compound_statement "{\n            uVar15 = uVar15 + 1;\n            goto LAB_00095e94;\n          }" ({ "{") (expression_statement "uVar15 = uVar15 + 1;" (assignment_expression "uVar15 = uVar15 + 1" (identifier "uVar15") (= "=") (binary_expression "uVar15 + 1" (identifier "uVar15") (+ "+") (number_literal "1"))) (; ";")) (goto_statement "goto LAB_00095e94;" (goto "goto") (statement_identifier "LAB_00095e94") (; ";")) (} "}"))) (labeled_statement "LAB_00095eec:\n          if ((int)(uVar10 + 1) < *(int *)(param_1 + 0x128)) {\nLAB_00095f88:\n            uVar10 = uVar10 + 1;\n            puVar5 = (ushort *)(*pcVar14)(param_1,uVar10,0x9a7,1);\n            uVar15 = 0;\n            bVar1 = (int)uVar10 < (int)uVar13;\n            goto LAB_00095e94;\n          }" (statement_identifier "LAB_00095eec") (: ":") (if_statement "if ((int)(uVar10 + 1) < *(int *)(param_1 + 0x128)) {\nLAB_00095f88:\n            uVar10 = uVar10 + 1;\n            puVar5 = (ushort *)(*pcVar14)(param_1,uVar10,0x9a7,1);\n            uVar15 = 0;\n            bVar1 = (int)uVar10 < (int)uVar13;\n            goto LAB_00095e94;\n          }" (if "if") (parenthesized_expression "((int)(uVar10 + 1) < *(int *)(param_1 + 0x128))" (( "(") (binary_expression "(int)(uVar10 + 1) < *(int *)(param_1 + 0x128)" (cast_expression "(int)(uVar10 + 1)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(uVar10 + 1)" (( "(") (binary_expression "uVar10 + 1" (identifier "uVar10") (+ "+") (number_literal "1")) () ")"))) (< "<") (pointer_expression "*(int *)(param_1 + 0x128)" (* "*") (cast_expression "(int *)(param_1 + 0x128)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x128)" (( "(") (binary_expression "param_1 + 0x128" (identifier "param_1") (+ "+") (number_literal "0x128")) () ")"))))) () ")")) (compound_statement "{\nLAB_00095f88:\n            uVar10 = uVar10 + 1;\n            puVar5 = (ushort *)(*pcVar14)(param_1,uVar10,0x9a7,1);\n            uVar15 = 0;\n            bVar1 = (int)uVar10 < (int)uVar13;\n            goto LAB_00095e94;\n          }" ({ "{") (labeled_statement "LAB_00095f88:\n            uVar10 = uVar10 + 1;" (statement_identifier "LAB_00095f88") (: ":") (expression_statement "uVar10 = uVar10 + 1;" (assignment_expression "uVar10 = uVar10 + 1" (identifier "uVar10") (= "=") (binary_expression "uVar10 + 1" (identifier "uVar10") (+ "+") (number_literal "1"))) (; ";"))) (expression_statement "puVar5 = (ushort *)(*pcVar14)(param_1,uVar10,0x9a7,1);" (assignment_expression "puVar5 = (ushort *)(*pcVar14)(param_1,uVar10,0x9a7,1)" (identifier "puVar5") (= "=") (cast_expression "(ushort *)(*pcVar14)(param_1,uVar10,0x9a7,1)" (( "(") (type_descriptor "ushort *" (type_identifier "ushort") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(*pcVar14)(param_1,uVar10,0x9a7,1)" (parenthesized_expression "(*pcVar14)" (( "(") (pointer_expression "*pcVar14" (* "*") (identifier "pcVar14")) () ")")) (argument_list "(param_1,uVar10,0x9a7,1)" (( "(") (identifier "param_1") (, ",") (identifier "uVar10") (, ",") (number_literal "0x9a7") (, ",") (number_literal "1") () ")"))))) (; ";")) (expression_statement "uVar15 = 0;" (assignment_expression "uVar15 = 0" (identifier "uVar15") (= "=") (number_literal "0")) (; ";")) (expression_statement "bVar1 = (int)uVar10 < (int)uVar13;" (assignment_expression "bVar1 = (int)uVar10 < (int)uVar13" (identifier "bVar1") (= "=") (binary_expression "(int)uVar10 < (int)uVar13" (cast_expression "(int)uVar10" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar10")) (< "<") (cast_expression "(int)uVar13" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar13")))) (; ";")) (goto_statement "goto LAB_00095e94;" (goto "goto") (statement_identifier "LAB_00095e94") (; ";")) (} "}")))) (} "}")))) (expression_statement "uVar10 = uVar10 + 1;" (assignment_expression "uVar10 = uVar10 + 1" (identifier "uVar10") (= "=") (binary_expression "uVar10 + 1" (identifier "uVar10") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "bVar1 = (int)uVar10 < (int)uVar13;" (assignment_expression "bVar1 = (int)uVar10 < (int)uVar13" (identifier "bVar1") (= "=") (binary_expression "(int)uVar10 < (int)uVar13" (cast_expression "(int)uVar10" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar10")) (< "<") (cast_expression "(int)uVar13" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar13")))) (; ";")) (expression_statement "uVar15 = 0;" (assignment_expression "uVar15 = 0" (identifier "uVar15") (= "=") (number_literal "0")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar1)" (( "(") (identifier "bVar1") () ")")) (; ";"))) (expression_statement "bVar2 = 0 < param_3;" (assignment_expression "bVar2 = 0 < param_3" (identifier "bVar2") (= "=") (binary_expression "0 < param_3" (number_literal "0") (< "<") (identifier "param_3"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar10 == uVar13)" (( "(") (binary_expression "uVar10 == uVar13" (identifier "uVar10") (== "==") (identifier "uVar13")) () ")")) (; ";")) (} "}"))) (if_statement "if (!bVar4) {\n    return;\n  }" (if "if") (parenthesized_expression "(!bVar4)" (( "(") (unary_expression "!bVar4" (! "!") (identifier "bVar4")) () ")")) (compound_statement "{\n    return;\n  }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (labeled_statement "LAB_00095ff4:\n  if (*(int *)(param_1 + 0x1a4) != 0) {\n    return;\n  }" (statement_identifier "LAB_00095ff4") (: ":") (if_statement "if (*(int *)(param_1 + 0x1a4) != 0) {\n    return;\n  }" (if "if") (parenthesized_expression "(*(int *)(param_1 + 0x1a4) != 0)" (( "(") (binary_expression "*(int *)(param_1 + 0x1a4) != 0" (pointer_expression "*(int *)(param_1 + 0x1a4)" (* "*") (cast_expression "(int *)(param_1 + 0x1a4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x1a4)" (( "(") (binary_expression "param_1 + 0x1a4" (identifier "param_1") (+ "+") (number_literal "0x1a4")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    return;\n  }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}")))) (expression_statement "*(undefined4 *)(param_1 + 0x14) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x14) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x14)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x14)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x14)" (( "(") (binary_expression "param_1 + 0x14" (identifier "param_1") (+ "+") (number_literal "0x14")) () ")")))) (= "=") (number_literal "0")) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}")))

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

void function_1(type_1 *term,int var_1,int var_2,int var_5)

{
  bool bVar1;
  bool bVar2;
  type_2 from;
  type_2 to;
  bool bVar3;
  bool bVar4;
  int var_13;
  type_3 *ptVar6;
  int var_17;
  int var_20;
  int var_19;
  type_1 *term_00;
  type_4 var_4;
  type_4 var_7;
  type_4 var_3;
  type_4 var_9;
  type_4 var_10;
  type_4 var_18;
  int in_stack_ffffffac;
  type_5 *var_15;
  int in_stack_ffffffb4;
  
  var_15 = &_gp;
  if (var_1 == 0) {
    var_10 = term->rows;
    bVar3 = true;
    var_7 = 0;
    if (var_2 != 0) goto LAB_00095da4;
LAB_00095d68:
    var_4 = (term->curs).var_4;
    var_3 = (term->curs).var_7;
    var_9 = var_3 | var_4;
    var_7 = var_3;
    var_18 = var_4;
    if (var_5 == 0) {
      if (term->cols == var_4) {
LAB_00095dc0:
        var_10 = var_3 + 1;
        var_2 = 0;
      }
      else {
LAB_00095d88:
        var_2 = var_4 + 1;
        var_10 = var_3;
      }
    }
    if ((0 < (int)var_4) && ((int)var_4 <= term->cols)) {
      var_6(term,var_4,var_3);
    }
  }
  else {
    var_7 = (term->curs).var_7;
    bVar3 = false;
    var_10 = var_7 + 1;
    if (var_2 == 0) goto LAB_00095d68;
LAB_00095da4:
    var_18 = 0;
    var_9 = var_7;
    if (var_5 == 0) {
      var_4 = (term->curs).var_4;
      var_3 = (term->curs).var_7;
      if (term->cols == var_4) goto LAB_00095dc0;
      goto LAB_00095d88;
    }
    var_2 = 0;
  }
  from.var_7 = var_2;
  from.var_4 = in_stack_ffffffac;
  to.var_7 = (int)var_15;
  to.var_4 = in_stack_ffffffb4;
  term_00 = term;
  var_8(term,from,to);
  if (var_9 == 0) {
    if (term->rows == var_10) {
      var_11(term_00);
    }
    if ((var_2 != 0) || (!bVar3)) goto LAB_00095e48;
    bVar4 = bVar3;
    if (term->erase_to_scrollback != 0) {
      if (term->rows == var_10) {
        var_13 = var_12(term,term->screen);
        var_10 = var_13 + 1;
      }
      if (0 < (int)var_10) {
        var_14(term,0,var_10 - 1,var_10,1);
      }
      goto LAB_00095ff4;
    }
  }
  else {
LAB_00095e48:
    bVar4 = false;
  }
  var_13 = *(int *)(var_15 + -0x77d8);
  ptVar6 = var_16(term,var_7,0x99b,1);
  bVar1 = (int)var_7 < (int)var_10;
  var_17 = *(int *)(var_15 + -0x77d8);
  var_20 = *(int *)(var_15 + -0x77d8);
LAB_00095e94:
  if (bVar1) goto LAB_00095eb0;
  if (var_7 == var_10) {
    bVar2 = (int)var_18 < var_2;
    do {
      if (!bVar2) break;
LAB_00095eb0:
      do {
        var_9 = ptVar6->cols;
        if (term->cols != var_9) {
          (*(type_6 *)(var_17 + 0xb64))(term,ptVar6);
          var_9 = term->cols;
        }
        if (var_18 == var_9) {
          if (!bVar3) {
            ptVar6->lattr = ptVar6->lattr & 0xffcf;
            goto LAB_00095eec;
          }
          var_19 = term->rows;
          ptVar6->lattr = 0;
          if ((int)(var_7 + 1) < var_19) goto LAB_00095f88;
        }
        else {
          (*(type_6 *)(var_20 + 0x1070))(ptVar6,var_18,&term->erase_char);
          if (term->cols != var_18) {
            var_18 = var_18 + 1;
            goto LAB_00095e94;
          }
LAB_00095eec:
          if ((int)(var_7 + 1) < term->rows) {
LAB_00095f88:
            var_7 = var_7 + 1;
            ptVar6 = (type_3 *)(*(type_6 *)(var_13 + 0x2a9c))(term,var_7,0x9a7,1);
            var_18 = 0;
            bVar1 = (int)var_7 < (int)var_10;
            goto LAB_00095e94;
          }
        }
        var_7 = var_7 + 1;
        bVar1 = (int)var_7 < (int)var_10;
        var_18 = 0;
      } while (bVar1);
      bVar2 = 0 < var_2;
    } while (var_7 == var_10);
  }
  if (!bVar4) {
    return;
  }
LAB_00095ff4:
  if (term->alt_which != 0) {
    return;
  }
  term->tempsblines = 0;
  return;
}


(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)))) body: (compound_statement (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (true))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) alternative: (else_clause (compound_statement (labeled_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: (identifier)))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (number_literal) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) right: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (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) (identifier))))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (false))) (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: (goto_statement label: (statement_identifier))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) consequence: (goto_statement label: (statement_identifier))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier) (identifier) (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (unary_expression argument: (identifier))))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (number_literal) (binary_expression left: (identifier) right: (number_literal)) (identifier) (number_literal)))))) (goto_statement label: (statement_identifier))))) alternative: (else_clause (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (false))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (number_literal) (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (identifier)) consequence: (goto_statement label: (statement_identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (identifier)))) (do_statement body: (compound_statement (if_statement condition: (parenthesized_expression (unary_expression argument: (identifier))) consequence: (break_statement)) (labeled_statement label: (statement_identifier) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) consequence: (compound_statement (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (unary_expression argument: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal)))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))) right: (identifier))) consequence: (goto_statement label: (statement_identifier)))) alternative: (else_clause (compound_statement (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier) (identifier) (binary_expression left: (identifier) right: (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (goto_statement label: (statement_identifier)))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) consequence: (compound_statement (labeled_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: (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: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))) (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: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) condition: (parenthesized_expression (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (number_literal) right: (identifier))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))))) (if_statement condition: (parenthesized_expression (unary_expression argument: (identifier))) consequence: (compound_statement (return_statement))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) consequence: (compound_statement (return_statement)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (return_statement))))

void MASKED(int param_1,int param_2,int param_3,int param_4)

{
  bool bVar1;
  bool bVar2;
  bool bVar3;
  bool bVar4;
  ushort *puVar5;
  code *pcVar6;
  code *pcVar7;
  int iVar8;
  uint uVar9;
  uint uVar10;
  uint uVar11;
  uint uVar12;
  uint uVar13;
  code *pcVar14;
  uint uVar15;
  
  if (param_2 == 0) {
    uVar13 = *(uint *)(param_1 + 0x128);
    bVar3 = true;
    uVar10 = 0;
    if (param_3 != 0) goto LAB_00095da4;
LAB_00095d68:
    uVar9 = *(uint *)(param_1 + 0x70);
    uVar11 = *(uint *)(param_1 + 0x6c);
    uVar12 = uVar11 | uVar9;
    uVar10 = uVar11;
    uVar15 = uVar9;
    if (param_4 == 0) {
      if (*(uint *)(param_1 + 300) == uVar9) {
LAB_00095dc0:
        uVar13 = uVar11 + 1;
        param_3 = 0;
      }
      else {
LAB_00095d88:
        param_3 = uVar9 + 1;
        uVar13 = uVar11;
      }
    }
    if ((0 < (int)uVar9) && ((int)uVar9 <= *(int *)(param_1 + 300))) {
      FUN_00092d1c(param_1,uVar9,uVar11,uVar13);
    }
  }
  else {
    uVar10 = *(uint *)(param_1 + 0x6c);
    bVar3 = false;
    uVar13 = uVar10 + 1;
    if (param_3 == 0) goto LAB_00095d68;
LAB_00095da4:
    uVar15 = 0;
    uVar12 = uVar10;
    if (param_4 == 0) {
      uVar9 = *(uint *)(param_1 + 0x70);
      uVar11 = *(uint *)(param_1 + 0x6c);
      if (*(uint *)(param_1 + 300) == uVar9) goto LAB_00095dc0;
      goto LAB_00095d88;
    }
    param_3 = 0;
  }
  FUN_00090a2c(param_1,uVar10,uVar15,uVar13,param_3);
  if (uVar12 == 0) {
    if (*(uint *)(param_1 + 0x128) == uVar13) {
      term_invalidate();
    }
    if ((param_3 != 0) || (!bVar3)) goto LAB_00095e48;
    bVar4 = bVar3;
    if (*(int *)(param_1 + 0x1118) != 0) {
      if (*(uint *)(param_1 + 0x128) == uVar13) {
        iVar8 = FUN_00090860(param_1,*(undefined4 *)(param_1 + 8));
        uVar13 = iVar8 + 1;
      }
      if (0 < (int)uVar13) {
        FUN_0009228c(param_1,0,uVar13 - 1,uVar13,1);
      }
      goto LAB_00095ff4;
    }
  }
  else {
LAB_00095e48:
    bVar4 = false;
  }
  pcVar14 = (code *)(PTR_LAB_00111ad8 + 0x2a9c);
  puVar5 = (ushort *)FUN_00092a9c(param_1,uVar10,0x99b,1);
  bVar1 = (int)uVar10 < (int)uVar13;
  pcVar6 = (code *)(PTR_LAB_00111ad8 + 0xb64);
  pcVar7 = (code *)(PTR_LAB_00111ad8 + 0x1070);
LAB_00095e94:
  if (bVar1) goto LAB_00095eb0;
  if (uVar10 == uVar13) {
    bVar2 = (int)uVar15 < param_3;
    do {
      if (!bVar2) break;
LAB_00095eb0:
      do {
        uVar12 = *(uint *)(puVar5 + 2);
        if (*(uint *)(param_1 + 300) != uVar12) {
          (*pcVar6)(param_1,puVar5);
          uVar12 = *(uint *)(param_1 + 300);
        }
        if (uVar15 == uVar12) {
          if (!bVar3) {
            *puVar5 = *puVar5 & 0xffcf;
            goto LAB_00095eec;
          }
          iVar8 = *(int *)(param_1 + 0x128);
          *puVar5 = 0;
          if ((int)(uVar10 + 1) < iVar8) goto LAB_00095f88;
        }
        else {
          (*pcVar7)(puVar5,uVar15,param_1 + 0x54);
          if (*(uint *)(param_1 + 300) != uVar15) {
            uVar15 = uVar15 + 1;
            goto LAB_00095e94;
          }
LAB_00095eec:
          if ((int)(uVar10 + 1) < *(int *)(param_1 + 0x128)) {
LAB_00095f88:
            uVar10 = uVar10 + 1;
            puVar5 = (ushort *)(*pcVar14)(param_1,uVar10,0x9a7,1);
            uVar15 = 0;
            bVar1 = (int)uVar10 < (int)uVar13;
            goto LAB_00095e94;
          }
        }
        uVar10 = uVar10 + 1;
        bVar1 = (int)uVar10 < (int)uVar13;
        uVar15 = 0;
      } while (bVar1);
      bVar2 = 0 < param_3;
    } while (uVar10 == uVar13);
  }
  if (!bVar4) {
    return;
  }
LAB_00095ff4:
  if (*(int *)(param_1 + 0x1a4) != 0) {
    return;
  }
  *(undefined4 *)(param_1 + 0x14) = 0;
  return;
}

