
reg_errcode_t
parse_bracket_element
          (bracket_elem_t *elem,re_string_t *regexp,re_token_t *token,int token_len,re_dfa_t *dfa,
          reg_syntax_t syntax,_Bool accept_hyphen)

{
  byte bVar1;
  char cVar2;
  uint uVar3;
  int iVar4;
  reg_errcode_t rVar5;
  wint_t wVar6;
  code *pcVar7;
  byte *pbVar8;
  int iVar9;
  re_string_t *prVar10;
  re_string_t *prVar11;
  byte bVar12;
  re_token_t token2;
  
  uVar3 = *(uint *)PTR___stack_chk_guard_000b7c68;
  prVar11 = (re_string_t *)regexp->cur_idx;
  prVar10 = prVar11;
  iVar4 = re_string_char_size_at(regexp,(Idx)prVar11);
  iVar9 = (int)&prVar11->raw_mbs + token_len;
  if (iVar4 < 2) {
    regexp->cur_idx = iVar9;
    bVar1 = token->field_0x4;
    if (((bVar1 & 0xfb) == 0x1a) || (bVar1 == 0x1c)) {
      iVar4 = 0;
      if (iVar9 < regexp->stop) {
        bVar1 = (token->opr).c;
        pcVar7 = (code *)(PTR_LAB_000b7a18 + 0x75b0);
        do {
          if (token->field_0x4 == '\x1e') {
            if (regexp->mbs_allocated == '\0') {
              iVar9 = regexp->cur_idx;
              regexp->cur_idx = iVar9 + 1;
              bVar12 = regexp->mbs[iVar9];
            }
            else if (regexp->offsets_needed == '\0') {
              iVar9 = regexp->cur_idx;
              prVar10 = (re_string_t *)(iVar9 + 1);
              regexp->cur_idx = (Idx)prVar10;
              bVar12 = regexp->raw_mbs[iVar9 + regexp->raw_mbs_idx];
            }
            else {
              prVar11 = (re_string_t *)regexp->cur_idx;
              if ((prVar11 == (re_string_t *)regexp->valid_len) ||
                 (regexp->wcs[(int)prVar11] != 0xffffffff)) {
                bVar12 = regexp->raw_mbs[regexp->raw_mbs_idx + regexp->offsets[(int)prVar11]];
                prVar10 = prVar11;
                if ((bVar12 & 0x80) == 0) {
                  iVar9 = (*pcVar7)(regexp);
                  regexp->cur_idx = (int)&prVar11->raw_mbs + iVar9;
                }
                else {
                  regexp->cur_idx = (Idx)((int)&prVar11->raw_mbs + 1);
                  bVar12 = regexp->mbs[(int)prVar11];
                }
              }
              else {
                regexp->cur_idx = (Idx)((int)&prVar11->raw_mbs + 1);
                bVar12 = regexp->mbs[(int)prVar11];
              }
            }
          }
          else {
            iVar9 = regexp->cur_idx;
            regexp->cur_idx = iVar9 + 1;
            bVar12 = regexp->mbs[iVar9];
          }
          iVar9 = regexp->cur_idx;
          rVar5 = _REG_EBRACK;
          if (regexp->stop <= iVar9) goto LAB_00077d90;
          if ((bVar1 == bVar12) && (regexp->mbs[iVar9] == ']')) {
            regexp->cur_idx = iVar9 + 1;
            (elem->opr).name[iVar4] = '\0';
            cVar2 = token->field_0x4;
            if (cVar2 == '\x1c') {
              elem->type = EQUIV_CLASS;
              rVar5 = _REG_NOERROR;
            }
            else if (cVar2 == '\x1e') {
              elem->type = CHAR_CLASS;
              rVar5 = _REG_NOERROR;
            }
            else if (cVar2 == '\x1a') {
              elem->type = COLL_SYM;
              rVar5 = _REG_NOERROR;
            }
            else {
              rVar5 = _REG_NOERROR;
            }
            goto LAB_00077d90;
          }
          pbVar8 = (elem->opr).name + iVar4;
          iVar4 = iVar4 + 1;
          *pbVar8 = bVar12;
        } while (iVar4 != 0x20);
        rVar5 = _REG_EBRACK;
      }
      else {
        rVar5 = _REG_EBRACK;
      }
    }
    else {
      if ((bVar1 == 0x16) && (!accept_hyphen)) {
        peek_token_bracket(&token2,regexp,syntax);
        prVar10 = regexp;
        if (token2._4_1_ != '\x15') {
          rVar5 = _REG_ERANGE;
          goto LAB_00077d90;
        }
      }
      elem->type = SB_CHAR;
      (elem->opr).ch = (token->opr).c;
      rVar5 = _REG_NOERROR;
    }
  }
  else {
    elem->type = MB_CHAR;
    prVar10 = (re_string_t *)regexp->cur_idx;
    wVar6 = re_string_wchar_at(regexp,(Idx)prVar10);
    (elem->opr).wch = wVar6;
    regexp->cur_idx = regexp->cur_idx + iVar4;
    rVar5 = _REG_NOERROR;
  }
LAB_00077d90:
  if (uVar3 == *(uint *)PTR___stack_chk_guard_000b7c68) {
    return rVar5;
  }
  (*(code *)PTR___stack_chk_fail_000b7bfc)();
  if ((*(char *)&prVar10->raw_mbs_idx == '\x11') && (uVar3 == (prVar10->cur_state).__value.__wch)) {
    prVar10->raw_mbs_idx = prVar10->raw_mbs_idx & 0xffffefffU | 0x1000;
  }
  return _REG_NOERROR;
}



undefined4
FUN_00077c90(undefined4 *param_1,int *param_2,byte *param_3,int param_4,undefined4 param_5,
            undefined4 param_6,char param_7)

{
  byte bVar1;
  int iVar2;
  undefined4 uVar3;
  code *pcVar4;
  byte *pbVar5;
  int iVar6;
  int *piVar7;
  int *piVar8;
  byte bVar9;
  undefined1 auStack_34 [4];
  char local_30;
  int local_2c;
  
  local_2c = *(int *)PTR___stack_chk_guard_000b7c68;
  piVar8 = (int *)param_2[10];
  piVar7 = piVar8;
  iVar2 = FUN_000775b0(param_2);
  param_4 = (int)piVar8 + param_4;
  if (iVar2 < 2) {
    param_2[10] = param_4;
    bVar1 = param_3[4];
    if (((bVar1 & 0xfb) == 0x1a) || (bVar1 == 0x1c)) {
      iVar2 = 0;
      if (param_4 < param_2[0xe]) {
        bVar1 = *param_3;
        pcVar4 = (code *)(PTR_LAB_000b7a18 + 0x75b0);
        do {
          if (param_3[4] == 0x1e) {
            if (*(char *)((int)param_2 + 0x4b) == '\0') {
              iVar6 = param_2[10];
              param_2[10] = iVar6 + 1;
              bVar9 = *(byte *)(param_2[1] + iVar6);
            }
            else if (*(char *)(param_2 + 0x13) == '\0') {
              iVar6 = param_2[10];
              piVar7 = (int *)(iVar6 + 1);
              param_2[10] = (int)piVar7;
              bVar9 = *(byte *)(*param_2 + param_2[6] + iVar6);
            }
            else {
              piVar8 = (int *)param_2[10];
              if ((piVar8 == (int *)param_2[7]) || (*(int *)(param_2[2] + (int)piVar8 * 4) != -1)) {
                bVar9 = *(byte *)(*param_2 + *(int *)(param_2[3] + (int)piVar8 * 4) + param_2[6]);
                piVar7 = piVar8;
                if ((bVar9 & 0x80) == 0) {
                  iVar6 = (*pcVar4)(param_2);
                  param_2[10] = (int)piVar8 + iVar6;
                }
                else {
                  param_2[10] = (int)piVar8 + 1;
                  bVar9 = *(byte *)(param_2[1] + (int)piVar8);
                }
              }
              else {
                param_2[10] = (int)piVar8 + 1;
                bVar9 = *(byte *)(param_2[1] + (int)piVar8);
              }
            }
          }
          else {
            iVar6 = param_2[10];
            param_2[10] = iVar6 + 1;
            bVar9 = *(byte *)(param_2[1] + iVar6);
          }
          iVar6 = param_2[10];
          uVar3 = 7;
          if (param_2[0xe] <= iVar6) goto LAB_00077d90;
          if ((bVar1 == bVar9) && (*(char *)(param_2[1] + iVar6) == ']')) {
            param_2[10] = iVar6 + 1;
            *(undefined1 *)(param_1[1] + iVar2) = 0;
            bVar1 = param_3[4];
            if (bVar1 == 0x1c) {
              *param_1 = 2;
              uVar3 = 0;
            }
            else if (bVar1 == 0x1e) {
              *param_1 = 4;
              uVar3 = 0;
            }
            else if (bVar1 == 0x1a) {
              *param_1 = 3;
              uVar3 = 0;
            }
            else {
              uVar3 = 0;
            }
            goto LAB_00077d90;
          }
          pbVar5 = (byte *)(param_1[1] + iVar2);
          iVar2 = iVar2 + 1;
          *pbVar5 = bVar9;
        } while (iVar2 != 0x20);
        uVar3 = 7;
      }
      else {
        uVar3 = 7;
      }
    }
    else {
      if ((bVar1 == 0x16) && (param_7 == '\0')) {
        FUN_00077ac8(auStack_34,param_2,param_6);
        piVar7 = param_2;
        if (local_30 != '\x15') {
          uVar3 = 0xb;
          goto LAB_00077d90;
        }
      }
      *param_1 = 0;
      *(byte *)(param_1 + 1) = *param_3;
      uVar3 = 0;
    }
  }
  else {
    *param_1 = 1;
    piVar7 = (int *)param_2[10];
    uVar3 = FUN_00077634(param_2);
    param_1[1] = uVar3;
    param_2[10] = param_2[10] + iVar2;
    uVar3 = 0;
  }
LAB_00077d90:
  if (local_2c == *(int *)PTR___stack_chk_guard_000b7c68) {
    return uVar3;
  }
  (*(code *)PTR___stack_chk_fail_000b7bfc)();
  if ((*(char *)(piVar7 + 6) == '\x11') && (local_2c == piVar7[5])) {
    piVar7[6] = piVar7[6] & 0xffffefffU | 0x1000;
  }
  return 0;
}


lui gp,0x4
addiu gp,gp,0x77a0
addu gp,gp,t9
addiu sp,sp,-0x58
sw ra,0x54(sp)
sw s8,0x50(sp)
sw s7,0x4c(sp)
sw s6,0x48(sp)
sw s5,0x44(sp)
sw s4,0x40(sp)
sw s3,0x3c(sp)
sw s2,0x38(sp)
sw s1,0x34(sp)
sw s0,0x30(sp)
sw gp,0x10(sp)
or s3,a0,zero
or s0,a1,zero
or s4,a2,zero
or s6,a3,zero
lbu s5,0x73(sp)
lw v0,-0x77c8(gp)
lw v0,0x0(v0)
sw v0,0x2c(sp)
lw s1,0x28(a1)
or a1,s1,zero
or a0,s0,zero
lw t9,-0x7a18(gp)
addiu t9,t9,0x75b0
bal 0x000775b0
_nop
lw gp,0x10(sp)
or s2,v0,zero
slti v0,v0,0x2
beq v0,zero,0x00077d58
_addu s1,s1,s6
sw s1,0x28(s0)
lbu v0,0x4(s4)
andi a0,v0,0xfb
li v1,0x1a
beq a0,v1,0x00077dd0
_li v1,0x1c
beq v0,v1,0x00077dd0
_li v1,0x16
beq v0,v1,0x00077fdc
_nop
sw zero,0x0(s3)
lbu v0,0x0(s4)
sb v0,0x4(s3)
b 0x00077d90
_or v0,zero,zero
li v0,0x1
sw v0,0x0(s3)
lw a1,0x28(s0)
or a0,s0,zero
lw t9,-0x7a18(gp)
addiu t9,t9,0x7634
bal 0x00077634
_nop
lw gp,0x10(sp)
sw v0,0x4(s3)
lw v0,0x28(s0)
addu s2,v0,s2
sw s2,0x28(s0)
or v0,zero,zero
lw a0,0x2c(sp)
lw v1,-0x77c8(gp)
lw v1,0x0(v1)
bne a0,v1,0x00078028
_lw ra,0x54(sp)
lw s8,0x50(sp)
lw s7,0x4c(sp)
lw s6,0x48(sp)
lw s5,0x44(sp)
lw s4,0x40(sp)
lw s3,0x3c(sp)
lw s2,0x38(sp)
lw s1,0x34(sp)
lw s0,0x30(sp)
jr ra
_addiu sp,sp,0x58
lw v0,0x38(s0)
slt s1,s1,v0
beq s1,zero,0x00078018
_or s1,zero,zero
lbu s7,0x0(s4)
li s6,0x1e
lw v0,-0x7a18(gp)
addiu v0,v0,0x75b0
sw v0,0x18(sp)
li s8,0x5d
b 0x00077f20
_li s5,0x20
lbu v0,0x4b(s0)
bne v0,zero,0x00077e28
_nop
lw v0,0x4(s0)
lw v1,0x28(s0)
addiu a0,v1,0x1
sw a0,0x28(s0)
addu v0,v0,v1
b 0x00077f44
_lbu s2,0x0(v0)
lbu v0,0x4c(s0)
beq v0,zero,0x00077ee8
_nop
lw v1,0x28(s0)
sw v1,0x1c(sp)
lw v0,0x1c(s0)
beq v1,v0,0x00077e60
_sll v1,v1,0x2
lw v0,0x8(s0)
addu v0,v0,v1
lw v0,0x0(v0)
li v1,-0x1
beq v0,v1,0x00077eb0
_lw a0,0x1c(sp)
lw v1,0xc(s0)
lw a1,0x1c(sp)
sll v0,a1,0x2
addu v1,v1,v0
lw v0,0x0(s0)
lw a0,0x0(v1)
lw v1,0x18(s0)
addu v0,v0,a0
addu v0,v0,v1
lbu s2,0x0(v0)
li v0,-0x80
and v0,s2,v0
beq v0,zero,0x00077ec8
_or a0,s0,zero
lw v0,0x4(s0)
addiu v1,a1,0x1
sw v1,0x28(s0)
addu v0,v0,a1
b 0x00077f44
_lbu s2,0x0(v0)
lw v0,0x4(s0)
addiu v1,a0,0x1
sw v1,0x28(s0)
addu v0,v0,a0
b 0x00077f44
_lbu s2,0x0(v0)
lw t9,0x18(sp)
jalr t9
_nop
lw gp,0x10(sp)
lw v1,0x1c(sp)
addu v0,v1,v0
b 0x00077f44
_sw v0,0x28(s0)
lw v0,0x0(s0)
lw a0,0x18(s0)
lw v1,0x28(s0)
addiu a1,v1,0x1
sw a1,0x28(s0)
addu v0,v0,a0
addu v0,v0,v1
b 0x00077f44
_lbu s2,0x0(v0)
lw v0,0x4(s3)
addu v0,v0,s1
addiu s1,s1,0x1
beq s1,s5,0x00078020
_sb s2,0x0(v0)
lbu v0,0x4(s4)
beq v0,s6,0x00077e00
_nop
lw v0,0x4(s0)
lw v1,0x28(s0)
addiu a0,v1,0x1
sw a0,0x28(s0)
addu v0,v0,v1
lbu s2,0x0(v0)
lw v1,0x28(s0)
lw v0,0x38(s0)
slt v0,v1,v0
beq v0,zero,0x00077d90
_li v0,0x7
bne s7,s2,0x00077f0c
_nop
lw v0,0x4(s0)
addu v0,v0,v1
lbu v0,0x0(v0)
bne v0,s8,0x00077f0c
_addiu v1,v1,0x1
sw v1,0x28(s0)
lw v0,0x4(s3)
addu s1,v0,s1
sb zero,0x0(s1)
lbu v0,0x4(s4)
li v1,0x1c
beq v0,v1,0x00077fbc
_li v1,0x1e
beq v0,v1,0x00077fcc
_li v1,0x1a
beq v0,v1,0x00077fac
_nop
b 0x00077d90
_or v0,zero,zero
li v0,0x3
sw v0,0x0(s3)
b 0x00077d90
_or v0,zero,zero
li v0,0x2
sw v0,0x0(s3)
b 0x00077d90
_or v0,zero,zero
li v0,0x4
sw v0,0x0(s3)
b 0x00077d90
_or v0,zero,zero
bne s5,zero,0x00077d44
_lw a2,0x6c(sp)
or a1,s0,zero
addiu a0,sp,0x24
lw t9,-0x7a18(gp)
addiu t9,t9,0x7ac8
bal 0x00077ac8
_nop
lw gp,0x10(sp)
lbu v1,0x28(sp)
li v0,0x15
beq v1,v0,0x00077d44
_nop
b 0x00077d90
_li v0,0xb
b 0x00077d90
_li v0,0x7
b 0x00077d90
_li v0,0x7
lw t9,-0x7834(gp)
jalr t9
_nop
lbu v1,0x18(a1)
li v0,0x11
beq v1,v0,0x0007804c
_nop
jr ra
_or v0,zero,zero
lw v0,0x14(a1)
bne a0,v0,0x00078044
_li v1,0x1
lw v0,0x18(a1)
ins v0,v1,0xc,0x1
b 0x00078044
_sw v0,0x18(a1)
(translation_unit "undefined4\nFUN_00077c90(undefined4 *param_1,int *param_2,byte *param_3,int param_4,undefined4 param_5,\n            undefined4 param_6,char param_7)\n\n{\n  byte bVar1;\n  int iVar2;\n  undefined4 uVar3;\n  code *pcVar4;\n  byte *pbVar5;\n  int iVar6;\n  int *piVar7;\n  int *piVar8;\n  byte bVar9;\n  undefined1 auStack_34 [4];\n  char local_30;\n  int local_2c;\n  \n  local_2c = *(int *)PTR___stack_chk_guard_000b7c68;\n  piVar8 = (int *)param_2[10];\n  piVar7 = piVar8;\n  iVar2 = FUN_000775b0(param_2);\n  param_4 = (int)piVar8 + param_4;\n  if (iVar2 < 2) {\n    param_2[10] = param_4;\n    bVar1 = param_3[4];\n    if (((bVar1 & 0xfb) == 0x1a) || (bVar1 == 0x1c)) {\n      iVar2 = 0;\n      if (param_4 < param_2[0xe]) {\n        bVar1 = *param_3;\n        pcVar4 = (code *)(PTR_LAB_000b7a18 + 0x75b0);\n        do {\n          if (param_3[4] == 0x1e) {\n            if (*(char *)((int)param_2 + 0x4b) == '\0') {\n              iVar6 = param_2[10];\n              param_2[10] = iVar6 + 1;\n              bVar9 = *(byte *)(param_2[1] + iVar6);\n            }\n            else if (*(char *)(param_2 + 0x13) == '\0') {\n              iVar6 = param_2[10];\n              piVar7 = (int *)(iVar6 + 1);\n              param_2[10] = (int)piVar7;\n              bVar9 = *(byte *)(*param_2 + param_2[6] + iVar6);\n            }\n            else {\n              piVar8 = (int *)param_2[10];\n              if ((piVar8 == (int *)param_2[7]) || (*(int *)(param_2[2] + (int)piVar8 * 4) != -1)) {\n                bVar9 = *(byte *)(*param_2 + *(int *)(param_2[3] + (int)piVar8 * 4) + param_2[6]);\n                piVar7 = piVar8;\n                if ((bVar9 & 0x80) == 0) {\n                  iVar6 = (*pcVar4)(param_2);\n                  param_2[10] = (int)piVar8 + iVar6;\n                }\n                else {\n                  param_2[10] = (int)piVar8 + 1;\n                  bVar9 = *(byte *)(param_2[1] + (int)piVar8);\n                }\n              }\n              else {\n                param_2[10] = (int)piVar8 + 1;\n                bVar9 = *(byte *)(param_2[1] + (int)piVar8);\n              }\n            }\n          }\n          else {\n            iVar6 = param_2[10];\n            param_2[10] = iVar6 + 1;\n            bVar9 = *(byte *)(param_2[1] + iVar6);\n          }\n          iVar6 = param_2[10];\n          uVar3 = 7;\n          if (param_2[0xe] <= iVar6) goto LAB_00077d90;\n          if ((bVar1 == bVar9) && (*(char *)(param_2[1] + iVar6) == ']')) {\n            param_2[10] = iVar6 + 1;\n            *(undefined1 *)(param_1[1] + iVar2) = 0;\n            bVar1 = param_3[4];\n            if (bVar1 == 0x1c) {\n              *param_1 = 2;\n              uVar3 = 0;\n            }\n            else if (bVar1 == 0x1e) {\n              *param_1 = 4;\n              uVar3 = 0;\n            }\n            else if (bVar1 == 0x1a) {\n              *param_1 = 3;\n              uVar3 = 0;\n            }\n            else {\n              uVar3 = 0;\n            }\n            goto LAB_00077d90;\n          }\n          pbVar5 = (byte *)(param_1[1] + iVar2);\n          iVar2 = iVar2 + 1;\n          *pbVar5 = bVar9;\n        } while (iVar2 != 0x20);\n        uVar3 = 7;\n      }\n      else {\n        uVar3 = 7;\n      }\n    }\n    else {\n      if ((bVar1 == 0x16) && (param_7 == '\0')) {\n        FUN_00077ac8(auStack_34,param_2,param_6);\n        piVar7 = param_2;\n        if (local_30 != '\x15') {\n          uVar3 = 0xb;\n          goto LAB_00077d90;\n        }\n      }\n      *param_1 = 0;\n      *(byte *)(param_1 + 1) = *param_3;\n      uVar3 = 0;\n    }\n  }\n  else {\n    *param_1 = 1;\n    piVar7 = (int *)param_2[10];\n    uVar3 = FUN_00077634(param_2);\n    param_1[1] = uVar3;\n    param_2[10] = param_2[10] + iVar2;\n    uVar3 = 0;\n  }\nLAB_00077d90:\n  if (local_2c == *(int *)PTR___stack_chk_guard_000b7c68) {\n    return uVar3;\n  }\n  (*(code *)PTR___stack_chk_fail_000b7bfc)();\n  if ((*(char *)(piVar7 + 6) == '\x11') && (local_2c == piVar7[5])) {\n    piVar7[6] = piVar7[6] & 0xffffefffU | 0x1000;\n  }\n  return 0;\n}\n\n" (function_definition "undefined4\nFUN_00077c90(undefined4 *param_1,int *param_2,byte *param_3,int param_4,undefined4 param_5,\n            undefined4 param_6,char param_7)\n\n{\n  byte bVar1;\n  int iVar2;\n  undefined4 uVar3;\n  code *pcVar4;\n  byte *pbVar5;\n  int iVar6;\n  int *piVar7;\n  int *piVar8;\n  byte bVar9;\n  undefined1 auStack_34 [4];\n  char local_30;\n  int local_2c;\n  \n  local_2c = *(int *)PTR___stack_chk_guard_000b7c68;\n  piVar8 = (int *)param_2[10];\n  piVar7 = piVar8;\n  iVar2 = FUN_000775b0(param_2);\n  param_4 = (int)piVar8 + param_4;\n  if (iVar2 < 2) {\n    param_2[10] = param_4;\n    bVar1 = param_3[4];\n    if (((bVar1 & 0xfb) == 0x1a) || (bVar1 == 0x1c)) {\n      iVar2 = 0;\n      if (param_4 < param_2[0xe]) {\n        bVar1 = *param_3;\n        pcVar4 = (code *)(PTR_LAB_000b7a18 + 0x75b0);\n        do {\n          if (param_3[4] == 0x1e) {\n            if (*(char *)((int)param_2 + 0x4b) == '\0') {\n              iVar6 = param_2[10];\n              param_2[10] = iVar6 + 1;\n              bVar9 = *(byte *)(param_2[1] + iVar6);\n            }\n            else if (*(char *)(param_2 + 0x13) == '\0') {\n              iVar6 = param_2[10];\n              piVar7 = (int *)(iVar6 + 1);\n              param_2[10] = (int)piVar7;\n              bVar9 = *(byte *)(*param_2 + param_2[6] + iVar6);\n            }\n            else {\n              piVar8 = (int *)param_2[10];\n              if ((piVar8 == (int *)param_2[7]) || (*(int *)(param_2[2] + (int)piVar8 * 4) != -1)) {\n                bVar9 = *(byte *)(*param_2 + *(int *)(param_2[3] + (int)piVar8 * 4) + param_2[6]);\n                piVar7 = piVar8;\n                if ((bVar9 & 0x80) == 0) {\n                  iVar6 = (*pcVar4)(param_2);\n                  param_2[10] = (int)piVar8 + iVar6;\n                }\n                else {\n                  param_2[10] = (int)piVar8 + 1;\n                  bVar9 = *(byte *)(param_2[1] + (int)piVar8);\n                }\n              }\n              else {\n                param_2[10] = (int)piVar8 + 1;\n                bVar9 = *(byte *)(param_2[1] + (int)piVar8);\n              }\n            }\n          }\n          else {\n            iVar6 = param_2[10];\n            param_2[10] = iVar6 + 1;\n            bVar9 = *(byte *)(param_2[1] + iVar6);\n          }\n          iVar6 = param_2[10];\n          uVar3 = 7;\n          if (param_2[0xe] <= iVar6) goto LAB_00077d90;\n          if ((bVar1 == bVar9) && (*(char *)(param_2[1] + iVar6) == ']')) {\n            param_2[10] = iVar6 + 1;\n            *(undefined1 *)(param_1[1] + iVar2) = 0;\n            bVar1 = param_3[4];\n            if (bVar1 == 0x1c) {\n              *param_1 = 2;\n              uVar3 = 0;\n            }\n            else if (bVar1 == 0x1e) {\n              *param_1 = 4;\n              uVar3 = 0;\n            }\n            else if (bVar1 == 0x1a) {\n              *param_1 = 3;\n              uVar3 = 0;\n            }\n            else {\n              uVar3 = 0;\n            }\n            goto LAB_00077d90;\n          }\n          pbVar5 = (byte *)(param_1[1] + iVar2);\n          iVar2 = iVar2 + 1;\n          *pbVar5 = bVar9;\n        } while (iVar2 != 0x20);\n        uVar3 = 7;\n      }\n      else {\n        uVar3 = 7;\n      }\n    }\n    else {\n      if ((bVar1 == 0x16) && (param_7 == '\0')) {\n        FUN_00077ac8(auStack_34,param_2,param_6);\n        piVar7 = param_2;\n        if (local_30 != '\x15') {\n          uVar3 = 0xb;\n          goto LAB_00077d90;\n        }\n      }\n      *param_1 = 0;\n      *(byte *)(param_1 + 1) = *param_3;\n      uVar3 = 0;\n    }\n  }\n  else {\n    *param_1 = 1;\n    piVar7 = (int *)param_2[10];\n    uVar3 = FUN_00077634(param_2);\n    param_1[1] = uVar3;\n    param_2[10] = param_2[10] + iVar2;\n    uVar3 = 0;\n  }\nLAB_00077d90:\n  if (local_2c == *(int *)PTR___stack_chk_guard_000b7c68) {\n    return uVar3;\n  }\n  (*(code *)PTR___stack_chk_fail_000b7bfc)();\n  if ((*(char *)(piVar7 + 6) == '\x11') && (local_2c == piVar7[5])) {\n    piVar7[6] = piVar7[6] & 0xffffefffU | 0x1000;\n  }\n  return 0;\n}" type_identifier (function_declarator "FUN_00077c90(undefined4 *param_1,int *param_2,byte *param_3,int param_4,undefined4 param_5,\n            undefined4 param_6,char param_7)" identifier (parameter_list "(undefined4 *param_1,int *param_2,byte *param_3,int param_4,undefined4 param_5,\n            undefined4 param_6,char param_7)" ( (parameter_declaration "undefined4 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "byte *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) , (parameter_declaration "int param_4" primitive_type identifier) , (parameter_declaration "undefined4 param_5" type_identifier identifier) , (parameter_declaration "undefined4 param_6" type_identifier identifier) , (parameter_declaration "char param_7" primitive_type identifier) ))) (compound_statement "{\n  byte bVar1;\n  int iVar2;\n  undefined4 uVar3;\n  code *pcVar4;\n  byte *pbVar5;\n  int iVar6;\n  int *piVar7;\n  int *piVar8;\n  byte bVar9;\n  undefined1 auStack_34 [4];\n  char local_30;\n  int local_2c;\n  \n  local_2c = *(int *)PTR___stack_chk_guard_000b7c68;\n  piVar8 = (int *)param_2[10];\n  piVar7 = piVar8;\n  iVar2 = FUN_000775b0(param_2);\n  param_4 = (int)piVar8 + param_4;\n  if (iVar2 < 2) {\n    param_2[10] = param_4;\n    bVar1 = param_3[4];\n    if (((bVar1 & 0xfb) == 0x1a) || (bVar1 == 0x1c)) {\n      iVar2 = 0;\n      if (param_4 < param_2[0xe]) {\n        bVar1 = *param_3;\n        pcVar4 = (code *)(PTR_LAB_000b7a18 + 0x75b0);\n        do {\n          if (param_3[4] == 0x1e) {\n            if (*(char *)((int)param_2 + 0x4b) == '\0') {\n              iVar6 = param_2[10];\n              param_2[10] = iVar6 + 1;\n              bVar9 = *(byte *)(param_2[1] + iVar6);\n            }\n            else if (*(char *)(param_2 + 0x13) == '\0') {\n              iVar6 = param_2[10];\n              piVar7 = (int *)(iVar6 + 1);\n              param_2[10] = (int)piVar7;\n              bVar9 = *(byte *)(*param_2 + param_2[6] + iVar6);\n            }\n            else {\n              piVar8 = (int *)param_2[10];\n              if ((piVar8 == (int *)param_2[7]) || (*(int *)(param_2[2] + (int)piVar8 * 4) != -1)) {\n                bVar9 = *(byte *)(*param_2 + *(int *)(param_2[3] + (int)piVar8 * 4) + param_2[6]);\n                piVar7 = piVar8;\n                if ((bVar9 & 0x80) == 0) {\n                  iVar6 = (*pcVar4)(param_2);\n                  param_2[10] = (int)piVar8 + iVar6;\n                }\n                else {\n                  param_2[10] = (int)piVar8 + 1;\n                  bVar9 = *(byte *)(param_2[1] + (int)piVar8);\n                }\n              }\n              else {\n                param_2[10] = (int)piVar8 + 1;\n                bVar9 = *(byte *)(param_2[1] + (int)piVar8);\n              }\n            }\n          }\n          else {\n            iVar6 = param_2[10];\n            param_2[10] = iVar6 + 1;\n            bVar9 = *(byte *)(param_2[1] + iVar6);\n          }\n          iVar6 = param_2[10];\n          uVar3 = 7;\n          if (param_2[0xe] <= iVar6) goto LAB_00077d90;\n          if ((bVar1 == bVar9) && (*(char *)(param_2[1] + iVar6) == ']')) {\n            param_2[10] = iVar6 + 1;\n            *(undefined1 *)(param_1[1] + iVar2) = 0;\n            bVar1 = param_3[4];\n            if (bVar1 == 0x1c) {\n              *param_1 = 2;\n              uVar3 = 0;\n            }\n            else if (bVar1 == 0x1e) {\n              *param_1 = 4;\n              uVar3 = 0;\n            }\n            else if (bVar1 == 0x1a) {\n              *param_1 = 3;\n              uVar3 = 0;\n            }\n            else {\n              uVar3 = 0;\n            }\n            goto LAB_00077d90;\n          }\n          pbVar5 = (byte *)(param_1[1] + iVar2);\n          iVar2 = iVar2 + 1;\n          *pbVar5 = bVar9;\n        } while (iVar2 != 0x20);\n        uVar3 = 7;\n      }\n      else {\n        uVar3 = 7;\n      }\n    }\n    else {\n      if ((bVar1 == 0x16) && (param_7 == '\0')) {\n        FUN_00077ac8(auStack_34,param_2,param_6);\n        piVar7 = param_2;\n        if (local_30 != '\x15') {\n          uVar3 = 0xb;\n          goto LAB_00077d90;\n        }\n      }\n      *param_1 = 0;\n      *(byte *)(param_1 + 1) = *param_3;\n      uVar3 = 0;\n    }\n  }\n  else {\n    *param_1 = 1;\n    piVar7 = (int *)param_2[10];\n    uVar3 = FUN_00077634(param_2);\n    param_1[1] = uVar3;\n    param_2[10] = param_2[10] + iVar2;\n    uVar3 = 0;\n  }\nLAB_00077d90:\n  if (local_2c == *(int *)PTR___stack_chk_guard_000b7c68) {\n    return uVar3;\n  }\n  (*(code *)PTR___stack_chk_fail_000b7bfc)();\n  if ((*(char *)(piVar7 + 6) == '\x11') && (local_2c == piVar7[5])) {\n    piVar7[6] = piVar7[6] & 0xffffefffU | 0x1000;\n  }\n  return 0;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "undefined4 uVar3;" type_identifier identifier ;) (declaration "code *pcVar4;" type_identifier (pointer_declarator "*pcVar4" * identifier) ;) (declaration "byte *pbVar5;" type_identifier (pointer_declarator "*pbVar5" * identifier) ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "int *piVar7;" primitive_type (pointer_declarator "*piVar7" * identifier) ;) (declaration "int *piVar8;" primitive_type (pointer_declarator "*piVar8" * identifier) ;) (declaration "byte bVar9;" type_identifier identifier ;) (declaration "undefined1 auStack_34 [4];" type_identifier (array_declarator "auStack_34 [4]" identifier [ number_literal ]) ;) (declaration "char local_30;" primitive_type identifier ;) (declaration "int local_2c;" primitive_type identifier ;) (expression_statement "local_2c = *(int *)PTR___stack_chk_guard_000b7c68;" (assignment_expression "local_2c = *(int *)PTR___stack_chk_guard_000b7c68" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_000b7c68" * (cast_expression "(int *)PTR___stack_chk_guard_000b7c68" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "piVar8 = (int *)param_2[10];" (assignment_expression "piVar8 = (int *)param_2[10]" identifier = (cast_expression "(int *)param_2[10]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[10]" identifier [ number_literal ]))) ;) (expression_statement "piVar7 = piVar8;" (assignment_expression "piVar7 = piVar8" identifier = identifier) ;) (expression_statement "iVar2 = FUN_000775b0(param_2);" (assignment_expression "iVar2 = FUN_000775b0(param_2)" identifier = (call_expression "FUN_000775b0(param_2)" identifier (argument_list "(param_2)" ( identifier )))) ;) (expression_statement "param_4 = (int)piVar8 + param_4;" (assignment_expression "param_4 = (int)piVar8 + param_4" identifier = (binary_expression "(int)piVar8 + param_4" (cast_expression "(int)piVar8" ( (type_descriptor "int" primitive_type) ) identifier) + identifier)) ;) (if_statement "if (iVar2 < 2) {\n    param_2[10] = param_4;\n    bVar1 = param_3[4];\n    if (((bVar1 & 0xfb) == 0x1a) || (bVar1 == 0x1c)) {\n      iVar2 = 0;\n      if (param_4 < param_2[0xe]) {\n        bVar1 = *param_3;\n        pcVar4 = (code *)(PTR_LAB_000b7a18 + 0x75b0);\n        do {\n          if (param_3[4] == 0x1e) {\n            if (*(char *)((int)param_2 + 0x4b) == '\0') {\n              iVar6 = param_2[10];\n              param_2[10] = iVar6 + 1;\n              bVar9 = *(byte *)(param_2[1] + iVar6);\n            }\n            else if (*(char *)(param_2 + 0x13) == '\0') {\n              iVar6 = param_2[10];\n              piVar7 = (int *)(iVar6 + 1);\n              param_2[10] = (int)piVar7;\n              bVar9 = *(byte *)(*param_2 + param_2[6] + iVar6);\n            }\n            else {\n              piVar8 = (int *)param_2[10];\n              if ((piVar8 == (int *)param_2[7]) || (*(int *)(param_2[2] + (int)piVar8 * 4) != -1)) {\n                bVar9 = *(byte *)(*param_2 + *(int *)(param_2[3] + (int)piVar8 * 4) + param_2[6]);\n                piVar7 = piVar8;\n                if ((bVar9 & 0x80) == 0) {\n                  iVar6 = (*pcVar4)(param_2);\n                  param_2[10] = (int)piVar8 + iVar6;\n                }\n                else {\n                  param_2[10] = (int)piVar8 + 1;\n                  bVar9 = *(byte *)(param_2[1] + (int)piVar8);\n                }\n              }\n              else {\n                param_2[10] = (int)piVar8 + 1;\n                bVar9 = *(byte *)(param_2[1] + (int)piVar8);\n              }\n            }\n          }\n          else {\n            iVar6 = param_2[10];\n            param_2[10] = iVar6 + 1;\n            bVar9 = *(byte *)(param_2[1] + iVar6);\n          }\n          iVar6 = param_2[10];\n          uVar3 = 7;\n          if (param_2[0xe] <= iVar6) goto LAB_00077d90;\n          if ((bVar1 == bVar9) && (*(char *)(param_2[1] + iVar6) == ']')) {\n            param_2[10] = iVar6 + 1;\n            *(undefined1 *)(param_1[1] + iVar2) = 0;\n            bVar1 = param_3[4];\n            if (bVar1 == 0x1c) {\n              *param_1 = 2;\n              uVar3 = 0;\n            }\n            else if (bVar1 == 0x1e) {\n              *param_1 = 4;\n              uVar3 = 0;\n            }\n            else if (bVar1 == 0x1a) {\n              *param_1 = 3;\n              uVar3 = 0;\n            }\n            else {\n              uVar3 = 0;\n            }\n            goto LAB_00077d90;\n          }\n          pbVar5 = (byte *)(param_1[1] + iVar2);\n          iVar2 = iVar2 + 1;\n          *pbVar5 = bVar9;\n        } while (iVar2 != 0x20);\n        uVar3 = 7;\n      }\n      else {\n        uVar3 = 7;\n      }\n    }\n    else {\n      if ((bVar1 == 0x16) && (param_7 == '\0')) {\n        FUN_00077ac8(auStack_34,param_2,param_6);\n        piVar7 = param_2;\n        if (local_30 != '\x15') {\n          uVar3 = 0xb;\n          goto LAB_00077d90;\n        }\n      }\n      *param_1 = 0;\n      *(byte *)(param_1 + 1) = *param_3;\n      uVar3 = 0;\n    }\n  }\n  else {\n    *param_1 = 1;\n    piVar7 = (int *)param_2[10];\n    uVar3 = FUN_00077634(param_2);\n    param_1[1] = uVar3;\n    param_2[10] = param_2[10] + iVar2;\n    uVar3 = 0;\n  }" if (parenthesized_expression "(iVar2 < 2)" ( (binary_expression "iVar2 < 2" identifier < number_literal) )) (compound_statement "{\n    param_2[10] = param_4;\n    bVar1 = param_3[4];\n    if (((bVar1 & 0xfb) == 0x1a) || (bVar1 == 0x1c)) {\n      iVar2 = 0;\n      if (param_4 < param_2[0xe]) {\n        bVar1 = *param_3;\n        pcVar4 = (code *)(PTR_LAB_000b7a18 + 0x75b0);\n        do {\n          if (param_3[4] == 0x1e) {\n            if (*(char *)((int)param_2 + 0x4b) == '\0') {\n              iVar6 = param_2[10];\n              param_2[10] = iVar6 + 1;\n              bVar9 = *(byte *)(param_2[1] + iVar6);\n            }\n            else if (*(char *)(param_2 + 0x13) == '\0') {\n              iVar6 = param_2[10];\n              piVar7 = (int *)(iVar6 + 1);\n              param_2[10] = (int)piVar7;\n              bVar9 = *(byte *)(*param_2 + param_2[6] + iVar6);\n            }\n            else {\n              piVar8 = (int *)param_2[10];\n              if ((piVar8 == (int *)param_2[7]) || (*(int *)(param_2[2] + (int)piVar8 * 4) != -1)) {\n                bVar9 = *(byte *)(*param_2 + *(int *)(param_2[3] + (int)piVar8 * 4) + param_2[6]);\n                piVar7 = piVar8;\n                if ((bVar9 & 0x80) == 0) {\n                  iVar6 = (*pcVar4)(param_2);\n                  param_2[10] = (int)piVar8 + iVar6;\n                }\n                else {\n                  param_2[10] = (int)piVar8 + 1;\n                  bVar9 = *(byte *)(param_2[1] + (int)piVar8);\n                }\n              }\n              else {\n                param_2[10] = (int)piVar8 + 1;\n                bVar9 = *(byte *)(param_2[1] + (int)piVar8);\n              }\n            }\n          }\n          else {\n            iVar6 = param_2[10];\n            param_2[10] = iVar6 + 1;\n            bVar9 = *(byte *)(param_2[1] + iVar6);\n          }\n          iVar6 = param_2[10];\n          uVar3 = 7;\n          if (param_2[0xe] <= iVar6) goto LAB_00077d90;\n          if ((bVar1 == bVar9) && (*(char *)(param_2[1] + iVar6) == ']')) {\n            param_2[10] = iVar6 + 1;\n            *(undefined1 *)(param_1[1] + iVar2) = 0;\n            bVar1 = param_3[4];\n            if (bVar1 == 0x1c) {\n              *param_1 = 2;\n              uVar3 = 0;\n            }\n            else if (bVar1 == 0x1e) {\n              *param_1 = 4;\n              uVar3 = 0;\n            }\n            else if (bVar1 == 0x1a) {\n              *param_1 = 3;\n              uVar3 = 0;\n            }\n            else {\n              uVar3 = 0;\n            }\n            goto LAB_00077d90;\n          }\n          pbVar5 = (byte *)(param_1[1] + iVar2);\n          iVar2 = iVar2 + 1;\n          *pbVar5 = bVar9;\n        } while (iVar2 != 0x20);\n        uVar3 = 7;\n      }\n      else {\n        uVar3 = 7;\n      }\n    }\n    else {\n      if ((bVar1 == 0x16) && (param_7 == '\0')) {\n        FUN_00077ac8(auStack_34,param_2,param_6);\n        piVar7 = param_2;\n        if (local_30 != '\x15') {\n          uVar3 = 0xb;\n          goto LAB_00077d90;\n        }\n      }\n      *param_1 = 0;\n      *(byte *)(param_1 + 1) = *param_3;\n      uVar3 = 0;\n    }\n  }" { (expression_statement "param_2[10] = param_4;" (assignment_expression "param_2[10] = param_4" (subscript_expression "param_2[10]" identifier [ number_literal ]) = identifier) ;) (expression_statement "bVar1 = param_3[4];" (assignment_expression "bVar1 = param_3[4]" identifier = (subscript_expression "param_3[4]" identifier [ number_literal ])) ;) (if_statement "if (((bVar1 & 0xfb) == 0x1a) || (bVar1 == 0x1c)) {\n      iVar2 = 0;\n      if (param_4 < param_2[0xe]) {\n        bVar1 = *param_3;\n        pcVar4 = (code *)(PTR_LAB_000b7a18 + 0x75b0);\n        do {\n          if (param_3[4] == 0x1e) {\n            if (*(char *)((int)param_2 + 0x4b) == '\0') {\n              iVar6 = param_2[10];\n              param_2[10] = iVar6 + 1;\n              bVar9 = *(byte *)(param_2[1] + iVar6);\n            }\n            else if (*(char *)(param_2 + 0x13) == '\0') {\n              iVar6 = param_2[10];\n              piVar7 = (int *)(iVar6 + 1);\n              param_2[10] = (int)piVar7;\n              bVar9 = *(byte *)(*param_2 + param_2[6] + iVar6);\n            }\n            else {\n              piVar8 = (int *)param_2[10];\n              if ((piVar8 == (int *)param_2[7]) || (*(int *)(param_2[2] + (int)piVar8 * 4) != -1)) {\n                bVar9 = *(byte *)(*param_2 + *(int *)(param_2[3] + (int)piVar8 * 4) + param_2[6]);\n                piVar7 = piVar8;\n                if ((bVar9 & 0x80) == 0) {\n                  iVar6 = (*pcVar4)(param_2);\n                  param_2[10] = (int)piVar8 + iVar6;\n                }\n                else {\n                  param_2[10] = (int)piVar8 + 1;\n                  bVar9 = *(byte *)(param_2[1] + (int)piVar8);\n                }\n              }\n              else {\n                param_2[10] = (int)piVar8 + 1;\n                bVar9 = *(byte *)(param_2[1] + (int)piVar8);\n              }\n            }\n          }\n          else {\n            iVar6 = param_2[10];\n            param_2[10] = iVar6 + 1;\n            bVar9 = *(byte *)(param_2[1] + iVar6);\n          }\n          iVar6 = param_2[10];\n          uVar3 = 7;\n          if (param_2[0xe] <= iVar6) goto LAB_00077d90;\n          if ((bVar1 == bVar9) && (*(char *)(param_2[1] + iVar6) == ']')) {\n            param_2[10] = iVar6 + 1;\n            *(undefined1 *)(param_1[1] + iVar2) = 0;\n            bVar1 = param_3[4];\n            if (bVar1 == 0x1c) {\n              *param_1 = 2;\n              uVar3 = 0;\n            }\n            else if (bVar1 == 0x1e) {\n              *param_1 = 4;\n              uVar3 = 0;\n            }\n            else if (bVar1 == 0x1a) {\n              *param_1 = 3;\n              uVar3 = 0;\n            }\n            else {\n              uVar3 = 0;\n            }\n            goto LAB_00077d90;\n          }\n          pbVar5 = (byte *)(param_1[1] + iVar2);\n          iVar2 = iVar2 + 1;\n          *pbVar5 = bVar9;\n        } while (iVar2 != 0x20);\n        uVar3 = 7;\n      }\n      else {\n        uVar3 = 7;\n      }\n    }\n    else {\n      if ((bVar1 == 0x16) && (param_7 == '\0')) {\n        FUN_00077ac8(auStack_34,param_2,param_6);\n        piVar7 = param_2;\n        if (local_30 != '\x15') {\n          uVar3 = 0xb;\n          goto LAB_00077d90;\n        }\n      }\n      *param_1 = 0;\n      *(byte *)(param_1 + 1) = *param_3;\n      uVar3 = 0;\n    }" if (parenthesized_expression "(((bVar1 & 0xfb) == 0x1a) || (bVar1 == 0x1c))" ( (binary_expression "((bVar1 & 0xfb) == 0x1a) || (bVar1 == 0x1c)" (parenthesized_expression "((bVar1 & 0xfb) == 0x1a)" ( (binary_expression "(bVar1 & 0xfb) == 0x1a" (parenthesized_expression "(bVar1 & 0xfb)" ( (binary_expression "bVar1 & 0xfb" identifier & number_literal) )) == number_literal) )) || (parenthesized_expression "(bVar1 == 0x1c)" ( (binary_expression "bVar1 == 0x1c" identifier == number_literal) ))) )) (compound_statement "{\n      iVar2 = 0;\n      if (param_4 < param_2[0xe]) {\n        bVar1 = *param_3;\n        pcVar4 = (code *)(PTR_LAB_000b7a18 + 0x75b0);\n        do {\n          if (param_3[4] == 0x1e) {\n            if (*(char *)((int)param_2 + 0x4b) == '\0') {\n              iVar6 = param_2[10];\n              param_2[10] = iVar6 + 1;\n              bVar9 = *(byte *)(param_2[1] + iVar6);\n            }\n            else if (*(char *)(param_2 + 0x13) == '\0') {\n              iVar6 = param_2[10];\n              piVar7 = (int *)(iVar6 + 1);\n              param_2[10] = (int)piVar7;\n              bVar9 = *(byte *)(*param_2 + param_2[6] + iVar6);\n            }\n            else {\n              piVar8 = (int *)param_2[10];\n              if ((piVar8 == (int *)param_2[7]) || (*(int *)(param_2[2] + (int)piVar8 * 4) != -1)) {\n                bVar9 = *(byte *)(*param_2 + *(int *)(param_2[3] + (int)piVar8 * 4) + param_2[6]);\n                piVar7 = piVar8;\n                if ((bVar9 & 0x80) == 0) {\n                  iVar6 = (*pcVar4)(param_2);\n                  param_2[10] = (int)piVar8 + iVar6;\n                }\n                else {\n                  param_2[10] = (int)piVar8 + 1;\n                  bVar9 = *(byte *)(param_2[1] + (int)piVar8);\n                }\n              }\n              else {\n                param_2[10] = (int)piVar8 + 1;\n                bVar9 = *(byte *)(param_2[1] + (int)piVar8);\n              }\n            }\n          }\n          else {\n            iVar6 = param_2[10];\n            param_2[10] = iVar6 + 1;\n            bVar9 = *(byte *)(param_2[1] + iVar6);\n          }\n          iVar6 = param_2[10];\n          uVar3 = 7;\n          if (param_2[0xe] <= iVar6) goto LAB_00077d90;\n          if ((bVar1 == bVar9) && (*(char *)(param_2[1] + iVar6) == ']')) {\n            param_2[10] = iVar6 + 1;\n            *(undefined1 *)(param_1[1] + iVar2) = 0;\n            bVar1 = param_3[4];\n            if (bVar1 == 0x1c) {\n              *param_1 = 2;\n              uVar3 = 0;\n            }\n            else if (bVar1 == 0x1e) {\n              *param_1 = 4;\n              uVar3 = 0;\n            }\n            else if (bVar1 == 0x1a) {\n              *param_1 = 3;\n              uVar3 = 0;\n            }\n            else {\n              uVar3 = 0;\n            }\n            goto LAB_00077d90;\n          }\n          pbVar5 = (byte *)(param_1[1] + iVar2);\n          iVar2 = iVar2 + 1;\n          *pbVar5 = bVar9;\n        } while (iVar2 != 0x20);\n        uVar3 = 7;\n      }\n      else {\n        uVar3 = 7;\n      }\n    }" { (expression_statement "iVar2 = 0;" (assignment_expression "iVar2 = 0" identifier = number_literal) ;) (if_statement "if (param_4 < param_2[0xe]) {\n        bVar1 = *param_3;\n        pcVar4 = (code *)(PTR_LAB_000b7a18 + 0x75b0);\n        do {\n          if (param_3[4] == 0x1e) {\n            if (*(char *)((int)param_2 + 0x4b) == '\0') {\n              iVar6 = param_2[10];\n              param_2[10] = iVar6 + 1;\n              bVar9 = *(byte *)(param_2[1] + iVar6);\n            }\n            else if (*(char *)(param_2 + 0x13) == '\0') {\n              iVar6 = param_2[10];\n              piVar7 = (int *)(iVar6 + 1);\n              param_2[10] = (int)piVar7;\n              bVar9 = *(byte *)(*param_2 + param_2[6] + iVar6);\n            }\n            else {\n              piVar8 = (int *)param_2[10];\n              if ((piVar8 == (int *)param_2[7]) || (*(int *)(param_2[2] + (int)piVar8 * 4) != -1)) {\n                bVar9 = *(byte *)(*param_2 + *(int *)(param_2[3] + (int)piVar8 * 4) + param_2[6]);\n                piVar7 = piVar8;\n                if ((bVar9 & 0x80) == 0) {\n                  iVar6 = (*pcVar4)(param_2);\n                  param_2[10] = (int)piVar8 + iVar6;\n                }\n                else {\n                  param_2[10] = (int)piVar8 + 1;\n                  bVar9 = *(byte *)(param_2[1] + (int)piVar8);\n                }\n              }\n              else {\n                param_2[10] = (int)piVar8 + 1;\n                bVar9 = *(byte *)(param_2[1] + (int)piVar8);\n              }\n            }\n          }\n          else {\n            iVar6 = param_2[10];\n            param_2[10] = iVar6 + 1;\n            bVar9 = *(byte *)(param_2[1] + iVar6);\n          }\n          iVar6 = param_2[10];\n          uVar3 = 7;\n          if (param_2[0xe] <= iVar6) goto LAB_00077d90;\n          if ((bVar1 == bVar9) && (*(char *)(param_2[1] + iVar6) == ']')) {\n            param_2[10] = iVar6 + 1;\n            *(undefined1 *)(param_1[1] + iVar2) = 0;\n            bVar1 = param_3[4];\n            if (bVar1 == 0x1c) {\n              *param_1 = 2;\n              uVar3 = 0;\n            }\n            else if (bVar1 == 0x1e) {\n              *param_1 = 4;\n              uVar3 = 0;\n            }\n            else if (bVar1 == 0x1a) {\n              *param_1 = 3;\n              uVar3 = 0;\n            }\n            else {\n              uVar3 = 0;\n            }\n            goto LAB_00077d90;\n          }\n          pbVar5 = (byte *)(param_1[1] + iVar2);\n          iVar2 = iVar2 + 1;\n          *pbVar5 = bVar9;\n        } while (iVar2 != 0x20);\n        uVar3 = 7;\n      }\n      else {\n        uVar3 = 7;\n      }" if (parenthesized_expression "(param_4 < param_2[0xe])" ( (binary_expression "param_4 < param_2[0xe]" identifier < (subscript_expression "param_2[0xe]" identifier [ number_literal ])) )) (compound_statement "{\n        bVar1 = *param_3;\n        pcVar4 = (code *)(PTR_LAB_000b7a18 + 0x75b0);\n        do {\n          if (param_3[4] == 0x1e) {\n            if (*(char *)((int)param_2 + 0x4b) == '\0') {\n              iVar6 = param_2[10];\n              param_2[10] = iVar6 + 1;\n              bVar9 = *(byte *)(param_2[1] + iVar6);\n            }\n            else if (*(char *)(param_2 + 0x13) == '\0') {\n              iVar6 = param_2[10];\n              piVar7 = (int *)(iVar6 + 1);\n              param_2[10] = (int)piVar7;\n              bVar9 = *(byte *)(*param_2 + param_2[6] + iVar6);\n            }\n            else {\n              piVar8 = (int *)param_2[10];\n              if ((piVar8 == (int *)param_2[7]) || (*(int *)(param_2[2] + (int)piVar8 * 4) != -1)) {\n                bVar9 = *(byte *)(*param_2 + *(int *)(param_2[3] + (int)piVar8 * 4) + param_2[6]);\n                piVar7 = piVar8;\n                if ((bVar9 & 0x80) == 0) {\n                  iVar6 = (*pcVar4)(param_2);\n                  param_2[10] = (int)piVar8 + iVar6;\n                }\n                else {\n                  param_2[10] = (int)piVar8 + 1;\n                  bVar9 = *(byte *)(param_2[1] + (int)piVar8);\n                }\n              }\n              else {\n                param_2[10] = (int)piVar8 + 1;\n                bVar9 = *(byte *)(param_2[1] + (int)piVar8);\n              }\n            }\n          }\n          else {\n            iVar6 = param_2[10];\n            param_2[10] = iVar6 + 1;\n            bVar9 = *(byte *)(param_2[1] + iVar6);\n          }\n          iVar6 = param_2[10];\n          uVar3 = 7;\n          if (param_2[0xe] <= iVar6) goto LAB_00077d90;\n          if ((bVar1 == bVar9) && (*(char *)(param_2[1] + iVar6) == ']')) {\n            param_2[10] = iVar6 + 1;\n            *(undefined1 *)(param_1[1] + iVar2) = 0;\n            bVar1 = param_3[4];\n            if (bVar1 == 0x1c) {\n              *param_1 = 2;\n              uVar3 = 0;\n            }\n            else if (bVar1 == 0x1e) {\n              *param_1 = 4;\n              uVar3 = 0;\n            }\n            else if (bVar1 == 0x1a) {\n              *param_1 = 3;\n              uVar3 = 0;\n            }\n            else {\n              uVar3 = 0;\n            }\n            goto LAB_00077d90;\n          }\n          pbVar5 = (byte *)(param_1[1] + iVar2);\n          iVar2 = iVar2 + 1;\n          *pbVar5 = bVar9;\n        } while (iVar2 != 0x20);\n        uVar3 = 7;\n      }" { (expression_statement "bVar1 = *param_3;" (assignment_expression "bVar1 = *param_3" identifier = (pointer_expression "*param_3" * identifier)) ;) (expression_statement "pcVar4 = (code *)(PTR_LAB_000b7a18 + 0x75b0);" (assignment_expression "pcVar4 = (code *)(PTR_LAB_000b7a18 + 0x75b0)" identifier = (cast_expression "(code *)(PTR_LAB_000b7a18 + 0x75b0)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_000b7a18 + 0x75b0)" ( (binary_expression "PTR_LAB_000b7a18 + 0x75b0" identifier + number_literal) )))) ;) (do_statement "do {\n          if (param_3[4] == 0x1e) {\n            if (*(char *)((int)param_2 + 0x4b) == '\0') {\n              iVar6 = param_2[10];\n              param_2[10] = iVar6 + 1;\n              bVar9 = *(byte *)(param_2[1] + iVar6);\n            }\n            else if (*(char *)(param_2 + 0x13) == '\0') {\n              iVar6 = param_2[10];\n              piVar7 = (int *)(iVar6 + 1);\n              param_2[10] = (int)piVar7;\n              bVar9 = *(byte *)(*param_2 + param_2[6] + iVar6);\n            }\n            else {\n              piVar8 = (int *)param_2[10];\n              if ((piVar8 == (int *)param_2[7]) || (*(int *)(param_2[2] + (int)piVar8 * 4) != -1)) {\n                bVar9 = *(byte *)(*param_2 + *(int *)(param_2[3] + (int)piVar8 * 4) + param_2[6]);\n                piVar7 = piVar8;\n                if ((bVar9 & 0x80) == 0) {\n                  iVar6 = (*pcVar4)(param_2);\n                  param_2[10] = (int)piVar8 + iVar6;\n                }\n                else {\n                  param_2[10] = (int)piVar8 + 1;\n                  bVar9 = *(byte *)(param_2[1] + (int)piVar8);\n                }\n              }\n              else {\n                param_2[10] = (int)piVar8 + 1;\n                bVar9 = *(byte *)(param_2[1] + (int)piVar8);\n              }\n            }\n          }\n          else {\n            iVar6 = param_2[10];\n            param_2[10] = iVar6 + 1;\n            bVar9 = *(byte *)(param_2[1] + iVar6);\n          }\n          iVar6 = param_2[10];\n          uVar3 = 7;\n          if (param_2[0xe] <= iVar6) goto LAB_00077d90;\n          if ((bVar1 == bVar9) && (*(char *)(param_2[1] + iVar6) == ']')) {\n            param_2[10] = iVar6 + 1;\n            *(undefined1 *)(param_1[1] + iVar2) = 0;\n            bVar1 = param_3[4];\n            if (bVar1 == 0x1c) {\n              *param_1 = 2;\n              uVar3 = 0;\n            }\n            else if (bVar1 == 0x1e) {\n              *param_1 = 4;\n              uVar3 = 0;\n            }\n            else if (bVar1 == 0x1a) {\n              *param_1 = 3;\n              uVar3 = 0;\n            }\n            else {\n              uVar3 = 0;\n            }\n            goto LAB_00077d90;\n          }\n          pbVar5 = (byte *)(param_1[1] + iVar2);\n          iVar2 = iVar2 + 1;\n          *pbVar5 = bVar9;\n        } while (iVar2 != 0x20);" do (compound_statement "{\n          if (param_3[4] == 0x1e) {\n            if (*(char *)((int)param_2 + 0x4b) == '\0') {\n              iVar6 = param_2[10];\n              param_2[10] = iVar6 + 1;\n              bVar9 = *(byte *)(param_2[1] + iVar6);\n            }\n            else if (*(char *)(param_2 + 0x13) == '\0') {\n              iVar6 = param_2[10];\n              piVar7 = (int *)(iVar6 + 1);\n              param_2[10] = (int)piVar7;\n              bVar9 = *(byte *)(*param_2 + param_2[6] + iVar6);\n            }\n            else {\n              piVar8 = (int *)param_2[10];\n              if ((piVar8 == (int *)param_2[7]) || (*(int *)(param_2[2] + (int)piVar8 * 4) != -1)) {\n                bVar9 = *(byte *)(*param_2 + *(int *)(param_2[3] + (int)piVar8 * 4) + param_2[6]);\n                piVar7 = piVar8;\n                if ((bVar9 & 0x80) == 0) {\n                  iVar6 = (*pcVar4)(param_2);\n                  param_2[10] = (int)piVar8 + iVar6;\n                }\n                else {\n                  param_2[10] = (int)piVar8 + 1;\n                  bVar9 = *(byte *)(param_2[1] + (int)piVar8);\n                }\n              }\n              else {\n                param_2[10] = (int)piVar8 + 1;\n                bVar9 = *(byte *)(param_2[1] + (int)piVar8);\n              }\n            }\n          }\n          else {\n            iVar6 = param_2[10];\n            param_2[10] = iVar6 + 1;\n            bVar9 = *(byte *)(param_2[1] + iVar6);\n          }\n          iVar6 = param_2[10];\n          uVar3 = 7;\n          if (param_2[0xe] <= iVar6) goto LAB_00077d90;\n          if ((bVar1 == bVar9) && (*(char *)(param_2[1] + iVar6) == ']')) {\n            param_2[10] = iVar6 + 1;\n            *(undefined1 *)(param_1[1] + iVar2) = 0;\n            bVar1 = param_3[4];\n            if (bVar1 == 0x1c) {\n              *param_1 = 2;\n              uVar3 = 0;\n            }\n            else if (bVar1 == 0x1e) {\n              *param_1 = 4;\n              uVar3 = 0;\n            }\n            else if (bVar1 == 0x1a) {\n              *param_1 = 3;\n              uVar3 = 0;\n            }\n            else {\n              uVar3 = 0;\n            }\n            goto LAB_00077d90;\n          }\n          pbVar5 = (byte *)(param_1[1] + iVar2);\n          iVar2 = iVar2 + 1;\n          *pbVar5 = bVar9;\n        }" { (if_statement "if (param_3[4] == 0x1e) {\n            if (*(char *)((int)param_2 + 0x4b) == '\0') {\n              iVar6 = param_2[10];\n              param_2[10] = iVar6 + 1;\n              bVar9 = *(byte *)(param_2[1] + iVar6);\n            }\n            else if (*(char *)(param_2 + 0x13) == '\0') {\n              iVar6 = param_2[10];\n              piVar7 = (int *)(iVar6 + 1);\n              param_2[10] = (int)piVar7;\n              bVar9 = *(byte *)(*param_2 + param_2[6] + iVar6);\n            }\n            else {\n              piVar8 = (int *)param_2[10];\n              if ((piVar8 == (int *)param_2[7]) || (*(int *)(param_2[2] + (int)piVar8 * 4) != -1)) {\n                bVar9 = *(byte *)(*param_2 + *(int *)(param_2[3] + (int)piVar8 * 4) + param_2[6]);\n                piVar7 = piVar8;\n                if ((bVar9 & 0x80) == 0) {\n                  iVar6 = (*pcVar4)(param_2);\n                  param_2[10] = (int)piVar8 + iVar6;\n                }\n                else {\n                  param_2[10] = (int)piVar8 + 1;\n                  bVar9 = *(byte *)(param_2[1] + (int)piVar8);\n                }\n              }\n              else {\n                param_2[10] = (int)piVar8 + 1;\n                bVar9 = *(byte *)(param_2[1] + (int)piVar8);\n              }\n            }\n          }\n          else {\n            iVar6 = param_2[10];\n            param_2[10] = iVar6 + 1;\n            bVar9 = *(byte *)(param_2[1] + iVar6);\n          }" if (parenthesized_expression "(param_3[4] == 0x1e)" ( (binary_expression "param_3[4] == 0x1e" (subscript_expression "param_3[4]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n            if (*(char *)((int)param_2 + 0x4b) == '\0') {\n              iVar6 = param_2[10];\n              param_2[10] = iVar6 + 1;\n              bVar9 = *(byte *)(param_2[1] + iVar6);\n            }\n            else if (*(char *)(param_2 + 0x13) == '\0') {\n              iVar6 = param_2[10];\n              piVar7 = (int *)(iVar6 + 1);\n              param_2[10] = (int)piVar7;\n              bVar9 = *(byte *)(*param_2 + param_2[6] + iVar6);\n            }\n            else {\n              piVar8 = (int *)param_2[10];\n              if ((piVar8 == (int *)param_2[7]) || (*(int *)(param_2[2] + (int)piVar8 * 4) != -1)) {\n                bVar9 = *(byte *)(*param_2 + *(int *)(param_2[3] + (int)piVar8 * 4) + param_2[6]);\n                piVar7 = piVar8;\n                if ((bVar9 & 0x80) == 0) {\n                  iVar6 = (*pcVar4)(param_2);\n                  param_2[10] = (int)piVar8 + iVar6;\n                }\n                else {\n                  param_2[10] = (int)piVar8 + 1;\n                  bVar9 = *(byte *)(param_2[1] + (int)piVar8);\n                }\n              }\n              else {\n                param_2[10] = (int)piVar8 + 1;\n                bVar9 = *(byte *)(param_2[1] + (int)piVar8);\n              }\n            }\n          }" { (if_statement "if (*(char *)((int)param_2 + 0x4b) == '\0') {\n              iVar6 = param_2[10];\n              param_2[10] = iVar6 + 1;\n              bVar9 = *(byte *)(param_2[1] + iVar6);\n            }\n            else if (*(char *)(param_2 + 0x13) == '\0') {\n              iVar6 = param_2[10];\n              piVar7 = (int *)(iVar6 + 1);\n              param_2[10] = (int)piVar7;\n              bVar9 = *(byte *)(*param_2 + param_2[6] + iVar6);\n            }\n            else {\n              piVar8 = (int *)param_2[10];\n              if ((piVar8 == (int *)param_2[7]) || (*(int *)(param_2[2] + (int)piVar8 * 4) != -1)) {\n                bVar9 = *(byte *)(*param_2 + *(int *)(param_2[3] + (int)piVar8 * 4) + param_2[6]);\n                piVar7 = piVar8;\n                if ((bVar9 & 0x80) == 0) {\n                  iVar6 = (*pcVar4)(param_2);\n                  param_2[10] = (int)piVar8 + iVar6;\n                }\n                else {\n                  param_2[10] = (int)piVar8 + 1;\n                  bVar9 = *(byte *)(param_2[1] + (int)piVar8);\n                }\n              }\n              else {\n                param_2[10] = (int)piVar8 + 1;\n                bVar9 = *(byte *)(param_2[1] + (int)piVar8);\n              }\n            }" if (parenthesized_expression "(*(char *)((int)param_2 + 0x4b) == '\0')" ( (binary_expression "*(char *)((int)param_2 + 0x4b) == '\0'" (pointer_expression "*(char *)((int)param_2 + 0x4b)" * (cast_expression "(char *)((int)param_2 + 0x4b)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_2 + 0x4b)" ( (binary_expression "(int)param_2 + 0x4b" (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n              iVar6 = param_2[10];\n              param_2[10] = iVar6 + 1;\n              bVar9 = *(byte *)(param_2[1] + iVar6);\n            }" { (expression_statement "iVar6 = param_2[10];" (assignment_expression "iVar6 = param_2[10]" identifier = (subscript_expression "param_2[10]" identifier [ number_literal ])) ;) (expression_statement "param_2[10] = iVar6 + 1;" (assignment_expression "param_2[10] = iVar6 + 1" (subscript_expression "param_2[10]" identifier [ number_literal ]) = (binary_expression "iVar6 + 1" identifier + number_literal)) ;) (expression_statement "bVar9 = *(byte *)(param_2[1] + iVar6);" (assignment_expression "bVar9 = *(byte *)(param_2[1] + iVar6)" identifier = (pointer_expression "*(byte *)(param_2[1] + iVar6)" * (cast_expression "(byte *)(param_2[1] + iVar6)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[1] + iVar6)" ( (binary_expression "param_2[1] + iVar6" (subscript_expression "param_2[1]" identifier [ number_literal ]) + identifier) ))))) ;) }) (else_clause "else if (*(char *)(param_2 + 0x13) == '\0') {\n              iVar6 = param_2[10];\n              piVar7 = (int *)(iVar6 + 1);\n              param_2[10] = (int)piVar7;\n              bVar9 = *(byte *)(*param_2 + param_2[6] + iVar6);\n            }\n            else {\n              piVar8 = (int *)param_2[10];\n              if ((piVar8 == (int *)param_2[7]) || (*(int *)(param_2[2] + (int)piVar8 * 4) != -1)) {\n                bVar9 = *(byte *)(*param_2 + *(int *)(param_2[3] + (int)piVar8 * 4) + param_2[6]);\n                piVar7 = piVar8;\n                if ((bVar9 & 0x80) == 0) {\n                  iVar6 = (*pcVar4)(param_2);\n                  param_2[10] = (int)piVar8 + iVar6;\n                }\n                else {\n                  param_2[10] = (int)piVar8 + 1;\n                  bVar9 = *(byte *)(param_2[1] + (int)piVar8);\n                }\n              }\n              else {\n                param_2[10] = (int)piVar8 + 1;\n                bVar9 = *(byte *)(param_2[1] + (int)piVar8);\n              }\n            }" else (if_statement "if (*(char *)(param_2 + 0x13) == '\0') {\n              iVar6 = param_2[10];\n              piVar7 = (int *)(iVar6 + 1);\n              param_2[10] = (int)piVar7;\n              bVar9 = *(byte *)(*param_2 + param_2[6] + iVar6);\n            }\n            else {\n              piVar8 = (int *)param_2[10];\n              if ((piVar8 == (int *)param_2[7]) || (*(int *)(param_2[2] + (int)piVar8 * 4) != -1)) {\n                bVar9 = *(byte *)(*param_2 + *(int *)(param_2[3] + (int)piVar8 * 4) + param_2[6]);\n                piVar7 = piVar8;\n                if ((bVar9 & 0x80) == 0) {\n                  iVar6 = (*pcVar4)(param_2);\n                  param_2[10] = (int)piVar8 + iVar6;\n                }\n                else {\n                  param_2[10] = (int)piVar8 + 1;\n                  bVar9 = *(byte *)(param_2[1] + (int)piVar8);\n                }\n              }\n              else {\n                param_2[10] = (int)piVar8 + 1;\n                bVar9 = *(byte *)(param_2[1] + (int)piVar8);\n              }\n            }" if (parenthesized_expression "(*(char *)(param_2 + 0x13) == '\0')" ( (binary_expression "*(char *)(param_2 + 0x13) == '\0'" (pointer_expression "*(char *)(param_2 + 0x13)" * (cast_expression "(char *)(param_2 + 0x13)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x13)" ( (binary_expression "param_2 + 0x13" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n              iVar6 = param_2[10];\n              piVar7 = (int *)(iVar6 + 1);\n              param_2[10] = (int)piVar7;\n              bVar9 = *(byte *)(*param_2 + param_2[6] + iVar6);\n            }" { (expression_statement "iVar6 = param_2[10];" (assignment_expression "iVar6 = param_2[10]" identifier = (subscript_expression "param_2[10]" identifier [ number_literal ])) ;) (expression_statement "piVar7 = (int *)(iVar6 + 1);" (assignment_expression "piVar7 = (int *)(iVar6 + 1)" identifier = (cast_expression "(int *)(iVar6 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 1)" ( (binary_expression "iVar6 + 1" identifier + number_literal) )))) ;) (expression_statement "param_2[10] = (int)piVar7;" (assignment_expression "param_2[10] = (int)piVar7" (subscript_expression "param_2[10]" identifier [ number_literal ]) = (cast_expression "(int)piVar7" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "bVar9 = *(byte *)(*param_2 + param_2[6] + iVar6);" (assignment_expression "bVar9 = *(byte *)(*param_2 + param_2[6] + iVar6)" identifier = (pointer_expression "*(byte *)(*param_2 + param_2[6] + iVar6)" * (cast_expression "(byte *)(*param_2 + param_2[6] + iVar6)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_2 + param_2[6] + iVar6)" ( (binary_expression "*param_2 + param_2[6] + iVar6" (binary_expression "*param_2 + param_2[6]" (pointer_expression "*param_2" * identifier) + (subscript_expression "param_2[6]" identifier [ number_literal ])) + identifier) ))))) ;) }) (else_clause "else {\n              piVar8 = (int *)param_2[10];\n              if ((piVar8 == (int *)param_2[7]) || (*(int *)(param_2[2] + (int)piVar8 * 4) != -1)) {\n                bVar9 = *(byte *)(*param_2 + *(int *)(param_2[3] + (int)piVar8 * 4) + param_2[6]);\n                piVar7 = piVar8;\n                if ((bVar9 & 0x80) == 0) {\n                  iVar6 = (*pcVar4)(param_2);\n                  param_2[10] = (int)piVar8 + iVar6;\n                }\n                else {\n                  param_2[10] = (int)piVar8 + 1;\n                  bVar9 = *(byte *)(param_2[1] + (int)piVar8);\n                }\n              }\n              else {\n                param_2[10] = (int)piVar8 + 1;\n                bVar9 = *(byte *)(param_2[1] + (int)piVar8);\n              }\n            }" else (compound_statement "{\n              piVar8 = (int *)param_2[10];\n              if ((piVar8 == (int *)param_2[7]) || (*(int *)(param_2[2] + (int)piVar8 * 4) != -1)) {\n                bVar9 = *(byte *)(*param_2 + *(int *)(param_2[3] + (int)piVar8 * 4) + param_2[6]);\n                piVar7 = piVar8;\n                if ((bVar9 & 0x80) == 0) {\n                  iVar6 = (*pcVar4)(param_2);\n                  param_2[10] = (int)piVar8 + iVar6;\n                }\n                else {\n                  param_2[10] = (int)piVar8 + 1;\n                  bVar9 = *(byte *)(param_2[1] + (int)piVar8);\n                }\n              }\n              else {\n                param_2[10] = (int)piVar8 + 1;\n                bVar9 = *(byte *)(param_2[1] + (int)piVar8);\n              }\n            }" { (expression_statement "piVar8 = (int *)param_2[10];" (assignment_expression "piVar8 = (int *)param_2[10]" identifier = (cast_expression "(int *)param_2[10]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[10]" identifier [ number_literal ]))) ;) (if_statement "if ((piVar8 == (int *)param_2[7]) || (*(int *)(param_2[2] + (int)piVar8 * 4) != -1)) {\n                bVar9 = *(byte *)(*param_2 + *(int *)(param_2[3] + (int)piVar8 * 4) + param_2[6]);\n                piVar7 = piVar8;\n                if ((bVar9 & 0x80) == 0) {\n                  iVar6 = (*pcVar4)(param_2);\n                  param_2[10] = (int)piVar8 + iVar6;\n                }\n                else {\n                  param_2[10] = (int)piVar8 + 1;\n                  bVar9 = *(byte *)(param_2[1] + (int)piVar8);\n                }\n              }\n              else {\n                param_2[10] = (int)piVar8 + 1;\n                bVar9 = *(byte *)(param_2[1] + (int)piVar8);\n              }" if (parenthesized_expression "((piVar8 == (int *)param_2[7]) || (*(int *)(param_2[2] + (int)piVar8 * 4) != -1))" ( (binary_expression "(piVar8 == (int *)param_2[7]) || (*(int *)(param_2[2] + (int)piVar8 * 4) != -1)" (parenthesized_expression "(piVar8 == (int *)param_2[7])" ( (binary_expression "piVar8 == (int *)param_2[7]" identifier == (cast_expression "(int *)param_2[7]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[7]" identifier [ number_literal ]))) )) || (parenthesized_expression "(*(int *)(param_2[2] + (int)piVar8 * 4) != -1)" ( (binary_expression "*(int *)(param_2[2] + (int)piVar8 * 4) != -1" (pointer_expression "*(int *)(param_2[2] + (int)piVar8 * 4)" * (cast_expression "(int *)(param_2[2] + (int)piVar8 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[2] + (int)piVar8 * 4)" ( (binary_expression "param_2[2] + (int)piVar8 * 4" (subscript_expression "param_2[2]" identifier [ number_literal ]) + (binary_expression "(int)piVar8 * 4" (cast_expression "(int)piVar8" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) )))) != number_literal) ))) )) (compound_statement "{\n                bVar9 = *(byte *)(*param_2 + *(int *)(param_2[3] + (int)piVar8 * 4) + param_2[6]);\n                piVar7 = piVar8;\n                if ((bVar9 & 0x80) == 0) {\n                  iVar6 = (*pcVar4)(param_2);\n                  param_2[10] = (int)piVar8 + iVar6;\n                }\n                else {\n                  param_2[10] = (int)piVar8 + 1;\n                  bVar9 = *(byte *)(param_2[1] + (int)piVar8);\n                }\n              }" { (expression_statement "bVar9 = *(byte *)(*param_2 + *(int *)(param_2[3] + (int)piVar8 * 4) + param_2[6]);" (assignment_expression "bVar9 = *(byte *)(*param_2 + *(int *)(param_2[3] + (int)piVar8 * 4) + param_2[6])" identifier = (pointer_expression "*(byte *)(*param_2 + *(int *)(param_2[3] + (int)piVar8 * 4) + param_2[6])" * (cast_expression "(byte *)(*param_2 + *(int *)(param_2[3] + (int)piVar8 * 4) + param_2[6])" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_2 + *(int *)(param_2[3] + (int)piVar8 * 4) + param_2[6])" ( (binary_expression "*param_2 + *(int *)(param_2[3] + (int)piVar8 * 4) + param_2[6]" (binary_expression "*param_2 + *(int *)(param_2[3] + (int)piVar8 * 4)" (pointer_expression "*param_2" * identifier) + (pointer_expression "*(int *)(param_2[3] + (int)piVar8 * 4)" * (cast_expression "(int *)(param_2[3] + (int)piVar8 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[3] + (int)piVar8 * 4)" ( (binary_expression "param_2[3] + (int)piVar8 * 4" (subscript_expression "param_2[3]" identifier [ number_literal ]) + (binary_expression "(int)piVar8 * 4" (cast_expression "(int)piVar8" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) ))))) + (subscript_expression "param_2[6]" identifier [ number_literal ])) ))))) ;) (expression_statement "piVar7 = piVar8;" (assignment_expression "piVar7 = piVar8" identifier = identifier) ;) (if_statement "if ((bVar9 & 0x80) == 0) {\n                  iVar6 = (*pcVar4)(param_2);\n                  param_2[10] = (int)piVar8 + iVar6;\n                }\n                else {\n                  param_2[10] = (int)piVar8 + 1;\n                  bVar9 = *(byte *)(param_2[1] + (int)piVar8);\n                }" if (parenthesized_expression "((bVar9 & 0x80) == 0)" ( (binary_expression "(bVar9 & 0x80) == 0" (parenthesized_expression "(bVar9 & 0x80)" ( (binary_expression "bVar9 & 0x80" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n                  iVar6 = (*pcVar4)(param_2);\n                  param_2[10] = (int)piVar8 + iVar6;\n                }" { (expression_statement "iVar6 = (*pcVar4)(param_2);" (assignment_expression "iVar6 = (*pcVar4)(param_2)" identifier = (call_expression "(*pcVar4)(param_2)" (parenthesized_expression "(*pcVar4)" ( (pointer_expression "*pcVar4" * identifier) )) (argument_list "(param_2)" ( identifier )))) ;) (expression_statement "param_2[10] = (int)piVar8 + iVar6;" (assignment_expression "param_2[10] = (int)piVar8 + iVar6" (subscript_expression "param_2[10]" identifier [ number_literal ]) = (binary_expression "(int)piVar8 + iVar6" (cast_expression "(int)piVar8" ( (type_descriptor "int" primitive_type) ) identifier) + identifier)) ;) }) (else_clause "else {\n                  param_2[10] = (int)piVar8 + 1;\n                  bVar9 = *(byte *)(param_2[1] + (int)piVar8);\n                }" else (compound_statement "{\n                  param_2[10] = (int)piVar8 + 1;\n                  bVar9 = *(byte *)(param_2[1] + (int)piVar8);\n                }" { (expression_statement "param_2[10] = (int)piVar8 + 1;" (assignment_expression "param_2[10] = (int)piVar8 + 1" (subscript_expression "param_2[10]" identifier [ number_literal ]) = (binary_expression "(int)piVar8 + 1" (cast_expression "(int)piVar8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal)) ;) (expression_statement "bVar9 = *(byte *)(param_2[1] + (int)piVar8);" (assignment_expression "bVar9 = *(byte *)(param_2[1] + (int)piVar8)" identifier = (pointer_expression "*(byte *)(param_2[1] + (int)piVar8)" * (cast_expression "(byte *)(param_2[1] + (int)piVar8)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[1] + (int)piVar8)" ( (binary_expression "param_2[1] + (int)piVar8" (subscript_expression "param_2[1]" identifier [ number_literal ]) + (cast_expression "(int)piVar8" ( (type_descriptor "int" primitive_type) ) identifier)) ))))) ;) }))) }) (else_clause "else {\n                param_2[10] = (int)piVar8 + 1;\n                bVar9 = *(byte *)(param_2[1] + (int)piVar8);\n              }" else (compound_statement "{\n                param_2[10] = (int)piVar8 + 1;\n                bVar9 = *(byte *)(param_2[1] + (int)piVar8);\n              }" { (expression_statement "param_2[10] = (int)piVar8 + 1;" (assignment_expression "param_2[10] = (int)piVar8 + 1" (subscript_expression "param_2[10]" identifier [ number_literal ]) = (binary_expression "(int)piVar8 + 1" (cast_expression "(int)piVar8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal)) ;) (expression_statement "bVar9 = *(byte *)(param_2[1] + (int)piVar8);" (assignment_expression "bVar9 = *(byte *)(param_2[1] + (int)piVar8)" identifier = (pointer_expression "*(byte *)(param_2[1] + (int)piVar8)" * (cast_expression "(byte *)(param_2[1] + (int)piVar8)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[1] + (int)piVar8)" ( (binary_expression "param_2[1] + (int)piVar8" (subscript_expression "param_2[1]" identifier [ number_literal ]) + (cast_expression "(int)piVar8" ( (type_descriptor "int" primitive_type) ) identifier)) ))))) ;) }))) }))))) }) (else_clause "else {\n            iVar6 = param_2[10];\n            param_2[10] = iVar6 + 1;\n            bVar9 = *(byte *)(param_2[1] + iVar6);\n          }" else (compound_statement "{\n            iVar6 = param_2[10];\n            param_2[10] = iVar6 + 1;\n            bVar9 = *(byte *)(param_2[1] + iVar6);\n          }" { (expression_statement "iVar6 = param_2[10];" (assignment_expression "iVar6 = param_2[10]" identifier = (subscript_expression "param_2[10]" identifier [ number_literal ])) ;) (expression_statement "param_2[10] = iVar6 + 1;" (assignment_expression "param_2[10] = iVar6 + 1" (subscript_expression "param_2[10]" identifier [ number_literal ]) = (binary_expression "iVar6 + 1" identifier + number_literal)) ;) (expression_statement "bVar9 = *(byte *)(param_2[1] + iVar6);" (assignment_expression "bVar9 = *(byte *)(param_2[1] + iVar6)" identifier = (pointer_expression "*(byte *)(param_2[1] + iVar6)" * (cast_expression "(byte *)(param_2[1] + iVar6)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[1] + iVar6)" ( (binary_expression "param_2[1] + iVar6" (subscript_expression "param_2[1]" identifier [ number_literal ]) + identifier) ))))) ;) }))) (expression_statement "iVar6 = param_2[10];" (assignment_expression "iVar6 = param_2[10]" identifier = (subscript_expression "param_2[10]" identifier [ number_literal ])) ;) (expression_statement "uVar3 = 7;" (assignment_expression "uVar3 = 7" identifier = number_literal) ;) (if_statement "if (param_2[0xe] <= iVar6) goto LAB_00077d90;" if (parenthesized_expression "(param_2[0xe] <= iVar6)" ( (binary_expression "param_2[0xe] <= iVar6" (subscript_expression "param_2[0xe]" identifier [ number_literal ]) <= identifier) )) (goto_statement "goto LAB_00077d90;" goto statement_identifier ;)) (if_statement "if ((bVar1 == bVar9) && (*(char *)(param_2[1] + iVar6) == ']')) {\n            param_2[10] = iVar6 + 1;\n            *(undefined1 *)(param_1[1] + iVar2) = 0;\n            bVar1 = param_3[4];\n            if (bVar1 == 0x1c) {\n              *param_1 = 2;\n              uVar3 = 0;\n            }\n            else if (bVar1 == 0x1e) {\n              *param_1 = 4;\n              uVar3 = 0;\n            }\n            else if (bVar1 == 0x1a) {\n              *param_1 = 3;\n              uVar3 = 0;\n            }\n            else {\n              uVar3 = 0;\n            }\n            goto LAB_00077d90;\n          }" if (parenthesized_expression "((bVar1 == bVar9) && (*(char *)(param_2[1] + iVar6) == ']'))" ( (binary_expression "(bVar1 == bVar9) && (*(char *)(param_2[1] + iVar6) == ']')" (parenthesized_expression "(bVar1 == bVar9)" ( (binary_expression "bVar1 == bVar9" identifier == identifier) )) && (parenthesized_expression "(*(char *)(param_2[1] + iVar6) == ']')" ( (binary_expression "*(char *)(param_2[1] + iVar6) == ']'" (pointer_expression "*(char *)(param_2[1] + iVar6)" * (cast_expression "(char *)(param_2[1] + iVar6)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[1] + iVar6)" ( (binary_expression "param_2[1] + iVar6" (subscript_expression "param_2[1]" identifier [ number_literal ]) + identifier) )))) == (char_literal "']'" ' character ')) ))) )) (compound_statement "{\n            param_2[10] = iVar6 + 1;\n            *(undefined1 *)(param_1[1] + iVar2) = 0;\n            bVar1 = param_3[4];\n            if (bVar1 == 0x1c) {\n              *param_1 = 2;\n              uVar3 = 0;\n            }\n            else if (bVar1 == 0x1e) {\n              *param_1 = 4;\n              uVar3 = 0;\n            }\n            else if (bVar1 == 0x1a) {\n              *param_1 = 3;\n              uVar3 = 0;\n            }\n            else {\n              uVar3 = 0;\n            }\n            goto LAB_00077d90;\n          }" { (expression_statement "param_2[10] = iVar6 + 1;" (assignment_expression "param_2[10] = iVar6 + 1" (subscript_expression "param_2[10]" identifier [ number_literal ]) = (binary_expression "iVar6 + 1" identifier + number_literal)) ;) (expression_statement "*(undefined1 *)(param_1[1] + iVar2) = 0;" (assignment_expression "*(undefined1 *)(param_1[1] + iVar2) = 0" (pointer_expression "*(undefined1 *)(param_1[1] + iVar2)" * (cast_expression "(undefined1 *)(param_1[1] + iVar2)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1[1] + iVar2)" ( (binary_expression "param_1[1] + iVar2" (subscript_expression "param_1[1]" identifier [ number_literal ]) + identifier) )))) = number_literal) ;) (expression_statement "bVar1 = param_3[4];" (assignment_expression "bVar1 = param_3[4]" identifier = (subscript_expression "param_3[4]" identifier [ number_literal ])) ;) (if_statement "if (bVar1 == 0x1c) {\n              *param_1 = 2;\n              uVar3 = 0;\n            }\n            else if (bVar1 == 0x1e) {\n              *param_1 = 4;\n              uVar3 = 0;\n            }\n            else if (bVar1 == 0x1a) {\n              *param_1 = 3;\n              uVar3 = 0;\n            }\n            else {\n              uVar3 = 0;\n            }" if (parenthesized_expression "(bVar1 == 0x1c)" ( (binary_expression "bVar1 == 0x1c" identifier == number_literal) )) (compound_statement "{\n              *param_1 = 2;\n              uVar3 = 0;\n            }" { (expression_statement "*param_1 = 2;" (assignment_expression "*param_1 = 2" (pointer_expression "*param_1" * identifier) = number_literal) ;) (expression_statement "uVar3 = 0;" (assignment_expression "uVar3 = 0" identifier = number_literal) ;) }) (else_clause "else if (bVar1 == 0x1e) {\n              *param_1 = 4;\n              uVar3 = 0;\n            }\n            else if (bVar1 == 0x1a) {\n              *param_1 = 3;\n              uVar3 = 0;\n            }\n            else {\n              uVar3 = 0;\n            }" else (if_statement "if (bVar1 == 0x1e) {\n              *param_1 = 4;\n              uVar3 = 0;\n            }\n            else if (bVar1 == 0x1a) {\n              *param_1 = 3;\n              uVar3 = 0;\n            }\n            else {\n              uVar3 = 0;\n            }" if (parenthesized_expression "(bVar1 == 0x1e)" ( (binary_expression "bVar1 == 0x1e" identifier == number_literal) )) (compound_statement "{\n              *param_1 = 4;\n              uVar3 = 0;\n            }" { (expression_statement "*param_1 = 4;" (assignment_expression "*param_1 = 4" (pointer_expression "*param_1" * identifier) = number_literal) ;) (expression_statement "uVar3 = 0;" (assignment_expression "uVar3 = 0" identifier = number_literal) ;) }) (else_clause "else if (bVar1 == 0x1a) {\n              *param_1 = 3;\n              uVar3 = 0;\n            }\n            else {\n              uVar3 = 0;\n            }" else (if_statement "if (bVar1 == 0x1a) {\n              *param_1 = 3;\n              uVar3 = 0;\n            }\n            else {\n              uVar3 = 0;\n            }" if (parenthesized_expression "(bVar1 == 0x1a)" ( (binary_expression "bVar1 == 0x1a" identifier == number_literal) )) (compound_statement "{\n              *param_1 = 3;\n              uVar3 = 0;\n            }" { (expression_statement "*param_1 = 3;" (assignment_expression "*param_1 = 3" (pointer_expression "*param_1" * identifier) = number_literal) ;) (expression_statement "uVar3 = 0;" (assignment_expression "uVar3 = 0" identifier = number_literal) ;) }) (else_clause "else {\n              uVar3 = 0;\n            }" else (compound_statement "{\n              uVar3 = 0;\n            }" { (expression_statement "uVar3 = 0;" (assignment_expression "uVar3 = 0" identifier = number_literal) ;) }))))))) (goto_statement "goto LAB_00077d90;" goto statement_identifier ;) })) (expression_statement "pbVar5 = (byte *)(param_1[1] + iVar2);" (assignment_expression "pbVar5 = (byte *)(param_1[1] + iVar2)" identifier = (cast_expression "(byte *)(param_1[1] + iVar2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1[1] + iVar2)" ( (binary_expression "param_1[1] + iVar2" (subscript_expression "param_1[1]" identifier [ number_literal ]) + identifier) )))) ;) (expression_statement "iVar2 = iVar2 + 1;" (assignment_expression "iVar2 = iVar2 + 1" identifier = (binary_expression "iVar2 + 1" identifier + number_literal)) ;) (expression_statement "*pbVar5 = bVar9;" (assignment_expression "*pbVar5 = bVar9" (pointer_expression "*pbVar5" * identifier) = identifier) ;) }) while (parenthesized_expression "(iVar2 != 0x20)" ( (binary_expression "iVar2 != 0x20" identifier != number_literal) )) ;) (expression_statement "uVar3 = 7;" (assignment_expression "uVar3 = 7" identifier = number_literal) ;) }) (else_clause "else {\n        uVar3 = 7;\n      }" else (compound_statement "{\n        uVar3 = 7;\n      }" { (expression_statement "uVar3 = 7;" (assignment_expression "uVar3 = 7" identifier = number_literal) ;) }))) }) (else_clause "else {\n      if ((bVar1 == 0x16) && (param_7 == '\0')) {\n        FUN_00077ac8(auStack_34,param_2,param_6);\n        piVar7 = param_2;\n        if (local_30 != '\x15') {\n          uVar3 = 0xb;\n          goto LAB_00077d90;\n        }\n      }\n      *param_1 = 0;\n      *(byte *)(param_1 + 1) = *param_3;\n      uVar3 = 0;\n    }" else (compound_statement "{\n      if ((bVar1 == 0x16) && (param_7 == '\0')) {\n        FUN_00077ac8(auStack_34,param_2,param_6);\n        piVar7 = param_2;\n        if (local_30 != '\x15') {\n          uVar3 = 0xb;\n          goto LAB_00077d90;\n        }\n      }\n      *param_1 = 0;\n      *(byte *)(param_1 + 1) = *param_3;\n      uVar3 = 0;\n    }" { (if_statement "if ((bVar1 == 0x16) && (param_7 == '\0')) {\n        FUN_00077ac8(auStack_34,param_2,param_6);\n        piVar7 = param_2;\n        if (local_30 != '\x15') {\n          uVar3 = 0xb;\n          goto LAB_00077d90;\n        }\n      }" if (parenthesized_expression "((bVar1 == 0x16) && (param_7 == '\0'))" ( (binary_expression "(bVar1 == 0x16) && (param_7 == '\0')" (parenthesized_expression "(bVar1 == 0x16)" ( (binary_expression "bVar1 == 0x16" identifier == number_literal) )) && (parenthesized_expression "(param_7 == '\0')" ( (binary_expression "param_7 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n        FUN_00077ac8(auStack_34,param_2,param_6);\n        piVar7 = param_2;\n        if (local_30 != '\x15') {\n          uVar3 = 0xb;\n          goto LAB_00077d90;\n        }\n      }" { (expression_statement "FUN_00077ac8(auStack_34,param_2,param_6);" (call_expression "FUN_00077ac8(auStack_34,param_2,param_6)" identifier (argument_list "(auStack_34,param_2,param_6)" ( identifier , identifier , identifier ))) ;) (expression_statement "piVar7 = param_2;" (assignment_expression "piVar7 = param_2" identifier = identifier) ;) (if_statement "if (local_30 != '\x15') {\n          uVar3 = 0xb;\n          goto LAB_00077d90;\n        }" if (parenthesized_expression "(local_30 != '\x15')" ( (binary_expression "local_30 != '\x15'" identifier != (char_literal "'\x15'" ' escape_sequence ')) )) (compound_statement "{\n          uVar3 = 0xb;\n          goto LAB_00077d90;\n        }" { (expression_statement "uVar3 = 0xb;" (assignment_expression "uVar3 = 0xb" identifier = number_literal) ;) (goto_statement "goto LAB_00077d90;" goto statement_identifier ;) })) })) (expression_statement "*param_1 = 0;" (assignment_expression "*param_1 = 0" (pointer_expression "*param_1" * identifier) = number_literal) ;) (expression_statement "*(byte *)(param_1 + 1) = *param_3;" (assignment_expression "*(byte *)(param_1 + 1) = *param_3" (pointer_expression "*(byte *)(param_1 + 1)" * (cast_expression "(byte *)(param_1 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 1)" ( (binary_expression "param_1 + 1" identifier + number_literal) )))) = (pointer_expression "*param_3" * identifier)) ;) (expression_statement "uVar3 = 0;" (assignment_expression "uVar3 = 0" identifier = number_literal) ;) }))) }) (else_clause "else {\n    *param_1 = 1;\n    piVar7 = (int *)param_2[10];\n    uVar3 = FUN_00077634(param_2);\n    param_1[1] = uVar3;\n    param_2[10] = param_2[10] + iVar2;\n    uVar3 = 0;\n  }" else (compound_statement "{\n    *param_1 = 1;\n    piVar7 = (int *)param_2[10];\n    uVar3 = FUN_00077634(param_2);\n    param_1[1] = uVar3;\n    param_2[10] = param_2[10] + iVar2;\n    uVar3 = 0;\n  }" { (expression_statement "*param_1 = 1;" (assignment_expression "*param_1 = 1" (pointer_expression "*param_1" * identifier) = number_literal) ;) (expression_statement "piVar7 = (int *)param_2[10];" (assignment_expression "piVar7 = (int *)param_2[10]" identifier = (cast_expression "(int *)param_2[10]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[10]" identifier [ number_literal ]))) ;) (expression_statement "uVar3 = FUN_00077634(param_2);" (assignment_expression "uVar3 = FUN_00077634(param_2)" identifier = (call_expression "FUN_00077634(param_2)" identifier (argument_list "(param_2)" ( identifier )))) ;) (expression_statement "param_1[1] = uVar3;" (assignment_expression "param_1[1] = uVar3" (subscript_expression "param_1[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_2[10] = param_2[10] + iVar2;" (assignment_expression "param_2[10] = param_2[10] + iVar2" (subscript_expression "param_2[10]" identifier [ number_literal ]) = (binary_expression "param_2[10] + iVar2" (subscript_expression "param_2[10]" identifier [ number_literal ]) + identifier)) ;) (expression_statement "uVar3 = 0;" (assignment_expression "uVar3 = 0" identifier = number_literal) ;) }))) (labeled_statement "LAB_00077d90:\n  if (local_2c == *(int *)PTR___stack_chk_guard_000b7c68) {\n    return uVar3;\n  }" statement_identifier : (if_statement "if (local_2c == *(int *)PTR___stack_chk_guard_000b7c68) {\n    return uVar3;\n  }" if (parenthesized_expression "(local_2c == *(int *)PTR___stack_chk_guard_000b7c68)" ( (binary_expression "local_2c == *(int *)PTR___stack_chk_guard_000b7c68" identifier == (pointer_expression "*(int *)PTR___stack_chk_guard_000b7c68" * (cast_expression "(int *)PTR___stack_chk_guard_000b7c68" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n    return uVar3;\n  }" { (return_statement "return uVar3;" return identifier ;) }))) (expression_statement "(*(code *)PTR___stack_chk_fail_000b7bfc)();" (call_expression "(*(code *)PTR___stack_chk_fail_000b7bfc)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_000b7bfc)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_000b7bfc" * (cast_expression "(code *)PTR___stack_chk_fail_000b7bfc" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (if_statement "if ((*(char *)(piVar7 + 6) == '\x11') && (local_2c == piVar7[5])) {\n    piVar7[6] = piVar7[6] & 0xffffefffU | 0x1000;\n  }" if (parenthesized_expression "((*(char *)(piVar7 + 6) == '\x11') && (local_2c == piVar7[5]))" ( (binary_expression "(*(char *)(piVar7 + 6) == '\x11') && (local_2c == piVar7[5])" (parenthesized_expression "(*(char *)(piVar7 + 6) == '\x11')" ( (binary_expression "*(char *)(piVar7 + 6) == '\x11'" (pointer_expression "*(char *)(piVar7 + 6)" * (cast_expression "(char *)(piVar7 + 6)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar7 + 6)" ( (binary_expression "piVar7 + 6" identifier + number_literal) )))) == (char_literal "'\x11'" ' escape_sequence ')) )) && (parenthesized_expression "(local_2c == piVar7[5])" ( (binary_expression "local_2c == piVar7[5]" identifier == (subscript_expression "piVar7[5]" identifier [ number_literal ])) ))) )) (compound_statement "{\n    piVar7[6] = piVar7[6] & 0xffffefffU | 0x1000;\n  }" { (expression_statement "piVar7[6] = piVar7[6] & 0xffffefffU | 0x1000;" (assignment_expression "piVar7[6] = piVar7[6] & 0xffffefffU | 0x1000" (subscript_expression "piVar7[6]" identifier [ number_literal ]) = (binary_expression "piVar7[6] & 0xffffefffU | 0x1000" (binary_expression "piVar7[6] & 0xffffefffU" (subscript_expression "piVar7[6]" identifier [ number_literal ]) & number_literal) | number_literal)) ;) })) (return_statement "return 0;" return number_literal ;) })))
(translation_unit "reg_errcode_t\nparse_bracket_element\n          (bracket_elem_t *elem,re_string_t *regexp,re_token_t *token,int token_len,re_dfa_t *dfa,\n          reg_syntax_t syntax,_Bool accept_hyphen)\n\n{\n  byte bVar1;\n  char cVar2;\n  uint uVar3;\n  int iVar4;\n  reg_errcode_t rVar5;\n  wint_t wVar6;\n  code *pcVar7;\n  byte *pbVar8;\n  int iVar9;\n  re_string_t *prVar10;\n  re_string_t *prVar11;\n  byte bVar12;\n  re_token_t token2;\n  \n  uVar3 = *(uint *)PTR___stack_chk_guard_000b7c68;\n  prVar11 = (re_string_t *)regexp->cur_idx;\n  prVar10 = prVar11;\n  iVar4 = re_string_char_size_at(regexp,(Idx)prVar11);\n  iVar9 = (int)&prVar11->raw_mbs + token_len;\n  if (iVar4 < 2) {\n    regexp->cur_idx = iVar9;\n    bVar1 = token->field_0x4;\n    if (((bVar1 & 0xfb) == 0x1a) || (bVar1 == 0x1c)) {\n      iVar4 = 0;\n      if (iVar9 < regexp->stop) {\n        bVar1 = (token->opr).c;\n        pcVar7 = (code *)(PTR_LAB_000b7a18 + 0x75b0);\n        do {\n          if (token->field_0x4 == '\x1e') {\n            if (regexp->mbs_allocated == '\0') {\n              iVar9 = regexp->cur_idx;\n              regexp->cur_idx = iVar9 + 1;\n              bVar12 = regexp->mbs[iVar9];\n            }\n            else if (regexp->offsets_needed == '\0') {\n              iVar9 = regexp->cur_idx;\n              prVar10 = (re_string_t *)(iVar9 + 1);\n              regexp->cur_idx = (Idx)prVar10;\n              bVar12 = regexp->raw_mbs[iVar9 + regexp->raw_mbs_idx];\n            }\n            else {\n              prVar11 = (re_string_t *)regexp->cur_idx;\n              if ((prVar11 == (re_string_t *)regexp->valid_len) ||\n                 (regexp->wcs[(int)prVar11] != 0xffffffff)) {\n                bVar12 = regexp->raw_mbs[regexp->raw_mbs_idx + regexp->offsets[(int)prVar11]];\n                prVar10 = prVar11;\n                if ((bVar12 & 0x80) == 0) {\n                  iVar9 = (*pcVar7)(regexp);\n                  regexp->cur_idx = (int)&prVar11->raw_mbs + iVar9;\n                }\n                else {\n                  regexp->cur_idx = (Idx)((int)&prVar11->raw_mbs + 1);\n                  bVar12 = regexp->mbs[(int)prVar11];\n                }\n              }\n              else {\n                regexp->cur_idx = (Idx)((int)&prVar11->raw_mbs + 1);\n                bVar12 = regexp->mbs[(int)prVar11];\n              }\n            }\n          }\n          else {\n            iVar9 = regexp->cur_idx;\n            regexp->cur_idx = iVar9 + 1;\n            bVar12 = regexp->mbs[iVar9];\n          }\n          iVar9 = regexp->cur_idx;\n          rVar5 = _REG_EBRACK;\n          if (regexp->stop <= iVar9) goto LAB_00077d90;\n          if ((bVar1 == bVar12) && (regexp->mbs[iVar9] == ']')) {\n            regexp->cur_idx = iVar9 + 1;\n            (elem->opr).name[iVar4] = '\0';\n            cVar2 = token->field_0x4;\n            if (cVar2 == '\x1c') {\n              elem->type = EQUIV_CLASS;\n              rVar5 = _REG_NOERROR;\n            }\n            else if (cVar2 == '\x1e') {\n              elem->type = CHAR_CLASS;\n              rVar5 = _REG_NOERROR;\n            }\n            else if (cVar2 == '\x1a') {\n              elem->type = COLL_SYM;\n              rVar5 = _REG_NOERROR;\n            }\n            else {\n              rVar5 = _REG_NOERROR;\n            }\n            goto LAB_00077d90;\n          }\n          pbVar8 = (elem->opr).name + iVar4;\n          iVar4 = iVar4 + 1;\n          *pbVar8 = bVar12;\n        } while (iVar4 != 0x20);\n        rVar5 = _REG_EBRACK;\n      }\n      else {\n        rVar5 = _REG_EBRACK;\n      }\n    }\n    else {\n      if ((bVar1 == 0x16) && (!accept_hyphen)) {\n        peek_token_bracket(&token2,regexp,syntax);\n        prVar10 = regexp;\n        if (token2._4_1_ != '\x15') {\n          rVar5 = _REG_ERANGE;\n          goto LAB_00077d90;\n        }\n      }\n      elem->type = SB_CHAR;\n      (elem->opr).ch = (token->opr).c;\n      rVar5 = _REG_NOERROR;\n    }\n  }\n  else {\n    elem->type = MB_CHAR;\n    prVar10 = (re_string_t *)regexp->cur_idx;\n    wVar6 = re_string_wchar_at(regexp,(Idx)prVar10);\n    (elem->opr).wch = wVar6;\n    regexp->cur_idx = regexp->cur_idx + iVar4;\n    rVar5 = _REG_NOERROR;\n  }\nLAB_00077d90:\n  if (uVar3 == *(uint *)PTR___stack_chk_guard_000b7c68) {\n    return rVar5;\n  }\n  (*(code *)PTR___stack_chk_fail_000b7bfc)();\n  if ((*(char *)&prVar10->raw_mbs_idx == '\x11') && (uVar3 == (prVar10->cur_state).__value.__wch)) {\n    prVar10->raw_mbs_idx = prVar10->raw_mbs_idx & 0xffffefffU | 0x1000;\n  }\n  return _REG_NOERROR;\n}\n\n" (function_definition "reg_errcode_t\nparse_bracket_element\n          (bracket_elem_t *elem,re_string_t *regexp,re_token_t *token,int token_len,re_dfa_t *dfa,\n          reg_syntax_t syntax,_Bool accept_hyphen)\n\n{\n  byte bVar1;\n  char cVar2;\n  uint uVar3;\n  int iVar4;\n  reg_errcode_t rVar5;\n  wint_t wVar6;\n  code *pcVar7;\n  byte *pbVar8;\n  int iVar9;\n  re_string_t *prVar10;\n  re_string_t *prVar11;\n  byte bVar12;\n  re_token_t token2;\n  \n  uVar3 = *(uint *)PTR___stack_chk_guard_000b7c68;\n  prVar11 = (re_string_t *)regexp->cur_idx;\n  prVar10 = prVar11;\n  iVar4 = re_string_char_size_at(regexp,(Idx)prVar11);\n  iVar9 = (int)&prVar11->raw_mbs + token_len;\n  if (iVar4 < 2) {\n    regexp->cur_idx = iVar9;\n    bVar1 = token->field_0x4;\n    if (((bVar1 & 0xfb) == 0x1a) || (bVar1 == 0x1c)) {\n      iVar4 = 0;\n      if (iVar9 < regexp->stop) {\n        bVar1 = (token->opr).c;\n        pcVar7 = (code *)(PTR_LAB_000b7a18 + 0x75b0);\n        do {\n          if (token->field_0x4 == '\x1e') {\n            if (regexp->mbs_allocated == '\0') {\n              iVar9 = regexp->cur_idx;\n              regexp->cur_idx = iVar9 + 1;\n              bVar12 = regexp->mbs[iVar9];\n            }\n            else if (regexp->offsets_needed == '\0') {\n              iVar9 = regexp->cur_idx;\n              prVar10 = (re_string_t *)(iVar9 + 1);\n              regexp->cur_idx = (Idx)prVar10;\n              bVar12 = regexp->raw_mbs[iVar9 + regexp->raw_mbs_idx];\n            }\n            else {\n              prVar11 = (re_string_t *)regexp->cur_idx;\n              if ((prVar11 == (re_string_t *)regexp->valid_len) ||\n                 (regexp->wcs[(int)prVar11] != 0xffffffff)) {\n                bVar12 = regexp->raw_mbs[regexp->raw_mbs_idx + regexp->offsets[(int)prVar11]];\n                prVar10 = prVar11;\n                if ((bVar12 & 0x80) == 0) {\n                  iVar9 = (*pcVar7)(regexp);\n                  regexp->cur_idx = (int)&prVar11->raw_mbs + iVar9;\n                }\n                else {\n                  regexp->cur_idx = (Idx)((int)&prVar11->raw_mbs + 1);\n                  bVar12 = regexp->mbs[(int)prVar11];\n                }\n              }\n              else {\n                regexp->cur_idx = (Idx)((int)&prVar11->raw_mbs + 1);\n                bVar12 = regexp->mbs[(int)prVar11];\n              }\n            }\n          }\n          else {\n            iVar9 = regexp->cur_idx;\n            regexp->cur_idx = iVar9 + 1;\n            bVar12 = regexp->mbs[iVar9];\n          }\n          iVar9 = regexp->cur_idx;\n          rVar5 = _REG_EBRACK;\n          if (regexp->stop <= iVar9) goto LAB_00077d90;\n          if ((bVar1 == bVar12) && (regexp->mbs[iVar9] == ']')) {\n            regexp->cur_idx = iVar9 + 1;\n            (elem->opr).name[iVar4] = '\0';\n            cVar2 = token->field_0x4;\n            if (cVar2 == '\x1c') {\n              elem->type = EQUIV_CLASS;\n              rVar5 = _REG_NOERROR;\n            }\n            else if (cVar2 == '\x1e') {\n              elem->type = CHAR_CLASS;\n              rVar5 = _REG_NOERROR;\n            }\n            else if (cVar2 == '\x1a') {\n              elem->type = COLL_SYM;\n              rVar5 = _REG_NOERROR;\n            }\n            else {\n              rVar5 = _REG_NOERROR;\n            }\n            goto LAB_00077d90;\n          }\n          pbVar8 = (elem->opr).name + iVar4;\n          iVar4 = iVar4 + 1;\n          *pbVar8 = bVar12;\n        } while (iVar4 != 0x20);\n        rVar5 = _REG_EBRACK;\n      }\n      else {\n        rVar5 = _REG_EBRACK;\n      }\n    }\n    else {\n      if ((bVar1 == 0x16) && (!accept_hyphen)) {\n        peek_token_bracket(&token2,regexp,syntax);\n        prVar10 = regexp;\n        if (token2._4_1_ != '\x15') {\n          rVar5 = _REG_ERANGE;\n          goto LAB_00077d90;\n        }\n      }\n      elem->type = SB_CHAR;\n      (elem->opr).ch = (token->opr).c;\n      rVar5 = _REG_NOERROR;\n    }\n  }\n  else {\n    elem->type = MB_CHAR;\n    prVar10 = (re_string_t *)regexp->cur_idx;\n    wVar6 = re_string_wchar_at(regexp,(Idx)prVar10);\n    (elem->opr).wch = wVar6;\n    regexp->cur_idx = regexp->cur_idx + iVar4;\n    rVar5 = _REG_NOERROR;\n  }\nLAB_00077d90:\n  if (uVar3 == *(uint *)PTR___stack_chk_guard_000b7c68) {\n    return rVar5;\n  }\n  (*(code *)PTR___stack_chk_fail_000b7bfc)();\n  if ((*(char *)&prVar10->raw_mbs_idx == '\x11') && (uVar3 == (prVar10->cur_state).__value.__wch)) {\n    prVar10->raw_mbs_idx = prVar10->raw_mbs_idx & 0xffffefffU | 0x1000;\n  }\n  return _REG_NOERROR;\n}" type_identifier (function_declarator "parse_bracket_element\n          (bracket_elem_t *elem,re_string_t *regexp,re_token_t *token,int token_len,re_dfa_t *dfa,\n          reg_syntax_t syntax,_Bool accept_hyphen)" identifier (parameter_list "(bracket_elem_t *elem,re_string_t *regexp,re_token_t *token,int token_len,re_dfa_t *dfa,\n          reg_syntax_t syntax,_Bool accept_hyphen)" ( (parameter_declaration "bracket_elem_t *elem" type_identifier (pointer_declarator "*elem" * identifier)) , (parameter_declaration "re_string_t *regexp" type_identifier (pointer_declarator "*regexp" * identifier)) , (parameter_declaration "re_token_t *token" type_identifier (pointer_declarator "*token" * identifier)) , (parameter_declaration "int token_len" primitive_type identifier) , (parameter_declaration "re_dfa_t *dfa" type_identifier (pointer_declarator "*dfa" * identifier)) , (parameter_declaration "reg_syntax_t syntax" type_identifier identifier) , (parameter_declaration "_Bool accept_hyphen" type_identifier identifier) ))) (compound_statement "{\n  byte bVar1;\n  char cVar2;\n  uint uVar3;\n  int iVar4;\n  reg_errcode_t rVar5;\n  wint_t wVar6;\n  code *pcVar7;\n  byte *pbVar8;\n  int iVar9;\n  re_string_t *prVar10;\n  re_string_t *prVar11;\n  byte bVar12;\n  re_token_t token2;\n  \n  uVar3 = *(uint *)PTR___stack_chk_guard_000b7c68;\n  prVar11 = (re_string_t *)regexp->cur_idx;\n  prVar10 = prVar11;\n  iVar4 = re_string_char_size_at(regexp,(Idx)prVar11);\n  iVar9 = (int)&prVar11->raw_mbs + token_len;\n  if (iVar4 < 2) {\n    regexp->cur_idx = iVar9;\n    bVar1 = token->field_0x4;\n    if (((bVar1 & 0xfb) == 0x1a) || (bVar1 == 0x1c)) {\n      iVar4 = 0;\n      if (iVar9 < regexp->stop) {\n        bVar1 = (token->opr).c;\n        pcVar7 = (code *)(PTR_LAB_000b7a18 + 0x75b0);\n        do {\n          if (token->field_0x4 == '\x1e') {\n            if (regexp->mbs_allocated == '\0') {\n              iVar9 = regexp->cur_idx;\n              regexp->cur_idx = iVar9 + 1;\n              bVar12 = regexp->mbs[iVar9];\n            }\n            else if (regexp->offsets_needed == '\0') {\n              iVar9 = regexp->cur_idx;\n              prVar10 = (re_string_t *)(iVar9 + 1);\n              regexp->cur_idx = (Idx)prVar10;\n              bVar12 = regexp->raw_mbs[iVar9 + regexp->raw_mbs_idx];\n            }\n            else {\n              prVar11 = (re_string_t *)regexp->cur_idx;\n              if ((prVar11 == (re_string_t *)regexp->valid_len) ||\n                 (regexp->wcs[(int)prVar11] != 0xffffffff)) {\n                bVar12 = regexp->raw_mbs[regexp->raw_mbs_idx + regexp->offsets[(int)prVar11]];\n                prVar10 = prVar11;\n                if ((bVar12 & 0x80) == 0) {\n                  iVar9 = (*pcVar7)(regexp);\n                  regexp->cur_idx = (int)&prVar11->raw_mbs + iVar9;\n                }\n                else {\n                  regexp->cur_idx = (Idx)((int)&prVar11->raw_mbs + 1);\n                  bVar12 = regexp->mbs[(int)prVar11];\n                }\n              }\n              else {\n                regexp->cur_idx = (Idx)((int)&prVar11->raw_mbs + 1);\n                bVar12 = regexp->mbs[(int)prVar11];\n              }\n            }\n          }\n          else {\n            iVar9 = regexp->cur_idx;\n            regexp->cur_idx = iVar9 + 1;\n            bVar12 = regexp->mbs[iVar9];\n          }\n          iVar9 = regexp->cur_idx;\n          rVar5 = _REG_EBRACK;\n          if (regexp->stop <= iVar9) goto LAB_00077d90;\n          if ((bVar1 == bVar12) && (regexp->mbs[iVar9] == ']')) {\n            regexp->cur_idx = iVar9 + 1;\n            (elem->opr).name[iVar4] = '\0';\n            cVar2 = token->field_0x4;\n            if (cVar2 == '\x1c') {\n              elem->type = EQUIV_CLASS;\n              rVar5 = _REG_NOERROR;\n            }\n            else if (cVar2 == '\x1e') {\n              elem->type = CHAR_CLASS;\n              rVar5 = _REG_NOERROR;\n            }\n            else if (cVar2 == '\x1a') {\n              elem->type = COLL_SYM;\n              rVar5 = _REG_NOERROR;\n            }\n            else {\n              rVar5 = _REG_NOERROR;\n            }\n            goto LAB_00077d90;\n          }\n          pbVar8 = (elem->opr).name + iVar4;\n          iVar4 = iVar4 + 1;\n          *pbVar8 = bVar12;\n        } while (iVar4 != 0x20);\n        rVar5 = _REG_EBRACK;\n      }\n      else {\n        rVar5 = _REG_EBRACK;\n      }\n    }\n    else {\n      if ((bVar1 == 0x16) && (!accept_hyphen)) {\n        peek_token_bracket(&token2,regexp,syntax);\n        prVar10 = regexp;\n        if (token2._4_1_ != '\x15') {\n          rVar5 = _REG_ERANGE;\n          goto LAB_00077d90;\n        }\n      }\n      elem->type = SB_CHAR;\n      (elem->opr).ch = (token->opr).c;\n      rVar5 = _REG_NOERROR;\n    }\n  }\n  else {\n    elem->type = MB_CHAR;\n    prVar10 = (re_string_t *)regexp->cur_idx;\n    wVar6 = re_string_wchar_at(regexp,(Idx)prVar10);\n    (elem->opr).wch = wVar6;\n    regexp->cur_idx = regexp->cur_idx + iVar4;\n    rVar5 = _REG_NOERROR;\n  }\nLAB_00077d90:\n  if (uVar3 == *(uint *)PTR___stack_chk_guard_000b7c68) {\n    return rVar5;\n  }\n  (*(code *)PTR___stack_chk_fail_000b7bfc)();\n  if ((*(char *)&prVar10->raw_mbs_idx == '\x11') && (uVar3 == (prVar10->cur_state).__value.__wch)) {\n    prVar10->raw_mbs_idx = prVar10->raw_mbs_idx & 0xffffefffU | 0x1000;\n  }\n  return _REG_NOERROR;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "char cVar2;" primitive_type identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "reg_errcode_t rVar5;" type_identifier identifier ;) (declaration "wint_t wVar6;" type_identifier identifier ;) (declaration "code *pcVar7;" type_identifier (pointer_declarator "*pcVar7" * identifier) ;) (declaration "byte *pbVar8;" type_identifier (pointer_declarator "*pbVar8" * identifier) ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "re_string_t *prVar10;" type_identifier (pointer_declarator "*prVar10" * identifier) ;) (declaration "re_string_t *prVar11;" type_identifier (pointer_declarator "*prVar11" * identifier) ;) (declaration "byte bVar12;" type_identifier identifier ;) (declaration "re_token_t token2;" type_identifier identifier ;) (expression_statement "uVar3 = *(uint *)PTR___stack_chk_guard_000b7c68;" (assignment_expression "uVar3 = *(uint *)PTR___stack_chk_guard_000b7c68" identifier = (pointer_expression "*(uint *)PTR___stack_chk_guard_000b7c68" * (cast_expression "(uint *)PTR___stack_chk_guard_000b7c68" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "prVar11 = (re_string_t *)regexp->cur_idx;" (assignment_expression "prVar11 = (re_string_t *)regexp->cur_idx" identifier = (cast_expression "(re_string_t *)regexp->cur_idx" ( (type_descriptor "re_string_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "regexp->cur_idx" identifier -> field_identifier))) ;) (expression_statement "prVar10 = prVar11;" (assignment_expression "prVar10 = prVar11" identifier = identifier) ;) (expression_statement "iVar4 = re_string_char_size_at(regexp,(Idx)prVar11);" (assignment_expression "iVar4 = re_string_char_size_at(regexp,(Idx)prVar11)" identifier = (call_expression "re_string_char_size_at(regexp,(Idx)prVar11)" identifier (argument_list "(regexp,(Idx)prVar11)" ( identifier , (cast_expression "(Idx)prVar11" ( (type_descriptor "Idx" type_identifier) ) identifier) )))) ;) (expression_statement "iVar9 = (int)&prVar11->raw_mbs + token_len;" (assignment_expression "iVar9 = (int)&prVar11->raw_mbs + token_len" identifier = (binary_expression "(int)&prVar11->raw_mbs + token_len" (cast_expression "(int)&prVar11->raw_mbs" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&prVar11->raw_mbs" & (field_expression "prVar11->raw_mbs" identifier -> field_identifier))) + identifier)) ;) (if_statement "if (iVar4 < 2) {\n    regexp->cur_idx = iVar9;\n    bVar1 = token->field_0x4;\n    if (((bVar1 & 0xfb) == 0x1a) || (bVar1 == 0x1c)) {\n      iVar4 = 0;\n      if (iVar9 < regexp->stop) {\n        bVar1 = (token->opr).c;\n        pcVar7 = (code *)(PTR_LAB_000b7a18 + 0x75b0);\n        do {\n          if (token->field_0x4 == '\x1e') {\n            if (regexp->mbs_allocated == '\0') {\n              iVar9 = regexp->cur_idx;\n              regexp->cur_idx = iVar9 + 1;\n              bVar12 = regexp->mbs[iVar9];\n            }\n            else if (regexp->offsets_needed == '\0') {\n              iVar9 = regexp->cur_idx;\n              prVar10 = (re_string_t *)(iVar9 + 1);\n              regexp->cur_idx = (Idx)prVar10;\n              bVar12 = regexp->raw_mbs[iVar9 + regexp->raw_mbs_idx];\n            }\n            else {\n              prVar11 = (re_string_t *)regexp->cur_idx;\n              if ((prVar11 == (re_string_t *)regexp->valid_len) ||\n                 (regexp->wcs[(int)prVar11] != 0xffffffff)) {\n                bVar12 = regexp->raw_mbs[regexp->raw_mbs_idx + regexp->offsets[(int)prVar11]];\n                prVar10 = prVar11;\n                if ((bVar12 & 0x80) == 0) {\n                  iVar9 = (*pcVar7)(regexp);\n                  regexp->cur_idx = (int)&prVar11->raw_mbs + iVar9;\n                }\n                else {\n                  regexp->cur_idx = (Idx)((int)&prVar11->raw_mbs + 1);\n                  bVar12 = regexp->mbs[(int)prVar11];\n                }\n              }\n              else {\n                regexp->cur_idx = (Idx)((int)&prVar11->raw_mbs + 1);\n                bVar12 = regexp->mbs[(int)prVar11];\n              }\n            }\n          }\n          else {\n            iVar9 = regexp->cur_idx;\n            regexp->cur_idx = iVar9 + 1;\n            bVar12 = regexp->mbs[iVar9];\n          }\n          iVar9 = regexp->cur_idx;\n          rVar5 = _REG_EBRACK;\n          if (regexp->stop <= iVar9) goto LAB_00077d90;\n          if ((bVar1 == bVar12) && (regexp->mbs[iVar9] == ']')) {\n            regexp->cur_idx = iVar9 + 1;\n            (elem->opr).name[iVar4] = '\0';\n            cVar2 = token->field_0x4;\n            if (cVar2 == '\x1c') {\n              elem->type = EQUIV_CLASS;\n              rVar5 = _REG_NOERROR;\n            }\n            else if (cVar2 == '\x1e') {\n              elem->type = CHAR_CLASS;\n              rVar5 = _REG_NOERROR;\n            }\n            else if (cVar2 == '\x1a') {\n              elem->type = COLL_SYM;\n              rVar5 = _REG_NOERROR;\n            }\n            else {\n              rVar5 = _REG_NOERROR;\n            }\n            goto LAB_00077d90;\n          }\n          pbVar8 = (elem->opr).name + iVar4;\n          iVar4 = iVar4 + 1;\n          *pbVar8 = bVar12;\n        } while (iVar4 != 0x20);\n        rVar5 = _REG_EBRACK;\n      }\n      else {\n        rVar5 = _REG_EBRACK;\n      }\n    }\n    else {\n      if ((bVar1 == 0x16) && (!accept_hyphen)) {\n        peek_token_bracket(&token2,regexp,syntax);\n        prVar10 = regexp;\n        if (token2._4_1_ != '\x15') {\n          rVar5 = _REG_ERANGE;\n          goto LAB_00077d90;\n        }\n      }\n      elem->type = SB_CHAR;\n      (elem->opr).ch = (token->opr).c;\n      rVar5 = _REG_NOERROR;\n    }\n  }\n  else {\n    elem->type = MB_CHAR;\n    prVar10 = (re_string_t *)regexp->cur_idx;\n    wVar6 = re_string_wchar_at(regexp,(Idx)prVar10);\n    (elem->opr).wch = wVar6;\n    regexp->cur_idx = regexp->cur_idx + iVar4;\n    rVar5 = _REG_NOERROR;\n  }" if (parenthesized_expression "(iVar4 < 2)" ( (binary_expression "iVar4 < 2" identifier < number_literal) )) (compound_statement "{\n    regexp->cur_idx = iVar9;\n    bVar1 = token->field_0x4;\n    if (((bVar1 & 0xfb) == 0x1a) || (bVar1 == 0x1c)) {\n      iVar4 = 0;\n      if (iVar9 < regexp->stop) {\n        bVar1 = (token->opr).c;\n        pcVar7 = (code *)(PTR_LAB_000b7a18 + 0x75b0);\n        do {\n          if (token->field_0x4 == '\x1e') {\n            if (regexp->mbs_allocated == '\0') {\n              iVar9 = regexp->cur_idx;\n              regexp->cur_idx = iVar9 + 1;\n              bVar12 = regexp->mbs[iVar9];\n            }\n            else if (regexp->offsets_needed == '\0') {\n              iVar9 = regexp->cur_idx;\n              prVar10 = (re_string_t *)(iVar9 + 1);\n              regexp->cur_idx = (Idx)prVar10;\n              bVar12 = regexp->raw_mbs[iVar9 + regexp->raw_mbs_idx];\n            }\n            else {\n              prVar11 = (re_string_t *)regexp->cur_idx;\n              if ((prVar11 == (re_string_t *)regexp->valid_len) ||\n                 (regexp->wcs[(int)prVar11] != 0xffffffff)) {\n                bVar12 = regexp->raw_mbs[regexp->raw_mbs_idx + regexp->offsets[(int)prVar11]];\n                prVar10 = prVar11;\n                if ((bVar12 & 0x80) == 0) {\n                  iVar9 = (*pcVar7)(regexp);\n                  regexp->cur_idx = (int)&prVar11->raw_mbs + iVar9;\n                }\n                else {\n                  regexp->cur_idx = (Idx)((int)&prVar11->raw_mbs + 1);\n                  bVar12 = regexp->mbs[(int)prVar11];\n                }\n              }\n              else {\n                regexp->cur_idx = (Idx)((int)&prVar11->raw_mbs + 1);\n                bVar12 = regexp->mbs[(int)prVar11];\n              }\n            }\n          }\n          else {\n            iVar9 = regexp->cur_idx;\n            regexp->cur_idx = iVar9 + 1;\n            bVar12 = regexp->mbs[iVar9];\n          }\n          iVar9 = regexp->cur_idx;\n          rVar5 = _REG_EBRACK;\n          if (regexp->stop <= iVar9) goto LAB_00077d90;\n          if ((bVar1 == bVar12) && (regexp->mbs[iVar9] == ']')) {\n            regexp->cur_idx = iVar9 + 1;\n            (elem->opr).name[iVar4] = '\0';\n            cVar2 = token->field_0x4;\n            if (cVar2 == '\x1c') {\n              elem->type = EQUIV_CLASS;\n              rVar5 = _REG_NOERROR;\n            }\n            else if (cVar2 == '\x1e') {\n              elem->type = CHAR_CLASS;\n              rVar5 = _REG_NOERROR;\n            }\n            else if (cVar2 == '\x1a') {\n              elem->type = COLL_SYM;\n              rVar5 = _REG_NOERROR;\n            }\n            else {\n              rVar5 = _REG_NOERROR;\n            }\n            goto LAB_00077d90;\n          }\n          pbVar8 = (elem->opr).name + iVar4;\n          iVar4 = iVar4 + 1;\n          *pbVar8 = bVar12;\n        } while (iVar4 != 0x20);\n        rVar5 = _REG_EBRACK;\n      }\n      else {\n        rVar5 = _REG_EBRACK;\n      }\n    }\n    else {\n      if ((bVar1 == 0x16) && (!accept_hyphen)) {\n        peek_token_bracket(&token2,regexp,syntax);\n        prVar10 = regexp;\n        if (token2._4_1_ != '\x15') {\n          rVar5 = _REG_ERANGE;\n          goto LAB_00077d90;\n        }\n      }\n      elem->type = SB_CHAR;\n      (elem->opr).ch = (token->opr).c;\n      rVar5 = _REG_NOERROR;\n    }\n  }" { (expression_statement "regexp->cur_idx = iVar9;" (assignment_expression "regexp->cur_idx = iVar9" (field_expression "regexp->cur_idx" identifier -> field_identifier) = identifier) ;) (expression_statement "bVar1 = token->field_0x4;" (assignment_expression "bVar1 = token->field_0x4" identifier = (field_expression "token->field_0x4" identifier -> field_identifier)) ;) (if_statement "if (((bVar1 & 0xfb) == 0x1a) || (bVar1 == 0x1c)) {\n      iVar4 = 0;\n      if (iVar9 < regexp->stop) {\n        bVar1 = (token->opr).c;\n        pcVar7 = (code *)(PTR_LAB_000b7a18 + 0x75b0);\n        do {\n          if (token->field_0x4 == '\x1e') {\n            if (regexp->mbs_allocated == '\0') {\n              iVar9 = regexp->cur_idx;\n              regexp->cur_idx = iVar9 + 1;\n              bVar12 = regexp->mbs[iVar9];\n            }\n            else if (regexp->offsets_needed == '\0') {\n              iVar9 = regexp->cur_idx;\n              prVar10 = (re_string_t *)(iVar9 + 1);\n              regexp->cur_idx = (Idx)prVar10;\n              bVar12 = regexp->raw_mbs[iVar9 + regexp->raw_mbs_idx];\n            }\n            else {\n              prVar11 = (re_string_t *)regexp->cur_idx;\n              if ((prVar11 == (re_string_t *)regexp->valid_len) ||\n                 (regexp->wcs[(int)prVar11] != 0xffffffff)) {\n                bVar12 = regexp->raw_mbs[regexp->raw_mbs_idx + regexp->offsets[(int)prVar11]];\n                prVar10 = prVar11;\n                if ((bVar12 & 0x80) == 0) {\n                  iVar9 = (*pcVar7)(regexp);\n                  regexp->cur_idx = (int)&prVar11->raw_mbs + iVar9;\n                }\n                else {\n                  regexp->cur_idx = (Idx)((int)&prVar11->raw_mbs + 1);\n                  bVar12 = regexp->mbs[(int)prVar11];\n                }\n              }\n              else {\n                regexp->cur_idx = (Idx)((int)&prVar11->raw_mbs + 1);\n                bVar12 = regexp->mbs[(int)prVar11];\n              }\n            }\n          }\n          else {\n            iVar9 = regexp->cur_idx;\n            regexp->cur_idx = iVar9 + 1;\n            bVar12 = regexp->mbs[iVar9];\n          }\n          iVar9 = regexp->cur_idx;\n          rVar5 = _REG_EBRACK;\n          if (regexp->stop <= iVar9) goto LAB_00077d90;\n          if ((bVar1 == bVar12) && (regexp->mbs[iVar9] == ']')) {\n            regexp->cur_idx = iVar9 + 1;\n            (elem->opr).name[iVar4] = '\0';\n            cVar2 = token->field_0x4;\n            if (cVar2 == '\x1c') {\n              elem->type = EQUIV_CLASS;\n              rVar5 = _REG_NOERROR;\n            }\n            else if (cVar2 == '\x1e') {\n              elem->type = CHAR_CLASS;\n              rVar5 = _REG_NOERROR;\n            }\n            else if (cVar2 == '\x1a') {\n              elem->type = COLL_SYM;\n              rVar5 = _REG_NOERROR;\n            }\n            else {\n              rVar5 = _REG_NOERROR;\n            }\n            goto LAB_00077d90;\n          }\n          pbVar8 = (elem->opr).name + iVar4;\n          iVar4 = iVar4 + 1;\n          *pbVar8 = bVar12;\n        } while (iVar4 != 0x20);\n        rVar5 = _REG_EBRACK;\n      }\n      else {\n        rVar5 = _REG_EBRACK;\n      }\n    }\n    else {\n      if ((bVar1 == 0x16) && (!accept_hyphen)) {\n        peek_token_bracket(&token2,regexp,syntax);\n        prVar10 = regexp;\n        if (token2._4_1_ != '\x15') {\n          rVar5 = _REG_ERANGE;\n          goto LAB_00077d90;\n        }\n      }\n      elem->type = SB_CHAR;\n      (elem->opr).ch = (token->opr).c;\n      rVar5 = _REG_NOERROR;\n    }" if (parenthesized_expression "(((bVar1 & 0xfb) == 0x1a) || (bVar1 == 0x1c))" ( (binary_expression "((bVar1 & 0xfb) == 0x1a) || (bVar1 == 0x1c)" (parenthesized_expression "((bVar1 & 0xfb) == 0x1a)" ( (binary_expression "(bVar1 & 0xfb) == 0x1a" (parenthesized_expression "(bVar1 & 0xfb)" ( (binary_expression "bVar1 & 0xfb" identifier & number_literal) )) == number_literal) )) || (parenthesized_expression "(bVar1 == 0x1c)" ( (binary_expression "bVar1 == 0x1c" identifier == number_literal) ))) )) (compound_statement "{\n      iVar4 = 0;\n      if (iVar9 < regexp->stop) {\n        bVar1 = (token->opr).c;\n        pcVar7 = (code *)(PTR_LAB_000b7a18 + 0x75b0);\n        do {\n          if (token->field_0x4 == '\x1e') {\n            if (regexp->mbs_allocated == '\0') {\n              iVar9 = regexp->cur_idx;\n              regexp->cur_idx = iVar9 + 1;\n              bVar12 = regexp->mbs[iVar9];\n            }\n            else if (regexp->offsets_needed == '\0') {\n              iVar9 = regexp->cur_idx;\n              prVar10 = (re_string_t *)(iVar9 + 1);\n              regexp->cur_idx = (Idx)prVar10;\n              bVar12 = regexp->raw_mbs[iVar9 + regexp->raw_mbs_idx];\n            }\n            else {\n              prVar11 = (re_string_t *)regexp->cur_idx;\n              if ((prVar11 == (re_string_t *)regexp->valid_len) ||\n                 (regexp->wcs[(int)prVar11] != 0xffffffff)) {\n                bVar12 = regexp->raw_mbs[regexp->raw_mbs_idx + regexp->offsets[(int)prVar11]];\n                prVar10 = prVar11;\n                if ((bVar12 & 0x80) == 0) {\n                  iVar9 = (*pcVar7)(regexp);\n                  regexp->cur_idx = (int)&prVar11->raw_mbs + iVar9;\n                }\n                else {\n                  regexp->cur_idx = (Idx)((int)&prVar11->raw_mbs + 1);\n                  bVar12 = regexp->mbs[(int)prVar11];\n                }\n              }\n              else {\n                regexp->cur_idx = (Idx)((int)&prVar11->raw_mbs + 1);\n                bVar12 = regexp->mbs[(int)prVar11];\n              }\n            }\n          }\n          else {\n            iVar9 = regexp->cur_idx;\n            regexp->cur_idx = iVar9 + 1;\n            bVar12 = regexp->mbs[iVar9];\n          }\n          iVar9 = regexp->cur_idx;\n          rVar5 = _REG_EBRACK;\n          if (regexp->stop <= iVar9) goto LAB_00077d90;\n          if ((bVar1 == bVar12) && (regexp->mbs[iVar9] == ']')) {\n            regexp->cur_idx = iVar9 + 1;\n            (elem->opr).name[iVar4] = '\0';\n            cVar2 = token->field_0x4;\n            if (cVar2 == '\x1c') {\n              elem->type = EQUIV_CLASS;\n              rVar5 = _REG_NOERROR;\n            }\n            else if (cVar2 == '\x1e') {\n              elem->type = CHAR_CLASS;\n              rVar5 = _REG_NOERROR;\n            }\n            else if (cVar2 == '\x1a') {\n              elem->type = COLL_SYM;\n              rVar5 = _REG_NOERROR;\n            }\n            else {\n              rVar5 = _REG_NOERROR;\n            }\n            goto LAB_00077d90;\n          }\n          pbVar8 = (elem->opr).name + iVar4;\n          iVar4 = iVar4 + 1;\n          *pbVar8 = bVar12;\n        } while (iVar4 != 0x20);\n        rVar5 = _REG_EBRACK;\n      }\n      else {\n        rVar5 = _REG_EBRACK;\n      }\n    }" { (expression_statement "iVar4 = 0;" (assignment_expression "iVar4 = 0" identifier = number_literal) ;) (if_statement "if (iVar9 < regexp->stop) {\n        bVar1 = (token->opr).c;\n        pcVar7 = (code *)(PTR_LAB_000b7a18 + 0x75b0);\n        do {\n          if (token->field_0x4 == '\x1e') {\n            if (regexp->mbs_allocated == '\0') {\n              iVar9 = regexp->cur_idx;\n              regexp->cur_idx = iVar9 + 1;\n              bVar12 = regexp->mbs[iVar9];\n            }\n            else if (regexp->offsets_needed == '\0') {\n              iVar9 = regexp->cur_idx;\n              prVar10 = (re_string_t *)(iVar9 + 1);\n              regexp->cur_idx = (Idx)prVar10;\n              bVar12 = regexp->raw_mbs[iVar9 + regexp->raw_mbs_idx];\n            }\n            else {\n              prVar11 = (re_string_t *)regexp->cur_idx;\n              if ((prVar11 == (re_string_t *)regexp->valid_len) ||\n                 (regexp->wcs[(int)prVar11] != 0xffffffff)) {\n                bVar12 = regexp->raw_mbs[regexp->raw_mbs_idx + regexp->offsets[(int)prVar11]];\n                prVar10 = prVar11;\n                if ((bVar12 & 0x80) == 0) {\n                  iVar9 = (*pcVar7)(regexp);\n                  regexp->cur_idx = (int)&prVar11->raw_mbs + iVar9;\n                }\n                else {\n                  regexp->cur_idx = (Idx)((int)&prVar11->raw_mbs + 1);\n                  bVar12 = regexp->mbs[(int)prVar11];\n                }\n              }\n              else {\n                regexp->cur_idx = (Idx)((int)&prVar11->raw_mbs + 1);\n                bVar12 = regexp->mbs[(int)prVar11];\n              }\n            }\n          }\n          else {\n            iVar9 = regexp->cur_idx;\n            regexp->cur_idx = iVar9 + 1;\n            bVar12 = regexp->mbs[iVar9];\n          }\n          iVar9 = regexp->cur_idx;\n          rVar5 = _REG_EBRACK;\n          if (regexp->stop <= iVar9) goto LAB_00077d90;\n          if ((bVar1 == bVar12) && (regexp->mbs[iVar9] == ']')) {\n            regexp->cur_idx = iVar9 + 1;\n            (elem->opr).name[iVar4] = '\0';\n            cVar2 = token->field_0x4;\n            if (cVar2 == '\x1c') {\n              elem->type = EQUIV_CLASS;\n              rVar5 = _REG_NOERROR;\n            }\n            else if (cVar2 == '\x1e') {\n              elem->type = CHAR_CLASS;\n              rVar5 = _REG_NOERROR;\n            }\n            else if (cVar2 == '\x1a') {\n              elem->type = COLL_SYM;\n              rVar5 = _REG_NOERROR;\n            }\n            else {\n              rVar5 = _REG_NOERROR;\n            }\n            goto LAB_00077d90;\n          }\n          pbVar8 = (elem->opr).name + iVar4;\n          iVar4 = iVar4 + 1;\n          *pbVar8 = bVar12;\n        } while (iVar4 != 0x20);\n        rVar5 = _REG_EBRACK;\n      }\n      else {\n        rVar5 = _REG_EBRACK;\n      }" if (parenthesized_expression "(iVar9 < regexp->stop)" ( (binary_expression "iVar9 < regexp->stop" identifier < (field_expression "regexp->stop" identifier -> field_identifier)) )) (compound_statement "{\n        bVar1 = (token->opr).c;\n        pcVar7 = (code *)(PTR_LAB_000b7a18 + 0x75b0);\n        do {\n          if (token->field_0x4 == '\x1e') {\n            if (regexp->mbs_allocated == '\0') {\n              iVar9 = regexp->cur_idx;\n              regexp->cur_idx = iVar9 + 1;\n              bVar12 = regexp->mbs[iVar9];\n            }\n            else if (regexp->offsets_needed == '\0') {\n              iVar9 = regexp->cur_idx;\n              prVar10 = (re_string_t *)(iVar9 + 1);\n              regexp->cur_idx = (Idx)prVar10;\n              bVar12 = regexp->raw_mbs[iVar9 + regexp->raw_mbs_idx];\n            }\n            else {\n              prVar11 = (re_string_t *)regexp->cur_idx;\n              if ((prVar11 == (re_string_t *)regexp->valid_len) ||\n                 (regexp->wcs[(int)prVar11] != 0xffffffff)) {\n                bVar12 = regexp->raw_mbs[regexp->raw_mbs_idx + regexp->offsets[(int)prVar11]];\n                prVar10 = prVar11;\n                if ((bVar12 & 0x80) == 0) {\n                  iVar9 = (*pcVar7)(regexp);\n                  regexp->cur_idx = (int)&prVar11->raw_mbs + iVar9;\n                }\n                else {\n                  regexp->cur_idx = (Idx)((int)&prVar11->raw_mbs + 1);\n                  bVar12 = regexp->mbs[(int)prVar11];\n                }\n              }\n              else {\n                regexp->cur_idx = (Idx)((int)&prVar11->raw_mbs + 1);\n                bVar12 = regexp->mbs[(int)prVar11];\n              }\n            }\n          }\n          else {\n            iVar9 = regexp->cur_idx;\n            regexp->cur_idx = iVar9 + 1;\n            bVar12 = regexp->mbs[iVar9];\n          }\n          iVar9 = regexp->cur_idx;\n          rVar5 = _REG_EBRACK;\n          if (regexp->stop <= iVar9) goto LAB_00077d90;\n          if ((bVar1 == bVar12) && (regexp->mbs[iVar9] == ']')) {\n            regexp->cur_idx = iVar9 + 1;\n            (elem->opr).name[iVar4] = '\0';\n            cVar2 = token->field_0x4;\n            if (cVar2 == '\x1c') {\n              elem->type = EQUIV_CLASS;\n              rVar5 = _REG_NOERROR;\n            }\n            else if (cVar2 == '\x1e') {\n              elem->type = CHAR_CLASS;\n              rVar5 = _REG_NOERROR;\n            }\n            else if (cVar2 == '\x1a') {\n              elem->type = COLL_SYM;\n              rVar5 = _REG_NOERROR;\n            }\n            else {\n              rVar5 = _REG_NOERROR;\n            }\n            goto LAB_00077d90;\n          }\n          pbVar8 = (elem->opr).name + iVar4;\n          iVar4 = iVar4 + 1;\n          *pbVar8 = bVar12;\n        } while (iVar4 != 0x20);\n        rVar5 = _REG_EBRACK;\n      }" { (expression_statement "bVar1 = (token->opr).c;" (assignment_expression "bVar1 = (token->opr).c" identifier = (field_expression "(token->opr).c" (parenthesized_expression "(token->opr)" ( (field_expression "token->opr" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "pcVar7 = (code *)(PTR_LAB_000b7a18 + 0x75b0);" (assignment_expression "pcVar7 = (code *)(PTR_LAB_000b7a18 + 0x75b0)" identifier = (cast_expression "(code *)(PTR_LAB_000b7a18 + 0x75b0)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_000b7a18 + 0x75b0)" ( (binary_expression "PTR_LAB_000b7a18 + 0x75b0" identifier + number_literal) )))) ;) (do_statement "do {\n          if (token->field_0x4 == '\x1e') {\n            if (regexp->mbs_allocated == '\0') {\n              iVar9 = regexp->cur_idx;\n              regexp->cur_idx = iVar9 + 1;\n              bVar12 = regexp->mbs[iVar9];\n            }\n            else if (regexp->offsets_needed == '\0') {\n              iVar9 = regexp->cur_idx;\n              prVar10 = (re_string_t *)(iVar9 + 1);\n              regexp->cur_idx = (Idx)prVar10;\n              bVar12 = regexp->raw_mbs[iVar9 + regexp->raw_mbs_idx];\n            }\n            else {\n              prVar11 = (re_string_t *)regexp->cur_idx;\n              if ((prVar11 == (re_string_t *)regexp->valid_len) ||\n                 (regexp->wcs[(int)prVar11] != 0xffffffff)) {\n                bVar12 = regexp->raw_mbs[regexp->raw_mbs_idx + regexp->offsets[(int)prVar11]];\n                prVar10 = prVar11;\n                if ((bVar12 & 0x80) == 0) {\n                  iVar9 = (*pcVar7)(regexp);\n                  regexp->cur_idx = (int)&prVar11->raw_mbs + iVar9;\n                }\n                else {\n                  regexp->cur_idx = (Idx)((int)&prVar11->raw_mbs + 1);\n                  bVar12 = regexp->mbs[(int)prVar11];\n                }\n              }\n              else {\n                regexp->cur_idx = (Idx)((int)&prVar11->raw_mbs + 1);\n                bVar12 = regexp->mbs[(int)prVar11];\n              }\n            }\n          }\n          else {\n            iVar9 = regexp->cur_idx;\n            regexp->cur_idx = iVar9 + 1;\n            bVar12 = regexp->mbs[iVar9];\n          }\n          iVar9 = regexp->cur_idx;\n          rVar5 = _REG_EBRACK;\n          if (regexp->stop <= iVar9) goto LAB_00077d90;\n          if ((bVar1 == bVar12) && (regexp->mbs[iVar9] == ']')) {\n            regexp->cur_idx = iVar9 + 1;\n            (elem->opr).name[iVar4] = '\0';\n            cVar2 = token->field_0x4;\n            if (cVar2 == '\x1c') {\n              elem->type = EQUIV_CLASS;\n              rVar5 = _REG_NOERROR;\n            }\n            else if (cVar2 == '\x1e') {\n              elem->type = CHAR_CLASS;\n              rVar5 = _REG_NOERROR;\n            }\n            else if (cVar2 == '\x1a') {\n              elem->type = COLL_SYM;\n              rVar5 = _REG_NOERROR;\n            }\n            else {\n              rVar5 = _REG_NOERROR;\n            }\n            goto LAB_00077d90;\n          }\n          pbVar8 = (elem->opr).name + iVar4;\n          iVar4 = iVar4 + 1;\n          *pbVar8 = bVar12;\n        } while (iVar4 != 0x20);" do (compound_statement "{\n          if (token->field_0x4 == '\x1e') {\n            if (regexp->mbs_allocated == '\0') {\n              iVar9 = regexp->cur_idx;\n              regexp->cur_idx = iVar9 + 1;\n              bVar12 = regexp->mbs[iVar9];\n            }\n            else if (regexp->offsets_needed == '\0') {\n              iVar9 = regexp->cur_idx;\n              prVar10 = (re_string_t *)(iVar9 + 1);\n              regexp->cur_idx = (Idx)prVar10;\n              bVar12 = regexp->raw_mbs[iVar9 + regexp->raw_mbs_idx];\n            }\n            else {\n              prVar11 = (re_string_t *)regexp->cur_idx;\n              if ((prVar11 == (re_string_t *)regexp->valid_len) ||\n                 (regexp->wcs[(int)prVar11] != 0xffffffff)) {\n                bVar12 = regexp->raw_mbs[regexp->raw_mbs_idx + regexp->offsets[(int)prVar11]];\n                prVar10 = prVar11;\n                if ((bVar12 & 0x80) == 0) {\n                  iVar9 = (*pcVar7)(regexp);\n                  regexp->cur_idx = (int)&prVar11->raw_mbs + iVar9;\n                }\n                else {\n                  regexp->cur_idx = (Idx)((int)&prVar11->raw_mbs + 1);\n                  bVar12 = regexp->mbs[(int)prVar11];\n                }\n              }\n              else {\n                regexp->cur_idx = (Idx)((int)&prVar11->raw_mbs + 1);\n                bVar12 = regexp->mbs[(int)prVar11];\n              }\n            }\n          }\n          else {\n            iVar9 = regexp->cur_idx;\n            regexp->cur_idx = iVar9 + 1;\n            bVar12 = regexp->mbs[iVar9];\n          }\n          iVar9 = regexp->cur_idx;\n          rVar5 = _REG_EBRACK;\n          if (regexp->stop <= iVar9) goto LAB_00077d90;\n          if ((bVar1 == bVar12) && (regexp->mbs[iVar9] == ']')) {\n            regexp->cur_idx = iVar9 + 1;\n            (elem->opr).name[iVar4] = '\0';\n            cVar2 = token->field_0x4;\n            if (cVar2 == '\x1c') {\n              elem->type = EQUIV_CLASS;\n              rVar5 = _REG_NOERROR;\n            }\n            else if (cVar2 == '\x1e') {\n              elem->type = CHAR_CLASS;\n              rVar5 = _REG_NOERROR;\n            }\n            else if (cVar2 == '\x1a') {\n              elem->type = COLL_SYM;\n              rVar5 = _REG_NOERROR;\n            }\n            else {\n              rVar5 = _REG_NOERROR;\n            }\n            goto LAB_00077d90;\n          }\n          pbVar8 = (elem->opr).name + iVar4;\n          iVar4 = iVar4 + 1;\n          *pbVar8 = bVar12;\n        }" { (if_statement "if (token->field_0x4 == '\x1e') {\n            if (regexp->mbs_allocated == '\0') {\n              iVar9 = regexp->cur_idx;\n              regexp->cur_idx = iVar9 + 1;\n              bVar12 = regexp->mbs[iVar9];\n            }\n            else if (regexp->offsets_needed == '\0') {\n              iVar9 = regexp->cur_idx;\n              prVar10 = (re_string_t *)(iVar9 + 1);\n              regexp->cur_idx = (Idx)prVar10;\n              bVar12 = regexp->raw_mbs[iVar9 + regexp->raw_mbs_idx];\n            }\n            else {\n              prVar11 = (re_string_t *)regexp->cur_idx;\n              if ((prVar11 == (re_string_t *)regexp->valid_len) ||\n                 (regexp->wcs[(int)prVar11] != 0xffffffff)) {\n                bVar12 = regexp->raw_mbs[regexp->raw_mbs_idx + regexp->offsets[(int)prVar11]];\n                prVar10 = prVar11;\n                if ((bVar12 & 0x80) == 0) {\n                  iVar9 = (*pcVar7)(regexp);\n                  regexp->cur_idx = (int)&prVar11->raw_mbs + iVar9;\n                }\n                else {\n                  regexp->cur_idx = (Idx)((int)&prVar11->raw_mbs + 1);\n                  bVar12 = regexp->mbs[(int)prVar11];\n                }\n              }\n              else {\n                regexp->cur_idx = (Idx)((int)&prVar11->raw_mbs + 1);\n                bVar12 = regexp->mbs[(int)prVar11];\n              }\n            }\n          }\n          else {\n            iVar9 = regexp->cur_idx;\n            regexp->cur_idx = iVar9 + 1;\n            bVar12 = regexp->mbs[iVar9];\n          }" if (parenthesized_expression "(token->field_0x4 == '\x1e')" ( (binary_expression "token->field_0x4 == '\x1e'" (field_expression "token->field_0x4" identifier -> field_identifier) == (char_literal "'\x1e'" ' escape_sequence ')) )) (compound_statement "{\n            if (regexp->mbs_allocated == '\0') {\n              iVar9 = regexp->cur_idx;\n              regexp->cur_idx = iVar9 + 1;\n              bVar12 = regexp->mbs[iVar9];\n            }\n            else if (regexp->offsets_needed == '\0') {\n              iVar9 = regexp->cur_idx;\n              prVar10 = (re_string_t *)(iVar9 + 1);\n              regexp->cur_idx = (Idx)prVar10;\n              bVar12 = regexp->raw_mbs[iVar9 + regexp->raw_mbs_idx];\n            }\n            else {\n              prVar11 = (re_string_t *)regexp->cur_idx;\n              if ((prVar11 == (re_string_t *)regexp->valid_len) ||\n                 (regexp->wcs[(int)prVar11] != 0xffffffff)) {\n                bVar12 = regexp->raw_mbs[regexp->raw_mbs_idx + regexp->offsets[(int)prVar11]];\n                prVar10 = prVar11;\n                if ((bVar12 & 0x80) == 0) {\n                  iVar9 = (*pcVar7)(regexp);\n                  regexp->cur_idx = (int)&prVar11->raw_mbs + iVar9;\n                }\n                else {\n                  regexp->cur_idx = (Idx)((int)&prVar11->raw_mbs + 1);\n                  bVar12 = regexp->mbs[(int)prVar11];\n                }\n              }\n              else {\n                regexp->cur_idx = (Idx)((int)&prVar11->raw_mbs + 1);\n                bVar12 = regexp->mbs[(int)prVar11];\n              }\n            }\n          }" { (if_statement "if (regexp->mbs_allocated == '\0') {\n              iVar9 = regexp->cur_idx;\n              regexp->cur_idx = iVar9 + 1;\n              bVar12 = regexp->mbs[iVar9];\n            }\n            else if (regexp->offsets_needed == '\0') {\n              iVar9 = regexp->cur_idx;\n              prVar10 = (re_string_t *)(iVar9 + 1);\n              regexp->cur_idx = (Idx)prVar10;\n              bVar12 = regexp->raw_mbs[iVar9 + regexp->raw_mbs_idx];\n            }\n            else {\n              prVar11 = (re_string_t *)regexp->cur_idx;\n              if ((prVar11 == (re_string_t *)regexp->valid_len) ||\n                 (regexp->wcs[(int)prVar11] != 0xffffffff)) {\n                bVar12 = regexp->raw_mbs[regexp->raw_mbs_idx + regexp->offsets[(int)prVar11]];\n                prVar10 = prVar11;\n                if ((bVar12 & 0x80) == 0) {\n                  iVar9 = (*pcVar7)(regexp);\n                  regexp->cur_idx = (int)&prVar11->raw_mbs + iVar9;\n                }\n                else {\n                  regexp->cur_idx = (Idx)((int)&prVar11->raw_mbs + 1);\n                  bVar12 = regexp->mbs[(int)prVar11];\n                }\n              }\n              else {\n                regexp->cur_idx = (Idx)((int)&prVar11->raw_mbs + 1);\n                bVar12 = regexp->mbs[(int)prVar11];\n              }\n            }" if (parenthesized_expression "(regexp->mbs_allocated == '\0')" ( (binary_expression "regexp->mbs_allocated == '\0'" (field_expression "regexp->mbs_allocated" identifier -> field_identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n              iVar9 = regexp->cur_idx;\n              regexp->cur_idx = iVar9 + 1;\n              bVar12 = regexp->mbs[iVar9];\n            }" { (expression_statement "iVar9 = regexp->cur_idx;" (assignment_expression "iVar9 = regexp->cur_idx" identifier = (field_expression "regexp->cur_idx" identifier -> field_identifier)) ;) (expression_statement "regexp->cur_idx = iVar9 + 1;" (assignment_expression "regexp->cur_idx = iVar9 + 1" (field_expression "regexp->cur_idx" identifier -> field_identifier) = (binary_expression "iVar9 + 1" identifier + number_literal)) ;) (expression_statement "bVar12 = regexp->mbs[iVar9];" (assignment_expression "bVar12 = regexp->mbs[iVar9]" identifier = (subscript_expression "regexp->mbs[iVar9]" (field_expression "regexp->mbs" identifier -> field_identifier) [ identifier ])) ;) }) (else_clause "else if (regexp->offsets_needed == '\0') {\n              iVar9 = regexp->cur_idx;\n              prVar10 = (re_string_t *)(iVar9 + 1);\n              regexp->cur_idx = (Idx)prVar10;\n              bVar12 = regexp->raw_mbs[iVar9 + regexp->raw_mbs_idx];\n            }\n            else {\n              prVar11 = (re_string_t *)regexp->cur_idx;\n              if ((prVar11 == (re_string_t *)regexp->valid_len) ||\n                 (regexp->wcs[(int)prVar11] != 0xffffffff)) {\n                bVar12 = regexp->raw_mbs[regexp->raw_mbs_idx + regexp->offsets[(int)prVar11]];\n                prVar10 = prVar11;\n                if ((bVar12 & 0x80) == 0) {\n                  iVar9 = (*pcVar7)(regexp);\n                  regexp->cur_idx = (int)&prVar11->raw_mbs + iVar9;\n                }\n                else {\n                  regexp->cur_idx = (Idx)((int)&prVar11->raw_mbs + 1);\n                  bVar12 = regexp->mbs[(int)prVar11];\n                }\n              }\n              else {\n                regexp->cur_idx = (Idx)((int)&prVar11->raw_mbs + 1);\n                bVar12 = regexp->mbs[(int)prVar11];\n              }\n            }" else (if_statement "if (regexp->offsets_needed == '\0') {\n              iVar9 = regexp->cur_idx;\n              prVar10 = (re_string_t *)(iVar9 + 1);\n              regexp->cur_idx = (Idx)prVar10;\n              bVar12 = regexp->raw_mbs[iVar9 + regexp->raw_mbs_idx];\n            }\n            else {\n              prVar11 = (re_string_t *)regexp->cur_idx;\n              if ((prVar11 == (re_string_t *)regexp->valid_len) ||\n                 (regexp->wcs[(int)prVar11] != 0xffffffff)) {\n                bVar12 = regexp->raw_mbs[regexp->raw_mbs_idx + regexp->offsets[(int)prVar11]];\n                prVar10 = prVar11;\n                if ((bVar12 & 0x80) == 0) {\n                  iVar9 = (*pcVar7)(regexp);\n                  regexp->cur_idx = (int)&prVar11->raw_mbs + iVar9;\n                }\n                else {\n                  regexp->cur_idx = (Idx)((int)&prVar11->raw_mbs + 1);\n                  bVar12 = regexp->mbs[(int)prVar11];\n                }\n              }\n              else {\n                regexp->cur_idx = (Idx)((int)&prVar11->raw_mbs + 1);\n                bVar12 = regexp->mbs[(int)prVar11];\n              }\n            }" if (parenthesized_expression "(regexp->offsets_needed == '\0')" ( (binary_expression "regexp->offsets_needed == '\0'" (field_expression "regexp->offsets_needed" identifier -> field_identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n              iVar9 = regexp->cur_idx;\n              prVar10 = (re_string_t *)(iVar9 + 1);\n              regexp->cur_idx = (Idx)prVar10;\n              bVar12 = regexp->raw_mbs[iVar9 + regexp->raw_mbs_idx];\n            }" { (expression_statement "iVar9 = regexp->cur_idx;" (assignment_expression "iVar9 = regexp->cur_idx" identifier = (field_expression "regexp->cur_idx" identifier -> field_identifier)) ;) (expression_statement "prVar10 = (re_string_t *)(iVar9 + 1);" (assignment_expression "prVar10 = (re_string_t *)(iVar9 + 1)" identifier = (cast_expression "(re_string_t *)(iVar9 + 1)" ( (type_descriptor "re_string_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar9 + 1)" ( (binary_expression "iVar9 + 1" identifier + number_literal) )))) ;) (expression_statement "regexp->cur_idx = (Idx)prVar10;" (assignment_expression "regexp->cur_idx = (Idx)prVar10" (field_expression "regexp->cur_idx" identifier -> field_identifier) = (cast_expression "(Idx)prVar10" ( (type_descriptor "Idx" type_identifier) ) identifier)) ;) (expression_statement "bVar12 = regexp->raw_mbs[iVar9 + regexp->raw_mbs_idx];" (assignment_expression "bVar12 = regexp->raw_mbs[iVar9 + regexp->raw_mbs_idx]" identifier = (subscript_expression "regexp->raw_mbs[iVar9 + regexp->raw_mbs_idx]" (field_expression "regexp->raw_mbs" identifier -> field_identifier) [ (binary_expression "iVar9 + regexp->raw_mbs_idx" identifier + (field_expression "regexp->raw_mbs_idx" identifier -> field_identifier)) ])) ;) }) (else_clause "else {\n              prVar11 = (re_string_t *)regexp->cur_idx;\n              if ((prVar11 == (re_string_t *)regexp->valid_len) ||\n                 (regexp->wcs[(int)prVar11] != 0xffffffff)) {\n                bVar12 = regexp->raw_mbs[regexp->raw_mbs_idx + regexp->offsets[(int)prVar11]];\n                prVar10 = prVar11;\n                if ((bVar12 & 0x80) == 0) {\n                  iVar9 = (*pcVar7)(regexp);\n                  regexp->cur_idx = (int)&prVar11->raw_mbs + iVar9;\n                }\n                else {\n                  regexp->cur_idx = (Idx)((int)&prVar11->raw_mbs + 1);\n                  bVar12 = regexp->mbs[(int)prVar11];\n                }\n              }\n              else {\n                regexp->cur_idx = (Idx)((int)&prVar11->raw_mbs + 1);\n                bVar12 = regexp->mbs[(int)prVar11];\n              }\n            }" else (compound_statement "{\n              prVar11 = (re_string_t *)regexp->cur_idx;\n              if ((prVar11 == (re_string_t *)regexp->valid_len) ||\n                 (regexp->wcs[(int)prVar11] != 0xffffffff)) {\n                bVar12 = regexp->raw_mbs[regexp->raw_mbs_idx + regexp->offsets[(int)prVar11]];\n                prVar10 = prVar11;\n                if ((bVar12 & 0x80) == 0) {\n                  iVar9 = (*pcVar7)(regexp);\n                  regexp->cur_idx = (int)&prVar11->raw_mbs + iVar9;\n                }\n                else {\n                  regexp->cur_idx = (Idx)((int)&prVar11->raw_mbs + 1);\n                  bVar12 = regexp->mbs[(int)prVar11];\n                }\n              }\n              else {\n                regexp->cur_idx = (Idx)((int)&prVar11->raw_mbs + 1);\n                bVar12 = regexp->mbs[(int)prVar11];\n              }\n            }" { (expression_statement "prVar11 = (re_string_t *)regexp->cur_idx;" (assignment_expression "prVar11 = (re_string_t *)regexp->cur_idx" identifier = (cast_expression "(re_string_t *)regexp->cur_idx" ( (type_descriptor "re_string_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "regexp->cur_idx" identifier -> field_identifier))) ;) (if_statement "if ((prVar11 == (re_string_t *)regexp->valid_len) ||\n                 (regexp->wcs[(int)prVar11] != 0xffffffff)) {\n                bVar12 = regexp->raw_mbs[regexp->raw_mbs_idx + regexp->offsets[(int)prVar11]];\n                prVar10 = prVar11;\n                if ((bVar12 & 0x80) == 0) {\n                  iVar9 = (*pcVar7)(regexp);\n                  regexp->cur_idx = (int)&prVar11->raw_mbs + iVar9;\n                }\n                else {\n                  regexp->cur_idx = (Idx)((int)&prVar11->raw_mbs + 1);\n                  bVar12 = regexp->mbs[(int)prVar11];\n                }\n              }\n              else {\n                regexp->cur_idx = (Idx)((int)&prVar11->raw_mbs + 1);\n                bVar12 = regexp->mbs[(int)prVar11];\n              }" if (parenthesized_expression "((prVar11 == (re_string_t *)regexp->valid_len) ||\n                 (regexp->wcs[(int)prVar11] != 0xffffffff))" ( (binary_expression "(prVar11 == (re_string_t *)regexp->valid_len) ||\n                 (regexp->wcs[(int)prVar11] != 0xffffffff)" (parenthesized_expression "(prVar11 == (re_string_t *)regexp->valid_len)" ( (binary_expression "prVar11 == (re_string_t *)regexp->valid_len" identifier == (cast_expression "(re_string_t *)regexp->valid_len" ( (type_descriptor "re_string_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "regexp->valid_len" identifier -> field_identifier))) )) || (parenthesized_expression "(regexp->wcs[(int)prVar11] != 0xffffffff)" ( (binary_expression "regexp->wcs[(int)prVar11] != 0xffffffff" (subscript_expression "regexp->wcs[(int)prVar11]" (field_expression "regexp->wcs" identifier -> field_identifier) [ (cast_expression "(int)prVar11" ( (type_descriptor "int" primitive_type) ) identifier) ]) != number_literal) ))) )) (compound_statement "{\n                bVar12 = regexp->raw_mbs[regexp->raw_mbs_idx + regexp->offsets[(int)prVar11]];\n                prVar10 = prVar11;\n                if ((bVar12 & 0x80) == 0) {\n                  iVar9 = (*pcVar7)(regexp);\n                  regexp->cur_idx = (int)&prVar11->raw_mbs + iVar9;\n                }\n                else {\n                  regexp->cur_idx = (Idx)((int)&prVar11->raw_mbs + 1);\n                  bVar12 = regexp->mbs[(int)prVar11];\n                }\n              }" { (expression_statement "bVar12 = regexp->raw_mbs[regexp->raw_mbs_idx + regexp->offsets[(int)prVar11]];" (assignment_expression "bVar12 = regexp->raw_mbs[regexp->raw_mbs_idx + regexp->offsets[(int)prVar11]]" identifier = (subscript_expression "regexp->raw_mbs[regexp->raw_mbs_idx + regexp->offsets[(int)prVar11]]" (field_expression "regexp->raw_mbs" identifier -> field_identifier) [ (binary_expression "regexp->raw_mbs_idx + regexp->offsets[(int)prVar11]" (field_expression "regexp->raw_mbs_idx" identifier -> field_identifier) + (subscript_expression "regexp->offsets[(int)prVar11]" (field_expression "regexp->offsets" identifier -> field_identifier) [ (cast_expression "(int)prVar11" ( (type_descriptor "int" primitive_type) ) identifier) ])) ])) ;) (expression_statement "prVar10 = prVar11;" (assignment_expression "prVar10 = prVar11" identifier = identifier) ;) (if_statement "if ((bVar12 & 0x80) == 0) {\n                  iVar9 = (*pcVar7)(regexp);\n                  regexp->cur_idx = (int)&prVar11->raw_mbs + iVar9;\n                }\n                else {\n                  regexp->cur_idx = (Idx)((int)&prVar11->raw_mbs + 1);\n                  bVar12 = regexp->mbs[(int)prVar11];\n                }" if (parenthesized_expression "((bVar12 & 0x80) == 0)" ( (binary_expression "(bVar12 & 0x80) == 0" (parenthesized_expression "(bVar12 & 0x80)" ( (binary_expression "bVar12 & 0x80" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n                  iVar9 = (*pcVar7)(regexp);\n                  regexp->cur_idx = (int)&prVar11->raw_mbs + iVar9;\n                }" { (expression_statement "iVar9 = (*pcVar7)(regexp);" (assignment_expression "iVar9 = (*pcVar7)(regexp)" identifier = (call_expression "(*pcVar7)(regexp)" (parenthesized_expression "(*pcVar7)" ( (pointer_expression "*pcVar7" * identifier) )) (argument_list "(regexp)" ( identifier )))) ;) (expression_statement "regexp->cur_idx = (int)&prVar11->raw_mbs + iVar9;" (assignment_expression "regexp->cur_idx = (int)&prVar11->raw_mbs + iVar9" (field_expression "regexp->cur_idx" identifier -> field_identifier) = (binary_expression "(int)&prVar11->raw_mbs + iVar9" (cast_expression "(int)&prVar11->raw_mbs" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&prVar11->raw_mbs" & (field_expression "prVar11->raw_mbs" identifier -> field_identifier))) + identifier)) ;) }) (else_clause "else {\n                  regexp->cur_idx = (Idx)((int)&prVar11->raw_mbs + 1);\n                  bVar12 = regexp->mbs[(int)prVar11];\n                }" else (compound_statement "{\n                  regexp->cur_idx = (Idx)((int)&prVar11->raw_mbs + 1);\n                  bVar12 = regexp->mbs[(int)prVar11];\n                }" { (expression_statement "regexp->cur_idx = (Idx)((int)&prVar11->raw_mbs + 1);" (assignment_expression "regexp->cur_idx = (Idx)((int)&prVar11->raw_mbs + 1)" (field_expression "regexp->cur_idx" identifier -> field_identifier) = (call_expression "(Idx)((int)&prVar11->raw_mbs + 1)" (parenthesized_expression "(Idx)" ( identifier )) (argument_list "((int)&prVar11->raw_mbs + 1)" ( (binary_expression "(int)&prVar11->raw_mbs + 1" (cast_expression "(int)&prVar11->raw_mbs" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&prVar11->raw_mbs" & (field_expression "prVar11->raw_mbs" identifier -> field_identifier))) + number_literal) )))) ;) (expression_statement "bVar12 = regexp->mbs[(int)prVar11];" (assignment_expression "bVar12 = regexp->mbs[(int)prVar11]" identifier = (subscript_expression "regexp->mbs[(int)prVar11]" (field_expression "regexp->mbs" identifier -> field_identifier) [ (cast_expression "(int)prVar11" ( (type_descriptor "int" primitive_type) ) identifier) ])) ;) }))) }) (else_clause "else {\n                regexp->cur_idx = (Idx)((int)&prVar11->raw_mbs + 1);\n                bVar12 = regexp->mbs[(int)prVar11];\n              }" else (compound_statement "{\n                regexp->cur_idx = (Idx)((int)&prVar11->raw_mbs + 1);\n                bVar12 = regexp->mbs[(int)prVar11];\n              }" { (expression_statement "regexp->cur_idx = (Idx)((int)&prVar11->raw_mbs + 1);" (assignment_expression "regexp->cur_idx = (Idx)((int)&prVar11->raw_mbs + 1)" (field_expression "regexp->cur_idx" identifier -> field_identifier) = (call_expression "(Idx)((int)&prVar11->raw_mbs + 1)" (parenthesized_expression "(Idx)" ( identifier )) (argument_list "((int)&prVar11->raw_mbs + 1)" ( (binary_expression "(int)&prVar11->raw_mbs + 1" (cast_expression "(int)&prVar11->raw_mbs" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&prVar11->raw_mbs" & (field_expression "prVar11->raw_mbs" identifier -> field_identifier))) + number_literal) )))) ;) (expression_statement "bVar12 = regexp->mbs[(int)prVar11];" (assignment_expression "bVar12 = regexp->mbs[(int)prVar11]" identifier = (subscript_expression "regexp->mbs[(int)prVar11]" (field_expression "regexp->mbs" identifier -> field_identifier) [ (cast_expression "(int)prVar11" ( (type_descriptor "int" primitive_type) ) identifier) ])) ;) }))) }))))) }) (else_clause "else {\n            iVar9 = regexp->cur_idx;\n            regexp->cur_idx = iVar9 + 1;\n            bVar12 = regexp->mbs[iVar9];\n          }" else (compound_statement "{\n            iVar9 = regexp->cur_idx;\n            regexp->cur_idx = iVar9 + 1;\n            bVar12 = regexp->mbs[iVar9];\n          }" { (expression_statement "iVar9 = regexp->cur_idx;" (assignment_expression "iVar9 = regexp->cur_idx" identifier = (field_expression "regexp->cur_idx" identifier -> field_identifier)) ;) (expression_statement "regexp->cur_idx = iVar9 + 1;" (assignment_expression "regexp->cur_idx = iVar9 + 1" (field_expression "regexp->cur_idx" identifier -> field_identifier) = (binary_expression "iVar9 + 1" identifier + number_literal)) ;) (expression_statement "bVar12 = regexp->mbs[iVar9];" (assignment_expression "bVar12 = regexp->mbs[iVar9]" identifier = (subscript_expression "regexp->mbs[iVar9]" (field_expression "regexp->mbs" identifier -> field_identifier) [ identifier ])) ;) }))) (expression_statement "iVar9 = regexp->cur_idx;" (assignment_expression "iVar9 = regexp->cur_idx" identifier = (field_expression "regexp->cur_idx" identifier -> field_identifier)) ;) (expression_statement "rVar5 = _REG_EBRACK;" (assignment_expression "rVar5 = _REG_EBRACK" identifier = identifier) ;) (if_statement "if (regexp->stop <= iVar9) goto LAB_00077d90;" if (parenthesized_expression "(regexp->stop <= iVar9)" ( (binary_expression "regexp->stop <= iVar9" (field_expression "regexp->stop" identifier -> field_identifier) <= identifier) )) (goto_statement "goto LAB_00077d90;" goto statement_identifier ;)) (if_statement "if ((bVar1 == bVar12) && (regexp->mbs[iVar9] == ']')) {\n            regexp->cur_idx = iVar9 + 1;\n            (elem->opr).name[iVar4] = '\0';\n            cVar2 = token->field_0x4;\n            if (cVar2 == '\x1c') {\n              elem->type = EQUIV_CLASS;\n              rVar5 = _REG_NOERROR;\n            }\n            else if (cVar2 == '\x1e') {\n              elem->type = CHAR_CLASS;\n              rVar5 = _REG_NOERROR;\n            }\n            else if (cVar2 == '\x1a') {\n              elem->type = COLL_SYM;\n              rVar5 = _REG_NOERROR;\n            }\n            else {\n              rVar5 = _REG_NOERROR;\n            }\n            goto LAB_00077d90;\n          }" if (parenthesized_expression "((bVar1 == bVar12) && (regexp->mbs[iVar9] == ']'))" ( (binary_expression "(bVar1 == bVar12) && (regexp->mbs[iVar9] == ']')" (parenthesized_expression "(bVar1 == bVar12)" ( (binary_expression "bVar1 == bVar12" identifier == identifier) )) && (parenthesized_expression "(regexp->mbs[iVar9] == ']')" ( (binary_expression "regexp->mbs[iVar9] == ']'" (subscript_expression "regexp->mbs[iVar9]" (field_expression "regexp->mbs" identifier -> field_identifier) [ identifier ]) == (char_literal "']'" ' character ')) ))) )) (compound_statement "{\n            regexp->cur_idx = iVar9 + 1;\n            (elem->opr).name[iVar4] = '\0';\n            cVar2 = token->field_0x4;\n            if (cVar2 == '\x1c') {\n              elem->type = EQUIV_CLASS;\n              rVar5 = _REG_NOERROR;\n            }\n            else if (cVar2 == '\x1e') {\n              elem->type = CHAR_CLASS;\n              rVar5 = _REG_NOERROR;\n            }\n            else if (cVar2 == '\x1a') {\n              elem->type = COLL_SYM;\n              rVar5 = _REG_NOERROR;\n            }\n            else {\n              rVar5 = _REG_NOERROR;\n            }\n            goto LAB_00077d90;\n          }" { (expression_statement "regexp->cur_idx = iVar9 + 1;" (assignment_expression "regexp->cur_idx = iVar9 + 1" (field_expression "regexp->cur_idx" identifier -> field_identifier) = (binary_expression "iVar9 + 1" identifier + number_literal)) ;) (expression_statement "(elem->opr).name[iVar4] = '\0';" (assignment_expression "(elem->opr).name[iVar4] = '\0'" (subscript_expression "(elem->opr).name[iVar4]" (field_expression "(elem->opr).name" (parenthesized_expression "(elem->opr)" ( (field_expression "elem->opr" identifier -> field_identifier) )) . field_identifier) [ identifier ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "cVar2 = token->field_0x4;" (assignment_expression "cVar2 = token->field_0x4" identifier = (field_expression "token->field_0x4" identifier -> field_identifier)) ;) (if_statement "if (cVar2 == '\x1c') {\n              elem->type = EQUIV_CLASS;\n              rVar5 = _REG_NOERROR;\n            }\n            else if (cVar2 == '\x1e') {\n              elem->type = CHAR_CLASS;\n              rVar5 = _REG_NOERROR;\n            }\n            else if (cVar2 == '\x1a') {\n              elem->type = COLL_SYM;\n              rVar5 = _REG_NOERROR;\n            }\n            else {\n              rVar5 = _REG_NOERROR;\n            }" if (parenthesized_expression "(cVar2 == '\x1c')" ( (binary_expression "cVar2 == '\x1c'" identifier == (char_literal "'\x1c'" ' escape_sequence ')) )) (compound_statement "{\n              elem->type = EQUIV_CLASS;\n              rVar5 = _REG_NOERROR;\n            }" { (expression_statement "elem->type = EQUIV_CLASS;" (assignment_expression "elem->type = EQUIV_CLASS" (field_expression "elem->type" identifier -> field_identifier) = identifier) ;) (expression_statement "rVar5 = _REG_NOERROR;" (assignment_expression "rVar5 = _REG_NOERROR" identifier = identifier) ;) }) (else_clause "else if (cVar2 == '\x1e') {\n              elem->type = CHAR_CLASS;\n              rVar5 = _REG_NOERROR;\n            }\n            else if (cVar2 == '\x1a') {\n              elem->type = COLL_SYM;\n              rVar5 = _REG_NOERROR;\n            }\n            else {\n              rVar5 = _REG_NOERROR;\n            }" else (if_statement "if (cVar2 == '\x1e') {\n              elem->type = CHAR_CLASS;\n              rVar5 = _REG_NOERROR;\n            }\n            else if (cVar2 == '\x1a') {\n              elem->type = COLL_SYM;\n              rVar5 = _REG_NOERROR;\n            }\n            else {\n              rVar5 = _REG_NOERROR;\n            }" if (parenthesized_expression "(cVar2 == '\x1e')" ( (binary_expression "cVar2 == '\x1e'" identifier == (char_literal "'\x1e'" ' escape_sequence ')) )) (compound_statement "{\n              elem->type = CHAR_CLASS;\n              rVar5 = _REG_NOERROR;\n            }" { (expression_statement "elem->type = CHAR_CLASS;" (assignment_expression "elem->type = CHAR_CLASS" (field_expression "elem->type" identifier -> field_identifier) = identifier) ;) (expression_statement "rVar5 = _REG_NOERROR;" (assignment_expression "rVar5 = _REG_NOERROR" identifier = identifier) ;) }) (else_clause "else if (cVar2 == '\x1a') {\n              elem->type = COLL_SYM;\n              rVar5 = _REG_NOERROR;\n            }\n            else {\n              rVar5 = _REG_NOERROR;\n            }" else (if_statement "if (cVar2 == '\x1a') {\n              elem->type = COLL_SYM;\n              rVar5 = _REG_NOERROR;\n            }\n            else {\n              rVar5 = _REG_NOERROR;\n            }" if (parenthesized_expression "(cVar2 == '\x1a')" ( (binary_expression "cVar2 == '\x1a'" identifier == (char_literal "'\x1a'" ' escape_sequence ')) )) (compound_statement "{\n              elem->type = COLL_SYM;\n              rVar5 = _REG_NOERROR;\n            }" { (expression_statement "elem->type = COLL_SYM;" (assignment_expression "elem->type = COLL_SYM" (field_expression "elem->type" identifier -> field_identifier) = identifier) ;) (expression_statement "rVar5 = _REG_NOERROR;" (assignment_expression "rVar5 = _REG_NOERROR" identifier = identifier) ;) }) (else_clause "else {\n              rVar5 = _REG_NOERROR;\n            }" else (compound_statement "{\n              rVar5 = _REG_NOERROR;\n            }" { (expression_statement "rVar5 = _REG_NOERROR;" (assignment_expression "rVar5 = _REG_NOERROR" identifier = identifier) ;) }))))))) (goto_statement "goto LAB_00077d90;" goto statement_identifier ;) })) (expression_statement "pbVar8 = (elem->opr).name + iVar4;" (assignment_expression "pbVar8 = (elem->opr).name + iVar4" identifier = (binary_expression "(elem->opr).name + iVar4" (field_expression "(elem->opr).name" (parenthesized_expression "(elem->opr)" ( (field_expression "elem->opr" identifier -> field_identifier) )) . field_identifier) + identifier)) ;) (expression_statement "iVar4 = iVar4 + 1;" (assignment_expression "iVar4 = iVar4 + 1" identifier = (binary_expression "iVar4 + 1" identifier + number_literal)) ;) (expression_statement "*pbVar8 = bVar12;" (assignment_expression "*pbVar8 = bVar12" (pointer_expression "*pbVar8" * identifier) = identifier) ;) }) while (parenthesized_expression "(iVar4 != 0x20)" ( (binary_expression "iVar4 != 0x20" identifier != number_literal) )) ;) (expression_statement "rVar5 = _REG_EBRACK;" (assignment_expression "rVar5 = _REG_EBRACK" identifier = identifier) ;) }) (else_clause "else {\n        rVar5 = _REG_EBRACK;\n      }" else (compound_statement "{\n        rVar5 = _REG_EBRACK;\n      }" { (expression_statement "rVar5 = _REG_EBRACK;" (assignment_expression "rVar5 = _REG_EBRACK" identifier = identifier) ;) }))) }) (else_clause "else {\n      if ((bVar1 == 0x16) && (!accept_hyphen)) {\n        peek_token_bracket(&token2,regexp,syntax);\n        prVar10 = regexp;\n        if (token2._4_1_ != '\x15') {\n          rVar5 = _REG_ERANGE;\n          goto LAB_00077d90;\n        }\n      }\n      elem->type = SB_CHAR;\n      (elem->opr).ch = (token->opr).c;\n      rVar5 = _REG_NOERROR;\n    }" else (compound_statement "{\n      if ((bVar1 == 0x16) && (!accept_hyphen)) {\n        peek_token_bracket(&token2,regexp,syntax);\n        prVar10 = regexp;\n        if (token2._4_1_ != '\x15') {\n          rVar5 = _REG_ERANGE;\n          goto LAB_00077d90;\n        }\n      }\n      elem->type = SB_CHAR;\n      (elem->opr).ch = (token->opr).c;\n      rVar5 = _REG_NOERROR;\n    }" { (if_statement "if ((bVar1 == 0x16) && (!accept_hyphen)) {\n        peek_token_bracket(&token2,regexp,syntax);\n        prVar10 = regexp;\n        if (token2._4_1_ != '\x15') {\n          rVar5 = _REG_ERANGE;\n          goto LAB_00077d90;\n        }\n      }" if (parenthesized_expression "((bVar1 == 0x16) && (!accept_hyphen))" ( (binary_expression "(bVar1 == 0x16) && (!accept_hyphen)" (parenthesized_expression "(bVar1 == 0x16)" ( (binary_expression "bVar1 == 0x16" identifier == number_literal) )) && (parenthesized_expression "(!accept_hyphen)" ( (unary_expression "!accept_hyphen" ! identifier) ))) )) (compound_statement "{\n        peek_token_bracket(&token2,regexp,syntax);\n        prVar10 = regexp;\n        if (token2._4_1_ != '\x15') {\n          rVar5 = _REG_ERANGE;\n          goto LAB_00077d90;\n        }\n      }" { (expression_statement "peek_token_bracket(&token2,regexp,syntax);" (call_expression "peek_token_bracket(&token2,regexp,syntax)" identifier (argument_list "(&token2,regexp,syntax)" ( (pointer_expression "&token2" & identifier) , identifier , identifier ))) ;) (expression_statement "prVar10 = regexp;" (assignment_expression "prVar10 = regexp" identifier = identifier) ;) (if_statement "if (token2._4_1_ != '\x15') {\n          rVar5 = _REG_ERANGE;\n          goto LAB_00077d90;\n        }" if (parenthesized_expression "(token2._4_1_ != '\x15')" ( (binary_expression "token2._4_1_ != '\x15'" (field_expression "token2._4_1_" identifier . field_identifier) != (char_literal "'\x15'" ' escape_sequence ')) )) (compound_statement "{\n          rVar5 = _REG_ERANGE;\n          goto LAB_00077d90;\n        }" { (expression_statement "rVar5 = _REG_ERANGE;" (assignment_expression "rVar5 = _REG_ERANGE" identifier = identifier) ;) (goto_statement "goto LAB_00077d90;" goto statement_identifier ;) })) })) (expression_statement "elem->type = SB_CHAR;" (assignment_expression "elem->type = SB_CHAR" (field_expression "elem->type" identifier -> field_identifier) = identifier) ;) (expression_statement "(elem->opr).ch = (token->opr).c;" (assignment_expression "(elem->opr).ch = (token->opr).c" (field_expression "(elem->opr).ch" (parenthesized_expression "(elem->opr)" ( (field_expression "elem->opr" identifier -> field_identifier) )) . field_identifier) = (field_expression "(token->opr).c" (parenthesized_expression "(token->opr)" ( (field_expression "token->opr" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "rVar5 = _REG_NOERROR;" (assignment_expression "rVar5 = _REG_NOERROR" identifier = identifier) ;) }))) }) (else_clause "else {\n    elem->type = MB_CHAR;\n    prVar10 = (re_string_t *)regexp->cur_idx;\n    wVar6 = re_string_wchar_at(regexp,(Idx)prVar10);\n    (elem->opr).wch = wVar6;\n    regexp->cur_idx = regexp->cur_idx + iVar4;\n    rVar5 = _REG_NOERROR;\n  }" else (compound_statement "{\n    elem->type = MB_CHAR;\n    prVar10 = (re_string_t *)regexp->cur_idx;\n    wVar6 = re_string_wchar_at(regexp,(Idx)prVar10);\n    (elem->opr).wch = wVar6;\n    regexp->cur_idx = regexp->cur_idx + iVar4;\n    rVar5 = _REG_NOERROR;\n  }" { (expression_statement "elem->type = MB_CHAR;" (assignment_expression "elem->type = MB_CHAR" (field_expression "elem->type" identifier -> field_identifier) = identifier) ;) (expression_statement "prVar10 = (re_string_t *)regexp->cur_idx;" (assignment_expression "prVar10 = (re_string_t *)regexp->cur_idx" identifier = (cast_expression "(re_string_t *)regexp->cur_idx" ( (type_descriptor "re_string_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "regexp->cur_idx" identifier -> field_identifier))) ;) (expression_statement "wVar6 = re_string_wchar_at(regexp,(Idx)prVar10);" (assignment_expression "wVar6 = re_string_wchar_at(regexp,(Idx)prVar10)" identifier = (call_expression "re_string_wchar_at(regexp,(Idx)prVar10)" identifier (argument_list "(regexp,(Idx)prVar10)" ( identifier , (cast_expression "(Idx)prVar10" ( (type_descriptor "Idx" type_identifier) ) identifier) )))) ;) (expression_statement "(elem->opr).wch = wVar6;" (assignment_expression "(elem->opr).wch = wVar6" (field_expression "(elem->opr).wch" (parenthesized_expression "(elem->opr)" ( (field_expression "elem->opr" identifier -> field_identifier) )) . field_identifier) = identifier) ;) (expression_statement "regexp->cur_idx = regexp->cur_idx + iVar4;" (assignment_expression "regexp->cur_idx = regexp->cur_idx + iVar4" (field_expression "regexp->cur_idx" identifier -> field_identifier) = (binary_expression "regexp->cur_idx + iVar4" (field_expression "regexp->cur_idx" identifier -> field_identifier) + identifier)) ;) (expression_statement "rVar5 = _REG_NOERROR;" (assignment_expression "rVar5 = _REG_NOERROR" identifier = identifier) ;) }))) (labeled_statement "LAB_00077d90:\n  if (uVar3 == *(uint *)PTR___stack_chk_guard_000b7c68) {\n    return rVar5;\n  }" statement_identifier : (if_statement "if (uVar3 == *(uint *)PTR___stack_chk_guard_000b7c68) {\n    return rVar5;\n  }" if (parenthesized_expression "(uVar3 == *(uint *)PTR___stack_chk_guard_000b7c68)" ( (binary_expression "uVar3 == *(uint *)PTR___stack_chk_guard_000b7c68" identifier == (pointer_expression "*(uint *)PTR___stack_chk_guard_000b7c68" * (cast_expression "(uint *)PTR___stack_chk_guard_000b7c68" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n    return rVar5;\n  }" { (return_statement "return rVar5;" return identifier ;) }))) (expression_statement "(*(code *)PTR___stack_chk_fail_000b7bfc)();" (call_expression "(*(code *)PTR___stack_chk_fail_000b7bfc)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_000b7bfc)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_000b7bfc" * (cast_expression "(code *)PTR___stack_chk_fail_000b7bfc" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (if_statement "if ((*(char *)&prVar10->raw_mbs_idx == '\x11') && (uVar3 == (prVar10->cur_state).__value.__wch)) {\n    prVar10->raw_mbs_idx = prVar10->raw_mbs_idx & 0xffffefffU | 0x1000;\n  }" if (parenthesized_expression "((*(char *)&prVar10->raw_mbs_idx == '\x11') && (uVar3 == (prVar10->cur_state).__value.__wch))" ( (binary_expression "(*(char *)&prVar10->raw_mbs_idx == '\x11') && (uVar3 == (prVar10->cur_state).__value.__wch)" (parenthesized_expression "(*(char *)&prVar10->raw_mbs_idx == '\x11')" ( (binary_expression "*(char *)&prVar10->raw_mbs_idx == '\x11'" (pointer_expression "*(char *)&prVar10->raw_mbs_idx" * (cast_expression "(char *)&prVar10->raw_mbs_idx" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&prVar10->raw_mbs_idx" & (field_expression "prVar10->raw_mbs_idx" identifier -> field_identifier)))) == (char_literal "'\x11'" ' escape_sequence ')) )) && (parenthesized_expression "(uVar3 == (prVar10->cur_state).__value.__wch)" ( (binary_expression "uVar3 == (prVar10->cur_state).__value.__wch" identifier == (field_expression "(prVar10->cur_state).__value.__wch" (field_expression "(prVar10->cur_state).__value" (parenthesized_expression "(prVar10->cur_state)" ( (field_expression "prVar10->cur_state" identifier -> field_identifier) )) . field_identifier) . field_identifier)) ))) )) (compound_statement "{\n    prVar10->raw_mbs_idx = prVar10->raw_mbs_idx & 0xffffefffU | 0x1000;\n  }" { (expression_statement "prVar10->raw_mbs_idx = prVar10->raw_mbs_idx & 0xffffefffU | 0x1000;" (assignment_expression "prVar10->raw_mbs_idx = prVar10->raw_mbs_idx & 0xffffefffU | 0x1000" (field_expression "prVar10->raw_mbs_idx" identifier -> field_identifier) = (binary_expression "prVar10->raw_mbs_idx & 0xffffefffU | 0x1000" (binary_expression "prVar10->raw_mbs_idx & 0xffffefffU" (field_expression "prVar10->raw_mbs_idx" identifier -> field_identifier) & number_literal) | number_literal)) ;) })) (return_statement "return _REG_NOERROR;" return identifier ;) })))
(translation_unit "undefined4\nFUN_00077c90(undefined4 *param_1,int *param_2,byte *param_3,int param_4,undefined4 param_5,\n            undefined4 param_6,char param_7)\n\n{\n  byte bVar1;\n  int iVar2;\n  undefined4 uVar3;\n  code *pcVar4;\n  byte *pbVar5;\n  int iVar6;\n  int *piVar7;\n  int *piVar8;\n  byte bVar9;\n  undefined1 auStack_34 [4];\n  char local_30;\n  int local_2c;\n  \n  local_2c = *(int *)PTR___stack_chk_guard_000b7c68;\n  piVar8 = (int *)param_2[10];\n  piVar7 = piVar8;\n  iVar2 = FUN_000775b0(param_2);\n  param_4 = (int)piVar8 + param_4;\n  if (iVar2 < 2) {\n    param_2[10] = param_4;\n    bVar1 = param_3[4];\n    if (((bVar1 & 0xfb) == 0x1a) || (bVar1 == 0x1c)) {\n      iVar2 = 0;\n      if (param_4 < param_2[0xe]) {\n        bVar1 = *param_3;\n        pcVar4 = (code *)(PTR_LAB_000b7a18 + 0x75b0);\n        do {\n          if (param_3[4] == 0x1e) {\n            if (*(char *)((int)param_2 + 0x4b) == '\0') {\n              iVar6 = param_2[10];\n              param_2[10] = iVar6 + 1;\n              bVar9 = *(byte *)(param_2[1] + iVar6);\n            }\n            else if (*(char *)(param_2 + 0x13) == '\0') {\n              iVar6 = param_2[10];\n              piVar7 = (int *)(iVar6 + 1);\n              param_2[10] = (int)piVar7;\n              bVar9 = *(byte *)(*param_2 + param_2[6] + iVar6);\n            }\n            else {\n              piVar8 = (int *)param_2[10];\n              if ((piVar8 == (int *)param_2[7]) || (*(int *)(param_2[2] + (int)piVar8 * 4) != -1)) {\n                bVar9 = *(byte *)(*param_2 + *(int *)(param_2[3] + (int)piVar8 * 4) + param_2[6]);\n                piVar7 = piVar8;\n                if ((bVar9 & 0x80) == 0) {\n                  iVar6 = (*pcVar4)(param_2);\n                  param_2[10] = (int)piVar8 + iVar6;\n                }\n                else {\n                  param_2[10] = (int)piVar8 + 1;\n                  bVar9 = *(byte *)(param_2[1] + (int)piVar8);\n                }\n              }\n              else {\n                param_2[10] = (int)piVar8 + 1;\n                bVar9 = *(byte *)(param_2[1] + (int)piVar8);\n              }\n            }\n          }\n          else {\n            iVar6 = param_2[10];\n            param_2[10] = iVar6 + 1;\n            bVar9 = *(byte *)(param_2[1] + iVar6);\n          }\n          iVar6 = param_2[10];\n          uVar3 = 7;\n          if (param_2[0xe] <= iVar6) goto LAB_00077d90;\n          if ((bVar1 == bVar9) && (*(char *)(param_2[1] + iVar6) == ']')) {\n            param_2[10] = iVar6 + 1;\n            *(undefined1 *)(param_1[1] + iVar2) = 0;\n            bVar1 = param_3[4];\n            if (bVar1 == 0x1c) {\n              *param_1 = 2;\n              uVar3 = 0;\n            }\n            else if (bVar1 == 0x1e) {\n              *param_1 = 4;\n              uVar3 = 0;\n            }\n            else if (bVar1 == 0x1a) {\n              *param_1 = 3;\n              uVar3 = 0;\n            }\n            else {\n              uVar3 = 0;\n            }\n            goto LAB_00077d90;\n          }\n          pbVar5 = (byte *)(param_1[1] + iVar2);\n          iVar2 = iVar2 + 1;\n          *pbVar5 = bVar9;\n        } while (iVar2 != 0x20);\n        uVar3 = 7;\n      }\n      else {\n        uVar3 = 7;\n      }\n    }\n    else {\n      if ((bVar1 == 0x16) && (param_7 == '\0')) {\n        FUN_00077ac8(auStack_34,param_2,param_6);\n        piVar7 = param_2;\n        if (local_30 != '\x15') {\n          uVar3 = 0xb;\n          goto LAB_00077d90;\n        }\n      }\n      *param_1 = 0;\n      *(byte *)(param_1 + 1) = *param_3;\n      uVar3 = 0;\n    }\n  }\n  else {\n    *param_1 = 1;\n    piVar7 = (int *)param_2[10];\n    uVar3 = FUN_00077634(param_2);\n    param_1[1] = uVar3;\n    param_2[10] = param_2[10] + iVar2;\n    uVar3 = 0;\n  }\nLAB_00077d90:\n  if (local_2c == *(int *)PTR___stack_chk_guard_000b7c68) {\n    return uVar3;\n  }\n  (*(code *)PTR___stack_chk_fail_000b7bfc)();\n  if ((*(char *)(piVar7 + 6) == '\x11') && (local_2c == piVar7[5])) {\n    piVar7[6] = piVar7[6] & 0xffffefffU | 0x1000;\n  }\n  return 0;\n}\n\n" (function_definition "undefined4\nFUN_00077c90(undefined4 *param_1,int *param_2,byte *param_3,int param_4,undefined4 param_5,\n            undefined4 param_6,char param_7)\n\n{\n  byte bVar1;\n  int iVar2;\n  undefined4 uVar3;\n  code *pcVar4;\n  byte *pbVar5;\n  int iVar6;\n  int *piVar7;\n  int *piVar8;\n  byte bVar9;\n  undefined1 auStack_34 [4];\n  char local_30;\n  int local_2c;\n  \n  local_2c = *(int *)PTR___stack_chk_guard_000b7c68;\n  piVar8 = (int *)param_2[10];\n  piVar7 = piVar8;\n  iVar2 = FUN_000775b0(param_2);\n  param_4 = (int)piVar8 + param_4;\n  if (iVar2 < 2) {\n    param_2[10] = param_4;\n    bVar1 = param_3[4];\n    if (((bVar1 & 0xfb) == 0x1a) || (bVar1 == 0x1c)) {\n      iVar2 = 0;\n      if (param_4 < param_2[0xe]) {\n        bVar1 = *param_3;\n        pcVar4 = (code *)(PTR_LAB_000b7a18 + 0x75b0);\n        do {\n          if (param_3[4] == 0x1e) {\n            if (*(char *)((int)param_2 + 0x4b) == '\0') {\n              iVar6 = param_2[10];\n              param_2[10] = iVar6 + 1;\n              bVar9 = *(byte *)(param_2[1] + iVar6);\n            }\n            else if (*(char *)(param_2 + 0x13) == '\0') {\n              iVar6 = param_2[10];\n              piVar7 = (int *)(iVar6 + 1);\n              param_2[10] = (int)piVar7;\n              bVar9 = *(byte *)(*param_2 + param_2[6] + iVar6);\n            }\n            else {\n              piVar8 = (int *)param_2[10];\n              if ((piVar8 == (int *)param_2[7]) || (*(int *)(param_2[2] + (int)piVar8 * 4) != -1)) {\n                bVar9 = *(byte *)(*param_2 + *(int *)(param_2[3] + (int)piVar8 * 4) + param_2[6]);\n                piVar7 = piVar8;\n                if ((bVar9 & 0x80) == 0) {\n                  iVar6 = (*pcVar4)(param_2);\n                  param_2[10] = (int)piVar8 + iVar6;\n                }\n                else {\n                  param_2[10] = (int)piVar8 + 1;\n                  bVar9 = *(byte *)(param_2[1] + (int)piVar8);\n                }\n              }\n              else {\n                param_2[10] = (int)piVar8 + 1;\n                bVar9 = *(byte *)(param_2[1] + (int)piVar8);\n              }\n            }\n          }\n          else {\n            iVar6 = param_2[10];\n            param_2[10] = iVar6 + 1;\n            bVar9 = *(byte *)(param_2[1] + iVar6);\n          }\n          iVar6 = param_2[10];\n          uVar3 = 7;\n          if (param_2[0xe] <= iVar6) goto LAB_00077d90;\n          if ((bVar1 == bVar9) && (*(char *)(param_2[1] + iVar6) == ']')) {\n            param_2[10] = iVar6 + 1;\n            *(undefined1 *)(param_1[1] + iVar2) = 0;\n            bVar1 = param_3[4];\n            if (bVar1 == 0x1c) {\n              *param_1 = 2;\n              uVar3 = 0;\n            }\n            else if (bVar1 == 0x1e) {\n              *param_1 = 4;\n              uVar3 = 0;\n            }\n            else if (bVar1 == 0x1a) {\n              *param_1 = 3;\n              uVar3 = 0;\n            }\n            else {\n              uVar3 = 0;\n            }\n            goto LAB_00077d90;\n          }\n          pbVar5 = (byte *)(param_1[1] + iVar2);\n          iVar2 = iVar2 + 1;\n          *pbVar5 = bVar9;\n        } while (iVar2 != 0x20);\n        uVar3 = 7;\n      }\n      else {\n        uVar3 = 7;\n      }\n    }\n    else {\n      if ((bVar1 == 0x16) && (param_7 == '\0')) {\n        FUN_00077ac8(auStack_34,param_2,param_6);\n        piVar7 = param_2;\n        if (local_30 != '\x15') {\n          uVar3 = 0xb;\n          goto LAB_00077d90;\n        }\n      }\n      *param_1 = 0;\n      *(byte *)(param_1 + 1) = *param_3;\n      uVar3 = 0;\n    }\n  }\n  else {\n    *param_1 = 1;\n    piVar7 = (int *)param_2[10];\n    uVar3 = FUN_00077634(param_2);\n    param_1[1] = uVar3;\n    param_2[10] = param_2[10] + iVar2;\n    uVar3 = 0;\n  }\nLAB_00077d90:\n  if (local_2c == *(int *)PTR___stack_chk_guard_000b7c68) {\n    return uVar3;\n  }\n  (*(code *)PTR___stack_chk_fail_000b7bfc)();\n  if ((*(char *)(piVar7 + 6) == '\x11') && (local_2c == piVar7[5])) {\n    piVar7[6] = piVar7[6] & 0xffffefffU | 0x1000;\n  }\n  return 0;\n}" type_identifier (function_declarator "FUN_00077c90(undefined4 *param_1,int *param_2,byte *param_3,int param_4,undefined4 param_5,\n            undefined4 param_6,char param_7)" identifier (parameter_list "(undefined4 *param_1,int *param_2,byte *param_3,int param_4,undefined4 param_5,\n            undefined4 param_6,char param_7)" ( (parameter_declaration "undefined4 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "byte *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) , (parameter_declaration "int param_4" primitive_type identifier) , (parameter_declaration "undefined4 param_5" type_identifier identifier) , (parameter_declaration "undefined4 param_6" type_identifier identifier) , (parameter_declaration "char param_7" primitive_type identifier) ))) (compound_statement "{\n  byte bVar1;\n  int iVar2;\n  undefined4 uVar3;\n  code *pcVar4;\n  byte *pbVar5;\n  int iVar6;\n  int *piVar7;\n  int *piVar8;\n  byte bVar9;\n  undefined1 auStack_34 [4];\n  char local_30;\n  int local_2c;\n  \n  local_2c = *(int *)PTR___stack_chk_guard_000b7c68;\n  piVar8 = (int *)param_2[10];\n  piVar7 = piVar8;\n  iVar2 = FUN_000775b0(param_2);\n  param_4 = (int)piVar8 + param_4;\n  if (iVar2 < 2) {\n    param_2[10] = param_4;\n    bVar1 = param_3[4];\n    if (((bVar1 & 0xfb) == 0x1a) || (bVar1 == 0x1c)) {\n      iVar2 = 0;\n      if (param_4 < param_2[0xe]) {\n        bVar1 = *param_3;\n        pcVar4 = (code *)(PTR_LAB_000b7a18 + 0x75b0);\n        do {\n          if (param_3[4] == 0x1e) {\n            if (*(char *)((int)param_2 + 0x4b) == '\0') {\n              iVar6 = param_2[10];\n              param_2[10] = iVar6 + 1;\n              bVar9 = *(byte *)(param_2[1] + iVar6);\n            }\n            else if (*(char *)(param_2 + 0x13) == '\0') {\n              iVar6 = param_2[10];\n              piVar7 = (int *)(iVar6 + 1);\n              param_2[10] = (int)piVar7;\n              bVar9 = *(byte *)(*param_2 + param_2[6] + iVar6);\n            }\n            else {\n              piVar8 = (int *)param_2[10];\n              if ((piVar8 == (int *)param_2[7]) || (*(int *)(param_2[2] + (int)piVar8 * 4) != -1)) {\n                bVar9 = *(byte *)(*param_2 + *(int *)(param_2[3] + (int)piVar8 * 4) + param_2[6]);\n                piVar7 = piVar8;\n                if ((bVar9 & 0x80) == 0) {\n                  iVar6 = (*pcVar4)(param_2);\n                  param_2[10] = (int)piVar8 + iVar6;\n                }\n                else {\n                  param_2[10] = (int)piVar8 + 1;\n                  bVar9 = *(byte *)(param_2[1] + (int)piVar8);\n                }\n              }\n              else {\n                param_2[10] = (int)piVar8 + 1;\n                bVar9 = *(byte *)(param_2[1] + (int)piVar8);\n              }\n            }\n          }\n          else {\n            iVar6 = param_2[10];\n            param_2[10] = iVar6 + 1;\n            bVar9 = *(byte *)(param_2[1] + iVar6);\n          }\n          iVar6 = param_2[10];\n          uVar3 = 7;\n          if (param_2[0xe] <= iVar6) goto LAB_00077d90;\n          if ((bVar1 == bVar9) && (*(char *)(param_2[1] + iVar6) == ']')) {\n            param_2[10] = iVar6 + 1;\n            *(undefined1 *)(param_1[1] + iVar2) = 0;\n            bVar1 = param_3[4];\n            if (bVar1 == 0x1c) {\n              *param_1 = 2;\n              uVar3 = 0;\n            }\n            else if (bVar1 == 0x1e) {\n              *param_1 = 4;\n              uVar3 = 0;\n            }\n            else if (bVar1 == 0x1a) {\n              *param_1 = 3;\n              uVar3 = 0;\n            }\n            else {\n              uVar3 = 0;\n            }\n            goto LAB_00077d90;\n          }\n          pbVar5 = (byte *)(param_1[1] + iVar2);\n          iVar2 = iVar2 + 1;\n          *pbVar5 = bVar9;\n        } while (iVar2 != 0x20);\n        uVar3 = 7;\n      }\n      else {\n        uVar3 = 7;\n      }\n    }\n    else {\n      if ((bVar1 == 0x16) && (param_7 == '\0')) {\n        FUN_00077ac8(auStack_34,param_2,param_6);\n        piVar7 = param_2;\n        if (local_30 != '\x15') {\n          uVar3 = 0xb;\n          goto LAB_00077d90;\n        }\n      }\n      *param_1 = 0;\n      *(byte *)(param_1 + 1) = *param_3;\n      uVar3 = 0;\n    }\n  }\n  else {\n    *param_1 = 1;\n    piVar7 = (int *)param_2[10];\n    uVar3 = FUN_00077634(param_2);\n    param_1[1] = uVar3;\n    param_2[10] = param_2[10] + iVar2;\n    uVar3 = 0;\n  }\nLAB_00077d90:\n  if (local_2c == *(int *)PTR___stack_chk_guard_000b7c68) {\n    return uVar3;\n  }\n  (*(code *)PTR___stack_chk_fail_000b7bfc)();\n  if ((*(char *)(piVar7 + 6) == '\x11') && (local_2c == piVar7[5])) {\n    piVar7[6] = piVar7[6] & 0xffffefffU | 0x1000;\n  }\n  return 0;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "undefined4 uVar3;" type_identifier identifier ;) (declaration "code *pcVar4;" type_identifier (pointer_declarator "*pcVar4" * identifier) ;) (declaration "byte *pbVar5;" type_identifier (pointer_declarator "*pbVar5" * identifier) ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "int *piVar7;" primitive_type (pointer_declarator "*piVar7" * identifier) ;) (declaration "int *piVar8;" primitive_type (pointer_declarator "*piVar8" * identifier) ;) (declaration "byte bVar9;" type_identifier identifier ;) (declaration "undefined1 auStack_34 [4];" type_identifier (array_declarator "auStack_34 [4]" identifier [ number_literal ]) ;) (declaration "char local_30;" primitive_type identifier ;) (declaration "int local_2c;" primitive_type identifier ;) (expression_statement "local_2c = *(int *)PTR___stack_chk_guard_000b7c68;" (assignment_expression "local_2c = *(int *)PTR___stack_chk_guard_000b7c68" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_000b7c68" * (cast_expression "(int *)PTR___stack_chk_guard_000b7c68" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "piVar8 = (int *)param_2[10];" (assignment_expression "piVar8 = (int *)param_2[10]" identifier = (cast_expression "(int *)param_2[10]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[10]" identifier [ number_literal ]))) ;) (expression_statement "piVar7 = piVar8;" (assignment_expression "piVar7 = piVar8" identifier = identifier) ;) (expression_statement "iVar2 = FUN_000775b0(param_2);" (assignment_expression "iVar2 = FUN_000775b0(param_2)" identifier = (call_expression "FUN_000775b0(param_2)" identifier (argument_list "(param_2)" ( identifier )))) ;) (expression_statement "param_4 = (int)piVar8 + param_4;" (assignment_expression "param_4 = (int)piVar8 + param_4" identifier = (binary_expression "(int)piVar8 + param_4" (cast_expression "(int)piVar8" ( (type_descriptor "int" primitive_type) ) identifier) + identifier)) ;) (if_statement "if (iVar2 < 2) {\n    param_2[10] = param_4;\n    bVar1 = param_3[4];\n    if (((bVar1 & 0xfb) == 0x1a) || (bVar1 == 0x1c)) {\n      iVar2 = 0;\n      if (param_4 < param_2[0xe]) {\n        bVar1 = *param_3;\n        pcVar4 = (code *)(PTR_LAB_000b7a18 + 0x75b0);\n        do {\n          if (param_3[4] == 0x1e) {\n            if (*(char *)((int)param_2 + 0x4b) == '\0') {\n              iVar6 = param_2[10];\n              param_2[10] = iVar6 + 1;\n              bVar9 = *(byte *)(param_2[1] + iVar6);\n            }\n            else if (*(char *)(param_2 + 0x13) == '\0') {\n              iVar6 = param_2[10];\n              piVar7 = (int *)(iVar6 + 1);\n              param_2[10] = (int)piVar7;\n              bVar9 = *(byte *)(*param_2 + param_2[6] + iVar6);\n            }\n            else {\n              piVar8 = (int *)param_2[10];\n              if ((piVar8 == (int *)param_2[7]) || (*(int *)(param_2[2] + (int)piVar8 * 4) != -1)) {\n                bVar9 = *(byte *)(*param_2 + *(int *)(param_2[3] + (int)piVar8 * 4) + param_2[6]);\n                piVar7 = piVar8;\n                if ((bVar9 & 0x80) == 0) {\n                  iVar6 = (*pcVar4)(param_2);\n                  param_2[10] = (int)piVar8 + iVar6;\n                }\n                else {\n                  param_2[10] = (int)piVar8 + 1;\n                  bVar9 = *(byte *)(param_2[1] + (int)piVar8);\n                }\n              }\n              else {\n                param_2[10] = (int)piVar8 + 1;\n                bVar9 = *(byte *)(param_2[1] + (int)piVar8);\n              }\n            }\n          }\n          else {\n            iVar6 = param_2[10];\n            param_2[10] = iVar6 + 1;\n            bVar9 = *(byte *)(param_2[1] + iVar6);\n          }\n          iVar6 = param_2[10];\n          uVar3 = 7;\n          if (param_2[0xe] <= iVar6) goto LAB_00077d90;\n          if ((bVar1 == bVar9) && (*(char *)(param_2[1] + iVar6) == ']')) {\n            param_2[10] = iVar6 + 1;\n            *(undefined1 *)(param_1[1] + iVar2) = 0;\n            bVar1 = param_3[4];\n            if (bVar1 == 0x1c) {\n              *param_1 = 2;\n              uVar3 = 0;\n            }\n            else if (bVar1 == 0x1e) {\n              *param_1 = 4;\n              uVar3 = 0;\n            }\n            else if (bVar1 == 0x1a) {\n              *param_1 = 3;\n              uVar3 = 0;\n            }\n            else {\n              uVar3 = 0;\n            }\n            goto LAB_00077d90;\n          }\n          pbVar5 = (byte *)(param_1[1] + iVar2);\n          iVar2 = iVar2 + 1;\n          *pbVar5 = bVar9;\n        } while (iVar2 != 0x20);\n        uVar3 = 7;\n      }\n      else {\n        uVar3 = 7;\n      }\n    }\n    else {\n      if ((bVar1 == 0x16) && (param_7 == '\0')) {\n        FUN_00077ac8(auStack_34,param_2,param_6);\n        piVar7 = param_2;\n        if (local_30 != '\x15') {\n          uVar3 = 0xb;\n          goto LAB_00077d90;\n        }\n      }\n      *param_1 = 0;\n      *(byte *)(param_1 + 1) = *param_3;\n      uVar3 = 0;\n    }\n  }\n  else {\n    *param_1 = 1;\n    piVar7 = (int *)param_2[10];\n    uVar3 = FUN_00077634(param_2);\n    param_1[1] = uVar3;\n    param_2[10] = param_2[10] + iVar2;\n    uVar3 = 0;\n  }" if (parenthesized_expression "(iVar2 < 2)" ( (binary_expression "iVar2 < 2" identifier < number_literal) )) (compound_statement "{\n    param_2[10] = param_4;\n    bVar1 = param_3[4];\n    if (((bVar1 & 0xfb) == 0x1a) || (bVar1 == 0x1c)) {\n      iVar2 = 0;\n      if (param_4 < param_2[0xe]) {\n        bVar1 = *param_3;\n        pcVar4 = (code *)(PTR_LAB_000b7a18 + 0x75b0);\n        do {\n          if (param_3[4] == 0x1e) {\n            if (*(char *)((int)param_2 + 0x4b) == '\0') {\n              iVar6 = param_2[10];\n              param_2[10] = iVar6 + 1;\n              bVar9 = *(byte *)(param_2[1] + iVar6);\n            }\n            else if (*(char *)(param_2 + 0x13) == '\0') {\n              iVar6 = param_2[10];\n              piVar7 = (int *)(iVar6 + 1);\n              param_2[10] = (int)piVar7;\n              bVar9 = *(byte *)(*param_2 + param_2[6] + iVar6);\n            }\n            else {\n              piVar8 = (int *)param_2[10];\n              if ((piVar8 == (int *)param_2[7]) || (*(int *)(param_2[2] + (int)piVar8 * 4) != -1)) {\n                bVar9 = *(byte *)(*param_2 + *(int *)(param_2[3] + (int)piVar8 * 4) + param_2[6]);\n                piVar7 = piVar8;\n                if ((bVar9 & 0x80) == 0) {\n                  iVar6 = (*pcVar4)(param_2);\n                  param_2[10] = (int)piVar8 + iVar6;\n                }\n                else {\n                  param_2[10] = (int)piVar8 + 1;\n                  bVar9 = *(byte *)(param_2[1] + (int)piVar8);\n                }\n              }\n              else {\n                param_2[10] = (int)piVar8 + 1;\n                bVar9 = *(byte *)(param_2[1] + (int)piVar8);\n              }\n            }\n          }\n          else {\n            iVar6 = param_2[10];\n            param_2[10] = iVar6 + 1;\n            bVar9 = *(byte *)(param_2[1] + iVar6);\n          }\n          iVar6 = param_2[10];\n          uVar3 = 7;\n          if (param_2[0xe] <= iVar6) goto LAB_00077d90;\n          if ((bVar1 == bVar9) && (*(char *)(param_2[1] + iVar6) == ']')) {\n            param_2[10] = iVar6 + 1;\n            *(undefined1 *)(param_1[1] + iVar2) = 0;\n            bVar1 = param_3[4];\n            if (bVar1 == 0x1c) {\n              *param_1 = 2;\n              uVar3 = 0;\n            }\n            else if (bVar1 == 0x1e) {\n              *param_1 = 4;\n              uVar3 = 0;\n            }\n            else if (bVar1 == 0x1a) {\n              *param_1 = 3;\n              uVar3 = 0;\n            }\n            else {\n              uVar3 = 0;\n            }\n            goto LAB_00077d90;\n          }\n          pbVar5 = (byte *)(param_1[1] + iVar2);\n          iVar2 = iVar2 + 1;\n          *pbVar5 = bVar9;\n        } while (iVar2 != 0x20);\n        uVar3 = 7;\n      }\n      else {\n        uVar3 = 7;\n      }\n    }\n    else {\n      if ((bVar1 == 0x16) && (param_7 == '\0')) {\n        FUN_00077ac8(auStack_34,param_2,param_6);\n        piVar7 = param_2;\n        if (local_30 != '\x15') {\n          uVar3 = 0xb;\n          goto LAB_00077d90;\n        }\n      }\n      *param_1 = 0;\n      *(byte *)(param_1 + 1) = *param_3;\n      uVar3 = 0;\n    }\n  }" { (expression_statement "param_2[10] = param_4;" (assignment_expression "param_2[10] = param_4" (subscript_expression "param_2[10]" identifier [ number_literal ]) = identifier) ;) (expression_statement "bVar1 = param_3[4];" (assignment_expression "bVar1 = param_3[4]" identifier = (subscript_expression "param_3[4]" identifier [ number_literal ])) ;) (if_statement "if (((bVar1 & 0xfb) == 0x1a) || (bVar1 == 0x1c)) {\n      iVar2 = 0;\n      if (param_4 < param_2[0xe]) {\n        bVar1 = *param_3;\n        pcVar4 = (code *)(PTR_LAB_000b7a18 + 0x75b0);\n        do {\n          if (param_3[4] == 0x1e) {\n            if (*(char *)((int)param_2 + 0x4b) == '\0') {\n              iVar6 = param_2[10];\n              param_2[10] = iVar6 + 1;\n              bVar9 = *(byte *)(param_2[1] + iVar6);\n            }\n            else if (*(char *)(param_2 + 0x13) == '\0') {\n              iVar6 = param_2[10];\n              piVar7 = (int *)(iVar6 + 1);\n              param_2[10] = (int)piVar7;\n              bVar9 = *(byte *)(*param_2 + param_2[6] + iVar6);\n            }\n            else {\n              piVar8 = (int *)param_2[10];\n              if ((piVar8 == (int *)param_2[7]) || (*(int *)(param_2[2] + (int)piVar8 * 4) != -1)) {\n                bVar9 = *(byte *)(*param_2 + *(int *)(param_2[3] + (int)piVar8 * 4) + param_2[6]);\n                piVar7 = piVar8;\n                if ((bVar9 & 0x80) == 0) {\n                  iVar6 = (*pcVar4)(param_2);\n                  param_2[10] = (int)piVar8 + iVar6;\n                }\n                else {\n                  param_2[10] = (int)piVar8 + 1;\n                  bVar9 = *(byte *)(param_2[1] + (int)piVar8);\n                }\n              }\n              else {\n                param_2[10] = (int)piVar8 + 1;\n                bVar9 = *(byte *)(param_2[1] + (int)piVar8);\n              }\n            }\n          }\n          else {\n            iVar6 = param_2[10];\n            param_2[10] = iVar6 + 1;\n            bVar9 = *(byte *)(param_2[1] + iVar6);\n          }\n          iVar6 = param_2[10];\n          uVar3 = 7;\n          if (param_2[0xe] <= iVar6) goto LAB_00077d90;\n          if ((bVar1 == bVar9) && (*(char *)(param_2[1] + iVar6) == ']')) {\n            param_2[10] = iVar6 + 1;\n            *(undefined1 *)(param_1[1] + iVar2) = 0;\n            bVar1 = param_3[4];\n            if (bVar1 == 0x1c) {\n              *param_1 = 2;\n              uVar3 = 0;\n            }\n            else if (bVar1 == 0x1e) {\n              *param_1 = 4;\n              uVar3 = 0;\n            }\n            else if (bVar1 == 0x1a) {\n              *param_1 = 3;\n              uVar3 = 0;\n            }\n            else {\n              uVar3 = 0;\n            }\n            goto LAB_00077d90;\n          }\n          pbVar5 = (byte *)(param_1[1] + iVar2);\n          iVar2 = iVar2 + 1;\n          *pbVar5 = bVar9;\n        } while (iVar2 != 0x20);\n        uVar3 = 7;\n      }\n      else {\n        uVar3 = 7;\n      }\n    }\n    else {\n      if ((bVar1 == 0x16) && (param_7 == '\0')) {\n        FUN_00077ac8(auStack_34,param_2,param_6);\n        piVar7 = param_2;\n        if (local_30 != '\x15') {\n          uVar3 = 0xb;\n          goto LAB_00077d90;\n        }\n      }\n      *param_1 = 0;\n      *(byte *)(param_1 + 1) = *param_3;\n      uVar3 = 0;\n    }" if (parenthesized_expression "(((bVar1 & 0xfb) == 0x1a) || (bVar1 == 0x1c))" ( (binary_expression "((bVar1 & 0xfb) == 0x1a) || (bVar1 == 0x1c)" (parenthesized_expression "((bVar1 & 0xfb) == 0x1a)" ( (binary_expression "(bVar1 & 0xfb) == 0x1a" (parenthesized_expression "(bVar1 & 0xfb)" ( (binary_expression "bVar1 & 0xfb" identifier & number_literal) )) == number_literal) )) || (parenthesized_expression "(bVar1 == 0x1c)" ( (binary_expression "bVar1 == 0x1c" identifier == number_literal) ))) )) (compound_statement "{\n      iVar2 = 0;\n      if (param_4 < param_2[0xe]) {\n        bVar1 = *param_3;\n        pcVar4 = (code *)(PTR_LAB_000b7a18 + 0x75b0);\n        do {\n          if (param_3[4] == 0x1e) {\n            if (*(char *)((int)param_2 + 0x4b) == '\0') {\n              iVar6 = param_2[10];\n              param_2[10] = iVar6 + 1;\n              bVar9 = *(byte *)(param_2[1] + iVar6);\n            }\n            else if (*(char *)(param_2 + 0x13) == '\0') {\n              iVar6 = param_2[10];\n              piVar7 = (int *)(iVar6 + 1);\n              param_2[10] = (int)piVar7;\n              bVar9 = *(byte *)(*param_2 + param_2[6] + iVar6);\n            }\n            else {\n              piVar8 = (int *)param_2[10];\n              if ((piVar8 == (int *)param_2[7]) || (*(int *)(param_2[2] + (int)piVar8 * 4) != -1)) {\n                bVar9 = *(byte *)(*param_2 + *(int *)(param_2[3] + (int)piVar8 * 4) + param_2[6]);\n                piVar7 = piVar8;\n                if ((bVar9 & 0x80) == 0) {\n                  iVar6 = (*pcVar4)(param_2);\n                  param_2[10] = (int)piVar8 + iVar6;\n                }\n                else {\n                  param_2[10] = (int)piVar8 + 1;\n                  bVar9 = *(byte *)(param_2[1] + (int)piVar8);\n                }\n              }\n              else {\n                param_2[10] = (int)piVar8 + 1;\n                bVar9 = *(byte *)(param_2[1] + (int)piVar8);\n              }\n            }\n          }\n          else {\n            iVar6 = param_2[10];\n            param_2[10] = iVar6 + 1;\n            bVar9 = *(byte *)(param_2[1] + iVar6);\n          }\n          iVar6 = param_2[10];\n          uVar3 = 7;\n          if (param_2[0xe] <= iVar6) goto LAB_00077d90;\n          if ((bVar1 == bVar9) && (*(char *)(param_2[1] + iVar6) == ']')) {\n            param_2[10] = iVar6 + 1;\n            *(undefined1 *)(param_1[1] + iVar2) = 0;\n            bVar1 = param_3[4];\n            if (bVar1 == 0x1c) {\n              *param_1 = 2;\n              uVar3 = 0;\n            }\n            else if (bVar1 == 0x1e) {\n              *param_1 = 4;\n              uVar3 = 0;\n            }\n            else if (bVar1 == 0x1a) {\n              *param_1 = 3;\n              uVar3 = 0;\n            }\n            else {\n              uVar3 = 0;\n            }\n            goto LAB_00077d90;\n          }\n          pbVar5 = (byte *)(param_1[1] + iVar2);\n          iVar2 = iVar2 + 1;\n          *pbVar5 = bVar9;\n        } while (iVar2 != 0x20);\n        uVar3 = 7;\n      }\n      else {\n        uVar3 = 7;\n      }\n    }" { (expression_statement "iVar2 = 0;" (assignment_expression "iVar2 = 0" identifier = number_literal) ;) (if_statement "if (param_4 < param_2[0xe]) {\n        bVar1 = *param_3;\n        pcVar4 = (code *)(PTR_LAB_000b7a18 + 0x75b0);\n        do {\n          if (param_3[4] == 0x1e) {\n            if (*(char *)((int)param_2 + 0x4b) == '\0') {\n              iVar6 = param_2[10];\n              param_2[10] = iVar6 + 1;\n              bVar9 = *(byte *)(param_2[1] + iVar6);\n            }\n            else if (*(char *)(param_2 + 0x13) == '\0') {\n              iVar6 = param_2[10];\n              piVar7 = (int *)(iVar6 + 1);\n              param_2[10] = (int)piVar7;\n              bVar9 = *(byte *)(*param_2 + param_2[6] + iVar6);\n            }\n            else {\n              piVar8 = (int *)param_2[10];\n              if ((piVar8 == (int *)param_2[7]) || (*(int *)(param_2[2] + (int)piVar8 * 4) != -1)) {\n                bVar9 = *(byte *)(*param_2 + *(int *)(param_2[3] + (int)piVar8 * 4) + param_2[6]);\n                piVar7 = piVar8;\n                if ((bVar9 & 0x80) == 0) {\n                  iVar6 = (*pcVar4)(param_2);\n                  param_2[10] = (int)piVar8 + iVar6;\n                }\n                else {\n                  param_2[10] = (int)piVar8 + 1;\n                  bVar9 = *(byte *)(param_2[1] + (int)piVar8);\n                }\n              }\n              else {\n                param_2[10] = (int)piVar8 + 1;\n                bVar9 = *(byte *)(param_2[1] + (int)piVar8);\n              }\n            }\n          }\n          else {\n            iVar6 = param_2[10];\n            param_2[10] = iVar6 + 1;\n            bVar9 = *(byte *)(param_2[1] + iVar6);\n          }\n          iVar6 = param_2[10];\n          uVar3 = 7;\n          if (param_2[0xe] <= iVar6) goto LAB_00077d90;\n          if ((bVar1 == bVar9) && (*(char *)(param_2[1] + iVar6) == ']')) {\n            param_2[10] = iVar6 + 1;\n            *(undefined1 *)(param_1[1] + iVar2) = 0;\n            bVar1 = param_3[4];\n            if (bVar1 == 0x1c) {\n              *param_1 = 2;\n              uVar3 = 0;\n            }\n            else if (bVar1 == 0x1e) {\n              *param_1 = 4;\n              uVar3 = 0;\n            }\n            else if (bVar1 == 0x1a) {\n              *param_1 = 3;\n              uVar3 = 0;\n            }\n            else {\n              uVar3 = 0;\n            }\n            goto LAB_00077d90;\n          }\n          pbVar5 = (byte *)(param_1[1] + iVar2);\n          iVar2 = iVar2 + 1;\n          *pbVar5 = bVar9;\n        } while (iVar2 != 0x20);\n        uVar3 = 7;\n      }\n      else {\n        uVar3 = 7;\n      }" if (parenthesized_expression "(param_4 < param_2[0xe])" ( (binary_expression "param_4 < param_2[0xe]" identifier < (subscript_expression "param_2[0xe]" identifier [ number_literal ])) )) (compound_statement "{\n        bVar1 = *param_3;\n        pcVar4 = (code *)(PTR_LAB_000b7a18 + 0x75b0);\n        do {\n          if (param_3[4] == 0x1e) {\n            if (*(char *)((int)param_2 + 0x4b) == '\0') {\n              iVar6 = param_2[10];\n              param_2[10] = iVar6 + 1;\n              bVar9 = *(byte *)(param_2[1] + iVar6);\n            }\n            else if (*(char *)(param_2 + 0x13) == '\0') {\n              iVar6 = param_2[10];\n              piVar7 = (int *)(iVar6 + 1);\n              param_2[10] = (int)piVar7;\n              bVar9 = *(byte *)(*param_2 + param_2[6] + iVar6);\n            }\n            else {\n              piVar8 = (int *)param_2[10];\n              if ((piVar8 == (int *)param_2[7]) || (*(int *)(param_2[2] + (int)piVar8 * 4) != -1)) {\n                bVar9 = *(byte *)(*param_2 + *(int *)(param_2[3] + (int)piVar8 * 4) + param_2[6]);\n                piVar7 = piVar8;\n                if ((bVar9 & 0x80) == 0) {\n                  iVar6 = (*pcVar4)(param_2);\n                  param_2[10] = (int)piVar8 + iVar6;\n                }\n                else {\n                  param_2[10] = (int)piVar8 + 1;\n                  bVar9 = *(byte *)(param_2[1] + (int)piVar8);\n                }\n              }\n              else {\n                param_2[10] = (int)piVar8 + 1;\n                bVar9 = *(byte *)(param_2[1] + (int)piVar8);\n              }\n            }\n          }\n          else {\n            iVar6 = param_2[10];\n            param_2[10] = iVar6 + 1;\n            bVar9 = *(byte *)(param_2[1] + iVar6);\n          }\n          iVar6 = param_2[10];\n          uVar3 = 7;\n          if (param_2[0xe] <= iVar6) goto LAB_00077d90;\n          if ((bVar1 == bVar9) && (*(char *)(param_2[1] + iVar6) == ']')) {\n            param_2[10] = iVar6 + 1;\n            *(undefined1 *)(param_1[1] + iVar2) = 0;\n            bVar1 = param_3[4];\n            if (bVar1 == 0x1c) {\n              *param_1 = 2;\n              uVar3 = 0;\n            }\n            else if (bVar1 == 0x1e) {\n              *param_1 = 4;\n              uVar3 = 0;\n            }\n            else if (bVar1 == 0x1a) {\n              *param_1 = 3;\n              uVar3 = 0;\n            }\n            else {\n              uVar3 = 0;\n            }\n            goto LAB_00077d90;\n          }\n          pbVar5 = (byte *)(param_1[1] + iVar2);\n          iVar2 = iVar2 + 1;\n          *pbVar5 = bVar9;\n        } while (iVar2 != 0x20);\n        uVar3 = 7;\n      }" { (expression_statement "bVar1 = *param_3;" (assignment_expression "bVar1 = *param_3" identifier = (pointer_expression "*param_3" * identifier)) ;) (expression_statement "pcVar4 = (code *)(PTR_LAB_000b7a18 + 0x75b0);" (assignment_expression "pcVar4 = (code *)(PTR_LAB_000b7a18 + 0x75b0)" identifier = (cast_expression "(code *)(PTR_LAB_000b7a18 + 0x75b0)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_000b7a18 + 0x75b0)" ( (binary_expression "PTR_LAB_000b7a18 + 0x75b0" identifier + number_literal) )))) ;) (do_statement "do {\n          if (param_3[4] == 0x1e) {\n            if (*(char *)((int)param_2 + 0x4b) == '\0') {\n              iVar6 = param_2[10];\n              param_2[10] = iVar6 + 1;\n              bVar9 = *(byte *)(param_2[1] + iVar6);\n            }\n            else if (*(char *)(param_2 + 0x13) == '\0') {\n              iVar6 = param_2[10];\n              piVar7 = (int *)(iVar6 + 1);\n              param_2[10] = (int)piVar7;\n              bVar9 = *(byte *)(*param_2 + param_2[6] + iVar6);\n            }\n            else {\n              piVar8 = (int *)param_2[10];\n              if ((piVar8 == (int *)param_2[7]) || (*(int *)(param_2[2] + (int)piVar8 * 4) != -1)) {\n                bVar9 = *(byte *)(*param_2 + *(int *)(param_2[3] + (int)piVar8 * 4) + param_2[6]);\n                piVar7 = piVar8;\n                if ((bVar9 & 0x80) == 0) {\n                  iVar6 = (*pcVar4)(param_2);\n                  param_2[10] = (int)piVar8 + iVar6;\n                }\n                else {\n                  param_2[10] = (int)piVar8 + 1;\n                  bVar9 = *(byte *)(param_2[1] + (int)piVar8);\n                }\n              }\n              else {\n                param_2[10] = (int)piVar8 + 1;\n                bVar9 = *(byte *)(param_2[1] + (int)piVar8);\n              }\n            }\n          }\n          else {\n            iVar6 = param_2[10];\n            param_2[10] = iVar6 + 1;\n            bVar9 = *(byte *)(param_2[1] + iVar6);\n          }\n          iVar6 = param_2[10];\n          uVar3 = 7;\n          if (param_2[0xe] <= iVar6) goto LAB_00077d90;\n          if ((bVar1 == bVar9) && (*(char *)(param_2[1] + iVar6) == ']')) {\n            param_2[10] = iVar6 + 1;\n            *(undefined1 *)(param_1[1] + iVar2) = 0;\n            bVar1 = param_3[4];\n            if (bVar1 == 0x1c) {\n              *param_1 = 2;\n              uVar3 = 0;\n            }\n            else if (bVar1 == 0x1e) {\n              *param_1 = 4;\n              uVar3 = 0;\n            }\n            else if (bVar1 == 0x1a) {\n              *param_1 = 3;\n              uVar3 = 0;\n            }\n            else {\n              uVar3 = 0;\n            }\n            goto LAB_00077d90;\n          }\n          pbVar5 = (byte *)(param_1[1] + iVar2);\n          iVar2 = iVar2 + 1;\n          *pbVar5 = bVar9;\n        } while (iVar2 != 0x20);" do (compound_statement "{\n          if (param_3[4] == 0x1e) {\n            if (*(char *)((int)param_2 + 0x4b) == '\0') {\n              iVar6 = param_2[10];\n              param_2[10] = iVar6 + 1;\n              bVar9 = *(byte *)(param_2[1] + iVar6);\n            }\n            else if (*(char *)(param_2 + 0x13) == '\0') {\n              iVar6 = param_2[10];\n              piVar7 = (int *)(iVar6 + 1);\n              param_2[10] = (int)piVar7;\n              bVar9 = *(byte *)(*param_2 + param_2[6] + iVar6);\n            }\n            else {\n              piVar8 = (int *)param_2[10];\n              if ((piVar8 == (int *)param_2[7]) || (*(int *)(param_2[2] + (int)piVar8 * 4) != -1)) {\n                bVar9 = *(byte *)(*param_2 + *(int *)(param_2[3] + (int)piVar8 * 4) + param_2[6]);\n                piVar7 = piVar8;\n                if ((bVar9 & 0x80) == 0) {\n                  iVar6 = (*pcVar4)(param_2);\n                  param_2[10] = (int)piVar8 + iVar6;\n                }\n                else {\n                  param_2[10] = (int)piVar8 + 1;\n                  bVar9 = *(byte *)(param_2[1] + (int)piVar8);\n                }\n              }\n              else {\n                param_2[10] = (int)piVar8 + 1;\n                bVar9 = *(byte *)(param_2[1] + (int)piVar8);\n              }\n            }\n          }\n          else {\n            iVar6 = param_2[10];\n            param_2[10] = iVar6 + 1;\n            bVar9 = *(byte *)(param_2[1] + iVar6);\n          }\n          iVar6 = param_2[10];\n          uVar3 = 7;\n          if (param_2[0xe] <= iVar6) goto LAB_00077d90;\n          if ((bVar1 == bVar9) && (*(char *)(param_2[1] + iVar6) == ']')) {\n            param_2[10] = iVar6 + 1;\n            *(undefined1 *)(param_1[1] + iVar2) = 0;\n            bVar1 = param_3[4];\n            if (bVar1 == 0x1c) {\n              *param_1 = 2;\n              uVar3 = 0;\n            }\n            else if (bVar1 == 0x1e) {\n              *param_1 = 4;\n              uVar3 = 0;\n            }\n            else if (bVar1 == 0x1a) {\n              *param_1 = 3;\n              uVar3 = 0;\n            }\n            else {\n              uVar3 = 0;\n            }\n            goto LAB_00077d90;\n          }\n          pbVar5 = (byte *)(param_1[1] + iVar2);\n          iVar2 = iVar2 + 1;\n          *pbVar5 = bVar9;\n        }" { (if_statement "if (param_3[4] == 0x1e) {\n            if (*(char *)((int)param_2 + 0x4b) == '\0') {\n              iVar6 = param_2[10];\n              param_2[10] = iVar6 + 1;\n              bVar9 = *(byte *)(param_2[1] + iVar6);\n            }\n            else if (*(char *)(param_2 + 0x13) == '\0') {\n              iVar6 = param_2[10];\n              piVar7 = (int *)(iVar6 + 1);\n              param_2[10] = (int)piVar7;\n              bVar9 = *(byte *)(*param_2 + param_2[6] + iVar6);\n            }\n            else {\n              piVar8 = (int *)param_2[10];\n              if ((piVar8 == (int *)param_2[7]) || (*(int *)(param_2[2] + (int)piVar8 * 4) != -1)) {\n                bVar9 = *(byte *)(*param_2 + *(int *)(param_2[3] + (int)piVar8 * 4) + param_2[6]);\n                piVar7 = piVar8;\n                if ((bVar9 & 0x80) == 0) {\n                  iVar6 = (*pcVar4)(param_2);\n                  param_2[10] = (int)piVar8 + iVar6;\n                }\n                else {\n                  param_2[10] = (int)piVar8 + 1;\n                  bVar9 = *(byte *)(param_2[1] + (int)piVar8);\n                }\n              }\n              else {\n                param_2[10] = (int)piVar8 + 1;\n                bVar9 = *(byte *)(param_2[1] + (int)piVar8);\n              }\n            }\n          }\n          else {\n            iVar6 = param_2[10];\n            param_2[10] = iVar6 + 1;\n            bVar9 = *(byte *)(param_2[1] + iVar6);\n          }" if (parenthesized_expression "(param_3[4] == 0x1e)" ( (binary_expression "param_3[4] == 0x1e" (subscript_expression "param_3[4]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n            if (*(char *)((int)param_2 + 0x4b) == '\0') {\n              iVar6 = param_2[10];\n              param_2[10] = iVar6 + 1;\n              bVar9 = *(byte *)(param_2[1] + iVar6);\n            }\n            else if (*(char *)(param_2 + 0x13) == '\0') {\n              iVar6 = param_2[10];\n              piVar7 = (int *)(iVar6 + 1);\n              param_2[10] = (int)piVar7;\n              bVar9 = *(byte *)(*param_2 + param_2[6] + iVar6);\n            }\n            else {\n              piVar8 = (int *)param_2[10];\n              if ((piVar8 == (int *)param_2[7]) || (*(int *)(param_2[2] + (int)piVar8 * 4) != -1)) {\n                bVar9 = *(byte *)(*param_2 + *(int *)(param_2[3] + (int)piVar8 * 4) + param_2[6]);\n                piVar7 = piVar8;\n                if ((bVar9 & 0x80) == 0) {\n                  iVar6 = (*pcVar4)(param_2);\n                  param_2[10] = (int)piVar8 + iVar6;\n                }\n                else {\n                  param_2[10] = (int)piVar8 + 1;\n                  bVar9 = *(byte *)(param_2[1] + (int)piVar8);\n                }\n              }\n              else {\n                param_2[10] = (int)piVar8 + 1;\n                bVar9 = *(byte *)(param_2[1] + (int)piVar8);\n              }\n            }\n          }" { (if_statement "if (*(char *)((int)param_2 + 0x4b) == '\0') {\n              iVar6 = param_2[10];\n              param_2[10] = iVar6 + 1;\n              bVar9 = *(byte *)(param_2[1] + iVar6);\n            }\n            else if (*(char *)(param_2 + 0x13) == '\0') {\n              iVar6 = param_2[10];\n              piVar7 = (int *)(iVar6 + 1);\n              param_2[10] = (int)piVar7;\n              bVar9 = *(byte *)(*param_2 + param_2[6] + iVar6);\n            }\n            else {\n              piVar8 = (int *)param_2[10];\n              if ((piVar8 == (int *)param_2[7]) || (*(int *)(param_2[2] + (int)piVar8 * 4) != -1)) {\n                bVar9 = *(byte *)(*param_2 + *(int *)(param_2[3] + (int)piVar8 * 4) + param_2[6]);\n                piVar7 = piVar8;\n                if ((bVar9 & 0x80) == 0) {\n                  iVar6 = (*pcVar4)(param_2);\n                  param_2[10] = (int)piVar8 + iVar6;\n                }\n                else {\n                  param_2[10] = (int)piVar8 + 1;\n                  bVar9 = *(byte *)(param_2[1] + (int)piVar8);\n                }\n              }\n              else {\n                param_2[10] = (int)piVar8 + 1;\n                bVar9 = *(byte *)(param_2[1] + (int)piVar8);\n              }\n            }" if (parenthesized_expression "(*(char *)((int)param_2 + 0x4b) == '\0')" ( (binary_expression "*(char *)((int)param_2 + 0x4b) == '\0'" (pointer_expression "*(char *)((int)param_2 + 0x4b)" * (cast_expression "(char *)((int)param_2 + 0x4b)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_2 + 0x4b)" ( (binary_expression "(int)param_2 + 0x4b" (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n              iVar6 = param_2[10];\n              param_2[10] = iVar6 + 1;\n              bVar9 = *(byte *)(param_2[1] + iVar6);\n            }" { (expression_statement "iVar6 = param_2[10];" (assignment_expression "iVar6 = param_2[10]" identifier = (subscript_expression "param_2[10]" identifier [ number_literal ])) ;) (expression_statement "param_2[10] = iVar6 + 1;" (assignment_expression "param_2[10] = iVar6 + 1" (subscript_expression "param_2[10]" identifier [ number_literal ]) = (binary_expression "iVar6 + 1" identifier + number_literal)) ;) (expression_statement "bVar9 = *(byte *)(param_2[1] + iVar6);" (assignment_expression "bVar9 = *(byte *)(param_2[1] + iVar6)" identifier = (pointer_expression "*(byte *)(param_2[1] + iVar6)" * (cast_expression "(byte *)(param_2[1] + iVar6)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[1] + iVar6)" ( (binary_expression "param_2[1] + iVar6" (subscript_expression "param_2[1]" identifier [ number_literal ]) + identifier) ))))) ;) }) (else_clause "else if (*(char *)(param_2 + 0x13) == '\0') {\n              iVar6 = param_2[10];\n              piVar7 = (int *)(iVar6 + 1);\n              param_2[10] = (int)piVar7;\n              bVar9 = *(byte *)(*param_2 + param_2[6] + iVar6);\n            }\n            else {\n              piVar8 = (int *)param_2[10];\n              if ((piVar8 == (int *)param_2[7]) || (*(int *)(param_2[2] + (int)piVar8 * 4) != -1)) {\n                bVar9 = *(byte *)(*param_2 + *(int *)(param_2[3] + (int)piVar8 * 4) + param_2[6]);\n                piVar7 = piVar8;\n                if ((bVar9 & 0x80) == 0) {\n                  iVar6 = (*pcVar4)(param_2);\n                  param_2[10] = (int)piVar8 + iVar6;\n                }\n                else {\n                  param_2[10] = (int)piVar8 + 1;\n                  bVar9 = *(byte *)(param_2[1] + (int)piVar8);\n                }\n              }\n              else {\n                param_2[10] = (int)piVar8 + 1;\n                bVar9 = *(byte *)(param_2[1] + (int)piVar8);\n              }\n            }" else (if_statement "if (*(char *)(param_2 + 0x13) == '\0') {\n              iVar6 = param_2[10];\n              piVar7 = (int *)(iVar6 + 1);\n              param_2[10] = (int)piVar7;\n              bVar9 = *(byte *)(*param_2 + param_2[6] + iVar6);\n            }\n            else {\n              piVar8 = (int *)param_2[10];\n              if ((piVar8 == (int *)param_2[7]) || (*(int *)(param_2[2] + (int)piVar8 * 4) != -1)) {\n                bVar9 = *(byte *)(*param_2 + *(int *)(param_2[3] + (int)piVar8 * 4) + param_2[6]);\n                piVar7 = piVar8;\n                if ((bVar9 & 0x80) == 0) {\n                  iVar6 = (*pcVar4)(param_2);\n                  param_2[10] = (int)piVar8 + iVar6;\n                }\n                else {\n                  param_2[10] = (int)piVar8 + 1;\n                  bVar9 = *(byte *)(param_2[1] + (int)piVar8);\n                }\n              }\n              else {\n                param_2[10] = (int)piVar8 + 1;\n                bVar9 = *(byte *)(param_2[1] + (int)piVar8);\n              }\n            }" if (parenthesized_expression "(*(char *)(param_2 + 0x13) == '\0')" ( (binary_expression "*(char *)(param_2 + 0x13) == '\0'" (pointer_expression "*(char *)(param_2 + 0x13)" * (cast_expression "(char *)(param_2 + 0x13)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x13)" ( (binary_expression "param_2 + 0x13" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n              iVar6 = param_2[10];\n              piVar7 = (int *)(iVar6 + 1);\n              param_2[10] = (int)piVar7;\n              bVar9 = *(byte *)(*param_2 + param_2[6] + iVar6);\n            }" { (expression_statement "iVar6 = param_2[10];" (assignment_expression "iVar6 = param_2[10]" identifier = (subscript_expression "param_2[10]" identifier [ number_literal ])) ;) (expression_statement "piVar7 = (int *)(iVar6 + 1);" (assignment_expression "piVar7 = (int *)(iVar6 + 1)" identifier = (cast_expression "(int *)(iVar6 + 1)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 1)" ( (binary_expression "iVar6 + 1" identifier + number_literal) )))) ;) (expression_statement "param_2[10] = (int)piVar7;" (assignment_expression "param_2[10] = (int)piVar7" (subscript_expression "param_2[10]" identifier [ number_literal ]) = (cast_expression "(int)piVar7" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "bVar9 = *(byte *)(*param_2 + param_2[6] + iVar6);" (assignment_expression "bVar9 = *(byte *)(*param_2 + param_2[6] + iVar6)" identifier = (pointer_expression "*(byte *)(*param_2 + param_2[6] + iVar6)" * (cast_expression "(byte *)(*param_2 + param_2[6] + iVar6)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_2 + param_2[6] + iVar6)" ( (binary_expression "*param_2 + param_2[6] + iVar6" (binary_expression "*param_2 + param_2[6]" (pointer_expression "*param_2" * identifier) + (subscript_expression "param_2[6]" identifier [ number_literal ])) + identifier) ))))) ;) }) (else_clause "else {\n              piVar8 = (int *)param_2[10];\n              if ((piVar8 == (int *)param_2[7]) || (*(int *)(param_2[2] + (int)piVar8 * 4) != -1)) {\n                bVar9 = *(byte *)(*param_2 + *(int *)(param_2[3] + (int)piVar8 * 4) + param_2[6]);\n                piVar7 = piVar8;\n                if ((bVar9 & 0x80) == 0) {\n                  iVar6 = (*pcVar4)(param_2);\n                  param_2[10] = (int)piVar8 + iVar6;\n                }\n                else {\n                  param_2[10] = (int)piVar8 + 1;\n                  bVar9 = *(byte *)(param_2[1] + (int)piVar8);\n                }\n              }\n              else {\n                param_2[10] = (int)piVar8 + 1;\n                bVar9 = *(byte *)(param_2[1] + (int)piVar8);\n              }\n            }" else (compound_statement "{\n              piVar8 = (int *)param_2[10];\n              if ((piVar8 == (int *)param_2[7]) || (*(int *)(param_2[2] + (int)piVar8 * 4) != -1)) {\n                bVar9 = *(byte *)(*param_2 + *(int *)(param_2[3] + (int)piVar8 * 4) + param_2[6]);\n                piVar7 = piVar8;\n                if ((bVar9 & 0x80) == 0) {\n                  iVar6 = (*pcVar4)(param_2);\n                  param_2[10] = (int)piVar8 + iVar6;\n                }\n                else {\n                  param_2[10] = (int)piVar8 + 1;\n                  bVar9 = *(byte *)(param_2[1] + (int)piVar8);\n                }\n              }\n              else {\n                param_2[10] = (int)piVar8 + 1;\n                bVar9 = *(byte *)(param_2[1] + (int)piVar8);\n              }\n            }" { (expression_statement "piVar8 = (int *)param_2[10];" (assignment_expression "piVar8 = (int *)param_2[10]" identifier = (cast_expression "(int *)param_2[10]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[10]" identifier [ number_literal ]))) ;) (if_statement "if ((piVar8 == (int *)param_2[7]) || (*(int *)(param_2[2] + (int)piVar8 * 4) != -1)) {\n                bVar9 = *(byte *)(*param_2 + *(int *)(param_2[3] + (int)piVar8 * 4) + param_2[6]);\n                piVar7 = piVar8;\n                if ((bVar9 & 0x80) == 0) {\n                  iVar6 = (*pcVar4)(param_2);\n                  param_2[10] = (int)piVar8 + iVar6;\n                }\n                else {\n                  param_2[10] = (int)piVar8 + 1;\n                  bVar9 = *(byte *)(param_2[1] + (int)piVar8);\n                }\n              }\n              else {\n                param_2[10] = (int)piVar8 + 1;\n                bVar9 = *(byte *)(param_2[1] + (int)piVar8);\n              }" if (parenthesized_expression "((piVar8 == (int *)param_2[7]) || (*(int *)(param_2[2] + (int)piVar8 * 4) != -1))" ( (binary_expression "(piVar8 == (int *)param_2[7]) || (*(int *)(param_2[2] + (int)piVar8 * 4) != -1)" (parenthesized_expression "(piVar8 == (int *)param_2[7])" ( (binary_expression "piVar8 == (int *)param_2[7]" identifier == (cast_expression "(int *)param_2[7]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[7]" identifier [ number_literal ]))) )) || (parenthesized_expression "(*(int *)(param_2[2] + (int)piVar8 * 4) != -1)" ( (binary_expression "*(int *)(param_2[2] + (int)piVar8 * 4) != -1" (pointer_expression "*(int *)(param_2[2] + (int)piVar8 * 4)" * (cast_expression "(int *)(param_2[2] + (int)piVar8 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[2] + (int)piVar8 * 4)" ( (binary_expression "param_2[2] + (int)piVar8 * 4" (subscript_expression "param_2[2]" identifier [ number_literal ]) + (binary_expression "(int)piVar8 * 4" (cast_expression "(int)piVar8" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) )))) != number_literal) ))) )) (compound_statement "{\n                bVar9 = *(byte *)(*param_2 + *(int *)(param_2[3] + (int)piVar8 * 4) + param_2[6]);\n                piVar7 = piVar8;\n                if ((bVar9 & 0x80) == 0) {\n                  iVar6 = (*pcVar4)(param_2);\n                  param_2[10] = (int)piVar8 + iVar6;\n                }\n                else {\n                  param_2[10] = (int)piVar8 + 1;\n                  bVar9 = *(byte *)(param_2[1] + (int)piVar8);\n                }\n              }" { (expression_statement "bVar9 = *(byte *)(*param_2 + *(int *)(param_2[3] + (int)piVar8 * 4) + param_2[6]);" (assignment_expression "bVar9 = *(byte *)(*param_2 + *(int *)(param_2[3] + (int)piVar8 * 4) + param_2[6])" identifier = (pointer_expression "*(byte *)(*param_2 + *(int *)(param_2[3] + (int)piVar8 * 4) + param_2[6])" * (cast_expression "(byte *)(*param_2 + *(int *)(param_2[3] + (int)piVar8 * 4) + param_2[6])" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_2 + *(int *)(param_2[3] + (int)piVar8 * 4) + param_2[6])" ( (binary_expression "*param_2 + *(int *)(param_2[3] + (int)piVar8 * 4) + param_2[6]" (binary_expression "*param_2 + *(int *)(param_2[3] + (int)piVar8 * 4)" (pointer_expression "*param_2" * identifier) + (pointer_expression "*(int *)(param_2[3] + (int)piVar8 * 4)" * (cast_expression "(int *)(param_2[3] + (int)piVar8 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[3] + (int)piVar8 * 4)" ( (binary_expression "param_2[3] + (int)piVar8 * 4" (subscript_expression "param_2[3]" identifier [ number_literal ]) + (binary_expression "(int)piVar8 * 4" (cast_expression "(int)piVar8" ( (type_descriptor "int" primitive_type) ) identifier) * number_literal)) ))))) + (subscript_expression "param_2[6]" identifier [ number_literal ])) ))))) ;) (expression_statement "piVar7 = piVar8;" (assignment_expression "piVar7 = piVar8" identifier = identifier) ;) (if_statement "if ((bVar9 & 0x80) == 0) {\n                  iVar6 = (*pcVar4)(param_2);\n                  param_2[10] = (int)piVar8 + iVar6;\n                }\n                else {\n                  param_2[10] = (int)piVar8 + 1;\n                  bVar9 = *(byte *)(param_2[1] + (int)piVar8);\n                }" if (parenthesized_expression "((bVar9 & 0x80) == 0)" ( (binary_expression "(bVar9 & 0x80) == 0" (parenthesized_expression "(bVar9 & 0x80)" ( (binary_expression "bVar9 & 0x80" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n                  iVar6 = (*pcVar4)(param_2);\n                  param_2[10] = (int)piVar8 + iVar6;\n                }" { (expression_statement "iVar6 = (*pcVar4)(param_2);" (assignment_expression "iVar6 = (*pcVar4)(param_2)" identifier = (call_expression "(*pcVar4)(param_2)" (parenthesized_expression "(*pcVar4)" ( (pointer_expression "*pcVar4" * identifier) )) (argument_list "(param_2)" ( identifier )))) ;) (expression_statement "param_2[10] = (int)piVar8 + iVar6;" (assignment_expression "param_2[10] = (int)piVar8 + iVar6" (subscript_expression "param_2[10]" identifier [ number_literal ]) = (binary_expression "(int)piVar8 + iVar6" (cast_expression "(int)piVar8" ( (type_descriptor "int" primitive_type) ) identifier) + identifier)) ;) }) (else_clause "else {\n                  param_2[10] = (int)piVar8 + 1;\n                  bVar9 = *(byte *)(param_2[1] + (int)piVar8);\n                }" else (compound_statement "{\n                  param_2[10] = (int)piVar8 + 1;\n                  bVar9 = *(byte *)(param_2[1] + (int)piVar8);\n                }" { (expression_statement "param_2[10] = (int)piVar8 + 1;" (assignment_expression "param_2[10] = (int)piVar8 + 1" (subscript_expression "param_2[10]" identifier [ number_literal ]) = (binary_expression "(int)piVar8 + 1" (cast_expression "(int)piVar8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal)) ;) (expression_statement "bVar9 = *(byte *)(param_2[1] + (int)piVar8);" (assignment_expression "bVar9 = *(byte *)(param_2[1] + (int)piVar8)" identifier = (pointer_expression "*(byte *)(param_2[1] + (int)piVar8)" * (cast_expression "(byte *)(param_2[1] + (int)piVar8)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[1] + (int)piVar8)" ( (binary_expression "param_2[1] + (int)piVar8" (subscript_expression "param_2[1]" identifier [ number_literal ]) + (cast_expression "(int)piVar8" ( (type_descriptor "int" primitive_type) ) identifier)) ))))) ;) }))) }) (else_clause "else {\n                param_2[10] = (int)piVar8 + 1;\n                bVar9 = *(byte *)(param_2[1] + (int)piVar8);\n              }" else (compound_statement "{\n                param_2[10] = (int)piVar8 + 1;\n                bVar9 = *(byte *)(param_2[1] + (int)piVar8);\n              }" { (expression_statement "param_2[10] = (int)piVar8 + 1;" (assignment_expression "param_2[10] = (int)piVar8 + 1" (subscript_expression "param_2[10]" identifier [ number_literal ]) = (binary_expression "(int)piVar8 + 1" (cast_expression "(int)piVar8" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal)) ;) (expression_statement "bVar9 = *(byte *)(param_2[1] + (int)piVar8);" (assignment_expression "bVar9 = *(byte *)(param_2[1] + (int)piVar8)" identifier = (pointer_expression "*(byte *)(param_2[1] + (int)piVar8)" * (cast_expression "(byte *)(param_2[1] + (int)piVar8)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[1] + (int)piVar8)" ( (binary_expression "param_2[1] + (int)piVar8" (subscript_expression "param_2[1]" identifier [ number_literal ]) + (cast_expression "(int)piVar8" ( (type_descriptor "int" primitive_type) ) identifier)) ))))) ;) }))) }))))) }) (else_clause "else {\n            iVar6 = param_2[10];\n            param_2[10] = iVar6 + 1;\n            bVar9 = *(byte *)(param_2[1] + iVar6);\n          }" else (compound_statement "{\n            iVar6 = param_2[10];\n            param_2[10] = iVar6 + 1;\n            bVar9 = *(byte *)(param_2[1] + iVar6);\n          }" { (expression_statement "iVar6 = param_2[10];" (assignment_expression "iVar6 = param_2[10]" identifier = (subscript_expression "param_2[10]" identifier [ number_literal ])) ;) (expression_statement "param_2[10] = iVar6 + 1;" (assignment_expression "param_2[10] = iVar6 + 1" (subscript_expression "param_2[10]" identifier [ number_literal ]) = (binary_expression "iVar6 + 1" identifier + number_literal)) ;) (expression_statement "bVar9 = *(byte *)(param_2[1] + iVar6);" (assignment_expression "bVar9 = *(byte *)(param_2[1] + iVar6)" identifier = (pointer_expression "*(byte *)(param_2[1] + iVar6)" * (cast_expression "(byte *)(param_2[1] + iVar6)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[1] + iVar6)" ( (binary_expression "param_2[1] + iVar6" (subscript_expression "param_2[1]" identifier [ number_literal ]) + identifier) ))))) ;) }))) (expression_statement "iVar6 = param_2[10];" (assignment_expression "iVar6 = param_2[10]" identifier = (subscript_expression "param_2[10]" identifier [ number_literal ])) ;) (expression_statement "uVar3 = 7;" (assignment_expression "uVar3 = 7" identifier = number_literal) ;) (if_statement "if (param_2[0xe] <= iVar6) goto LAB_00077d90;" if (parenthesized_expression "(param_2[0xe] <= iVar6)" ( (binary_expression "param_2[0xe] <= iVar6" (subscript_expression "param_2[0xe]" identifier [ number_literal ]) <= identifier) )) (goto_statement "goto LAB_00077d90;" goto statement_identifier ;)) (if_statement "if ((bVar1 == bVar9) && (*(char *)(param_2[1] + iVar6) == ']')) {\n            param_2[10] = iVar6 + 1;\n            *(undefined1 *)(param_1[1] + iVar2) = 0;\n            bVar1 = param_3[4];\n            if (bVar1 == 0x1c) {\n              *param_1 = 2;\n              uVar3 = 0;\n            }\n            else if (bVar1 == 0x1e) {\n              *param_1 = 4;\n              uVar3 = 0;\n            }\n            else if (bVar1 == 0x1a) {\n              *param_1 = 3;\n              uVar3 = 0;\n            }\n            else {\n              uVar3 = 0;\n            }\n            goto LAB_00077d90;\n          }" if (parenthesized_expression "((bVar1 == bVar9) && (*(char *)(param_2[1] + iVar6) == ']'))" ( (binary_expression "(bVar1 == bVar9) && (*(char *)(param_2[1] + iVar6) == ']')" (parenthesized_expression "(bVar1 == bVar9)" ( (binary_expression "bVar1 == bVar9" identifier == identifier) )) && (parenthesized_expression "(*(char *)(param_2[1] + iVar6) == ']')" ( (binary_expression "*(char *)(param_2[1] + iVar6) == ']'" (pointer_expression "*(char *)(param_2[1] + iVar6)" * (cast_expression "(char *)(param_2[1] + iVar6)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2[1] + iVar6)" ( (binary_expression "param_2[1] + iVar6" (subscript_expression "param_2[1]" identifier [ number_literal ]) + identifier) )))) == (char_literal "']'" ' character ')) ))) )) (compound_statement "{\n            param_2[10] = iVar6 + 1;\n            *(undefined1 *)(param_1[1] + iVar2) = 0;\n            bVar1 = param_3[4];\n            if (bVar1 == 0x1c) {\n              *param_1 = 2;\n              uVar3 = 0;\n            }\n            else if (bVar1 == 0x1e) {\n              *param_1 = 4;\n              uVar3 = 0;\n            }\n            else if (bVar1 == 0x1a) {\n              *param_1 = 3;\n              uVar3 = 0;\n            }\n            else {\n              uVar3 = 0;\n            }\n            goto LAB_00077d90;\n          }" { (expression_statement "param_2[10] = iVar6 + 1;" (assignment_expression "param_2[10] = iVar6 + 1" (subscript_expression "param_2[10]" identifier [ number_literal ]) = (binary_expression "iVar6 + 1" identifier + number_literal)) ;) (expression_statement "*(undefined1 *)(param_1[1] + iVar2) = 0;" (assignment_expression "*(undefined1 *)(param_1[1] + iVar2) = 0" (pointer_expression "*(undefined1 *)(param_1[1] + iVar2)" * (cast_expression "(undefined1 *)(param_1[1] + iVar2)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1[1] + iVar2)" ( (binary_expression "param_1[1] + iVar2" (subscript_expression "param_1[1]" identifier [ number_literal ]) + identifier) )))) = number_literal) ;) (expression_statement "bVar1 = param_3[4];" (assignment_expression "bVar1 = param_3[4]" identifier = (subscript_expression "param_3[4]" identifier [ number_literal ])) ;) (if_statement "if (bVar1 == 0x1c) {\n              *param_1 = 2;\n              uVar3 = 0;\n            }\n            else if (bVar1 == 0x1e) {\n              *param_1 = 4;\n              uVar3 = 0;\n            }\n            else if (bVar1 == 0x1a) {\n              *param_1 = 3;\n              uVar3 = 0;\n            }\n            else {\n              uVar3 = 0;\n            }" if (parenthesized_expression "(bVar1 == 0x1c)" ( (binary_expression "bVar1 == 0x1c" identifier == number_literal) )) (compound_statement "{\n              *param_1 = 2;\n              uVar3 = 0;\n            }" { (expression_statement "*param_1 = 2;" (assignment_expression "*param_1 = 2" (pointer_expression "*param_1" * identifier) = number_literal) ;) (expression_statement "uVar3 = 0;" (assignment_expression "uVar3 = 0" identifier = number_literal) ;) }) (else_clause "else if (bVar1 == 0x1e) {\n              *param_1 = 4;\n              uVar3 = 0;\n            }\n            else if (bVar1 == 0x1a) {\n              *param_1 = 3;\n              uVar3 = 0;\n            }\n            else {\n              uVar3 = 0;\n            }" else (if_statement "if (bVar1 == 0x1e) {\n              *param_1 = 4;\n              uVar3 = 0;\n            }\n            else if (bVar1 == 0x1a) {\n              *param_1 = 3;\n              uVar3 = 0;\n            }\n            else {\n              uVar3 = 0;\n            }" if (parenthesized_expression "(bVar1 == 0x1e)" ( (binary_expression "bVar1 == 0x1e" identifier == number_literal) )) (compound_statement "{\n              *param_1 = 4;\n              uVar3 = 0;\n            }" { (expression_statement "*param_1 = 4;" (assignment_expression "*param_1 = 4" (pointer_expression "*param_1" * identifier) = number_literal) ;) (expression_statement "uVar3 = 0;" (assignment_expression "uVar3 = 0" identifier = number_literal) ;) }) (else_clause "else if (bVar1 == 0x1a) {\n              *param_1 = 3;\n              uVar3 = 0;\n            }\n            else {\n              uVar3 = 0;\n            }" else (if_statement "if (bVar1 == 0x1a) {\n              *param_1 = 3;\n              uVar3 = 0;\n            }\n            else {\n              uVar3 = 0;\n            }" if (parenthesized_expression "(bVar1 == 0x1a)" ( (binary_expression "bVar1 == 0x1a" identifier == number_literal) )) (compound_statement "{\n              *param_1 = 3;\n              uVar3 = 0;\n            }" { (expression_statement "*param_1 = 3;" (assignment_expression "*param_1 = 3" (pointer_expression "*param_1" * identifier) = number_literal) ;) (expression_statement "uVar3 = 0;" (assignment_expression "uVar3 = 0" identifier = number_literal) ;) }) (else_clause "else {\n              uVar3 = 0;\n            }" else (compound_statement "{\n              uVar3 = 0;\n            }" { (expression_statement "uVar3 = 0;" (assignment_expression "uVar3 = 0" identifier = number_literal) ;) }))))))) (goto_statement "goto LAB_00077d90;" goto statement_identifier ;) })) (expression_statement "pbVar5 = (byte *)(param_1[1] + iVar2);" (assignment_expression "pbVar5 = (byte *)(param_1[1] + iVar2)" identifier = (cast_expression "(byte *)(param_1[1] + iVar2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1[1] + iVar2)" ( (binary_expression "param_1[1] + iVar2" (subscript_expression "param_1[1]" identifier [ number_literal ]) + identifier) )))) ;) (expression_statement "iVar2 = iVar2 + 1;" (assignment_expression "iVar2 = iVar2 + 1" identifier = (binary_expression "iVar2 + 1" identifier + number_literal)) ;) (expression_statement "*pbVar5 = bVar9;" (assignment_expression "*pbVar5 = bVar9" (pointer_expression "*pbVar5" * identifier) = identifier) ;) }) while (parenthesized_expression "(iVar2 != 0x20)" ( (binary_expression "iVar2 != 0x20" identifier != number_literal) )) ;) (expression_statement "uVar3 = 7;" (assignment_expression "uVar3 = 7" identifier = number_literal) ;) }) (else_clause "else {\n        uVar3 = 7;\n      }" else (compound_statement "{\n        uVar3 = 7;\n      }" { (expression_statement "uVar3 = 7;" (assignment_expression "uVar3 = 7" identifier = number_literal) ;) }))) }) (else_clause "else {\n      if ((bVar1 == 0x16) && (param_7 == '\0')) {\n        FUN_00077ac8(auStack_34,param_2,param_6);\n        piVar7 = param_2;\n        if (local_30 != '\x15') {\n          uVar3 = 0xb;\n          goto LAB_00077d90;\n        }\n      }\n      *param_1 = 0;\n      *(byte *)(param_1 + 1) = *param_3;\n      uVar3 = 0;\n    }" else (compound_statement "{\n      if ((bVar1 == 0x16) && (param_7 == '\0')) {\n        FUN_00077ac8(auStack_34,param_2,param_6);\n        piVar7 = param_2;\n        if (local_30 != '\x15') {\n          uVar3 = 0xb;\n          goto LAB_00077d90;\n        }\n      }\n      *param_1 = 0;\n      *(byte *)(param_1 + 1) = *param_3;\n      uVar3 = 0;\n    }" { (if_statement "if ((bVar1 == 0x16) && (param_7 == '\0')) {\n        FUN_00077ac8(auStack_34,param_2,param_6);\n        piVar7 = param_2;\n        if (local_30 != '\x15') {\n          uVar3 = 0xb;\n          goto LAB_00077d90;\n        }\n      }" if (parenthesized_expression "((bVar1 == 0x16) && (param_7 == '\0'))" ( (binary_expression "(bVar1 == 0x16) && (param_7 == '\0')" (parenthesized_expression "(bVar1 == 0x16)" ( (binary_expression "bVar1 == 0x16" identifier == number_literal) )) && (parenthesized_expression "(param_7 == '\0')" ( (binary_expression "param_7 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n        FUN_00077ac8(auStack_34,param_2,param_6);\n        piVar7 = param_2;\n        if (local_30 != '\x15') {\n          uVar3 = 0xb;\n          goto LAB_00077d90;\n        }\n      }" { (expression_statement "FUN_00077ac8(auStack_34,param_2,param_6);" (call_expression "FUN_00077ac8(auStack_34,param_2,param_6)" identifier (argument_list "(auStack_34,param_2,param_6)" ( identifier , identifier , identifier ))) ;) (expression_statement "piVar7 = param_2;" (assignment_expression "piVar7 = param_2" identifier = identifier) ;) (if_statement "if (local_30 != '\x15') {\n          uVar3 = 0xb;\n          goto LAB_00077d90;\n        }" if (parenthesized_expression "(local_30 != '\x15')" ( (binary_expression "local_30 != '\x15'" identifier != (char_literal "'\x15'" ' escape_sequence ')) )) (compound_statement "{\n          uVar3 = 0xb;\n          goto LAB_00077d90;\n        }" { (expression_statement "uVar3 = 0xb;" (assignment_expression "uVar3 = 0xb" identifier = number_literal) ;) (goto_statement "goto LAB_00077d90;" goto statement_identifier ;) })) })) (expression_statement "*param_1 = 0;" (assignment_expression "*param_1 = 0" (pointer_expression "*param_1" * identifier) = number_literal) ;) (expression_statement "*(byte *)(param_1 + 1) = *param_3;" (assignment_expression "*(byte *)(param_1 + 1) = *param_3" (pointer_expression "*(byte *)(param_1 + 1)" * (cast_expression "(byte *)(param_1 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 1)" ( (binary_expression "param_1 + 1" identifier + number_literal) )))) = (pointer_expression "*param_3" * identifier)) ;) (expression_statement "uVar3 = 0;" (assignment_expression "uVar3 = 0" identifier = number_literal) ;) }))) }) (else_clause "else {\n    *param_1 = 1;\n    piVar7 = (int *)param_2[10];\n    uVar3 = FUN_00077634(param_2);\n    param_1[1] = uVar3;\n    param_2[10] = param_2[10] + iVar2;\n    uVar3 = 0;\n  }" else (compound_statement "{\n    *param_1 = 1;\n    piVar7 = (int *)param_2[10];\n    uVar3 = FUN_00077634(param_2);\n    param_1[1] = uVar3;\n    param_2[10] = param_2[10] + iVar2;\n    uVar3 = 0;\n  }" { (expression_statement "*param_1 = 1;" (assignment_expression "*param_1 = 1" (pointer_expression "*param_1" * identifier) = number_literal) ;) (expression_statement "piVar7 = (int *)param_2[10];" (assignment_expression "piVar7 = (int *)param_2[10]" identifier = (cast_expression "(int *)param_2[10]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[10]" identifier [ number_literal ]))) ;) (expression_statement "uVar3 = FUN_00077634(param_2);" (assignment_expression "uVar3 = FUN_00077634(param_2)" identifier = (call_expression "FUN_00077634(param_2)" identifier (argument_list "(param_2)" ( identifier )))) ;) (expression_statement "param_1[1] = uVar3;" (assignment_expression "param_1[1] = uVar3" (subscript_expression "param_1[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_2[10] = param_2[10] + iVar2;" (assignment_expression "param_2[10] = param_2[10] + iVar2" (subscript_expression "param_2[10]" identifier [ number_literal ]) = (binary_expression "param_2[10] + iVar2" (subscript_expression "param_2[10]" identifier [ number_literal ]) + identifier)) ;) (expression_statement "uVar3 = 0;" (assignment_expression "uVar3 = 0" identifier = number_literal) ;) }))) (labeled_statement "LAB_00077d90:\n  if (local_2c == *(int *)PTR___stack_chk_guard_000b7c68) {\n    return uVar3;\n  }" statement_identifier : (if_statement "if (local_2c == *(int *)PTR___stack_chk_guard_000b7c68) {\n    return uVar3;\n  }" if (parenthesized_expression "(local_2c == *(int *)PTR___stack_chk_guard_000b7c68)" ( (binary_expression "local_2c == *(int *)PTR___stack_chk_guard_000b7c68" identifier == (pointer_expression "*(int *)PTR___stack_chk_guard_000b7c68" * (cast_expression "(int *)PTR___stack_chk_guard_000b7c68" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n    return uVar3;\n  }" { (return_statement "return uVar3;" return identifier ;) }))) (expression_statement "(*(code *)PTR___stack_chk_fail_000b7bfc)();" (call_expression "(*(code *)PTR___stack_chk_fail_000b7bfc)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_000b7bfc)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_000b7bfc" * (cast_expression "(code *)PTR___stack_chk_fail_000b7bfc" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (if_statement "if ((*(char *)(piVar7 + 6) == '\x11') && (local_2c == piVar7[5])) {\n    piVar7[6] = piVar7[6] & 0xffffefffU | 0x1000;\n  }" if (parenthesized_expression "((*(char *)(piVar7 + 6) == '\x11') && (local_2c == piVar7[5]))" ( (binary_expression "(*(char *)(piVar7 + 6) == '\x11') && (local_2c == piVar7[5])" (parenthesized_expression "(*(char *)(piVar7 + 6) == '\x11')" ( (binary_expression "*(char *)(piVar7 + 6) == '\x11'" (pointer_expression "*(char *)(piVar7 + 6)" * (cast_expression "(char *)(piVar7 + 6)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar7 + 6)" ( (binary_expression "piVar7 + 6" identifier + number_literal) )))) == (char_literal "'\x11'" ' escape_sequence ')) )) && (parenthesized_expression "(local_2c == piVar7[5])" ( (binary_expression "local_2c == piVar7[5]" identifier == (subscript_expression "piVar7[5]" identifier [ number_literal ])) ))) )) (compound_statement "{\n    piVar7[6] = piVar7[6] & 0xffffefffU | 0x1000;\n  }" { (expression_statement "piVar7[6] = piVar7[6] & 0xffffefffU | 0x1000;" (assignment_expression "piVar7[6] = piVar7[6] & 0xffffefffU | 0x1000" (subscript_expression "piVar7[6]" identifier [ number_literal ]) = (binary_expression "piVar7[6] & 0xffffefffU | 0x1000" (binary_expression "piVar7[6] & 0xffffefffU" (subscript_expression "piVar7[6]" identifier [ number_literal ]) & number_literal) | number_literal)) ;) })) (return_statement "return 0;" return number_literal ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) || (parenthesized_expression ( (binary_expression IDENT == LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < (subscript_expression IDENT [ LIT ])) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (subscript_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 (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + IDENT) ))))) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * IDENT) + (subscript_expression IDENT [ LIT ])) + IDENT) ))))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) )) || (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) )))) != LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * IDENT) + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) ))))) + (subscript_expression IDENT [ LIT ])) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + (cast_expression ( (type_descriptor TYPE) ) IDENT)) ))))) ;) }))) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + (cast_expression ( (type_descriptor TYPE) ) IDENT)) ))))) ;) }))) }))))) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + IDENT) ))))) ;) }))) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) <= IDENT) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == IDENT) )) && (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + IDENT) )))) == (char_literal ' character ')) ))) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + IDENT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }))))))) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }))) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) && (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) ))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;) })) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }))) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (subscript_expression IDENT [ LIT ]) + IDENT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }))) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) )) (compound_statement { (return_statement return IDENT ;) }))) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (char_literal ' escape_sequence ')) )) && (parenthesized_expression ( (binary_expression IDENT == (subscript_expression IDENT [ LIT ])) ))) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (binary_expression (subscript_expression IDENT [ LIT ]) & LIT) | LIT)) ;) })) (return_statement return LIT ;) })))
(function_definition "undefined4\nFUN_00077c90(undefined4 *param_1,int *param_2,byte *param_3,int param_4,undefined4 param_5,\n            undefined4 param_6,char param_7)\n\n{\n  byte bVar1;\n  int iVar2;\n  undefined4 uVar3;\n  code *pcVar4;\n  byte *pbVar5;\n  int iVar6;\n  int *piVar7;\n  int *piVar8;\n  byte bVar9;\n  undefined1 auStack_34 [4];\n  char local_30;\n  int local_2c;\n  \n  local_2c = *(int *)PTR___stack_chk_guard_000b7c68;\n  piVar8 = (int *)param_2[10];\n  piVar7 = piVar8;\n  iVar2 = FUN_000775b0(param_2);\n  param_4 = (int)piVar8 + param_4;\n  if (iVar2 < 2) {\n    param_2[10] = param_4;\n    bVar1 = param_3[4];\n    if (((bVar1 & 0xfb) == 0x1a) || (bVar1 == 0x1c)) {\n      iVar2 = 0;\n      if (param_4 < param_2[0xe]) {\n        bVar1 = *param_3;\n        pcVar4 = (code *)(PTR_LAB_000b7a18 + 0x75b0);\n        do {\n          if (param_3[4] == 0x1e) {\n            if (*(char *)((int)param_2 + 0x4b) == '\0') {\n              iVar6 = param_2[10];\n              param_2[10] = iVar6 + 1;\n              bVar9 = *(byte *)(param_2[1] + iVar6);\n            }\n            else if (*(char *)(param_2 + 0x13) == '\0') {\n              iVar6 = param_2[10];\n              piVar7 = (int *)(iVar6 + 1);\n              param_2[10] = (int)piVar7;\n              bVar9 = *(byte *)(*param_2 + param_2[6] + iVar6);\n            }\n            else {\n              piVar8 = (int *)param_2[10];\n              if ((piVar8 == (int *)param_2[7]) || (*(int *)(param_2[2] + (int)piVar8 * 4) != -1)) {\n                bVar9 = *(byte *)(*param_2 + *(int *)(param_2[3] + (int)piVar8 * 4) + param_2[6]);\n                piVar7 = piVar8;\n                if ((bVar9 & 0x80) == 0) {\n                  iVar6 = (*pcVar4)(param_2);\n                  param_2[10] = (int)piVar8 + iVar6;\n                }\n                else {\n                  param_2[10] = (int)piVar8 + 1;\n                  bVar9 = *(byte *)(param_2[1] + (int)piVar8);\n                }\n              }\n              else {\n                param_2[10] = (int)piVar8 + 1;\n                bVar9 = *(byte *)(param_2[1] + (int)piVar8);\n              }\n            }\n          }\n          else {\n            iVar6 = param_2[10];\n            param_2[10] = iVar6 + 1;\n            bVar9 = *(byte *)(param_2[1] + iVar6);\n          }\n          iVar6 = param_2[10];\n          uVar3 = 7;\n          if (param_2[0xe] <= iVar6) goto LAB_00077d90;\n          if ((bVar1 == bVar9) && (*(char *)(param_2[1] + iVar6) == ']')) {\n            param_2[10] = iVar6 + 1;\n            *(undefined1 *)(param_1[1] + iVar2) = 0;\n            bVar1 = param_3[4];\n            if (bVar1 == 0x1c) {\n              *param_1 = 2;\n              uVar3 = 0;\n            }\n            else if (bVar1 == 0x1e) {\n              *param_1 = 4;\n              uVar3 = 0;\n            }\n            else if (bVar1 == 0x1a) {\n              *param_1 = 3;\n              uVar3 = 0;\n            }\n            else {\n              uVar3 = 0;\n            }\n            goto LAB_00077d90;\n          }\n          pbVar5 = (byte *)(param_1[1] + iVar2);\n          iVar2 = iVar2 + 1;\n          *pbVar5 = bVar9;\n        } while (iVar2 != 0x20);\n        uVar3 = 7;\n      }\n      else {\n        uVar3 = 7;\n      }\n    }\n    else {\n      if ((bVar1 == 0x16) && (param_7 == '\0')) {\n        FUN_00077ac8(auStack_34,param_2,param_6);\n        piVar7 = param_2;\n        if (local_30 != '\x15') {\n          uVar3 = 0xb;\n          goto LAB_00077d90;\n        }\n      }\n      *param_1 = 0;\n      *(byte *)(param_1 + 1) = *param_3;\n      uVar3 = 0;\n    }\n  }\n  else {\n    *param_1 = 1;\n    piVar7 = (int *)param_2[10];\n    uVar3 = FUN_00077634(param_2);\n    param_1[1] = uVar3;\n    param_2[10] = param_2[10] + iVar2;\n    uVar3 = 0;\n  }\nLAB_00077d90:\n  if (local_2c == *(int *)PTR___stack_chk_guard_000b7c68) {\n    return uVar3;\n  }\n  (*(code *)PTR___stack_chk_fail_000b7bfc)();\n  if ((*(char *)(piVar7 + 6) == '\x11') && (local_2c == piVar7[5])) {\n    piVar7[6] = piVar7[6] & 0xffffefffU | 0x1000;\n  }\n  return 0;\n}" (type_identifier "undefined4") (function_declarator "FUN_00077c90(undefined4 *param_1,int *param_2,byte *param_3,int param_4,undefined4 param_5,\n            undefined4 param_6,char param_7)" (identifier "FUN_00077c90") (parameter_list "(undefined4 *param_1,int *param_2,byte *param_3,int param_4,undefined4 param_5,\n            undefined4 param_6,char param_7)" (( "(") (parameter_declaration "undefined4 *param_1" (type_identifier "undefined4") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "int *param_2" (primitive_type "int") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "byte *param_3" (type_identifier "byte") (pointer_declarator "*param_3" (* "*") (identifier "param_3"))) (, ",") (parameter_declaration "int param_4" (primitive_type "int") (identifier "param_4")) (, ",") (parameter_declaration "undefined4 param_5" (type_identifier "undefined4") (identifier "param_5")) (, ",") (parameter_declaration "undefined4 param_6" (type_identifier "undefined4") (identifier "param_6")) (, ",") (parameter_declaration "char param_7" (primitive_type "char") (identifier "param_7")) () ")"))) (compound_statement "{\n  byte bVar1;\n  int iVar2;\n  undefined4 uVar3;\n  code *pcVar4;\n  byte *pbVar5;\n  int iVar6;\n  int *piVar7;\n  int *piVar8;\n  byte bVar9;\n  undefined1 auStack_34 [4];\n  char local_30;\n  int local_2c;\n  \n  local_2c = *(int *)PTR___stack_chk_guard_000b7c68;\n  piVar8 = (int *)param_2[10];\n  piVar7 = piVar8;\n  iVar2 = FUN_000775b0(param_2);\n  param_4 = (int)piVar8 + param_4;\n  if (iVar2 < 2) {\n    param_2[10] = param_4;\n    bVar1 = param_3[4];\n    if (((bVar1 & 0xfb) == 0x1a) || (bVar1 == 0x1c)) {\n      iVar2 = 0;\n      if (param_4 < param_2[0xe]) {\n        bVar1 = *param_3;\n        pcVar4 = (code *)(PTR_LAB_000b7a18 + 0x75b0);\n        do {\n          if (param_3[4] == 0x1e) {\n            if (*(char *)((int)param_2 + 0x4b) == '\0') {\n              iVar6 = param_2[10];\n              param_2[10] = iVar6 + 1;\n              bVar9 = *(byte *)(param_2[1] + iVar6);\n            }\n            else if (*(char *)(param_2 + 0x13) == '\0') {\n              iVar6 = param_2[10];\n              piVar7 = (int *)(iVar6 + 1);\n              param_2[10] = (int)piVar7;\n              bVar9 = *(byte *)(*param_2 + param_2[6] + iVar6);\n            }\n            else {\n              piVar8 = (int *)param_2[10];\n              if ((piVar8 == (int *)param_2[7]) || (*(int *)(param_2[2] + (int)piVar8 * 4) != -1)) {\n                bVar9 = *(byte *)(*param_2 + *(int *)(param_2[3] + (int)piVar8 * 4) + param_2[6]);\n                piVar7 = piVar8;\n                if ((bVar9 & 0x80) == 0) {\n                  iVar6 = (*pcVar4)(param_2);\n                  param_2[10] = (int)piVar8 + iVar6;\n                }\n                else {\n                  param_2[10] = (int)piVar8 + 1;\n                  bVar9 = *(byte *)(param_2[1] + (int)piVar8);\n                }\n              }\n              else {\n                param_2[10] = (int)piVar8 + 1;\n                bVar9 = *(byte *)(param_2[1] + (int)piVar8);\n              }\n            }\n          }\n          else {\n            iVar6 = param_2[10];\n            param_2[10] = iVar6 + 1;\n            bVar9 = *(byte *)(param_2[1] + iVar6);\n          }\n          iVar6 = param_2[10];\n          uVar3 = 7;\n          if (param_2[0xe] <= iVar6) goto LAB_00077d90;\n          if ((bVar1 == bVar9) && (*(char *)(param_2[1] + iVar6) == ']')) {\n            param_2[10] = iVar6 + 1;\n            *(undefined1 *)(param_1[1] + iVar2) = 0;\n            bVar1 = param_3[4];\n            if (bVar1 == 0x1c) {\n              *param_1 = 2;\n              uVar3 = 0;\n            }\n            else if (bVar1 == 0x1e) {\n              *param_1 = 4;\n              uVar3 = 0;\n            }\n            else if (bVar1 == 0x1a) {\n              *param_1 = 3;\n              uVar3 = 0;\n            }\n            else {\n              uVar3 = 0;\n            }\n            goto LAB_00077d90;\n          }\n          pbVar5 = (byte *)(param_1[1] + iVar2);\n          iVar2 = iVar2 + 1;\n          *pbVar5 = bVar9;\n        } while (iVar2 != 0x20);\n        uVar3 = 7;\n      }\n      else {\n        uVar3 = 7;\n      }\n    }\n    else {\n      if ((bVar1 == 0x16) && (param_7 == '\0')) {\n        FUN_00077ac8(auStack_34,param_2,param_6);\n        piVar7 = param_2;\n        if (local_30 != '\x15') {\n          uVar3 = 0xb;\n          goto LAB_00077d90;\n        }\n      }\n      *param_1 = 0;\n      *(byte *)(param_1 + 1) = *param_3;\n      uVar3 = 0;\n    }\n  }\n  else {\n    *param_1 = 1;\n    piVar7 = (int *)param_2[10];\n    uVar3 = FUN_00077634(param_2);\n    param_1[1] = uVar3;\n    param_2[10] = param_2[10] + iVar2;\n    uVar3 = 0;\n  }\nLAB_00077d90:\n  if (local_2c == *(int *)PTR___stack_chk_guard_000b7c68) {\n    return uVar3;\n  }\n  (*(code *)PTR___stack_chk_fail_000b7bfc)();\n  if ((*(char *)(piVar7 + 6) == '\x11') && (local_2c == piVar7[5])) {\n    piVar7[6] = piVar7[6] & 0xffffefffU | 0x1000;\n  }\n  return 0;\n}" ({ "{") (declaration "byte bVar1;" (type_identifier "byte") (identifier "bVar1") (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "undefined4 uVar3;" (type_identifier "undefined4") (identifier "uVar3") (; ";")) (declaration "code *pcVar4;" (type_identifier "code") (pointer_declarator "*pcVar4" (* "*") (identifier "pcVar4")) (; ";")) (declaration "byte *pbVar5;" (type_identifier "byte") (pointer_declarator "*pbVar5" (* "*") (identifier "pbVar5")) (; ";")) (declaration "int iVar6;" (primitive_type "int") (identifier "iVar6") (; ";")) (declaration "int *piVar7;" (primitive_type "int") (pointer_declarator "*piVar7" (* "*") (identifier "piVar7")) (; ";")) (declaration "int *piVar8;" (primitive_type "int") (pointer_declarator "*piVar8" (* "*") (identifier "piVar8")) (; ";")) (declaration "byte bVar9;" (type_identifier "byte") (identifier "bVar9") (; ";")) (declaration "undefined1 auStack_34 [4];" (type_identifier "undefined1") (array_declarator "auStack_34 [4]" (identifier "auStack_34") ([ "[") (number_literal "4") (] "]")) (; ";")) (declaration "char local_30;" (primitive_type "char") (identifier "local_30") (; ";")) (declaration "int local_2c;" (primitive_type "int") (identifier "local_2c") (; ";")) (expression_statement "local_2c = *(int *)PTR___stack_chk_guard_000b7c68;" (assignment_expression "local_2c = *(int *)PTR___stack_chk_guard_000b7c68" (identifier "local_2c") (= "=") (pointer_expression "*(int *)PTR___stack_chk_guard_000b7c68" (* "*") (cast_expression "(int *)PTR___stack_chk_guard_000b7c68" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_guard_000b7c68")))) (; ";")) (expression_statement "piVar8 = (int *)param_2[10];" (assignment_expression "piVar8 = (int *)param_2[10]" (identifier "piVar8") (= "=") (cast_expression "(int *)param_2[10]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_2[10]" (identifier "param_2") ([ "[") (number_literal "10") (] "]")))) (; ";")) (expression_statement "piVar7 = piVar8;" (assignment_expression "piVar7 = piVar8" (identifier "piVar7") (= "=") (identifier "piVar8")) (; ";")) (expression_statement "iVar2 = FUN_000775b0(param_2);" (assignment_expression "iVar2 = FUN_000775b0(param_2)" (identifier "iVar2") (= "=") (call_expression "FUN_000775b0(param_2)" (identifier "FUN_000775b0") (argument_list "(param_2)" (( "(") (identifier "param_2") () ")")))) (; ";")) (expression_statement "param_4 = (int)piVar8 + param_4;" (assignment_expression "param_4 = (int)piVar8 + param_4" (identifier "param_4") (= "=") (binary_expression "(int)piVar8 + param_4" (cast_expression "(int)piVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar8")) (+ "+") (identifier "param_4"))) (; ";")) (if_statement "if (iVar2 < 2) {\n    param_2[10] = param_4;\n    bVar1 = param_3[4];\n    if (((bVar1 & 0xfb) == 0x1a) || (bVar1 == 0x1c)) {\n      iVar2 = 0;\n      if (param_4 < param_2[0xe]) {\n        bVar1 = *param_3;\n        pcVar4 = (code *)(PTR_LAB_000b7a18 + 0x75b0);\n        do {\n          if (param_3[4] == 0x1e) {\n            if (*(char *)((int)param_2 + 0x4b) == '\0') {\n              iVar6 = param_2[10];\n              param_2[10] = iVar6 + 1;\n              bVar9 = *(byte *)(param_2[1] + iVar6);\n            }\n            else if (*(char *)(param_2 + 0x13) == '\0') {\n              iVar6 = param_2[10];\n              piVar7 = (int *)(iVar6 + 1);\n              param_2[10] = (int)piVar7;\n              bVar9 = *(byte *)(*param_2 + param_2[6] + iVar6);\n            }\n            else {\n              piVar8 = (int *)param_2[10];\n              if ((piVar8 == (int *)param_2[7]) || (*(int *)(param_2[2] + (int)piVar8 * 4) != -1)) {\n                bVar9 = *(byte *)(*param_2 + *(int *)(param_2[3] + (int)piVar8 * 4) + param_2[6]);\n                piVar7 = piVar8;\n                if ((bVar9 & 0x80) == 0) {\n                  iVar6 = (*pcVar4)(param_2);\n                  param_2[10] = (int)piVar8 + iVar6;\n                }\n                else {\n                  param_2[10] = (int)piVar8 + 1;\n                  bVar9 = *(byte *)(param_2[1] + (int)piVar8);\n                }\n              }\n              else {\n                param_2[10] = (int)piVar8 + 1;\n                bVar9 = *(byte *)(param_2[1] + (int)piVar8);\n              }\n            }\n          }\n          else {\n            iVar6 = param_2[10];\n            param_2[10] = iVar6 + 1;\n            bVar9 = *(byte *)(param_2[1] + iVar6);\n          }\n          iVar6 = param_2[10];\n          uVar3 = 7;\n          if (param_2[0xe] <= iVar6) goto LAB_00077d90;\n          if ((bVar1 == bVar9) && (*(char *)(param_2[1] + iVar6) == ']')) {\n            param_2[10] = iVar6 + 1;\n            *(undefined1 *)(param_1[1] + iVar2) = 0;\n            bVar1 = param_3[4];\n            if (bVar1 == 0x1c) {\n              *param_1 = 2;\n              uVar3 = 0;\n            }\n            else if (bVar1 == 0x1e) {\n              *param_1 = 4;\n              uVar3 = 0;\n            }\n            else if (bVar1 == 0x1a) {\n              *param_1 = 3;\n              uVar3 = 0;\n            }\n            else {\n              uVar3 = 0;\n            }\n            goto LAB_00077d90;\n          }\n          pbVar5 = (byte *)(param_1[1] + iVar2);\n          iVar2 = iVar2 + 1;\n          *pbVar5 = bVar9;\n        } while (iVar2 != 0x20);\n        uVar3 = 7;\n      }\n      else {\n        uVar3 = 7;\n      }\n    }\n    else {\n      if ((bVar1 == 0x16) && (param_7 == '\0')) {\n        FUN_00077ac8(auStack_34,param_2,param_6);\n        piVar7 = param_2;\n        if (local_30 != '\x15') {\n          uVar3 = 0xb;\n          goto LAB_00077d90;\n        }\n      }\n      *param_1 = 0;\n      *(byte *)(param_1 + 1) = *param_3;\n      uVar3 = 0;\n    }\n  }\n  else {\n    *param_1 = 1;\n    piVar7 = (int *)param_2[10];\n    uVar3 = FUN_00077634(param_2);\n    param_1[1] = uVar3;\n    param_2[10] = param_2[10] + iVar2;\n    uVar3 = 0;\n  }" (if "if") (parenthesized_expression "(iVar2 < 2)" (( "(") (binary_expression "iVar2 < 2" (identifier "iVar2") (< "<") (number_literal "2")) () ")")) (compound_statement "{\n    param_2[10] = param_4;\n    bVar1 = param_3[4];\n    if (((bVar1 & 0xfb) == 0x1a) || (bVar1 == 0x1c)) {\n      iVar2 = 0;\n      if (param_4 < param_2[0xe]) {\n        bVar1 = *param_3;\n        pcVar4 = (code *)(PTR_LAB_000b7a18 + 0x75b0);\n        do {\n          if (param_3[4] == 0x1e) {\n            if (*(char *)((int)param_2 + 0x4b) == '\0') {\n              iVar6 = param_2[10];\n              param_2[10] = iVar6 + 1;\n              bVar9 = *(byte *)(param_2[1] + iVar6);\n            }\n            else if (*(char *)(param_2 + 0x13) == '\0') {\n              iVar6 = param_2[10];\n              piVar7 = (int *)(iVar6 + 1);\n              param_2[10] = (int)piVar7;\n              bVar9 = *(byte *)(*param_2 + param_2[6] + iVar6);\n            }\n            else {\n              piVar8 = (int *)param_2[10];\n              if ((piVar8 == (int *)param_2[7]) || (*(int *)(param_2[2] + (int)piVar8 * 4) != -1)) {\n                bVar9 = *(byte *)(*param_2 + *(int *)(param_2[3] + (int)piVar8 * 4) + param_2[6]);\n                piVar7 = piVar8;\n                if ((bVar9 & 0x80) == 0) {\n                  iVar6 = (*pcVar4)(param_2);\n                  param_2[10] = (int)piVar8 + iVar6;\n                }\n                else {\n                  param_2[10] = (int)piVar8 + 1;\n                  bVar9 = *(byte *)(param_2[1] + (int)piVar8);\n                }\n              }\n              else {\n                param_2[10] = (int)piVar8 + 1;\n                bVar9 = *(byte *)(param_2[1] + (int)piVar8);\n              }\n            }\n          }\n          else {\n            iVar6 = param_2[10];\n            param_2[10] = iVar6 + 1;\n            bVar9 = *(byte *)(param_2[1] + iVar6);\n          }\n          iVar6 = param_2[10];\n          uVar3 = 7;\n          if (param_2[0xe] <= iVar6) goto LAB_00077d90;\n          if ((bVar1 == bVar9) && (*(char *)(param_2[1] + iVar6) == ']')) {\n            param_2[10] = iVar6 + 1;\n            *(undefined1 *)(param_1[1] + iVar2) = 0;\n            bVar1 = param_3[4];\n            if (bVar1 == 0x1c) {\n              *param_1 = 2;\n              uVar3 = 0;\n            }\n            else if (bVar1 == 0x1e) {\n              *param_1 = 4;\n              uVar3 = 0;\n            }\n            else if (bVar1 == 0x1a) {\n              *param_1 = 3;\n              uVar3 = 0;\n            }\n            else {\n              uVar3 = 0;\n            }\n            goto LAB_00077d90;\n          }\n          pbVar5 = (byte *)(param_1[1] + iVar2);\n          iVar2 = iVar2 + 1;\n          *pbVar5 = bVar9;\n        } while (iVar2 != 0x20);\n        uVar3 = 7;\n      }\n      else {\n        uVar3 = 7;\n      }\n    }\n    else {\n      if ((bVar1 == 0x16) && (param_7 == '\0')) {\n        FUN_00077ac8(auStack_34,param_2,param_6);\n        piVar7 = param_2;\n        if (local_30 != '\x15') {\n          uVar3 = 0xb;\n          goto LAB_00077d90;\n        }\n      }\n      *param_1 = 0;\n      *(byte *)(param_1 + 1) = *param_3;\n      uVar3 = 0;\n    }\n  }" ({ "{") (expression_statement "param_2[10] = param_4;" (assignment_expression "param_2[10] = param_4" (subscript_expression "param_2[10]" (identifier "param_2") ([ "[") (number_literal "10") (] "]")) (= "=") (identifier "param_4")) (; ";")) (expression_statement "bVar1 = param_3[4];" (assignment_expression "bVar1 = param_3[4]" (identifier "bVar1") (= "=") (subscript_expression "param_3[4]" (identifier "param_3") ([ "[") (number_literal "4") (] "]"))) (; ";")) (if_statement "if (((bVar1 & 0xfb) == 0x1a) || (bVar1 == 0x1c)) {\n      iVar2 = 0;\n      if (param_4 < param_2[0xe]) {\n        bVar1 = *param_3;\n        pcVar4 = (code *)(PTR_LAB_000b7a18 + 0x75b0);\n        do {\n          if (param_3[4] == 0x1e) {\n            if (*(char *)((int)param_2 + 0x4b) == '\0') {\n              iVar6 = param_2[10];\n              param_2[10] = iVar6 + 1;\n              bVar9 = *(byte *)(param_2[1] + iVar6);\n            }\n            else if (*(char *)(param_2 + 0x13) == '\0') {\n              iVar6 = param_2[10];\n              piVar7 = (int *)(iVar6 + 1);\n              param_2[10] = (int)piVar7;\n              bVar9 = *(byte *)(*param_2 + param_2[6] + iVar6);\n            }\n            else {\n              piVar8 = (int *)param_2[10];\n              if ((piVar8 == (int *)param_2[7]) || (*(int *)(param_2[2] + (int)piVar8 * 4) != -1)) {\n                bVar9 = *(byte *)(*param_2 + *(int *)(param_2[3] + (int)piVar8 * 4) + param_2[6]);\n                piVar7 = piVar8;\n                if ((bVar9 & 0x80) == 0) {\n                  iVar6 = (*pcVar4)(param_2);\n                  param_2[10] = (int)piVar8 + iVar6;\n                }\n                else {\n                  param_2[10] = (int)piVar8 + 1;\n                  bVar9 = *(byte *)(param_2[1] + (int)piVar8);\n                }\n              }\n              else {\n                param_2[10] = (int)piVar8 + 1;\n                bVar9 = *(byte *)(param_2[1] + (int)piVar8);\n              }\n            }\n          }\n          else {\n            iVar6 = param_2[10];\n            param_2[10] = iVar6 + 1;\n            bVar9 = *(byte *)(param_2[1] + iVar6);\n          }\n          iVar6 = param_2[10];\n          uVar3 = 7;\n          if (param_2[0xe] <= iVar6) goto LAB_00077d90;\n          if ((bVar1 == bVar9) && (*(char *)(param_2[1] + iVar6) == ']')) {\n            param_2[10] = iVar6 + 1;\n            *(undefined1 *)(param_1[1] + iVar2) = 0;\n            bVar1 = param_3[4];\n            if (bVar1 == 0x1c) {\n              *param_1 = 2;\n              uVar3 = 0;\n            }\n            else if (bVar1 == 0x1e) {\n              *param_1 = 4;\n              uVar3 = 0;\n            }\n            else if (bVar1 == 0x1a) {\n              *param_1 = 3;\n              uVar3 = 0;\n            }\n            else {\n              uVar3 = 0;\n            }\n            goto LAB_00077d90;\n          }\n          pbVar5 = (byte *)(param_1[1] + iVar2);\n          iVar2 = iVar2 + 1;\n          *pbVar5 = bVar9;\n        } while (iVar2 != 0x20);\n        uVar3 = 7;\n      }\n      else {\n        uVar3 = 7;\n      }\n    }\n    else {\n      if ((bVar1 == 0x16) && (param_7 == '\0')) {\n        FUN_00077ac8(auStack_34,param_2,param_6);\n        piVar7 = param_2;\n        if (local_30 != '\x15') {\n          uVar3 = 0xb;\n          goto LAB_00077d90;\n        }\n      }\n      *param_1 = 0;\n      *(byte *)(param_1 + 1) = *param_3;\n      uVar3 = 0;\n    }" (if "if") (parenthesized_expression "(((bVar1 & 0xfb) == 0x1a) || (bVar1 == 0x1c))" (( "(") (binary_expression "((bVar1 & 0xfb) == 0x1a) || (bVar1 == 0x1c)" (parenthesized_expression "((bVar1 & 0xfb) == 0x1a)" (( "(") (binary_expression "(bVar1 & 0xfb) == 0x1a" (parenthesized_expression "(bVar1 & 0xfb)" (( "(") (binary_expression "bVar1 & 0xfb" (identifier "bVar1") (& "&") (number_literal "0xfb")) () ")")) (== "==") (number_literal "0x1a")) () ")")) (|| "||") (parenthesized_expression "(bVar1 == 0x1c)" (( "(") (binary_expression "bVar1 == 0x1c" (identifier "bVar1") (== "==") (number_literal "0x1c")) () ")"))) () ")")) (compound_statement "{\n      iVar2 = 0;\n      if (param_4 < param_2[0xe]) {\n        bVar1 = *param_3;\n        pcVar4 = (code *)(PTR_LAB_000b7a18 + 0x75b0);\n        do {\n          if (param_3[4] == 0x1e) {\n            if (*(char *)((int)param_2 + 0x4b) == '\0') {\n              iVar6 = param_2[10];\n              param_2[10] = iVar6 + 1;\n              bVar9 = *(byte *)(param_2[1] + iVar6);\n            }\n            else if (*(char *)(param_2 + 0x13) == '\0') {\n              iVar6 = param_2[10];\n              piVar7 = (int *)(iVar6 + 1);\n              param_2[10] = (int)piVar7;\n              bVar9 = *(byte *)(*param_2 + param_2[6] + iVar6);\n            }\n            else {\n              piVar8 = (int *)param_2[10];\n              if ((piVar8 == (int *)param_2[7]) || (*(int *)(param_2[2] + (int)piVar8 * 4) != -1)) {\n                bVar9 = *(byte *)(*param_2 + *(int *)(param_2[3] + (int)piVar8 * 4) + param_2[6]);\n                piVar7 = piVar8;\n                if ((bVar9 & 0x80) == 0) {\n                  iVar6 = (*pcVar4)(param_2);\n                  param_2[10] = (int)piVar8 + iVar6;\n                }\n                else {\n                  param_2[10] = (int)piVar8 + 1;\n                  bVar9 = *(byte *)(param_2[1] + (int)piVar8);\n                }\n              }\n              else {\n                param_2[10] = (int)piVar8 + 1;\n                bVar9 = *(byte *)(param_2[1] + (int)piVar8);\n              }\n            }\n          }\n          else {\n            iVar6 = param_2[10];\n            param_2[10] = iVar6 + 1;\n            bVar9 = *(byte *)(param_2[1] + iVar6);\n          }\n          iVar6 = param_2[10];\n          uVar3 = 7;\n          if (param_2[0xe] <= iVar6) goto LAB_00077d90;\n          if ((bVar1 == bVar9) && (*(char *)(param_2[1] + iVar6) == ']')) {\n            param_2[10] = iVar6 + 1;\n            *(undefined1 *)(param_1[1] + iVar2) = 0;\n            bVar1 = param_3[4];\n            if (bVar1 == 0x1c) {\n              *param_1 = 2;\n              uVar3 = 0;\n            }\n            else if (bVar1 == 0x1e) {\n              *param_1 = 4;\n              uVar3 = 0;\n            }\n            else if (bVar1 == 0x1a) {\n              *param_1 = 3;\n              uVar3 = 0;\n            }\n            else {\n              uVar3 = 0;\n            }\n            goto LAB_00077d90;\n          }\n          pbVar5 = (byte *)(param_1[1] + iVar2);\n          iVar2 = iVar2 + 1;\n          *pbVar5 = bVar9;\n        } while (iVar2 != 0x20);\n        uVar3 = 7;\n      }\n      else {\n        uVar3 = 7;\n      }\n    }" ({ "{") (expression_statement "iVar2 = 0;" (assignment_expression "iVar2 = 0" (identifier "iVar2") (= "=") (number_literal "0")) (; ";")) (if_statement "if (param_4 < param_2[0xe]) {\n        bVar1 = *param_3;\n        pcVar4 = (code *)(PTR_LAB_000b7a18 + 0x75b0);\n        do {\n          if (param_3[4] == 0x1e) {\n            if (*(char *)((int)param_2 + 0x4b) == '\0') {\n              iVar6 = param_2[10];\n              param_2[10] = iVar6 + 1;\n              bVar9 = *(byte *)(param_2[1] + iVar6);\n            }\n            else if (*(char *)(param_2 + 0x13) == '\0') {\n              iVar6 = param_2[10];\n              piVar7 = (int *)(iVar6 + 1);\n              param_2[10] = (int)piVar7;\n              bVar9 = *(byte *)(*param_2 + param_2[6] + iVar6);\n            }\n            else {\n              piVar8 = (int *)param_2[10];\n              if ((piVar8 == (int *)param_2[7]) || (*(int *)(param_2[2] + (int)piVar8 * 4) != -1)) {\n                bVar9 = *(byte *)(*param_2 + *(int *)(param_2[3] + (int)piVar8 * 4) + param_2[6]);\n                piVar7 = piVar8;\n                if ((bVar9 & 0x80) == 0) {\n                  iVar6 = (*pcVar4)(param_2);\n                  param_2[10] = (int)piVar8 + iVar6;\n                }\n                else {\n                  param_2[10] = (int)piVar8 + 1;\n                  bVar9 = *(byte *)(param_2[1] + (int)piVar8);\n                }\n              }\n              else {\n                param_2[10] = (int)piVar8 + 1;\n                bVar9 = *(byte *)(param_2[1] + (int)piVar8);\n              }\n            }\n          }\n          else {\n            iVar6 = param_2[10];\n            param_2[10] = iVar6 + 1;\n            bVar9 = *(byte *)(param_2[1] + iVar6);\n          }\n          iVar6 = param_2[10];\n          uVar3 = 7;\n          if (param_2[0xe] <= iVar6) goto LAB_00077d90;\n          if ((bVar1 == bVar9) && (*(char *)(param_2[1] + iVar6) == ']')) {\n            param_2[10] = iVar6 + 1;\n            *(undefined1 *)(param_1[1] + iVar2) = 0;\n            bVar1 = param_3[4];\n            if (bVar1 == 0x1c) {\n              *param_1 = 2;\n              uVar3 = 0;\n            }\n            else if (bVar1 == 0x1e) {\n              *param_1 = 4;\n              uVar3 = 0;\n            }\n            else if (bVar1 == 0x1a) {\n              *param_1 = 3;\n              uVar3 = 0;\n            }\n            else {\n              uVar3 = 0;\n            }\n            goto LAB_00077d90;\n          }\n          pbVar5 = (byte *)(param_1[1] + iVar2);\n          iVar2 = iVar2 + 1;\n          *pbVar5 = bVar9;\n        } while (iVar2 != 0x20);\n        uVar3 = 7;\n      }\n      else {\n        uVar3 = 7;\n      }" (if "if") (parenthesized_expression "(param_4 < param_2[0xe])" (( "(") (binary_expression "param_4 < param_2[0xe]" (identifier "param_4") (< "<") (subscript_expression "param_2[0xe]" (identifier "param_2") ([ "[") (number_literal "0xe") (] "]"))) () ")")) (compound_statement "{\n        bVar1 = *param_3;\n        pcVar4 = (code *)(PTR_LAB_000b7a18 + 0x75b0);\n        do {\n          if (param_3[4] == 0x1e) {\n            if (*(char *)((int)param_2 + 0x4b) == '\0') {\n              iVar6 = param_2[10];\n              param_2[10] = iVar6 + 1;\n              bVar9 = *(byte *)(param_2[1] + iVar6);\n            }\n            else if (*(char *)(param_2 + 0x13) == '\0') {\n              iVar6 = param_2[10];\n              piVar7 = (int *)(iVar6 + 1);\n              param_2[10] = (int)piVar7;\n              bVar9 = *(byte *)(*param_2 + param_2[6] + iVar6);\n            }\n            else {\n              piVar8 = (int *)param_2[10];\n              if ((piVar8 == (int *)param_2[7]) || (*(int *)(param_2[2] + (int)piVar8 * 4) != -1)) {\n                bVar9 = *(byte *)(*param_2 + *(int *)(param_2[3] + (int)piVar8 * 4) + param_2[6]);\n                piVar7 = piVar8;\n                if ((bVar9 & 0x80) == 0) {\n                  iVar6 = (*pcVar4)(param_2);\n                  param_2[10] = (int)piVar8 + iVar6;\n                }\n                else {\n                  param_2[10] = (int)piVar8 + 1;\n                  bVar9 = *(byte *)(param_2[1] + (int)piVar8);\n                }\n              }\n              else {\n                param_2[10] = (int)piVar8 + 1;\n                bVar9 = *(byte *)(param_2[1] + (int)piVar8);\n              }\n            }\n          }\n          else {\n            iVar6 = param_2[10];\n            param_2[10] = iVar6 + 1;\n            bVar9 = *(byte *)(param_2[1] + iVar6);\n          }\n          iVar6 = param_2[10];\n          uVar3 = 7;\n          if (param_2[0xe] <= iVar6) goto LAB_00077d90;\n          if ((bVar1 == bVar9) && (*(char *)(param_2[1] + iVar6) == ']')) {\n            param_2[10] = iVar6 + 1;\n            *(undefined1 *)(param_1[1] + iVar2) = 0;\n            bVar1 = param_3[4];\n            if (bVar1 == 0x1c) {\n              *param_1 = 2;\n              uVar3 = 0;\n            }\n            else if (bVar1 == 0x1e) {\n              *param_1 = 4;\n              uVar3 = 0;\n            }\n            else if (bVar1 == 0x1a) {\n              *param_1 = 3;\n              uVar3 = 0;\n            }\n            else {\n              uVar3 = 0;\n            }\n            goto LAB_00077d90;\n          }\n          pbVar5 = (byte *)(param_1[1] + iVar2);\n          iVar2 = iVar2 + 1;\n          *pbVar5 = bVar9;\n        } while (iVar2 != 0x20);\n        uVar3 = 7;\n      }" ({ "{") (expression_statement "bVar1 = *param_3;" (assignment_expression "bVar1 = *param_3" (identifier "bVar1") (= "=") (pointer_expression "*param_3" (* "*") (identifier "param_3"))) (; ";")) (expression_statement "pcVar4 = (code *)(PTR_LAB_000b7a18 + 0x75b0);" (assignment_expression "pcVar4 = (code *)(PTR_LAB_000b7a18 + 0x75b0)" (identifier "pcVar4") (= "=") (cast_expression "(code *)(PTR_LAB_000b7a18 + 0x75b0)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_LAB_000b7a18 + 0x75b0)" (( "(") (binary_expression "PTR_LAB_000b7a18 + 0x75b0" (identifier "PTR_LAB_000b7a18") (+ "+") (number_literal "0x75b0")) () ")")))) (; ";")) (do_statement "do {\n          if (param_3[4] == 0x1e) {\n            if (*(char *)((int)param_2 + 0x4b) == '\0') {\n              iVar6 = param_2[10];\n              param_2[10] = iVar6 + 1;\n              bVar9 = *(byte *)(param_2[1] + iVar6);\n            }\n            else if (*(char *)(param_2 + 0x13) == '\0') {\n              iVar6 = param_2[10];\n              piVar7 = (int *)(iVar6 + 1);\n              param_2[10] = (int)piVar7;\n              bVar9 = *(byte *)(*param_2 + param_2[6] + iVar6);\n            }\n            else {\n              piVar8 = (int *)param_2[10];\n              if ((piVar8 == (int *)param_2[7]) || (*(int *)(param_2[2] + (int)piVar8 * 4) != -1)) {\n                bVar9 = *(byte *)(*param_2 + *(int *)(param_2[3] + (int)piVar8 * 4) + param_2[6]);\n                piVar7 = piVar8;\n                if ((bVar9 & 0x80) == 0) {\n                  iVar6 = (*pcVar4)(param_2);\n                  param_2[10] = (int)piVar8 + iVar6;\n                }\n                else {\n                  param_2[10] = (int)piVar8 + 1;\n                  bVar9 = *(byte *)(param_2[1] + (int)piVar8);\n                }\n              }\n              else {\n                param_2[10] = (int)piVar8 + 1;\n                bVar9 = *(byte *)(param_2[1] + (int)piVar8);\n              }\n            }\n          }\n          else {\n            iVar6 = param_2[10];\n            param_2[10] = iVar6 + 1;\n            bVar9 = *(byte *)(param_2[1] + iVar6);\n          }\n          iVar6 = param_2[10];\n          uVar3 = 7;\n          if (param_2[0xe] <= iVar6) goto LAB_00077d90;\n          if ((bVar1 == bVar9) && (*(char *)(param_2[1] + iVar6) == ']')) {\n            param_2[10] = iVar6 + 1;\n            *(undefined1 *)(param_1[1] + iVar2) = 0;\n            bVar1 = param_3[4];\n            if (bVar1 == 0x1c) {\n              *param_1 = 2;\n              uVar3 = 0;\n            }\n            else if (bVar1 == 0x1e) {\n              *param_1 = 4;\n              uVar3 = 0;\n            }\n            else if (bVar1 == 0x1a) {\n              *param_1 = 3;\n              uVar3 = 0;\n            }\n            else {\n              uVar3 = 0;\n            }\n            goto LAB_00077d90;\n          }\n          pbVar5 = (byte *)(param_1[1] + iVar2);\n          iVar2 = iVar2 + 1;\n          *pbVar5 = bVar9;\n        } while (iVar2 != 0x20);" (do "do") (compound_statement "{\n          if (param_3[4] == 0x1e) {\n            if (*(char *)((int)param_2 + 0x4b) == '\0') {\n              iVar6 = param_2[10];\n              param_2[10] = iVar6 + 1;\n              bVar9 = *(byte *)(param_2[1] + iVar6);\n            }\n            else if (*(char *)(param_2 + 0x13) == '\0') {\n              iVar6 = param_2[10];\n              piVar7 = (int *)(iVar6 + 1);\n              param_2[10] = (int)piVar7;\n              bVar9 = *(byte *)(*param_2 + param_2[6] + iVar6);\n            }\n            else {\n              piVar8 = (int *)param_2[10];\n              if ((piVar8 == (int *)param_2[7]) || (*(int *)(param_2[2] + (int)piVar8 * 4) != -1)) {\n                bVar9 = *(byte *)(*param_2 + *(int *)(param_2[3] + (int)piVar8 * 4) + param_2[6]);\n                piVar7 = piVar8;\n                if ((bVar9 & 0x80) == 0) {\n                  iVar6 = (*pcVar4)(param_2);\n                  param_2[10] = (int)piVar8 + iVar6;\n                }\n                else {\n                  param_2[10] = (int)piVar8 + 1;\n                  bVar9 = *(byte *)(param_2[1] + (int)piVar8);\n                }\n              }\n              else {\n                param_2[10] = (int)piVar8 + 1;\n                bVar9 = *(byte *)(param_2[1] + (int)piVar8);\n              }\n            }\n          }\n          else {\n            iVar6 = param_2[10];\n            param_2[10] = iVar6 + 1;\n            bVar9 = *(byte *)(param_2[1] + iVar6);\n          }\n          iVar6 = param_2[10];\n          uVar3 = 7;\n          if (param_2[0xe] <= iVar6) goto LAB_00077d90;\n          if ((bVar1 == bVar9) && (*(char *)(param_2[1] + iVar6) == ']')) {\n            param_2[10] = iVar6 + 1;\n            *(undefined1 *)(param_1[1] + iVar2) = 0;\n            bVar1 = param_3[4];\n            if (bVar1 == 0x1c) {\n              *param_1 = 2;\n              uVar3 = 0;\n            }\n            else if (bVar1 == 0x1e) {\n              *param_1 = 4;\n              uVar3 = 0;\n            }\n            else if (bVar1 == 0x1a) {\n              *param_1 = 3;\n              uVar3 = 0;\n            }\n            else {\n              uVar3 = 0;\n            }\n            goto LAB_00077d90;\n          }\n          pbVar5 = (byte *)(param_1[1] + iVar2);\n          iVar2 = iVar2 + 1;\n          *pbVar5 = bVar9;\n        }" ({ "{") (if_statement "if (param_3[4] == 0x1e) {\n            if (*(char *)((int)param_2 + 0x4b) == '\0') {\n              iVar6 = param_2[10];\n              param_2[10] = iVar6 + 1;\n              bVar9 = *(byte *)(param_2[1] + iVar6);\n            }\n            else if (*(char *)(param_2 + 0x13) == '\0') {\n              iVar6 = param_2[10];\n              piVar7 = (int *)(iVar6 + 1);\n              param_2[10] = (int)piVar7;\n              bVar9 = *(byte *)(*param_2 + param_2[6] + iVar6);\n            }\n            else {\n              piVar8 = (int *)param_2[10];\n              if ((piVar8 == (int *)param_2[7]) || (*(int *)(param_2[2] + (int)piVar8 * 4) != -1)) {\n                bVar9 = *(byte *)(*param_2 + *(int *)(param_2[3] + (int)piVar8 * 4) + param_2[6]);\n                piVar7 = piVar8;\n                if ((bVar9 & 0x80) == 0) {\n                  iVar6 = (*pcVar4)(param_2);\n                  param_2[10] = (int)piVar8 + iVar6;\n                }\n                else {\n                  param_2[10] = (int)piVar8 + 1;\n                  bVar9 = *(byte *)(param_2[1] + (int)piVar8);\n                }\n              }\n              else {\n                param_2[10] = (int)piVar8 + 1;\n                bVar9 = *(byte *)(param_2[1] + (int)piVar8);\n              }\n            }\n          }\n          else {\n            iVar6 = param_2[10];\n            param_2[10] = iVar6 + 1;\n            bVar9 = *(byte *)(param_2[1] + iVar6);\n          }" (if "if") (parenthesized_expression "(param_3[4] == 0x1e)" (( "(") (binary_expression "param_3[4] == 0x1e" (subscript_expression "param_3[4]" (identifier "param_3") ([ "[") (number_literal "4") (] "]")) (== "==") (number_literal "0x1e")) () ")")) (compound_statement "{\n            if (*(char *)((int)param_2 + 0x4b) == '\0') {\n              iVar6 = param_2[10];\n              param_2[10] = iVar6 + 1;\n              bVar9 = *(byte *)(param_2[1] + iVar6);\n            }\n            else if (*(char *)(param_2 + 0x13) == '\0') {\n              iVar6 = param_2[10];\n              piVar7 = (int *)(iVar6 + 1);\n              param_2[10] = (int)piVar7;\n              bVar9 = *(byte *)(*param_2 + param_2[6] + iVar6);\n            }\n            else {\n              piVar8 = (int *)param_2[10];\n              if ((piVar8 == (int *)param_2[7]) || (*(int *)(param_2[2] + (int)piVar8 * 4) != -1)) {\n                bVar9 = *(byte *)(*param_2 + *(int *)(param_2[3] + (int)piVar8 * 4) + param_2[6]);\n                piVar7 = piVar8;\n                if ((bVar9 & 0x80) == 0) {\n                  iVar6 = (*pcVar4)(param_2);\n                  param_2[10] = (int)piVar8 + iVar6;\n                }\n                else {\n                  param_2[10] = (int)piVar8 + 1;\n                  bVar9 = *(byte *)(param_2[1] + (int)piVar8);\n                }\n              }\n              else {\n                param_2[10] = (int)piVar8 + 1;\n                bVar9 = *(byte *)(param_2[1] + (int)piVar8);\n              }\n            }\n          }" ({ "{") (if_statement "if (*(char *)((int)param_2 + 0x4b) == '\0') {\n              iVar6 = param_2[10];\n              param_2[10] = iVar6 + 1;\n              bVar9 = *(byte *)(param_2[1] + iVar6);\n            }\n            else if (*(char *)(param_2 + 0x13) == '\0') {\n              iVar6 = param_2[10];\n              piVar7 = (int *)(iVar6 + 1);\n              param_2[10] = (int)piVar7;\n              bVar9 = *(byte *)(*param_2 + param_2[6] + iVar6);\n            }\n            else {\n              piVar8 = (int *)param_2[10];\n              if ((piVar8 == (int *)param_2[7]) || (*(int *)(param_2[2] + (int)piVar8 * 4) != -1)) {\n                bVar9 = *(byte *)(*param_2 + *(int *)(param_2[3] + (int)piVar8 * 4) + param_2[6]);\n                piVar7 = piVar8;\n                if ((bVar9 & 0x80) == 0) {\n                  iVar6 = (*pcVar4)(param_2);\n                  param_2[10] = (int)piVar8 + iVar6;\n                }\n                else {\n                  param_2[10] = (int)piVar8 + 1;\n                  bVar9 = *(byte *)(param_2[1] + (int)piVar8);\n                }\n              }\n              else {\n                param_2[10] = (int)piVar8 + 1;\n                bVar9 = *(byte *)(param_2[1] + (int)piVar8);\n              }\n            }" (if "if") (parenthesized_expression "(*(char *)((int)param_2 + 0x4b) == '\0')" (( "(") (binary_expression "*(char *)((int)param_2 + 0x4b) == '\0'" (pointer_expression "*(char *)((int)param_2 + 0x4b)" (* "*") (cast_expression "(char *)((int)param_2 + 0x4b)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_2 + 0x4b)" (( "(") (binary_expression "(int)param_2 + 0x4b" (cast_expression "(int)param_2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_2")) (+ "+") (number_literal "0x4b")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n              iVar6 = param_2[10];\n              param_2[10] = iVar6 + 1;\n              bVar9 = *(byte *)(param_2[1] + iVar6);\n            }" ({ "{") (expression_statement "iVar6 = param_2[10];" (assignment_expression "iVar6 = param_2[10]" (identifier "iVar6") (= "=") (subscript_expression "param_2[10]" (identifier "param_2") ([ "[") (number_literal "10") (] "]"))) (; ";")) (expression_statement "param_2[10] = iVar6 + 1;" (assignment_expression "param_2[10] = iVar6 + 1" (subscript_expression "param_2[10]" (identifier "param_2") ([ "[") (number_literal "10") (] "]")) (= "=") (binary_expression "iVar6 + 1" (identifier "iVar6") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "bVar9 = *(byte *)(param_2[1] + iVar6);" (assignment_expression "bVar9 = *(byte *)(param_2[1] + iVar6)" (identifier "bVar9") (= "=") (pointer_expression "*(byte *)(param_2[1] + iVar6)" (* "*") (cast_expression "(byte *)(param_2[1] + iVar6)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2[1] + iVar6)" (( "(") (binary_expression "param_2[1] + iVar6" (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]")) (+ "+") (identifier "iVar6")) () ")"))))) (; ";")) (} "}")) (else_clause "else if (*(char *)(param_2 + 0x13) == '\0') {\n              iVar6 = param_2[10];\n              piVar7 = (int *)(iVar6 + 1);\n              param_2[10] = (int)piVar7;\n              bVar9 = *(byte *)(*param_2 + param_2[6] + iVar6);\n            }\n            else {\n              piVar8 = (int *)param_2[10];\n              if ((piVar8 == (int *)param_2[7]) || (*(int *)(param_2[2] + (int)piVar8 * 4) != -1)) {\n                bVar9 = *(byte *)(*param_2 + *(int *)(param_2[3] + (int)piVar8 * 4) + param_2[6]);\n                piVar7 = piVar8;\n                if ((bVar9 & 0x80) == 0) {\n                  iVar6 = (*pcVar4)(param_2);\n                  param_2[10] = (int)piVar8 + iVar6;\n                }\n                else {\n                  param_2[10] = (int)piVar8 + 1;\n                  bVar9 = *(byte *)(param_2[1] + (int)piVar8);\n                }\n              }\n              else {\n                param_2[10] = (int)piVar8 + 1;\n                bVar9 = *(byte *)(param_2[1] + (int)piVar8);\n              }\n            }" (else "else") (if_statement "if (*(char *)(param_2 + 0x13) == '\0') {\n              iVar6 = param_2[10];\n              piVar7 = (int *)(iVar6 + 1);\n              param_2[10] = (int)piVar7;\n              bVar9 = *(byte *)(*param_2 + param_2[6] + iVar6);\n            }\n            else {\n              piVar8 = (int *)param_2[10];\n              if ((piVar8 == (int *)param_2[7]) || (*(int *)(param_2[2] + (int)piVar8 * 4) != -1)) {\n                bVar9 = *(byte *)(*param_2 + *(int *)(param_2[3] + (int)piVar8 * 4) + param_2[6]);\n                piVar7 = piVar8;\n                if ((bVar9 & 0x80) == 0) {\n                  iVar6 = (*pcVar4)(param_2);\n                  param_2[10] = (int)piVar8 + iVar6;\n                }\n                else {\n                  param_2[10] = (int)piVar8 + 1;\n                  bVar9 = *(byte *)(param_2[1] + (int)piVar8);\n                }\n              }\n              else {\n                param_2[10] = (int)piVar8 + 1;\n                bVar9 = *(byte *)(param_2[1] + (int)piVar8);\n              }\n            }" (if "if") (parenthesized_expression "(*(char *)(param_2 + 0x13) == '\0')" (( "(") (binary_expression "*(char *)(param_2 + 0x13) == '\0'" (pointer_expression "*(char *)(param_2 + 0x13)" (* "*") (cast_expression "(char *)(param_2 + 0x13)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x13)" (( "(") (binary_expression "param_2 + 0x13" (identifier "param_2") (+ "+") (number_literal "0x13")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n              iVar6 = param_2[10];\n              piVar7 = (int *)(iVar6 + 1);\n              param_2[10] = (int)piVar7;\n              bVar9 = *(byte *)(*param_2 + param_2[6] + iVar6);\n            }" ({ "{") (expression_statement "iVar6 = param_2[10];" (assignment_expression "iVar6 = param_2[10]" (identifier "iVar6") (= "=") (subscript_expression "param_2[10]" (identifier "param_2") ([ "[") (number_literal "10") (] "]"))) (; ";")) (expression_statement "piVar7 = (int *)(iVar6 + 1);" (assignment_expression "piVar7 = (int *)(iVar6 + 1)" (identifier "piVar7") (= "=") (cast_expression "(int *)(iVar6 + 1)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + 1)" (( "(") (binary_expression "iVar6 + 1" (identifier "iVar6") (+ "+") (number_literal "1")) () ")")))) (; ";")) (expression_statement "param_2[10] = (int)piVar7;" (assignment_expression "param_2[10] = (int)piVar7" (subscript_expression "param_2[10]" (identifier "param_2") ([ "[") (number_literal "10") (] "]")) (= "=") (cast_expression "(int)piVar7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar7"))) (; ";")) (expression_statement "bVar9 = *(byte *)(*param_2 + param_2[6] + iVar6);" (assignment_expression "bVar9 = *(byte *)(*param_2 + param_2[6] + iVar6)" (identifier "bVar9") (= "=") (pointer_expression "*(byte *)(*param_2 + param_2[6] + iVar6)" (* "*") (cast_expression "(byte *)(*param_2 + param_2[6] + iVar6)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*param_2 + param_2[6] + iVar6)" (( "(") (binary_expression "*param_2 + param_2[6] + iVar6" (binary_expression "*param_2 + param_2[6]" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (+ "+") (subscript_expression "param_2[6]" (identifier "param_2") ([ "[") (number_literal "6") (] "]"))) (+ "+") (identifier "iVar6")) () ")"))))) (; ";")) (} "}")) (else_clause "else {\n              piVar8 = (int *)param_2[10];\n              if ((piVar8 == (int *)param_2[7]) || (*(int *)(param_2[2] + (int)piVar8 * 4) != -1)) {\n                bVar9 = *(byte *)(*param_2 + *(int *)(param_2[3] + (int)piVar8 * 4) + param_2[6]);\n                piVar7 = piVar8;\n                if ((bVar9 & 0x80) == 0) {\n                  iVar6 = (*pcVar4)(param_2);\n                  param_2[10] = (int)piVar8 + iVar6;\n                }\n                else {\n                  param_2[10] = (int)piVar8 + 1;\n                  bVar9 = *(byte *)(param_2[1] + (int)piVar8);\n                }\n              }\n              else {\n                param_2[10] = (int)piVar8 + 1;\n                bVar9 = *(byte *)(param_2[1] + (int)piVar8);\n              }\n            }" (else "else") (compound_statement "{\n              piVar8 = (int *)param_2[10];\n              if ((piVar8 == (int *)param_2[7]) || (*(int *)(param_2[2] + (int)piVar8 * 4) != -1)) {\n                bVar9 = *(byte *)(*param_2 + *(int *)(param_2[3] + (int)piVar8 * 4) + param_2[6]);\n                piVar7 = piVar8;\n                if ((bVar9 & 0x80) == 0) {\n                  iVar6 = (*pcVar4)(param_2);\n                  param_2[10] = (int)piVar8 + iVar6;\n                }\n                else {\n                  param_2[10] = (int)piVar8 + 1;\n                  bVar9 = *(byte *)(param_2[1] + (int)piVar8);\n                }\n              }\n              else {\n                param_2[10] = (int)piVar8 + 1;\n                bVar9 = *(byte *)(param_2[1] + (int)piVar8);\n              }\n            }" ({ "{") (expression_statement "piVar8 = (int *)param_2[10];" (assignment_expression "piVar8 = (int *)param_2[10]" (identifier "piVar8") (= "=") (cast_expression "(int *)param_2[10]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_2[10]" (identifier "param_2") ([ "[") (number_literal "10") (] "]")))) (; ";")) (if_statement "if ((piVar8 == (int *)param_2[7]) || (*(int *)(param_2[2] + (int)piVar8 * 4) != -1)) {\n                bVar9 = *(byte *)(*param_2 + *(int *)(param_2[3] + (int)piVar8 * 4) + param_2[6]);\n                piVar7 = piVar8;\n                if ((bVar9 & 0x80) == 0) {\n                  iVar6 = (*pcVar4)(param_2);\n                  param_2[10] = (int)piVar8 + iVar6;\n                }\n                else {\n                  param_2[10] = (int)piVar8 + 1;\n                  bVar9 = *(byte *)(param_2[1] + (int)piVar8);\n                }\n              }\n              else {\n                param_2[10] = (int)piVar8 + 1;\n                bVar9 = *(byte *)(param_2[1] + (int)piVar8);\n              }" (if "if") (parenthesized_expression "((piVar8 == (int *)param_2[7]) || (*(int *)(param_2[2] + (int)piVar8 * 4) != -1))" (( "(") (binary_expression "(piVar8 == (int *)param_2[7]) || (*(int *)(param_2[2] + (int)piVar8 * 4) != -1)" (parenthesized_expression "(piVar8 == (int *)param_2[7])" (( "(") (binary_expression "piVar8 == (int *)param_2[7]" (identifier "piVar8") (== "==") (cast_expression "(int *)param_2[7]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_2[7]" (identifier "param_2") ([ "[") (number_literal "7") (] "]")))) () ")")) (|| "||") (parenthesized_expression "(*(int *)(param_2[2] + (int)piVar8 * 4) != -1)" (( "(") (binary_expression "*(int *)(param_2[2] + (int)piVar8 * 4) != -1" (pointer_expression "*(int *)(param_2[2] + (int)piVar8 * 4)" (* "*") (cast_expression "(int *)(param_2[2] + (int)piVar8 * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2[2] + (int)piVar8 * 4)" (( "(") (binary_expression "param_2[2] + (int)piVar8 * 4" (subscript_expression "param_2[2]" (identifier "param_2") ([ "[") (number_literal "2") (] "]")) (+ "+") (binary_expression "(int)piVar8 * 4" (cast_expression "(int)piVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar8")) (* "*") (number_literal "4"))) () ")")))) (!= "!=") (number_literal "-1")) () ")"))) () ")")) (compound_statement "{\n                bVar9 = *(byte *)(*param_2 + *(int *)(param_2[3] + (int)piVar8 * 4) + param_2[6]);\n                piVar7 = piVar8;\n                if ((bVar9 & 0x80) == 0) {\n                  iVar6 = (*pcVar4)(param_2);\n                  param_2[10] = (int)piVar8 + iVar6;\n                }\n                else {\n                  param_2[10] = (int)piVar8 + 1;\n                  bVar9 = *(byte *)(param_2[1] + (int)piVar8);\n                }\n              }" ({ "{") (expression_statement "bVar9 = *(byte *)(*param_2 + *(int *)(param_2[3] + (int)piVar8 * 4) + param_2[6]);" (assignment_expression "bVar9 = *(byte *)(*param_2 + *(int *)(param_2[3] + (int)piVar8 * 4) + param_2[6])" (identifier "bVar9") (= "=") (pointer_expression "*(byte *)(*param_2 + *(int *)(param_2[3] + (int)piVar8 * 4) + param_2[6])" (* "*") (cast_expression "(byte *)(*param_2 + *(int *)(param_2[3] + (int)piVar8 * 4) + param_2[6])" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*param_2 + *(int *)(param_2[3] + (int)piVar8 * 4) + param_2[6])" (( "(") (binary_expression "*param_2 + *(int *)(param_2[3] + (int)piVar8 * 4) + param_2[6]" (binary_expression "*param_2 + *(int *)(param_2[3] + (int)piVar8 * 4)" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (+ "+") (pointer_expression "*(int *)(param_2[3] + (int)piVar8 * 4)" (* "*") (cast_expression "(int *)(param_2[3] + (int)piVar8 * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2[3] + (int)piVar8 * 4)" (( "(") (binary_expression "param_2[3] + (int)piVar8 * 4" (subscript_expression "param_2[3]" (identifier "param_2") ([ "[") (number_literal "3") (] "]")) (+ "+") (binary_expression "(int)piVar8 * 4" (cast_expression "(int)piVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar8")) (* "*") (number_literal "4"))) () ")"))))) (+ "+") (subscript_expression "param_2[6]" (identifier "param_2") ([ "[") (number_literal "6") (] "]"))) () ")"))))) (; ";")) (expression_statement "piVar7 = piVar8;" (assignment_expression "piVar7 = piVar8" (identifier "piVar7") (= "=") (identifier "piVar8")) (; ";")) (if_statement "if ((bVar9 & 0x80) == 0) {\n                  iVar6 = (*pcVar4)(param_2);\n                  param_2[10] = (int)piVar8 + iVar6;\n                }\n                else {\n                  param_2[10] = (int)piVar8 + 1;\n                  bVar9 = *(byte *)(param_2[1] + (int)piVar8);\n                }" (if "if") (parenthesized_expression "((bVar9 & 0x80) == 0)" (( "(") (binary_expression "(bVar9 & 0x80) == 0" (parenthesized_expression "(bVar9 & 0x80)" (( "(") (binary_expression "bVar9 & 0x80" (identifier "bVar9") (& "&") (number_literal "0x80")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                  iVar6 = (*pcVar4)(param_2);\n                  param_2[10] = (int)piVar8 + iVar6;\n                }" ({ "{") (expression_statement "iVar6 = (*pcVar4)(param_2);" (assignment_expression "iVar6 = (*pcVar4)(param_2)" (identifier "iVar6") (= "=") (call_expression "(*pcVar4)(param_2)" (parenthesized_expression "(*pcVar4)" (( "(") (pointer_expression "*pcVar4" (* "*") (identifier "pcVar4")) () ")")) (argument_list "(param_2)" (( "(") (identifier "param_2") () ")")))) (; ";")) (expression_statement "param_2[10] = (int)piVar8 + iVar6;" (assignment_expression "param_2[10] = (int)piVar8 + iVar6" (subscript_expression "param_2[10]" (identifier "param_2") ([ "[") (number_literal "10") (] "]")) (= "=") (binary_expression "(int)piVar8 + iVar6" (cast_expression "(int)piVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar8")) (+ "+") (identifier "iVar6"))) (; ";")) (} "}")) (else_clause "else {\n                  param_2[10] = (int)piVar8 + 1;\n                  bVar9 = *(byte *)(param_2[1] + (int)piVar8);\n                }" (else "else") (compound_statement "{\n                  param_2[10] = (int)piVar8 + 1;\n                  bVar9 = *(byte *)(param_2[1] + (int)piVar8);\n                }" ({ "{") (expression_statement "param_2[10] = (int)piVar8 + 1;" (assignment_expression "param_2[10] = (int)piVar8 + 1" (subscript_expression "param_2[10]" (identifier "param_2") ([ "[") (number_literal "10") (] "]")) (= "=") (binary_expression "(int)piVar8 + 1" (cast_expression "(int)piVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar8")) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "bVar9 = *(byte *)(param_2[1] + (int)piVar8);" (assignment_expression "bVar9 = *(byte *)(param_2[1] + (int)piVar8)" (identifier "bVar9") (= "=") (pointer_expression "*(byte *)(param_2[1] + (int)piVar8)" (* "*") (cast_expression "(byte *)(param_2[1] + (int)piVar8)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2[1] + (int)piVar8)" (( "(") (binary_expression "param_2[1] + (int)piVar8" (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]")) (+ "+") (cast_expression "(int)piVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar8"))) () ")"))))) (; ";")) (} "}")))) (} "}")) (else_clause "else {\n                param_2[10] = (int)piVar8 + 1;\n                bVar9 = *(byte *)(param_2[1] + (int)piVar8);\n              }" (else "else") (compound_statement "{\n                param_2[10] = (int)piVar8 + 1;\n                bVar9 = *(byte *)(param_2[1] + (int)piVar8);\n              }" ({ "{") (expression_statement "param_2[10] = (int)piVar8 + 1;" (assignment_expression "param_2[10] = (int)piVar8 + 1" (subscript_expression "param_2[10]" (identifier "param_2") ([ "[") (number_literal "10") (] "]")) (= "=") (binary_expression "(int)piVar8 + 1" (cast_expression "(int)piVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar8")) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "bVar9 = *(byte *)(param_2[1] + (int)piVar8);" (assignment_expression "bVar9 = *(byte *)(param_2[1] + (int)piVar8)" (identifier "bVar9") (= "=") (pointer_expression "*(byte *)(param_2[1] + (int)piVar8)" (* "*") (cast_expression "(byte *)(param_2[1] + (int)piVar8)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2[1] + (int)piVar8)" (( "(") (binary_expression "param_2[1] + (int)piVar8" (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]")) (+ "+") (cast_expression "(int)piVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar8"))) () ")"))))) (; ";")) (} "}")))) (} "}")))))) (} "}")) (else_clause "else {\n            iVar6 = param_2[10];\n            param_2[10] = iVar6 + 1;\n            bVar9 = *(byte *)(param_2[1] + iVar6);\n          }" (else "else") (compound_statement "{\n            iVar6 = param_2[10];\n            param_2[10] = iVar6 + 1;\n            bVar9 = *(byte *)(param_2[1] + iVar6);\n          }" ({ "{") (expression_statement "iVar6 = param_2[10];" (assignment_expression "iVar6 = param_2[10]" (identifier "iVar6") (= "=") (subscript_expression "param_2[10]" (identifier "param_2") ([ "[") (number_literal "10") (] "]"))) (; ";")) (expression_statement "param_2[10] = iVar6 + 1;" (assignment_expression "param_2[10] = iVar6 + 1" (subscript_expression "param_2[10]" (identifier "param_2") ([ "[") (number_literal "10") (] "]")) (= "=") (binary_expression "iVar6 + 1" (identifier "iVar6") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "bVar9 = *(byte *)(param_2[1] + iVar6);" (assignment_expression "bVar9 = *(byte *)(param_2[1] + iVar6)" (identifier "bVar9") (= "=") (pointer_expression "*(byte *)(param_2[1] + iVar6)" (* "*") (cast_expression "(byte *)(param_2[1] + iVar6)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2[1] + iVar6)" (( "(") (binary_expression "param_2[1] + iVar6" (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]")) (+ "+") (identifier "iVar6")) () ")"))))) (; ";")) (} "}")))) (expression_statement "iVar6 = param_2[10];" (assignment_expression "iVar6 = param_2[10]" (identifier "iVar6") (= "=") (subscript_expression "param_2[10]" (identifier "param_2") ([ "[") (number_literal "10") (] "]"))) (; ";")) (expression_statement "uVar3 = 7;" (assignment_expression "uVar3 = 7" (identifier "uVar3") (= "=") (number_literal "7")) (; ";")) (if_statement "if (param_2[0xe] <= iVar6) goto LAB_00077d90;" (if "if") (parenthesized_expression "(param_2[0xe] <= iVar6)" (( "(") (binary_expression "param_2[0xe] <= iVar6" (subscript_expression "param_2[0xe]" (identifier "param_2") ([ "[") (number_literal "0xe") (] "]")) (<= "<=") (identifier "iVar6")) () ")")) (goto_statement "goto LAB_00077d90;" (goto "goto") (statement_identifier "LAB_00077d90") (; ";"))) (if_statement "if ((bVar1 == bVar9) && (*(char *)(param_2[1] + iVar6) == ']')) {\n            param_2[10] = iVar6 + 1;\n            *(undefined1 *)(param_1[1] + iVar2) = 0;\n            bVar1 = param_3[4];\n            if (bVar1 == 0x1c) {\n              *param_1 = 2;\n              uVar3 = 0;\n            }\n            else if (bVar1 == 0x1e) {\n              *param_1 = 4;\n              uVar3 = 0;\n            }\n            else if (bVar1 == 0x1a) {\n              *param_1 = 3;\n              uVar3 = 0;\n            }\n            else {\n              uVar3 = 0;\n            }\n            goto LAB_00077d90;\n          }" (if "if") (parenthesized_expression "((bVar1 == bVar9) && (*(char *)(param_2[1] + iVar6) == ']'))" (( "(") (binary_expression "(bVar1 == bVar9) && (*(char *)(param_2[1] + iVar6) == ']')" (parenthesized_expression "(bVar1 == bVar9)" (( "(") (binary_expression "bVar1 == bVar9" (identifier "bVar1") (== "==") (identifier "bVar9")) () ")")) (&& "&&") (parenthesized_expression "(*(char *)(param_2[1] + iVar6) == ']')" (( "(") (binary_expression "*(char *)(param_2[1] + iVar6) == ']'" (pointer_expression "*(char *)(param_2[1] + iVar6)" (* "*") (cast_expression "(char *)(param_2[1] + iVar6)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2[1] + iVar6)" (( "(") (binary_expression "param_2[1] + iVar6" (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]")) (+ "+") (identifier "iVar6")) () ")")))) (== "==") (char_literal "']'" (' "'") (character "]") (' "'"))) () ")"))) () ")")) (compound_statement "{\n            param_2[10] = iVar6 + 1;\n            *(undefined1 *)(param_1[1] + iVar2) = 0;\n            bVar1 = param_3[4];\n            if (bVar1 == 0x1c) {\n              *param_1 = 2;\n              uVar3 = 0;\n            }\n            else if (bVar1 == 0x1e) {\n              *param_1 = 4;\n              uVar3 = 0;\n            }\n            else if (bVar1 == 0x1a) {\n              *param_1 = 3;\n              uVar3 = 0;\n            }\n            else {\n              uVar3 = 0;\n            }\n            goto LAB_00077d90;\n          }" ({ "{") (expression_statement "param_2[10] = iVar6 + 1;" (assignment_expression "param_2[10] = iVar6 + 1" (subscript_expression "param_2[10]" (identifier "param_2") ([ "[") (number_literal "10") (] "]")) (= "=") (binary_expression "iVar6 + 1" (identifier "iVar6") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*(undefined1 *)(param_1[1] + iVar2) = 0;" (assignment_expression "*(undefined1 *)(param_1[1] + iVar2) = 0" (pointer_expression "*(undefined1 *)(param_1[1] + iVar2)" (* "*") (cast_expression "(undefined1 *)(param_1[1] + iVar2)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1[1] + iVar2)" (( "(") (binary_expression "param_1[1] + iVar2" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (+ "+") (identifier "iVar2")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "bVar1 = param_3[4];" (assignment_expression "bVar1 = param_3[4]" (identifier "bVar1") (= "=") (subscript_expression "param_3[4]" (identifier "param_3") ([ "[") (number_literal "4") (] "]"))) (; ";")) (if_statement "if (bVar1 == 0x1c) {\n              *param_1 = 2;\n              uVar3 = 0;\n            }\n            else if (bVar1 == 0x1e) {\n              *param_1 = 4;\n              uVar3 = 0;\n            }\n            else if (bVar1 == 0x1a) {\n              *param_1 = 3;\n              uVar3 = 0;\n            }\n            else {\n              uVar3 = 0;\n            }" (if "if") (parenthesized_expression "(bVar1 == 0x1c)" (( "(") (binary_expression "bVar1 == 0x1c" (identifier "bVar1") (== "==") (number_literal "0x1c")) () ")")) (compound_statement "{\n              *param_1 = 2;\n              uVar3 = 0;\n            }" ({ "{") (expression_statement "*param_1 = 2;" (assignment_expression "*param_1 = 2" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (number_literal "2")) (; ";")) (expression_statement "uVar3 = 0;" (assignment_expression "uVar3 = 0" (identifier "uVar3") (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else if (bVar1 == 0x1e) {\n              *param_1 = 4;\n              uVar3 = 0;\n            }\n            else if (bVar1 == 0x1a) {\n              *param_1 = 3;\n              uVar3 = 0;\n            }\n            else {\n              uVar3 = 0;\n            }" (else "else") (if_statement "if (bVar1 == 0x1e) {\n              *param_1 = 4;\n              uVar3 = 0;\n            }\n            else if (bVar1 == 0x1a) {\n              *param_1 = 3;\n              uVar3 = 0;\n            }\n            else {\n              uVar3 = 0;\n            }" (if "if") (parenthesized_expression "(bVar1 == 0x1e)" (( "(") (binary_expression "bVar1 == 0x1e" (identifier "bVar1") (== "==") (number_literal "0x1e")) () ")")) (compound_statement "{\n              *param_1 = 4;\n              uVar3 = 0;\n            }" ({ "{") (expression_statement "*param_1 = 4;" (assignment_expression "*param_1 = 4" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (number_literal "4")) (; ";")) (expression_statement "uVar3 = 0;" (assignment_expression "uVar3 = 0" (identifier "uVar3") (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else if (bVar1 == 0x1a) {\n              *param_1 = 3;\n              uVar3 = 0;\n            }\n            else {\n              uVar3 = 0;\n            }" (else "else") (if_statement "if (bVar1 == 0x1a) {\n              *param_1 = 3;\n              uVar3 = 0;\n            }\n            else {\n              uVar3 = 0;\n            }" (if "if") (parenthesized_expression "(bVar1 == 0x1a)" (( "(") (binary_expression "bVar1 == 0x1a" (identifier "bVar1") (== "==") (number_literal "0x1a")) () ")")) (compound_statement "{\n              *param_1 = 3;\n              uVar3 = 0;\n            }" ({ "{") (expression_statement "*param_1 = 3;" (assignment_expression "*param_1 = 3" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (number_literal "3")) (; ";")) (expression_statement "uVar3 = 0;" (assignment_expression "uVar3 = 0" (identifier "uVar3") (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n              uVar3 = 0;\n            }" (else "else") (compound_statement "{\n              uVar3 = 0;\n            }" ({ "{") (expression_statement "uVar3 = 0;" (assignment_expression "uVar3 = 0" (identifier "uVar3") (= "=") (number_literal "0")) (; ";")) (} "}")))))))) (goto_statement "goto LAB_00077d90;" (goto "goto") (statement_identifier "LAB_00077d90") (; ";")) (} "}"))) (expression_statement "pbVar5 = (byte *)(param_1[1] + iVar2);" (assignment_expression "pbVar5 = (byte *)(param_1[1] + iVar2)" (identifier "pbVar5") (= "=") (cast_expression "(byte *)(param_1[1] + iVar2)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1[1] + iVar2)" (( "(") (binary_expression "param_1[1] + iVar2" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (+ "+") (identifier "iVar2")) () ")")))) (; ";")) (expression_statement "iVar2 = iVar2 + 1;" (assignment_expression "iVar2 = iVar2 + 1" (identifier "iVar2") (= "=") (binary_expression "iVar2 + 1" (identifier "iVar2") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*pbVar5 = bVar9;" (assignment_expression "*pbVar5 = bVar9" (pointer_expression "*pbVar5" (* "*") (identifier "pbVar5")) (= "=") (identifier "bVar9")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar2 != 0x20)" (( "(") (binary_expression "iVar2 != 0x20" (identifier "iVar2") (!= "!=") (number_literal "0x20")) () ")")) (; ";")) (expression_statement "uVar3 = 7;" (assignment_expression "uVar3 = 7" (identifier "uVar3") (= "=") (number_literal "7")) (; ";")) (} "}")) (else_clause "else {\n        uVar3 = 7;\n      }" (else "else") (compound_statement "{\n        uVar3 = 7;\n      }" ({ "{") (expression_statement "uVar3 = 7;" (assignment_expression "uVar3 = 7" (identifier "uVar3") (= "=") (number_literal "7")) (; ";")) (} "}")))) (} "}")) (else_clause "else {\n      if ((bVar1 == 0x16) && (param_7 == '\0')) {\n        FUN_00077ac8(auStack_34,param_2,param_6);\n        piVar7 = param_2;\n        if (local_30 != '\x15') {\n          uVar3 = 0xb;\n          goto LAB_00077d90;\n        }\n      }\n      *param_1 = 0;\n      *(byte *)(param_1 + 1) = *param_3;\n      uVar3 = 0;\n    }" (else "else") (compound_statement "{\n      if ((bVar1 == 0x16) && (param_7 == '\0')) {\n        FUN_00077ac8(auStack_34,param_2,param_6);\n        piVar7 = param_2;\n        if (local_30 != '\x15') {\n          uVar3 = 0xb;\n          goto LAB_00077d90;\n        }\n      }\n      *param_1 = 0;\n      *(byte *)(param_1 + 1) = *param_3;\n      uVar3 = 0;\n    }" ({ "{") (if_statement "if ((bVar1 == 0x16) && (param_7 == '\0')) {\n        FUN_00077ac8(auStack_34,param_2,param_6);\n        piVar7 = param_2;\n        if (local_30 != '\x15') {\n          uVar3 = 0xb;\n          goto LAB_00077d90;\n        }\n      }" (if "if") (parenthesized_expression "((bVar1 == 0x16) && (param_7 == '\0'))" (( "(") (binary_expression "(bVar1 == 0x16) && (param_7 == '\0')" (parenthesized_expression "(bVar1 == 0x16)" (( "(") (binary_expression "bVar1 == 0x16" (identifier "bVar1") (== "==") (number_literal "0x16")) () ")")) (&& "&&") (parenthesized_expression "(param_7 == '\0')" (( "(") (binary_expression "param_7 == '\0'" (identifier "param_7") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")"))) () ")")) (compound_statement "{\n        FUN_00077ac8(auStack_34,param_2,param_6);\n        piVar7 = param_2;\n        if (local_30 != '\x15') {\n          uVar3 = 0xb;\n          goto LAB_00077d90;\n        }\n      }" ({ "{") (expression_statement "FUN_00077ac8(auStack_34,param_2,param_6);" (call_expression "FUN_00077ac8(auStack_34,param_2,param_6)" (identifier "FUN_00077ac8") (argument_list "(auStack_34,param_2,param_6)" (( "(") (identifier "auStack_34") (, ",") (identifier "param_2") (, ",") (identifier "param_6") () ")"))) (; ";")) (expression_statement "piVar7 = param_2;" (assignment_expression "piVar7 = param_2" (identifier "piVar7") (= "=") (identifier "param_2")) (; ";")) (if_statement "if (local_30 != '\x15') {\n          uVar3 = 0xb;\n          goto LAB_00077d90;\n        }" (if "if") (parenthesized_expression "(local_30 != '\x15')" (( "(") (binary_expression "local_30 != '\x15'" (identifier "local_30") (!= "!=") (char_literal "'\x15'" (' "'") (escape_sequence "\x15") (' "'"))) () ")")) (compound_statement "{\n          uVar3 = 0xb;\n          goto LAB_00077d90;\n        }" ({ "{") (expression_statement "uVar3 = 0xb;" (assignment_expression "uVar3 = 0xb" (identifier "uVar3") (= "=") (number_literal "0xb")) (; ";")) (goto_statement "goto LAB_00077d90;" (goto "goto") (statement_identifier "LAB_00077d90") (; ";")) (} "}"))) (} "}"))) (expression_statement "*param_1 = 0;" (assignment_expression "*param_1 = 0" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(byte *)(param_1 + 1) = *param_3;" (assignment_expression "*(byte *)(param_1 + 1) = *param_3" (pointer_expression "*(byte *)(param_1 + 1)" (* "*") (cast_expression "(byte *)(param_1 + 1)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 1)" (( "(") (binary_expression "param_1 + 1" (identifier "param_1") (+ "+") (number_literal "1")) () ")")))) (= "=") (pointer_expression "*param_3" (* "*") (identifier "param_3"))) (; ";")) (expression_statement "uVar3 = 0;" (assignment_expression "uVar3 = 0" (identifier "uVar3") (= "=") (number_literal "0")) (; ";")) (} "}")))) (} "}")) (else_clause "else {\n    *param_1 = 1;\n    piVar7 = (int *)param_2[10];\n    uVar3 = FUN_00077634(param_2);\n    param_1[1] = uVar3;\n    param_2[10] = param_2[10] + iVar2;\n    uVar3 = 0;\n  }" (else "else") (compound_statement "{\n    *param_1 = 1;\n    piVar7 = (int *)param_2[10];\n    uVar3 = FUN_00077634(param_2);\n    param_1[1] = uVar3;\n    param_2[10] = param_2[10] + iVar2;\n    uVar3 = 0;\n  }" ({ "{") (expression_statement "*param_1 = 1;" (assignment_expression "*param_1 = 1" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (number_literal "1")) (; ";")) (expression_statement "piVar7 = (int *)param_2[10];" (assignment_expression "piVar7 = (int *)param_2[10]" (identifier "piVar7") (= "=") (cast_expression "(int *)param_2[10]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_2[10]" (identifier "param_2") ([ "[") (number_literal "10") (] "]")))) (; ";")) (expression_statement "uVar3 = FUN_00077634(param_2);" (assignment_expression "uVar3 = FUN_00077634(param_2)" (identifier "uVar3") (= "=") (call_expression "FUN_00077634(param_2)" (identifier "FUN_00077634") (argument_list "(param_2)" (( "(") (identifier "param_2") () ")")))) (; ";")) (expression_statement "param_1[1] = uVar3;" (assignment_expression "param_1[1] = uVar3" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "uVar3")) (; ";")) (expression_statement "param_2[10] = param_2[10] + iVar2;" (assignment_expression "param_2[10] = param_2[10] + iVar2" (subscript_expression "param_2[10]" (identifier "param_2") ([ "[") (number_literal "10") (] "]")) (= "=") (binary_expression "param_2[10] + iVar2" (subscript_expression "param_2[10]" (identifier "param_2") ([ "[") (number_literal "10") (] "]")) (+ "+") (identifier "iVar2"))) (; ";")) (expression_statement "uVar3 = 0;" (assignment_expression "uVar3 = 0" (identifier "uVar3") (= "=") (number_literal "0")) (; ";")) (} "}")))) (labeled_statement "LAB_00077d90:\n  if (local_2c == *(int *)PTR___stack_chk_guard_000b7c68) {\n    return uVar3;\n  }" (statement_identifier "LAB_00077d90") (: ":") (if_statement "if (local_2c == *(int *)PTR___stack_chk_guard_000b7c68) {\n    return uVar3;\n  }" (if "if") (parenthesized_expression "(local_2c == *(int *)PTR___stack_chk_guard_000b7c68)" (( "(") (binary_expression "local_2c == *(int *)PTR___stack_chk_guard_000b7c68" (identifier "local_2c") (== "==") (pointer_expression "*(int *)PTR___stack_chk_guard_000b7c68" (* "*") (cast_expression "(int *)PTR___stack_chk_guard_000b7c68" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_guard_000b7c68")))) () ")")) (compound_statement "{\n    return uVar3;\n  }" ({ "{") (return_statement "return uVar3;" (return "return") (identifier "uVar3") (; ";")) (} "}")))) (expression_statement "(*(code *)PTR___stack_chk_fail_000b7bfc)();" (call_expression "(*(code *)PTR___stack_chk_fail_000b7bfc)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_000b7bfc)" (( "(") (pointer_expression "*(code *)PTR___stack_chk_fail_000b7bfc" (* "*") (cast_expression "(code *)PTR___stack_chk_fail_000b7bfc" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_fail_000b7bfc"))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (if_statement "if ((*(char *)(piVar7 + 6) == '\x11') && (local_2c == piVar7[5])) {\n    piVar7[6] = piVar7[6] & 0xffffefffU | 0x1000;\n  }" (if "if") (parenthesized_expression "((*(char *)(piVar7 + 6) == '\x11') && (local_2c == piVar7[5]))" (( "(") (binary_expression "(*(char *)(piVar7 + 6) == '\x11') && (local_2c == piVar7[5])" (parenthesized_expression "(*(char *)(piVar7 + 6) == '\x11')" (( "(") (binary_expression "*(char *)(piVar7 + 6) == '\x11'" (pointer_expression "*(char *)(piVar7 + 6)" (* "*") (cast_expression "(char *)(piVar7 + 6)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar7 + 6)" (( "(") (binary_expression "piVar7 + 6" (identifier "piVar7") (+ "+") (number_literal "6")) () ")")))) (== "==") (char_literal "'\x11'" (' "'") (escape_sequence "\x11") (' "'"))) () ")")) (&& "&&") (parenthesized_expression "(local_2c == piVar7[5])" (( "(") (binary_expression "local_2c == piVar7[5]" (identifier "local_2c") (== "==") (subscript_expression "piVar7[5]" (identifier "piVar7") ([ "[") (number_literal "5") (] "]"))) () ")"))) () ")")) (compound_statement "{\n    piVar7[6] = piVar7[6] & 0xffffefffU | 0x1000;\n  }" ({ "{") (expression_statement "piVar7[6] = piVar7[6] & 0xffffefffU | 0x1000;" (assignment_expression "piVar7[6] = piVar7[6] & 0xffffefffU | 0x1000" (subscript_expression "piVar7[6]" (identifier "piVar7") ([ "[") (number_literal "6") (] "]")) (= "=") (binary_expression "piVar7[6] & 0xffffefffU | 0x1000" (binary_expression "piVar7[6] & 0xffffefffU" (subscript_expression "piVar7[6]" (identifier "piVar7") ([ "[") (number_literal "6") (] "]")) (& "&") (number_literal "0xffffefffU")) (| "|") (number_literal "0x1000"))) (; ";")) (} "}"))) (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}")))
(translation_unit (function_definition type: (type_identifier) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (primitive_type) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (primitive_type) declarator: (identifier)))) body: (compound_statement (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (do_statement body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (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: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (char_literal (escape_sequence)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier)))))))) alternative: (else_clause (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (char_literal (escape_sequence)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (pointer_expression argument: (identifier)) right: (subscript_expression argument: (identifier) index: (number_literal))) right: (identifier)))))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) right: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))))) right: (number_literal))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (pointer_expression argument: (identifier)) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))))) right: (subscript_expression argument: (identifier) index: (number_literal)))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (identifier))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))))))))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))))))))))))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier)))))))))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) consequence: (goto_statement label: (statement_identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) right: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))))) right: (char_literal (character)))))) consequence: (compound_statement (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) alternative: (else_clause (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) alternative: (else_clause (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal)))))))))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier)))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))))))) alternative: (else_clause (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (escape_sequence)))))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (escape_sequence)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (goto_statement label: (statement_identifier)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier))))) consequence: (compound_statement (return_statement (identifier))))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (char_literal (escape_sequence)))) right: (parenthesized_expression (binary_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))))) consequence: (compound_statement (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal)) right: (number_literal)))))) (return_statement (number_literal)))))

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

{
  byte bVar1;
  int iVar2;
  undefined4 uVar3;
  code *pcVar4;
  byte *pbVar5;
  int iVar6;
  int *piVar7;
  int *piVar8;
  byte bVar9;
  undefined1 auStack_34 [4];
  char local_30;
  int local_2c;
  
  local_2c = *(int *)PTR___stack_chk_guard_000b7c68;
  piVar8 = (int *)param_2[10];
  piVar7 = piVar8;
  iVar2 = FUN_000775b0(param_2);
  param_4 = (int)piVar8 + param_4;
  if (iVar2 < 2) {
    param_2[10] = param_4;
    bVar1 = param_3[4];
    if (((bVar1 & 0xfb) == 0x1a) || (bVar1 == 0x1c)) {
      iVar2 = 0;
      if (param_4 < param_2[0xe]) {
        bVar1 = *param_3;
        pcVar4 = (code *)(PTR_LAB_000b7a18 + 0x75b0);
        do {
          if (param_3[4] == 0x1e) {
            if (*(char *)((int)param_2 + 0x4b) == '\0') {
              iVar6 = param_2[10];
              param_2[10] = iVar6 + 1;
              bVar9 = *(byte *)(param_2[1] + iVar6);
            }
            else if (*(char *)(param_2 + 0x13) == '\0') {
              iVar6 = param_2[10];
              piVar7 = (int *)(iVar6 + 1);
              param_2[10] = (int)piVar7;
              bVar9 = *(byte *)(*param_2 + param_2[6] + iVar6);
            }
            else {
              piVar8 = (int *)param_2[10];
              if ((piVar8 == (int *)param_2[7]) || (*(int *)(param_2[2] + (int)piVar8 * 4) != -1)) {
                bVar9 = *(byte *)(*param_2 + *(int *)(param_2[3] + (int)piVar8 * 4) + param_2[6]);
                piVar7 = piVar8;
                if ((bVar9 & 0x80) == 0) {
                  iVar6 = (*pcVar4)(param_2);
                  param_2[10] = (int)piVar8 + iVar6;
                }
                else {
                  param_2[10] = (int)piVar8 + 1;
                  bVar9 = *(byte *)(param_2[1] + (int)piVar8);
                }
              }
              else {
                param_2[10] = (int)piVar8 + 1;
                bVar9 = *(byte *)(param_2[1] + (int)piVar8);
              }
            }
          }
          else {
            iVar6 = param_2[10];
            param_2[10] = iVar6 + 1;
            bVar9 = *(byte *)(param_2[1] + iVar6);
          }
          iVar6 = param_2[10];
          uVar3 = 7;
          if (param_2[0xe] <= iVar6) goto LAB_00077d90;
          if ((bVar1 == bVar9) && (*(char *)(param_2[1] + iVar6) == ']')) {
            param_2[10] = iVar6 + 1;
            *(undefined1 *)(param_1[1] + iVar2) = 0;
            bVar1 = param_3[4];
            if (bVar1 == 0x1c) {
              *param_1 = 2;
              uVar3 = 0;
            }
            else if (bVar1 == 0x1e) {
              *param_1 = 4;
              uVar3 = 0;
            }
            else if (bVar1 == 0x1a) {
              *param_1 = 3;
              uVar3 = 0;
            }
            else {
              uVar3 = 0;
            }
            goto LAB_00077d90;
          }
          pbVar5 = (byte *)(param_1[1] + iVar2);
          iVar2 = iVar2 + 1;
          *pbVar5 = bVar9;
        } while (iVar2 != 0x20);
        uVar3 = 7;
      }
      else {
        uVar3 = 7;
      }
    }
    else {
      if ((bVar1 == 0x16) && (param_7 == '\0')) {
        FUN_00077ac8(auStack_34,param_2,param_6);
        piVar7 = param_2;
        if (local_30 != '\x15') {
          uVar3 = 0xb;
          goto LAB_00077d90;
        }
      }
      *param_1 = 0;
      *(byte *)(param_1 + 1) = *param_3;
      uVar3 = 0;
    }
  }
  else {
    *param_1 = 1;
    piVar7 = (int *)param_2[10];
    uVar3 = FUN_00077634(param_2);
    param_1[1] = uVar3;
    param_2[10] = param_2[10] + iVar2;
    uVar3 = 0;
  }
LAB_00077d90:
  if (local_2c == *(int *)PTR___stack_chk_guard_000b7c68) {
    return uVar3;
  }
  (*(code *)PTR___stack_chk_fail_000b7bfc)();
  if ((*(char *)(piVar7 + 6) == '\x11') && (local_2c == piVar7[5])) {
    piVar7[6] = piVar7[6] & 0xffffefffU | 0x1000;
  }
  return 0;
}

