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

BcStatus zbc_parse_name(BcInst *type,uint8_t flags)

{
  undefined *puVar1;
  int iVar2;
  char *name;
  BcStatus BVar3;
  undefined1 uVar4;
  char cVar5;
  char *msg;
  BcVec *v;
  size_t sVar6;
  char *pcVar7;
  undefined *puVar8;
  BcId entry;
  
  puVar1 = PTR___stack_chk_guard_0012b14c;
  puVar8 = (undefined *)(uint)flags;
  pcVar7 = *(char **)PTR_ptr_to_globals_0012a304;
  iVar2 = *(int *)PTR___stack_chk_guard_0012b14c;
  name = xstrdup(*(char **)(pcVar7 + 0x18));
  BVar3 = zxc_lex_next();
  if (BVar3 != BC_STATUS_SUCCESS) goto LAB_00024530;
  if (*pcVar7 == '\"') {
    BVar3 = zxc_lex_next();
    if (BVar3 != BC_STATUS_SUCCESS) goto LAB_00024530;
    if (*pcVar7 == '$') {
      puVar8 = (undefined *)0x0;
      if ((flags & 4) == 0) {
        msg = PTR_UINT_0012a18c + 0xfc;
        goto LAB_00024518;
      }
      *type = XC_INST_ARRAY;
      BVar3 = zxc_lex_next();
    }
    else {
      *type = XC_INST_ARRAY_ELEM;
      BVar3 = zbc_parse_expr(flags & 0xfc);
      if (BVar3 != BC_STATUS_SUCCESS) goto LAB_00024530;
      BVar3 = zxc_lex_next();
    }
    if (BVar3 != BC_STATUS_SUCCESS) goto LAB_00024530;
    v = *(BcVec **)(pcVar7 + 0x2c);
    uVar4 = (undefined1)*type;
  }
  else {
    uVar4 = 0x1c;
    if (*pcVar7 == ' ') goto LAB_000245e0;
    v = *(BcVec **)(pcVar7 + 0x2c);
    *type = XC_INST_VAR;
  }
  entry.name = (char *)CONCAT13(uVar4,entry.name._1_3_);
  bc_vec_npush(v,1,&entry);
  xc_parse_pushName(name);
  (*(code *)PTR_free_0012b168)(name);
LAB_00024598:
  do {
    if (iVar2 == *(int *)puVar1) {
      return BVar3;
    }
    (*(code *)PTR___stack_chk_fail_0012b0c8)();
LAB_000245e0:
    if (((uint)puVar8 & 8) == 0) {
      ((BcVec *)type)->v = (char *)0x2e;
      entry.name = name;
      BVar3 = zxc_lex_next();
      if (BVar3 == BC_STATUS_SUCCESS) {
        sVar6 = 0;
        if (*pcVar7 == '!') {
LAB_00024664:
          xc_parse_pushInst_and_Index(0x2e,sVar6);
          cVar5 = *pcVar7;
LAB_0002467c:
          if (cVar5 != '!') goto LAB_000245ec;
          type = (BcInst *)(pcVar7 + 0xe0);
          puVar8 = PTR_LAB_0012a258 + -0x5b4;
          sVar6 = bc_map_find_exact((BcVec *)type,&entry);
          if (sVar6 == 0xffffffff) {
            bc_program_addFunc(name);
            sVar6 = bc_map_find_exact((BcVec *)type,&entry);
          }
          else {
            (*(code *)PTR_free_0012b168)(name);
          }
          bc_vec_pushIndex(*(BcVec **)(pcVar7 + 0x2c),
                           *(size_t *)
                            (sVar6 * *(int *)(pcVar7 + 0xec) + *(int *)(pcVar7 + 0xe0) + 4));
          BVar3 = zxc_lex_next();
          goto LAB_00024598;
        }
        puVar8 = (undefined *)((uint)puVar8 & 0xf8 | 4);
        type = (BcInst *)(PTR_LAB_0012a258 + 0x36cc);
        sVar6 = 0;
        do {
          BVar3 = zbc_parse_expr((uint8_t)puVar8);
          if (BVar3 != BC_STATUS_SUCCESS) break;
          sVar6 = sVar6 + 1;
          if (*pcVar7 != '#') {
            if (*pcVar7 == '!') goto LAB_00024664;
            BVar3 = bc_error_at(PTR_UINT_0012a18c + 0xf0);
            if (BVar3 == BC_STATUS_SUCCESS) {
              cVar5 = *pcVar7;
              goto LAB_0002467c;
            }
            break;
          }
          BVar3 = zxc_lex_next();
        } while (BVar3 == BC_STATUS_SUCCESS);
      }
    }
    else {
LAB_000245ec:
      msg = PTR_UINT_0012a18c + 0xf0;
LAB_00024518:
      BVar3 = bc_error_at(msg);
    }
LAB_00024530:
    (*(code *)PTR_free_0012b168)(name);
  } while( true );
}



int FUN_0002444c(char *param_1,undefined *param_2)

{
  undefined *puVar1;
  undefined4 uVar2;
  int iVar3;
  undefined1 uVar4;
  char cVar5;
  undefined *puVar6;
  undefined4 uVar7;
  int iVar8;
  char *pcVar9;
  undefined4 local_34 [2];
  int local_2c;
  
  puVar1 = PTR___stack_chk_guard_0012b14c;
  pcVar9 = *(char **)PTR_DAT_0012a304;
  local_2c = *(int *)PTR___stack_chk_guard_0012b14c;
  uVar2 = FUN_0001a2b4(*(undefined4 *)(pcVar9 + 0x18));
  iVar3 = FUN_000227d8();
  if (iVar3 != 0) goto LAB_00024530;
  if (*pcVar9 == '\"') {
    iVar3 = FUN_000227d8();
    if (iVar3 != 0) goto LAB_00024530;
    if (*pcVar9 == '$') {
      param_2 = (undefined *)((uint)param_2 & 4);
      if (param_2 == (undefined *)0x0) {
        puVar6 = PTR_UINT_0012a18c + 0xfc;
        goto LAB_00024518;
      }
      param_1[0] = '\0';
      param_1[1] = '\0';
      param_1[2] = '\0';
      param_1[3] = '\x1e';
      iVar3 = FUN_000227d8();
    }
    else {
      param_1[0] = '\0';
      param_1[1] = '\0';
      param_1[2] = '\0';
      param_1[3] = '\x1d';
      iVar3 = FUN_000236cc((uint)param_2 & 0xfc);
      if (iVar3 != 0) goto LAB_00024530;
      iVar3 = FUN_000227d8();
    }
    if (iVar3 != 0) goto LAB_00024530;
    uVar7 = *(undefined4 *)(pcVar9 + 0x2c);
    uVar4 = (undefined1)*(undefined4 *)param_1;
  }
  else {
    uVar4 = 0x1c;
    if (*pcVar9 == ' ') goto LAB_000245e0;
    uVar7 = *(undefined4 *)(pcVar9 + 0x2c);
    param_1[0] = '\0';
    param_1[1] = '\0';
    param_1[2] = '\0';
    param_1[3] = '\x1c';
  }
  local_34[0] = CONCAT13(uVar4,local_34[0]._1_3_);
  FUN_0001fdb0(uVar7,1,local_34);
  FUN_00021240(uVar2);
  (*(code *)PTR_free_0012b168)(uVar2);
LAB_00024598:
  do {
    if (local_2c == *(int *)puVar1) {
      return iVar3;
    }
    (*(code *)PTR___stack_chk_fail_0012b0c8)();
LAB_000245e0:
    if (((uint)param_2 & 8) == 0) {
      param_1[0] = '\0';
      param_1[1] = '\0';
      param_1[2] = '\0';
      param_1[3] = '.';
      local_34[0] = uVar2;
      iVar3 = FUN_000227d8();
      if (iVar3 == 0) {
        iVar8 = 0;
        if (*pcVar9 == '!') {
LAB_00024664:
          FUN_0002000c(0x2e,iVar8);
          cVar5 = *pcVar9;
LAB_0002467c:
          if (cVar5 != '!') goto LAB_000245ec;
          param_1 = pcVar9 + 0xe0;
          param_2 = PTR_LAB_0012a258 + -0x5b4;
          iVar3 = FUN_0001fa4c(param_1,local_34);
          if (iVar3 == -1) {
            FUN_00020698(uVar2);
            iVar3 = FUN_0001fa4c(param_1,local_34);
          }
          else {
            (*(code *)PTR_free_0012b168)(uVar2);
          }
          FUN_0001fef0(*(undefined4 *)(pcVar9 + 0x2c),
                       *(undefined4 *)
                        (iVar3 * *(int *)(pcVar9 + 0xec) + *(int *)(pcVar9 + 0xe0) + 4));
          iVar3 = FUN_000227d8();
          goto LAB_00024598;
        }
        param_2 = (undefined *)((uint)param_2 & 0xf8 | 4);
        param_1 = PTR_LAB_0012a258 + 0x36cc;
        iVar8 = 0;
        do {
          iVar3 = FUN_000236cc(param_2);
          if (iVar3 != 0) break;
          iVar8 = iVar8 + 1;
          if (*pcVar9 != '#') {
            if (*pcVar9 == '!') goto LAB_00024664;
            iVar3 = FUN_00022170(PTR_UINT_0012a18c + 0xf0);
            if (iVar3 == 0) {
              cVar5 = *pcVar9;
              goto LAB_0002467c;
            }
            break;
          }
          iVar3 = FUN_000227d8();
        } while (iVar3 == 0);
      }
    }
    else {
LAB_000245ec:
      puVar6 = PTR_UINT_0012a18c + 0xf0;
LAB_00024518:
      iVar3 = FUN_00022170(puVar6);
    }
LAB_00024530:
    (*(code *)PTR_free_0012b168)(uVar2);
  } while( true );
}


