
bfd_elf_version_expr *
lang_vers_match(bfd_elf_version_expr_head *head,bfd_elf_version_expr *prev,char *sym)

{
  char *__pattern;
  undefined4 uVar1;
  byte bVar2;
  uint uVar3;
  int iVar4;
  char *__s2;
  bfd_elf_version_expr *pbVar5;
  char *__s2_00;
  char *__s2_01;
  char *__name;
  bfd_elf_version_expr e;
  
  uVar1 = current_demangling_style;
  cplus_demangle_set_style(0xffffffff);
  __s2 = (char *)bfd_demangle(link_info.output_bfd,sym,0);
  if (__s2 == (char *)0x0) {
    __s2 = sym;
  }
  cplus_demangle_set_style(uVar1);
  uVar3 = head->mask;
  __s2_01 = sym;
  if ((uVar3 & 2) != 0) {
    __s2_01 = (char *)bfd_demangle(link_info.output_bfd,sym,3);
    uVar3 = head->mask;
    if (__s2_01 == (char *)0x0) {
      __s2_01 = sym;
    }
  }
  if (((uVar3 & 4) == 0) ||
     (__s2_00 = (char *)bfd_demangle(link_info.output_bfd,sym,4), __s2_00 == (char *)0x0)) {
    __s2_00 = sym;
  }
  if (head->htab == (void *)0x0) {
LAB_00112fa6:
    if ((prev == (bfd_elf_version_expr *)0x0) || ((prev->field_0x10 & 1) != 0)) {
      pbVar5 = head->remaining;
      goto joined_r0x001130cb;
    }
  }
  else {
    if (prev == (bfd_elf_version_expr *)0x0) {
LAB_00113048:
      uVar3 = head->mask;
      if ((uVar3 & 1) != 0) {
        e.pattern = __s2;
        pbVar5 = (bfd_elf_version_expr *)htab_find(head->htab,&e);
        while ((pbVar5 != (bfd_elf_version_expr *)0x0 &&
               (iVar4 = strcmp(pbVar5->pattern,__s2), iVar4 == 0))) {
          if ((pbVar5->field_0x10 & 0x38) == 8) goto LAB_00113008;
          pbVar5 = pbVar5->next;
        }
LAB_001131e0:
        uVar3 = head->mask;
      }
      if ((uVar3 & 2) != 0) {
        e.pattern = __s2_01;
        pbVar5 = (bfd_elf_version_expr *)htab_find(head->htab,&e);
        while ((pbVar5 != (bfd_elf_version_expr *)0x0 &&
               (iVar4 = strcmp(pbVar5->pattern,__s2_01), iVar4 == 0))) {
          if ((pbVar5->field_0x10 & 0x38) == 0x10) goto LAB_00113008;
          pbVar5 = pbVar5->next;
        }
LAB_00113180:
        uVar3 = head->mask;
      }
      if ((uVar3 & 4) != 0) {
        e.pattern = __s2_00;
        pbVar5 = (bfd_elf_version_expr *)htab_find(head->htab,&e);
        while ((pbVar5 != (bfd_elf_version_expr *)0x0 &&
               (iVar4 = strcmp(pbVar5->pattern,__s2_00), iVar4 == 0))) {
          if ((pbVar5->field_0x10 & 0x38) == 0x20) goto LAB_00113008;
          pbVar5 = pbVar5->next;
        }
      }
      goto LAB_00112fa6;
    }
    if ((prev->field_0x10 & 1) != 0) {
      bVar2 = (byte)prev->field_0x10 >> 3 & 7;
      if (bVar2 == 1) goto LAB_001131e0;
      if (bVar2 == 0) goto LAB_00113048;
      if (bVar2 != 2) goto LAB_00112fa6;
      goto LAB_00113180;
    }
  }
  pbVar5 = prev->next;
joined_r0x001130cb:
  for (; pbVar5 != (bfd_elf_version_expr *)0x0; pbVar5 = pbVar5->next) {
    __pattern = pbVar5->pattern;
    if (__pattern != (char *)0x0) {
      if ((*__pattern == '*') && (__pattern[1] == '\0')) goto LAB_00113008;
      bVar2 = pbVar5->field_0x10 & 0x38;
      __name = __s2_00;
      if ((bVar2 != 0x20) && (__name = __s2, bVar2 == 0x10)) {
        __name = __s2_01;
      }
      iVar4 = fnmatch(__pattern,__name,0);
      if (iVar4 == 0) goto LAB_00113008;
    }
  }
  pbVar5 = (bfd_elf_version_expr *)0x0;
LAB_00113008:
  if (__s2 != sym) {
    free(__s2);
  }
  if (__s2_01 != sym) {
    free(__s2_01);
  }
  if (__s2_00 != sym) {
    free(__s2_00);
  }
  return pbVar5;
}



undefined8 * FUN_00112f00(long param_1,undefined8 *param_2,char *param_3)

{
  char *__pattern;
  undefined4 uVar1;
  byte bVar2;
  uint uVar3;
  int iVar4;
  char *__s2;
  undefined8 *puVar5;
  char *__s2_00;
  char *__s2_01;
  char *__name;
  undefined1 local_58 [8];
  char *local_50;
  
  uVar1 = current_demangling_style;
  cplus_demangle_set_style(0xffffffff);
  __s2 = (char *)bfd_demangle(DAT_00171a10,param_3,0);
  if (__s2 == (char *)0x0) {
    __s2 = param_3;
  }
  cplus_demangle_set_style(uVar1);
  uVar3 = *(uint *)(param_1 + 0x18);
  __s2_01 = param_3;
  if ((uVar3 & 2) != 0) {
    __s2_01 = (char *)bfd_demangle(DAT_00171a10,param_3,3);
    uVar3 = *(uint *)(param_1 + 0x18);
    if (__s2_01 == (char *)0x0) {
      __s2_01 = param_3;
    }
  }
  if (((uVar3 & 4) == 0) ||
     (__s2_00 = (char *)bfd_demangle(DAT_00171a10,param_3,4), __s2_00 == (char *)0x0)) {
    __s2_00 = param_3;
  }
  if (*(long *)(param_1 + 8) == 0) {
LAB_00112fa6:
    if ((param_2 == (undefined8 *)0x0) || ((*(byte *)(param_2 + 2) & 1) != 0)) {
      puVar5 = *(undefined8 **)(param_1 + 0x10);
      goto joined_r0x001130cb;
    }
  }
  else {
    if (param_2 == (undefined8 *)0x0) {
LAB_00113048:
      uVar3 = *(uint *)(param_1 + 0x18);
      if ((uVar3 & 1) != 0) {
        local_50 = __s2;
        puVar5 = (undefined8 *)htab_find(*(long *)(param_1 + 8),local_58);
        while ((puVar5 != (undefined8 *)0x0 && (iVar4 = strcmp((char *)puVar5[1],__s2), iVar4 == 0))
              ) {
          if ((*(byte *)(puVar5 + 2) & 0x38) == 8) goto LAB_00113008;
          puVar5 = (undefined8 *)*puVar5;
        }
LAB_001131e0:
        uVar3 = *(uint *)(param_1 + 0x18);
      }
      if ((uVar3 & 2) != 0) {
        local_50 = __s2_01;
        puVar5 = (undefined8 *)htab_find(*(undefined8 *)(param_1 + 8),local_58);
        while ((puVar5 != (undefined8 *)0x0 &&
               (iVar4 = strcmp((char *)puVar5[1],__s2_01), iVar4 == 0))) {
          if ((*(byte *)(puVar5 + 2) & 0x38) == 0x10) goto LAB_00113008;
          puVar5 = (undefined8 *)*puVar5;
        }
LAB_00113180:
        uVar3 = *(uint *)(param_1 + 0x18);
      }
      if ((uVar3 & 4) != 0) {
        local_50 = __s2_00;
        puVar5 = (undefined8 *)htab_find(*(undefined8 *)(param_1 + 8),local_58);
        while ((puVar5 != (undefined8 *)0x0 &&
               (iVar4 = strcmp((char *)puVar5[1],__s2_00), iVar4 == 0))) {
          if ((*(byte *)(puVar5 + 2) & 0x38) == 0x20) goto LAB_00113008;
          puVar5 = (undefined8 *)*puVar5;
        }
      }
      goto LAB_00112fa6;
    }
    if ((*(byte *)(param_2 + 2) & 1) != 0) {
      bVar2 = *(byte *)(param_2 + 2) >> 3 & 7;
      if (bVar2 == 1) goto LAB_001131e0;
      if (bVar2 == 0) goto LAB_00113048;
      if (bVar2 != 2) goto LAB_00112fa6;
      goto LAB_00113180;
    }
  }
  puVar5 = (undefined8 *)*param_2;
joined_r0x001130cb:
  for (; puVar5 != (undefined8 *)0x0; puVar5 = (undefined8 *)*puVar5) {
    __pattern = (char *)puVar5[1];
    if (__pattern != (char *)0x0) {
      if ((*__pattern == '*') && (__pattern[1] == '\0')) goto LAB_00113008;
      __name = __s2_00;
      if (((*(byte *)(puVar5 + 2) & 0x38) != 0x20) &&
         (__name = __s2, (*(byte *)(puVar5 + 2) & 0x38) == 0x10)) {
        __name = __s2_01;
      }
      iVar4 = fnmatch(__pattern,__name,0);
      if (iVar4 == 0) goto LAB_00113008;
    }
  }
  puVar5 = (undefined8 *)0x0;
LAB_00113008:
  if (__s2 != param_3) {
    free(__s2);
  }
  if (__s2_01 != param_3) {
    free(__s2_01);
  }
  if (__s2_00 != param_3) {
    free(__s2_00);
  }
  return puVar5;
}


