
int do_modprobe(module_entry *m)

{
  bool bVar1;
  undefined *puVar2;
  llist_t *plVar3;
  code *pcVar4;
  code *pcVar5;
  module_entry *pmVar6;
  byte *pbVar7;
  char *pcVar8;
  char *pcVar9;
  char *pcVar10;
  undefined *puVar11;
  int iVar12;
  
  if ((m->flags & 4) == 0) {
    iVar12 = -2;
    if ((*(uint *)PTR_option_mask32_0013135c & 2) == 0) {
      if ((m->flags & 0x10) == 0) {
        pcVar9 = PTR_bdcommands_4__name_4__001311a4 + -0x6aa4;
      }
      else {
        pcVar9 = PTR_bdcommands_4__name_4__001311a4 + -0x6abc;
      }
      pcVar10 = m->probed_name;
      if (pcVar10 == (char *)0x0) {
        pcVar10 = m->modname;
      }
      bb_error_msg(pcVar9,pcVar10);
      iVar12 = -2;
    }
  }
  else {
    if ((*(uint *)PTR_option_mask32_0013135c & 0x20) == 0) {
      plVar3 = llist_rev(m->deps);
      m->deps = plVar3;
    }
    puVar2 = PTR_bdcommands_4__name_4__001311a4;
    bVar1 = true;
    iVar12 = 0;
    pcVar4 = (code *)(PTR_LAB_00131488 + -0x7cf0);
    pcVar5 = (code *)(PTR_LAB_00131488 + -0x7fc8);
    do {
      while( true ) {
        while( true ) {
          while( true ) {
            if (m->deps == (llist_t *)0x0) {
              return iVar12;
            }
            pcVar9 = (char *)llist_pop(&m->deps);
            pcVar10 = bb_get_last_path_component_nostrip(pcVar9);
            pmVar6 = (module_entry *)(*pcVar4)(pcVar10);
            if ((*(uint *)PTR_option_mask32_0013135c & 0x20) != 0) break;
            pcVar10 = pmVar6->options;
            pmVar6->options = (char *)0x0;
            pbVar7 = (byte *)(*(code *)PTR_xmalloc_open_read_close_00131474)
                                       (PTR_bdcommands_4__name_4__001311a4 + -0x6a3c,0);
            if (pbVar7 != (byte *)0x0) {
              for (; 0x22 < *pbVar7; pbVar7 = pbVar7 + 1) {
              }
                    /* WARNING: Could not emulate address calculation at 0x00038a00 */
                    /* WARNING: Treating indirect jump as call */
              iVar12 = (*(code *)(&_gp + *(int *)(puVar2 + (uint)*pbVar7 * 4 + -0x6a0c)))();
              return iVar12;
            }
            if (m == pmVar6) {
              pcVar10 = (char *)(*pcVar5)(pcVar10,*(undefined4 *)
                                                   (*(int *)PTR_ptr_to_globals_00131330 + 4));
            }
            if ((*(uint *)PTR_option_mask32_0013135c & 0x40) == 0) {
              if ((pmVar6->flags & 1) == 0) {
                iVar12 = bb_init_module(pcVar9,pcVar10);
                if (iVar12 == 0x11) {
                  (*(code *)PTR_free_00132180)(pcVar10);
                }
                else {
                  (*(code *)PTR_free_00132180)();
                  if (iVar12 != 0) {
                    pcVar10 = pmVar6->probed_name;
                    if (pcVar10 == (char *)0x0) {
                      pcVar10 = pmVar6->modname;
                    }
                    pcVar8 = moderror(iVar12);
                    bb_error_msg(PTR_bdcommands_4__name_4__001311a4 + -0x6a2c,pcVar10,pcVar9,pcVar8)
                    ;
                    return iVar12;
                  }
                }
                pmVar6->flags = pmVar6->flags | 1;
                iVar12 = 0;
              }
              else {
                (*(code *)PTR_free_00132180)(pcVar10);
                iVar12 = 0;
              }
            }
            else {
              if (pcVar10 == (char *)0x0) {
                puVar11 = PTR_bdcommands_4__name_4__001311a4 + -0x6a6c;
              }
              else {
                puVar11 = PTR_bdcommands_4__name_4__001311a4 + -0x6a80;
              }
              (*(code *)PTR___printf_chk_00131e4c)
                        (1,puVar11,PTR_bdcommands_4__name_4__001311a4 + -0x6c8c,
                         *(int *)PTR_ptr_to_globals_00131330 + 0x8f,pcVar9,pcVar10);
              (*(code *)PTR_free_00132180)(pcVar10);
              iVar12 = 0;
            }
          }
          if ((pmVar6->flags & 1) != 0) break;
          bVar1 = false;
          iVar12 = 0;
        }
        iVar12 = bb_delete_module(pmVar6->modname,0x400);
        if (iVar12 != 0) break;
        pmVar6->flags = pmVar6->flags & 0xfffffffe;
        bVar1 = false;
      }
    } while (!bVar1);
    pcVar9 = pmVar6->probed_name;
    if (pcVar9 == (char *)0x0) {
      pcVar9 = pmVar6->modname;
    }
    bb_perror_msg(PTR_bdcommands_4__name_4__001311a4 + -0x6a58,pcVar9);
  }
  return iVar12;
}



int FUN_000387b0(int param_1)

{
  bool bVar1;
  undefined4 uVar2;
  code *pcVar3;
  code *pcVar4;
  undefined4 uVar5;
  int iVar6;
  byte *pbVar7;
  undefined *puVar8;
  int iVar9;
  undefined *puVar10;
  int iVar11;
  
  if ((*(uint *)(param_1 + 0x14) & 4) == 0) {
    iVar11 = -2;
    if ((*(uint *)PTR_DAT_0013135c & 2) == 0) {
      if ((*(uint *)(param_1 + 0x14) & 0x10) == 0) {
        puVar8 = PTR_FUN_001311a4 + -0x6aa4;
      }
      else {
        puVar8 = PTR_FUN_001311a4 + -0x6abc;
      }
      iVar11 = *(int *)(param_1 + 0x18);
      if (iVar11 == 0) {
        iVar11 = *(int *)(param_1 + 8);
      }
      FUN_000195a0(puVar8,iVar11);
      iVar11 = -2;
    }
  }
  else {
    if ((*(uint *)PTR_DAT_0013135c & 0x20) == 0) {
      uVar2 = FUN_00018edc(*(undefined4 *)(param_1 + 0xc));
      *(undefined4 *)(param_1 + 0xc) = uVar2;
    }
    puVar8 = PTR_FUN_001311a4;
    bVar1 = true;
    iVar11 = 0;
    pcVar3 = (code *)(PTR_LAB_00131488 + -0x7cf0);
    pcVar4 = (code *)(PTR_LAB_00131488 + -0x7fc8);
    do {
      while( true ) {
        while( true ) {
          while( true ) {
            if (*(int *)(param_1 + 0xc) == 0) {
              return iVar11;
            }
            uVar2 = FUN_00018db0(param_1 + 0xc);
            uVar5 = FUN_00018b68(uVar2);
            iVar6 = (*pcVar3)(uVar5);
            if ((*(uint *)PTR_DAT_0013135c & 0x20) != 0) break;
            iVar11 = *(int *)(iVar6 + 0x1c);
            *(undefined4 *)(iVar6 + 0x1c) = 0;
            pbVar7 = (byte *)(*(code *)PTR_FUN_00131474)(PTR_FUN_001311a4 + -0x6a3c,0);
            if (pbVar7 != (byte *)0x0) {
              for (; 0x22 < *pbVar7; pbVar7 = pbVar7 + 1) {
              }
                    /* WARNING: Could not emulate address calculation at 0x00038a00 */
                    /* WARNING: Treating indirect jump as call */
              iVar11 = (*(code *)(&_gp_1 + *(int *)(puVar8 + (uint)*pbVar7 * 4 + -0x6a0c)))();
              return iVar11;
            }
            if (param_1 == iVar6) {
              iVar11 = (*pcVar4)(iVar11,*(undefined4 *)(*(int *)PTR_DAT_00131330 + 4));
            }
            if ((*(uint *)PTR_DAT_0013135c & 0x40) == 0) {
              if ((*(uint *)(iVar6 + 0x14) & 1) == 0) {
                iVar9 = FUN_00039834(uVar2,iVar11);
                if (iVar9 == 0x11) {
                  (*(code *)PTR_free_00132180)(iVar11);
                }
                else {
                  (*(code *)PTR_free_00132180)();
                  if (iVar9 != 0) {
                    iVar11 = *(int *)(iVar6 + 0x18);
                    if (iVar11 == 0) {
                      iVar11 = *(int *)(iVar6 + 8);
                    }
                    uVar5 = FUN_000399f8(iVar9);
                    FUN_000195a0(PTR_FUN_001311a4 + -0x6a2c,iVar11,uVar2,uVar5);
                    return iVar9;
                  }
                }
                *(uint *)(iVar6 + 0x14) = *(uint *)(iVar6 + 0x14) | 1;
                iVar11 = 0;
              }
              else {
                (*(code *)PTR_free_00132180)(iVar11);
                iVar11 = 0;
              }
            }
            else {
              if (iVar11 == 0) {
                puVar10 = PTR_FUN_001311a4 + -0x6a6c;
              }
              else {
                puVar10 = PTR_FUN_001311a4 + -0x6a80;
              }
              (*(code *)PTR___printf_chk_00131e4c)
                        (1,puVar10,PTR_FUN_001311a4 + -0x6c8c,*(int *)PTR_DAT_00131330 + 0x8f,uVar2,
                         iVar11);
              (*(code *)PTR_free_00132180)(iVar11);
              iVar11 = 0;
            }
          }
          if ((*(uint *)(iVar6 + 0x14) & 1) != 0) break;
          bVar1 = false;
          iVar11 = 0;
        }
        iVar11 = FUN_000399a0(*(undefined4 *)(iVar6 + 8),0x400);
        if (iVar11 != 0) break;
        *(uint *)(iVar6 + 0x14) = *(uint *)(iVar6 + 0x14) & 0xfffffffe;
        bVar1 = false;
      }
    } while (!bVar1);
    iVar9 = *(int *)(iVar6 + 0x18);
    if (iVar9 == 0) {
      iVar9 = *(int *)(iVar6 + 8);
    }
    FUN_00018f7c(PTR_FUN_001311a4 + -0x6a58,iVar9);
  }
  return iVar11;
}


lui gp,0x10
addiu gp,gp,0x9a0
addu gp,gp,t9
addiu sp,sp,-0x58
sw ra,0x54(sp)
sw s8,0x50(sp)
sw s7,0x4c(sp)
sw s6,0x48(sp)
sw s5,0x44(sp)
sw s4,0x40(sp)
sw s3,0x3c(sp)
sw s2,0x38(sp)
sw s1,0x34(sp)
sw s0,0x30(sp)
sw gp,0x18(sp)
lw v0,0x14(a0)
andi v1,v0,0x4
bne v1,zero,0x00038880
_or s3,a0,zero
lw v1,-0x7df4(gp)
lw v1,0x0(v1)
andi v1,v1,0x2
bne v1,zero,0x00038844
_li s0,-0x2
andi v0,v0,0x10
bne v0,zero,0x00038878
_lw a0,-0x7fac(gp)
lw a0,-0x7fac(gp)
addiu a0,a0,-0x6aa4
lw a1,0x18(s3)
bne a1,zero,0x00038834
_lw t9,-0x7f80(gp)
lw a1,0x8(s3)
bal 0x000195a0
_nop
lw gp,0x18(sp)
li s0,-0x2
or v0,s0,zero
lw ra,0x54(sp)
lw s8,0x50(sp)
lw s7,0x4c(sp)
lw s6,0x48(sp)
lw s5,0x44(sp)
lw s4,0x40(sp)
lw s3,0x3c(sp)
lw s2,0x38(sp)
lw s1,0x34(sp)
lw s0,0x30(sp)
jr ra
_addiu sp,sp,0x58
b 0x00038824
_addiu a0,a0,-0x6abc
lw v0,-0x7df4(gp)
lw v0,0x0(v0)
andi v0,v0,0x20
bne v0,zero,0x000388a8
_lw t9,-0x7cb8(gp)
lw a0,0xc(a0)
bal 0x00018edc
_nop
lw gp,0x18(sp)
sw v0,0xc(s3)
li s7,0x1
or s0,zero,zero
lw v0,-0x7cc8(gp)
addiu v0,v0,-0x7cf0
sw v0,0x28(sp)
lw v0,-0x7cc8(gp)
addiu v0,v0,-0x7fc8
sw v0,0x24(sp)
lw v0,-0x7fac(gp)
addiu v0,v0,-0x6a0c
sw v0,0x2c(sp)
lw v0,0xc(s3)
beq v0,zero,0x00038844
_addiu a0,s3,0xc
lw t9,-0x7f0c(gp)
bal 0x00018db0
_nop
lw gp,0x18(sp)
or s5,v0,zero
or a0,v0,zero
lw t9,-0x7f2c(gp)
bal 0x00018b68
_nop
lw gp,0x18(sp)
or a0,v0,zero
lw t9,0x28(sp)
jalr t9
_nop
lw gp,0x18(sp)
or s1,v0,zero
lw v0,-0x7df4(gp)
lw v0,0x0(v0)
andi v0,v0,0x20
beq v0,zero,0x000389ac
_or a1,zero,zero
lw v0,0x14(s1)
andi v0,v0,0x1
beq v0,zero,0x00038b80
_li a1,0x400
lw a0,0x8(s1)
lw t9,-0x7cb4(gp)
bal 0x000399a0
_nop
lw gp,0x18(sp)
beq v0,zero,0x00038994
_or s0,v0,zero
beq s7,zero,0x000388d4
_nop
lw a1,0x18(s1)
bne a1,zero,0x00038978
_lw a0,-0x7fac(gp)
lw a1,0x8(s1)
addiu a0,a0,-0x6a58
lw t9,-0x7f04(gp)
bal 0x00018f7c
_nop
lw gp,0x18(sp)
b 0x00038848
_or v0,s0,zero
lw v0,0x14(s1)
li v1,-0x2
and v0,v0,v1
sw v0,0x14(s1)
b 0x000388d4
_or s7,s0,zero
lw s2,0x1c(s1)
sw zero,0x1c(s1)
lw v0,0x8(s1)
sw v0,0x20(sp)
lw a0,-0x7fac(gp)
addiu a0,a0,-0x6a3c
lw t9,-0x7cdc(gp)
jalr t9
_nop
lw gp,0x18(sp)
beq v0,zero,0x00038bc4
_or s6,v0,zero
or s4,v0,zero
or s0,v0,zero
lw s8,-0x7f54(gp)
lbu v0,0x0(s0)
sltiu v0,v0,0x23
beq v0,zero,0x00038abc
_lw v1,0x2c(sp)
lbu v0,0x0(s0)
sll v0,v0,0x2
addu v0,v1,v0
lw v0,0x0(v0)
addu v0,v0,gp
jr v0
_nop
li a1,0x22
addiu a0,s0,0x1
lw t9,-0x6fd8(gp)
jalr t9
_nop
lw gp,0x18(sp)
lbu v1,0x0(v0)
beq v1,zero,0x00038c5c
_addiu s0,v0,0x1
lbu v0,0x0(s0)
beq v0,zero,0x00038c5c
_or a0,s4,zero
sb zero,0x0(s0)
lw a1,0x20(sp)
or t9,s8,zero
jalr t9
_nop
lw gp,0x18(sp)
beq v0,zero,0x00038aac
_addiu s0,s0,0x1
lbu a0,0x0(v0)
li v1,0x2e
bne a0,v1,0x00038aac
_addiu s4,v0,0x1
li a1,0x3d
or a0,s4,zero
lw t9,-0x71e0(gp)
jalr t9
_nop
lw gp,0x18(sp)
beq v0,zero,0x00038aac
_or a1,s4,zero
or a0,s2,zero
lw t9,0x24(sp)
jalr t9
_nop
lw gp,0x18(sp)
or s2,v0,zero
beq s0,zero,0x00038bb0
_or s4,s0,zero
b 0x000389ec
_lbu v0,0x0(s0)
b 0x000389e8
_addiu s0,s0,0x1
b 0x00038c10
_addiu a1,a1,-0x6a80
lw v0,0x14(s1)
andi v0,v0,0x1
beq v0,zero,0x00038af4
_or a0,s2,zero
lw t9,-0x6fd0(gp)
jalr t9
_nop
lw gp,0x18(sp)
b 0x000388d4
_or s0,zero,zero
or a1,s2,zero
or a0,s5,zero
lw t9,-0x7cec(gp)
bal 0x00039834
_nop
lw gp,0x18(sp)
or s0,v0,zero
li v0,0x11
beq s0,v0,0x00038b8c
_or a0,s2,zero
lw t9,-0x6fd0(gp)
jalr t9
_nop
lw gp,0x18(sp)
beq s0,zero,0x00038b9c
_nop
lw s2,0x18(s1)
bne s2,zero,0x00038b44
_or a0,s0,zero
lw s2,0x8(s1)
lw t9,-0x7ce8(gp)
bal 0x000399f8
_nop
lw gp,0x18(sp)
or a3,v0,zero
or a2,s5,zero
or a1,s2,zero
lw a0,-0x7fac(gp)
addiu a0,a0,-0x6a2c
lw t9,-0x7f80(gp)
bal 0x000195a0
_nop
lw gp,0x18(sp)
b 0x00038848
_or v0,s0,zero
or s7,zero,zero
b 0x000388d4
_or s0,zero,zero
lw t9,-0x6fd0(gp)
jalr t9
_nop
lw gp,0x18(sp)
lw v0,0x14(s1)
ori v0,v0,0x1
sw v0,0x14(s1)
b 0x000388d4
_or s0,zero,zero
or a0,s6,zero
lw t9,-0x6fd0(gp)
jalr t9
_nop
lw gp,0x18(sp)
bne s3,s1,0x00038bec
_lw v0,-0x7e20(gp)
lw v0,0x0(v0)
lw a1,0x4(v0)
or a0,s2,zero
lw t9,0x24(sp)
jalr t9
_nop
lw gp,0x18(sp)
or s2,v0,zero
lw v0,-0x7df4(gp)
lw v0,0x0(v0)
andi v0,v0,0x40
beq v0,zero,0x00038acc
_nop
bne s2,zero,0x00038ac4
_lw a1,-0x7fac(gp)
lw a1,-0x7fac(gp)
addiu a1,a1,-0x6a6c
lw v0,-0x7e20(gp)
lw a3,0x0(v0)
sw s2,0x14(sp)
sw s5,0x10(sp)
addiu a3,a3,0x8f
lw a2,-0x7fac(gp)
addiu a2,a2,-0x6c8c
li a0,0x1
lw t9,-0x7304(gp)
jalr t9
_nop
lw gp,0x18(sp)
or a0,s2,zero
lw t9,-0x6fd0(gp)
jalr t9
_nop
lw gp,0x18(sp)
b 0x000388d4
_or s0,zero,zero
lw a1,0x20(sp)
or a0,s4,zero
or t9,s8,zero
jalr t9
_nop
lw gp,0x18(sp)
beq v0,zero,0x00038bb0
_or s0,zero,zero
b 0x00038a68
_lbu a0,0x0(v0)
(translation_unit "int FUN_000387b0(int param_1)\n\n{\n  bool bVar1;\n  undefined4 uVar2;\n  code *pcVar3;\n  code *pcVar4;\n  undefined4 uVar5;\n  int iVar6;\n  byte *pbVar7;\n  undefined *puVar8;\n  int iVar9;\n  undefined *puVar10;\n  int iVar11;\n  \n  if ((*(uint *)(param_1 + 0x14) & 4) == 0) {\n    iVar11 = -2;\n    if ((*(uint *)PTR_DAT_0013135c & 2) == 0) {\n      if ((*(uint *)(param_1 + 0x14) & 0x10) == 0) {\n        puVar8 = PTR_FUN_001311a4 + -0x6aa4;\n      }\n      else {\n        puVar8 = PTR_FUN_001311a4 + -0x6abc;\n      }\n      iVar11 = *(int *)(param_1 + 0x18);\n      if (iVar11 == 0) {\n        iVar11 = *(int *)(param_1 + 8);\n      }\n      FUN_000195a0(puVar8,iVar11);\n      iVar11 = -2;\n    }\n  }\n  else {\n    if ((*(uint *)PTR_DAT_0013135c & 0x20) == 0) {\n      uVar2 = FUN_00018edc(*(undefined4 *)(param_1 + 0xc));\n      *(undefined4 *)(param_1 + 0xc) = uVar2;\n    }\n    puVar8 = PTR_FUN_001311a4;\n    bVar1 = true;\n    iVar11 = 0;\n    pcVar3 = (code *)(PTR_LAB_00131488 + -0x7cf0);\n    pcVar4 = (code *)(PTR_LAB_00131488 + -0x7fc8);\n    do {\n      while( true ) {\n        while( true ) {\n          while( true ) {\n            if (*(int *)(param_1 + 0xc) == 0) {\n              return iVar11;\n            }\n            uVar2 = FUN_00018db0(param_1 + 0xc);\n            uVar5 = FUN_00018b68(uVar2);\n            iVar6 = (*pcVar3)(uVar5);\n            if ((*(uint *)PTR_DAT_0013135c & 0x20) != 0) break;\n            iVar11 = *(int *)(iVar6 + 0x1c);\n            *(undefined4 *)(iVar6 + 0x1c) = 0;\n            pbVar7 = (byte *)(*(code *)PTR_FUN_00131474)(PTR_FUN_001311a4 + -0x6a3c,0);\n            if (pbVar7 != (byte *)0x0) {\n              for (; 0x22 < *pbVar7; pbVar7 = pbVar7 + 1) {\n              }\n                    /* WARNING: Could not emulate address calculation at 0x00038a00 */\n                    /* WARNING: Treating indirect jump as call */\n              iVar11 = (*(code *)(&_gp_1 + *(int *)(puVar8 + (uint)*pbVar7 * 4 + -0x6a0c)))();\n              return iVar11;\n            }\n            if (param_1 == iVar6) {\n              iVar11 = (*pcVar4)(iVar11,*(undefined4 *)(*(int *)PTR_DAT_00131330 + 4));\n            }\n            if ((*(uint *)PTR_DAT_0013135c & 0x40) == 0) {\n              if ((*(uint *)(iVar6 + 0x14) & 1) == 0) {\n                iVar9 = FUN_00039834(uVar2,iVar11);\n                if (iVar9 == 0x11) {\n                  (*(code *)PTR_free_00132180)(iVar11);\n                }\n                else {\n                  (*(code *)PTR_free_00132180)();\n                  if (iVar9 != 0) {\n                    iVar11 = *(int *)(iVar6 + 0x18);\n                    if (iVar11 == 0) {\n                      iVar11 = *(int *)(iVar6 + 8);\n                    }\n                    uVar5 = FUN_000399f8(iVar9);\n                    FUN_000195a0(PTR_FUN_001311a4 + -0x6a2c,iVar11,uVar2,uVar5);\n                    return iVar9;\n                  }\n                }\n                *(uint *)(iVar6 + 0x14) = *(uint *)(iVar6 + 0x14) | 1;\n                iVar11 = 0;\n              }\n              else {\n                (*(code *)PTR_free_00132180)(iVar11);\n                iVar11 = 0;\n              }\n            }\n            else {\n              if (iVar11 == 0) {\n                puVar10 = PTR_FUN_001311a4 + -0x6a6c;\n              }\n              else {\n                puVar10 = PTR_FUN_001311a4 + -0x6a80;\n              }\n              (*(code *)PTR___printf_chk_00131e4c)\n                        (1,puVar10,PTR_FUN_001311a4 + -0x6c8c,*(int *)PTR_DAT_00131330 + 0x8f,uVar2,\n                         iVar11);\n              (*(code *)PTR_free_00132180)(iVar11);\n              iVar11 = 0;\n            }\n          }\n          if ((*(uint *)(iVar6 + 0x14) & 1) != 0) break;\n          bVar1 = false;\n          iVar11 = 0;\n        }\n        iVar11 = FUN_000399a0(*(undefined4 *)(iVar6 + 8),0x400);\n        if (iVar11 != 0) break;\n        *(uint *)(iVar6 + 0x14) = *(uint *)(iVar6 + 0x14) & 0xfffffffe;\n        bVar1 = false;\n      }\n    } while (!bVar1);\n    iVar9 = *(int *)(iVar6 + 0x18);\n    if (iVar9 == 0) {\n      iVar9 = *(int *)(iVar6 + 8);\n    }\n    FUN_00018f7c(PTR_FUN_001311a4 + -0x6a58,iVar9);\n  }\n  return iVar11;\n}\n\n" (function_definition "int FUN_000387b0(int param_1)\n\n{\n  bool bVar1;\n  undefined4 uVar2;\n  code *pcVar3;\n  code *pcVar4;\n  undefined4 uVar5;\n  int iVar6;\n  byte *pbVar7;\n  undefined *puVar8;\n  int iVar9;\n  undefined *puVar10;\n  int iVar11;\n  \n  if ((*(uint *)(param_1 + 0x14) & 4) == 0) {\n    iVar11 = -2;\n    if ((*(uint *)PTR_DAT_0013135c & 2) == 0) {\n      if ((*(uint *)(param_1 + 0x14) & 0x10) == 0) {\n        puVar8 = PTR_FUN_001311a4 + -0x6aa4;\n      }\n      else {\n        puVar8 = PTR_FUN_001311a4 + -0x6abc;\n      }\n      iVar11 = *(int *)(param_1 + 0x18);\n      if (iVar11 == 0) {\n        iVar11 = *(int *)(param_1 + 8);\n      }\n      FUN_000195a0(puVar8,iVar11);\n      iVar11 = -2;\n    }\n  }\n  else {\n    if ((*(uint *)PTR_DAT_0013135c & 0x20) == 0) {\n      uVar2 = FUN_00018edc(*(undefined4 *)(param_1 + 0xc));\n      *(undefined4 *)(param_1 + 0xc) = uVar2;\n    }\n    puVar8 = PTR_FUN_001311a4;\n    bVar1 = true;\n    iVar11 = 0;\n    pcVar3 = (code *)(PTR_LAB_00131488 + -0x7cf0);\n    pcVar4 = (code *)(PTR_LAB_00131488 + -0x7fc8);\n    do {\n      while( true ) {\n        while( true ) {\n          while( true ) {\n            if (*(int *)(param_1 + 0xc) == 0) {\n              return iVar11;\n            }\n            uVar2 = FUN_00018db0(param_1 + 0xc);\n            uVar5 = FUN_00018b68(uVar2);\n            iVar6 = (*pcVar3)(uVar5);\n            if ((*(uint *)PTR_DAT_0013135c & 0x20) != 0) break;\n            iVar11 = *(int *)(iVar6 + 0x1c);\n            *(undefined4 *)(iVar6 + 0x1c) = 0;\n            pbVar7 = (byte *)(*(code *)PTR_FUN_00131474)(PTR_FUN_001311a4 + -0x6a3c,0);\n            if (pbVar7 != (byte *)0x0) {\n              for (; 0x22 < *pbVar7; pbVar7 = pbVar7 + 1) {\n              }\n                    /* WARNING: Could not emulate address calculation at 0x00038a00 */\n                    /* WARNING: Treating indirect jump as call */\n              iVar11 = (*(code *)(&_gp_1 + *(int *)(puVar8 + (uint)*pbVar7 * 4 + -0x6a0c)))();\n              return iVar11;\n            }\n            if (param_1 == iVar6) {\n              iVar11 = (*pcVar4)(iVar11,*(undefined4 *)(*(int *)PTR_DAT_00131330 + 4));\n            }\n            if ((*(uint *)PTR_DAT_0013135c & 0x40) == 0) {\n              if ((*(uint *)(iVar6 + 0x14) & 1) == 0) {\n                iVar9 = FUN_00039834(uVar2,iVar11);\n                if (iVar9 == 0x11) {\n                  (*(code *)PTR_free_00132180)(iVar11);\n                }\n                else {\n                  (*(code *)PTR_free_00132180)();\n                  if (iVar9 != 0) {\n                    iVar11 = *(int *)(iVar6 + 0x18);\n                    if (iVar11 == 0) {\n                      iVar11 = *(int *)(iVar6 + 8);\n                    }\n                    uVar5 = FUN_000399f8(iVar9);\n                    FUN_000195a0(PTR_FUN_001311a4 + -0x6a2c,iVar11,uVar2,uVar5);\n                    return iVar9;\n                  }\n                }\n                *(uint *)(iVar6 + 0x14) = *(uint *)(iVar6 + 0x14) | 1;\n                iVar11 = 0;\n              }\n              else {\n                (*(code *)PTR_free_00132180)(iVar11);\n                iVar11 = 0;\n              }\n            }\n            else {\n              if (iVar11 == 0) {\n                puVar10 = PTR_FUN_001311a4 + -0x6a6c;\n              }\n              else {\n                puVar10 = PTR_FUN_001311a4 + -0x6a80;\n              }\n              (*(code *)PTR___printf_chk_00131e4c)\n                        (1,puVar10,PTR_FUN_001311a4 + -0x6c8c,*(int *)PTR_DAT_00131330 + 0x8f,uVar2,\n                         iVar11);\n              (*(code *)PTR_free_00132180)(iVar11);\n              iVar11 = 0;\n            }\n          }\n          if ((*(uint *)(iVar6 + 0x14) & 1) != 0) break;\n          bVar1 = false;\n          iVar11 = 0;\n        }\n        iVar11 = FUN_000399a0(*(undefined4 *)(iVar6 + 8),0x400);\n        if (iVar11 != 0) break;\n        *(uint *)(iVar6 + 0x14) = *(uint *)(iVar6 + 0x14) & 0xfffffffe;\n        bVar1 = false;\n      }\n    } while (!bVar1);\n    iVar9 = *(int *)(iVar6 + 0x18);\n    if (iVar9 == 0) {\n      iVar9 = *(int *)(iVar6 + 8);\n    }\n    FUN_00018f7c(PTR_FUN_001311a4 + -0x6a58,iVar9);\n  }\n  return iVar11;\n}" primitive_type (function_declarator "FUN_000387b0(int param_1)" identifier (parameter_list "(int param_1)" ( (parameter_declaration "int param_1" primitive_type identifier) ))) (compound_statement "{\n  bool bVar1;\n  undefined4 uVar2;\n  code *pcVar3;\n  code *pcVar4;\n  undefined4 uVar5;\n  int iVar6;\n  byte *pbVar7;\n  undefined *puVar8;\n  int iVar9;\n  undefined *puVar10;\n  int iVar11;\n  \n  if ((*(uint *)(param_1 + 0x14) & 4) == 0) {\n    iVar11 = -2;\n    if ((*(uint *)PTR_DAT_0013135c & 2) == 0) {\n      if ((*(uint *)(param_1 + 0x14) & 0x10) == 0) {\n        puVar8 = PTR_FUN_001311a4 + -0x6aa4;\n      }\n      else {\n        puVar8 = PTR_FUN_001311a4 + -0x6abc;\n      }\n      iVar11 = *(int *)(param_1 + 0x18);\n      if (iVar11 == 0) {\n        iVar11 = *(int *)(param_1 + 8);\n      }\n      FUN_000195a0(puVar8,iVar11);\n      iVar11 = -2;\n    }\n  }\n  else {\n    if ((*(uint *)PTR_DAT_0013135c & 0x20) == 0) {\n      uVar2 = FUN_00018edc(*(undefined4 *)(param_1 + 0xc));\n      *(undefined4 *)(param_1 + 0xc) = uVar2;\n    }\n    puVar8 = PTR_FUN_001311a4;\n    bVar1 = true;\n    iVar11 = 0;\n    pcVar3 = (code *)(PTR_LAB_00131488 + -0x7cf0);\n    pcVar4 = (code *)(PTR_LAB_00131488 + -0x7fc8);\n    do {\n      while( true ) {\n        while( true ) {\n          while( true ) {\n            if (*(int *)(param_1 + 0xc) == 0) {\n              return iVar11;\n            }\n            uVar2 = FUN_00018db0(param_1 + 0xc);\n            uVar5 = FUN_00018b68(uVar2);\n            iVar6 = (*pcVar3)(uVar5);\n            if ((*(uint *)PTR_DAT_0013135c & 0x20) != 0) break;\n            iVar11 = *(int *)(iVar6 + 0x1c);\n            *(undefined4 *)(iVar6 + 0x1c) = 0;\n            pbVar7 = (byte *)(*(code *)PTR_FUN_00131474)(PTR_FUN_001311a4 + -0x6a3c,0);\n            if (pbVar7 != (byte *)0x0) {\n              for (; 0x22 < *pbVar7; pbVar7 = pbVar7 + 1) {\n              }\n                    /* WARNING: Could not emulate address calculation at 0x00038a00 */\n                    /* WARNING: Treating indirect jump as call */\n              iVar11 = (*(code *)(&_gp_1 + *(int *)(puVar8 + (uint)*pbVar7 * 4 + -0x6a0c)))();\n              return iVar11;\n            }\n            if (param_1 == iVar6) {\n              iVar11 = (*pcVar4)(iVar11,*(undefined4 *)(*(int *)PTR_DAT_00131330 + 4));\n            }\n            if ((*(uint *)PTR_DAT_0013135c & 0x40) == 0) {\n              if ((*(uint *)(iVar6 + 0x14) & 1) == 0) {\n                iVar9 = FUN_00039834(uVar2,iVar11);\n                if (iVar9 == 0x11) {\n                  (*(code *)PTR_free_00132180)(iVar11);\n                }\n                else {\n                  (*(code *)PTR_free_00132180)();\n                  if (iVar9 != 0) {\n                    iVar11 = *(int *)(iVar6 + 0x18);\n                    if (iVar11 == 0) {\n                      iVar11 = *(int *)(iVar6 + 8);\n                    }\n                    uVar5 = FUN_000399f8(iVar9);\n                    FUN_000195a0(PTR_FUN_001311a4 + -0x6a2c,iVar11,uVar2,uVar5);\n                    return iVar9;\n                  }\n                }\n                *(uint *)(iVar6 + 0x14) = *(uint *)(iVar6 + 0x14) | 1;\n                iVar11 = 0;\n              }\n              else {\n                (*(code *)PTR_free_00132180)(iVar11);\n                iVar11 = 0;\n              }\n            }\n            else {\n              if (iVar11 == 0) {\n                puVar10 = PTR_FUN_001311a4 + -0x6a6c;\n              }\n              else {\n                puVar10 = PTR_FUN_001311a4 + -0x6a80;\n              }\n              (*(code *)PTR___printf_chk_00131e4c)\n                        (1,puVar10,PTR_FUN_001311a4 + -0x6c8c,*(int *)PTR_DAT_00131330 + 0x8f,uVar2,\n                         iVar11);\n              (*(code *)PTR_free_00132180)(iVar11);\n              iVar11 = 0;\n            }\n          }\n          if ((*(uint *)(iVar6 + 0x14) & 1) != 0) break;\n          bVar1 = false;\n          iVar11 = 0;\n        }\n        iVar11 = FUN_000399a0(*(undefined4 *)(iVar6 + 8),0x400);\n        if (iVar11 != 0) break;\n        *(uint *)(iVar6 + 0x14) = *(uint *)(iVar6 + 0x14) & 0xfffffffe;\n        bVar1 = false;\n      }\n    } while (!bVar1);\n    iVar9 = *(int *)(iVar6 + 0x18);\n    if (iVar9 == 0) {\n      iVar9 = *(int *)(iVar6 + 8);\n    }\n    FUN_00018f7c(PTR_FUN_001311a4 + -0x6a58,iVar9);\n  }\n  return iVar11;\n}" { (declaration "bool bVar1;" primitive_type identifier ;) (declaration "undefined4 uVar2;" type_identifier identifier ;) (declaration "code *pcVar3;" type_identifier (pointer_declarator "*pcVar3" * identifier) ;) (declaration "code *pcVar4;" type_identifier (pointer_declarator "*pcVar4" * identifier) ;) (declaration "undefined4 uVar5;" type_identifier identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "byte *pbVar7;" type_identifier (pointer_declarator "*pbVar7" * identifier) ;) (declaration "undefined *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "undefined *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (declaration "int iVar11;" primitive_type identifier ;) (if_statement "if ((*(uint *)(param_1 + 0x14) & 4) == 0) {\n    iVar11 = -2;\n    if ((*(uint *)PTR_DAT_0013135c & 2) == 0) {\n      if ((*(uint *)(param_1 + 0x14) & 0x10) == 0) {\n        puVar8 = PTR_FUN_001311a4 + -0x6aa4;\n      }\n      else {\n        puVar8 = PTR_FUN_001311a4 + -0x6abc;\n      }\n      iVar11 = *(int *)(param_1 + 0x18);\n      if (iVar11 == 0) {\n        iVar11 = *(int *)(param_1 + 8);\n      }\n      FUN_000195a0(puVar8,iVar11);\n      iVar11 = -2;\n    }\n  }\n  else {\n    if ((*(uint *)PTR_DAT_0013135c & 0x20) == 0) {\n      uVar2 = FUN_00018edc(*(undefined4 *)(param_1 + 0xc));\n      *(undefined4 *)(param_1 + 0xc) = uVar2;\n    }\n    puVar8 = PTR_FUN_001311a4;\n    bVar1 = true;\n    iVar11 = 0;\n    pcVar3 = (code *)(PTR_LAB_00131488 + -0x7cf0);\n    pcVar4 = (code *)(PTR_LAB_00131488 + -0x7fc8);\n    do {\n      while( true ) {\n        while( true ) {\n          while( true ) {\n            if (*(int *)(param_1 + 0xc) == 0) {\n              return iVar11;\n            }\n            uVar2 = FUN_00018db0(param_1 + 0xc);\n            uVar5 = FUN_00018b68(uVar2);\n            iVar6 = (*pcVar3)(uVar5);\n            if ((*(uint *)PTR_DAT_0013135c & 0x20) != 0) break;\n            iVar11 = *(int *)(iVar6 + 0x1c);\n            *(undefined4 *)(iVar6 + 0x1c) = 0;\n            pbVar7 = (byte *)(*(code *)PTR_FUN_00131474)(PTR_FUN_001311a4 + -0x6a3c,0);\n            if (pbVar7 != (byte *)0x0) {\n              for (; 0x22 < *pbVar7; pbVar7 = pbVar7 + 1) {\n              }\n                    /* WARNING: Could not emulate address calculation at 0x00038a00 */\n                    /* WARNING: Treating indirect jump as call */\n              iVar11 = (*(code *)(&_gp_1 + *(int *)(puVar8 + (uint)*pbVar7 * 4 + -0x6a0c)))();\n              return iVar11;\n            }\n            if (param_1 == iVar6) {\n              iVar11 = (*pcVar4)(iVar11,*(undefined4 *)(*(int *)PTR_DAT_00131330 + 4));\n            }\n            if ((*(uint *)PTR_DAT_0013135c & 0x40) == 0) {\n              if ((*(uint *)(iVar6 + 0x14) & 1) == 0) {\n                iVar9 = FUN_00039834(uVar2,iVar11);\n                if (iVar9 == 0x11) {\n                  (*(code *)PTR_free_00132180)(iVar11);\n                }\n                else {\n                  (*(code *)PTR_free_00132180)();\n                  if (iVar9 != 0) {\n                    iVar11 = *(int *)(iVar6 + 0x18);\n                    if (iVar11 == 0) {\n                      iVar11 = *(int *)(iVar6 + 8);\n                    }\n                    uVar5 = FUN_000399f8(iVar9);\n                    FUN_000195a0(PTR_FUN_001311a4 + -0x6a2c,iVar11,uVar2,uVar5);\n                    return iVar9;\n                  }\n                }\n                *(uint *)(iVar6 + 0x14) = *(uint *)(iVar6 + 0x14) | 1;\n                iVar11 = 0;\n              }\n              else {\n                (*(code *)PTR_free_00132180)(iVar11);\n                iVar11 = 0;\n              }\n            }\n            else {\n              if (iVar11 == 0) {\n                puVar10 = PTR_FUN_001311a4 + -0x6a6c;\n              }\n              else {\n                puVar10 = PTR_FUN_001311a4 + -0x6a80;\n              }\n              (*(code *)PTR___printf_chk_00131e4c)\n                        (1,puVar10,PTR_FUN_001311a4 + -0x6c8c,*(int *)PTR_DAT_00131330 + 0x8f,uVar2,\n                         iVar11);\n              (*(code *)PTR_free_00132180)(iVar11);\n              iVar11 = 0;\n            }\n          }\n          if ((*(uint *)(iVar6 + 0x14) & 1) != 0) break;\n          bVar1 = false;\n          iVar11 = 0;\n        }\n        iVar11 = FUN_000399a0(*(undefined4 *)(iVar6 + 8),0x400);\n        if (iVar11 != 0) break;\n        *(uint *)(iVar6 + 0x14) = *(uint *)(iVar6 + 0x14) & 0xfffffffe;\n        bVar1 = false;\n      }\n    } while (!bVar1);\n    iVar9 = *(int *)(iVar6 + 0x18);\n    if (iVar9 == 0) {\n      iVar9 = *(int *)(iVar6 + 8);\n    }\n    FUN_00018f7c(PTR_FUN_001311a4 + -0x6a58,iVar9);\n  }" if (parenthesized_expression "((*(uint *)(param_1 + 0x14) & 4) == 0)" ( (binary_expression "(*(uint *)(param_1 + 0x14) & 4) == 0" (parenthesized_expression "(*(uint *)(param_1 + 0x14) & 4)" ( (binary_expression "*(uint *)(param_1 + 0x14) & 4" (pointer_expression "*(uint *)(param_1 + 0x14)" * (cast_expression "(uint *)(param_1 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n    iVar11 = -2;\n    if ((*(uint *)PTR_DAT_0013135c & 2) == 0) {\n      if ((*(uint *)(param_1 + 0x14) & 0x10) == 0) {\n        puVar8 = PTR_FUN_001311a4 + -0x6aa4;\n      }\n      else {\n        puVar8 = PTR_FUN_001311a4 + -0x6abc;\n      }\n      iVar11 = *(int *)(param_1 + 0x18);\n      if (iVar11 == 0) {\n        iVar11 = *(int *)(param_1 + 8);\n      }\n      FUN_000195a0(puVar8,iVar11);\n      iVar11 = -2;\n    }\n  }" { (expression_statement "iVar11 = -2;" (assignment_expression "iVar11 = -2" identifier = number_literal) ;) (if_statement "if ((*(uint *)PTR_DAT_0013135c & 2) == 0) {\n      if ((*(uint *)(param_1 + 0x14) & 0x10) == 0) {\n        puVar8 = PTR_FUN_001311a4 + -0x6aa4;\n      }\n      else {\n        puVar8 = PTR_FUN_001311a4 + -0x6abc;\n      }\n      iVar11 = *(int *)(param_1 + 0x18);\n      if (iVar11 == 0) {\n        iVar11 = *(int *)(param_1 + 8);\n      }\n      FUN_000195a0(puVar8,iVar11);\n      iVar11 = -2;\n    }" if (parenthesized_expression "((*(uint *)PTR_DAT_0013135c & 2) == 0)" ( (binary_expression "(*(uint *)PTR_DAT_0013135c & 2) == 0" (parenthesized_expression "(*(uint *)PTR_DAT_0013135c & 2)" ( (binary_expression "*(uint *)PTR_DAT_0013135c & 2" (pointer_expression "*(uint *)PTR_DAT_0013135c" * (cast_expression "(uint *)PTR_DAT_0013135c" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) & number_literal) )) == number_literal) )) (compound_statement "{\n      if ((*(uint *)(param_1 + 0x14) & 0x10) == 0) {\n        puVar8 = PTR_FUN_001311a4 + -0x6aa4;\n      }\n      else {\n        puVar8 = PTR_FUN_001311a4 + -0x6abc;\n      }\n      iVar11 = *(int *)(param_1 + 0x18);\n      if (iVar11 == 0) {\n        iVar11 = *(int *)(param_1 + 8);\n      }\n      FUN_000195a0(puVar8,iVar11);\n      iVar11 = -2;\n    }" { (if_statement "if ((*(uint *)(param_1 + 0x14) & 0x10) == 0) {\n        puVar8 = PTR_FUN_001311a4 + -0x6aa4;\n      }\n      else {\n        puVar8 = PTR_FUN_001311a4 + -0x6abc;\n      }" if (parenthesized_expression "((*(uint *)(param_1 + 0x14) & 0x10) == 0)" ( (binary_expression "(*(uint *)(param_1 + 0x14) & 0x10) == 0" (parenthesized_expression "(*(uint *)(param_1 + 0x14) & 0x10)" ( (binary_expression "*(uint *)(param_1 + 0x14) & 0x10" (pointer_expression "*(uint *)(param_1 + 0x14)" * (cast_expression "(uint *)(param_1 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n        puVar8 = PTR_FUN_001311a4 + -0x6aa4;\n      }" { (expression_statement "puVar8 = PTR_FUN_001311a4 + -0x6aa4;" (assignment_expression "puVar8 = PTR_FUN_001311a4 + -0x6aa4" identifier = (binary_expression "PTR_FUN_001311a4 + -0x6aa4" identifier + number_literal)) ;) }) (else_clause "else {\n        puVar8 = PTR_FUN_001311a4 + -0x6abc;\n      }" else (compound_statement "{\n        puVar8 = PTR_FUN_001311a4 + -0x6abc;\n      }" { (expression_statement "puVar8 = PTR_FUN_001311a4 + -0x6abc;" (assignment_expression "puVar8 = PTR_FUN_001311a4 + -0x6abc" identifier = (binary_expression "PTR_FUN_001311a4 + -0x6abc" identifier + number_literal)) ;) }))) (expression_statement "iVar11 = *(int *)(param_1 + 0x18);" (assignment_expression "iVar11 = *(int *)(param_1 + 0x18)" identifier = (pointer_expression "*(int *)(param_1 + 0x18)" * (cast_expression "(int *)(param_1 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) ))))) ;) (if_statement "if (iVar11 == 0) {\n        iVar11 = *(int *)(param_1 + 8);\n      }" if (parenthesized_expression "(iVar11 == 0)" ( (binary_expression "iVar11 == 0" identifier == number_literal) )) (compound_statement "{\n        iVar11 = *(int *)(param_1 + 8);\n      }" { (expression_statement "iVar11 = *(int *)(param_1 + 8);" (assignment_expression "iVar11 = *(int *)(param_1 + 8)" identifier = (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) ))))) ;) })) (expression_statement "FUN_000195a0(puVar8,iVar11);" (call_expression "FUN_000195a0(puVar8,iVar11)" identifier (argument_list "(puVar8,iVar11)" ( identifier , identifier ))) ;) (expression_statement "iVar11 = -2;" (assignment_expression "iVar11 = -2" identifier = number_literal) ;) })) }) (else_clause "else {\n    if ((*(uint *)PTR_DAT_0013135c & 0x20) == 0) {\n      uVar2 = FUN_00018edc(*(undefined4 *)(param_1 + 0xc));\n      *(undefined4 *)(param_1 + 0xc) = uVar2;\n    }\n    puVar8 = PTR_FUN_001311a4;\n    bVar1 = true;\n    iVar11 = 0;\n    pcVar3 = (code *)(PTR_LAB_00131488 + -0x7cf0);\n    pcVar4 = (code *)(PTR_LAB_00131488 + -0x7fc8);\n    do {\n      while( true ) {\n        while( true ) {\n          while( true ) {\n            if (*(int *)(param_1 + 0xc) == 0) {\n              return iVar11;\n            }\n            uVar2 = FUN_00018db0(param_1 + 0xc);\n            uVar5 = FUN_00018b68(uVar2);\n            iVar6 = (*pcVar3)(uVar5);\n            if ((*(uint *)PTR_DAT_0013135c & 0x20) != 0) break;\n            iVar11 = *(int *)(iVar6 + 0x1c);\n            *(undefined4 *)(iVar6 + 0x1c) = 0;\n            pbVar7 = (byte *)(*(code *)PTR_FUN_00131474)(PTR_FUN_001311a4 + -0x6a3c,0);\n            if (pbVar7 != (byte *)0x0) {\n              for (; 0x22 < *pbVar7; pbVar7 = pbVar7 + 1) {\n              }\n                    /* WARNING: Could not emulate address calculation at 0x00038a00 */\n                    /* WARNING: Treating indirect jump as call */\n              iVar11 = (*(code *)(&_gp_1 + *(int *)(puVar8 + (uint)*pbVar7 * 4 + -0x6a0c)))();\n              return iVar11;\n            }\n            if (param_1 == iVar6) {\n              iVar11 = (*pcVar4)(iVar11,*(undefined4 *)(*(int *)PTR_DAT_00131330 + 4));\n            }\n            if ((*(uint *)PTR_DAT_0013135c & 0x40) == 0) {\n              if ((*(uint *)(iVar6 + 0x14) & 1) == 0) {\n                iVar9 = FUN_00039834(uVar2,iVar11);\n                if (iVar9 == 0x11) {\n                  (*(code *)PTR_free_00132180)(iVar11);\n                }\n                else {\n                  (*(code *)PTR_free_00132180)();\n                  if (iVar9 != 0) {\n                    iVar11 = *(int *)(iVar6 + 0x18);\n                    if (iVar11 == 0) {\n                      iVar11 = *(int *)(iVar6 + 8);\n                    }\n                    uVar5 = FUN_000399f8(iVar9);\n                    FUN_000195a0(PTR_FUN_001311a4 + -0x6a2c,iVar11,uVar2,uVar5);\n                    return iVar9;\n                  }\n                }\n                *(uint *)(iVar6 + 0x14) = *(uint *)(iVar6 + 0x14) | 1;\n                iVar11 = 0;\n              }\n              else {\n                (*(code *)PTR_free_00132180)(iVar11);\n                iVar11 = 0;\n              }\n            }\n            else {\n              if (iVar11 == 0) {\n                puVar10 = PTR_FUN_001311a4 + -0x6a6c;\n              }\n              else {\n                puVar10 = PTR_FUN_001311a4 + -0x6a80;\n              }\n              (*(code *)PTR___printf_chk_00131e4c)\n                        (1,puVar10,PTR_FUN_001311a4 + -0x6c8c,*(int *)PTR_DAT_00131330 + 0x8f,uVar2,\n                         iVar11);\n              (*(code *)PTR_free_00132180)(iVar11);\n              iVar11 = 0;\n            }\n          }\n          if ((*(uint *)(iVar6 + 0x14) & 1) != 0) break;\n          bVar1 = false;\n          iVar11 = 0;\n        }\n        iVar11 = FUN_000399a0(*(undefined4 *)(iVar6 + 8),0x400);\n        if (iVar11 != 0) break;\n        *(uint *)(iVar6 + 0x14) = *(uint *)(iVar6 + 0x14) & 0xfffffffe;\n        bVar1 = false;\n      }\n    } while (!bVar1);\n    iVar9 = *(int *)(iVar6 + 0x18);\n    if (iVar9 == 0) {\n      iVar9 = *(int *)(iVar6 + 8);\n    }\n    FUN_00018f7c(PTR_FUN_001311a4 + -0x6a58,iVar9);\n  }" else (compound_statement "{\n    if ((*(uint *)PTR_DAT_0013135c & 0x20) == 0) {\n      uVar2 = FUN_00018edc(*(undefined4 *)(param_1 + 0xc));\n      *(undefined4 *)(param_1 + 0xc) = uVar2;\n    }\n    puVar8 = PTR_FUN_001311a4;\n    bVar1 = true;\n    iVar11 = 0;\n    pcVar3 = (code *)(PTR_LAB_00131488 + -0x7cf0);\n    pcVar4 = (code *)(PTR_LAB_00131488 + -0x7fc8);\n    do {\n      while( true ) {\n        while( true ) {\n          while( true ) {\n            if (*(int *)(param_1 + 0xc) == 0) {\n              return iVar11;\n            }\n            uVar2 = FUN_00018db0(param_1 + 0xc);\n            uVar5 = FUN_00018b68(uVar2);\n            iVar6 = (*pcVar3)(uVar5);\n            if ((*(uint *)PTR_DAT_0013135c & 0x20) != 0) break;\n            iVar11 = *(int *)(iVar6 + 0x1c);\n            *(undefined4 *)(iVar6 + 0x1c) = 0;\n            pbVar7 = (byte *)(*(code *)PTR_FUN_00131474)(PTR_FUN_001311a4 + -0x6a3c,0);\n            if (pbVar7 != (byte *)0x0) {\n              for (; 0x22 < *pbVar7; pbVar7 = pbVar7 + 1) {\n              }\n                    /* WARNING: Could not emulate address calculation at 0x00038a00 */\n                    /* WARNING: Treating indirect jump as call */\n              iVar11 = (*(code *)(&_gp_1 + *(int *)(puVar8 + (uint)*pbVar7 * 4 + -0x6a0c)))();\n              return iVar11;\n            }\n            if (param_1 == iVar6) {\n              iVar11 = (*pcVar4)(iVar11,*(undefined4 *)(*(int *)PTR_DAT_00131330 + 4));\n            }\n            if ((*(uint *)PTR_DAT_0013135c & 0x40) == 0) {\n              if ((*(uint *)(iVar6 + 0x14) & 1) == 0) {\n                iVar9 = FUN_00039834(uVar2,iVar11);\n                if (iVar9 == 0x11) {\n                  (*(code *)PTR_free_00132180)(iVar11);\n                }\n                else {\n                  (*(code *)PTR_free_00132180)();\n                  if (iVar9 != 0) {\n                    iVar11 = *(int *)(iVar6 + 0x18);\n                    if (iVar11 == 0) {\n                      iVar11 = *(int *)(iVar6 + 8);\n                    }\n                    uVar5 = FUN_000399f8(iVar9);\n                    FUN_000195a0(PTR_FUN_001311a4 + -0x6a2c,iVar11,uVar2,uVar5);\n                    return iVar9;\n                  }\n                }\n                *(uint *)(iVar6 + 0x14) = *(uint *)(iVar6 + 0x14) | 1;\n                iVar11 = 0;\n              }\n              else {\n                (*(code *)PTR_free_00132180)(iVar11);\n                iVar11 = 0;\n              }\n            }\n            else {\n              if (iVar11 == 0) {\n                puVar10 = PTR_FUN_001311a4 + -0x6a6c;\n              }\n              else {\n                puVar10 = PTR_FUN_001311a4 + -0x6a80;\n              }\n              (*(code *)PTR___printf_chk_00131e4c)\n                        (1,puVar10,PTR_FUN_001311a4 + -0x6c8c,*(int *)PTR_DAT_00131330 + 0x8f,uVar2,\n                         iVar11);\n              (*(code *)PTR_free_00132180)(iVar11);\n              iVar11 = 0;\n            }\n          }\n          if ((*(uint *)(iVar6 + 0x14) & 1) != 0) break;\n          bVar1 = false;\n          iVar11 = 0;\n        }\n        iVar11 = FUN_000399a0(*(undefined4 *)(iVar6 + 8),0x400);\n        if (iVar11 != 0) break;\n        *(uint *)(iVar6 + 0x14) = *(uint *)(iVar6 + 0x14) & 0xfffffffe;\n        bVar1 = false;\n      }\n    } while (!bVar1);\n    iVar9 = *(int *)(iVar6 + 0x18);\n    if (iVar9 == 0) {\n      iVar9 = *(int *)(iVar6 + 8);\n    }\n    FUN_00018f7c(PTR_FUN_001311a4 + -0x6a58,iVar9);\n  }" { (if_statement "if ((*(uint *)PTR_DAT_0013135c & 0x20) == 0) {\n      uVar2 = FUN_00018edc(*(undefined4 *)(param_1 + 0xc));\n      *(undefined4 *)(param_1 + 0xc) = uVar2;\n    }" if (parenthesized_expression "((*(uint *)PTR_DAT_0013135c & 0x20) == 0)" ( (binary_expression "(*(uint *)PTR_DAT_0013135c & 0x20) == 0" (parenthesized_expression "(*(uint *)PTR_DAT_0013135c & 0x20)" ( (binary_expression "*(uint *)PTR_DAT_0013135c & 0x20" (pointer_expression "*(uint *)PTR_DAT_0013135c" * (cast_expression "(uint *)PTR_DAT_0013135c" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) & number_literal) )) == number_literal) )) (compound_statement "{\n      uVar2 = FUN_00018edc(*(undefined4 *)(param_1 + 0xc));\n      *(undefined4 *)(param_1 + 0xc) = uVar2;\n    }" { (expression_statement "uVar2 = FUN_00018edc(*(undefined4 *)(param_1 + 0xc));" (assignment_expression "uVar2 = FUN_00018edc(*(undefined4 *)(param_1 + 0xc))" identifier = (call_expression "FUN_00018edc(*(undefined4 *)(param_1 + 0xc))" identifier (argument_list "(*(undefined4 *)(param_1 + 0xc))" ( (pointer_expression "*(undefined4 *)(param_1 + 0xc)" * (cast_expression "(undefined4 *)(param_1 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) )))) ;) (expression_statement "*(undefined4 *)(param_1 + 0xc) = uVar2;" (assignment_expression "*(undefined4 *)(param_1 + 0xc) = uVar2" (pointer_expression "*(undefined4 *)(param_1 + 0xc)" * (cast_expression "(undefined4 *)(param_1 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) = identifier) ;) })) (expression_statement "puVar8 = PTR_FUN_001311a4;" (assignment_expression "puVar8 = PTR_FUN_001311a4" identifier = identifier) ;) (expression_statement "bVar1 = true;" (assignment_expression "bVar1 = true" identifier = true) ;) (expression_statement "iVar11 = 0;" (assignment_expression "iVar11 = 0" identifier = number_literal) ;) (expression_statement "pcVar3 = (code *)(PTR_LAB_00131488 + -0x7cf0);" (assignment_expression "pcVar3 = (code *)(PTR_LAB_00131488 + -0x7cf0)" identifier = (cast_expression "(code *)(PTR_LAB_00131488 + -0x7cf0)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_00131488 + -0x7cf0)" ( (binary_expression "PTR_LAB_00131488 + -0x7cf0" identifier + number_literal) )))) ;) (expression_statement "pcVar4 = (code *)(PTR_LAB_00131488 + -0x7fc8);" (assignment_expression "pcVar4 = (code *)(PTR_LAB_00131488 + -0x7fc8)" identifier = (cast_expression "(code *)(PTR_LAB_00131488 + -0x7fc8)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_00131488 + -0x7fc8)" ( (binary_expression "PTR_LAB_00131488 + -0x7fc8" identifier + number_literal) )))) ;) (do_statement "do {\n      while( true ) {\n        while( true ) {\n          while( true ) {\n            if (*(int *)(param_1 + 0xc) == 0) {\n              return iVar11;\n            }\n            uVar2 = FUN_00018db0(param_1 + 0xc);\n            uVar5 = FUN_00018b68(uVar2);\n            iVar6 = (*pcVar3)(uVar5);\n            if ((*(uint *)PTR_DAT_0013135c & 0x20) != 0) break;\n            iVar11 = *(int *)(iVar6 + 0x1c);\n            *(undefined4 *)(iVar6 + 0x1c) = 0;\n            pbVar7 = (byte *)(*(code *)PTR_FUN_00131474)(PTR_FUN_001311a4 + -0x6a3c,0);\n            if (pbVar7 != (byte *)0x0) {\n              for (; 0x22 < *pbVar7; pbVar7 = pbVar7 + 1) {\n              }\n                    /* WARNING: Could not emulate address calculation at 0x00038a00 */\n                    /* WARNING: Treating indirect jump as call */\n              iVar11 = (*(code *)(&_gp_1 + *(int *)(puVar8 + (uint)*pbVar7 * 4 + -0x6a0c)))();\n              return iVar11;\n            }\n            if (param_1 == iVar6) {\n              iVar11 = (*pcVar4)(iVar11,*(undefined4 *)(*(int *)PTR_DAT_00131330 + 4));\n            }\n            if ((*(uint *)PTR_DAT_0013135c & 0x40) == 0) {\n              if ((*(uint *)(iVar6 + 0x14) & 1) == 0) {\n                iVar9 = FUN_00039834(uVar2,iVar11);\n                if (iVar9 == 0x11) {\n                  (*(code *)PTR_free_00132180)(iVar11);\n                }\n                else {\n                  (*(code *)PTR_free_00132180)();\n                  if (iVar9 != 0) {\n                    iVar11 = *(int *)(iVar6 + 0x18);\n                    if (iVar11 == 0) {\n                      iVar11 = *(int *)(iVar6 + 8);\n                    }\n                    uVar5 = FUN_000399f8(iVar9);\n                    FUN_000195a0(PTR_FUN_001311a4 + -0x6a2c,iVar11,uVar2,uVar5);\n                    return iVar9;\n                  }\n                }\n                *(uint *)(iVar6 + 0x14) = *(uint *)(iVar6 + 0x14) | 1;\n                iVar11 = 0;\n              }\n              else {\n                (*(code *)PTR_free_00132180)(iVar11);\n                iVar11 = 0;\n              }\n            }\n            else {\n              if (iVar11 == 0) {\n                puVar10 = PTR_FUN_001311a4 + -0x6a6c;\n              }\n              else {\n                puVar10 = PTR_FUN_001311a4 + -0x6a80;\n              }\n              (*(code *)PTR___printf_chk_00131e4c)\n                        (1,puVar10,PTR_FUN_001311a4 + -0x6c8c,*(int *)PTR_DAT_00131330 + 0x8f,uVar2,\n                         iVar11);\n              (*(code *)PTR_free_00132180)(iVar11);\n              iVar11 = 0;\n            }\n          }\n          if ((*(uint *)(iVar6 + 0x14) & 1) != 0) break;\n          bVar1 = false;\n          iVar11 = 0;\n        }\n        iVar11 = FUN_000399a0(*(undefined4 *)(iVar6 + 8),0x400);\n        if (iVar11 != 0) break;\n        *(uint *)(iVar6 + 0x14) = *(uint *)(iVar6 + 0x14) & 0xfffffffe;\n        bVar1 = false;\n      }\n    } while (!bVar1);" do (compound_statement "{\n      while( true ) {\n        while( true ) {\n          while( true ) {\n            if (*(int *)(param_1 + 0xc) == 0) {\n              return iVar11;\n            }\n            uVar2 = FUN_00018db0(param_1 + 0xc);\n            uVar5 = FUN_00018b68(uVar2);\n            iVar6 = (*pcVar3)(uVar5);\n            if ((*(uint *)PTR_DAT_0013135c & 0x20) != 0) break;\n            iVar11 = *(int *)(iVar6 + 0x1c);\n            *(undefined4 *)(iVar6 + 0x1c) = 0;\n            pbVar7 = (byte *)(*(code *)PTR_FUN_00131474)(PTR_FUN_001311a4 + -0x6a3c,0);\n            if (pbVar7 != (byte *)0x0) {\n              for (; 0x22 < *pbVar7; pbVar7 = pbVar7 + 1) {\n              }\n                    /* WARNING: Could not emulate address calculation at 0x00038a00 */\n                    /* WARNING: Treating indirect jump as call */\n              iVar11 = (*(code *)(&_gp_1 + *(int *)(puVar8 + (uint)*pbVar7 * 4 + -0x6a0c)))();\n              return iVar11;\n            }\n            if (param_1 == iVar6) {\n              iVar11 = (*pcVar4)(iVar11,*(undefined4 *)(*(int *)PTR_DAT_00131330 + 4));\n            }\n            if ((*(uint *)PTR_DAT_0013135c & 0x40) == 0) {\n              if ((*(uint *)(iVar6 + 0x14) & 1) == 0) {\n                iVar9 = FUN_00039834(uVar2,iVar11);\n                if (iVar9 == 0x11) {\n                  (*(code *)PTR_free_00132180)(iVar11);\n                }\n                else {\n                  (*(code *)PTR_free_00132180)();\n                  if (iVar9 != 0) {\n                    iVar11 = *(int *)(iVar6 + 0x18);\n                    if (iVar11 == 0) {\n                      iVar11 = *(int *)(iVar6 + 8);\n                    }\n                    uVar5 = FUN_000399f8(iVar9);\n                    FUN_000195a0(PTR_FUN_001311a4 + -0x6a2c,iVar11,uVar2,uVar5);\n                    return iVar9;\n                  }\n                }\n                *(uint *)(iVar6 + 0x14) = *(uint *)(iVar6 + 0x14) | 1;\n                iVar11 = 0;\n              }\n              else {\n                (*(code *)PTR_free_00132180)(iVar11);\n                iVar11 = 0;\n              }\n            }\n            else {\n              if (iVar11 == 0) {\n                puVar10 = PTR_FUN_001311a4 + -0x6a6c;\n              }\n              else {\n                puVar10 = PTR_FUN_001311a4 + -0x6a80;\n              }\n              (*(code *)PTR___printf_chk_00131e4c)\n                        (1,puVar10,PTR_FUN_001311a4 + -0x6c8c,*(int *)PTR_DAT_00131330 + 0x8f,uVar2,\n                         iVar11);\n              (*(code *)PTR_free_00132180)(iVar11);\n              iVar11 = 0;\n            }\n          }\n          if ((*(uint *)(iVar6 + 0x14) & 1) != 0) break;\n          bVar1 = false;\n          iVar11 = 0;\n        }\n        iVar11 = FUN_000399a0(*(undefined4 *)(iVar6 + 8),0x400);\n        if (iVar11 != 0) break;\n        *(uint *)(iVar6 + 0x14) = *(uint *)(iVar6 + 0x14) & 0xfffffffe;\n        bVar1 = false;\n      }\n    }" { (while_statement "while( true ) {\n        while( true ) {\n          while( true ) {\n            if (*(int *)(param_1 + 0xc) == 0) {\n              return iVar11;\n            }\n            uVar2 = FUN_00018db0(param_1 + 0xc);\n            uVar5 = FUN_00018b68(uVar2);\n            iVar6 = (*pcVar3)(uVar5);\n            if ((*(uint *)PTR_DAT_0013135c & 0x20) != 0) break;\n            iVar11 = *(int *)(iVar6 + 0x1c);\n            *(undefined4 *)(iVar6 + 0x1c) = 0;\n            pbVar7 = (byte *)(*(code *)PTR_FUN_00131474)(PTR_FUN_001311a4 + -0x6a3c,0);\n            if (pbVar7 != (byte *)0x0) {\n              for (; 0x22 < *pbVar7; pbVar7 = pbVar7 + 1) {\n              }\n                    /* WARNING: Could not emulate address calculation at 0x00038a00 */\n                    /* WARNING: Treating indirect jump as call */\n              iVar11 = (*(code *)(&_gp_1 + *(int *)(puVar8 + (uint)*pbVar7 * 4 + -0x6a0c)))();\n              return iVar11;\n            }\n            if (param_1 == iVar6) {\n              iVar11 = (*pcVar4)(iVar11,*(undefined4 *)(*(int *)PTR_DAT_00131330 + 4));\n            }\n            if ((*(uint *)PTR_DAT_0013135c & 0x40) == 0) {\n              if ((*(uint *)(iVar6 + 0x14) & 1) == 0) {\n                iVar9 = FUN_00039834(uVar2,iVar11);\n                if (iVar9 == 0x11) {\n                  (*(code *)PTR_free_00132180)(iVar11);\n                }\n                else {\n                  (*(code *)PTR_free_00132180)();\n                  if (iVar9 != 0) {\n                    iVar11 = *(int *)(iVar6 + 0x18);\n                    if (iVar11 == 0) {\n                      iVar11 = *(int *)(iVar6 + 8);\n                    }\n                    uVar5 = FUN_000399f8(iVar9);\n                    FUN_000195a0(PTR_FUN_001311a4 + -0x6a2c,iVar11,uVar2,uVar5);\n                    return iVar9;\n                  }\n                }\n                *(uint *)(iVar6 + 0x14) = *(uint *)(iVar6 + 0x14) | 1;\n                iVar11 = 0;\n              }\n              else {\n                (*(code *)PTR_free_00132180)(iVar11);\n                iVar11 = 0;\n              }\n            }\n            else {\n              if (iVar11 == 0) {\n                puVar10 = PTR_FUN_001311a4 + -0x6a6c;\n              }\n              else {\n                puVar10 = PTR_FUN_001311a4 + -0x6a80;\n              }\n              (*(code *)PTR___printf_chk_00131e4c)\n                        (1,puVar10,PTR_FUN_001311a4 + -0x6c8c,*(int *)PTR_DAT_00131330 + 0x8f,uVar2,\n                         iVar11);\n              (*(code *)PTR_free_00132180)(iVar11);\n              iVar11 = 0;\n            }\n          }\n          if ((*(uint *)(iVar6 + 0x14) & 1) != 0) break;\n          bVar1 = false;\n          iVar11 = 0;\n        }\n        iVar11 = FUN_000399a0(*(undefined4 *)(iVar6 + 8),0x400);\n        if (iVar11 != 0) break;\n        *(uint *)(iVar6 + 0x14) = *(uint *)(iVar6 + 0x14) & 0xfffffffe;\n        bVar1 = false;\n      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n        while( true ) {\n          while( true ) {\n            if (*(int *)(param_1 + 0xc) == 0) {\n              return iVar11;\n            }\n            uVar2 = FUN_00018db0(param_1 + 0xc);\n            uVar5 = FUN_00018b68(uVar2);\n            iVar6 = (*pcVar3)(uVar5);\n            if ((*(uint *)PTR_DAT_0013135c & 0x20) != 0) break;\n            iVar11 = *(int *)(iVar6 + 0x1c);\n            *(undefined4 *)(iVar6 + 0x1c) = 0;\n            pbVar7 = (byte *)(*(code *)PTR_FUN_00131474)(PTR_FUN_001311a4 + -0x6a3c,0);\n            if (pbVar7 != (byte *)0x0) {\n              for (; 0x22 < *pbVar7; pbVar7 = pbVar7 + 1) {\n              }\n                    /* WARNING: Could not emulate address calculation at 0x00038a00 */\n                    /* WARNING: Treating indirect jump as call */\n              iVar11 = (*(code *)(&_gp_1 + *(int *)(puVar8 + (uint)*pbVar7 * 4 + -0x6a0c)))();\n              return iVar11;\n            }\n            if (param_1 == iVar6) {\n              iVar11 = (*pcVar4)(iVar11,*(undefined4 *)(*(int *)PTR_DAT_00131330 + 4));\n            }\n            if ((*(uint *)PTR_DAT_0013135c & 0x40) == 0) {\n              if ((*(uint *)(iVar6 + 0x14) & 1) == 0) {\n                iVar9 = FUN_00039834(uVar2,iVar11);\n                if (iVar9 == 0x11) {\n                  (*(code *)PTR_free_00132180)(iVar11);\n                }\n                else {\n                  (*(code *)PTR_free_00132180)();\n                  if (iVar9 != 0) {\n                    iVar11 = *(int *)(iVar6 + 0x18);\n                    if (iVar11 == 0) {\n                      iVar11 = *(int *)(iVar6 + 8);\n                    }\n                    uVar5 = FUN_000399f8(iVar9);\n                    FUN_000195a0(PTR_FUN_001311a4 + -0x6a2c,iVar11,uVar2,uVar5);\n                    return iVar9;\n                  }\n                }\n                *(uint *)(iVar6 + 0x14) = *(uint *)(iVar6 + 0x14) | 1;\n                iVar11 = 0;\n              }\n              else {\n                (*(code *)PTR_free_00132180)(iVar11);\n                iVar11 = 0;\n              }\n            }\n            else {\n              if (iVar11 == 0) {\n                puVar10 = PTR_FUN_001311a4 + -0x6a6c;\n              }\n              else {\n                puVar10 = PTR_FUN_001311a4 + -0x6a80;\n              }\n              (*(code *)PTR___printf_chk_00131e4c)\n                        (1,puVar10,PTR_FUN_001311a4 + -0x6c8c,*(int *)PTR_DAT_00131330 + 0x8f,uVar2,\n                         iVar11);\n              (*(code *)PTR_free_00132180)(iVar11);\n              iVar11 = 0;\n            }\n          }\n          if ((*(uint *)(iVar6 + 0x14) & 1) != 0) break;\n          bVar1 = false;\n          iVar11 = 0;\n        }\n        iVar11 = FUN_000399a0(*(undefined4 *)(iVar6 + 8),0x400);\n        if (iVar11 != 0) break;\n        *(uint *)(iVar6 + 0x14) = *(uint *)(iVar6 + 0x14) & 0xfffffffe;\n        bVar1 = false;\n      }" { (while_statement "while( true ) {\n          while( true ) {\n            if (*(int *)(param_1 + 0xc) == 0) {\n              return iVar11;\n            }\n            uVar2 = FUN_00018db0(param_1 + 0xc);\n            uVar5 = FUN_00018b68(uVar2);\n            iVar6 = (*pcVar3)(uVar5);\n            if ((*(uint *)PTR_DAT_0013135c & 0x20) != 0) break;\n            iVar11 = *(int *)(iVar6 + 0x1c);\n            *(undefined4 *)(iVar6 + 0x1c) = 0;\n            pbVar7 = (byte *)(*(code *)PTR_FUN_00131474)(PTR_FUN_001311a4 + -0x6a3c,0);\n            if (pbVar7 != (byte *)0x0) {\n              for (; 0x22 < *pbVar7; pbVar7 = pbVar7 + 1) {\n              }\n                    /* WARNING: Could not emulate address calculation at 0x00038a00 */\n                    /* WARNING: Treating indirect jump as call */\n              iVar11 = (*(code *)(&_gp_1 + *(int *)(puVar8 + (uint)*pbVar7 * 4 + -0x6a0c)))();\n              return iVar11;\n            }\n            if (param_1 == iVar6) {\n              iVar11 = (*pcVar4)(iVar11,*(undefined4 *)(*(int *)PTR_DAT_00131330 + 4));\n            }\n            if ((*(uint *)PTR_DAT_0013135c & 0x40) == 0) {\n              if ((*(uint *)(iVar6 + 0x14) & 1) == 0) {\n                iVar9 = FUN_00039834(uVar2,iVar11);\n                if (iVar9 == 0x11) {\n                  (*(code *)PTR_free_00132180)(iVar11);\n                }\n                else {\n                  (*(code *)PTR_free_00132180)();\n                  if (iVar9 != 0) {\n                    iVar11 = *(int *)(iVar6 + 0x18);\n                    if (iVar11 == 0) {\n                      iVar11 = *(int *)(iVar6 + 8);\n                    }\n                    uVar5 = FUN_000399f8(iVar9);\n                    FUN_000195a0(PTR_FUN_001311a4 + -0x6a2c,iVar11,uVar2,uVar5);\n                    return iVar9;\n                  }\n                }\n                *(uint *)(iVar6 + 0x14) = *(uint *)(iVar6 + 0x14) | 1;\n                iVar11 = 0;\n              }\n              else {\n                (*(code *)PTR_free_00132180)(iVar11);\n                iVar11 = 0;\n              }\n            }\n            else {\n              if (iVar11 == 0) {\n                puVar10 = PTR_FUN_001311a4 + -0x6a6c;\n              }\n              else {\n                puVar10 = PTR_FUN_001311a4 + -0x6a80;\n              }\n              (*(code *)PTR___printf_chk_00131e4c)\n                        (1,puVar10,PTR_FUN_001311a4 + -0x6c8c,*(int *)PTR_DAT_00131330 + 0x8f,uVar2,\n                         iVar11);\n              (*(code *)PTR_free_00132180)(iVar11);\n              iVar11 = 0;\n            }\n          }\n          if ((*(uint *)(iVar6 + 0x14) & 1) != 0) break;\n          bVar1 = false;\n          iVar11 = 0;\n        }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n          while( true ) {\n            if (*(int *)(param_1 + 0xc) == 0) {\n              return iVar11;\n            }\n            uVar2 = FUN_00018db0(param_1 + 0xc);\n            uVar5 = FUN_00018b68(uVar2);\n            iVar6 = (*pcVar3)(uVar5);\n            if ((*(uint *)PTR_DAT_0013135c & 0x20) != 0) break;\n            iVar11 = *(int *)(iVar6 + 0x1c);\n            *(undefined4 *)(iVar6 + 0x1c) = 0;\n            pbVar7 = (byte *)(*(code *)PTR_FUN_00131474)(PTR_FUN_001311a4 + -0x6a3c,0);\n            if (pbVar7 != (byte *)0x0) {\n              for (; 0x22 < *pbVar7; pbVar7 = pbVar7 + 1) {\n              }\n                    /* WARNING: Could not emulate address calculation at 0x00038a00 */\n                    /* WARNING: Treating indirect jump as call */\n              iVar11 = (*(code *)(&_gp_1 + *(int *)(puVar8 + (uint)*pbVar7 * 4 + -0x6a0c)))();\n              return iVar11;\n            }\n            if (param_1 == iVar6) {\n              iVar11 = (*pcVar4)(iVar11,*(undefined4 *)(*(int *)PTR_DAT_00131330 + 4));\n            }\n            if ((*(uint *)PTR_DAT_0013135c & 0x40) == 0) {\n              if ((*(uint *)(iVar6 + 0x14) & 1) == 0) {\n                iVar9 = FUN_00039834(uVar2,iVar11);\n                if (iVar9 == 0x11) {\n                  (*(code *)PTR_free_00132180)(iVar11);\n                }\n                else {\n                  (*(code *)PTR_free_00132180)();\n                  if (iVar9 != 0) {\n                    iVar11 = *(int *)(iVar6 + 0x18);\n                    if (iVar11 == 0) {\n                      iVar11 = *(int *)(iVar6 + 8);\n                    }\n                    uVar5 = FUN_000399f8(iVar9);\n                    FUN_000195a0(PTR_FUN_001311a4 + -0x6a2c,iVar11,uVar2,uVar5);\n                    return iVar9;\n                  }\n                }\n                *(uint *)(iVar6 + 0x14) = *(uint *)(iVar6 + 0x14) | 1;\n                iVar11 = 0;\n              }\n              else {\n                (*(code *)PTR_free_00132180)(iVar11);\n                iVar11 = 0;\n              }\n            }\n            else {\n              if (iVar11 == 0) {\n                puVar10 = PTR_FUN_001311a4 + -0x6a6c;\n              }\n              else {\n                puVar10 = PTR_FUN_001311a4 + -0x6a80;\n              }\n              (*(code *)PTR___printf_chk_00131e4c)\n                        (1,puVar10,PTR_FUN_001311a4 + -0x6c8c,*(int *)PTR_DAT_00131330 + 0x8f,uVar2,\n                         iVar11);\n              (*(code *)PTR_free_00132180)(iVar11);\n              iVar11 = 0;\n            }\n          }\n          if ((*(uint *)(iVar6 + 0x14) & 1) != 0) break;\n          bVar1 = false;\n          iVar11 = 0;\n        }" { (while_statement "while( true ) {\n            if (*(int *)(param_1 + 0xc) == 0) {\n              return iVar11;\n            }\n            uVar2 = FUN_00018db0(param_1 + 0xc);\n            uVar5 = FUN_00018b68(uVar2);\n            iVar6 = (*pcVar3)(uVar5);\n            if ((*(uint *)PTR_DAT_0013135c & 0x20) != 0) break;\n            iVar11 = *(int *)(iVar6 + 0x1c);\n            *(undefined4 *)(iVar6 + 0x1c) = 0;\n            pbVar7 = (byte *)(*(code *)PTR_FUN_00131474)(PTR_FUN_001311a4 + -0x6a3c,0);\n            if (pbVar7 != (byte *)0x0) {\n              for (; 0x22 < *pbVar7; pbVar7 = pbVar7 + 1) {\n              }\n                    /* WARNING: Could not emulate address calculation at 0x00038a00 */\n                    /* WARNING: Treating indirect jump as call */\n              iVar11 = (*(code *)(&_gp_1 + *(int *)(puVar8 + (uint)*pbVar7 * 4 + -0x6a0c)))();\n              return iVar11;\n            }\n            if (param_1 == iVar6) {\n              iVar11 = (*pcVar4)(iVar11,*(undefined4 *)(*(int *)PTR_DAT_00131330 + 4));\n            }\n            if ((*(uint *)PTR_DAT_0013135c & 0x40) == 0) {\n              if ((*(uint *)(iVar6 + 0x14) & 1) == 0) {\n                iVar9 = FUN_00039834(uVar2,iVar11);\n                if (iVar9 == 0x11) {\n                  (*(code *)PTR_free_00132180)(iVar11);\n                }\n                else {\n                  (*(code *)PTR_free_00132180)();\n                  if (iVar9 != 0) {\n                    iVar11 = *(int *)(iVar6 + 0x18);\n                    if (iVar11 == 0) {\n                      iVar11 = *(int *)(iVar6 + 8);\n                    }\n                    uVar5 = FUN_000399f8(iVar9);\n                    FUN_000195a0(PTR_FUN_001311a4 + -0x6a2c,iVar11,uVar2,uVar5);\n                    return iVar9;\n                  }\n                }\n                *(uint *)(iVar6 + 0x14) = *(uint *)(iVar6 + 0x14) | 1;\n                iVar11 = 0;\n              }\n              else {\n                (*(code *)PTR_free_00132180)(iVar11);\n                iVar11 = 0;\n              }\n            }\n            else {\n              if (iVar11 == 0) {\n                puVar10 = PTR_FUN_001311a4 + -0x6a6c;\n              }\n              else {\n                puVar10 = PTR_FUN_001311a4 + -0x6a80;\n              }\n              (*(code *)PTR___printf_chk_00131e4c)\n                        (1,puVar10,PTR_FUN_001311a4 + -0x6c8c,*(int *)PTR_DAT_00131330 + 0x8f,uVar2,\n                         iVar11);\n              (*(code *)PTR_free_00132180)(iVar11);\n              iVar11 = 0;\n            }\n          }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n            if (*(int *)(param_1 + 0xc) == 0) {\n              return iVar11;\n            }\n            uVar2 = FUN_00018db0(param_1 + 0xc);\n            uVar5 = FUN_00018b68(uVar2);\n            iVar6 = (*pcVar3)(uVar5);\n            if ((*(uint *)PTR_DAT_0013135c & 0x20) != 0) break;\n            iVar11 = *(int *)(iVar6 + 0x1c);\n            *(undefined4 *)(iVar6 + 0x1c) = 0;\n            pbVar7 = (byte *)(*(code *)PTR_FUN_00131474)(PTR_FUN_001311a4 + -0x6a3c,0);\n            if (pbVar7 != (byte *)0x0) {\n              for (; 0x22 < *pbVar7; pbVar7 = pbVar7 + 1) {\n              }\n                    /* WARNING: Could not emulate address calculation at 0x00038a00 */\n                    /* WARNING: Treating indirect jump as call */\n              iVar11 = (*(code *)(&_gp_1 + *(int *)(puVar8 + (uint)*pbVar7 * 4 + -0x6a0c)))();\n              return iVar11;\n            }\n            if (param_1 == iVar6) {\n              iVar11 = (*pcVar4)(iVar11,*(undefined4 *)(*(int *)PTR_DAT_00131330 + 4));\n            }\n            if ((*(uint *)PTR_DAT_0013135c & 0x40) == 0) {\n              if ((*(uint *)(iVar6 + 0x14) & 1) == 0) {\n                iVar9 = FUN_00039834(uVar2,iVar11);\n                if (iVar9 == 0x11) {\n                  (*(code *)PTR_free_00132180)(iVar11);\n                }\n                else {\n                  (*(code *)PTR_free_00132180)();\n                  if (iVar9 != 0) {\n                    iVar11 = *(int *)(iVar6 + 0x18);\n                    if (iVar11 == 0) {\n                      iVar11 = *(int *)(iVar6 + 8);\n                    }\n                    uVar5 = FUN_000399f8(iVar9);\n                    FUN_000195a0(PTR_FUN_001311a4 + -0x6a2c,iVar11,uVar2,uVar5);\n                    return iVar9;\n                  }\n                }\n                *(uint *)(iVar6 + 0x14) = *(uint *)(iVar6 + 0x14) | 1;\n                iVar11 = 0;\n              }\n              else {\n                (*(code *)PTR_free_00132180)(iVar11);\n                iVar11 = 0;\n              }\n            }\n            else {\n              if (iVar11 == 0) {\n                puVar10 = PTR_FUN_001311a4 + -0x6a6c;\n              }\n              else {\n                puVar10 = PTR_FUN_001311a4 + -0x6a80;\n              }\n              (*(code *)PTR___printf_chk_00131e4c)\n                        (1,puVar10,PTR_FUN_001311a4 + -0x6c8c,*(int *)PTR_DAT_00131330 + 0x8f,uVar2,\n                         iVar11);\n              (*(code *)PTR_free_00132180)(iVar11);\n              iVar11 = 0;\n            }\n          }" { (if_statement "if (*(int *)(param_1 + 0xc) == 0) {\n              return iVar11;\n            }" if (parenthesized_expression "(*(int *)(param_1 + 0xc) == 0)" ( (binary_expression "*(int *)(param_1 + 0xc) == 0" (pointer_expression "*(int *)(param_1 + 0xc)" * (cast_expression "(int *)(param_1 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n              return iVar11;\n            }" { (return_statement "return iVar11;" return identifier ;) })) (expression_statement "uVar2 = FUN_00018db0(param_1 + 0xc);" (assignment_expression "uVar2 = FUN_00018db0(param_1 + 0xc)" identifier = (call_expression "FUN_00018db0(param_1 + 0xc)" identifier (argument_list "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) ;) (expression_statement "uVar5 = FUN_00018b68(uVar2);" (assignment_expression "uVar5 = FUN_00018b68(uVar2)" identifier = (call_expression "FUN_00018b68(uVar2)" identifier (argument_list "(uVar2)" ( identifier )))) ;) (expression_statement "iVar6 = (*pcVar3)(uVar5);" (assignment_expression "iVar6 = (*pcVar3)(uVar5)" identifier = (call_expression "(*pcVar3)(uVar5)" (parenthesized_expression "(*pcVar3)" ( (pointer_expression "*pcVar3" * identifier) )) (argument_list "(uVar5)" ( identifier )))) ;) (if_statement "if ((*(uint *)PTR_DAT_0013135c & 0x20) != 0) break;" if (parenthesized_expression "((*(uint *)PTR_DAT_0013135c & 0x20) != 0)" ( (binary_expression "(*(uint *)PTR_DAT_0013135c & 0x20) != 0" (parenthesized_expression "(*(uint *)PTR_DAT_0013135c & 0x20)" ( (binary_expression "*(uint *)PTR_DAT_0013135c & 0x20" (pointer_expression "*(uint *)PTR_DAT_0013135c" * (cast_expression "(uint *)PTR_DAT_0013135c" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) & number_literal) )) != number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar11 = *(int *)(iVar6 + 0x1c);" (assignment_expression "iVar11 = *(int *)(iVar6 + 0x1c)" identifier = (pointer_expression "*(int *)(iVar6 + 0x1c)" * (cast_expression "(int *)(iVar6 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x1c)" ( (binary_expression "iVar6 + 0x1c" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(iVar6 + 0x1c) = 0;" (assignment_expression "*(undefined4 *)(iVar6 + 0x1c) = 0" (pointer_expression "*(undefined4 *)(iVar6 + 0x1c)" * (cast_expression "(undefined4 *)(iVar6 + 0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x1c)" ( (binary_expression "iVar6 + 0x1c" identifier + number_literal) )))) = number_literal) ;) (expression_statement "pbVar7 = (byte *)(*(code *)PTR_FUN_00131474)(PTR_FUN_001311a4 + -0x6a3c,0);" (assignment_expression "pbVar7 = (byte *)(*(code *)PTR_FUN_00131474)(PTR_FUN_001311a4 + -0x6a3c,0)" identifier = (cast_expression "(byte *)(*(code *)PTR_FUN_00131474)(PTR_FUN_001311a4 + -0x6a3c,0)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR_FUN_00131474)(PTR_FUN_001311a4 + -0x6a3c,0)" (parenthesized_expression "(*(code *)PTR_FUN_00131474)" ( (pointer_expression "*(code *)PTR_FUN_00131474" * (cast_expression "(code *)PTR_FUN_00131474" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(PTR_FUN_001311a4 + -0x6a3c,0)" ( (binary_expression "PTR_FUN_001311a4 + -0x6a3c" identifier + number_literal) , number_literal ))))) ;) (if_statement "if (pbVar7 != (byte *)0x0) {\n              for (; 0x22 < *pbVar7; pbVar7 = pbVar7 + 1) {\n              }\n                    /* WARNING: Could not emulate address calculation at 0x00038a00 */\n                    /* WARNING: Treating indirect jump as call */\n              iVar11 = (*(code *)(&_gp_1 + *(int *)(puVar8 + (uint)*pbVar7 * 4 + -0x6a0c)))();\n              return iVar11;\n            }" if (parenthesized_expression "(pbVar7 != (byte *)0x0)" ( (binary_expression "pbVar7 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              for (; 0x22 < *pbVar7; pbVar7 = pbVar7 + 1) {\n              }\n                    /* WARNING: Could not emulate address calculation at 0x00038a00 */\n                    /* WARNING: Treating indirect jump as call */\n              iVar11 = (*(code *)(&_gp_1 + *(int *)(puVar8 + (uint)*pbVar7 * 4 + -0x6a0c)))();\n              return iVar11;\n            }" { (for_statement "for (; 0x22 < *pbVar7; pbVar7 = pbVar7 + 1) {\n              }" for ( ; (binary_expression "0x22 < *pbVar7" number_literal < (pointer_expression "*pbVar7" * identifier)) ; (assignment_expression "pbVar7 = pbVar7 + 1" identifier = (binary_expression "pbVar7 + 1" identifier + number_literal)) ) (compound_statement "{\n              }" { })) comment comment (expression_statement "iVar11 = (*(code *)(&_gp_1 + *(int *)(puVar8 + (uint)*pbVar7 * 4 + -0x6a0c)))();" (assignment_expression "iVar11 = (*(code *)(&_gp_1 + *(int *)(puVar8 + (uint)*pbVar7 * 4 + -0x6a0c)))()" identifier = (call_expression "(*(code *)(&_gp_1 + *(int *)(puVar8 + (uint)*pbVar7 * 4 + -0x6a0c)))()" (parenthesized_expression "(*(code *)(&_gp_1 + *(int *)(puVar8 + (uint)*pbVar7 * 4 + -0x6a0c)))" ( (pointer_expression "*(code *)(&_gp_1 + *(int *)(puVar8 + (uint)*pbVar7 * 4 + -0x6a0c))" * (cast_expression "(code *)(&_gp_1 + *(int *)(puVar8 + (uint)*pbVar7 * 4 + -0x6a0c))" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&_gp_1 + *(int *)(puVar8 + (uint)*pbVar7 * 4 + -0x6a0c))" ( (binary_expression "&_gp_1 + *(int *)(puVar8 + (uint)*pbVar7 * 4 + -0x6a0c)" (pointer_expression "&_gp_1" & identifier) + (pointer_expression "*(int *)(puVar8 + (uint)*pbVar7 * 4 + -0x6a0c)" * (cast_expression "(int *)(puVar8 + (uint)*pbVar7 * 4 + -0x6a0c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar8 + (uint)*pbVar7 * 4 + -0x6a0c)" ( (binary_expression "puVar8 + (uint)*pbVar7 * 4 + -0x6a0c" (binary_expression "puVar8 + (uint)*pbVar7 * 4" identifier + (binary_expression "(uint)*pbVar7 * 4" (binary_expression "(uint)*pbVar7" (parenthesized_expression "(uint)" ( identifier )) * identifier) * number_literal)) + number_literal) ))))) )))) )) (argument_list "()" ( )))) ;) (return_statement "return iVar11;" return identifier ;) })) (if_statement "if (param_1 == iVar6) {\n              iVar11 = (*pcVar4)(iVar11,*(undefined4 *)(*(int *)PTR_DAT_00131330 + 4));\n            }" if (parenthesized_expression "(param_1 == iVar6)" ( (binary_expression "param_1 == iVar6" identifier == identifier) )) (compound_statement "{\n              iVar11 = (*pcVar4)(iVar11,*(undefined4 *)(*(int *)PTR_DAT_00131330 + 4));\n            }" { (expression_statement "iVar11 = (*pcVar4)(iVar11,*(undefined4 *)(*(int *)PTR_DAT_00131330 + 4));" (assignment_expression "iVar11 = (*pcVar4)(iVar11,*(undefined4 *)(*(int *)PTR_DAT_00131330 + 4))" identifier = (call_expression "(*pcVar4)(iVar11,*(undefined4 *)(*(int *)PTR_DAT_00131330 + 4))" (parenthesized_expression "(*pcVar4)" ( (pointer_expression "*pcVar4" * identifier) )) (argument_list "(iVar11,*(undefined4 *)(*(int *)PTR_DAT_00131330 + 4))" ( identifier , (pointer_expression "*(undefined4 *)(*(int *)PTR_DAT_00131330 + 4)" * (cast_expression "(undefined4 *)(*(int *)PTR_DAT_00131330 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)PTR_DAT_00131330 + 4)" ( (binary_expression "*(int *)PTR_DAT_00131330 + 4" (pointer_expression "*(int *)PTR_DAT_00131330" * (cast_expression "(int *)PTR_DAT_00131330" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) )))) )))) ;) })) (if_statement "if ((*(uint *)PTR_DAT_0013135c & 0x40) == 0) {\n              if ((*(uint *)(iVar6 + 0x14) & 1) == 0) {\n                iVar9 = FUN_00039834(uVar2,iVar11);\n                if (iVar9 == 0x11) {\n                  (*(code *)PTR_free_00132180)(iVar11);\n                }\n                else {\n                  (*(code *)PTR_free_00132180)();\n                  if (iVar9 != 0) {\n                    iVar11 = *(int *)(iVar6 + 0x18);\n                    if (iVar11 == 0) {\n                      iVar11 = *(int *)(iVar6 + 8);\n                    }\n                    uVar5 = FUN_000399f8(iVar9);\n                    FUN_000195a0(PTR_FUN_001311a4 + -0x6a2c,iVar11,uVar2,uVar5);\n                    return iVar9;\n                  }\n                }\n                *(uint *)(iVar6 + 0x14) = *(uint *)(iVar6 + 0x14) | 1;\n                iVar11 = 0;\n              }\n              else {\n                (*(code *)PTR_free_00132180)(iVar11);\n                iVar11 = 0;\n              }\n            }\n            else {\n              if (iVar11 == 0) {\n                puVar10 = PTR_FUN_001311a4 + -0x6a6c;\n              }\n              else {\n                puVar10 = PTR_FUN_001311a4 + -0x6a80;\n              }\n              (*(code *)PTR___printf_chk_00131e4c)\n                        (1,puVar10,PTR_FUN_001311a4 + -0x6c8c,*(int *)PTR_DAT_00131330 + 0x8f,uVar2,\n                         iVar11);\n              (*(code *)PTR_free_00132180)(iVar11);\n              iVar11 = 0;\n            }" if (parenthesized_expression "((*(uint *)PTR_DAT_0013135c & 0x40) == 0)" ( (binary_expression "(*(uint *)PTR_DAT_0013135c & 0x40) == 0" (parenthesized_expression "(*(uint *)PTR_DAT_0013135c & 0x40)" ( (binary_expression "*(uint *)PTR_DAT_0013135c & 0x40" (pointer_expression "*(uint *)PTR_DAT_0013135c" * (cast_expression "(uint *)PTR_DAT_0013135c" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) & number_literal) )) == number_literal) )) (compound_statement "{\n              if ((*(uint *)(iVar6 + 0x14) & 1) == 0) {\n                iVar9 = FUN_00039834(uVar2,iVar11);\n                if (iVar9 == 0x11) {\n                  (*(code *)PTR_free_00132180)(iVar11);\n                }\n                else {\n                  (*(code *)PTR_free_00132180)();\n                  if (iVar9 != 0) {\n                    iVar11 = *(int *)(iVar6 + 0x18);\n                    if (iVar11 == 0) {\n                      iVar11 = *(int *)(iVar6 + 8);\n                    }\n                    uVar5 = FUN_000399f8(iVar9);\n                    FUN_000195a0(PTR_FUN_001311a4 + -0x6a2c,iVar11,uVar2,uVar5);\n                    return iVar9;\n                  }\n                }\n                *(uint *)(iVar6 + 0x14) = *(uint *)(iVar6 + 0x14) | 1;\n                iVar11 = 0;\n              }\n              else {\n                (*(code *)PTR_free_00132180)(iVar11);\n                iVar11 = 0;\n              }\n            }" { (if_statement "if ((*(uint *)(iVar6 + 0x14) & 1) == 0) {\n                iVar9 = FUN_00039834(uVar2,iVar11);\n                if (iVar9 == 0x11) {\n                  (*(code *)PTR_free_00132180)(iVar11);\n                }\n                else {\n                  (*(code *)PTR_free_00132180)();\n                  if (iVar9 != 0) {\n                    iVar11 = *(int *)(iVar6 + 0x18);\n                    if (iVar11 == 0) {\n                      iVar11 = *(int *)(iVar6 + 8);\n                    }\n                    uVar5 = FUN_000399f8(iVar9);\n                    FUN_000195a0(PTR_FUN_001311a4 + -0x6a2c,iVar11,uVar2,uVar5);\n                    return iVar9;\n                  }\n                }\n                *(uint *)(iVar6 + 0x14) = *(uint *)(iVar6 + 0x14) | 1;\n                iVar11 = 0;\n              }\n              else {\n                (*(code *)PTR_free_00132180)(iVar11);\n                iVar11 = 0;\n              }" if (parenthesized_expression "((*(uint *)(iVar6 + 0x14) & 1) == 0)" ( (binary_expression "(*(uint *)(iVar6 + 0x14) & 1) == 0" (parenthesized_expression "(*(uint *)(iVar6 + 0x14) & 1)" ( (binary_expression "*(uint *)(iVar6 + 0x14) & 1" (pointer_expression "*(uint *)(iVar6 + 0x14)" * (cast_expression "(uint *)(iVar6 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x14)" ( (binary_expression "iVar6 + 0x14" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n                iVar9 = FUN_00039834(uVar2,iVar11);\n                if (iVar9 == 0x11) {\n                  (*(code *)PTR_free_00132180)(iVar11);\n                }\n                else {\n                  (*(code *)PTR_free_00132180)();\n                  if (iVar9 != 0) {\n                    iVar11 = *(int *)(iVar6 + 0x18);\n                    if (iVar11 == 0) {\n                      iVar11 = *(int *)(iVar6 + 8);\n                    }\n                    uVar5 = FUN_000399f8(iVar9);\n                    FUN_000195a0(PTR_FUN_001311a4 + -0x6a2c,iVar11,uVar2,uVar5);\n                    return iVar9;\n                  }\n                }\n                *(uint *)(iVar6 + 0x14) = *(uint *)(iVar6 + 0x14) | 1;\n                iVar11 = 0;\n              }" { (expression_statement "iVar9 = FUN_00039834(uVar2,iVar11);" (assignment_expression "iVar9 = FUN_00039834(uVar2,iVar11)" identifier = (call_expression "FUN_00039834(uVar2,iVar11)" identifier (argument_list "(uVar2,iVar11)" ( identifier , identifier )))) ;) (if_statement "if (iVar9 == 0x11) {\n                  (*(code *)PTR_free_00132180)(iVar11);\n                }\n                else {\n                  (*(code *)PTR_free_00132180)();\n                  if (iVar9 != 0) {\n                    iVar11 = *(int *)(iVar6 + 0x18);\n                    if (iVar11 == 0) {\n                      iVar11 = *(int *)(iVar6 + 8);\n                    }\n                    uVar5 = FUN_000399f8(iVar9);\n                    FUN_000195a0(PTR_FUN_001311a4 + -0x6a2c,iVar11,uVar2,uVar5);\n                    return iVar9;\n                  }\n                }" if (parenthesized_expression "(iVar9 == 0x11)" ( (binary_expression "iVar9 == 0x11" identifier == number_literal) )) (compound_statement "{\n                  (*(code *)PTR_free_00132180)(iVar11);\n                }" { (expression_statement "(*(code *)PTR_free_00132180)(iVar11);" (call_expression "(*(code *)PTR_free_00132180)(iVar11)" (parenthesized_expression "(*(code *)PTR_free_00132180)" ( (pointer_expression "*(code *)PTR_free_00132180" * (cast_expression "(code *)PTR_free_00132180" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar11)" ( identifier ))) ;) }) (else_clause "else {\n                  (*(code *)PTR_free_00132180)();\n                  if (iVar9 != 0) {\n                    iVar11 = *(int *)(iVar6 + 0x18);\n                    if (iVar11 == 0) {\n                      iVar11 = *(int *)(iVar6 + 8);\n                    }\n                    uVar5 = FUN_000399f8(iVar9);\n                    FUN_000195a0(PTR_FUN_001311a4 + -0x6a2c,iVar11,uVar2,uVar5);\n                    return iVar9;\n                  }\n                }" else (compound_statement "{\n                  (*(code *)PTR_free_00132180)();\n                  if (iVar9 != 0) {\n                    iVar11 = *(int *)(iVar6 + 0x18);\n                    if (iVar11 == 0) {\n                      iVar11 = *(int *)(iVar6 + 8);\n                    }\n                    uVar5 = FUN_000399f8(iVar9);\n                    FUN_000195a0(PTR_FUN_001311a4 + -0x6a2c,iVar11,uVar2,uVar5);\n                    return iVar9;\n                  }\n                }" { (expression_statement "(*(code *)PTR_free_00132180)();" (call_expression "(*(code *)PTR_free_00132180)()" (parenthesized_expression "(*(code *)PTR_free_00132180)" ( (pointer_expression "*(code *)PTR_free_00132180" * (cast_expression "(code *)PTR_free_00132180" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (if_statement "if (iVar9 != 0) {\n                    iVar11 = *(int *)(iVar6 + 0x18);\n                    if (iVar11 == 0) {\n                      iVar11 = *(int *)(iVar6 + 8);\n                    }\n                    uVar5 = FUN_000399f8(iVar9);\n                    FUN_000195a0(PTR_FUN_001311a4 + -0x6a2c,iVar11,uVar2,uVar5);\n                    return iVar9;\n                  }" if (parenthesized_expression "(iVar9 != 0)" ( (binary_expression "iVar9 != 0" identifier != number_literal) )) (compound_statement "{\n                    iVar11 = *(int *)(iVar6 + 0x18);\n                    if (iVar11 == 0) {\n                      iVar11 = *(int *)(iVar6 + 8);\n                    }\n                    uVar5 = FUN_000399f8(iVar9);\n                    FUN_000195a0(PTR_FUN_001311a4 + -0x6a2c,iVar11,uVar2,uVar5);\n                    return iVar9;\n                  }" { (expression_statement "iVar11 = *(int *)(iVar6 + 0x18);" (assignment_expression "iVar11 = *(int *)(iVar6 + 0x18)" identifier = (pointer_expression "*(int *)(iVar6 + 0x18)" * (cast_expression "(int *)(iVar6 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x18)" ( (binary_expression "iVar6 + 0x18" identifier + number_literal) ))))) ;) (if_statement "if (iVar11 == 0) {\n                      iVar11 = *(int *)(iVar6 + 8);\n                    }" if (parenthesized_expression "(iVar11 == 0)" ( (binary_expression "iVar11 == 0" identifier == number_literal) )) (compound_statement "{\n                      iVar11 = *(int *)(iVar6 + 8);\n                    }" { (expression_statement "iVar11 = *(int *)(iVar6 + 8);" (assignment_expression "iVar11 = *(int *)(iVar6 + 8)" identifier = (pointer_expression "*(int *)(iVar6 + 8)" * (cast_expression "(int *)(iVar6 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 8)" ( (binary_expression "iVar6 + 8" identifier + number_literal) ))))) ;) })) (expression_statement "uVar5 = FUN_000399f8(iVar9);" (assignment_expression "uVar5 = FUN_000399f8(iVar9)" identifier = (call_expression "FUN_000399f8(iVar9)" identifier (argument_list "(iVar9)" ( identifier )))) ;) (expression_statement "FUN_000195a0(PTR_FUN_001311a4 + -0x6a2c,iVar11,uVar2,uVar5);" (call_expression "FUN_000195a0(PTR_FUN_001311a4 + -0x6a2c,iVar11,uVar2,uVar5)" identifier (argument_list "(PTR_FUN_001311a4 + -0x6a2c,iVar11,uVar2,uVar5)" ( (binary_expression "PTR_FUN_001311a4 + -0x6a2c" identifier + number_literal) , identifier , identifier , identifier ))) ;) (return_statement "return iVar9;" return identifier ;) })) }))) (expression_statement "*(uint *)(iVar6 + 0x14) = *(uint *)(iVar6 + 0x14) | 1;" (assignment_expression "*(uint *)(iVar6 + 0x14) = *(uint *)(iVar6 + 0x14) | 1" (pointer_expression "*(uint *)(iVar6 + 0x14)" * (cast_expression "(uint *)(iVar6 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x14)" ( (binary_expression "iVar6 + 0x14" identifier + number_literal) )))) = (binary_expression "*(uint *)(iVar6 + 0x14) | 1" (pointer_expression "*(uint *)(iVar6 + 0x14)" * (cast_expression "(uint *)(iVar6 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x14)" ( (binary_expression "iVar6 + 0x14" identifier + number_literal) )))) | number_literal)) ;) (expression_statement "iVar11 = 0;" (assignment_expression "iVar11 = 0" identifier = number_literal) ;) }) (else_clause "else {\n                (*(code *)PTR_free_00132180)(iVar11);\n                iVar11 = 0;\n              }" else (compound_statement "{\n                (*(code *)PTR_free_00132180)(iVar11);\n                iVar11 = 0;\n              }" { (expression_statement "(*(code *)PTR_free_00132180)(iVar11);" (call_expression "(*(code *)PTR_free_00132180)(iVar11)" (parenthesized_expression "(*(code *)PTR_free_00132180)" ( (pointer_expression "*(code *)PTR_free_00132180" * (cast_expression "(code *)PTR_free_00132180" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar11)" ( identifier ))) ;) (expression_statement "iVar11 = 0;" (assignment_expression "iVar11 = 0" identifier = number_literal) ;) }))) }) (else_clause "else {\n              if (iVar11 == 0) {\n                puVar10 = PTR_FUN_001311a4 + -0x6a6c;\n              }\n              else {\n                puVar10 = PTR_FUN_001311a4 + -0x6a80;\n              }\n              (*(code *)PTR___printf_chk_00131e4c)\n                        (1,puVar10,PTR_FUN_001311a4 + -0x6c8c,*(int *)PTR_DAT_00131330 + 0x8f,uVar2,\n                         iVar11);\n              (*(code *)PTR_free_00132180)(iVar11);\n              iVar11 = 0;\n            }" else (compound_statement "{\n              if (iVar11 == 0) {\n                puVar10 = PTR_FUN_001311a4 + -0x6a6c;\n              }\n              else {\n                puVar10 = PTR_FUN_001311a4 + -0x6a80;\n              }\n              (*(code *)PTR___printf_chk_00131e4c)\n                        (1,puVar10,PTR_FUN_001311a4 + -0x6c8c,*(int *)PTR_DAT_00131330 + 0x8f,uVar2,\n                         iVar11);\n              (*(code *)PTR_free_00132180)(iVar11);\n              iVar11 = 0;\n            }" { (if_statement "if (iVar11 == 0) {\n                puVar10 = PTR_FUN_001311a4 + -0x6a6c;\n              }\n              else {\n                puVar10 = PTR_FUN_001311a4 + -0x6a80;\n              }" if (parenthesized_expression "(iVar11 == 0)" ( (binary_expression "iVar11 == 0" identifier == number_literal) )) (compound_statement "{\n                puVar10 = PTR_FUN_001311a4 + -0x6a6c;\n              }" { (expression_statement "puVar10 = PTR_FUN_001311a4 + -0x6a6c;" (assignment_expression "puVar10 = PTR_FUN_001311a4 + -0x6a6c" identifier = (binary_expression "PTR_FUN_001311a4 + -0x6a6c" identifier + number_literal)) ;) }) (else_clause "else {\n                puVar10 = PTR_FUN_001311a4 + -0x6a80;\n              }" else (compound_statement "{\n                puVar10 = PTR_FUN_001311a4 + -0x6a80;\n              }" { (expression_statement "puVar10 = PTR_FUN_001311a4 + -0x6a80;" (assignment_expression "puVar10 = PTR_FUN_001311a4 + -0x6a80" identifier = (binary_expression "PTR_FUN_001311a4 + -0x6a80" identifier + number_literal)) ;) }))) (expression_statement "(*(code *)PTR___printf_chk_00131e4c)\n                        (1,puVar10,PTR_FUN_001311a4 + -0x6c8c,*(int *)PTR_DAT_00131330 + 0x8f,uVar2,\n                         iVar11);" (call_expression "(*(code *)PTR___printf_chk_00131e4c)\n                        (1,puVar10,PTR_FUN_001311a4 + -0x6c8c,*(int *)PTR_DAT_00131330 + 0x8f,uVar2,\n                         iVar11)" (parenthesized_expression "(*(code *)PTR___printf_chk_00131e4c)" ( (pointer_expression "*(code *)PTR___printf_chk_00131e4c" * (cast_expression "(code *)PTR___printf_chk_00131e4c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(1,puVar10,PTR_FUN_001311a4 + -0x6c8c,*(int *)PTR_DAT_00131330 + 0x8f,uVar2,\n                         iVar11)" ( number_literal , identifier , (binary_expression "PTR_FUN_001311a4 + -0x6c8c" identifier + number_literal) , (binary_expression "*(int *)PTR_DAT_00131330 + 0x8f" (pointer_expression "*(int *)PTR_DAT_00131330" * (cast_expression "(int *)PTR_DAT_00131330" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) , identifier , identifier ))) ;) (expression_statement "(*(code *)PTR_free_00132180)(iVar11);" (call_expression "(*(code *)PTR_free_00132180)(iVar11)" (parenthesized_expression "(*(code *)PTR_free_00132180)" ( (pointer_expression "*(code *)PTR_free_00132180" * (cast_expression "(code *)PTR_free_00132180" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar11)" ( identifier ))) ;) (expression_statement "iVar11 = 0;" (assignment_expression "iVar11 = 0" identifier = number_literal) ;) }))) })) (if_statement "if ((*(uint *)(iVar6 + 0x14) & 1) != 0) break;" if (parenthesized_expression "((*(uint *)(iVar6 + 0x14) & 1) != 0)" ( (binary_expression "(*(uint *)(iVar6 + 0x14) & 1) != 0" (parenthesized_expression "(*(uint *)(iVar6 + 0x14) & 1)" ( (binary_expression "*(uint *)(iVar6 + 0x14) & 1" (pointer_expression "*(uint *)(iVar6 + 0x14)" * (cast_expression "(uint *)(iVar6 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x14)" ( (binary_expression "iVar6 + 0x14" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (break_statement "break;" break ;)) (expression_statement "bVar1 = false;" (assignment_expression "bVar1 = false" identifier = false) ;) (expression_statement "iVar11 = 0;" (assignment_expression "iVar11 = 0" identifier = number_literal) ;) })) (expression_statement "iVar11 = FUN_000399a0(*(undefined4 *)(iVar6 + 8),0x400);" (assignment_expression "iVar11 = FUN_000399a0(*(undefined4 *)(iVar6 + 8),0x400)" identifier = (call_expression "FUN_000399a0(*(undefined4 *)(iVar6 + 8),0x400)" identifier (argument_list "(*(undefined4 *)(iVar6 + 8),0x400)" ( (pointer_expression "*(undefined4 *)(iVar6 + 8)" * (cast_expression "(undefined4 *)(iVar6 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 8)" ( (binary_expression "iVar6 + 8" identifier + number_literal) )))) , number_literal )))) ;) (if_statement "if (iVar11 != 0) break;" if (parenthesized_expression "(iVar11 != 0)" ( (binary_expression "iVar11 != 0" identifier != number_literal) )) (break_statement "break;" break ;)) (expression_statement "*(uint *)(iVar6 + 0x14) = *(uint *)(iVar6 + 0x14) & 0xfffffffe;" (assignment_expression "*(uint *)(iVar6 + 0x14) = *(uint *)(iVar6 + 0x14) & 0xfffffffe" (pointer_expression "*(uint *)(iVar6 + 0x14)" * (cast_expression "(uint *)(iVar6 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x14)" ( (binary_expression "iVar6 + 0x14" identifier + number_literal) )))) = (binary_expression "*(uint *)(iVar6 + 0x14) & 0xfffffffe" (pointer_expression "*(uint *)(iVar6 + 0x14)" * (cast_expression "(uint *)(iVar6 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x14)" ( (binary_expression "iVar6 + 0x14" identifier + number_literal) )))) & number_literal)) ;) (expression_statement "bVar1 = false;" (assignment_expression "bVar1 = false" identifier = false) ;) })) }) while (parenthesized_expression "(!bVar1)" ( (unary_expression "!bVar1" ! identifier) )) ;) (expression_statement "iVar9 = *(int *)(iVar6 + 0x18);" (assignment_expression "iVar9 = *(int *)(iVar6 + 0x18)" identifier = (pointer_expression "*(int *)(iVar6 + 0x18)" * (cast_expression "(int *)(iVar6 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x18)" ( (binary_expression "iVar6 + 0x18" identifier + number_literal) ))))) ;) (if_statement "if (iVar9 == 0) {\n      iVar9 = *(int *)(iVar6 + 8);\n    }" if (parenthesized_expression "(iVar9 == 0)" ( (binary_expression "iVar9 == 0" identifier == number_literal) )) (compound_statement "{\n      iVar9 = *(int *)(iVar6 + 8);\n    }" { (expression_statement "iVar9 = *(int *)(iVar6 + 8);" (assignment_expression "iVar9 = *(int *)(iVar6 + 8)" identifier = (pointer_expression "*(int *)(iVar6 + 8)" * (cast_expression "(int *)(iVar6 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 8)" ( (binary_expression "iVar6 + 8" identifier + number_literal) ))))) ;) })) (expression_statement "FUN_00018f7c(PTR_FUN_001311a4 + -0x6a58,iVar9);" (call_expression "FUN_00018f7c(PTR_FUN_001311a4 + -0x6a58,iVar9)" identifier (argument_list "(PTR_FUN_001311a4 + -0x6a58,iVar9)" ( (binary_expression "PTR_FUN_001311a4 + -0x6a58" identifier + number_literal) , identifier ))) ;) }))) (return_statement "return iVar11;" return identifier ;) })))
(translation_unit "int do_modprobe(module_entry *m)\n\n{\n  bool bVar1;\n  undefined *puVar2;\n  llist_t *plVar3;\n  code *pcVar4;\n  code *pcVar5;\n  module_entry *pmVar6;\n  byte *pbVar7;\n  char *pcVar8;\n  char *pcVar9;\n  char *pcVar10;\n  undefined *puVar11;\n  int iVar12;\n  \n  if ((m->flags & 4) == 0) {\n    iVar12 = -2;\n    if ((*(uint *)PTR_option_mask32_0013135c & 2) == 0) {\n      if ((m->flags & 0x10) == 0) {\n        pcVar9 = PTR_bdcommands_4__name_4__001311a4 + -0x6aa4;\n      }\n      else {\n        pcVar9 = PTR_bdcommands_4__name_4__001311a4 + -0x6abc;\n      }\n      pcVar10 = m->probed_name;\n      if (pcVar10 == (char *)0x0) {\n        pcVar10 = m->modname;\n      }\n      bb_error_msg(pcVar9,pcVar10);\n      iVar12 = -2;\n    }\n  }\n  else {\n    if ((*(uint *)PTR_option_mask32_0013135c & 0x20) == 0) {\n      plVar3 = llist_rev(m->deps);\n      m->deps = plVar3;\n    }\n    puVar2 = PTR_bdcommands_4__name_4__001311a4;\n    bVar1 = true;\n    iVar12 = 0;\n    pcVar4 = (code *)(PTR_LAB_00131488 + -0x7cf0);\n    pcVar5 = (code *)(PTR_LAB_00131488 + -0x7fc8);\n    do {\n      while( true ) {\n        while( true ) {\n          while( true ) {\n            if (m->deps == (llist_t *)0x0) {\n              return iVar12;\n            }\n            pcVar9 = (char *)llist_pop(&m->deps);\n            pcVar10 = bb_get_last_path_component_nostrip(pcVar9);\n            pmVar6 = (module_entry *)(*pcVar4)(pcVar10);\n            if ((*(uint *)PTR_option_mask32_0013135c & 0x20) != 0) break;\n            pcVar10 = pmVar6->options;\n            pmVar6->options = (char *)0x0;\n            pbVar7 = (byte *)(*(code *)PTR_xmalloc_open_read_close_00131474)\n                                       (PTR_bdcommands_4__name_4__001311a4 + -0x6a3c,0);\n            if (pbVar7 != (byte *)0x0) {\n              for (; 0x22 < *pbVar7; pbVar7 = pbVar7 + 1) {\n              }\n                    /* WARNING: Could not emulate address calculation at 0x00038a00 */\n                    /* WARNING: Treating indirect jump as call */\n              iVar12 = (*(code *)(&_gp + *(int *)(puVar2 + (uint)*pbVar7 * 4 + -0x6a0c)))();\n              return iVar12;\n            }\n            if (m == pmVar6) {\n              pcVar10 = (char *)(*pcVar5)(pcVar10,*(undefined4 *)\n                                                   (*(int *)PTR_ptr_to_globals_00131330 + 4));\n            }\n            if ((*(uint *)PTR_option_mask32_0013135c & 0x40) == 0) {\n              if ((pmVar6->flags & 1) == 0) {\n                iVar12 = bb_init_module(pcVar9,pcVar10);\n                if (iVar12 == 0x11) {\n                  (*(code *)PTR_free_00132180)(pcVar10);\n                }\n                else {\n                  (*(code *)PTR_free_00132180)();\n                  if (iVar12 != 0) {\n                    pcVar10 = pmVar6->probed_name;\n                    if (pcVar10 == (char *)0x0) {\n                      pcVar10 = pmVar6->modname;\n                    }\n                    pcVar8 = moderror(iVar12);\n                    bb_error_msg(PTR_bdcommands_4__name_4__001311a4 + -0x6a2c,pcVar10,pcVar9,pcVar8)\n                    ;\n                    return iVar12;\n                  }\n                }\n                pmVar6->flags = pmVar6->flags | 1;\n                iVar12 = 0;\n              }\n              else {\n                (*(code *)PTR_free_00132180)(pcVar10);\n                iVar12 = 0;\n              }\n            }\n            else {\n              if (pcVar10 == (char *)0x0) {\n                puVar11 = PTR_bdcommands_4__name_4__001311a4 + -0x6a6c;\n              }\n              else {\n                puVar11 = PTR_bdcommands_4__name_4__001311a4 + -0x6a80;\n              }\n              (*(code *)PTR___printf_chk_00131e4c)\n                        (1,puVar11,PTR_bdcommands_4__name_4__001311a4 + -0x6c8c,\n                         *(int *)PTR_ptr_to_globals_00131330 + 0x8f,pcVar9,pcVar10);\n              (*(code *)PTR_free_00132180)(pcVar10);\n              iVar12 = 0;\n            }\n          }\n          if ((pmVar6->flags & 1) != 0) break;\n          bVar1 = false;\n          iVar12 = 0;\n        }\n        iVar12 = bb_delete_module(pmVar6->modname,0x400);\n        if (iVar12 != 0) break;\n        pmVar6->flags = pmVar6->flags & 0xfffffffe;\n        bVar1 = false;\n      }\n    } while (!bVar1);\n    pcVar9 = pmVar6->probed_name;\n    if (pcVar9 == (char *)0x0) {\n      pcVar9 = pmVar6->modname;\n    }\n    bb_perror_msg(PTR_bdcommands_4__name_4__001311a4 + -0x6a58,pcVar9);\n  }\n  return iVar12;\n}\n\n" (function_definition "int do_modprobe(module_entry *m)\n\n{\n  bool bVar1;\n  undefined *puVar2;\n  llist_t *plVar3;\n  code *pcVar4;\n  code *pcVar5;\n  module_entry *pmVar6;\n  byte *pbVar7;\n  char *pcVar8;\n  char *pcVar9;\n  char *pcVar10;\n  undefined *puVar11;\n  int iVar12;\n  \n  if ((m->flags & 4) == 0) {\n    iVar12 = -2;\n    if ((*(uint *)PTR_option_mask32_0013135c & 2) == 0) {\n      if ((m->flags & 0x10) == 0) {\n        pcVar9 = PTR_bdcommands_4__name_4__001311a4 + -0x6aa4;\n      }\n      else {\n        pcVar9 = PTR_bdcommands_4__name_4__001311a4 + -0x6abc;\n      }\n      pcVar10 = m->probed_name;\n      if (pcVar10 == (char *)0x0) {\n        pcVar10 = m->modname;\n      }\n      bb_error_msg(pcVar9,pcVar10);\n      iVar12 = -2;\n    }\n  }\n  else {\n    if ((*(uint *)PTR_option_mask32_0013135c & 0x20) == 0) {\n      plVar3 = llist_rev(m->deps);\n      m->deps = plVar3;\n    }\n    puVar2 = PTR_bdcommands_4__name_4__001311a4;\n    bVar1 = true;\n    iVar12 = 0;\n    pcVar4 = (code *)(PTR_LAB_00131488 + -0x7cf0);\n    pcVar5 = (code *)(PTR_LAB_00131488 + -0x7fc8);\n    do {\n      while( true ) {\n        while( true ) {\n          while( true ) {\n            if (m->deps == (llist_t *)0x0) {\n              return iVar12;\n            }\n            pcVar9 = (char *)llist_pop(&m->deps);\n            pcVar10 = bb_get_last_path_component_nostrip(pcVar9);\n            pmVar6 = (module_entry *)(*pcVar4)(pcVar10);\n            if ((*(uint *)PTR_option_mask32_0013135c & 0x20) != 0) break;\n            pcVar10 = pmVar6->options;\n            pmVar6->options = (char *)0x0;\n            pbVar7 = (byte *)(*(code *)PTR_xmalloc_open_read_close_00131474)\n                                       (PTR_bdcommands_4__name_4__001311a4 + -0x6a3c,0);\n            if (pbVar7 != (byte *)0x0) {\n              for (; 0x22 < *pbVar7; pbVar7 = pbVar7 + 1) {\n              }\n                    /* WARNING: Could not emulate address calculation at 0x00038a00 */\n                    /* WARNING: Treating indirect jump as call */\n              iVar12 = (*(code *)(&_gp + *(int *)(puVar2 + (uint)*pbVar7 * 4 + -0x6a0c)))();\n              return iVar12;\n            }\n            if (m == pmVar6) {\n              pcVar10 = (char *)(*pcVar5)(pcVar10,*(undefined4 *)\n                                                   (*(int *)PTR_ptr_to_globals_00131330 + 4));\n            }\n            if ((*(uint *)PTR_option_mask32_0013135c & 0x40) == 0) {\n              if ((pmVar6->flags & 1) == 0) {\n                iVar12 = bb_init_module(pcVar9,pcVar10);\n                if (iVar12 == 0x11) {\n                  (*(code *)PTR_free_00132180)(pcVar10);\n                }\n                else {\n                  (*(code *)PTR_free_00132180)();\n                  if (iVar12 != 0) {\n                    pcVar10 = pmVar6->probed_name;\n                    if (pcVar10 == (char *)0x0) {\n                      pcVar10 = pmVar6->modname;\n                    }\n                    pcVar8 = moderror(iVar12);\n                    bb_error_msg(PTR_bdcommands_4__name_4__001311a4 + -0x6a2c,pcVar10,pcVar9,pcVar8)\n                    ;\n                    return iVar12;\n                  }\n                }\n                pmVar6->flags = pmVar6->flags | 1;\n                iVar12 = 0;\n              }\n              else {\n                (*(code *)PTR_free_00132180)(pcVar10);\n                iVar12 = 0;\n              }\n            }\n            else {\n              if (pcVar10 == (char *)0x0) {\n                puVar11 = PTR_bdcommands_4__name_4__001311a4 + -0x6a6c;\n              }\n              else {\n                puVar11 = PTR_bdcommands_4__name_4__001311a4 + -0x6a80;\n              }\n              (*(code *)PTR___printf_chk_00131e4c)\n                        (1,puVar11,PTR_bdcommands_4__name_4__001311a4 + -0x6c8c,\n                         *(int *)PTR_ptr_to_globals_00131330 + 0x8f,pcVar9,pcVar10);\n              (*(code *)PTR_free_00132180)(pcVar10);\n              iVar12 = 0;\n            }\n          }\n          if ((pmVar6->flags & 1) != 0) break;\n          bVar1 = false;\n          iVar12 = 0;\n        }\n        iVar12 = bb_delete_module(pmVar6->modname,0x400);\n        if (iVar12 != 0) break;\n        pmVar6->flags = pmVar6->flags & 0xfffffffe;\n        bVar1 = false;\n      }\n    } while (!bVar1);\n    pcVar9 = pmVar6->probed_name;\n    if (pcVar9 == (char *)0x0) {\n      pcVar9 = pmVar6->modname;\n    }\n    bb_perror_msg(PTR_bdcommands_4__name_4__001311a4 + -0x6a58,pcVar9);\n  }\n  return iVar12;\n}" primitive_type (function_declarator "do_modprobe(module_entry *m)" identifier (parameter_list "(module_entry *m)" ( (parameter_declaration "module_entry *m" type_identifier (pointer_declarator "*m" * identifier)) ))) (compound_statement "{\n  bool bVar1;\n  undefined *puVar2;\n  llist_t *plVar3;\n  code *pcVar4;\n  code *pcVar5;\n  module_entry *pmVar6;\n  byte *pbVar7;\n  char *pcVar8;\n  char *pcVar9;\n  char *pcVar10;\n  undefined *puVar11;\n  int iVar12;\n  \n  if ((m->flags & 4) == 0) {\n    iVar12 = -2;\n    if ((*(uint *)PTR_option_mask32_0013135c & 2) == 0) {\n      if ((m->flags & 0x10) == 0) {\n        pcVar9 = PTR_bdcommands_4__name_4__001311a4 + -0x6aa4;\n      }\n      else {\n        pcVar9 = PTR_bdcommands_4__name_4__001311a4 + -0x6abc;\n      }\n      pcVar10 = m->probed_name;\n      if (pcVar10 == (char *)0x0) {\n        pcVar10 = m->modname;\n      }\n      bb_error_msg(pcVar9,pcVar10);\n      iVar12 = -2;\n    }\n  }\n  else {\n    if ((*(uint *)PTR_option_mask32_0013135c & 0x20) == 0) {\n      plVar3 = llist_rev(m->deps);\n      m->deps = plVar3;\n    }\n    puVar2 = PTR_bdcommands_4__name_4__001311a4;\n    bVar1 = true;\n    iVar12 = 0;\n    pcVar4 = (code *)(PTR_LAB_00131488 + -0x7cf0);\n    pcVar5 = (code *)(PTR_LAB_00131488 + -0x7fc8);\n    do {\n      while( true ) {\n        while( true ) {\n          while( true ) {\n            if (m->deps == (llist_t *)0x0) {\n              return iVar12;\n            }\n            pcVar9 = (char *)llist_pop(&m->deps);\n            pcVar10 = bb_get_last_path_component_nostrip(pcVar9);\n            pmVar6 = (module_entry *)(*pcVar4)(pcVar10);\n            if ((*(uint *)PTR_option_mask32_0013135c & 0x20) != 0) break;\n            pcVar10 = pmVar6->options;\n            pmVar6->options = (char *)0x0;\n            pbVar7 = (byte *)(*(code *)PTR_xmalloc_open_read_close_00131474)\n                                       (PTR_bdcommands_4__name_4__001311a4 + -0x6a3c,0);\n            if (pbVar7 != (byte *)0x0) {\n              for (; 0x22 < *pbVar7; pbVar7 = pbVar7 + 1) {\n              }\n                    /* WARNING: Could not emulate address calculation at 0x00038a00 */\n                    /* WARNING: Treating indirect jump as call */\n              iVar12 = (*(code *)(&_gp + *(int *)(puVar2 + (uint)*pbVar7 * 4 + -0x6a0c)))();\n              return iVar12;\n            }\n            if (m == pmVar6) {\n              pcVar10 = (char *)(*pcVar5)(pcVar10,*(undefined4 *)\n                                                   (*(int *)PTR_ptr_to_globals_00131330 + 4));\n            }\n            if ((*(uint *)PTR_option_mask32_0013135c & 0x40) == 0) {\n              if ((pmVar6->flags & 1) == 0) {\n                iVar12 = bb_init_module(pcVar9,pcVar10);\n                if (iVar12 == 0x11) {\n                  (*(code *)PTR_free_00132180)(pcVar10);\n                }\n                else {\n                  (*(code *)PTR_free_00132180)();\n                  if (iVar12 != 0) {\n                    pcVar10 = pmVar6->probed_name;\n                    if (pcVar10 == (char *)0x0) {\n                      pcVar10 = pmVar6->modname;\n                    }\n                    pcVar8 = moderror(iVar12);\n                    bb_error_msg(PTR_bdcommands_4__name_4__001311a4 + -0x6a2c,pcVar10,pcVar9,pcVar8)\n                    ;\n                    return iVar12;\n                  }\n                }\n                pmVar6->flags = pmVar6->flags | 1;\n                iVar12 = 0;\n              }\n              else {\n                (*(code *)PTR_free_00132180)(pcVar10);\n                iVar12 = 0;\n              }\n            }\n            else {\n              if (pcVar10 == (char *)0x0) {\n                puVar11 = PTR_bdcommands_4__name_4__001311a4 + -0x6a6c;\n              }\n              else {\n                puVar11 = PTR_bdcommands_4__name_4__001311a4 + -0x6a80;\n              }\n              (*(code *)PTR___printf_chk_00131e4c)\n                        (1,puVar11,PTR_bdcommands_4__name_4__001311a4 + -0x6c8c,\n                         *(int *)PTR_ptr_to_globals_00131330 + 0x8f,pcVar9,pcVar10);\n              (*(code *)PTR_free_00132180)(pcVar10);\n              iVar12 = 0;\n            }\n          }\n          if ((pmVar6->flags & 1) != 0) break;\n          bVar1 = false;\n          iVar12 = 0;\n        }\n        iVar12 = bb_delete_module(pmVar6->modname,0x400);\n        if (iVar12 != 0) break;\n        pmVar6->flags = pmVar6->flags & 0xfffffffe;\n        bVar1 = false;\n      }\n    } while (!bVar1);\n    pcVar9 = pmVar6->probed_name;\n    if (pcVar9 == (char *)0x0) {\n      pcVar9 = pmVar6->modname;\n    }\n    bb_perror_msg(PTR_bdcommands_4__name_4__001311a4 + -0x6a58,pcVar9);\n  }\n  return iVar12;\n}" { (declaration "bool bVar1;" primitive_type identifier ;) (declaration "undefined *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "llist_t *plVar3;" type_identifier (pointer_declarator "*plVar3" * identifier) ;) (declaration "code *pcVar4;" type_identifier (pointer_declarator "*pcVar4" * identifier) ;) (declaration "code *pcVar5;" type_identifier (pointer_declarator "*pcVar5" * identifier) ;) (declaration "module_entry *pmVar6;" type_identifier (pointer_declarator "*pmVar6" * identifier) ;) (declaration "byte *pbVar7;" type_identifier (pointer_declarator "*pbVar7" * identifier) ;) (declaration "char *pcVar8;" primitive_type (pointer_declarator "*pcVar8" * identifier) ;) (declaration "char *pcVar9;" primitive_type (pointer_declarator "*pcVar9" * identifier) ;) (declaration "char *pcVar10;" primitive_type (pointer_declarator "*pcVar10" * identifier) ;) (declaration "undefined *puVar11;" type_identifier (pointer_declarator "*puVar11" * identifier) ;) (declaration "int iVar12;" primitive_type identifier ;) (if_statement "if ((m->flags & 4) == 0) {\n    iVar12 = -2;\n    if ((*(uint *)PTR_option_mask32_0013135c & 2) == 0) {\n      if ((m->flags & 0x10) == 0) {\n        pcVar9 = PTR_bdcommands_4__name_4__001311a4 + -0x6aa4;\n      }\n      else {\n        pcVar9 = PTR_bdcommands_4__name_4__001311a4 + -0x6abc;\n      }\n      pcVar10 = m->probed_name;\n      if (pcVar10 == (char *)0x0) {\n        pcVar10 = m->modname;\n      }\n      bb_error_msg(pcVar9,pcVar10);\n      iVar12 = -2;\n    }\n  }\n  else {\n    if ((*(uint *)PTR_option_mask32_0013135c & 0x20) == 0) {\n      plVar3 = llist_rev(m->deps);\n      m->deps = plVar3;\n    }\n    puVar2 = PTR_bdcommands_4__name_4__001311a4;\n    bVar1 = true;\n    iVar12 = 0;\n    pcVar4 = (code *)(PTR_LAB_00131488 + -0x7cf0);\n    pcVar5 = (code *)(PTR_LAB_00131488 + -0x7fc8);\n    do {\n      while( true ) {\n        while( true ) {\n          while( true ) {\n            if (m->deps == (llist_t *)0x0) {\n              return iVar12;\n            }\n            pcVar9 = (char *)llist_pop(&m->deps);\n            pcVar10 = bb_get_last_path_component_nostrip(pcVar9);\n            pmVar6 = (module_entry *)(*pcVar4)(pcVar10);\n            if ((*(uint *)PTR_option_mask32_0013135c & 0x20) != 0) break;\n            pcVar10 = pmVar6->options;\n            pmVar6->options = (char *)0x0;\n            pbVar7 = (byte *)(*(code *)PTR_xmalloc_open_read_close_00131474)\n                                       (PTR_bdcommands_4__name_4__001311a4 + -0x6a3c,0);\n            if (pbVar7 != (byte *)0x0) {\n              for (; 0x22 < *pbVar7; pbVar7 = pbVar7 + 1) {\n              }\n                    /* WARNING: Could not emulate address calculation at 0x00038a00 */\n                    /* WARNING: Treating indirect jump as call */\n              iVar12 = (*(code *)(&_gp + *(int *)(puVar2 + (uint)*pbVar7 * 4 + -0x6a0c)))();\n              return iVar12;\n            }\n            if (m == pmVar6) {\n              pcVar10 = (char *)(*pcVar5)(pcVar10,*(undefined4 *)\n                                                   (*(int *)PTR_ptr_to_globals_00131330 + 4));\n            }\n            if ((*(uint *)PTR_option_mask32_0013135c & 0x40) == 0) {\n              if ((pmVar6->flags & 1) == 0) {\n                iVar12 = bb_init_module(pcVar9,pcVar10);\n                if (iVar12 == 0x11) {\n                  (*(code *)PTR_free_00132180)(pcVar10);\n                }\n                else {\n                  (*(code *)PTR_free_00132180)();\n                  if (iVar12 != 0) {\n                    pcVar10 = pmVar6->probed_name;\n                    if (pcVar10 == (char *)0x0) {\n                      pcVar10 = pmVar6->modname;\n                    }\n                    pcVar8 = moderror(iVar12);\n                    bb_error_msg(PTR_bdcommands_4__name_4__001311a4 + -0x6a2c,pcVar10,pcVar9,pcVar8)\n                    ;\n                    return iVar12;\n                  }\n                }\n                pmVar6->flags = pmVar6->flags | 1;\n                iVar12 = 0;\n              }\n              else {\n                (*(code *)PTR_free_00132180)(pcVar10);\n                iVar12 = 0;\n              }\n            }\n            else {\n              if (pcVar10 == (char *)0x0) {\n                puVar11 = PTR_bdcommands_4__name_4__001311a4 + -0x6a6c;\n              }\n              else {\n                puVar11 = PTR_bdcommands_4__name_4__001311a4 + -0x6a80;\n              }\n              (*(code *)PTR___printf_chk_00131e4c)\n                        (1,puVar11,PTR_bdcommands_4__name_4__001311a4 + -0x6c8c,\n                         *(int *)PTR_ptr_to_globals_00131330 + 0x8f,pcVar9,pcVar10);\n              (*(code *)PTR_free_00132180)(pcVar10);\n              iVar12 = 0;\n            }\n          }\n          if ((pmVar6->flags & 1) != 0) break;\n          bVar1 = false;\n          iVar12 = 0;\n        }\n        iVar12 = bb_delete_module(pmVar6->modname,0x400);\n        if (iVar12 != 0) break;\n        pmVar6->flags = pmVar6->flags & 0xfffffffe;\n        bVar1 = false;\n      }\n    } while (!bVar1);\n    pcVar9 = pmVar6->probed_name;\n    if (pcVar9 == (char *)0x0) {\n      pcVar9 = pmVar6->modname;\n    }\n    bb_perror_msg(PTR_bdcommands_4__name_4__001311a4 + -0x6a58,pcVar9);\n  }" if (parenthesized_expression "((m->flags & 4) == 0)" ( (binary_expression "(m->flags & 4) == 0" (parenthesized_expression "(m->flags & 4)" ( (binary_expression "m->flags & 4" (field_expression "m->flags" identifier -> field_identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n    iVar12 = -2;\n    if ((*(uint *)PTR_option_mask32_0013135c & 2) == 0) {\n      if ((m->flags & 0x10) == 0) {\n        pcVar9 = PTR_bdcommands_4__name_4__001311a4 + -0x6aa4;\n      }\n      else {\n        pcVar9 = PTR_bdcommands_4__name_4__001311a4 + -0x6abc;\n      }\n      pcVar10 = m->probed_name;\n      if (pcVar10 == (char *)0x0) {\n        pcVar10 = m->modname;\n      }\n      bb_error_msg(pcVar9,pcVar10);\n      iVar12 = -2;\n    }\n  }" { (expression_statement "iVar12 = -2;" (assignment_expression "iVar12 = -2" identifier = number_literal) ;) (if_statement "if ((*(uint *)PTR_option_mask32_0013135c & 2) == 0) {\n      if ((m->flags & 0x10) == 0) {\n        pcVar9 = PTR_bdcommands_4__name_4__001311a4 + -0x6aa4;\n      }\n      else {\n        pcVar9 = PTR_bdcommands_4__name_4__001311a4 + -0x6abc;\n      }\n      pcVar10 = m->probed_name;\n      if (pcVar10 == (char *)0x0) {\n        pcVar10 = m->modname;\n      }\n      bb_error_msg(pcVar9,pcVar10);\n      iVar12 = -2;\n    }" if (parenthesized_expression "((*(uint *)PTR_option_mask32_0013135c & 2) == 0)" ( (binary_expression "(*(uint *)PTR_option_mask32_0013135c & 2) == 0" (parenthesized_expression "(*(uint *)PTR_option_mask32_0013135c & 2)" ( (binary_expression "*(uint *)PTR_option_mask32_0013135c & 2" (pointer_expression "*(uint *)PTR_option_mask32_0013135c" * (cast_expression "(uint *)PTR_option_mask32_0013135c" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) & number_literal) )) == number_literal) )) (compound_statement "{\n      if ((m->flags & 0x10) == 0) {\n        pcVar9 = PTR_bdcommands_4__name_4__001311a4 + -0x6aa4;\n      }\n      else {\n        pcVar9 = PTR_bdcommands_4__name_4__001311a4 + -0x6abc;\n      }\n      pcVar10 = m->probed_name;\n      if (pcVar10 == (char *)0x0) {\n        pcVar10 = m->modname;\n      }\n      bb_error_msg(pcVar9,pcVar10);\n      iVar12 = -2;\n    }" { (if_statement "if ((m->flags & 0x10) == 0) {\n        pcVar9 = PTR_bdcommands_4__name_4__001311a4 + -0x6aa4;\n      }\n      else {\n        pcVar9 = PTR_bdcommands_4__name_4__001311a4 + -0x6abc;\n      }" if (parenthesized_expression "((m->flags & 0x10) == 0)" ( (binary_expression "(m->flags & 0x10) == 0" (parenthesized_expression "(m->flags & 0x10)" ( (binary_expression "m->flags & 0x10" (field_expression "m->flags" identifier -> field_identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n        pcVar9 = PTR_bdcommands_4__name_4__001311a4 + -0x6aa4;\n      }" { (expression_statement "pcVar9 = PTR_bdcommands_4__name_4__001311a4 + -0x6aa4;" (assignment_expression "pcVar9 = PTR_bdcommands_4__name_4__001311a4 + -0x6aa4" identifier = (binary_expression "PTR_bdcommands_4__name_4__001311a4 + -0x6aa4" identifier + number_literal)) ;) }) (else_clause "else {\n        pcVar9 = PTR_bdcommands_4__name_4__001311a4 + -0x6abc;\n      }" else (compound_statement "{\n        pcVar9 = PTR_bdcommands_4__name_4__001311a4 + -0x6abc;\n      }" { (expression_statement "pcVar9 = PTR_bdcommands_4__name_4__001311a4 + -0x6abc;" (assignment_expression "pcVar9 = PTR_bdcommands_4__name_4__001311a4 + -0x6abc" identifier = (binary_expression "PTR_bdcommands_4__name_4__001311a4 + -0x6abc" identifier + number_literal)) ;) }))) (expression_statement "pcVar10 = m->probed_name;" (assignment_expression "pcVar10 = m->probed_name" identifier = (field_expression "m->probed_name" identifier -> field_identifier)) ;) (if_statement "if (pcVar10 == (char *)0x0) {\n        pcVar10 = m->modname;\n      }" if (parenthesized_expression "(pcVar10 == (char *)0x0)" ( (binary_expression "pcVar10 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        pcVar10 = m->modname;\n      }" { (expression_statement "pcVar10 = m->modname;" (assignment_expression "pcVar10 = m->modname" identifier = (field_expression "m->modname" identifier -> field_identifier)) ;) })) (expression_statement "bb_error_msg(pcVar9,pcVar10);" (call_expression "bb_error_msg(pcVar9,pcVar10)" identifier (argument_list "(pcVar9,pcVar10)" ( identifier , identifier ))) ;) (expression_statement "iVar12 = -2;" (assignment_expression "iVar12 = -2" identifier = number_literal) ;) })) }) (else_clause "else {\n    if ((*(uint *)PTR_option_mask32_0013135c & 0x20) == 0) {\n      plVar3 = llist_rev(m->deps);\n      m->deps = plVar3;\n    }\n    puVar2 = PTR_bdcommands_4__name_4__001311a4;\n    bVar1 = true;\n    iVar12 = 0;\n    pcVar4 = (code *)(PTR_LAB_00131488 + -0x7cf0);\n    pcVar5 = (code *)(PTR_LAB_00131488 + -0x7fc8);\n    do {\n      while( true ) {\n        while( true ) {\n          while( true ) {\n            if (m->deps == (llist_t *)0x0) {\n              return iVar12;\n            }\n            pcVar9 = (char *)llist_pop(&m->deps);\n            pcVar10 = bb_get_last_path_component_nostrip(pcVar9);\n            pmVar6 = (module_entry *)(*pcVar4)(pcVar10);\n            if ((*(uint *)PTR_option_mask32_0013135c & 0x20) != 0) break;\n            pcVar10 = pmVar6->options;\n            pmVar6->options = (char *)0x0;\n            pbVar7 = (byte *)(*(code *)PTR_xmalloc_open_read_close_00131474)\n                                       (PTR_bdcommands_4__name_4__001311a4 + -0x6a3c,0);\n            if (pbVar7 != (byte *)0x0) {\n              for (; 0x22 < *pbVar7; pbVar7 = pbVar7 + 1) {\n              }\n                    /* WARNING: Could not emulate address calculation at 0x00038a00 */\n                    /* WARNING: Treating indirect jump as call */\n              iVar12 = (*(code *)(&_gp + *(int *)(puVar2 + (uint)*pbVar7 * 4 + -0x6a0c)))();\n              return iVar12;\n            }\n            if (m == pmVar6) {\n              pcVar10 = (char *)(*pcVar5)(pcVar10,*(undefined4 *)\n                                                   (*(int *)PTR_ptr_to_globals_00131330 + 4));\n            }\n            if ((*(uint *)PTR_option_mask32_0013135c & 0x40) == 0) {\n              if ((pmVar6->flags & 1) == 0) {\n                iVar12 = bb_init_module(pcVar9,pcVar10);\n                if (iVar12 == 0x11) {\n                  (*(code *)PTR_free_00132180)(pcVar10);\n                }\n                else {\n                  (*(code *)PTR_free_00132180)();\n                  if (iVar12 != 0) {\n                    pcVar10 = pmVar6->probed_name;\n                    if (pcVar10 == (char *)0x0) {\n                      pcVar10 = pmVar6->modname;\n                    }\n                    pcVar8 = moderror(iVar12);\n                    bb_error_msg(PTR_bdcommands_4__name_4__001311a4 + -0x6a2c,pcVar10,pcVar9,pcVar8)\n                    ;\n                    return iVar12;\n                  }\n                }\n                pmVar6->flags = pmVar6->flags | 1;\n                iVar12 = 0;\n              }\n              else {\n                (*(code *)PTR_free_00132180)(pcVar10);\n                iVar12 = 0;\n              }\n            }\n            else {\n              if (pcVar10 == (char *)0x0) {\n                puVar11 = PTR_bdcommands_4__name_4__001311a4 + -0x6a6c;\n              }\n              else {\n                puVar11 = PTR_bdcommands_4__name_4__001311a4 + -0x6a80;\n              }\n              (*(code *)PTR___printf_chk_00131e4c)\n                        (1,puVar11,PTR_bdcommands_4__name_4__001311a4 + -0x6c8c,\n                         *(int *)PTR_ptr_to_globals_00131330 + 0x8f,pcVar9,pcVar10);\n              (*(code *)PTR_free_00132180)(pcVar10);\n              iVar12 = 0;\n            }\n          }\n          if ((pmVar6->flags & 1) != 0) break;\n          bVar1 = false;\n          iVar12 = 0;\n        }\n        iVar12 = bb_delete_module(pmVar6->modname,0x400);\n        if (iVar12 != 0) break;\n        pmVar6->flags = pmVar6->flags & 0xfffffffe;\n        bVar1 = false;\n      }\n    } while (!bVar1);\n    pcVar9 = pmVar6->probed_name;\n    if (pcVar9 == (char *)0x0) {\n      pcVar9 = pmVar6->modname;\n    }\n    bb_perror_msg(PTR_bdcommands_4__name_4__001311a4 + -0x6a58,pcVar9);\n  }" else (compound_statement "{\n    if ((*(uint *)PTR_option_mask32_0013135c & 0x20) == 0) {\n      plVar3 = llist_rev(m->deps);\n      m->deps = plVar3;\n    }\n    puVar2 = PTR_bdcommands_4__name_4__001311a4;\n    bVar1 = true;\n    iVar12 = 0;\n    pcVar4 = (code *)(PTR_LAB_00131488 + -0x7cf0);\n    pcVar5 = (code *)(PTR_LAB_00131488 + -0x7fc8);\n    do {\n      while( true ) {\n        while( true ) {\n          while( true ) {\n            if (m->deps == (llist_t *)0x0) {\n              return iVar12;\n            }\n            pcVar9 = (char *)llist_pop(&m->deps);\n            pcVar10 = bb_get_last_path_component_nostrip(pcVar9);\n            pmVar6 = (module_entry *)(*pcVar4)(pcVar10);\n            if ((*(uint *)PTR_option_mask32_0013135c & 0x20) != 0) break;\n            pcVar10 = pmVar6->options;\n            pmVar6->options = (char *)0x0;\n            pbVar7 = (byte *)(*(code *)PTR_xmalloc_open_read_close_00131474)\n                                       (PTR_bdcommands_4__name_4__001311a4 + -0x6a3c,0);\n            if (pbVar7 != (byte *)0x0) {\n              for (; 0x22 < *pbVar7; pbVar7 = pbVar7 + 1) {\n              }\n                    /* WARNING: Could not emulate address calculation at 0x00038a00 */\n                    /* WARNING: Treating indirect jump as call */\n              iVar12 = (*(code *)(&_gp + *(int *)(puVar2 + (uint)*pbVar7 * 4 + -0x6a0c)))();\n              return iVar12;\n            }\n            if (m == pmVar6) {\n              pcVar10 = (char *)(*pcVar5)(pcVar10,*(undefined4 *)\n                                                   (*(int *)PTR_ptr_to_globals_00131330 + 4));\n            }\n            if ((*(uint *)PTR_option_mask32_0013135c & 0x40) == 0) {\n              if ((pmVar6->flags & 1) == 0) {\n                iVar12 = bb_init_module(pcVar9,pcVar10);\n                if (iVar12 == 0x11) {\n                  (*(code *)PTR_free_00132180)(pcVar10);\n                }\n                else {\n                  (*(code *)PTR_free_00132180)();\n                  if (iVar12 != 0) {\n                    pcVar10 = pmVar6->probed_name;\n                    if (pcVar10 == (char *)0x0) {\n                      pcVar10 = pmVar6->modname;\n                    }\n                    pcVar8 = moderror(iVar12);\n                    bb_error_msg(PTR_bdcommands_4__name_4__001311a4 + -0x6a2c,pcVar10,pcVar9,pcVar8)\n                    ;\n                    return iVar12;\n                  }\n                }\n                pmVar6->flags = pmVar6->flags | 1;\n                iVar12 = 0;\n              }\n              else {\n                (*(code *)PTR_free_00132180)(pcVar10);\n                iVar12 = 0;\n              }\n            }\n            else {\n              if (pcVar10 == (char *)0x0) {\n                puVar11 = PTR_bdcommands_4__name_4__001311a4 + -0x6a6c;\n              }\n              else {\n                puVar11 = PTR_bdcommands_4__name_4__001311a4 + -0x6a80;\n              }\n              (*(code *)PTR___printf_chk_00131e4c)\n                        (1,puVar11,PTR_bdcommands_4__name_4__001311a4 + -0x6c8c,\n                         *(int *)PTR_ptr_to_globals_00131330 + 0x8f,pcVar9,pcVar10);\n              (*(code *)PTR_free_00132180)(pcVar10);\n              iVar12 = 0;\n            }\n          }\n          if ((pmVar6->flags & 1) != 0) break;\n          bVar1 = false;\n          iVar12 = 0;\n        }\n        iVar12 = bb_delete_module(pmVar6->modname,0x400);\n        if (iVar12 != 0) break;\n        pmVar6->flags = pmVar6->flags & 0xfffffffe;\n        bVar1 = false;\n      }\n    } while (!bVar1);\n    pcVar9 = pmVar6->probed_name;\n    if (pcVar9 == (char *)0x0) {\n      pcVar9 = pmVar6->modname;\n    }\n    bb_perror_msg(PTR_bdcommands_4__name_4__001311a4 + -0x6a58,pcVar9);\n  }" { (if_statement "if ((*(uint *)PTR_option_mask32_0013135c & 0x20) == 0) {\n      plVar3 = llist_rev(m->deps);\n      m->deps = plVar3;\n    }" if (parenthesized_expression "((*(uint *)PTR_option_mask32_0013135c & 0x20) == 0)" ( (binary_expression "(*(uint *)PTR_option_mask32_0013135c & 0x20) == 0" (parenthesized_expression "(*(uint *)PTR_option_mask32_0013135c & 0x20)" ( (binary_expression "*(uint *)PTR_option_mask32_0013135c & 0x20" (pointer_expression "*(uint *)PTR_option_mask32_0013135c" * (cast_expression "(uint *)PTR_option_mask32_0013135c" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) & number_literal) )) == number_literal) )) (compound_statement "{\n      plVar3 = llist_rev(m->deps);\n      m->deps = plVar3;\n    }" { (expression_statement "plVar3 = llist_rev(m->deps);" (assignment_expression "plVar3 = llist_rev(m->deps)" identifier = (call_expression "llist_rev(m->deps)" identifier (argument_list "(m->deps)" ( (field_expression "m->deps" identifier -> field_identifier) )))) ;) (expression_statement "m->deps = plVar3;" (assignment_expression "m->deps = plVar3" (field_expression "m->deps" identifier -> field_identifier) = identifier) ;) })) (expression_statement "puVar2 = PTR_bdcommands_4__name_4__001311a4;" (assignment_expression "puVar2 = PTR_bdcommands_4__name_4__001311a4" identifier = identifier) ;) (expression_statement "bVar1 = true;" (assignment_expression "bVar1 = true" identifier = true) ;) (expression_statement "iVar12 = 0;" (assignment_expression "iVar12 = 0" identifier = number_literal) ;) (expression_statement "pcVar4 = (code *)(PTR_LAB_00131488 + -0x7cf0);" (assignment_expression "pcVar4 = (code *)(PTR_LAB_00131488 + -0x7cf0)" identifier = (cast_expression "(code *)(PTR_LAB_00131488 + -0x7cf0)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_00131488 + -0x7cf0)" ( (binary_expression "PTR_LAB_00131488 + -0x7cf0" identifier + number_literal) )))) ;) (expression_statement "pcVar5 = (code *)(PTR_LAB_00131488 + -0x7fc8);" (assignment_expression "pcVar5 = (code *)(PTR_LAB_00131488 + -0x7fc8)" identifier = (cast_expression "(code *)(PTR_LAB_00131488 + -0x7fc8)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_00131488 + -0x7fc8)" ( (binary_expression "PTR_LAB_00131488 + -0x7fc8" identifier + number_literal) )))) ;) (do_statement "do {\n      while( true ) {\n        while( true ) {\n          while( true ) {\n            if (m->deps == (llist_t *)0x0) {\n              return iVar12;\n            }\n            pcVar9 = (char *)llist_pop(&m->deps);\n            pcVar10 = bb_get_last_path_component_nostrip(pcVar9);\n            pmVar6 = (module_entry *)(*pcVar4)(pcVar10);\n            if ((*(uint *)PTR_option_mask32_0013135c & 0x20) != 0) break;\n            pcVar10 = pmVar6->options;\n            pmVar6->options = (char *)0x0;\n            pbVar7 = (byte *)(*(code *)PTR_xmalloc_open_read_close_00131474)\n                                       (PTR_bdcommands_4__name_4__001311a4 + -0x6a3c,0);\n            if (pbVar7 != (byte *)0x0) {\n              for (; 0x22 < *pbVar7; pbVar7 = pbVar7 + 1) {\n              }\n                    /* WARNING: Could not emulate address calculation at 0x00038a00 */\n                    /* WARNING: Treating indirect jump as call */\n              iVar12 = (*(code *)(&_gp + *(int *)(puVar2 + (uint)*pbVar7 * 4 + -0x6a0c)))();\n              return iVar12;\n            }\n            if (m == pmVar6) {\n              pcVar10 = (char *)(*pcVar5)(pcVar10,*(undefined4 *)\n                                                   (*(int *)PTR_ptr_to_globals_00131330 + 4));\n            }\n            if ((*(uint *)PTR_option_mask32_0013135c & 0x40) == 0) {\n              if ((pmVar6->flags & 1) == 0) {\n                iVar12 = bb_init_module(pcVar9,pcVar10);\n                if (iVar12 == 0x11) {\n                  (*(code *)PTR_free_00132180)(pcVar10);\n                }\n                else {\n                  (*(code *)PTR_free_00132180)();\n                  if (iVar12 != 0) {\n                    pcVar10 = pmVar6->probed_name;\n                    if (pcVar10 == (char *)0x0) {\n                      pcVar10 = pmVar6->modname;\n                    }\n                    pcVar8 = moderror(iVar12);\n                    bb_error_msg(PTR_bdcommands_4__name_4__001311a4 + -0x6a2c,pcVar10,pcVar9,pcVar8)\n                    ;\n                    return iVar12;\n                  }\n                }\n                pmVar6->flags = pmVar6->flags | 1;\n                iVar12 = 0;\n              }\n              else {\n                (*(code *)PTR_free_00132180)(pcVar10);\n                iVar12 = 0;\n              }\n            }\n            else {\n              if (pcVar10 == (char *)0x0) {\n                puVar11 = PTR_bdcommands_4__name_4__001311a4 + -0x6a6c;\n              }\n              else {\n                puVar11 = PTR_bdcommands_4__name_4__001311a4 + -0x6a80;\n              }\n              (*(code *)PTR___printf_chk_00131e4c)\n                        (1,puVar11,PTR_bdcommands_4__name_4__001311a4 + -0x6c8c,\n                         *(int *)PTR_ptr_to_globals_00131330 + 0x8f,pcVar9,pcVar10);\n              (*(code *)PTR_free_00132180)(pcVar10);\n              iVar12 = 0;\n            }\n          }\n          if ((pmVar6->flags & 1) != 0) break;\n          bVar1 = false;\n          iVar12 = 0;\n        }\n        iVar12 = bb_delete_module(pmVar6->modname,0x400);\n        if (iVar12 != 0) break;\n        pmVar6->flags = pmVar6->flags & 0xfffffffe;\n        bVar1 = false;\n      }\n    } while (!bVar1);" do (compound_statement "{\n      while( true ) {\n        while( true ) {\n          while( true ) {\n            if (m->deps == (llist_t *)0x0) {\n              return iVar12;\n            }\n            pcVar9 = (char *)llist_pop(&m->deps);\n            pcVar10 = bb_get_last_path_component_nostrip(pcVar9);\n            pmVar6 = (module_entry *)(*pcVar4)(pcVar10);\n            if ((*(uint *)PTR_option_mask32_0013135c & 0x20) != 0) break;\n            pcVar10 = pmVar6->options;\n            pmVar6->options = (char *)0x0;\n            pbVar7 = (byte *)(*(code *)PTR_xmalloc_open_read_close_00131474)\n                                       (PTR_bdcommands_4__name_4__001311a4 + -0x6a3c,0);\n            if (pbVar7 != (byte *)0x0) {\n              for (; 0x22 < *pbVar7; pbVar7 = pbVar7 + 1) {\n              }\n                    /* WARNING: Could not emulate address calculation at 0x00038a00 */\n                    /* WARNING: Treating indirect jump as call */\n              iVar12 = (*(code *)(&_gp + *(int *)(puVar2 + (uint)*pbVar7 * 4 + -0x6a0c)))();\n              return iVar12;\n            }\n            if (m == pmVar6) {\n              pcVar10 = (char *)(*pcVar5)(pcVar10,*(undefined4 *)\n                                                   (*(int *)PTR_ptr_to_globals_00131330 + 4));\n            }\n            if ((*(uint *)PTR_option_mask32_0013135c & 0x40) == 0) {\n              if ((pmVar6->flags & 1) == 0) {\n                iVar12 = bb_init_module(pcVar9,pcVar10);\n                if (iVar12 == 0x11) {\n                  (*(code *)PTR_free_00132180)(pcVar10);\n                }\n                else {\n                  (*(code *)PTR_free_00132180)();\n                  if (iVar12 != 0) {\n                    pcVar10 = pmVar6->probed_name;\n                    if (pcVar10 == (char *)0x0) {\n                      pcVar10 = pmVar6->modname;\n                    }\n                    pcVar8 = moderror(iVar12);\n                    bb_error_msg(PTR_bdcommands_4__name_4__001311a4 + -0x6a2c,pcVar10,pcVar9,pcVar8)\n                    ;\n                    return iVar12;\n                  }\n                }\n                pmVar6->flags = pmVar6->flags | 1;\n                iVar12 = 0;\n              }\n              else {\n                (*(code *)PTR_free_00132180)(pcVar10);\n                iVar12 = 0;\n              }\n            }\n            else {\n              if (pcVar10 == (char *)0x0) {\n                puVar11 = PTR_bdcommands_4__name_4__001311a4 + -0x6a6c;\n              }\n              else {\n                puVar11 = PTR_bdcommands_4__name_4__001311a4 + -0x6a80;\n              }\n              (*(code *)PTR___printf_chk_00131e4c)\n                        (1,puVar11,PTR_bdcommands_4__name_4__001311a4 + -0x6c8c,\n                         *(int *)PTR_ptr_to_globals_00131330 + 0x8f,pcVar9,pcVar10);\n              (*(code *)PTR_free_00132180)(pcVar10);\n              iVar12 = 0;\n            }\n          }\n          if ((pmVar6->flags & 1) != 0) break;\n          bVar1 = false;\n          iVar12 = 0;\n        }\n        iVar12 = bb_delete_module(pmVar6->modname,0x400);\n        if (iVar12 != 0) break;\n        pmVar6->flags = pmVar6->flags & 0xfffffffe;\n        bVar1 = false;\n      }\n    }" { (while_statement "while( true ) {\n        while( true ) {\n          while( true ) {\n            if (m->deps == (llist_t *)0x0) {\n              return iVar12;\n            }\n            pcVar9 = (char *)llist_pop(&m->deps);\n            pcVar10 = bb_get_last_path_component_nostrip(pcVar9);\n            pmVar6 = (module_entry *)(*pcVar4)(pcVar10);\n            if ((*(uint *)PTR_option_mask32_0013135c & 0x20) != 0) break;\n            pcVar10 = pmVar6->options;\n            pmVar6->options = (char *)0x0;\n            pbVar7 = (byte *)(*(code *)PTR_xmalloc_open_read_close_00131474)\n                                       (PTR_bdcommands_4__name_4__001311a4 + -0x6a3c,0);\n            if (pbVar7 != (byte *)0x0) {\n              for (; 0x22 < *pbVar7; pbVar7 = pbVar7 + 1) {\n              }\n                    /* WARNING: Could not emulate address calculation at 0x00038a00 */\n                    /* WARNING: Treating indirect jump as call */\n              iVar12 = (*(code *)(&_gp + *(int *)(puVar2 + (uint)*pbVar7 * 4 + -0x6a0c)))();\n              return iVar12;\n            }\n            if (m == pmVar6) {\n              pcVar10 = (char *)(*pcVar5)(pcVar10,*(undefined4 *)\n                                                   (*(int *)PTR_ptr_to_globals_00131330 + 4));\n            }\n            if ((*(uint *)PTR_option_mask32_0013135c & 0x40) == 0) {\n              if ((pmVar6->flags & 1) == 0) {\n                iVar12 = bb_init_module(pcVar9,pcVar10);\n                if (iVar12 == 0x11) {\n                  (*(code *)PTR_free_00132180)(pcVar10);\n                }\n                else {\n                  (*(code *)PTR_free_00132180)();\n                  if (iVar12 != 0) {\n                    pcVar10 = pmVar6->probed_name;\n                    if (pcVar10 == (char *)0x0) {\n                      pcVar10 = pmVar6->modname;\n                    }\n                    pcVar8 = moderror(iVar12);\n                    bb_error_msg(PTR_bdcommands_4__name_4__001311a4 + -0x6a2c,pcVar10,pcVar9,pcVar8)\n                    ;\n                    return iVar12;\n                  }\n                }\n                pmVar6->flags = pmVar6->flags | 1;\n                iVar12 = 0;\n              }\n              else {\n                (*(code *)PTR_free_00132180)(pcVar10);\n                iVar12 = 0;\n              }\n            }\n            else {\n              if (pcVar10 == (char *)0x0) {\n                puVar11 = PTR_bdcommands_4__name_4__001311a4 + -0x6a6c;\n              }\n              else {\n                puVar11 = PTR_bdcommands_4__name_4__001311a4 + -0x6a80;\n              }\n              (*(code *)PTR___printf_chk_00131e4c)\n                        (1,puVar11,PTR_bdcommands_4__name_4__001311a4 + -0x6c8c,\n                         *(int *)PTR_ptr_to_globals_00131330 + 0x8f,pcVar9,pcVar10);\n              (*(code *)PTR_free_00132180)(pcVar10);\n              iVar12 = 0;\n            }\n          }\n          if ((pmVar6->flags & 1) != 0) break;\n          bVar1 = false;\n          iVar12 = 0;\n        }\n        iVar12 = bb_delete_module(pmVar6->modname,0x400);\n        if (iVar12 != 0) break;\n        pmVar6->flags = pmVar6->flags & 0xfffffffe;\n        bVar1 = false;\n      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n        while( true ) {\n          while( true ) {\n            if (m->deps == (llist_t *)0x0) {\n              return iVar12;\n            }\n            pcVar9 = (char *)llist_pop(&m->deps);\n            pcVar10 = bb_get_last_path_component_nostrip(pcVar9);\n            pmVar6 = (module_entry *)(*pcVar4)(pcVar10);\n            if ((*(uint *)PTR_option_mask32_0013135c & 0x20) != 0) break;\n            pcVar10 = pmVar6->options;\n            pmVar6->options = (char *)0x0;\n            pbVar7 = (byte *)(*(code *)PTR_xmalloc_open_read_close_00131474)\n                                       (PTR_bdcommands_4__name_4__001311a4 + -0x6a3c,0);\n            if (pbVar7 != (byte *)0x0) {\n              for (; 0x22 < *pbVar7; pbVar7 = pbVar7 + 1) {\n              }\n                    /* WARNING: Could not emulate address calculation at 0x00038a00 */\n                    /* WARNING: Treating indirect jump as call */\n              iVar12 = (*(code *)(&_gp + *(int *)(puVar2 + (uint)*pbVar7 * 4 + -0x6a0c)))();\n              return iVar12;\n            }\n            if (m == pmVar6) {\n              pcVar10 = (char *)(*pcVar5)(pcVar10,*(undefined4 *)\n                                                   (*(int *)PTR_ptr_to_globals_00131330 + 4));\n            }\n            if ((*(uint *)PTR_option_mask32_0013135c & 0x40) == 0) {\n              if ((pmVar6->flags & 1) == 0) {\n                iVar12 = bb_init_module(pcVar9,pcVar10);\n                if (iVar12 == 0x11) {\n                  (*(code *)PTR_free_00132180)(pcVar10);\n                }\n                else {\n                  (*(code *)PTR_free_00132180)();\n                  if (iVar12 != 0) {\n                    pcVar10 = pmVar6->probed_name;\n                    if (pcVar10 == (char *)0x0) {\n                      pcVar10 = pmVar6->modname;\n                    }\n                    pcVar8 = moderror(iVar12);\n                    bb_error_msg(PTR_bdcommands_4__name_4__001311a4 + -0x6a2c,pcVar10,pcVar9,pcVar8)\n                    ;\n                    return iVar12;\n                  }\n                }\n                pmVar6->flags = pmVar6->flags | 1;\n                iVar12 = 0;\n              }\n              else {\n                (*(code *)PTR_free_00132180)(pcVar10);\n                iVar12 = 0;\n              }\n            }\n            else {\n              if (pcVar10 == (char *)0x0) {\n                puVar11 = PTR_bdcommands_4__name_4__001311a4 + -0x6a6c;\n              }\n              else {\n                puVar11 = PTR_bdcommands_4__name_4__001311a4 + -0x6a80;\n              }\n              (*(code *)PTR___printf_chk_00131e4c)\n                        (1,puVar11,PTR_bdcommands_4__name_4__001311a4 + -0x6c8c,\n                         *(int *)PTR_ptr_to_globals_00131330 + 0x8f,pcVar9,pcVar10);\n              (*(code *)PTR_free_00132180)(pcVar10);\n              iVar12 = 0;\n            }\n          }\n          if ((pmVar6->flags & 1) != 0) break;\n          bVar1 = false;\n          iVar12 = 0;\n        }\n        iVar12 = bb_delete_module(pmVar6->modname,0x400);\n        if (iVar12 != 0) break;\n        pmVar6->flags = pmVar6->flags & 0xfffffffe;\n        bVar1 = false;\n      }" { (while_statement "while( true ) {\n          while( true ) {\n            if (m->deps == (llist_t *)0x0) {\n              return iVar12;\n            }\n            pcVar9 = (char *)llist_pop(&m->deps);\n            pcVar10 = bb_get_last_path_component_nostrip(pcVar9);\n            pmVar6 = (module_entry *)(*pcVar4)(pcVar10);\n            if ((*(uint *)PTR_option_mask32_0013135c & 0x20) != 0) break;\n            pcVar10 = pmVar6->options;\n            pmVar6->options = (char *)0x0;\n            pbVar7 = (byte *)(*(code *)PTR_xmalloc_open_read_close_00131474)\n                                       (PTR_bdcommands_4__name_4__001311a4 + -0x6a3c,0);\n            if (pbVar7 != (byte *)0x0) {\n              for (; 0x22 < *pbVar7; pbVar7 = pbVar7 + 1) {\n              }\n                    /* WARNING: Could not emulate address calculation at 0x00038a00 */\n                    /* WARNING: Treating indirect jump as call */\n              iVar12 = (*(code *)(&_gp + *(int *)(puVar2 + (uint)*pbVar7 * 4 + -0x6a0c)))();\n              return iVar12;\n            }\n            if (m == pmVar6) {\n              pcVar10 = (char *)(*pcVar5)(pcVar10,*(undefined4 *)\n                                                   (*(int *)PTR_ptr_to_globals_00131330 + 4));\n            }\n            if ((*(uint *)PTR_option_mask32_0013135c & 0x40) == 0) {\n              if ((pmVar6->flags & 1) == 0) {\n                iVar12 = bb_init_module(pcVar9,pcVar10);\n                if (iVar12 == 0x11) {\n                  (*(code *)PTR_free_00132180)(pcVar10);\n                }\n                else {\n                  (*(code *)PTR_free_00132180)();\n                  if (iVar12 != 0) {\n                    pcVar10 = pmVar6->probed_name;\n                    if (pcVar10 == (char *)0x0) {\n                      pcVar10 = pmVar6->modname;\n                    }\n                    pcVar8 = moderror(iVar12);\n                    bb_error_msg(PTR_bdcommands_4__name_4__001311a4 + -0x6a2c,pcVar10,pcVar9,pcVar8)\n                    ;\n                    return iVar12;\n                  }\n                }\n                pmVar6->flags = pmVar6->flags | 1;\n                iVar12 = 0;\n              }\n              else {\n                (*(code *)PTR_free_00132180)(pcVar10);\n                iVar12 = 0;\n              }\n            }\n            else {\n              if (pcVar10 == (char *)0x0) {\n                puVar11 = PTR_bdcommands_4__name_4__001311a4 + -0x6a6c;\n              }\n              else {\n                puVar11 = PTR_bdcommands_4__name_4__001311a4 + -0x6a80;\n              }\n              (*(code *)PTR___printf_chk_00131e4c)\n                        (1,puVar11,PTR_bdcommands_4__name_4__001311a4 + -0x6c8c,\n                         *(int *)PTR_ptr_to_globals_00131330 + 0x8f,pcVar9,pcVar10);\n              (*(code *)PTR_free_00132180)(pcVar10);\n              iVar12 = 0;\n            }\n          }\n          if ((pmVar6->flags & 1) != 0) break;\n          bVar1 = false;\n          iVar12 = 0;\n        }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n          while( true ) {\n            if (m->deps == (llist_t *)0x0) {\n              return iVar12;\n            }\n            pcVar9 = (char *)llist_pop(&m->deps);\n            pcVar10 = bb_get_last_path_component_nostrip(pcVar9);\n            pmVar6 = (module_entry *)(*pcVar4)(pcVar10);\n            if ((*(uint *)PTR_option_mask32_0013135c & 0x20) != 0) break;\n            pcVar10 = pmVar6->options;\n            pmVar6->options = (char *)0x0;\n            pbVar7 = (byte *)(*(code *)PTR_xmalloc_open_read_close_00131474)\n                                       (PTR_bdcommands_4__name_4__001311a4 + -0x6a3c,0);\n            if (pbVar7 != (byte *)0x0) {\n              for (; 0x22 < *pbVar7; pbVar7 = pbVar7 + 1) {\n              }\n                    /* WARNING: Could not emulate address calculation at 0x00038a00 */\n                    /* WARNING: Treating indirect jump as call */\n              iVar12 = (*(code *)(&_gp + *(int *)(puVar2 + (uint)*pbVar7 * 4 + -0x6a0c)))();\n              return iVar12;\n            }\n            if (m == pmVar6) {\n              pcVar10 = (char *)(*pcVar5)(pcVar10,*(undefined4 *)\n                                                   (*(int *)PTR_ptr_to_globals_00131330 + 4));\n            }\n            if ((*(uint *)PTR_option_mask32_0013135c & 0x40) == 0) {\n              if ((pmVar6->flags & 1) == 0) {\n                iVar12 = bb_init_module(pcVar9,pcVar10);\n                if (iVar12 == 0x11) {\n                  (*(code *)PTR_free_00132180)(pcVar10);\n                }\n                else {\n                  (*(code *)PTR_free_00132180)();\n                  if (iVar12 != 0) {\n                    pcVar10 = pmVar6->probed_name;\n                    if (pcVar10 == (char *)0x0) {\n                      pcVar10 = pmVar6->modname;\n                    }\n                    pcVar8 = moderror(iVar12);\n                    bb_error_msg(PTR_bdcommands_4__name_4__001311a4 + -0x6a2c,pcVar10,pcVar9,pcVar8)\n                    ;\n                    return iVar12;\n                  }\n                }\n                pmVar6->flags = pmVar6->flags | 1;\n                iVar12 = 0;\n              }\n              else {\n                (*(code *)PTR_free_00132180)(pcVar10);\n                iVar12 = 0;\n              }\n            }\n            else {\n              if (pcVar10 == (char *)0x0) {\n                puVar11 = PTR_bdcommands_4__name_4__001311a4 + -0x6a6c;\n              }\n              else {\n                puVar11 = PTR_bdcommands_4__name_4__001311a4 + -0x6a80;\n              }\n              (*(code *)PTR___printf_chk_00131e4c)\n                        (1,puVar11,PTR_bdcommands_4__name_4__001311a4 + -0x6c8c,\n                         *(int *)PTR_ptr_to_globals_00131330 + 0x8f,pcVar9,pcVar10);\n              (*(code *)PTR_free_00132180)(pcVar10);\n              iVar12 = 0;\n            }\n          }\n          if ((pmVar6->flags & 1) != 0) break;\n          bVar1 = false;\n          iVar12 = 0;\n        }" { (while_statement "while( true ) {\n            if (m->deps == (llist_t *)0x0) {\n              return iVar12;\n            }\n            pcVar9 = (char *)llist_pop(&m->deps);\n            pcVar10 = bb_get_last_path_component_nostrip(pcVar9);\n            pmVar6 = (module_entry *)(*pcVar4)(pcVar10);\n            if ((*(uint *)PTR_option_mask32_0013135c & 0x20) != 0) break;\n            pcVar10 = pmVar6->options;\n            pmVar6->options = (char *)0x0;\n            pbVar7 = (byte *)(*(code *)PTR_xmalloc_open_read_close_00131474)\n                                       (PTR_bdcommands_4__name_4__001311a4 + -0x6a3c,0);\n            if (pbVar7 != (byte *)0x0) {\n              for (; 0x22 < *pbVar7; pbVar7 = pbVar7 + 1) {\n              }\n                    /* WARNING: Could not emulate address calculation at 0x00038a00 */\n                    /* WARNING: Treating indirect jump as call */\n              iVar12 = (*(code *)(&_gp + *(int *)(puVar2 + (uint)*pbVar7 * 4 + -0x6a0c)))();\n              return iVar12;\n            }\n            if (m == pmVar6) {\n              pcVar10 = (char *)(*pcVar5)(pcVar10,*(undefined4 *)\n                                                   (*(int *)PTR_ptr_to_globals_00131330 + 4));\n            }\n            if ((*(uint *)PTR_option_mask32_0013135c & 0x40) == 0) {\n              if ((pmVar6->flags & 1) == 0) {\n                iVar12 = bb_init_module(pcVar9,pcVar10);\n                if (iVar12 == 0x11) {\n                  (*(code *)PTR_free_00132180)(pcVar10);\n                }\n                else {\n                  (*(code *)PTR_free_00132180)();\n                  if (iVar12 != 0) {\n                    pcVar10 = pmVar6->probed_name;\n                    if (pcVar10 == (char *)0x0) {\n                      pcVar10 = pmVar6->modname;\n                    }\n                    pcVar8 = moderror(iVar12);\n                    bb_error_msg(PTR_bdcommands_4__name_4__001311a4 + -0x6a2c,pcVar10,pcVar9,pcVar8)\n                    ;\n                    return iVar12;\n                  }\n                }\n                pmVar6->flags = pmVar6->flags | 1;\n                iVar12 = 0;\n              }\n              else {\n                (*(code *)PTR_free_00132180)(pcVar10);\n                iVar12 = 0;\n              }\n            }\n            else {\n              if (pcVar10 == (char *)0x0) {\n                puVar11 = PTR_bdcommands_4__name_4__001311a4 + -0x6a6c;\n              }\n              else {\n                puVar11 = PTR_bdcommands_4__name_4__001311a4 + -0x6a80;\n              }\n              (*(code *)PTR___printf_chk_00131e4c)\n                        (1,puVar11,PTR_bdcommands_4__name_4__001311a4 + -0x6c8c,\n                         *(int *)PTR_ptr_to_globals_00131330 + 0x8f,pcVar9,pcVar10);\n              (*(code *)PTR_free_00132180)(pcVar10);\n              iVar12 = 0;\n            }\n          }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n            if (m->deps == (llist_t *)0x0) {\n              return iVar12;\n            }\n            pcVar9 = (char *)llist_pop(&m->deps);\n            pcVar10 = bb_get_last_path_component_nostrip(pcVar9);\n            pmVar6 = (module_entry *)(*pcVar4)(pcVar10);\n            if ((*(uint *)PTR_option_mask32_0013135c & 0x20) != 0) break;\n            pcVar10 = pmVar6->options;\n            pmVar6->options = (char *)0x0;\n            pbVar7 = (byte *)(*(code *)PTR_xmalloc_open_read_close_00131474)\n                                       (PTR_bdcommands_4__name_4__001311a4 + -0x6a3c,0);\n            if (pbVar7 != (byte *)0x0) {\n              for (; 0x22 < *pbVar7; pbVar7 = pbVar7 + 1) {\n              }\n                    /* WARNING: Could not emulate address calculation at 0x00038a00 */\n                    /* WARNING: Treating indirect jump as call */\n              iVar12 = (*(code *)(&_gp + *(int *)(puVar2 + (uint)*pbVar7 * 4 + -0x6a0c)))();\n              return iVar12;\n            }\n            if (m == pmVar6) {\n              pcVar10 = (char *)(*pcVar5)(pcVar10,*(undefined4 *)\n                                                   (*(int *)PTR_ptr_to_globals_00131330 + 4));\n            }\n            if ((*(uint *)PTR_option_mask32_0013135c & 0x40) == 0) {\n              if ((pmVar6->flags & 1) == 0) {\n                iVar12 = bb_init_module(pcVar9,pcVar10);\n                if (iVar12 == 0x11) {\n                  (*(code *)PTR_free_00132180)(pcVar10);\n                }\n                else {\n                  (*(code *)PTR_free_00132180)();\n                  if (iVar12 != 0) {\n                    pcVar10 = pmVar6->probed_name;\n                    if (pcVar10 == (char *)0x0) {\n                      pcVar10 = pmVar6->modname;\n                    }\n                    pcVar8 = moderror(iVar12);\n                    bb_error_msg(PTR_bdcommands_4__name_4__001311a4 + -0x6a2c,pcVar10,pcVar9,pcVar8)\n                    ;\n                    return iVar12;\n                  }\n                }\n                pmVar6->flags = pmVar6->flags | 1;\n                iVar12 = 0;\n              }\n              else {\n                (*(code *)PTR_free_00132180)(pcVar10);\n                iVar12 = 0;\n              }\n            }\n            else {\n              if (pcVar10 == (char *)0x0) {\n                puVar11 = PTR_bdcommands_4__name_4__001311a4 + -0x6a6c;\n              }\n              else {\n                puVar11 = PTR_bdcommands_4__name_4__001311a4 + -0x6a80;\n              }\n              (*(code *)PTR___printf_chk_00131e4c)\n                        (1,puVar11,PTR_bdcommands_4__name_4__001311a4 + -0x6c8c,\n                         *(int *)PTR_ptr_to_globals_00131330 + 0x8f,pcVar9,pcVar10);\n              (*(code *)PTR_free_00132180)(pcVar10);\n              iVar12 = 0;\n            }\n          }" { (if_statement "if (m->deps == (llist_t *)0x0) {\n              return iVar12;\n            }" if (parenthesized_expression "(m->deps == (llist_t *)0x0)" ( (binary_expression "m->deps == (llist_t *)0x0" (field_expression "m->deps" identifier -> field_identifier) == (cast_expression "(llist_t *)0x0" ( (type_descriptor "llist_t *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              return iVar12;\n            }" { (return_statement "return iVar12;" return identifier ;) })) (expression_statement "pcVar9 = (char *)llist_pop(&m->deps);" (assignment_expression "pcVar9 = (char *)llist_pop(&m->deps)" identifier = (cast_expression "(char *)llist_pop(&m->deps)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "llist_pop(&m->deps)" identifier (argument_list "(&m->deps)" ( (pointer_expression "&m->deps" & (field_expression "m->deps" identifier -> field_identifier)) ))))) ;) (expression_statement "pcVar10 = bb_get_last_path_component_nostrip(pcVar9);" (assignment_expression "pcVar10 = bb_get_last_path_component_nostrip(pcVar9)" identifier = (call_expression "bb_get_last_path_component_nostrip(pcVar9)" identifier (argument_list "(pcVar9)" ( identifier )))) ;) (expression_statement "pmVar6 = (module_entry *)(*pcVar4)(pcVar10);" (assignment_expression "pmVar6 = (module_entry *)(*pcVar4)(pcVar10)" identifier = (cast_expression "(module_entry *)(*pcVar4)(pcVar10)" ( (type_descriptor "module_entry *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*pcVar4)(pcVar10)" (parenthesized_expression "(*pcVar4)" ( (pointer_expression "*pcVar4" * identifier) )) (argument_list "(pcVar10)" ( identifier ))))) ;) (if_statement "if ((*(uint *)PTR_option_mask32_0013135c & 0x20) != 0) break;" if (parenthesized_expression "((*(uint *)PTR_option_mask32_0013135c & 0x20) != 0)" ( (binary_expression "(*(uint *)PTR_option_mask32_0013135c & 0x20) != 0" (parenthesized_expression "(*(uint *)PTR_option_mask32_0013135c & 0x20)" ( (binary_expression "*(uint *)PTR_option_mask32_0013135c & 0x20" (pointer_expression "*(uint *)PTR_option_mask32_0013135c" * (cast_expression "(uint *)PTR_option_mask32_0013135c" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) & number_literal) )) != number_literal) )) (break_statement "break;" break ;)) (expression_statement "pcVar10 = pmVar6->options;" (assignment_expression "pcVar10 = pmVar6->options" identifier = (field_expression "pmVar6->options" identifier -> field_identifier)) ;) (expression_statement "pmVar6->options = (char *)0x0;" (assignment_expression "pmVar6->options = (char *)0x0" (field_expression "pmVar6->options" identifier -> field_identifier) = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pbVar7 = (byte *)(*(code *)PTR_xmalloc_open_read_close_00131474)\n                                       (PTR_bdcommands_4__name_4__001311a4 + -0x6a3c,0);" (assignment_expression "pbVar7 = (byte *)(*(code *)PTR_xmalloc_open_read_close_00131474)\n                                       (PTR_bdcommands_4__name_4__001311a4 + -0x6a3c,0)" identifier = (cast_expression "(byte *)(*(code *)PTR_xmalloc_open_read_close_00131474)\n                                       (PTR_bdcommands_4__name_4__001311a4 + -0x6a3c,0)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR_xmalloc_open_read_close_00131474)\n                                       (PTR_bdcommands_4__name_4__001311a4 + -0x6a3c,0)" (parenthesized_expression "(*(code *)PTR_xmalloc_open_read_close_00131474)" ( (pointer_expression "*(code *)PTR_xmalloc_open_read_close_00131474" * (cast_expression "(code *)PTR_xmalloc_open_read_close_00131474" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(PTR_bdcommands_4__name_4__001311a4 + -0x6a3c,0)" ( (binary_expression "PTR_bdcommands_4__name_4__001311a4 + -0x6a3c" identifier + number_literal) , number_literal ))))) ;) (if_statement "if (pbVar7 != (byte *)0x0) {\n              for (; 0x22 < *pbVar7; pbVar7 = pbVar7 + 1) {\n              }\n                    /* WARNING: Could not emulate address calculation at 0x00038a00 */\n                    /* WARNING: Treating indirect jump as call */\n              iVar12 = (*(code *)(&_gp + *(int *)(puVar2 + (uint)*pbVar7 * 4 + -0x6a0c)))();\n              return iVar12;\n            }" if (parenthesized_expression "(pbVar7 != (byte *)0x0)" ( (binary_expression "pbVar7 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              for (; 0x22 < *pbVar7; pbVar7 = pbVar7 + 1) {\n              }\n                    /* WARNING: Could not emulate address calculation at 0x00038a00 */\n                    /* WARNING: Treating indirect jump as call */\n              iVar12 = (*(code *)(&_gp + *(int *)(puVar2 + (uint)*pbVar7 * 4 + -0x6a0c)))();\n              return iVar12;\n            }" { (for_statement "for (; 0x22 < *pbVar7; pbVar7 = pbVar7 + 1) {\n              }" for ( ; (binary_expression "0x22 < *pbVar7" number_literal < (pointer_expression "*pbVar7" * identifier)) ; (assignment_expression "pbVar7 = pbVar7 + 1" identifier = (binary_expression "pbVar7 + 1" identifier + number_literal)) ) (compound_statement "{\n              }" { })) comment comment (expression_statement "iVar12 = (*(code *)(&_gp + *(int *)(puVar2 + (uint)*pbVar7 * 4 + -0x6a0c)))();" (assignment_expression "iVar12 = (*(code *)(&_gp + *(int *)(puVar2 + (uint)*pbVar7 * 4 + -0x6a0c)))()" identifier = (call_expression "(*(code *)(&_gp + *(int *)(puVar2 + (uint)*pbVar7 * 4 + -0x6a0c)))()" (parenthesized_expression "(*(code *)(&_gp + *(int *)(puVar2 + (uint)*pbVar7 * 4 + -0x6a0c)))" ( (pointer_expression "*(code *)(&_gp + *(int *)(puVar2 + (uint)*pbVar7 * 4 + -0x6a0c))" * (cast_expression "(code *)(&_gp + *(int *)(puVar2 + (uint)*pbVar7 * 4 + -0x6a0c))" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&_gp + *(int *)(puVar2 + (uint)*pbVar7 * 4 + -0x6a0c))" ( (binary_expression "&_gp + *(int *)(puVar2 + (uint)*pbVar7 * 4 + -0x6a0c)" (pointer_expression "&_gp" & identifier) + (pointer_expression "*(int *)(puVar2 + (uint)*pbVar7 * 4 + -0x6a0c)" * (cast_expression "(int *)(puVar2 + (uint)*pbVar7 * 4 + -0x6a0c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar2 + (uint)*pbVar7 * 4 + -0x6a0c)" ( (binary_expression "puVar2 + (uint)*pbVar7 * 4 + -0x6a0c" (binary_expression "puVar2 + (uint)*pbVar7 * 4" identifier + (binary_expression "(uint)*pbVar7 * 4" (binary_expression "(uint)*pbVar7" (parenthesized_expression "(uint)" ( identifier )) * identifier) * number_literal)) + number_literal) ))))) )))) )) (argument_list "()" ( )))) ;) (return_statement "return iVar12;" return identifier ;) })) (if_statement "if (m == pmVar6) {\n              pcVar10 = (char *)(*pcVar5)(pcVar10,*(undefined4 *)\n                                                   (*(int *)PTR_ptr_to_globals_00131330 + 4));\n            }" if (parenthesized_expression "(m == pmVar6)" ( (binary_expression "m == pmVar6" identifier == identifier) )) (compound_statement "{\n              pcVar10 = (char *)(*pcVar5)(pcVar10,*(undefined4 *)\n                                                   (*(int *)PTR_ptr_to_globals_00131330 + 4));\n            }" { (expression_statement "pcVar10 = (char *)(*pcVar5)(pcVar10,*(undefined4 *)\n                                                   (*(int *)PTR_ptr_to_globals_00131330 + 4));" (assignment_expression "pcVar10 = (char *)(*pcVar5)(pcVar10,*(undefined4 *)\n                                                   (*(int *)PTR_ptr_to_globals_00131330 + 4))" identifier = (cast_expression "(char *)(*pcVar5)(pcVar10,*(undefined4 *)\n                                                   (*(int *)PTR_ptr_to_globals_00131330 + 4))" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(*pcVar5)(pcVar10,*(undefined4 *)\n                                                   (*(int *)PTR_ptr_to_globals_00131330 + 4))" (parenthesized_expression "(*pcVar5)" ( (pointer_expression "*pcVar5" * identifier) )) (argument_list "(pcVar10,*(undefined4 *)\n                                                   (*(int *)PTR_ptr_to_globals_00131330 + 4))" ( identifier , (pointer_expression "*(undefined4 *)\n                                                   (*(int *)PTR_ptr_to_globals_00131330 + 4)" * (cast_expression "(undefined4 *)\n                                                   (*(int *)PTR_ptr_to_globals_00131330 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)PTR_ptr_to_globals_00131330 + 4)" ( (binary_expression "*(int *)PTR_ptr_to_globals_00131330 + 4" (pointer_expression "*(int *)PTR_ptr_to_globals_00131330" * (cast_expression "(int *)PTR_ptr_to_globals_00131330" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) )))) ))))) ;) })) (if_statement "if ((*(uint *)PTR_option_mask32_0013135c & 0x40) == 0) {\n              if ((pmVar6->flags & 1) == 0) {\n                iVar12 = bb_init_module(pcVar9,pcVar10);\n                if (iVar12 == 0x11) {\n                  (*(code *)PTR_free_00132180)(pcVar10);\n                }\n                else {\n                  (*(code *)PTR_free_00132180)();\n                  if (iVar12 != 0) {\n                    pcVar10 = pmVar6->probed_name;\n                    if (pcVar10 == (char *)0x0) {\n                      pcVar10 = pmVar6->modname;\n                    }\n                    pcVar8 = moderror(iVar12);\n                    bb_error_msg(PTR_bdcommands_4__name_4__001311a4 + -0x6a2c,pcVar10,pcVar9,pcVar8)\n                    ;\n                    return iVar12;\n                  }\n                }\n                pmVar6->flags = pmVar6->flags | 1;\n                iVar12 = 0;\n              }\n              else {\n                (*(code *)PTR_free_00132180)(pcVar10);\n                iVar12 = 0;\n              }\n            }\n            else {\n              if (pcVar10 == (char *)0x0) {\n                puVar11 = PTR_bdcommands_4__name_4__001311a4 + -0x6a6c;\n              }\n              else {\n                puVar11 = PTR_bdcommands_4__name_4__001311a4 + -0x6a80;\n              }\n              (*(code *)PTR___printf_chk_00131e4c)\n                        (1,puVar11,PTR_bdcommands_4__name_4__001311a4 + -0x6c8c,\n                         *(int *)PTR_ptr_to_globals_00131330 + 0x8f,pcVar9,pcVar10);\n              (*(code *)PTR_free_00132180)(pcVar10);\n              iVar12 = 0;\n            }" if (parenthesized_expression "((*(uint *)PTR_option_mask32_0013135c & 0x40) == 0)" ( (binary_expression "(*(uint *)PTR_option_mask32_0013135c & 0x40) == 0" (parenthesized_expression "(*(uint *)PTR_option_mask32_0013135c & 0x40)" ( (binary_expression "*(uint *)PTR_option_mask32_0013135c & 0x40" (pointer_expression "*(uint *)PTR_option_mask32_0013135c" * (cast_expression "(uint *)PTR_option_mask32_0013135c" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) & number_literal) )) == number_literal) )) (compound_statement "{\n              if ((pmVar6->flags & 1) == 0) {\n                iVar12 = bb_init_module(pcVar9,pcVar10);\n                if (iVar12 == 0x11) {\n                  (*(code *)PTR_free_00132180)(pcVar10);\n                }\n                else {\n                  (*(code *)PTR_free_00132180)();\n                  if (iVar12 != 0) {\n                    pcVar10 = pmVar6->probed_name;\n                    if (pcVar10 == (char *)0x0) {\n                      pcVar10 = pmVar6->modname;\n                    }\n                    pcVar8 = moderror(iVar12);\n                    bb_error_msg(PTR_bdcommands_4__name_4__001311a4 + -0x6a2c,pcVar10,pcVar9,pcVar8)\n                    ;\n                    return iVar12;\n                  }\n                }\n                pmVar6->flags = pmVar6->flags | 1;\n                iVar12 = 0;\n              }\n              else {\n                (*(code *)PTR_free_00132180)(pcVar10);\n                iVar12 = 0;\n              }\n            }" { (if_statement "if ((pmVar6->flags & 1) == 0) {\n                iVar12 = bb_init_module(pcVar9,pcVar10);\n                if (iVar12 == 0x11) {\n                  (*(code *)PTR_free_00132180)(pcVar10);\n                }\n                else {\n                  (*(code *)PTR_free_00132180)();\n                  if (iVar12 != 0) {\n                    pcVar10 = pmVar6->probed_name;\n                    if (pcVar10 == (char *)0x0) {\n                      pcVar10 = pmVar6->modname;\n                    }\n                    pcVar8 = moderror(iVar12);\n                    bb_error_msg(PTR_bdcommands_4__name_4__001311a4 + -0x6a2c,pcVar10,pcVar9,pcVar8)\n                    ;\n                    return iVar12;\n                  }\n                }\n                pmVar6->flags = pmVar6->flags | 1;\n                iVar12 = 0;\n              }\n              else {\n                (*(code *)PTR_free_00132180)(pcVar10);\n                iVar12 = 0;\n              }" if (parenthesized_expression "((pmVar6->flags & 1) == 0)" ( (binary_expression "(pmVar6->flags & 1) == 0" (parenthesized_expression "(pmVar6->flags & 1)" ( (binary_expression "pmVar6->flags & 1" (field_expression "pmVar6->flags" identifier -> field_identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n                iVar12 = bb_init_module(pcVar9,pcVar10);\n                if (iVar12 == 0x11) {\n                  (*(code *)PTR_free_00132180)(pcVar10);\n                }\n                else {\n                  (*(code *)PTR_free_00132180)();\n                  if (iVar12 != 0) {\n                    pcVar10 = pmVar6->probed_name;\n                    if (pcVar10 == (char *)0x0) {\n                      pcVar10 = pmVar6->modname;\n                    }\n                    pcVar8 = moderror(iVar12);\n                    bb_error_msg(PTR_bdcommands_4__name_4__001311a4 + -0x6a2c,pcVar10,pcVar9,pcVar8)\n                    ;\n                    return iVar12;\n                  }\n                }\n                pmVar6->flags = pmVar6->flags | 1;\n                iVar12 = 0;\n              }" { (expression_statement "iVar12 = bb_init_module(pcVar9,pcVar10);" (assignment_expression "iVar12 = bb_init_module(pcVar9,pcVar10)" identifier = (call_expression "bb_init_module(pcVar9,pcVar10)" identifier (argument_list "(pcVar9,pcVar10)" ( identifier , identifier )))) ;) (if_statement "if (iVar12 == 0x11) {\n                  (*(code *)PTR_free_00132180)(pcVar10);\n                }\n                else {\n                  (*(code *)PTR_free_00132180)();\n                  if (iVar12 != 0) {\n                    pcVar10 = pmVar6->probed_name;\n                    if (pcVar10 == (char *)0x0) {\n                      pcVar10 = pmVar6->modname;\n                    }\n                    pcVar8 = moderror(iVar12);\n                    bb_error_msg(PTR_bdcommands_4__name_4__001311a4 + -0x6a2c,pcVar10,pcVar9,pcVar8)\n                    ;\n                    return iVar12;\n                  }\n                }" if (parenthesized_expression "(iVar12 == 0x11)" ( (binary_expression "iVar12 == 0x11" identifier == number_literal) )) (compound_statement "{\n                  (*(code *)PTR_free_00132180)(pcVar10);\n                }" { (expression_statement "(*(code *)PTR_free_00132180)(pcVar10);" (call_expression "(*(code *)PTR_free_00132180)(pcVar10)" (parenthesized_expression "(*(code *)PTR_free_00132180)" ( (pointer_expression "*(code *)PTR_free_00132180" * (cast_expression "(code *)PTR_free_00132180" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(pcVar10)" ( identifier ))) ;) }) (else_clause "else {\n                  (*(code *)PTR_free_00132180)();\n                  if (iVar12 != 0) {\n                    pcVar10 = pmVar6->probed_name;\n                    if (pcVar10 == (char *)0x0) {\n                      pcVar10 = pmVar6->modname;\n                    }\n                    pcVar8 = moderror(iVar12);\n                    bb_error_msg(PTR_bdcommands_4__name_4__001311a4 + -0x6a2c,pcVar10,pcVar9,pcVar8)\n                    ;\n                    return iVar12;\n                  }\n                }" else (compound_statement "{\n                  (*(code *)PTR_free_00132180)();\n                  if (iVar12 != 0) {\n                    pcVar10 = pmVar6->probed_name;\n                    if (pcVar10 == (char *)0x0) {\n                      pcVar10 = pmVar6->modname;\n                    }\n                    pcVar8 = moderror(iVar12);\n                    bb_error_msg(PTR_bdcommands_4__name_4__001311a4 + -0x6a2c,pcVar10,pcVar9,pcVar8)\n                    ;\n                    return iVar12;\n                  }\n                }" { (expression_statement "(*(code *)PTR_free_00132180)();" (call_expression "(*(code *)PTR_free_00132180)()" (parenthesized_expression "(*(code *)PTR_free_00132180)" ( (pointer_expression "*(code *)PTR_free_00132180" * (cast_expression "(code *)PTR_free_00132180" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (if_statement "if (iVar12 != 0) {\n                    pcVar10 = pmVar6->probed_name;\n                    if (pcVar10 == (char *)0x0) {\n                      pcVar10 = pmVar6->modname;\n                    }\n                    pcVar8 = moderror(iVar12);\n                    bb_error_msg(PTR_bdcommands_4__name_4__001311a4 + -0x6a2c,pcVar10,pcVar9,pcVar8)\n                    ;\n                    return iVar12;\n                  }" if (parenthesized_expression "(iVar12 != 0)" ( (binary_expression "iVar12 != 0" identifier != number_literal) )) (compound_statement "{\n                    pcVar10 = pmVar6->probed_name;\n                    if (pcVar10 == (char *)0x0) {\n                      pcVar10 = pmVar6->modname;\n                    }\n                    pcVar8 = moderror(iVar12);\n                    bb_error_msg(PTR_bdcommands_4__name_4__001311a4 + -0x6a2c,pcVar10,pcVar9,pcVar8)\n                    ;\n                    return iVar12;\n                  }" { (expression_statement "pcVar10 = pmVar6->probed_name;" (assignment_expression "pcVar10 = pmVar6->probed_name" identifier = (field_expression "pmVar6->probed_name" identifier -> field_identifier)) ;) (if_statement "if (pcVar10 == (char *)0x0) {\n                      pcVar10 = pmVar6->modname;\n                    }" if (parenthesized_expression "(pcVar10 == (char *)0x0)" ( (binary_expression "pcVar10 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                      pcVar10 = pmVar6->modname;\n                    }" { (expression_statement "pcVar10 = pmVar6->modname;" (assignment_expression "pcVar10 = pmVar6->modname" identifier = (field_expression "pmVar6->modname" identifier -> field_identifier)) ;) })) (expression_statement "pcVar8 = moderror(iVar12);" (assignment_expression "pcVar8 = moderror(iVar12)" identifier = (call_expression "moderror(iVar12)" identifier (argument_list "(iVar12)" ( identifier )))) ;) (expression_statement "bb_error_msg(PTR_bdcommands_4__name_4__001311a4 + -0x6a2c,pcVar10,pcVar9,pcVar8)\n                    ;" (call_expression "bb_error_msg(PTR_bdcommands_4__name_4__001311a4 + -0x6a2c,pcVar10,pcVar9,pcVar8)" identifier (argument_list "(PTR_bdcommands_4__name_4__001311a4 + -0x6a2c,pcVar10,pcVar9,pcVar8)" ( (binary_expression "PTR_bdcommands_4__name_4__001311a4 + -0x6a2c" identifier + number_literal) , identifier , identifier , identifier ))) ;) (return_statement "return iVar12;" return identifier ;) })) }))) (expression_statement "pmVar6->flags = pmVar6->flags | 1;" (assignment_expression "pmVar6->flags = pmVar6->flags | 1" (field_expression "pmVar6->flags" identifier -> field_identifier) = (binary_expression "pmVar6->flags | 1" (field_expression "pmVar6->flags" identifier -> field_identifier) | number_literal)) ;) (expression_statement "iVar12 = 0;" (assignment_expression "iVar12 = 0" identifier = number_literal) ;) }) (else_clause "else {\n                (*(code *)PTR_free_00132180)(pcVar10);\n                iVar12 = 0;\n              }" else (compound_statement "{\n                (*(code *)PTR_free_00132180)(pcVar10);\n                iVar12 = 0;\n              }" { (expression_statement "(*(code *)PTR_free_00132180)(pcVar10);" (call_expression "(*(code *)PTR_free_00132180)(pcVar10)" (parenthesized_expression "(*(code *)PTR_free_00132180)" ( (pointer_expression "*(code *)PTR_free_00132180" * (cast_expression "(code *)PTR_free_00132180" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(pcVar10)" ( identifier ))) ;) (expression_statement "iVar12 = 0;" (assignment_expression "iVar12 = 0" identifier = number_literal) ;) }))) }) (else_clause "else {\n              if (pcVar10 == (char *)0x0) {\n                puVar11 = PTR_bdcommands_4__name_4__001311a4 + -0x6a6c;\n              }\n              else {\n                puVar11 = PTR_bdcommands_4__name_4__001311a4 + -0x6a80;\n              }\n              (*(code *)PTR___printf_chk_00131e4c)\n                        (1,puVar11,PTR_bdcommands_4__name_4__001311a4 + -0x6c8c,\n                         *(int *)PTR_ptr_to_globals_00131330 + 0x8f,pcVar9,pcVar10);\n              (*(code *)PTR_free_00132180)(pcVar10);\n              iVar12 = 0;\n            }" else (compound_statement "{\n              if (pcVar10 == (char *)0x0) {\n                puVar11 = PTR_bdcommands_4__name_4__001311a4 + -0x6a6c;\n              }\n              else {\n                puVar11 = PTR_bdcommands_4__name_4__001311a4 + -0x6a80;\n              }\n              (*(code *)PTR___printf_chk_00131e4c)\n                        (1,puVar11,PTR_bdcommands_4__name_4__001311a4 + -0x6c8c,\n                         *(int *)PTR_ptr_to_globals_00131330 + 0x8f,pcVar9,pcVar10);\n              (*(code *)PTR_free_00132180)(pcVar10);\n              iVar12 = 0;\n            }" { (if_statement "if (pcVar10 == (char *)0x0) {\n                puVar11 = PTR_bdcommands_4__name_4__001311a4 + -0x6a6c;\n              }\n              else {\n                puVar11 = PTR_bdcommands_4__name_4__001311a4 + -0x6a80;\n              }" if (parenthesized_expression "(pcVar10 == (char *)0x0)" ( (binary_expression "pcVar10 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                puVar11 = PTR_bdcommands_4__name_4__001311a4 + -0x6a6c;\n              }" { (expression_statement "puVar11 = PTR_bdcommands_4__name_4__001311a4 + -0x6a6c;" (assignment_expression "puVar11 = PTR_bdcommands_4__name_4__001311a4 + -0x6a6c" identifier = (binary_expression "PTR_bdcommands_4__name_4__001311a4 + -0x6a6c" identifier + number_literal)) ;) }) (else_clause "else {\n                puVar11 = PTR_bdcommands_4__name_4__001311a4 + -0x6a80;\n              }" else (compound_statement "{\n                puVar11 = PTR_bdcommands_4__name_4__001311a4 + -0x6a80;\n              }" { (expression_statement "puVar11 = PTR_bdcommands_4__name_4__001311a4 + -0x6a80;" (assignment_expression "puVar11 = PTR_bdcommands_4__name_4__001311a4 + -0x6a80" identifier = (binary_expression "PTR_bdcommands_4__name_4__001311a4 + -0x6a80" identifier + number_literal)) ;) }))) (expression_statement "(*(code *)PTR___printf_chk_00131e4c)\n                        (1,puVar11,PTR_bdcommands_4__name_4__001311a4 + -0x6c8c,\n                         *(int *)PTR_ptr_to_globals_00131330 + 0x8f,pcVar9,pcVar10);" (call_expression "(*(code *)PTR___printf_chk_00131e4c)\n                        (1,puVar11,PTR_bdcommands_4__name_4__001311a4 + -0x6c8c,\n                         *(int *)PTR_ptr_to_globals_00131330 + 0x8f,pcVar9,pcVar10)" (parenthesized_expression "(*(code *)PTR___printf_chk_00131e4c)" ( (pointer_expression "*(code *)PTR___printf_chk_00131e4c" * (cast_expression "(code *)PTR___printf_chk_00131e4c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(1,puVar11,PTR_bdcommands_4__name_4__001311a4 + -0x6c8c,\n                         *(int *)PTR_ptr_to_globals_00131330 + 0x8f,pcVar9,pcVar10)" ( number_literal , identifier , (binary_expression "PTR_bdcommands_4__name_4__001311a4 + -0x6c8c" identifier + number_literal) , (binary_expression "*(int *)PTR_ptr_to_globals_00131330 + 0x8f" (pointer_expression "*(int *)PTR_ptr_to_globals_00131330" * (cast_expression "(int *)PTR_ptr_to_globals_00131330" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) , identifier , identifier ))) ;) (expression_statement "(*(code *)PTR_free_00132180)(pcVar10);" (call_expression "(*(code *)PTR_free_00132180)(pcVar10)" (parenthesized_expression "(*(code *)PTR_free_00132180)" ( (pointer_expression "*(code *)PTR_free_00132180" * (cast_expression "(code *)PTR_free_00132180" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(pcVar10)" ( identifier ))) ;) (expression_statement "iVar12 = 0;" (assignment_expression "iVar12 = 0" identifier = number_literal) ;) }))) })) (if_statement "if ((pmVar6->flags & 1) != 0) break;" if (parenthesized_expression "((pmVar6->flags & 1) != 0)" ( (binary_expression "(pmVar6->flags & 1) != 0" (parenthesized_expression "(pmVar6->flags & 1)" ( (binary_expression "pmVar6->flags & 1" (field_expression "pmVar6->flags" identifier -> field_identifier) & number_literal) )) != number_literal) )) (break_statement "break;" break ;)) (expression_statement "bVar1 = false;" (assignment_expression "bVar1 = false" identifier = false) ;) (expression_statement "iVar12 = 0;" (assignment_expression "iVar12 = 0" identifier = number_literal) ;) })) (expression_statement "iVar12 = bb_delete_module(pmVar6->modname,0x400);" (assignment_expression "iVar12 = bb_delete_module(pmVar6->modname,0x400)" identifier = (call_expression "bb_delete_module(pmVar6->modname,0x400)" identifier (argument_list "(pmVar6->modname,0x400)" ( (field_expression "pmVar6->modname" identifier -> field_identifier) , number_literal )))) ;) (if_statement "if (iVar12 != 0) break;" if (parenthesized_expression "(iVar12 != 0)" ( (binary_expression "iVar12 != 0" identifier != number_literal) )) (break_statement "break;" break ;)) (expression_statement "pmVar6->flags = pmVar6->flags & 0xfffffffe;" (assignment_expression "pmVar6->flags = pmVar6->flags & 0xfffffffe" (field_expression "pmVar6->flags" identifier -> field_identifier) = (binary_expression "pmVar6->flags & 0xfffffffe" (field_expression "pmVar6->flags" identifier -> field_identifier) & number_literal)) ;) (expression_statement "bVar1 = false;" (assignment_expression "bVar1 = false" identifier = false) ;) })) }) while (parenthesized_expression "(!bVar1)" ( (unary_expression "!bVar1" ! identifier) )) ;) (expression_statement "pcVar9 = pmVar6->probed_name;" (assignment_expression "pcVar9 = pmVar6->probed_name" identifier = (field_expression "pmVar6->probed_name" identifier -> field_identifier)) ;) (if_statement "if (pcVar9 == (char *)0x0) {\n      pcVar9 = pmVar6->modname;\n    }" if (parenthesized_expression "(pcVar9 == (char *)0x0)" ( (binary_expression "pcVar9 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      pcVar9 = pmVar6->modname;\n    }" { (expression_statement "pcVar9 = pmVar6->modname;" (assignment_expression "pcVar9 = pmVar6->modname" identifier = (field_expression "pmVar6->modname" identifier -> field_identifier)) ;) })) (expression_statement "bb_perror_msg(PTR_bdcommands_4__name_4__001311a4 + -0x6a58,pcVar9);" (call_expression "bb_perror_msg(PTR_bdcommands_4__name_4__001311a4 + -0x6a58,pcVar9)" identifier (argument_list "(PTR_bdcommands_4__name_4__001311a4 + -0x6a58,pcVar9)" ( (binary_expression "PTR_bdcommands_4__name_4__001311a4 + -0x6a58" identifier + number_literal) , identifier ))) ;) }))) (return_statement "return iVar12;" return identifier ;) })))
(translation_unit "int FUN_000387b0(int param_1)\n\n{\n  bool bVar1;\n  undefined4 uVar2;\n  code *pcVar3;\n  code *pcVar4;\n  undefined4 uVar5;\n  int iVar6;\n  byte *pbVar7;\n  undefined *puVar8;\n  int iVar9;\n  undefined *puVar10;\n  int iVar11;\n  \n  if ((*(uint *)(param_1 + 0x14) & 4) == 0) {\n    iVar11 = -2;\n    if ((*(uint *)PTR_DAT_0013135c & 2) == 0) {\n      if ((*(uint *)(param_1 + 0x14) & 0x10) == 0) {\n        puVar8 = PTR_FUN_001311a4 + -0x6aa4;\n      }\n      else {\n        puVar8 = PTR_FUN_001311a4 + -0x6abc;\n      }\n      iVar11 = *(int *)(param_1 + 0x18);\n      if (iVar11 == 0) {\n        iVar11 = *(int *)(param_1 + 8);\n      }\n      FUN_000195a0(puVar8,iVar11);\n      iVar11 = -2;\n    }\n  }\n  else {\n    if ((*(uint *)PTR_DAT_0013135c & 0x20) == 0) {\n      uVar2 = FUN_00018edc(*(undefined4 *)(param_1 + 0xc));\n      *(undefined4 *)(param_1 + 0xc) = uVar2;\n    }\n    puVar8 = PTR_FUN_001311a4;\n    bVar1 = true;\n    iVar11 = 0;\n    pcVar3 = (code *)(PTR_LAB_00131488 + -0x7cf0);\n    pcVar4 = (code *)(PTR_LAB_00131488 + -0x7fc8);\n    do {\n      while( true ) {\n        while( true ) {\n          while( true ) {\n            if (*(int *)(param_1 + 0xc) == 0) {\n              return iVar11;\n            }\n            uVar2 = FUN_00018db0(param_1 + 0xc);\n            uVar5 = FUN_00018b68(uVar2);\n            iVar6 = (*pcVar3)(uVar5);\n            if ((*(uint *)PTR_DAT_0013135c & 0x20) != 0) break;\n            iVar11 = *(int *)(iVar6 + 0x1c);\n            *(undefined4 *)(iVar6 + 0x1c) = 0;\n            pbVar7 = (byte *)(*(code *)PTR_FUN_00131474)(PTR_FUN_001311a4 + -0x6a3c,0);\n            if (pbVar7 != (byte *)0x0) {\n              for (; 0x22 < *pbVar7; pbVar7 = pbVar7 + 1) {\n              }\n                    \n                    \n              iVar11 = (*(code *)(&_gp_1 + *(int *)(puVar8 + (uint)*pbVar7 * 4 + -0x6a0c)))();\n              return iVar11;\n            }\n            if (param_1 == iVar6) {\n              iVar11 = (*pcVar4)(iVar11,*(undefined4 *)(*(int *)PTR_DAT_00131330 + 4));\n            }\n            if ((*(uint *)PTR_DAT_0013135c & 0x40) == 0) {\n              if ((*(uint *)(iVar6 + 0x14) & 1) == 0) {\n                iVar9 = FUN_00039834(uVar2,iVar11);\n                if (iVar9 == 0x11) {\n                  (*(code *)PTR_free_00132180)(iVar11);\n                }\n                else {\n                  (*(code *)PTR_free_00132180)();\n                  if (iVar9 != 0) {\n                    iVar11 = *(int *)(iVar6 + 0x18);\n                    if (iVar11 == 0) {\n                      iVar11 = *(int *)(iVar6 + 8);\n                    }\n                    uVar5 = FUN_000399f8(iVar9);\n                    FUN_000195a0(PTR_FUN_001311a4 + -0x6a2c,iVar11,uVar2,uVar5);\n                    return iVar9;\n                  }\n                }\n                *(uint *)(iVar6 + 0x14) = *(uint *)(iVar6 + 0x14) | 1;\n                iVar11 = 0;\n              }\n              else {\n                (*(code *)PTR_free_00132180)(iVar11);\n                iVar11 = 0;\n              }\n            }\n            else {\n              if (iVar11 == 0) {\n                puVar10 = PTR_FUN_001311a4 + -0x6a6c;\n              }\n              else {\n                puVar10 = PTR_FUN_001311a4 + -0x6a80;\n              }\n              (*(code *)PTR___printf_chk_00131e4c)\n                        (1,puVar10,PTR_FUN_001311a4 + -0x6c8c,*(int *)PTR_DAT_00131330 + 0x8f,uVar2,\n                         iVar11);\n              (*(code *)PTR_free_00132180)(iVar11);\n              iVar11 = 0;\n            }\n          }\n          if ((*(uint *)(iVar6 + 0x14) & 1) != 0) break;\n          bVar1 = false;\n          iVar11 = 0;\n        }\n        iVar11 = FUN_000399a0(*(undefined4 *)(iVar6 + 8),0x400);\n        if (iVar11 != 0) break;\n        *(uint *)(iVar6 + 0x14) = *(uint *)(iVar6 + 0x14) & 0xfffffffe;\n        bVar1 = false;\n      }\n    } while (!bVar1);\n    iVar9 = *(int *)(iVar6 + 0x18);\n    if (iVar9 == 0) {\n      iVar9 = *(int *)(iVar6 + 8);\n    }\n    FUN_00018f7c(PTR_FUN_001311a4 + -0x6a58,iVar9);\n  }\n  return iVar11;\n}\n\n" (function_definition "int FUN_000387b0(int param_1)\n\n{\n  bool bVar1;\n  undefined4 uVar2;\n  code *pcVar3;\n  code *pcVar4;\n  undefined4 uVar5;\n  int iVar6;\n  byte *pbVar7;\n  undefined *puVar8;\n  int iVar9;\n  undefined *puVar10;\n  int iVar11;\n  \n  if ((*(uint *)(param_1 + 0x14) & 4) == 0) {\n    iVar11 = -2;\n    if ((*(uint *)PTR_DAT_0013135c & 2) == 0) {\n      if ((*(uint *)(param_1 + 0x14) & 0x10) == 0) {\n        puVar8 = PTR_FUN_001311a4 + -0x6aa4;\n      }\n      else {\n        puVar8 = PTR_FUN_001311a4 + -0x6abc;\n      }\n      iVar11 = *(int *)(param_1 + 0x18);\n      if (iVar11 == 0) {\n        iVar11 = *(int *)(param_1 + 8);\n      }\n      FUN_000195a0(puVar8,iVar11);\n      iVar11 = -2;\n    }\n  }\n  else {\n    if ((*(uint *)PTR_DAT_0013135c & 0x20) == 0) {\n      uVar2 = FUN_00018edc(*(undefined4 *)(param_1 + 0xc));\n      *(undefined4 *)(param_1 + 0xc) = uVar2;\n    }\n    puVar8 = PTR_FUN_001311a4;\n    bVar1 = true;\n    iVar11 = 0;\n    pcVar3 = (code *)(PTR_LAB_00131488 + -0x7cf0);\n    pcVar4 = (code *)(PTR_LAB_00131488 + -0x7fc8);\n    do {\n      while( true ) {\n        while( true ) {\n          while( true ) {\n            if (*(int *)(param_1 + 0xc) == 0) {\n              return iVar11;\n            }\n            uVar2 = FUN_00018db0(param_1 + 0xc);\n            uVar5 = FUN_00018b68(uVar2);\n            iVar6 = (*pcVar3)(uVar5);\n            if ((*(uint *)PTR_DAT_0013135c & 0x20) != 0) break;\n            iVar11 = *(int *)(iVar6 + 0x1c);\n            *(undefined4 *)(iVar6 + 0x1c) = 0;\n            pbVar7 = (byte *)(*(code *)PTR_FUN_00131474)(PTR_FUN_001311a4 + -0x6a3c,0);\n            if (pbVar7 != (byte *)0x0) {\n              for (; 0x22 < *pbVar7; pbVar7 = pbVar7 + 1) {\n              }\n                    \n                    \n              iVar11 = (*(code *)(&_gp_1 + *(int *)(puVar8 + (uint)*pbVar7 * 4 + -0x6a0c)))();\n              return iVar11;\n            }\n            if (param_1 == iVar6) {\n              iVar11 = (*pcVar4)(iVar11,*(undefined4 *)(*(int *)PTR_DAT_00131330 + 4));\n            }\n            if ((*(uint *)PTR_DAT_0013135c & 0x40) == 0) {\n              if ((*(uint *)(iVar6 + 0x14) & 1) == 0) {\n                iVar9 = FUN_00039834(uVar2,iVar11);\n                if (iVar9 == 0x11) {\n                  (*(code *)PTR_free_00132180)(iVar11);\n                }\n                else {\n                  (*(code *)PTR_free_00132180)();\n                  if (iVar9 != 0) {\n                    iVar11 = *(int *)(iVar6 + 0x18);\n                    if (iVar11 == 0) {\n                      iVar11 = *(int *)(iVar6 + 8);\n                    }\n                    uVar5 = FUN_000399f8(iVar9);\n                    FUN_000195a0(PTR_FUN_001311a4 + -0x6a2c,iVar11,uVar2,uVar5);\n                    return iVar9;\n                  }\n                }\n                *(uint *)(iVar6 + 0x14) = *(uint *)(iVar6 + 0x14) | 1;\n                iVar11 = 0;\n              }\n              else {\n                (*(code *)PTR_free_00132180)(iVar11);\n                iVar11 = 0;\n              }\n            }\n            else {\n              if (iVar11 == 0) {\n                puVar10 = PTR_FUN_001311a4 + -0x6a6c;\n              }\n              else {\n                puVar10 = PTR_FUN_001311a4 + -0x6a80;\n              }\n              (*(code *)PTR___printf_chk_00131e4c)\n                        (1,puVar10,PTR_FUN_001311a4 + -0x6c8c,*(int *)PTR_DAT_00131330 + 0x8f,uVar2,\n                         iVar11);\n              (*(code *)PTR_free_00132180)(iVar11);\n              iVar11 = 0;\n            }\n          }\n          if ((*(uint *)(iVar6 + 0x14) & 1) != 0) break;\n          bVar1 = false;\n          iVar11 = 0;\n        }\n        iVar11 = FUN_000399a0(*(undefined4 *)(iVar6 + 8),0x400);\n        if (iVar11 != 0) break;\n        *(uint *)(iVar6 + 0x14) = *(uint *)(iVar6 + 0x14) & 0xfffffffe;\n        bVar1 = false;\n      }\n    } while (!bVar1);\n    iVar9 = *(int *)(iVar6 + 0x18);\n    if (iVar9 == 0) {\n      iVar9 = *(int *)(iVar6 + 8);\n    }\n    FUN_00018f7c(PTR_FUN_001311a4 + -0x6a58,iVar9);\n  }\n  return iVar11;\n}" primitive_type (function_declarator "FUN_000387b0(int param_1)" identifier (parameter_list "(int param_1)" ( (parameter_declaration "int param_1" primitive_type identifier) ))) (compound_statement "{\n  bool bVar1;\n  undefined4 uVar2;\n  code *pcVar3;\n  code *pcVar4;\n  undefined4 uVar5;\n  int iVar6;\n  byte *pbVar7;\n  undefined *puVar8;\n  int iVar9;\n  undefined *puVar10;\n  int iVar11;\n  \n  if ((*(uint *)(param_1 + 0x14) & 4) == 0) {\n    iVar11 = -2;\n    if ((*(uint *)PTR_DAT_0013135c & 2) == 0) {\n      if ((*(uint *)(param_1 + 0x14) & 0x10) == 0) {\n        puVar8 = PTR_FUN_001311a4 + -0x6aa4;\n      }\n      else {\n        puVar8 = PTR_FUN_001311a4 + -0x6abc;\n      }\n      iVar11 = *(int *)(param_1 + 0x18);\n      if (iVar11 == 0) {\n        iVar11 = *(int *)(param_1 + 8);\n      }\n      FUN_000195a0(puVar8,iVar11);\n      iVar11 = -2;\n    }\n  }\n  else {\n    if ((*(uint *)PTR_DAT_0013135c & 0x20) == 0) {\n      uVar2 = FUN_00018edc(*(undefined4 *)(param_1 + 0xc));\n      *(undefined4 *)(param_1 + 0xc) = uVar2;\n    }\n    puVar8 = PTR_FUN_001311a4;\n    bVar1 = true;\n    iVar11 = 0;\n    pcVar3 = (code *)(PTR_LAB_00131488 + -0x7cf0);\n    pcVar4 = (code *)(PTR_LAB_00131488 + -0x7fc8);\n    do {\n      while( true ) {\n        while( true ) {\n          while( true ) {\n            if (*(int *)(param_1 + 0xc) == 0) {\n              return iVar11;\n            }\n            uVar2 = FUN_00018db0(param_1 + 0xc);\n            uVar5 = FUN_00018b68(uVar2);\n            iVar6 = (*pcVar3)(uVar5);\n            if ((*(uint *)PTR_DAT_0013135c & 0x20) != 0) break;\n            iVar11 = *(int *)(iVar6 + 0x1c);\n            *(undefined4 *)(iVar6 + 0x1c) = 0;\n            pbVar7 = (byte *)(*(code *)PTR_FUN_00131474)(PTR_FUN_001311a4 + -0x6a3c,0);\n            if (pbVar7 != (byte *)0x0) {\n              for (; 0x22 < *pbVar7; pbVar7 = pbVar7 + 1) {\n              }\n                    \n                    \n              iVar11 = (*(code *)(&_gp_1 + *(int *)(puVar8 + (uint)*pbVar7 * 4 + -0x6a0c)))();\n              return iVar11;\n            }\n            if (param_1 == iVar6) {\n              iVar11 = (*pcVar4)(iVar11,*(undefined4 *)(*(int *)PTR_DAT_00131330 + 4));\n            }\n            if ((*(uint *)PTR_DAT_0013135c & 0x40) == 0) {\n              if ((*(uint *)(iVar6 + 0x14) & 1) == 0) {\n                iVar9 = FUN_00039834(uVar2,iVar11);\n                if (iVar9 == 0x11) {\n                  (*(code *)PTR_free_00132180)(iVar11);\n                }\n                else {\n                  (*(code *)PTR_free_00132180)();\n                  if (iVar9 != 0) {\n                    iVar11 = *(int *)(iVar6 + 0x18);\n                    if (iVar11 == 0) {\n                      iVar11 = *(int *)(iVar6 + 8);\n                    }\n                    uVar5 = FUN_000399f8(iVar9);\n                    FUN_000195a0(PTR_FUN_001311a4 + -0x6a2c,iVar11,uVar2,uVar5);\n                    return iVar9;\n                  }\n                }\n                *(uint *)(iVar6 + 0x14) = *(uint *)(iVar6 + 0x14) | 1;\n                iVar11 = 0;\n              }\n              else {\n                (*(code *)PTR_free_00132180)(iVar11);\n                iVar11 = 0;\n              }\n            }\n            else {\n              if (iVar11 == 0) {\n                puVar10 = PTR_FUN_001311a4 + -0x6a6c;\n              }\n              else {\n                puVar10 = PTR_FUN_001311a4 + -0x6a80;\n              }\n              (*(code *)PTR___printf_chk_00131e4c)\n                        (1,puVar10,PTR_FUN_001311a4 + -0x6c8c,*(int *)PTR_DAT_00131330 + 0x8f,uVar2,\n                         iVar11);\n              (*(code *)PTR_free_00132180)(iVar11);\n              iVar11 = 0;\n            }\n          }\n          if ((*(uint *)(iVar6 + 0x14) & 1) != 0) break;\n          bVar1 = false;\n          iVar11 = 0;\n        }\n        iVar11 = FUN_000399a0(*(undefined4 *)(iVar6 + 8),0x400);\n        if (iVar11 != 0) break;\n        *(uint *)(iVar6 + 0x14) = *(uint *)(iVar6 + 0x14) & 0xfffffffe;\n        bVar1 = false;\n      }\n    } while (!bVar1);\n    iVar9 = *(int *)(iVar6 + 0x18);\n    if (iVar9 == 0) {\n      iVar9 = *(int *)(iVar6 + 8);\n    }\n    FUN_00018f7c(PTR_FUN_001311a4 + -0x6a58,iVar9);\n  }\n  return iVar11;\n}" { (declaration "bool bVar1;" primitive_type identifier ;) (declaration "undefined4 uVar2;" type_identifier identifier ;) (declaration "code *pcVar3;" type_identifier (pointer_declarator "*pcVar3" * identifier) ;) (declaration "code *pcVar4;" type_identifier (pointer_declarator "*pcVar4" * identifier) ;) (declaration "undefined4 uVar5;" type_identifier identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "byte *pbVar7;" type_identifier (pointer_declarator "*pbVar7" * identifier) ;) (declaration "undefined *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "undefined *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (declaration "int iVar11;" primitive_type identifier ;) (if_statement "if ((*(uint *)(param_1 + 0x14) & 4) == 0) {\n    iVar11 = -2;\n    if ((*(uint *)PTR_DAT_0013135c & 2) == 0) {\n      if ((*(uint *)(param_1 + 0x14) & 0x10) == 0) {\n        puVar8 = PTR_FUN_001311a4 + -0x6aa4;\n      }\n      else {\n        puVar8 = PTR_FUN_001311a4 + -0x6abc;\n      }\n      iVar11 = *(int *)(param_1 + 0x18);\n      if (iVar11 == 0) {\n        iVar11 = *(int *)(param_1 + 8);\n      }\n      FUN_000195a0(puVar8,iVar11);\n      iVar11 = -2;\n    }\n  }\n  else {\n    if ((*(uint *)PTR_DAT_0013135c & 0x20) == 0) {\n      uVar2 = FUN_00018edc(*(undefined4 *)(param_1 + 0xc));\n      *(undefined4 *)(param_1 + 0xc) = uVar2;\n    }\n    puVar8 = PTR_FUN_001311a4;\n    bVar1 = true;\n    iVar11 = 0;\n    pcVar3 = (code *)(PTR_LAB_00131488 + -0x7cf0);\n    pcVar4 = (code *)(PTR_LAB_00131488 + -0x7fc8);\n    do {\n      while( true ) {\n        while( true ) {\n          while( true ) {\n            if (*(int *)(param_1 + 0xc) == 0) {\n              return iVar11;\n            }\n            uVar2 = FUN_00018db0(param_1 + 0xc);\n            uVar5 = FUN_00018b68(uVar2);\n            iVar6 = (*pcVar3)(uVar5);\n            if ((*(uint *)PTR_DAT_0013135c & 0x20) != 0) break;\n            iVar11 = *(int *)(iVar6 + 0x1c);\n            *(undefined4 *)(iVar6 + 0x1c) = 0;\n            pbVar7 = (byte *)(*(code *)PTR_FUN_00131474)(PTR_FUN_001311a4 + -0x6a3c,0);\n            if (pbVar7 != (byte *)0x0) {\n              for (; 0x22 < *pbVar7; pbVar7 = pbVar7 + 1) {\n              }\n                    \n                    \n              iVar11 = (*(code *)(&_gp_1 + *(int *)(puVar8 + (uint)*pbVar7 * 4 + -0x6a0c)))();\n              return iVar11;\n            }\n            if (param_1 == iVar6) {\n              iVar11 = (*pcVar4)(iVar11,*(undefined4 *)(*(int *)PTR_DAT_00131330 + 4));\n            }\n            if ((*(uint *)PTR_DAT_0013135c & 0x40) == 0) {\n              if ((*(uint *)(iVar6 + 0x14) & 1) == 0) {\n                iVar9 = FUN_00039834(uVar2,iVar11);\n                if (iVar9 == 0x11) {\n                  (*(code *)PTR_free_00132180)(iVar11);\n                }\n                else {\n                  (*(code *)PTR_free_00132180)();\n                  if (iVar9 != 0) {\n                    iVar11 = *(int *)(iVar6 + 0x18);\n                    if (iVar11 == 0) {\n                      iVar11 = *(int *)(iVar6 + 8);\n                    }\n                    uVar5 = FUN_000399f8(iVar9);\n                    FUN_000195a0(PTR_FUN_001311a4 + -0x6a2c,iVar11,uVar2,uVar5);\n                    return iVar9;\n                  }\n                }\n                *(uint *)(iVar6 + 0x14) = *(uint *)(iVar6 + 0x14) | 1;\n                iVar11 = 0;\n              }\n              else {\n                (*(code *)PTR_free_00132180)(iVar11);\n                iVar11 = 0;\n              }\n            }\n            else {\n              if (iVar11 == 0) {\n                puVar10 = PTR_FUN_001311a4 + -0x6a6c;\n              }\n              else {\n                puVar10 = PTR_FUN_001311a4 + -0x6a80;\n              }\n              (*(code *)PTR___printf_chk_00131e4c)\n                        (1,puVar10,PTR_FUN_001311a4 + -0x6c8c,*(int *)PTR_DAT_00131330 + 0x8f,uVar2,\n                         iVar11);\n              (*(code *)PTR_free_00132180)(iVar11);\n              iVar11 = 0;\n            }\n          }\n          if ((*(uint *)(iVar6 + 0x14) & 1) != 0) break;\n          bVar1 = false;\n          iVar11 = 0;\n        }\n        iVar11 = FUN_000399a0(*(undefined4 *)(iVar6 + 8),0x400);\n        if (iVar11 != 0) break;\n        *(uint *)(iVar6 + 0x14) = *(uint *)(iVar6 + 0x14) & 0xfffffffe;\n        bVar1 = false;\n      }\n    } while (!bVar1);\n    iVar9 = *(int *)(iVar6 + 0x18);\n    if (iVar9 == 0) {\n      iVar9 = *(int *)(iVar6 + 8);\n    }\n    FUN_00018f7c(PTR_FUN_001311a4 + -0x6a58,iVar9);\n  }" if (parenthesized_expression "((*(uint *)(param_1 + 0x14) & 4) == 0)" ( (binary_expression "(*(uint *)(param_1 + 0x14) & 4) == 0" (parenthesized_expression "(*(uint *)(param_1 + 0x14) & 4)" ( (binary_expression "*(uint *)(param_1 + 0x14) & 4" (pointer_expression "*(uint *)(param_1 + 0x14)" * (cast_expression "(uint *)(param_1 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n    iVar11 = -2;\n    if ((*(uint *)PTR_DAT_0013135c & 2) == 0) {\n      if ((*(uint *)(param_1 + 0x14) & 0x10) == 0) {\n        puVar8 = PTR_FUN_001311a4 + -0x6aa4;\n      }\n      else {\n        puVar8 = PTR_FUN_001311a4 + -0x6abc;\n      }\n      iVar11 = *(int *)(param_1 + 0x18);\n      if (iVar11 == 0) {\n        iVar11 = *(int *)(param_1 + 8);\n      }\n      FUN_000195a0(puVar8,iVar11);\n      iVar11 = -2;\n    }\n  }" { (expression_statement "iVar11 = -2;" (assignment_expression "iVar11 = -2" identifier = number_literal) ;) (if_statement "if ((*(uint *)PTR_DAT_0013135c & 2) == 0) {\n      if ((*(uint *)(param_1 + 0x14) & 0x10) == 0) {\n        puVar8 = PTR_FUN_001311a4 + -0x6aa4;\n      }\n      else {\n        puVar8 = PTR_FUN_001311a4 + -0x6abc;\n      }\n      iVar11 = *(int *)(param_1 + 0x18);\n      if (iVar11 == 0) {\n        iVar11 = *(int *)(param_1 + 8);\n      }\n      FUN_000195a0(puVar8,iVar11);\n      iVar11 = -2;\n    }" if (parenthesized_expression "((*(uint *)PTR_DAT_0013135c & 2) == 0)" ( (binary_expression "(*(uint *)PTR_DAT_0013135c & 2) == 0" (parenthesized_expression "(*(uint *)PTR_DAT_0013135c & 2)" ( (binary_expression "*(uint *)PTR_DAT_0013135c & 2" (pointer_expression "*(uint *)PTR_DAT_0013135c" * (cast_expression "(uint *)PTR_DAT_0013135c" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) & number_literal) )) == number_literal) )) (compound_statement "{\n      if ((*(uint *)(param_1 + 0x14) & 0x10) == 0) {\n        puVar8 = PTR_FUN_001311a4 + -0x6aa4;\n      }\n      else {\n        puVar8 = PTR_FUN_001311a4 + -0x6abc;\n      }\n      iVar11 = *(int *)(param_1 + 0x18);\n      if (iVar11 == 0) {\n        iVar11 = *(int *)(param_1 + 8);\n      }\n      FUN_000195a0(puVar8,iVar11);\n      iVar11 = -2;\n    }" { (if_statement "if ((*(uint *)(param_1 + 0x14) & 0x10) == 0) {\n        puVar8 = PTR_FUN_001311a4 + -0x6aa4;\n      }\n      else {\n        puVar8 = PTR_FUN_001311a4 + -0x6abc;\n      }" if (parenthesized_expression "((*(uint *)(param_1 + 0x14) & 0x10) == 0)" ( (binary_expression "(*(uint *)(param_1 + 0x14) & 0x10) == 0" (parenthesized_expression "(*(uint *)(param_1 + 0x14) & 0x10)" ( (binary_expression "*(uint *)(param_1 + 0x14) & 0x10" (pointer_expression "*(uint *)(param_1 + 0x14)" * (cast_expression "(uint *)(param_1 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x14)" ( (binary_expression "param_1 + 0x14" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n        puVar8 = PTR_FUN_001311a4 + -0x6aa4;\n      }" { (expression_statement "puVar8 = PTR_FUN_001311a4 + -0x6aa4;" (assignment_expression "puVar8 = PTR_FUN_001311a4 + -0x6aa4" identifier = (binary_expression "PTR_FUN_001311a4 + -0x6aa4" identifier + number_literal)) ;) }) (else_clause "else {\n        puVar8 = PTR_FUN_001311a4 + -0x6abc;\n      }" else (compound_statement "{\n        puVar8 = PTR_FUN_001311a4 + -0x6abc;\n      }" { (expression_statement "puVar8 = PTR_FUN_001311a4 + -0x6abc;" (assignment_expression "puVar8 = PTR_FUN_001311a4 + -0x6abc" identifier = (binary_expression "PTR_FUN_001311a4 + -0x6abc" identifier + number_literal)) ;) }))) (expression_statement "iVar11 = *(int *)(param_1 + 0x18);" (assignment_expression "iVar11 = *(int *)(param_1 + 0x18)" identifier = (pointer_expression "*(int *)(param_1 + 0x18)" * (cast_expression "(int *)(param_1 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) ))))) ;) (if_statement "if (iVar11 == 0) {\n        iVar11 = *(int *)(param_1 + 8);\n      }" if (parenthesized_expression "(iVar11 == 0)" ( (binary_expression "iVar11 == 0" identifier == number_literal) )) (compound_statement "{\n        iVar11 = *(int *)(param_1 + 8);\n      }" { (expression_statement "iVar11 = *(int *)(param_1 + 8);" (assignment_expression "iVar11 = *(int *)(param_1 + 8)" identifier = (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) ))))) ;) })) (expression_statement "FUN_000195a0(puVar8,iVar11);" (call_expression "FUN_000195a0(puVar8,iVar11)" identifier (argument_list "(puVar8,iVar11)" ( identifier , identifier ))) ;) (expression_statement "iVar11 = -2;" (assignment_expression "iVar11 = -2" identifier = number_literal) ;) })) }) (else_clause "else {\n    if ((*(uint *)PTR_DAT_0013135c & 0x20) == 0) {\n      uVar2 = FUN_00018edc(*(undefined4 *)(param_1 + 0xc));\n      *(undefined4 *)(param_1 + 0xc) = uVar2;\n    }\n    puVar8 = PTR_FUN_001311a4;\n    bVar1 = true;\n    iVar11 = 0;\n    pcVar3 = (code *)(PTR_LAB_00131488 + -0x7cf0);\n    pcVar4 = (code *)(PTR_LAB_00131488 + -0x7fc8);\n    do {\n      while( true ) {\n        while( true ) {\n          while( true ) {\n            if (*(int *)(param_1 + 0xc) == 0) {\n              return iVar11;\n            }\n            uVar2 = FUN_00018db0(param_1 + 0xc);\n            uVar5 = FUN_00018b68(uVar2);\n            iVar6 = (*pcVar3)(uVar5);\n            if ((*(uint *)PTR_DAT_0013135c & 0x20) != 0) break;\n            iVar11 = *(int *)(iVar6 + 0x1c);\n            *(undefined4 *)(iVar6 + 0x1c) = 0;\n            pbVar7 = (byte *)(*(code *)PTR_FUN_00131474)(PTR_FUN_001311a4 + -0x6a3c,0);\n            if (pbVar7 != (byte *)0x0) {\n              for (; 0x22 < *pbVar7; pbVar7 = pbVar7 + 1) {\n              }\n                    \n                    \n              iVar11 = (*(code *)(&_gp_1 + *(int *)(puVar8 + (uint)*pbVar7 * 4 + -0x6a0c)))();\n              return iVar11;\n            }\n            if (param_1 == iVar6) {\n              iVar11 = (*pcVar4)(iVar11,*(undefined4 *)(*(int *)PTR_DAT_00131330 + 4));\n            }\n            if ((*(uint *)PTR_DAT_0013135c & 0x40) == 0) {\n              if ((*(uint *)(iVar6 + 0x14) & 1) == 0) {\n                iVar9 = FUN_00039834(uVar2,iVar11);\n                if (iVar9 == 0x11) {\n                  (*(code *)PTR_free_00132180)(iVar11);\n                }\n                else {\n                  (*(code *)PTR_free_00132180)();\n                  if (iVar9 != 0) {\n                    iVar11 = *(int *)(iVar6 + 0x18);\n                    if (iVar11 == 0) {\n                      iVar11 = *(int *)(iVar6 + 8);\n                    }\n                    uVar5 = FUN_000399f8(iVar9);\n                    FUN_000195a0(PTR_FUN_001311a4 + -0x6a2c,iVar11,uVar2,uVar5);\n                    return iVar9;\n                  }\n                }\n                *(uint *)(iVar6 + 0x14) = *(uint *)(iVar6 + 0x14) | 1;\n                iVar11 = 0;\n              }\n              else {\n                (*(code *)PTR_free_00132180)(iVar11);\n                iVar11 = 0;\n              }\n            }\n            else {\n              if (iVar11 == 0) {\n                puVar10 = PTR_FUN_001311a4 + -0x6a6c;\n              }\n              else {\n                puVar10 = PTR_FUN_001311a4 + -0x6a80;\n              }\n              (*(code *)PTR___printf_chk_00131e4c)\n                        (1,puVar10,PTR_FUN_001311a4 + -0x6c8c,*(int *)PTR_DAT_00131330 + 0x8f,uVar2,\n                         iVar11);\n              (*(code *)PTR_free_00132180)(iVar11);\n              iVar11 = 0;\n            }\n          }\n          if ((*(uint *)(iVar6 + 0x14) & 1) != 0) break;\n          bVar1 = false;\n          iVar11 = 0;\n        }\n        iVar11 = FUN_000399a0(*(undefined4 *)(iVar6 + 8),0x400);\n        if (iVar11 != 0) break;\n        *(uint *)(iVar6 + 0x14) = *(uint *)(iVar6 + 0x14) & 0xfffffffe;\n        bVar1 = false;\n      }\n    } while (!bVar1);\n    iVar9 = *(int *)(iVar6 + 0x18);\n    if (iVar9 == 0) {\n      iVar9 = *(int *)(iVar6 + 8);\n    }\n    FUN_00018f7c(PTR_FUN_001311a4 + -0x6a58,iVar9);\n  }" else (compound_statement "{\n    if ((*(uint *)PTR_DAT_0013135c & 0x20) == 0) {\n      uVar2 = FUN_00018edc(*(undefined4 *)(param_1 + 0xc));\n      *(undefined4 *)(param_1 + 0xc) = uVar2;\n    }\n    puVar8 = PTR_FUN_001311a4;\n    bVar1 = true;\n    iVar11 = 0;\n    pcVar3 = (code *)(PTR_LAB_00131488 + -0x7cf0);\n    pcVar4 = (code *)(PTR_LAB_00131488 + -0x7fc8);\n    do {\n      while( true ) {\n        while( true ) {\n          while( true ) {\n            if (*(int *)(param_1 + 0xc) == 0) {\n              return iVar11;\n            }\n            uVar2 = FUN_00018db0(param_1 + 0xc);\n            uVar5 = FUN_00018b68(uVar2);\n            iVar6 = (*pcVar3)(uVar5);\n            if ((*(uint *)PTR_DAT_0013135c & 0x20) != 0) break;\n            iVar11 = *(int *)(iVar6 + 0x1c);\n            *(undefined4 *)(iVar6 + 0x1c) = 0;\n            pbVar7 = (byte *)(*(code *)PTR_FUN_00131474)(PTR_FUN_001311a4 + -0x6a3c,0);\n            if (pbVar7 != (byte *)0x0) {\n              for (; 0x22 < *pbVar7; pbVar7 = pbVar7 + 1) {\n              }\n                    \n                    \n              iVar11 = (*(code *)(&_gp_1 + *(int *)(puVar8 + (uint)*pbVar7 * 4 + -0x6a0c)))();\n              return iVar11;\n            }\n            if (param_1 == iVar6) {\n              iVar11 = (*pcVar4)(iVar11,*(undefined4 *)(*(int *)PTR_DAT_00131330 + 4));\n            }\n            if ((*(uint *)PTR_DAT_0013135c & 0x40) == 0) {\n              if ((*(uint *)(iVar6 + 0x14) & 1) == 0) {\n                iVar9 = FUN_00039834(uVar2,iVar11);\n                if (iVar9 == 0x11) {\n                  (*(code *)PTR_free_00132180)(iVar11);\n                }\n                else {\n                  (*(code *)PTR_free_00132180)();\n                  if (iVar9 != 0) {\n                    iVar11 = *(int *)(iVar6 + 0x18);\n                    if (iVar11 == 0) {\n                      iVar11 = *(int *)(iVar6 + 8);\n                    }\n                    uVar5 = FUN_000399f8(iVar9);\n                    FUN_000195a0(PTR_FUN_001311a4 + -0x6a2c,iVar11,uVar2,uVar5);\n                    return iVar9;\n                  }\n                }\n                *(uint *)(iVar6 + 0x14) = *(uint *)(iVar6 + 0x14) | 1;\n                iVar11 = 0;\n              }\n              else {\n                (*(code *)PTR_free_00132180)(iVar11);\n                iVar11 = 0;\n              }\n            }\n            else {\n              if (iVar11 == 0) {\n                puVar10 = PTR_FUN_001311a4 + -0x6a6c;\n              }\n              else {\n                puVar10 = PTR_FUN_001311a4 + -0x6a80;\n              }\n              (*(code *)PTR___printf_chk_00131e4c)\n                        (1,puVar10,PTR_FUN_001311a4 + -0x6c8c,*(int *)PTR_DAT_00131330 + 0x8f,uVar2,\n                         iVar11);\n              (*(code *)PTR_free_00132180)(iVar11);\n              iVar11 = 0;\n            }\n          }\n          if ((*(uint *)(iVar6 + 0x14) & 1) != 0) break;\n          bVar1 = false;\n          iVar11 = 0;\n        }\n        iVar11 = FUN_000399a0(*(undefined4 *)(iVar6 + 8),0x400);\n        if (iVar11 != 0) break;\n        *(uint *)(iVar6 + 0x14) = *(uint *)(iVar6 + 0x14) & 0xfffffffe;\n        bVar1 = false;\n      }\n    } while (!bVar1);\n    iVar9 = *(int *)(iVar6 + 0x18);\n    if (iVar9 == 0) {\n      iVar9 = *(int *)(iVar6 + 8);\n    }\n    FUN_00018f7c(PTR_FUN_001311a4 + -0x6a58,iVar9);\n  }" { (if_statement "if ((*(uint *)PTR_DAT_0013135c & 0x20) == 0) {\n      uVar2 = FUN_00018edc(*(undefined4 *)(param_1 + 0xc));\n      *(undefined4 *)(param_1 + 0xc) = uVar2;\n    }" if (parenthesized_expression "((*(uint *)PTR_DAT_0013135c & 0x20) == 0)" ( (binary_expression "(*(uint *)PTR_DAT_0013135c & 0x20) == 0" (parenthesized_expression "(*(uint *)PTR_DAT_0013135c & 0x20)" ( (binary_expression "*(uint *)PTR_DAT_0013135c & 0x20" (pointer_expression "*(uint *)PTR_DAT_0013135c" * (cast_expression "(uint *)PTR_DAT_0013135c" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) & number_literal) )) == number_literal) )) (compound_statement "{\n      uVar2 = FUN_00018edc(*(undefined4 *)(param_1 + 0xc));\n      *(undefined4 *)(param_1 + 0xc) = uVar2;\n    }" { (expression_statement "uVar2 = FUN_00018edc(*(undefined4 *)(param_1 + 0xc));" (assignment_expression "uVar2 = FUN_00018edc(*(undefined4 *)(param_1 + 0xc))" identifier = (call_expression "FUN_00018edc(*(undefined4 *)(param_1 + 0xc))" identifier (argument_list "(*(undefined4 *)(param_1 + 0xc))" ( (pointer_expression "*(undefined4 *)(param_1 + 0xc)" * (cast_expression "(undefined4 *)(param_1 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) )))) ;) (expression_statement "*(undefined4 *)(param_1 + 0xc) = uVar2;" (assignment_expression "*(undefined4 *)(param_1 + 0xc) = uVar2" (pointer_expression "*(undefined4 *)(param_1 + 0xc)" * (cast_expression "(undefined4 *)(param_1 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) = identifier) ;) })) (expression_statement "puVar8 = PTR_FUN_001311a4;" (assignment_expression "puVar8 = PTR_FUN_001311a4" identifier = identifier) ;) (expression_statement "bVar1 = true;" (assignment_expression "bVar1 = true" identifier = true) ;) (expression_statement "iVar11 = 0;" (assignment_expression "iVar11 = 0" identifier = number_literal) ;) (expression_statement "pcVar3 = (code *)(PTR_LAB_00131488 + -0x7cf0);" (assignment_expression "pcVar3 = (code *)(PTR_LAB_00131488 + -0x7cf0)" identifier = (cast_expression "(code *)(PTR_LAB_00131488 + -0x7cf0)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_00131488 + -0x7cf0)" ( (binary_expression "PTR_LAB_00131488 + -0x7cf0" identifier + number_literal) )))) ;) (expression_statement "pcVar4 = (code *)(PTR_LAB_00131488 + -0x7fc8);" (assignment_expression "pcVar4 = (code *)(PTR_LAB_00131488 + -0x7fc8)" identifier = (cast_expression "(code *)(PTR_LAB_00131488 + -0x7fc8)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_00131488 + -0x7fc8)" ( (binary_expression "PTR_LAB_00131488 + -0x7fc8" identifier + number_literal) )))) ;) (do_statement "do {\n      while( true ) {\n        while( true ) {\n          while( true ) {\n            if (*(int *)(param_1 + 0xc) == 0) {\n              return iVar11;\n            }\n            uVar2 = FUN_00018db0(param_1 + 0xc);\n            uVar5 = FUN_00018b68(uVar2);\n            iVar6 = (*pcVar3)(uVar5);\n            if ((*(uint *)PTR_DAT_0013135c & 0x20) != 0) break;\n            iVar11 = *(int *)(iVar6 + 0x1c);\n            *(undefined4 *)(iVar6 + 0x1c) = 0;\n            pbVar7 = (byte *)(*(code *)PTR_FUN_00131474)(PTR_FUN_001311a4 + -0x6a3c,0);\n            if (pbVar7 != (byte *)0x0) {\n              for (; 0x22 < *pbVar7; pbVar7 = pbVar7 + 1) {\n              }\n                    \n                    \n              iVar11 = (*(code *)(&_gp_1 + *(int *)(puVar8 + (uint)*pbVar7 * 4 + -0x6a0c)))();\n              return iVar11;\n            }\n            if (param_1 == iVar6) {\n              iVar11 = (*pcVar4)(iVar11,*(undefined4 *)(*(int *)PTR_DAT_00131330 + 4));\n            }\n            if ((*(uint *)PTR_DAT_0013135c & 0x40) == 0) {\n              if ((*(uint *)(iVar6 + 0x14) & 1) == 0) {\n                iVar9 = FUN_00039834(uVar2,iVar11);\n                if (iVar9 == 0x11) {\n                  (*(code *)PTR_free_00132180)(iVar11);\n                }\n                else {\n                  (*(code *)PTR_free_00132180)();\n                  if (iVar9 != 0) {\n                    iVar11 = *(int *)(iVar6 + 0x18);\n                    if (iVar11 == 0) {\n                      iVar11 = *(int *)(iVar6 + 8);\n                    }\n                    uVar5 = FUN_000399f8(iVar9);\n                    FUN_000195a0(PTR_FUN_001311a4 + -0x6a2c,iVar11,uVar2,uVar5);\n                    return iVar9;\n                  }\n                }\n                *(uint *)(iVar6 + 0x14) = *(uint *)(iVar6 + 0x14) | 1;\n                iVar11 = 0;\n              }\n              else {\n                (*(code *)PTR_free_00132180)(iVar11);\n                iVar11 = 0;\n              }\n            }\n            else {\n              if (iVar11 == 0) {\n                puVar10 = PTR_FUN_001311a4 + -0x6a6c;\n              }\n              else {\n                puVar10 = PTR_FUN_001311a4 + -0x6a80;\n              }\n              (*(code *)PTR___printf_chk_00131e4c)\n                        (1,puVar10,PTR_FUN_001311a4 + -0x6c8c,*(int *)PTR_DAT_00131330 + 0x8f,uVar2,\n                         iVar11);\n              (*(code *)PTR_free_00132180)(iVar11);\n              iVar11 = 0;\n            }\n          }\n          if ((*(uint *)(iVar6 + 0x14) & 1) != 0) break;\n          bVar1 = false;\n          iVar11 = 0;\n        }\n        iVar11 = FUN_000399a0(*(undefined4 *)(iVar6 + 8),0x400);\n        if (iVar11 != 0) break;\n        *(uint *)(iVar6 + 0x14) = *(uint *)(iVar6 + 0x14) & 0xfffffffe;\n        bVar1 = false;\n      }\n    } while (!bVar1);" do (compound_statement "{\n      while( true ) {\n        while( true ) {\n          while( true ) {\n            if (*(int *)(param_1 + 0xc) == 0) {\n              return iVar11;\n            }\n            uVar2 = FUN_00018db0(param_1 + 0xc);\n            uVar5 = FUN_00018b68(uVar2);\n            iVar6 = (*pcVar3)(uVar5);\n            if ((*(uint *)PTR_DAT_0013135c & 0x20) != 0) break;\n            iVar11 = *(int *)(iVar6 + 0x1c);\n            *(undefined4 *)(iVar6 + 0x1c) = 0;\n            pbVar7 = (byte *)(*(code *)PTR_FUN_00131474)(PTR_FUN_001311a4 + -0x6a3c,0);\n            if (pbVar7 != (byte *)0x0) {\n              for (; 0x22 < *pbVar7; pbVar7 = pbVar7 + 1) {\n              }\n                    \n                    \n              iVar11 = (*(code *)(&_gp_1 + *(int *)(puVar8 + (uint)*pbVar7 * 4 + -0x6a0c)))();\n              return iVar11;\n            }\n            if (param_1 == iVar6) {\n              iVar11 = (*pcVar4)(iVar11,*(undefined4 *)(*(int *)PTR_DAT_00131330 + 4));\n            }\n            if ((*(uint *)PTR_DAT_0013135c & 0x40) == 0) {\n              if ((*(uint *)(iVar6 + 0x14) & 1) == 0) {\n                iVar9 = FUN_00039834(uVar2,iVar11);\n                if (iVar9 == 0x11) {\n                  (*(code *)PTR_free_00132180)(iVar11);\n                }\n                else {\n                  (*(code *)PTR_free_00132180)();\n                  if (iVar9 != 0) {\n                    iVar11 = *(int *)(iVar6 + 0x18);\n                    if (iVar11 == 0) {\n                      iVar11 = *(int *)(iVar6 + 8);\n                    }\n                    uVar5 = FUN_000399f8(iVar9);\n                    FUN_000195a0(PTR_FUN_001311a4 + -0x6a2c,iVar11,uVar2,uVar5);\n                    return iVar9;\n                  }\n                }\n                *(uint *)(iVar6 + 0x14) = *(uint *)(iVar6 + 0x14) | 1;\n                iVar11 = 0;\n              }\n              else {\n                (*(code *)PTR_free_00132180)(iVar11);\n                iVar11 = 0;\n              }\n            }\n            else {\n              if (iVar11 == 0) {\n                puVar10 = PTR_FUN_001311a4 + -0x6a6c;\n              }\n              else {\n                puVar10 = PTR_FUN_001311a4 + -0x6a80;\n              }\n              (*(code *)PTR___printf_chk_00131e4c)\n                        (1,puVar10,PTR_FUN_001311a4 + -0x6c8c,*(int *)PTR_DAT_00131330 + 0x8f,uVar2,\n                         iVar11);\n              (*(code *)PTR_free_00132180)(iVar11);\n              iVar11 = 0;\n            }\n          }\n          if ((*(uint *)(iVar6 + 0x14) & 1) != 0) break;\n          bVar1 = false;\n          iVar11 = 0;\n        }\n        iVar11 = FUN_000399a0(*(undefined4 *)(iVar6 + 8),0x400);\n        if (iVar11 != 0) break;\n        *(uint *)(iVar6 + 0x14) = *(uint *)(iVar6 + 0x14) & 0xfffffffe;\n        bVar1 = false;\n      }\n    }" { (while_statement "while( true ) {\n        while( true ) {\n          while( true ) {\n            if (*(int *)(param_1 + 0xc) == 0) {\n              return iVar11;\n            }\n            uVar2 = FUN_00018db0(param_1 + 0xc);\n            uVar5 = FUN_00018b68(uVar2);\n            iVar6 = (*pcVar3)(uVar5);\n            if ((*(uint *)PTR_DAT_0013135c & 0x20) != 0) break;\n            iVar11 = *(int *)(iVar6 + 0x1c);\n            *(undefined4 *)(iVar6 + 0x1c) = 0;\n            pbVar7 = (byte *)(*(code *)PTR_FUN_00131474)(PTR_FUN_001311a4 + -0x6a3c,0);\n            if (pbVar7 != (byte *)0x0) {\n              for (; 0x22 < *pbVar7; pbVar7 = pbVar7 + 1) {\n              }\n                    \n                    \n              iVar11 = (*(code *)(&_gp_1 + *(int *)(puVar8 + (uint)*pbVar7 * 4 + -0x6a0c)))();\n              return iVar11;\n            }\n            if (param_1 == iVar6) {\n              iVar11 = (*pcVar4)(iVar11,*(undefined4 *)(*(int *)PTR_DAT_00131330 + 4));\n            }\n            if ((*(uint *)PTR_DAT_0013135c & 0x40) == 0) {\n              if ((*(uint *)(iVar6 + 0x14) & 1) == 0) {\n                iVar9 = FUN_00039834(uVar2,iVar11);\n                if (iVar9 == 0x11) {\n                  (*(code *)PTR_free_00132180)(iVar11);\n                }\n                else {\n                  (*(code *)PTR_free_00132180)();\n                  if (iVar9 != 0) {\n                    iVar11 = *(int *)(iVar6 + 0x18);\n                    if (iVar11 == 0) {\n                      iVar11 = *(int *)(iVar6 + 8);\n                    }\n                    uVar5 = FUN_000399f8(iVar9);\n                    FUN_000195a0(PTR_FUN_001311a4 + -0x6a2c,iVar11,uVar2,uVar5);\n                    return iVar9;\n                  }\n                }\n                *(uint *)(iVar6 + 0x14) = *(uint *)(iVar6 + 0x14) | 1;\n                iVar11 = 0;\n              }\n              else {\n                (*(code *)PTR_free_00132180)(iVar11);\n                iVar11 = 0;\n              }\n            }\n            else {\n              if (iVar11 == 0) {\n                puVar10 = PTR_FUN_001311a4 + -0x6a6c;\n              }\n              else {\n                puVar10 = PTR_FUN_001311a4 + -0x6a80;\n              }\n              (*(code *)PTR___printf_chk_00131e4c)\n                        (1,puVar10,PTR_FUN_001311a4 + -0x6c8c,*(int *)PTR_DAT_00131330 + 0x8f,uVar2,\n                         iVar11);\n              (*(code *)PTR_free_00132180)(iVar11);\n              iVar11 = 0;\n            }\n          }\n          if ((*(uint *)(iVar6 + 0x14) & 1) != 0) break;\n          bVar1 = false;\n          iVar11 = 0;\n        }\n        iVar11 = FUN_000399a0(*(undefined4 *)(iVar6 + 8),0x400);\n        if (iVar11 != 0) break;\n        *(uint *)(iVar6 + 0x14) = *(uint *)(iVar6 + 0x14) & 0xfffffffe;\n        bVar1 = false;\n      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n        while( true ) {\n          while( true ) {\n            if (*(int *)(param_1 + 0xc) == 0) {\n              return iVar11;\n            }\n            uVar2 = FUN_00018db0(param_1 + 0xc);\n            uVar5 = FUN_00018b68(uVar2);\n            iVar6 = (*pcVar3)(uVar5);\n            if ((*(uint *)PTR_DAT_0013135c & 0x20) != 0) break;\n            iVar11 = *(int *)(iVar6 + 0x1c);\n            *(undefined4 *)(iVar6 + 0x1c) = 0;\n            pbVar7 = (byte *)(*(code *)PTR_FUN_00131474)(PTR_FUN_001311a4 + -0x6a3c,0);\n            if (pbVar7 != (byte *)0x0) {\n              for (; 0x22 < *pbVar7; pbVar7 = pbVar7 + 1) {\n              }\n                    \n                    \n              iVar11 = (*(code *)(&_gp_1 + *(int *)(puVar8 + (uint)*pbVar7 * 4 + -0x6a0c)))();\n              return iVar11;\n            }\n            if (param_1 == iVar6) {\n              iVar11 = (*pcVar4)(iVar11,*(undefined4 *)(*(int *)PTR_DAT_00131330 + 4));\n            }\n            if ((*(uint *)PTR_DAT_0013135c & 0x40) == 0) {\n              if ((*(uint *)(iVar6 + 0x14) & 1) == 0) {\n                iVar9 = FUN_00039834(uVar2,iVar11);\n                if (iVar9 == 0x11) {\n                  (*(code *)PTR_free_00132180)(iVar11);\n                }\n                else {\n                  (*(code *)PTR_free_00132180)();\n                  if (iVar9 != 0) {\n                    iVar11 = *(int *)(iVar6 + 0x18);\n                    if (iVar11 == 0) {\n                      iVar11 = *(int *)(iVar6 + 8);\n                    }\n                    uVar5 = FUN_000399f8(iVar9);\n                    FUN_000195a0(PTR_FUN_001311a4 + -0x6a2c,iVar11,uVar2,uVar5);\n                    return iVar9;\n                  }\n                }\n                *(uint *)(iVar6 + 0x14) = *(uint *)(iVar6 + 0x14) | 1;\n                iVar11 = 0;\n              }\n              else {\n                (*(code *)PTR_free_00132180)(iVar11);\n                iVar11 = 0;\n              }\n            }\n            else {\n              if (iVar11 == 0) {\n                puVar10 = PTR_FUN_001311a4 + -0x6a6c;\n              }\n              else {\n                puVar10 = PTR_FUN_001311a4 + -0x6a80;\n              }\n              (*(code *)PTR___printf_chk_00131e4c)\n                        (1,puVar10,PTR_FUN_001311a4 + -0x6c8c,*(int *)PTR_DAT_00131330 + 0x8f,uVar2,\n                         iVar11);\n              (*(code *)PTR_free_00132180)(iVar11);\n              iVar11 = 0;\n            }\n          }\n          if ((*(uint *)(iVar6 + 0x14) & 1) != 0) break;\n          bVar1 = false;\n          iVar11 = 0;\n        }\n        iVar11 = FUN_000399a0(*(undefined4 *)(iVar6 + 8),0x400);\n        if (iVar11 != 0) break;\n        *(uint *)(iVar6 + 0x14) = *(uint *)(iVar6 + 0x14) & 0xfffffffe;\n        bVar1 = false;\n      }" { (while_statement "while( true ) {\n          while( true ) {\n            if (*(int *)(param_1 + 0xc) == 0) {\n              return iVar11;\n            }\n            uVar2 = FUN_00018db0(param_1 + 0xc);\n            uVar5 = FUN_00018b68(uVar2);\n            iVar6 = (*pcVar3)(uVar5);\n            if ((*(uint *)PTR_DAT_0013135c & 0x20) != 0) break;\n            iVar11 = *(int *)(iVar6 + 0x1c);\n            *(undefined4 *)(iVar6 + 0x1c) = 0;\n            pbVar7 = (byte *)(*(code *)PTR_FUN_00131474)(PTR_FUN_001311a4 + -0x6a3c,0);\n            if (pbVar7 != (byte *)0x0) {\n              for (; 0x22 < *pbVar7; pbVar7 = pbVar7 + 1) {\n              }\n                    \n                    \n              iVar11 = (*(code *)(&_gp_1 + *(int *)(puVar8 + (uint)*pbVar7 * 4 + -0x6a0c)))();\n              return iVar11;\n            }\n            if (param_1 == iVar6) {\n              iVar11 = (*pcVar4)(iVar11,*(undefined4 *)(*(int *)PTR_DAT_00131330 + 4));\n            }\n            if ((*(uint *)PTR_DAT_0013135c & 0x40) == 0) {\n              if ((*(uint *)(iVar6 + 0x14) & 1) == 0) {\n                iVar9 = FUN_00039834(uVar2,iVar11);\n                if (iVar9 == 0x11) {\n                  (*(code *)PTR_free_00132180)(iVar11);\n                }\n                else {\n                  (*(code *)PTR_free_00132180)();\n                  if (iVar9 != 0) {\n                    iVar11 = *(int *)(iVar6 + 0x18);\n                    if (iVar11 == 0) {\n                      iVar11 = *(int *)(iVar6 + 8);\n                    }\n                    uVar5 = FUN_000399f8(iVar9);\n                    FUN_000195a0(PTR_FUN_001311a4 + -0x6a2c,iVar11,uVar2,uVar5);\n                    return iVar9;\n                  }\n                }\n                *(uint *)(iVar6 + 0x14) = *(uint *)(iVar6 + 0x14) | 1;\n                iVar11 = 0;\n              }\n              else {\n                (*(code *)PTR_free_00132180)(iVar11);\n                iVar11 = 0;\n              }\n            }\n            else {\n              if (iVar11 == 0) {\n                puVar10 = PTR_FUN_001311a4 + -0x6a6c;\n              }\n              else {\n                puVar10 = PTR_FUN_001311a4 + -0x6a80;\n              }\n              (*(code *)PTR___printf_chk_00131e4c)\n                        (1,puVar10,PTR_FUN_001311a4 + -0x6c8c,*(int *)PTR_DAT_00131330 + 0x8f,uVar2,\n                         iVar11);\n              (*(code *)PTR_free_00132180)(iVar11);\n              iVar11 = 0;\n            }\n          }\n          if ((*(uint *)(iVar6 + 0x14) & 1) != 0) break;\n          bVar1 = false;\n          iVar11 = 0;\n        }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n          while( true ) {\n            if (*(int *)(param_1 + 0xc) == 0) {\n              return iVar11;\n            }\n            uVar2 = FUN_00018db0(param_1 + 0xc);\n            uVar5 = FUN_00018b68(uVar2);\n            iVar6 = (*pcVar3)(uVar5);\n            if ((*(uint *)PTR_DAT_0013135c & 0x20) != 0) break;\n            iVar11 = *(int *)(iVar6 + 0x1c);\n            *(undefined4 *)(iVar6 + 0x1c) = 0;\n            pbVar7 = (byte *)(*(code *)PTR_FUN_00131474)(PTR_FUN_001311a4 + -0x6a3c,0);\n            if (pbVar7 != (byte *)0x0) {\n              for (; 0x22 < *pbVar7; pbVar7 = pbVar7 + 1) {\n              }\n                    \n                    \n              iVar11 = (*(code *)(&_gp_1 + *(int *)(puVar8 + (uint)*pbVar7 * 4 + -0x6a0c)))();\n              return iVar11;\n            }\n            if (param_1 == iVar6) {\n              iVar11 = (*pcVar4)(iVar11,*(undefined4 *)(*(int *)PTR_DAT_00131330 + 4));\n            }\n            if ((*(uint *)PTR_DAT_0013135c & 0x40) == 0) {\n              if ((*(uint *)(iVar6 + 0x14) & 1) == 0) {\n                iVar9 = FUN_00039834(uVar2,iVar11);\n                if (iVar9 == 0x11) {\n                  (*(code *)PTR_free_00132180)(iVar11);\n                }\n                else {\n                  (*(code *)PTR_free_00132180)();\n                  if (iVar9 != 0) {\n                    iVar11 = *(int *)(iVar6 + 0x18);\n                    if (iVar11 == 0) {\n                      iVar11 = *(int *)(iVar6 + 8);\n                    }\n                    uVar5 = FUN_000399f8(iVar9);\n                    FUN_000195a0(PTR_FUN_001311a4 + -0x6a2c,iVar11,uVar2,uVar5);\n                    return iVar9;\n                  }\n                }\n                *(uint *)(iVar6 + 0x14) = *(uint *)(iVar6 + 0x14) | 1;\n                iVar11 = 0;\n              }\n              else {\n                (*(code *)PTR_free_00132180)(iVar11);\n                iVar11 = 0;\n              }\n            }\n            else {\n              if (iVar11 == 0) {\n                puVar10 = PTR_FUN_001311a4 + -0x6a6c;\n              }\n              else {\n                puVar10 = PTR_FUN_001311a4 + -0x6a80;\n              }\n              (*(code *)PTR___printf_chk_00131e4c)\n                        (1,puVar10,PTR_FUN_001311a4 + -0x6c8c,*(int *)PTR_DAT_00131330 + 0x8f,uVar2,\n                         iVar11);\n              (*(code *)PTR_free_00132180)(iVar11);\n              iVar11 = 0;\n            }\n          }\n          if ((*(uint *)(iVar6 + 0x14) & 1) != 0) break;\n          bVar1 = false;\n          iVar11 = 0;\n        }" { (while_statement "while( true ) {\n            if (*(int *)(param_1 + 0xc) == 0) {\n              return iVar11;\n            }\n            uVar2 = FUN_00018db0(param_1 + 0xc);\n            uVar5 = FUN_00018b68(uVar2);\n            iVar6 = (*pcVar3)(uVar5);\n            if ((*(uint *)PTR_DAT_0013135c & 0x20) != 0) break;\n            iVar11 = *(int *)(iVar6 + 0x1c);\n            *(undefined4 *)(iVar6 + 0x1c) = 0;\n            pbVar7 = (byte *)(*(code *)PTR_FUN_00131474)(PTR_FUN_001311a4 + -0x6a3c,0);\n            if (pbVar7 != (byte *)0x0) {\n              for (; 0x22 < *pbVar7; pbVar7 = pbVar7 + 1) {\n              }\n                    \n                    \n              iVar11 = (*(code *)(&_gp_1 + *(int *)(puVar8 + (uint)*pbVar7 * 4 + -0x6a0c)))();\n              return iVar11;\n            }\n            if (param_1 == iVar6) {\n              iVar11 = (*pcVar4)(iVar11,*(undefined4 *)(*(int *)PTR_DAT_00131330 + 4));\n            }\n            if ((*(uint *)PTR_DAT_0013135c & 0x40) == 0) {\n              if ((*(uint *)(iVar6 + 0x14) & 1) == 0) {\n                iVar9 = FUN_00039834(uVar2,iVar11);\n                if (iVar9 == 0x11) {\n                  (*(code *)PTR_free_00132180)(iVar11);\n                }\n                else {\n                  (*(code *)PTR_free_00132180)();\n                  if (iVar9 != 0) {\n                    iVar11 = *(int *)(iVar6 + 0x18);\n                    if (iVar11 == 0) {\n                      iVar11 = *(int *)(iVar6 + 8);\n                    }\n                    uVar5 = FUN_000399f8(iVar9);\n                    FUN_000195a0(PTR_FUN_001311a4 + -0x6a2c,iVar11,uVar2,uVar5);\n                    return iVar9;\n                  }\n                }\n                *(uint *)(iVar6 + 0x14) = *(uint *)(iVar6 + 0x14) | 1;\n                iVar11 = 0;\n              }\n              else {\n                (*(code *)PTR_free_00132180)(iVar11);\n                iVar11 = 0;\n              }\n            }\n            else {\n              if (iVar11 == 0) {\n                puVar10 = PTR_FUN_001311a4 + -0x6a6c;\n              }\n              else {\n                puVar10 = PTR_FUN_001311a4 + -0x6a80;\n              }\n              (*(code *)PTR___printf_chk_00131e4c)\n                        (1,puVar10,PTR_FUN_001311a4 + -0x6c8c,*(int *)PTR_DAT_00131330 + 0x8f,uVar2,\n                         iVar11);\n              (*(code *)PTR_free_00132180)(iVar11);\n              iVar11 = 0;\n            }\n          }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n            if (*(int *)(param_1 + 0xc) == 0) {\n              return iVar11;\n            }\n            uVar2 = FUN_00018db0(param_1 + 0xc);\n            uVar5 = FUN_00018b68(uVar2);\n            iVar6 = (*pcVar3)(uVar5);\n            if ((*(uint *)PTR_DAT_0013135c & 0x20) != 0) break;\n            iVar11 = *(int *)(iVar6 + 0x1c);\n            *(undefined4 *)(iVar6 + 0x1c) = 0;\n            pbVar7 = (byte *)(*(code *)PTR_FUN_00131474)(PTR_FUN_001311a4 + -0x6a3c,0);\n            if (pbVar7 != (byte *)0x0) {\n              for (; 0x22 < *pbVar7; pbVar7 = pbVar7 + 1) {\n              }\n                    \n                    \n              iVar11 = (*(code *)(&_gp_1 + *(int *)(puVar8 + (uint)*pbVar7 * 4 + -0x6a0c)))();\n              return iVar11;\n            }\n            if (param_1 == iVar6) {\n              iVar11 = (*pcVar4)(iVar11,*(undefined4 *)(*(int *)PTR_DAT_00131330 + 4));\n            }\n            if ((*(uint *)PTR_DAT_0013135c & 0x40) == 0) {\n              if ((*(uint *)(iVar6 + 0x14) & 1) == 0) {\n                iVar9 = FUN_00039834(uVar2,iVar11);\n                if (iVar9 == 0x11) {\n                  (*(code *)PTR_free_00132180)(iVar11);\n                }\n                else {\n                  (*(code *)PTR_free_00132180)();\n                  if (iVar9 != 0) {\n                    iVar11 = *(int *)(iVar6 + 0x18);\n                    if (iVar11 == 0) {\n                      iVar11 = *(int *)(iVar6 + 8);\n                    }\n                    uVar5 = FUN_000399f8(iVar9);\n                    FUN_000195a0(PTR_FUN_001311a4 + -0x6a2c,iVar11,uVar2,uVar5);\n                    return iVar9;\n                  }\n                }\n                *(uint *)(iVar6 + 0x14) = *(uint *)(iVar6 + 0x14) | 1;\n                iVar11 = 0;\n              }\n              else {\n                (*(code *)PTR_free_00132180)(iVar11);\n                iVar11 = 0;\n              }\n            }\n            else {\n              if (iVar11 == 0) {\n                puVar10 = PTR_FUN_001311a4 + -0x6a6c;\n              }\n              else {\n                puVar10 = PTR_FUN_001311a4 + -0x6a80;\n              }\n              (*(code *)PTR___printf_chk_00131e4c)\n                        (1,puVar10,PTR_FUN_001311a4 + -0x6c8c,*(int *)PTR_DAT_00131330 + 0x8f,uVar2,\n                         iVar11);\n              (*(code *)PTR_free_00132180)(iVar11);\n              iVar11 = 0;\n            }\n          }" { (if_statement "if (*(int *)(param_1 + 0xc) == 0) {\n              return iVar11;\n            }" if (parenthesized_expression "(*(int *)(param_1 + 0xc) == 0)" ( (binary_expression "*(int *)(param_1 + 0xc) == 0" (pointer_expression "*(int *)(param_1 + 0xc)" * (cast_expression "(int *)(param_1 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n              return iVar11;\n            }" { (return_statement "return iVar11;" return identifier ;) })) (expression_statement "uVar2 = FUN_00018db0(param_1 + 0xc);" (assignment_expression "uVar2 = FUN_00018db0(param_1 + 0xc)" identifier = (call_expression "FUN_00018db0(param_1 + 0xc)" identifier (argument_list "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))) ;) (expression_statement "uVar5 = FUN_00018b68(uVar2);" (assignment_expression "uVar5 = FUN_00018b68(uVar2)" identifier = (call_expression "FUN_00018b68(uVar2)" identifier (argument_list "(uVar2)" ( identifier )))) ;) (expression_statement "iVar6 = (*pcVar3)(uVar5);" (assignment_expression "iVar6 = (*pcVar3)(uVar5)" identifier = (call_expression "(*pcVar3)(uVar5)" (parenthesized_expression "(*pcVar3)" ( (pointer_expression "*pcVar3" * identifier) )) (argument_list "(uVar5)" ( identifier )))) ;) (if_statement "if ((*(uint *)PTR_DAT_0013135c & 0x20) != 0) break;" if (parenthesized_expression "((*(uint *)PTR_DAT_0013135c & 0x20) != 0)" ( (binary_expression "(*(uint *)PTR_DAT_0013135c & 0x20) != 0" (parenthesized_expression "(*(uint *)PTR_DAT_0013135c & 0x20)" ( (binary_expression "*(uint *)PTR_DAT_0013135c & 0x20" (pointer_expression "*(uint *)PTR_DAT_0013135c" * (cast_expression "(uint *)PTR_DAT_0013135c" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) & number_literal) )) != number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar11 = *(int *)(iVar6 + 0x1c);" (assignment_expression "iVar11 = *(int *)(iVar6 + 0x1c)" identifier = (pointer_expression "*(int *)(iVar6 + 0x1c)" * (cast_expression "(int *)(iVar6 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x1c)" ( (binary_expression "iVar6 + 0x1c" identifier + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(iVar6 + 0x1c) = 0;" (assignment_expression "*(undefined4 *)(iVar6 + 0x1c) = 0" (pointer_expression "*(undefined4 *)(iVar6 + 0x1c)" * (cast_expression "(undefined4 *)(iVar6 + 0x1c)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x1c)" ( (binary_expression "iVar6 + 0x1c" identifier + number_literal) )))) = number_literal) ;) (expression_statement "pbVar7 = (byte *)(*(code *)PTR_FUN_00131474)(PTR_FUN_001311a4 + -0x6a3c,0);" (assignment_expression "pbVar7 = (byte *)(*(code *)PTR_FUN_00131474)(PTR_FUN_001311a4 + -0x6a3c,0)" identifier = (cast_expression "(byte *)(*(code *)PTR_FUN_00131474)(PTR_FUN_001311a4 + -0x6a3c,0)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)PTR_FUN_00131474)(PTR_FUN_001311a4 + -0x6a3c,0)" (parenthesized_expression "(*(code *)PTR_FUN_00131474)" ( (pointer_expression "*(code *)PTR_FUN_00131474" * (cast_expression "(code *)PTR_FUN_00131474" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(PTR_FUN_001311a4 + -0x6a3c,0)" ( (binary_expression "PTR_FUN_001311a4 + -0x6a3c" identifier + number_literal) , number_literal ))))) ;) (if_statement "if (pbVar7 != (byte *)0x0) {\n              for (; 0x22 < *pbVar7; pbVar7 = pbVar7 + 1) {\n              }\n                    \n                    \n              iVar11 = (*(code *)(&_gp_1 + *(int *)(puVar8 + (uint)*pbVar7 * 4 + -0x6a0c)))();\n              return iVar11;\n            }" if (parenthesized_expression "(pbVar7 != (byte *)0x0)" ( (binary_expression "pbVar7 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              for (; 0x22 < *pbVar7; pbVar7 = pbVar7 + 1) {\n              }\n                    \n                    \n              iVar11 = (*(code *)(&_gp_1 + *(int *)(puVar8 + (uint)*pbVar7 * 4 + -0x6a0c)))();\n              return iVar11;\n            }" { (for_statement "for (; 0x22 < *pbVar7; pbVar7 = pbVar7 + 1) {\n              }" for ( ; (binary_expression "0x22 < *pbVar7" number_literal < (pointer_expression "*pbVar7" * identifier)) ; (assignment_expression "pbVar7 = pbVar7 + 1" identifier = (binary_expression "pbVar7 + 1" identifier + number_literal)) ) (compound_statement "{\n              }" { })) (expression_statement "iVar11 = (*(code *)(&_gp_1 + *(int *)(puVar8 + (uint)*pbVar7 * 4 + -0x6a0c)))();" (assignment_expression "iVar11 = (*(code *)(&_gp_1 + *(int *)(puVar8 + (uint)*pbVar7 * 4 + -0x6a0c)))()" identifier = (call_expression "(*(code *)(&_gp_1 + *(int *)(puVar8 + (uint)*pbVar7 * 4 + -0x6a0c)))()" (parenthesized_expression "(*(code *)(&_gp_1 + *(int *)(puVar8 + (uint)*pbVar7 * 4 + -0x6a0c)))" ( (pointer_expression "*(code *)(&_gp_1 + *(int *)(puVar8 + (uint)*pbVar7 * 4 + -0x6a0c))" * (cast_expression "(code *)(&_gp_1 + *(int *)(puVar8 + (uint)*pbVar7 * 4 + -0x6a0c))" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(&_gp_1 + *(int *)(puVar8 + (uint)*pbVar7 * 4 + -0x6a0c))" ( (binary_expression "&_gp_1 + *(int *)(puVar8 + (uint)*pbVar7 * 4 + -0x6a0c)" (pointer_expression "&_gp_1" & identifier) + (pointer_expression "*(int *)(puVar8 + (uint)*pbVar7 * 4 + -0x6a0c)" * (cast_expression "(int *)(puVar8 + (uint)*pbVar7 * 4 + -0x6a0c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar8 + (uint)*pbVar7 * 4 + -0x6a0c)" ( (binary_expression "puVar8 + (uint)*pbVar7 * 4 + -0x6a0c" (binary_expression "puVar8 + (uint)*pbVar7 * 4" identifier + (binary_expression "(uint)*pbVar7 * 4" (binary_expression "(uint)*pbVar7" (parenthesized_expression "(uint)" ( identifier )) * identifier) * number_literal)) + number_literal) ))))) )))) )) (argument_list "()" ( )))) ;) (return_statement "return iVar11;" return identifier ;) })) (if_statement "if (param_1 == iVar6) {\n              iVar11 = (*pcVar4)(iVar11,*(undefined4 *)(*(int *)PTR_DAT_00131330 + 4));\n            }" if (parenthesized_expression "(param_1 == iVar6)" ( (binary_expression "param_1 == iVar6" identifier == identifier) )) (compound_statement "{\n              iVar11 = (*pcVar4)(iVar11,*(undefined4 *)(*(int *)PTR_DAT_00131330 + 4));\n            }" { (expression_statement "iVar11 = (*pcVar4)(iVar11,*(undefined4 *)(*(int *)PTR_DAT_00131330 + 4));" (assignment_expression "iVar11 = (*pcVar4)(iVar11,*(undefined4 *)(*(int *)PTR_DAT_00131330 + 4))" identifier = (call_expression "(*pcVar4)(iVar11,*(undefined4 *)(*(int *)PTR_DAT_00131330 + 4))" (parenthesized_expression "(*pcVar4)" ( (pointer_expression "*pcVar4" * identifier) )) (argument_list "(iVar11,*(undefined4 *)(*(int *)PTR_DAT_00131330 + 4))" ( identifier , (pointer_expression "*(undefined4 *)(*(int *)PTR_DAT_00131330 + 4)" * (cast_expression "(undefined4 *)(*(int *)PTR_DAT_00131330 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)PTR_DAT_00131330 + 4)" ( (binary_expression "*(int *)PTR_DAT_00131330 + 4" (pointer_expression "*(int *)PTR_DAT_00131330" * (cast_expression "(int *)PTR_DAT_00131330" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) )))) )))) ;) })) (if_statement "if ((*(uint *)PTR_DAT_0013135c & 0x40) == 0) {\n              if ((*(uint *)(iVar6 + 0x14) & 1) == 0) {\n                iVar9 = FUN_00039834(uVar2,iVar11);\n                if (iVar9 == 0x11) {\n                  (*(code *)PTR_free_00132180)(iVar11);\n                }\n                else {\n                  (*(code *)PTR_free_00132180)();\n                  if (iVar9 != 0) {\n                    iVar11 = *(int *)(iVar6 + 0x18);\n                    if (iVar11 == 0) {\n                      iVar11 = *(int *)(iVar6 + 8);\n                    }\n                    uVar5 = FUN_000399f8(iVar9);\n                    FUN_000195a0(PTR_FUN_001311a4 + -0x6a2c,iVar11,uVar2,uVar5);\n                    return iVar9;\n                  }\n                }\n                *(uint *)(iVar6 + 0x14) = *(uint *)(iVar6 + 0x14) | 1;\n                iVar11 = 0;\n              }\n              else {\n                (*(code *)PTR_free_00132180)(iVar11);\n                iVar11 = 0;\n              }\n            }\n            else {\n              if (iVar11 == 0) {\n                puVar10 = PTR_FUN_001311a4 + -0x6a6c;\n              }\n              else {\n                puVar10 = PTR_FUN_001311a4 + -0x6a80;\n              }\n              (*(code *)PTR___printf_chk_00131e4c)\n                        (1,puVar10,PTR_FUN_001311a4 + -0x6c8c,*(int *)PTR_DAT_00131330 + 0x8f,uVar2,\n                         iVar11);\n              (*(code *)PTR_free_00132180)(iVar11);\n              iVar11 = 0;\n            }" if (parenthesized_expression "((*(uint *)PTR_DAT_0013135c & 0x40) == 0)" ( (binary_expression "(*(uint *)PTR_DAT_0013135c & 0x40) == 0" (parenthesized_expression "(*(uint *)PTR_DAT_0013135c & 0x40)" ( (binary_expression "*(uint *)PTR_DAT_0013135c & 0x40" (pointer_expression "*(uint *)PTR_DAT_0013135c" * (cast_expression "(uint *)PTR_DAT_0013135c" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) & number_literal) )) == number_literal) )) (compound_statement "{\n              if ((*(uint *)(iVar6 + 0x14) & 1) == 0) {\n                iVar9 = FUN_00039834(uVar2,iVar11);\n                if (iVar9 == 0x11) {\n                  (*(code *)PTR_free_00132180)(iVar11);\n                }\n                else {\n                  (*(code *)PTR_free_00132180)();\n                  if (iVar9 != 0) {\n                    iVar11 = *(int *)(iVar6 + 0x18);\n                    if (iVar11 == 0) {\n                      iVar11 = *(int *)(iVar6 + 8);\n                    }\n                    uVar5 = FUN_000399f8(iVar9);\n                    FUN_000195a0(PTR_FUN_001311a4 + -0x6a2c,iVar11,uVar2,uVar5);\n                    return iVar9;\n                  }\n                }\n                *(uint *)(iVar6 + 0x14) = *(uint *)(iVar6 + 0x14) | 1;\n                iVar11 = 0;\n              }\n              else {\n                (*(code *)PTR_free_00132180)(iVar11);\n                iVar11 = 0;\n              }\n            }" { (if_statement "if ((*(uint *)(iVar6 + 0x14) & 1) == 0) {\n                iVar9 = FUN_00039834(uVar2,iVar11);\n                if (iVar9 == 0x11) {\n                  (*(code *)PTR_free_00132180)(iVar11);\n                }\n                else {\n                  (*(code *)PTR_free_00132180)();\n                  if (iVar9 != 0) {\n                    iVar11 = *(int *)(iVar6 + 0x18);\n                    if (iVar11 == 0) {\n                      iVar11 = *(int *)(iVar6 + 8);\n                    }\n                    uVar5 = FUN_000399f8(iVar9);\n                    FUN_000195a0(PTR_FUN_001311a4 + -0x6a2c,iVar11,uVar2,uVar5);\n                    return iVar9;\n                  }\n                }\n                *(uint *)(iVar6 + 0x14) = *(uint *)(iVar6 + 0x14) | 1;\n                iVar11 = 0;\n              }\n              else {\n                (*(code *)PTR_free_00132180)(iVar11);\n                iVar11 = 0;\n              }" if (parenthesized_expression "((*(uint *)(iVar6 + 0x14) & 1) == 0)" ( (binary_expression "(*(uint *)(iVar6 + 0x14) & 1) == 0" (parenthesized_expression "(*(uint *)(iVar6 + 0x14) & 1)" ( (binary_expression "*(uint *)(iVar6 + 0x14) & 1" (pointer_expression "*(uint *)(iVar6 + 0x14)" * (cast_expression "(uint *)(iVar6 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x14)" ( (binary_expression "iVar6 + 0x14" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n                iVar9 = FUN_00039834(uVar2,iVar11);\n                if (iVar9 == 0x11) {\n                  (*(code *)PTR_free_00132180)(iVar11);\n                }\n                else {\n                  (*(code *)PTR_free_00132180)();\n                  if (iVar9 != 0) {\n                    iVar11 = *(int *)(iVar6 + 0x18);\n                    if (iVar11 == 0) {\n                      iVar11 = *(int *)(iVar6 + 8);\n                    }\n                    uVar5 = FUN_000399f8(iVar9);\n                    FUN_000195a0(PTR_FUN_001311a4 + -0x6a2c,iVar11,uVar2,uVar5);\n                    return iVar9;\n                  }\n                }\n                *(uint *)(iVar6 + 0x14) = *(uint *)(iVar6 + 0x14) | 1;\n                iVar11 = 0;\n              }" { (expression_statement "iVar9 = FUN_00039834(uVar2,iVar11);" (assignment_expression "iVar9 = FUN_00039834(uVar2,iVar11)" identifier = (call_expression "FUN_00039834(uVar2,iVar11)" identifier (argument_list "(uVar2,iVar11)" ( identifier , identifier )))) ;) (if_statement "if (iVar9 == 0x11) {\n                  (*(code *)PTR_free_00132180)(iVar11);\n                }\n                else {\n                  (*(code *)PTR_free_00132180)();\n                  if (iVar9 != 0) {\n                    iVar11 = *(int *)(iVar6 + 0x18);\n                    if (iVar11 == 0) {\n                      iVar11 = *(int *)(iVar6 + 8);\n                    }\n                    uVar5 = FUN_000399f8(iVar9);\n                    FUN_000195a0(PTR_FUN_001311a4 + -0x6a2c,iVar11,uVar2,uVar5);\n                    return iVar9;\n                  }\n                }" if (parenthesized_expression "(iVar9 == 0x11)" ( (binary_expression "iVar9 == 0x11" identifier == number_literal) )) (compound_statement "{\n                  (*(code *)PTR_free_00132180)(iVar11);\n                }" { (expression_statement "(*(code *)PTR_free_00132180)(iVar11);" (call_expression "(*(code *)PTR_free_00132180)(iVar11)" (parenthesized_expression "(*(code *)PTR_free_00132180)" ( (pointer_expression "*(code *)PTR_free_00132180" * (cast_expression "(code *)PTR_free_00132180" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar11)" ( identifier ))) ;) }) (else_clause "else {\n                  (*(code *)PTR_free_00132180)();\n                  if (iVar9 != 0) {\n                    iVar11 = *(int *)(iVar6 + 0x18);\n                    if (iVar11 == 0) {\n                      iVar11 = *(int *)(iVar6 + 8);\n                    }\n                    uVar5 = FUN_000399f8(iVar9);\n                    FUN_000195a0(PTR_FUN_001311a4 + -0x6a2c,iVar11,uVar2,uVar5);\n                    return iVar9;\n                  }\n                }" else (compound_statement "{\n                  (*(code *)PTR_free_00132180)();\n                  if (iVar9 != 0) {\n                    iVar11 = *(int *)(iVar6 + 0x18);\n                    if (iVar11 == 0) {\n                      iVar11 = *(int *)(iVar6 + 8);\n                    }\n                    uVar5 = FUN_000399f8(iVar9);\n                    FUN_000195a0(PTR_FUN_001311a4 + -0x6a2c,iVar11,uVar2,uVar5);\n                    return iVar9;\n                  }\n                }" { (expression_statement "(*(code *)PTR_free_00132180)();" (call_expression "(*(code *)PTR_free_00132180)()" (parenthesized_expression "(*(code *)PTR_free_00132180)" ( (pointer_expression "*(code *)PTR_free_00132180" * (cast_expression "(code *)PTR_free_00132180" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (if_statement "if (iVar9 != 0) {\n                    iVar11 = *(int *)(iVar6 + 0x18);\n                    if (iVar11 == 0) {\n                      iVar11 = *(int *)(iVar6 + 8);\n                    }\n                    uVar5 = FUN_000399f8(iVar9);\n                    FUN_000195a0(PTR_FUN_001311a4 + -0x6a2c,iVar11,uVar2,uVar5);\n                    return iVar9;\n                  }" if (parenthesized_expression "(iVar9 != 0)" ( (binary_expression "iVar9 != 0" identifier != number_literal) )) (compound_statement "{\n                    iVar11 = *(int *)(iVar6 + 0x18);\n                    if (iVar11 == 0) {\n                      iVar11 = *(int *)(iVar6 + 8);\n                    }\n                    uVar5 = FUN_000399f8(iVar9);\n                    FUN_000195a0(PTR_FUN_001311a4 + -0x6a2c,iVar11,uVar2,uVar5);\n                    return iVar9;\n                  }" { (expression_statement "iVar11 = *(int *)(iVar6 + 0x18);" (assignment_expression "iVar11 = *(int *)(iVar6 + 0x18)" identifier = (pointer_expression "*(int *)(iVar6 + 0x18)" * (cast_expression "(int *)(iVar6 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x18)" ( (binary_expression "iVar6 + 0x18" identifier + number_literal) ))))) ;) (if_statement "if (iVar11 == 0) {\n                      iVar11 = *(int *)(iVar6 + 8);\n                    }" if (parenthesized_expression "(iVar11 == 0)" ( (binary_expression "iVar11 == 0" identifier == number_literal) )) (compound_statement "{\n                      iVar11 = *(int *)(iVar6 + 8);\n                    }" { (expression_statement "iVar11 = *(int *)(iVar6 + 8);" (assignment_expression "iVar11 = *(int *)(iVar6 + 8)" identifier = (pointer_expression "*(int *)(iVar6 + 8)" * (cast_expression "(int *)(iVar6 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 8)" ( (binary_expression "iVar6 + 8" identifier + number_literal) ))))) ;) })) (expression_statement "uVar5 = FUN_000399f8(iVar9);" (assignment_expression "uVar5 = FUN_000399f8(iVar9)" identifier = (call_expression "FUN_000399f8(iVar9)" identifier (argument_list "(iVar9)" ( identifier )))) ;) (expression_statement "FUN_000195a0(PTR_FUN_001311a4 + -0x6a2c,iVar11,uVar2,uVar5);" (call_expression "FUN_000195a0(PTR_FUN_001311a4 + -0x6a2c,iVar11,uVar2,uVar5)" identifier (argument_list "(PTR_FUN_001311a4 + -0x6a2c,iVar11,uVar2,uVar5)" ( (binary_expression "PTR_FUN_001311a4 + -0x6a2c" identifier + number_literal) , identifier , identifier , identifier ))) ;) (return_statement "return iVar9;" return identifier ;) })) }))) (expression_statement "*(uint *)(iVar6 + 0x14) = *(uint *)(iVar6 + 0x14) | 1;" (assignment_expression "*(uint *)(iVar6 + 0x14) = *(uint *)(iVar6 + 0x14) | 1" (pointer_expression "*(uint *)(iVar6 + 0x14)" * (cast_expression "(uint *)(iVar6 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x14)" ( (binary_expression "iVar6 + 0x14" identifier + number_literal) )))) = (binary_expression "*(uint *)(iVar6 + 0x14) | 1" (pointer_expression "*(uint *)(iVar6 + 0x14)" * (cast_expression "(uint *)(iVar6 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x14)" ( (binary_expression "iVar6 + 0x14" identifier + number_literal) )))) | number_literal)) ;) (expression_statement "iVar11 = 0;" (assignment_expression "iVar11 = 0" identifier = number_literal) ;) }) (else_clause "else {\n                (*(code *)PTR_free_00132180)(iVar11);\n                iVar11 = 0;\n              }" else (compound_statement "{\n                (*(code *)PTR_free_00132180)(iVar11);\n                iVar11 = 0;\n              }" { (expression_statement "(*(code *)PTR_free_00132180)(iVar11);" (call_expression "(*(code *)PTR_free_00132180)(iVar11)" (parenthesized_expression "(*(code *)PTR_free_00132180)" ( (pointer_expression "*(code *)PTR_free_00132180" * (cast_expression "(code *)PTR_free_00132180" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar11)" ( identifier ))) ;) (expression_statement "iVar11 = 0;" (assignment_expression "iVar11 = 0" identifier = number_literal) ;) }))) }) (else_clause "else {\n              if (iVar11 == 0) {\n                puVar10 = PTR_FUN_001311a4 + -0x6a6c;\n              }\n              else {\n                puVar10 = PTR_FUN_001311a4 + -0x6a80;\n              }\n              (*(code *)PTR___printf_chk_00131e4c)\n                        (1,puVar10,PTR_FUN_001311a4 + -0x6c8c,*(int *)PTR_DAT_00131330 + 0x8f,uVar2,\n                         iVar11);\n              (*(code *)PTR_free_00132180)(iVar11);\n              iVar11 = 0;\n            }" else (compound_statement "{\n              if (iVar11 == 0) {\n                puVar10 = PTR_FUN_001311a4 + -0x6a6c;\n              }\n              else {\n                puVar10 = PTR_FUN_001311a4 + -0x6a80;\n              }\n              (*(code *)PTR___printf_chk_00131e4c)\n                        (1,puVar10,PTR_FUN_001311a4 + -0x6c8c,*(int *)PTR_DAT_00131330 + 0x8f,uVar2,\n                         iVar11);\n              (*(code *)PTR_free_00132180)(iVar11);\n              iVar11 = 0;\n            }" { (if_statement "if (iVar11 == 0) {\n                puVar10 = PTR_FUN_001311a4 + -0x6a6c;\n              }\n              else {\n                puVar10 = PTR_FUN_001311a4 + -0x6a80;\n              }" if (parenthesized_expression "(iVar11 == 0)" ( (binary_expression "iVar11 == 0" identifier == number_literal) )) (compound_statement "{\n                puVar10 = PTR_FUN_001311a4 + -0x6a6c;\n              }" { (expression_statement "puVar10 = PTR_FUN_001311a4 + -0x6a6c;" (assignment_expression "puVar10 = PTR_FUN_001311a4 + -0x6a6c" identifier = (binary_expression "PTR_FUN_001311a4 + -0x6a6c" identifier + number_literal)) ;) }) (else_clause "else {\n                puVar10 = PTR_FUN_001311a4 + -0x6a80;\n              }" else (compound_statement "{\n                puVar10 = PTR_FUN_001311a4 + -0x6a80;\n              }" { (expression_statement "puVar10 = PTR_FUN_001311a4 + -0x6a80;" (assignment_expression "puVar10 = PTR_FUN_001311a4 + -0x6a80" identifier = (binary_expression "PTR_FUN_001311a4 + -0x6a80" identifier + number_literal)) ;) }))) (expression_statement "(*(code *)PTR___printf_chk_00131e4c)\n                        (1,puVar10,PTR_FUN_001311a4 + -0x6c8c,*(int *)PTR_DAT_00131330 + 0x8f,uVar2,\n                         iVar11);" (call_expression "(*(code *)PTR___printf_chk_00131e4c)\n                        (1,puVar10,PTR_FUN_001311a4 + -0x6c8c,*(int *)PTR_DAT_00131330 + 0x8f,uVar2,\n                         iVar11)" (parenthesized_expression "(*(code *)PTR___printf_chk_00131e4c)" ( (pointer_expression "*(code *)PTR___printf_chk_00131e4c" * (cast_expression "(code *)PTR___printf_chk_00131e4c" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(1,puVar10,PTR_FUN_001311a4 + -0x6c8c,*(int *)PTR_DAT_00131330 + 0x8f,uVar2,\n                         iVar11)" ( number_literal , identifier , (binary_expression "PTR_FUN_001311a4 + -0x6c8c" identifier + number_literal) , (binary_expression "*(int *)PTR_DAT_00131330 + 0x8f" (pointer_expression "*(int *)PTR_DAT_00131330" * (cast_expression "(int *)PTR_DAT_00131330" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + number_literal) , identifier , identifier ))) ;) (expression_statement "(*(code *)PTR_free_00132180)(iVar11);" (call_expression "(*(code *)PTR_free_00132180)(iVar11)" (parenthesized_expression "(*(code *)PTR_free_00132180)" ( (pointer_expression "*(code *)PTR_free_00132180" * (cast_expression "(code *)PTR_free_00132180" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(iVar11)" ( identifier ))) ;) (expression_statement "iVar11 = 0;" (assignment_expression "iVar11 = 0" identifier = number_literal) ;) }))) })) (if_statement "if ((*(uint *)(iVar6 + 0x14) & 1) != 0) break;" if (parenthesized_expression "((*(uint *)(iVar6 + 0x14) & 1) != 0)" ( (binary_expression "(*(uint *)(iVar6 + 0x14) & 1) != 0" (parenthesized_expression "(*(uint *)(iVar6 + 0x14) & 1)" ( (binary_expression "*(uint *)(iVar6 + 0x14) & 1" (pointer_expression "*(uint *)(iVar6 + 0x14)" * (cast_expression "(uint *)(iVar6 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x14)" ( (binary_expression "iVar6 + 0x14" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (break_statement "break;" break ;)) (expression_statement "bVar1 = false;" (assignment_expression "bVar1 = false" identifier = false) ;) (expression_statement "iVar11 = 0;" (assignment_expression "iVar11 = 0" identifier = number_literal) ;) })) (expression_statement "iVar11 = FUN_000399a0(*(undefined4 *)(iVar6 + 8),0x400);" (assignment_expression "iVar11 = FUN_000399a0(*(undefined4 *)(iVar6 + 8),0x400)" identifier = (call_expression "FUN_000399a0(*(undefined4 *)(iVar6 + 8),0x400)" identifier (argument_list "(*(undefined4 *)(iVar6 + 8),0x400)" ( (pointer_expression "*(undefined4 *)(iVar6 + 8)" * (cast_expression "(undefined4 *)(iVar6 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 8)" ( (binary_expression "iVar6 + 8" identifier + number_literal) )))) , number_literal )))) ;) (if_statement "if (iVar11 != 0) break;" if (parenthesized_expression "(iVar11 != 0)" ( (binary_expression "iVar11 != 0" identifier != number_literal) )) (break_statement "break;" break ;)) (expression_statement "*(uint *)(iVar6 + 0x14) = *(uint *)(iVar6 + 0x14) & 0xfffffffe;" (assignment_expression "*(uint *)(iVar6 + 0x14) = *(uint *)(iVar6 + 0x14) & 0xfffffffe" (pointer_expression "*(uint *)(iVar6 + 0x14)" * (cast_expression "(uint *)(iVar6 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x14)" ( (binary_expression "iVar6 + 0x14" identifier + number_literal) )))) = (binary_expression "*(uint *)(iVar6 + 0x14) & 0xfffffffe" (pointer_expression "*(uint *)(iVar6 + 0x14)" * (cast_expression "(uint *)(iVar6 + 0x14)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x14)" ( (binary_expression "iVar6 + 0x14" identifier + number_literal) )))) & number_literal)) ;) (expression_statement "bVar1 = false;" (assignment_expression "bVar1 = false" identifier = false) ;) })) }) while (parenthesized_expression "(!bVar1)" ( (unary_expression "!bVar1" ! identifier) )) ;) (expression_statement "iVar9 = *(int *)(iVar6 + 0x18);" (assignment_expression "iVar9 = *(int *)(iVar6 + 0x18)" identifier = (pointer_expression "*(int *)(iVar6 + 0x18)" * (cast_expression "(int *)(iVar6 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 0x18)" ( (binary_expression "iVar6 + 0x18" identifier + number_literal) ))))) ;) (if_statement "if (iVar9 == 0) {\n      iVar9 = *(int *)(iVar6 + 8);\n    }" if (parenthesized_expression "(iVar9 == 0)" ( (binary_expression "iVar9 == 0" identifier == number_literal) )) (compound_statement "{\n      iVar9 = *(int *)(iVar6 + 8);\n    }" { (expression_statement "iVar9 = *(int *)(iVar6 + 8);" (assignment_expression "iVar9 = *(int *)(iVar6 + 8)" identifier = (pointer_expression "*(int *)(iVar6 + 8)" * (cast_expression "(int *)(iVar6 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar6 + 8)" ( (binary_expression "iVar6 + 8" identifier + number_literal) ))))) ;) })) (expression_statement "FUN_00018f7c(PTR_FUN_001311a4 + -0x6a58,iVar9);" (call_expression "FUN_00018f7c(PTR_FUN_001311a4 + -0x6a58,iVar9)" identifier (argument_list "(PTR_FUN_001311a4 + -0x6a58,iVar9)" ( (binary_expression "PTR_FUN_001311a4 + -0x6a58" identifier + number_literal) , identifier ))) ;) }))) (return_statement "return iVar11;" return identifier ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) & LIT) )) == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }))) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) })) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) & LIT) )) == LIT) )) (compound_statement { (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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (do_statement do (compound_statement { (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) (compound_statement { (return_statement return IDENT ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) & LIT) )) != LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( (binary_expression IDENT + LIT) , LIT ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (for_statement for ( ; (binary_expression LIT < (pointer_expression * IDENT)) ; (assignment_expression IDENT = (binary_expression IDENT + LIT)) ) (compound_statement { })) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression & IDENT) + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + (binary_expression (binary_expression (parenthesized_expression ( IDENT )) * IDENT) * LIT)) + LIT) ))))) )))) )) (argument_list ( )))) ;) (return_statement return IDENT ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) + LIT) )))) )))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) & LIT) )) == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) == LIT) )) (compound_statement { (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 (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( 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 ( ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , IDENT , IDENT , IDENT ))) ;) (return_statement return IDENT ;) })) }))) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) | LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }) (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 (assignment_expression IDENT = LIT) ;) }))) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }))) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( LIT , IDENT , (binary_expression IDENT + LIT) , (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) + LIT) , IDENT , IDENT ))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }))) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) != LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = LIT) ;) })) (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) )))) , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (break_statement break ;)) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT)) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) })) }) while (parenthesized_expression ( (unary_expression ! IDENT) )) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) })) (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , IDENT ))) ;) }))) (return_statement return IDENT ;) })))
(function_definition "int FUN_000387b0(int param_1)\n\n{\n  bool bVar1;\n  undefined4 uVar2;\n  code *pcVar3;\n  code *pcVar4;\n  undefined4 uVar5;\n  int iVar6;\n  byte *pbVar7;\n  undefined *puVar8;\n  int iVar9;\n  undefined *puVar10;\n  int iVar11;\n  \n  if ((*(uint *)(param_1 + 0x14) & 4) == 0) {\n    iVar11 = -2;\n    if ((*(uint *)PTR_DAT_0013135c & 2) == 0) {\n      if ((*(uint *)(param_1 + 0x14) & 0x10) == 0) {\n        puVar8 = PTR_FUN_001311a4 + -0x6aa4;\n      }\n      else {\n        puVar8 = PTR_FUN_001311a4 + -0x6abc;\n      }\n      iVar11 = *(int *)(param_1 + 0x18);\n      if (iVar11 == 0) {\n        iVar11 = *(int *)(param_1 + 8);\n      }\n      FUN_000195a0(puVar8,iVar11);\n      iVar11 = -2;\n    }\n  }\n  else {\n    if ((*(uint *)PTR_DAT_0013135c & 0x20) == 0) {\n      uVar2 = FUN_00018edc(*(undefined4 *)(param_1 + 0xc));\n      *(undefined4 *)(param_1 + 0xc) = uVar2;\n    }\n    puVar8 = PTR_FUN_001311a4;\n    bVar1 = true;\n    iVar11 = 0;\n    pcVar3 = (code *)(PTR_LAB_00131488 + -0x7cf0);\n    pcVar4 = (code *)(PTR_LAB_00131488 + -0x7fc8);\n    do {\n      while( true ) {\n        while( true ) {\n          while( true ) {\n            if (*(int *)(param_1 + 0xc) == 0) {\n              return iVar11;\n            }\n            uVar2 = FUN_00018db0(param_1 + 0xc);\n            uVar5 = FUN_00018b68(uVar2);\n            iVar6 = (*pcVar3)(uVar5);\n            if ((*(uint *)PTR_DAT_0013135c & 0x20) != 0) break;\n            iVar11 = *(int *)(iVar6 + 0x1c);\n            *(undefined4 *)(iVar6 + 0x1c) = 0;\n            pbVar7 = (byte *)(*(code *)PTR_FUN_00131474)(PTR_FUN_001311a4 + -0x6a3c,0);\n            if (pbVar7 != (byte *)0x0) {\n              for (; 0x22 < *pbVar7; pbVar7 = pbVar7 + 1) {\n              }\n                    \n                    \n              iVar11 = (*(code *)(&_gp_1 + *(int *)(puVar8 + (uint)*pbVar7 * 4 + -0x6a0c)))();\n              return iVar11;\n            }\n            if (param_1 == iVar6) {\n              iVar11 = (*pcVar4)(iVar11,*(undefined4 *)(*(int *)PTR_DAT_00131330 + 4));\n            }\n            if ((*(uint *)PTR_DAT_0013135c & 0x40) == 0) {\n              if ((*(uint *)(iVar6 + 0x14) & 1) == 0) {\n                iVar9 = FUN_00039834(uVar2,iVar11);\n                if (iVar9 == 0x11) {\n                  (*(code *)PTR_free_00132180)(iVar11);\n                }\n                else {\n                  (*(code *)PTR_free_00132180)();\n                  if (iVar9 != 0) {\n                    iVar11 = *(int *)(iVar6 + 0x18);\n                    if (iVar11 == 0) {\n                      iVar11 = *(int *)(iVar6 + 8);\n                    }\n                    uVar5 = FUN_000399f8(iVar9);\n                    FUN_000195a0(PTR_FUN_001311a4 + -0x6a2c,iVar11,uVar2,uVar5);\n                    return iVar9;\n                  }\n                }\n                *(uint *)(iVar6 + 0x14) = *(uint *)(iVar6 + 0x14) | 1;\n                iVar11 = 0;\n              }\n              else {\n                (*(code *)PTR_free_00132180)(iVar11);\n                iVar11 = 0;\n              }\n            }\n            else {\n              if (iVar11 == 0) {\n                puVar10 = PTR_FUN_001311a4 + -0x6a6c;\n              }\n              else {\n                puVar10 = PTR_FUN_001311a4 + -0x6a80;\n              }\n              (*(code *)PTR___printf_chk_00131e4c)\n                        (1,puVar10,PTR_FUN_001311a4 + -0x6c8c,*(int *)PTR_DAT_00131330 + 0x8f,uVar2,\n                         iVar11);\n              (*(code *)PTR_free_00132180)(iVar11);\n              iVar11 = 0;\n            }\n          }\n          if ((*(uint *)(iVar6 + 0x14) & 1) != 0) break;\n          bVar1 = false;\n          iVar11 = 0;\n        }\n        iVar11 = FUN_000399a0(*(undefined4 *)(iVar6 + 8),0x400);\n        if (iVar11 != 0) break;\n        *(uint *)(iVar6 + 0x14) = *(uint *)(iVar6 + 0x14) & 0xfffffffe;\n        bVar1 = false;\n      }\n    } while (!bVar1);\n    iVar9 = *(int *)(iVar6 + 0x18);\n    if (iVar9 == 0) {\n      iVar9 = *(int *)(iVar6 + 8);\n    }\n    FUN_00018f7c(PTR_FUN_001311a4 + -0x6a58,iVar9);\n  }\n  return iVar11;\n}" (primitive_type "int") (function_declarator "FUN_000387b0(int param_1)" (identifier "FUN_000387b0") (parameter_list "(int param_1)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) () ")"))) (compound_statement "{\n  bool bVar1;\n  undefined4 uVar2;\n  code *pcVar3;\n  code *pcVar4;\n  undefined4 uVar5;\n  int iVar6;\n  byte *pbVar7;\n  undefined *puVar8;\n  int iVar9;\n  undefined *puVar10;\n  int iVar11;\n  \n  if ((*(uint *)(param_1 + 0x14) & 4) == 0) {\n    iVar11 = -2;\n    if ((*(uint *)PTR_DAT_0013135c & 2) == 0) {\n      if ((*(uint *)(param_1 + 0x14) & 0x10) == 0) {\n        puVar8 = PTR_FUN_001311a4 + -0x6aa4;\n      }\n      else {\n        puVar8 = PTR_FUN_001311a4 + -0x6abc;\n      }\n      iVar11 = *(int *)(param_1 + 0x18);\n      if (iVar11 == 0) {\n        iVar11 = *(int *)(param_1 + 8);\n      }\n      FUN_000195a0(puVar8,iVar11);\n      iVar11 = -2;\n    }\n  }\n  else {\n    if ((*(uint *)PTR_DAT_0013135c & 0x20) == 0) {\n      uVar2 = FUN_00018edc(*(undefined4 *)(param_1 + 0xc));\n      *(undefined4 *)(param_1 + 0xc) = uVar2;\n    }\n    puVar8 = PTR_FUN_001311a4;\n    bVar1 = true;\n    iVar11 = 0;\n    pcVar3 = (code *)(PTR_LAB_00131488 + -0x7cf0);\n    pcVar4 = (code *)(PTR_LAB_00131488 + -0x7fc8);\n    do {\n      while( true ) {\n        while( true ) {\n          while( true ) {\n            if (*(int *)(param_1 + 0xc) == 0) {\n              return iVar11;\n            }\n            uVar2 = FUN_00018db0(param_1 + 0xc);\n            uVar5 = FUN_00018b68(uVar2);\n            iVar6 = (*pcVar3)(uVar5);\n            if ((*(uint *)PTR_DAT_0013135c & 0x20) != 0) break;\n            iVar11 = *(int *)(iVar6 + 0x1c);\n            *(undefined4 *)(iVar6 + 0x1c) = 0;\n            pbVar7 = (byte *)(*(code *)PTR_FUN_00131474)(PTR_FUN_001311a4 + -0x6a3c,0);\n            if (pbVar7 != (byte *)0x0) {\n              for (; 0x22 < *pbVar7; pbVar7 = pbVar7 + 1) {\n              }\n                    \n                    \n              iVar11 = (*(code *)(&_gp_1 + *(int *)(puVar8 + (uint)*pbVar7 * 4 + -0x6a0c)))();\n              return iVar11;\n            }\n            if (param_1 == iVar6) {\n              iVar11 = (*pcVar4)(iVar11,*(undefined4 *)(*(int *)PTR_DAT_00131330 + 4));\n            }\n            if ((*(uint *)PTR_DAT_0013135c & 0x40) == 0) {\n              if ((*(uint *)(iVar6 + 0x14) & 1) == 0) {\n                iVar9 = FUN_00039834(uVar2,iVar11);\n                if (iVar9 == 0x11) {\n                  (*(code *)PTR_free_00132180)(iVar11);\n                }\n                else {\n                  (*(code *)PTR_free_00132180)();\n                  if (iVar9 != 0) {\n                    iVar11 = *(int *)(iVar6 + 0x18);\n                    if (iVar11 == 0) {\n                      iVar11 = *(int *)(iVar6 + 8);\n                    }\n                    uVar5 = FUN_000399f8(iVar9);\n                    FUN_000195a0(PTR_FUN_001311a4 + -0x6a2c,iVar11,uVar2,uVar5);\n                    return iVar9;\n                  }\n                }\n                *(uint *)(iVar6 + 0x14) = *(uint *)(iVar6 + 0x14) | 1;\n                iVar11 = 0;\n              }\n              else {\n                (*(code *)PTR_free_00132180)(iVar11);\n                iVar11 = 0;\n              }\n            }\n            else {\n              if (iVar11 == 0) {\n                puVar10 = PTR_FUN_001311a4 + -0x6a6c;\n              }\n              else {\n                puVar10 = PTR_FUN_001311a4 + -0x6a80;\n              }\n              (*(code *)PTR___printf_chk_00131e4c)\n                        (1,puVar10,PTR_FUN_001311a4 + -0x6c8c,*(int *)PTR_DAT_00131330 + 0x8f,uVar2,\n                         iVar11);\n              (*(code *)PTR_free_00132180)(iVar11);\n              iVar11 = 0;\n            }\n          }\n          if ((*(uint *)(iVar6 + 0x14) & 1) != 0) break;\n          bVar1 = false;\n          iVar11 = 0;\n        }\n        iVar11 = FUN_000399a0(*(undefined4 *)(iVar6 + 8),0x400);\n        if (iVar11 != 0) break;\n        *(uint *)(iVar6 + 0x14) = *(uint *)(iVar6 + 0x14) & 0xfffffffe;\n        bVar1 = false;\n      }\n    } while (!bVar1);\n    iVar9 = *(int *)(iVar6 + 0x18);\n    if (iVar9 == 0) {\n      iVar9 = *(int *)(iVar6 + 8);\n    }\n    FUN_00018f7c(PTR_FUN_001311a4 + -0x6a58,iVar9);\n  }\n  return iVar11;\n}" ({ "{") (declaration "bool bVar1;" (primitive_type "bool") (identifier "bVar1") (; ";")) (declaration "undefined4 uVar2;" (type_identifier "undefined4") (identifier "uVar2") (; ";")) (declaration "code *pcVar3;" (type_identifier "code") (pointer_declarator "*pcVar3" (* "*") (identifier "pcVar3")) (; ";")) (declaration "code *pcVar4;" (type_identifier "code") (pointer_declarator "*pcVar4" (* "*") (identifier "pcVar4")) (; ";")) (declaration "undefined4 uVar5;" (type_identifier "undefined4") (identifier "uVar5") (; ";")) (declaration "int iVar6;" (primitive_type "int") (identifier "iVar6") (; ";")) (declaration "byte *pbVar7;" (type_identifier "byte") (pointer_declarator "*pbVar7" (* "*") (identifier "pbVar7")) (; ";")) (declaration "undefined *puVar8;" (type_identifier "undefined") (pointer_declarator "*puVar8" (* "*") (identifier "puVar8")) (; ";")) (declaration "int iVar9;" (primitive_type "int") (identifier "iVar9") (; ";")) (declaration "undefined *puVar10;" (type_identifier "undefined") (pointer_declarator "*puVar10" (* "*") (identifier "puVar10")) (; ";")) (declaration "int iVar11;" (primitive_type "int") (identifier "iVar11") (; ";")) (if_statement "if ((*(uint *)(param_1 + 0x14) & 4) == 0) {\n    iVar11 = -2;\n    if ((*(uint *)PTR_DAT_0013135c & 2) == 0) {\n      if ((*(uint *)(param_1 + 0x14) & 0x10) == 0) {\n        puVar8 = PTR_FUN_001311a4 + -0x6aa4;\n      }\n      else {\n        puVar8 = PTR_FUN_001311a4 + -0x6abc;\n      }\n      iVar11 = *(int *)(param_1 + 0x18);\n      if (iVar11 == 0) {\n        iVar11 = *(int *)(param_1 + 8);\n      }\n      FUN_000195a0(puVar8,iVar11);\n      iVar11 = -2;\n    }\n  }\n  else {\n    if ((*(uint *)PTR_DAT_0013135c & 0x20) == 0) {\n      uVar2 = FUN_00018edc(*(undefined4 *)(param_1 + 0xc));\n      *(undefined4 *)(param_1 + 0xc) = uVar2;\n    }\n    puVar8 = PTR_FUN_001311a4;\n    bVar1 = true;\n    iVar11 = 0;\n    pcVar3 = (code *)(PTR_LAB_00131488 + -0x7cf0);\n    pcVar4 = (code *)(PTR_LAB_00131488 + -0x7fc8);\n    do {\n      while( true ) {\n        while( true ) {\n          while( true ) {\n            if (*(int *)(param_1 + 0xc) == 0) {\n              return iVar11;\n            }\n            uVar2 = FUN_00018db0(param_1 + 0xc);\n            uVar5 = FUN_00018b68(uVar2);\n            iVar6 = (*pcVar3)(uVar5);\n            if ((*(uint *)PTR_DAT_0013135c & 0x20) != 0) break;\n            iVar11 = *(int *)(iVar6 + 0x1c);\n            *(undefined4 *)(iVar6 + 0x1c) = 0;\n            pbVar7 = (byte *)(*(code *)PTR_FUN_00131474)(PTR_FUN_001311a4 + -0x6a3c,0);\n            if (pbVar7 != (byte *)0x0) {\n              for (; 0x22 < *pbVar7; pbVar7 = pbVar7 + 1) {\n              }\n                    \n                    \n              iVar11 = (*(code *)(&_gp_1 + *(int *)(puVar8 + (uint)*pbVar7 * 4 + -0x6a0c)))();\n              return iVar11;\n            }\n            if (param_1 == iVar6) {\n              iVar11 = (*pcVar4)(iVar11,*(undefined4 *)(*(int *)PTR_DAT_00131330 + 4));\n            }\n            if ((*(uint *)PTR_DAT_0013135c & 0x40) == 0) {\n              if ((*(uint *)(iVar6 + 0x14) & 1) == 0) {\n                iVar9 = FUN_00039834(uVar2,iVar11);\n                if (iVar9 == 0x11) {\n                  (*(code *)PTR_free_00132180)(iVar11);\n                }\n                else {\n                  (*(code *)PTR_free_00132180)();\n                  if (iVar9 != 0) {\n                    iVar11 = *(int *)(iVar6 + 0x18);\n                    if (iVar11 == 0) {\n                      iVar11 = *(int *)(iVar6 + 8);\n                    }\n                    uVar5 = FUN_000399f8(iVar9);\n                    FUN_000195a0(PTR_FUN_001311a4 + -0x6a2c,iVar11,uVar2,uVar5);\n                    return iVar9;\n                  }\n                }\n                *(uint *)(iVar6 + 0x14) = *(uint *)(iVar6 + 0x14) | 1;\n                iVar11 = 0;\n              }\n              else {\n                (*(code *)PTR_free_00132180)(iVar11);\n                iVar11 = 0;\n              }\n            }\n            else {\n              if (iVar11 == 0) {\n                puVar10 = PTR_FUN_001311a4 + -0x6a6c;\n              }\n              else {\n                puVar10 = PTR_FUN_001311a4 + -0x6a80;\n              }\n              (*(code *)PTR___printf_chk_00131e4c)\n                        (1,puVar10,PTR_FUN_001311a4 + -0x6c8c,*(int *)PTR_DAT_00131330 + 0x8f,uVar2,\n                         iVar11);\n              (*(code *)PTR_free_00132180)(iVar11);\n              iVar11 = 0;\n            }\n          }\n          if ((*(uint *)(iVar6 + 0x14) & 1) != 0) break;\n          bVar1 = false;\n          iVar11 = 0;\n        }\n        iVar11 = FUN_000399a0(*(undefined4 *)(iVar6 + 8),0x400);\n        if (iVar11 != 0) break;\n        *(uint *)(iVar6 + 0x14) = *(uint *)(iVar6 + 0x14) & 0xfffffffe;\n        bVar1 = false;\n      }\n    } while (!bVar1);\n    iVar9 = *(int *)(iVar6 + 0x18);\n    if (iVar9 == 0) {\n      iVar9 = *(int *)(iVar6 + 8);\n    }\n    FUN_00018f7c(PTR_FUN_001311a4 + -0x6a58,iVar9);\n  }" (if "if") (parenthesized_expression "((*(uint *)(param_1 + 0x14) & 4) == 0)" (( "(") (binary_expression "(*(uint *)(param_1 + 0x14) & 4) == 0" (parenthesized_expression "(*(uint *)(param_1 + 0x14) & 4)" (( "(") (binary_expression "*(uint *)(param_1 + 0x14) & 4" (pointer_expression "*(uint *)(param_1 + 0x14)" (* "*") (cast_expression "(uint *)(param_1 + 0x14)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x14)" (( "(") (binary_expression "param_1 + 0x14" (identifier "param_1") (+ "+") (number_literal "0x14")) () ")")))) (& "&") (number_literal "4")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    iVar11 = -2;\n    if ((*(uint *)PTR_DAT_0013135c & 2) == 0) {\n      if ((*(uint *)(param_1 + 0x14) & 0x10) == 0) {\n        puVar8 = PTR_FUN_001311a4 + -0x6aa4;\n      }\n      else {\n        puVar8 = PTR_FUN_001311a4 + -0x6abc;\n      }\n      iVar11 = *(int *)(param_1 + 0x18);\n      if (iVar11 == 0) {\n        iVar11 = *(int *)(param_1 + 8);\n      }\n      FUN_000195a0(puVar8,iVar11);\n      iVar11 = -2;\n    }\n  }" ({ "{") (expression_statement "iVar11 = -2;" (assignment_expression "iVar11 = -2" (identifier "iVar11") (= "=") (number_literal "-2")) (; ";")) (if_statement "if ((*(uint *)PTR_DAT_0013135c & 2) == 0) {\n      if ((*(uint *)(param_1 + 0x14) & 0x10) == 0) {\n        puVar8 = PTR_FUN_001311a4 + -0x6aa4;\n      }\n      else {\n        puVar8 = PTR_FUN_001311a4 + -0x6abc;\n      }\n      iVar11 = *(int *)(param_1 + 0x18);\n      if (iVar11 == 0) {\n        iVar11 = *(int *)(param_1 + 8);\n      }\n      FUN_000195a0(puVar8,iVar11);\n      iVar11 = -2;\n    }" (if "if") (parenthesized_expression "((*(uint *)PTR_DAT_0013135c & 2) == 0)" (( "(") (binary_expression "(*(uint *)PTR_DAT_0013135c & 2) == 0" (parenthesized_expression "(*(uint *)PTR_DAT_0013135c & 2)" (( "(") (binary_expression "*(uint *)PTR_DAT_0013135c & 2" (pointer_expression "*(uint *)PTR_DAT_0013135c" (* "*") (cast_expression "(uint *)PTR_DAT_0013135c" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_DAT_0013135c"))) (& "&") (number_literal "2")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      if ((*(uint *)(param_1 + 0x14) & 0x10) == 0) {\n        puVar8 = PTR_FUN_001311a4 + -0x6aa4;\n      }\n      else {\n        puVar8 = PTR_FUN_001311a4 + -0x6abc;\n      }\n      iVar11 = *(int *)(param_1 + 0x18);\n      if (iVar11 == 0) {\n        iVar11 = *(int *)(param_1 + 8);\n      }\n      FUN_000195a0(puVar8,iVar11);\n      iVar11 = -2;\n    }" ({ "{") (if_statement "if ((*(uint *)(param_1 + 0x14) & 0x10) == 0) {\n        puVar8 = PTR_FUN_001311a4 + -0x6aa4;\n      }\n      else {\n        puVar8 = PTR_FUN_001311a4 + -0x6abc;\n      }" (if "if") (parenthesized_expression "((*(uint *)(param_1 + 0x14) & 0x10) == 0)" (( "(") (binary_expression "(*(uint *)(param_1 + 0x14) & 0x10) == 0" (parenthesized_expression "(*(uint *)(param_1 + 0x14) & 0x10)" (( "(") (binary_expression "*(uint *)(param_1 + 0x14) & 0x10" (pointer_expression "*(uint *)(param_1 + 0x14)" (* "*") (cast_expression "(uint *)(param_1 + 0x14)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x14)" (( "(") (binary_expression "param_1 + 0x14" (identifier "param_1") (+ "+") (number_literal "0x14")) () ")")))) (& "&") (number_literal "0x10")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        puVar8 = PTR_FUN_001311a4 + -0x6aa4;\n      }" ({ "{") (expression_statement "puVar8 = PTR_FUN_001311a4 + -0x6aa4;" (assignment_expression "puVar8 = PTR_FUN_001311a4 + -0x6aa4" (identifier "puVar8") (= "=") (binary_expression "PTR_FUN_001311a4 + -0x6aa4" (identifier "PTR_FUN_001311a4") (+ "+") (number_literal "-0x6aa4"))) (; ";")) (} "}")) (else_clause "else {\n        puVar8 = PTR_FUN_001311a4 + -0x6abc;\n      }" (else "else") (compound_statement "{\n        puVar8 = PTR_FUN_001311a4 + -0x6abc;\n      }" ({ "{") (expression_statement "puVar8 = PTR_FUN_001311a4 + -0x6abc;" (assignment_expression "puVar8 = PTR_FUN_001311a4 + -0x6abc" (identifier "puVar8") (= "=") (binary_expression "PTR_FUN_001311a4 + -0x6abc" (identifier "PTR_FUN_001311a4") (+ "+") (number_literal "-0x6abc"))) (; ";")) (} "}")))) (expression_statement "iVar11 = *(int *)(param_1 + 0x18);" (assignment_expression "iVar11 = *(int *)(param_1 + 0x18)" (identifier "iVar11") (= "=") (pointer_expression "*(int *)(param_1 + 0x18)" (* "*") (cast_expression "(int *)(param_1 + 0x18)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x18)" (( "(") (binary_expression "param_1 + 0x18" (identifier "param_1") (+ "+") (number_literal "0x18")) () ")"))))) (; ";")) (if_statement "if (iVar11 == 0) {\n        iVar11 = *(int *)(param_1 + 8);\n      }" (if "if") (parenthesized_expression "(iVar11 == 0)" (( "(") (binary_expression "iVar11 == 0" (identifier "iVar11") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        iVar11 = *(int *)(param_1 + 8);\n      }" ({ "{") (expression_statement "iVar11 = *(int *)(param_1 + 8);" (assignment_expression "iVar11 = *(int *)(param_1 + 8)" (identifier "iVar11") (= "=") (pointer_expression "*(int *)(param_1 + 8)" (* "*") (cast_expression "(int *)(param_1 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (} "}"))) (expression_statement "FUN_000195a0(puVar8,iVar11);" (call_expression "FUN_000195a0(puVar8,iVar11)" (identifier "FUN_000195a0") (argument_list "(puVar8,iVar11)" (( "(") (identifier "puVar8") (, ",") (identifier "iVar11") () ")"))) (; ";")) (expression_statement "iVar11 = -2;" (assignment_expression "iVar11 = -2" (identifier "iVar11") (= "=") (number_literal "-2")) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n    if ((*(uint *)PTR_DAT_0013135c & 0x20) == 0) {\n      uVar2 = FUN_00018edc(*(undefined4 *)(param_1 + 0xc));\n      *(undefined4 *)(param_1 + 0xc) = uVar2;\n    }\n    puVar8 = PTR_FUN_001311a4;\n    bVar1 = true;\n    iVar11 = 0;\n    pcVar3 = (code *)(PTR_LAB_00131488 + -0x7cf0);\n    pcVar4 = (code *)(PTR_LAB_00131488 + -0x7fc8);\n    do {\n      while( true ) {\n        while( true ) {\n          while( true ) {\n            if (*(int *)(param_1 + 0xc) == 0) {\n              return iVar11;\n            }\n            uVar2 = FUN_00018db0(param_1 + 0xc);\n            uVar5 = FUN_00018b68(uVar2);\n            iVar6 = (*pcVar3)(uVar5);\n            if ((*(uint *)PTR_DAT_0013135c & 0x20) != 0) break;\n            iVar11 = *(int *)(iVar6 + 0x1c);\n            *(undefined4 *)(iVar6 + 0x1c) = 0;\n            pbVar7 = (byte *)(*(code *)PTR_FUN_00131474)(PTR_FUN_001311a4 + -0x6a3c,0);\n            if (pbVar7 != (byte *)0x0) {\n              for (; 0x22 < *pbVar7; pbVar7 = pbVar7 + 1) {\n              }\n                    \n                    \n              iVar11 = (*(code *)(&_gp_1 + *(int *)(puVar8 + (uint)*pbVar7 * 4 + -0x6a0c)))();\n              return iVar11;\n            }\n            if (param_1 == iVar6) {\n              iVar11 = (*pcVar4)(iVar11,*(undefined4 *)(*(int *)PTR_DAT_00131330 + 4));\n            }\n            if ((*(uint *)PTR_DAT_0013135c & 0x40) == 0) {\n              if ((*(uint *)(iVar6 + 0x14) & 1) == 0) {\n                iVar9 = FUN_00039834(uVar2,iVar11);\n                if (iVar9 == 0x11) {\n                  (*(code *)PTR_free_00132180)(iVar11);\n                }\n                else {\n                  (*(code *)PTR_free_00132180)();\n                  if (iVar9 != 0) {\n                    iVar11 = *(int *)(iVar6 + 0x18);\n                    if (iVar11 == 0) {\n                      iVar11 = *(int *)(iVar6 + 8);\n                    }\n                    uVar5 = FUN_000399f8(iVar9);\n                    FUN_000195a0(PTR_FUN_001311a4 + -0x6a2c,iVar11,uVar2,uVar5);\n                    return iVar9;\n                  }\n                }\n                *(uint *)(iVar6 + 0x14) = *(uint *)(iVar6 + 0x14) | 1;\n                iVar11 = 0;\n              }\n              else {\n                (*(code *)PTR_free_00132180)(iVar11);\n                iVar11 = 0;\n              }\n            }\n            else {\n              if (iVar11 == 0) {\n                puVar10 = PTR_FUN_001311a4 + -0x6a6c;\n              }\n              else {\n                puVar10 = PTR_FUN_001311a4 + -0x6a80;\n              }\n              (*(code *)PTR___printf_chk_00131e4c)\n                        (1,puVar10,PTR_FUN_001311a4 + -0x6c8c,*(int *)PTR_DAT_00131330 + 0x8f,uVar2,\n                         iVar11);\n              (*(code *)PTR_free_00132180)(iVar11);\n              iVar11 = 0;\n            }\n          }\n          if ((*(uint *)(iVar6 + 0x14) & 1) != 0) break;\n          bVar1 = false;\n          iVar11 = 0;\n        }\n        iVar11 = FUN_000399a0(*(undefined4 *)(iVar6 + 8),0x400);\n        if (iVar11 != 0) break;\n        *(uint *)(iVar6 + 0x14) = *(uint *)(iVar6 + 0x14) & 0xfffffffe;\n        bVar1 = false;\n      }\n    } while (!bVar1);\n    iVar9 = *(int *)(iVar6 + 0x18);\n    if (iVar9 == 0) {\n      iVar9 = *(int *)(iVar6 + 8);\n    }\n    FUN_00018f7c(PTR_FUN_001311a4 + -0x6a58,iVar9);\n  }" (else "else") (compound_statement "{\n    if ((*(uint *)PTR_DAT_0013135c & 0x20) == 0) {\n      uVar2 = FUN_00018edc(*(undefined4 *)(param_1 + 0xc));\n      *(undefined4 *)(param_1 + 0xc) = uVar2;\n    }\n    puVar8 = PTR_FUN_001311a4;\n    bVar1 = true;\n    iVar11 = 0;\n    pcVar3 = (code *)(PTR_LAB_00131488 + -0x7cf0);\n    pcVar4 = (code *)(PTR_LAB_00131488 + -0x7fc8);\n    do {\n      while( true ) {\n        while( true ) {\n          while( true ) {\n            if (*(int *)(param_1 + 0xc) == 0) {\n              return iVar11;\n            }\n            uVar2 = FUN_00018db0(param_1 + 0xc);\n            uVar5 = FUN_00018b68(uVar2);\n            iVar6 = (*pcVar3)(uVar5);\n            if ((*(uint *)PTR_DAT_0013135c & 0x20) != 0) break;\n            iVar11 = *(int *)(iVar6 + 0x1c);\n            *(undefined4 *)(iVar6 + 0x1c) = 0;\n            pbVar7 = (byte *)(*(code *)PTR_FUN_00131474)(PTR_FUN_001311a4 + -0x6a3c,0);\n            if (pbVar7 != (byte *)0x0) {\n              for (; 0x22 < *pbVar7; pbVar7 = pbVar7 + 1) {\n              }\n                    \n                    \n              iVar11 = (*(code *)(&_gp_1 + *(int *)(puVar8 + (uint)*pbVar7 * 4 + -0x6a0c)))();\n              return iVar11;\n            }\n            if (param_1 == iVar6) {\n              iVar11 = (*pcVar4)(iVar11,*(undefined4 *)(*(int *)PTR_DAT_00131330 + 4));\n            }\n            if ((*(uint *)PTR_DAT_0013135c & 0x40) == 0) {\n              if ((*(uint *)(iVar6 + 0x14) & 1) == 0) {\n                iVar9 = FUN_00039834(uVar2,iVar11);\n                if (iVar9 == 0x11) {\n                  (*(code *)PTR_free_00132180)(iVar11);\n                }\n                else {\n                  (*(code *)PTR_free_00132180)();\n                  if (iVar9 != 0) {\n                    iVar11 = *(int *)(iVar6 + 0x18);\n                    if (iVar11 == 0) {\n                      iVar11 = *(int *)(iVar6 + 8);\n                    }\n                    uVar5 = FUN_000399f8(iVar9);\n                    FUN_000195a0(PTR_FUN_001311a4 + -0x6a2c,iVar11,uVar2,uVar5);\n                    return iVar9;\n                  }\n                }\n                *(uint *)(iVar6 + 0x14) = *(uint *)(iVar6 + 0x14) | 1;\n                iVar11 = 0;\n              }\n              else {\n                (*(code *)PTR_free_00132180)(iVar11);\n                iVar11 = 0;\n              }\n            }\n            else {\n              if (iVar11 == 0) {\n                puVar10 = PTR_FUN_001311a4 + -0x6a6c;\n              }\n              else {\n                puVar10 = PTR_FUN_001311a4 + -0x6a80;\n              }\n              (*(code *)PTR___printf_chk_00131e4c)\n                        (1,puVar10,PTR_FUN_001311a4 + -0x6c8c,*(int *)PTR_DAT_00131330 + 0x8f,uVar2,\n                         iVar11);\n              (*(code *)PTR_free_00132180)(iVar11);\n              iVar11 = 0;\n            }\n          }\n          if ((*(uint *)(iVar6 + 0x14) & 1) != 0) break;\n          bVar1 = false;\n          iVar11 = 0;\n        }\n        iVar11 = FUN_000399a0(*(undefined4 *)(iVar6 + 8),0x400);\n        if (iVar11 != 0) break;\n        *(uint *)(iVar6 + 0x14) = *(uint *)(iVar6 + 0x14) & 0xfffffffe;\n        bVar1 = false;\n      }\n    } while (!bVar1);\n    iVar9 = *(int *)(iVar6 + 0x18);\n    if (iVar9 == 0) {\n      iVar9 = *(int *)(iVar6 + 8);\n    }\n    FUN_00018f7c(PTR_FUN_001311a4 + -0x6a58,iVar9);\n  }" ({ "{") (if_statement "if ((*(uint *)PTR_DAT_0013135c & 0x20) == 0) {\n      uVar2 = FUN_00018edc(*(undefined4 *)(param_1 + 0xc));\n      *(undefined4 *)(param_1 + 0xc) = uVar2;\n    }" (if "if") (parenthesized_expression "((*(uint *)PTR_DAT_0013135c & 0x20) == 0)" (( "(") (binary_expression "(*(uint *)PTR_DAT_0013135c & 0x20) == 0" (parenthesized_expression "(*(uint *)PTR_DAT_0013135c & 0x20)" (( "(") (binary_expression "*(uint *)PTR_DAT_0013135c & 0x20" (pointer_expression "*(uint *)PTR_DAT_0013135c" (* "*") (cast_expression "(uint *)PTR_DAT_0013135c" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_DAT_0013135c"))) (& "&") (number_literal "0x20")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      uVar2 = FUN_00018edc(*(undefined4 *)(param_1 + 0xc));\n      *(undefined4 *)(param_1 + 0xc) = uVar2;\n    }" ({ "{") (expression_statement "uVar2 = FUN_00018edc(*(undefined4 *)(param_1 + 0xc));" (assignment_expression "uVar2 = FUN_00018edc(*(undefined4 *)(param_1 + 0xc))" (identifier "uVar2") (= "=") (call_expression "FUN_00018edc(*(undefined4 *)(param_1 + 0xc))" (identifier "FUN_00018edc") (argument_list "(*(undefined4 *)(param_1 + 0xc))" (( "(") (pointer_expression "*(undefined4 *)(param_1 + 0xc)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xc)" (( "(") (binary_expression "param_1 + 0xc" (identifier "param_1") (+ "+") (number_literal "0xc")) () ")")))) () ")")))) (; ";")) (expression_statement "*(undefined4 *)(param_1 + 0xc) = uVar2;" (assignment_expression "*(undefined4 *)(param_1 + 0xc) = uVar2" (pointer_expression "*(undefined4 *)(param_1 + 0xc)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xc)" (( "(") (binary_expression "param_1 + 0xc" (identifier "param_1") (+ "+") (number_literal "0xc")) () ")")))) (= "=") (identifier "uVar2")) (; ";")) (} "}"))) (expression_statement "puVar8 = PTR_FUN_001311a4;" (assignment_expression "puVar8 = PTR_FUN_001311a4" (identifier "puVar8") (= "=") (identifier "PTR_FUN_001311a4")) (; ";")) (expression_statement "bVar1 = true;" (assignment_expression "bVar1 = true" (identifier "bVar1") (= "=") (true "true")) (; ";")) (expression_statement "iVar11 = 0;" (assignment_expression "iVar11 = 0" (identifier "iVar11") (= "=") (number_literal "0")) (; ";")) (expression_statement "pcVar3 = (code *)(PTR_LAB_00131488 + -0x7cf0);" (assignment_expression "pcVar3 = (code *)(PTR_LAB_00131488 + -0x7cf0)" (identifier "pcVar3") (= "=") (cast_expression "(code *)(PTR_LAB_00131488 + -0x7cf0)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_LAB_00131488 + -0x7cf0)" (( "(") (binary_expression "PTR_LAB_00131488 + -0x7cf0" (identifier "PTR_LAB_00131488") (+ "+") (number_literal "-0x7cf0")) () ")")))) (; ";")) (expression_statement "pcVar4 = (code *)(PTR_LAB_00131488 + -0x7fc8);" (assignment_expression "pcVar4 = (code *)(PTR_LAB_00131488 + -0x7fc8)" (identifier "pcVar4") (= "=") (cast_expression "(code *)(PTR_LAB_00131488 + -0x7fc8)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_LAB_00131488 + -0x7fc8)" (( "(") (binary_expression "PTR_LAB_00131488 + -0x7fc8" (identifier "PTR_LAB_00131488") (+ "+") (number_literal "-0x7fc8")) () ")")))) (; ";")) (do_statement "do {\n      while( true ) {\n        while( true ) {\n          while( true ) {\n            if (*(int *)(param_1 + 0xc) == 0) {\n              return iVar11;\n            }\n            uVar2 = FUN_00018db0(param_1 + 0xc);\n            uVar5 = FUN_00018b68(uVar2);\n            iVar6 = (*pcVar3)(uVar5);\n            if ((*(uint *)PTR_DAT_0013135c & 0x20) != 0) break;\n            iVar11 = *(int *)(iVar6 + 0x1c);\n            *(undefined4 *)(iVar6 + 0x1c) = 0;\n            pbVar7 = (byte *)(*(code *)PTR_FUN_00131474)(PTR_FUN_001311a4 + -0x6a3c,0);\n            if (pbVar7 != (byte *)0x0) {\n              for (; 0x22 < *pbVar7; pbVar7 = pbVar7 + 1) {\n              }\n                    \n                    \n              iVar11 = (*(code *)(&_gp_1 + *(int *)(puVar8 + (uint)*pbVar7 * 4 + -0x6a0c)))();\n              return iVar11;\n            }\n            if (param_1 == iVar6) {\n              iVar11 = (*pcVar4)(iVar11,*(undefined4 *)(*(int *)PTR_DAT_00131330 + 4));\n            }\n            if ((*(uint *)PTR_DAT_0013135c & 0x40) == 0) {\n              if ((*(uint *)(iVar6 + 0x14) & 1) == 0) {\n                iVar9 = FUN_00039834(uVar2,iVar11);\n                if (iVar9 == 0x11) {\n                  (*(code *)PTR_free_00132180)(iVar11);\n                }\n                else {\n                  (*(code *)PTR_free_00132180)();\n                  if (iVar9 != 0) {\n                    iVar11 = *(int *)(iVar6 + 0x18);\n                    if (iVar11 == 0) {\n                      iVar11 = *(int *)(iVar6 + 8);\n                    }\n                    uVar5 = FUN_000399f8(iVar9);\n                    FUN_000195a0(PTR_FUN_001311a4 + -0x6a2c,iVar11,uVar2,uVar5);\n                    return iVar9;\n                  }\n                }\n                *(uint *)(iVar6 + 0x14) = *(uint *)(iVar6 + 0x14) | 1;\n                iVar11 = 0;\n              }\n              else {\n                (*(code *)PTR_free_00132180)(iVar11);\n                iVar11 = 0;\n              }\n            }\n            else {\n              if (iVar11 == 0) {\n                puVar10 = PTR_FUN_001311a4 + -0x6a6c;\n              }\n              else {\n                puVar10 = PTR_FUN_001311a4 + -0x6a80;\n              }\n              (*(code *)PTR___printf_chk_00131e4c)\n                        (1,puVar10,PTR_FUN_001311a4 + -0x6c8c,*(int *)PTR_DAT_00131330 + 0x8f,uVar2,\n                         iVar11);\n              (*(code *)PTR_free_00132180)(iVar11);\n              iVar11 = 0;\n            }\n          }\n          if ((*(uint *)(iVar6 + 0x14) & 1) != 0) break;\n          bVar1 = false;\n          iVar11 = 0;\n        }\n        iVar11 = FUN_000399a0(*(undefined4 *)(iVar6 + 8),0x400);\n        if (iVar11 != 0) break;\n        *(uint *)(iVar6 + 0x14) = *(uint *)(iVar6 + 0x14) & 0xfffffffe;\n        bVar1 = false;\n      }\n    } while (!bVar1);" (do "do") (compound_statement "{\n      while( true ) {\n        while( true ) {\n          while( true ) {\n            if (*(int *)(param_1 + 0xc) == 0) {\n              return iVar11;\n            }\n            uVar2 = FUN_00018db0(param_1 + 0xc);\n            uVar5 = FUN_00018b68(uVar2);\n            iVar6 = (*pcVar3)(uVar5);\n            if ((*(uint *)PTR_DAT_0013135c & 0x20) != 0) break;\n            iVar11 = *(int *)(iVar6 + 0x1c);\n            *(undefined4 *)(iVar6 + 0x1c) = 0;\n            pbVar7 = (byte *)(*(code *)PTR_FUN_00131474)(PTR_FUN_001311a4 + -0x6a3c,0);\n            if (pbVar7 != (byte *)0x0) {\n              for (; 0x22 < *pbVar7; pbVar7 = pbVar7 + 1) {\n              }\n                    \n                    \n              iVar11 = (*(code *)(&_gp_1 + *(int *)(puVar8 + (uint)*pbVar7 * 4 + -0x6a0c)))();\n              return iVar11;\n            }\n            if (param_1 == iVar6) {\n              iVar11 = (*pcVar4)(iVar11,*(undefined4 *)(*(int *)PTR_DAT_00131330 + 4));\n            }\n            if ((*(uint *)PTR_DAT_0013135c & 0x40) == 0) {\n              if ((*(uint *)(iVar6 + 0x14) & 1) == 0) {\n                iVar9 = FUN_00039834(uVar2,iVar11);\n                if (iVar9 == 0x11) {\n                  (*(code *)PTR_free_00132180)(iVar11);\n                }\n                else {\n                  (*(code *)PTR_free_00132180)();\n                  if (iVar9 != 0) {\n                    iVar11 = *(int *)(iVar6 + 0x18);\n                    if (iVar11 == 0) {\n                      iVar11 = *(int *)(iVar6 + 8);\n                    }\n                    uVar5 = FUN_000399f8(iVar9);\n                    FUN_000195a0(PTR_FUN_001311a4 + -0x6a2c,iVar11,uVar2,uVar5);\n                    return iVar9;\n                  }\n                }\n                *(uint *)(iVar6 + 0x14) = *(uint *)(iVar6 + 0x14) | 1;\n                iVar11 = 0;\n              }\n              else {\n                (*(code *)PTR_free_00132180)(iVar11);\n                iVar11 = 0;\n              }\n            }\n            else {\n              if (iVar11 == 0) {\n                puVar10 = PTR_FUN_001311a4 + -0x6a6c;\n              }\n              else {\n                puVar10 = PTR_FUN_001311a4 + -0x6a80;\n              }\n              (*(code *)PTR___printf_chk_00131e4c)\n                        (1,puVar10,PTR_FUN_001311a4 + -0x6c8c,*(int *)PTR_DAT_00131330 + 0x8f,uVar2,\n                         iVar11);\n              (*(code *)PTR_free_00132180)(iVar11);\n              iVar11 = 0;\n            }\n          }\n          if ((*(uint *)(iVar6 + 0x14) & 1) != 0) break;\n          bVar1 = false;\n          iVar11 = 0;\n        }\n        iVar11 = FUN_000399a0(*(undefined4 *)(iVar6 + 8),0x400);\n        if (iVar11 != 0) break;\n        *(uint *)(iVar6 + 0x14) = *(uint *)(iVar6 + 0x14) & 0xfffffffe;\n        bVar1 = false;\n      }\n    }" ({ "{") (while_statement "while( true ) {\n        while( true ) {\n          while( true ) {\n            if (*(int *)(param_1 + 0xc) == 0) {\n              return iVar11;\n            }\n            uVar2 = FUN_00018db0(param_1 + 0xc);\n            uVar5 = FUN_00018b68(uVar2);\n            iVar6 = (*pcVar3)(uVar5);\n            if ((*(uint *)PTR_DAT_0013135c & 0x20) != 0) break;\n            iVar11 = *(int *)(iVar6 + 0x1c);\n            *(undefined4 *)(iVar6 + 0x1c) = 0;\n            pbVar7 = (byte *)(*(code *)PTR_FUN_00131474)(PTR_FUN_001311a4 + -0x6a3c,0);\n            if (pbVar7 != (byte *)0x0) {\n              for (; 0x22 < *pbVar7; pbVar7 = pbVar7 + 1) {\n              }\n                    \n                    \n              iVar11 = (*(code *)(&_gp_1 + *(int *)(puVar8 + (uint)*pbVar7 * 4 + -0x6a0c)))();\n              return iVar11;\n            }\n            if (param_1 == iVar6) {\n              iVar11 = (*pcVar4)(iVar11,*(undefined4 *)(*(int *)PTR_DAT_00131330 + 4));\n            }\n            if ((*(uint *)PTR_DAT_0013135c & 0x40) == 0) {\n              if ((*(uint *)(iVar6 + 0x14) & 1) == 0) {\n                iVar9 = FUN_00039834(uVar2,iVar11);\n                if (iVar9 == 0x11) {\n                  (*(code *)PTR_free_00132180)(iVar11);\n                }\n                else {\n                  (*(code *)PTR_free_00132180)();\n                  if (iVar9 != 0) {\n                    iVar11 = *(int *)(iVar6 + 0x18);\n                    if (iVar11 == 0) {\n                      iVar11 = *(int *)(iVar6 + 8);\n                    }\n                    uVar5 = FUN_000399f8(iVar9);\n                    FUN_000195a0(PTR_FUN_001311a4 + -0x6a2c,iVar11,uVar2,uVar5);\n                    return iVar9;\n                  }\n                }\n                *(uint *)(iVar6 + 0x14) = *(uint *)(iVar6 + 0x14) | 1;\n                iVar11 = 0;\n              }\n              else {\n                (*(code *)PTR_free_00132180)(iVar11);\n                iVar11 = 0;\n              }\n            }\n            else {\n              if (iVar11 == 0) {\n                puVar10 = PTR_FUN_001311a4 + -0x6a6c;\n              }\n              else {\n                puVar10 = PTR_FUN_001311a4 + -0x6a80;\n              }\n              (*(code *)PTR___printf_chk_00131e4c)\n                        (1,puVar10,PTR_FUN_001311a4 + -0x6c8c,*(int *)PTR_DAT_00131330 + 0x8f,uVar2,\n                         iVar11);\n              (*(code *)PTR_free_00132180)(iVar11);\n              iVar11 = 0;\n            }\n          }\n          if ((*(uint *)(iVar6 + 0x14) & 1) != 0) break;\n          bVar1 = false;\n          iVar11 = 0;\n        }\n        iVar11 = FUN_000399a0(*(undefined4 *)(iVar6 + 8),0x400);\n        if (iVar11 != 0) break;\n        *(uint *)(iVar6 + 0x14) = *(uint *)(iVar6 + 0x14) & 0xfffffffe;\n        bVar1 = false;\n      }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n        while( true ) {\n          while( true ) {\n            if (*(int *)(param_1 + 0xc) == 0) {\n              return iVar11;\n            }\n            uVar2 = FUN_00018db0(param_1 + 0xc);\n            uVar5 = FUN_00018b68(uVar2);\n            iVar6 = (*pcVar3)(uVar5);\n            if ((*(uint *)PTR_DAT_0013135c & 0x20) != 0) break;\n            iVar11 = *(int *)(iVar6 + 0x1c);\n            *(undefined4 *)(iVar6 + 0x1c) = 0;\n            pbVar7 = (byte *)(*(code *)PTR_FUN_00131474)(PTR_FUN_001311a4 + -0x6a3c,0);\n            if (pbVar7 != (byte *)0x0) {\n              for (; 0x22 < *pbVar7; pbVar7 = pbVar7 + 1) {\n              }\n                    \n                    \n              iVar11 = (*(code *)(&_gp_1 + *(int *)(puVar8 + (uint)*pbVar7 * 4 + -0x6a0c)))();\n              return iVar11;\n            }\n            if (param_1 == iVar6) {\n              iVar11 = (*pcVar4)(iVar11,*(undefined4 *)(*(int *)PTR_DAT_00131330 + 4));\n            }\n            if ((*(uint *)PTR_DAT_0013135c & 0x40) == 0) {\n              if ((*(uint *)(iVar6 + 0x14) & 1) == 0) {\n                iVar9 = FUN_00039834(uVar2,iVar11);\n                if (iVar9 == 0x11) {\n                  (*(code *)PTR_free_00132180)(iVar11);\n                }\n                else {\n                  (*(code *)PTR_free_00132180)();\n                  if (iVar9 != 0) {\n                    iVar11 = *(int *)(iVar6 + 0x18);\n                    if (iVar11 == 0) {\n                      iVar11 = *(int *)(iVar6 + 8);\n                    }\n                    uVar5 = FUN_000399f8(iVar9);\n                    FUN_000195a0(PTR_FUN_001311a4 + -0x6a2c,iVar11,uVar2,uVar5);\n                    return iVar9;\n                  }\n                }\n                *(uint *)(iVar6 + 0x14) = *(uint *)(iVar6 + 0x14) | 1;\n                iVar11 = 0;\n              }\n              else {\n                (*(code *)PTR_free_00132180)(iVar11);\n                iVar11 = 0;\n              }\n            }\n            else {\n              if (iVar11 == 0) {\n                puVar10 = PTR_FUN_001311a4 + -0x6a6c;\n              }\n              else {\n                puVar10 = PTR_FUN_001311a4 + -0x6a80;\n              }\n              (*(code *)PTR___printf_chk_00131e4c)\n                        (1,puVar10,PTR_FUN_001311a4 + -0x6c8c,*(int *)PTR_DAT_00131330 + 0x8f,uVar2,\n                         iVar11);\n              (*(code *)PTR_free_00132180)(iVar11);\n              iVar11 = 0;\n            }\n          }\n          if ((*(uint *)(iVar6 + 0x14) & 1) != 0) break;\n          bVar1 = false;\n          iVar11 = 0;\n        }\n        iVar11 = FUN_000399a0(*(undefined4 *)(iVar6 + 8),0x400);\n        if (iVar11 != 0) break;\n        *(uint *)(iVar6 + 0x14) = *(uint *)(iVar6 + 0x14) & 0xfffffffe;\n        bVar1 = false;\n      }" ({ "{") (while_statement "while( true ) {\n          while( true ) {\n            if (*(int *)(param_1 + 0xc) == 0) {\n              return iVar11;\n            }\n            uVar2 = FUN_00018db0(param_1 + 0xc);\n            uVar5 = FUN_00018b68(uVar2);\n            iVar6 = (*pcVar3)(uVar5);\n            if ((*(uint *)PTR_DAT_0013135c & 0x20) != 0) break;\n            iVar11 = *(int *)(iVar6 + 0x1c);\n            *(undefined4 *)(iVar6 + 0x1c) = 0;\n            pbVar7 = (byte *)(*(code *)PTR_FUN_00131474)(PTR_FUN_001311a4 + -0x6a3c,0);\n            if (pbVar7 != (byte *)0x0) {\n              for (; 0x22 < *pbVar7; pbVar7 = pbVar7 + 1) {\n              }\n                    \n                    \n              iVar11 = (*(code *)(&_gp_1 + *(int *)(puVar8 + (uint)*pbVar7 * 4 + -0x6a0c)))();\n              return iVar11;\n            }\n            if (param_1 == iVar6) {\n              iVar11 = (*pcVar4)(iVar11,*(undefined4 *)(*(int *)PTR_DAT_00131330 + 4));\n            }\n            if ((*(uint *)PTR_DAT_0013135c & 0x40) == 0) {\n              if ((*(uint *)(iVar6 + 0x14) & 1) == 0) {\n                iVar9 = FUN_00039834(uVar2,iVar11);\n                if (iVar9 == 0x11) {\n                  (*(code *)PTR_free_00132180)(iVar11);\n                }\n                else {\n                  (*(code *)PTR_free_00132180)();\n                  if (iVar9 != 0) {\n                    iVar11 = *(int *)(iVar6 + 0x18);\n                    if (iVar11 == 0) {\n                      iVar11 = *(int *)(iVar6 + 8);\n                    }\n                    uVar5 = FUN_000399f8(iVar9);\n                    FUN_000195a0(PTR_FUN_001311a4 + -0x6a2c,iVar11,uVar2,uVar5);\n                    return iVar9;\n                  }\n                }\n                *(uint *)(iVar6 + 0x14) = *(uint *)(iVar6 + 0x14) | 1;\n                iVar11 = 0;\n              }\n              else {\n                (*(code *)PTR_free_00132180)(iVar11);\n                iVar11 = 0;\n              }\n            }\n            else {\n              if (iVar11 == 0) {\n                puVar10 = PTR_FUN_001311a4 + -0x6a6c;\n              }\n              else {\n                puVar10 = PTR_FUN_001311a4 + -0x6a80;\n              }\n              (*(code *)PTR___printf_chk_00131e4c)\n                        (1,puVar10,PTR_FUN_001311a4 + -0x6c8c,*(int *)PTR_DAT_00131330 + 0x8f,uVar2,\n                         iVar11);\n              (*(code *)PTR_free_00132180)(iVar11);\n              iVar11 = 0;\n            }\n          }\n          if ((*(uint *)(iVar6 + 0x14) & 1) != 0) break;\n          bVar1 = false;\n          iVar11 = 0;\n        }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n          while( true ) {\n            if (*(int *)(param_1 + 0xc) == 0) {\n              return iVar11;\n            }\n            uVar2 = FUN_00018db0(param_1 + 0xc);\n            uVar5 = FUN_00018b68(uVar2);\n            iVar6 = (*pcVar3)(uVar5);\n            if ((*(uint *)PTR_DAT_0013135c & 0x20) != 0) break;\n            iVar11 = *(int *)(iVar6 + 0x1c);\n            *(undefined4 *)(iVar6 + 0x1c) = 0;\n            pbVar7 = (byte *)(*(code *)PTR_FUN_00131474)(PTR_FUN_001311a4 + -0x6a3c,0);\n            if (pbVar7 != (byte *)0x0) {\n              for (; 0x22 < *pbVar7; pbVar7 = pbVar7 + 1) {\n              }\n                    \n                    \n              iVar11 = (*(code *)(&_gp_1 + *(int *)(puVar8 + (uint)*pbVar7 * 4 + -0x6a0c)))();\n              return iVar11;\n            }\n            if (param_1 == iVar6) {\n              iVar11 = (*pcVar4)(iVar11,*(undefined4 *)(*(int *)PTR_DAT_00131330 + 4));\n            }\n            if ((*(uint *)PTR_DAT_0013135c & 0x40) == 0) {\n              if ((*(uint *)(iVar6 + 0x14) & 1) == 0) {\n                iVar9 = FUN_00039834(uVar2,iVar11);\n                if (iVar9 == 0x11) {\n                  (*(code *)PTR_free_00132180)(iVar11);\n                }\n                else {\n                  (*(code *)PTR_free_00132180)();\n                  if (iVar9 != 0) {\n                    iVar11 = *(int *)(iVar6 + 0x18);\n                    if (iVar11 == 0) {\n                      iVar11 = *(int *)(iVar6 + 8);\n                    }\n                    uVar5 = FUN_000399f8(iVar9);\n                    FUN_000195a0(PTR_FUN_001311a4 + -0x6a2c,iVar11,uVar2,uVar5);\n                    return iVar9;\n                  }\n                }\n                *(uint *)(iVar6 + 0x14) = *(uint *)(iVar6 + 0x14) | 1;\n                iVar11 = 0;\n              }\n              else {\n                (*(code *)PTR_free_00132180)(iVar11);\n                iVar11 = 0;\n              }\n            }\n            else {\n              if (iVar11 == 0) {\n                puVar10 = PTR_FUN_001311a4 + -0x6a6c;\n              }\n              else {\n                puVar10 = PTR_FUN_001311a4 + -0x6a80;\n              }\n              (*(code *)PTR___printf_chk_00131e4c)\n                        (1,puVar10,PTR_FUN_001311a4 + -0x6c8c,*(int *)PTR_DAT_00131330 + 0x8f,uVar2,\n                         iVar11);\n              (*(code *)PTR_free_00132180)(iVar11);\n              iVar11 = 0;\n            }\n          }\n          if ((*(uint *)(iVar6 + 0x14) & 1) != 0) break;\n          bVar1 = false;\n          iVar11 = 0;\n        }" ({ "{") (while_statement "while( true ) {\n            if (*(int *)(param_1 + 0xc) == 0) {\n              return iVar11;\n            }\n            uVar2 = FUN_00018db0(param_1 + 0xc);\n            uVar5 = FUN_00018b68(uVar2);\n            iVar6 = (*pcVar3)(uVar5);\n            if ((*(uint *)PTR_DAT_0013135c & 0x20) != 0) break;\n            iVar11 = *(int *)(iVar6 + 0x1c);\n            *(undefined4 *)(iVar6 + 0x1c) = 0;\n            pbVar7 = (byte *)(*(code *)PTR_FUN_00131474)(PTR_FUN_001311a4 + -0x6a3c,0);\n            if (pbVar7 != (byte *)0x0) {\n              for (; 0x22 < *pbVar7; pbVar7 = pbVar7 + 1) {\n              }\n                    \n                    \n              iVar11 = (*(code *)(&_gp_1 + *(int *)(puVar8 + (uint)*pbVar7 * 4 + -0x6a0c)))();\n              return iVar11;\n            }\n            if (param_1 == iVar6) {\n              iVar11 = (*pcVar4)(iVar11,*(undefined4 *)(*(int *)PTR_DAT_00131330 + 4));\n            }\n            if ((*(uint *)PTR_DAT_0013135c & 0x40) == 0) {\n              if ((*(uint *)(iVar6 + 0x14) & 1) == 0) {\n                iVar9 = FUN_00039834(uVar2,iVar11);\n                if (iVar9 == 0x11) {\n                  (*(code *)PTR_free_00132180)(iVar11);\n                }\n                else {\n                  (*(code *)PTR_free_00132180)();\n                  if (iVar9 != 0) {\n                    iVar11 = *(int *)(iVar6 + 0x18);\n                    if (iVar11 == 0) {\n                      iVar11 = *(int *)(iVar6 + 8);\n                    }\n                    uVar5 = FUN_000399f8(iVar9);\n                    FUN_000195a0(PTR_FUN_001311a4 + -0x6a2c,iVar11,uVar2,uVar5);\n                    return iVar9;\n                  }\n                }\n                *(uint *)(iVar6 + 0x14) = *(uint *)(iVar6 + 0x14) | 1;\n                iVar11 = 0;\n              }\n              else {\n                (*(code *)PTR_free_00132180)(iVar11);\n                iVar11 = 0;\n              }\n            }\n            else {\n              if (iVar11 == 0) {\n                puVar10 = PTR_FUN_001311a4 + -0x6a6c;\n              }\n              else {\n                puVar10 = PTR_FUN_001311a4 + -0x6a80;\n              }\n              (*(code *)PTR___printf_chk_00131e4c)\n                        (1,puVar10,PTR_FUN_001311a4 + -0x6c8c,*(int *)PTR_DAT_00131330 + 0x8f,uVar2,\n                         iVar11);\n              (*(code *)PTR_free_00132180)(iVar11);\n              iVar11 = 0;\n            }\n          }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n            if (*(int *)(param_1 + 0xc) == 0) {\n              return iVar11;\n            }\n            uVar2 = FUN_00018db0(param_1 + 0xc);\n            uVar5 = FUN_00018b68(uVar2);\n            iVar6 = (*pcVar3)(uVar5);\n            if ((*(uint *)PTR_DAT_0013135c & 0x20) != 0) break;\n            iVar11 = *(int *)(iVar6 + 0x1c);\n            *(undefined4 *)(iVar6 + 0x1c) = 0;\n            pbVar7 = (byte *)(*(code *)PTR_FUN_00131474)(PTR_FUN_001311a4 + -0x6a3c,0);\n            if (pbVar7 != (byte *)0x0) {\n              for (; 0x22 < *pbVar7; pbVar7 = pbVar7 + 1) {\n              }\n                    \n                    \n              iVar11 = (*(code *)(&_gp_1 + *(int *)(puVar8 + (uint)*pbVar7 * 4 + -0x6a0c)))();\n              return iVar11;\n            }\n            if (param_1 == iVar6) {\n              iVar11 = (*pcVar4)(iVar11,*(undefined4 *)(*(int *)PTR_DAT_00131330 + 4));\n            }\n            if ((*(uint *)PTR_DAT_0013135c & 0x40) == 0) {\n              if ((*(uint *)(iVar6 + 0x14) & 1) == 0) {\n                iVar9 = FUN_00039834(uVar2,iVar11);\n                if (iVar9 == 0x11) {\n                  (*(code *)PTR_free_00132180)(iVar11);\n                }\n                else {\n                  (*(code *)PTR_free_00132180)();\n                  if (iVar9 != 0) {\n                    iVar11 = *(int *)(iVar6 + 0x18);\n                    if (iVar11 == 0) {\n                      iVar11 = *(int *)(iVar6 + 8);\n                    }\n                    uVar5 = FUN_000399f8(iVar9);\n                    FUN_000195a0(PTR_FUN_001311a4 + -0x6a2c,iVar11,uVar2,uVar5);\n                    return iVar9;\n                  }\n                }\n                *(uint *)(iVar6 + 0x14) = *(uint *)(iVar6 + 0x14) | 1;\n                iVar11 = 0;\n              }\n              else {\n                (*(code *)PTR_free_00132180)(iVar11);\n                iVar11 = 0;\n              }\n            }\n            else {\n              if (iVar11 == 0) {\n                puVar10 = PTR_FUN_001311a4 + -0x6a6c;\n              }\n              else {\n                puVar10 = PTR_FUN_001311a4 + -0x6a80;\n              }\n              (*(code *)PTR___printf_chk_00131e4c)\n                        (1,puVar10,PTR_FUN_001311a4 + -0x6c8c,*(int *)PTR_DAT_00131330 + 0x8f,uVar2,\n                         iVar11);\n              (*(code *)PTR_free_00132180)(iVar11);\n              iVar11 = 0;\n            }\n          }" ({ "{") (if_statement "if (*(int *)(param_1 + 0xc) == 0) {\n              return iVar11;\n            }" (if "if") (parenthesized_expression "(*(int *)(param_1 + 0xc) == 0)" (( "(") (binary_expression "*(int *)(param_1 + 0xc) == 0" (pointer_expression "*(int *)(param_1 + 0xc)" (* "*") (cast_expression "(int *)(param_1 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xc)" (( "(") (binary_expression "param_1 + 0xc" (identifier "param_1") (+ "+") (number_literal "0xc")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n              return iVar11;\n            }" ({ "{") (return_statement "return iVar11;" (return "return") (identifier "iVar11") (; ";")) (} "}"))) (expression_statement "uVar2 = FUN_00018db0(param_1 + 0xc);" (assignment_expression "uVar2 = FUN_00018db0(param_1 + 0xc)" (identifier "uVar2") (= "=") (call_expression "FUN_00018db0(param_1 + 0xc)" (identifier "FUN_00018db0") (argument_list "(param_1 + 0xc)" (( "(") (binary_expression "param_1 + 0xc" (identifier "param_1") (+ "+") (number_literal "0xc")) () ")")))) (; ";")) (expression_statement "uVar5 = FUN_00018b68(uVar2);" (assignment_expression "uVar5 = FUN_00018b68(uVar2)" (identifier "uVar5") (= "=") (call_expression "FUN_00018b68(uVar2)" (identifier "FUN_00018b68") (argument_list "(uVar2)" (( "(") (identifier "uVar2") () ")")))) (; ";")) (expression_statement "iVar6 = (*pcVar3)(uVar5);" (assignment_expression "iVar6 = (*pcVar3)(uVar5)" (identifier "iVar6") (= "=") (call_expression "(*pcVar3)(uVar5)" (parenthesized_expression "(*pcVar3)" (( "(") (pointer_expression "*pcVar3" (* "*") (identifier "pcVar3")) () ")")) (argument_list "(uVar5)" (( "(") (identifier "uVar5") () ")")))) (; ";")) (if_statement "if ((*(uint *)PTR_DAT_0013135c & 0x20) != 0) break;" (if "if") (parenthesized_expression "((*(uint *)PTR_DAT_0013135c & 0x20) != 0)" (( "(") (binary_expression "(*(uint *)PTR_DAT_0013135c & 0x20) != 0" (parenthesized_expression "(*(uint *)PTR_DAT_0013135c & 0x20)" (( "(") (binary_expression "*(uint *)PTR_DAT_0013135c & 0x20" (pointer_expression "*(uint *)PTR_DAT_0013135c" (* "*") (cast_expression "(uint *)PTR_DAT_0013135c" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_DAT_0013135c"))) (& "&") (number_literal "0x20")) () ")")) (!= "!=") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar11 = *(int *)(iVar6 + 0x1c);" (assignment_expression "iVar11 = *(int *)(iVar6 + 0x1c)" (identifier "iVar11") (= "=") (pointer_expression "*(int *)(iVar6 + 0x1c)" (* "*") (cast_expression "(int *)(iVar6 + 0x1c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + 0x1c)" (( "(") (binary_expression "iVar6 + 0x1c" (identifier "iVar6") (+ "+") (number_literal "0x1c")) () ")"))))) (; ";")) (expression_statement "*(undefined4 *)(iVar6 + 0x1c) = 0;" (assignment_expression "*(undefined4 *)(iVar6 + 0x1c) = 0" (pointer_expression "*(undefined4 *)(iVar6 + 0x1c)" (* "*") (cast_expression "(undefined4 *)(iVar6 + 0x1c)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + 0x1c)" (( "(") (binary_expression "iVar6 + 0x1c" (identifier "iVar6") (+ "+") (number_literal "0x1c")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "pbVar7 = (byte *)(*(code *)PTR_FUN_00131474)(PTR_FUN_001311a4 + -0x6a3c,0);" (assignment_expression "pbVar7 = (byte *)(*(code *)PTR_FUN_00131474)(PTR_FUN_001311a4 + -0x6a3c,0)" (identifier "pbVar7") (= "=") (cast_expression "(byte *)(*(code *)PTR_FUN_00131474)(PTR_FUN_001311a4 + -0x6a3c,0)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(*(code *)PTR_FUN_00131474)(PTR_FUN_001311a4 + -0x6a3c,0)" (parenthesized_expression "(*(code *)PTR_FUN_00131474)" (( "(") (pointer_expression "*(code *)PTR_FUN_00131474" (* "*") (cast_expression "(code *)PTR_FUN_00131474" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_FUN_00131474"))) () ")")) (argument_list "(PTR_FUN_001311a4 + -0x6a3c,0)" (( "(") (binary_expression "PTR_FUN_001311a4 + -0x6a3c" (identifier "PTR_FUN_001311a4") (+ "+") (number_literal "-0x6a3c")) (, ",") (number_literal "0") () ")"))))) (; ";")) (if_statement "if (pbVar7 != (byte *)0x0) {\n              for (; 0x22 < *pbVar7; pbVar7 = pbVar7 + 1) {\n              }\n                    \n                    \n              iVar11 = (*(code *)(&_gp_1 + *(int *)(puVar8 + (uint)*pbVar7 * 4 + -0x6a0c)))();\n              return iVar11;\n            }" (if "if") (parenthesized_expression "(pbVar7 != (byte *)0x0)" (( "(") (binary_expression "pbVar7 != (byte *)0x0" (identifier "pbVar7") (!= "!=") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n              for (; 0x22 < *pbVar7; pbVar7 = pbVar7 + 1) {\n              }\n                    \n                    \n              iVar11 = (*(code *)(&_gp_1 + *(int *)(puVar8 + (uint)*pbVar7 * 4 + -0x6a0c)))();\n              return iVar11;\n            }" ({ "{") (for_statement "for (; 0x22 < *pbVar7; pbVar7 = pbVar7 + 1) {\n              }" (for "for") (( "(") (; ";") (binary_expression "0x22 < *pbVar7" (number_literal "0x22") (< "<") (pointer_expression "*pbVar7" (* "*") (identifier "pbVar7"))) (; ";") (assignment_expression "pbVar7 = pbVar7 + 1" (identifier "pbVar7") (= "=") (binary_expression "pbVar7 + 1" (identifier "pbVar7") (+ "+") (number_literal "1"))) () ")") (compound_statement "{\n              }" ({ "{") (} "}"))) (expression_statement "iVar11 = (*(code *)(&_gp_1 + *(int *)(puVar8 + (uint)*pbVar7 * 4 + -0x6a0c)))();" (assignment_expression "iVar11 = (*(code *)(&_gp_1 + *(int *)(puVar8 + (uint)*pbVar7 * 4 + -0x6a0c)))()" (identifier "iVar11") (= "=") (call_expression "(*(code *)(&_gp_1 + *(int *)(puVar8 + (uint)*pbVar7 * 4 + -0x6a0c)))()" (parenthesized_expression "(*(code *)(&_gp_1 + *(int *)(puVar8 + (uint)*pbVar7 * 4 + -0x6a0c)))" (( "(") (pointer_expression "*(code *)(&_gp_1 + *(int *)(puVar8 + (uint)*pbVar7 * 4 + -0x6a0c))" (* "*") (cast_expression "(code *)(&_gp_1 + *(int *)(puVar8 + (uint)*pbVar7 * 4 + -0x6a0c))" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(&_gp_1 + *(int *)(puVar8 + (uint)*pbVar7 * 4 + -0x6a0c))" (( "(") (binary_expression "&_gp_1 + *(int *)(puVar8 + (uint)*pbVar7 * 4 + -0x6a0c)" (pointer_expression "&_gp_1" (& "&") (identifier "_gp_1")) (+ "+") (pointer_expression "*(int *)(puVar8 + (uint)*pbVar7 * 4 + -0x6a0c)" (* "*") (cast_expression "(int *)(puVar8 + (uint)*pbVar7 * 4 + -0x6a0c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar8 + (uint)*pbVar7 * 4 + -0x6a0c)" (( "(") (binary_expression "puVar8 + (uint)*pbVar7 * 4 + -0x6a0c" (binary_expression "puVar8 + (uint)*pbVar7 * 4" (identifier "puVar8") (+ "+") (binary_expression "(uint)*pbVar7 * 4" (binary_expression "(uint)*pbVar7" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (identifier "pbVar7")) (* "*") (number_literal "4"))) (+ "+") (number_literal "-0x6a0c")) () ")"))))) () ")")))) () ")")) (argument_list "()" (( "(") () ")")))) (; ";")) (return_statement "return iVar11;" (return "return") (identifier "iVar11") (; ";")) (} "}"))) (if_statement "if (param_1 == iVar6) {\n              iVar11 = (*pcVar4)(iVar11,*(undefined4 *)(*(int *)PTR_DAT_00131330 + 4));\n            }" (if "if") (parenthesized_expression "(param_1 == iVar6)" (( "(") (binary_expression "param_1 == iVar6" (identifier "param_1") (== "==") (identifier "iVar6")) () ")")) (compound_statement "{\n              iVar11 = (*pcVar4)(iVar11,*(undefined4 *)(*(int *)PTR_DAT_00131330 + 4));\n            }" ({ "{") (expression_statement "iVar11 = (*pcVar4)(iVar11,*(undefined4 *)(*(int *)PTR_DAT_00131330 + 4));" (assignment_expression "iVar11 = (*pcVar4)(iVar11,*(undefined4 *)(*(int *)PTR_DAT_00131330 + 4))" (identifier "iVar11") (= "=") (call_expression "(*pcVar4)(iVar11,*(undefined4 *)(*(int *)PTR_DAT_00131330 + 4))" (parenthesized_expression "(*pcVar4)" (( "(") (pointer_expression "*pcVar4" (* "*") (identifier "pcVar4")) () ")")) (argument_list "(iVar11,*(undefined4 *)(*(int *)PTR_DAT_00131330 + 4))" (( "(") (identifier "iVar11") (, ",") (pointer_expression "*(undefined4 *)(*(int *)PTR_DAT_00131330 + 4)" (* "*") (cast_expression "(undefined4 *)(*(int *)PTR_DAT_00131330 + 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)PTR_DAT_00131330 + 4)" (( "(") (binary_expression "*(int *)PTR_DAT_00131330 + 4" (pointer_expression "*(int *)PTR_DAT_00131330" (* "*") (cast_expression "(int *)PTR_DAT_00131330" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_DAT_00131330"))) (+ "+") (number_literal "4")) () ")")))) () ")")))) (; ";")) (} "}"))) (if_statement "if ((*(uint *)PTR_DAT_0013135c & 0x40) == 0) {\n              if ((*(uint *)(iVar6 + 0x14) & 1) == 0) {\n                iVar9 = FUN_00039834(uVar2,iVar11);\n                if (iVar9 == 0x11) {\n                  (*(code *)PTR_free_00132180)(iVar11);\n                }\n                else {\n                  (*(code *)PTR_free_00132180)();\n                  if (iVar9 != 0) {\n                    iVar11 = *(int *)(iVar6 + 0x18);\n                    if (iVar11 == 0) {\n                      iVar11 = *(int *)(iVar6 + 8);\n                    }\n                    uVar5 = FUN_000399f8(iVar9);\n                    FUN_000195a0(PTR_FUN_001311a4 + -0x6a2c,iVar11,uVar2,uVar5);\n                    return iVar9;\n                  }\n                }\n                *(uint *)(iVar6 + 0x14) = *(uint *)(iVar6 + 0x14) | 1;\n                iVar11 = 0;\n              }\n              else {\n                (*(code *)PTR_free_00132180)(iVar11);\n                iVar11 = 0;\n              }\n            }\n            else {\n              if (iVar11 == 0) {\n                puVar10 = PTR_FUN_001311a4 + -0x6a6c;\n              }\n              else {\n                puVar10 = PTR_FUN_001311a4 + -0x6a80;\n              }\n              (*(code *)PTR___printf_chk_00131e4c)\n                        (1,puVar10,PTR_FUN_001311a4 + -0x6c8c,*(int *)PTR_DAT_00131330 + 0x8f,uVar2,\n                         iVar11);\n              (*(code *)PTR_free_00132180)(iVar11);\n              iVar11 = 0;\n            }" (if "if") (parenthesized_expression "((*(uint *)PTR_DAT_0013135c & 0x40) == 0)" (( "(") (binary_expression "(*(uint *)PTR_DAT_0013135c & 0x40) == 0" (parenthesized_expression "(*(uint *)PTR_DAT_0013135c & 0x40)" (( "(") (binary_expression "*(uint *)PTR_DAT_0013135c & 0x40" (pointer_expression "*(uint *)PTR_DAT_0013135c" (* "*") (cast_expression "(uint *)PTR_DAT_0013135c" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_DAT_0013135c"))) (& "&") (number_literal "0x40")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n              if ((*(uint *)(iVar6 + 0x14) & 1) == 0) {\n                iVar9 = FUN_00039834(uVar2,iVar11);\n                if (iVar9 == 0x11) {\n                  (*(code *)PTR_free_00132180)(iVar11);\n                }\n                else {\n                  (*(code *)PTR_free_00132180)();\n                  if (iVar9 != 0) {\n                    iVar11 = *(int *)(iVar6 + 0x18);\n                    if (iVar11 == 0) {\n                      iVar11 = *(int *)(iVar6 + 8);\n                    }\n                    uVar5 = FUN_000399f8(iVar9);\n                    FUN_000195a0(PTR_FUN_001311a4 + -0x6a2c,iVar11,uVar2,uVar5);\n                    return iVar9;\n                  }\n                }\n                *(uint *)(iVar6 + 0x14) = *(uint *)(iVar6 + 0x14) | 1;\n                iVar11 = 0;\n              }\n              else {\n                (*(code *)PTR_free_00132180)(iVar11);\n                iVar11 = 0;\n              }\n            }" ({ "{") (if_statement "if ((*(uint *)(iVar6 + 0x14) & 1) == 0) {\n                iVar9 = FUN_00039834(uVar2,iVar11);\n                if (iVar9 == 0x11) {\n                  (*(code *)PTR_free_00132180)(iVar11);\n                }\n                else {\n                  (*(code *)PTR_free_00132180)();\n                  if (iVar9 != 0) {\n                    iVar11 = *(int *)(iVar6 + 0x18);\n                    if (iVar11 == 0) {\n                      iVar11 = *(int *)(iVar6 + 8);\n                    }\n                    uVar5 = FUN_000399f8(iVar9);\n                    FUN_000195a0(PTR_FUN_001311a4 + -0x6a2c,iVar11,uVar2,uVar5);\n                    return iVar9;\n                  }\n                }\n                *(uint *)(iVar6 + 0x14) = *(uint *)(iVar6 + 0x14) | 1;\n                iVar11 = 0;\n              }\n              else {\n                (*(code *)PTR_free_00132180)(iVar11);\n                iVar11 = 0;\n              }" (if "if") (parenthesized_expression "((*(uint *)(iVar6 + 0x14) & 1) == 0)" (( "(") (binary_expression "(*(uint *)(iVar6 + 0x14) & 1) == 0" (parenthesized_expression "(*(uint *)(iVar6 + 0x14) & 1)" (( "(") (binary_expression "*(uint *)(iVar6 + 0x14) & 1" (pointer_expression "*(uint *)(iVar6 + 0x14)" (* "*") (cast_expression "(uint *)(iVar6 + 0x14)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + 0x14)" (( "(") (binary_expression "iVar6 + 0x14" (identifier "iVar6") (+ "+") (number_literal "0x14")) () ")")))) (& "&") (number_literal "1")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                iVar9 = FUN_00039834(uVar2,iVar11);\n                if (iVar9 == 0x11) {\n                  (*(code *)PTR_free_00132180)(iVar11);\n                }\n                else {\n                  (*(code *)PTR_free_00132180)();\n                  if (iVar9 != 0) {\n                    iVar11 = *(int *)(iVar6 + 0x18);\n                    if (iVar11 == 0) {\n                      iVar11 = *(int *)(iVar6 + 8);\n                    }\n                    uVar5 = FUN_000399f8(iVar9);\n                    FUN_000195a0(PTR_FUN_001311a4 + -0x6a2c,iVar11,uVar2,uVar5);\n                    return iVar9;\n                  }\n                }\n                *(uint *)(iVar6 + 0x14) = *(uint *)(iVar6 + 0x14) | 1;\n                iVar11 = 0;\n              }" ({ "{") (expression_statement "iVar9 = FUN_00039834(uVar2,iVar11);" (assignment_expression "iVar9 = FUN_00039834(uVar2,iVar11)" (identifier "iVar9") (= "=") (call_expression "FUN_00039834(uVar2,iVar11)" (identifier "FUN_00039834") (argument_list "(uVar2,iVar11)" (( "(") (identifier "uVar2") (, ",") (identifier "iVar11") () ")")))) (; ";")) (if_statement "if (iVar9 == 0x11) {\n                  (*(code *)PTR_free_00132180)(iVar11);\n                }\n                else {\n                  (*(code *)PTR_free_00132180)();\n                  if (iVar9 != 0) {\n                    iVar11 = *(int *)(iVar6 + 0x18);\n                    if (iVar11 == 0) {\n                      iVar11 = *(int *)(iVar6 + 8);\n                    }\n                    uVar5 = FUN_000399f8(iVar9);\n                    FUN_000195a0(PTR_FUN_001311a4 + -0x6a2c,iVar11,uVar2,uVar5);\n                    return iVar9;\n                  }\n                }" (if "if") (parenthesized_expression "(iVar9 == 0x11)" (( "(") (binary_expression "iVar9 == 0x11" (identifier "iVar9") (== "==") (number_literal "0x11")) () ")")) (compound_statement "{\n                  (*(code *)PTR_free_00132180)(iVar11);\n                }" ({ "{") (expression_statement "(*(code *)PTR_free_00132180)(iVar11);" (call_expression "(*(code *)PTR_free_00132180)(iVar11)" (parenthesized_expression "(*(code *)PTR_free_00132180)" (( "(") (pointer_expression "*(code *)PTR_free_00132180" (* "*") (cast_expression "(code *)PTR_free_00132180" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_free_00132180"))) () ")")) (argument_list "(iVar11)" (( "(") (identifier "iVar11") () ")"))) (; ";")) (} "}")) (else_clause "else {\n                  (*(code *)PTR_free_00132180)();\n                  if (iVar9 != 0) {\n                    iVar11 = *(int *)(iVar6 + 0x18);\n                    if (iVar11 == 0) {\n                      iVar11 = *(int *)(iVar6 + 8);\n                    }\n                    uVar5 = FUN_000399f8(iVar9);\n                    FUN_000195a0(PTR_FUN_001311a4 + -0x6a2c,iVar11,uVar2,uVar5);\n                    return iVar9;\n                  }\n                }" (else "else") (compound_statement "{\n                  (*(code *)PTR_free_00132180)();\n                  if (iVar9 != 0) {\n                    iVar11 = *(int *)(iVar6 + 0x18);\n                    if (iVar11 == 0) {\n                      iVar11 = *(int *)(iVar6 + 8);\n                    }\n                    uVar5 = FUN_000399f8(iVar9);\n                    FUN_000195a0(PTR_FUN_001311a4 + -0x6a2c,iVar11,uVar2,uVar5);\n                    return iVar9;\n                  }\n                }" ({ "{") (expression_statement "(*(code *)PTR_free_00132180)();" (call_expression "(*(code *)PTR_free_00132180)()" (parenthesized_expression "(*(code *)PTR_free_00132180)" (( "(") (pointer_expression "*(code *)PTR_free_00132180" (* "*") (cast_expression "(code *)PTR_free_00132180" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_free_00132180"))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (if_statement "if (iVar9 != 0) {\n                    iVar11 = *(int *)(iVar6 + 0x18);\n                    if (iVar11 == 0) {\n                      iVar11 = *(int *)(iVar6 + 8);\n                    }\n                    uVar5 = FUN_000399f8(iVar9);\n                    FUN_000195a0(PTR_FUN_001311a4 + -0x6a2c,iVar11,uVar2,uVar5);\n                    return iVar9;\n                  }" (if "if") (parenthesized_expression "(iVar9 != 0)" (( "(") (binary_expression "iVar9 != 0" (identifier "iVar9") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                    iVar11 = *(int *)(iVar6 + 0x18);\n                    if (iVar11 == 0) {\n                      iVar11 = *(int *)(iVar6 + 8);\n                    }\n                    uVar5 = FUN_000399f8(iVar9);\n                    FUN_000195a0(PTR_FUN_001311a4 + -0x6a2c,iVar11,uVar2,uVar5);\n                    return iVar9;\n                  }" ({ "{") (expression_statement "iVar11 = *(int *)(iVar6 + 0x18);" (assignment_expression "iVar11 = *(int *)(iVar6 + 0x18)" (identifier "iVar11") (= "=") (pointer_expression "*(int *)(iVar6 + 0x18)" (* "*") (cast_expression "(int *)(iVar6 + 0x18)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + 0x18)" (( "(") (binary_expression "iVar6 + 0x18" (identifier "iVar6") (+ "+") (number_literal "0x18")) () ")"))))) (; ";")) (if_statement "if (iVar11 == 0) {\n                      iVar11 = *(int *)(iVar6 + 8);\n                    }" (if "if") (parenthesized_expression "(iVar11 == 0)" (( "(") (binary_expression "iVar11 == 0" (identifier "iVar11") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                      iVar11 = *(int *)(iVar6 + 8);\n                    }" ({ "{") (expression_statement "iVar11 = *(int *)(iVar6 + 8);" (assignment_expression "iVar11 = *(int *)(iVar6 + 8)" (identifier "iVar11") (= "=") (pointer_expression "*(int *)(iVar6 + 8)" (* "*") (cast_expression "(int *)(iVar6 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + 8)" (( "(") (binary_expression "iVar6 + 8" (identifier "iVar6") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (} "}"))) (expression_statement "uVar5 = FUN_000399f8(iVar9);" (assignment_expression "uVar5 = FUN_000399f8(iVar9)" (identifier "uVar5") (= "=") (call_expression "FUN_000399f8(iVar9)" (identifier "FUN_000399f8") (argument_list "(iVar9)" (( "(") (identifier "iVar9") () ")")))) (; ";")) (expression_statement "FUN_000195a0(PTR_FUN_001311a4 + -0x6a2c,iVar11,uVar2,uVar5);" (call_expression "FUN_000195a0(PTR_FUN_001311a4 + -0x6a2c,iVar11,uVar2,uVar5)" (identifier "FUN_000195a0") (argument_list "(PTR_FUN_001311a4 + -0x6a2c,iVar11,uVar2,uVar5)" (( "(") (binary_expression "PTR_FUN_001311a4 + -0x6a2c" (identifier "PTR_FUN_001311a4") (+ "+") (number_literal "-0x6a2c")) (, ",") (identifier "iVar11") (, ",") (identifier "uVar2") (, ",") (identifier "uVar5") () ")"))) (; ";")) (return_statement "return iVar9;" (return "return") (identifier "iVar9") (; ";")) (} "}"))) (} "}")))) (expression_statement "*(uint *)(iVar6 + 0x14) = *(uint *)(iVar6 + 0x14) | 1;" (assignment_expression "*(uint *)(iVar6 + 0x14) = *(uint *)(iVar6 + 0x14) | 1" (pointer_expression "*(uint *)(iVar6 + 0x14)" (* "*") (cast_expression "(uint *)(iVar6 + 0x14)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + 0x14)" (( "(") (binary_expression "iVar6 + 0x14" (identifier "iVar6") (+ "+") (number_literal "0x14")) () ")")))) (= "=") (binary_expression "*(uint *)(iVar6 + 0x14) | 1" (pointer_expression "*(uint *)(iVar6 + 0x14)" (* "*") (cast_expression "(uint *)(iVar6 + 0x14)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + 0x14)" (( "(") (binary_expression "iVar6 + 0x14" (identifier "iVar6") (+ "+") (number_literal "0x14")) () ")")))) (| "|") (number_literal "1"))) (; ";")) (expression_statement "iVar11 = 0;" (assignment_expression "iVar11 = 0" (identifier "iVar11") (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n                (*(code *)PTR_free_00132180)(iVar11);\n                iVar11 = 0;\n              }" (else "else") (compound_statement "{\n                (*(code *)PTR_free_00132180)(iVar11);\n                iVar11 = 0;\n              }" ({ "{") (expression_statement "(*(code *)PTR_free_00132180)(iVar11);" (call_expression "(*(code *)PTR_free_00132180)(iVar11)" (parenthesized_expression "(*(code *)PTR_free_00132180)" (( "(") (pointer_expression "*(code *)PTR_free_00132180" (* "*") (cast_expression "(code *)PTR_free_00132180" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_free_00132180"))) () ")")) (argument_list "(iVar11)" (( "(") (identifier "iVar11") () ")"))) (; ";")) (expression_statement "iVar11 = 0;" (assignment_expression "iVar11 = 0" (identifier "iVar11") (= "=") (number_literal "0")) (; ";")) (} "}")))) (} "}")) (else_clause "else {\n              if (iVar11 == 0) {\n                puVar10 = PTR_FUN_001311a4 + -0x6a6c;\n              }\n              else {\n                puVar10 = PTR_FUN_001311a4 + -0x6a80;\n              }\n              (*(code *)PTR___printf_chk_00131e4c)\n                        (1,puVar10,PTR_FUN_001311a4 + -0x6c8c,*(int *)PTR_DAT_00131330 + 0x8f,uVar2,\n                         iVar11);\n              (*(code *)PTR_free_00132180)(iVar11);\n              iVar11 = 0;\n            }" (else "else") (compound_statement "{\n              if (iVar11 == 0) {\n                puVar10 = PTR_FUN_001311a4 + -0x6a6c;\n              }\n              else {\n                puVar10 = PTR_FUN_001311a4 + -0x6a80;\n              }\n              (*(code *)PTR___printf_chk_00131e4c)\n                        (1,puVar10,PTR_FUN_001311a4 + -0x6c8c,*(int *)PTR_DAT_00131330 + 0x8f,uVar2,\n                         iVar11);\n              (*(code *)PTR_free_00132180)(iVar11);\n              iVar11 = 0;\n            }" ({ "{") (if_statement "if (iVar11 == 0) {\n                puVar10 = PTR_FUN_001311a4 + -0x6a6c;\n              }\n              else {\n                puVar10 = PTR_FUN_001311a4 + -0x6a80;\n              }" (if "if") (parenthesized_expression "(iVar11 == 0)" (( "(") (binary_expression "iVar11 == 0" (identifier "iVar11") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                puVar10 = PTR_FUN_001311a4 + -0x6a6c;\n              }" ({ "{") (expression_statement "puVar10 = PTR_FUN_001311a4 + -0x6a6c;" (assignment_expression "puVar10 = PTR_FUN_001311a4 + -0x6a6c" (identifier "puVar10") (= "=") (binary_expression "PTR_FUN_001311a4 + -0x6a6c" (identifier "PTR_FUN_001311a4") (+ "+") (number_literal "-0x6a6c"))) (; ";")) (} "}")) (else_clause "else {\n                puVar10 = PTR_FUN_001311a4 + -0x6a80;\n              }" (else "else") (compound_statement "{\n                puVar10 = PTR_FUN_001311a4 + -0x6a80;\n              }" ({ "{") (expression_statement "puVar10 = PTR_FUN_001311a4 + -0x6a80;" (assignment_expression "puVar10 = PTR_FUN_001311a4 + -0x6a80" (identifier "puVar10") (= "=") (binary_expression "PTR_FUN_001311a4 + -0x6a80" (identifier "PTR_FUN_001311a4") (+ "+") (number_literal "-0x6a80"))) (; ";")) (} "}")))) (expression_statement "(*(code *)PTR___printf_chk_00131e4c)\n                        (1,puVar10,PTR_FUN_001311a4 + -0x6c8c,*(int *)PTR_DAT_00131330 + 0x8f,uVar2,\n                         iVar11);" (call_expression "(*(code *)PTR___printf_chk_00131e4c)\n                        (1,puVar10,PTR_FUN_001311a4 + -0x6c8c,*(int *)PTR_DAT_00131330 + 0x8f,uVar2,\n                         iVar11)" (parenthesized_expression "(*(code *)PTR___printf_chk_00131e4c)" (( "(") (pointer_expression "*(code *)PTR___printf_chk_00131e4c" (* "*") (cast_expression "(code *)PTR___printf_chk_00131e4c" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___printf_chk_00131e4c"))) () ")")) (argument_list "(1,puVar10,PTR_FUN_001311a4 + -0x6c8c,*(int *)PTR_DAT_00131330 + 0x8f,uVar2,\n                         iVar11)" (( "(") (number_literal "1") (, ",") (identifier "puVar10") (, ",") (binary_expression "PTR_FUN_001311a4 + -0x6c8c" (identifier "PTR_FUN_001311a4") (+ "+") (number_literal "-0x6c8c")) (, ",") (binary_expression "*(int *)PTR_DAT_00131330 + 0x8f" (pointer_expression "*(int *)PTR_DAT_00131330" (* "*") (cast_expression "(int *)PTR_DAT_00131330" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_DAT_00131330"))) (+ "+") (number_literal "0x8f")) (, ",") (identifier "uVar2") (, ",") (identifier "iVar11") () ")"))) (; ";")) (expression_statement "(*(code *)PTR_free_00132180)(iVar11);" (call_expression "(*(code *)PTR_free_00132180)(iVar11)" (parenthesized_expression "(*(code *)PTR_free_00132180)" (( "(") (pointer_expression "*(code *)PTR_free_00132180" (* "*") (cast_expression "(code *)PTR_free_00132180" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_free_00132180"))) () ")")) (argument_list "(iVar11)" (( "(") (identifier "iVar11") () ")"))) (; ";")) (expression_statement "iVar11 = 0;" (assignment_expression "iVar11 = 0" (identifier "iVar11") (= "=") (number_literal "0")) (; ";")) (} "}")))) (} "}"))) (if_statement "if ((*(uint *)(iVar6 + 0x14) & 1) != 0) break;" (if "if") (parenthesized_expression "((*(uint *)(iVar6 + 0x14) & 1) != 0)" (( "(") (binary_expression "(*(uint *)(iVar6 + 0x14) & 1) != 0" (parenthesized_expression "(*(uint *)(iVar6 + 0x14) & 1)" (( "(") (binary_expression "*(uint *)(iVar6 + 0x14) & 1" (pointer_expression "*(uint *)(iVar6 + 0x14)" (* "*") (cast_expression "(uint *)(iVar6 + 0x14)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + 0x14)" (( "(") (binary_expression "iVar6 + 0x14" (identifier "iVar6") (+ "+") (number_literal "0x14")) () ")")))) (& "&") (number_literal "1")) () ")")) (!= "!=") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "bVar1 = false;" (assignment_expression "bVar1 = false" (identifier "bVar1") (= "=") (false "false")) (; ";")) (expression_statement "iVar11 = 0;" (assignment_expression "iVar11 = 0" (identifier "iVar11") (= "=") (number_literal "0")) (; ";")) (} "}"))) (expression_statement "iVar11 = FUN_000399a0(*(undefined4 *)(iVar6 + 8),0x400);" (assignment_expression "iVar11 = FUN_000399a0(*(undefined4 *)(iVar6 + 8),0x400)" (identifier "iVar11") (= "=") (call_expression "FUN_000399a0(*(undefined4 *)(iVar6 + 8),0x400)" (identifier "FUN_000399a0") (argument_list "(*(undefined4 *)(iVar6 + 8),0x400)" (( "(") (pointer_expression "*(undefined4 *)(iVar6 + 8)" (* "*") (cast_expression "(undefined4 *)(iVar6 + 8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + 8)" (( "(") (binary_expression "iVar6 + 8" (identifier "iVar6") (+ "+") (number_literal "8")) () ")")))) (, ",") (number_literal "0x400") () ")")))) (; ";")) (if_statement "if (iVar11 != 0) break;" (if "if") (parenthesized_expression "(iVar11 != 0)" (( "(") (binary_expression "iVar11 != 0" (identifier "iVar11") (!= "!=") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "*(uint *)(iVar6 + 0x14) = *(uint *)(iVar6 + 0x14) & 0xfffffffe;" (assignment_expression "*(uint *)(iVar6 + 0x14) = *(uint *)(iVar6 + 0x14) & 0xfffffffe" (pointer_expression "*(uint *)(iVar6 + 0x14)" (* "*") (cast_expression "(uint *)(iVar6 + 0x14)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + 0x14)" (( "(") (binary_expression "iVar6 + 0x14" (identifier "iVar6") (+ "+") (number_literal "0x14")) () ")")))) (= "=") (binary_expression "*(uint *)(iVar6 + 0x14) & 0xfffffffe" (pointer_expression "*(uint *)(iVar6 + 0x14)" (* "*") (cast_expression "(uint *)(iVar6 + 0x14)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + 0x14)" (( "(") (binary_expression "iVar6 + 0x14" (identifier "iVar6") (+ "+") (number_literal "0x14")) () ")")))) (& "&") (number_literal "0xfffffffe"))) (; ";")) (expression_statement "bVar1 = false;" (assignment_expression "bVar1 = false" (identifier "bVar1") (= "=") (false "false")) (; ";")) (} "}"))) (} "}")) (while "while") (parenthesized_expression "(!bVar1)" (( "(") (unary_expression "!bVar1" (! "!") (identifier "bVar1")) () ")")) (; ";")) (expression_statement "iVar9 = *(int *)(iVar6 + 0x18);" (assignment_expression "iVar9 = *(int *)(iVar6 + 0x18)" (identifier "iVar9") (= "=") (pointer_expression "*(int *)(iVar6 + 0x18)" (* "*") (cast_expression "(int *)(iVar6 + 0x18)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + 0x18)" (( "(") (binary_expression "iVar6 + 0x18" (identifier "iVar6") (+ "+") (number_literal "0x18")) () ")"))))) (; ";")) (if_statement "if (iVar9 == 0) {\n      iVar9 = *(int *)(iVar6 + 8);\n    }" (if "if") (parenthesized_expression "(iVar9 == 0)" (( "(") (binary_expression "iVar9 == 0" (identifier "iVar9") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      iVar9 = *(int *)(iVar6 + 8);\n    }" ({ "{") (expression_statement "iVar9 = *(int *)(iVar6 + 8);" (assignment_expression "iVar9 = *(int *)(iVar6 + 8)" (identifier "iVar9") (= "=") (pointer_expression "*(int *)(iVar6 + 8)" (* "*") (cast_expression "(int *)(iVar6 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar6 + 8)" (( "(") (binary_expression "iVar6 + 8" (identifier "iVar6") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (} "}"))) (expression_statement "FUN_00018f7c(PTR_FUN_001311a4 + -0x6a58,iVar9);" (call_expression "FUN_00018f7c(PTR_FUN_001311a4 + -0x6a58,iVar9)" (identifier "FUN_00018f7c") (argument_list "(PTR_FUN_001311a4 + -0x6a58,iVar9)" (( "(") (binary_expression "PTR_FUN_001311a4 + -0x6a58" (identifier "PTR_FUN_001311a4") (+ "+") (number_literal "-0x6a58")) (, ",") (identifier "iVar9") () ")"))) (; ";")) (} "}")))) (return_statement "return iVar11;" (return "return") (identifier "iVar11") (; ";")) (} "}")))

int function_1(type_1 *var_10)

{
  bool bVar1;
  type_2 *var_9;
  type_3 *plVar3;
  type_4 *pcVar4;
  type_4 *pcVar5;
  type_1 *var_11;
  type_5 *var_8;
  char *pcVar8;
  char *var_16;
  char *var_2;
  type_2 *puVar11;
  int var_13;
  
  if ((var_10->flags & 4) == 0) {
    var_13 = -2;
    if ((*(type_6 *)PTR_option_mask32_0013135c & 2) == 0) {
      if ((var_10->flags & 0x10) == 0) {
        var_16 = var_1 + -0x6aa4;
      }
      else {
        var_16 = var_1 + -0x6abc;
      }
      var_2 = var_10->probed_name;
      if (var_2 == (char *)0x0) {
        var_2 = var_10->modname;
      }
      var_3(var_16,var_2);
      var_13 = -2;
    }
  }
  else {
    if ((*(type_6 *)PTR_option_mask32_0013135c & 0x20) == 0) {
      plVar3 = var_4(var_10->deps);
      var_10->deps = plVar3;
    }
    var_9 = var_1;
    bVar1 = true;
    var_13 = 0;
    pcVar4 = (type_4 *)(var_5 + -0x7cf0);
    pcVar5 = (type_4 *)(var_5 + -0x7fc8);
    do {
      while( true ) {
        while( true ) {
          while( true ) {
            if (var_10->deps == (type_3 *)0x0) {
              return var_13;
            }
            var_16 = (char *)var_6(&var_10->deps);
            var_2 = var_7(var_16);
            var_11 = (type_1 *)(*pcVar4)(var_2);
            if ((*(type_6 *)PTR_option_mask32_0013135c & 0x20) != 0) break;
            var_2 = var_11->options;
            var_11->options = (char *)0x0;
            var_8 = (type_5 *)(*(type_4 *)PTR_xmalloc_open_read_close_00131474)
                                       (var_1 + -0x6a3c,0);
            if (var_8 != (type_5 *)0x0) {
              for (; 0x22 < *var_8; var_8 = var_8 + 1) {
              }
                    /* WARNING: Could not emulate address calculation at 0x00038a00 */
                    /* WARNING: Treating indirect jump as call */
              var_13 = (*(type_4 *)(&_gp + *(int *)(var_9 + (type_6)*var_8 * 4 + -0x6a0c)))();
              return var_13;
            }
            if (var_10 == var_11) {
              var_2 = (char *)(*pcVar5)(var_2,*(type_7 *)
                                                   (*(int *)PTR_ptr_to_globals_00131330 + 4));
            }
            if ((*(type_6 *)PTR_option_mask32_0013135c & 0x40) == 0) {
              if ((var_11->flags & 1) == 0) {
                var_13 = var_12(var_16,var_2);
                if (var_13 == 0x11) {
                  (*(type_4 *)PTR_free_00132180)(var_2);
                }
                else {
                  (*(type_4 *)PTR_free_00132180)();
                  if (var_13 != 0) {
                    var_2 = var_11->probed_name;
                    if (var_2 == (char *)0x0) {
                      var_2 = var_11->modname;
                    }
                    pcVar8 = var_14(var_13);
                    var_3(var_1 + -0x6a2c,var_2,var_16,pcVar8)
                    ;
                    return var_13;
                  }
                }
                var_11->flags = var_11->flags | 1;
                var_13 = 0;
              }
              else {
                (*(type_4 *)PTR_free_00132180)(var_2);
                var_13 = 0;
              }
            }
            else {
              if (var_2 == (char *)0x0) {
                puVar11 = var_1 + -0x6a6c;
              }
              else {
                puVar11 = var_1 + -0x6a80;
              }
              (*(type_4 *)PTR___printf_chk_00131e4c)
                        (1,puVar11,var_1 + -0x6c8c,
                         *(int *)PTR_ptr_to_globals_00131330 + 0x8f,var_16,var_2);
              (*(type_4 *)PTR_free_00132180)(var_2);
              var_13 = 0;
            }
          }
          if ((var_11->flags & 1) != 0) break;
          bVar1 = false;
          var_13 = 0;
        }
        var_13 = var_15(var_11->modname,0x400);
        if (var_13 != 0) break;
        var_11->flags = var_11->flags & 0xfffffffe;
        bVar1 = false;
      }
    } while (!bVar1);
    var_16 = var_11->probed_name;
    if (var_16 == (char *)0x0) {
      var_16 = var_11->modname;
    }
    var_17(var_1 + -0x6a58,var_16);
  }
  return var_13;
}


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

int MASKED(int param_1)

{
  bool bVar1;
  undefined4 uVar2;
  code *pcVar3;
  code *pcVar4;
  undefined4 uVar5;
  int iVar6;
  byte *pbVar7;
  undefined *puVar8;
  int iVar9;
  undefined *puVar10;
  int iVar11;
  
  if ((*(uint *)(param_1 + 0x14) & 4) == 0) {
    iVar11 = -2;
    if ((*(uint *)PTR_DAT_0013135c & 2) == 0) {
      if ((*(uint *)(param_1 + 0x14) & 0x10) == 0) {
        puVar8 = PTR_FUN_001311a4 + -0x6aa4;
      }
      else {
        puVar8 = PTR_FUN_001311a4 + -0x6abc;
      }
      iVar11 = *(int *)(param_1 + 0x18);
      if (iVar11 == 0) {
        iVar11 = *(int *)(param_1 + 8);
      }
      FUN_000195a0(puVar8,iVar11);
      iVar11 = -2;
    }
  }
  else {
    if ((*(uint *)PTR_DAT_0013135c & 0x20) == 0) {
      uVar2 = FUN_00018edc(*(undefined4 *)(param_1 + 0xc));
      *(undefined4 *)(param_1 + 0xc) = uVar2;
    }
    puVar8 = PTR_FUN_001311a4;
    bVar1 = true;
    iVar11 = 0;
    pcVar3 = (code *)(PTR_LAB_00131488 + -0x7cf0);
    pcVar4 = (code *)(PTR_LAB_00131488 + -0x7fc8);
    do {
      while( true ) {
        while( true ) {
          while( true ) {
            if (*(int *)(param_1 + 0xc) == 0) {
              return iVar11;
            }
            uVar2 = FUN_00018db0(param_1 + 0xc);
            uVar5 = FUN_00018b68(uVar2);
            iVar6 = (*pcVar3)(uVar5);
            if ((*(uint *)PTR_DAT_0013135c & 0x20) != 0) break;
            iVar11 = *(int *)(iVar6 + 0x1c);
            *(undefined4 *)(iVar6 + 0x1c) = 0;
            pbVar7 = (byte *)(*(code *)PTR_FUN_00131474)(PTR_FUN_001311a4 + -0x6a3c,0);
            if (pbVar7 != (byte *)0x0) {
              for (; 0x22 < *pbVar7; pbVar7 = pbVar7 + 1) {
              }
                    /* WARNING: Could not emulate address calculation at 0x00038a00 */
                    /* WARNING: Treating indirect jump as call */
              iVar11 = (*(code *)(&_gp_1 + *(int *)(puVar8 + (uint)*pbVar7 * 4 + -0x6a0c)))();
              return iVar11;
            }
            if (param_1 == iVar6) {
              iVar11 = (*pcVar4)(iVar11,*(undefined4 *)(*(int *)PTR_DAT_00131330 + 4));
            }
            if ((*(uint *)PTR_DAT_0013135c & 0x40) == 0) {
              if ((*(uint *)(iVar6 + 0x14) & 1) == 0) {
                iVar9 = FUN_00039834(uVar2,iVar11);
                if (iVar9 == 0x11) {
                  (*(code *)PTR_free_00132180)(iVar11);
                }
                else {
                  (*(code *)PTR_free_00132180)();
                  if (iVar9 != 0) {
                    iVar11 = *(int *)(iVar6 + 0x18);
                    if (iVar11 == 0) {
                      iVar11 = *(int *)(iVar6 + 8);
                    }
                    uVar5 = FUN_000399f8(iVar9);
                    FUN_000195a0(PTR_FUN_001311a4 + -0x6a2c,iVar11,uVar2,uVar5);
                    return iVar9;
                  }
                }
                *(uint *)(iVar6 + 0x14) = *(uint *)(iVar6 + 0x14) | 1;
                iVar11 = 0;
              }
              else {
                (*(code *)PTR_free_00132180)(iVar11);
                iVar11 = 0;
              }
            }
            else {
              if (iVar11 == 0) {
                puVar10 = PTR_FUN_001311a4 + -0x6a6c;
              }
              else {
                puVar10 = PTR_FUN_001311a4 + -0x6a80;
              }
              (*(code *)PTR___printf_chk_00131e4c)
                        (1,puVar10,PTR_FUN_001311a4 + -0x6c8c,*(int *)PTR_DAT_00131330 + 0x8f,uVar2,
                         iVar11);
              (*(code *)PTR_free_00132180)(iVar11);
              iVar11 = 0;
            }
          }
          if ((*(uint *)(iVar6 + 0x14) & 1) != 0) break;
          bVar1 = false;
          iVar11 = 0;
        }
        iVar11 = FUN_000399a0(*(undefined4 *)(iVar6 + 8),0x400);
        if (iVar11 != 0) break;
        *(uint *)(iVar6 + 0x14) = *(uint *)(iVar6 + 0x14) & 0xfffffffe;
        bVar1 = false;
      }
    } while (!bVar1);
    iVar9 = *(int *)(iVar6 + 0x18);
    if (iVar9 == 0) {
      iVar9 = *(int *)(iVar6 + 8);
    }
    FUN_00018f7c(PTR_FUN_001311a4 + -0x6a58,iVar9);
  }
  return iVar11;
}