lui gp,0x11
addiu gp,gp,-0x22fc
addu gp,gp,t9
addiu sp,sp,-0x50
lw v0,-0x7e4c(gp)
lw t9,-0x7ea8(gp)
sw s6,0x44(sp)
sw s1,0x30(sp)
lw s6,-0x7004(gp)
lw s1,0x0(v0)
sw s5,0x40(sp)
or s5,a0,zero
sw gp,0x10(sp)
sw ra,0x4c(sp)
sw s4,0x3c(sp)
sw s3,0x38(sp)
sw s2,0x34(sp)
or s2,a1,zero
sw s0,0x2c(sp)
sw s7,0x48(sp)
lw v0,0x0(s6)
lw a0,0x18(s1)
sw v0,0x24(sp)
bal 0x0001a2b4
_nop
lw gp,0x10(sp)
lw s4,-0x7ef8(gp)
addiu s4,s4,0x27d8
or t9,s4,zero
bal 0x000227d8
_or s3,v0,zero
lw gp,0x10(sp)
bne v0,zero,0x00024530
_or s0,v0,zero
lb v0,0x0(s1)
li v1,0x22
bne v0,v1,0x00024544
_or t9,s4,zero
bal 0x000227d8
_nop
lw gp,0x10(sp)
bne v0,zero,0x00024530
_or s0,v0,zero
lb v1,0x0(s1)
li v0,0x24
bne v1,v0,0x00024770
_lw t9,-0x7ef8(gp)
andi s2,s2,0x4
bne s2,zero,0x000247bc
_lw a0,-0x7fc4(gp)
addiu a0,a0,0xfc
lw t9,-0x7ef8(gp)
addiu t9,t9,0x2170
bal 0x00022170
_nop
lw gp,0x10(sp)
or s0,v0,zero
lw t9,-0x6fe8(gp)
jalr t9
_or a0,s3,zero
b 0x00024598
_lw gp,0x10(sp)
li v1,0x20
beq v0,v1,0x000245e0
_li v0,0x1c
lw a0,0x2c(s1)
addiu a2,sp,0x1c
li a1,0x1
sw v0,0x0(s5)
lw t9,-0x7ef8(gp)
addiu t9,t9,-0x250
bal 0x0001fdb0
_sb v0,0x1c(sp)
lw gp,0x10(sp)
lw t9,-0x7ef8(gp)
addiu t9,t9,0x1240
bal 0x00021240
_or a0,s3,zero
lw gp,0x10(sp)
lw t9,-0x6fe8(gp)
jalr t9
_or a0,s3,zero
lw gp,0x10(sp)
lw a0,0x24(sp)
or v0,s0,zero
lw v1,0x0(s6)
bne a0,v1,0x000245d4
_lw ra,0x4c(sp)
lw s7,0x48(sp)
lw s6,0x44(sp)
lw s5,0x40(sp)
lw s4,0x3c(sp)
lw s3,0x38(sp)
lw s2,0x34(sp)
lw s1,0x30(sp)
lw s0,0x2c(sp)
jr ra
_addiu sp,sp,0x50
lw t9,-0x7088(gp)
jalr t9
_nop
andi v0,s2,0x8
beq v0,zero,0x000245f8
_li v0,0x2e
lw a0,-0x7fc4(gp)
b 0x00024518
_addiu a0,a0,0xf0
sw s3,0x1c(sp)
or t9,s4,zero
bal 0x000227d8
_sw v0,0x0(s5)
lw gp,0x10(sp)
bne v0,zero,0x00024530
_or s0,v0,zero
lb v1,0x0(s1)
li v0,0x21
beq v1,v0,0x00024664
_lw t9,-0x7ef8(gp)
lw s5,-0x7ef8(gp)
andi s2,s2,0xf8
li s7,0x23
ori s2,s2,0x4
addiu s5,s5,0x36cc
or t9,s5,zero
bal 0x000236cc
_or a0,s2,zero
bne v0,zero,0x0002452c
_lw gp,0x10(sp)
lb v0,0x0(s1)
beq v0,s7,0x0002472c
_addiu s0,s0,0x1
li v1,0x21
bne v0,v1,0x00024748
_lw t9,-0x7ef8(gp)
li a0,0x2e
addiu t9,t9,0xc
bal 0x0002000c
_or a1,s0,zero
lw gp,0x10(sp)
lb v1,0x0(s1)
li v0,0x21
bne v1,v0,0x000245ec
_addiu s7,sp,0x1c
lw s2,-0x7ef8(gp)
addiu s5,s1,0xe0
or a0,s5,zero
addiu s2,s2,-0x5b4
or t9,s2,zero
bal 0x0001fa4c
_or a1,s7,zero
li v1,-0x1
lw gp,0x10(sp)
bne v0,v1,0x00024718
_or s0,v0,zero
lw t9,-0x7ef8(gp)
addiu t9,t9,0x698
bal 0x00020698
_or a0,s3,zero
or a1,s7,zero
or t9,s2,zero
bal 0x0001fa4c
_or a0,s5,zero
lw gp,0x10(sp)
or s0,v0,zero
lw v1,0xec(s1)
lw v0,0xe0(s1)
lw t9,-0x7ef8(gp)
mul a1,s0,v1
lw a0,0x2c(s1)
addiu t9,t9,-0x110
addu s0,a1,v0
bal 0x0001fef0
_lw a1,0x4(s0)
or t9,s4,zero
bal 0x000227d8
_nop
lw gp,0x10(sp)
b 0x00024598
_or s0,v0,zero
lw t9,-0x6fe8(gp)
jalr t9
_or a0,s3,zero
b 0x000246dc
_lw gp,0x10(sp)
or t9,s4,zero
bal 0x000227d8
_nop
bne v0,zero,0x0002452c
_lw gp,0x10(sp)
b 0x0002463c
_or t9,s5,zero
lw a0,-0x7fc4(gp)
lw t9,-0x7ef8(gp)
addiu t9,t9,0x2170
bal 0x00022170
_addiu a0,a0,0xf0
lw gp,0x10(sp)
bne v0,zero,0x00024530
_or s0,v0,zero
b 0x0002467c
_lb v1,0x0(s1)
li v0,0x1d
andi a0,s2,0xfc
addiu t9,t9,0x36cc
bal 0x000236cc
_sw v0,0x0(s5)
lw gp,0x10(sp)
bne v0,zero,0x00024530
_or s0,v0,zero
or t9,s4,zero
bal 0x000227d8
_nop
lw gp,0x10(sp)
bne v0,zero,0x00024530
_or s0,v0,zero
addiu a2,sp,0x1c
lw a0,0x2c(s1)
li a1,0x1
b 0x00024560
_lw v0,0x0(s5)
li v0,0x1e
or t9,s4,zero
bal 0x000227d8
_sw v0,0x0(s5)
lw gp,0x10(sp)
bne v0,zero,0x00024530
_or s0,v0,zero
b 0x000247ac
_addiu a2,sp,0x1c
(translation_unit "int FUN_0002444c(char *param_1,undefined *param_2)\n\n{\n  undefined *puVar1;\n  undefined4 uVar2;\n  int iVar3;\n  undefined1 uVar4;\n  char cVar5;\n  undefined *puVar6;\n  undefined4 uVar7;\n  int iVar8;\n  char *pcVar9;\n  undefined4 local_34 [2];\n  int local_2c;\n  \n  puVar1 = PTR___stack_chk_guard_0012b14c;\n  pcVar9 = *(char **)PTR_DAT_0012a304;\n  local_2c = *(int *)PTR___stack_chk_guard_0012b14c;\n  uVar2 = FUN_0001a2b4(*(undefined4 *)(pcVar9 + 0x18));\n  iVar3 = FUN_000227d8();\n  if (iVar3 != 0) goto LAB_00024530;\n  if (*pcVar9 == '\"') {\n    iVar3 = FUN_000227d8();\n    if (iVar3 != 0) goto LAB_00024530;\n    if (*pcVar9 == '$') {\n      param_2 = (undefined *)((uint)param_2 & 4);\n      if (param_2 == (undefined *)0x0) {\n        puVar6 = PTR_UINT_0012a18c + 0xfc;\n        goto LAB_00024518;\n      }\n      param_1[0] = '\0';\n      param_1[1] = '\0';\n      param_1[2] = '\0';\n      param_1[3] = '\x1e';\n      iVar3 = FUN_000227d8();\n    }\n    else {\n      param_1[0] = '\0';\n      param_1[1] = '\0';\n      param_1[2] = '\0';\n      param_1[3] = '\x1d';\n      iVar3 = FUN_000236cc((uint)param_2 & 0xfc);\n      if (iVar3 != 0) goto LAB_00024530;\n      iVar3 = FUN_000227d8();\n    }\n    if (iVar3 != 0) goto LAB_00024530;\n    uVar7 = *(undefined4 *)(pcVar9 + 0x2c);\n    uVar4 = (undefined1)*(undefined4 *)param_1;\n  }\n  else {\n    uVar4 = 0x1c;\n    if (*pcVar9 == ' ') goto LAB_000245e0;\n    uVar7 = *(undefined4 *)(pcVar9 + 0x2c);\n    param_1[0] = '\0';\n    param_1[1] = '\0';\n    param_1[2] = '\0';\n    param_1[3] = '\x1c';\n  }\n  local_34[0] = CONCAT13(uVar4,local_34[0]._1_3_);\n  FUN_0001fdb0(uVar7,1,local_34);\n  FUN_00021240(uVar2);\n  (*(code *)PTR_free_0012b168)(uVar2);\nLAB_00024598:\n  do {\n    if (local_2c == *(int *)puVar1) {\n      return iVar3;\n    }\n    (*(code *)PTR___stack_chk_fail_0012b0c8)();\nLAB_000245e0:\n    if (((uint)param_2 & 8) == 0) {\n      param_1[0] = '\0';\n      param_1[1] = '\0';\n      param_1[2] = '\0';\n      param_1[3] = '.';\n      local_34[0] = uVar2;\n      iVar3 = FUN_000227d8();\n      if (iVar3 == 0) {\n        iVar8 = 0;\n        if (*pcVar9 == '!') {\nLAB_00024664:\n          FUN_0002000c(0x2e,iVar8);\n          cVar5 = *pcVar9;\nLAB_0002467c:\n          if (cVar5 != '!') goto LAB_000245ec;\n          param_1 = pcVar9 + 0xe0;\n          param_2 = PTR_LAB_0012a258 + -0x5b4;\n          iVar3 = FUN_0001fa4c(param_1,local_34);\n          if (iVar3 == -1) {\n            FUN_00020698(uVar2);\n            iVar3 = FUN_0001fa4c(param_1,local_34);\n          }\n          else {\n            (*(code *)PTR_free_0012b168)(uVar2);\n          }\n          FUN_0001fef0(*(undefined4 *)(pcVar9 + 0x2c),\n                       *(undefined4 *)\n                        (iVar3 * *(int *)(pcVar9 + 0xec) + *(int *)(pcVar9 + 0xe0) + 4));\n          iVar3 = FUN_000227d8();\n          goto LAB_00024598;\n        }\n        param_2 = (undefined *)((uint)param_2 & 0xf8 | 4);\n        param_1 = PTR_LAB_0012a258 + 0x36cc;\n        iVar8 = 0;\n        do {\n          iVar3 = FUN_000236cc(param_2);\n          if (iVar3 != 0) break;\n          iVar8 = iVar8 + 1;\n          if (*pcVar9 != '#') {\n            if (*pcVar9 == '!') goto LAB_00024664;\n            iVar3 = FUN_00022170(PTR_UINT_0012a18c + 0xf0);\n            if (iVar3 == 0) {\n              cVar5 = *pcVar9;\n              goto LAB_0002467c;\n            }\n            break;\n          }\n          iVar3 = FUN_000227d8();\n        } while (iVar3 == 0);\n      }\n    }\n    else {\nLAB_000245ec:\n      puVar6 = PTR_UINT_0012a18c + 0xf0;\nLAB_00024518:\n      iVar3 = FUN_00022170(puVar6);\n    }\nLAB_00024530:\n    (*(code *)PTR_free_0012b168)(uVar2);\n  } while( true );\n}\n\n" (function_definition "int FUN_0002444c(char *param_1,undefined *param_2)\n\n{\n  undefined *puVar1;\n  undefined4 uVar2;\n  int iVar3;\n  undefined1 uVar4;\n  char cVar5;\n  undefined *puVar6;\n  undefined4 uVar7;\n  int iVar8;\n  char *pcVar9;\n  undefined4 local_34 [2];\n  int local_2c;\n  \n  puVar1 = PTR___stack_chk_guard_0012b14c;\n  pcVar9 = *(char **)PTR_DAT_0012a304;\n  local_2c = *(int *)PTR___stack_chk_guard_0012b14c;\n  uVar2 = FUN_0001a2b4(*(undefined4 *)(pcVar9 + 0x18));\n  iVar3 = FUN_000227d8();\n  if (iVar3 != 0) goto LAB_00024530;\n  if (*pcVar9 == '\"') {\n    iVar3 = FUN_000227d8();\n    if (iVar3 != 0) goto LAB_00024530;\n    if (*pcVar9 == '$') {\n      param_2 = (undefined *)((uint)param_2 & 4);\n      if (param_2 == (undefined *)0x0) {\n        puVar6 = PTR_UINT_0012a18c + 0xfc;\n        goto LAB_00024518;\n      }\n      param_1[0] = '\0';\n      param_1[1] = '\0';\n      param_1[2] = '\0';\n      param_1[3] = '\x1e';\n      iVar3 = FUN_000227d8();\n    }\n    else {\n      param_1[0] = '\0';\n      param_1[1] = '\0';\n      param_1[2] = '\0';\n      param_1[3] = '\x1d';\n      iVar3 = FUN_000236cc((uint)param_2 & 0xfc);\n      if (iVar3 != 0) goto LAB_00024530;\n      iVar3 = FUN_000227d8();\n    }\n    if (iVar3 != 0) goto LAB_00024530;\n    uVar7 = *(undefined4 *)(pcVar9 + 0x2c);\n    uVar4 = (undefined1)*(undefined4 *)param_1;\n  }\n  else {\n    uVar4 = 0x1c;\n    if (*pcVar9 == ' ') goto LAB_000245e0;\n    uVar7 = *(undefined4 *)(pcVar9 + 0x2c);\n    param_1[0] = '\0';\n    param_1[1] = '\0';\n    param_1[2] = '\0';\n    param_1[3] = '\x1c';\n  }\n  local_34[0] = CONCAT13(uVar4,local_34[0]._1_3_);\n  FUN_0001fdb0(uVar7,1,local_34);\n  FUN_00021240(uVar2);\n  (*(code *)PTR_free_0012b168)(uVar2);\nLAB_00024598:\n  do {\n    if (local_2c == *(int *)puVar1) {\n      return iVar3;\n    }\n    (*(code *)PTR___stack_chk_fail_0012b0c8)();\nLAB_000245e0:\n    if (((uint)param_2 & 8) == 0) {\n      param_1[0] = '\0';\n      param_1[1] = '\0';\n      param_1[2] = '\0';\n      param_1[3] = '.';\n      local_34[0] = uVar2;\n      iVar3 = FUN_000227d8();\n      if (iVar3 == 0) {\n        iVar8 = 0;\n        if (*pcVar9 == '!') {\nLAB_00024664:\n          FUN_0002000c(0x2e,iVar8);\n          cVar5 = *pcVar9;\nLAB_0002467c:\n          if (cVar5 != '!') goto LAB_000245ec;\n          param_1 = pcVar9 + 0xe0;\n          param_2 = PTR_LAB_0012a258 + -0x5b4;\n          iVar3 = FUN_0001fa4c(param_1,local_34);\n          if (iVar3 == -1) {\n            FUN_00020698(uVar2);\n            iVar3 = FUN_0001fa4c(param_1,local_34);\n          }\n          else {\n            (*(code *)PTR_free_0012b168)(uVar2);\n          }\n          FUN_0001fef0(*(undefined4 *)(pcVar9 + 0x2c),\n                       *(undefined4 *)\n                        (iVar3 * *(int *)(pcVar9 + 0xec) + *(int *)(pcVar9 + 0xe0) + 4));\n          iVar3 = FUN_000227d8();\n          goto LAB_00024598;\n        }\n        param_2 = (undefined *)((uint)param_2 & 0xf8 | 4);\n        param_1 = PTR_LAB_0012a258 + 0x36cc;\n        iVar8 = 0;\n        do {\n          iVar3 = FUN_000236cc(param_2);\n          if (iVar3 != 0) break;\n          iVar8 = iVar8 + 1;\n          if (*pcVar9 != '#') {\n            if (*pcVar9 == '!') goto LAB_00024664;\n            iVar3 = FUN_00022170(PTR_UINT_0012a18c + 0xf0);\n            if (iVar3 == 0) {\n              cVar5 = *pcVar9;\n              goto LAB_0002467c;\n            }\n            break;\n          }\n          iVar3 = FUN_000227d8();\n        } while (iVar3 == 0);\n      }\n    }\n    else {\nLAB_000245ec:\n      puVar6 = PTR_UINT_0012a18c + 0xf0;\nLAB_00024518:\n      iVar3 = FUN_00022170(puVar6);\n    }\nLAB_00024530:\n    (*(code *)PTR_free_0012b168)(uVar2);\n  } while( true );\n}" primitive_type (function_declarator "FUN_0002444c(char *param_1,undefined *param_2)" identifier (parameter_list "(char *param_1,undefined *param_2)" ( (parameter_declaration "char *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "undefined *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) ))) (compound_statement "{\n  undefined *puVar1;\n  undefined4 uVar2;\n  int iVar3;\n  undefined1 uVar4;\n  char cVar5;\n  undefined *puVar6;\n  undefined4 uVar7;\n  int iVar8;\n  char *pcVar9;\n  undefined4 local_34 [2];\n  int local_2c;\n  \n  puVar1 = PTR___stack_chk_guard_0012b14c;\n  pcVar9 = *(char **)PTR_DAT_0012a304;\n  local_2c = *(int *)PTR___stack_chk_guard_0012b14c;\n  uVar2 = FUN_0001a2b4(*(undefined4 *)(pcVar9 + 0x18));\n  iVar3 = FUN_000227d8();\n  if (iVar3 != 0) goto LAB_00024530;\n  if (*pcVar9 == '\"') {\n    iVar3 = FUN_000227d8();\n    if (iVar3 != 0) goto LAB_00024530;\n    if (*pcVar9 == '$') {\n      param_2 = (undefined *)((uint)param_2 & 4);\n      if (param_2 == (undefined *)0x0) {\n        puVar6 = PTR_UINT_0012a18c + 0xfc;\n        goto LAB_00024518;\n      }\n      param_1[0] = '\0';\n      param_1[1] = '\0';\n      param_1[2] = '\0';\n      param_1[3] = '\x1e';\n      iVar3 = FUN_000227d8();\n    }\n    else {\n      param_1[0] = '\0';\n      param_1[1] = '\0';\n      param_1[2] = '\0';\n      param_1[3] = '\x1d';\n      iVar3 = FUN_000236cc((uint)param_2 & 0xfc);\n      if (iVar3 != 0) goto LAB_00024530;\n      iVar3 = FUN_000227d8();\n    }\n    if (iVar3 != 0) goto LAB_00024530;\n    uVar7 = *(undefined4 *)(pcVar9 + 0x2c);\n    uVar4 = (undefined1)*(undefined4 *)param_1;\n  }\n  else {\n    uVar4 = 0x1c;\n    if (*pcVar9 == ' ') goto LAB_000245e0;\n    uVar7 = *(undefined4 *)(pcVar9 + 0x2c);\n    param_1[0] = '\0';\n    param_1[1] = '\0';\n    param_1[2] = '\0';\n    param_1[3] = '\x1c';\n  }\n  local_34[0] = CONCAT13(uVar4,local_34[0]._1_3_);\n  FUN_0001fdb0(uVar7,1,local_34);\n  FUN_00021240(uVar2);\n  (*(code *)PTR_free_0012b168)(uVar2);\nLAB_00024598:\n  do {\n    if (local_2c == *(int *)puVar1) {\n      return iVar3;\n    }\n    (*(code *)PTR___stack_chk_fail_0012b0c8)();\nLAB_000245e0:\n    if (((uint)param_2 & 8) == 0) {\n      param_1[0] = '\0';\n      param_1[1] = '\0';\n      param_1[2] = '\0';\n      param_1[3] = '.';\n      local_34[0] = uVar2;\n      iVar3 = FUN_000227d8();\n      if (iVar3 == 0) {\n        iVar8 = 0;\n        if (*pcVar9 == '!') {\nLAB_00024664:\n          FUN_0002000c(0x2e,iVar8);\n          cVar5 = *pcVar9;\nLAB_0002467c:\n          if (cVar5 != '!') goto LAB_000245ec;\n          param_1 = pcVar9 + 0xe0;\n          param_2 = PTR_LAB_0012a258 + -0x5b4;\n          iVar3 = FUN_0001fa4c(param_1,local_34);\n          if (iVar3 == -1) {\n            FUN_00020698(uVar2);\n            iVar3 = FUN_0001fa4c(param_1,local_34);\n          }\n          else {\n            (*(code *)PTR_free_0012b168)(uVar2);\n          }\n          FUN_0001fef0(*(undefined4 *)(pcVar9 + 0x2c),\n                       *(undefined4 *)\n                        (iVar3 * *(int *)(pcVar9 + 0xec) + *(int *)(pcVar9 + 0xe0) + 4));\n          iVar3 = FUN_000227d8();\n          goto LAB_00024598;\n        }\n        param_2 = (undefined *)((uint)param_2 & 0xf8 | 4);\n        param_1 = PTR_LAB_0012a258 + 0x36cc;\n        iVar8 = 0;\n        do {\n          iVar3 = FUN_000236cc(param_2);\n          if (iVar3 != 0) break;\n          iVar8 = iVar8 + 1;\n          if (*pcVar9 != '#') {\n            if (*pcVar9 == '!') goto LAB_00024664;\n            iVar3 = FUN_00022170(PTR_UINT_0012a18c + 0xf0);\n            if (iVar3 == 0) {\n              cVar5 = *pcVar9;\n              goto LAB_0002467c;\n            }\n            break;\n          }\n          iVar3 = FUN_000227d8();\n        } while (iVar3 == 0);\n      }\n    }\n    else {\nLAB_000245ec:\n      puVar6 = PTR_UINT_0012a18c + 0xf0;\nLAB_00024518:\n      iVar3 = FUN_00022170(puVar6);\n    }\nLAB_00024530:\n    (*(code *)PTR_free_0012b168)(uVar2);\n  } while( true );\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "undefined4 uVar2;" type_identifier identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "undefined1 uVar4;" type_identifier identifier ;) (declaration "char cVar5;" primitive_type identifier ;) (declaration "undefined *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "undefined4 uVar7;" type_identifier identifier ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "char *pcVar9;" primitive_type (pointer_declarator "*pcVar9" * identifier) ;) (declaration "undefined4 local_34 [2];" type_identifier (array_declarator "local_34 [2]" identifier [ number_literal ]) ;) (declaration "int local_2c;" primitive_type identifier ;) (expression_statement "puVar1 = PTR___stack_chk_guard_0012b14c;" (assignment_expression "puVar1 = PTR___stack_chk_guard_0012b14c" identifier = identifier) ;) (expression_statement "pcVar9 = *(char **)PTR_DAT_0012a304;" (assignment_expression "pcVar9 = *(char **)PTR_DAT_0012a304" identifier = (pointer_expression "*(char **)PTR_DAT_0012a304" * (cast_expression "(char **)PTR_DAT_0012a304" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) (expression_statement "local_2c = *(int *)PTR___stack_chk_guard_0012b14c;" (assignment_expression "local_2c = *(int *)PTR___stack_chk_guard_0012b14c" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_0012b14c" * (cast_expression "(int *)PTR___stack_chk_guard_0012b14c" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "uVar2 = FUN_0001a2b4(*(undefined4 *)(pcVar9 + 0x18));" (assignment_expression "uVar2 = FUN_0001a2b4(*(undefined4 *)(pcVar9 + 0x18))" identifier = (call_expression "FUN_0001a2b4(*(undefined4 *)(pcVar9 + 0x18))" identifier (argument_list "(*(undefined4 *)(pcVar9 + 0x18))" ( (pointer_expression "*(undefined4 *)(pcVar9 + 0x18)" * (cast_expression "(undefined4 *)(pcVar9 + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar9 + 0x18)" ( (binary_expression "pcVar9 + 0x18" identifier + number_literal) )))) )))) ;) (expression_statement "iVar3 = FUN_000227d8();" (assignment_expression "iVar3 = FUN_000227d8()" identifier = (call_expression "FUN_000227d8()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar3 != 0) goto LAB_00024530;" if (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00024530;" goto statement_identifier ;)) (if_statement "if (*pcVar9 == '\"') {\n    iVar3 = FUN_000227d8();\n    if (iVar3 != 0) goto LAB_00024530;\n    if (*pcVar9 == '$') {\n      param_2 = (undefined *)((uint)param_2 & 4);\n      if (param_2 == (undefined *)0x0) {\n        puVar6 = PTR_UINT_0012a18c + 0xfc;\n        goto LAB_00024518;\n      }\n      param_1[0] = '\0';\n      param_1[1] = '\0';\n      param_1[2] = '\0';\n      param_1[3] = '\x1e';\n      iVar3 = FUN_000227d8();\n    }\n    else {\n      param_1[0] = '\0';\n      param_1[1] = '\0';\n      param_1[2] = '\0';\n      param_1[3] = '\x1d';\n      iVar3 = FUN_000236cc((uint)param_2 & 0xfc);\n      if (iVar3 != 0) goto LAB_00024530;\n      iVar3 = FUN_000227d8();\n    }\n    if (iVar3 != 0) goto LAB_00024530;\n    uVar7 = *(undefined4 *)(pcVar9 + 0x2c);\n    uVar4 = (undefined1)*(undefined4 *)param_1;\n  }\n  else {\n    uVar4 = 0x1c;\n    if (*pcVar9 == ' ') goto LAB_000245e0;\n    uVar7 = *(undefined4 *)(pcVar9 + 0x2c);\n    param_1[0] = '\0';\n    param_1[1] = '\0';\n    param_1[2] = '\0';\n    param_1[3] = '\x1c';\n  }" if (parenthesized_expression "(*pcVar9 == '\"')" ( (binary_expression "*pcVar9 == '\"'" (pointer_expression "*pcVar9" * identifier) == (char_literal "'\"'" ' escape_sequence ')) )) (compound_statement "{\n    iVar3 = FUN_000227d8();\n    if (iVar3 != 0) goto LAB_00024530;\n    if (*pcVar9 == '$') {\n      param_2 = (undefined *)((uint)param_2 & 4);\n      if (param_2 == (undefined *)0x0) {\n        puVar6 = PTR_UINT_0012a18c + 0xfc;\n        goto LAB_00024518;\n      }\n      param_1[0] = '\0';\n      param_1[1] = '\0';\n      param_1[2] = '\0';\n      param_1[3] = '\x1e';\n      iVar3 = FUN_000227d8();\n    }\n    else {\n      param_1[0] = '\0';\n      param_1[1] = '\0';\n      param_1[2] = '\0';\n      param_1[3] = '\x1d';\n      iVar3 = FUN_000236cc((uint)param_2 & 0xfc);\n      if (iVar3 != 0) goto LAB_00024530;\n      iVar3 = FUN_000227d8();\n    }\n    if (iVar3 != 0) goto LAB_00024530;\n    uVar7 = *(undefined4 *)(pcVar9 + 0x2c);\n    uVar4 = (undefined1)*(undefined4 *)param_1;\n  }" { (expression_statement "iVar3 = FUN_000227d8();" (assignment_expression "iVar3 = FUN_000227d8()" identifier = (call_expression "FUN_000227d8()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar3 != 0) goto LAB_00024530;" if (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00024530;" goto statement_identifier ;)) (if_statement "if (*pcVar9 == '$') {\n      param_2 = (undefined *)((uint)param_2 & 4);\n      if (param_2 == (undefined *)0x0) {\n        puVar6 = PTR_UINT_0012a18c + 0xfc;\n        goto LAB_00024518;\n      }\n      param_1[0] = '\0';\n      param_1[1] = '\0';\n      param_1[2] = '\0';\n      param_1[3] = '\x1e';\n      iVar3 = FUN_000227d8();\n    }\n    else {\n      param_1[0] = '\0';\n      param_1[1] = '\0';\n      param_1[2] = '\0';\n      param_1[3] = '\x1d';\n      iVar3 = FUN_000236cc((uint)param_2 & 0xfc);\n      if (iVar3 != 0) goto LAB_00024530;\n      iVar3 = FUN_000227d8();\n    }" if (parenthesized_expression "(*pcVar9 == '$')" ( (binary_expression "*pcVar9 == '$'" (pointer_expression "*pcVar9" * identifier) == (char_literal "'$'" ' character ')) )) (compound_statement "{\n      param_2 = (undefined *)((uint)param_2 & 4);\n      if (param_2 == (undefined *)0x0) {\n        puVar6 = PTR_UINT_0012a18c + 0xfc;\n        goto LAB_00024518;\n      }\n      param_1[0] = '\0';\n      param_1[1] = '\0';\n      param_1[2] = '\0';\n      param_1[3] = '\x1e';\n      iVar3 = FUN_000227d8();\n    }" { (expression_statement "param_2 = (undefined *)((uint)param_2 & 4);" (assignment_expression "param_2 = (undefined *)((uint)param_2 & 4)" identifier = (cast_expression "(undefined *)((uint)param_2 & 4)" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uint)param_2 & 4)" ( (binary_expression "(uint)param_2 & 4" (cast_expression "(uint)param_2" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )))) ;) (if_statement "if (param_2 == (undefined *)0x0) {\n        puVar6 = PTR_UINT_0012a18c + 0xfc;\n        goto LAB_00024518;\n      }" if (parenthesized_expression "(param_2 == (undefined *)0x0)" ( (binary_expression "param_2 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        puVar6 = PTR_UINT_0012a18c + 0xfc;\n        goto LAB_00024518;\n      }" { (expression_statement "puVar6 = PTR_UINT_0012a18c + 0xfc;" (assignment_expression "puVar6 = PTR_UINT_0012a18c + 0xfc" identifier = (binary_expression "PTR_UINT_0012a18c + 0xfc" identifier + number_literal)) ;) (goto_statement "goto LAB_00024518;" goto statement_identifier ;) })) (expression_statement "param_1[0] = '\0';" (assignment_expression "param_1[0] = '\0'" (subscript_expression "param_1[0]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "param_1[1] = '\0';" (assignment_expression "param_1[1] = '\0'" (subscript_expression "param_1[1]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "param_1[2] = '\0';" (assignment_expression "param_1[2] = '\0'" (subscript_expression "param_1[2]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "param_1[3] = '\x1e';" (assignment_expression "param_1[3] = '\x1e'" (subscript_expression "param_1[3]" identifier [ number_literal ]) = (char_literal "'\x1e'" ' escape_sequence ')) ;) (expression_statement "iVar3 = FUN_000227d8();" (assignment_expression "iVar3 = FUN_000227d8()" identifier = (call_expression "FUN_000227d8()" identifier (argument_list "()" ( )))) ;) }) (else_clause "else {\n      param_1[0] = '\0';\n      param_1[1] = '\0';\n      param_1[2] = '\0';\n      param_1[3] = '\x1d';\n      iVar3 = FUN_000236cc((uint)param_2 & 0xfc);\n      if (iVar3 != 0) goto LAB_00024530;\n      iVar3 = FUN_000227d8();\n    }" else (compound_statement "{\n      param_1[0] = '\0';\n      param_1[1] = '\0';\n      param_1[2] = '\0';\n      param_1[3] = '\x1d';\n      iVar3 = FUN_000236cc((uint)param_2 & 0xfc);\n      if (iVar3 != 0) goto LAB_00024530;\n      iVar3 = FUN_000227d8();\n    }" { (expression_statement "param_1[0] = '\0';" (assignment_expression "param_1[0] = '\0'" (subscript_expression "param_1[0]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "param_1[1] = '\0';" (assignment_expression "param_1[1] = '\0'" (subscript_expression "param_1[1]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "param_1[2] = '\0';" (assignment_expression "param_1[2] = '\0'" (subscript_expression "param_1[2]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "param_1[3] = '\x1d';" (assignment_expression "param_1[3] = '\x1d'" (subscript_expression "param_1[3]" identifier [ number_literal ]) = (char_literal "'\x1d'" ' escape_sequence ')) ;) (expression_statement "iVar3 = FUN_000236cc((uint)param_2 & 0xfc);" (assignment_expression "iVar3 = FUN_000236cc((uint)param_2 & 0xfc)" identifier = (call_expression "FUN_000236cc((uint)param_2 & 0xfc)" identifier (argument_list "((uint)param_2 & 0xfc)" ( (binary_expression "(uint)param_2 & 0xfc" (cast_expression "(uint)param_2" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )))) ;) (if_statement "if (iVar3 != 0) goto LAB_00024530;" if (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00024530;" goto statement_identifier ;)) (expression_statement "iVar3 = FUN_000227d8();" (assignment_expression "iVar3 = FUN_000227d8()" identifier = (call_expression "FUN_000227d8()" identifier (argument_list "()" ( )))) ;) }))) (if_statement "if (iVar3 != 0) goto LAB_00024530;" if (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00024530;" goto statement_identifier ;)) (expression_statement "uVar7 = *(undefined4 *)(pcVar9 + 0x2c);" (assignment_expression "uVar7 = *(undefined4 *)(pcVar9 + 0x2c)" identifier = (pointer_expression "*(undefined4 *)(pcVar9 + 0x2c)" * (cast_expression "(undefined4 *)(pcVar9 + 0x2c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar9 + 0x2c)" ( (binary_expression "pcVar9 + 0x2c" identifier + number_literal) ))))) ;) (expression_statement "uVar4 = (undefined1)*(undefined4 *)param_1;" (assignment_expression "uVar4 = (undefined1)*(undefined4 *)param_1" identifier = (binary_expression "(undefined1)*(undefined4 *)param_1" (parenthesized_expression "(undefined1)" ( identifier )) * (cast_expression "(undefined4 *)param_1" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) }) (else_clause "else {\n    uVar4 = 0x1c;\n    if (*pcVar9 == ' ') goto LAB_000245e0;\n    uVar7 = *(undefined4 *)(pcVar9 + 0x2c);\n    param_1[0] = '\0';\n    param_1[1] = '\0';\n    param_1[2] = '\0';\n    param_1[3] = '\x1c';\n  }" else (compound_statement "{\n    uVar4 = 0x1c;\n    if (*pcVar9 == ' ') goto LAB_000245e0;\n    uVar7 = *(undefined4 *)(pcVar9 + 0x2c);\n    param_1[0] = '\0';\n    param_1[1] = '\0';\n    param_1[2] = '\0';\n    param_1[3] = '\x1c';\n  }" { (expression_statement "uVar4 = 0x1c;" (assignment_expression "uVar4 = 0x1c" identifier = number_literal) ;) (if_statement "if (*pcVar9 == ' ') goto LAB_000245e0;" if (parenthesized_expression "(*pcVar9 == ' ')" ( (binary_expression "*pcVar9 == ' '" (pointer_expression "*pcVar9" * identifier) == (char_literal "' '" ' character ')) )) (goto_statement "goto LAB_000245e0;" goto statement_identifier ;)) (expression_statement "uVar7 = *(undefined4 *)(pcVar9 + 0x2c);" (assignment_expression "uVar7 = *(undefined4 *)(pcVar9 + 0x2c)" identifier = (pointer_expression "*(undefined4 *)(pcVar9 + 0x2c)" * (cast_expression "(undefined4 *)(pcVar9 + 0x2c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar9 + 0x2c)" ( (binary_expression "pcVar9 + 0x2c" identifier + number_literal) ))))) ;) (expression_statement "param_1[0] = '\0';" (assignment_expression "param_1[0] = '\0'" (subscript_expression "param_1[0]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "param_1[1] = '\0';" (assignment_expression "param_1[1] = '\0'" (subscript_expression "param_1[1]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "param_1[2] = '\0';" (assignment_expression "param_1[2] = '\0'" (subscript_expression "param_1[2]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "param_1[3] = '\x1c';" (assignment_expression "param_1[3] = '\x1c'" (subscript_expression "param_1[3]" identifier [ number_literal ]) = (char_literal "'\x1c'" ' escape_sequence ')) ;) }))) (expression_statement "local_34[0] = CONCAT13(uVar4,local_34[0]._1_3_);" (assignment_expression "local_34[0] = CONCAT13(uVar4,local_34[0]._1_3_)" (subscript_expression "local_34[0]" identifier [ number_literal ]) = (call_expression "CONCAT13(uVar4,local_34[0]._1_3_)" identifier (argument_list "(uVar4,local_34[0]._1_3_)" ( identifier , (field_expression "local_34[0]._1_3_" (subscript_expression "local_34[0]" identifier [ number_literal ]) . field_identifier) )))) ;) (expression_statement "FUN_0001fdb0(uVar7,1,local_34);" (call_expression "FUN_0001fdb0(uVar7,1,local_34)" identifier (argument_list "(uVar7,1,local_34)" ( identifier , number_literal , identifier ))) ;) (expression_statement "FUN_00021240(uVar2);" (call_expression "FUN_00021240(uVar2)" identifier (argument_list "(uVar2)" ( identifier ))) ;) (expression_statement "(*(code *)PTR_free_0012b168)(uVar2);" (call_expression "(*(code *)PTR_free_0012b168)(uVar2)" (parenthesized_expression "(*(code *)PTR_free_0012b168)" ( (pointer_expression "*(code *)PTR_free_0012b168" * (cast_expression "(code *)PTR_free_0012b168" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(uVar2)" ( identifier ))) ;) (labeled_statement "LAB_00024598:\n  do {\n    if (local_2c == *(int *)puVar1) {\n      return iVar3;\n    }\n    (*(code *)PTR___stack_chk_fail_0012b0c8)();\nLAB_000245e0:\n    if (((uint)param_2 & 8) == 0) {\n      param_1[0] = '\0';\n      param_1[1] = '\0';\n      param_1[2] = '\0';\n      param_1[3] = '.';\n      local_34[0] = uVar2;\n      iVar3 = FUN_000227d8();\n      if (iVar3 == 0) {\n        iVar8 = 0;\n        if (*pcVar9 == '!') {\nLAB_00024664:\n          FUN_0002000c(0x2e,iVar8);\n          cVar5 = *pcVar9;\nLAB_0002467c:\n          if (cVar5 != '!') goto LAB_000245ec;\n          param_1 = pcVar9 + 0xe0;\n          param_2 = PTR_LAB_0012a258 + -0x5b4;\n          iVar3 = FUN_0001fa4c(param_1,local_34);\n          if (iVar3 == -1) {\n            FUN_00020698(uVar2);\n            iVar3 = FUN_0001fa4c(param_1,local_34);\n          }\n          else {\n            (*(code *)PTR_free_0012b168)(uVar2);\n          }\n          FUN_0001fef0(*(undefined4 *)(pcVar9 + 0x2c),\n                       *(undefined4 *)\n                        (iVar3 * *(int *)(pcVar9 + 0xec) + *(int *)(pcVar9 + 0xe0) + 4));\n          iVar3 = FUN_000227d8();\n          goto LAB_00024598;\n        }\n        param_2 = (undefined *)((uint)param_2 & 0xf8 | 4);\n        param_1 = PTR_LAB_0012a258 + 0x36cc;\n        iVar8 = 0;\n        do {\n          iVar3 = FUN_000236cc(param_2);\n          if (iVar3 != 0) break;\n          iVar8 = iVar8 + 1;\n          if (*pcVar9 != '#') {\n            if (*pcVar9 == '!') goto LAB_00024664;\n            iVar3 = FUN_00022170(PTR_UINT_0012a18c + 0xf0);\n            if (iVar3 == 0) {\n              cVar5 = *pcVar9;\n              goto LAB_0002467c;\n            }\n            break;\n          }\n          iVar3 = FUN_000227d8();\n        } while (iVar3 == 0);\n      }\n    }\n    else {\nLAB_000245ec:\n      puVar6 = PTR_UINT_0012a18c + 0xf0;\nLAB_00024518:\n      iVar3 = FUN_00022170(puVar6);\n    }\nLAB_00024530:\n    (*(code *)PTR_free_0012b168)(uVar2);\n  } while( true );" statement_identifier : (do_statement "do {\n    if (local_2c == *(int *)puVar1) {\n      return iVar3;\n    }\n    (*(code *)PTR___stack_chk_fail_0012b0c8)();\nLAB_000245e0:\n    if (((uint)param_2 & 8) == 0) {\n      param_1[0] = '\0';\n      param_1[1] = '\0';\n      param_1[2] = '\0';\n      param_1[3] = '.';\n      local_34[0] = uVar2;\n      iVar3 = FUN_000227d8();\n      if (iVar3 == 0) {\n        iVar8 = 0;\n        if (*pcVar9 == '!') {\nLAB_00024664:\n          FUN_0002000c(0x2e,iVar8);\n          cVar5 = *pcVar9;\nLAB_0002467c:\n          if (cVar5 != '!') goto LAB_000245ec;\n          param_1 = pcVar9 + 0xe0;\n          param_2 = PTR_LAB_0012a258 + -0x5b4;\n          iVar3 = FUN_0001fa4c(param_1,local_34);\n          if (iVar3 == -1) {\n            FUN_00020698(uVar2);\n            iVar3 = FUN_0001fa4c(param_1,local_34);\n          }\n          else {\n            (*(code *)PTR_free_0012b168)(uVar2);\n          }\n          FUN_0001fef0(*(undefined4 *)(pcVar9 + 0x2c),\n                       *(undefined4 *)\n                        (iVar3 * *(int *)(pcVar9 + 0xec) + *(int *)(pcVar9 + 0xe0) + 4));\n          iVar3 = FUN_000227d8();\n          goto LAB_00024598;\n        }\n        param_2 = (undefined *)((uint)param_2 & 0xf8 | 4);\n        param_1 = PTR_LAB_0012a258 + 0x36cc;\n        iVar8 = 0;\n        do {\n          iVar3 = FUN_000236cc(param_2);\n          if (iVar3 != 0) break;\n          iVar8 = iVar8 + 1;\n          if (*pcVar9 != '#') {\n            if (*pcVar9 == '!') goto LAB_00024664;\n            iVar3 = FUN_00022170(PTR_UINT_0012a18c + 0xf0);\n            if (iVar3 == 0) {\n              cVar5 = *pcVar9;\n              goto LAB_0002467c;\n            }\n            break;\n          }\n          iVar3 = FUN_000227d8();\n        } while (iVar3 == 0);\n      }\n    }\n    else {\nLAB_000245ec:\n      puVar6 = PTR_UINT_0012a18c + 0xf0;\nLAB_00024518:\n      iVar3 = FUN_00022170(puVar6);\n    }\nLAB_00024530:\n    (*(code *)PTR_free_0012b168)(uVar2);\n  } while( true );" do (compound_statement "{\n    if (local_2c == *(int *)puVar1) {\n      return iVar3;\n    }\n    (*(code *)PTR___stack_chk_fail_0012b0c8)();\nLAB_000245e0:\n    if (((uint)param_2 & 8) == 0) {\n      param_1[0] = '\0';\n      param_1[1] = '\0';\n      param_1[2] = '\0';\n      param_1[3] = '.';\n      local_34[0] = uVar2;\n      iVar3 = FUN_000227d8();\n      if (iVar3 == 0) {\n        iVar8 = 0;\n        if (*pcVar9 == '!') {\nLAB_00024664:\n          FUN_0002000c(0x2e,iVar8);\n          cVar5 = *pcVar9;\nLAB_0002467c:\n          if (cVar5 != '!') goto LAB_000245ec;\n          param_1 = pcVar9 + 0xe0;\n          param_2 = PTR_LAB_0012a258 + -0x5b4;\n          iVar3 = FUN_0001fa4c(param_1,local_34);\n          if (iVar3 == -1) {\n            FUN_00020698(uVar2);\n            iVar3 = FUN_0001fa4c(param_1,local_34);\n          }\n          else {\n            (*(code *)PTR_free_0012b168)(uVar2);\n          }\n          FUN_0001fef0(*(undefined4 *)(pcVar9 + 0x2c),\n                       *(undefined4 *)\n                        (iVar3 * *(int *)(pcVar9 + 0xec) + *(int *)(pcVar9 + 0xe0) + 4));\n          iVar3 = FUN_000227d8();\n          goto LAB_00024598;\n        }\n        param_2 = (undefined *)((uint)param_2 & 0xf8 | 4);\n        param_1 = PTR_LAB_0012a258 + 0x36cc;\n        iVar8 = 0;\n        do {\n          iVar3 = FUN_000236cc(param_2);\n          if (iVar3 != 0) break;\n          iVar8 = iVar8 + 1;\n          if (*pcVar9 != '#') {\n            if (*pcVar9 == '!') goto LAB_00024664;\n            iVar3 = FUN_00022170(PTR_UINT_0012a18c + 0xf0);\n            if (iVar3 == 0) {\n              cVar5 = *pcVar9;\n              goto LAB_0002467c;\n            }\n            break;\n          }\n          iVar3 = FUN_000227d8();\n        } while (iVar3 == 0);\n      }\n    }\n    else {\nLAB_000245ec:\n      puVar6 = PTR_UINT_0012a18c + 0xf0;\nLAB_00024518:\n      iVar3 = FUN_00022170(puVar6);\n    }\nLAB_00024530:\n    (*(code *)PTR_free_0012b168)(uVar2);\n  }" { (if_statement "if (local_2c == *(int *)puVar1) {\n      return iVar3;\n    }" if (parenthesized_expression "(local_2c == *(int *)puVar1)" ( (binary_expression "local_2c == *(int *)puVar1" identifier == (pointer_expression "*(int *)puVar1" * (cast_expression "(int *)puVar1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n      return iVar3;\n    }" { (return_statement "return iVar3;" return identifier ;) })) (expression_statement "(*(code *)PTR___stack_chk_fail_0012b0c8)();" (call_expression "(*(code *)PTR___stack_chk_fail_0012b0c8)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_0012b0c8)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_0012b0c8" * (cast_expression "(code *)PTR___stack_chk_fail_0012b0c8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (labeled_statement "LAB_000245e0:\n    if (((uint)param_2 & 8) == 0) {\n      param_1[0] = '\0';\n      param_1[1] = '\0';\n      param_1[2] = '\0';\n      param_1[3] = '.';\n      local_34[0] = uVar2;\n      iVar3 = FUN_000227d8();\n      if (iVar3 == 0) {\n        iVar8 = 0;\n        if (*pcVar9 == '!') {\nLAB_00024664:\n          FUN_0002000c(0x2e,iVar8);\n          cVar5 = *pcVar9;\nLAB_0002467c:\n          if (cVar5 != '!') goto LAB_000245ec;\n          param_1 = pcVar9 + 0xe0;\n          param_2 = PTR_LAB_0012a258 + -0x5b4;\n          iVar3 = FUN_0001fa4c(param_1,local_34);\n          if (iVar3 == -1) {\n            FUN_00020698(uVar2);\n            iVar3 = FUN_0001fa4c(param_1,local_34);\n          }\n          else {\n            (*(code *)PTR_free_0012b168)(uVar2);\n          }\n          FUN_0001fef0(*(undefined4 *)(pcVar9 + 0x2c),\n                       *(undefined4 *)\n                        (iVar3 * *(int *)(pcVar9 + 0xec) + *(int *)(pcVar9 + 0xe0) + 4));\n          iVar3 = FUN_000227d8();\n          goto LAB_00024598;\n        }\n        param_2 = (undefined *)((uint)param_2 & 0xf8 | 4);\n        param_1 = PTR_LAB_0012a258 + 0x36cc;\n        iVar8 = 0;\n        do {\n          iVar3 = FUN_000236cc(param_2);\n          if (iVar3 != 0) break;\n          iVar8 = iVar8 + 1;\n          if (*pcVar9 != '#') {\n            if (*pcVar9 == '!') goto LAB_00024664;\n            iVar3 = FUN_00022170(PTR_UINT_0012a18c + 0xf0);\n            if (iVar3 == 0) {\n              cVar5 = *pcVar9;\n              goto LAB_0002467c;\n            }\n            break;\n          }\n          iVar3 = FUN_000227d8();\n        } while (iVar3 == 0);\n      }\n    }\n    else {\nLAB_000245ec:\n      puVar6 = PTR_UINT_0012a18c + 0xf0;\nLAB_00024518:\n      iVar3 = FUN_00022170(puVar6);\n    }" statement_identifier : (if_statement "if (((uint)param_2 & 8) == 0) {\n      param_1[0] = '\0';\n      param_1[1] = '\0';\n      param_1[2] = '\0';\n      param_1[3] = '.';\n      local_34[0] = uVar2;\n      iVar3 = FUN_000227d8();\n      if (iVar3 == 0) {\n        iVar8 = 0;\n        if (*pcVar9 == '!') {\nLAB_00024664:\n          FUN_0002000c(0x2e,iVar8);\n          cVar5 = *pcVar9;\nLAB_0002467c:\n          if (cVar5 != '!') goto LAB_000245ec;\n          param_1 = pcVar9 + 0xe0;\n          param_2 = PTR_LAB_0012a258 + -0x5b4;\n          iVar3 = FUN_0001fa4c(param_1,local_34);\n          if (iVar3 == -1) {\n            FUN_00020698(uVar2);\n            iVar3 = FUN_0001fa4c(param_1,local_34);\n          }\n          else {\n            (*(code *)PTR_free_0012b168)(uVar2);\n          }\n          FUN_0001fef0(*(undefined4 *)(pcVar9 + 0x2c),\n                       *(undefined4 *)\n                        (iVar3 * *(int *)(pcVar9 + 0xec) + *(int *)(pcVar9 + 0xe0) + 4));\n          iVar3 = FUN_000227d8();\n          goto LAB_00024598;\n        }\n        param_2 = (undefined *)((uint)param_2 & 0xf8 | 4);\n        param_1 = PTR_LAB_0012a258 + 0x36cc;\n        iVar8 = 0;\n        do {\n          iVar3 = FUN_000236cc(param_2);\n          if (iVar3 != 0) break;\n          iVar8 = iVar8 + 1;\n          if (*pcVar9 != '#') {\n            if (*pcVar9 == '!') goto LAB_00024664;\n            iVar3 = FUN_00022170(PTR_UINT_0012a18c + 0xf0);\n            if (iVar3 == 0) {\n              cVar5 = *pcVar9;\n              goto LAB_0002467c;\n            }\n            break;\n          }\n          iVar3 = FUN_000227d8();\n        } while (iVar3 == 0);\n      }\n    }\n    else {\nLAB_000245ec:\n      puVar6 = PTR_UINT_0012a18c + 0xf0;\nLAB_00024518:\n      iVar3 = FUN_00022170(puVar6);\n    }" if (parenthesized_expression "(((uint)param_2 & 8) == 0)" ( (binary_expression "((uint)param_2 & 8) == 0" (parenthesized_expression "((uint)param_2 & 8)" ( (binary_expression "(uint)param_2 & 8" (cast_expression "(uint)param_2" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n      param_1[0] = '\0';\n      param_1[1] = '\0';\n      param_1[2] = '\0';\n      param_1[3] = '.';\n      local_34[0] = uVar2;\n      iVar3 = FUN_000227d8();\n      if (iVar3 == 0) {\n        iVar8 = 0;\n        if (*pcVar9 == '!') {\nLAB_00024664:\n          FUN_0002000c(0x2e,iVar8);\n          cVar5 = *pcVar9;\nLAB_0002467c:\n          if (cVar5 != '!') goto LAB_000245ec;\n          param_1 = pcVar9 + 0xe0;\n          param_2 = PTR_LAB_0012a258 + -0x5b4;\n          iVar3 = FUN_0001fa4c(param_1,local_34);\n          if (iVar3 == -1) {\n            FUN_00020698(uVar2);\n            iVar3 = FUN_0001fa4c(param_1,local_34);\n          }\n          else {\n            (*(code *)PTR_free_0012b168)(uVar2);\n          }\n          FUN_0001fef0(*(undefined4 *)(pcVar9 + 0x2c),\n                       *(undefined4 *)\n                        (iVar3 * *(int *)(pcVar9 + 0xec) + *(int *)(pcVar9 + 0xe0) + 4));\n          iVar3 = FUN_000227d8();\n          goto LAB_00024598;\n        }\n        param_2 = (undefined *)((uint)param_2 & 0xf8 | 4);\n        param_1 = PTR_LAB_0012a258 + 0x36cc;\n        iVar8 = 0;\n        do {\n          iVar3 = FUN_000236cc(param_2);\n          if (iVar3 != 0) break;\n          iVar8 = iVar8 + 1;\n          if (*pcVar9 != '#') {\n            if (*pcVar9 == '!') goto LAB_00024664;\n            iVar3 = FUN_00022170(PTR_UINT_0012a18c + 0xf0);\n            if (iVar3 == 0) {\n              cVar5 = *pcVar9;\n              goto LAB_0002467c;\n            }\n            break;\n          }\n          iVar3 = FUN_000227d8();\n        } while (iVar3 == 0);\n      }\n    }" { (expression_statement "param_1[0] = '\0';" (assignment_expression "param_1[0] = '\0'" (subscript_expression "param_1[0]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "param_1[1] = '\0';" (assignment_expression "param_1[1] = '\0'" (subscript_expression "param_1[1]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "param_1[2] = '\0';" (assignment_expression "param_1[2] = '\0'" (subscript_expression "param_1[2]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "param_1[3] = '.';" (assignment_expression "param_1[3] = '.'" (subscript_expression "param_1[3]" identifier [ number_literal ]) = (char_literal "'.'" ' character ')) ;) (expression_statement "local_34[0] = uVar2;" (assignment_expression "local_34[0] = uVar2" (subscript_expression "local_34[0]" identifier [ number_literal ]) = identifier) ;) (expression_statement "iVar3 = FUN_000227d8();" (assignment_expression "iVar3 = FUN_000227d8()" identifier = (call_expression "FUN_000227d8()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar3 == 0) {\n        iVar8 = 0;\n        if (*pcVar9 == '!') {\nLAB_00024664:\n          FUN_0002000c(0x2e,iVar8);\n          cVar5 = *pcVar9;\nLAB_0002467c:\n          if (cVar5 != '!') goto LAB_000245ec;\n          param_1 = pcVar9 + 0xe0;\n          param_2 = PTR_LAB_0012a258 + -0x5b4;\n          iVar3 = FUN_0001fa4c(param_1,local_34);\n          if (iVar3 == -1) {\n            FUN_00020698(uVar2);\n            iVar3 = FUN_0001fa4c(param_1,local_34);\n          }\n          else {\n            (*(code *)PTR_free_0012b168)(uVar2);\n          }\n          FUN_0001fef0(*(undefined4 *)(pcVar9 + 0x2c),\n                       *(undefined4 *)\n                        (iVar3 * *(int *)(pcVar9 + 0xec) + *(int *)(pcVar9 + 0xe0) + 4));\n          iVar3 = FUN_000227d8();\n          goto LAB_00024598;\n        }\n        param_2 = (undefined *)((uint)param_2 & 0xf8 | 4);\n        param_1 = PTR_LAB_0012a258 + 0x36cc;\n        iVar8 = 0;\n        do {\n          iVar3 = FUN_000236cc(param_2);\n          if (iVar3 != 0) break;\n          iVar8 = iVar8 + 1;\n          if (*pcVar9 != '#') {\n            if (*pcVar9 == '!') goto LAB_00024664;\n            iVar3 = FUN_00022170(PTR_UINT_0012a18c + 0xf0);\n            if (iVar3 == 0) {\n              cVar5 = *pcVar9;\n              goto LAB_0002467c;\n            }\n            break;\n          }\n          iVar3 = FUN_000227d8();\n        } while (iVar3 == 0);\n      }" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (compound_statement "{\n        iVar8 = 0;\n        if (*pcVar9 == '!') {\nLAB_00024664:\n          FUN_0002000c(0x2e,iVar8);\n          cVar5 = *pcVar9;\nLAB_0002467c:\n          if (cVar5 != '!') goto LAB_000245ec;\n          param_1 = pcVar9 + 0xe0;\n          param_2 = PTR_LAB_0012a258 + -0x5b4;\n          iVar3 = FUN_0001fa4c(param_1,local_34);\n          if (iVar3 == -1) {\n            FUN_00020698(uVar2);\n            iVar3 = FUN_0001fa4c(param_1,local_34);\n          }\n          else {\n            (*(code *)PTR_free_0012b168)(uVar2);\n          }\n          FUN_0001fef0(*(undefined4 *)(pcVar9 + 0x2c),\n                       *(undefined4 *)\n                        (iVar3 * *(int *)(pcVar9 + 0xec) + *(int *)(pcVar9 + 0xe0) + 4));\n          iVar3 = FUN_000227d8();\n          goto LAB_00024598;\n        }\n        param_2 = (undefined *)((uint)param_2 & 0xf8 | 4);\n        param_1 = PTR_LAB_0012a258 + 0x36cc;\n        iVar8 = 0;\n        do {\n          iVar3 = FUN_000236cc(param_2);\n          if (iVar3 != 0) break;\n          iVar8 = iVar8 + 1;\n          if (*pcVar9 != '#') {\n            if (*pcVar9 == '!') goto LAB_00024664;\n            iVar3 = FUN_00022170(PTR_UINT_0012a18c + 0xf0);\n            if (iVar3 == 0) {\n              cVar5 = *pcVar9;\n              goto LAB_0002467c;\n            }\n            break;\n          }\n          iVar3 = FUN_000227d8();\n        } while (iVar3 == 0);\n      }" { (expression_statement "iVar8 = 0;" (assignment_expression "iVar8 = 0" identifier = number_literal) ;) (if_statement "if (*pcVar9 == '!') {\nLAB_00024664:\n          FUN_0002000c(0x2e,iVar8);\n          cVar5 = *pcVar9;\nLAB_0002467c:\n          if (cVar5 != '!') goto LAB_000245ec;\n          param_1 = pcVar9 + 0xe0;\n          param_2 = PTR_LAB_0012a258 + -0x5b4;\n          iVar3 = FUN_0001fa4c(param_1,local_34);\n          if (iVar3 == -1) {\n            FUN_00020698(uVar2);\n            iVar3 = FUN_0001fa4c(param_1,local_34);\n          }\n          else {\n            (*(code *)PTR_free_0012b168)(uVar2);\n          }\n          FUN_0001fef0(*(undefined4 *)(pcVar9 + 0x2c),\n                       *(undefined4 *)\n                        (iVar3 * *(int *)(pcVar9 + 0xec) + *(int *)(pcVar9 + 0xe0) + 4));\n          iVar3 = FUN_000227d8();\n          goto LAB_00024598;\n        }" if (parenthesized_expression "(*pcVar9 == '!')" ( (binary_expression "*pcVar9 == '!'" (pointer_expression "*pcVar9" * identifier) == (char_literal "'!'" ' character ')) )) (compound_statement "{\nLAB_00024664:\n          FUN_0002000c(0x2e,iVar8);\n          cVar5 = *pcVar9;\nLAB_0002467c:\n          if (cVar5 != '!') goto LAB_000245ec;\n          param_1 = pcVar9 + 0xe0;\n          param_2 = PTR_LAB_0012a258 + -0x5b4;\n          iVar3 = FUN_0001fa4c(param_1,local_34);\n          if (iVar3 == -1) {\n            FUN_00020698(uVar2);\n            iVar3 = FUN_0001fa4c(param_1,local_34);\n          }\n          else {\n            (*(code *)PTR_free_0012b168)(uVar2);\n          }\n          FUN_0001fef0(*(undefined4 *)(pcVar9 + 0x2c),\n                       *(undefined4 *)\n                        (iVar3 * *(int *)(pcVar9 + 0xec) + *(int *)(pcVar9 + 0xe0) + 4));\n          iVar3 = FUN_000227d8();\n          goto LAB_00024598;\n        }" { (labeled_statement "LAB_00024664:\n          FUN_0002000c(0x2e,iVar8);" statement_identifier : (expression_statement "FUN_0002000c(0x2e,iVar8);" (call_expression "FUN_0002000c(0x2e,iVar8)" identifier (argument_list "(0x2e,iVar8)" ( number_literal , identifier ))) ;)) (expression_statement "cVar5 = *pcVar9;" (assignment_expression "cVar5 = *pcVar9" identifier = (pointer_expression "*pcVar9" * identifier)) ;) (labeled_statement "LAB_0002467c:\n          if (cVar5 != '!') goto LAB_000245ec;" statement_identifier : (if_statement "if (cVar5 != '!') goto LAB_000245ec;" if (parenthesized_expression "(cVar5 != '!')" ( (binary_expression "cVar5 != '!'" identifier != (char_literal "'!'" ' character ')) )) (goto_statement "goto LAB_000245ec;" goto statement_identifier ;))) (expression_statement "param_1 = pcVar9 + 0xe0;" (assignment_expression "param_1 = pcVar9 + 0xe0" identifier = (binary_expression "pcVar9 + 0xe0" identifier + number_literal)) ;) (expression_statement "param_2 = PTR_LAB_0012a258 + -0x5b4;" (assignment_expression "param_2 = PTR_LAB_0012a258 + -0x5b4" identifier = (binary_expression "PTR_LAB_0012a258 + -0x5b4" identifier + number_literal)) ;) (expression_statement "iVar3 = FUN_0001fa4c(param_1,local_34);" (assignment_expression "iVar3 = FUN_0001fa4c(param_1,local_34)" identifier = (call_expression "FUN_0001fa4c(param_1,local_34)" identifier (argument_list "(param_1,local_34)" ( identifier , identifier )))) ;) (if_statement "if (iVar3 == -1) {\n            FUN_00020698(uVar2);\n            iVar3 = FUN_0001fa4c(param_1,local_34);\n          }\n          else {\n            (*(code *)PTR_free_0012b168)(uVar2);\n          }" if (parenthesized_expression "(iVar3 == -1)" ( (binary_expression "iVar3 == -1" identifier == number_literal) )) (compound_statement "{\n            FUN_00020698(uVar2);\n            iVar3 = FUN_0001fa4c(param_1,local_34);\n          }" { (expression_statement "FUN_00020698(uVar2);" (call_expression "FUN_00020698(uVar2)" identifier (argument_list "(uVar2)" ( identifier ))) ;) (expression_statement "iVar3 = FUN_0001fa4c(param_1,local_34);" (assignment_expression "iVar3 = FUN_0001fa4c(param_1,local_34)" identifier = (call_expression "FUN_0001fa4c(param_1,local_34)" identifier (argument_list "(param_1,local_34)" ( identifier , identifier )))) ;) }) (else_clause "else {\n            (*(code *)PTR_free_0012b168)(uVar2);\n          }" else (compound_statement "{\n            (*(code *)PTR_free_0012b168)(uVar2);\n          }" { (expression_statement "(*(code *)PTR_free_0012b168)(uVar2);" (call_expression "(*(code *)PTR_free_0012b168)(uVar2)" (parenthesized_expression "(*(code *)PTR_free_0012b168)" ( (pointer_expression "*(code *)PTR_free_0012b168" * (cast_expression "(code *)PTR_free_0012b168" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(uVar2)" ( identifier ))) ;) }))) (expression_statement "FUN_0001fef0(*(undefined4 *)(pcVar9 + 0x2c),\n                       *(undefined4 *)\n                        (iVar3 * *(int *)(pcVar9 + 0xec) + *(int *)(pcVar9 + 0xe0) + 4));" (call_expression "FUN_0001fef0(*(undefined4 *)(pcVar9 + 0x2c),\n                       *(undefined4 *)\n                        (iVar3 * *(int *)(pcVar9 + 0xec) + *(int *)(pcVar9 + 0xe0) + 4))" identifier (argument_list "(*(undefined4 *)(pcVar9 + 0x2c),\n                       *(undefined4 *)\n                        (iVar3 * *(int *)(pcVar9 + 0xec) + *(int *)(pcVar9 + 0xe0) + 4))" ( (pointer_expression "*(undefined4 *)(pcVar9 + 0x2c)" * (cast_expression "(undefined4 *)(pcVar9 + 0x2c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar9 + 0x2c)" ( (binary_expression "pcVar9 + 0x2c" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)\n                        (iVar3 * *(int *)(pcVar9 + 0xec) + *(int *)(pcVar9 + 0xe0) + 4)" * (cast_expression "(undefined4 *)\n                        (iVar3 * *(int *)(pcVar9 + 0xec) + *(int *)(pcVar9 + 0xe0) + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 * *(int *)(pcVar9 + 0xec) + *(int *)(pcVar9 + 0xe0) + 4)" ( (binary_expression "iVar3 * *(int *)(pcVar9 + 0xec) + *(int *)(pcVar9 + 0xe0) + 4" (binary_expression "iVar3 * *(int *)(pcVar9 + 0xec) + *(int *)(pcVar9 + 0xe0)" (binary_expression "iVar3 * *(int *)(pcVar9 + 0xec)" identifier * (pointer_expression "*(int *)(pcVar9 + 0xec)" * (cast_expression "(int *)(pcVar9 + 0xec)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar9 + 0xec)" ( (binary_expression "pcVar9 + 0xec" identifier + number_literal) ))))) + (pointer_expression "*(int *)(pcVar9 + 0xe0)" * (cast_expression "(int *)(pcVar9 + 0xe0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar9 + 0xe0)" ( (binary_expression "pcVar9 + 0xe0" identifier + number_literal) ))))) + number_literal) )))) ))) ;) (expression_statement "iVar3 = FUN_000227d8();" (assignment_expression "iVar3 = FUN_000227d8()" identifier = (call_expression "FUN_000227d8()" identifier (argument_list "()" ( )))) ;) (goto_statement "goto LAB_00024598;" goto statement_identifier ;) })) (expression_statement "param_2 = (undefined *)((uint)param_2 & 0xf8 | 4);" (assignment_expression "param_2 = (undefined *)((uint)param_2 & 0xf8 | 4)" identifier = (cast_expression "(undefined *)((uint)param_2 & 0xf8 | 4)" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uint)param_2 & 0xf8 | 4)" ( (binary_expression "(uint)param_2 & 0xf8 | 4" (binary_expression "(uint)param_2 & 0xf8" (cast_expression "(uint)param_2" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) | number_literal) )))) ;) (expression_statement "param_1 = PTR_LAB_0012a258 + 0x36cc;" (assignment_expression "param_1 = PTR_LAB_0012a258 + 0x36cc" identifier = (binary_expression "PTR_LAB_0012a258 + 0x36cc" identifier + number_literal)) ;) (expression_statement "iVar8 = 0;" (assignment_expression "iVar8 = 0" identifier = number_literal) ;) (do_statement "do {\n          iVar3 = FUN_000236cc(param_2);\n          if (iVar3 != 0) break;\n          iVar8 = iVar8 + 1;\n          if (*pcVar9 != '#') {\n            if (*pcVar9 == '!') goto LAB_00024664;\n            iVar3 = FUN_00022170(PTR_UINT_0012a18c + 0xf0);\n            if (iVar3 == 0) {\n              cVar5 = *pcVar9;\n              goto LAB_0002467c;\n            }\n            break;\n          }\n          iVar3 = FUN_000227d8();\n        } while (iVar3 == 0);" do (compound_statement "{\n          iVar3 = FUN_000236cc(param_2);\n          if (iVar3 != 0) break;\n          iVar8 = iVar8 + 1;\n          if (*pcVar9 != '#') {\n            if (*pcVar9 == '!') goto LAB_00024664;\n            iVar3 = FUN_00022170(PTR_UINT_0012a18c + 0xf0);\n            if (iVar3 == 0) {\n              cVar5 = *pcVar9;\n              goto LAB_0002467c;\n            }\n            break;\n          }\n          iVar3 = FUN_000227d8();\n        }" { (expression_statement "iVar3 = FUN_000236cc(param_2);" (assignment_expression "iVar3 = FUN_000236cc(param_2)" identifier = (call_expression "FUN_000236cc(param_2)" identifier (argument_list "(param_2)" ( identifier )))) ;) (if_statement "if (iVar3 != 0) break;" if (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar8 = iVar8 + 1;" (assignment_expression "iVar8 = iVar8 + 1" identifier = (binary_expression "iVar8 + 1" identifier + number_literal)) ;) (if_statement "if (*pcVar9 != '#') {\n            if (*pcVar9 == '!') goto LAB_00024664;\n            iVar3 = FUN_00022170(PTR_UINT_0012a18c + 0xf0);\n            if (iVar3 == 0) {\n              cVar5 = *pcVar9;\n              goto LAB_0002467c;\n            }\n            break;\n          }" if (parenthesized_expression "(*pcVar9 != '#')" ( (binary_expression "*pcVar9 != '#'" (pointer_expression "*pcVar9" * identifier) != (char_literal "'#'" ' character ')) )) (compound_statement "{\n            if (*pcVar9 == '!') goto LAB_00024664;\n            iVar3 = FUN_00022170(PTR_UINT_0012a18c + 0xf0);\n            if (iVar3 == 0) {\n              cVar5 = *pcVar9;\n              goto LAB_0002467c;\n            }\n            break;\n          }" { (if_statement "if (*pcVar9 == '!') goto LAB_00024664;" if (parenthesized_expression "(*pcVar9 == '!')" ( (binary_expression "*pcVar9 == '!'" (pointer_expression "*pcVar9" * identifier) == (char_literal "'!'" ' character ')) )) (goto_statement "goto LAB_00024664;" goto statement_identifier ;)) (expression_statement "iVar3 = FUN_00022170(PTR_UINT_0012a18c + 0xf0);" (assignment_expression "iVar3 = FUN_00022170(PTR_UINT_0012a18c + 0xf0)" identifier = (call_expression "FUN_00022170(PTR_UINT_0012a18c + 0xf0)" identifier (argument_list "(PTR_UINT_0012a18c + 0xf0)" ( (binary_expression "PTR_UINT_0012a18c + 0xf0" identifier + number_literal) )))) ;) (if_statement "if (iVar3 == 0) {\n              cVar5 = *pcVar9;\n              goto LAB_0002467c;\n            }" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (compound_statement "{\n              cVar5 = *pcVar9;\n              goto LAB_0002467c;\n            }" { (expression_statement "cVar5 = *pcVar9;" (assignment_expression "cVar5 = *pcVar9" identifier = (pointer_expression "*pcVar9" * identifier)) ;) (goto_statement "goto LAB_0002467c;" goto statement_identifier ;) })) (break_statement "break;" break ;) })) (expression_statement "iVar3 = FUN_000227d8();" (assignment_expression "iVar3 = FUN_000227d8()" identifier = (call_expression "FUN_000227d8()" identifier (argument_list "()" ( )))) ;) }) while (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) ;) })) }) (else_clause "else {\nLAB_000245ec:\n      puVar6 = PTR_UINT_0012a18c + 0xf0;\nLAB_00024518:\n      iVar3 = FUN_00022170(puVar6);\n    }" else (compound_statement "{\nLAB_000245ec:\n      puVar6 = PTR_UINT_0012a18c + 0xf0;\nLAB_00024518:\n      iVar3 = FUN_00022170(puVar6);\n    }" { (labeled_statement "LAB_000245ec:\n      puVar6 = PTR_UINT_0012a18c + 0xf0;" statement_identifier : (expression_statement "puVar6 = PTR_UINT_0012a18c + 0xf0;" (assignment_expression "puVar6 = PTR_UINT_0012a18c + 0xf0" identifier = (binary_expression "PTR_UINT_0012a18c + 0xf0" identifier + number_literal)) ;)) (labeled_statement "LAB_00024518:\n      iVar3 = FUN_00022170(puVar6);" statement_identifier : (expression_statement "iVar3 = FUN_00022170(puVar6);" (assignment_expression "iVar3 = FUN_00022170(puVar6)" identifier = (call_expression "FUN_00022170(puVar6)" identifier (argument_list "(puVar6)" ( identifier )))) ;)) })))) (labeled_statement "LAB_00024530:\n    (*(code *)PTR_free_0012b168)(uVar2);" statement_identifier : (expression_statement "(*(code *)PTR_free_0012b168)(uVar2);" (call_expression "(*(code *)PTR_free_0012b168)(uVar2)" (parenthesized_expression "(*(code *)PTR_free_0012b168)" ( (pointer_expression "*(code *)PTR_free_0012b168" * (cast_expression "(code *)PTR_free_0012b168" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(uVar2)" ( identifier ))) ;)) }) while (parenthesized_expression "( true )" ( true )) ;)) })))
(translation_unit "/* WARNING: Enum "BcLexType": Some values do not have unique names */\n\nBcStatus zbc_parse_name(BcInst *type,uint8_t flags)\n\n{\n  undefined *puVar1;\n  int iVar2;\n  char *name;\n  BcStatus BVar3;\n  undefined1 uVar4;\n  char cVar5;\n  char *msg;\n  BcVec *v;\n  size_t sVar6;\n  char *pcVar7;\n  undefined *puVar8;\n  BcId entry;\n  \n  puVar1 = PTR___stack_chk_guard_0012b14c;\n  puVar8 = (undefined *)(uint)flags;\n  pcVar7 = *(char **)PTR_ptr_to_globals_0012a304;\n  iVar2 = *(int *)PTR___stack_chk_guard_0012b14c;\n  name = xstrdup(*(char **)(pcVar7 + 0x18));\n  BVar3 = zxc_lex_next();\n  if (BVar3 != BC_STATUS_SUCCESS) goto LAB_00024530;\n  if (*pcVar7 == '\"') {\n    BVar3 = zxc_lex_next();\n    if (BVar3 != BC_STATUS_SUCCESS) goto LAB_00024530;\n    if (*pcVar7 == '$') {\n      puVar8 = (undefined *)0x0;\n      if ((flags & 4) == 0) {\n        msg = PTR_UINT_0012a18c + 0xfc;\n        goto LAB_00024518;\n      }\n      *type = XC_INST_ARRAY;\n      BVar3 = zxc_lex_next();\n    }\n    else {\n      *type = XC_INST_ARRAY_ELEM;\n      BVar3 = zbc_parse_expr(flags & 0xfc);\n      if (BVar3 != BC_STATUS_SUCCESS) goto LAB_00024530;\n      BVar3 = zxc_lex_next();\n    }\n    if (BVar3 != BC_STATUS_SUCCESS) goto LAB_00024530;\n    v = *(BcVec **)(pcVar7 + 0x2c);\n    uVar4 = (undefined1)*type;\n  }\n  else {\n    uVar4 = 0x1c;\n    if (*pcVar7 == ' ') goto LAB_000245e0;\n    v = *(BcVec **)(pcVar7 + 0x2c);\n    *type = XC_INST_VAR;\n  }\n  entry.name = (char *)CONCAT13(uVar4,entry.name._1_3_);\n  bc_vec_npush(v,1,&entry);\n  xc_parse_pushName(name);\n  (*(code *)PTR_free_0012b168)(name);\nLAB_00024598:\n  do {\n    if (iVar2 == *(int *)puVar1) {\n      return BVar3;\n    }\n    (*(code *)PTR___stack_chk_fail_0012b0c8)();\nLAB_000245e0:\n    if (((uint)puVar8 & 8) == 0) {\n      ((BcVec *)type)->v = (char *)0x2e;\n      entry.name = name;\n      BVar3 = zxc_lex_next();\n      if (BVar3 == BC_STATUS_SUCCESS) {\n        sVar6 = 0;\n        if (*pcVar7 == '!') {\nLAB_00024664:\n          xc_parse_pushInst_and_Index(0x2e,sVar6);\n          cVar5 = *pcVar7;\nLAB_0002467c:\n          if (cVar5 != '!') goto LAB_000245ec;\n          type = (BcInst *)(pcVar7 + 0xe0);\n          puVar8 = PTR_LAB_0012a258 + -0x5b4;\n          sVar6 = bc_map_find_exact((BcVec *)type,&entry);\n          if (sVar6 == 0xffffffff) {\n            bc_program_addFunc(name);\n            sVar6 = bc_map_find_exact((BcVec *)type,&entry);\n          }\n          else {\n            (*(code *)PTR_free_0012b168)(name);\n          }\n          bc_vec_pushIndex(*(BcVec **)(pcVar7 + 0x2c),\n                           *(size_t *)\n                            (sVar6 * *(int *)(pcVar7 + 0xec) + *(int *)(pcVar7 + 0xe0) + 4));\n          BVar3 = zxc_lex_next();\n          goto LAB_00024598;\n        }\n        puVar8 = (undefined *)((uint)puVar8 & 0xf8 | 4);\n        type = (BcInst *)(PTR_LAB_0012a258 + 0x36cc);\n        sVar6 = 0;\n        do {\n          BVar3 = zbc_parse_expr((uint8_t)puVar8);\n          if (BVar3 != BC_STATUS_SUCCESS) break;\n          sVar6 = sVar6 + 1;\n          if (*pcVar7 != '#') {\n            if (*pcVar7 == '!') goto LAB_00024664;\n            BVar3 = bc_error_at(PTR_UINT_0012a18c + 0xf0);\n            if (BVar3 == BC_STATUS_SUCCESS) {\n              cVar5 = *pcVar7;\n              goto LAB_0002467c;\n            }\n            break;\n          }\n          BVar3 = zxc_lex_next();\n        } while (BVar3 == BC_STATUS_SUCCESS);\n      }\n    }\n    else {\nLAB_000245ec:\n      msg = PTR_UINT_0012a18c + 0xf0;\nLAB_00024518:\n      BVar3 = bc_error_at(msg);\n    }\nLAB_00024530:\n    (*(code *)PTR_free_0012b168)(name);\n  } while( true );\n}\n\n" comment (function_definition "BcStatus zbc_parse_name(BcInst *type,uint8_t flags)\n\n{\n  undefined *puVar1;\n  int iVar2;\n  char *name;\n  BcStatus BVar3;\n  undefined1 uVar4;\n  char cVar5;\n  char *msg;\n  BcVec *v;\n  size_t sVar6;\n  char *pcVar7;\n  undefined *puVar8;\n  BcId entry;\n  \n  puVar1 = PTR___stack_chk_guard_0012b14c;\n  puVar8 = (undefined *)(uint)flags;\n  pcVar7 = *(char **)PTR_ptr_to_globals_0012a304;\n  iVar2 = *(int *)PTR___stack_chk_guard_0012b14c;\n  name = xstrdup(*(char **)(pcVar7 + 0x18));\n  BVar3 = zxc_lex_next();\n  if (BVar3 != BC_STATUS_SUCCESS) goto LAB_00024530;\n  if (*pcVar7 == '\"') {\n    BVar3 = zxc_lex_next();\n    if (BVar3 != BC_STATUS_SUCCESS) goto LAB_00024530;\n    if (*pcVar7 == '$') {\n      puVar8 = (undefined *)0x0;\n      if ((flags & 4) == 0) {\n        msg = PTR_UINT_0012a18c + 0xfc;\n        goto LAB_00024518;\n      }\n      *type = XC_INST_ARRAY;\n      BVar3 = zxc_lex_next();\n    }\n    else {\n      *type = XC_INST_ARRAY_ELEM;\n      BVar3 = zbc_parse_expr(flags & 0xfc);\n      if (BVar3 != BC_STATUS_SUCCESS) goto LAB_00024530;\n      BVar3 = zxc_lex_next();\n    }\n    if (BVar3 != BC_STATUS_SUCCESS) goto LAB_00024530;\n    v = *(BcVec **)(pcVar7 + 0x2c);\n    uVar4 = (undefined1)*type;\n  }\n  else {\n    uVar4 = 0x1c;\n    if (*pcVar7 == ' ') goto LAB_000245e0;\n    v = *(BcVec **)(pcVar7 + 0x2c);\n    *type = XC_INST_VAR;\n  }\n  entry.name = (char *)CONCAT13(uVar4,entry.name._1_3_);\n  bc_vec_npush(v,1,&entry);\n  xc_parse_pushName(name);\n  (*(code *)PTR_free_0012b168)(name);\nLAB_00024598:\n  do {\n    if (iVar2 == *(int *)puVar1) {\n      return BVar3;\n    }\n    (*(code *)PTR___stack_chk_fail_0012b0c8)();\nLAB_000245e0:\n    if (((uint)puVar8 & 8) == 0) {\n      ((BcVec *)type)->v = (char *)0x2e;\n      entry.name = name;\n      BVar3 = zxc_lex_next();\n      if (BVar3 == BC_STATUS_SUCCESS) {\n        sVar6 = 0;\n        if (*pcVar7 == '!') {\nLAB_00024664:\n          xc_parse_pushInst_and_Index(0x2e,sVar6);\n          cVar5 = *pcVar7;\nLAB_0002467c:\n          if (cVar5 != '!') goto LAB_000245ec;\n          type = (BcInst *)(pcVar7 + 0xe0);\n          puVar8 = PTR_LAB_0012a258 + -0x5b4;\n          sVar6 = bc_map_find_exact((BcVec *)type,&entry);\n          if (sVar6 == 0xffffffff) {\n            bc_program_addFunc(name);\n            sVar6 = bc_map_find_exact((BcVec *)type,&entry);\n          }\n          else {\n            (*(code *)PTR_free_0012b168)(name);\n          }\n          bc_vec_pushIndex(*(BcVec **)(pcVar7 + 0x2c),\n                           *(size_t *)\n                            (sVar6 * *(int *)(pcVar7 + 0xec) + *(int *)(pcVar7 + 0xe0) + 4));\n          BVar3 = zxc_lex_next();\n          goto LAB_00024598;\n        }\n        puVar8 = (undefined *)((uint)puVar8 & 0xf8 | 4);\n        type = (BcInst *)(PTR_LAB_0012a258 + 0x36cc);\n        sVar6 = 0;\n        do {\n          BVar3 = zbc_parse_expr((uint8_t)puVar8);\n          if (BVar3 != BC_STATUS_SUCCESS) break;\n          sVar6 = sVar6 + 1;\n          if (*pcVar7 != '#') {\n            if (*pcVar7 == '!') goto LAB_00024664;\n            BVar3 = bc_error_at(PTR_UINT_0012a18c + 0xf0);\n            if (BVar3 == BC_STATUS_SUCCESS) {\n              cVar5 = *pcVar7;\n              goto LAB_0002467c;\n            }\n            break;\n          }\n          BVar3 = zxc_lex_next();\n        } while (BVar3 == BC_STATUS_SUCCESS);\n      }\n    }\n    else {\nLAB_000245ec:\n      msg = PTR_UINT_0012a18c + 0xf0;\nLAB_00024518:\n      BVar3 = bc_error_at(msg);\n    }\nLAB_00024530:\n    (*(code *)PTR_free_0012b168)(name);\n  } while( true );\n}" type_identifier (function_declarator "zbc_parse_name(BcInst *type,uint8_t flags)" identifier (parameter_list "(BcInst *type,uint8_t flags)" ( (parameter_declaration "BcInst *type" type_identifier (pointer_declarator "*type" * identifier)) , (parameter_declaration "uint8_t flags" primitive_type identifier) ))) (compound_statement "{\n  undefined *puVar1;\n  int iVar2;\n  char *name;\n  BcStatus BVar3;\n  undefined1 uVar4;\n  char cVar5;\n  char *msg;\n  BcVec *v;\n  size_t sVar6;\n  char *pcVar7;\n  undefined *puVar8;\n  BcId entry;\n  \n  puVar1 = PTR___stack_chk_guard_0012b14c;\n  puVar8 = (undefined *)(uint)flags;\n  pcVar7 = *(char **)PTR_ptr_to_globals_0012a304;\n  iVar2 = *(int *)PTR___stack_chk_guard_0012b14c;\n  name = xstrdup(*(char **)(pcVar7 + 0x18));\n  BVar3 = zxc_lex_next();\n  if (BVar3 != BC_STATUS_SUCCESS) goto LAB_00024530;\n  if (*pcVar7 == '\"') {\n    BVar3 = zxc_lex_next();\n    if (BVar3 != BC_STATUS_SUCCESS) goto LAB_00024530;\n    if (*pcVar7 == '$') {\n      puVar8 = (undefined *)0x0;\n      if ((flags & 4) == 0) {\n        msg = PTR_UINT_0012a18c + 0xfc;\n        goto LAB_00024518;\n      }\n      *type = XC_INST_ARRAY;\n      BVar3 = zxc_lex_next();\n    }\n    else {\n      *type = XC_INST_ARRAY_ELEM;\n      BVar3 = zbc_parse_expr(flags & 0xfc);\n      if (BVar3 != BC_STATUS_SUCCESS) goto LAB_00024530;\n      BVar3 = zxc_lex_next();\n    }\n    if (BVar3 != BC_STATUS_SUCCESS) goto LAB_00024530;\n    v = *(BcVec **)(pcVar7 + 0x2c);\n    uVar4 = (undefined1)*type;\n  }\n  else {\n    uVar4 = 0x1c;\n    if (*pcVar7 == ' ') goto LAB_000245e0;\n    v = *(BcVec **)(pcVar7 + 0x2c);\n    *type = XC_INST_VAR;\n  }\n  entry.name = (char *)CONCAT13(uVar4,entry.name._1_3_);\n  bc_vec_npush(v,1,&entry);\n  xc_parse_pushName(name);\n  (*(code *)PTR_free_0012b168)(name);\nLAB_00024598:\n  do {\n    if (iVar2 == *(int *)puVar1) {\n      return BVar3;\n    }\n    (*(code *)PTR___stack_chk_fail_0012b0c8)();\nLAB_000245e0:\n    if (((uint)puVar8 & 8) == 0) {\n      ((BcVec *)type)->v = (char *)0x2e;\n      entry.name = name;\n      BVar3 = zxc_lex_next();\n      if (BVar3 == BC_STATUS_SUCCESS) {\n        sVar6 = 0;\n        if (*pcVar7 == '!') {\nLAB_00024664:\n          xc_parse_pushInst_and_Index(0x2e,sVar6);\n          cVar5 = *pcVar7;\nLAB_0002467c:\n          if (cVar5 != '!') goto LAB_000245ec;\n          type = (BcInst *)(pcVar7 + 0xe0);\n          puVar8 = PTR_LAB_0012a258 + -0x5b4;\n          sVar6 = bc_map_find_exact((BcVec *)type,&entry);\n          if (sVar6 == 0xffffffff) {\n            bc_program_addFunc(name);\n            sVar6 = bc_map_find_exact((BcVec *)type,&entry);\n          }\n          else {\n            (*(code *)PTR_free_0012b168)(name);\n          }\n          bc_vec_pushIndex(*(BcVec **)(pcVar7 + 0x2c),\n                           *(size_t *)\n                            (sVar6 * *(int *)(pcVar7 + 0xec) + *(int *)(pcVar7 + 0xe0) + 4));\n          BVar3 = zxc_lex_next();\n          goto LAB_00024598;\n        }\n        puVar8 = (undefined *)((uint)puVar8 & 0xf8 | 4);\n        type = (BcInst *)(PTR_LAB_0012a258 + 0x36cc);\n        sVar6 = 0;\n        do {\n          BVar3 = zbc_parse_expr((uint8_t)puVar8);\n          if (BVar3 != BC_STATUS_SUCCESS) break;\n          sVar6 = sVar6 + 1;\n          if (*pcVar7 != '#') {\n            if (*pcVar7 == '!') goto LAB_00024664;\n            BVar3 = bc_error_at(PTR_UINT_0012a18c + 0xf0);\n            if (BVar3 == BC_STATUS_SUCCESS) {\n              cVar5 = *pcVar7;\n              goto LAB_0002467c;\n            }\n            break;\n          }\n          BVar3 = zxc_lex_next();\n        } while (BVar3 == BC_STATUS_SUCCESS);\n      }\n    }\n    else {\nLAB_000245ec:\n      msg = PTR_UINT_0012a18c + 0xf0;\nLAB_00024518:\n      BVar3 = bc_error_at(msg);\n    }\nLAB_00024530:\n    (*(code *)PTR_free_0012b168)(name);\n  } while( true );\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "char *name;" primitive_type (pointer_declarator "*name" * identifier) ;) (declaration "BcStatus BVar3;" type_identifier identifier ;) (declaration "undefined1 uVar4;" type_identifier identifier ;) (declaration "char cVar5;" primitive_type identifier ;) (declaration "char *msg;" primitive_type (pointer_declarator "*msg" * identifier) ;) (declaration "BcVec *v;" type_identifier (pointer_declarator "*v" * identifier) ;) (declaration "size_t sVar6;" primitive_type identifier ;) (declaration "char *pcVar7;" primitive_type (pointer_declarator "*pcVar7" * identifier) ;) (declaration "undefined *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "BcId entry;" type_identifier identifier ;) (expression_statement "puVar1 = PTR___stack_chk_guard_0012b14c;" (assignment_expression "puVar1 = PTR___stack_chk_guard_0012b14c" identifier = identifier) ;) (expression_statement "puVar8 = (undefined *)(uint)flags;" (assignment_expression "puVar8 = (undefined *)(uint)flags" identifier = (cast_expression "(undefined *)(uint)flags" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) (cast_expression "(uint)flags" ( (type_descriptor "uint" type_identifier) ) identifier))) ;) (expression_statement "pcVar7 = *(char **)PTR_ptr_to_globals_0012a304;" (assignment_expression "pcVar7 = *(char **)PTR_ptr_to_globals_0012a304" identifier = (pointer_expression "*(char **)PTR_ptr_to_globals_0012a304" * (cast_expression "(char **)PTR_ptr_to_globals_0012a304" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) (expression_statement "iVar2 = *(int *)PTR___stack_chk_guard_0012b14c;" (assignment_expression "iVar2 = *(int *)PTR___stack_chk_guard_0012b14c" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_0012b14c" * (cast_expression "(int *)PTR___stack_chk_guard_0012b14c" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "name = xstrdup(*(char **)(pcVar7 + 0x18));" (assignment_expression "name = xstrdup(*(char **)(pcVar7 + 0x18))" identifier = (call_expression "xstrdup(*(char **)(pcVar7 + 0x18))" identifier (argument_list "(*(char **)(pcVar7 + 0x18))" ( (pointer_expression "*(char **)(pcVar7 + 0x18)" * (cast_expression "(char **)(pcVar7 + 0x18)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar7 + 0x18)" ( (binary_expression "pcVar7 + 0x18" identifier + number_literal) )))) )))) ;) (expression_statement "BVar3 = zxc_lex_next();" (assignment_expression "BVar3 = zxc_lex_next()" identifier = (call_expression "zxc_lex_next()" identifier (argument_list "()" ( )))) ;) (if_statement "if (BVar3 != BC_STATUS_SUCCESS) goto LAB_00024530;" if (parenthesized_expression "(BVar3 != BC_STATUS_SUCCESS)" ( (binary_expression "BVar3 != BC_STATUS_SUCCESS" identifier != identifier) )) (goto_statement "goto LAB_00024530;" goto statement_identifier ;)) (if_statement "if (*pcVar7 == '\"') {\n    BVar3 = zxc_lex_next();\n    if (BVar3 != BC_STATUS_SUCCESS) goto LAB_00024530;\n    if (*pcVar7 == '$') {\n      puVar8 = (undefined *)0x0;\n      if ((flags & 4) == 0) {\n        msg = PTR_UINT_0012a18c + 0xfc;\n        goto LAB_00024518;\n      }\n      *type = XC_INST_ARRAY;\n      BVar3 = zxc_lex_next();\n    }\n    else {\n      *type = XC_INST_ARRAY_ELEM;\n      BVar3 = zbc_parse_expr(flags & 0xfc);\n      if (BVar3 != BC_STATUS_SUCCESS) goto LAB_00024530;\n      BVar3 = zxc_lex_next();\n    }\n    if (BVar3 != BC_STATUS_SUCCESS) goto LAB_00024530;\n    v = *(BcVec **)(pcVar7 + 0x2c);\n    uVar4 = (undefined1)*type;\n  }\n  else {\n    uVar4 = 0x1c;\n    if (*pcVar7 == ' ') goto LAB_000245e0;\n    v = *(BcVec **)(pcVar7 + 0x2c);\n    *type = XC_INST_VAR;\n  }" if (parenthesized_expression "(*pcVar7 == '\"')" ( (binary_expression "*pcVar7 == '\"'" (pointer_expression "*pcVar7" * identifier) == (char_literal "'\"'" ' escape_sequence ')) )) (compound_statement "{\n    BVar3 = zxc_lex_next();\n    if (BVar3 != BC_STATUS_SUCCESS) goto LAB_00024530;\n    if (*pcVar7 == '$') {\n      puVar8 = (undefined *)0x0;\n      if ((flags & 4) == 0) {\n        msg = PTR_UINT_0012a18c + 0xfc;\n        goto LAB_00024518;\n      }\n      *type = XC_INST_ARRAY;\n      BVar3 = zxc_lex_next();\n    }\n    else {\n      *type = XC_INST_ARRAY_ELEM;\n      BVar3 = zbc_parse_expr(flags & 0xfc);\n      if (BVar3 != BC_STATUS_SUCCESS) goto LAB_00024530;\n      BVar3 = zxc_lex_next();\n    }\n    if (BVar3 != BC_STATUS_SUCCESS) goto LAB_00024530;\n    v = *(BcVec **)(pcVar7 + 0x2c);\n    uVar4 = (undefined1)*type;\n  }" { (expression_statement "BVar3 = zxc_lex_next();" (assignment_expression "BVar3 = zxc_lex_next()" identifier = (call_expression "zxc_lex_next()" identifier (argument_list "()" ( )))) ;) (if_statement "if (BVar3 != BC_STATUS_SUCCESS) goto LAB_00024530;" if (parenthesized_expression "(BVar3 != BC_STATUS_SUCCESS)" ( (binary_expression "BVar3 != BC_STATUS_SUCCESS" identifier != identifier) )) (goto_statement "goto LAB_00024530;" goto statement_identifier ;)) (if_statement "if (*pcVar7 == '$') {\n      puVar8 = (undefined *)0x0;\n      if ((flags & 4) == 0) {\n        msg = PTR_UINT_0012a18c + 0xfc;\n        goto LAB_00024518;\n      }\n      *type = XC_INST_ARRAY;\n      BVar3 = zxc_lex_next();\n    }\n    else {\n      *type = XC_INST_ARRAY_ELEM;\n      BVar3 = zbc_parse_expr(flags & 0xfc);\n      if (BVar3 != BC_STATUS_SUCCESS) goto LAB_00024530;\n      BVar3 = zxc_lex_next();\n    }" if (parenthesized_expression "(*pcVar7 == '$')" ( (binary_expression "*pcVar7 == '$'" (pointer_expression "*pcVar7" * identifier) == (char_literal "'$'" ' character ')) )) (compound_statement "{\n      puVar8 = (undefined *)0x0;\n      if ((flags & 4) == 0) {\n        msg = PTR_UINT_0012a18c + 0xfc;\n        goto LAB_00024518;\n      }\n      *type = XC_INST_ARRAY;\n      BVar3 = zxc_lex_next();\n    }" { (expression_statement "puVar8 = (undefined *)0x0;" (assignment_expression "puVar8 = (undefined *)0x0" identifier = (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if ((flags & 4) == 0) {\n        msg = PTR_UINT_0012a18c + 0xfc;\n        goto LAB_00024518;\n      }" if (parenthesized_expression "((flags & 4) == 0)" ( (binary_expression "(flags & 4) == 0" (parenthesized_expression "(flags & 4)" ( (binary_expression "flags & 4" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n        msg = PTR_UINT_0012a18c + 0xfc;\n        goto LAB_00024518;\n      }" { (expression_statement "msg = PTR_UINT_0012a18c + 0xfc;" (assignment_expression "msg = PTR_UINT_0012a18c + 0xfc" identifier = (binary_expression "PTR_UINT_0012a18c + 0xfc" identifier + number_literal)) ;) (goto_statement "goto LAB_00024518;" goto statement_identifier ;) })) (expression_statement "*type = XC_INST_ARRAY;" (assignment_expression "*type = XC_INST_ARRAY" (pointer_expression "*type" * identifier) = identifier) ;) (expression_statement "BVar3 = zxc_lex_next();" (assignment_expression "BVar3 = zxc_lex_next()" identifier = (call_expression "zxc_lex_next()" identifier (argument_list "()" ( )))) ;) }) (else_clause "else {\n      *type = XC_INST_ARRAY_ELEM;\n      BVar3 = zbc_parse_expr(flags & 0xfc);\n      if (BVar3 != BC_STATUS_SUCCESS) goto LAB_00024530;\n      BVar3 = zxc_lex_next();\n    }" else (compound_statement "{\n      *type = XC_INST_ARRAY_ELEM;\n      BVar3 = zbc_parse_expr(flags & 0xfc);\n      if (BVar3 != BC_STATUS_SUCCESS) goto LAB_00024530;\n      BVar3 = zxc_lex_next();\n    }" { (expression_statement "*type = XC_INST_ARRAY_ELEM;" (assignment_expression "*type = XC_INST_ARRAY_ELEM" (pointer_expression "*type" * identifier) = identifier) ;) (expression_statement "BVar3 = zbc_parse_expr(flags & 0xfc);" (assignment_expression "BVar3 = zbc_parse_expr(flags & 0xfc)" identifier = (call_expression "zbc_parse_expr(flags & 0xfc)" identifier (argument_list "(flags & 0xfc)" ( (binary_expression "flags & 0xfc" identifier & number_literal) )))) ;) (if_statement "if (BVar3 != BC_STATUS_SUCCESS) goto LAB_00024530;" if (parenthesized_expression "(BVar3 != BC_STATUS_SUCCESS)" ( (binary_expression "BVar3 != BC_STATUS_SUCCESS" identifier != identifier) )) (goto_statement "goto LAB_00024530;" goto statement_identifier ;)) (expression_statement "BVar3 = zxc_lex_next();" (assignment_expression "BVar3 = zxc_lex_next()" identifier = (call_expression "zxc_lex_next()" identifier (argument_list "()" ( )))) ;) }))) (if_statement "if (BVar3 != BC_STATUS_SUCCESS) goto LAB_00024530;" if (parenthesized_expression "(BVar3 != BC_STATUS_SUCCESS)" ( (binary_expression "BVar3 != BC_STATUS_SUCCESS" identifier != identifier) )) (goto_statement "goto LAB_00024530;" goto statement_identifier ;)) (expression_statement "v = *(BcVec **)(pcVar7 + 0x2c);" (assignment_expression "v = *(BcVec **)(pcVar7 + 0x2c)" identifier = (pointer_expression "*(BcVec **)(pcVar7 + 0x2c)" * (cast_expression "(BcVec **)(pcVar7 + 0x2c)" ( (type_descriptor "BcVec **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar7 + 0x2c)" ( (binary_expression "pcVar7 + 0x2c" identifier + number_literal) ))))) ;) (expression_statement "uVar4 = (undefined1)*type;" (assignment_expression "uVar4 = (undefined1)*type" identifier = (binary_expression "(undefined1)*type" (parenthesized_expression "(undefined1)" ( identifier )) * identifier)) ;) }) (else_clause "else {\n    uVar4 = 0x1c;\n    if (*pcVar7 == ' ') goto LAB_000245e0;\n    v = *(BcVec **)(pcVar7 + 0x2c);\n    *type = XC_INST_VAR;\n  }" else (compound_statement "{\n    uVar4 = 0x1c;\n    if (*pcVar7 == ' ') goto LAB_000245e0;\n    v = *(BcVec **)(pcVar7 + 0x2c);\n    *type = XC_INST_VAR;\n  }" { (expression_statement "uVar4 = 0x1c;" (assignment_expression "uVar4 = 0x1c" identifier = number_literal) ;) (if_statement "if (*pcVar7 == ' ') goto LAB_000245e0;" if (parenthesized_expression "(*pcVar7 == ' ')" ( (binary_expression "*pcVar7 == ' '" (pointer_expression "*pcVar7" * identifier) == (char_literal "' '" ' character ')) )) (goto_statement "goto LAB_000245e0;" goto statement_identifier ;)) (expression_statement "v = *(BcVec **)(pcVar7 + 0x2c);" (assignment_expression "v = *(BcVec **)(pcVar7 + 0x2c)" identifier = (pointer_expression "*(BcVec **)(pcVar7 + 0x2c)" * (cast_expression "(BcVec **)(pcVar7 + 0x2c)" ( (type_descriptor "BcVec **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar7 + 0x2c)" ( (binary_expression "pcVar7 + 0x2c" identifier + number_literal) ))))) ;) (expression_statement "*type = XC_INST_VAR;" (assignment_expression "*type = XC_INST_VAR" (pointer_expression "*type" * identifier) = identifier) ;) }))) (expression_statement "entry.name = (char *)CONCAT13(uVar4,entry.name._1_3_);" (assignment_expression "entry.name = (char *)CONCAT13(uVar4,entry.name._1_3_)" (field_expression "entry.name" identifier . field_identifier) = (cast_expression "(char *)CONCAT13(uVar4,entry.name._1_3_)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "CONCAT13(uVar4,entry.name._1_3_)" identifier (argument_list "(uVar4,entry.name._1_3_)" ( identifier , (field_expression "entry.name._1_3_" (field_expression "entry.name" identifier . field_identifier) . field_identifier) ))))) ;) (expression_statement "bc_vec_npush(v,1,&entry);" (call_expression "bc_vec_npush(v,1,&entry)" identifier (argument_list "(v,1,&entry)" ( identifier , number_literal , (pointer_expression "&entry" & identifier) ))) ;) (expression_statement "xc_parse_pushName(name);" (call_expression "xc_parse_pushName(name)" identifier (argument_list "(name)" ( identifier ))) ;) (expression_statement "(*(code *)PTR_free_0012b168)(name);" (call_expression "(*(code *)PTR_free_0012b168)(name)" (parenthesized_expression "(*(code *)PTR_free_0012b168)" ( (pointer_expression "*(code *)PTR_free_0012b168" * (cast_expression "(code *)PTR_free_0012b168" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(name)" ( identifier ))) ;) (labeled_statement "LAB_00024598:\n  do {\n    if (iVar2 == *(int *)puVar1) {\n      return BVar3;\n    }\n    (*(code *)PTR___stack_chk_fail_0012b0c8)();\nLAB_000245e0:\n    if (((uint)puVar8 & 8) == 0) {\n      ((BcVec *)type)->v = (char *)0x2e;\n      entry.name = name;\n      BVar3 = zxc_lex_next();\n      if (BVar3 == BC_STATUS_SUCCESS) {\n        sVar6 = 0;\n        if (*pcVar7 == '!') {\nLAB_00024664:\n          xc_parse_pushInst_and_Index(0x2e,sVar6);\n          cVar5 = *pcVar7;\nLAB_0002467c:\n          if (cVar5 != '!') goto LAB_000245ec;\n          type = (BcInst *)(pcVar7 + 0xe0);\n          puVar8 = PTR_LAB_0012a258 + -0x5b4;\n          sVar6 = bc_map_find_exact((BcVec *)type,&entry);\n          if (sVar6 == 0xffffffff) {\n            bc_program_addFunc(name);\n            sVar6 = bc_map_find_exact((BcVec *)type,&entry);\n          }\n          else {\n            (*(code *)PTR_free_0012b168)(name);\n          }\n          bc_vec_pushIndex(*(BcVec **)(pcVar7 + 0x2c),\n                           *(size_t *)\n                            (sVar6 * *(int *)(pcVar7 + 0xec) + *(int *)(pcVar7 + 0xe0) + 4));\n          BVar3 = zxc_lex_next();\n          goto LAB_00024598;\n        }\n        puVar8 = (undefined *)((uint)puVar8 & 0xf8 | 4);\n        type = (BcInst *)(PTR_LAB_0012a258 + 0x36cc);\n        sVar6 = 0;\n        do {\n          BVar3 = zbc_parse_expr((uint8_t)puVar8);\n          if (BVar3 != BC_STATUS_SUCCESS) break;\n          sVar6 = sVar6 + 1;\n          if (*pcVar7 != '#') {\n            if (*pcVar7 == '!') goto LAB_00024664;\n            BVar3 = bc_error_at(PTR_UINT_0012a18c + 0xf0);\n            if (BVar3 == BC_STATUS_SUCCESS) {\n              cVar5 = *pcVar7;\n              goto LAB_0002467c;\n            }\n            break;\n          }\n          BVar3 = zxc_lex_next();\n        } while (BVar3 == BC_STATUS_SUCCESS);\n      }\n    }\n    else {\nLAB_000245ec:\n      msg = PTR_UINT_0012a18c + 0xf0;\nLAB_00024518:\n      BVar3 = bc_error_at(msg);\n    }\nLAB_00024530:\n    (*(code *)PTR_free_0012b168)(name);\n  } while( true );" statement_identifier : (do_statement "do {\n    if (iVar2 == *(int *)puVar1) {\n      return BVar3;\n    }\n    (*(code *)PTR___stack_chk_fail_0012b0c8)();\nLAB_000245e0:\n    if (((uint)puVar8 & 8) == 0) {\n      ((BcVec *)type)->v = (char *)0x2e;\n      entry.name = name;\n      BVar3 = zxc_lex_next();\n      if (BVar3 == BC_STATUS_SUCCESS) {\n        sVar6 = 0;\n        if (*pcVar7 == '!') {\nLAB_00024664:\n          xc_parse_pushInst_and_Index(0x2e,sVar6);\n          cVar5 = *pcVar7;\nLAB_0002467c:\n          if (cVar5 != '!') goto LAB_000245ec;\n          type = (BcInst *)(pcVar7 + 0xe0);\n          puVar8 = PTR_LAB_0012a258 + -0x5b4;\n          sVar6 = bc_map_find_exact((BcVec *)type,&entry);\n          if (sVar6 == 0xffffffff) {\n            bc_program_addFunc(name);\n            sVar6 = bc_map_find_exact((BcVec *)type,&entry);\n          }\n          else {\n            (*(code *)PTR_free_0012b168)(name);\n          }\n          bc_vec_pushIndex(*(BcVec **)(pcVar7 + 0x2c),\n                           *(size_t *)\n                            (sVar6 * *(int *)(pcVar7 + 0xec) + *(int *)(pcVar7 + 0xe0) + 4));\n          BVar3 = zxc_lex_next();\n          goto LAB_00024598;\n        }\n        puVar8 = (undefined *)((uint)puVar8 & 0xf8 | 4);\n        type = (BcInst *)(PTR_LAB_0012a258 + 0x36cc);\n        sVar6 = 0;\n        do {\n          BVar3 = zbc_parse_expr((uint8_t)puVar8);\n          if (BVar3 != BC_STATUS_SUCCESS) break;\n          sVar6 = sVar6 + 1;\n          if (*pcVar7 != '#') {\n            if (*pcVar7 == '!') goto LAB_00024664;\n            BVar3 = bc_error_at(PTR_UINT_0012a18c + 0xf0);\n            if (BVar3 == BC_STATUS_SUCCESS) {\n              cVar5 = *pcVar7;\n              goto LAB_0002467c;\n            }\n            break;\n          }\n          BVar3 = zxc_lex_next();\n        } while (BVar3 == BC_STATUS_SUCCESS);\n      }\n    }\n    else {\nLAB_000245ec:\n      msg = PTR_UINT_0012a18c + 0xf0;\nLAB_00024518:\n      BVar3 = bc_error_at(msg);\n    }\nLAB_00024530:\n    (*(code *)PTR_free_0012b168)(name);\n  } while( true );" do (compound_statement "{\n    if (iVar2 == *(int *)puVar1) {\n      return BVar3;\n    }\n    (*(code *)PTR___stack_chk_fail_0012b0c8)();\nLAB_000245e0:\n    if (((uint)puVar8 & 8) == 0) {\n      ((BcVec *)type)->v = (char *)0x2e;\n      entry.name = name;\n      BVar3 = zxc_lex_next();\n      if (BVar3 == BC_STATUS_SUCCESS) {\n        sVar6 = 0;\n        if (*pcVar7 == '!') {\nLAB_00024664:\n          xc_parse_pushInst_and_Index(0x2e,sVar6);\n          cVar5 = *pcVar7;\nLAB_0002467c:\n          if (cVar5 != '!') goto LAB_000245ec;\n          type = (BcInst *)(pcVar7 + 0xe0);\n          puVar8 = PTR_LAB_0012a258 + -0x5b4;\n          sVar6 = bc_map_find_exact((BcVec *)type,&entry);\n          if (sVar6 == 0xffffffff) {\n            bc_program_addFunc(name);\n            sVar6 = bc_map_find_exact((BcVec *)type,&entry);\n          }\n          else {\n            (*(code *)PTR_free_0012b168)(name);\n          }\n          bc_vec_pushIndex(*(BcVec **)(pcVar7 + 0x2c),\n                           *(size_t *)\n                            (sVar6 * *(int *)(pcVar7 + 0xec) + *(int *)(pcVar7 + 0xe0) + 4));\n          BVar3 = zxc_lex_next();\n          goto LAB_00024598;\n        }\n        puVar8 = (undefined *)((uint)puVar8 & 0xf8 | 4);\n        type = (BcInst *)(PTR_LAB_0012a258 + 0x36cc);\n        sVar6 = 0;\n        do {\n          BVar3 = zbc_parse_expr((uint8_t)puVar8);\n          if (BVar3 != BC_STATUS_SUCCESS) break;\n          sVar6 = sVar6 + 1;\n          if (*pcVar7 != '#') {\n            if (*pcVar7 == '!') goto LAB_00024664;\n            BVar3 = bc_error_at(PTR_UINT_0012a18c + 0xf0);\n            if (BVar3 == BC_STATUS_SUCCESS) {\n              cVar5 = *pcVar7;\n              goto LAB_0002467c;\n            }\n            break;\n          }\n          BVar3 = zxc_lex_next();\n        } while (BVar3 == BC_STATUS_SUCCESS);\n      }\n    }\n    else {\nLAB_000245ec:\n      msg = PTR_UINT_0012a18c + 0xf0;\nLAB_00024518:\n      BVar3 = bc_error_at(msg);\n    }\nLAB_00024530:\n    (*(code *)PTR_free_0012b168)(name);\n  }" { (if_statement "if (iVar2 == *(int *)puVar1) {\n      return BVar3;\n    }" if (parenthesized_expression "(iVar2 == *(int *)puVar1)" ( (binary_expression "iVar2 == *(int *)puVar1" identifier == (pointer_expression "*(int *)puVar1" * (cast_expression "(int *)puVar1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n      return BVar3;\n    }" { (return_statement "return BVar3;" return identifier ;) })) (expression_statement "(*(code *)PTR___stack_chk_fail_0012b0c8)();" (call_expression "(*(code *)PTR___stack_chk_fail_0012b0c8)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_0012b0c8)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_0012b0c8" * (cast_expression "(code *)PTR___stack_chk_fail_0012b0c8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (labeled_statement "LAB_000245e0:\n    if (((uint)puVar8 & 8) == 0) {\n      ((BcVec *)type)->v = (char *)0x2e;\n      entry.name = name;\n      BVar3 = zxc_lex_next();\n      if (BVar3 == BC_STATUS_SUCCESS) {\n        sVar6 = 0;\n        if (*pcVar7 == '!') {\nLAB_00024664:\n          xc_parse_pushInst_and_Index(0x2e,sVar6);\n          cVar5 = *pcVar7;\nLAB_0002467c:\n          if (cVar5 != '!') goto LAB_000245ec;\n          type = (BcInst *)(pcVar7 + 0xe0);\n          puVar8 = PTR_LAB_0012a258 + -0x5b4;\n          sVar6 = bc_map_find_exact((BcVec *)type,&entry);\n          if (sVar6 == 0xffffffff) {\n            bc_program_addFunc(name);\n            sVar6 = bc_map_find_exact((BcVec *)type,&entry);\n          }\n          else {\n            (*(code *)PTR_free_0012b168)(name);\n          }\n          bc_vec_pushIndex(*(BcVec **)(pcVar7 + 0x2c),\n                           *(size_t *)\n                            (sVar6 * *(int *)(pcVar7 + 0xec) + *(int *)(pcVar7 + 0xe0) + 4));\n          BVar3 = zxc_lex_next();\n          goto LAB_00024598;\n        }\n        puVar8 = (undefined *)((uint)puVar8 & 0xf8 | 4);\n        type = (BcInst *)(PTR_LAB_0012a258 + 0x36cc);\n        sVar6 = 0;\n        do {\n          BVar3 = zbc_parse_expr((uint8_t)puVar8);\n          if (BVar3 != BC_STATUS_SUCCESS) break;\n          sVar6 = sVar6 + 1;\n          if (*pcVar7 != '#') {\n            if (*pcVar7 == '!') goto LAB_00024664;\n            BVar3 = bc_error_at(PTR_UINT_0012a18c + 0xf0);\n            if (BVar3 == BC_STATUS_SUCCESS) {\n              cVar5 = *pcVar7;\n              goto LAB_0002467c;\n            }\n            break;\n          }\n          BVar3 = zxc_lex_next();\n        } while (BVar3 == BC_STATUS_SUCCESS);\n      }\n    }\n    else {\nLAB_000245ec:\n      msg = PTR_UINT_0012a18c + 0xf0;\nLAB_00024518:\n      BVar3 = bc_error_at(msg);\n    }" statement_identifier : (if_statement "if (((uint)puVar8 & 8) == 0) {\n      ((BcVec *)type)->v = (char *)0x2e;\n      entry.name = name;\n      BVar3 = zxc_lex_next();\n      if (BVar3 == BC_STATUS_SUCCESS) {\n        sVar6 = 0;\n        if (*pcVar7 == '!') {\nLAB_00024664:\n          xc_parse_pushInst_and_Index(0x2e,sVar6);\n          cVar5 = *pcVar7;\nLAB_0002467c:\n          if (cVar5 != '!') goto LAB_000245ec;\n          type = (BcInst *)(pcVar7 + 0xe0);\n          puVar8 = PTR_LAB_0012a258 + -0x5b4;\n          sVar6 = bc_map_find_exact((BcVec *)type,&entry);\n          if (sVar6 == 0xffffffff) {\n            bc_program_addFunc(name);\n            sVar6 = bc_map_find_exact((BcVec *)type,&entry);\n          }\n          else {\n            (*(code *)PTR_free_0012b168)(name);\n          }\n          bc_vec_pushIndex(*(BcVec **)(pcVar7 + 0x2c),\n                           *(size_t *)\n                            (sVar6 * *(int *)(pcVar7 + 0xec) + *(int *)(pcVar7 + 0xe0) + 4));\n          BVar3 = zxc_lex_next();\n          goto LAB_00024598;\n        }\n        puVar8 = (undefined *)((uint)puVar8 & 0xf8 | 4);\n        type = (BcInst *)(PTR_LAB_0012a258 + 0x36cc);\n        sVar6 = 0;\n        do {\n          BVar3 = zbc_parse_expr((uint8_t)puVar8);\n          if (BVar3 != BC_STATUS_SUCCESS) break;\n          sVar6 = sVar6 + 1;\n          if (*pcVar7 != '#') {\n            if (*pcVar7 == '!') goto LAB_00024664;\n            BVar3 = bc_error_at(PTR_UINT_0012a18c + 0xf0);\n            if (BVar3 == BC_STATUS_SUCCESS) {\n              cVar5 = *pcVar7;\n              goto LAB_0002467c;\n            }\n            break;\n          }\n          BVar3 = zxc_lex_next();\n        } while (BVar3 == BC_STATUS_SUCCESS);\n      }\n    }\n    else {\nLAB_000245ec:\n      msg = PTR_UINT_0012a18c + 0xf0;\nLAB_00024518:\n      BVar3 = bc_error_at(msg);\n    }" if (parenthesized_expression "(((uint)puVar8 & 8) == 0)" ( (binary_expression "((uint)puVar8 & 8) == 0" (parenthesized_expression "((uint)puVar8 & 8)" ( (binary_expression "(uint)puVar8 & 8" (cast_expression "(uint)puVar8" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n      ((BcVec *)type)->v = (char *)0x2e;\n      entry.name = name;\n      BVar3 = zxc_lex_next();\n      if (BVar3 == BC_STATUS_SUCCESS) {\n        sVar6 = 0;\n        if (*pcVar7 == '!') {\nLAB_00024664:\n          xc_parse_pushInst_and_Index(0x2e,sVar6);\n          cVar5 = *pcVar7;\nLAB_0002467c:\n          if (cVar5 != '!') goto LAB_000245ec;\n          type = (BcInst *)(pcVar7 + 0xe0);\n          puVar8 = PTR_LAB_0012a258 + -0x5b4;\n          sVar6 = bc_map_find_exact((BcVec *)type,&entry);\n          if (sVar6 == 0xffffffff) {\n            bc_program_addFunc(name);\n            sVar6 = bc_map_find_exact((BcVec *)type,&entry);\n          }\n          else {\n            (*(code *)PTR_free_0012b168)(name);\n          }\n          bc_vec_pushIndex(*(BcVec **)(pcVar7 + 0x2c),\n                           *(size_t *)\n                            (sVar6 * *(int *)(pcVar7 + 0xec) + *(int *)(pcVar7 + 0xe0) + 4));\n          BVar3 = zxc_lex_next();\n          goto LAB_00024598;\n        }\n        puVar8 = (undefined *)((uint)puVar8 & 0xf8 | 4);\n        type = (BcInst *)(PTR_LAB_0012a258 + 0x36cc);\n        sVar6 = 0;\n        do {\n          BVar3 = zbc_parse_expr((uint8_t)puVar8);\n          if (BVar3 != BC_STATUS_SUCCESS) break;\n          sVar6 = sVar6 + 1;\n          if (*pcVar7 != '#') {\n            if (*pcVar7 == '!') goto LAB_00024664;\n            BVar3 = bc_error_at(PTR_UINT_0012a18c + 0xf0);\n            if (BVar3 == BC_STATUS_SUCCESS) {\n              cVar5 = *pcVar7;\n              goto LAB_0002467c;\n            }\n            break;\n          }\n          BVar3 = zxc_lex_next();\n        } while (BVar3 == BC_STATUS_SUCCESS);\n      }\n    }" { (expression_statement "((BcVec *)type)->v = (char *)0x2e;" (assignment_expression "((BcVec *)type)->v = (char *)0x2e" (field_expression "((BcVec *)type)->v" (parenthesized_expression "((BcVec *)type)" ( (cast_expression "(BcVec *)type" ( (type_descriptor "BcVec *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) )) -> field_identifier) = (cast_expression "(char *)0x2e" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "entry.name = name;" (assignment_expression "entry.name = name" (field_expression "entry.name" identifier . field_identifier) = identifier) ;) (expression_statement "BVar3 = zxc_lex_next();" (assignment_expression "BVar3 = zxc_lex_next()" identifier = (call_expression "zxc_lex_next()" identifier (argument_list "()" ( )))) ;) (if_statement "if (BVar3 == BC_STATUS_SUCCESS) {\n        sVar6 = 0;\n        if (*pcVar7 == '!') {\nLAB_00024664:\n          xc_parse_pushInst_and_Index(0x2e,sVar6);\n          cVar5 = *pcVar7;\nLAB_0002467c:\n          if (cVar5 != '!') goto LAB_000245ec;\n          type = (BcInst *)(pcVar7 + 0xe0);\n          puVar8 = PTR_LAB_0012a258 + -0x5b4;\n          sVar6 = bc_map_find_exact((BcVec *)type,&entry);\n          if (sVar6 == 0xffffffff) {\n            bc_program_addFunc(name);\n            sVar6 = bc_map_find_exact((BcVec *)type,&entry);\n          }\n          else {\n            (*(code *)PTR_free_0012b168)(name);\n          }\n          bc_vec_pushIndex(*(BcVec **)(pcVar7 + 0x2c),\n                           *(size_t *)\n                            (sVar6 * *(int *)(pcVar7 + 0xec) + *(int *)(pcVar7 + 0xe0) + 4));\n          BVar3 = zxc_lex_next();\n          goto LAB_00024598;\n        }\n        puVar8 = (undefined *)((uint)puVar8 & 0xf8 | 4);\n        type = (BcInst *)(PTR_LAB_0012a258 + 0x36cc);\n        sVar6 = 0;\n        do {\n          BVar3 = zbc_parse_expr((uint8_t)puVar8);\n          if (BVar3 != BC_STATUS_SUCCESS) break;\n          sVar6 = sVar6 + 1;\n          if (*pcVar7 != '#') {\n            if (*pcVar7 == '!') goto LAB_00024664;\n            BVar3 = bc_error_at(PTR_UINT_0012a18c + 0xf0);\n            if (BVar3 == BC_STATUS_SUCCESS) {\n              cVar5 = *pcVar7;\n              goto LAB_0002467c;\n            }\n            break;\n          }\n          BVar3 = zxc_lex_next();\n        } while (BVar3 == BC_STATUS_SUCCESS);\n      }" if (parenthesized_expression "(BVar3 == BC_STATUS_SUCCESS)" ( (binary_expression "BVar3 == BC_STATUS_SUCCESS" identifier == identifier) )) (compound_statement "{\n        sVar6 = 0;\n        if (*pcVar7 == '!') {\nLAB_00024664:\n          xc_parse_pushInst_and_Index(0x2e,sVar6);\n          cVar5 = *pcVar7;\nLAB_0002467c:\n          if (cVar5 != '!') goto LAB_000245ec;\n          type = (BcInst *)(pcVar7 + 0xe0);\n          puVar8 = PTR_LAB_0012a258 + -0x5b4;\n          sVar6 = bc_map_find_exact((BcVec *)type,&entry);\n          if (sVar6 == 0xffffffff) {\n            bc_program_addFunc(name);\n            sVar6 = bc_map_find_exact((BcVec *)type,&entry);\n          }\n          else {\n            (*(code *)PTR_free_0012b168)(name);\n          }\n          bc_vec_pushIndex(*(BcVec **)(pcVar7 + 0x2c),\n                           *(size_t *)\n                            (sVar6 * *(int *)(pcVar7 + 0xec) + *(int *)(pcVar7 + 0xe0) + 4));\n          BVar3 = zxc_lex_next();\n          goto LAB_00024598;\n        }\n        puVar8 = (undefined *)((uint)puVar8 & 0xf8 | 4);\n        type = (BcInst *)(PTR_LAB_0012a258 + 0x36cc);\n        sVar6 = 0;\n        do {\n          BVar3 = zbc_parse_expr((uint8_t)puVar8);\n          if (BVar3 != BC_STATUS_SUCCESS) break;\n          sVar6 = sVar6 + 1;\n          if (*pcVar7 != '#') {\n            if (*pcVar7 == '!') goto LAB_00024664;\n            BVar3 = bc_error_at(PTR_UINT_0012a18c + 0xf0);\n            if (BVar3 == BC_STATUS_SUCCESS) {\n              cVar5 = *pcVar7;\n              goto LAB_0002467c;\n            }\n            break;\n          }\n          BVar3 = zxc_lex_next();\n        } while (BVar3 == BC_STATUS_SUCCESS);\n      }" { (expression_statement "sVar6 = 0;" (assignment_expression "sVar6 = 0" identifier = number_literal) ;) (if_statement "if (*pcVar7 == '!') {\nLAB_00024664:\n          xc_parse_pushInst_and_Index(0x2e,sVar6);\n          cVar5 = *pcVar7;\nLAB_0002467c:\n          if (cVar5 != '!') goto LAB_000245ec;\n          type = (BcInst *)(pcVar7 + 0xe0);\n          puVar8 = PTR_LAB_0012a258 + -0x5b4;\n          sVar6 = bc_map_find_exact((BcVec *)type,&entry);\n          if (sVar6 == 0xffffffff) {\n            bc_program_addFunc(name);\n            sVar6 = bc_map_find_exact((BcVec *)type,&entry);\n          }\n          else {\n            (*(code *)PTR_free_0012b168)(name);\n          }\n          bc_vec_pushIndex(*(BcVec **)(pcVar7 + 0x2c),\n                           *(size_t *)\n                            (sVar6 * *(int *)(pcVar7 + 0xec) + *(int *)(pcVar7 + 0xe0) + 4));\n          BVar3 = zxc_lex_next();\n          goto LAB_00024598;\n        }" if (parenthesized_expression "(*pcVar7 == '!')" ( (binary_expression "*pcVar7 == '!'" (pointer_expression "*pcVar7" * identifier) == (char_literal "'!'" ' character ')) )) (compound_statement "{\nLAB_00024664:\n          xc_parse_pushInst_and_Index(0x2e,sVar6);\n          cVar5 = *pcVar7;\nLAB_0002467c:\n          if (cVar5 != '!') goto LAB_000245ec;\n          type = (BcInst *)(pcVar7 + 0xe0);\n          puVar8 = PTR_LAB_0012a258 + -0x5b4;\n          sVar6 = bc_map_find_exact((BcVec *)type,&entry);\n          if (sVar6 == 0xffffffff) {\n            bc_program_addFunc(name);\n            sVar6 = bc_map_find_exact((BcVec *)type,&entry);\n          }\n          else {\n            (*(code *)PTR_free_0012b168)(name);\n          }\n          bc_vec_pushIndex(*(BcVec **)(pcVar7 + 0x2c),\n                           *(size_t *)\n                            (sVar6 * *(int *)(pcVar7 + 0xec) + *(int *)(pcVar7 + 0xe0) + 4));\n          BVar3 = zxc_lex_next();\n          goto LAB_00024598;\n        }" { (labeled_statement "LAB_00024664:\n          xc_parse_pushInst_and_Index(0x2e,sVar6);" statement_identifier : (expression_statement "xc_parse_pushInst_and_Index(0x2e,sVar6);" (call_expression "xc_parse_pushInst_and_Index(0x2e,sVar6)" identifier (argument_list "(0x2e,sVar6)" ( number_literal , identifier ))) ;)) (expression_statement "cVar5 = *pcVar7;" (assignment_expression "cVar5 = *pcVar7" identifier = (pointer_expression "*pcVar7" * identifier)) ;) (labeled_statement "LAB_0002467c:\n          if (cVar5 != '!') goto LAB_000245ec;" statement_identifier : (if_statement "if (cVar5 != '!') goto LAB_000245ec;" if (parenthesized_expression "(cVar5 != '!')" ( (binary_expression "cVar5 != '!'" identifier != (char_literal "'!'" ' character ')) )) (goto_statement "goto LAB_000245ec;" goto statement_identifier ;))) (expression_statement "type = (BcInst *)(pcVar7 + 0xe0);" (assignment_expression "type = (BcInst *)(pcVar7 + 0xe0)" identifier = (cast_expression "(BcInst *)(pcVar7 + 0xe0)" ( (type_descriptor "BcInst *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar7 + 0xe0)" ( (binary_expression "pcVar7 + 0xe0" identifier + number_literal) )))) ;) (expression_statement "puVar8 = PTR_LAB_0012a258 + -0x5b4;" (assignment_expression "puVar8 = PTR_LAB_0012a258 + -0x5b4" identifier = (binary_expression "PTR_LAB_0012a258 + -0x5b4" identifier + number_literal)) ;) (expression_statement "sVar6 = bc_map_find_exact((BcVec *)type,&entry);" (assignment_expression "sVar6 = bc_map_find_exact((BcVec *)type,&entry)" identifier = (call_expression "bc_map_find_exact((BcVec *)type,&entry)" identifier (argument_list "((BcVec *)type,&entry)" ( (cast_expression "(BcVec *)type" ( (type_descriptor "BcVec *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (pointer_expression "&entry" & identifier) )))) ;) (if_statement "if (sVar6 == 0xffffffff) {\n            bc_program_addFunc(name);\n            sVar6 = bc_map_find_exact((BcVec *)type,&entry);\n          }\n          else {\n            (*(code *)PTR_free_0012b168)(name);\n          }" if (parenthesized_expression "(sVar6 == 0xffffffff)" ( (binary_expression "sVar6 == 0xffffffff" identifier == number_literal) )) (compound_statement "{\n            bc_program_addFunc(name);\n            sVar6 = bc_map_find_exact((BcVec *)type,&entry);\n          }" { (expression_statement "bc_program_addFunc(name);" (call_expression "bc_program_addFunc(name)" identifier (argument_list "(name)" ( identifier ))) ;) (expression_statement "sVar6 = bc_map_find_exact((BcVec *)type,&entry);" (assignment_expression "sVar6 = bc_map_find_exact((BcVec *)type,&entry)" identifier = (call_expression "bc_map_find_exact((BcVec *)type,&entry)" identifier (argument_list "((BcVec *)type,&entry)" ( (cast_expression "(BcVec *)type" ( (type_descriptor "BcVec *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (pointer_expression "&entry" & identifier) )))) ;) }) (else_clause "else {\n            (*(code *)PTR_free_0012b168)(name);\n          }" else (compound_statement "{\n            (*(code *)PTR_free_0012b168)(name);\n          }" { (expression_statement "(*(code *)PTR_free_0012b168)(name);" (call_expression "(*(code *)PTR_free_0012b168)(name)" (parenthesized_expression "(*(code *)PTR_free_0012b168)" ( (pointer_expression "*(code *)PTR_free_0012b168" * (cast_expression "(code *)PTR_free_0012b168" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(name)" ( identifier ))) ;) }))) (expression_statement "bc_vec_pushIndex(*(BcVec **)(pcVar7 + 0x2c),\n                           *(size_t *)\n                            (sVar6 * *(int *)(pcVar7 + 0xec) + *(int *)(pcVar7 + 0xe0) + 4));" (call_expression "bc_vec_pushIndex(*(BcVec **)(pcVar7 + 0x2c),\n                           *(size_t *)\n                            (sVar6 * *(int *)(pcVar7 + 0xec) + *(int *)(pcVar7 + 0xe0) + 4))" identifier (argument_list "(*(BcVec **)(pcVar7 + 0x2c),\n                           *(size_t *)\n                            (sVar6 * *(int *)(pcVar7 + 0xec) + *(int *)(pcVar7 + 0xe0) + 4))" ( (pointer_expression "*(BcVec **)(pcVar7 + 0x2c)" * (cast_expression "(BcVec **)(pcVar7 + 0x2c)" ( (type_descriptor "BcVec **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar7 + 0x2c)" ( (binary_expression "pcVar7 + 0x2c" identifier + number_literal) )))) , (pointer_expression "*(size_t *)\n                            (sVar6 * *(int *)(pcVar7 + 0xec) + *(int *)(pcVar7 + 0xe0) + 4)" * (cast_expression "(size_t *)\n                            (sVar6 * *(int *)(pcVar7 + 0xec) + *(int *)(pcVar7 + 0xe0) + 4)" ( (type_descriptor "size_t *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(sVar6 * *(int *)(pcVar7 + 0xec) + *(int *)(pcVar7 + 0xe0) + 4)" ( (binary_expression "sVar6 * *(int *)(pcVar7 + 0xec) + *(int *)(pcVar7 + 0xe0) + 4" (binary_expression "sVar6 * *(int *)(pcVar7 + 0xec) + *(int *)(pcVar7 + 0xe0)" (binary_expression "sVar6 * *(int *)(pcVar7 + 0xec)" identifier * (pointer_expression "*(int *)(pcVar7 + 0xec)" * (cast_expression "(int *)(pcVar7 + 0xec)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar7 + 0xec)" ( (binary_expression "pcVar7 + 0xec" identifier + number_literal) ))))) + (pointer_expression "*(int *)(pcVar7 + 0xe0)" * (cast_expression "(int *)(pcVar7 + 0xe0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar7 + 0xe0)" ( (binary_expression "pcVar7 + 0xe0" identifier + number_literal) ))))) + number_literal) )))) ))) ;) (expression_statement "BVar3 = zxc_lex_next();" (assignment_expression "BVar3 = zxc_lex_next()" identifier = (call_expression "zxc_lex_next()" identifier (argument_list "()" ( )))) ;) (goto_statement "goto LAB_00024598;" goto statement_identifier ;) })) (expression_statement "puVar8 = (undefined *)((uint)puVar8 & 0xf8 | 4);" (assignment_expression "puVar8 = (undefined *)((uint)puVar8 & 0xf8 | 4)" identifier = (cast_expression "(undefined *)((uint)puVar8 & 0xf8 | 4)" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uint)puVar8 & 0xf8 | 4)" ( (binary_expression "(uint)puVar8 & 0xf8 | 4" (binary_expression "(uint)puVar8 & 0xf8" (cast_expression "(uint)puVar8" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) | number_literal) )))) ;) (expression_statement "type = (BcInst *)(PTR_LAB_0012a258 + 0x36cc);" (assignment_expression "type = (BcInst *)(PTR_LAB_0012a258 + 0x36cc)" identifier = (cast_expression "(BcInst *)(PTR_LAB_0012a258 + 0x36cc)" ( (type_descriptor "BcInst *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_0012a258 + 0x36cc)" ( (binary_expression "PTR_LAB_0012a258 + 0x36cc" identifier + number_literal) )))) ;) (expression_statement "sVar6 = 0;" (assignment_expression "sVar6 = 0" identifier = number_literal) ;) (do_statement "do {\n          BVar3 = zbc_parse_expr((uint8_t)puVar8);\n          if (BVar3 != BC_STATUS_SUCCESS) break;\n          sVar6 = sVar6 + 1;\n          if (*pcVar7 != '#') {\n            if (*pcVar7 == '!') goto LAB_00024664;\n            BVar3 = bc_error_at(PTR_UINT_0012a18c + 0xf0);\n            if (BVar3 == BC_STATUS_SUCCESS) {\n              cVar5 = *pcVar7;\n              goto LAB_0002467c;\n            }\n            break;\n          }\n          BVar3 = zxc_lex_next();\n        } while (BVar3 == BC_STATUS_SUCCESS);" do (compound_statement "{\n          BVar3 = zbc_parse_expr((uint8_t)puVar8);\n          if (BVar3 != BC_STATUS_SUCCESS) break;\n          sVar6 = sVar6 + 1;\n          if (*pcVar7 != '#') {\n            if (*pcVar7 == '!') goto LAB_00024664;\n            BVar3 = bc_error_at(PTR_UINT_0012a18c + 0xf0);\n            if (BVar3 == BC_STATUS_SUCCESS) {\n              cVar5 = *pcVar7;\n              goto LAB_0002467c;\n            }\n            break;\n          }\n          BVar3 = zxc_lex_next();\n        }" { (expression_statement "BVar3 = zbc_parse_expr((uint8_t)puVar8);" (assignment_expression "BVar3 = zbc_parse_expr((uint8_t)puVar8)" identifier = (call_expression "zbc_parse_expr((uint8_t)puVar8)" identifier (argument_list "((uint8_t)puVar8)" ( (cast_expression "(uint8_t)puVar8" ( (type_descriptor "uint8_t" primitive_type) ) identifier) )))) ;) (if_statement "if (BVar3 != BC_STATUS_SUCCESS) break;" if (parenthesized_expression "(BVar3 != BC_STATUS_SUCCESS)" ( (binary_expression "BVar3 != BC_STATUS_SUCCESS" identifier != identifier) )) (break_statement "break;" break ;)) (expression_statement "sVar6 = sVar6 + 1;" (assignment_expression "sVar6 = sVar6 + 1" identifier = (binary_expression "sVar6 + 1" identifier + number_literal)) ;) (if_statement "if (*pcVar7 != '#') {\n            if (*pcVar7 == '!') goto LAB_00024664;\n            BVar3 = bc_error_at(PTR_UINT_0012a18c + 0xf0);\n            if (BVar3 == BC_STATUS_SUCCESS) {\n              cVar5 = *pcVar7;\n              goto LAB_0002467c;\n            }\n            break;\n          }" if (parenthesized_expression "(*pcVar7 != '#')" ( (binary_expression "*pcVar7 != '#'" (pointer_expression "*pcVar7" * identifier) != (char_literal "'#'" ' character ')) )) (compound_statement "{\n            if (*pcVar7 == '!') goto LAB_00024664;\n            BVar3 = bc_error_at(PTR_UINT_0012a18c + 0xf0);\n            if (BVar3 == BC_STATUS_SUCCESS) {\n              cVar5 = *pcVar7;\n              goto LAB_0002467c;\n            }\n            break;\n          }" { (if_statement "if (*pcVar7 == '!') goto LAB_00024664;" if (parenthesized_expression "(*pcVar7 == '!')" ( (binary_expression "*pcVar7 == '!'" (pointer_expression "*pcVar7" * identifier) == (char_literal "'!'" ' character ')) )) (goto_statement "goto LAB_00024664;" goto statement_identifier ;)) (expression_statement "BVar3 = bc_error_at(PTR_UINT_0012a18c + 0xf0);" (assignment_expression "BVar3 = bc_error_at(PTR_UINT_0012a18c + 0xf0)" identifier = (call_expression "bc_error_at(PTR_UINT_0012a18c + 0xf0)" identifier (argument_list "(PTR_UINT_0012a18c + 0xf0)" ( (binary_expression "PTR_UINT_0012a18c + 0xf0" identifier + number_literal) )))) ;) (if_statement "if (BVar3 == BC_STATUS_SUCCESS) {\n              cVar5 = *pcVar7;\n              goto LAB_0002467c;\n            }" if (parenthesized_expression "(BVar3 == BC_STATUS_SUCCESS)" ( (binary_expression "BVar3 == BC_STATUS_SUCCESS" identifier == identifier) )) (compound_statement "{\n              cVar5 = *pcVar7;\n              goto LAB_0002467c;\n            }" { (expression_statement "cVar5 = *pcVar7;" (assignment_expression "cVar5 = *pcVar7" identifier = (pointer_expression "*pcVar7" * identifier)) ;) (goto_statement "goto LAB_0002467c;" goto statement_identifier ;) })) (break_statement "break;" break ;) })) (expression_statement "BVar3 = zxc_lex_next();" (assignment_expression "BVar3 = zxc_lex_next()" identifier = (call_expression "zxc_lex_next()" identifier (argument_list "()" ( )))) ;) }) while (parenthesized_expression "(BVar3 == BC_STATUS_SUCCESS)" ( (binary_expression "BVar3 == BC_STATUS_SUCCESS" identifier == identifier) )) ;) })) }) (else_clause "else {\nLAB_000245ec:\n      msg = PTR_UINT_0012a18c + 0xf0;\nLAB_00024518:\n      BVar3 = bc_error_at(msg);\n    }" else (compound_statement "{\nLAB_000245ec:\n      msg = PTR_UINT_0012a18c + 0xf0;\nLAB_00024518:\n      BVar3 = bc_error_at(msg);\n    }" { (labeled_statement "LAB_000245ec:\n      msg = PTR_UINT_0012a18c + 0xf0;" statement_identifier : (expression_statement "msg = PTR_UINT_0012a18c + 0xf0;" (assignment_expression "msg = PTR_UINT_0012a18c + 0xf0" identifier = (binary_expression "PTR_UINT_0012a18c + 0xf0" identifier + number_literal)) ;)) (labeled_statement "LAB_00024518:\n      BVar3 = bc_error_at(msg);" statement_identifier : (expression_statement "BVar3 = bc_error_at(msg);" (assignment_expression "BVar3 = bc_error_at(msg)" identifier = (call_expression "bc_error_at(msg)" identifier (argument_list "(msg)" ( identifier )))) ;)) })))) (labeled_statement "LAB_00024530:\n    (*(code *)PTR_free_0012b168)(name);" statement_identifier : (expression_statement "(*(code *)PTR_free_0012b168)(name);" (call_expression "(*(code *)PTR_free_0012b168)(name)" (parenthesized_expression "(*(code *)PTR_free_0012b168)" ( (pointer_expression "*(code *)PTR_free_0012b168" * (cast_expression "(code *)PTR_free_0012b168" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(name)" ( identifier ))) ;)) }) while (parenthesized_expression "( true )" ( true )) ;)) })))
(translation_unit "int FUN_0002444c(char *param_1,undefined *param_2)\n\n{\n  undefined *puVar1;\n  undefined4 uVar2;\n  int iVar3;\n  undefined1 uVar4;\n  char cVar5;\n  undefined *puVar6;\n  undefined4 uVar7;\n  int iVar8;\n  char *pcVar9;\n  undefined4 local_34 [2];\n  int local_2c;\n  \n  puVar1 = PTR___stack_chk_guard_0012b14c;\n  pcVar9 = *(char **)PTR_DAT_0012a304;\n  local_2c = *(int *)PTR___stack_chk_guard_0012b14c;\n  uVar2 = FUN_0001a2b4(*(undefined4 *)(pcVar9 + 0x18));\n  iVar3 = FUN_000227d8();\n  if (iVar3 != 0) goto LAB_00024530;\n  if (*pcVar9 == '\"') {\n    iVar3 = FUN_000227d8();\n    if (iVar3 != 0) goto LAB_00024530;\n    if (*pcVar9 == '$') {\n      param_2 = (undefined *)((uint)param_2 & 4);\n      if (param_2 == (undefined *)0x0) {\n        puVar6 = PTR_UINT_0012a18c + 0xfc;\n        goto LAB_00024518;\n      }\n      param_1[0] = '\0';\n      param_1[1] = '\0';\n      param_1[2] = '\0';\n      param_1[3] = '\x1e';\n      iVar3 = FUN_000227d8();\n    }\n    else {\n      param_1[0] = '\0';\n      param_1[1] = '\0';\n      param_1[2] = '\0';\n      param_1[3] = '\x1d';\n      iVar3 = FUN_000236cc((uint)param_2 & 0xfc);\n      if (iVar3 != 0) goto LAB_00024530;\n      iVar3 = FUN_000227d8();\n    }\n    if (iVar3 != 0) goto LAB_00024530;\n    uVar7 = *(undefined4 *)(pcVar9 + 0x2c);\n    uVar4 = (undefined1)*(undefined4 *)param_1;\n  }\n  else {\n    uVar4 = 0x1c;\n    if (*pcVar9 == ' ') goto LAB_000245e0;\n    uVar7 = *(undefined4 *)(pcVar9 + 0x2c);\n    param_1[0] = '\0';\n    param_1[1] = '\0';\n    param_1[2] = '\0';\n    param_1[3] = '\x1c';\n  }\n  local_34[0] = CONCAT13(uVar4,local_34[0]._1_3_);\n  FUN_0001fdb0(uVar7,1,local_34);\n  FUN_00021240(uVar2);\n  (*(code *)PTR_free_0012b168)(uVar2);\nLAB_00024598:\n  do {\n    if (local_2c == *(int *)puVar1) {\n      return iVar3;\n    }\n    (*(code *)PTR___stack_chk_fail_0012b0c8)();\nLAB_000245e0:\n    if (((uint)param_2 & 8) == 0) {\n      param_1[0] = '\0';\n      param_1[1] = '\0';\n      param_1[2] = '\0';\n      param_1[3] = '.';\n      local_34[0] = uVar2;\n      iVar3 = FUN_000227d8();\n      if (iVar3 == 0) {\n        iVar8 = 0;\n        if (*pcVar9 == '!') {\nLAB_00024664:\n          FUN_0002000c(0x2e,iVar8);\n          cVar5 = *pcVar9;\nLAB_0002467c:\n          if (cVar5 != '!') goto LAB_000245ec;\n          param_1 = pcVar9 + 0xe0;\n          param_2 = PTR_LAB_0012a258 + -0x5b4;\n          iVar3 = FUN_0001fa4c(param_1,local_34);\n          if (iVar3 == -1) {\n            FUN_00020698(uVar2);\n            iVar3 = FUN_0001fa4c(param_1,local_34);\n          }\n          else {\n            (*(code *)PTR_free_0012b168)(uVar2);\n          }\n          FUN_0001fef0(*(undefined4 *)(pcVar9 + 0x2c),\n                       *(undefined4 *)\n                        (iVar3 * *(int *)(pcVar9 + 0xec) + *(int *)(pcVar9 + 0xe0) + 4));\n          iVar3 = FUN_000227d8();\n          goto LAB_00024598;\n        }\n        param_2 = (undefined *)((uint)param_2 & 0xf8 | 4);\n        param_1 = PTR_LAB_0012a258 + 0x36cc;\n        iVar8 = 0;\n        do {\n          iVar3 = FUN_000236cc(param_2);\n          if (iVar3 != 0) break;\n          iVar8 = iVar8 + 1;\n          if (*pcVar9 != '#') {\n            if (*pcVar9 == '!') goto LAB_00024664;\n            iVar3 = FUN_00022170(PTR_UINT_0012a18c + 0xf0);\n            if (iVar3 == 0) {\n              cVar5 = *pcVar9;\n              goto LAB_0002467c;\n            }\n            break;\n          }\n          iVar3 = FUN_000227d8();\n        } while (iVar3 == 0);\n      }\n    }\n    else {\nLAB_000245ec:\n      puVar6 = PTR_UINT_0012a18c + 0xf0;\nLAB_00024518:\n      iVar3 = FUN_00022170(puVar6);\n    }\nLAB_00024530:\n    (*(code *)PTR_free_0012b168)(uVar2);\n  } while( true );\n}\n\n" (function_definition "int FUN_0002444c(char *param_1,undefined *param_2)\n\n{\n  undefined *puVar1;\n  undefined4 uVar2;\n  int iVar3;\n  undefined1 uVar4;\n  char cVar5;\n  undefined *puVar6;\n  undefined4 uVar7;\n  int iVar8;\n  char *pcVar9;\n  undefined4 local_34 [2];\n  int local_2c;\n  \n  puVar1 = PTR___stack_chk_guard_0012b14c;\n  pcVar9 = *(char **)PTR_DAT_0012a304;\n  local_2c = *(int *)PTR___stack_chk_guard_0012b14c;\n  uVar2 = FUN_0001a2b4(*(undefined4 *)(pcVar9 + 0x18));\n  iVar3 = FUN_000227d8();\n  if (iVar3 != 0) goto LAB_00024530;\n  if (*pcVar9 == '\"') {\n    iVar3 = FUN_000227d8();\n    if (iVar3 != 0) goto LAB_00024530;\n    if (*pcVar9 == '$') {\n      param_2 = (undefined *)((uint)param_2 & 4);\n      if (param_2 == (undefined *)0x0) {\n        puVar6 = PTR_UINT_0012a18c + 0xfc;\n        goto LAB_00024518;\n      }\n      param_1[0] = '\0';\n      param_1[1] = '\0';\n      param_1[2] = '\0';\n      param_1[3] = '\x1e';\n      iVar3 = FUN_000227d8();\n    }\n    else {\n      param_1[0] = '\0';\n      param_1[1] = '\0';\n      param_1[2] = '\0';\n      param_1[3] = '\x1d';\n      iVar3 = FUN_000236cc((uint)param_2 & 0xfc);\n      if (iVar3 != 0) goto LAB_00024530;\n      iVar3 = FUN_000227d8();\n    }\n    if (iVar3 != 0) goto LAB_00024530;\n    uVar7 = *(undefined4 *)(pcVar9 + 0x2c);\n    uVar4 = (undefined1)*(undefined4 *)param_1;\n  }\n  else {\n    uVar4 = 0x1c;\n    if (*pcVar9 == ' ') goto LAB_000245e0;\n    uVar7 = *(undefined4 *)(pcVar9 + 0x2c);\n    param_1[0] = '\0';\n    param_1[1] = '\0';\n    param_1[2] = '\0';\n    param_1[3] = '\x1c';\n  }\n  local_34[0] = CONCAT13(uVar4,local_34[0]._1_3_);\n  FUN_0001fdb0(uVar7,1,local_34);\n  FUN_00021240(uVar2);\n  (*(code *)PTR_free_0012b168)(uVar2);\nLAB_00024598:\n  do {\n    if (local_2c == *(int *)puVar1) {\n      return iVar3;\n    }\n    (*(code *)PTR___stack_chk_fail_0012b0c8)();\nLAB_000245e0:\n    if (((uint)param_2 & 8) == 0) {\n      param_1[0] = '\0';\n      param_1[1] = '\0';\n      param_1[2] = '\0';\n      param_1[3] = '.';\n      local_34[0] = uVar2;\n      iVar3 = FUN_000227d8();\n      if (iVar3 == 0) {\n        iVar8 = 0;\n        if (*pcVar9 == '!') {\nLAB_00024664:\n          FUN_0002000c(0x2e,iVar8);\n          cVar5 = *pcVar9;\nLAB_0002467c:\n          if (cVar5 != '!') goto LAB_000245ec;\n          param_1 = pcVar9 + 0xe0;\n          param_2 = PTR_LAB_0012a258 + -0x5b4;\n          iVar3 = FUN_0001fa4c(param_1,local_34);\n          if (iVar3 == -1) {\n            FUN_00020698(uVar2);\n            iVar3 = FUN_0001fa4c(param_1,local_34);\n          }\n          else {\n            (*(code *)PTR_free_0012b168)(uVar2);\n          }\n          FUN_0001fef0(*(undefined4 *)(pcVar9 + 0x2c),\n                       *(undefined4 *)\n                        (iVar3 * *(int *)(pcVar9 + 0xec) + *(int *)(pcVar9 + 0xe0) + 4));\n          iVar3 = FUN_000227d8();\n          goto LAB_00024598;\n        }\n        param_2 = (undefined *)((uint)param_2 & 0xf8 | 4);\n        param_1 = PTR_LAB_0012a258 + 0x36cc;\n        iVar8 = 0;\n        do {\n          iVar3 = FUN_000236cc(param_2);\n          if (iVar3 != 0) break;\n          iVar8 = iVar8 + 1;\n          if (*pcVar9 != '#') {\n            if (*pcVar9 == '!') goto LAB_00024664;\n            iVar3 = FUN_00022170(PTR_UINT_0012a18c + 0xf0);\n            if (iVar3 == 0) {\n              cVar5 = *pcVar9;\n              goto LAB_0002467c;\n            }\n            break;\n          }\n          iVar3 = FUN_000227d8();\n        } while (iVar3 == 0);\n      }\n    }\n    else {\nLAB_000245ec:\n      puVar6 = PTR_UINT_0012a18c + 0xf0;\nLAB_00024518:\n      iVar3 = FUN_00022170(puVar6);\n    }\nLAB_00024530:\n    (*(code *)PTR_free_0012b168)(uVar2);\n  } while( true );\n}" primitive_type (function_declarator "FUN_0002444c(char *param_1,undefined *param_2)" identifier (parameter_list "(char *param_1,undefined *param_2)" ( (parameter_declaration "char *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "undefined *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) ))) (compound_statement "{\n  undefined *puVar1;\n  undefined4 uVar2;\n  int iVar3;\n  undefined1 uVar4;\n  char cVar5;\n  undefined *puVar6;\n  undefined4 uVar7;\n  int iVar8;\n  char *pcVar9;\n  undefined4 local_34 [2];\n  int local_2c;\n  \n  puVar1 = PTR___stack_chk_guard_0012b14c;\n  pcVar9 = *(char **)PTR_DAT_0012a304;\n  local_2c = *(int *)PTR___stack_chk_guard_0012b14c;\n  uVar2 = FUN_0001a2b4(*(undefined4 *)(pcVar9 + 0x18));\n  iVar3 = FUN_000227d8();\n  if (iVar3 != 0) goto LAB_00024530;\n  if (*pcVar9 == '\"') {\n    iVar3 = FUN_000227d8();\n    if (iVar3 != 0) goto LAB_00024530;\n    if (*pcVar9 == '$') {\n      param_2 = (undefined *)((uint)param_2 & 4);\n      if (param_2 == (undefined *)0x0) {\n        puVar6 = PTR_UINT_0012a18c + 0xfc;\n        goto LAB_00024518;\n      }\n      param_1[0] = '\0';\n      param_1[1] = '\0';\n      param_1[2] = '\0';\n      param_1[3] = '\x1e';\n      iVar3 = FUN_000227d8();\n    }\n    else {\n      param_1[0] = '\0';\n      param_1[1] = '\0';\n      param_1[2] = '\0';\n      param_1[3] = '\x1d';\n      iVar3 = FUN_000236cc((uint)param_2 & 0xfc);\n      if (iVar3 != 0) goto LAB_00024530;\n      iVar3 = FUN_000227d8();\n    }\n    if (iVar3 != 0) goto LAB_00024530;\n    uVar7 = *(undefined4 *)(pcVar9 + 0x2c);\n    uVar4 = (undefined1)*(undefined4 *)param_1;\n  }\n  else {\n    uVar4 = 0x1c;\n    if (*pcVar9 == ' ') goto LAB_000245e0;\n    uVar7 = *(undefined4 *)(pcVar9 + 0x2c);\n    param_1[0] = '\0';\n    param_1[1] = '\0';\n    param_1[2] = '\0';\n    param_1[3] = '\x1c';\n  }\n  local_34[0] = CONCAT13(uVar4,local_34[0]._1_3_);\n  FUN_0001fdb0(uVar7,1,local_34);\n  FUN_00021240(uVar2);\n  (*(code *)PTR_free_0012b168)(uVar2);\nLAB_00024598:\n  do {\n    if (local_2c == *(int *)puVar1) {\n      return iVar3;\n    }\n    (*(code *)PTR___stack_chk_fail_0012b0c8)();\nLAB_000245e0:\n    if (((uint)param_2 & 8) == 0) {\n      param_1[0] = '\0';\n      param_1[1] = '\0';\n      param_1[2] = '\0';\n      param_1[3] = '.';\n      local_34[0] = uVar2;\n      iVar3 = FUN_000227d8();\n      if (iVar3 == 0) {\n        iVar8 = 0;\n        if (*pcVar9 == '!') {\nLAB_00024664:\n          FUN_0002000c(0x2e,iVar8);\n          cVar5 = *pcVar9;\nLAB_0002467c:\n          if (cVar5 != '!') goto LAB_000245ec;\n          param_1 = pcVar9 + 0xe0;\n          param_2 = PTR_LAB_0012a258 + -0x5b4;\n          iVar3 = FUN_0001fa4c(param_1,local_34);\n          if (iVar3 == -1) {\n            FUN_00020698(uVar2);\n            iVar3 = FUN_0001fa4c(param_1,local_34);\n          }\n          else {\n            (*(code *)PTR_free_0012b168)(uVar2);\n          }\n          FUN_0001fef0(*(undefined4 *)(pcVar9 + 0x2c),\n                       *(undefined4 *)\n                        (iVar3 * *(int *)(pcVar9 + 0xec) + *(int *)(pcVar9 + 0xe0) + 4));\n          iVar3 = FUN_000227d8();\n          goto LAB_00024598;\n        }\n        param_2 = (undefined *)((uint)param_2 & 0xf8 | 4);\n        param_1 = PTR_LAB_0012a258 + 0x36cc;\n        iVar8 = 0;\n        do {\n          iVar3 = FUN_000236cc(param_2);\n          if (iVar3 != 0) break;\n          iVar8 = iVar8 + 1;\n          if (*pcVar9 != '#') {\n            if (*pcVar9 == '!') goto LAB_00024664;\n            iVar3 = FUN_00022170(PTR_UINT_0012a18c + 0xf0);\n            if (iVar3 == 0) {\n              cVar5 = *pcVar9;\n              goto LAB_0002467c;\n            }\n            break;\n          }\n          iVar3 = FUN_000227d8();\n        } while (iVar3 == 0);\n      }\n    }\n    else {\nLAB_000245ec:\n      puVar6 = PTR_UINT_0012a18c + 0xf0;\nLAB_00024518:\n      iVar3 = FUN_00022170(puVar6);\n    }\nLAB_00024530:\n    (*(code *)PTR_free_0012b168)(uVar2);\n  } while( true );\n}" { (declaration "undefined *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "undefined4 uVar2;" type_identifier identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "undefined1 uVar4;" type_identifier identifier ;) (declaration "char cVar5;" primitive_type identifier ;) (declaration "undefined *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "undefined4 uVar7;" type_identifier identifier ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "char *pcVar9;" primitive_type (pointer_declarator "*pcVar9" * identifier) ;) (declaration "undefined4 local_34 [2];" type_identifier (array_declarator "local_34 [2]" identifier [ number_literal ]) ;) (declaration "int local_2c;" primitive_type identifier ;) (expression_statement "puVar1 = PTR___stack_chk_guard_0012b14c;" (assignment_expression "puVar1 = PTR___stack_chk_guard_0012b14c" identifier = identifier) ;) (expression_statement "pcVar9 = *(char **)PTR_DAT_0012a304;" (assignment_expression "pcVar9 = *(char **)PTR_DAT_0012a304" identifier = (pointer_expression "*(char **)PTR_DAT_0012a304" * (cast_expression "(char **)PTR_DAT_0012a304" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) (expression_statement "local_2c = *(int *)PTR___stack_chk_guard_0012b14c;" (assignment_expression "local_2c = *(int *)PTR___stack_chk_guard_0012b14c" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_0012b14c" * (cast_expression "(int *)PTR___stack_chk_guard_0012b14c" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "uVar2 = FUN_0001a2b4(*(undefined4 *)(pcVar9 + 0x18));" (assignment_expression "uVar2 = FUN_0001a2b4(*(undefined4 *)(pcVar9 + 0x18))" identifier = (call_expression "FUN_0001a2b4(*(undefined4 *)(pcVar9 + 0x18))" identifier (argument_list "(*(undefined4 *)(pcVar9 + 0x18))" ( (pointer_expression "*(undefined4 *)(pcVar9 + 0x18)" * (cast_expression "(undefined4 *)(pcVar9 + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar9 + 0x18)" ( (binary_expression "pcVar9 + 0x18" identifier + number_literal) )))) )))) ;) (expression_statement "iVar3 = FUN_000227d8();" (assignment_expression "iVar3 = FUN_000227d8()" identifier = (call_expression "FUN_000227d8()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar3 != 0) goto LAB_00024530;" if (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00024530;" goto statement_identifier ;)) (if_statement "if (*pcVar9 == '\"') {\n    iVar3 = FUN_000227d8();\n    if (iVar3 != 0) goto LAB_00024530;\n    if (*pcVar9 == '$') {\n      param_2 = (undefined *)((uint)param_2 & 4);\n      if (param_2 == (undefined *)0x0) {\n        puVar6 = PTR_UINT_0012a18c + 0xfc;\n        goto LAB_00024518;\n      }\n      param_1[0] = '\0';\n      param_1[1] = '\0';\n      param_1[2] = '\0';\n      param_1[3] = '\x1e';\n      iVar3 = FUN_000227d8();\n    }\n    else {\n      param_1[0] = '\0';\n      param_1[1] = '\0';\n      param_1[2] = '\0';\n      param_1[3] = '\x1d';\n      iVar3 = FUN_000236cc((uint)param_2 & 0xfc);\n      if (iVar3 != 0) goto LAB_00024530;\n      iVar3 = FUN_000227d8();\n    }\n    if (iVar3 != 0) goto LAB_00024530;\n    uVar7 = *(undefined4 *)(pcVar9 + 0x2c);\n    uVar4 = (undefined1)*(undefined4 *)param_1;\n  }\n  else {\n    uVar4 = 0x1c;\n    if (*pcVar9 == ' ') goto LAB_000245e0;\n    uVar7 = *(undefined4 *)(pcVar9 + 0x2c);\n    param_1[0] = '\0';\n    param_1[1] = '\0';\n    param_1[2] = '\0';\n    param_1[3] = '\x1c';\n  }" if (parenthesized_expression "(*pcVar9 == '\"')" ( (binary_expression "*pcVar9 == '\"'" (pointer_expression "*pcVar9" * identifier) == (char_literal "'\"'" ' escape_sequence ')) )) (compound_statement "{\n    iVar3 = FUN_000227d8();\n    if (iVar3 != 0) goto LAB_00024530;\n    if (*pcVar9 == '$') {\n      param_2 = (undefined *)((uint)param_2 & 4);\n      if (param_2 == (undefined *)0x0) {\n        puVar6 = PTR_UINT_0012a18c + 0xfc;\n        goto LAB_00024518;\n      }\n      param_1[0] = '\0';\n      param_1[1] = '\0';\n      param_1[2] = '\0';\n      param_1[3] = '\x1e';\n      iVar3 = FUN_000227d8();\n    }\n    else {\n      param_1[0] = '\0';\n      param_1[1] = '\0';\n      param_1[2] = '\0';\n      param_1[3] = '\x1d';\n      iVar3 = FUN_000236cc((uint)param_2 & 0xfc);\n      if (iVar3 != 0) goto LAB_00024530;\n      iVar3 = FUN_000227d8();\n    }\n    if (iVar3 != 0) goto LAB_00024530;\n    uVar7 = *(undefined4 *)(pcVar9 + 0x2c);\n    uVar4 = (undefined1)*(undefined4 *)param_1;\n  }" { (expression_statement "iVar3 = FUN_000227d8();" (assignment_expression "iVar3 = FUN_000227d8()" identifier = (call_expression "FUN_000227d8()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar3 != 0) goto LAB_00024530;" if (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00024530;" goto statement_identifier ;)) (if_statement "if (*pcVar9 == '$') {\n      param_2 = (undefined *)((uint)param_2 & 4);\n      if (param_2 == (undefined *)0x0) {\n        puVar6 = PTR_UINT_0012a18c + 0xfc;\n        goto LAB_00024518;\n      }\n      param_1[0] = '\0';\n      param_1[1] = '\0';\n      param_1[2] = '\0';\n      param_1[3] = '\x1e';\n      iVar3 = FUN_000227d8();\n    }\n    else {\n      param_1[0] = '\0';\n      param_1[1] = '\0';\n      param_1[2] = '\0';\n      param_1[3] = '\x1d';\n      iVar3 = FUN_000236cc((uint)param_2 & 0xfc);\n      if (iVar3 != 0) goto LAB_00024530;\n      iVar3 = FUN_000227d8();\n    }" if (parenthesized_expression "(*pcVar9 == '$')" ( (binary_expression "*pcVar9 == '$'" (pointer_expression "*pcVar9" * identifier) == (char_literal "'$'" ' character ')) )) (compound_statement "{\n      param_2 = (undefined *)((uint)param_2 & 4);\n      if (param_2 == (undefined *)0x0) {\n        puVar6 = PTR_UINT_0012a18c + 0xfc;\n        goto LAB_00024518;\n      }\n      param_1[0] = '\0';\n      param_1[1] = '\0';\n      param_1[2] = '\0';\n      param_1[3] = '\x1e';\n      iVar3 = FUN_000227d8();\n    }" { (expression_statement "param_2 = (undefined *)((uint)param_2 & 4);" (assignment_expression "param_2 = (undefined *)((uint)param_2 & 4)" identifier = (cast_expression "(undefined *)((uint)param_2 & 4)" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uint)param_2 & 4)" ( (binary_expression "(uint)param_2 & 4" (cast_expression "(uint)param_2" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )))) ;) (if_statement "if (param_2 == (undefined *)0x0) {\n        puVar6 = PTR_UINT_0012a18c + 0xfc;\n        goto LAB_00024518;\n      }" if (parenthesized_expression "(param_2 == (undefined *)0x0)" ( (binary_expression "param_2 == (undefined *)0x0" identifier == (cast_expression "(undefined *)0x0" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        puVar6 = PTR_UINT_0012a18c + 0xfc;\n        goto LAB_00024518;\n      }" { (expression_statement "puVar6 = PTR_UINT_0012a18c + 0xfc;" (assignment_expression "puVar6 = PTR_UINT_0012a18c + 0xfc" identifier = (binary_expression "PTR_UINT_0012a18c + 0xfc" identifier + number_literal)) ;) (goto_statement "goto LAB_00024518;" goto statement_identifier ;) })) (expression_statement "param_1[0] = '\0';" (assignment_expression "param_1[0] = '\0'" (subscript_expression "param_1[0]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "param_1[1] = '\0';" (assignment_expression "param_1[1] = '\0'" (subscript_expression "param_1[1]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "param_1[2] = '\0';" (assignment_expression "param_1[2] = '\0'" (subscript_expression "param_1[2]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "param_1[3] = '\x1e';" (assignment_expression "param_1[3] = '\x1e'" (subscript_expression "param_1[3]" identifier [ number_literal ]) = (char_literal "'\x1e'" ' escape_sequence ')) ;) (expression_statement "iVar3 = FUN_000227d8();" (assignment_expression "iVar3 = FUN_000227d8()" identifier = (call_expression "FUN_000227d8()" identifier (argument_list "()" ( )))) ;) }) (else_clause "else {\n      param_1[0] = '\0';\n      param_1[1] = '\0';\n      param_1[2] = '\0';\n      param_1[3] = '\x1d';\n      iVar3 = FUN_000236cc((uint)param_2 & 0xfc);\n      if (iVar3 != 0) goto LAB_00024530;\n      iVar3 = FUN_000227d8();\n    }" else (compound_statement "{\n      param_1[0] = '\0';\n      param_1[1] = '\0';\n      param_1[2] = '\0';\n      param_1[3] = '\x1d';\n      iVar3 = FUN_000236cc((uint)param_2 & 0xfc);\n      if (iVar3 != 0) goto LAB_00024530;\n      iVar3 = FUN_000227d8();\n    }" { (expression_statement "param_1[0] = '\0';" (assignment_expression "param_1[0] = '\0'" (subscript_expression "param_1[0]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "param_1[1] = '\0';" (assignment_expression "param_1[1] = '\0'" (subscript_expression "param_1[1]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "param_1[2] = '\0';" (assignment_expression "param_1[2] = '\0'" (subscript_expression "param_1[2]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "param_1[3] = '\x1d';" (assignment_expression "param_1[3] = '\x1d'" (subscript_expression "param_1[3]" identifier [ number_literal ]) = (char_literal "'\x1d'" ' escape_sequence ')) ;) (expression_statement "iVar3 = FUN_000236cc((uint)param_2 & 0xfc);" (assignment_expression "iVar3 = FUN_000236cc((uint)param_2 & 0xfc)" identifier = (call_expression "FUN_000236cc((uint)param_2 & 0xfc)" identifier (argument_list "((uint)param_2 & 0xfc)" ( (binary_expression "(uint)param_2 & 0xfc" (cast_expression "(uint)param_2" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )))) ;) (if_statement "if (iVar3 != 0) goto LAB_00024530;" if (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00024530;" goto statement_identifier ;)) (expression_statement "iVar3 = FUN_000227d8();" (assignment_expression "iVar3 = FUN_000227d8()" identifier = (call_expression "FUN_000227d8()" identifier (argument_list "()" ( )))) ;) }))) (if_statement "if (iVar3 != 0) goto LAB_00024530;" if (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00024530;" goto statement_identifier ;)) (expression_statement "uVar7 = *(undefined4 *)(pcVar9 + 0x2c);" (assignment_expression "uVar7 = *(undefined4 *)(pcVar9 + 0x2c)" identifier = (pointer_expression "*(undefined4 *)(pcVar9 + 0x2c)" * (cast_expression "(undefined4 *)(pcVar9 + 0x2c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar9 + 0x2c)" ( (binary_expression "pcVar9 + 0x2c" identifier + number_literal) ))))) ;) (expression_statement "uVar4 = (undefined1)*(undefined4 *)param_1;" (assignment_expression "uVar4 = (undefined1)*(undefined4 *)param_1" identifier = (binary_expression "(undefined1)*(undefined4 *)param_1" (parenthesized_expression "(undefined1)" ( identifier )) * (cast_expression "(undefined4 *)param_1" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) }) (else_clause "else {\n    uVar4 = 0x1c;\n    if (*pcVar9 == ' ') goto LAB_000245e0;\n    uVar7 = *(undefined4 *)(pcVar9 + 0x2c);\n    param_1[0] = '\0';\n    param_1[1] = '\0';\n    param_1[2] = '\0';\n    param_1[3] = '\x1c';\n  }" else (compound_statement "{\n    uVar4 = 0x1c;\n    if (*pcVar9 == ' ') goto LAB_000245e0;\n    uVar7 = *(undefined4 *)(pcVar9 + 0x2c);\n    param_1[0] = '\0';\n    param_1[1] = '\0';\n    param_1[2] = '\0';\n    param_1[3] = '\x1c';\n  }" { (expression_statement "uVar4 = 0x1c;" (assignment_expression "uVar4 = 0x1c" identifier = number_literal) ;) (if_statement "if (*pcVar9 == ' ') goto LAB_000245e0;" if (parenthesized_expression "(*pcVar9 == ' ')" ( (binary_expression "*pcVar9 == ' '" (pointer_expression "*pcVar9" * identifier) == (char_literal "' '" ' character ')) )) (goto_statement "goto LAB_000245e0;" goto statement_identifier ;)) (expression_statement "uVar7 = *(undefined4 *)(pcVar9 + 0x2c);" (assignment_expression "uVar7 = *(undefined4 *)(pcVar9 + 0x2c)" identifier = (pointer_expression "*(undefined4 *)(pcVar9 + 0x2c)" * (cast_expression "(undefined4 *)(pcVar9 + 0x2c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar9 + 0x2c)" ( (binary_expression "pcVar9 + 0x2c" identifier + number_literal) ))))) ;) (expression_statement "param_1[0] = '\0';" (assignment_expression "param_1[0] = '\0'" (subscript_expression "param_1[0]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "param_1[1] = '\0';" (assignment_expression "param_1[1] = '\0'" (subscript_expression "param_1[1]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "param_1[2] = '\0';" (assignment_expression "param_1[2] = '\0'" (subscript_expression "param_1[2]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "param_1[3] = '\x1c';" (assignment_expression "param_1[3] = '\x1c'" (subscript_expression "param_1[3]" identifier [ number_literal ]) = (char_literal "'\x1c'" ' escape_sequence ')) ;) }))) (expression_statement "local_34[0] = CONCAT13(uVar4,local_34[0]._1_3_);" (assignment_expression "local_34[0] = CONCAT13(uVar4,local_34[0]._1_3_)" (subscript_expression "local_34[0]" identifier [ number_literal ]) = (call_expression "CONCAT13(uVar4,local_34[0]._1_3_)" identifier (argument_list "(uVar4,local_34[0]._1_3_)" ( identifier , (field_expression "local_34[0]._1_3_" (subscript_expression "local_34[0]" identifier [ number_literal ]) . field_identifier) )))) ;) (expression_statement "FUN_0001fdb0(uVar7,1,local_34);" (call_expression "FUN_0001fdb0(uVar7,1,local_34)" identifier (argument_list "(uVar7,1,local_34)" ( identifier , number_literal , identifier ))) ;) (expression_statement "FUN_00021240(uVar2);" (call_expression "FUN_00021240(uVar2)" identifier (argument_list "(uVar2)" ( identifier ))) ;) (expression_statement "(*(code *)PTR_free_0012b168)(uVar2);" (call_expression "(*(code *)PTR_free_0012b168)(uVar2)" (parenthesized_expression "(*(code *)PTR_free_0012b168)" ( (pointer_expression "*(code *)PTR_free_0012b168" * (cast_expression "(code *)PTR_free_0012b168" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(uVar2)" ( identifier ))) ;) (labeled_statement "LAB_00024598:\n  do {\n    if (local_2c == *(int *)puVar1) {\n      return iVar3;\n    }\n    (*(code *)PTR___stack_chk_fail_0012b0c8)();\nLAB_000245e0:\n    if (((uint)param_2 & 8) == 0) {\n      param_1[0] = '\0';\n      param_1[1] = '\0';\n      param_1[2] = '\0';\n      param_1[3] = '.';\n      local_34[0] = uVar2;\n      iVar3 = FUN_000227d8();\n      if (iVar3 == 0) {\n        iVar8 = 0;\n        if (*pcVar9 == '!') {\nLAB_00024664:\n          FUN_0002000c(0x2e,iVar8);\n          cVar5 = *pcVar9;\nLAB_0002467c:\n          if (cVar5 != '!') goto LAB_000245ec;\n          param_1 = pcVar9 + 0xe0;\n          param_2 = PTR_LAB_0012a258 + -0x5b4;\n          iVar3 = FUN_0001fa4c(param_1,local_34);\n          if (iVar3 == -1) {\n            FUN_00020698(uVar2);\n            iVar3 = FUN_0001fa4c(param_1,local_34);\n          }\n          else {\n            (*(code *)PTR_free_0012b168)(uVar2);\n          }\n          FUN_0001fef0(*(undefined4 *)(pcVar9 + 0x2c),\n                       *(undefined4 *)\n                        (iVar3 * *(int *)(pcVar9 + 0xec) + *(int *)(pcVar9 + 0xe0) + 4));\n          iVar3 = FUN_000227d8();\n          goto LAB_00024598;\n        }\n        param_2 = (undefined *)((uint)param_2 & 0xf8 | 4);\n        param_1 = PTR_LAB_0012a258 + 0x36cc;\n        iVar8 = 0;\n        do {\n          iVar3 = FUN_000236cc(param_2);\n          if (iVar3 != 0) break;\n          iVar8 = iVar8 + 1;\n          if (*pcVar9 != '#') {\n            if (*pcVar9 == '!') goto LAB_00024664;\n            iVar3 = FUN_00022170(PTR_UINT_0012a18c + 0xf0);\n            if (iVar3 == 0) {\n              cVar5 = *pcVar9;\n              goto LAB_0002467c;\n            }\n            break;\n          }\n          iVar3 = FUN_000227d8();\n        } while (iVar3 == 0);\n      }\n    }\n    else {\nLAB_000245ec:\n      puVar6 = PTR_UINT_0012a18c + 0xf0;\nLAB_00024518:\n      iVar3 = FUN_00022170(puVar6);\n    }\nLAB_00024530:\n    (*(code *)PTR_free_0012b168)(uVar2);\n  } while( true );" statement_identifier : (do_statement "do {\n    if (local_2c == *(int *)puVar1) {\n      return iVar3;\n    }\n    (*(code *)PTR___stack_chk_fail_0012b0c8)();\nLAB_000245e0:\n    if (((uint)param_2 & 8) == 0) {\n      param_1[0] = '\0';\n      param_1[1] = '\0';\n      param_1[2] = '\0';\n      param_1[3] = '.';\n      local_34[0] = uVar2;\n      iVar3 = FUN_000227d8();\n      if (iVar3 == 0) {\n        iVar8 = 0;\n        if (*pcVar9 == '!') {\nLAB_00024664:\n          FUN_0002000c(0x2e,iVar8);\n          cVar5 = *pcVar9;\nLAB_0002467c:\n          if (cVar5 != '!') goto LAB_000245ec;\n          param_1 = pcVar9 + 0xe0;\n          param_2 = PTR_LAB_0012a258 + -0x5b4;\n          iVar3 = FUN_0001fa4c(param_1,local_34);\n          if (iVar3 == -1) {\n            FUN_00020698(uVar2);\n            iVar3 = FUN_0001fa4c(param_1,local_34);\n          }\n          else {\n            (*(code *)PTR_free_0012b168)(uVar2);\n          }\n          FUN_0001fef0(*(undefined4 *)(pcVar9 + 0x2c),\n                       *(undefined4 *)\n                        (iVar3 * *(int *)(pcVar9 + 0xec) + *(int *)(pcVar9 + 0xe0) + 4));\n          iVar3 = FUN_000227d8();\n          goto LAB_00024598;\n        }\n        param_2 = (undefined *)((uint)param_2 & 0xf8 | 4);\n        param_1 = PTR_LAB_0012a258 + 0x36cc;\n        iVar8 = 0;\n        do {\n          iVar3 = FUN_000236cc(param_2);\n          if (iVar3 != 0) break;\n          iVar8 = iVar8 + 1;\n          if (*pcVar9 != '#') {\n            if (*pcVar9 == '!') goto LAB_00024664;\n            iVar3 = FUN_00022170(PTR_UINT_0012a18c + 0xf0);\n            if (iVar3 == 0) {\n              cVar5 = *pcVar9;\n              goto LAB_0002467c;\n            }\n            break;\n          }\n          iVar3 = FUN_000227d8();\n        } while (iVar3 == 0);\n      }\n    }\n    else {\nLAB_000245ec:\n      puVar6 = PTR_UINT_0012a18c + 0xf0;\nLAB_00024518:\n      iVar3 = FUN_00022170(puVar6);\n    }\nLAB_00024530:\n    (*(code *)PTR_free_0012b168)(uVar2);\n  } while( true );" do (compound_statement "{\n    if (local_2c == *(int *)puVar1) {\n      return iVar3;\n    }\n    (*(code *)PTR___stack_chk_fail_0012b0c8)();\nLAB_000245e0:\n    if (((uint)param_2 & 8) == 0) {\n      param_1[0] = '\0';\n      param_1[1] = '\0';\n      param_1[2] = '\0';\n      param_1[3] = '.';\n      local_34[0] = uVar2;\n      iVar3 = FUN_000227d8();\n      if (iVar3 == 0) {\n        iVar8 = 0;\n        if (*pcVar9 == '!') {\nLAB_00024664:\n          FUN_0002000c(0x2e,iVar8);\n          cVar5 = *pcVar9;\nLAB_0002467c:\n          if (cVar5 != '!') goto LAB_000245ec;\n          param_1 = pcVar9 + 0xe0;\n          param_2 = PTR_LAB_0012a258 + -0x5b4;\n          iVar3 = FUN_0001fa4c(param_1,local_34);\n          if (iVar3 == -1) {\n            FUN_00020698(uVar2);\n            iVar3 = FUN_0001fa4c(param_1,local_34);\n          }\n          else {\n            (*(code *)PTR_free_0012b168)(uVar2);\n          }\n          FUN_0001fef0(*(undefined4 *)(pcVar9 + 0x2c),\n                       *(undefined4 *)\n                        (iVar3 * *(int *)(pcVar9 + 0xec) + *(int *)(pcVar9 + 0xe0) + 4));\n          iVar3 = FUN_000227d8();\n          goto LAB_00024598;\n        }\n        param_2 = (undefined *)((uint)param_2 & 0xf8 | 4);\n        param_1 = PTR_LAB_0012a258 + 0x36cc;\n        iVar8 = 0;\n        do {\n          iVar3 = FUN_000236cc(param_2);\n          if (iVar3 != 0) break;\n          iVar8 = iVar8 + 1;\n          if (*pcVar9 != '#') {\n            if (*pcVar9 == '!') goto LAB_00024664;\n            iVar3 = FUN_00022170(PTR_UINT_0012a18c + 0xf0);\n            if (iVar3 == 0) {\n              cVar5 = *pcVar9;\n              goto LAB_0002467c;\n            }\n            break;\n          }\n          iVar3 = FUN_000227d8();\n        } while (iVar3 == 0);\n      }\n    }\n    else {\nLAB_000245ec:\n      puVar6 = PTR_UINT_0012a18c + 0xf0;\nLAB_00024518:\n      iVar3 = FUN_00022170(puVar6);\n    }\nLAB_00024530:\n    (*(code *)PTR_free_0012b168)(uVar2);\n  }" { (if_statement "if (local_2c == *(int *)puVar1) {\n      return iVar3;\n    }" if (parenthesized_expression "(local_2c == *(int *)puVar1)" ( (binary_expression "local_2c == *(int *)puVar1" identifier == (pointer_expression "*(int *)puVar1" * (cast_expression "(int *)puVar1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n      return iVar3;\n    }" { (return_statement "return iVar3;" return identifier ;) })) (expression_statement "(*(code *)PTR___stack_chk_fail_0012b0c8)();" (call_expression "(*(code *)PTR___stack_chk_fail_0012b0c8)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_0012b0c8)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_0012b0c8" * (cast_expression "(code *)PTR___stack_chk_fail_0012b0c8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (labeled_statement "LAB_000245e0:\n    if (((uint)param_2 & 8) == 0) {\n      param_1[0] = '\0';\n      param_1[1] = '\0';\n      param_1[2] = '\0';\n      param_1[3] = '.';\n      local_34[0] = uVar2;\n      iVar3 = FUN_000227d8();\n      if (iVar3 == 0) {\n        iVar8 = 0;\n        if (*pcVar9 == '!') {\nLAB_00024664:\n          FUN_0002000c(0x2e,iVar8);\n          cVar5 = *pcVar9;\nLAB_0002467c:\n          if (cVar5 != '!') goto LAB_000245ec;\n          param_1 = pcVar9 + 0xe0;\n          param_2 = PTR_LAB_0012a258 + -0x5b4;\n          iVar3 = FUN_0001fa4c(param_1,local_34);\n          if (iVar3 == -1) {\n            FUN_00020698(uVar2);\n            iVar3 = FUN_0001fa4c(param_1,local_34);\n          }\n          else {\n            (*(code *)PTR_free_0012b168)(uVar2);\n          }\n          FUN_0001fef0(*(undefined4 *)(pcVar9 + 0x2c),\n                       *(undefined4 *)\n                        (iVar3 * *(int *)(pcVar9 + 0xec) + *(int *)(pcVar9 + 0xe0) + 4));\n          iVar3 = FUN_000227d8();\n          goto LAB_00024598;\n        }\n        param_2 = (undefined *)((uint)param_2 & 0xf8 | 4);\n        param_1 = PTR_LAB_0012a258 + 0x36cc;\n        iVar8 = 0;\n        do {\n          iVar3 = FUN_000236cc(param_2);\n          if (iVar3 != 0) break;\n          iVar8 = iVar8 + 1;\n          if (*pcVar9 != '#') {\n            if (*pcVar9 == '!') goto LAB_00024664;\n            iVar3 = FUN_00022170(PTR_UINT_0012a18c + 0xf0);\n            if (iVar3 == 0) {\n              cVar5 = *pcVar9;\n              goto LAB_0002467c;\n            }\n            break;\n          }\n          iVar3 = FUN_000227d8();\n        } while (iVar3 == 0);\n      }\n    }\n    else {\nLAB_000245ec:\n      puVar6 = PTR_UINT_0012a18c + 0xf0;\nLAB_00024518:\n      iVar3 = FUN_00022170(puVar6);\n    }" statement_identifier : (if_statement "if (((uint)param_2 & 8) == 0) {\n      param_1[0] = '\0';\n      param_1[1] = '\0';\n      param_1[2] = '\0';\n      param_1[3] = '.';\n      local_34[0] = uVar2;\n      iVar3 = FUN_000227d8();\n      if (iVar3 == 0) {\n        iVar8 = 0;\n        if (*pcVar9 == '!') {\nLAB_00024664:\n          FUN_0002000c(0x2e,iVar8);\n          cVar5 = *pcVar9;\nLAB_0002467c:\n          if (cVar5 != '!') goto LAB_000245ec;\n          param_1 = pcVar9 + 0xe0;\n          param_2 = PTR_LAB_0012a258 + -0x5b4;\n          iVar3 = FUN_0001fa4c(param_1,local_34);\n          if (iVar3 == -1) {\n            FUN_00020698(uVar2);\n            iVar3 = FUN_0001fa4c(param_1,local_34);\n          }\n          else {\n            (*(code *)PTR_free_0012b168)(uVar2);\n          }\n          FUN_0001fef0(*(undefined4 *)(pcVar9 + 0x2c),\n                       *(undefined4 *)\n                        (iVar3 * *(int *)(pcVar9 + 0xec) + *(int *)(pcVar9 + 0xe0) + 4));\n          iVar3 = FUN_000227d8();\n          goto LAB_00024598;\n        }\n        param_2 = (undefined *)((uint)param_2 & 0xf8 | 4);\n        param_1 = PTR_LAB_0012a258 + 0x36cc;\n        iVar8 = 0;\n        do {\n          iVar3 = FUN_000236cc(param_2);\n          if (iVar3 != 0) break;\n          iVar8 = iVar8 + 1;\n          if (*pcVar9 != '#') {\n            if (*pcVar9 == '!') goto LAB_00024664;\n            iVar3 = FUN_00022170(PTR_UINT_0012a18c + 0xf0);\n            if (iVar3 == 0) {\n              cVar5 = *pcVar9;\n              goto LAB_0002467c;\n            }\n            break;\n          }\n          iVar3 = FUN_000227d8();\n        } while (iVar3 == 0);\n      }\n    }\n    else {\nLAB_000245ec:\n      puVar6 = PTR_UINT_0012a18c + 0xf0;\nLAB_00024518:\n      iVar3 = FUN_00022170(puVar6);\n    }" if (parenthesized_expression "(((uint)param_2 & 8) == 0)" ( (binary_expression "((uint)param_2 & 8) == 0" (parenthesized_expression "((uint)param_2 & 8)" ( (binary_expression "(uint)param_2 & 8" (cast_expression "(uint)param_2" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n      param_1[0] = '\0';\n      param_1[1] = '\0';\n      param_1[2] = '\0';\n      param_1[3] = '.';\n      local_34[0] = uVar2;\n      iVar3 = FUN_000227d8();\n      if (iVar3 == 0) {\n        iVar8 = 0;\n        if (*pcVar9 == '!') {\nLAB_00024664:\n          FUN_0002000c(0x2e,iVar8);\n          cVar5 = *pcVar9;\nLAB_0002467c:\n          if (cVar5 != '!') goto LAB_000245ec;\n          param_1 = pcVar9 + 0xe0;\n          param_2 = PTR_LAB_0012a258 + -0x5b4;\n          iVar3 = FUN_0001fa4c(param_1,local_34);\n          if (iVar3 == -1) {\n            FUN_00020698(uVar2);\n            iVar3 = FUN_0001fa4c(param_1,local_34);\n          }\n          else {\n            (*(code *)PTR_free_0012b168)(uVar2);\n          }\n          FUN_0001fef0(*(undefined4 *)(pcVar9 + 0x2c),\n                       *(undefined4 *)\n                        (iVar3 * *(int *)(pcVar9 + 0xec) + *(int *)(pcVar9 + 0xe0) + 4));\n          iVar3 = FUN_000227d8();\n          goto LAB_00024598;\n        }\n        param_2 = (undefined *)((uint)param_2 & 0xf8 | 4);\n        param_1 = PTR_LAB_0012a258 + 0x36cc;\n        iVar8 = 0;\n        do {\n          iVar3 = FUN_000236cc(param_2);\n          if (iVar3 != 0) break;\n          iVar8 = iVar8 + 1;\n          if (*pcVar9 != '#') {\n            if (*pcVar9 == '!') goto LAB_00024664;\n            iVar3 = FUN_00022170(PTR_UINT_0012a18c + 0xf0);\n            if (iVar3 == 0) {\n              cVar5 = *pcVar9;\n              goto LAB_0002467c;\n            }\n            break;\n          }\n          iVar3 = FUN_000227d8();\n        } while (iVar3 == 0);\n      }\n    }" { (expression_statement "param_1[0] = '\0';" (assignment_expression "param_1[0] = '\0'" (subscript_expression "param_1[0]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "param_1[1] = '\0';" (assignment_expression "param_1[1] = '\0'" (subscript_expression "param_1[1]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "param_1[2] = '\0';" (assignment_expression "param_1[2] = '\0'" (subscript_expression "param_1[2]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "param_1[3] = '.';" (assignment_expression "param_1[3] = '.'" (subscript_expression "param_1[3]" identifier [ number_literal ]) = (char_literal "'.'" ' character ')) ;) (expression_statement "local_34[0] = uVar2;" (assignment_expression "local_34[0] = uVar2" (subscript_expression "local_34[0]" identifier [ number_literal ]) = identifier) ;) (expression_statement "iVar3 = FUN_000227d8();" (assignment_expression "iVar3 = FUN_000227d8()" identifier = (call_expression "FUN_000227d8()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar3 == 0) {\n        iVar8 = 0;\n        if (*pcVar9 == '!') {\nLAB_00024664:\n          FUN_0002000c(0x2e,iVar8);\n          cVar5 = *pcVar9;\nLAB_0002467c:\n          if (cVar5 != '!') goto LAB_000245ec;\n          param_1 = pcVar9 + 0xe0;\n          param_2 = PTR_LAB_0012a258 + -0x5b4;\n          iVar3 = FUN_0001fa4c(param_1,local_34);\n          if (iVar3 == -1) {\n            FUN_00020698(uVar2);\n            iVar3 = FUN_0001fa4c(param_1,local_34);\n          }\n          else {\n            (*(code *)PTR_free_0012b168)(uVar2);\n          }\n          FUN_0001fef0(*(undefined4 *)(pcVar9 + 0x2c),\n                       *(undefined4 *)\n                        (iVar3 * *(int *)(pcVar9 + 0xec) + *(int *)(pcVar9 + 0xe0) + 4));\n          iVar3 = FUN_000227d8();\n          goto LAB_00024598;\n        }\n        param_2 = (undefined *)((uint)param_2 & 0xf8 | 4);\n        param_1 = PTR_LAB_0012a258 + 0x36cc;\n        iVar8 = 0;\n        do {\n          iVar3 = FUN_000236cc(param_2);\n          if (iVar3 != 0) break;\n          iVar8 = iVar8 + 1;\n          if (*pcVar9 != '#') {\n            if (*pcVar9 == '!') goto LAB_00024664;\n            iVar3 = FUN_00022170(PTR_UINT_0012a18c + 0xf0);\n            if (iVar3 == 0) {\n              cVar5 = *pcVar9;\n              goto LAB_0002467c;\n            }\n            break;\n          }\n          iVar3 = FUN_000227d8();\n        } while (iVar3 == 0);\n      }" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (compound_statement "{\n        iVar8 = 0;\n        if (*pcVar9 == '!') {\nLAB_00024664:\n          FUN_0002000c(0x2e,iVar8);\n          cVar5 = *pcVar9;\nLAB_0002467c:\n          if (cVar5 != '!') goto LAB_000245ec;\n          param_1 = pcVar9 + 0xe0;\n          param_2 = PTR_LAB_0012a258 + -0x5b4;\n          iVar3 = FUN_0001fa4c(param_1,local_34);\n          if (iVar3 == -1) {\n            FUN_00020698(uVar2);\n            iVar3 = FUN_0001fa4c(param_1,local_34);\n          }\n          else {\n            (*(code *)PTR_free_0012b168)(uVar2);\n          }\n          FUN_0001fef0(*(undefined4 *)(pcVar9 + 0x2c),\n                       *(undefined4 *)\n                        (iVar3 * *(int *)(pcVar9 + 0xec) + *(int *)(pcVar9 + 0xe0) + 4));\n          iVar3 = FUN_000227d8();\n          goto LAB_00024598;\n        }\n        param_2 = (undefined *)((uint)param_2 & 0xf8 | 4);\n        param_1 = PTR_LAB_0012a258 + 0x36cc;\n        iVar8 = 0;\n        do {\n          iVar3 = FUN_000236cc(param_2);\n          if (iVar3 != 0) break;\n          iVar8 = iVar8 + 1;\n          if (*pcVar9 != '#') {\n            if (*pcVar9 == '!') goto LAB_00024664;\n            iVar3 = FUN_00022170(PTR_UINT_0012a18c + 0xf0);\n            if (iVar3 == 0) {\n              cVar5 = *pcVar9;\n              goto LAB_0002467c;\n            }\n            break;\n          }\n          iVar3 = FUN_000227d8();\n        } while (iVar3 == 0);\n      }" { (expression_statement "iVar8 = 0;" (assignment_expression "iVar8 = 0" identifier = number_literal) ;) (if_statement "if (*pcVar9 == '!') {\nLAB_00024664:\n          FUN_0002000c(0x2e,iVar8);\n          cVar5 = *pcVar9;\nLAB_0002467c:\n          if (cVar5 != '!') goto LAB_000245ec;\n          param_1 = pcVar9 + 0xe0;\n          param_2 = PTR_LAB_0012a258 + -0x5b4;\n          iVar3 = FUN_0001fa4c(param_1,local_34);\n          if (iVar3 == -1) {\n            FUN_00020698(uVar2);\n            iVar3 = FUN_0001fa4c(param_1,local_34);\n          }\n          else {\n            (*(code *)PTR_free_0012b168)(uVar2);\n          }\n          FUN_0001fef0(*(undefined4 *)(pcVar9 + 0x2c),\n                       *(undefined4 *)\n                        (iVar3 * *(int *)(pcVar9 + 0xec) + *(int *)(pcVar9 + 0xe0) + 4));\n          iVar3 = FUN_000227d8();\n          goto LAB_00024598;\n        }" if (parenthesized_expression "(*pcVar9 == '!')" ( (binary_expression "*pcVar9 == '!'" (pointer_expression "*pcVar9" * identifier) == (char_literal "'!'" ' character ')) )) (compound_statement "{\nLAB_00024664:\n          FUN_0002000c(0x2e,iVar8);\n          cVar5 = *pcVar9;\nLAB_0002467c:\n          if (cVar5 != '!') goto LAB_000245ec;\n          param_1 = pcVar9 + 0xe0;\n          param_2 = PTR_LAB_0012a258 + -0x5b4;\n          iVar3 = FUN_0001fa4c(param_1,local_34);\n          if (iVar3 == -1) {\n            FUN_00020698(uVar2);\n            iVar3 = FUN_0001fa4c(param_1,local_34);\n          }\n          else {\n            (*(code *)PTR_free_0012b168)(uVar2);\n          }\n          FUN_0001fef0(*(undefined4 *)(pcVar9 + 0x2c),\n                       *(undefined4 *)\n                        (iVar3 * *(int *)(pcVar9 + 0xec) + *(int *)(pcVar9 + 0xe0) + 4));\n          iVar3 = FUN_000227d8();\n          goto LAB_00024598;\n        }" { (labeled_statement "LAB_00024664:\n          FUN_0002000c(0x2e,iVar8);" statement_identifier : (expression_statement "FUN_0002000c(0x2e,iVar8);" (call_expression "FUN_0002000c(0x2e,iVar8)" identifier (argument_list "(0x2e,iVar8)" ( number_literal , identifier ))) ;)) (expression_statement "cVar5 = *pcVar9;" (assignment_expression "cVar5 = *pcVar9" identifier = (pointer_expression "*pcVar9" * identifier)) ;) (labeled_statement "LAB_0002467c:\n          if (cVar5 != '!') goto LAB_000245ec;" statement_identifier : (if_statement "if (cVar5 != '!') goto LAB_000245ec;" if (parenthesized_expression "(cVar5 != '!')" ( (binary_expression "cVar5 != '!'" identifier != (char_literal "'!'" ' character ')) )) (goto_statement "goto LAB_000245ec;" goto statement_identifier ;))) (expression_statement "param_1 = pcVar9 + 0xe0;" (assignment_expression "param_1 = pcVar9 + 0xe0" identifier = (binary_expression "pcVar9 + 0xe0" identifier + number_literal)) ;) (expression_statement "param_2 = PTR_LAB_0012a258 + -0x5b4;" (assignment_expression "param_2 = PTR_LAB_0012a258 + -0x5b4" identifier = (binary_expression "PTR_LAB_0012a258 + -0x5b4" identifier + number_literal)) ;) (expression_statement "iVar3 = FUN_0001fa4c(param_1,local_34);" (assignment_expression "iVar3 = FUN_0001fa4c(param_1,local_34)" identifier = (call_expression "FUN_0001fa4c(param_1,local_34)" identifier (argument_list "(param_1,local_34)" ( identifier , identifier )))) ;) (if_statement "if (iVar3 == -1) {\n            FUN_00020698(uVar2);\n            iVar3 = FUN_0001fa4c(param_1,local_34);\n          }\n          else {\n            (*(code *)PTR_free_0012b168)(uVar2);\n          }" if (parenthesized_expression "(iVar3 == -1)" ( (binary_expression "iVar3 == -1" identifier == number_literal) )) (compound_statement "{\n            FUN_00020698(uVar2);\n            iVar3 = FUN_0001fa4c(param_1,local_34);\n          }" { (expression_statement "FUN_00020698(uVar2);" (call_expression "FUN_00020698(uVar2)" identifier (argument_list "(uVar2)" ( identifier ))) ;) (expression_statement "iVar3 = FUN_0001fa4c(param_1,local_34);" (assignment_expression "iVar3 = FUN_0001fa4c(param_1,local_34)" identifier = (call_expression "FUN_0001fa4c(param_1,local_34)" identifier (argument_list "(param_1,local_34)" ( identifier , identifier )))) ;) }) (else_clause "else {\n            (*(code *)PTR_free_0012b168)(uVar2);\n          }" else (compound_statement "{\n            (*(code *)PTR_free_0012b168)(uVar2);\n          }" { (expression_statement "(*(code *)PTR_free_0012b168)(uVar2);" (call_expression "(*(code *)PTR_free_0012b168)(uVar2)" (parenthesized_expression "(*(code *)PTR_free_0012b168)" ( (pointer_expression "*(code *)PTR_free_0012b168" * (cast_expression "(code *)PTR_free_0012b168" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(uVar2)" ( identifier ))) ;) }))) (expression_statement "FUN_0001fef0(*(undefined4 *)(pcVar9 + 0x2c),\n                       *(undefined4 *)\n                        (iVar3 * *(int *)(pcVar9 + 0xec) + *(int *)(pcVar9 + 0xe0) + 4));" (call_expression "FUN_0001fef0(*(undefined4 *)(pcVar9 + 0x2c),\n                       *(undefined4 *)\n                        (iVar3 * *(int *)(pcVar9 + 0xec) + *(int *)(pcVar9 + 0xe0) + 4))" identifier (argument_list "(*(undefined4 *)(pcVar9 + 0x2c),\n                       *(undefined4 *)\n                        (iVar3 * *(int *)(pcVar9 + 0xec) + *(int *)(pcVar9 + 0xe0) + 4))" ( (pointer_expression "*(undefined4 *)(pcVar9 + 0x2c)" * (cast_expression "(undefined4 *)(pcVar9 + 0x2c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar9 + 0x2c)" ( (binary_expression "pcVar9 + 0x2c" identifier + number_literal) )))) , (pointer_expression "*(undefined4 *)\n                        (iVar3 * *(int *)(pcVar9 + 0xec) + *(int *)(pcVar9 + 0xe0) + 4)" * (cast_expression "(undefined4 *)\n                        (iVar3 * *(int *)(pcVar9 + 0xec) + *(int *)(pcVar9 + 0xe0) + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 * *(int *)(pcVar9 + 0xec) + *(int *)(pcVar9 + 0xe0) + 4)" ( (binary_expression "iVar3 * *(int *)(pcVar9 + 0xec) + *(int *)(pcVar9 + 0xe0) + 4" (binary_expression "iVar3 * *(int *)(pcVar9 + 0xec) + *(int *)(pcVar9 + 0xe0)" (binary_expression "iVar3 * *(int *)(pcVar9 + 0xec)" identifier * (pointer_expression "*(int *)(pcVar9 + 0xec)" * (cast_expression "(int *)(pcVar9 + 0xec)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar9 + 0xec)" ( (binary_expression "pcVar9 + 0xec" identifier + number_literal) ))))) + (pointer_expression "*(int *)(pcVar9 + 0xe0)" * (cast_expression "(int *)(pcVar9 + 0xe0)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar9 + 0xe0)" ( (binary_expression "pcVar9 + 0xe0" identifier + number_literal) ))))) + number_literal) )))) ))) ;) (expression_statement "iVar3 = FUN_000227d8();" (assignment_expression "iVar3 = FUN_000227d8()" identifier = (call_expression "FUN_000227d8()" identifier (argument_list "()" ( )))) ;) (goto_statement "goto LAB_00024598;" goto statement_identifier ;) })) (expression_statement "param_2 = (undefined *)((uint)param_2 & 0xf8 | 4);" (assignment_expression "param_2 = (undefined *)((uint)param_2 & 0xf8 | 4)" identifier = (cast_expression "(undefined *)((uint)param_2 & 0xf8 | 4)" ( (type_descriptor "undefined *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uint)param_2 & 0xf8 | 4)" ( (binary_expression "(uint)param_2 & 0xf8 | 4" (binary_expression "(uint)param_2 & 0xf8" (cast_expression "(uint)param_2" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) | number_literal) )))) ;) (expression_statement "param_1 = PTR_LAB_0012a258 + 0x36cc;" (assignment_expression "param_1 = PTR_LAB_0012a258 + 0x36cc" identifier = (binary_expression "PTR_LAB_0012a258 + 0x36cc" identifier + number_literal)) ;) (expression_statement "iVar8 = 0;" (assignment_expression "iVar8 = 0" identifier = number_literal) ;) (do_statement "do {\n          iVar3 = FUN_000236cc(param_2);\n          if (iVar3 != 0) break;\n          iVar8 = iVar8 + 1;\n          if (*pcVar9 != '#') {\n            if (*pcVar9 == '!') goto LAB_00024664;\n            iVar3 = FUN_00022170(PTR_UINT_0012a18c + 0xf0);\n            if (iVar3 == 0) {\n              cVar5 = *pcVar9;\n              goto LAB_0002467c;\n            }\n            break;\n          }\n          iVar3 = FUN_000227d8();\n        } while (iVar3 == 0);" do (compound_statement "{\n          iVar3 = FUN_000236cc(param_2);\n          if (iVar3 != 0) break;\n          iVar8 = iVar8 + 1;\n          if (*pcVar9 != '#') {\n            if (*pcVar9 == '!') goto LAB_00024664;\n            iVar3 = FUN_00022170(PTR_UINT_0012a18c + 0xf0);\n            if (iVar3 == 0) {\n              cVar5 = *pcVar9;\n              goto LAB_0002467c;\n            }\n            break;\n          }\n          iVar3 = FUN_000227d8();\n        }" { (expression_statement "iVar3 = FUN_000236cc(param_2);" (assignment_expression "iVar3 = FUN_000236cc(param_2)" identifier = (call_expression "FUN_000236cc(param_2)" identifier (argument_list "(param_2)" ( identifier )))) ;) (if_statement "if (iVar3 != 0) break;" if (parenthesized_expression "(iVar3 != 0)" ( (binary_expression "iVar3 != 0" identifier != number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar8 = iVar8 + 1;" (assignment_expression "iVar8 = iVar8 + 1" identifier = (binary_expression "iVar8 + 1" identifier + number_literal)) ;) (if_statement "if (*pcVar9 != '#') {\n            if (*pcVar9 == '!') goto LAB_00024664;\n            iVar3 = FUN_00022170(PTR_UINT_0012a18c + 0xf0);\n            if (iVar3 == 0) {\n              cVar5 = *pcVar9;\n              goto LAB_0002467c;\n            }\n            break;\n          }" if (parenthesized_expression "(*pcVar9 != '#')" ( (binary_expression "*pcVar9 != '#'" (pointer_expression "*pcVar9" * identifier) != (char_literal "'#'" ' character ')) )) (compound_statement "{\n            if (*pcVar9 == '!') goto LAB_00024664;\n            iVar3 = FUN_00022170(PTR_UINT_0012a18c + 0xf0);\n            if (iVar3 == 0) {\n              cVar5 = *pcVar9;\n              goto LAB_0002467c;\n            }\n            break;\n          }" { (if_statement "if (*pcVar9 == '!') goto LAB_00024664;" if (parenthesized_expression "(*pcVar9 == '!')" ( (binary_expression "*pcVar9 == '!'" (pointer_expression "*pcVar9" * identifier) == (char_literal "'!'" ' character ')) )) (goto_statement "goto LAB_00024664;" goto statement_identifier ;)) (expression_statement "iVar3 = FUN_00022170(PTR_UINT_0012a18c + 0xf0);" (assignment_expression "iVar3 = FUN_00022170(PTR_UINT_0012a18c + 0xf0)" identifier = (call_expression "FUN_00022170(PTR_UINT_0012a18c + 0xf0)" identifier (argument_list "(PTR_UINT_0012a18c + 0xf0)" ( (binary_expression "PTR_UINT_0012a18c + 0xf0" identifier + number_literal) )))) ;) (if_statement "if (iVar3 == 0) {\n              cVar5 = *pcVar9;\n              goto LAB_0002467c;\n            }" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (compound_statement "{\n              cVar5 = *pcVar9;\n              goto LAB_0002467c;\n            }" { (expression_statement "cVar5 = *pcVar9;" (assignment_expression "cVar5 = *pcVar9" identifier = (pointer_expression "*pcVar9" * identifier)) ;) (goto_statement "goto LAB_0002467c;" goto statement_identifier ;) })) (break_statement "break;" break ;) })) (expression_statement "iVar3 = FUN_000227d8();" (assignment_expression "iVar3 = FUN_000227d8()" identifier = (call_expression "FUN_000227d8()" identifier (argument_list "()" ( )))) ;) }) while (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) ;) })) }) (else_clause "else {\nLAB_000245ec:\n      puVar6 = PTR_UINT_0012a18c + 0xf0;\nLAB_00024518:\n      iVar3 = FUN_00022170(puVar6);\n    }" else (compound_statement "{\nLAB_000245ec:\n      puVar6 = PTR_UINT_0012a18c + 0xf0;\nLAB_00024518:\n      iVar3 = FUN_00022170(puVar6);\n    }" { (labeled_statement "LAB_000245ec:\n      puVar6 = PTR_UINT_0012a18c + 0xf0;" statement_identifier : (expression_statement "puVar6 = PTR_UINT_0012a18c + 0xf0;" (assignment_expression "puVar6 = PTR_UINT_0012a18c + 0xf0" identifier = (binary_expression "PTR_UINT_0012a18c + 0xf0" identifier + number_literal)) ;)) (labeled_statement "LAB_00024518:\n      iVar3 = FUN_00022170(puVar6);" statement_identifier : (expression_statement "iVar3 = FUN_00022170(puVar6);" (assignment_expression "iVar3 = FUN_00022170(puVar6)" identifier = (call_expression "FUN_00022170(puVar6)" identifier (argument_list "(puVar6)" ( identifier )))) ;)) })))) (labeled_statement "LAB_00024530:\n    (*(code *)PTR_free_0012b168)(uVar2);" statement_identifier : (expression_statement "(*(code *)PTR_free_0012b168)(uVar2);" (call_expression "(*(code *)PTR_free_0012b168)(uVar2)" (parenthesized_expression "(*(code *)PTR_free_0012b168)" ( (pointer_expression "*(code *)PTR_free_0012b168" * (cast_expression "(code *)PTR_free_0012b168" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(uVar2)" ( identifier ))) ;)) }) while (parenthesized_expression "( true )" ( true )) ;)) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == (char_literal ' character ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (char_literal ' escape_sequence ')) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (char_literal ' escape_sequence ')) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (char_literal ' escape_sequence ')) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (char_literal ' escape_sequence ')) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (char_literal ' escape_sequence ')) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (char_literal ' escape_sequence ')) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (char_literal ' escape_sequence ')) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (char_literal ' escape_sequence ')) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == (char_literal ' character ')) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (char_literal ' escape_sequence ')) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (char_literal ' escape_sequence ')) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (char_literal ' escape_sequence ')) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (char_literal ' escape_sequence ')) ;) }))) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (call_expression IDENT (argument_list ( IDENT , (field_expression (subscript_expression IDENT [ LIT ]) . field_identifier) )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT ))) ;) (labeled_statement statement_identifier : (do_statement do (compound_statement { (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 ( ))) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (char_literal ' escape_sequence ')) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (char_literal ' escape_sequence ')) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (char_literal ' escape_sequence ')) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (char_literal ' character ')) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == (char_literal ' character ')) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( LIT , IDENT ))) ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT != (char_literal ' character ')) )) (goto_statement goto statement_identifier ;))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT ))) ;) }))) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (binary_expression IDENT * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) + LIT) )))) ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) | LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != (char_literal ' character ')) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == (char_literal ' character ')) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (goto_statement goto statement_identifier ;) })) (break_statement break ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) }) while (parenthesized_expression ( (binary_expression IDENT == LIT) )) ;) })) }) (else_clause else (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;)) })))) (labeled_statement statement_identifier : (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT ))) ;)) }) while (parenthesized_expression ( BOOL )) ;)) })))
(function_definition "int FUN_0002444c(char *param_1,undefined *param_2)\n\n{\n  undefined *puVar1;\n  undefined4 uVar2;\n  int iVar3;\n  undefined1 uVar4;\n  char cVar5;\n  undefined *puVar6;\n  undefined4 uVar7;\n  int iVar8;\n  char *pcVar9;\n  undefined4 local_34 [2];\n  int local_2c;\n  \n  puVar1 = PTR___stack_chk_guard_0012b14c;\n  pcVar9 = *(char **)PTR_DAT_0012a304;\n  local_2c = *(int *)PTR___stack_chk_guard_0012b14c;\n  uVar2 = FUN_0001a2b4(*(undefined4 *)(pcVar9 + 0x18));\n  iVar3 = FUN_000227d8();\n  if (iVar3 != 0) goto LAB_00024530;\n  if (*pcVar9 == '\"') {\n    iVar3 = FUN_000227d8();\n    if (iVar3 != 0) goto LAB_00024530;\n    if (*pcVar9 == '$') {\n      param_2 = (undefined *)((uint)param_2 & 4);\n      if (param_2 == (undefined *)0x0) {\n        puVar6 = PTR_UINT_0012a18c + 0xfc;\n        goto LAB_00024518;\n      }\n      param_1[0] = '\0';\n      param_1[1] = '\0';\n      param_1[2] = '\0';\n      param_1[3] = '\x1e';\n      iVar3 = FUN_000227d8();\n    }\n    else {\n      param_1[0] = '\0';\n      param_1[1] = '\0';\n      param_1[2] = '\0';\n      param_1[3] = '\x1d';\n      iVar3 = FUN_000236cc((uint)param_2 & 0xfc);\n      if (iVar3 != 0) goto LAB_00024530;\n      iVar3 = FUN_000227d8();\n    }\n    if (iVar3 != 0) goto LAB_00024530;\n    uVar7 = *(undefined4 *)(pcVar9 + 0x2c);\n    uVar4 = (undefined1)*(undefined4 *)param_1;\n  }\n  else {\n    uVar4 = 0x1c;\n    if (*pcVar9 == ' ') goto LAB_000245e0;\n    uVar7 = *(undefined4 *)(pcVar9 + 0x2c);\n    param_1[0] = '\0';\n    param_1[1] = '\0';\n    param_1[2] = '\0';\n    param_1[3] = '\x1c';\n  }\n  local_34[0] = CONCAT13(uVar4,local_34[0]._1_3_);\n  FUN_0001fdb0(uVar7,1,local_34);\n  FUN_00021240(uVar2);\n  (*(code *)PTR_free_0012b168)(uVar2);\nLAB_00024598:\n  do {\n    if (local_2c == *(int *)puVar1) {\n      return iVar3;\n    }\n    (*(code *)PTR___stack_chk_fail_0012b0c8)();\nLAB_000245e0:\n    if (((uint)param_2 & 8) == 0) {\n      param_1[0] = '\0';\n      param_1[1] = '\0';\n      param_1[2] = '\0';\n      param_1[3] = '.';\n      local_34[0] = uVar2;\n      iVar3 = FUN_000227d8();\n      if (iVar3 == 0) {\n        iVar8 = 0;\n        if (*pcVar9 == '!') {\nLAB_00024664:\n          FUN_0002000c(0x2e,iVar8);\n          cVar5 = *pcVar9;\nLAB_0002467c:\n          if (cVar5 != '!') goto LAB_000245ec;\n          param_1 = pcVar9 + 0xe0;\n          param_2 = PTR_LAB_0012a258 + -0x5b4;\n          iVar3 = FUN_0001fa4c(param_1,local_34);\n          if (iVar3 == -1) {\n            FUN_00020698(uVar2);\n            iVar3 = FUN_0001fa4c(param_1,local_34);\n          }\n          else {\n            (*(code *)PTR_free_0012b168)(uVar2);\n          }\n          FUN_0001fef0(*(undefined4 *)(pcVar9 + 0x2c),\n                       *(undefined4 *)\n                        (iVar3 * *(int *)(pcVar9 + 0xec) + *(int *)(pcVar9 + 0xe0) + 4));\n          iVar3 = FUN_000227d8();\n          goto LAB_00024598;\n        }\n        param_2 = (undefined *)((uint)param_2 & 0xf8 | 4);\n        param_1 = PTR_LAB_0012a258 + 0x36cc;\n        iVar8 = 0;\n        do {\n          iVar3 = FUN_000236cc(param_2);\n          if (iVar3 != 0) break;\n          iVar8 = iVar8 + 1;\n          if (*pcVar9 != '#') {\n            if (*pcVar9 == '!') goto LAB_00024664;\n            iVar3 = FUN_00022170(PTR_UINT_0012a18c + 0xf0);\n            if (iVar3 == 0) {\n              cVar5 = *pcVar9;\n              goto LAB_0002467c;\n            }\n            break;\n          }\n          iVar3 = FUN_000227d8();\n        } while (iVar3 == 0);\n      }\n    }\n    else {\nLAB_000245ec:\n      puVar6 = PTR_UINT_0012a18c + 0xf0;\nLAB_00024518:\n      iVar3 = FUN_00022170(puVar6);\n    }\nLAB_00024530:\n    (*(code *)PTR_free_0012b168)(uVar2);\n  } while( true );\n}" (primitive_type "int") (function_declarator "FUN_0002444c(char *param_1,undefined *param_2)" (identifier "FUN_0002444c") (parameter_list "(char *param_1,undefined *param_2)" (( "(") (parameter_declaration "char *param_1" (primitive_type "char") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "undefined *param_2" (type_identifier "undefined") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) () ")"))) (compound_statement "{\n  undefined *puVar1;\n  undefined4 uVar2;\n  int iVar3;\n  undefined1 uVar4;\n  char cVar5;\n  undefined *puVar6;\n  undefined4 uVar7;\n  int iVar8;\n  char *pcVar9;\n  undefined4 local_34 [2];\n  int local_2c;\n  \n  puVar1 = PTR___stack_chk_guard_0012b14c;\n  pcVar9 = *(char **)PTR_DAT_0012a304;\n  local_2c = *(int *)PTR___stack_chk_guard_0012b14c;\n  uVar2 = FUN_0001a2b4(*(undefined4 *)(pcVar9 + 0x18));\n  iVar3 = FUN_000227d8();\n  if (iVar3 != 0) goto LAB_00024530;\n  if (*pcVar9 == '\"') {\n    iVar3 = FUN_000227d8();\n    if (iVar3 != 0) goto LAB_00024530;\n    if (*pcVar9 == '$') {\n      param_2 = (undefined *)((uint)param_2 & 4);\n      if (param_2 == (undefined *)0x0) {\n        puVar6 = PTR_UINT_0012a18c + 0xfc;\n        goto LAB_00024518;\n      }\n      param_1[0] = '\0';\n      param_1[1] = '\0';\n      param_1[2] = '\0';\n      param_1[3] = '\x1e';\n      iVar3 = FUN_000227d8();\n    }\n    else {\n      param_1[0] = '\0';\n      param_1[1] = '\0';\n      param_1[2] = '\0';\n      param_1[3] = '\x1d';\n      iVar3 = FUN_000236cc((uint)param_2 & 0xfc);\n      if (iVar3 != 0) goto LAB_00024530;\n      iVar3 = FUN_000227d8();\n    }\n    if (iVar3 != 0) goto LAB_00024530;\n    uVar7 = *(undefined4 *)(pcVar9 + 0x2c);\n    uVar4 = (undefined1)*(undefined4 *)param_1;\n  }\n  else {\n    uVar4 = 0x1c;\n    if (*pcVar9 == ' ') goto LAB_000245e0;\n    uVar7 = *(undefined4 *)(pcVar9 + 0x2c);\n    param_1[0] = '\0';\n    param_1[1] = '\0';\n    param_1[2] = '\0';\n    param_1[3] = '\x1c';\n  }\n  local_34[0] = CONCAT13(uVar4,local_34[0]._1_3_);\n  FUN_0001fdb0(uVar7,1,local_34);\n  FUN_00021240(uVar2);\n  (*(code *)PTR_free_0012b168)(uVar2);\nLAB_00024598:\n  do {\n    if (local_2c == *(int *)puVar1) {\n      return iVar3;\n    }\n    (*(code *)PTR___stack_chk_fail_0012b0c8)();\nLAB_000245e0:\n    if (((uint)param_2 & 8) == 0) {\n      param_1[0] = '\0';\n      param_1[1] = '\0';\n      param_1[2] = '\0';\n      param_1[3] = '.';\n      local_34[0] = uVar2;\n      iVar3 = FUN_000227d8();\n      if (iVar3 == 0) {\n        iVar8 = 0;\n        if (*pcVar9 == '!') {\nLAB_00024664:\n          FUN_0002000c(0x2e,iVar8);\n          cVar5 = *pcVar9;\nLAB_0002467c:\n          if (cVar5 != '!') goto LAB_000245ec;\n          param_1 = pcVar9 + 0xe0;\n          param_2 = PTR_LAB_0012a258 + -0x5b4;\n          iVar3 = FUN_0001fa4c(param_1,local_34);\n          if (iVar3 == -1) {\n            FUN_00020698(uVar2);\n            iVar3 = FUN_0001fa4c(param_1,local_34);\n          }\n          else {\n            (*(code *)PTR_free_0012b168)(uVar2);\n          }\n          FUN_0001fef0(*(undefined4 *)(pcVar9 + 0x2c),\n                       *(undefined4 *)\n                        (iVar3 * *(int *)(pcVar9 + 0xec) + *(int *)(pcVar9 + 0xe0) + 4));\n          iVar3 = FUN_000227d8();\n          goto LAB_00024598;\n        }\n        param_2 = (undefined *)((uint)param_2 & 0xf8 | 4);\n        param_1 = PTR_LAB_0012a258 + 0x36cc;\n        iVar8 = 0;\n        do {\n          iVar3 = FUN_000236cc(param_2);\n          if (iVar3 != 0) break;\n          iVar8 = iVar8 + 1;\n          if (*pcVar9 != '#') {\n            if (*pcVar9 == '!') goto LAB_00024664;\n            iVar3 = FUN_00022170(PTR_UINT_0012a18c + 0xf0);\n            if (iVar3 == 0) {\n              cVar5 = *pcVar9;\n              goto LAB_0002467c;\n            }\n            break;\n          }\n          iVar3 = FUN_000227d8();\n        } while (iVar3 == 0);\n      }\n    }\n    else {\nLAB_000245ec:\n      puVar6 = PTR_UINT_0012a18c + 0xf0;\nLAB_00024518:\n      iVar3 = FUN_00022170(puVar6);\n    }\nLAB_00024530:\n    (*(code *)PTR_free_0012b168)(uVar2);\n  } while( true );\n}" ({ "{") (declaration "undefined *puVar1;" (type_identifier "undefined") (pointer_declarator "*puVar1" (* "*") (identifier "puVar1")) (; ";")) (declaration "undefined4 uVar2;" (type_identifier "undefined4") (identifier "uVar2") (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (declaration "undefined1 uVar4;" (type_identifier "undefined1") (identifier "uVar4") (; ";")) (declaration "char cVar5;" (primitive_type "char") (identifier "cVar5") (; ";")) (declaration "undefined *puVar6;" (type_identifier "undefined") (pointer_declarator "*puVar6" (* "*") (identifier "puVar6")) (; ";")) (declaration "undefined4 uVar7;" (type_identifier "undefined4") (identifier "uVar7") (; ";")) (declaration "int iVar8;" (primitive_type "int") (identifier "iVar8") (; ";")) (declaration "char *pcVar9;" (primitive_type "char") (pointer_declarator "*pcVar9" (* "*") (identifier "pcVar9")) (; ";")) (declaration "undefined4 local_34 [2];" (type_identifier "undefined4") (array_declarator "local_34 [2]" (identifier "local_34") ([ "[") (number_literal "2") (] "]")) (; ";")) (declaration "int local_2c;" (primitive_type "int") (identifier "local_2c") (; ";")) (expression_statement "puVar1 = PTR___stack_chk_guard_0012b14c;" (assignment_expression "puVar1 = PTR___stack_chk_guard_0012b14c" (identifier "puVar1") (= "=") (identifier "PTR___stack_chk_guard_0012b14c")) (; ";")) (expression_statement "pcVar9 = *(char **)PTR_DAT_0012a304;" (assignment_expression "pcVar9 = *(char **)PTR_DAT_0012a304" (identifier "pcVar9") (= "=") (pointer_expression "*(char **)PTR_DAT_0012a304" (* "*") (cast_expression "(char **)PTR_DAT_0012a304" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "PTR_DAT_0012a304")))) (; ";")) (expression_statement "local_2c = *(int *)PTR___stack_chk_guard_0012b14c;" (assignment_expression "local_2c = *(int *)PTR___stack_chk_guard_0012b14c" (identifier "local_2c") (= "=") (pointer_expression "*(int *)PTR___stack_chk_guard_0012b14c" (* "*") (cast_expression "(int *)PTR___stack_chk_guard_0012b14c" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_guard_0012b14c")))) (; ";")) (expression_statement "uVar2 = FUN_0001a2b4(*(undefined4 *)(pcVar9 + 0x18));" (assignment_expression "uVar2 = FUN_0001a2b4(*(undefined4 *)(pcVar9 + 0x18))" (identifier "uVar2") (= "=") (call_expression "FUN_0001a2b4(*(undefined4 *)(pcVar9 + 0x18))" (identifier "FUN_0001a2b4") (argument_list "(*(undefined4 *)(pcVar9 + 0x18))" (( "(") (pointer_expression "*(undefined4 *)(pcVar9 + 0x18)" (* "*") (cast_expression "(undefined4 *)(pcVar9 + 0x18)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar9 + 0x18)" (( "(") (binary_expression "pcVar9 + 0x18" (identifier "pcVar9") (+ "+") (number_literal "0x18")) () ")")))) () ")")))) (; ";")) (expression_statement "iVar3 = FUN_000227d8();" (assignment_expression "iVar3 = FUN_000227d8()" (identifier "iVar3") (= "=") (call_expression "FUN_000227d8()" (identifier "FUN_000227d8") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (iVar3 != 0) goto LAB_00024530;" (if "if") (parenthesized_expression "(iVar3 != 0)" (( "(") (binary_expression "iVar3 != 0" (identifier "iVar3") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_00024530;" (goto "goto") (statement_identifier "LAB_00024530") (; ";"))) (if_statement "if (*pcVar9 == '\"') {\n    iVar3 = FUN_000227d8();\n    if (iVar3 != 0) goto LAB_00024530;\n    if (*pcVar9 == '$') {\n      param_2 = (undefined *)((uint)param_2 & 4);\n      if (param_2 == (undefined *)0x0) {\n        puVar6 = PTR_UINT_0012a18c + 0xfc;\n        goto LAB_00024518;\n      }\n      param_1[0] = '\0';\n      param_1[1] = '\0';\n      param_1[2] = '\0';\n      param_1[3] = '\x1e';\n      iVar3 = FUN_000227d8();\n    }\n    else {\n      param_1[0] = '\0';\n      param_1[1] = '\0';\n      param_1[2] = '\0';\n      param_1[3] = '\x1d';\n      iVar3 = FUN_000236cc((uint)param_2 & 0xfc);\n      if (iVar3 != 0) goto LAB_00024530;\n      iVar3 = FUN_000227d8();\n    }\n    if (iVar3 != 0) goto LAB_00024530;\n    uVar7 = *(undefined4 *)(pcVar9 + 0x2c);\n    uVar4 = (undefined1)*(undefined4 *)param_1;\n  }\n  else {\n    uVar4 = 0x1c;\n    if (*pcVar9 == ' ') goto LAB_000245e0;\n    uVar7 = *(undefined4 *)(pcVar9 + 0x2c);\n    param_1[0] = '\0';\n    param_1[1] = '\0';\n    param_1[2] = '\0';\n    param_1[3] = '\x1c';\n  }" (if "if") (parenthesized_expression "(*pcVar9 == '\"')" (( "(") (binary_expression "*pcVar9 == '\"'" (pointer_expression "*pcVar9" (* "*") (identifier "pcVar9")) (== "==") (char_literal "'\"'" (' "'") (escape_sequence "\"") (' "'"))) () ")")) (compound_statement "{\n    iVar3 = FUN_000227d8();\n    if (iVar3 != 0) goto LAB_00024530;\n    if (*pcVar9 == '$') {\n      param_2 = (undefined *)((uint)param_2 & 4);\n      if (param_2 == (undefined *)0x0) {\n        puVar6 = PTR_UINT_0012a18c + 0xfc;\n        goto LAB_00024518;\n      }\n      param_1[0] = '\0';\n      param_1[1] = '\0';\n      param_1[2] = '\0';\n      param_1[3] = '\x1e';\n      iVar3 = FUN_000227d8();\n    }\n    else {\n      param_1[0] = '\0';\n      param_1[1] = '\0';\n      param_1[2] = '\0';\n      param_1[3] = '\x1d';\n      iVar3 = FUN_000236cc((uint)param_2 & 0xfc);\n      if (iVar3 != 0) goto LAB_00024530;\n      iVar3 = FUN_000227d8();\n    }\n    if (iVar3 != 0) goto LAB_00024530;\n    uVar7 = *(undefined4 *)(pcVar9 + 0x2c);\n    uVar4 = (undefined1)*(undefined4 *)param_1;\n  }" ({ "{") (expression_statement "iVar3 = FUN_000227d8();" (assignment_expression "iVar3 = FUN_000227d8()" (identifier "iVar3") (= "=") (call_expression "FUN_000227d8()" (identifier "FUN_000227d8") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (iVar3 != 0) goto LAB_00024530;" (if "if") (parenthesized_expression "(iVar3 != 0)" (( "(") (binary_expression "iVar3 != 0" (identifier "iVar3") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_00024530;" (goto "goto") (statement_identifier "LAB_00024530") (; ";"))) (if_statement "if (*pcVar9 == '$') {\n      param_2 = (undefined *)((uint)param_2 & 4);\n      if (param_2 == (undefined *)0x0) {\n        puVar6 = PTR_UINT_0012a18c + 0xfc;\n        goto LAB_00024518;\n      }\n      param_1[0] = '\0';\n      param_1[1] = '\0';\n      param_1[2] = '\0';\n      param_1[3] = '\x1e';\n      iVar3 = FUN_000227d8();\n    }\n    else {\n      param_1[0] = '\0';\n      param_1[1] = '\0';\n      param_1[2] = '\0';\n      param_1[3] = '\x1d';\n      iVar3 = FUN_000236cc((uint)param_2 & 0xfc);\n      if (iVar3 != 0) goto LAB_00024530;\n      iVar3 = FUN_000227d8();\n    }" (if "if") (parenthesized_expression "(*pcVar9 == '$')" (( "(") (binary_expression "*pcVar9 == '$'" (pointer_expression "*pcVar9" (* "*") (identifier "pcVar9")) (== "==") (char_literal "'$'" (' "'") (character "$") (' "'"))) () ")")) (compound_statement "{\n      param_2 = (undefined *)((uint)param_2 & 4);\n      if (param_2 == (undefined *)0x0) {\n        puVar6 = PTR_UINT_0012a18c + 0xfc;\n        goto LAB_00024518;\n      }\n      param_1[0] = '\0';\n      param_1[1] = '\0';\n      param_1[2] = '\0';\n      param_1[3] = '\x1e';\n      iVar3 = FUN_000227d8();\n    }" ({ "{") (expression_statement "param_2 = (undefined *)((uint)param_2 & 4);" (assignment_expression "param_2 = (undefined *)((uint)param_2 & 4)" (identifier "param_2") (= "=") (cast_expression "(undefined *)((uint)param_2 & 4)" (( "(") (type_descriptor "undefined *" (type_identifier "undefined") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((uint)param_2 & 4)" (( "(") (binary_expression "(uint)param_2 & 4" (cast_expression "(uint)param_2" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "param_2")) (& "&") (number_literal "4")) () ")")))) (; ";")) (if_statement "if (param_2 == (undefined *)0x0) {\n        puVar6 = PTR_UINT_0012a18c + 0xfc;\n        goto LAB_00024518;\n      }" (if "if") (parenthesized_expression "(param_2 == (undefined *)0x0)" (( "(") (binary_expression "param_2 == (undefined *)0x0" (identifier "param_2") (== "==") (cast_expression "(undefined *)0x0" (( "(") (type_descriptor "undefined *" (type_identifier "undefined") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        puVar6 = PTR_UINT_0012a18c + 0xfc;\n        goto LAB_00024518;\n      }" ({ "{") (expression_statement "puVar6 = PTR_UINT_0012a18c + 0xfc;" (assignment_expression "puVar6 = PTR_UINT_0012a18c + 0xfc" (identifier "puVar6") (= "=") (binary_expression "PTR_UINT_0012a18c + 0xfc" (identifier "PTR_UINT_0012a18c") (+ "+") (number_literal "0xfc"))) (; ";")) (goto_statement "goto LAB_00024518;" (goto "goto") (statement_identifier "LAB_00024518") (; ";")) (} "}"))) (expression_statement "param_1[0] = '\0';" (assignment_expression "param_1[0] = '\0'" (subscript_expression "param_1[0]" (identifier "param_1") ([ "[") (number_literal "0") (] "]")) (= "=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (; ";")) (expression_statement "param_1[1] = '\0';" (assignment_expression "param_1[1] = '\0'" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (= "=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (; ";")) (expression_statement "param_1[2] = '\0';" (assignment_expression "param_1[2] = '\0'" (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")) (= "=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (; ";")) (expression_statement "param_1[3] = '\x1e';" (assignment_expression "param_1[3] = '\x1e'" (subscript_expression "param_1[3]" (identifier "param_1") ([ "[") (number_literal "3") (] "]")) (= "=") (char_literal "'\x1e'" (' "'") (escape_sequence "\x1e") (' "'"))) (; ";")) (expression_statement "iVar3 = FUN_000227d8();" (assignment_expression "iVar3 = FUN_000227d8()" (identifier "iVar3") (= "=") (call_expression "FUN_000227d8()" (identifier "FUN_000227d8") (argument_list "()" (( "(") () ")")))) (; ";")) (} "}")) (else_clause "else {\n      param_1[0] = '\0';\n      param_1[1] = '\0';\n      param_1[2] = '\0';\n      param_1[3] = '\x1d';\n      iVar3 = FUN_000236cc((uint)param_2 & 0xfc);\n      if (iVar3 != 0) goto LAB_00024530;\n      iVar3 = FUN_000227d8();\n    }" (else "else") (compound_statement "{\n      param_1[0] = '\0';\n      param_1[1] = '\0';\n      param_1[2] = '\0';\n      param_1[3] = '\x1d';\n      iVar3 = FUN_000236cc((uint)param_2 & 0xfc);\n      if (iVar3 != 0) goto LAB_00024530;\n      iVar3 = FUN_000227d8();\n    }" ({ "{") (expression_statement "param_1[0] = '\0';" (assignment_expression "param_1[0] = '\0'" (subscript_expression "param_1[0]" (identifier "param_1") ([ "[") (number_literal "0") (] "]")) (= "=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (; ";")) (expression_statement "param_1[1] = '\0';" (assignment_expression "param_1[1] = '\0'" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (= "=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (; ";")) (expression_statement "param_1[2] = '\0';" (assignment_expression "param_1[2] = '\0'" (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")) (= "=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (; ";")) (expression_statement "param_1[3] = '\x1d';" (assignment_expression "param_1[3] = '\x1d'" (subscript_expression "param_1[3]" (identifier "param_1") ([ "[") (number_literal "3") (] "]")) (= "=") (char_literal "'\x1d'" (' "'") (escape_sequence "\x1d") (' "'"))) (; ";")) (expression_statement "iVar3 = FUN_000236cc((uint)param_2 & 0xfc);" (assignment_expression "iVar3 = FUN_000236cc((uint)param_2 & 0xfc)" (identifier "iVar3") (= "=") (call_expression "FUN_000236cc((uint)param_2 & 0xfc)" (identifier "FUN_000236cc") (argument_list "((uint)param_2 & 0xfc)" (( "(") (binary_expression "(uint)param_2 & 0xfc" (cast_expression "(uint)param_2" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "param_2")) (& "&") (number_literal "0xfc")) () ")")))) (; ";")) (if_statement "if (iVar3 != 0) goto LAB_00024530;" (if "if") (parenthesized_expression "(iVar3 != 0)" (( "(") (binary_expression "iVar3 != 0" (identifier "iVar3") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_00024530;" (goto "goto") (statement_identifier "LAB_00024530") (; ";"))) (expression_statement "iVar3 = FUN_000227d8();" (assignment_expression "iVar3 = FUN_000227d8()" (identifier "iVar3") (= "=") (call_expression "FUN_000227d8()" (identifier "FUN_000227d8") (argument_list "()" (( "(") () ")")))) (; ";")) (} "}")))) (if_statement "if (iVar3 != 0) goto LAB_00024530;" (if "if") (parenthesized_expression "(iVar3 != 0)" (( "(") (binary_expression "iVar3 != 0" (identifier "iVar3") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_00024530;" (goto "goto") (statement_identifier "LAB_00024530") (; ";"))) (expression_statement "uVar7 = *(undefined4 *)(pcVar9 + 0x2c);" (assignment_expression "uVar7 = *(undefined4 *)(pcVar9 + 0x2c)" (identifier "uVar7") (= "=") (pointer_expression "*(undefined4 *)(pcVar9 + 0x2c)" (* "*") (cast_expression "(undefined4 *)(pcVar9 + 0x2c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar9 + 0x2c)" (( "(") (binary_expression "pcVar9 + 0x2c" (identifier "pcVar9") (+ "+") (number_literal "0x2c")) () ")"))))) (; ";")) (expression_statement "uVar4 = (undefined1)*(undefined4 *)param_1;" (assignment_expression "uVar4 = (undefined1)*(undefined4 *)param_1" (identifier "uVar4") (= "=") (binary_expression "(undefined1)*(undefined4 *)param_1" (parenthesized_expression "(undefined1)" (( "(") (identifier "undefined1") () ")")) (* "*") (cast_expression "(undefined4 *)param_1" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "param_1")))) (; ";")) (} "}")) (else_clause "else {\n    uVar4 = 0x1c;\n    if (*pcVar9 == ' ') goto LAB_000245e0;\n    uVar7 = *(undefined4 *)(pcVar9 + 0x2c);\n    param_1[0] = '\0';\n    param_1[1] = '\0';\n    param_1[2] = '\0';\n    param_1[3] = '\x1c';\n  }" (else "else") (compound_statement "{\n    uVar4 = 0x1c;\n    if (*pcVar9 == ' ') goto LAB_000245e0;\n    uVar7 = *(undefined4 *)(pcVar9 + 0x2c);\n    param_1[0] = '\0';\n    param_1[1] = '\0';\n    param_1[2] = '\0';\n    param_1[3] = '\x1c';\n  }" ({ "{") (expression_statement "uVar4 = 0x1c;" (assignment_expression "uVar4 = 0x1c" (identifier "uVar4") (= "=") (number_literal "0x1c")) (; ";")) (if_statement "if (*pcVar9 == ' ') goto LAB_000245e0;" (if "if") (parenthesized_expression "(*pcVar9 == ' ')" (( "(") (binary_expression "*pcVar9 == ' '" (pointer_expression "*pcVar9" (* "*") (identifier "pcVar9")) (== "==") (char_literal "' '" (' "'") (character " ") (' "'"))) () ")")) (goto_statement "goto LAB_000245e0;" (goto "goto") (statement_identifier "LAB_000245e0") (; ";"))) (expression_statement "uVar7 = *(undefined4 *)(pcVar9 + 0x2c);" (assignment_expression "uVar7 = *(undefined4 *)(pcVar9 + 0x2c)" (identifier "uVar7") (= "=") (pointer_expression "*(undefined4 *)(pcVar9 + 0x2c)" (* "*") (cast_expression "(undefined4 *)(pcVar9 + 0x2c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar9 + 0x2c)" (( "(") (binary_expression "pcVar9 + 0x2c" (identifier "pcVar9") (+ "+") (number_literal "0x2c")) () ")"))))) (; ";")) (expression_statement "param_1[0] = '\0';" (assignment_expression "param_1[0] = '\0'" (subscript_expression "param_1[0]" (identifier "param_1") ([ "[") (number_literal "0") (] "]")) (= "=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (; ";")) (expression_statement "param_1[1] = '\0';" (assignment_expression "param_1[1] = '\0'" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (= "=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (; ";")) (expression_statement "param_1[2] = '\0';" (assignment_expression "param_1[2] = '\0'" (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")) (= "=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (; ";")) (expression_statement "param_1[3] = '\x1c';" (assignment_expression "param_1[3] = '\x1c'" (subscript_expression "param_1[3]" (identifier "param_1") ([ "[") (number_literal "3") (] "]")) (= "=") (char_literal "'\x1c'" (' "'") (escape_sequence "\x1c") (' "'"))) (; ";")) (} "}")))) (expression_statement "local_34[0] = CONCAT13(uVar4,local_34[0]._1_3_);" (assignment_expression "local_34[0] = CONCAT13(uVar4,local_34[0]._1_3_)" (subscript_expression "local_34[0]" (identifier "local_34") ([ "[") (number_literal "0") (] "]")) (= "=") (call_expression "CONCAT13(uVar4,local_34[0]._1_3_)" (identifier "CONCAT13") (argument_list "(uVar4,local_34[0]._1_3_)" (( "(") (identifier "uVar4") (, ",") (field_expression "local_34[0]._1_3_" (subscript_expression "local_34[0]" (identifier "local_34") ([ "[") (number_literal "0") (] "]")) (. ".") (field_identifier "_1_3_")) () ")")))) (; ";")) (expression_statement "FUN_0001fdb0(uVar7,1,local_34);" (call_expression "FUN_0001fdb0(uVar7,1,local_34)" (identifier "FUN_0001fdb0") (argument_list "(uVar7,1,local_34)" (( "(") (identifier "uVar7") (, ",") (number_literal "1") (, ",") (identifier "local_34") () ")"))) (; ";")) (expression_statement "FUN_00021240(uVar2);" (call_expression "FUN_00021240(uVar2)" (identifier "FUN_00021240") (argument_list "(uVar2)" (( "(") (identifier "uVar2") () ")"))) (; ";")) (expression_statement "(*(code *)PTR_free_0012b168)(uVar2);" (call_expression "(*(code *)PTR_free_0012b168)(uVar2)" (parenthesized_expression "(*(code *)PTR_free_0012b168)" (( "(") (pointer_expression "*(code *)PTR_free_0012b168" (* "*") (cast_expression "(code *)PTR_free_0012b168" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_free_0012b168"))) () ")")) (argument_list "(uVar2)" (( "(") (identifier "uVar2") () ")"))) (; ";")) (labeled_statement "LAB_00024598:\n  do {\n    if (local_2c == *(int *)puVar1) {\n      return iVar3;\n    }\n    (*(code *)PTR___stack_chk_fail_0012b0c8)();\nLAB_000245e0:\n    if (((uint)param_2 & 8) == 0) {\n      param_1[0] = '\0';\n      param_1[1] = '\0';\n      param_1[2] = '\0';\n      param_1[3] = '.';\n      local_34[0] = uVar2;\n      iVar3 = FUN_000227d8();\n      if (iVar3 == 0) {\n        iVar8 = 0;\n        if (*pcVar9 == '!') {\nLAB_00024664:\n          FUN_0002000c(0x2e,iVar8);\n          cVar5 = *pcVar9;\nLAB_0002467c:\n          if (cVar5 != '!') goto LAB_000245ec;\n          param_1 = pcVar9 + 0xe0;\n          param_2 = PTR_LAB_0012a258 + -0x5b4;\n          iVar3 = FUN_0001fa4c(param_1,local_34);\n          if (iVar3 == -1) {\n            FUN_00020698(uVar2);\n            iVar3 = FUN_0001fa4c(param_1,local_34);\n          }\n          else {\n            (*(code *)PTR_free_0012b168)(uVar2);\n          }\n          FUN_0001fef0(*(undefined4 *)(pcVar9 + 0x2c),\n                       *(undefined4 *)\n                        (iVar3 * *(int *)(pcVar9 + 0xec) + *(int *)(pcVar9 + 0xe0) + 4));\n          iVar3 = FUN_000227d8();\n          goto LAB_00024598;\n        }\n        param_2 = (undefined *)((uint)param_2 & 0xf8 | 4);\n        param_1 = PTR_LAB_0012a258 + 0x36cc;\n        iVar8 = 0;\n        do {\n          iVar3 = FUN_000236cc(param_2);\n          if (iVar3 != 0) break;\n          iVar8 = iVar8 + 1;\n          if (*pcVar9 != '#') {\n            if (*pcVar9 == '!') goto LAB_00024664;\n            iVar3 = FUN_00022170(PTR_UINT_0012a18c + 0xf0);\n            if (iVar3 == 0) {\n              cVar5 = *pcVar9;\n              goto LAB_0002467c;\n            }\n            break;\n          }\n          iVar3 = FUN_000227d8();\n        } while (iVar3 == 0);\n      }\n    }\n    else {\nLAB_000245ec:\n      puVar6 = PTR_UINT_0012a18c + 0xf0;\nLAB_00024518:\n      iVar3 = FUN_00022170(puVar6);\n    }\nLAB_00024530:\n    (*(code *)PTR_free_0012b168)(uVar2);\n  } while( true );" (statement_identifier "LAB_00024598") (: ":") (do_statement "do {\n    if (local_2c == *(int *)puVar1) {\n      return iVar3;\n    }\n    (*(code *)PTR___stack_chk_fail_0012b0c8)();\nLAB_000245e0:\n    if (((uint)param_2 & 8) == 0) {\n      param_1[0] = '\0';\n      param_1[1] = '\0';\n      param_1[2] = '\0';\n      param_1[3] = '.';\n      local_34[0] = uVar2;\n      iVar3 = FUN_000227d8();\n      if (iVar3 == 0) {\n        iVar8 = 0;\n        if (*pcVar9 == '!') {\nLAB_00024664:\n          FUN_0002000c(0x2e,iVar8);\n          cVar5 = *pcVar9;\nLAB_0002467c:\n          if (cVar5 != '!') goto LAB_000245ec;\n          param_1 = pcVar9 + 0xe0;\n          param_2 = PTR_LAB_0012a258 + -0x5b4;\n          iVar3 = FUN_0001fa4c(param_1,local_34);\n          if (iVar3 == -1) {\n            FUN_00020698(uVar2);\n            iVar3 = FUN_0001fa4c(param_1,local_34);\n          }\n          else {\n            (*(code *)PTR_free_0012b168)(uVar2);\n          }\n          FUN_0001fef0(*(undefined4 *)(pcVar9 + 0x2c),\n                       *(undefined4 *)\n                        (iVar3 * *(int *)(pcVar9 + 0xec) + *(int *)(pcVar9 + 0xe0) + 4));\n          iVar3 = FUN_000227d8();\n          goto LAB_00024598;\n        }\n        param_2 = (undefined *)((uint)param_2 & 0xf8 | 4);\n        param_1 = PTR_LAB_0012a258 + 0x36cc;\n        iVar8 = 0;\n        do {\n          iVar3 = FUN_000236cc(param_2);\n          if (iVar3 != 0) break;\n          iVar8 = iVar8 + 1;\n          if (*pcVar9 != '#') {\n            if (*pcVar9 == '!') goto LAB_00024664;\n            iVar3 = FUN_00022170(PTR_UINT_0012a18c + 0xf0);\n            if (iVar3 == 0) {\n              cVar5 = *pcVar9;\n              goto LAB_0002467c;\n            }\n            break;\n          }\n          iVar3 = FUN_000227d8();\n        } while (iVar3 == 0);\n      }\n    }\n    else {\nLAB_000245ec:\n      puVar6 = PTR_UINT_0012a18c + 0xf0;\nLAB_00024518:\n      iVar3 = FUN_00022170(puVar6);\n    }\nLAB_00024530:\n    (*(code *)PTR_free_0012b168)(uVar2);\n  } while( true );" (do "do") (compound_statement "{\n    if (local_2c == *(int *)puVar1) {\n      return iVar3;\n    }\n    (*(code *)PTR___stack_chk_fail_0012b0c8)();\nLAB_000245e0:\n    if (((uint)param_2 & 8) == 0) {\n      param_1[0] = '\0';\n      param_1[1] = '\0';\n      param_1[2] = '\0';\n      param_1[3] = '.';\n      local_34[0] = uVar2;\n      iVar3 = FUN_000227d8();\n      if (iVar3 == 0) {\n        iVar8 = 0;\n        if (*pcVar9 == '!') {\nLAB_00024664:\n          FUN_0002000c(0x2e,iVar8);\n          cVar5 = *pcVar9;\nLAB_0002467c:\n          if (cVar5 != '!') goto LAB_000245ec;\n          param_1 = pcVar9 + 0xe0;\n          param_2 = PTR_LAB_0012a258 + -0x5b4;\n          iVar3 = FUN_0001fa4c(param_1,local_34);\n          if (iVar3 == -1) {\n            FUN_00020698(uVar2);\n            iVar3 = FUN_0001fa4c(param_1,local_34);\n          }\n          else {\n            (*(code *)PTR_free_0012b168)(uVar2);\n          }\n          FUN_0001fef0(*(undefined4 *)(pcVar9 + 0x2c),\n                       *(undefined4 *)\n                        (iVar3 * *(int *)(pcVar9 + 0xec) + *(int *)(pcVar9 + 0xe0) + 4));\n          iVar3 = FUN_000227d8();\n          goto LAB_00024598;\n        }\n        param_2 = (undefined *)((uint)param_2 & 0xf8 | 4);\n        param_1 = PTR_LAB_0012a258 + 0x36cc;\n        iVar8 = 0;\n        do {\n          iVar3 = FUN_000236cc(param_2);\n          if (iVar3 != 0) break;\n          iVar8 = iVar8 + 1;\n          if (*pcVar9 != '#') {\n            if (*pcVar9 == '!') goto LAB_00024664;\n            iVar3 = FUN_00022170(PTR_UINT_0012a18c + 0xf0);\n            if (iVar3 == 0) {\n              cVar5 = *pcVar9;\n              goto LAB_0002467c;\n            }\n            break;\n          }\n          iVar3 = FUN_000227d8();\n        } while (iVar3 == 0);\n      }\n    }\n    else {\nLAB_000245ec:\n      puVar6 = PTR_UINT_0012a18c + 0xf0;\nLAB_00024518:\n      iVar3 = FUN_00022170(puVar6);\n    }\nLAB_00024530:\n    (*(code *)PTR_free_0012b168)(uVar2);\n  }" ({ "{") (if_statement "if (local_2c == *(int *)puVar1) {\n      return iVar3;\n    }" (if "if") (parenthesized_expression "(local_2c == *(int *)puVar1)" (( "(") (binary_expression "local_2c == *(int *)puVar1" (identifier "local_2c") (== "==") (pointer_expression "*(int *)puVar1" (* "*") (cast_expression "(int *)puVar1" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar1")))) () ")")) (compound_statement "{\n      return iVar3;\n    }" ({ "{") (return_statement "return iVar3;" (return "return") (identifier "iVar3") (; ";")) (} "}"))) (expression_statement "(*(code *)PTR___stack_chk_fail_0012b0c8)();" (call_expression "(*(code *)PTR___stack_chk_fail_0012b0c8)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_0012b0c8)" (( "(") (pointer_expression "*(code *)PTR___stack_chk_fail_0012b0c8" (* "*") (cast_expression "(code *)PTR___stack_chk_fail_0012b0c8" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_fail_0012b0c8"))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (labeled_statement "LAB_000245e0:\n    if (((uint)param_2 & 8) == 0) {\n      param_1[0] = '\0';\n      param_1[1] = '\0';\n      param_1[2] = '\0';\n      param_1[3] = '.';\n      local_34[0] = uVar2;\n      iVar3 = FUN_000227d8();\n      if (iVar3 == 0) {\n        iVar8 = 0;\n        if (*pcVar9 == '!') {\nLAB_00024664:\n          FUN_0002000c(0x2e,iVar8);\n          cVar5 = *pcVar9;\nLAB_0002467c:\n          if (cVar5 != '!') goto LAB_000245ec;\n          param_1 = pcVar9 + 0xe0;\n          param_2 = PTR_LAB_0012a258 + -0x5b4;\n          iVar3 = FUN_0001fa4c(param_1,local_34);\n          if (iVar3 == -1) {\n            FUN_00020698(uVar2);\n            iVar3 = FUN_0001fa4c(param_1,local_34);\n          }\n          else {\n            (*(code *)PTR_free_0012b168)(uVar2);\n          }\n          FUN_0001fef0(*(undefined4 *)(pcVar9 + 0x2c),\n                       *(undefined4 *)\n                        (iVar3 * *(int *)(pcVar9 + 0xec) + *(int *)(pcVar9 + 0xe0) + 4));\n          iVar3 = FUN_000227d8();\n          goto LAB_00024598;\n        }\n        param_2 = (undefined *)((uint)param_2 & 0xf8 | 4);\n        param_1 = PTR_LAB_0012a258 + 0x36cc;\n        iVar8 = 0;\n        do {\n          iVar3 = FUN_000236cc(param_2);\n          if (iVar3 != 0) break;\n          iVar8 = iVar8 + 1;\n          if (*pcVar9 != '#') {\n            if (*pcVar9 == '!') goto LAB_00024664;\n            iVar3 = FUN_00022170(PTR_UINT_0012a18c + 0xf0);\n            if (iVar3 == 0) {\n              cVar5 = *pcVar9;\n              goto LAB_0002467c;\n            }\n            break;\n          }\n          iVar3 = FUN_000227d8();\n        } while (iVar3 == 0);\n      }\n    }\n    else {\nLAB_000245ec:\n      puVar6 = PTR_UINT_0012a18c + 0xf0;\nLAB_00024518:\n      iVar3 = FUN_00022170(puVar6);\n    }" (statement_identifier "LAB_000245e0") (: ":") (if_statement "if (((uint)param_2 & 8) == 0) {\n      param_1[0] = '\0';\n      param_1[1] = '\0';\n      param_1[2] = '\0';\n      param_1[3] = '.';\n      local_34[0] = uVar2;\n      iVar3 = FUN_000227d8();\n      if (iVar3 == 0) {\n        iVar8 = 0;\n        if (*pcVar9 == '!') {\nLAB_00024664:\n          FUN_0002000c(0x2e,iVar8);\n          cVar5 = *pcVar9;\nLAB_0002467c:\n          if (cVar5 != '!') goto LAB_000245ec;\n          param_1 = pcVar9 + 0xe0;\n          param_2 = PTR_LAB_0012a258 + -0x5b4;\n          iVar3 = FUN_0001fa4c(param_1,local_34);\n          if (iVar3 == -1) {\n            FUN_00020698(uVar2);\n            iVar3 = FUN_0001fa4c(param_1,local_34);\n          }\n          else {\n            (*(code *)PTR_free_0012b168)(uVar2);\n          }\n          FUN_0001fef0(*(undefined4 *)(pcVar9 + 0x2c),\n                       *(undefined4 *)\n                        (iVar3 * *(int *)(pcVar9 + 0xec) + *(int *)(pcVar9 + 0xe0) + 4));\n          iVar3 = FUN_000227d8();\n          goto LAB_00024598;\n        }\n        param_2 = (undefined *)((uint)param_2 & 0xf8 | 4);\n        param_1 = PTR_LAB_0012a258 + 0x36cc;\n        iVar8 = 0;\n        do {\n          iVar3 = FUN_000236cc(param_2);\n          if (iVar3 != 0) break;\n          iVar8 = iVar8 + 1;\n          if (*pcVar9 != '#') {\n            if (*pcVar9 == '!') goto LAB_00024664;\n            iVar3 = FUN_00022170(PTR_UINT_0012a18c + 0xf0);\n            if (iVar3 == 0) {\n              cVar5 = *pcVar9;\n              goto LAB_0002467c;\n            }\n            break;\n          }\n          iVar3 = FUN_000227d8();\n        } while (iVar3 == 0);\n      }\n    }\n    else {\nLAB_000245ec:\n      puVar6 = PTR_UINT_0012a18c + 0xf0;\nLAB_00024518:\n      iVar3 = FUN_00022170(puVar6);\n    }" (if "if") (parenthesized_expression "(((uint)param_2 & 8) == 0)" (( "(") (binary_expression "((uint)param_2 & 8) == 0" (parenthesized_expression "((uint)param_2 & 8)" (( "(") (binary_expression "(uint)param_2 & 8" (cast_expression "(uint)param_2" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "param_2")) (& "&") (number_literal "8")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      param_1[0] = '\0';\n      param_1[1] = '\0';\n      param_1[2] = '\0';\n      param_1[3] = '.';\n      local_34[0] = uVar2;\n      iVar3 = FUN_000227d8();\n      if (iVar3 == 0) {\n        iVar8 = 0;\n        if (*pcVar9 == '!') {\nLAB_00024664:\n          FUN_0002000c(0x2e,iVar8);\n          cVar5 = *pcVar9;\nLAB_0002467c:\n          if (cVar5 != '!') goto LAB_000245ec;\n          param_1 = pcVar9 + 0xe0;\n          param_2 = PTR_LAB_0012a258 + -0x5b4;\n          iVar3 = FUN_0001fa4c(param_1,local_34);\n          if (iVar3 == -1) {\n            FUN_00020698(uVar2);\n            iVar3 = FUN_0001fa4c(param_1,local_34);\n          }\n          else {\n            (*(code *)PTR_free_0012b168)(uVar2);\n          }\n          FUN_0001fef0(*(undefined4 *)(pcVar9 + 0x2c),\n                       *(undefined4 *)\n                        (iVar3 * *(int *)(pcVar9 + 0xec) + *(int *)(pcVar9 + 0xe0) + 4));\n          iVar3 = FUN_000227d8();\n          goto LAB_00024598;\n        }\n        param_2 = (undefined *)((uint)param_2 & 0xf8 | 4);\n        param_1 = PTR_LAB_0012a258 + 0x36cc;\n        iVar8 = 0;\n        do {\n          iVar3 = FUN_000236cc(param_2);\n          if (iVar3 != 0) break;\n          iVar8 = iVar8 + 1;\n          if (*pcVar9 != '#') {\n            if (*pcVar9 == '!') goto LAB_00024664;\n            iVar3 = FUN_00022170(PTR_UINT_0012a18c + 0xf0);\n            if (iVar3 == 0) {\n              cVar5 = *pcVar9;\n              goto LAB_0002467c;\n            }\n            break;\n          }\n          iVar3 = FUN_000227d8();\n        } while (iVar3 == 0);\n      }\n    }" ({ "{") (expression_statement "param_1[0] = '\0';" (assignment_expression "param_1[0] = '\0'" (subscript_expression "param_1[0]" (identifier "param_1") ([ "[") (number_literal "0") (] "]")) (= "=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (; ";")) (expression_statement "param_1[1] = '\0';" (assignment_expression "param_1[1] = '\0'" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (= "=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (; ";")) (expression_statement "param_1[2] = '\0';" (assignment_expression "param_1[2] = '\0'" (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")) (= "=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (; ";")) (expression_statement "param_1[3] = '.';" (assignment_expression "param_1[3] = '.'" (subscript_expression "param_1[3]" (identifier "param_1") ([ "[") (number_literal "3") (] "]")) (= "=") (char_literal "'.'" (' "'") (character ".") (' "'"))) (; ";")) (expression_statement "local_34[0] = uVar2;" (assignment_expression "local_34[0] = uVar2" (subscript_expression "local_34[0]" (identifier "local_34") ([ "[") (number_literal "0") (] "]")) (= "=") (identifier "uVar2")) (; ";")) (expression_statement "iVar3 = FUN_000227d8();" (assignment_expression "iVar3 = FUN_000227d8()" (identifier "iVar3") (= "=") (call_expression "FUN_000227d8()" (identifier "FUN_000227d8") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (iVar3 == 0) {\n        iVar8 = 0;\n        if (*pcVar9 == '!') {\nLAB_00024664:\n          FUN_0002000c(0x2e,iVar8);\n          cVar5 = *pcVar9;\nLAB_0002467c:\n          if (cVar5 != '!') goto LAB_000245ec;\n          param_1 = pcVar9 + 0xe0;\n          param_2 = PTR_LAB_0012a258 + -0x5b4;\n          iVar3 = FUN_0001fa4c(param_1,local_34);\n          if (iVar3 == -1) {\n            FUN_00020698(uVar2);\n            iVar3 = FUN_0001fa4c(param_1,local_34);\n          }\n          else {\n            (*(code *)PTR_free_0012b168)(uVar2);\n          }\n          FUN_0001fef0(*(undefined4 *)(pcVar9 + 0x2c),\n                       *(undefined4 *)\n                        (iVar3 * *(int *)(pcVar9 + 0xec) + *(int *)(pcVar9 + 0xe0) + 4));\n          iVar3 = FUN_000227d8();\n          goto LAB_00024598;\n        }\n        param_2 = (undefined *)((uint)param_2 & 0xf8 | 4);\n        param_1 = PTR_LAB_0012a258 + 0x36cc;\n        iVar8 = 0;\n        do {\n          iVar3 = FUN_000236cc(param_2);\n          if (iVar3 != 0) break;\n          iVar8 = iVar8 + 1;\n          if (*pcVar9 != '#') {\n            if (*pcVar9 == '!') goto LAB_00024664;\n            iVar3 = FUN_00022170(PTR_UINT_0012a18c + 0xf0);\n            if (iVar3 == 0) {\n              cVar5 = *pcVar9;\n              goto LAB_0002467c;\n            }\n            break;\n          }\n          iVar3 = FUN_000227d8();\n        } while (iVar3 == 0);\n      }" (if "if") (parenthesized_expression "(iVar3 == 0)" (( "(") (binary_expression "iVar3 == 0" (identifier "iVar3") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        iVar8 = 0;\n        if (*pcVar9 == '!') {\nLAB_00024664:\n          FUN_0002000c(0x2e,iVar8);\n          cVar5 = *pcVar9;\nLAB_0002467c:\n          if (cVar5 != '!') goto LAB_000245ec;\n          param_1 = pcVar9 + 0xe0;\n          param_2 = PTR_LAB_0012a258 + -0x5b4;\n          iVar3 = FUN_0001fa4c(param_1,local_34);\n          if (iVar3 == -1) {\n            FUN_00020698(uVar2);\n            iVar3 = FUN_0001fa4c(param_1,local_34);\n          }\n          else {\n            (*(code *)PTR_free_0012b168)(uVar2);\n          }\n          FUN_0001fef0(*(undefined4 *)(pcVar9 + 0x2c),\n                       *(undefined4 *)\n                        (iVar3 * *(int *)(pcVar9 + 0xec) + *(int *)(pcVar9 + 0xe0) + 4));\n          iVar3 = FUN_000227d8();\n          goto LAB_00024598;\n        }\n        param_2 = (undefined *)((uint)param_2 & 0xf8 | 4);\n        param_1 = PTR_LAB_0012a258 + 0x36cc;\n        iVar8 = 0;\n        do {\n          iVar3 = FUN_000236cc(param_2);\n          if (iVar3 != 0) break;\n          iVar8 = iVar8 + 1;\n          if (*pcVar9 != '#') {\n            if (*pcVar9 == '!') goto LAB_00024664;\n            iVar3 = FUN_00022170(PTR_UINT_0012a18c + 0xf0);\n            if (iVar3 == 0) {\n              cVar5 = *pcVar9;\n              goto LAB_0002467c;\n            }\n            break;\n          }\n          iVar3 = FUN_000227d8();\n        } while (iVar3 == 0);\n      }" ({ "{") (expression_statement "iVar8 = 0;" (assignment_expression "iVar8 = 0" (identifier "iVar8") (= "=") (number_literal "0")) (; ";")) (if_statement "if (*pcVar9 == '!') {\nLAB_00024664:\n          FUN_0002000c(0x2e,iVar8);\n          cVar5 = *pcVar9;\nLAB_0002467c:\n          if (cVar5 != '!') goto LAB_000245ec;\n          param_1 = pcVar9 + 0xe0;\n          param_2 = PTR_LAB_0012a258 + -0x5b4;\n          iVar3 = FUN_0001fa4c(param_1,local_34);\n          if (iVar3 == -1) {\n            FUN_00020698(uVar2);\n            iVar3 = FUN_0001fa4c(param_1,local_34);\n          }\n          else {\n            (*(code *)PTR_free_0012b168)(uVar2);\n          }\n          FUN_0001fef0(*(undefined4 *)(pcVar9 + 0x2c),\n                       *(undefined4 *)\n                        (iVar3 * *(int *)(pcVar9 + 0xec) + *(int *)(pcVar9 + 0xe0) + 4));\n          iVar3 = FUN_000227d8();\n          goto LAB_00024598;\n        }" (if "if") (parenthesized_expression "(*pcVar9 == '!')" (( "(") (binary_expression "*pcVar9 == '!'" (pointer_expression "*pcVar9" (* "*") (identifier "pcVar9")) (== "==") (char_literal "'!'" (' "'") (character "!") (' "'"))) () ")")) (compound_statement "{\nLAB_00024664:\n          FUN_0002000c(0x2e,iVar8);\n          cVar5 = *pcVar9;\nLAB_0002467c:\n          if (cVar5 != '!') goto LAB_000245ec;\n          param_1 = pcVar9 + 0xe0;\n          param_2 = PTR_LAB_0012a258 + -0x5b4;\n          iVar3 = FUN_0001fa4c(param_1,local_34);\n          if (iVar3 == -1) {\n            FUN_00020698(uVar2);\n            iVar3 = FUN_0001fa4c(param_1,local_34);\n          }\n          else {\n            (*(code *)PTR_free_0012b168)(uVar2);\n          }\n          FUN_0001fef0(*(undefined4 *)(pcVar9 + 0x2c),\n                       *(undefined4 *)\n                        (iVar3 * *(int *)(pcVar9 + 0xec) + *(int *)(pcVar9 + 0xe0) + 4));\n          iVar3 = FUN_000227d8();\n          goto LAB_00024598;\n        }" ({ "{") (labeled_statement "LAB_00024664:\n          FUN_0002000c(0x2e,iVar8);" (statement_identifier "LAB_00024664") (: ":") (expression_statement "FUN_0002000c(0x2e,iVar8);" (call_expression "FUN_0002000c(0x2e,iVar8)" (identifier "FUN_0002000c") (argument_list "(0x2e,iVar8)" (( "(") (number_literal "0x2e") (, ",") (identifier "iVar8") () ")"))) (; ";"))) (expression_statement "cVar5 = *pcVar9;" (assignment_expression "cVar5 = *pcVar9" (identifier "cVar5") (= "=") (pointer_expression "*pcVar9" (* "*") (identifier "pcVar9"))) (; ";")) (labeled_statement "LAB_0002467c:\n          if (cVar5 != '!') goto LAB_000245ec;" (statement_identifier "LAB_0002467c") (: ":") (if_statement "if (cVar5 != '!') goto LAB_000245ec;" (if "if") (parenthesized_expression "(cVar5 != '!')" (( "(") (binary_expression "cVar5 != '!'" (identifier "cVar5") (!= "!=") (char_literal "'!'" (' "'") (character "!") (' "'"))) () ")")) (goto_statement "goto LAB_000245ec;" (goto "goto") (statement_identifier "LAB_000245ec") (; ";")))) (expression_statement "param_1 = pcVar9 + 0xe0;" (assignment_expression "param_1 = pcVar9 + 0xe0" (identifier "param_1") (= "=") (binary_expression "pcVar9 + 0xe0" (identifier "pcVar9") (+ "+") (number_literal "0xe0"))) (; ";")) (expression_statement "param_2 = PTR_LAB_0012a258 + -0x5b4;" (assignment_expression "param_2 = PTR_LAB_0012a258 + -0x5b4" (identifier "param_2") (= "=") (binary_expression "PTR_LAB_0012a258 + -0x5b4" (identifier "PTR_LAB_0012a258") (+ "+") (number_literal "-0x5b4"))) (; ";")) (expression_statement "iVar3 = FUN_0001fa4c(param_1,local_34);" (assignment_expression "iVar3 = FUN_0001fa4c(param_1,local_34)" (identifier "iVar3") (= "=") (call_expression "FUN_0001fa4c(param_1,local_34)" (identifier "FUN_0001fa4c") (argument_list "(param_1,local_34)" (( "(") (identifier "param_1") (, ",") (identifier "local_34") () ")")))) (; ";")) (if_statement "if (iVar3 == -1) {\n            FUN_00020698(uVar2);\n            iVar3 = FUN_0001fa4c(param_1,local_34);\n          }\n          else {\n            (*(code *)PTR_free_0012b168)(uVar2);\n          }" (if "if") (parenthesized_expression "(iVar3 == -1)" (( "(") (binary_expression "iVar3 == -1" (identifier "iVar3") (== "==") (number_literal "-1")) () ")")) (compound_statement "{\n            FUN_00020698(uVar2);\n            iVar3 = FUN_0001fa4c(param_1,local_34);\n          }" ({ "{") (expression_statement "FUN_00020698(uVar2);" (call_expression "FUN_00020698(uVar2)" (identifier "FUN_00020698") (argument_list "(uVar2)" (( "(") (identifier "uVar2") () ")"))) (; ";")) (expression_statement "iVar3 = FUN_0001fa4c(param_1,local_34);" (assignment_expression "iVar3 = FUN_0001fa4c(param_1,local_34)" (identifier "iVar3") (= "=") (call_expression "FUN_0001fa4c(param_1,local_34)" (identifier "FUN_0001fa4c") (argument_list "(param_1,local_34)" (( "(") (identifier "param_1") (, ",") (identifier "local_34") () ")")))) (; ";")) (} "}")) (else_clause "else {\n            (*(code *)PTR_free_0012b168)(uVar2);\n          }" (else "else") (compound_statement "{\n            (*(code *)PTR_free_0012b168)(uVar2);\n          }" ({ "{") (expression_statement "(*(code *)PTR_free_0012b168)(uVar2);" (call_expression "(*(code *)PTR_free_0012b168)(uVar2)" (parenthesized_expression "(*(code *)PTR_free_0012b168)" (( "(") (pointer_expression "*(code *)PTR_free_0012b168" (* "*") (cast_expression "(code *)PTR_free_0012b168" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_free_0012b168"))) () ")")) (argument_list "(uVar2)" (( "(") (identifier "uVar2") () ")"))) (; ";")) (} "}")))) (expression_statement "FUN_0001fef0(*(undefined4 *)(pcVar9 + 0x2c),\n                       *(undefined4 *)\n                        (iVar3 * *(int *)(pcVar9 + 0xec) + *(int *)(pcVar9 + 0xe0) + 4));" (call_expression "FUN_0001fef0(*(undefined4 *)(pcVar9 + 0x2c),\n                       *(undefined4 *)\n                        (iVar3 * *(int *)(pcVar9 + 0xec) + *(int *)(pcVar9 + 0xe0) + 4))" (identifier "FUN_0001fef0") (argument_list "(*(undefined4 *)(pcVar9 + 0x2c),\n                       *(undefined4 *)\n                        (iVar3 * *(int *)(pcVar9 + 0xec) + *(int *)(pcVar9 + 0xe0) + 4))" (( "(") (pointer_expression "*(undefined4 *)(pcVar9 + 0x2c)" (* "*") (cast_expression "(undefined4 *)(pcVar9 + 0x2c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar9 + 0x2c)" (( "(") (binary_expression "pcVar9 + 0x2c" (identifier "pcVar9") (+ "+") (number_literal "0x2c")) () ")")))) (, ",") (pointer_expression "*(undefined4 *)\n                        (iVar3 * *(int *)(pcVar9 + 0xec) + *(int *)(pcVar9 + 0xe0) + 4)" (* "*") (cast_expression "(undefined4 *)\n                        (iVar3 * *(int *)(pcVar9 + 0xec) + *(int *)(pcVar9 + 0xe0) + 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 * *(int *)(pcVar9 + 0xec) + *(int *)(pcVar9 + 0xe0) + 4)" (( "(") (binary_expression "iVar3 * *(int *)(pcVar9 + 0xec) + *(int *)(pcVar9 + 0xe0) + 4" (binary_expression "iVar3 * *(int *)(pcVar9 + 0xec) + *(int *)(pcVar9 + 0xe0)" (binary_expression "iVar3 * *(int *)(pcVar9 + 0xec)" (identifier "iVar3") (* "*") (pointer_expression "*(int *)(pcVar9 + 0xec)" (* "*") (cast_expression "(int *)(pcVar9 + 0xec)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar9 + 0xec)" (( "(") (binary_expression "pcVar9 + 0xec" (identifier "pcVar9") (+ "+") (number_literal "0xec")) () ")"))))) (+ "+") (pointer_expression "*(int *)(pcVar9 + 0xe0)" (* "*") (cast_expression "(int *)(pcVar9 + 0xe0)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar9 + 0xe0)" (( "(") (binary_expression "pcVar9 + 0xe0" (identifier "pcVar9") (+ "+") (number_literal "0xe0")) () ")"))))) (+ "+") (number_literal "4")) () ")")))) () ")"))) (; ";")) (expression_statement "iVar3 = FUN_000227d8();" (assignment_expression "iVar3 = FUN_000227d8()" (identifier "iVar3") (= "=") (call_expression "FUN_000227d8()" (identifier "FUN_000227d8") (argument_list "()" (( "(") () ")")))) (; ";")) (goto_statement "goto LAB_00024598;" (goto "goto") (statement_identifier "LAB_00024598") (; ";")) (} "}"))) (expression_statement "param_2 = (undefined *)((uint)param_2 & 0xf8 | 4);" (assignment_expression "param_2 = (undefined *)((uint)param_2 & 0xf8 | 4)" (identifier "param_2") (= "=") (cast_expression "(undefined *)((uint)param_2 & 0xf8 | 4)" (( "(") (type_descriptor "undefined *" (type_identifier "undefined") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((uint)param_2 & 0xf8 | 4)" (( "(") (binary_expression "(uint)param_2 & 0xf8 | 4" (binary_expression "(uint)param_2 & 0xf8" (cast_expression "(uint)param_2" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "param_2")) (& "&") (number_literal "0xf8")) (| "|") (number_literal "4")) () ")")))) (; ";")) (expression_statement "param_1 = PTR_LAB_0012a258 + 0x36cc;" (assignment_expression "param_1 = PTR_LAB_0012a258 + 0x36cc" (identifier "param_1") (= "=") (binary_expression "PTR_LAB_0012a258 + 0x36cc" (identifier "PTR_LAB_0012a258") (+ "+") (number_literal "0x36cc"))) (; ";")) (expression_statement "iVar8 = 0;" (assignment_expression "iVar8 = 0" (identifier "iVar8") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n          iVar3 = FUN_000236cc(param_2);\n          if (iVar3 != 0) break;\n          iVar8 = iVar8 + 1;\n          if (*pcVar9 != '#') {\n            if (*pcVar9 == '!') goto LAB_00024664;\n            iVar3 = FUN_00022170(PTR_UINT_0012a18c + 0xf0);\n            if (iVar3 == 0) {\n              cVar5 = *pcVar9;\n              goto LAB_0002467c;\n            }\n            break;\n          }\n          iVar3 = FUN_000227d8();\n        } while (iVar3 == 0);" (do "do") (compound_statement "{\n          iVar3 = FUN_000236cc(param_2);\n          if (iVar3 != 0) break;\n          iVar8 = iVar8 + 1;\n          if (*pcVar9 != '#') {\n            if (*pcVar9 == '!') goto LAB_00024664;\n            iVar3 = FUN_00022170(PTR_UINT_0012a18c + 0xf0);\n            if (iVar3 == 0) {\n              cVar5 = *pcVar9;\n              goto LAB_0002467c;\n            }\n            break;\n          }\n          iVar3 = FUN_000227d8();\n        }" ({ "{") (expression_statement "iVar3 = FUN_000236cc(param_2);" (assignment_expression "iVar3 = FUN_000236cc(param_2)" (identifier "iVar3") (= "=") (call_expression "FUN_000236cc(param_2)" (identifier "FUN_000236cc") (argument_list "(param_2)" (( "(") (identifier "param_2") () ")")))) (; ";")) (if_statement "if (iVar3 != 0) break;" (if "if") (parenthesized_expression "(iVar3 != 0)" (( "(") (binary_expression "iVar3 != 0" (identifier "iVar3") (!= "!=") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar8 = iVar8 + 1;" (assignment_expression "iVar8 = iVar8 + 1" (identifier "iVar8") (= "=") (binary_expression "iVar8 + 1" (identifier "iVar8") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (*pcVar9 != '#') {\n            if (*pcVar9 == '!') goto LAB_00024664;\n            iVar3 = FUN_00022170(PTR_UINT_0012a18c + 0xf0);\n            if (iVar3 == 0) {\n              cVar5 = *pcVar9;\n              goto LAB_0002467c;\n            }\n            break;\n          }" (if "if") (parenthesized_expression "(*pcVar9 != '#')" (( "(") (binary_expression "*pcVar9 != '#'" (pointer_expression "*pcVar9" (* "*") (identifier "pcVar9")) (!= "!=") (char_literal "'#'" (' "'") (character "#") (' "'"))) () ")")) (compound_statement "{\n            if (*pcVar9 == '!') goto LAB_00024664;\n            iVar3 = FUN_00022170(PTR_UINT_0012a18c + 0xf0);\n            if (iVar3 == 0) {\n              cVar5 = *pcVar9;\n              goto LAB_0002467c;\n            }\n            break;\n          }" ({ "{") (if_statement "if (*pcVar9 == '!') goto LAB_00024664;" (if "if") (parenthesized_expression "(*pcVar9 == '!')" (( "(") (binary_expression "*pcVar9 == '!'" (pointer_expression "*pcVar9" (* "*") (identifier "pcVar9")) (== "==") (char_literal "'!'" (' "'") (character "!") (' "'"))) () ")")) (goto_statement "goto LAB_00024664;" (goto "goto") (statement_identifier "LAB_00024664") (; ";"))) (expression_statement "iVar3 = FUN_00022170(PTR_UINT_0012a18c + 0xf0);" (assignment_expression "iVar3 = FUN_00022170(PTR_UINT_0012a18c + 0xf0)" (identifier "iVar3") (= "=") (call_expression "FUN_00022170(PTR_UINT_0012a18c + 0xf0)" (identifier "FUN_00022170") (argument_list "(PTR_UINT_0012a18c + 0xf0)" (( "(") (binary_expression "PTR_UINT_0012a18c + 0xf0" (identifier "PTR_UINT_0012a18c") (+ "+") (number_literal "0xf0")) () ")")))) (; ";")) (if_statement "if (iVar3 == 0) {\n              cVar5 = *pcVar9;\n              goto LAB_0002467c;\n            }" (if "if") (parenthesized_expression "(iVar3 == 0)" (( "(") (binary_expression "iVar3 == 0" (identifier "iVar3") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n              cVar5 = *pcVar9;\n              goto LAB_0002467c;\n            }" ({ "{") (expression_statement "cVar5 = *pcVar9;" (assignment_expression "cVar5 = *pcVar9" (identifier "cVar5") (= "=") (pointer_expression "*pcVar9" (* "*") (identifier "pcVar9"))) (; ";")) (goto_statement "goto LAB_0002467c;" (goto "goto") (statement_identifier "LAB_0002467c") (; ";")) (} "}"))) (break_statement "break;" (break "break") (; ";")) (} "}"))) (expression_statement "iVar3 = FUN_000227d8();" (assignment_expression "iVar3 = FUN_000227d8()" (identifier "iVar3") (= "=") (call_expression "FUN_000227d8()" (identifier "FUN_000227d8") (argument_list "()" (( "(") () ")")))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar3 == 0)" (( "(") (binary_expression "iVar3 == 0" (identifier "iVar3") (== "==") (number_literal "0")) () ")")) (; ";")) (} "}"))) (} "}")) (else_clause "else {\nLAB_000245ec:\n      puVar6 = PTR_UINT_0012a18c + 0xf0;\nLAB_00024518:\n      iVar3 = FUN_00022170(puVar6);\n    }" (else "else") (compound_statement "{\nLAB_000245ec:\n      puVar6 = PTR_UINT_0012a18c + 0xf0;\nLAB_00024518:\n      iVar3 = FUN_00022170(puVar6);\n    }" ({ "{") (labeled_statement "LAB_000245ec:\n      puVar6 = PTR_UINT_0012a18c + 0xf0;" (statement_identifier "LAB_000245ec") (: ":") (expression_statement "puVar6 = PTR_UINT_0012a18c + 0xf0;" (assignment_expression "puVar6 = PTR_UINT_0012a18c + 0xf0" (identifier "puVar6") (= "=") (binary_expression "PTR_UINT_0012a18c + 0xf0" (identifier "PTR_UINT_0012a18c") (+ "+") (number_literal "0xf0"))) (; ";"))) (labeled_statement "LAB_00024518:\n      iVar3 = FUN_00022170(puVar6);" (statement_identifier "LAB_00024518") (: ":") (expression_statement "iVar3 = FUN_00022170(puVar6);" (assignment_expression "iVar3 = FUN_00022170(puVar6)" (identifier "iVar3") (= "=") (call_expression "FUN_00022170(puVar6)" (identifier "FUN_00022170") (argument_list "(puVar6)" (( "(") (identifier "puVar6") () ")")))) (; ";"))) (} "}"))))) (labeled_statement "LAB_00024530:\n    (*(code *)PTR_free_0012b168)(uVar2);" (statement_identifier "LAB_00024530") (: ":") (expression_statement "(*(code *)PTR_free_0012b168)(uVar2);" (call_expression "(*(code *)PTR_free_0012b168)(uVar2)" (parenthesized_expression "(*(code *)PTR_free_0012b168)" (( "(") (pointer_expression "*(code *)PTR_free_0012b168" (* "*") (cast_expression "(code *)PTR_free_0012b168" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_free_0012b168"))) () ")")) (argument_list "(uVar2)" (( "(") (identifier "uVar2") () ")"))) (; ";"))) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";"))) (} "}")))

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

type_1 function_1(type_2 *var_9,uint8_t var_6)

{
  type_3 *puVar1;
  int var_13;
  char *name;
  type_1 var_4;
  type_4 uVar4;
  char var_15;
  char *msg;
  type_5 *v;
  size_t var_18;
  char *var_2;
  type_3 *puVar8;
  type_6 entry;
  
  puVar1 = PTR___stack_chk_guard_0012b14c;
  puVar8 = (type_3 *)(type_7)var_6;
  var_2 = *(char **)PTR_ptr_to_globals_0012a304;
  var_13 = *(int *)PTR___stack_chk_guard_0012b14c;
  name = var_1(*(char **)(var_2 + 0x18));
  var_4 = var_3();
  if (var_4 != var_5) goto LAB_00024530;
  if (*var_2 == '\"') {
    var_4 = var_3();
    if (var_4 != var_5) goto LAB_00024530;
    if (*var_2 == '$') {
      puVar8 = (type_3 *)0x0;
      if ((var_6 & 4) == 0) {
        msg = var_7 + 0xfc;
        goto LAB_00024518;
      }
      *var_9 = XC_INST_ARRAY;
      var_4 = var_3();
    }
    else {
      *var_9 = XC_INST_ARRAY_ELEM;
      var_4 = var_8(var_6 & 0xfc);
      if (var_4 != var_5) goto LAB_00024530;
      var_4 = var_3();
    }
    if (var_4 != var_5) goto LAB_00024530;
    v = *(type_5 **)(var_2 + 0x2c);
    uVar4 = (type_4)*var_9;
  }
  else {
    uVar4 = 0x1c;
    if (*var_2 == ' ') goto LAB_000245e0;
    v = *(type_5 **)(var_2 + 0x2c);
    *var_9 = XC_INST_VAR;
  }
  entry.name = (char *)var_10(uVar4,entry.name._1_3_);
  var_11(v,1,&entry);
  var_12(name);
  (*(type_8 *)PTR_free_0012b168)(name);
LAB_00024598:
  do {
    if (var_13 == *(int *)puVar1) {
      return var_4;
    }
    (*(type_8 *)PTR___stack_chk_fail_0012b0c8)();
LAB_000245e0:
    if (((type_7)puVar8 & 8) == 0) {
      ((type_5 *)var_9)->v = (char *)0x2e;
      entry.name = name;
      var_4 = var_3();
      if (var_4 == var_5) {
        var_18 = 0;
        if (*var_2 == '!') {
LAB_00024664:
          var_14(0x2e,var_18);
          var_15 = *var_2;
LAB_0002467c:
          if (var_15 != '!') goto LAB_000245ec;
          var_9 = (type_2 *)(var_2 + 0xe0);
          puVar8 = var_16 + -0x5b4;
          var_18 = var_17((type_5 *)var_9,&entry);
          if (var_18 == 0xffffffff) {
            var_19(name);
            var_18 = var_17((type_5 *)var_9,&entry);
          }
          else {
            (*(type_8 *)PTR_free_0012b168)(name);
          }
          var_20(*(type_5 **)(var_2 + 0x2c),
                           *(size_t *)
                            (var_18 * *(int *)(var_2 + 0xec) + *(int *)(var_2 + 0xe0) + 4));
          var_4 = var_3();
          goto LAB_00024598;
        }
        puVar8 = (type_3 *)((type_7)puVar8 & 0xf8 | 4);
        var_9 = (type_2 *)(var_16 + 0x36cc);
        var_18 = 0;
        do {
          var_4 = var_8((uint8_t)puVar8);
          if (var_4 != var_5) break;
          var_18 = var_18 + 1;
          if (*var_2 != '#') {
            if (*var_2 == '!') goto LAB_00024664;
            var_4 = var_21(var_7 + 0xf0);
            if (var_4 == var_5) {
              var_15 = *var_2;
              goto LAB_0002467c;
            }
            break;
          }
          var_4 = var_3();
        } while (var_4 == var_5);
      }
    }
    else {
LAB_000245ec:
      msg = var_7 + 0xf0;
LAB_00024518:
      var_4 = var_21(msg);
    }
LAB_00024530:
    (*(type_8 *)PTR_free_0012b168)(name);
  } while( true );
}


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

int MASKED(char *param_1,undefined *param_2)

{
  undefined *puVar1;
  undefined4 uVar2;
  int iVar3;
  undefined1 uVar4;
  char cVar5;
  undefined *puVar6;
  undefined4 uVar7;
  int iVar8;
  char *pcVar9;
  undefined4 local_34 [2];
  int local_2c;
  
  puVar1 = PTR___stack_chk_guard_0012b14c;
  pcVar9 = *(char **)PTR_DAT_0012a304;
  local_2c = *(int *)PTR___stack_chk_guard_0012b14c;
  uVar2 = FUN_0001a2b4(*(undefined4 *)(pcVar9 + 0x18));
  iVar3 = FUN_000227d8();
  if (iVar3 != 0) goto LAB_00024530;
  if (*pcVar9 == '\"') {
    iVar3 = FUN_000227d8();
    if (iVar3 != 0) goto LAB_00024530;
    if (*pcVar9 == '$') {
      param_2 = (undefined *)((uint)param_2 & 4);
      if (param_2 == (undefined *)0x0) {
        puVar6 = PTR_UINT_0012a18c + 0xfc;
        goto LAB_00024518;
      }
      param_1[0] = '\0';
      param_1[1] = '\0';
      param_1[2] = '\0';
      param_1[3] = '\x1e';
      iVar3 = FUN_000227d8();
    }
    else {
      param_1[0] = '\0';
      param_1[1] = '\0';
      param_1[2] = '\0';
      param_1[3] = '\x1d';
      iVar3 = FUN_000236cc((uint)param_2 & 0xfc);
      if (iVar3 != 0) goto LAB_00024530;
      iVar3 = FUN_000227d8();
    }
    if (iVar3 != 0) goto LAB_00024530;
    uVar7 = *(undefined4 *)(pcVar9 + 0x2c);
    uVar4 = (undefined1)*(undefined4 *)param_1;
  }
  else {
    uVar4 = 0x1c;
    if (*pcVar9 == ' ') goto LAB_000245e0;
    uVar7 = *(undefined4 *)(pcVar9 + 0x2c);
    param_1[0] = '\0';
    param_1[1] = '\0';
    param_1[2] = '\0';
    param_1[3] = '\x1c';
  }
  local_34[0] = CONCAT13(uVar4,local_34[0]._1_3_);
  FUN_0001fdb0(uVar7,1,local_34);
  FUN_00021240(uVar2);
  (*(code *)PTR_free_0012b168)(uVar2);
LAB_00024598:
  do {
    if (local_2c == *(int *)puVar1) {
      return iVar3;
    }
    (*(code *)PTR___stack_chk_fail_0012b0c8)();
LAB_000245e0:
    if (((uint)param_2 & 8) == 0) {
      param_1[0] = '\0';
      param_1[1] = '\0';
      param_1[2] = '\0';
      param_1[3] = '.';
      local_34[0] = uVar2;
      iVar3 = FUN_000227d8();
      if (iVar3 == 0) {
        iVar8 = 0;
        if (*pcVar9 == '!') {
LAB_00024664:
          FUN_0002000c(0x2e,iVar8);
          cVar5 = *pcVar9;
LAB_0002467c:
          if (cVar5 != '!') goto LAB_000245ec;
          param_1 = pcVar9 + 0xe0;
          param_2 = PTR_LAB_0012a258 + -0x5b4;
          iVar3 = FUN_0001fa4c(param_1,local_34);
          if (iVar3 == -1) {
            FUN_00020698(uVar2);
            iVar3 = FUN_0001fa4c(param_1,local_34);
          }
          else {
            (*(code *)PTR_free_0012b168)(uVar2);
          }
          FUN_0001fef0(*(undefined4 *)(pcVar9 + 0x2c),
                       *(undefined4 *)
                        (iVar3 * *(int *)(pcVar9 + 0xec) + *(int *)(pcVar9 + 0xe0) + 4));
          iVar3 = FUN_000227d8();
          goto LAB_00024598;
        }
        param_2 = (undefined *)((uint)param_2 & 0xf8 | 4);
        param_1 = PTR_LAB_0012a258 + 0x36cc;
        iVar8 = 0;
        do {
          iVar3 = FUN_000236cc(param_2);
          if (iVar3 != 0) break;
          iVar8 = iVar8 + 1;
          if (*pcVar9 != '#') {
            if (*pcVar9 == '!') goto LAB_00024664;
            iVar3 = FUN_00022170(PTR_UINT_0012a18c + 0xf0);
            if (iVar3 == 0) {
              cVar5 = *pcVar9;
              goto LAB_0002467c;
            }
            break;
          }
          iVar3 = FUN_000227d8();
        } while (iVar3 == 0);
      }
    }
    else {
LAB_000245ec:
      puVar6 = PTR_UINT_0012a18c + 0xf0;
LAB_00024518:
      iVar3 = FUN_00022170(puVar6);
    }
LAB_00024530:
    (*(code *)PTR_free_0012b168)(uVar2);
  } while( true );
}