PUSH R15
PUSH R14
MOV R14,RDI
MOV EDI,0xffffffff
PUSH R13
MOV R13,RDX
PUSH R12
MOV R12,R13
PUSH RBP
PUSH RBX
SUB RSP,0x38
MOV EBX,dword ptr [0x001709e8]
MOV qword ptr [RSP + 0x8],RSI
CALL 0x00109230
MOV RDI,qword ptr [0x00171a10]
XOR EDX,EDX
MOV RSI,R13
CALL 0x001098e0
MOV EDI,EBX
MOV RBP,RAX
TEST RAX,RAX
CMOVZ RBP,R13
CALL 0x00109230
MOV EAX,dword ptr [R14 + 0x18]
TEST AL,0x2
JNZ 0x00113108
TEST AL,0x4
JNZ 0x001130e0
MOV RBX,R13
MOV RDI,qword ptr [R14 + 0x8]
TEST RDI,RDI
JZ 0x00112fa6
MOV RAX,qword ptr [RSP + 0x8]
TEST RAX,RAX
JZ 0x00113048
MOVZX EAX,byte ptr [RAX + 0x10]
TEST AL,0x1
JZ 0x001130c0
SHR AL,0x3
AND EAX,0x7
CMP AL,0x1
JZ 0x001131e0
TEST AL,AL
JZ 0x00113048
CMP AL,0x2
JZ 0x00113180
MOV RAX,qword ptr [RSP + 0x8]
TEST RAX,RAX
JZ 0x00112fba
TEST byte ptr [RAX + 0x10],0x1
JZ 0x001130c0
MOV R15,qword ptr [R14 + 0x10]
JMP 0x00112fe6
MOVZX EAX,byte ptr [R15 + 0x10]
MOV RSI,RBX
AND EAX,0x38
CMP AL,0x20
JZ 0x00112fd8
CMP AL,0x10
MOV RSI,RBP
CMOVZ RSI,R12
XOR EDX,EDX
CALL 0x00109420
TEST EAX,EAX
JZ 0x00113008
MOV R15,qword ptr [R15]
TEST R15,R15
JZ 0x001130d8
MOV RDI,qword ptr [R15 + 0x8]
TEST RDI,RDI
JZ 0x00112fe3
CMP byte ptr [RDI],0x2a
JNZ 0x00112fc0
CMP byte ptr [RDI + 0x1],0x0
JNZ 0x00112fc0
NOP dword ptr [RAX + RAX*0x1]
CMP RBP,R13
JZ 0x00113015
MOV RDI,RBP
CALL 0x00109bf0
CMP R12,R13
JZ 0x00113022
MOV RDI,R12
CALL 0x00109bf0
CMP RBX,R13
JZ 0x0011302f
MOV RDI,RBX
CALL 0x00109bf0
ADD RSP,0x38
MOV RAX,R15
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
MOV EAX,dword ptr [R14 + 0x18]
TEST AL,0x1
JNZ 0x00113191
TEST AL,0x2
JNZ 0x00113134
TEST AL,0x4
JZ 0x00112fa6
MOV RDI,qword ptr [R14 + 0x8]
LEA RSI,[RSP + 0x10]
MOV qword ptr [RSP + 0x18],RBX
CALL 0x00109a10
MOV R15,RAX
TEST RAX,RAX
JNZ 0x001130a4
JMP 0x00112fa6
MOVZX EAX,byte ptr [R15 + 0x10]
AND EAX,0x38
CMP AL,0x20
JZ 0x00113008
MOV R15,qword ptr [R15]
TEST R15,R15
JZ 0x00112fa6
MOV RDI,qword ptr [R15 + 0x8]
MOV RSI,RBX
CALL 0x00109600
TEST EAX,EAX
JZ 0x00113088
JMP 0x00112fa6
MOV RAX,qword ptr [RSP + 0x8]
MOV R15,qword ptr [RAX]
TEST R15,R15
JNZ 0x00112fef
NOP dword ptr [RAX]
XOR R15D,R15D
JMP 0x00113008
MOV RDI,qword ptr [0x00171a10]
MOV EDX,0x4
MOV RSI,R13
CALL 0x001098e0
MOV RBX,RAX
TEST RAX,RAX
JNZ 0x00112f65
JMP 0x00112f62
MOV RDI,qword ptr [0x00171a10]
MOV EDX,0x3
MOV RSI,R13
CALL 0x001098e0
MOV R12,RAX
MOV EAX,dword ptr [R14 + 0x18]
TEST R12,R12
JNZ 0x00112f5a
MOV R12,R13
JMP 0x00112f5a
MOV RDI,qword ptr [R14 + 0x8]
LEA RSI,[RSP + 0x10]
MOV qword ptr [RSP + 0x18],R12
CALL 0x00109a10
MOV R15,RAX
TEST RAX,RAX
JNZ 0x00113170
JMP 0x00113180
MOVZX EAX,byte ptr [R15 + 0x10]
AND EAX,0x38
CMP AL,0x10
JZ 0x00113008
MOV R15,qword ptr [R15]
TEST R15,R15
JZ 0x00113180
MOV RDI,qword ptr [R15 + 0x8]
MOV RSI,R12
CALL 0x00109600
TEST EAX,EAX
JZ 0x00113158
MOV EAX,dword ptr [R14 + 0x18]
TEST AL,0x4
JZ 0x00112fa6
JMP 0x00113064
LEA RSI,[RSP + 0x10]
MOV qword ptr [RSP + 0x18],RBP
CALL 0x00109a10
MOV R15,RAX
TEST RAX,RAX
JNZ 0x001131c8
JMP 0x001131e0
MOVZX EAX,byte ptr [R15 + 0x10]
AND EAX,0x38
CMP AL,0x8
JZ 0x00113008
MOV R15,qword ptr [R15]
TEST R15,R15
JZ 0x001131e0
MOV RDI,qword ptr [R15 + 0x8]
MOV RSI,RBP
CALL 0x00109600
TEST EAX,EAX
JZ 0x001131b0
NOP dword ptr [RAX + RAX*0x1]
MOV EAX,dword ptr [R14 + 0x18]
TEST AL,0x2
JZ 0x0011305c
JMP 0x00113134
(translation_unit "undefined8 * FUN_00112f00(long param_1,undefined8 *param_2,char *param_3)\n\n{\n  char *__pattern;\n  undefined4 uVar1;\n  byte bVar2;\n  uint uVar3;\n  int iVar4;\n  char *__s2;\n  undefined8 *puVar5;\n  char *__s2_00;\n  char *__s2_01;\n  char *__name;\n  undefined1 local_58 [8];\n  char *local_50;\n  \n  uVar1 = current_demangling_style;\n  cplus_demangle_set_style(0xffffffff);\n  __s2 = (char *)bfd_demangle(DAT_00171a10,param_3,0);\n  if (__s2 == (char *)0x0) {\n    __s2 = param_3;\n  }\n  cplus_demangle_set_style(uVar1);\n  uVar3 = *(uint *)(param_1 + 0x18);\n  __s2_01 = param_3;\n  if ((uVar3 & 2) != 0) {\n    __s2_01 = (char *)bfd_demangle(DAT_00171a10,param_3,3);\n    uVar3 = *(uint *)(param_1 + 0x18);\n    if (__s2_01 == (char *)0x0) {\n      __s2_01 = param_3;\n    }\n  }\n  if (((uVar3 & 4) == 0) ||\n     (__s2_00 = (char *)bfd_demangle(DAT_00171a10,param_3,4), __s2_00 == (char *)0x0)) {\n    __s2_00 = param_3;\n  }\n  if (*(long *)(param_1 + 8) == 0) {\nLAB_00112fa6:\n    if ((param_2 == (undefined8 *)0x0) || ((*(byte *)(param_2 + 2) & 1) != 0)) {\n      puVar5 = *(undefined8 **)(param_1 + 0x10);\n      goto joined_r0x001130cb;\n    }\n  }\n  else {\n    if (param_2 == (undefined8 *)0x0) {\nLAB_00113048:\n      uVar3 = *(uint *)(param_1 + 0x18);\n      if ((uVar3 & 1) != 0) {\n        local_50 = __s2;\n        puVar5 = (undefined8 *)htab_find(*(long *)(param_1 + 8),local_58);\n        while ((puVar5 != (undefined8 *)0x0 && (iVar4 = strcmp((char *)puVar5[1],__s2), iVar4 == 0))\n              ) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 8) goto LAB_00113008;\n          puVar5 = (undefined8 *)*puVar5;\n        }\nLAB_001131e0:\n        uVar3 = *(uint *)(param_1 + 0x18);\n      }\n      if ((uVar3 & 2) != 0) {\n        local_50 = __s2_01;\n        puVar5 = (undefined8 *)htab_find(*(undefined8 *)(param_1 + 8),local_58);\n        while ((puVar5 != (undefined8 *)0x0 &&\n               (iVar4 = strcmp((char *)puVar5[1],__s2_01), iVar4 == 0))) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 0x10) goto LAB_00113008;\n          puVar5 = (undefined8 *)*puVar5;\n        }\nLAB_00113180:\n        uVar3 = *(uint *)(param_1 + 0x18);\n      }\n      if ((uVar3 & 4) != 0) {\n        local_50 = __s2_00;\n        puVar5 = (undefined8 *)htab_find(*(undefined8 *)(param_1 + 8),local_58);\n        while ((puVar5 != (undefined8 *)0x0 &&\n               (iVar4 = strcmp((char *)puVar5[1],__s2_00), iVar4 == 0))) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 0x20) goto LAB_00113008;\n          puVar5 = (undefined8 *)*puVar5;\n        }\n      }\n      goto LAB_00112fa6;\n    }\n    if ((*(byte *)(param_2 + 2) & 1) != 0) {\n      bVar2 = *(byte *)(param_2 + 2) >> 3 & 7;\n      if (bVar2 == 1) goto LAB_001131e0;\n      if (bVar2 == 0) goto LAB_00113048;\n      if (bVar2 != 2) goto LAB_00112fa6;\n      goto LAB_00113180;\n    }\n  }\n  puVar5 = (undefined8 *)*param_2;\njoined_r0x001130cb:\n  for (; puVar5 != (undefined8 *)0x0; puVar5 = (undefined8 *)*puVar5) {\n    __pattern = (char *)puVar5[1];\n    if (__pattern != (char *)0x0) {\n      if ((*__pattern == '*') && (__pattern[1] == '\0')) goto LAB_00113008;\n      __name = __s2_00;\n      if (((*(byte *)(puVar5 + 2) & 0x38) != 0x20) &&\n         (__name = __s2, (*(byte *)(puVar5 + 2) & 0x38) == 0x10)) {\n        __name = __s2_01;\n      }\n      iVar4 = fnmatch(__pattern,__name,0);\n      if (iVar4 == 0) goto LAB_00113008;\n    }\n  }\n  puVar5 = (undefined8 *)0x0;\nLAB_00113008:\n  if (__s2 != param_3) {\n    free(__s2);\n  }\n  if (__s2_01 != param_3) {\n    free(__s2_01);\n  }\n  if (__s2_00 != param_3) {\n    free(__s2_00);\n  }\n  return puVar5;\n}\n\n" (function_definition "undefined8 * FUN_00112f00(long param_1,undefined8 *param_2,char *param_3)\n\n{\n  char *__pattern;\n  undefined4 uVar1;\n  byte bVar2;\n  uint uVar3;\n  int iVar4;\n  char *__s2;\n  undefined8 *puVar5;\n  char *__s2_00;\n  char *__s2_01;\n  char *__name;\n  undefined1 local_58 [8];\n  char *local_50;\n  \n  uVar1 = current_demangling_style;\n  cplus_demangle_set_style(0xffffffff);\n  __s2 = (char *)bfd_demangle(DAT_00171a10,param_3,0);\n  if (__s2 == (char *)0x0) {\n    __s2 = param_3;\n  }\n  cplus_demangle_set_style(uVar1);\n  uVar3 = *(uint *)(param_1 + 0x18);\n  __s2_01 = param_3;\n  if ((uVar3 & 2) != 0) {\n    __s2_01 = (char *)bfd_demangle(DAT_00171a10,param_3,3);\n    uVar3 = *(uint *)(param_1 + 0x18);\n    if (__s2_01 == (char *)0x0) {\n      __s2_01 = param_3;\n    }\n  }\n  if (((uVar3 & 4) == 0) ||\n     (__s2_00 = (char *)bfd_demangle(DAT_00171a10,param_3,4), __s2_00 == (char *)0x0)) {\n    __s2_00 = param_3;\n  }\n  if (*(long *)(param_1 + 8) == 0) {\nLAB_00112fa6:\n    if ((param_2 == (undefined8 *)0x0) || ((*(byte *)(param_2 + 2) & 1) != 0)) {\n      puVar5 = *(undefined8 **)(param_1 + 0x10);\n      goto joined_r0x001130cb;\n    }\n  }\n  else {\n    if (param_2 == (undefined8 *)0x0) {\nLAB_00113048:\n      uVar3 = *(uint *)(param_1 + 0x18);\n      if ((uVar3 & 1) != 0) {\n        local_50 = __s2;\n        puVar5 = (undefined8 *)htab_find(*(long *)(param_1 + 8),local_58);\n        while ((puVar5 != (undefined8 *)0x0 && (iVar4 = strcmp((char *)puVar5[1],__s2), iVar4 == 0))\n              ) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 8) goto LAB_00113008;\n          puVar5 = (undefined8 *)*puVar5;\n        }\nLAB_001131e0:\n        uVar3 = *(uint *)(param_1 + 0x18);\n      }\n      if ((uVar3 & 2) != 0) {\n        local_50 = __s2_01;\n        puVar5 = (undefined8 *)htab_find(*(undefined8 *)(param_1 + 8),local_58);\n        while ((puVar5 != (undefined8 *)0x0 &&\n               (iVar4 = strcmp((char *)puVar5[1],__s2_01), iVar4 == 0))) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 0x10) goto LAB_00113008;\n          puVar5 = (undefined8 *)*puVar5;\n        }\nLAB_00113180:\n        uVar3 = *(uint *)(param_1 + 0x18);\n      }\n      if ((uVar3 & 4) != 0) {\n        local_50 = __s2_00;\n        puVar5 = (undefined8 *)htab_find(*(undefined8 *)(param_1 + 8),local_58);\n        while ((puVar5 != (undefined8 *)0x0 &&\n               (iVar4 = strcmp((char *)puVar5[1],__s2_00), iVar4 == 0))) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 0x20) goto LAB_00113008;\n          puVar5 = (undefined8 *)*puVar5;\n        }\n      }\n      goto LAB_00112fa6;\n    }\n    if ((*(byte *)(param_2 + 2) & 1) != 0) {\n      bVar2 = *(byte *)(param_2 + 2) >> 3 & 7;\n      if (bVar2 == 1) goto LAB_001131e0;\n      if (bVar2 == 0) goto LAB_00113048;\n      if (bVar2 != 2) goto LAB_00112fa6;\n      goto LAB_00113180;\n    }\n  }\n  puVar5 = (undefined8 *)*param_2;\njoined_r0x001130cb:\n  for (; puVar5 != (undefined8 *)0x0; puVar5 = (undefined8 *)*puVar5) {\n    __pattern = (char *)puVar5[1];\n    if (__pattern != (char *)0x0) {\n      if ((*__pattern == '*') && (__pattern[1] == '\0')) goto LAB_00113008;\n      __name = __s2_00;\n      if (((*(byte *)(puVar5 + 2) & 0x38) != 0x20) &&\n         (__name = __s2, (*(byte *)(puVar5 + 2) & 0x38) == 0x10)) {\n        __name = __s2_01;\n      }\n      iVar4 = fnmatch(__pattern,__name,0);\n      if (iVar4 == 0) goto LAB_00113008;\n    }\n  }\n  puVar5 = (undefined8 *)0x0;\nLAB_00113008:\n  if (__s2 != param_3) {\n    free(__s2);\n  }\n  if (__s2_01 != param_3) {\n    free(__s2_01);\n  }\n  if (__s2_00 != param_3) {\n    free(__s2_00);\n  }\n  return puVar5;\n}" type_identifier (pointer_declarator "* FUN_00112f00(long param_1,undefined8 *param_2,char *param_3)" * (function_declarator "FUN_00112f00(long param_1,undefined8 *param_2,char *param_3)" identifier (parameter_list "(long param_1,undefined8 *param_2,char *param_3)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) , (parameter_declaration "undefined8 *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "char *param_3" primitive_type (pointer_declarator "*param_3" * identifier)) )))) (compound_statement "{\n  char *__pattern;\n  undefined4 uVar1;\n  byte bVar2;\n  uint uVar3;\n  int iVar4;\n  char *__s2;\n  undefined8 *puVar5;\n  char *__s2_00;\n  char *__s2_01;\n  char *__name;\n  undefined1 local_58 [8];\n  char *local_50;\n  \n  uVar1 = current_demangling_style;\n  cplus_demangle_set_style(0xffffffff);\n  __s2 = (char *)bfd_demangle(DAT_00171a10,param_3,0);\n  if (__s2 == (char *)0x0) {\n    __s2 = param_3;\n  }\n  cplus_demangle_set_style(uVar1);\n  uVar3 = *(uint *)(param_1 + 0x18);\n  __s2_01 = param_3;\n  if ((uVar3 & 2) != 0) {\n    __s2_01 = (char *)bfd_demangle(DAT_00171a10,param_3,3);\n    uVar3 = *(uint *)(param_1 + 0x18);\n    if (__s2_01 == (char *)0x0) {\n      __s2_01 = param_3;\n    }\n  }\n  if (((uVar3 & 4) == 0) ||\n     (__s2_00 = (char *)bfd_demangle(DAT_00171a10,param_3,4), __s2_00 == (char *)0x0)) {\n    __s2_00 = param_3;\n  }\n  if (*(long *)(param_1 + 8) == 0) {\nLAB_00112fa6:\n    if ((param_2 == (undefined8 *)0x0) || ((*(byte *)(param_2 + 2) & 1) != 0)) {\n      puVar5 = *(undefined8 **)(param_1 + 0x10);\n      goto joined_r0x001130cb;\n    }\n  }\n  else {\n    if (param_2 == (undefined8 *)0x0) {\nLAB_00113048:\n      uVar3 = *(uint *)(param_1 + 0x18);\n      if ((uVar3 & 1) != 0) {\n        local_50 = __s2;\n        puVar5 = (undefined8 *)htab_find(*(long *)(param_1 + 8),local_58);\n        while ((puVar5 != (undefined8 *)0x0 && (iVar4 = strcmp((char *)puVar5[1],__s2), iVar4 == 0))\n              ) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 8) goto LAB_00113008;\n          puVar5 = (undefined8 *)*puVar5;\n        }\nLAB_001131e0:\n        uVar3 = *(uint *)(param_1 + 0x18);\n      }\n      if ((uVar3 & 2) != 0) {\n        local_50 = __s2_01;\n        puVar5 = (undefined8 *)htab_find(*(undefined8 *)(param_1 + 8),local_58);\n        while ((puVar5 != (undefined8 *)0x0 &&\n               (iVar4 = strcmp((char *)puVar5[1],__s2_01), iVar4 == 0))) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 0x10) goto LAB_00113008;\n          puVar5 = (undefined8 *)*puVar5;\n        }\nLAB_00113180:\n        uVar3 = *(uint *)(param_1 + 0x18);\n      }\n      if ((uVar3 & 4) != 0) {\n        local_50 = __s2_00;\n        puVar5 = (undefined8 *)htab_find(*(undefined8 *)(param_1 + 8),local_58);\n        while ((puVar5 != (undefined8 *)0x0 &&\n               (iVar4 = strcmp((char *)puVar5[1],__s2_00), iVar4 == 0))) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 0x20) goto LAB_00113008;\n          puVar5 = (undefined8 *)*puVar5;\n        }\n      }\n      goto LAB_00112fa6;\n    }\n    if ((*(byte *)(param_2 + 2) & 1) != 0) {\n      bVar2 = *(byte *)(param_2 + 2) >> 3 & 7;\n      if (bVar2 == 1) goto LAB_001131e0;\n      if (bVar2 == 0) goto LAB_00113048;\n      if (bVar2 != 2) goto LAB_00112fa6;\n      goto LAB_00113180;\n    }\n  }\n  puVar5 = (undefined8 *)*param_2;\njoined_r0x001130cb:\n  for (; puVar5 != (undefined8 *)0x0; puVar5 = (undefined8 *)*puVar5) {\n    __pattern = (char *)puVar5[1];\n    if (__pattern != (char *)0x0) {\n      if ((*__pattern == '*') && (__pattern[1] == '\0')) goto LAB_00113008;\n      __name = __s2_00;\n      if (((*(byte *)(puVar5 + 2) & 0x38) != 0x20) &&\n         (__name = __s2, (*(byte *)(puVar5 + 2) & 0x38) == 0x10)) {\n        __name = __s2_01;\n      }\n      iVar4 = fnmatch(__pattern,__name,0);\n      if (iVar4 == 0) goto LAB_00113008;\n    }\n  }\n  puVar5 = (undefined8 *)0x0;\nLAB_00113008:\n  if (__s2 != param_3) {\n    free(__s2);\n  }\n  if (__s2_01 != param_3) {\n    free(__s2_01);\n  }\n  if (__s2_00 != param_3) {\n    free(__s2_00);\n  }\n  return puVar5;\n}" { (declaration "char *__pattern;" primitive_type (pointer_declarator "*__pattern" * identifier) ;) (declaration "undefined4 uVar1;" type_identifier identifier ;) (declaration "byte bVar2;" type_identifier identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "char *__s2;" primitive_type (pointer_declarator "*__s2" * identifier) ;) (declaration "undefined8 *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "char *__s2_00;" primitive_type (pointer_declarator "*__s2_00" * identifier) ;) (declaration "char *__s2_01;" primitive_type (pointer_declarator "*__s2_01" * identifier) ;) (declaration "char *__name;" primitive_type (pointer_declarator "*__name" * identifier) ;) (declaration "undefined1 local_58 [8];" type_identifier (array_declarator "local_58 [8]" identifier [ number_literal ]) ;) (declaration "char *local_50;" primitive_type (pointer_declarator "*local_50" * identifier) ;) (expression_statement "uVar1 = current_demangling_style;" (assignment_expression "uVar1 = current_demangling_style" identifier = identifier) ;) (expression_statement "cplus_demangle_set_style(0xffffffff);" (call_expression "cplus_demangle_set_style(0xffffffff)" identifier (argument_list "(0xffffffff)" ( number_literal ))) ;) (expression_statement "__s2 = (char *)bfd_demangle(DAT_00171a10,param_3,0);" (assignment_expression "__s2 = (char *)bfd_demangle(DAT_00171a10,param_3,0)" identifier = (cast_expression "(char *)bfd_demangle(DAT_00171a10,param_3,0)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "bfd_demangle(DAT_00171a10,param_3,0)" identifier (argument_list "(DAT_00171a10,param_3,0)" ( identifier , identifier , number_literal ))))) ;) (if_statement "if (__s2 == (char *)0x0) {\n    __s2 = param_3;\n  }" if (parenthesized_expression "(__s2 == (char *)0x0)" ( (binary_expression "__s2 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    __s2 = param_3;\n  }" { (expression_statement "__s2 = param_3;" (assignment_expression "__s2 = param_3" identifier = identifier) ;) })) (expression_statement "cplus_demangle_set_style(uVar1);" (call_expression "cplus_demangle_set_style(uVar1)" identifier (argument_list "(uVar1)" ( identifier ))) ;) (expression_statement "uVar3 = *(uint *)(param_1 + 0x18);" (assignment_expression "uVar3 = *(uint *)(param_1 + 0x18)" identifier = (pointer_expression "*(uint *)(param_1 + 0x18)" * (cast_expression "(uint *)(param_1 + 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) ))))) ;) (expression_statement "__s2_01 = param_3;" (assignment_expression "__s2_01 = param_3" identifier = identifier) ;) (if_statement "if ((uVar3 & 2) != 0) {\n    __s2_01 = (char *)bfd_demangle(DAT_00171a10,param_3,3);\n    uVar3 = *(uint *)(param_1 + 0x18);\n    if (__s2_01 == (char *)0x0) {\n      __s2_01 = param_3;\n    }\n  }" if (parenthesized_expression "((uVar3 & 2) != 0)" ( (binary_expression "(uVar3 & 2) != 0" (parenthesized_expression "(uVar3 & 2)" ( (binary_expression "uVar3 & 2" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    __s2_01 = (char *)bfd_demangle(DAT_00171a10,param_3,3);\n    uVar3 = *(uint *)(param_1 + 0x18);\n    if (__s2_01 == (char *)0x0) {\n      __s2_01 = param_3;\n    }\n  }" { (expression_statement "__s2_01 = (char *)bfd_demangle(DAT_00171a10,param_3,3);" (assignment_expression "__s2_01 = (char *)bfd_demangle(DAT_00171a10,param_3,3)" identifier = (cast_expression "(char *)bfd_demangle(DAT_00171a10,param_3,3)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "bfd_demangle(DAT_00171a10,param_3,3)" identifier (argument_list "(DAT_00171a10,param_3,3)" ( identifier , identifier , number_literal ))))) ;) (expression_statement "uVar3 = *(uint *)(param_1 + 0x18);" (assignment_expression "uVar3 = *(uint *)(param_1 + 0x18)" identifier = (pointer_expression "*(uint *)(param_1 + 0x18)" * (cast_expression "(uint *)(param_1 + 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) ))))) ;) (if_statement "if (__s2_01 == (char *)0x0) {\n      __s2_01 = param_3;\n    }" if (parenthesized_expression "(__s2_01 == (char *)0x0)" ( (binary_expression "__s2_01 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      __s2_01 = param_3;\n    }" { (expression_statement "__s2_01 = param_3;" (assignment_expression "__s2_01 = param_3" identifier = identifier) ;) })) })) (if_statement "if (((uVar3 & 4) == 0) ||\n     (__s2_00 = (char *)bfd_demangle(DAT_00171a10,param_3,4), __s2_00 == (char *)0x0)) {\n    __s2_00 = param_3;\n  }" if (parenthesized_expression "(((uVar3 & 4) == 0) ||\n     (__s2_00 = (char *)bfd_demangle(DAT_00171a10,param_3,4), __s2_00 == (char *)0x0))" ( (binary_expression "((uVar3 & 4) == 0) ||\n     (__s2_00 = (char *)bfd_demangle(DAT_00171a10,param_3,4), __s2_00 == (char *)0x0)" (parenthesized_expression "((uVar3 & 4) == 0)" ( (binary_expression "(uVar3 & 4) == 0" (parenthesized_expression "(uVar3 & 4)" ( (binary_expression "uVar3 & 4" identifier & number_literal) )) == number_literal) )) || (parenthesized_expression "(__s2_00 = (char *)bfd_demangle(DAT_00171a10,param_3,4), __s2_00 == (char *)0x0)" ( (comma_expression "__s2_00 = (char *)bfd_demangle(DAT_00171a10,param_3,4), __s2_00 == (char *)0x0" (assignment_expression "__s2_00 = (char *)bfd_demangle(DAT_00171a10,param_3,4)" identifier = (cast_expression "(char *)bfd_demangle(DAT_00171a10,param_3,4)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "bfd_demangle(DAT_00171a10,param_3,4)" identifier (argument_list "(DAT_00171a10,param_3,4)" ( identifier , identifier , number_literal ))))) , (binary_expression "__s2_00 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (compound_statement "{\n    __s2_00 = param_3;\n  }" { (expression_statement "__s2_00 = param_3;" (assignment_expression "__s2_00 = param_3" identifier = identifier) ;) })) (if_statement "if (*(long *)(param_1 + 8) == 0) {\nLAB_00112fa6:\n    if ((param_2 == (undefined8 *)0x0) || ((*(byte *)(param_2 + 2) & 1) != 0)) {\n      puVar5 = *(undefined8 **)(param_1 + 0x10);\n      goto joined_r0x001130cb;\n    }\n  }\n  else {\n    if (param_2 == (undefined8 *)0x0) {\nLAB_00113048:\n      uVar3 = *(uint *)(param_1 + 0x18);\n      if ((uVar3 & 1) != 0) {\n        local_50 = __s2;\n        puVar5 = (undefined8 *)htab_find(*(long *)(param_1 + 8),local_58);\n        while ((puVar5 != (undefined8 *)0x0 && (iVar4 = strcmp((char *)puVar5[1],__s2), iVar4 == 0))\n              ) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 8) goto LAB_00113008;\n          puVar5 = (undefined8 *)*puVar5;\n        }\nLAB_001131e0:\n        uVar3 = *(uint *)(param_1 + 0x18);\n      }\n      if ((uVar3 & 2) != 0) {\n        local_50 = __s2_01;\n        puVar5 = (undefined8 *)htab_find(*(undefined8 *)(param_1 + 8),local_58);\n        while ((puVar5 != (undefined8 *)0x0 &&\n               (iVar4 = strcmp((char *)puVar5[1],__s2_01), iVar4 == 0))) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 0x10) goto LAB_00113008;\n          puVar5 = (undefined8 *)*puVar5;\n        }\nLAB_00113180:\n        uVar3 = *(uint *)(param_1 + 0x18);\n      }\n      if ((uVar3 & 4) != 0) {\n        local_50 = __s2_00;\n        puVar5 = (undefined8 *)htab_find(*(undefined8 *)(param_1 + 8),local_58);\n        while ((puVar5 != (undefined8 *)0x0 &&\n               (iVar4 = strcmp((char *)puVar5[1],__s2_00), iVar4 == 0))) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 0x20) goto LAB_00113008;\n          puVar5 = (undefined8 *)*puVar5;\n        }\n      }\n      goto LAB_00112fa6;\n    }\n    if ((*(byte *)(param_2 + 2) & 1) != 0) {\n      bVar2 = *(byte *)(param_2 + 2) >> 3 & 7;\n      if (bVar2 == 1) goto LAB_001131e0;\n      if (bVar2 == 0) goto LAB_00113048;\n      if (bVar2 != 2) goto LAB_00112fa6;\n      goto LAB_00113180;\n    }\n  }" if (parenthesized_expression "(*(long *)(param_1 + 8) == 0)" ( (binary_expression "*(long *)(param_1 + 8) == 0" (pointer_expression "*(long *)(param_1 + 8)" * (cast_expression "(long *)(param_1 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\nLAB_00112fa6:\n    if ((param_2 == (undefined8 *)0x0) || ((*(byte *)(param_2 + 2) & 1) != 0)) {\n      puVar5 = *(undefined8 **)(param_1 + 0x10);\n      goto joined_r0x001130cb;\n    }\n  }" { (labeled_statement "LAB_00112fa6:\n    if ((param_2 == (undefined8 *)0x0) || ((*(byte *)(param_2 + 2) & 1) != 0)) {\n      puVar5 = *(undefined8 **)(param_1 + 0x10);\n      goto joined_r0x001130cb;\n    }" statement_identifier : (if_statement "if ((param_2 == (undefined8 *)0x0) || ((*(byte *)(param_2 + 2) & 1) != 0)) {\n      puVar5 = *(undefined8 **)(param_1 + 0x10);\n      goto joined_r0x001130cb;\n    }" if (parenthesized_expression "((param_2 == (undefined8 *)0x0) || ((*(byte *)(param_2 + 2) & 1) != 0))" ( (binary_expression "(param_2 == (undefined8 *)0x0) || ((*(byte *)(param_2 + 2) & 1) != 0)" (parenthesized_expression "(param_2 == (undefined8 *)0x0)" ( (binary_expression "param_2 == (undefined8 *)0x0" identifier == (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "((*(byte *)(param_2 + 2) & 1) != 0)" ( (binary_expression "(*(byte *)(param_2 + 2) & 1) != 0" (parenthesized_expression "(*(byte *)(param_2 + 2) & 1)" ( (binary_expression "*(byte *)(param_2 + 2) & 1" (pointer_expression "*(byte *)(param_2 + 2)" * (cast_expression "(byte *)(param_2 + 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 2)" ( (binary_expression "param_2 + 2" identifier + number_literal) )))) & number_literal) )) != number_literal) ))) )) (compound_statement "{\n      puVar5 = *(undefined8 **)(param_1 + 0x10);\n      goto joined_r0x001130cb;\n    }" { (expression_statement "puVar5 = *(undefined8 **)(param_1 + 0x10);" (assignment_expression "puVar5 = *(undefined8 **)(param_1 + 0x10)" identifier = (pointer_expression "*(undefined8 **)(param_1 + 0x10)" * (cast_expression "(undefined8 **)(param_1 + 0x10)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) ))))) ;) (goto_statement "goto joined_r0x001130cb;" goto statement_identifier ;) }))) }) (else_clause "else {\n    if (param_2 == (undefined8 *)0x0) {\nLAB_00113048:\n      uVar3 = *(uint *)(param_1 + 0x18);\n      if ((uVar3 & 1) != 0) {\n        local_50 = __s2;\n        puVar5 = (undefined8 *)htab_find(*(long *)(param_1 + 8),local_58);\n        while ((puVar5 != (undefined8 *)0x0 && (iVar4 = strcmp((char *)puVar5[1],__s2), iVar4 == 0))\n              ) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 8) goto LAB_00113008;\n          puVar5 = (undefined8 *)*puVar5;\n        }\nLAB_001131e0:\n        uVar3 = *(uint *)(param_1 + 0x18);\n      }\n      if ((uVar3 & 2) != 0) {\n        local_50 = __s2_01;\n        puVar5 = (undefined8 *)htab_find(*(undefined8 *)(param_1 + 8),local_58);\n        while ((puVar5 != (undefined8 *)0x0 &&\n               (iVar4 = strcmp((char *)puVar5[1],__s2_01), iVar4 == 0))) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 0x10) goto LAB_00113008;\n          puVar5 = (undefined8 *)*puVar5;\n        }\nLAB_00113180:\n        uVar3 = *(uint *)(param_1 + 0x18);\n      }\n      if ((uVar3 & 4) != 0) {\n        local_50 = __s2_00;\n        puVar5 = (undefined8 *)htab_find(*(undefined8 *)(param_1 + 8),local_58);\n        while ((puVar5 != (undefined8 *)0x0 &&\n               (iVar4 = strcmp((char *)puVar5[1],__s2_00), iVar4 == 0))) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 0x20) goto LAB_00113008;\n          puVar5 = (undefined8 *)*puVar5;\n        }\n      }\n      goto LAB_00112fa6;\n    }\n    if ((*(byte *)(param_2 + 2) & 1) != 0) {\n      bVar2 = *(byte *)(param_2 + 2) >> 3 & 7;\n      if (bVar2 == 1) goto LAB_001131e0;\n      if (bVar2 == 0) goto LAB_00113048;\n      if (bVar2 != 2) goto LAB_00112fa6;\n      goto LAB_00113180;\n    }\n  }" else (compound_statement "{\n    if (param_2 == (undefined8 *)0x0) {\nLAB_00113048:\n      uVar3 = *(uint *)(param_1 + 0x18);\n      if ((uVar3 & 1) != 0) {\n        local_50 = __s2;\n        puVar5 = (undefined8 *)htab_find(*(long *)(param_1 + 8),local_58);\n        while ((puVar5 != (undefined8 *)0x0 && (iVar4 = strcmp((char *)puVar5[1],__s2), iVar4 == 0))\n              ) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 8) goto LAB_00113008;\n          puVar5 = (undefined8 *)*puVar5;\n        }\nLAB_001131e0:\n        uVar3 = *(uint *)(param_1 + 0x18);\n      }\n      if ((uVar3 & 2) != 0) {\n        local_50 = __s2_01;\n        puVar5 = (undefined8 *)htab_find(*(undefined8 *)(param_1 + 8),local_58);\n        while ((puVar5 != (undefined8 *)0x0 &&\n               (iVar4 = strcmp((char *)puVar5[1],__s2_01), iVar4 == 0))) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 0x10) goto LAB_00113008;\n          puVar5 = (undefined8 *)*puVar5;\n        }\nLAB_00113180:\n        uVar3 = *(uint *)(param_1 + 0x18);\n      }\n      if ((uVar3 & 4) != 0) {\n        local_50 = __s2_00;\n        puVar5 = (undefined8 *)htab_find(*(undefined8 *)(param_1 + 8),local_58);\n        while ((puVar5 != (undefined8 *)0x0 &&\n               (iVar4 = strcmp((char *)puVar5[1],__s2_00), iVar4 == 0))) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 0x20) goto LAB_00113008;\n          puVar5 = (undefined8 *)*puVar5;\n        }\n      }\n      goto LAB_00112fa6;\n    }\n    if ((*(byte *)(param_2 + 2) & 1) != 0) {\n      bVar2 = *(byte *)(param_2 + 2) >> 3 & 7;\n      if (bVar2 == 1) goto LAB_001131e0;\n      if (bVar2 == 0) goto LAB_00113048;\n      if (bVar2 != 2) goto LAB_00112fa6;\n      goto LAB_00113180;\n    }\n  }" { (if_statement "if (param_2 == (undefined8 *)0x0) {\nLAB_00113048:\n      uVar3 = *(uint *)(param_1 + 0x18);\n      if ((uVar3 & 1) != 0) {\n        local_50 = __s2;\n        puVar5 = (undefined8 *)htab_find(*(long *)(param_1 + 8),local_58);\n        while ((puVar5 != (undefined8 *)0x0 && (iVar4 = strcmp((char *)puVar5[1],__s2), iVar4 == 0))\n              ) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 8) goto LAB_00113008;\n          puVar5 = (undefined8 *)*puVar5;\n        }\nLAB_001131e0:\n        uVar3 = *(uint *)(param_1 + 0x18);\n      }\n      if ((uVar3 & 2) != 0) {\n        local_50 = __s2_01;\n        puVar5 = (undefined8 *)htab_find(*(undefined8 *)(param_1 + 8),local_58);\n        while ((puVar5 != (undefined8 *)0x0 &&\n               (iVar4 = strcmp((char *)puVar5[1],__s2_01), iVar4 == 0))) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 0x10) goto LAB_00113008;\n          puVar5 = (undefined8 *)*puVar5;\n        }\nLAB_00113180:\n        uVar3 = *(uint *)(param_1 + 0x18);\n      }\n      if ((uVar3 & 4) != 0) {\n        local_50 = __s2_00;\n        puVar5 = (undefined8 *)htab_find(*(undefined8 *)(param_1 + 8),local_58);\n        while ((puVar5 != (undefined8 *)0x0 &&\n               (iVar4 = strcmp((char *)puVar5[1],__s2_00), iVar4 == 0))) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 0x20) goto LAB_00113008;\n          puVar5 = (undefined8 *)*puVar5;\n        }\n      }\n      goto LAB_00112fa6;\n    }" if (parenthesized_expression "(param_2 == (undefined8 *)0x0)" ( (binary_expression "param_2 == (undefined8 *)0x0" identifier == (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_00113048:\n      uVar3 = *(uint *)(param_1 + 0x18);\n      if ((uVar3 & 1) != 0) {\n        local_50 = __s2;\n        puVar5 = (undefined8 *)htab_find(*(long *)(param_1 + 8),local_58);\n        while ((puVar5 != (undefined8 *)0x0 && (iVar4 = strcmp((char *)puVar5[1],__s2), iVar4 == 0))\n              ) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 8) goto LAB_00113008;\n          puVar5 = (undefined8 *)*puVar5;\n        }\nLAB_001131e0:\n        uVar3 = *(uint *)(param_1 + 0x18);\n      }\n      if ((uVar3 & 2) != 0) {\n        local_50 = __s2_01;\n        puVar5 = (undefined8 *)htab_find(*(undefined8 *)(param_1 + 8),local_58);\n        while ((puVar5 != (undefined8 *)0x0 &&\n               (iVar4 = strcmp((char *)puVar5[1],__s2_01), iVar4 == 0))) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 0x10) goto LAB_00113008;\n          puVar5 = (undefined8 *)*puVar5;\n        }\nLAB_00113180:\n        uVar3 = *(uint *)(param_1 + 0x18);\n      }\n      if ((uVar3 & 4) != 0) {\n        local_50 = __s2_00;\n        puVar5 = (undefined8 *)htab_find(*(undefined8 *)(param_1 + 8),local_58);\n        while ((puVar5 != (undefined8 *)0x0 &&\n               (iVar4 = strcmp((char *)puVar5[1],__s2_00), iVar4 == 0))) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 0x20) goto LAB_00113008;\n          puVar5 = (undefined8 *)*puVar5;\n        }\n      }\n      goto LAB_00112fa6;\n    }" { (labeled_statement "LAB_00113048:\n      uVar3 = *(uint *)(param_1 + 0x18);" statement_identifier : (expression_statement "uVar3 = *(uint *)(param_1 + 0x18);" (assignment_expression "uVar3 = *(uint *)(param_1 + 0x18)" identifier = (pointer_expression "*(uint *)(param_1 + 0x18)" * (cast_expression "(uint *)(param_1 + 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) ))))) ;)) (if_statement "if ((uVar3 & 1) != 0) {\n        local_50 = __s2;\n        puVar5 = (undefined8 *)htab_find(*(long *)(param_1 + 8),local_58);\n        while ((puVar5 != (undefined8 *)0x0 && (iVar4 = strcmp((char *)puVar5[1],__s2), iVar4 == 0))\n              ) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 8) goto LAB_00113008;\n          puVar5 = (undefined8 *)*puVar5;\n        }\nLAB_001131e0:\n        uVar3 = *(uint *)(param_1 + 0x18);\n      }" if (parenthesized_expression "((uVar3 & 1) != 0)" ( (binary_expression "(uVar3 & 1) != 0" (parenthesized_expression "(uVar3 & 1)" ( (binary_expression "uVar3 & 1" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n        local_50 = __s2;\n        puVar5 = (undefined8 *)htab_find(*(long *)(param_1 + 8),local_58);\n        while ((puVar5 != (undefined8 *)0x0 && (iVar4 = strcmp((char *)puVar5[1],__s2), iVar4 == 0))\n              ) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 8) goto LAB_00113008;\n          puVar5 = (undefined8 *)*puVar5;\n        }\nLAB_001131e0:\n        uVar3 = *(uint *)(param_1 + 0x18);\n      }" { (expression_statement "local_50 = __s2;" (assignment_expression "local_50 = __s2" identifier = identifier) ;) (expression_statement "puVar5 = (undefined8 *)htab_find(*(long *)(param_1 + 8),local_58);" (assignment_expression "puVar5 = (undefined8 *)htab_find(*(long *)(param_1 + 8),local_58)" identifier = (cast_expression "(undefined8 *)htab_find(*(long *)(param_1 + 8),local_58)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "htab_find(*(long *)(param_1 + 8),local_58)" identifier (argument_list "(*(long *)(param_1 + 8),local_58)" ( (pointer_expression "*(long *)(param_1 + 8)" * (cast_expression "(long *)(param_1 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) , identifier ))))) ;) (while_statement "while ((puVar5 != (undefined8 *)0x0 && (iVar4 = strcmp((char *)puVar5[1],__s2), iVar4 == 0))\n              ) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 8) goto LAB_00113008;\n          puVar5 = (undefined8 *)*puVar5;\n        }" while (parenthesized_expression "((puVar5 != (undefined8 *)0x0 && (iVar4 = strcmp((char *)puVar5[1],__s2), iVar4 == 0))\n              )" ( (parenthesized_expression "(puVar5 != (undefined8 *)0x0 && (iVar4 = strcmp((char *)puVar5[1],__s2), iVar4 == 0))" ( (binary_expression "puVar5 != (undefined8 *)0x0 && (iVar4 = strcmp((char *)puVar5[1],__s2), iVar4 == 0)" (binary_expression "puVar5 != (undefined8 *)0x0" identifier != (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) && (parenthesized_expression "(iVar4 = strcmp((char *)puVar5[1],__s2), iVar4 == 0)" ( (comma_expression "iVar4 = strcmp((char *)puVar5[1],__s2), iVar4 == 0" (assignment_expression "iVar4 = strcmp((char *)puVar5[1],__s2)" identifier = (call_expression "strcmp((char *)puVar5[1],__s2)" identifier (argument_list "((char *)puVar5[1],__s2)" ( (cast_expression "(char *)puVar5[1]" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar5[1]" identifier [ number_literal ])) , identifier )))) , (binary_expression "iVar4 == 0" identifier == number_literal)) ))) )) )) (compound_statement "{\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 8) goto LAB_00113008;\n          puVar5 = (undefined8 *)*puVar5;\n        }" { (if_statement "if ((*(byte *)(puVar5 + 2) & 0x38) == 8) goto LAB_00113008;" if (parenthesized_expression "((*(byte *)(puVar5 + 2) & 0x38) == 8)" ( (binary_expression "(*(byte *)(puVar5 + 2) & 0x38) == 8" (parenthesized_expression "(*(byte *)(puVar5 + 2) & 0x38)" ( (binary_expression "*(byte *)(puVar5 + 2) & 0x38" (pointer_expression "*(byte *)(puVar5 + 2)" * (cast_expression "(byte *)(puVar5 + 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar5 + 2)" ( (binary_expression "puVar5 + 2" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (goto_statement "goto LAB_00113008;" goto statement_identifier ;)) (expression_statement "puVar5 = (undefined8 *)*puVar5;" (assignment_expression "puVar5 = (undefined8 *)*puVar5" identifier = (cast_expression "(undefined8 *)*puVar5" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar5" * identifier))) ;) })) (labeled_statement "LAB_001131e0:\n        uVar3 = *(uint *)(param_1 + 0x18);" statement_identifier : (expression_statement "uVar3 = *(uint *)(param_1 + 0x18);" (assignment_expression "uVar3 = *(uint *)(param_1 + 0x18)" identifier = (pointer_expression "*(uint *)(param_1 + 0x18)" * (cast_expression "(uint *)(param_1 + 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) ))))) ;)) })) (if_statement "if ((uVar3 & 2) != 0) {\n        local_50 = __s2_01;\n        puVar5 = (undefined8 *)htab_find(*(undefined8 *)(param_1 + 8),local_58);\n        while ((puVar5 != (undefined8 *)0x0 &&\n               (iVar4 = strcmp((char *)puVar5[1],__s2_01), iVar4 == 0))) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 0x10) goto LAB_00113008;\n          puVar5 = (undefined8 *)*puVar5;\n        }\nLAB_00113180:\n        uVar3 = *(uint *)(param_1 + 0x18);\n      }" if (parenthesized_expression "((uVar3 & 2) != 0)" ( (binary_expression "(uVar3 & 2) != 0" (parenthesized_expression "(uVar3 & 2)" ( (binary_expression "uVar3 & 2" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n        local_50 = __s2_01;\n        puVar5 = (undefined8 *)htab_find(*(undefined8 *)(param_1 + 8),local_58);\n        while ((puVar5 != (undefined8 *)0x0 &&\n               (iVar4 = strcmp((char *)puVar5[1],__s2_01), iVar4 == 0))) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 0x10) goto LAB_00113008;\n          puVar5 = (undefined8 *)*puVar5;\n        }\nLAB_00113180:\n        uVar3 = *(uint *)(param_1 + 0x18);\n      }" { (expression_statement "local_50 = __s2_01;" (assignment_expression "local_50 = __s2_01" identifier = identifier) ;) (expression_statement "puVar5 = (undefined8 *)htab_find(*(undefined8 *)(param_1 + 8),local_58);" (assignment_expression "puVar5 = (undefined8 *)htab_find(*(undefined8 *)(param_1 + 8),local_58)" identifier = (cast_expression "(undefined8 *)htab_find(*(undefined8 *)(param_1 + 8),local_58)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "htab_find(*(undefined8 *)(param_1 + 8),local_58)" identifier (argument_list "(*(undefined8 *)(param_1 + 8),local_58)" ( (pointer_expression "*(undefined8 *)(param_1 + 8)" * (cast_expression "(undefined8 *)(param_1 + 8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) , identifier ))))) ;) (while_statement "while ((puVar5 != (undefined8 *)0x0 &&\n               (iVar4 = strcmp((char *)puVar5[1],__s2_01), iVar4 == 0))) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 0x10) goto LAB_00113008;\n          puVar5 = (undefined8 *)*puVar5;\n        }" while (parenthesized_expression "((puVar5 != (undefined8 *)0x0 &&\n               (iVar4 = strcmp((char *)puVar5[1],__s2_01), iVar4 == 0)))" ( (parenthesized_expression "(puVar5 != (undefined8 *)0x0 &&\n               (iVar4 = strcmp((char *)puVar5[1],__s2_01), iVar4 == 0))" ( (binary_expression "puVar5 != (undefined8 *)0x0 &&\n               (iVar4 = strcmp((char *)puVar5[1],__s2_01), iVar4 == 0)" (binary_expression "puVar5 != (undefined8 *)0x0" identifier != (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) && (parenthesized_expression "(iVar4 = strcmp((char *)puVar5[1],__s2_01), iVar4 == 0)" ( (comma_expression "iVar4 = strcmp((char *)puVar5[1],__s2_01), iVar4 == 0" (assignment_expression "iVar4 = strcmp((char *)puVar5[1],__s2_01)" identifier = (call_expression "strcmp((char *)puVar5[1],__s2_01)" identifier (argument_list "((char *)puVar5[1],__s2_01)" ( (cast_expression "(char *)puVar5[1]" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar5[1]" identifier [ number_literal ])) , identifier )))) , (binary_expression "iVar4 == 0" identifier == number_literal)) ))) )) )) (compound_statement "{\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 0x10) goto LAB_00113008;\n          puVar5 = (undefined8 *)*puVar5;\n        }" { (if_statement "if ((*(byte *)(puVar5 + 2) & 0x38) == 0x10) goto LAB_00113008;" if (parenthesized_expression "((*(byte *)(puVar5 + 2) & 0x38) == 0x10)" ( (binary_expression "(*(byte *)(puVar5 + 2) & 0x38) == 0x10" (parenthesized_expression "(*(byte *)(puVar5 + 2) & 0x38)" ( (binary_expression "*(byte *)(puVar5 + 2) & 0x38" (pointer_expression "*(byte *)(puVar5 + 2)" * (cast_expression "(byte *)(puVar5 + 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar5 + 2)" ( (binary_expression "puVar5 + 2" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (goto_statement "goto LAB_00113008;" goto statement_identifier ;)) (expression_statement "puVar5 = (undefined8 *)*puVar5;" (assignment_expression "puVar5 = (undefined8 *)*puVar5" identifier = (cast_expression "(undefined8 *)*puVar5" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar5" * identifier))) ;) })) (labeled_statement "LAB_00113180:\n        uVar3 = *(uint *)(param_1 + 0x18);" statement_identifier : (expression_statement "uVar3 = *(uint *)(param_1 + 0x18);" (assignment_expression "uVar3 = *(uint *)(param_1 + 0x18)" identifier = (pointer_expression "*(uint *)(param_1 + 0x18)" * (cast_expression "(uint *)(param_1 + 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) ))))) ;)) })) (if_statement "if ((uVar3 & 4) != 0) {\n        local_50 = __s2_00;\n        puVar5 = (undefined8 *)htab_find(*(undefined8 *)(param_1 + 8),local_58);\n        while ((puVar5 != (undefined8 *)0x0 &&\n               (iVar4 = strcmp((char *)puVar5[1],__s2_00), iVar4 == 0))) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 0x20) goto LAB_00113008;\n          puVar5 = (undefined8 *)*puVar5;\n        }\n      }" if (parenthesized_expression "((uVar3 & 4) != 0)" ( (binary_expression "(uVar3 & 4) != 0" (parenthesized_expression "(uVar3 & 4)" ( (binary_expression "uVar3 & 4" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n        local_50 = __s2_00;\n        puVar5 = (undefined8 *)htab_find(*(undefined8 *)(param_1 + 8),local_58);\n        while ((puVar5 != (undefined8 *)0x0 &&\n               (iVar4 = strcmp((char *)puVar5[1],__s2_00), iVar4 == 0))) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 0x20) goto LAB_00113008;\n          puVar5 = (undefined8 *)*puVar5;\n        }\n      }" { (expression_statement "local_50 = __s2_00;" (assignment_expression "local_50 = __s2_00" identifier = identifier) ;) (expression_statement "puVar5 = (undefined8 *)htab_find(*(undefined8 *)(param_1 + 8),local_58);" (assignment_expression "puVar5 = (undefined8 *)htab_find(*(undefined8 *)(param_1 + 8),local_58)" identifier = (cast_expression "(undefined8 *)htab_find(*(undefined8 *)(param_1 + 8),local_58)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "htab_find(*(undefined8 *)(param_1 + 8),local_58)" identifier (argument_list "(*(undefined8 *)(param_1 + 8),local_58)" ( (pointer_expression "*(undefined8 *)(param_1 + 8)" * (cast_expression "(undefined8 *)(param_1 + 8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) , identifier ))))) ;) (while_statement "while ((puVar5 != (undefined8 *)0x0 &&\n               (iVar4 = strcmp((char *)puVar5[1],__s2_00), iVar4 == 0))) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 0x20) goto LAB_00113008;\n          puVar5 = (undefined8 *)*puVar5;\n        }" while (parenthesized_expression "((puVar5 != (undefined8 *)0x0 &&\n               (iVar4 = strcmp((char *)puVar5[1],__s2_00), iVar4 == 0)))" ( (parenthesized_expression "(puVar5 != (undefined8 *)0x0 &&\n               (iVar4 = strcmp((char *)puVar5[1],__s2_00), iVar4 == 0))" ( (binary_expression "puVar5 != (undefined8 *)0x0 &&\n               (iVar4 = strcmp((char *)puVar5[1],__s2_00), iVar4 == 0)" (binary_expression "puVar5 != (undefined8 *)0x0" identifier != (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) && (parenthesized_expression "(iVar4 = strcmp((char *)puVar5[1],__s2_00), iVar4 == 0)" ( (comma_expression "iVar4 = strcmp((char *)puVar5[1],__s2_00), iVar4 == 0" (assignment_expression "iVar4 = strcmp((char *)puVar5[1],__s2_00)" identifier = (call_expression "strcmp((char *)puVar5[1],__s2_00)" identifier (argument_list "((char *)puVar5[1],__s2_00)" ( (cast_expression "(char *)puVar5[1]" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar5[1]" identifier [ number_literal ])) , identifier )))) , (binary_expression "iVar4 == 0" identifier == number_literal)) ))) )) )) (compound_statement "{\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 0x20) goto LAB_00113008;\n          puVar5 = (undefined8 *)*puVar5;\n        }" { (if_statement "if ((*(byte *)(puVar5 + 2) & 0x38) == 0x20) goto LAB_00113008;" if (parenthesized_expression "((*(byte *)(puVar5 + 2) & 0x38) == 0x20)" ( (binary_expression "(*(byte *)(puVar5 + 2) & 0x38) == 0x20" (parenthesized_expression "(*(byte *)(puVar5 + 2) & 0x38)" ( (binary_expression "*(byte *)(puVar5 + 2) & 0x38" (pointer_expression "*(byte *)(puVar5 + 2)" * (cast_expression "(byte *)(puVar5 + 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar5 + 2)" ( (binary_expression "puVar5 + 2" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (goto_statement "goto LAB_00113008;" goto statement_identifier ;)) (expression_statement "puVar5 = (undefined8 *)*puVar5;" (assignment_expression "puVar5 = (undefined8 *)*puVar5" identifier = (cast_expression "(undefined8 *)*puVar5" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar5" * identifier))) ;) })) })) (goto_statement "goto LAB_00112fa6;" goto statement_identifier ;) })) (if_statement "if ((*(byte *)(param_2 + 2) & 1) != 0) {\n      bVar2 = *(byte *)(param_2 + 2) >> 3 & 7;\n      if (bVar2 == 1) goto LAB_001131e0;\n      if (bVar2 == 0) goto LAB_00113048;\n      if (bVar2 != 2) goto LAB_00112fa6;\n      goto LAB_00113180;\n    }" if (parenthesized_expression "((*(byte *)(param_2 + 2) & 1) != 0)" ( (binary_expression "(*(byte *)(param_2 + 2) & 1) != 0" (parenthesized_expression "(*(byte *)(param_2 + 2) & 1)" ( (binary_expression "*(byte *)(param_2 + 2) & 1" (pointer_expression "*(byte *)(param_2 + 2)" * (cast_expression "(byte *)(param_2 + 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 2)" ( (binary_expression "param_2 + 2" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n      bVar2 = *(byte *)(param_2 + 2) >> 3 & 7;\n      if (bVar2 == 1) goto LAB_001131e0;\n      if (bVar2 == 0) goto LAB_00113048;\n      if (bVar2 != 2) goto LAB_00112fa6;\n      goto LAB_00113180;\n    }" { (expression_statement "bVar2 = *(byte *)(param_2 + 2) >> 3 & 7;" (assignment_expression "bVar2 = *(byte *)(param_2 + 2) >> 3 & 7" identifier = (binary_expression "*(byte *)(param_2 + 2) >> 3 & 7" (binary_expression "*(byte *)(param_2 + 2) >> 3" (pointer_expression "*(byte *)(param_2 + 2)" * (cast_expression "(byte *)(param_2 + 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 2)" ( (binary_expression "param_2 + 2" identifier + number_literal) )))) >> number_literal) & number_literal)) ;) (if_statement "if (bVar2 == 1) goto LAB_001131e0;" if (parenthesized_expression "(bVar2 == 1)" ( (binary_expression "bVar2 == 1" identifier == number_literal) )) (goto_statement "goto LAB_001131e0;" goto statement_identifier ;)) (if_statement "if (bVar2 == 0) goto LAB_00113048;" if (parenthesized_expression "(bVar2 == 0)" ( (binary_expression "bVar2 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00113048;" goto statement_identifier ;)) (if_statement "if (bVar2 != 2) goto LAB_00112fa6;" if (parenthesized_expression "(bVar2 != 2)" ( (binary_expression "bVar2 != 2" identifier != number_literal) )) (goto_statement "goto LAB_00112fa6;" goto statement_identifier ;)) (goto_statement "goto LAB_00113180;" goto statement_identifier ;) })) }))) (expression_statement "puVar5 = (undefined8 *)*param_2;" (assignment_expression "puVar5 = (undefined8 *)*param_2" identifier = (cast_expression "(undefined8 *)*param_2" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_2" * identifier))) ;) (labeled_statement "joined_r0x001130cb:\n  for (; puVar5 != (undefined8 *)0x0; puVar5 = (undefined8 *)*puVar5) {\n    __pattern = (char *)puVar5[1];\n    if (__pattern != (char *)0x0) {\n      if ((*__pattern == '*') && (__pattern[1] == '\0')) goto LAB_00113008;\n      __name = __s2_00;\n      if (((*(byte *)(puVar5 + 2) & 0x38) != 0x20) &&\n         (__name = __s2, (*(byte *)(puVar5 + 2) & 0x38) == 0x10)) {\n        __name = __s2_01;\n      }\n      iVar4 = fnmatch(__pattern,__name,0);\n      if (iVar4 == 0) goto LAB_00113008;\n    }\n  }" statement_identifier : (for_statement "for (; puVar5 != (undefined8 *)0x0; puVar5 = (undefined8 *)*puVar5) {\n    __pattern = (char *)puVar5[1];\n    if (__pattern != (char *)0x0) {\n      if ((*__pattern == '*') && (__pattern[1] == '\0')) goto LAB_00113008;\n      __name = __s2_00;\n      if (((*(byte *)(puVar5 + 2) & 0x38) != 0x20) &&\n         (__name = __s2, (*(byte *)(puVar5 + 2) & 0x38) == 0x10)) {\n        __name = __s2_01;\n      }\n      iVar4 = fnmatch(__pattern,__name,0);\n      if (iVar4 == 0) goto LAB_00113008;\n    }\n  }" for ( ; (binary_expression "puVar5 != (undefined8 *)0x0" identifier != (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ; (assignment_expression "puVar5 = (undefined8 *)*puVar5" identifier = (cast_expression "(undefined8 *)*puVar5" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar5" * identifier))) ) (compound_statement "{\n    __pattern = (char *)puVar5[1];\n    if (__pattern != (char *)0x0) {\n      if ((*__pattern == '*') && (__pattern[1] == '\0')) goto LAB_00113008;\n      __name = __s2_00;\n      if (((*(byte *)(puVar5 + 2) & 0x38) != 0x20) &&\n         (__name = __s2, (*(byte *)(puVar5 + 2) & 0x38) == 0x10)) {\n        __name = __s2_01;\n      }\n      iVar4 = fnmatch(__pattern,__name,0);\n      if (iVar4 == 0) goto LAB_00113008;\n    }\n  }" { (expression_statement "__pattern = (char *)puVar5[1];" (assignment_expression "__pattern = (char *)puVar5[1]" identifier = (cast_expression "(char *)puVar5[1]" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar5[1]" identifier [ number_literal ]))) ;) (if_statement "if (__pattern != (char *)0x0) {\n      if ((*__pattern == '*') && (__pattern[1] == '\0')) goto LAB_00113008;\n      __name = __s2_00;\n      if (((*(byte *)(puVar5 + 2) & 0x38) != 0x20) &&\n         (__name = __s2, (*(byte *)(puVar5 + 2) & 0x38) == 0x10)) {\n        __name = __s2_01;\n      }\n      iVar4 = fnmatch(__pattern,__name,0);\n      if (iVar4 == 0) goto LAB_00113008;\n    }" if (parenthesized_expression "(__pattern != (char *)0x0)" ( (binary_expression "__pattern != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      if ((*__pattern == '*') && (__pattern[1] == '\0')) goto LAB_00113008;\n      __name = __s2_00;\n      if (((*(byte *)(puVar5 + 2) & 0x38) != 0x20) &&\n         (__name = __s2, (*(byte *)(puVar5 + 2) & 0x38) == 0x10)) {\n        __name = __s2_01;\n      }\n      iVar4 = fnmatch(__pattern,__name,0);\n      if (iVar4 == 0) goto LAB_00113008;\n    }" { (if_statement "if ((*__pattern == '*') && (__pattern[1] == '\0')) goto LAB_00113008;" if (parenthesized_expression "((*__pattern == '*') && (__pattern[1] == '\0'))" ( (binary_expression "(*__pattern == '*') && (__pattern[1] == '\0')" (parenthesized_expression "(*__pattern == '*')" ( (binary_expression "*__pattern == '*'" (pointer_expression "*__pattern" * identifier) == (char_literal "'*'" ' character ')) )) && (parenthesized_expression "(__pattern[1] == '\0')" ( (binary_expression "__pattern[1] == '\0'" (subscript_expression "__pattern[1]" identifier [ number_literal ]) == (char_literal "'\0'" ' escape_sequence ')) ))) )) (goto_statement "goto LAB_00113008;" goto statement_identifier ;)) (expression_statement "__name = __s2_00;" (assignment_expression "__name = __s2_00" identifier = identifier) ;) (if_statement "if (((*(byte *)(puVar5 + 2) & 0x38) != 0x20) &&\n         (__name = __s2, (*(byte *)(puVar5 + 2) & 0x38) == 0x10)) {\n        __name = __s2_01;\n      }" if (parenthesized_expression "(((*(byte *)(puVar5 + 2) & 0x38) != 0x20) &&\n         (__name = __s2, (*(byte *)(puVar5 + 2) & 0x38) == 0x10))" ( (binary_expression "((*(byte *)(puVar5 + 2) & 0x38) != 0x20) &&\n         (__name = __s2, (*(byte *)(puVar5 + 2) & 0x38) == 0x10)" (parenthesized_expression "((*(byte *)(puVar5 + 2) & 0x38) != 0x20)" ( (binary_expression "(*(byte *)(puVar5 + 2) & 0x38) != 0x20" (parenthesized_expression "(*(byte *)(puVar5 + 2) & 0x38)" ( (binary_expression "*(byte *)(puVar5 + 2) & 0x38" (pointer_expression "*(byte *)(puVar5 + 2)" * (cast_expression "(byte *)(puVar5 + 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar5 + 2)" ( (binary_expression "puVar5 + 2" identifier + number_literal) )))) & number_literal) )) != number_literal) )) && (parenthesized_expression "(__name = __s2, (*(byte *)(puVar5 + 2) & 0x38) == 0x10)" ( (comma_expression "__name = __s2, (*(byte *)(puVar5 + 2) & 0x38) == 0x10" (assignment_expression "__name = __s2" identifier = identifier) , (binary_expression "(*(byte *)(puVar5 + 2) & 0x38) == 0x10" (parenthesized_expression "(*(byte *)(puVar5 + 2) & 0x38)" ( (binary_expression "*(byte *)(puVar5 + 2) & 0x38" (pointer_expression "*(byte *)(puVar5 + 2)" * (cast_expression "(byte *)(puVar5 + 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar5 + 2)" ( (binary_expression "puVar5 + 2" identifier + number_literal) )))) & number_literal) )) == number_literal)) ))) )) (compound_statement "{\n        __name = __s2_01;\n      }" { (expression_statement "__name = __s2_01;" (assignment_expression "__name = __s2_01" identifier = identifier) ;) })) (expression_statement "iVar4 = fnmatch(__pattern,__name,0);" (assignment_expression "iVar4 = fnmatch(__pattern,__name,0)" identifier = (call_expression "fnmatch(__pattern,__name,0)" identifier (argument_list "(__pattern,__name,0)" ( identifier , identifier , number_literal )))) ;) (if_statement "if (iVar4 == 0) goto LAB_00113008;" if (parenthesized_expression "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00113008;" goto statement_identifier ;)) })) }))) (expression_statement "puVar5 = (undefined8 *)0x0;" (assignment_expression "puVar5 = (undefined8 *)0x0" identifier = (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (labeled_statement "LAB_00113008:\n  if (__s2 != param_3) {\n    free(__s2);\n  }" statement_identifier : (if_statement "if (__s2 != param_3) {\n    free(__s2);\n  }" if (parenthesized_expression "(__s2 != param_3)" ( (binary_expression "__s2 != param_3" identifier != identifier) )) (compound_statement "{\n    free(__s2);\n  }" { (expression_statement "free(__s2);" (call_expression "free(__s2)" identifier (argument_list "(__s2)" ( identifier ))) ;) }))) (if_statement "if (__s2_01 != param_3) {\n    free(__s2_01);\n  }" if (parenthesized_expression "(__s2_01 != param_3)" ( (binary_expression "__s2_01 != param_3" identifier != identifier) )) (compound_statement "{\n    free(__s2_01);\n  }" { (expression_statement "free(__s2_01);" (call_expression "free(__s2_01)" identifier (argument_list "(__s2_01)" ( identifier ))) ;) })) (if_statement "if (__s2_00 != param_3) {\n    free(__s2_00);\n  }" if (parenthesized_expression "(__s2_00 != param_3)" ( (binary_expression "__s2_00 != param_3" identifier != identifier) )) (compound_statement "{\n    free(__s2_00);\n  }" { (expression_statement "free(__s2_00);" (call_expression "free(__s2_00)" identifier (argument_list "(__s2_00)" ( identifier ))) ;) })) (return_statement "return puVar5;" return identifier ;) })))
(translation_unit "bfd_elf_version_expr *\nlang_vers_match(bfd_elf_version_expr_head *head,bfd_elf_version_expr *prev,char *sym)\n\n{\n  char *__pattern;\n  undefined4 uVar1;\n  byte bVar2;\n  uint uVar3;\n  int iVar4;\n  char *__s2;\n  bfd_elf_version_expr *pbVar5;\n  char *__s2_00;\n  char *__s2_01;\n  char *__name;\n  bfd_elf_version_expr e;\n  \n  uVar1 = current_demangling_style;\n  cplus_demangle_set_style(0xffffffff);\n  __s2 = (char *)bfd_demangle(link_info.output_bfd,sym,0);\n  if (__s2 == (char *)0x0) {\n    __s2 = sym;\n  }\n  cplus_demangle_set_style(uVar1);\n  uVar3 = head->mask;\n  __s2_01 = sym;\n  if ((uVar3 & 2) != 0) {\n    __s2_01 = (char *)bfd_demangle(link_info.output_bfd,sym,3);\n    uVar3 = head->mask;\n    if (__s2_01 == (char *)0x0) {\n      __s2_01 = sym;\n    }\n  }\n  if (((uVar3 & 4) == 0) ||\n     (__s2_00 = (char *)bfd_demangle(link_info.output_bfd,sym,4), __s2_00 == (char *)0x0)) {\n    __s2_00 = sym;\n  }\n  if (head->htab == (void *)0x0) {\nLAB_00112fa6:\n    if ((prev == (bfd_elf_version_expr *)0x0) || ((prev->field_0x10 & 1) != 0)) {\n      pbVar5 = head->remaining;\n      goto joined_r0x001130cb;\n    }\n  }\n  else {\n    if (prev == (bfd_elf_version_expr *)0x0) {\nLAB_00113048:\n      uVar3 = head->mask;\n      if ((uVar3 & 1) != 0) {\n        e.pattern = __s2;\n        pbVar5 = (bfd_elf_version_expr *)htab_find(head->htab,&e);\n        while ((pbVar5 != (bfd_elf_version_expr *)0x0 &&\n               (iVar4 = strcmp(pbVar5->pattern,__s2), iVar4 == 0))) {\n          if ((pbVar5->field_0x10 & 0x38) == 8) goto LAB_00113008;\n          pbVar5 = pbVar5->next;\n        }\nLAB_001131e0:\n        uVar3 = head->mask;\n      }\n      if ((uVar3 & 2) != 0) {\n        e.pattern = __s2_01;\n        pbVar5 = (bfd_elf_version_expr *)htab_find(head->htab,&e);\n        while ((pbVar5 != (bfd_elf_version_expr *)0x0 &&\n               (iVar4 = strcmp(pbVar5->pattern,__s2_01), iVar4 == 0))) {\n          if ((pbVar5->field_0x10 & 0x38) == 0x10) goto LAB_00113008;\n          pbVar5 = pbVar5->next;\n        }\nLAB_00113180:\n        uVar3 = head->mask;\n      }\n      if ((uVar3 & 4) != 0) {\n        e.pattern = __s2_00;\n        pbVar5 = (bfd_elf_version_expr *)htab_find(head->htab,&e);\n        while ((pbVar5 != (bfd_elf_version_expr *)0x0 &&\n               (iVar4 = strcmp(pbVar5->pattern,__s2_00), iVar4 == 0))) {\n          if ((pbVar5->field_0x10 & 0x38) == 0x20) goto LAB_00113008;\n          pbVar5 = pbVar5->next;\n        }\n      }\n      goto LAB_00112fa6;\n    }\n    if ((prev->field_0x10 & 1) != 0) {\n      bVar2 = (byte)prev->field_0x10 >> 3 & 7;\n      if (bVar2 == 1) goto LAB_001131e0;\n      if (bVar2 == 0) goto LAB_00113048;\n      if (bVar2 != 2) goto LAB_00112fa6;\n      goto LAB_00113180;\n    }\n  }\n  pbVar5 = prev->next;\njoined_r0x001130cb:\n  for (; pbVar5 != (bfd_elf_version_expr *)0x0; pbVar5 = pbVar5->next) {\n    __pattern = pbVar5->pattern;\n    if (__pattern != (char *)0x0) {\n      if ((*__pattern == '*') && (__pattern[1] == '\0')) goto LAB_00113008;\n      bVar2 = pbVar5->field_0x10 & 0x38;\n      __name = __s2_00;\n      if ((bVar2 != 0x20) && (__name = __s2, bVar2 == 0x10)) {\n        __name = __s2_01;\n      }\n      iVar4 = fnmatch(__pattern,__name,0);\n      if (iVar4 == 0) goto LAB_00113008;\n    }\n  }\n  pbVar5 = (bfd_elf_version_expr *)0x0;\nLAB_00113008:\n  if (__s2 != sym) {\n    free(__s2);\n  }\n  if (__s2_01 != sym) {\n    free(__s2_01);\n  }\n  if (__s2_00 != sym) {\n    free(__s2_00);\n  }\n  return pbVar5;\n}\n\n" (function_definition "bfd_elf_version_expr *\nlang_vers_match(bfd_elf_version_expr_head *head,bfd_elf_version_expr *prev,char *sym)\n\n{\n  char *__pattern;\n  undefined4 uVar1;\n  byte bVar2;\n  uint uVar3;\n  int iVar4;\n  char *__s2;\n  bfd_elf_version_expr *pbVar5;\n  char *__s2_00;\n  char *__s2_01;\n  char *__name;\n  bfd_elf_version_expr e;\n  \n  uVar1 = current_demangling_style;\n  cplus_demangle_set_style(0xffffffff);\n  __s2 = (char *)bfd_demangle(link_info.output_bfd,sym,0);\n  if (__s2 == (char *)0x0) {\n    __s2 = sym;\n  }\n  cplus_demangle_set_style(uVar1);\n  uVar3 = head->mask;\n  __s2_01 = sym;\n  if ((uVar3 & 2) != 0) {\n    __s2_01 = (char *)bfd_demangle(link_info.output_bfd,sym,3);\n    uVar3 = head->mask;\n    if (__s2_01 == (char *)0x0) {\n      __s2_01 = sym;\n    }\n  }\n  if (((uVar3 & 4) == 0) ||\n     (__s2_00 = (char *)bfd_demangle(link_info.output_bfd,sym,4), __s2_00 == (char *)0x0)) {\n    __s2_00 = sym;\n  }\n  if (head->htab == (void *)0x0) {\nLAB_00112fa6:\n    if ((prev == (bfd_elf_version_expr *)0x0) || ((prev->field_0x10 & 1) != 0)) {\n      pbVar5 = head->remaining;\n      goto joined_r0x001130cb;\n    }\n  }\n  else {\n    if (prev == (bfd_elf_version_expr *)0x0) {\nLAB_00113048:\n      uVar3 = head->mask;\n      if ((uVar3 & 1) != 0) {\n        e.pattern = __s2;\n        pbVar5 = (bfd_elf_version_expr *)htab_find(head->htab,&e);\n        while ((pbVar5 != (bfd_elf_version_expr *)0x0 &&\n               (iVar4 = strcmp(pbVar5->pattern,__s2), iVar4 == 0))) {\n          if ((pbVar5->field_0x10 & 0x38) == 8) goto LAB_00113008;\n          pbVar5 = pbVar5->next;\n        }\nLAB_001131e0:\n        uVar3 = head->mask;\n      }\n      if ((uVar3 & 2) != 0) {\n        e.pattern = __s2_01;\n        pbVar5 = (bfd_elf_version_expr *)htab_find(head->htab,&e);\n        while ((pbVar5 != (bfd_elf_version_expr *)0x0 &&\n               (iVar4 = strcmp(pbVar5->pattern,__s2_01), iVar4 == 0))) {\n          if ((pbVar5->field_0x10 & 0x38) == 0x10) goto LAB_00113008;\n          pbVar5 = pbVar5->next;\n        }\nLAB_00113180:\n        uVar3 = head->mask;\n      }\n      if ((uVar3 & 4) != 0) {\n        e.pattern = __s2_00;\n        pbVar5 = (bfd_elf_version_expr *)htab_find(head->htab,&e);\n        while ((pbVar5 != (bfd_elf_version_expr *)0x0 &&\n               (iVar4 = strcmp(pbVar5->pattern,__s2_00), iVar4 == 0))) {\n          if ((pbVar5->field_0x10 & 0x38) == 0x20) goto LAB_00113008;\n          pbVar5 = pbVar5->next;\n        }\n      }\n      goto LAB_00112fa6;\n    }\n    if ((prev->field_0x10 & 1) != 0) {\n      bVar2 = (byte)prev->field_0x10 >> 3 & 7;\n      if (bVar2 == 1) goto LAB_001131e0;\n      if (bVar2 == 0) goto LAB_00113048;\n      if (bVar2 != 2) goto LAB_00112fa6;\n      goto LAB_00113180;\n    }\n  }\n  pbVar5 = prev->next;\njoined_r0x001130cb:\n  for (; pbVar5 != (bfd_elf_version_expr *)0x0; pbVar5 = pbVar5->next) {\n    __pattern = pbVar5->pattern;\n    if (__pattern != (char *)0x0) {\n      if ((*__pattern == '*') && (__pattern[1] == '\0')) goto LAB_00113008;\n      bVar2 = pbVar5->field_0x10 & 0x38;\n      __name = __s2_00;\n      if ((bVar2 != 0x20) && (__name = __s2, bVar2 == 0x10)) {\n        __name = __s2_01;\n      }\n      iVar4 = fnmatch(__pattern,__name,0);\n      if (iVar4 == 0) goto LAB_00113008;\n    }\n  }\n  pbVar5 = (bfd_elf_version_expr *)0x0;\nLAB_00113008:\n  if (__s2 != sym) {\n    free(__s2);\n  }\n  if (__s2_01 != sym) {\n    free(__s2_01);\n  }\n  if (__s2_00 != sym) {\n    free(__s2_00);\n  }\n  return pbVar5;\n}" type_identifier (pointer_declarator "*\nlang_vers_match(bfd_elf_version_expr_head *head,bfd_elf_version_expr *prev,char *sym)" * (function_declarator "lang_vers_match(bfd_elf_version_expr_head *head,bfd_elf_version_expr *prev,char *sym)" identifier (parameter_list "(bfd_elf_version_expr_head *head,bfd_elf_version_expr *prev,char *sym)" ( (parameter_declaration "bfd_elf_version_expr_head *head" type_identifier (pointer_declarator "*head" * identifier)) , (parameter_declaration "bfd_elf_version_expr *prev" type_identifier (pointer_declarator "*prev" * identifier)) , (parameter_declaration "char *sym" primitive_type (pointer_declarator "*sym" * identifier)) )))) (compound_statement "{\n  char *__pattern;\n  undefined4 uVar1;\n  byte bVar2;\n  uint uVar3;\n  int iVar4;\n  char *__s2;\n  bfd_elf_version_expr *pbVar5;\n  char *__s2_00;\n  char *__s2_01;\n  char *__name;\n  bfd_elf_version_expr e;\n  \n  uVar1 = current_demangling_style;\n  cplus_demangle_set_style(0xffffffff);\n  __s2 = (char *)bfd_demangle(link_info.output_bfd,sym,0);\n  if (__s2 == (char *)0x0) {\n    __s2 = sym;\n  }\n  cplus_demangle_set_style(uVar1);\n  uVar3 = head->mask;\n  __s2_01 = sym;\n  if ((uVar3 & 2) != 0) {\n    __s2_01 = (char *)bfd_demangle(link_info.output_bfd,sym,3);\n    uVar3 = head->mask;\n    if (__s2_01 == (char *)0x0) {\n      __s2_01 = sym;\n    }\n  }\n  if (((uVar3 & 4) == 0) ||\n     (__s2_00 = (char *)bfd_demangle(link_info.output_bfd,sym,4), __s2_00 == (char *)0x0)) {\n    __s2_00 = sym;\n  }\n  if (head->htab == (void *)0x0) {\nLAB_00112fa6:\n    if ((prev == (bfd_elf_version_expr *)0x0) || ((prev->field_0x10 & 1) != 0)) {\n      pbVar5 = head->remaining;\n      goto joined_r0x001130cb;\n    }\n  }\n  else {\n    if (prev == (bfd_elf_version_expr *)0x0) {\nLAB_00113048:\n      uVar3 = head->mask;\n      if ((uVar3 & 1) != 0) {\n        e.pattern = __s2;\n        pbVar5 = (bfd_elf_version_expr *)htab_find(head->htab,&e);\n        while ((pbVar5 != (bfd_elf_version_expr *)0x0 &&\n               (iVar4 = strcmp(pbVar5->pattern,__s2), iVar4 == 0))) {\n          if ((pbVar5->field_0x10 & 0x38) == 8) goto LAB_00113008;\n          pbVar5 = pbVar5->next;\n        }\nLAB_001131e0:\n        uVar3 = head->mask;\n      }\n      if ((uVar3 & 2) != 0) {\n        e.pattern = __s2_01;\n        pbVar5 = (bfd_elf_version_expr *)htab_find(head->htab,&e);\n        while ((pbVar5 != (bfd_elf_version_expr *)0x0 &&\n               (iVar4 = strcmp(pbVar5->pattern,__s2_01), iVar4 == 0))) {\n          if ((pbVar5->field_0x10 & 0x38) == 0x10) goto LAB_00113008;\n          pbVar5 = pbVar5->next;\n        }\nLAB_00113180:\n        uVar3 = head->mask;\n      }\n      if ((uVar3 & 4) != 0) {\n        e.pattern = __s2_00;\n        pbVar5 = (bfd_elf_version_expr *)htab_find(head->htab,&e);\n        while ((pbVar5 != (bfd_elf_version_expr *)0x0 &&\n               (iVar4 = strcmp(pbVar5->pattern,__s2_00), iVar4 == 0))) {\n          if ((pbVar5->field_0x10 & 0x38) == 0x20) goto LAB_00113008;\n          pbVar5 = pbVar5->next;\n        }\n      }\n      goto LAB_00112fa6;\n    }\n    if ((prev->field_0x10 & 1) != 0) {\n      bVar2 = (byte)prev->field_0x10 >> 3 & 7;\n      if (bVar2 == 1) goto LAB_001131e0;\n      if (bVar2 == 0) goto LAB_00113048;\n      if (bVar2 != 2) goto LAB_00112fa6;\n      goto LAB_00113180;\n    }\n  }\n  pbVar5 = prev->next;\njoined_r0x001130cb:\n  for (; pbVar5 != (bfd_elf_version_expr *)0x0; pbVar5 = pbVar5->next) {\n    __pattern = pbVar5->pattern;\n    if (__pattern != (char *)0x0) {\n      if ((*__pattern == '*') && (__pattern[1] == '\0')) goto LAB_00113008;\n      bVar2 = pbVar5->field_0x10 & 0x38;\n      __name = __s2_00;\n      if ((bVar2 != 0x20) && (__name = __s2, bVar2 == 0x10)) {\n        __name = __s2_01;\n      }\n      iVar4 = fnmatch(__pattern,__name,0);\n      if (iVar4 == 0) goto LAB_00113008;\n    }\n  }\n  pbVar5 = (bfd_elf_version_expr *)0x0;\nLAB_00113008:\n  if (__s2 != sym) {\n    free(__s2);\n  }\n  if (__s2_01 != sym) {\n    free(__s2_01);\n  }\n  if (__s2_00 != sym) {\n    free(__s2_00);\n  }\n  return pbVar5;\n}" { (declaration "char *__pattern;" primitive_type (pointer_declarator "*__pattern" * identifier) ;) (declaration "undefined4 uVar1;" type_identifier identifier ;) (declaration "byte bVar2;" type_identifier identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "char *__s2;" primitive_type (pointer_declarator "*__s2" * identifier) ;) (declaration "bfd_elf_version_expr *pbVar5;" type_identifier (pointer_declarator "*pbVar5" * identifier) ;) (declaration "char *__s2_00;" primitive_type (pointer_declarator "*__s2_00" * identifier) ;) (declaration "char *__s2_01;" primitive_type (pointer_declarator "*__s2_01" * identifier) ;) (declaration "char *__name;" primitive_type (pointer_declarator "*__name" * identifier) ;) (declaration "bfd_elf_version_expr e;" type_identifier identifier ;) (expression_statement "uVar1 = current_demangling_style;" (assignment_expression "uVar1 = current_demangling_style" identifier = identifier) ;) (expression_statement "cplus_demangle_set_style(0xffffffff);" (call_expression "cplus_demangle_set_style(0xffffffff)" identifier (argument_list "(0xffffffff)" ( number_literal ))) ;) (expression_statement "__s2 = (char *)bfd_demangle(link_info.output_bfd,sym,0);" (assignment_expression "__s2 = (char *)bfd_demangle(link_info.output_bfd,sym,0)" identifier = (cast_expression "(char *)bfd_demangle(link_info.output_bfd,sym,0)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "bfd_demangle(link_info.output_bfd,sym,0)" identifier (argument_list "(link_info.output_bfd,sym,0)" ( (field_expression "link_info.output_bfd" identifier . field_identifier) , identifier , number_literal ))))) ;) (if_statement "if (__s2 == (char *)0x0) {\n    __s2 = sym;\n  }" if (parenthesized_expression "(__s2 == (char *)0x0)" ( (binary_expression "__s2 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    __s2 = sym;\n  }" { (expression_statement "__s2 = sym;" (assignment_expression "__s2 = sym" identifier = identifier) ;) })) (expression_statement "cplus_demangle_set_style(uVar1);" (call_expression "cplus_demangle_set_style(uVar1)" identifier (argument_list "(uVar1)" ( identifier ))) ;) (expression_statement "uVar3 = head->mask;" (assignment_expression "uVar3 = head->mask" identifier = (field_expression "head->mask" identifier -> field_identifier)) ;) (expression_statement "__s2_01 = sym;" (assignment_expression "__s2_01 = sym" identifier = identifier) ;) (if_statement "if ((uVar3 & 2) != 0) {\n    __s2_01 = (char *)bfd_demangle(link_info.output_bfd,sym,3);\n    uVar3 = head->mask;\n    if (__s2_01 == (char *)0x0) {\n      __s2_01 = sym;\n    }\n  }" if (parenthesized_expression "((uVar3 & 2) != 0)" ( (binary_expression "(uVar3 & 2) != 0" (parenthesized_expression "(uVar3 & 2)" ( (binary_expression "uVar3 & 2" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    __s2_01 = (char *)bfd_demangle(link_info.output_bfd,sym,3);\n    uVar3 = head->mask;\n    if (__s2_01 == (char *)0x0) {\n      __s2_01 = sym;\n    }\n  }" { (expression_statement "__s2_01 = (char *)bfd_demangle(link_info.output_bfd,sym,3);" (assignment_expression "__s2_01 = (char *)bfd_demangle(link_info.output_bfd,sym,3)" identifier = (cast_expression "(char *)bfd_demangle(link_info.output_bfd,sym,3)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "bfd_demangle(link_info.output_bfd,sym,3)" identifier (argument_list "(link_info.output_bfd,sym,3)" ( (field_expression "link_info.output_bfd" identifier . field_identifier) , identifier , number_literal ))))) ;) (expression_statement "uVar3 = head->mask;" (assignment_expression "uVar3 = head->mask" identifier = (field_expression "head->mask" identifier -> field_identifier)) ;) (if_statement "if (__s2_01 == (char *)0x0) {\n      __s2_01 = sym;\n    }" if (parenthesized_expression "(__s2_01 == (char *)0x0)" ( (binary_expression "__s2_01 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      __s2_01 = sym;\n    }" { (expression_statement "__s2_01 = sym;" (assignment_expression "__s2_01 = sym" identifier = identifier) ;) })) })) (if_statement "if (((uVar3 & 4) == 0) ||\n     (__s2_00 = (char *)bfd_demangle(link_info.output_bfd,sym,4), __s2_00 == (char *)0x0)) {\n    __s2_00 = sym;\n  }" if (parenthesized_expression "(((uVar3 & 4) == 0) ||\n     (__s2_00 = (char *)bfd_demangle(link_info.output_bfd,sym,4), __s2_00 == (char *)0x0))" ( (binary_expression "((uVar3 & 4) == 0) ||\n     (__s2_00 = (char *)bfd_demangle(link_info.output_bfd,sym,4), __s2_00 == (char *)0x0)" (parenthesized_expression "((uVar3 & 4) == 0)" ( (binary_expression "(uVar3 & 4) == 0" (parenthesized_expression "(uVar3 & 4)" ( (binary_expression "uVar3 & 4" identifier & number_literal) )) == number_literal) )) || (parenthesized_expression "(__s2_00 = (char *)bfd_demangle(link_info.output_bfd,sym,4), __s2_00 == (char *)0x0)" ( (comma_expression "__s2_00 = (char *)bfd_demangle(link_info.output_bfd,sym,4), __s2_00 == (char *)0x0" (assignment_expression "__s2_00 = (char *)bfd_demangle(link_info.output_bfd,sym,4)" identifier = (cast_expression "(char *)bfd_demangle(link_info.output_bfd,sym,4)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "bfd_demangle(link_info.output_bfd,sym,4)" identifier (argument_list "(link_info.output_bfd,sym,4)" ( (field_expression "link_info.output_bfd" identifier . field_identifier) , identifier , number_literal ))))) , (binary_expression "__s2_00 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (compound_statement "{\n    __s2_00 = sym;\n  }" { (expression_statement "__s2_00 = sym;" (assignment_expression "__s2_00 = sym" identifier = identifier) ;) })) (if_statement "if (head->htab == (void *)0x0) {\nLAB_00112fa6:\n    if ((prev == (bfd_elf_version_expr *)0x0) || ((prev->field_0x10 & 1) != 0)) {\n      pbVar5 = head->remaining;\n      goto joined_r0x001130cb;\n    }\n  }\n  else {\n    if (prev == (bfd_elf_version_expr *)0x0) {\nLAB_00113048:\n      uVar3 = head->mask;\n      if ((uVar3 & 1) != 0) {\n        e.pattern = __s2;\n        pbVar5 = (bfd_elf_version_expr *)htab_find(head->htab,&e);\n        while ((pbVar5 != (bfd_elf_version_expr *)0x0 &&\n               (iVar4 = strcmp(pbVar5->pattern,__s2), iVar4 == 0))) {\n          if ((pbVar5->field_0x10 & 0x38) == 8) goto LAB_00113008;\n          pbVar5 = pbVar5->next;\n        }\nLAB_001131e0:\n        uVar3 = head->mask;\n      }\n      if ((uVar3 & 2) != 0) {\n        e.pattern = __s2_01;\n        pbVar5 = (bfd_elf_version_expr *)htab_find(head->htab,&e);\n        while ((pbVar5 != (bfd_elf_version_expr *)0x0 &&\n               (iVar4 = strcmp(pbVar5->pattern,__s2_01), iVar4 == 0))) {\n          if ((pbVar5->field_0x10 & 0x38) == 0x10) goto LAB_00113008;\n          pbVar5 = pbVar5->next;\n        }\nLAB_00113180:\n        uVar3 = head->mask;\n      }\n      if ((uVar3 & 4) != 0) {\n        e.pattern = __s2_00;\n        pbVar5 = (bfd_elf_version_expr *)htab_find(head->htab,&e);\n        while ((pbVar5 != (bfd_elf_version_expr *)0x0 &&\n               (iVar4 = strcmp(pbVar5->pattern,__s2_00), iVar4 == 0))) {\n          if ((pbVar5->field_0x10 & 0x38) == 0x20) goto LAB_00113008;\n          pbVar5 = pbVar5->next;\n        }\n      }\n      goto LAB_00112fa6;\n    }\n    if ((prev->field_0x10 & 1) != 0) {\n      bVar2 = (byte)prev->field_0x10 >> 3 & 7;\n      if (bVar2 == 1) goto LAB_001131e0;\n      if (bVar2 == 0) goto LAB_00113048;\n      if (bVar2 != 2) goto LAB_00112fa6;\n      goto LAB_00113180;\n    }\n  }" if (parenthesized_expression "(head->htab == (void *)0x0)" ( (binary_expression "head->htab == (void *)0x0" (field_expression "head->htab" identifier -> field_identifier) == (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_00112fa6:\n    if ((prev == (bfd_elf_version_expr *)0x0) || ((prev->field_0x10 & 1) != 0)) {\n      pbVar5 = head->remaining;\n      goto joined_r0x001130cb;\n    }\n  }" { (labeled_statement "LAB_00112fa6:\n    if ((prev == (bfd_elf_version_expr *)0x0) || ((prev->field_0x10 & 1) != 0)) {\n      pbVar5 = head->remaining;\n      goto joined_r0x001130cb;\n    }" statement_identifier : (if_statement "if ((prev == (bfd_elf_version_expr *)0x0) || ((prev->field_0x10 & 1) != 0)) {\n      pbVar5 = head->remaining;\n      goto joined_r0x001130cb;\n    }" if (parenthesized_expression "((prev == (bfd_elf_version_expr *)0x0) || ((prev->field_0x10 & 1) != 0))" ( (binary_expression "(prev == (bfd_elf_version_expr *)0x0) || ((prev->field_0x10 & 1) != 0)" (parenthesized_expression "(prev == (bfd_elf_version_expr *)0x0)" ( (binary_expression "prev == (bfd_elf_version_expr *)0x0" identifier == (cast_expression "(bfd_elf_version_expr *)0x0" ( (type_descriptor "bfd_elf_version_expr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "((prev->field_0x10 & 1) != 0)" ( (binary_expression "(prev->field_0x10 & 1) != 0" (parenthesized_expression "(prev->field_0x10 & 1)" ( (binary_expression "prev->field_0x10 & 1" (field_expression "prev->field_0x10" identifier -> field_identifier) & number_literal) )) != number_literal) ))) )) (compound_statement "{\n      pbVar5 = head->remaining;\n      goto joined_r0x001130cb;\n    }" { (expression_statement "pbVar5 = head->remaining;" (assignment_expression "pbVar5 = head->remaining" identifier = (field_expression "head->remaining" identifier -> field_identifier)) ;) (goto_statement "goto joined_r0x001130cb;" goto statement_identifier ;) }))) }) (else_clause "else {\n    if (prev == (bfd_elf_version_expr *)0x0) {\nLAB_00113048:\n      uVar3 = head->mask;\n      if ((uVar3 & 1) != 0) {\n        e.pattern = __s2;\n        pbVar5 = (bfd_elf_version_expr *)htab_find(head->htab,&e);\n        while ((pbVar5 != (bfd_elf_version_expr *)0x0 &&\n               (iVar4 = strcmp(pbVar5->pattern,__s2), iVar4 == 0))) {\n          if ((pbVar5->field_0x10 & 0x38) == 8) goto LAB_00113008;\n          pbVar5 = pbVar5->next;\n        }\nLAB_001131e0:\n        uVar3 = head->mask;\n      }\n      if ((uVar3 & 2) != 0) {\n        e.pattern = __s2_01;\n        pbVar5 = (bfd_elf_version_expr *)htab_find(head->htab,&e);\n        while ((pbVar5 != (bfd_elf_version_expr *)0x0 &&\n               (iVar4 = strcmp(pbVar5->pattern,__s2_01), iVar4 == 0))) {\n          if ((pbVar5->field_0x10 & 0x38) == 0x10) goto LAB_00113008;\n          pbVar5 = pbVar5->next;\n        }\nLAB_00113180:\n        uVar3 = head->mask;\n      }\n      if ((uVar3 & 4) != 0) {\n        e.pattern = __s2_00;\n        pbVar5 = (bfd_elf_version_expr *)htab_find(head->htab,&e);\n        while ((pbVar5 != (bfd_elf_version_expr *)0x0 &&\n               (iVar4 = strcmp(pbVar5->pattern,__s2_00), iVar4 == 0))) {\n          if ((pbVar5->field_0x10 & 0x38) == 0x20) goto LAB_00113008;\n          pbVar5 = pbVar5->next;\n        }\n      }\n      goto LAB_00112fa6;\n    }\n    if ((prev->field_0x10 & 1) != 0) {\n      bVar2 = (byte)prev->field_0x10 >> 3 & 7;\n      if (bVar2 == 1) goto LAB_001131e0;\n      if (bVar2 == 0) goto LAB_00113048;\n      if (bVar2 != 2) goto LAB_00112fa6;\n      goto LAB_00113180;\n    }\n  }" else (compound_statement "{\n    if (prev == (bfd_elf_version_expr *)0x0) {\nLAB_00113048:\n      uVar3 = head->mask;\n      if ((uVar3 & 1) != 0) {\n        e.pattern = __s2;\n        pbVar5 = (bfd_elf_version_expr *)htab_find(head->htab,&e);\n        while ((pbVar5 != (bfd_elf_version_expr *)0x0 &&\n               (iVar4 = strcmp(pbVar5->pattern,__s2), iVar4 == 0))) {\n          if ((pbVar5->field_0x10 & 0x38) == 8) goto LAB_00113008;\n          pbVar5 = pbVar5->next;\n        }\nLAB_001131e0:\n        uVar3 = head->mask;\n      }\n      if ((uVar3 & 2) != 0) {\n        e.pattern = __s2_01;\n        pbVar5 = (bfd_elf_version_expr *)htab_find(head->htab,&e);\n        while ((pbVar5 != (bfd_elf_version_expr *)0x0 &&\n               (iVar4 = strcmp(pbVar5->pattern,__s2_01), iVar4 == 0))) {\n          if ((pbVar5->field_0x10 & 0x38) == 0x10) goto LAB_00113008;\n          pbVar5 = pbVar5->next;\n        }\nLAB_00113180:\n        uVar3 = head->mask;\n      }\n      if ((uVar3 & 4) != 0) {\n        e.pattern = __s2_00;\n        pbVar5 = (bfd_elf_version_expr *)htab_find(head->htab,&e);\n        while ((pbVar5 != (bfd_elf_version_expr *)0x0 &&\n               (iVar4 = strcmp(pbVar5->pattern,__s2_00), iVar4 == 0))) {\n          if ((pbVar5->field_0x10 & 0x38) == 0x20) goto LAB_00113008;\n          pbVar5 = pbVar5->next;\n        }\n      }\n      goto LAB_00112fa6;\n    }\n    if ((prev->field_0x10 & 1) != 0) {\n      bVar2 = (byte)prev->field_0x10 >> 3 & 7;\n      if (bVar2 == 1) goto LAB_001131e0;\n      if (bVar2 == 0) goto LAB_00113048;\n      if (bVar2 != 2) goto LAB_00112fa6;\n      goto LAB_00113180;\n    }\n  }" { (if_statement "if (prev == (bfd_elf_version_expr *)0x0) {\nLAB_00113048:\n      uVar3 = head->mask;\n      if ((uVar3 & 1) != 0) {\n        e.pattern = __s2;\n        pbVar5 = (bfd_elf_version_expr *)htab_find(head->htab,&e);\n        while ((pbVar5 != (bfd_elf_version_expr *)0x0 &&\n               (iVar4 = strcmp(pbVar5->pattern,__s2), iVar4 == 0))) {\n          if ((pbVar5->field_0x10 & 0x38) == 8) goto LAB_00113008;\n          pbVar5 = pbVar5->next;\n        }\nLAB_001131e0:\n        uVar3 = head->mask;\n      }\n      if ((uVar3 & 2) != 0) {\n        e.pattern = __s2_01;\n        pbVar5 = (bfd_elf_version_expr *)htab_find(head->htab,&e);\n        while ((pbVar5 != (bfd_elf_version_expr *)0x0 &&\n               (iVar4 = strcmp(pbVar5->pattern,__s2_01), iVar4 == 0))) {\n          if ((pbVar5->field_0x10 & 0x38) == 0x10) goto LAB_00113008;\n          pbVar5 = pbVar5->next;\n        }\nLAB_00113180:\n        uVar3 = head->mask;\n      }\n      if ((uVar3 & 4) != 0) {\n        e.pattern = __s2_00;\n        pbVar5 = (bfd_elf_version_expr *)htab_find(head->htab,&e);\n        while ((pbVar5 != (bfd_elf_version_expr *)0x0 &&\n               (iVar4 = strcmp(pbVar5->pattern,__s2_00), iVar4 == 0))) {\n          if ((pbVar5->field_0x10 & 0x38) == 0x20) goto LAB_00113008;\n          pbVar5 = pbVar5->next;\n        }\n      }\n      goto LAB_00112fa6;\n    }" if (parenthesized_expression "(prev == (bfd_elf_version_expr *)0x0)" ( (binary_expression "prev == (bfd_elf_version_expr *)0x0" identifier == (cast_expression "(bfd_elf_version_expr *)0x0" ( (type_descriptor "bfd_elf_version_expr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_00113048:\n      uVar3 = head->mask;\n      if ((uVar3 & 1) != 0) {\n        e.pattern = __s2;\n        pbVar5 = (bfd_elf_version_expr *)htab_find(head->htab,&e);\n        while ((pbVar5 != (bfd_elf_version_expr *)0x0 &&\n               (iVar4 = strcmp(pbVar5->pattern,__s2), iVar4 == 0))) {\n          if ((pbVar5->field_0x10 & 0x38) == 8) goto LAB_00113008;\n          pbVar5 = pbVar5->next;\n        }\nLAB_001131e0:\n        uVar3 = head->mask;\n      }\n      if ((uVar3 & 2) != 0) {\n        e.pattern = __s2_01;\n        pbVar5 = (bfd_elf_version_expr *)htab_find(head->htab,&e);\n        while ((pbVar5 != (bfd_elf_version_expr *)0x0 &&\n               (iVar4 = strcmp(pbVar5->pattern,__s2_01), iVar4 == 0))) {\n          if ((pbVar5->field_0x10 & 0x38) == 0x10) goto LAB_00113008;\n          pbVar5 = pbVar5->next;\n        }\nLAB_00113180:\n        uVar3 = head->mask;\n      }\n      if ((uVar3 & 4) != 0) {\n        e.pattern = __s2_00;\n        pbVar5 = (bfd_elf_version_expr *)htab_find(head->htab,&e);\n        while ((pbVar5 != (bfd_elf_version_expr *)0x0 &&\n               (iVar4 = strcmp(pbVar5->pattern,__s2_00), iVar4 == 0))) {\n          if ((pbVar5->field_0x10 & 0x38) == 0x20) goto LAB_00113008;\n          pbVar5 = pbVar5->next;\n        }\n      }\n      goto LAB_00112fa6;\n    }" { (labeled_statement "LAB_00113048:\n      uVar3 = head->mask;" statement_identifier : (expression_statement "uVar3 = head->mask;" (assignment_expression "uVar3 = head->mask" identifier = (field_expression "head->mask" identifier -> field_identifier)) ;)) (if_statement "if ((uVar3 & 1) != 0) {\n        e.pattern = __s2;\n        pbVar5 = (bfd_elf_version_expr *)htab_find(head->htab,&e);\n        while ((pbVar5 != (bfd_elf_version_expr *)0x0 &&\n               (iVar4 = strcmp(pbVar5->pattern,__s2), iVar4 == 0))) {\n          if ((pbVar5->field_0x10 & 0x38) == 8) goto LAB_00113008;\n          pbVar5 = pbVar5->next;\n        }\nLAB_001131e0:\n        uVar3 = head->mask;\n      }" if (parenthesized_expression "((uVar3 & 1) != 0)" ( (binary_expression "(uVar3 & 1) != 0" (parenthesized_expression "(uVar3 & 1)" ( (binary_expression "uVar3 & 1" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n        e.pattern = __s2;\n        pbVar5 = (bfd_elf_version_expr *)htab_find(head->htab,&e);\n        while ((pbVar5 != (bfd_elf_version_expr *)0x0 &&\n               (iVar4 = strcmp(pbVar5->pattern,__s2), iVar4 == 0))) {\n          if ((pbVar5->field_0x10 & 0x38) == 8) goto LAB_00113008;\n          pbVar5 = pbVar5->next;\n        }\nLAB_001131e0:\n        uVar3 = head->mask;\n      }" { (expression_statement "e.pattern = __s2;" (assignment_expression "e.pattern = __s2" (field_expression "e.pattern" identifier . field_identifier) = identifier) ;) (expression_statement "pbVar5 = (bfd_elf_version_expr *)htab_find(head->htab,&e);" (assignment_expression "pbVar5 = (bfd_elf_version_expr *)htab_find(head->htab,&e)" identifier = (cast_expression "(bfd_elf_version_expr *)htab_find(head->htab,&e)" ( (type_descriptor "bfd_elf_version_expr *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "htab_find(head->htab,&e)" identifier (argument_list "(head->htab,&e)" ( (field_expression "head->htab" identifier -> field_identifier) , (pointer_expression "&e" & identifier) ))))) ;) (while_statement "while ((pbVar5 != (bfd_elf_version_expr *)0x0 &&\n               (iVar4 = strcmp(pbVar5->pattern,__s2), iVar4 == 0))) {\n          if ((pbVar5->field_0x10 & 0x38) == 8) goto LAB_00113008;\n          pbVar5 = pbVar5->next;\n        }" while (parenthesized_expression "((pbVar5 != (bfd_elf_version_expr *)0x0 &&\n               (iVar4 = strcmp(pbVar5->pattern,__s2), iVar4 == 0)))" ( (parenthesized_expression "(pbVar5 != (bfd_elf_version_expr *)0x0 &&\n               (iVar4 = strcmp(pbVar5->pattern,__s2), iVar4 == 0))" ( (binary_expression "pbVar5 != (bfd_elf_version_expr *)0x0 &&\n               (iVar4 = strcmp(pbVar5->pattern,__s2), iVar4 == 0)" (binary_expression "pbVar5 != (bfd_elf_version_expr *)0x0" identifier != (cast_expression "(bfd_elf_version_expr *)0x0" ( (type_descriptor "bfd_elf_version_expr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) && (parenthesized_expression "(iVar4 = strcmp(pbVar5->pattern,__s2), iVar4 == 0)" ( (comma_expression "iVar4 = strcmp(pbVar5->pattern,__s2), iVar4 == 0" (assignment_expression "iVar4 = strcmp(pbVar5->pattern,__s2)" identifier = (call_expression "strcmp(pbVar5->pattern,__s2)" identifier (argument_list "(pbVar5->pattern,__s2)" ( (field_expression "pbVar5->pattern" identifier -> field_identifier) , identifier )))) , (binary_expression "iVar4 == 0" identifier == number_literal)) ))) )) )) (compound_statement "{\n          if ((pbVar5->field_0x10 & 0x38) == 8) goto LAB_00113008;\n          pbVar5 = pbVar5->next;\n        }" { (if_statement "if ((pbVar5->field_0x10 & 0x38) == 8) goto LAB_00113008;" if (parenthesized_expression "((pbVar5->field_0x10 & 0x38) == 8)" ( (binary_expression "(pbVar5->field_0x10 & 0x38) == 8" (parenthesized_expression "(pbVar5->field_0x10 & 0x38)" ( (binary_expression "pbVar5->field_0x10 & 0x38" (field_expression "pbVar5->field_0x10" identifier -> field_identifier) & number_literal) )) == number_literal) )) (goto_statement "goto LAB_00113008;" goto statement_identifier ;)) (expression_statement "pbVar5 = pbVar5->next;" (assignment_expression "pbVar5 = pbVar5->next" identifier = (field_expression "pbVar5->next" identifier -> field_identifier)) ;) })) (labeled_statement "LAB_001131e0:\n        uVar3 = head->mask;" statement_identifier : (expression_statement "uVar3 = head->mask;" (assignment_expression "uVar3 = head->mask" identifier = (field_expression "head->mask" identifier -> field_identifier)) ;)) })) (if_statement "if ((uVar3 & 2) != 0) {\n        e.pattern = __s2_01;\n        pbVar5 = (bfd_elf_version_expr *)htab_find(head->htab,&e);\n        while ((pbVar5 != (bfd_elf_version_expr *)0x0 &&\n               (iVar4 = strcmp(pbVar5->pattern,__s2_01), iVar4 == 0))) {\n          if ((pbVar5->field_0x10 & 0x38) == 0x10) goto LAB_00113008;\n          pbVar5 = pbVar5->next;\n        }\nLAB_00113180:\n        uVar3 = head->mask;\n      }" if (parenthesized_expression "((uVar3 & 2) != 0)" ( (binary_expression "(uVar3 & 2) != 0" (parenthesized_expression "(uVar3 & 2)" ( (binary_expression "uVar3 & 2" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n        e.pattern = __s2_01;\n        pbVar5 = (bfd_elf_version_expr *)htab_find(head->htab,&e);\n        while ((pbVar5 != (bfd_elf_version_expr *)0x0 &&\n               (iVar4 = strcmp(pbVar5->pattern,__s2_01), iVar4 == 0))) {\n          if ((pbVar5->field_0x10 & 0x38) == 0x10) goto LAB_00113008;\n          pbVar5 = pbVar5->next;\n        }\nLAB_00113180:\n        uVar3 = head->mask;\n      }" { (expression_statement "e.pattern = __s2_01;" (assignment_expression "e.pattern = __s2_01" (field_expression "e.pattern" identifier . field_identifier) = identifier) ;) (expression_statement "pbVar5 = (bfd_elf_version_expr *)htab_find(head->htab,&e);" (assignment_expression "pbVar5 = (bfd_elf_version_expr *)htab_find(head->htab,&e)" identifier = (cast_expression "(bfd_elf_version_expr *)htab_find(head->htab,&e)" ( (type_descriptor "bfd_elf_version_expr *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "htab_find(head->htab,&e)" identifier (argument_list "(head->htab,&e)" ( (field_expression "head->htab" identifier -> field_identifier) , (pointer_expression "&e" & identifier) ))))) ;) (while_statement "while ((pbVar5 != (bfd_elf_version_expr *)0x0 &&\n               (iVar4 = strcmp(pbVar5->pattern,__s2_01), iVar4 == 0))) {\n          if ((pbVar5->field_0x10 & 0x38) == 0x10) goto LAB_00113008;\n          pbVar5 = pbVar5->next;\n        }" while (parenthesized_expression "((pbVar5 != (bfd_elf_version_expr *)0x0 &&\n               (iVar4 = strcmp(pbVar5->pattern,__s2_01), iVar4 == 0)))" ( (parenthesized_expression "(pbVar5 != (bfd_elf_version_expr *)0x0 &&\n               (iVar4 = strcmp(pbVar5->pattern,__s2_01), iVar4 == 0))" ( (binary_expression "pbVar5 != (bfd_elf_version_expr *)0x0 &&\n               (iVar4 = strcmp(pbVar5->pattern,__s2_01), iVar4 == 0)" (binary_expression "pbVar5 != (bfd_elf_version_expr *)0x0" identifier != (cast_expression "(bfd_elf_version_expr *)0x0" ( (type_descriptor "bfd_elf_version_expr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) && (parenthesized_expression "(iVar4 = strcmp(pbVar5->pattern,__s2_01), iVar4 == 0)" ( (comma_expression "iVar4 = strcmp(pbVar5->pattern,__s2_01), iVar4 == 0" (assignment_expression "iVar4 = strcmp(pbVar5->pattern,__s2_01)" identifier = (call_expression "strcmp(pbVar5->pattern,__s2_01)" identifier (argument_list "(pbVar5->pattern,__s2_01)" ( (field_expression "pbVar5->pattern" identifier -> field_identifier) , identifier )))) , (binary_expression "iVar4 == 0" identifier == number_literal)) ))) )) )) (compound_statement "{\n          if ((pbVar5->field_0x10 & 0x38) == 0x10) goto LAB_00113008;\n          pbVar5 = pbVar5->next;\n        }" { (if_statement "if ((pbVar5->field_0x10 & 0x38) == 0x10) goto LAB_00113008;" if (parenthesized_expression "((pbVar5->field_0x10 & 0x38) == 0x10)" ( (binary_expression "(pbVar5->field_0x10 & 0x38) == 0x10" (parenthesized_expression "(pbVar5->field_0x10 & 0x38)" ( (binary_expression "pbVar5->field_0x10 & 0x38" (field_expression "pbVar5->field_0x10" identifier -> field_identifier) & number_literal) )) == number_literal) )) (goto_statement "goto LAB_00113008;" goto statement_identifier ;)) (expression_statement "pbVar5 = pbVar5->next;" (assignment_expression "pbVar5 = pbVar5->next" identifier = (field_expression "pbVar5->next" identifier -> field_identifier)) ;) })) (labeled_statement "LAB_00113180:\n        uVar3 = head->mask;" statement_identifier : (expression_statement "uVar3 = head->mask;" (assignment_expression "uVar3 = head->mask" identifier = (field_expression "head->mask" identifier -> field_identifier)) ;)) })) (if_statement "if ((uVar3 & 4) != 0) {\n        e.pattern = __s2_00;\n        pbVar5 = (bfd_elf_version_expr *)htab_find(head->htab,&e);\n        while ((pbVar5 != (bfd_elf_version_expr *)0x0 &&\n               (iVar4 = strcmp(pbVar5->pattern,__s2_00), iVar4 == 0))) {\n          if ((pbVar5->field_0x10 & 0x38) == 0x20) goto LAB_00113008;\n          pbVar5 = pbVar5->next;\n        }\n      }" if (parenthesized_expression "((uVar3 & 4) != 0)" ( (binary_expression "(uVar3 & 4) != 0" (parenthesized_expression "(uVar3 & 4)" ( (binary_expression "uVar3 & 4" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n        e.pattern = __s2_00;\n        pbVar5 = (bfd_elf_version_expr *)htab_find(head->htab,&e);\n        while ((pbVar5 != (bfd_elf_version_expr *)0x0 &&\n               (iVar4 = strcmp(pbVar5->pattern,__s2_00), iVar4 == 0))) {\n          if ((pbVar5->field_0x10 & 0x38) == 0x20) goto LAB_00113008;\n          pbVar5 = pbVar5->next;\n        }\n      }" { (expression_statement "e.pattern = __s2_00;" (assignment_expression "e.pattern = __s2_00" (field_expression "e.pattern" identifier . field_identifier) = identifier) ;) (expression_statement "pbVar5 = (bfd_elf_version_expr *)htab_find(head->htab,&e);" (assignment_expression "pbVar5 = (bfd_elf_version_expr *)htab_find(head->htab,&e)" identifier = (cast_expression "(bfd_elf_version_expr *)htab_find(head->htab,&e)" ( (type_descriptor "bfd_elf_version_expr *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "htab_find(head->htab,&e)" identifier (argument_list "(head->htab,&e)" ( (field_expression "head->htab" identifier -> field_identifier) , (pointer_expression "&e" & identifier) ))))) ;) (while_statement "while ((pbVar5 != (bfd_elf_version_expr *)0x0 &&\n               (iVar4 = strcmp(pbVar5->pattern,__s2_00), iVar4 == 0))) {\n          if ((pbVar5->field_0x10 & 0x38) == 0x20) goto LAB_00113008;\n          pbVar5 = pbVar5->next;\n        }" while (parenthesized_expression "((pbVar5 != (bfd_elf_version_expr *)0x0 &&\n               (iVar4 = strcmp(pbVar5->pattern,__s2_00), iVar4 == 0)))" ( (parenthesized_expression "(pbVar5 != (bfd_elf_version_expr *)0x0 &&\n               (iVar4 = strcmp(pbVar5->pattern,__s2_00), iVar4 == 0))" ( (binary_expression "pbVar5 != (bfd_elf_version_expr *)0x0 &&\n               (iVar4 = strcmp(pbVar5->pattern,__s2_00), iVar4 == 0)" (binary_expression "pbVar5 != (bfd_elf_version_expr *)0x0" identifier != (cast_expression "(bfd_elf_version_expr *)0x0" ( (type_descriptor "bfd_elf_version_expr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) && (parenthesized_expression "(iVar4 = strcmp(pbVar5->pattern,__s2_00), iVar4 == 0)" ( (comma_expression "iVar4 = strcmp(pbVar5->pattern,__s2_00), iVar4 == 0" (assignment_expression "iVar4 = strcmp(pbVar5->pattern,__s2_00)" identifier = (call_expression "strcmp(pbVar5->pattern,__s2_00)" identifier (argument_list "(pbVar5->pattern,__s2_00)" ( (field_expression "pbVar5->pattern" identifier -> field_identifier) , identifier )))) , (binary_expression "iVar4 == 0" identifier == number_literal)) ))) )) )) (compound_statement "{\n          if ((pbVar5->field_0x10 & 0x38) == 0x20) goto LAB_00113008;\n          pbVar5 = pbVar5->next;\n        }" { (if_statement "if ((pbVar5->field_0x10 & 0x38) == 0x20) goto LAB_00113008;" if (parenthesized_expression "((pbVar5->field_0x10 & 0x38) == 0x20)" ( (binary_expression "(pbVar5->field_0x10 & 0x38) == 0x20" (parenthesized_expression "(pbVar5->field_0x10 & 0x38)" ( (binary_expression "pbVar5->field_0x10 & 0x38" (field_expression "pbVar5->field_0x10" identifier -> field_identifier) & number_literal) )) == number_literal) )) (goto_statement "goto LAB_00113008;" goto statement_identifier ;)) (expression_statement "pbVar5 = pbVar5->next;" (assignment_expression "pbVar5 = pbVar5->next" identifier = (field_expression "pbVar5->next" identifier -> field_identifier)) ;) })) })) (goto_statement "goto LAB_00112fa6;" goto statement_identifier ;) })) (if_statement "if ((prev->field_0x10 & 1) != 0) {\n      bVar2 = (byte)prev->field_0x10 >> 3 & 7;\n      if (bVar2 == 1) goto LAB_001131e0;\n      if (bVar2 == 0) goto LAB_00113048;\n      if (bVar2 != 2) goto LAB_00112fa6;\n      goto LAB_00113180;\n    }" if (parenthesized_expression "((prev->field_0x10 & 1) != 0)" ( (binary_expression "(prev->field_0x10 & 1) != 0" (parenthesized_expression "(prev->field_0x10 & 1)" ( (binary_expression "prev->field_0x10 & 1" (field_expression "prev->field_0x10" identifier -> field_identifier) & number_literal) )) != number_literal) )) (compound_statement "{\n      bVar2 = (byte)prev->field_0x10 >> 3 & 7;\n      if (bVar2 == 1) goto LAB_001131e0;\n      if (bVar2 == 0) goto LAB_00113048;\n      if (bVar2 != 2) goto LAB_00112fa6;\n      goto LAB_00113180;\n    }" { (expression_statement "bVar2 = (byte)prev->field_0x10 >> 3 & 7;" (assignment_expression "bVar2 = (byte)prev->field_0x10 >> 3 & 7" identifier = (binary_expression "(byte)prev->field_0x10 >> 3 & 7" (binary_expression "(byte)prev->field_0x10 >> 3" (cast_expression "(byte)prev->field_0x10" ( (type_descriptor "byte" type_identifier) ) (field_expression "prev->field_0x10" identifier -> field_identifier)) >> number_literal) & number_literal)) ;) (if_statement "if (bVar2 == 1) goto LAB_001131e0;" if (parenthesized_expression "(bVar2 == 1)" ( (binary_expression "bVar2 == 1" identifier == number_literal) )) (goto_statement "goto LAB_001131e0;" goto statement_identifier ;)) (if_statement "if (bVar2 == 0) goto LAB_00113048;" if (parenthesized_expression "(bVar2 == 0)" ( (binary_expression "bVar2 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00113048;" goto statement_identifier ;)) (if_statement "if (bVar2 != 2) goto LAB_00112fa6;" if (parenthesized_expression "(bVar2 != 2)" ( (binary_expression "bVar2 != 2" identifier != number_literal) )) (goto_statement "goto LAB_00112fa6;" goto statement_identifier ;)) (goto_statement "goto LAB_00113180;" goto statement_identifier ;) })) }))) (expression_statement "pbVar5 = prev->next;" (assignment_expression "pbVar5 = prev->next" identifier = (field_expression "prev->next" identifier -> field_identifier)) ;) (labeled_statement "joined_r0x001130cb:\n  for (; pbVar5 != (bfd_elf_version_expr *)0x0; pbVar5 = pbVar5->next) {\n    __pattern = pbVar5->pattern;\n    if (__pattern != (char *)0x0) {\n      if ((*__pattern == '*') && (__pattern[1] == '\0')) goto LAB_00113008;\n      bVar2 = pbVar5->field_0x10 & 0x38;\n      __name = __s2_00;\n      if ((bVar2 != 0x20) && (__name = __s2, bVar2 == 0x10)) {\n        __name = __s2_01;\n      }\n      iVar4 = fnmatch(__pattern,__name,0);\n      if (iVar4 == 0) goto LAB_00113008;\n    }\n  }" statement_identifier : (for_statement "for (; pbVar5 != (bfd_elf_version_expr *)0x0; pbVar5 = pbVar5->next) {\n    __pattern = pbVar5->pattern;\n    if (__pattern != (char *)0x0) {\n      if ((*__pattern == '*') && (__pattern[1] == '\0')) goto LAB_00113008;\n      bVar2 = pbVar5->field_0x10 & 0x38;\n      __name = __s2_00;\n      if ((bVar2 != 0x20) && (__name = __s2, bVar2 == 0x10)) {\n        __name = __s2_01;\n      }\n      iVar4 = fnmatch(__pattern,__name,0);\n      if (iVar4 == 0) goto LAB_00113008;\n    }\n  }" for ( ; (binary_expression "pbVar5 != (bfd_elf_version_expr *)0x0" identifier != (cast_expression "(bfd_elf_version_expr *)0x0" ( (type_descriptor "bfd_elf_version_expr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ; (assignment_expression "pbVar5 = pbVar5->next" identifier = (field_expression "pbVar5->next" identifier -> field_identifier)) ) (compound_statement "{\n    __pattern = pbVar5->pattern;\n    if (__pattern != (char *)0x0) {\n      if ((*__pattern == '*') && (__pattern[1] == '\0')) goto LAB_00113008;\n      bVar2 = pbVar5->field_0x10 & 0x38;\n      __name = __s2_00;\n      if ((bVar2 != 0x20) && (__name = __s2, bVar2 == 0x10)) {\n        __name = __s2_01;\n      }\n      iVar4 = fnmatch(__pattern,__name,0);\n      if (iVar4 == 0) goto LAB_00113008;\n    }\n  }" { (expression_statement "__pattern = pbVar5->pattern;" (assignment_expression "__pattern = pbVar5->pattern" identifier = (field_expression "pbVar5->pattern" identifier -> field_identifier)) ;) (if_statement "if (__pattern != (char *)0x0) {\n      if ((*__pattern == '*') && (__pattern[1] == '\0')) goto LAB_00113008;\n      bVar2 = pbVar5->field_0x10 & 0x38;\n      __name = __s2_00;\n      if ((bVar2 != 0x20) && (__name = __s2, bVar2 == 0x10)) {\n        __name = __s2_01;\n      }\n      iVar4 = fnmatch(__pattern,__name,0);\n      if (iVar4 == 0) goto LAB_00113008;\n    }" if (parenthesized_expression "(__pattern != (char *)0x0)" ( (binary_expression "__pattern != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      if ((*__pattern == '*') && (__pattern[1] == '\0')) goto LAB_00113008;\n      bVar2 = pbVar5->field_0x10 & 0x38;\n      __name = __s2_00;\n      if ((bVar2 != 0x20) && (__name = __s2, bVar2 == 0x10)) {\n        __name = __s2_01;\n      }\n      iVar4 = fnmatch(__pattern,__name,0);\n      if (iVar4 == 0) goto LAB_00113008;\n    }" { (if_statement "if ((*__pattern == '*') && (__pattern[1] == '\0')) goto LAB_00113008;" if (parenthesized_expression "((*__pattern == '*') && (__pattern[1] == '\0'))" ( (binary_expression "(*__pattern == '*') && (__pattern[1] == '\0')" (parenthesized_expression "(*__pattern == '*')" ( (binary_expression "*__pattern == '*'" (pointer_expression "*__pattern" * identifier) == (char_literal "'*'" ' character ')) )) && (parenthesized_expression "(__pattern[1] == '\0')" ( (binary_expression "__pattern[1] == '\0'" (subscript_expression "__pattern[1]" identifier [ number_literal ]) == (char_literal "'\0'" ' escape_sequence ')) ))) )) (goto_statement "goto LAB_00113008;" goto statement_identifier ;)) (expression_statement "bVar2 = pbVar5->field_0x10 & 0x38;" (assignment_expression "bVar2 = pbVar5->field_0x10 & 0x38" identifier = (binary_expression "pbVar5->field_0x10 & 0x38" (field_expression "pbVar5->field_0x10" identifier -> field_identifier) & number_literal)) ;) (expression_statement "__name = __s2_00;" (assignment_expression "__name = __s2_00" identifier = identifier) ;) (if_statement "if ((bVar2 != 0x20) && (__name = __s2, bVar2 == 0x10)) {\n        __name = __s2_01;\n      }" if (parenthesized_expression "((bVar2 != 0x20) && (__name = __s2, bVar2 == 0x10))" ( (binary_expression "(bVar2 != 0x20) && (__name = __s2, bVar2 == 0x10)" (parenthesized_expression "(bVar2 != 0x20)" ( (binary_expression "bVar2 != 0x20" identifier != number_literal) )) && (parenthesized_expression "(__name = __s2, bVar2 == 0x10)" ( (comma_expression "__name = __s2, bVar2 == 0x10" (assignment_expression "__name = __s2" identifier = identifier) , (binary_expression "bVar2 == 0x10" identifier == number_literal)) ))) )) (compound_statement "{\n        __name = __s2_01;\n      }" { (expression_statement "__name = __s2_01;" (assignment_expression "__name = __s2_01" identifier = identifier) ;) })) (expression_statement "iVar4 = fnmatch(__pattern,__name,0);" (assignment_expression "iVar4 = fnmatch(__pattern,__name,0)" identifier = (call_expression "fnmatch(__pattern,__name,0)" identifier (argument_list "(__pattern,__name,0)" ( identifier , identifier , number_literal )))) ;) (if_statement "if (iVar4 == 0) goto LAB_00113008;" if (parenthesized_expression "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00113008;" goto statement_identifier ;)) })) }))) (expression_statement "pbVar5 = (bfd_elf_version_expr *)0x0;" (assignment_expression "pbVar5 = (bfd_elf_version_expr *)0x0" identifier = (cast_expression "(bfd_elf_version_expr *)0x0" ( (type_descriptor "bfd_elf_version_expr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (labeled_statement "LAB_00113008:\n  if (__s2 != sym) {\n    free(__s2);\n  }" statement_identifier : (if_statement "if (__s2 != sym) {\n    free(__s2);\n  }" if (parenthesized_expression "(__s2 != sym)" ( (binary_expression "__s2 != sym" identifier != identifier) )) (compound_statement "{\n    free(__s2);\n  }" { (expression_statement "free(__s2);" (call_expression "free(__s2)" identifier (argument_list "(__s2)" ( identifier ))) ;) }))) (if_statement "if (__s2_01 != sym) {\n    free(__s2_01);\n  }" if (parenthesized_expression "(__s2_01 != sym)" ( (binary_expression "__s2_01 != sym" identifier != identifier) )) (compound_statement "{\n    free(__s2_01);\n  }" { (expression_statement "free(__s2_01);" (call_expression "free(__s2_01)" identifier (argument_list "(__s2_01)" ( identifier ))) ;) })) (if_statement "if (__s2_00 != sym) {\n    free(__s2_00);\n  }" if (parenthesized_expression "(__s2_00 != sym)" ( (binary_expression "__s2_00 != sym" identifier != identifier) )) (compound_statement "{\n    free(__s2_00);\n  }" { (expression_statement "free(__s2_00);" (call_expression "free(__s2_00)" identifier (argument_list "(__s2_00)" ( identifier ))) ;) })) (return_statement "return pbVar5;" return identifier ;) })))
(translation_unit "undefined8 * FUN_00112f00(long param_1,undefined8 *param_2,char *param_3)\n\n{\n  char *__pattern;\n  undefined4 uVar1;\n  byte bVar2;\n  uint uVar3;\n  int iVar4;\n  char *__s2;\n  undefined8 *puVar5;\n  char *__s2_00;\n  char *__s2_01;\n  char *__name;\n  undefined1 local_58 [8];\n  char *local_50;\n  \n  uVar1 = current_demangling_style;\n  cplus_demangle_set_style(0xffffffff);\n  __s2 = (char *)bfd_demangle(DAT_00171a10,param_3,0);\n  if (__s2 == (char *)0x0) {\n    __s2 = param_3;\n  }\n  cplus_demangle_set_style(uVar1);\n  uVar3 = *(uint *)(param_1 + 0x18);\n  __s2_01 = param_3;\n  if ((uVar3 & 2) != 0) {\n    __s2_01 = (char *)bfd_demangle(DAT_00171a10,param_3,3);\n    uVar3 = *(uint *)(param_1 + 0x18);\n    if (__s2_01 == (char *)0x0) {\n      __s2_01 = param_3;\n    }\n  }\n  if (((uVar3 & 4) == 0) ||\n     (__s2_00 = (char *)bfd_demangle(DAT_00171a10,param_3,4), __s2_00 == (char *)0x0)) {\n    __s2_00 = param_3;\n  }\n  if (*(long *)(param_1 + 8) == 0) {\nLAB_00112fa6:\n    if ((param_2 == (undefined8 *)0x0) || ((*(byte *)(param_2 + 2) & 1) != 0)) {\n      puVar5 = *(undefined8 **)(param_1 + 0x10);\n      goto joined_r0x001130cb;\n    }\n  }\n  else {\n    if (param_2 == (undefined8 *)0x0) {\nLAB_00113048:\n      uVar3 = *(uint *)(param_1 + 0x18);\n      if ((uVar3 & 1) != 0) {\n        local_50 = __s2;\n        puVar5 = (undefined8 *)htab_find(*(long *)(param_1 + 8),local_58);\n        while ((puVar5 != (undefined8 *)0x0 && (iVar4 = strcmp((char *)puVar5[1],__s2), iVar4 == 0))\n              ) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 8) goto LAB_00113008;\n          puVar5 = (undefined8 *)*puVar5;\n        }\nLAB_001131e0:\n        uVar3 = *(uint *)(param_1 + 0x18);\n      }\n      if ((uVar3 & 2) != 0) {\n        local_50 = __s2_01;\n        puVar5 = (undefined8 *)htab_find(*(undefined8 *)(param_1 + 8),local_58);\n        while ((puVar5 != (undefined8 *)0x0 &&\n               (iVar4 = strcmp((char *)puVar5[1],__s2_01), iVar4 == 0))) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 0x10) goto LAB_00113008;\n          puVar5 = (undefined8 *)*puVar5;\n        }\nLAB_00113180:\n        uVar3 = *(uint *)(param_1 + 0x18);\n      }\n      if ((uVar3 & 4) != 0) {\n        local_50 = __s2_00;\n        puVar5 = (undefined8 *)htab_find(*(undefined8 *)(param_1 + 8),local_58);\n        while ((puVar5 != (undefined8 *)0x0 &&\n               (iVar4 = strcmp((char *)puVar5[1],__s2_00), iVar4 == 0))) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 0x20) goto LAB_00113008;\n          puVar5 = (undefined8 *)*puVar5;\n        }\n      }\n      goto LAB_00112fa6;\n    }\n    if ((*(byte *)(param_2 + 2) & 1) != 0) {\n      bVar2 = *(byte *)(param_2 + 2) >> 3 & 7;\n      if (bVar2 == 1) goto LAB_001131e0;\n      if (bVar2 == 0) goto LAB_00113048;\n      if (bVar2 != 2) goto LAB_00112fa6;\n      goto LAB_00113180;\n    }\n  }\n  puVar5 = (undefined8 *)*param_2;\njoined_r0x001130cb:\n  for (; puVar5 != (undefined8 *)0x0; puVar5 = (undefined8 *)*puVar5) {\n    __pattern = (char *)puVar5[1];\n    if (__pattern != (char *)0x0) {\n      if ((*__pattern == '*') && (__pattern[1] == '\0')) goto LAB_00113008;\n      __name = __s2_00;\n      if (((*(byte *)(puVar5 + 2) & 0x38) != 0x20) &&\n         (__name = __s2, (*(byte *)(puVar5 + 2) & 0x38) == 0x10)) {\n        __name = __s2_01;\n      }\n      iVar4 = fnmatch(__pattern,__name,0);\n      if (iVar4 == 0) goto LAB_00113008;\n    }\n  }\n  puVar5 = (undefined8 *)0x0;\nLAB_00113008:\n  if (__s2 != param_3) {\n    free(__s2);\n  }\n  if (__s2_01 != param_3) {\n    free(__s2_01);\n  }\n  if (__s2_00 != param_3) {\n    free(__s2_00);\n  }\n  return puVar5;\n}\n\n" (function_definition "undefined8 * FUN_00112f00(long param_1,undefined8 *param_2,char *param_3)\n\n{\n  char *__pattern;\n  undefined4 uVar1;\n  byte bVar2;\n  uint uVar3;\n  int iVar4;\n  char *__s2;\n  undefined8 *puVar5;\n  char *__s2_00;\n  char *__s2_01;\n  char *__name;\n  undefined1 local_58 [8];\n  char *local_50;\n  \n  uVar1 = current_demangling_style;\n  cplus_demangle_set_style(0xffffffff);\n  __s2 = (char *)bfd_demangle(DAT_00171a10,param_3,0);\n  if (__s2 == (char *)0x0) {\n    __s2 = param_3;\n  }\n  cplus_demangle_set_style(uVar1);\n  uVar3 = *(uint *)(param_1 + 0x18);\n  __s2_01 = param_3;\n  if ((uVar3 & 2) != 0) {\n    __s2_01 = (char *)bfd_demangle(DAT_00171a10,param_3,3);\n    uVar3 = *(uint *)(param_1 + 0x18);\n    if (__s2_01 == (char *)0x0) {\n      __s2_01 = param_3;\n    }\n  }\n  if (((uVar3 & 4) == 0) ||\n     (__s2_00 = (char *)bfd_demangle(DAT_00171a10,param_3,4), __s2_00 == (char *)0x0)) {\n    __s2_00 = param_3;\n  }\n  if (*(long *)(param_1 + 8) == 0) {\nLAB_00112fa6:\n    if ((param_2 == (undefined8 *)0x0) || ((*(byte *)(param_2 + 2) & 1) != 0)) {\n      puVar5 = *(undefined8 **)(param_1 + 0x10);\n      goto joined_r0x001130cb;\n    }\n  }\n  else {\n    if (param_2 == (undefined8 *)0x0) {\nLAB_00113048:\n      uVar3 = *(uint *)(param_1 + 0x18);\n      if ((uVar3 & 1) != 0) {\n        local_50 = __s2;\n        puVar5 = (undefined8 *)htab_find(*(long *)(param_1 + 8),local_58);\n        while ((puVar5 != (undefined8 *)0x0 && (iVar4 = strcmp((char *)puVar5[1],__s2), iVar4 == 0))\n              ) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 8) goto LAB_00113008;\n          puVar5 = (undefined8 *)*puVar5;\n        }\nLAB_001131e0:\n        uVar3 = *(uint *)(param_1 + 0x18);\n      }\n      if ((uVar3 & 2) != 0) {\n        local_50 = __s2_01;\n        puVar5 = (undefined8 *)htab_find(*(undefined8 *)(param_1 + 8),local_58);\n        while ((puVar5 != (undefined8 *)0x0 &&\n               (iVar4 = strcmp((char *)puVar5[1],__s2_01), iVar4 == 0))) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 0x10) goto LAB_00113008;\n          puVar5 = (undefined8 *)*puVar5;\n        }\nLAB_00113180:\n        uVar3 = *(uint *)(param_1 + 0x18);\n      }\n      if ((uVar3 & 4) != 0) {\n        local_50 = __s2_00;\n        puVar5 = (undefined8 *)htab_find(*(undefined8 *)(param_1 + 8),local_58);\n        while ((puVar5 != (undefined8 *)0x0 &&\n               (iVar4 = strcmp((char *)puVar5[1],__s2_00), iVar4 == 0))) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 0x20) goto LAB_00113008;\n          puVar5 = (undefined8 *)*puVar5;\n        }\n      }\n      goto LAB_00112fa6;\n    }\n    if ((*(byte *)(param_2 + 2) & 1) != 0) {\n      bVar2 = *(byte *)(param_2 + 2) >> 3 & 7;\n      if (bVar2 == 1) goto LAB_001131e0;\n      if (bVar2 == 0) goto LAB_00113048;\n      if (bVar2 != 2) goto LAB_00112fa6;\n      goto LAB_00113180;\n    }\n  }\n  puVar5 = (undefined8 *)*param_2;\njoined_r0x001130cb:\n  for (; puVar5 != (undefined8 *)0x0; puVar5 = (undefined8 *)*puVar5) {\n    __pattern = (char *)puVar5[1];\n    if (__pattern != (char *)0x0) {\n      if ((*__pattern == '*') && (__pattern[1] == '\0')) goto LAB_00113008;\n      __name = __s2_00;\n      if (((*(byte *)(puVar5 + 2) & 0x38) != 0x20) &&\n         (__name = __s2, (*(byte *)(puVar5 + 2) & 0x38) == 0x10)) {\n        __name = __s2_01;\n      }\n      iVar4 = fnmatch(__pattern,__name,0);\n      if (iVar4 == 0) goto LAB_00113008;\n    }\n  }\n  puVar5 = (undefined8 *)0x0;\nLAB_00113008:\n  if (__s2 != param_3) {\n    free(__s2);\n  }\n  if (__s2_01 != param_3) {\n    free(__s2_01);\n  }\n  if (__s2_00 != param_3) {\n    free(__s2_00);\n  }\n  return puVar5;\n}" type_identifier (pointer_declarator "* FUN_00112f00(long param_1,undefined8 *param_2,char *param_3)" * (function_declarator "FUN_00112f00(long param_1,undefined8 *param_2,char *param_3)" identifier (parameter_list "(long param_1,undefined8 *param_2,char *param_3)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) , (parameter_declaration "undefined8 *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "char *param_3" primitive_type (pointer_declarator "*param_3" * identifier)) )))) (compound_statement "{\n  char *__pattern;\n  undefined4 uVar1;\n  byte bVar2;\n  uint uVar3;\n  int iVar4;\n  char *__s2;\n  undefined8 *puVar5;\n  char *__s2_00;\n  char *__s2_01;\n  char *__name;\n  undefined1 local_58 [8];\n  char *local_50;\n  \n  uVar1 = current_demangling_style;\n  cplus_demangle_set_style(0xffffffff);\n  __s2 = (char *)bfd_demangle(DAT_00171a10,param_3,0);\n  if (__s2 == (char *)0x0) {\n    __s2 = param_3;\n  }\n  cplus_demangle_set_style(uVar1);\n  uVar3 = *(uint *)(param_1 + 0x18);\n  __s2_01 = param_3;\n  if ((uVar3 & 2) != 0) {\n    __s2_01 = (char *)bfd_demangle(DAT_00171a10,param_3,3);\n    uVar3 = *(uint *)(param_1 + 0x18);\n    if (__s2_01 == (char *)0x0) {\n      __s2_01 = param_3;\n    }\n  }\n  if (((uVar3 & 4) == 0) ||\n     (__s2_00 = (char *)bfd_demangle(DAT_00171a10,param_3,4), __s2_00 == (char *)0x0)) {\n    __s2_00 = param_3;\n  }\n  if (*(long *)(param_1 + 8) == 0) {\nLAB_00112fa6:\n    if ((param_2 == (undefined8 *)0x0) || ((*(byte *)(param_2 + 2) & 1) != 0)) {\n      puVar5 = *(undefined8 **)(param_1 + 0x10);\n      goto joined_r0x001130cb;\n    }\n  }\n  else {\n    if (param_2 == (undefined8 *)0x0) {\nLAB_00113048:\n      uVar3 = *(uint *)(param_1 + 0x18);\n      if ((uVar3 & 1) != 0) {\n        local_50 = __s2;\n        puVar5 = (undefined8 *)htab_find(*(long *)(param_1 + 8),local_58);\n        while ((puVar5 != (undefined8 *)0x0 && (iVar4 = strcmp((char *)puVar5[1],__s2), iVar4 == 0))\n              ) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 8) goto LAB_00113008;\n          puVar5 = (undefined8 *)*puVar5;\n        }\nLAB_001131e0:\n        uVar3 = *(uint *)(param_1 + 0x18);\n      }\n      if ((uVar3 & 2) != 0) {\n        local_50 = __s2_01;\n        puVar5 = (undefined8 *)htab_find(*(undefined8 *)(param_1 + 8),local_58);\n        while ((puVar5 != (undefined8 *)0x0 &&\n               (iVar4 = strcmp((char *)puVar5[1],__s2_01), iVar4 == 0))) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 0x10) goto LAB_00113008;\n          puVar5 = (undefined8 *)*puVar5;\n        }\nLAB_00113180:\n        uVar3 = *(uint *)(param_1 + 0x18);\n      }\n      if ((uVar3 & 4) != 0) {\n        local_50 = __s2_00;\n        puVar5 = (undefined8 *)htab_find(*(undefined8 *)(param_1 + 8),local_58);\n        while ((puVar5 != (undefined8 *)0x0 &&\n               (iVar4 = strcmp((char *)puVar5[1],__s2_00), iVar4 == 0))) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 0x20) goto LAB_00113008;\n          puVar5 = (undefined8 *)*puVar5;\n        }\n      }\n      goto LAB_00112fa6;\n    }\n    if ((*(byte *)(param_2 + 2) & 1) != 0) {\n      bVar2 = *(byte *)(param_2 + 2) >> 3 & 7;\n      if (bVar2 == 1) goto LAB_001131e0;\n      if (bVar2 == 0) goto LAB_00113048;\n      if (bVar2 != 2) goto LAB_00112fa6;\n      goto LAB_00113180;\n    }\n  }\n  puVar5 = (undefined8 *)*param_2;\njoined_r0x001130cb:\n  for (; puVar5 != (undefined8 *)0x0; puVar5 = (undefined8 *)*puVar5) {\n    __pattern = (char *)puVar5[1];\n    if (__pattern != (char *)0x0) {\n      if ((*__pattern == '*') && (__pattern[1] == '\0')) goto LAB_00113008;\n      __name = __s2_00;\n      if (((*(byte *)(puVar5 + 2) & 0x38) != 0x20) &&\n         (__name = __s2, (*(byte *)(puVar5 + 2) & 0x38) == 0x10)) {\n        __name = __s2_01;\n      }\n      iVar4 = fnmatch(__pattern,__name,0);\n      if (iVar4 == 0) goto LAB_00113008;\n    }\n  }\n  puVar5 = (undefined8 *)0x0;\nLAB_00113008:\n  if (__s2 != param_3) {\n    free(__s2);\n  }\n  if (__s2_01 != param_3) {\n    free(__s2_01);\n  }\n  if (__s2_00 != param_3) {\n    free(__s2_00);\n  }\n  return puVar5;\n}" { (declaration "char *__pattern;" primitive_type (pointer_declarator "*__pattern" * identifier) ;) (declaration "undefined4 uVar1;" type_identifier identifier ;) (declaration "byte bVar2;" type_identifier identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "char *__s2;" primitive_type (pointer_declarator "*__s2" * identifier) ;) (declaration "undefined8 *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "char *__s2_00;" primitive_type (pointer_declarator "*__s2_00" * identifier) ;) (declaration "char *__s2_01;" primitive_type (pointer_declarator "*__s2_01" * identifier) ;) (declaration "char *__name;" primitive_type (pointer_declarator "*__name" * identifier) ;) (declaration "undefined1 local_58 [8];" type_identifier (array_declarator "local_58 [8]" identifier [ number_literal ]) ;) (declaration "char *local_50;" primitive_type (pointer_declarator "*local_50" * identifier) ;) (expression_statement "uVar1 = current_demangling_style;" (assignment_expression "uVar1 = current_demangling_style" identifier = identifier) ;) (expression_statement "cplus_demangle_set_style(0xffffffff);" (call_expression "cplus_demangle_set_style(0xffffffff)" identifier (argument_list "(0xffffffff)" ( number_literal ))) ;) (expression_statement "__s2 = (char *)bfd_demangle(DAT_00171a10,param_3,0);" (assignment_expression "__s2 = (char *)bfd_demangle(DAT_00171a10,param_3,0)" identifier = (cast_expression "(char *)bfd_demangle(DAT_00171a10,param_3,0)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "bfd_demangle(DAT_00171a10,param_3,0)" identifier (argument_list "(DAT_00171a10,param_3,0)" ( identifier , identifier , number_literal ))))) ;) (if_statement "if (__s2 == (char *)0x0) {\n    __s2 = param_3;\n  }" if (parenthesized_expression "(__s2 == (char *)0x0)" ( (binary_expression "__s2 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    __s2 = param_3;\n  }" { (expression_statement "__s2 = param_3;" (assignment_expression "__s2 = param_3" identifier = identifier) ;) })) (expression_statement "cplus_demangle_set_style(uVar1);" (call_expression "cplus_demangle_set_style(uVar1)" identifier (argument_list "(uVar1)" ( identifier ))) ;) (expression_statement "uVar3 = *(uint *)(param_1 + 0x18);" (assignment_expression "uVar3 = *(uint *)(param_1 + 0x18)" identifier = (pointer_expression "*(uint *)(param_1 + 0x18)" * (cast_expression "(uint *)(param_1 + 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) ))))) ;) (expression_statement "__s2_01 = param_3;" (assignment_expression "__s2_01 = param_3" identifier = identifier) ;) (if_statement "if ((uVar3 & 2) != 0) {\n    __s2_01 = (char *)bfd_demangle(DAT_00171a10,param_3,3);\n    uVar3 = *(uint *)(param_1 + 0x18);\n    if (__s2_01 == (char *)0x0) {\n      __s2_01 = param_3;\n    }\n  }" if (parenthesized_expression "((uVar3 & 2) != 0)" ( (binary_expression "(uVar3 & 2) != 0" (parenthesized_expression "(uVar3 & 2)" ( (binary_expression "uVar3 & 2" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n    __s2_01 = (char *)bfd_demangle(DAT_00171a10,param_3,3);\n    uVar3 = *(uint *)(param_1 + 0x18);\n    if (__s2_01 == (char *)0x0) {\n      __s2_01 = param_3;\n    }\n  }" { (expression_statement "__s2_01 = (char *)bfd_demangle(DAT_00171a10,param_3,3);" (assignment_expression "__s2_01 = (char *)bfd_demangle(DAT_00171a10,param_3,3)" identifier = (cast_expression "(char *)bfd_demangle(DAT_00171a10,param_3,3)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "bfd_demangle(DAT_00171a10,param_3,3)" identifier (argument_list "(DAT_00171a10,param_3,3)" ( identifier , identifier , number_literal ))))) ;) (expression_statement "uVar3 = *(uint *)(param_1 + 0x18);" (assignment_expression "uVar3 = *(uint *)(param_1 + 0x18)" identifier = (pointer_expression "*(uint *)(param_1 + 0x18)" * (cast_expression "(uint *)(param_1 + 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) ))))) ;) (if_statement "if (__s2_01 == (char *)0x0) {\n      __s2_01 = param_3;\n    }" if (parenthesized_expression "(__s2_01 == (char *)0x0)" ( (binary_expression "__s2_01 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      __s2_01 = param_3;\n    }" { (expression_statement "__s2_01 = param_3;" (assignment_expression "__s2_01 = param_3" identifier = identifier) ;) })) })) (if_statement "if (((uVar3 & 4) == 0) ||\n     (__s2_00 = (char *)bfd_demangle(DAT_00171a10,param_3,4), __s2_00 == (char *)0x0)) {\n    __s2_00 = param_3;\n  }" if (parenthesized_expression "(((uVar3 & 4) == 0) ||\n     (__s2_00 = (char *)bfd_demangle(DAT_00171a10,param_3,4), __s2_00 == (char *)0x0))" ( (binary_expression "((uVar3 & 4) == 0) ||\n     (__s2_00 = (char *)bfd_demangle(DAT_00171a10,param_3,4), __s2_00 == (char *)0x0)" (parenthesized_expression "((uVar3 & 4) == 0)" ( (binary_expression "(uVar3 & 4) == 0" (parenthesized_expression "(uVar3 & 4)" ( (binary_expression "uVar3 & 4" identifier & number_literal) )) == number_literal) )) || (parenthesized_expression "(__s2_00 = (char *)bfd_demangle(DAT_00171a10,param_3,4), __s2_00 == (char *)0x0)" ( (comma_expression "__s2_00 = (char *)bfd_demangle(DAT_00171a10,param_3,4), __s2_00 == (char *)0x0" (assignment_expression "__s2_00 = (char *)bfd_demangle(DAT_00171a10,param_3,4)" identifier = (cast_expression "(char *)bfd_demangle(DAT_00171a10,param_3,4)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "bfd_demangle(DAT_00171a10,param_3,4)" identifier (argument_list "(DAT_00171a10,param_3,4)" ( identifier , identifier , number_literal ))))) , (binary_expression "__s2_00 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (compound_statement "{\n    __s2_00 = param_3;\n  }" { (expression_statement "__s2_00 = param_3;" (assignment_expression "__s2_00 = param_3" identifier = identifier) ;) })) (if_statement "if (*(long *)(param_1 + 8) == 0) {\nLAB_00112fa6:\n    if ((param_2 == (undefined8 *)0x0) || ((*(byte *)(param_2 + 2) & 1) != 0)) {\n      puVar5 = *(undefined8 **)(param_1 + 0x10);\n      goto joined_r0x001130cb;\n    }\n  }\n  else {\n    if (param_2 == (undefined8 *)0x0) {\nLAB_00113048:\n      uVar3 = *(uint *)(param_1 + 0x18);\n      if ((uVar3 & 1) != 0) {\n        local_50 = __s2;\n        puVar5 = (undefined8 *)htab_find(*(long *)(param_1 + 8),local_58);\n        while ((puVar5 != (undefined8 *)0x0 && (iVar4 = strcmp((char *)puVar5[1],__s2), iVar4 == 0))\n              ) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 8) goto LAB_00113008;\n          puVar5 = (undefined8 *)*puVar5;\n        }\nLAB_001131e0:\n        uVar3 = *(uint *)(param_1 + 0x18);\n      }\n      if ((uVar3 & 2) != 0) {\n        local_50 = __s2_01;\n        puVar5 = (undefined8 *)htab_find(*(undefined8 *)(param_1 + 8),local_58);\n        while ((puVar5 != (undefined8 *)0x0 &&\n               (iVar4 = strcmp((char *)puVar5[1],__s2_01), iVar4 == 0))) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 0x10) goto LAB_00113008;\n          puVar5 = (undefined8 *)*puVar5;\n        }\nLAB_00113180:\n        uVar3 = *(uint *)(param_1 + 0x18);\n      }\n      if ((uVar3 & 4) != 0) {\n        local_50 = __s2_00;\n        puVar5 = (undefined8 *)htab_find(*(undefined8 *)(param_1 + 8),local_58);\n        while ((puVar5 != (undefined8 *)0x0 &&\n               (iVar4 = strcmp((char *)puVar5[1],__s2_00), iVar4 == 0))) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 0x20) goto LAB_00113008;\n          puVar5 = (undefined8 *)*puVar5;\n        }\n      }\n      goto LAB_00112fa6;\n    }\n    if ((*(byte *)(param_2 + 2) & 1) != 0) {\n      bVar2 = *(byte *)(param_2 + 2) >> 3 & 7;\n      if (bVar2 == 1) goto LAB_001131e0;\n      if (bVar2 == 0) goto LAB_00113048;\n      if (bVar2 != 2) goto LAB_00112fa6;\n      goto LAB_00113180;\n    }\n  }" if (parenthesized_expression "(*(long *)(param_1 + 8) == 0)" ( (binary_expression "*(long *)(param_1 + 8) == 0" (pointer_expression "*(long *)(param_1 + 8)" * (cast_expression "(long *)(param_1 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\nLAB_00112fa6:\n    if ((param_2 == (undefined8 *)0x0) || ((*(byte *)(param_2 + 2) & 1) != 0)) {\n      puVar5 = *(undefined8 **)(param_1 + 0x10);\n      goto joined_r0x001130cb;\n    }\n  }" { (labeled_statement "LAB_00112fa6:\n    if ((param_2 == (undefined8 *)0x0) || ((*(byte *)(param_2 + 2) & 1) != 0)) {\n      puVar5 = *(undefined8 **)(param_1 + 0x10);\n      goto joined_r0x001130cb;\n    }" statement_identifier : (if_statement "if ((param_2 == (undefined8 *)0x0) || ((*(byte *)(param_2 + 2) & 1) != 0)) {\n      puVar5 = *(undefined8 **)(param_1 + 0x10);\n      goto joined_r0x001130cb;\n    }" if (parenthesized_expression "((param_2 == (undefined8 *)0x0) || ((*(byte *)(param_2 + 2) & 1) != 0))" ( (binary_expression "(param_2 == (undefined8 *)0x0) || ((*(byte *)(param_2 + 2) & 1) != 0)" (parenthesized_expression "(param_2 == (undefined8 *)0x0)" ( (binary_expression "param_2 == (undefined8 *)0x0" identifier == (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "((*(byte *)(param_2 + 2) & 1) != 0)" ( (binary_expression "(*(byte *)(param_2 + 2) & 1) != 0" (parenthesized_expression "(*(byte *)(param_2 + 2) & 1)" ( (binary_expression "*(byte *)(param_2 + 2) & 1" (pointer_expression "*(byte *)(param_2 + 2)" * (cast_expression "(byte *)(param_2 + 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 2)" ( (binary_expression "param_2 + 2" identifier + number_literal) )))) & number_literal) )) != number_literal) ))) )) (compound_statement "{\n      puVar5 = *(undefined8 **)(param_1 + 0x10);\n      goto joined_r0x001130cb;\n    }" { (expression_statement "puVar5 = *(undefined8 **)(param_1 + 0x10);" (assignment_expression "puVar5 = *(undefined8 **)(param_1 + 0x10)" identifier = (pointer_expression "*(undefined8 **)(param_1 + 0x10)" * (cast_expression "(undefined8 **)(param_1 + 0x10)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) ))))) ;) (goto_statement "goto joined_r0x001130cb;" goto statement_identifier ;) }))) }) (else_clause "else {\n    if (param_2 == (undefined8 *)0x0) {\nLAB_00113048:\n      uVar3 = *(uint *)(param_1 + 0x18);\n      if ((uVar3 & 1) != 0) {\n        local_50 = __s2;\n        puVar5 = (undefined8 *)htab_find(*(long *)(param_1 + 8),local_58);\n        while ((puVar5 != (undefined8 *)0x0 && (iVar4 = strcmp((char *)puVar5[1],__s2), iVar4 == 0))\n              ) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 8) goto LAB_00113008;\n          puVar5 = (undefined8 *)*puVar5;\n        }\nLAB_001131e0:\n        uVar3 = *(uint *)(param_1 + 0x18);\n      }\n      if ((uVar3 & 2) != 0) {\n        local_50 = __s2_01;\n        puVar5 = (undefined8 *)htab_find(*(undefined8 *)(param_1 + 8),local_58);\n        while ((puVar5 != (undefined8 *)0x0 &&\n               (iVar4 = strcmp((char *)puVar5[1],__s2_01), iVar4 == 0))) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 0x10) goto LAB_00113008;\n          puVar5 = (undefined8 *)*puVar5;\n        }\nLAB_00113180:\n        uVar3 = *(uint *)(param_1 + 0x18);\n      }\n      if ((uVar3 & 4) != 0) {\n        local_50 = __s2_00;\n        puVar5 = (undefined8 *)htab_find(*(undefined8 *)(param_1 + 8),local_58);\n        while ((puVar5 != (undefined8 *)0x0 &&\n               (iVar4 = strcmp((char *)puVar5[1],__s2_00), iVar4 == 0))) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 0x20) goto LAB_00113008;\n          puVar5 = (undefined8 *)*puVar5;\n        }\n      }\n      goto LAB_00112fa6;\n    }\n    if ((*(byte *)(param_2 + 2) & 1) != 0) {\n      bVar2 = *(byte *)(param_2 + 2) >> 3 & 7;\n      if (bVar2 == 1) goto LAB_001131e0;\n      if (bVar2 == 0) goto LAB_00113048;\n      if (bVar2 != 2) goto LAB_00112fa6;\n      goto LAB_00113180;\n    }\n  }" else (compound_statement "{\n    if (param_2 == (undefined8 *)0x0) {\nLAB_00113048:\n      uVar3 = *(uint *)(param_1 + 0x18);\n      if ((uVar3 & 1) != 0) {\n        local_50 = __s2;\n        puVar5 = (undefined8 *)htab_find(*(long *)(param_1 + 8),local_58);\n        while ((puVar5 != (undefined8 *)0x0 && (iVar4 = strcmp((char *)puVar5[1],__s2), iVar4 == 0))\n              ) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 8) goto LAB_00113008;\n          puVar5 = (undefined8 *)*puVar5;\n        }\nLAB_001131e0:\n        uVar3 = *(uint *)(param_1 + 0x18);\n      }\n      if ((uVar3 & 2) != 0) {\n        local_50 = __s2_01;\n        puVar5 = (undefined8 *)htab_find(*(undefined8 *)(param_1 + 8),local_58);\n        while ((puVar5 != (undefined8 *)0x0 &&\n               (iVar4 = strcmp((char *)puVar5[1],__s2_01), iVar4 == 0))) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 0x10) goto LAB_00113008;\n          puVar5 = (undefined8 *)*puVar5;\n        }\nLAB_00113180:\n        uVar3 = *(uint *)(param_1 + 0x18);\n      }\n      if ((uVar3 & 4) != 0) {\n        local_50 = __s2_00;\n        puVar5 = (undefined8 *)htab_find(*(undefined8 *)(param_1 + 8),local_58);\n        while ((puVar5 != (undefined8 *)0x0 &&\n               (iVar4 = strcmp((char *)puVar5[1],__s2_00), iVar4 == 0))) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 0x20) goto LAB_00113008;\n          puVar5 = (undefined8 *)*puVar5;\n        }\n      }\n      goto LAB_00112fa6;\n    }\n    if ((*(byte *)(param_2 + 2) & 1) != 0) {\n      bVar2 = *(byte *)(param_2 + 2) >> 3 & 7;\n      if (bVar2 == 1) goto LAB_001131e0;\n      if (bVar2 == 0) goto LAB_00113048;\n      if (bVar2 != 2) goto LAB_00112fa6;\n      goto LAB_00113180;\n    }\n  }" { (if_statement "if (param_2 == (undefined8 *)0x0) {\nLAB_00113048:\n      uVar3 = *(uint *)(param_1 + 0x18);\n      if ((uVar3 & 1) != 0) {\n        local_50 = __s2;\n        puVar5 = (undefined8 *)htab_find(*(long *)(param_1 + 8),local_58);\n        while ((puVar5 != (undefined8 *)0x0 && (iVar4 = strcmp((char *)puVar5[1],__s2), iVar4 == 0))\n              ) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 8) goto LAB_00113008;\n          puVar5 = (undefined8 *)*puVar5;\n        }\nLAB_001131e0:\n        uVar3 = *(uint *)(param_1 + 0x18);\n      }\n      if ((uVar3 & 2) != 0) {\n        local_50 = __s2_01;\n        puVar5 = (undefined8 *)htab_find(*(undefined8 *)(param_1 + 8),local_58);\n        while ((puVar5 != (undefined8 *)0x0 &&\n               (iVar4 = strcmp((char *)puVar5[1],__s2_01), iVar4 == 0))) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 0x10) goto LAB_00113008;\n          puVar5 = (undefined8 *)*puVar5;\n        }\nLAB_00113180:\n        uVar3 = *(uint *)(param_1 + 0x18);\n      }\n      if ((uVar3 & 4) != 0) {\n        local_50 = __s2_00;\n        puVar5 = (undefined8 *)htab_find(*(undefined8 *)(param_1 + 8),local_58);\n        while ((puVar5 != (undefined8 *)0x0 &&\n               (iVar4 = strcmp((char *)puVar5[1],__s2_00), iVar4 == 0))) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 0x20) goto LAB_00113008;\n          puVar5 = (undefined8 *)*puVar5;\n        }\n      }\n      goto LAB_00112fa6;\n    }" if (parenthesized_expression "(param_2 == (undefined8 *)0x0)" ( (binary_expression "param_2 == (undefined8 *)0x0" identifier == (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_00113048:\n      uVar3 = *(uint *)(param_1 + 0x18);\n      if ((uVar3 & 1) != 0) {\n        local_50 = __s2;\n        puVar5 = (undefined8 *)htab_find(*(long *)(param_1 + 8),local_58);\n        while ((puVar5 != (undefined8 *)0x0 && (iVar4 = strcmp((char *)puVar5[1],__s2), iVar4 == 0))\n              ) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 8) goto LAB_00113008;\n          puVar5 = (undefined8 *)*puVar5;\n        }\nLAB_001131e0:\n        uVar3 = *(uint *)(param_1 + 0x18);\n      }\n      if ((uVar3 & 2) != 0) {\n        local_50 = __s2_01;\n        puVar5 = (undefined8 *)htab_find(*(undefined8 *)(param_1 + 8),local_58);\n        while ((puVar5 != (undefined8 *)0x0 &&\n               (iVar4 = strcmp((char *)puVar5[1],__s2_01), iVar4 == 0))) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 0x10) goto LAB_00113008;\n          puVar5 = (undefined8 *)*puVar5;\n        }\nLAB_00113180:\n        uVar3 = *(uint *)(param_1 + 0x18);\n      }\n      if ((uVar3 & 4) != 0) {\n        local_50 = __s2_00;\n        puVar5 = (undefined8 *)htab_find(*(undefined8 *)(param_1 + 8),local_58);\n        while ((puVar5 != (undefined8 *)0x0 &&\n               (iVar4 = strcmp((char *)puVar5[1],__s2_00), iVar4 == 0))) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 0x20) goto LAB_00113008;\n          puVar5 = (undefined8 *)*puVar5;\n        }\n      }\n      goto LAB_00112fa6;\n    }" { (labeled_statement "LAB_00113048:\n      uVar3 = *(uint *)(param_1 + 0x18);" statement_identifier : (expression_statement "uVar3 = *(uint *)(param_1 + 0x18);" (assignment_expression "uVar3 = *(uint *)(param_1 + 0x18)" identifier = (pointer_expression "*(uint *)(param_1 + 0x18)" * (cast_expression "(uint *)(param_1 + 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) ))))) ;)) (if_statement "if ((uVar3 & 1) != 0) {\n        local_50 = __s2;\n        puVar5 = (undefined8 *)htab_find(*(long *)(param_1 + 8),local_58);\n        while ((puVar5 != (undefined8 *)0x0 && (iVar4 = strcmp((char *)puVar5[1],__s2), iVar4 == 0))\n              ) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 8) goto LAB_00113008;\n          puVar5 = (undefined8 *)*puVar5;\n        }\nLAB_001131e0:\n        uVar3 = *(uint *)(param_1 + 0x18);\n      }" if (parenthesized_expression "((uVar3 & 1) != 0)" ( (binary_expression "(uVar3 & 1) != 0" (parenthesized_expression "(uVar3 & 1)" ( (binary_expression "uVar3 & 1" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n        local_50 = __s2;\n        puVar5 = (undefined8 *)htab_find(*(long *)(param_1 + 8),local_58);\n        while ((puVar5 != (undefined8 *)0x0 && (iVar4 = strcmp((char *)puVar5[1],__s2), iVar4 == 0))\n              ) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 8) goto LAB_00113008;\n          puVar5 = (undefined8 *)*puVar5;\n        }\nLAB_001131e0:\n        uVar3 = *(uint *)(param_1 + 0x18);\n      }" { (expression_statement "local_50 = __s2;" (assignment_expression "local_50 = __s2" identifier = identifier) ;) (expression_statement "puVar5 = (undefined8 *)htab_find(*(long *)(param_1 + 8),local_58);" (assignment_expression "puVar5 = (undefined8 *)htab_find(*(long *)(param_1 + 8),local_58)" identifier = (cast_expression "(undefined8 *)htab_find(*(long *)(param_1 + 8),local_58)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "htab_find(*(long *)(param_1 + 8),local_58)" identifier (argument_list "(*(long *)(param_1 + 8),local_58)" ( (pointer_expression "*(long *)(param_1 + 8)" * (cast_expression "(long *)(param_1 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) , identifier ))))) ;) (while_statement "while ((puVar5 != (undefined8 *)0x0 && (iVar4 = strcmp((char *)puVar5[1],__s2), iVar4 == 0))\n              ) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 8) goto LAB_00113008;\n          puVar5 = (undefined8 *)*puVar5;\n        }" while (parenthesized_expression "((puVar5 != (undefined8 *)0x0 && (iVar4 = strcmp((char *)puVar5[1],__s2), iVar4 == 0))\n              )" ( (parenthesized_expression "(puVar5 != (undefined8 *)0x0 && (iVar4 = strcmp((char *)puVar5[1],__s2), iVar4 == 0))" ( (binary_expression "puVar5 != (undefined8 *)0x0 && (iVar4 = strcmp((char *)puVar5[1],__s2), iVar4 == 0)" (binary_expression "puVar5 != (undefined8 *)0x0" identifier != (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) && (parenthesized_expression "(iVar4 = strcmp((char *)puVar5[1],__s2), iVar4 == 0)" ( (comma_expression "iVar4 = strcmp((char *)puVar5[1],__s2), iVar4 == 0" (assignment_expression "iVar4 = strcmp((char *)puVar5[1],__s2)" identifier = (call_expression "strcmp((char *)puVar5[1],__s2)" identifier (argument_list "((char *)puVar5[1],__s2)" ( (cast_expression "(char *)puVar5[1]" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar5[1]" identifier [ number_literal ])) , identifier )))) , (binary_expression "iVar4 == 0" identifier == number_literal)) ))) )) )) (compound_statement "{\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 8) goto LAB_00113008;\n          puVar5 = (undefined8 *)*puVar5;\n        }" { (if_statement "if ((*(byte *)(puVar5 + 2) & 0x38) == 8) goto LAB_00113008;" if (parenthesized_expression "((*(byte *)(puVar5 + 2) & 0x38) == 8)" ( (binary_expression "(*(byte *)(puVar5 + 2) & 0x38) == 8" (parenthesized_expression "(*(byte *)(puVar5 + 2) & 0x38)" ( (binary_expression "*(byte *)(puVar5 + 2) & 0x38" (pointer_expression "*(byte *)(puVar5 + 2)" * (cast_expression "(byte *)(puVar5 + 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar5 + 2)" ( (binary_expression "puVar5 + 2" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (goto_statement "goto LAB_00113008;" goto statement_identifier ;)) (expression_statement "puVar5 = (undefined8 *)*puVar5;" (assignment_expression "puVar5 = (undefined8 *)*puVar5" identifier = (cast_expression "(undefined8 *)*puVar5" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar5" * identifier))) ;) })) (labeled_statement "LAB_001131e0:\n        uVar3 = *(uint *)(param_1 + 0x18);" statement_identifier : (expression_statement "uVar3 = *(uint *)(param_1 + 0x18);" (assignment_expression "uVar3 = *(uint *)(param_1 + 0x18)" identifier = (pointer_expression "*(uint *)(param_1 + 0x18)" * (cast_expression "(uint *)(param_1 + 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) ))))) ;)) })) (if_statement "if ((uVar3 & 2) != 0) {\n        local_50 = __s2_01;\n        puVar5 = (undefined8 *)htab_find(*(undefined8 *)(param_1 + 8),local_58);\n        while ((puVar5 != (undefined8 *)0x0 &&\n               (iVar4 = strcmp((char *)puVar5[1],__s2_01), iVar4 == 0))) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 0x10) goto LAB_00113008;\n          puVar5 = (undefined8 *)*puVar5;\n        }\nLAB_00113180:\n        uVar3 = *(uint *)(param_1 + 0x18);\n      }" if (parenthesized_expression "((uVar3 & 2) != 0)" ( (binary_expression "(uVar3 & 2) != 0" (parenthesized_expression "(uVar3 & 2)" ( (binary_expression "uVar3 & 2" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n        local_50 = __s2_01;\n        puVar5 = (undefined8 *)htab_find(*(undefined8 *)(param_1 + 8),local_58);\n        while ((puVar5 != (undefined8 *)0x0 &&\n               (iVar4 = strcmp((char *)puVar5[1],__s2_01), iVar4 == 0))) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 0x10) goto LAB_00113008;\n          puVar5 = (undefined8 *)*puVar5;\n        }\nLAB_00113180:\n        uVar3 = *(uint *)(param_1 + 0x18);\n      }" { (expression_statement "local_50 = __s2_01;" (assignment_expression "local_50 = __s2_01" identifier = identifier) ;) (expression_statement "puVar5 = (undefined8 *)htab_find(*(undefined8 *)(param_1 + 8),local_58);" (assignment_expression "puVar5 = (undefined8 *)htab_find(*(undefined8 *)(param_1 + 8),local_58)" identifier = (cast_expression "(undefined8 *)htab_find(*(undefined8 *)(param_1 + 8),local_58)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "htab_find(*(undefined8 *)(param_1 + 8),local_58)" identifier (argument_list "(*(undefined8 *)(param_1 + 8),local_58)" ( (pointer_expression "*(undefined8 *)(param_1 + 8)" * (cast_expression "(undefined8 *)(param_1 + 8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) , identifier ))))) ;) (while_statement "while ((puVar5 != (undefined8 *)0x0 &&\n               (iVar4 = strcmp((char *)puVar5[1],__s2_01), iVar4 == 0))) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 0x10) goto LAB_00113008;\n          puVar5 = (undefined8 *)*puVar5;\n        }" while (parenthesized_expression "((puVar5 != (undefined8 *)0x0 &&\n               (iVar4 = strcmp((char *)puVar5[1],__s2_01), iVar4 == 0)))" ( (parenthesized_expression "(puVar5 != (undefined8 *)0x0 &&\n               (iVar4 = strcmp((char *)puVar5[1],__s2_01), iVar4 == 0))" ( (binary_expression "puVar5 != (undefined8 *)0x0 &&\n               (iVar4 = strcmp((char *)puVar5[1],__s2_01), iVar4 == 0)" (binary_expression "puVar5 != (undefined8 *)0x0" identifier != (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) && (parenthesized_expression "(iVar4 = strcmp((char *)puVar5[1],__s2_01), iVar4 == 0)" ( (comma_expression "iVar4 = strcmp((char *)puVar5[1],__s2_01), iVar4 == 0" (assignment_expression "iVar4 = strcmp((char *)puVar5[1],__s2_01)" identifier = (call_expression "strcmp((char *)puVar5[1],__s2_01)" identifier (argument_list "((char *)puVar5[1],__s2_01)" ( (cast_expression "(char *)puVar5[1]" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar5[1]" identifier [ number_literal ])) , identifier )))) , (binary_expression "iVar4 == 0" identifier == number_literal)) ))) )) )) (compound_statement "{\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 0x10) goto LAB_00113008;\n          puVar5 = (undefined8 *)*puVar5;\n        }" { (if_statement "if ((*(byte *)(puVar5 + 2) & 0x38) == 0x10) goto LAB_00113008;" if (parenthesized_expression "((*(byte *)(puVar5 + 2) & 0x38) == 0x10)" ( (binary_expression "(*(byte *)(puVar5 + 2) & 0x38) == 0x10" (parenthesized_expression "(*(byte *)(puVar5 + 2) & 0x38)" ( (binary_expression "*(byte *)(puVar5 + 2) & 0x38" (pointer_expression "*(byte *)(puVar5 + 2)" * (cast_expression "(byte *)(puVar5 + 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar5 + 2)" ( (binary_expression "puVar5 + 2" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (goto_statement "goto LAB_00113008;" goto statement_identifier ;)) (expression_statement "puVar5 = (undefined8 *)*puVar5;" (assignment_expression "puVar5 = (undefined8 *)*puVar5" identifier = (cast_expression "(undefined8 *)*puVar5" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar5" * identifier))) ;) })) (labeled_statement "LAB_00113180:\n        uVar3 = *(uint *)(param_1 + 0x18);" statement_identifier : (expression_statement "uVar3 = *(uint *)(param_1 + 0x18);" (assignment_expression "uVar3 = *(uint *)(param_1 + 0x18)" identifier = (pointer_expression "*(uint *)(param_1 + 0x18)" * (cast_expression "(uint *)(param_1 + 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x18)" ( (binary_expression "param_1 + 0x18" identifier + number_literal) ))))) ;)) })) (if_statement "if ((uVar3 & 4) != 0) {\n        local_50 = __s2_00;\n        puVar5 = (undefined8 *)htab_find(*(undefined8 *)(param_1 + 8),local_58);\n        while ((puVar5 != (undefined8 *)0x0 &&\n               (iVar4 = strcmp((char *)puVar5[1],__s2_00), iVar4 == 0))) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 0x20) goto LAB_00113008;\n          puVar5 = (undefined8 *)*puVar5;\n        }\n      }" if (parenthesized_expression "((uVar3 & 4) != 0)" ( (binary_expression "(uVar3 & 4) != 0" (parenthesized_expression "(uVar3 & 4)" ( (binary_expression "uVar3 & 4" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n        local_50 = __s2_00;\n        puVar5 = (undefined8 *)htab_find(*(undefined8 *)(param_1 + 8),local_58);\n        while ((puVar5 != (undefined8 *)0x0 &&\n               (iVar4 = strcmp((char *)puVar5[1],__s2_00), iVar4 == 0))) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 0x20) goto LAB_00113008;\n          puVar5 = (undefined8 *)*puVar5;\n        }\n      }" { (expression_statement "local_50 = __s2_00;" (assignment_expression "local_50 = __s2_00" identifier = identifier) ;) (expression_statement "puVar5 = (undefined8 *)htab_find(*(undefined8 *)(param_1 + 8),local_58);" (assignment_expression "puVar5 = (undefined8 *)htab_find(*(undefined8 *)(param_1 + 8),local_58)" identifier = (cast_expression "(undefined8 *)htab_find(*(undefined8 *)(param_1 + 8),local_58)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "htab_find(*(undefined8 *)(param_1 + 8),local_58)" identifier (argument_list "(*(undefined8 *)(param_1 + 8),local_58)" ( (pointer_expression "*(undefined8 *)(param_1 + 8)" * (cast_expression "(undefined8 *)(param_1 + 8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) , identifier ))))) ;) (while_statement "while ((puVar5 != (undefined8 *)0x0 &&\n               (iVar4 = strcmp((char *)puVar5[1],__s2_00), iVar4 == 0))) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 0x20) goto LAB_00113008;\n          puVar5 = (undefined8 *)*puVar5;\n        }" while (parenthesized_expression "((puVar5 != (undefined8 *)0x0 &&\n               (iVar4 = strcmp((char *)puVar5[1],__s2_00), iVar4 == 0)))" ( (parenthesized_expression "(puVar5 != (undefined8 *)0x0 &&\n               (iVar4 = strcmp((char *)puVar5[1],__s2_00), iVar4 == 0))" ( (binary_expression "puVar5 != (undefined8 *)0x0 &&\n               (iVar4 = strcmp((char *)puVar5[1],__s2_00), iVar4 == 0)" (binary_expression "puVar5 != (undefined8 *)0x0" identifier != (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) && (parenthesized_expression "(iVar4 = strcmp((char *)puVar5[1],__s2_00), iVar4 == 0)" ( (comma_expression "iVar4 = strcmp((char *)puVar5[1],__s2_00), iVar4 == 0" (assignment_expression "iVar4 = strcmp((char *)puVar5[1],__s2_00)" identifier = (call_expression "strcmp((char *)puVar5[1],__s2_00)" identifier (argument_list "((char *)puVar5[1],__s2_00)" ( (cast_expression "(char *)puVar5[1]" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar5[1]" identifier [ number_literal ])) , identifier )))) , (binary_expression "iVar4 == 0" identifier == number_literal)) ))) )) )) (compound_statement "{\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 0x20) goto LAB_00113008;\n          puVar5 = (undefined8 *)*puVar5;\n        }" { (if_statement "if ((*(byte *)(puVar5 + 2) & 0x38) == 0x20) goto LAB_00113008;" if (parenthesized_expression "((*(byte *)(puVar5 + 2) & 0x38) == 0x20)" ( (binary_expression "(*(byte *)(puVar5 + 2) & 0x38) == 0x20" (parenthesized_expression "(*(byte *)(puVar5 + 2) & 0x38)" ( (binary_expression "*(byte *)(puVar5 + 2) & 0x38" (pointer_expression "*(byte *)(puVar5 + 2)" * (cast_expression "(byte *)(puVar5 + 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar5 + 2)" ( (binary_expression "puVar5 + 2" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (goto_statement "goto LAB_00113008;" goto statement_identifier ;)) (expression_statement "puVar5 = (undefined8 *)*puVar5;" (assignment_expression "puVar5 = (undefined8 *)*puVar5" identifier = (cast_expression "(undefined8 *)*puVar5" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar5" * identifier))) ;) })) })) (goto_statement "goto LAB_00112fa6;" goto statement_identifier ;) })) (if_statement "if ((*(byte *)(param_2 + 2) & 1) != 0) {\n      bVar2 = *(byte *)(param_2 + 2) >> 3 & 7;\n      if (bVar2 == 1) goto LAB_001131e0;\n      if (bVar2 == 0) goto LAB_00113048;\n      if (bVar2 != 2) goto LAB_00112fa6;\n      goto LAB_00113180;\n    }" if (parenthesized_expression "((*(byte *)(param_2 + 2) & 1) != 0)" ( (binary_expression "(*(byte *)(param_2 + 2) & 1) != 0" (parenthesized_expression "(*(byte *)(param_2 + 2) & 1)" ( (binary_expression "*(byte *)(param_2 + 2) & 1" (pointer_expression "*(byte *)(param_2 + 2)" * (cast_expression "(byte *)(param_2 + 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 2)" ( (binary_expression "param_2 + 2" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n      bVar2 = *(byte *)(param_2 + 2) >> 3 & 7;\n      if (bVar2 == 1) goto LAB_001131e0;\n      if (bVar2 == 0) goto LAB_00113048;\n      if (bVar2 != 2) goto LAB_00112fa6;\n      goto LAB_00113180;\n    }" { (expression_statement "bVar2 = *(byte *)(param_2 + 2) >> 3 & 7;" (assignment_expression "bVar2 = *(byte *)(param_2 + 2) >> 3 & 7" identifier = (binary_expression "*(byte *)(param_2 + 2) >> 3 & 7" (binary_expression "*(byte *)(param_2 + 2) >> 3" (pointer_expression "*(byte *)(param_2 + 2)" * (cast_expression "(byte *)(param_2 + 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 2)" ( (binary_expression "param_2 + 2" identifier + number_literal) )))) >> number_literal) & number_literal)) ;) (if_statement "if (bVar2 == 1) goto LAB_001131e0;" if (parenthesized_expression "(bVar2 == 1)" ( (binary_expression "bVar2 == 1" identifier == number_literal) )) (goto_statement "goto LAB_001131e0;" goto statement_identifier ;)) (if_statement "if (bVar2 == 0) goto LAB_00113048;" if (parenthesized_expression "(bVar2 == 0)" ( (binary_expression "bVar2 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00113048;" goto statement_identifier ;)) (if_statement "if (bVar2 != 2) goto LAB_00112fa6;" if (parenthesized_expression "(bVar2 != 2)" ( (binary_expression "bVar2 != 2" identifier != number_literal) )) (goto_statement "goto LAB_00112fa6;" goto statement_identifier ;)) (goto_statement "goto LAB_00113180;" goto statement_identifier ;) })) }))) (expression_statement "puVar5 = (undefined8 *)*param_2;" (assignment_expression "puVar5 = (undefined8 *)*param_2" identifier = (cast_expression "(undefined8 *)*param_2" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_2" * identifier))) ;) (labeled_statement "joined_r0x001130cb:\n  for (; puVar5 != (undefined8 *)0x0; puVar5 = (undefined8 *)*puVar5) {\n    __pattern = (char *)puVar5[1];\n    if (__pattern != (char *)0x0) {\n      if ((*__pattern == '*') && (__pattern[1] == '\0')) goto LAB_00113008;\n      __name = __s2_00;\n      if (((*(byte *)(puVar5 + 2) & 0x38) != 0x20) &&\n         (__name = __s2, (*(byte *)(puVar5 + 2) & 0x38) == 0x10)) {\n        __name = __s2_01;\n      }\n      iVar4 = fnmatch(__pattern,__name,0);\n      if (iVar4 == 0) goto LAB_00113008;\n    }\n  }" statement_identifier : (for_statement "for (; puVar5 != (undefined8 *)0x0; puVar5 = (undefined8 *)*puVar5) {\n    __pattern = (char *)puVar5[1];\n    if (__pattern != (char *)0x0) {\n      if ((*__pattern == '*') && (__pattern[1] == '\0')) goto LAB_00113008;\n      __name = __s2_00;\n      if (((*(byte *)(puVar5 + 2) & 0x38) != 0x20) &&\n         (__name = __s2, (*(byte *)(puVar5 + 2) & 0x38) == 0x10)) {\n        __name = __s2_01;\n      }\n      iVar4 = fnmatch(__pattern,__name,0);\n      if (iVar4 == 0) goto LAB_00113008;\n    }\n  }" for ( ; (binary_expression "puVar5 != (undefined8 *)0x0" identifier != (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ; (assignment_expression "puVar5 = (undefined8 *)*puVar5" identifier = (cast_expression "(undefined8 *)*puVar5" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar5" * identifier))) ) (compound_statement "{\n    __pattern = (char *)puVar5[1];\n    if (__pattern != (char *)0x0) {\n      if ((*__pattern == '*') && (__pattern[1] == '\0')) goto LAB_00113008;\n      __name = __s2_00;\n      if (((*(byte *)(puVar5 + 2) & 0x38) != 0x20) &&\n         (__name = __s2, (*(byte *)(puVar5 + 2) & 0x38) == 0x10)) {\n        __name = __s2_01;\n      }\n      iVar4 = fnmatch(__pattern,__name,0);\n      if (iVar4 == 0) goto LAB_00113008;\n    }\n  }" { (expression_statement "__pattern = (char *)puVar5[1];" (assignment_expression "__pattern = (char *)puVar5[1]" identifier = (cast_expression "(char *)puVar5[1]" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar5[1]" identifier [ number_literal ]))) ;) (if_statement "if (__pattern != (char *)0x0) {\n      if ((*__pattern == '*') && (__pattern[1] == '\0')) goto LAB_00113008;\n      __name = __s2_00;\n      if (((*(byte *)(puVar5 + 2) & 0x38) != 0x20) &&\n         (__name = __s2, (*(byte *)(puVar5 + 2) & 0x38) == 0x10)) {\n        __name = __s2_01;\n      }\n      iVar4 = fnmatch(__pattern,__name,0);\n      if (iVar4 == 0) goto LAB_00113008;\n    }" if (parenthesized_expression "(__pattern != (char *)0x0)" ( (binary_expression "__pattern != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      if ((*__pattern == '*') && (__pattern[1] == '\0')) goto LAB_00113008;\n      __name = __s2_00;\n      if (((*(byte *)(puVar5 + 2) & 0x38) != 0x20) &&\n         (__name = __s2, (*(byte *)(puVar5 + 2) & 0x38) == 0x10)) {\n        __name = __s2_01;\n      }\n      iVar4 = fnmatch(__pattern,__name,0);\n      if (iVar4 == 0) goto LAB_00113008;\n    }" { (if_statement "if ((*__pattern == '*') && (__pattern[1] == '\0')) goto LAB_00113008;" if (parenthesized_expression "((*__pattern == '*') && (__pattern[1] == '\0'))" ( (binary_expression "(*__pattern == '*') && (__pattern[1] == '\0')" (parenthesized_expression "(*__pattern == '*')" ( (binary_expression "*__pattern == '*'" (pointer_expression "*__pattern" * identifier) == (char_literal "'*'" ' character ')) )) && (parenthesized_expression "(__pattern[1] == '\0')" ( (binary_expression "__pattern[1] == '\0'" (subscript_expression "__pattern[1]" identifier [ number_literal ]) == (char_literal "'\0'" ' escape_sequence ')) ))) )) (goto_statement "goto LAB_00113008;" goto statement_identifier ;)) (expression_statement "__name = __s2_00;" (assignment_expression "__name = __s2_00" identifier = identifier) ;) (if_statement "if (((*(byte *)(puVar5 + 2) & 0x38) != 0x20) &&\n         (__name = __s2, (*(byte *)(puVar5 + 2) & 0x38) == 0x10)) {\n        __name = __s2_01;\n      }" if (parenthesized_expression "(((*(byte *)(puVar5 + 2) & 0x38) != 0x20) &&\n         (__name = __s2, (*(byte *)(puVar5 + 2) & 0x38) == 0x10))" ( (binary_expression "((*(byte *)(puVar5 + 2) & 0x38) != 0x20) &&\n         (__name = __s2, (*(byte *)(puVar5 + 2) & 0x38) == 0x10)" (parenthesized_expression "((*(byte *)(puVar5 + 2) & 0x38) != 0x20)" ( (binary_expression "(*(byte *)(puVar5 + 2) & 0x38) != 0x20" (parenthesized_expression "(*(byte *)(puVar5 + 2) & 0x38)" ( (binary_expression "*(byte *)(puVar5 + 2) & 0x38" (pointer_expression "*(byte *)(puVar5 + 2)" * (cast_expression "(byte *)(puVar5 + 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar5 + 2)" ( (binary_expression "puVar5 + 2" identifier + number_literal) )))) & number_literal) )) != number_literal) )) && (parenthesized_expression "(__name = __s2, (*(byte *)(puVar5 + 2) & 0x38) == 0x10)" ( (comma_expression "__name = __s2, (*(byte *)(puVar5 + 2) & 0x38) == 0x10" (assignment_expression "__name = __s2" identifier = identifier) , (binary_expression "(*(byte *)(puVar5 + 2) & 0x38) == 0x10" (parenthesized_expression "(*(byte *)(puVar5 + 2) & 0x38)" ( (binary_expression "*(byte *)(puVar5 + 2) & 0x38" (pointer_expression "*(byte *)(puVar5 + 2)" * (cast_expression "(byte *)(puVar5 + 2)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar5 + 2)" ( (binary_expression "puVar5 + 2" identifier + number_literal) )))) & number_literal) )) == number_literal)) ))) )) (compound_statement "{\n        __name = __s2_01;\n      }" { (expression_statement "__name = __s2_01;" (assignment_expression "__name = __s2_01" identifier = identifier) ;) })) (expression_statement "iVar4 = fnmatch(__pattern,__name,0);" (assignment_expression "iVar4 = fnmatch(__pattern,__name,0)" identifier = (call_expression "fnmatch(__pattern,__name,0)" identifier (argument_list "(__pattern,__name,0)" ( identifier , identifier , number_literal )))) ;) (if_statement "if (iVar4 == 0) goto LAB_00113008;" if (parenthesized_expression "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00113008;" goto statement_identifier ;)) })) }))) (expression_statement "puVar5 = (undefined8 *)0x0;" (assignment_expression "puVar5 = (undefined8 *)0x0" identifier = (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (labeled_statement "LAB_00113008:\n  if (__s2 != param_3) {\n    free(__s2);\n  }" statement_identifier : (if_statement "if (__s2 != param_3) {\n    free(__s2);\n  }" if (parenthesized_expression "(__s2 != param_3)" ( (binary_expression "__s2 != param_3" identifier != identifier) )) (compound_statement "{\n    free(__s2);\n  }" { (expression_statement "free(__s2);" (call_expression "free(__s2)" identifier (argument_list "(__s2)" ( identifier ))) ;) }))) (if_statement "if (__s2_01 != param_3) {\n    free(__s2_01);\n  }" if (parenthesized_expression "(__s2_01 != param_3)" ( (binary_expression "__s2_01 != param_3" identifier != identifier) )) (compound_statement "{\n    free(__s2_01);\n  }" { (expression_statement "free(__s2_01);" (call_expression "free(__s2_01)" identifier (argument_list "(__s2_01)" ( identifier ))) ;) })) (if_statement "if (__s2_00 != param_3) {\n    free(__s2_00);\n  }" if (parenthesized_expression "(__s2_00 != param_3)" ( (binary_expression "__s2_00 != param_3" identifier != identifier) )) (compound_statement "{\n    free(__s2_00);\n  }" { (expression_statement "free(__s2_00);" (call_expression "free(__s2_00)" identifier (argument_list "(__s2_00)" ( identifier ))) ;) })) (return_statement "return puVar5;" return identifier ;) })))
(translation_unit (function_definition TYPE (pointer_declarator * (function_declarator IDENT (parameter_list ( (parameter_declaration (sized_type_specifier long) IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) )))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( LIT ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT , IDENT , LIT ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT , 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 == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT , IDENT , LIT ))))) , (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT))) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) (compound_statement { (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) || (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) != LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (goto_statement goto statement_identifier ;) }))) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;)) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , IDENT ))))) ;) (while_statement while (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) , IDENT )))) , (binary_expression IDENT == 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) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;)) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , IDENT ))))) ;) (while_statement while (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) , IDENT )))) , (binary_expression IDENT == 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) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;)) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , IDENT ))))) ;) (while_statement while (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) , IDENT )))) , (binary_expression IDENT == 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) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) })) })) (goto_statement goto statement_identifier ;) })) (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 (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) >> LIT) & LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (goto_statement goto statement_identifier ;) })) }))) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (labeled_statement statement_identifier : (for_statement for ( ; (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ; (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == (char_literal ' character ')) )) && (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == (char_literal ' escape_sequence ')) ))) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) != LIT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = IDENT) , (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 = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) })) }))) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) })) (return_statement return IDENT ;) })))
(function_definition "undefined8 * FUN_00112f00(long param_1,undefined8 *param_2,char *param_3)\n\n{\n  char *__pattern;\n  undefined4 uVar1;\n  byte bVar2;\n  uint uVar3;\n  int iVar4;\n  char *__s2;\n  undefined8 *puVar5;\n  char *__s2_00;\n  char *__s2_01;\n  char *__name;\n  undefined1 local_58 [8];\n  char *local_50;\n  \n  uVar1 = current_demangling_style;\n  cplus_demangle_set_style(0xffffffff);\n  __s2 = (char *)bfd_demangle(DAT_00171a10,param_3,0);\n  if (__s2 == (char *)0x0) {\n    __s2 = param_3;\n  }\n  cplus_demangle_set_style(uVar1);\n  uVar3 = *(uint *)(param_1 + 0x18);\n  __s2_01 = param_3;\n  if ((uVar3 & 2) != 0) {\n    __s2_01 = (char *)bfd_demangle(DAT_00171a10,param_3,3);\n    uVar3 = *(uint *)(param_1 + 0x18);\n    if (__s2_01 == (char *)0x0) {\n      __s2_01 = param_3;\n    }\n  }\n  if (((uVar3 & 4) == 0) ||\n     (__s2_00 = (char *)bfd_demangle(DAT_00171a10,param_3,4), __s2_00 == (char *)0x0)) {\n    __s2_00 = param_3;\n  }\n  if (*(long *)(param_1 + 8) == 0) {\nLAB_00112fa6:\n    if ((param_2 == (undefined8 *)0x0) || ((*(byte *)(param_2 + 2) & 1) != 0)) {\n      puVar5 = *(undefined8 **)(param_1 + 0x10);\n      goto joined_r0x001130cb;\n    }\n  }\n  else {\n    if (param_2 == (undefined8 *)0x0) {\nLAB_00113048:\n      uVar3 = *(uint *)(param_1 + 0x18);\n      if ((uVar3 & 1) != 0) {\n        local_50 = __s2;\n        puVar5 = (undefined8 *)htab_find(*(long *)(param_1 + 8),local_58);\n        while ((puVar5 != (undefined8 *)0x0 && (iVar4 = strcmp((char *)puVar5[1],__s2), iVar4 == 0))\n              ) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 8) goto LAB_00113008;\n          puVar5 = (undefined8 *)*puVar5;\n        }\nLAB_001131e0:\n        uVar3 = *(uint *)(param_1 + 0x18);\n      }\n      if ((uVar3 & 2) != 0) {\n        local_50 = __s2_01;\n        puVar5 = (undefined8 *)htab_find(*(undefined8 *)(param_1 + 8),local_58);\n        while ((puVar5 != (undefined8 *)0x0 &&\n               (iVar4 = strcmp((char *)puVar5[1],__s2_01), iVar4 == 0))) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 0x10) goto LAB_00113008;\n          puVar5 = (undefined8 *)*puVar5;\n        }\nLAB_00113180:\n        uVar3 = *(uint *)(param_1 + 0x18);\n      }\n      if ((uVar3 & 4) != 0) {\n        local_50 = __s2_00;\n        puVar5 = (undefined8 *)htab_find(*(undefined8 *)(param_1 + 8),local_58);\n        while ((puVar5 != (undefined8 *)0x0 &&\n               (iVar4 = strcmp((char *)puVar5[1],__s2_00), iVar4 == 0))) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 0x20) goto LAB_00113008;\n          puVar5 = (undefined8 *)*puVar5;\n        }\n      }\n      goto LAB_00112fa6;\n    }\n    if ((*(byte *)(param_2 + 2) & 1) != 0) {\n      bVar2 = *(byte *)(param_2 + 2) >> 3 & 7;\n      if (bVar2 == 1) goto LAB_001131e0;\n      if (bVar2 == 0) goto LAB_00113048;\n      if (bVar2 != 2) goto LAB_00112fa6;\n      goto LAB_00113180;\n    }\n  }\n  puVar5 = (undefined8 *)*param_2;\njoined_r0x001130cb:\n  for (; puVar5 != (undefined8 *)0x0; puVar5 = (undefined8 *)*puVar5) {\n    __pattern = (char *)puVar5[1];\n    if (__pattern != (char *)0x0) {\n      if ((*__pattern == '*') && (__pattern[1] == '\0')) goto LAB_00113008;\n      __name = __s2_00;\n      if (((*(byte *)(puVar5 + 2) & 0x38) != 0x20) &&\n         (__name = __s2, (*(byte *)(puVar5 + 2) & 0x38) == 0x10)) {\n        __name = __s2_01;\n      }\n      iVar4 = fnmatch(__pattern,__name,0);\n      if (iVar4 == 0) goto LAB_00113008;\n    }\n  }\n  puVar5 = (undefined8 *)0x0;\nLAB_00113008:\n  if (__s2 != param_3) {\n    free(__s2);\n  }\n  if (__s2_01 != param_3) {\n    free(__s2_01);\n  }\n  if (__s2_00 != param_3) {\n    free(__s2_00);\n  }\n  return puVar5;\n}" (type_identifier "undefined8") (pointer_declarator "* FUN_00112f00(long param_1,undefined8 *param_2,char *param_3)" (* "*") (function_declarator "FUN_00112f00(long param_1,undefined8 *param_2,char *param_3)" (identifier "FUN_00112f00") (parameter_list "(long param_1,undefined8 *param_2,char *param_3)" (( "(") (parameter_declaration "long param_1" (sized_type_specifier "long" (long "long")) (identifier "param_1")) (, ",") (parameter_declaration "undefined8 *param_2" (type_identifier "undefined8") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "char *param_3" (primitive_type "char") (pointer_declarator "*param_3" (* "*") (identifier "param_3"))) () ")")))) (compound_statement "{\n  char *__pattern;\n  undefined4 uVar1;\n  byte bVar2;\n  uint uVar3;\n  int iVar4;\n  char *__s2;\n  undefined8 *puVar5;\n  char *__s2_00;\n  char *__s2_01;\n  char *__name;\n  undefined1 local_58 [8];\n  char *local_50;\n  \n  uVar1 = current_demangling_style;\n  cplus_demangle_set_style(0xffffffff);\n  __s2 = (char *)bfd_demangle(DAT_00171a10,param_3,0);\n  if (__s2 == (char *)0x0) {\n    __s2 = param_3;\n  }\n  cplus_demangle_set_style(uVar1);\n  uVar3 = *(uint *)(param_1 + 0x18);\n  __s2_01 = param_3;\n  if ((uVar3 & 2) != 0) {\n    __s2_01 = (char *)bfd_demangle(DAT_00171a10,param_3,3);\n    uVar3 = *(uint *)(param_1 + 0x18);\n    if (__s2_01 == (char *)0x0) {\n      __s2_01 = param_3;\n    }\n  }\n  if (((uVar3 & 4) == 0) ||\n     (__s2_00 = (char *)bfd_demangle(DAT_00171a10,param_3,4), __s2_00 == (char *)0x0)) {\n    __s2_00 = param_3;\n  }\n  if (*(long *)(param_1 + 8) == 0) {\nLAB_00112fa6:\n    if ((param_2 == (undefined8 *)0x0) || ((*(byte *)(param_2 + 2) & 1) != 0)) {\n      puVar5 = *(undefined8 **)(param_1 + 0x10);\n      goto joined_r0x001130cb;\n    }\n  }\n  else {\n    if (param_2 == (undefined8 *)0x0) {\nLAB_00113048:\n      uVar3 = *(uint *)(param_1 + 0x18);\n      if ((uVar3 & 1) != 0) {\n        local_50 = __s2;\n        puVar5 = (undefined8 *)htab_find(*(long *)(param_1 + 8),local_58);\n        while ((puVar5 != (undefined8 *)0x0 && (iVar4 = strcmp((char *)puVar5[1],__s2), iVar4 == 0))\n              ) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 8) goto LAB_00113008;\n          puVar5 = (undefined8 *)*puVar5;\n        }\nLAB_001131e0:\n        uVar3 = *(uint *)(param_1 + 0x18);\n      }\n      if ((uVar3 & 2) != 0) {\n        local_50 = __s2_01;\n        puVar5 = (undefined8 *)htab_find(*(undefined8 *)(param_1 + 8),local_58);\n        while ((puVar5 != (undefined8 *)0x0 &&\n               (iVar4 = strcmp((char *)puVar5[1],__s2_01), iVar4 == 0))) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 0x10) goto LAB_00113008;\n          puVar5 = (undefined8 *)*puVar5;\n        }\nLAB_00113180:\n        uVar3 = *(uint *)(param_1 + 0x18);\n      }\n      if ((uVar3 & 4) != 0) {\n        local_50 = __s2_00;\n        puVar5 = (undefined8 *)htab_find(*(undefined8 *)(param_1 + 8),local_58);\n        while ((puVar5 != (undefined8 *)0x0 &&\n               (iVar4 = strcmp((char *)puVar5[1],__s2_00), iVar4 == 0))) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 0x20) goto LAB_00113008;\n          puVar5 = (undefined8 *)*puVar5;\n        }\n      }\n      goto LAB_00112fa6;\n    }\n    if ((*(byte *)(param_2 + 2) & 1) != 0) {\n      bVar2 = *(byte *)(param_2 + 2) >> 3 & 7;\n      if (bVar2 == 1) goto LAB_001131e0;\n      if (bVar2 == 0) goto LAB_00113048;\n      if (bVar2 != 2) goto LAB_00112fa6;\n      goto LAB_00113180;\n    }\n  }\n  puVar5 = (undefined8 *)*param_2;\njoined_r0x001130cb:\n  for (; puVar5 != (undefined8 *)0x0; puVar5 = (undefined8 *)*puVar5) {\n    __pattern = (char *)puVar5[1];\n    if (__pattern != (char *)0x0) {\n      if ((*__pattern == '*') && (__pattern[1] == '\0')) goto LAB_00113008;\n      __name = __s2_00;\n      if (((*(byte *)(puVar5 + 2) & 0x38) != 0x20) &&\n         (__name = __s2, (*(byte *)(puVar5 + 2) & 0x38) == 0x10)) {\n        __name = __s2_01;\n      }\n      iVar4 = fnmatch(__pattern,__name,0);\n      if (iVar4 == 0) goto LAB_00113008;\n    }\n  }\n  puVar5 = (undefined8 *)0x0;\nLAB_00113008:\n  if (__s2 != param_3) {\n    free(__s2);\n  }\n  if (__s2_01 != param_3) {\n    free(__s2_01);\n  }\n  if (__s2_00 != param_3) {\n    free(__s2_00);\n  }\n  return puVar5;\n}" ({ "{") (declaration "char *__pattern;" (primitive_type "char") (pointer_declarator "*__pattern" (* "*") (identifier "__pattern")) (; ";")) (declaration "undefined4 uVar1;" (type_identifier "undefined4") (identifier "uVar1") (; ";")) (declaration "byte bVar2;" (type_identifier "byte") (identifier "bVar2") (; ";")) (declaration "uint uVar3;" (type_identifier "uint") (identifier "uVar3") (; ";")) (declaration "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (declaration "char *__s2;" (primitive_type "char") (pointer_declarator "*__s2" (* "*") (identifier "__s2")) (; ";")) (declaration "undefined8 *puVar5;" (type_identifier "undefined8") (pointer_declarator "*puVar5" (* "*") (identifier "puVar5")) (; ";")) (declaration "char *__s2_00;" (primitive_type "char") (pointer_declarator "*__s2_00" (* "*") (identifier "__s2_00")) (; ";")) (declaration "char *__s2_01;" (primitive_type "char") (pointer_declarator "*__s2_01" (* "*") (identifier "__s2_01")) (; ";")) (declaration "char *__name;" (primitive_type "char") (pointer_declarator "*__name" (* "*") (identifier "__name")) (; ";")) (declaration "undefined1 local_58 [8];" (type_identifier "undefined1") (array_declarator "local_58 [8]" (identifier "local_58") ([ "[") (number_literal "8") (] "]")) (; ";")) (declaration "char *local_50;" (primitive_type "char") (pointer_declarator "*local_50" (* "*") (identifier "local_50")) (; ";")) (expression_statement "uVar1 = current_demangling_style;" (assignment_expression "uVar1 = current_demangling_style" (identifier "uVar1") (= "=") (identifier "current_demangling_style")) (; ";")) (expression_statement "cplus_demangle_set_style(0xffffffff);" (call_expression "cplus_demangle_set_style(0xffffffff)" (identifier "cplus_demangle_set_style") (argument_list "(0xffffffff)" (( "(") (number_literal "0xffffffff") () ")"))) (; ";")) (expression_statement "__s2 = (char *)bfd_demangle(DAT_00171a10,param_3,0);" (assignment_expression "__s2 = (char *)bfd_demangle(DAT_00171a10,param_3,0)" (identifier "__s2") (= "=") (cast_expression "(char *)bfd_demangle(DAT_00171a10,param_3,0)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "bfd_demangle(DAT_00171a10,param_3,0)" (identifier "bfd_demangle") (argument_list "(DAT_00171a10,param_3,0)" (( "(") (identifier "DAT_00171a10") (, ",") (identifier "param_3") (, ",") (number_literal "0") () ")"))))) (; ";")) (if_statement "if (__s2 == (char *)0x0) {\n    __s2 = param_3;\n  }" (if "if") (parenthesized_expression "(__s2 == (char *)0x0)" (( "(") (binary_expression "__s2 == (char *)0x0" (identifier "__s2") (== "==") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    __s2 = param_3;\n  }" ({ "{") (expression_statement "__s2 = param_3;" (assignment_expression "__s2 = param_3" (identifier "__s2") (= "=") (identifier "param_3")) (; ";")) (} "}"))) (expression_statement "cplus_demangle_set_style(uVar1);" (call_expression "cplus_demangle_set_style(uVar1)" (identifier "cplus_demangle_set_style") (argument_list "(uVar1)" (( "(") (identifier "uVar1") () ")"))) (; ";")) (expression_statement "uVar3 = *(uint *)(param_1 + 0x18);" (assignment_expression "uVar3 = *(uint *)(param_1 + 0x18)" (identifier "uVar3") (= "=") (pointer_expression "*(uint *)(param_1 + 0x18)" (* "*") (cast_expression "(uint *)(param_1 + 0x18)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x18)" (( "(") (binary_expression "param_1 + 0x18" (identifier "param_1") (+ "+") (number_literal "0x18")) () ")"))))) (; ";")) (expression_statement "__s2_01 = param_3;" (assignment_expression "__s2_01 = param_3" (identifier "__s2_01") (= "=") (identifier "param_3")) (; ";")) (if_statement "if ((uVar3 & 2) != 0) {\n    __s2_01 = (char *)bfd_demangle(DAT_00171a10,param_3,3);\n    uVar3 = *(uint *)(param_1 + 0x18);\n    if (__s2_01 == (char *)0x0) {\n      __s2_01 = param_3;\n    }\n  }" (if "if") (parenthesized_expression "((uVar3 & 2) != 0)" (( "(") (binary_expression "(uVar3 & 2) != 0" (parenthesized_expression "(uVar3 & 2)" (( "(") (binary_expression "uVar3 & 2" (identifier "uVar3") (& "&") (number_literal "2")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    __s2_01 = (char *)bfd_demangle(DAT_00171a10,param_3,3);\n    uVar3 = *(uint *)(param_1 + 0x18);\n    if (__s2_01 == (char *)0x0) {\n      __s2_01 = param_3;\n    }\n  }" ({ "{") (expression_statement "__s2_01 = (char *)bfd_demangle(DAT_00171a10,param_3,3);" (assignment_expression "__s2_01 = (char *)bfd_demangle(DAT_00171a10,param_3,3)" (identifier "__s2_01") (= "=") (cast_expression "(char *)bfd_demangle(DAT_00171a10,param_3,3)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "bfd_demangle(DAT_00171a10,param_3,3)" (identifier "bfd_demangle") (argument_list "(DAT_00171a10,param_3,3)" (( "(") (identifier "DAT_00171a10") (, ",") (identifier "param_3") (, ",") (number_literal "3") () ")"))))) (; ";")) (expression_statement "uVar3 = *(uint *)(param_1 + 0x18);" (assignment_expression "uVar3 = *(uint *)(param_1 + 0x18)" (identifier "uVar3") (= "=") (pointer_expression "*(uint *)(param_1 + 0x18)" (* "*") (cast_expression "(uint *)(param_1 + 0x18)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x18)" (( "(") (binary_expression "param_1 + 0x18" (identifier "param_1") (+ "+") (number_literal "0x18")) () ")"))))) (; ";")) (if_statement "if (__s2_01 == (char *)0x0) {\n      __s2_01 = param_3;\n    }" (if "if") (parenthesized_expression "(__s2_01 == (char *)0x0)" (( "(") (binary_expression "__s2_01 == (char *)0x0" (identifier "__s2_01") (== "==") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      __s2_01 = param_3;\n    }" ({ "{") (expression_statement "__s2_01 = param_3;" (assignment_expression "__s2_01 = param_3" (identifier "__s2_01") (= "=") (identifier "param_3")) (; ";")) (} "}"))) (} "}"))) (if_statement "if (((uVar3 & 4) == 0) ||\n     (__s2_00 = (char *)bfd_demangle(DAT_00171a10,param_3,4), __s2_00 == (char *)0x0)) {\n    __s2_00 = param_3;\n  }" (if "if") (parenthesized_expression "(((uVar3 & 4) == 0) ||\n     (__s2_00 = (char *)bfd_demangle(DAT_00171a10,param_3,4), __s2_00 == (char *)0x0))" (( "(") (binary_expression "((uVar3 & 4) == 0) ||\n     (__s2_00 = (char *)bfd_demangle(DAT_00171a10,param_3,4), __s2_00 == (char *)0x0)" (parenthesized_expression "((uVar3 & 4) == 0)" (( "(") (binary_expression "(uVar3 & 4) == 0" (parenthesized_expression "(uVar3 & 4)" (( "(") (binary_expression "uVar3 & 4" (identifier "uVar3") (& "&") (number_literal "4")) () ")")) (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(__s2_00 = (char *)bfd_demangle(DAT_00171a10,param_3,4), __s2_00 == (char *)0x0)" (( "(") (comma_expression "__s2_00 = (char *)bfd_demangle(DAT_00171a10,param_3,4), __s2_00 == (char *)0x0" (assignment_expression "__s2_00 = (char *)bfd_demangle(DAT_00171a10,param_3,4)" (identifier "__s2_00") (= "=") (cast_expression "(char *)bfd_demangle(DAT_00171a10,param_3,4)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "bfd_demangle(DAT_00171a10,param_3,4)" (identifier "bfd_demangle") (argument_list "(DAT_00171a10,param_3,4)" (( "(") (identifier "DAT_00171a10") (, ",") (identifier "param_3") (, ",") (number_literal "4") () ")"))))) (, ",") (binary_expression "__s2_00 == (char *)0x0" (identifier "__s2_00") (== "==") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")))) () ")"))) () ")")) (compound_statement "{\n    __s2_00 = param_3;\n  }" ({ "{") (expression_statement "__s2_00 = param_3;" (assignment_expression "__s2_00 = param_3" (identifier "__s2_00") (= "=") (identifier "param_3")) (; ";")) (} "}"))) (if_statement "if (*(long *)(param_1 + 8) == 0) {\nLAB_00112fa6:\n    if ((param_2 == (undefined8 *)0x0) || ((*(byte *)(param_2 + 2) & 1) != 0)) {\n      puVar5 = *(undefined8 **)(param_1 + 0x10);\n      goto joined_r0x001130cb;\n    }\n  }\n  else {\n    if (param_2 == (undefined8 *)0x0) {\nLAB_00113048:\n      uVar3 = *(uint *)(param_1 + 0x18);\n      if ((uVar3 & 1) != 0) {\n        local_50 = __s2;\n        puVar5 = (undefined8 *)htab_find(*(long *)(param_1 + 8),local_58);\n        while ((puVar5 != (undefined8 *)0x0 && (iVar4 = strcmp((char *)puVar5[1],__s2), iVar4 == 0))\n              ) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 8) goto LAB_00113008;\n          puVar5 = (undefined8 *)*puVar5;\n        }\nLAB_001131e0:\n        uVar3 = *(uint *)(param_1 + 0x18);\n      }\n      if ((uVar3 & 2) != 0) {\n        local_50 = __s2_01;\n        puVar5 = (undefined8 *)htab_find(*(undefined8 *)(param_1 + 8),local_58);\n        while ((puVar5 != (undefined8 *)0x0 &&\n               (iVar4 = strcmp((char *)puVar5[1],__s2_01), iVar4 == 0))) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 0x10) goto LAB_00113008;\n          puVar5 = (undefined8 *)*puVar5;\n        }\nLAB_00113180:\n        uVar3 = *(uint *)(param_1 + 0x18);\n      }\n      if ((uVar3 & 4) != 0) {\n        local_50 = __s2_00;\n        puVar5 = (undefined8 *)htab_find(*(undefined8 *)(param_1 + 8),local_58);\n        while ((puVar5 != (undefined8 *)0x0 &&\n               (iVar4 = strcmp((char *)puVar5[1],__s2_00), iVar4 == 0))) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 0x20) goto LAB_00113008;\n          puVar5 = (undefined8 *)*puVar5;\n        }\n      }\n      goto LAB_00112fa6;\n    }\n    if ((*(byte *)(param_2 + 2) & 1) != 0) {\n      bVar2 = *(byte *)(param_2 + 2) >> 3 & 7;\n      if (bVar2 == 1) goto LAB_001131e0;\n      if (bVar2 == 0) goto LAB_00113048;\n      if (bVar2 != 2) goto LAB_00112fa6;\n      goto LAB_00113180;\n    }\n  }" (if "if") (parenthesized_expression "(*(long *)(param_1 + 8) == 0)" (( "(") (binary_expression "*(long *)(param_1 + 8) == 0" (pointer_expression "*(long *)(param_1 + 8)" (* "*") (cast_expression "(long *)(param_1 + 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\nLAB_00112fa6:\n    if ((param_2 == (undefined8 *)0x0) || ((*(byte *)(param_2 + 2) & 1) != 0)) {\n      puVar5 = *(undefined8 **)(param_1 + 0x10);\n      goto joined_r0x001130cb;\n    }\n  }" ({ "{") (labeled_statement "LAB_00112fa6:\n    if ((param_2 == (undefined8 *)0x0) || ((*(byte *)(param_2 + 2) & 1) != 0)) {\n      puVar5 = *(undefined8 **)(param_1 + 0x10);\n      goto joined_r0x001130cb;\n    }" (statement_identifier "LAB_00112fa6") (: ":") (if_statement "if ((param_2 == (undefined8 *)0x0) || ((*(byte *)(param_2 + 2) & 1) != 0)) {\n      puVar5 = *(undefined8 **)(param_1 + 0x10);\n      goto joined_r0x001130cb;\n    }" (if "if") (parenthesized_expression "((param_2 == (undefined8 *)0x0) || ((*(byte *)(param_2 + 2) & 1) != 0))" (( "(") (binary_expression "(param_2 == (undefined8 *)0x0) || ((*(byte *)(param_2 + 2) & 1) != 0)" (parenthesized_expression "(param_2 == (undefined8 *)0x0)" (( "(") (binary_expression "param_2 == (undefined8 *)0x0" (identifier "param_2") (== "==") (cast_expression "(undefined8 *)0x0" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (|| "||") (parenthesized_expression "((*(byte *)(param_2 + 2) & 1) != 0)" (( "(") (binary_expression "(*(byte *)(param_2 + 2) & 1) != 0" (parenthesized_expression "(*(byte *)(param_2 + 2) & 1)" (( "(") (binary_expression "*(byte *)(param_2 + 2) & 1" (pointer_expression "*(byte *)(param_2 + 2)" (* "*") (cast_expression "(byte *)(param_2 + 2)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 2)" (( "(") (binary_expression "param_2 + 2" (identifier "param_2") (+ "+") (number_literal "2")) () ")")))) (& "&") (number_literal "1")) () ")")) (!= "!=") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n      puVar5 = *(undefined8 **)(param_1 + 0x10);\n      goto joined_r0x001130cb;\n    }" ({ "{") (expression_statement "puVar5 = *(undefined8 **)(param_1 + 0x10);" (assignment_expression "puVar5 = *(undefined8 **)(param_1 + 0x10)" (identifier "puVar5") (= "=") (pointer_expression "*(undefined8 **)(param_1 + 0x10)" (* "*") (cast_expression "(undefined8 **)(param_1 + 0x10)" (( "(") (type_descriptor "undefined8 **" (type_identifier "undefined8") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x10)" (( "(") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (goto_statement "goto joined_r0x001130cb;" (goto "goto") (statement_identifier "joined_r0x001130cb") (; ";")) (} "}")))) (} "}")) (else_clause "else {\n    if (param_2 == (undefined8 *)0x0) {\nLAB_00113048:\n      uVar3 = *(uint *)(param_1 + 0x18);\n      if ((uVar3 & 1) != 0) {\n        local_50 = __s2;\n        puVar5 = (undefined8 *)htab_find(*(long *)(param_1 + 8),local_58);\n        while ((puVar5 != (undefined8 *)0x0 && (iVar4 = strcmp((char *)puVar5[1],__s2), iVar4 == 0))\n              ) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 8) goto LAB_00113008;\n          puVar5 = (undefined8 *)*puVar5;\n        }\nLAB_001131e0:\n        uVar3 = *(uint *)(param_1 + 0x18);\n      }\n      if ((uVar3 & 2) != 0) {\n        local_50 = __s2_01;\n        puVar5 = (undefined8 *)htab_find(*(undefined8 *)(param_1 + 8),local_58);\n        while ((puVar5 != (undefined8 *)0x0 &&\n               (iVar4 = strcmp((char *)puVar5[1],__s2_01), iVar4 == 0))) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 0x10) goto LAB_00113008;\n          puVar5 = (undefined8 *)*puVar5;\n        }\nLAB_00113180:\n        uVar3 = *(uint *)(param_1 + 0x18);\n      }\n      if ((uVar3 & 4) != 0) {\n        local_50 = __s2_00;\n        puVar5 = (undefined8 *)htab_find(*(undefined8 *)(param_1 + 8),local_58);\n        while ((puVar5 != (undefined8 *)0x0 &&\n               (iVar4 = strcmp((char *)puVar5[1],__s2_00), iVar4 == 0))) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 0x20) goto LAB_00113008;\n          puVar5 = (undefined8 *)*puVar5;\n        }\n      }\n      goto LAB_00112fa6;\n    }\n    if ((*(byte *)(param_2 + 2) & 1) != 0) {\n      bVar2 = *(byte *)(param_2 + 2) >> 3 & 7;\n      if (bVar2 == 1) goto LAB_001131e0;\n      if (bVar2 == 0) goto LAB_00113048;\n      if (bVar2 != 2) goto LAB_00112fa6;\n      goto LAB_00113180;\n    }\n  }" (else "else") (compound_statement "{\n    if (param_2 == (undefined8 *)0x0) {\nLAB_00113048:\n      uVar3 = *(uint *)(param_1 + 0x18);\n      if ((uVar3 & 1) != 0) {\n        local_50 = __s2;\n        puVar5 = (undefined8 *)htab_find(*(long *)(param_1 + 8),local_58);\n        while ((puVar5 != (undefined8 *)0x0 && (iVar4 = strcmp((char *)puVar5[1],__s2), iVar4 == 0))\n              ) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 8) goto LAB_00113008;\n          puVar5 = (undefined8 *)*puVar5;\n        }\nLAB_001131e0:\n        uVar3 = *(uint *)(param_1 + 0x18);\n      }\n      if ((uVar3 & 2) != 0) {\n        local_50 = __s2_01;\n        puVar5 = (undefined8 *)htab_find(*(undefined8 *)(param_1 + 8),local_58);\n        while ((puVar5 != (undefined8 *)0x0 &&\n               (iVar4 = strcmp((char *)puVar5[1],__s2_01), iVar4 == 0))) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 0x10) goto LAB_00113008;\n          puVar5 = (undefined8 *)*puVar5;\n        }\nLAB_00113180:\n        uVar3 = *(uint *)(param_1 + 0x18);\n      }\n      if ((uVar3 & 4) != 0) {\n        local_50 = __s2_00;\n        puVar5 = (undefined8 *)htab_find(*(undefined8 *)(param_1 + 8),local_58);\n        while ((puVar5 != (undefined8 *)0x0 &&\n               (iVar4 = strcmp((char *)puVar5[1],__s2_00), iVar4 == 0))) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 0x20) goto LAB_00113008;\n          puVar5 = (undefined8 *)*puVar5;\n        }\n      }\n      goto LAB_00112fa6;\n    }\n    if ((*(byte *)(param_2 + 2) & 1) != 0) {\n      bVar2 = *(byte *)(param_2 + 2) >> 3 & 7;\n      if (bVar2 == 1) goto LAB_001131e0;\n      if (bVar2 == 0) goto LAB_00113048;\n      if (bVar2 != 2) goto LAB_00112fa6;\n      goto LAB_00113180;\n    }\n  }" ({ "{") (if_statement "if (param_2 == (undefined8 *)0x0) {\nLAB_00113048:\n      uVar3 = *(uint *)(param_1 + 0x18);\n      if ((uVar3 & 1) != 0) {\n        local_50 = __s2;\n        puVar5 = (undefined8 *)htab_find(*(long *)(param_1 + 8),local_58);\n        while ((puVar5 != (undefined8 *)0x0 && (iVar4 = strcmp((char *)puVar5[1],__s2), iVar4 == 0))\n              ) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 8) goto LAB_00113008;\n          puVar5 = (undefined8 *)*puVar5;\n        }\nLAB_001131e0:\n        uVar3 = *(uint *)(param_1 + 0x18);\n      }\n      if ((uVar3 & 2) != 0) {\n        local_50 = __s2_01;\n        puVar5 = (undefined8 *)htab_find(*(undefined8 *)(param_1 + 8),local_58);\n        while ((puVar5 != (undefined8 *)0x0 &&\n               (iVar4 = strcmp((char *)puVar5[1],__s2_01), iVar4 == 0))) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 0x10) goto LAB_00113008;\n          puVar5 = (undefined8 *)*puVar5;\n        }\nLAB_00113180:\n        uVar3 = *(uint *)(param_1 + 0x18);\n      }\n      if ((uVar3 & 4) != 0) {\n        local_50 = __s2_00;\n        puVar5 = (undefined8 *)htab_find(*(undefined8 *)(param_1 + 8),local_58);\n        while ((puVar5 != (undefined8 *)0x0 &&\n               (iVar4 = strcmp((char *)puVar5[1],__s2_00), iVar4 == 0))) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 0x20) goto LAB_00113008;\n          puVar5 = (undefined8 *)*puVar5;\n        }\n      }\n      goto LAB_00112fa6;\n    }" (if "if") (parenthesized_expression "(param_2 == (undefined8 *)0x0)" (( "(") (binary_expression "param_2 == (undefined8 *)0x0" (identifier "param_2") (== "==") (cast_expression "(undefined8 *)0x0" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\nLAB_00113048:\n      uVar3 = *(uint *)(param_1 + 0x18);\n      if ((uVar3 & 1) != 0) {\n        local_50 = __s2;\n        puVar5 = (undefined8 *)htab_find(*(long *)(param_1 + 8),local_58);\n        while ((puVar5 != (undefined8 *)0x0 && (iVar4 = strcmp((char *)puVar5[1],__s2), iVar4 == 0))\n              ) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 8) goto LAB_00113008;\n          puVar5 = (undefined8 *)*puVar5;\n        }\nLAB_001131e0:\n        uVar3 = *(uint *)(param_1 + 0x18);\n      }\n      if ((uVar3 & 2) != 0) {\n        local_50 = __s2_01;\n        puVar5 = (undefined8 *)htab_find(*(undefined8 *)(param_1 + 8),local_58);\n        while ((puVar5 != (undefined8 *)0x0 &&\n               (iVar4 = strcmp((char *)puVar5[1],__s2_01), iVar4 == 0))) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 0x10) goto LAB_00113008;\n          puVar5 = (undefined8 *)*puVar5;\n        }\nLAB_00113180:\n        uVar3 = *(uint *)(param_1 + 0x18);\n      }\n      if ((uVar3 & 4) != 0) {\n        local_50 = __s2_00;\n        puVar5 = (undefined8 *)htab_find(*(undefined8 *)(param_1 + 8),local_58);\n        while ((puVar5 != (undefined8 *)0x0 &&\n               (iVar4 = strcmp((char *)puVar5[1],__s2_00), iVar4 == 0))) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 0x20) goto LAB_00113008;\n          puVar5 = (undefined8 *)*puVar5;\n        }\n      }\n      goto LAB_00112fa6;\n    }" ({ "{") (labeled_statement "LAB_00113048:\n      uVar3 = *(uint *)(param_1 + 0x18);" (statement_identifier "LAB_00113048") (: ":") (expression_statement "uVar3 = *(uint *)(param_1 + 0x18);" (assignment_expression "uVar3 = *(uint *)(param_1 + 0x18)" (identifier "uVar3") (= "=") (pointer_expression "*(uint *)(param_1 + 0x18)" (* "*") (cast_expression "(uint *)(param_1 + 0x18)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x18)" (( "(") (binary_expression "param_1 + 0x18" (identifier "param_1") (+ "+") (number_literal "0x18")) () ")"))))) (; ";"))) (if_statement "if ((uVar3 & 1) != 0) {\n        local_50 = __s2;\n        puVar5 = (undefined8 *)htab_find(*(long *)(param_1 + 8),local_58);\n        while ((puVar5 != (undefined8 *)0x0 && (iVar4 = strcmp((char *)puVar5[1],__s2), iVar4 == 0))\n              ) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 8) goto LAB_00113008;\n          puVar5 = (undefined8 *)*puVar5;\n        }\nLAB_001131e0:\n        uVar3 = *(uint *)(param_1 + 0x18);\n      }" (if "if") (parenthesized_expression "((uVar3 & 1) != 0)" (( "(") (binary_expression "(uVar3 & 1) != 0" (parenthesized_expression "(uVar3 & 1)" (( "(") (binary_expression "uVar3 & 1" (identifier "uVar3") (& "&") (number_literal "1")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        local_50 = __s2;\n        puVar5 = (undefined8 *)htab_find(*(long *)(param_1 + 8),local_58);\n        while ((puVar5 != (undefined8 *)0x0 && (iVar4 = strcmp((char *)puVar5[1],__s2), iVar4 == 0))\n              ) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 8) goto LAB_00113008;\n          puVar5 = (undefined8 *)*puVar5;\n        }\nLAB_001131e0:\n        uVar3 = *(uint *)(param_1 + 0x18);\n      }" ({ "{") (expression_statement "local_50 = __s2;" (assignment_expression "local_50 = __s2" (identifier "local_50") (= "=") (identifier "__s2")) (; ";")) (expression_statement "puVar5 = (undefined8 *)htab_find(*(long *)(param_1 + 8),local_58);" (assignment_expression "puVar5 = (undefined8 *)htab_find(*(long *)(param_1 + 8),local_58)" (identifier "puVar5") (= "=") (cast_expression "(undefined8 *)htab_find(*(long *)(param_1 + 8),local_58)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "htab_find(*(long *)(param_1 + 8),local_58)" (identifier "htab_find") (argument_list "(*(long *)(param_1 + 8),local_58)" (( "(") (pointer_expression "*(long *)(param_1 + 8)" (* "*") (cast_expression "(long *)(param_1 + 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")")))) (, ",") (identifier "local_58") () ")"))))) (; ";")) (while_statement "while ((puVar5 != (undefined8 *)0x0 && (iVar4 = strcmp((char *)puVar5[1],__s2), iVar4 == 0))\n              ) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 8) goto LAB_00113008;\n          puVar5 = (undefined8 *)*puVar5;\n        }" (while "while") (parenthesized_expression "((puVar5 != (undefined8 *)0x0 && (iVar4 = strcmp((char *)puVar5[1],__s2), iVar4 == 0))\n              )" (( "(") (parenthesized_expression "(puVar5 != (undefined8 *)0x0 && (iVar4 = strcmp((char *)puVar5[1],__s2), iVar4 == 0))" (( "(") (binary_expression "puVar5 != (undefined8 *)0x0 && (iVar4 = strcmp((char *)puVar5[1],__s2), iVar4 == 0)" (binary_expression "puVar5 != (undefined8 *)0x0" (identifier "puVar5") (!= "!=") (cast_expression "(undefined8 *)0x0" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (&& "&&") (parenthesized_expression "(iVar4 = strcmp((char *)puVar5[1],__s2), iVar4 == 0)" (( "(") (comma_expression "iVar4 = strcmp((char *)puVar5[1],__s2), iVar4 == 0" (assignment_expression "iVar4 = strcmp((char *)puVar5[1],__s2)" (identifier "iVar4") (= "=") (call_expression "strcmp((char *)puVar5[1],__s2)" (identifier "strcmp") (argument_list "((char *)puVar5[1],__s2)" (( "(") (cast_expression "(char *)puVar5[1]" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar5[1]" (identifier "puVar5") ([ "[") (number_literal "1") (] "]"))) (, ",") (identifier "__s2") () ")")))) (, ",") (binary_expression "iVar4 == 0" (identifier "iVar4") (== "==") (number_literal "0"))) () ")"))) () ")")) () ")")) (compound_statement "{\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 8) goto LAB_00113008;\n          puVar5 = (undefined8 *)*puVar5;\n        }" ({ "{") (if_statement "if ((*(byte *)(puVar5 + 2) & 0x38) == 8) goto LAB_00113008;" (if "if") (parenthesized_expression "((*(byte *)(puVar5 + 2) & 0x38) == 8)" (( "(") (binary_expression "(*(byte *)(puVar5 + 2) & 0x38) == 8" (parenthesized_expression "(*(byte *)(puVar5 + 2) & 0x38)" (( "(") (binary_expression "*(byte *)(puVar5 + 2) & 0x38" (pointer_expression "*(byte *)(puVar5 + 2)" (* "*") (cast_expression "(byte *)(puVar5 + 2)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar5 + 2)" (( "(") (binary_expression "puVar5 + 2" (identifier "puVar5") (+ "+") (number_literal "2")) () ")")))) (& "&") (number_literal "0x38")) () ")")) (== "==") (number_literal "8")) () ")")) (goto_statement "goto LAB_00113008;" (goto "goto") (statement_identifier "LAB_00113008") (; ";"))) (expression_statement "puVar5 = (undefined8 *)*puVar5;" (assignment_expression "puVar5 = (undefined8 *)*puVar5" (identifier "puVar5") (= "=") (cast_expression "(undefined8 *)*puVar5" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar5" (* "*") (identifier "puVar5")))) (; ";")) (} "}"))) (labeled_statement "LAB_001131e0:\n        uVar3 = *(uint *)(param_1 + 0x18);" (statement_identifier "LAB_001131e0") (: ":") (expression_statement "uVar3 = *(uint *)(param_1 + 0x18);" (assignment_expression "uVar3 = *(uint *)(param_1 + 0x18)" (identifier "uVar3") (= "=") (pointer_expression "*(uint *)(param_1 + 0x18)" (* "*") (cast_expression "(uint *)(param_1 + 0x18)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x18)" (( "(") (binary_expression "param_1 + 0x18" (identifier "param_1") (+ "+") (number_literal "0x18")) () ")"))))) (; ";"))) (} "}"))) (if_statement "if ((uVar3 & 2) != 0) {\n        local_50 = __s2_01;\n        puVar5 = (undefined8 *)htab_find(*(undefined8 *)(param_1 + 8),local_58);\n        while ((puVar5 != (undefined8 *)0x0 &&\n               (iVar4 = strcmp((char *)puVar5[1],__s2_01), iVar4 == 0))) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 0x10) goto LAB_00113008;\n          puVar5 = (undefined8 *)*puVar5;\n        }\nLAB_00113180:\n        uVar3 = *(uint *)(param_1 + 0x18);\n      }" (if "if") (parenthesized_expression "((uVar3 & 2) != 0)" (( "(") (binary_expression "(uVar3 & 2) != 0" (parenthesized_expression "(uVar3 & 2)" (( "(") (binary_expression "uVar3 & 2" (identifier "uVar3") (& "&") (number_literal "2")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        local_50 = __s2_01;\n        puVar5 = (undefined8 *)htab_find(*(undefined8 *)(param_1 + 8),local_58);\n        while ((puVar5 != (undefined8 *)0x0 &&\n               (iVar4 = strcmp((char *)puVar5[1],__s2_01), iVar4 == 0))) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 0x10) goto LAB_00113008;\n          puVar5 = (undefined8 *)*puVar5;\n        }\nLAB_00113180:\n        uVar3 = *(uint *)(param_1 + 0x18);\n      }" ({ "{") (expression_statement "local_50 = __s2_01;" (assignment_expression "local_50 = __s2_01" (identifier "local_50") (= "=") (identifier "__s2_01")) (; ";")) (expression_statement "puVar5 = (undefined8 *)htab_find(*(undefined8 *)(param_1 + 8),local_58);" (assignment_expression "puVar5 = (undefined8 *)htab_find(*(undefined8 *)(param_1 + 8),local_58)" (identifier "puVar5") (= "=") (cast_expression "(undefined8 *)htab_find(*(undefined8 *)(param_1 + 8),local_58)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "htab_find(*(undefined8 *)(param_1 + 8),local_58)" (identifier "htab_find") (argument_list "(*(undefined8 *)(param_1 + 8),local_58)" (( "(") (pointer_expression "*(undefined8 *)(param_1 + 8)" (* "*") (cast_expression "(undefined8 *)(param_1 + 8)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")")))) (, ",") (identifier "local_58") () ")"))))) (; ";")) (while_statement "while ((puVar5 != (undefined8 *)0x0 &&\n               (iVar4 = strcmp((char *)puVar5[1],__s2_01), iVar4 == 0))) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 0x10) goto LAB_00113008;\n          puVar5 = (undefined8 *)*puVar5;\n        }" (while "while") (parenthesized_expression "((puVar5 != (undefined8 *)0x0 &&\n               (iVar4 = strcmp((char *)puVar5[1],__s2_01), iVar4 == 0)))" (( "(") (parenthesized_expression "(puVar5 != (undefined8 *)0x0 &&\n               (iVar4 = strcmp((char *)puVar5[1],__s2_01), iVar4 == 0))" (( "(") (binary_expression "puVar5 != (undefined8 *)0x0 &&\n               (iVar4 = strcmp((char *)puVar5[1],__s2_01), iVar4 == 0)" (binary_expression "puVar5 != (undefined8 *)0x0" (identifier "puVar5") (!= "!=") (cast_expression "(undefined8 *)0x0" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (&& "&&") (parenthesized_expression "(iVar4 = strcmp((char *)puVar5[1],__s2_01), iVar4 == 0)" (( "(") (comma_expression "iVar4 = strcmp((char *)puVar5[1],__s2_01), iVar4 == 0" (assignment_expression "iVar4 = strcmp((char *)puVar5[1],__s2_01)" (identifier "iVar4") (= "=") (call_expression "strcmp((char *)puVar5[1],__s2_01)" (identifier "strcmp") (argument_list "((char *)puVar5[1],__s2_01)" (( "(") (cast_expression "(char *)puVar5[1]" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar5[1]" (identifier "puVar5") ([ "[") (number_literal "1") (] "]"))) (, ",") (identifier "__s2_01") () ")")))) (, ",") (binary_expression "iVar4 == 0" (identifier "iVar4") (== "==") (number_literal "0"))) () ")"))) () ")")) () ")")) (compound_statement "{\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 0x10) goto LAB_00113008;\n          puVar5 = (undefined8 *)*puVar5;\n        }" ({ "{") (if_statement "if ((*(byte *)(puVar5 + 2) & 0x38) == 0x10) goto LAB_00113008;" (if "if") (parenthesized_expression "((*(byte *)(puVar5 + 2) & 0x38) == 0x10)" (( "(") (binary_expression "(*(byte *)(puVar5 + 2) & 0x38) == 0x10" (parenthesized_expression "(*(byte *)(puVar5 + 2) & 0x38)" (( "(") (binary_expression "*(byte *)(puVar5 + 2) & 0x38" (pointer_expression "*(byte *)(puVar5 + 2)" (* "*") (cast_expression "(byte *)(puVar5 + 2)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar5 + 2)" (( "(") (binary_expression "puVar5 + 2" (identifier "puVar5") (+ "+") (number_literal "2")) () ")")))) (& "&") (number_literal "0x38")) () ")")) (== "==") (number_literal "0x10")) () ")")) (goto_statement "goto LAB_00113008;" (goto "goto") (statement_identifier "LAB_00113008") (; ";"))) (expression_statement "puVar5 = (undefined8 *)*puVar5;" (assignment_expression "puVar5 = (undefined8 *)*puVar5" (identifier "puVar5") (= "=") (cast_expression "(undefined8 *)*puVar5" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar5" (* "*") (identifier "puVar5")))) (; ";")) (} "}"))) (labeled_statement "LAB_00113180:\n        uVar3 = *(uint *)(param_1 + 0x18);" (statement_identifier "LAB_00113180") (: ":") (expression_statement "uVar3 = *(uint *)(param_1 + 0x18);" (assignment_expression "uVar3 = *(uint *)(param_1 + 0x18)" (identifier "uVar3") (= "=") (pointer_expression "*(uint *)(param_1 + 0x18)" (* "*") (cast_expression "(uint *)(param_1 + 0x18)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x18)" (( "(") (binary_expression "param_1 + 0x18" (identifier "param_1") (+ "+") (number_literal "0x18")) () ")"))))) (; ";"))) (} "}"))) (if_statement "if ((uVar3 & 4) != 0) {\n        local_50 = __s2_00;\n        puVar5 = (undefined8 *)htab_find(*(undefined8 *)(param_1 + 8),local_58);\n        while ((puVar5 != (undefined8 *)0x0 &&\n               (iVar4 = strcmp((char *)puVar5[1],__s2_00), iVar4 == 0))) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 0x20) goto LAB_00113008;\n          puVar5 = (undefined8 *)*puVar5;\n        }\n      }" (if "if") (parenthesized_expression "((uVar3 & 4) != 0)" (( "(") (binary_expression "(uVar3 & 4) != 0" (parenthesized_expression "(uVar3 & 4)" (( "(") (binary_expression "uVar3 & 4" (identifier "uVar3") (& "&") (number_literal "4")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        local_50 = __s2_00;\n        puVar5 = (undefined8 *)htab_find(*(undefined8 *)(param_1 + 8),local_58);\n        while ((puVar5 != (undefined8 *)0x0 &&\n               (iVar4 = strcmp((char *)puVar5[1],__s2_00), iVar4 == 0))) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 0x20) goto LAB_00113008;\n          puVar5 = (undefined8 *)*puVar5;\n        }\n      }" ({ "{") (expression_statement "local_50 = __s2_00;" (assignment_expression "local_50 = __s2_00" (identifier "local_50") (= "=") (identifier "__s2_00")) (; ";")) (expression_statement "puVar5 = (undefined8 *)htab_find(*(undefined8 *)(param_1 + 8),local_58);" (assignment_expression "puVar5 = (undefined8 *)htab_find(*(undefined8 *)(param_1 + 8),local_58)" (identifier "puVar5") (= "=") (cast_expression "(undefined8 *)htab_find(*(undefined8 *)(param_1 + 8),local_58)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "htab_find(*(undefined8 *)(param_1 + 8),local_58)" (identifier "htab_find") (argument_list "(*(undefined8 *)(param_1 + 8),local_58)" (( "(") (pointer_expression "*(undefined8 *)(param_1 + 8)" (* "*") (cast_expression "(undefined8 *)(param_1 + 8)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")")))) (, ",") (identifier "local_58") () ")"))))) (; ";")) (while_statement "while ((puVar5 != (undefined8 *)0x0 &&\n               (iVar4 = strcmp((char *)puVar5[1],__s2_00), iVar4 == 0))) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 0x20) goto LAB_00113008;\n          puVar5 = (undefined8 *)*puVar5;\n        }" (while "while") (parenthesized_expression "((puVar5 != (undefined8 *)0x0 &&\n               (iVar4 = strcmp((char *)puVar5[1],__s2_00), iVar4 == 0)))" (( "(") (parenthesized_expression "(puVar5 != (undefined8 *)0x0 &&\n               (iVar4 = strcmp((char *)puVar5[1],__s2_00), iVar4 == 0))" (( "(") (binary_expression "puVar5 != (undefined8 *)0x0 &&\n               (iVar4 = strcmp((char *)puVar5[1],__s2_00), iVar4 == 0)" (binary_expression "puVar5 != (undefined8 *)0x0" (identifier "puVar5") (!= "!=") (cast_expression "(undefined8 *)0x0" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (&& "&&") (parenthesized_expression "(iVar4 = strcmp((char *)puVar5[1],__s2_00), iVar4 == 0)" (( "(") (comma_expression "iVar4 = strcmp((char *)puVar5[1],__s2_00), iVar4 == 0" (assignment_expression "iVar4 = strcmp((char *)puVar5[1],__s2_00)" (identifier "iVar4") (= "=") (call_expression "strcmp((char *)puVar5[1],__s2_00)" (identifier "strcmp") (argument_list "((char *)puVar5[1],__s2_00)" (( "(") (cast_expression "(char *)puVar5[1]" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar5[1]" (identifier "puVar5") ([ "[") (number_literal "1") (] "]"))) (, ",") (identifier "__s2_00") () ")")))) (, ",") (binary_expression "iVar4 == 0" (identifier "iVar4") (== "==") (number_literal "0"))) () ")"))) () ")")) () ")")) (compound_statement "{\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 0x20) goto LAB_00113008;\n          puVar5 = (undefined8 *)*puVar5;\n        }" ({ "{") (if_statement "if ((*(byte *)(puVar5 + 2) & 0x38) == 0x20) goto LAB_00113008;" (if "if") (parenthesized_expression "((*(byte *)(puVar5 + 2) & 0x38) == 0x20)" (( "(") (binary_expression "(*(byte *)(puVar5 + 2) & 0x38) == 0x20" (parenthesized_expression "(*(byte *)(puVar5 + 2) & 0x38)" (( "(") (binary_expression "*(byte *)(puVar5 + 2) & 0x38" (pointer_expression "*(byte *)(puVar5 + 2)" (* "*") (cast_expression "(byte *)(puVar5 + 2)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar5 + 2)" (( "(") (binary_expression "puVar5 + 2" (identifier "puVar5") (+ "+") (number_literal "2")) () ")")))) (& "&") (number_literal "0x38")) () ")")) (== "==") (number_literal "0x20")) () ")")) (goto_statement "goto LAB_00113008;" (goto "goto") (statement_identifier "LAB_00113008") (; ";"))) (expression_statement "puVar5 = (undefined8 *)*puVar5;" (assignment_expression "puVar5 = (undefined8 *)*puVar5" (identifier "puVar5") (= "=") (cast_expression "(undefined8 *)*puVar5" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar5" (* "*") (identifier "puVar5")))) (; ";")) (} "}"))) (} "}"))) (goto_statement "goto LAB_00112fa6;" (goto "goto") (statement_identifier "LAB_00112fa6") (; ";")) (} "}"))) (if_statement "if ((*(byte *)(param_2 + 2) & 1) != 0) {\n      bVar2 = *(byte *)(param_2 + 2) >> 3 & 7;\n      if (bVar2 == 1) goto LAB_001131e0;\n      if (bVar2 == 0) goto LAB_00113048;\n      if (bVar2 != 2) goto LAB_00112fa6;\n      goto LAB_00113180;\n    }" (if "if") (parenthesized_expression "((*(byte *)(param_2 + 2) & 1) != 0)" (( "(") (binary_expression "(*(byte *)(param_2 + 2) & 1) != 0" (parenthesized_expression "(*(byte *)(param_2 + 2) & 1)" (( "(") (binary_expression "*(byte *)(param_2 + 2) & 1" (pointer_expression "*(byte *)(param_2 + 2)" (* "*") (cast_expression "(byte *)(param_2 + 2)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 2)" (( "(") (binary_expression "param_2 + 2" (identifier "param_2") (+ "+") (number_literal "2")) () ")")))) (& "&") (number_literal "1")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      bVar2 = *(byte *)(param_2 + 2) >> 3 & 7;\n      if (bVar2 == 1) goto LAB_001131e0;\n      if (bVar2 == 0) goto LAB_00113048;\n      if (bVar2 != 2) goto LAB_00112fa6;\n      goto LAB_00113180;\n    }" ({ "{") (expression_statement "bVar2 = *(byte *)(param_2 + 2) >> 3 & 7;" (assignment_expression "bVar2 = *(byte *)(param_2 + 2) >> 3 & 7" (identifier "bVar2") (= "=") (binary_expression "*(byte *)(param_2 + 2) >> 3 & 7" (binary_expression "*(byte *)(param_2 + 2) >> 3" (pointer_expression "*(byte *)(param_2 + 2)" (* "*") (cast_expression "(byte *)(param_2 + 2)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 2)" (( "(") (binary_expression "param_2 + 2" (identifier "param_2") (+ "+") (number_literal "2")) () ")")))) (>> ">>") (number_literal "3")) (& "&") (number_literal "7"))) (; ";")) (if_statement "if (bVar2 == 1) goto LAB_001131e0;" (if "if") (parenthesized_expression "(bVar2 == 1)" (( "(") (binary_expression "bVar2 == 1" (identifier "bVar2") (== "==") (number_literal "1")) () ")")) (goto_statement "goto LAB_001131e0;" (goto "goto") (statement_identifier "LAB_001131e0") (; ";"))) (if_statement "if (bVar2 == 0) goto LAB_00113048;" (if "if") (parenthesized_expression "(bVar2 == 0)" (( "(") (binary_expression "bVar2 == 0" (identifier "bVar2") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_00113048;" (goto "goto") (statement_identifier "LAB_00113048") (; ";"))) (if_statement "if (bVar2 != 2) goto LAB_00112fa6;" (if "if") (parenthesized_expression "(bVar2 != 2)" (( "(") (binary_expression "bVar2 != 2" (identifier "bVar2") (!= "!=") (number_literal "2")) () ")")) (goto_statement "goto LAB_00112fa6;" (goto "goto") (statement_identifier "LAB_00112fa6") (; ";"))) (goto_statement "goto LAB_00113180;" (goto "goto") (statement_identifier "LAB_00113180") (; ";")) (} "}"))) (} "}")))) (expression_statement "puVar5 = (undefined8 *)*param_2;" (assignment_expression "puVar5 = (undefined8 *)*param_2" (identifier "puVar5") (= "=") (cast_expression "(undefined8 *)*param_2" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_2" (* "*") (identifier "param_2")))) (; ";")) (labeled_statement "joined_r0x001130cb:\n  for (; puVar5 != (undefined8 *)0x0; puVar5 = (undefined8 *)*puVar5) {\n    __pattern = (char *)puVar5[1];\n    if (__pattern != (char *)0x0) {\n      if ((*__pattern == '*') && (__pattern[1] == '\0')) goto LAB_00113008;\n      __name = __s2_00;\n      if (((*(byte *)(puVar5 + 2) & 0x38) != 0x20) &&\n         (__name = __s2, (*(byte *)(puVar5 + 2) & 0x38) == 0x10)) {\n        __name = __s2_01;\n      }\n      iVar4 = fnmatch(__pattern,__name,0);\n      if (iVar4 == 0) goto LAB_00113008;\n    }\n  }" (statement_identifier "joined_r0x001130cb") (: ":") (for_statement "for (; puVar5 != (undefined8 *)0x0; puVar5 = (undefined8 *)*puVar5) {\n    __pattern = (char *)puVar5[1];\n    if (__pattern != (char *)0x0) {\n      if ((*__pattern == '*') && (__pattern[1] == '\0')) goto LAB_00113008;\n      __name = __s2_00;\n      if (((*(byte *)(puVar5 + 2) & 0x38) != 0x20) &&\n         (__name = __s2, (*(byte *)(puVar5 + 2) & 0x38) == 0x10)) {\n        __name = __s2_01;\n      }\n      iVar4 = fnmatch(__pattern,__name,0);\n      if (iVar4 == 0) goto LAB_00113008;\n    }\n  }" (for "for") (( "(") (; ";") (binary_expression "puVar5 != (undefined8 *)0x0" (identifier "puVar5") (!= "!=") (cast_expression "(undefined8 *)0x0" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";") (assignment_expression "puVar5 = (undefined8 *)*puVar5" (identifier "puVar5") (= "=") (cast_expression "(undefined8 *)*puVar5" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar5" (* "*") (identifier "puVar5")))) () ")") (compound_statement "{\n    __pattern = (char *)puVar5[1];\n    if (__pattern != (char *)0x0) {\n      if ((*__pattern == '*') && (__pattern[1] == '\0')) goto LAB_00113008;\n      __name = __s2_00;\n      if (((*(byte *)(puVar5 + 2) & 0x38) != 0x20) &&\n         (__name = __s2, (*(byte *)(puVar5 + 2) & 0x38) == 0x10)) {\n        __name = __s2_01;\n      }\n      iVar4 = fnmatch(__pattern,__name,0);\n      if (iVar4 == 0) goto LAB_00113008;\n    }\n  }" ({ "{") (expression_statement "__pattern = (char *)puVar5[1];" (assignment_expression "__pattern = (char *)puVar5[1]" (identifier "__pattern") (= "=") (cast_expression "(char *)puVar5[1]" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar5[1]" (identifier "puVar5") ([ "[") (number_literal "1") (] "]")))) (; ";")) (if_statement "if (__pattern != (char *)0x0) {\n      if ((*__pattern == '*') && (__pattern[1] == '\0')) goto LAB_00113008;\n      __name = __s2_00;\n      if (((*(byte *)(puVar5 + 2) & 0x38) != 0x20) &&\n         (__name = __s2, (*(byte *)(puVar5 + 2) & 0x38) == 0x10)) {\n        __name = __s2_01;\n      }\n      iVar4 = fnmatch(__pattern,__name,0);\n      if (iVar4 == 0) goto LAB_00113008;\n    }" (if "if") (parenthesized_expression "(__pattern != (char *)0x0)" (( "(") (binary_expression "__pattern != (char *)0x0" (identifier "__pattern") (!= "!=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      if ((*__pattern == '*') && (__pattern[1] == '\0')) goto LAB_00113008;\n      __name = __s2_00;\n      if (((*(byte *)(puVar5 + 2) & 0x38) != 0x20) &&\n         (__name = __s2, (*(byte *)(puVar5 + 2) & 0x38) == 0x10)) {\n        __name = __s2_01;\n      }\n      iVar4 = fnmatch(__pattern,__name,0);\n      if (iVar4 == 0) goto LAB_00113008;\n    }" ({ "{") (if_statement "if ((*__pattern == '*') && (__pattern[1] == '\0')) goto LAB_00113008;" (if "if") (parenthesized_expression "((*__pattern == '*') && (__pattern[1] == '\0'))" (( "(") (binary_expression "(*__pattern == '*') && (__pattern[1] == '\0')" (parenthesized_expression "(*__pattern == '*')" (( "(") (binary_expression "*__pattern == '*'" (pointer_expression "*__pattern" (* "*") (identifier "__pattern")) (== "==") (char_literal "'*'" (' "'") (character "*") (' "'"))) () ")")) (&& "&&") (parenthesized_expression "(__pattern[1] == '\0')" (( "(") (binary_expression "__pattern[1] == '\0'" (subscript_expression "__pattern[1]" (identifier "__pattern") ([ "[") (number_literal "1") (] "]")) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")"))) () ")")) (goto_statement "goto LAB_00113008;" (goto "goto") (statement_identifier "LAB_00113008") (; ";"))) (expression_statement "__name = __s2_00;" (assignment_expression "__name = __s2_00" (identifier "__name") (= "=") (identifier "__s2_00")) (; ";")) (if_statement "if (((*(byte *)(puVar5 + 2) & 0x38) != 0x20) &&\n         (__name = __s2, (*(byte *)(puVar5 + 2) & 0x38) == 0x10)) {\n        __name = __s2_01;\n      }" (if "if") (parenthesized_expression "(((*(byte *)(puVar5 + 2) & 0x38) != 0x20) &&\n         (__name = __s2, (*(byte *)(puVar5 + 2) & 0x38) == 0x10))" (( "(") (binary_expression "((*(byte *)(puVar5 + 2) & 0x38) != 0x20) &&\n         (__name = __s2, (*(byte *)(puVar5 + 2) & 0x38) == 0x10)" (parenthesized_expression "((*(byte *)(puVar5 + 2) & 0x38) != 0x20)" (( "(") (binary_expression "(*(byte *)(puVar5 + 2) & 0x38) != 0x20" (parenthesized_expression "(*(byte *)(puVar5 + 2) & 0x38)" (( "(") (binary_expression "*(byte *)(puVar5 + 2) & 0x38" (pointer_expression "*(byte *)(puVar5 + 2)" (* "*") (cast_expression "(byte *)(puVar5 + 2)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar5 + 2)" (( "(") (binary_expression "puVar5 + 2" (identifier "puVar5") (+ "+") (number_literal "2")) () ")")))) (& "&") (number_literal "0x38")) () ")")) (!= "!=") (number_literal "0x20")) () ")")) (&& "&&") (parenthesized_expression "(__name = __s2, (*(byte *)(puVar5 + 2) & 0x38) == 0x10)" (( "(") (comma_expression "__name = __s2, (*(byte *)(puVar5 + 2) & 0x38) == 0x10" (assignment_expression "__name = __s2" (identifier "__name") (= "=") (identifier "__s2")) (, ",") (binary_expression "(*(byte *)(puVar5 + 2) & 0x38) == 0x10" (parenthesized_expression "(*(byte *)(puVar5 + 2) & 0x38)" (( "(") (binary_expression "*(byte *)(puVar5 + 2) & 0x38" (pointer_expression "*(byte *)(puVar5 + 2)" (* "*") (cast_expression "(byte *)(puVar5 + 2)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar5 + 2)" (( "(") (binary_expression "puVar5 + 2" (identifier "puVar5") (+ "+") (number_literal "2")) () ")")))) (& "&") (number_literal "0x38")) () ")")) (== "==") (number_literal "0x10"))) () ")"))) () ")")) (compound_statement "{\n        __name = __s2_01;\n      }" ({ "{") (expression_statement "__name = __s2_01;" (assignment_expression "__name = __s2_01" (identifier "__name") (= "=") (identifier "__s2_01")) (; ";")) (} "}"))) (expression_statement "iVar4 = fnmatch(__pattern,__name,0);" (assignment_expression "iVar4 = fnmatch(__pattern,__name,0)" (identifier "iVar4") (= "=") (call_expression "fnmatch(__pattern,__name,0)" (identifier "fnmatch") (argument_list "(__pattern,__name,0)" (( "(") (identifier "__pattern") (, ",") (identifier "__name") (, ",") (number_literal "0") () ")")))) (; ";")) (if_statement "if (iVar4 == 0) goto LAB_00113008;" (if "if") (parenthesized_expression "(iVar4 == 0)" (( "(") (binary_expression "iVar4 == 0" (identifier "iVar4") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_00113008;" (goto "goto") (statement_identifier "LAB_00113008") (; ";"))) (} "}"))) (} "}")))) (expression_statement "puVar5 = (undefined8 *)0x0;" (assignment_expression "puVar5 = (undefined8 *)0x0" (identifier "puVar5") (= "=") (cast_expression "(undefined8 *)0x0" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (labeled_statement "LAB_00113008:\n  if (__s2 != param_3) {\n    free(__s2);\n  }" (statement_identifier "LAB_00113008") (: ":") (if_statement "if (__s2 != param_3) {\n    free(__s2);\n  }" (if "if") (parenthesized_expression "(__s2 != param_3)" (( "(") (binary_expression "__s2 != param_3" (identifier "__s2") (!= "!=") (identifier "param_3")) () ")")) (compound_statement "{\n    free(__s2);\n  }" ({ "{") (expression_statement "free(__s2);" (call_expression "free(__s2)" (identifier "free") (argument_list "(__s2)" (( "(") (identifier "__s2") () ")"))) (; ";")) (} "}")))) (if_statement "if (__s2_01 != param_3) {\n    free(__s2_01);\n  }" (if "if") (parenthesized_expression "(__s2_01 != param_3)" (( "(") (binary_expression "__s2_01 != param_3" (identifier "__s2_01") (!= "!=") (identifier "param_3")) () ")")) (compound_statement "{\n    free(__s2_01);\n  }" ({ "{") (expression_statement "free(__s2_01);" (call_expression "free(__s2_01)" (identifier "free") (argument_list "(__s2_01)" (( "(") (identifier "__s2_01") () ")"))) (; ";")) (} "}"))) (if_statement "if (__s2_00 != param_3) {\n    free(__s2_00);\n  }" (if "if") (parenthesized_expression "(__s2_00 != param_3)" (( "(") (binary_expression "__s2_00 != param_3" (identifier "__s2_00") (!= "!=") (identifier "param_3")) () ")")) (compound_statement "{\n    free(__s2_00);\n  }" ({ "{") (expression_statement "free(__s2_00);" (call_expression "free(__s2_00)" (identifier "free") (argument_list "(__s2_00)" (( "(") (identifier "__s2_00") () ")"))) (; ";")) (} "}"))) (return_statement "return puVar5;" (return "return") (identifier "puVar5") (; ";")) (} "}")))

type_1 *
function_1(type_2 *head,type_1 *var_7,char *var_15)

{
  char *var_13;
  type_3 uVar1;
  type_4 var_12;
  type_5 var_4;
  int var_11;
  char *var_3;
  type_1 *var_9;
  char *var_6;
  char *var_5;
  char *__name;
  type_1 e;
  
  uVar1 = current_demangling_style;
  var_1(0xffffffff);
  var_3 = (char *)var_2(link_info.output_bfd,var_15,0);
  if (var_3 == (char *)0x0) {
    var_3 = var_15;
  }
  var_1(uVar1);
  var_4 = head->mask;
  var_5 = var_15;
  if ((var_4 & 2) != 0) {
    var_5 = (char *)var_2(link_info.output_bfd,var_15,3);
    var_4 = head->mask;
    if (var_5 == (char *)0x0) {
      var_5 = var_15;
    }
  }
  if (((var_4 & 4) == 0) ||
     (var_6 = (char *)var_2(link_info.output_bfd,var_15,4), var_6 == (char *)0x0)) {
    var_6 = var_15;
  }
  if (head->htab == (void *)0x0) {
LAB_00112fa6:
    if ((var_7 == (type_1 *)0x0) || ((var_7->field_0x10 & 1) != 0)) {
      var_9 = head->remaining;
      goto joined_r0x001130cb;
    }
  }
  else {
    if (var_7 == (type_1 *)0x0) {
LAB_00113048:
      var_4 = head->mask;
      if ((var_4 & 1) != 0) {
        e.pattern = var_3;
        var_9 = (type_1 *)var_8(head->htab,&e);
        while ((var_9 != (type_1 *)0x0 &&
               (var_11 = var_10(var_9->pattern,var_3), var_11 == 0))) {
          if ((var_9->field_0x10 & 0x38) == 8) goto LAB_00113008;
          var_9 = var_9->next;
        }
LAB_001131e0:
        var_4 = head->mask;
      }
      if ((var_4 & 2) != 0) {
        e.pattern = var_5;
        var_9 = (type_1 *)var_8(head->htab,&e);
        while ((var_9 != (type_1 *)0x0 &&
               (var_11 = var_10(var_9->pattern,var_5), var_11 == 0))) {
          if ((var_9->field_0x10 & 0x38) == 0x10) goto LAB_00113008;
          var_9 = var_9->next;
        }
LAB_00113180:
        var_4 = head->mask;
      }
      if ((var_4 & 4) != 0) {
        e.pattern = var_6;
        var_9 = (type_1 *)var_8(head->htab,&e);
        while ((var_9 != (type_1 *)0x0 &&
               (var_11 = var_10(var_9->pattern,var_6), var_11 == 0))) {
          if ((var_9->field_0x10 & 0x38) == 0x20) goto LAB_00113008;
          var_9 = var_9->next;
        }
      }
      goto LAB_00112fa6;
    }
    if ((var_7->field_0x10 & 1) != 0) {
      var_12 = (type_4)var_7->field_0x10 >> 3 & 7;
      if (var_12 == 1) goto LAB_001131e0;
      if (var_12 == 0) goto LAB_00113048;
      if (var_12 != 2) goto LAB_00112fa6;
      goto LAB_00113180;
    }
  }
  var_9 = var_7->next;
joined_r0x001130cb:
  for (; var_9 != (type_1 *)0x0; var_9 = var_9->next) {
    var_13 = var_9->pattern;
    if (var_13 != (char *)0x0) {
      if ((*var_13 == '*') && (var_13[1] == '\0')) goto LAB_00113008;
      var_12 = var_9->field_0x10 & 0x38;
      __name = var_6;
      if ((var_12 != 0x20) && (__name = var_3, var_12 == 0x10)) {
        __name = var_5;
      }
      var_11 = var_14(var_13,__name,0);
      if (var_11 == 0) goto LAB_00113008;
    }
  }
  var_9 = (type_1 *)0x0;
LAB_00113008:
  if (var_3 != var_15) {
    var_16(var_3);
  }
  if (var_5 != var_15) {
    var_16(var_5);
  }
  if (var_6 != var_15) {
    var_16(var_6);
  }
  return var_9;
}


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

undefined8 * MASKED(long param_1,undefined8 *param_2,char *param_3)

{
  char *__pattern;
  undefined4 uVar1;
  byte bVar2;
  uint uVar3;
  int iVar4;
  char *__s2;
  undefined8 *puVar5;
  char *__s2_00;
  char *__s2_01;
  char *__name;
  undefined1 local_58 [8];
  char *local_50;
  
  uVar1 = current_demangling_style;
  cplus_demangle_set_style(0xffffffff);
  __s2 = (char *)bfd_demangle(DAT_00171a10,param_3,0);
  if (__s2 == (char *)0x0) {
    __s2 = param_3;
  }
  cplus_demangle_set_style(uVar1);
  uVar3 = *(uint *)(param_1 + 0x18);
  __s2_01 = param_3;
  if ((uVar3 & 2) != 0) {
    __s2_01 = (char *)bfd_demangle(DAT_00171a10,param_3,3);
    uVar3 = *(uint *)(param_1 + 0x18);
    if (__s2_01 == (char *)0x0) {
      __s2_01 = param_3;
    }
  }
  if (((uVar3 & 4) == 0) ||
     (__s2_00 = (char *)bfd_demangle(DAT_00171a10,param_3,4), __s2_00 == (char *)0x0)) {
    __s2_00 = param_3;
  }
  if (*(long *)(param_1 + 8) == 0) {
LAB_00112fa6:
    if ((param_2 == (undefined8 *)0x0) || ((*(byte *)(param_2 + 2) & 1) != 0)) {
      puVar5 = *(undefined8 **)(param_1 + 0x10);
      goto joined_r0x001130cb;
    }
  }
  else {
    if (param_2 == (undefined8 *)0x0) {
LAB_00113048:
      uVar3 = *(uint *)(param_1 + 0x18);
      if ((uVar3 & 1) != 0) {
        local_50 = __s2;
        puVar5 = (undefined8 *)htab_find(*(long *)(param_1 + 8),local_58);
        while ((puVar5 != (undefined8 *)0x0 && (iVar4 = strcmp((char *)puVar5[1],__s2), iVar4 == 0))
              ) {
          if ((*(byte *)(puVar5 + 2) & 0x38) == 8) goto LAB_00113008;
          puVar5 = (undefined8 *)*puVar5;
        }
LAB_001131e0:
        uVar3 = *(uint *)(param_1 + 0x18);
      }
      if ((uVar3 & 2) != 0) {
        local_50 = __s2_01;
        puVar5 = (undefined8 *)htab_find(*(undefined8 *)(param_1 + 8),local_58);
        while ((puVar5 != (undefined8 *)0x0 &&
               (iVar4 = strcmp((char *)puVar5[1],__s2_01), iVar4 == 0))) {
          if ((*(byte *)(puVar5 + 2) & 0x38) == 0x10) goto LAB_00113008;
          puVar5 = (undefined8 *)*puVar5;
        }
LAB_00113180:
        uVar3 = *(uint *)(param_1 + 0x18);
      }
      if ((uVar3 & 4) != 0) {
        local_50 = __s2_00;
        puVar5 = (undefined8 *)htab_find(*(undefined8 *)(param_1 + 8),local_58);
        while ((puVar5 != (undefined8 *)0x0 &&
               (iVar4 = strcmp((char *)puVar5[1],__s2_00), iVar4 == 0))) {
          if ((*(byte *)(puVar5 + 2) & 0x38) == 0x20) goto LAB_00113008;
          puVar5 = (undefined8 *)*puVar5;
        }
      }
      goto LAB_00112fa6;
    }
    if ((*(byte *)(param_2 + 2) & 1) != 0) {
      bVar2 = *(byte *)(param_2 + 2) >> 3 & 7;
      if (bVar2 == 1) goto LAB_001131e0;
      if (bVar2 == 0) goto LAB_00113048;
      if (bVar2 != 2) goto LAB_00112fa6;
      goto LAB_00113180;
    }
  }
  puVar5 = (undefined8 *)*param_2;
joined_r0x001130cb:
  for (; puVar5 != (undefined8 *)0x0; puVar5 = (undefined8 *)*puVar5) {
    __pattern = (char *)puVar5[1];
    if (__pattern != (char *)0x0) {
      if ((*__pattern == '*') && (__pattern[1] == '\0')) goto LAB_00113008;
      __name = __s2_00;
      if (((*(byte *)(puVar5 + 2) & 0x38) != 0x20) &&
         (__name = __s2, (*(byte *)(puVar5 + 2) & 0x38) == 0x10)) {
        __name = __s2_01;
      }
      iVar4 = fnmatch(__pattern,__name,0);
      if (iVar4 == 0) goto LAB_00113008;
    }
  }
  puVar5 = (undefined8 *)0x0;
LAB_00113008:
  if (__s2 != param_3) {
    free(__s2);
  }
  if (__s2_01 != param_3) {
    free(__s2_01);
  }
  if (__s2_00 != param_3) {
    free(__s2_00);
  }
  return puVar5;
}

