
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_00114006:
    if ((prev == (bfd_elf_version_expr *)0x0) || ((prev->field_0x10 & 1) != 0)) {
      pbVar5 = head->remaining;
      goto joined_r0x0011412b;
    }
  }
  else {
    if (prev == (bfd_elf_version_expr *)0x0) {
LAB_001140a8:
      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_00114068;
          pbVar5 = pbVar5->next;
        }
LAB_00114240:
        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_00114068;
          pbVar5 = pbVar5->next;
        }
LAB_001141e0:
        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_00114068;
          pbVar5 = pbVar5->next;
        }
      }
      goto LAB_00114006;
    }
    if ((prev->field_0x10 & 1) != 0) {
      bVar2 = (byte)prev->field_0x10 >> 3 & 7;
      if (bVar2 == 1) goto LAB_00114240;
      if (bVar2 == 0) goto LAB_001140a8;
      if (bVar2 != 2) goto LAB_00114006;
      goto LAB_001141e0;
    }
  }
  pbVar5 = prev->next;
joined_r0x0011412b:
  for (; pbVar5 != (bfd_elf_version_expr *)0x0; pbVar5 = pbVar5->next) {
    __pattern = pbVar5->pattern;
    if (__pattern != (char *)0x0) {
      if ((*__pattern == '*') && (__pattern[1] == '\0')) goto LAB_00114068;
      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_00114068;
    }
  }
  pbVar5 = (bfd_elf_version_expr *)0x0;
LAB_00114068:
  if (__s2 != sym) {
    free(__s2);
  }
  if (__s2_01 != sym) {
    free(__s2_01);
  }
  if (__s2_00 != sym) {
    free(__s2_00);
  }
  return pbVar5;
}



undefined8 * FUN_00113f60(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_00225bd0,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_00225bd0,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_00225bd0,param_3,4), __s2_00 == (char *)0x0)) {
    __s2_00 = param_3;
  }
  if (*(long *)(param_1 + 8) == 0) {
LAB_00114006:
    if ((param_2 == (undefined8 *)0x0) || ((*(byte *)(param_2 + 2) & 1) != 0)) {
      puVar5 = *(undefined8 **)(param_1 + 0x10);
      goto joined_r0x0011412b;
    }
  }
  else {
    if (param_2 == (undefined8 *)0x0) {
LAB_001140a8:
      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_00114068;
          puVar5 = (undefined8 *)*puVar5;
        }
LAB_00114240:
        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_00114068;
          puVar5 = (undefined8 *)*puVar5;
        }
LAB_001141e0:
        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_00114068;
          puVar5 = (undefined8 *)*puVar5;
        }
      }
      goto LAB_00114006;
    }
    if ((*(byte *)(param_2 + 2) & 1) != 0) {
      bVar2 = *(byte *)(param_2 + 2) >> 3 & 7;
      if (bVar2 == 1) goto LAB_00114240;
      if (bVar2 == 0) goto LAB_001140a8;
      if (bVar2 != 2) goto LAB_00114006;
      goto LAB_001141e0;
    }
  }
  puVar5 = (undefined8 *)*param_2;
joined_r0x0011412b:
  for (; puVar5 != (undefined8 *)0x0; puVar5 = (undefined8 *)*puVar5) {
    __pattern = (char *)puVar5[1];
    if (__pattern != (char *)0x0) {
      if ((*__pattern == '*') && (__pattern[1] == '\0')) goto LAB_00114068;
      __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_00114068;
    }
  }
  puVar5 = (undefined8 *)0x0;
LAB_00114068:
  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 [0x00224748]
MOV qword ptr [RSP + 0x8],RSI
CALL 0x0010a260
MOV RDI,qword ptr [0x00225bd0]
XOR EDX,EDX
MOV RSI,R13
CALL 0x0010a920
MOV EDI,EBX
MOV RBP,RAX
TEST RAX,RAX
CMOVZ RBP,R13
CALL 0x0010a260
MOV EAX,dword ptr [R14 + 0x18]
TEST AL,0x2
JNZ 0x00114168
TEST AL,0x4
JNZ 0x00114140
MOV RBX,R13
MOV RDI,qword ptr [R14 + 0x8]
TEST RDI,RDI
JZ 0x00114006
MOV RAX,qword ptr [RSP + 0x8]
TEST RAX,RAX
JZ 0x001140a8
MOVZX EAX,byte ptr [RAX + 0x10]
TEST AL,0x1
JZ 0x00114120
SHR AL,0x3
AND EAX,0x7
CMP AL,0x1
JZ 0x00114240
TEST AL,AL
JZ 0x001140a8
CMP AL,0x2
JZ 0x001141e0
MOV RAX,qword ptr [RSP + 0x8]
TEST RAX,RAX
JZ 0x0011401a
TEST byte ptr [RAX + 0x10],0x1
JZ 0x00114120
MOV R15,qword ptr [R14 + 0x10]
JMP 0x00114046
MOVZX EAX,byte ptr [R15 + 0x10]
MOV RSI,RBX
AND EAX,0x38
CMP AL,0x20
JZ 0x00114038
CMP AL,0x10
MOV RSI,RBP
CMOVZ RSI,R12
XOR EDX,EDX
CALL 0x0010a450
TEST EAX,EAX
JZ 0x00114068
MOV R15,qword ptr [R15]
TEST R15,R15
JZ 0x00114138
MOV RDI,qword ptr [R15 + 0x8]
TEST RDI,RDI
JZ 0x00114043
CMP byte ptr [RDI],0x2a
JNZ 0x00114020
CMP byte ptr [RDI + 0x1],0x0
JNZ 0x00114020
NOP dword ptr [RAX + RAX*0x1]
CMP RBP,R13
JZ 0x00114075
MOV RDI,RBP
CALL 0x0010ac40
CMP R12,R13
JZ 0x00114082
MOV RDI,R12
CALL 0x0010ac40
CMP RBX,R13
JZ 0x0011408f
MOV RDI,RBX
CALL 0x0010ac40
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 0x001141f1
TEST AL,0x2
JNZ 0x00114194
TEST AL,0x4
JZ 0x00114006
MOV RDI,qword ptr [R14 + 0x8]
LEA RSI,[RSP + 0x10]
MOV qword ptr [RSP + 0x18],RBX
CALL 0x0010aa50
MOV R15,RAX
TEST RAX,RAX
JNZ 0x00114104
JMP 0x00114006
MOVZX EAX,byte ptr [R15 + 0x10]
AND EAX,0x38
CMP AL,0x20
JZ 0x00114068
MOV R15,qword ptr [R15]
TEST R15,R15
JZ 0x00114006
MOV RDI,qword ptr [R15 + 0x8]
MOV RSI,RBX
CALL 0x0010a640
TEST EAX,EAX
JZ 0x001140e8
JMP 0x00114006
MOV RAX,qword ptr [RSP + 0x8]
MOV R15,qword ptr [RAX]
TEST R15,R15
JNZ 0x0011404f
NOP dword ptr [RAX]
XOR R15D,R15D
JMP 0x00114068
MOV RDI,qword ptr [0x00225bd0]
MOV EDX,0x4
MOV RSI,R13
CALL 0x0010a920
MOV RBX,RAX
TEST RAX,RAX
JNZ 0x00113fc5
JMP 0x00113fc2
MOV RDI,qword ptr [0x00225bd0]
MOV EDX,0x3
MOV RSI,R13
CALL 0x0010a920
MOV R12,RAX
MOV EAX,dword ptr [R14 + 0x18]
TEST R12,R12
JNZ 0x00113fba
MOV R12,R13
JMP 0x00113fba
MOV RDI,qword ptr [R14 + 0x8]
LEA RSI,[RSP + 0x10]
MOV qword ptr [RSP + 0x18],R12
CALL 0x0010aa50
MOV R15,RAX
TEST RAX,RAX
JNZ 0x001141d0
JMP 0x001141e0
MOVZX EAX,byte ptr [R15 + 0x10]
AND EAX,0x38
CMP AL,0x10
JZ 0x00114068
MOV R15,qword ptr [R15]
TEST R15,R15
JZ 0x001141e0
MOV RDI,qword ptr [R15 + 0x8]
MOV RSI,R12
CALL 0x0010a640
TEST EAX,EAX
JZ 0x001141b8
MOV EAX,dword ptr [R14 + 0x18]
TEST AL,0x4
JZ 0x00114006
JMP 0x001140c4
LEA RSI,[RSP + 0x10]
MOV qword ptr [RSP + 0x18],RBP
CALL 0x0010aa50
MOV R15,RAX
TEST RAX,RAX
JNZ 0x00114228
JMP 0x00114240
MOVZX EAX,byte ptr [R15 + 0x10]
AND EAX,0x38
CMP AL,0x8
JZ 0x00114068
MOV R15,qword ptr [R15]
TEST R15,R15
JZ 0x00114240
MOV RDI,qword ptr [R15 + 0x8]
MOV RSI,RBP
CALL 0x0010a640
TEST EAX,EAX
JZ 0x00114210
NOP dword ptr [RAX + RAX*0x1]
MOV EAX,dword ptr [R14 + 0x18]
TEST AL,0x2
JZ 0x001140bc
JMP 0x00114194
(translation_unit "undefined8 * FUN_00113f60(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_00225bd0,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_00225bd0,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_00225bd0,param_3,4), __s2_00 == (char *)0x0)) {\n    __s2_00 = param_3;\n  }\n  if (*(long *)(param_1 + 8) == 0) {\nLAB_00114006:\n    if ((param_2 == (undefined8 *)0x0) || ((*(byte *)(param_2 + 2) & 1) != 0)) {\n      puVar5 = *(undefined8 **)(param_1 + 0x10);\n      goto joined_r0x0011412b;\n    }\n  }\n  else {\n    if (param_2 == (undefined8 *)0x0) {\nLAB_001140a8:\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_00114068;\n          puVar5 = (undefined8 *)*puVar5;\n        }\nLAB_00114240:\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_00114068;\n          puVar5 = (undefined8 *)*puVar5;\n        }\nLAB_001141e0:\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_00114068;\n          puVar5 = (undefined8 *)*puVar5;\n        }\n      }\n      goto LAB_00114006;\n    }\n    if ((*(byte *)(param_2 + 2) & 1) != 0) {\n      bVar2 = *(byte *)(param_2 + 2) >> 3 & 7;\n      if (bVar2 == 1) goto LAB_00114240;\n      if (bVar2 == 0) goto LAB_001140a8;\n      if (bVar2 != 2) goto LAB_00114006;\n      goto LAB_001141e0;\n    }\n  }\n  puVar5 = (undefined8 *)*param_2;\njoined_r0x0011412b:\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_00114068;\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_00114068;\n    }\n  }\n  puVar5 = (undefined8 *)0x0;\nLAB_00114068:\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_00113f60(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_00225bd0,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_00225bd0,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_00225bd0,param_3,4), __s2_00 == (char *)0x0)) {\n    __s2_00 = param_3;\n  }\n  if (*(long *)(param_1 + 8) == 0) {\nLAB_00114006:\n    if ((param_2 == (undefined8 *)0x0) || ((*(byte *)(param_2 + 2) & 1) != 0)) {\n      puVar5 = *(undefined8 **)(param_1 + 0x10);\n      goto joined_r0x0011412b;\n    }\n  }\n  else {\n    if (param_2 == (undefined8 *)0x0) {\nLAB_001140a8:\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_00114068;\n          puVar5 = (undefined8 *)*puVar5;\n        }\nLAB_00114240:\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_00114068;\n          puVar5 = (undefined8 *)*puVar5;\n        }\nLAB_001141e0:\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_00114068;\n          puVar5 = (undefined8 *)*puVar5;\n        }\n      }\n      goto LAB_00114006;\n    }\n    if ((*(byte *)(param_2 + 2) & 1) != 0) {\n      bVar2 = *(byte *)(param_2 + 2) >> 3 & 7;\n      if (bVar2 == 1) goto LAB_00114240;\n      if (bVar2 == 0) goto LAB_001140a8;\n      if (bVar2 != 2) goto LAB_00114006;\n      goto LAB_001141e0;\n    }\n  }\n  puVar5 = (undefined8 *)*param_2;\njoined_r0x0011412b:\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_00114068;\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_00114068;\n    }\n  }\n  puVar5 = (undefined8 *)0x0;\nLAB_00114068:\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_00113f60(long param_1,undefined8 *param_2,char *param_3)" * (function_declarator "FUN_00113f60(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_00225bd0,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_00225bd0,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_00225bd0,param_3,4), __s2_00 == (char *)0x0)) {\n    __s2_00 = param_3;\n  }\n  if (*(long *)(param_1 + 8) == 0) {\nLAB_00114006:\n    if ((param_2 == (undefined8 *)0x0) || ((*(byte *)(param_2 + 2) & 1) != 0)) {\n      puVar5 = *(undefined8 **)(param_1 + 0x10);\n      goto joined_r0x0011412b;\n    }\n  }\n  else {\n    if (param_2 == (undefined8 *)0x0) {\nLAB_001140a8:\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_00114068;\n          puVar5 = (undefined8 *)*puVar5;\n        }\nLAB_00114240:\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_00114068;\n          puVar5 = (undefined8 *)*puVar5;\n        }\nLAB_001141e0:\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_00114068;\n          puVar5 = (undefined8 *)*puVar5;\n        }\n      }\n      goto LAB_00114006;\n    }\n    if ((*(byte *)(param_2 + 2) & 1) != 0) {\n      bVar2 = *(byte *)(param_2 + 2) >> 3 & 7;\n      if (bVar2 == 1) goto LAB_00114240;\n      if (bVar2 == 0) goto LAB_001140a8;\n      if (bVar2 != 2) goto LAB_00114006;\n      goto LAB_001141e0;\n    }\n  }\n  puVar5 = (undefined8 *)*param_2;\njoined_r0x0011412b:\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_00114068;\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_00114068;\n    }\n  }\n  puVar5 = (undefined8 *)0x0;\nLAB_00114068:\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_00225bd0,param_3,0);" (assignment_expression "__s2 = (char *)bfd_demangle(DAT_00225bd0,param_3,0)" identifier = (cast_expression "(char *)bfd_demangle(DAT_00225bd0,param_3,0)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "bfd_demangle(DAT_00225bd0,param_3,0)" identifier (argument_list "(DAT_00225bd0,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_00225bd0,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_00225bd0,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_00225bd0,param_3,3);" (assignment_expression "__s2_01 = (char *)bfd_demangle(DAT_00225bd0,param_3,3)" identifier = (cast_expression "(char *)bfd_demangle(DAT_00225bd0,param_3,3)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "bfd_demangle(DAT_00225bd0,param_3,3)" identifier (argument_list "(DAT_00225bd0,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_00225bd0,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_00225bd0,param_3,4), __s2_00 == (char *)0x0))" ( (binary_expression "((uVar3 & 4) == 0) ||\n     (__s2_00 = (char *)bfd_demangle(DAT_00225bd0,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_00225bd0,param_3,4), __s2_00 == (char *)0x0)" ( (comma_expression "__s2_00 = (char *)bfd_demangle(DAT_00225bd0,param_3,4), __s2_00 == (char *)0x0" (assignment_expression "__s2_00 = (char *)bfd_demangle(DAT_00225bd0,param_3,4)" identifier = (cast_expression "(char *)bfd_demangle(DAT_00225bd0,param_3,4)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "bfd_demangle(DAT_00225bd0,param_3,4)" identifier (argument_list "(DAT_00225bd0,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_00114006:\n    if ((param_2 == (undefined8 *)0x0) || ((*(byte *)(param_2 + 2) & 1) != 0)) {\n      puVar5 = *(undefined8 **)(param_1 + 0x10);\n      goto joined_r0x0011412b;\n    }\n  }\n  else {\n    if (param_2 == (undefined8 *)0x0) {\nLAB_001140a8:\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_00114068;\n          puVar5 = (undefined8 *)*puVar5;\n        }\nLAB_00114240:\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_00114068;\n          puVar5 = (undefined8 *)*puVar5;\n        }\nLAB_001141e0:\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_00114068;\n          puVar5 = (undefined8 *)*puVar5;\n        }\n      }\n      goto LAB_00114006;\n    }\n    if ((*(byte *)(param_2 + 2) & 1) != 0) {\n      bVar2 = *(byte *)(param_2 + 2) >> 3 & 7;\n      if (bVar2 == 1) goto LAB_00114240;\n      if (bVar2 == 0) goto LAB_001140a8;\n      if (bVar2 != 2) goto LAB_00114006;\n      goto LAB_001141e0;\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_00114006:\n    if ((param_2 == (undefined8 *)0x0) || ((*(byte *)(param_2 + 2) & 1) != 0)) {\n      puVar5 = *(undefined8 **)(param_1 + 0x10);\n      goto joined_r0x0011412b;\n    }\n  }" { (labeled_statement "LAB_00114006:\n    if ((param_2 == (undefined8 *)0x0) || ((*(byte *)(param_2 + 2) & 1) != 0)) {\n      puVar5 = *(undefined8 **)(param_1 + 0x10);\n      goto joined_r0x0011412b;\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_r0x0011412b;\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_r0x0011412b;\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_r0x0011412b;" goto statement_identifier ;) }))) }) (else_clause "else {\n    if (param_2 == (undefined8 *)0x0) {\nLAB_001140a8:\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_00114068;\n          puVar5 = (undefined8 *)*puVar5;\n        }\nLAB_00114240:\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_00114068;\n          puVar5 = (undefined8 *)*puVar5;\n        }\nLAB_001141e0:\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_00114068;\n          puVar5 = (undefined8 *)*puVar5;\n        }\n      }\n      goto LAB_00114006;\n    }\n    if ((*(byte *)(param_2 + 2) & 1) != 0) {\n      bVar2 = *(byte *)(param_2 + 2) >> 3 & 7;\n      if (bVar2 == 1) goto LAB_00114240;\n      if (bVar2 == 0) goto LAB_001140a8;\n      if (bVar2 != 2) goto LAB_00114006;\n      goto LAB_001141e0;\n    }\n  }" else (compound_statement "{\n    if (param_2 == (undefined8 *)0x0) {\nLAB_001140a8:\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_00114068;\n          puVar5 = (undefined8 *)*puVar5;\n        }\nLAB_00114240:\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_00114068;\n          puVar5 = (undefined8 *)*puVar5;\n        }\nLAB_001141e0:\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_00114068;\n          puVar5 = (undefined8 *)*puVar5;\n        }\n      }\n      goto LAB_00114006;\n    }\n    if ((*(byte *)(param_2 + 2) & 1) != 0) {\n      bVar2 = *(byte *)(param_2 + 2) >> 3 & 7;\n      if (bVar2 == 1) goto LAB_00114240;\n      if (bVar2 == 0) goto LAB_001140a8;\n      if (bVar2 != 2) goto LAB_00114006;\n      goto LAB_001141e0;\n    }\n  }" { (if_statement "if (param_2 == (undefined8 *)0x0) {\nLAB_001140a8:\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_00114068;\n          puVar5 = (undefined8 *)*puVar5;\n        }\nLAB_00114240:\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_00114068;\n          puVar5 = (undefined8 *)*puVar5;\n        }\nLAB_001141e0:\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_00114068;\n          puVar5 = (undefined8 *)*puVar5;\n        }\n      }\n      goto LAB_00114006;\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_001140a8:\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_00114068;\n          puVar5 = (undefined8 *)*puVar5;\n        }\nLAB_00114240:\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_00114068;\n          puVar5 = (undefined8 *)*puVar5;\n        }\nLAB_001141e0:\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_00114068;\n          puVar5 = (undefined8 *)*puVar5;\n        }\n      }\n      goto LAB_00114006;\n    }" { (labeled_statement "LAB_001140a8:\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_00114068;\n          puVar5 = (undefined8 *)*puVar5;\n        }\nLAB_00114240:\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_00114068;\n          puVar5 = (undefined8 *)*puVar5;\n        }\nLAB_00114240:\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_00114068;\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_00114068;\n          puVar5 = (undefined8 *)*puVar5;\n        }" { (if_statement "if ((*(byte *)(puVar5 + 2) & 0x38) == 8) goto LAB_00114068;" 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_00114068;" 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_00114240:\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_00114068;\n          puVar5 = (undefined8 *)*puVar5;\n        }\nLAB_001141e0:\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_00114068;\n          puVar5 = (undefined8 *)*puVar5;\n        }\nLAB_001141e0:\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_00114068;\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_00114068;\n          puVar5 = (undefined8 *)*puVar5;\n        }" { (if_statement "if ((*(byte *)(puVar5 + 2) & 0x38) == 0x10) goto LAB_00114068;" 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_00114068;" 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_001141e0:\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_00114068;\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_00114068;\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_00114068;\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_00114068;\n          puVar5 = (undefined8 *)*puVar5;\n        }" { (if_statement "if ((*(byte *)(puVar5 + 2) & 0x38) == 0x20) goto LAB_00114068;" 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_00114068;" 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_00114006;" 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_00114240;\n      if (bVar2 == 0) goto LAB_001140a8;\n      if (bVar2 != 2) goto LAB_00114006;\n      goto LAB_001141e0;\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_00114240;\n      if (bVar2 == 0) goto LAB_001140a8;\n      if (bVar2 != 2) goto LAB_00114006;\n      goto LAB_001141e0;\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_00114240;" if (parenthesized_expression "(bVar2 == 1)" ( (binary_expression "bVar2 == 1" identifier == number_literal) )) (goto_statement "goto LAB_00114240;" goto statement_identifier ;)) (if_statement "if (bVar2 == 0) goto LAB_001140a8;" if (parenthesized_expression "(bVar2 == 0)" ( (binary_expression "bVar2 == 0" identifier == number_literal) )) (goto_statement "goto LAB_001140a8;" goto statement_identifier ;)) (if_statement "if (bVar2 != 2) goto LAB_00114006;" if (parenthesized_expression "(bVar2 != 2)" ( (binary_expression "bVar2 != 2" identifier != number_literal) )) (goto_statement "goto LAB_00114006;" goto statement_identifier ;)) (goto_statement "goto LAB_001141e0;" 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_r0x0011412b:\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_00114068;\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_00114068;\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_00114068;\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_00114068;\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_00114068;\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_00114068;\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_00114068;\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_00114068;\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_00114068;\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_00114068;\n    }" { (if_statement "if ((*__pattern == '*') && (__pattern[1] == '\0')) goto LAB_00114068;" 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_00114068;" 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_00114068;" if (parenthesized_expression "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00114068;" 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_00114068:\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_00114006:\n    if ((prev == (bfd_elf_version_expr *)0x0) || ((prev->field_0x10 & 1) != 0)) {\n      pbVar5 = head->remaining;\n      goto joined_r0x0011412b;\n    }\n  }\n  else {\n    if (prev == (bfd_elf_version_expr *)0x0) {\nLAB_001140a8:\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_00114068;\n          pbVar5 = pbVar5->next;\n        }\nLAB_00114240:\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_00114068;\n          pbVar5 = pbVar5->next;\n        }\nLAB_001141e0:\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_00114068;\n          pbVar5 = pbVar5->next;\n        }\n      }\n      goto LAB_00114006;\n    }\n    if ((prev->field_0x10 & 1) != 0) {\n      bVar2 = (byte)prev->field_0x10 >> 3 & 7;\n      if (bVar2 == 1) goto LAB_00114240;\n      if (bVar2 == 0) goto LAB_001140a8;\n      if (bVar2 != 2) goto LAB_00114006;\n      goto LAB_001141e0;\n    }\n  }\n  pbVar5 = prev->next;\njoined_r0x0011412b:\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_00114068;\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_00114068;\n    }\n  }\n  pbVar5 = (bfd_elf_version_expr *)0x0;\nLAB_00114068:\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_00114006:\n    if ((prev == (bfd_elf_version_expr *)0x0) || ((prev->field_0x10 & 1) != 0)) {\n      pbVar5 = head->remaining;\n      goto joined_r0x0011412b;\n    }\n  }\n  else {\n    if (prev == (bfd_elf_version_expr *)0x0) {\nLAB_001140a8:\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_00114068;\n          pbVar5 = pbVar5->next;\n        }\nLAB_00114240:\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_00114068;\n          pbVar5 = pbVar5->next;\n        }\nLAB_001141e0:\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_00114068;\n          pbVar5 = pbVar5->next;\n        }\n      }\n      goto LAB_00114006;\n    }\n    if ((prev->field_0x10 & 1) != 0) {\n      bVar2 = (byte)prev->field_0x10 >> 3 & 7;\n      if (bVar2 == 1) goto LAB_00114240;\n      if (bVar2 == 0) goto LAB_001140a8;\n      if (bVar2 != 2) goto LAB_00114006;\n      goto LAB_001141e0;\n    }\n  }\n  pbVar5 = prev->next;\njoined_r0x0011412b:\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_00114068;\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_00114068;\n    }\n  }\n  pbVar5 = (bfd_elf_version_expr *)0x0;\nLAB_00114068:\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_00114006:\n    if ((prev == (bfd_elf_version_expr *)0x0) || ((prev->field_0x10 & 1) != 0)) {\n      pbVar5 = head->remaining;\n      goto joined_r0x0011412b;\n    }\n  }\n  else {\n    if (prev == (bfd_elf_version_expr *)0x0) {\nLAB_001140a8:\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_00114068;\n          pbVar5 = pbVar5->next;\n        }\nLAB_00114240:\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_00114068;\n          pbVar5 = pbVar5->next;\n        }\nLAB_001141e0:\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_00114068;\n          pbVar5 = pbVar5->next;\n        }\n      }\n      goto LAB_00114006;\n    }\n    if ((prev->field_0x10 & 1) != 0) {\n      bVar2 = (byte)prev->field_0x10 >> 3 & 7;\n      if (bVar2 == 1) goto LAB_00114240;\n      if (bVar2 == 0) goto LAB_001140a8;\n      if (bVar2 != 2) goto LAB_00114006;\n      goto LAB_001141e0;\n    }\n  }\n  pbVar5 = prev->next;\njoined_r0x0011412b:\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_00114068;\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_00114068;\n    }\n  }\n  pbVar5 = (bfd_elf_version_expr *)0x0;\nLAB_00114068:\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_00114006:\n    if ((prev == (bfd_elf_version_expr *)0x0) || ((prev->field_0x10 & 1) != 0)) {\n      pbVar5 = head->remaining;\n      goto joined_r0x0011412b;\n    }\n  }\n  else {\n    if (prev == (bfd_elf_version_expr *)0x0) {\nLAB_001140a8:\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_00114068;\n          pbVar5 = pbVar5->next;\n        }\nLAB_00114240:\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_00114068;\n          pbVar5 = pbVar5->next;\n        }\nLAB_001141e0:\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_00114068;\n          pbVar5 = pbVar5->next;\n        }\n      }\n      goto LAB_00114006;\n    }\n    if ((prev->field_0x10 & 1) != 0) {\n      bVar2 = (byte)prev->field_0x10 >> 3 & 7;\n      if (bVar2 == 1) goto LAB_00114240;\n      if (bVar2 == 0) goto LAB_001140a8;\n      if (bVar2 != 2) goto LAB_00114006;\n      goto LAB_001141e0;\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_00114006:\n    if ((prev == (bfd_elf_version_expr *)0x0) || ((prev->field_0x10 & 1) != 0)) {\n      pbVar5 = head->remaining;\n      goto joined_r0x0011412b;\n    }\n  }" { (labeled_statement "LAB_00114006:\n    if ((prev == (bfd_elf_version_expr *)0x0) || ((prev->field_0x10 & 1) != 0)) {\n      pbVar5 = head->remaining;\n      goto joined_r0x0011412b;\n    }" statement_identifier : (if_statement "if ((prev == (bfd_elf_version_expr *)0x0) || ((prev->field_0x10 & 1) != 0)) {\n      pbVar5 = head->remaining;\n      goto joined_r0x0011412b;\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_r0x0011412b;\n    }" { (expression_statement "pbVar5 = head->remaining;" (assignment_expression "pbVar5 = head->remaining" identifier = (field_expression "head->remaining" identifier -> field_identifier)) ;) (goto_statement "goto joined_r0x0011412b;" goto statement_identifier ;) }))) }) (else_clause "else {\n    if (prev == (bfd_elf_version_expr *)0x0) {\nLAB_001140a8:\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_00114068;\n          pbVar5 = pbVar5->next;\n        }\nLAB_00114240:\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_00114068;\n          pbVar5 = pbVar5->next;\n        }\nLAB_001141e0:\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_00114068;\n          pbVar5 = pbVar5->next;\n        }\n      }\n      goto LAB_00114006;\n    }\n    if ((prev->field_0x10 & 1) != 0) {\n      bVar2 = (byte)prev->field_0x10 >> 3 & 7;\n      if (bVar2 == 1) goto LAB_00114240;\n      if (bVar2 == 0) goto LAB_001140a8;\n      if (bVar2 != 2) goto LAB_00114006;\n      goto LAB_001141e0;\n    }\n  }" else (compound_statement "{\n    if (prev == (bfd_elf_version_expr *)0x0) {\nLAB_001140a8:\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_00114068;\n          pbVar5 = pbVar5->next;\n        }\nLAB_00114240:\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_00114068;\n          pbVar5 = pbVar5->next;\n        }\nLAB_001141e0:\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_00114068;\n          pbVar5 = pbVar5->next;\n        }\n      }\n      goto LAB_00114006;\n    }\n    if ((prev->field_0x10 & 1) != 0) {\n      bVar2 = (byte)prev->field_0x10 >> 3 & 7;\n      if (bVar2 == 1) goto LAB_00114240;\n      if (bVar2 == 0) goto LAB_001140a8;\n      if (bVar2 != 2) goto LAB_00114006;\n      goto LAB_001141e0;\n    }\n  }" { (if_statement "if (prev == (bfd_elf_version_expr *)0x0) {\nLAB_001140a8:\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_00114068;\n          pbVar5 = pbVar5->next;\n        }\nLAB_00114240:\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_00114068;\n          pbVar5 = pbVar5->next;\n        }\nLAB_001141e0:\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_00114068;\n          pbVar5 = pbVar5->next;\n        }\n      }\n      goto LAB_00114006;\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_001140a8:\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_00114068;\n          pbVar5 = pbVar5->next;\n        }\nLAB_00114240:\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_00114068;\n          pbVar5 = pbVar5->next;\n        }\nLAB_001141e0:\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_00114068;\n          pbVar5 = pbVar5->next;\n        }\n      }\n      goto LAB_00114006;\n    }" { (labeled_statement "LAB_001140a8:\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_00114068;\n          pbVar5 = pbVar5->next;\n        }\nLAB_00114240:\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_00114068;\n          pbVar5 = pbVar5->next;\n        }\nLAB_00114240:\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_00114068;\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_00114068;\n          pbVar5 = pbVar5->next;\n        }" { (if_statement "if ((pbVar5->field_0x10 & 0x38) == 8) goto LAB_00114068;" 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_00114068;" goto statement_identifier ;)) (expression_statement "pbVar5 = pbVar5->next;" (assignment_expression "pbVar5 = pbVar5->next" identifier = (field_expression "pbVar5->next" identifier -> field_identifier)) ;) })) (labeled_statement "LAB_00114240:\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_00114068;\n          pbVar5 = pbVar5->next;\n        }\nLAB_001141e0:\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_00114068;\n          pbVar5 = pbVar5->next;\n        }\nLAB_001141e0:\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_00114068;\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_00114068;\n          pbVar5 = pbVar5->next;\n        }" { (if_statement "if ((pbVar5->field_0x10 & 0x38) == 0x10) goto LAB_00114068;" 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_00114068;" goto statement_identifier ;)) (expression_statement "pbVar5 = pbVar5->next;" (assignment_expression "pbVar5 = pbVar5->next" identifier = (field_expression "pbVar5->next" identifier -> field_identifier)) ;) })) (labeled_statement "LAB_001141e0:\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_00114068;\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_00114068;\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_00114068;\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_00114068;\n          pbVar5 = pbVar5->next;\n        }" { (if_statement "if ((pbVar5->field_0x10 & 0x38) == 0x20) goto LAB_00114068;" 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_00114068;" 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_00114006;" 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_00114240;\n      if (bVar2 == 0) goto LAB_001140a8;\n      if (bVar2 != 2) goto LAB_00114006;\n      goto LAB_001141e0;\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_00114240;\n      if (bVar2 == 0) goto LAB_001140a8;\n      if (bVar2 != 2) goto LAB_00114006;\n      goto LAB_001141e0;\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_00114240;" if (parenthesized_expression "(bVar2 == 1)" ( (binary_expression "bVar2 == 1" identifier == number_literal) )) (goto_statement "goto LAB_00114240;" goto statement_identifier ;)) (if_statement "if (bVar2 == 0) goto LAB_001140a8;" if (parenthesized_expression "(bVar2 == 0)" ( (binary_expression "bVar2 == 0" identifier == number_literal) )) (goto_statement "goto LAB_001140a8;" goto statement_identifier ;)) (if_statement "if (bVar2 != 2) goto LAB_00114006;" if (parenthesized_expression "(bVar2 != 2)" ( (binary_expression "bVar2 != 2" identifier != number_literal) )) (goto_statement "goto LAB_00114006;" goto statement_identifier ;)) (goto_statement "goto LAB_001141e0;" goto statement_identifier ;) })) }))) (expression_statement "pbVar5 = prev->next;" (assignment_expression "pbVar5 = prev->next" identifier = (field_expression "prev->next" identifier -> field_identifier)) ;) (labeled_statement "joined_r0x0011412b:\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_00114068;\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_00114068;\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_00114068;\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_00114068;\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_00114068;\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_00114068;\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_00114068;\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_00114068;\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_00114068;\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_00114068;\n    }" { (if_statement "if ((*__pattern == '*') && (__pattern[1] == '\0')) goto LAB_00114068;" 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_00114068;" 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_00114068;" if (parenthesized_expression "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00114068;" 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_00114068:\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_00113f60(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_00225bd0,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_00225bd0,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_00225bd0,param_3,4), __s2_00 == (char *)0x0)) {\n    __s2_00 = param_3;\n  }\n  if (*(long *)(param_1 + 8) == 0) {\nLAB_00114006:\n    if ((param_2 == (undefined8 *)0x0) || ((*(byte *)(param_2 + 2) & 1) != 0)) {\n      puVar5 = *(undefined8 **)(param_1 + 0x10);\n      goto joined_r0x0011412b;\n    }\n  }\n  else {\n    if (param_2 == (undefined8 *)0x0) {\nLAB_001140a8:\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_00114068;\n          puVar5 = (undefined8 *)*puVar5;\n        }\nLAB_00114240:\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_00114068;\n          puVar5 = (undefined8 *)*puVar5;\n        }\nLAB_001141e0:\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_00114068;\n          puVar5 = (undefined8 *)*puVar5;\n        }\n      }\n      goto LAB_00114006;\n    }\n    if ((*(byte *)(param_2 + 2) & 1) != 0) {\n      bVar2 = *(byte *)(param_2 + 2) >> 3 & 7;\n      if (bVar2 == 1) goto LAB_00114240;\n      if (bVar2 == 0) goto LAB_001140a8;\n      if (bVar2 != 2) goto LAB_00114006;\n      goto LAB_001141e0;\n    }\n  }\n  puVar5 = (undefined8 *)*param_2;\njoined_r0x0011412b:\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_00114068;\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_00114068;\n    }\n  }\n  puVar5 = (undefined8 *)0x0;\nLAB_00114068:\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_00113f60(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_00225bd0,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_00225bd0,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_00225bd0,param_3,4), __s2_00 == (char *)0x0)) {\n    __s2_00 = param_3;\n  }\n  if (*(long *)(param_1 + 8) == 0) {\nLAB_00114006:\n    if ((param_2 == (undefined8 *)0x0) || ((*(byte *)(param_2 + 2) & 1) != 0)) {\n      puVar5 = *(undefined8 **)(param_1 + 0x10);\n      goto joined_r0x0011412b;\n    }\n  }\n  else {\n    if (param_2 == (undefined8 *)0x0) {\nLAB_001140a8:\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_00114068;\n          puVar5 = (undefined8 *)*puVar5;\n        }\nLAB_00114240:\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_00114068;\n          puVar5 = (undefined8 *)*puVar5;\n        }\nLAB_001141e0:\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_00114068;\n          puVar5 = (undefined8 *)*puVar5;\n        }\n      }\n      goto LAB_00114006;\n    }\n    if ((*(byte *)(param_2 + 2) & 1) != 0) {\n      bVar2 = *(byte *)(param_2 + 2) >> 3 & 7;\n      if (bVar2 == 1) goto LAB_00114240;\n      if (bVar2 == 0) goto LAB_001140a8;\n      if (bVar2 != 2) goto LAB_00114006;\n      goto LAB_001141e0;\n    }\n  }\n  puVar5 = (undefined8 *)*param_2;\njoined_r0x0011412b:\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_00114068;\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_00114068;\n    }\n  }\n  puVar5 = (undefined8 *)0x0;\nLAB_00114068:\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_00113f60(long param_1,undefined8 *param_2,char *param_3)" * (function_declarator "FUN_00113f60(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_00225bd0,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_00225bd0,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_00225bd0,param_3,4), __s2_00 == (char *)0x0)) {\n    __s2_00 = param_3;\n  }\n  if (*(long *)(param_1 + 8) == 0) {\nLAB_00114006:\n    if ((param_2 == (undefined8 *)0x0) || ((*(byte *)(param_2 + 2) & 1) != 0)) {\n      puVar5 = *(undefined8 **)(param_1 + 0x10);\n      goto joined_r0x0011412b;\n    }\n  }\n  else {\n    if (param_2 == (undefined8 *)0x0) {\nLAB_001140a8:\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_00114068;\n          puVar5 = (undefined8 *)*puVar5;\n        }\nLAB_00114240:\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_00114068;\n          puVar5 = (undefined8 *)*puVar5;\n        }\nLAB_001141e0:\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_00114068;\n          puVar5 = (undefined8 *)*puVar5;\n        }\n      }\n      goto LAB_00114006;\n    }\n    if ((*(byte *)(param_2 + 2) & 1) != 0) {\n      bVar2 = *(byte *)(param_2 + 2) >> 3 & 7;\n      if (bVar2 == 1) goto LAB_00114240;\n      if (bVar2 == 0) goto LAB_001140a8;\n      if (bVar2 != 2) goto LAB_00114006;\n      goto LAB_001141e0;\n    }\n  }\n  puVar5 = (undefined8 *)*param_2;\njoined_r0x0011412b:\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_00114068;\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_00114068;\n    }\n  }\n  puVar5 = (undefined8 *)0x0;\nLAB_00114068:\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_00225bd0,param_3,0);" (assignment_expression "__s2 = (char *)bfd_demangle(DAT_00225bd0,param_3,0)" identifier = (cast_expression "(char *)bfd_demangle(DAT_00225bd0,param_3,0)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "bfd_demangle(DAT_00225bd0,param_3,0)" identifier (argument_list "(DAT_00225bd0,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_00225bd0,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_00225bd0,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_00225bd0,param_3,3);" (assignment_expression "__s2_01 = (char *)bfd_demangle(DAT_00225bd0,param_3,3)" identifier = (cast_expression "(char *)bfd_demangle(DAT_00225bd0,param_3,3)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "bfd_demangle(DAT_00225bd0,param_3,3)" identifier (argument_list "(DAT_00225bd0,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_00225bd0,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_00225bd0,param_3,4), __s2_00 == (char *)0x0))" ( (binary_expression "((uVar3 & 4) == 0) ||\n     (__s2_00 = (char *)bfd_demangle(DAT_00225bd0,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_00225bd0,param_3,4), __s2_00 == (char *)0x0)" ( (comma_expression "__s2_00 = (char *)bfd_demangle(DAT_00225bd0,param_3,4), __s2_00 == (char *)0x0" (assignment_expression "__s2_00 = (char *)bfd_demangle(DAT_00225bd0,param_3,4)" identifier = (cast_expression "(char *)bfd_demangle(DAT_00225bd0,param_3,4)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "bfd_demangle(DAT_00225bd0,param_3,4)" identifier (argument_list "(DAT_00225bd0,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_00114006:\n    if ((param_2 == (undefined8 *)0x0) || ((*(byte *)(param_2 + 2) & 1) != 0)) {\n      puVar5 = *(undefined8 **)(param_1 + 0x10);\n      goto joined_r0x0011412b;\n    }\n  }\n  else {\n    if (param_2 == (undefined8 *)0x0) {\nLAB_001140a8:\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_00114068;\n          puVar5 = (undefined8 *)*puVar5;\n        }\nLAB_00114240:\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_00114068;\n          puVar5 = (undefined8 *)*puVar5;\n        }\nLAB_001141e0:\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_00114068;\n          puVar5 = (undefined8 *)*puVar5;\n        }\n      }\n      goto LAB_00114006;\n    }\n    if ((*(byte *)(param_2 + 2) & 1) != 0) {\n      bVar2 = *(byte *)(param_2 + 2) >> 3 & 7;\n      if (bVar2 == 1) goto LAB_00114240;\n      if (bVar2 == 0) goto LAB_001140a8;\n      if (bVar2 != 2) goto LAB_00114006;\n      goto LAB_001141e0;\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_00114006:\n    if ((param_2 == (undefined8 *)0x0) || ((*(byte *)(param_2 + 2) & 1) != 0)) {\n      puVar5 = *(undefined8 **)(param_1 + 0x10);\n      goto joined_r0x0011412b;\n    }\n  }" { (labeled_statement "LAB_00114006:\n    if ((param_2 == (undefined8 *)0x0) || ((*(byte *)(param_2 + 2) & 1) != 0)) {\n      puVar5 = *(undefined8 **)(param_1 + 0x10);\n      goto joined_r0x0011412b;\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_r0x0011412b;\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_r0x0011412b;\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_r0x0011412b;" goto statement_identifier ;) }))) }) (else_clause "else {\n    if (param_2 == (undefined8 *)0x0) {\nLAB_001140a8:\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_00114068;\n          puVar5 = (undefined8 *)*puVar5;\n        }\nLAB_00114240:\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_00114068;\n          puVar5 = (undefined8 *)*puVar5;\n        }\nLAB_001141e0:\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_00114068;\n          puVar5 = (undefined8 *)*puVar5;\n        }\n      }\n      goto LAB_00114006;\n    }\n    if ((*(byte *)(param_2 + 2) & 1) != 0) {\n      bVar2 = *(byte *)(param_2 + 2) >> 3 & 7;\n      if (bVar2 == 1) goto LAB_00114240;\n      if (bVar2 == 0) goto LAB_001140a8;\n      if (bVar2 != 2) goto LAB_00114006;\n      goto LAB_001141e0;\n    }\n  }" else (compound_statement "{\n    if (param_2 == (undefined8 *)0x0) {\nLAB_001140a8:\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_00114068;\n          puVar5 = (undefined8 *)*puVar5;\n        }\nLAB_00114240:\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_00114068;\n          puVar5 = (undefined8 *)*puVar5;\n        }\nLAB_001141e0:\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_00114068;\n          puVar5 = (undefined8 *)*puVar5;\n        }\n      }\n      goto LAB_00114006;\n    }\n    if ((*(byte *)(param_2 + 2) & 1) != 0) {\n      bVar2 = *(byte *)(param_2 + 2) >> 3 & 7;\n      if (bVar2 == 1) goto LAB_00114240;\n      if (bVar2 == 0) goto LAB_001140a8;\n      if (bVar2 != 2) goto LAB_00114006;\n      goto LAB_001141e0;\n    }\n  }" { (if_statement "if (param_2 == (undefined8 *)0x0) {\nLAB_001140a8:\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_00114068;\n          puVar5 = (undefined8 *)*puVar5;\n        }\nLAB_00114240:\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_00114068;\n          puVar5 = (undefined8 *)*puVar5;\n        }\nLAB_001141e0:\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_00114068;\n          puVar5 = (undefined8 *)*puVar5;\n        }\n      }\n      goto LAB_00114006;\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_001140a8:\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_00114068;\n          puVar5 = (undefined8 *)*puVar5;\n        }\nLAB_00114240:\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_00114068;\n          puVar5 = (undefined8 *)*puVar5;\n        }\nLAB_001141e0:\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_00114068;\n          puVar5 = (undefined8 *)*puVar5;\n        }\n      }\n      goto LAB_00114006;\n    }" { (labeled_statement "LAB_001140a8:\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_00114068;\n          puVar5 = (undefined8 *)*puVar5;\n        }\nLAB_00114240:\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_00114068;\n          puVar5 = (undefined8 *)*puVar5;\n        }\nLAB_00114240:\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_00114068;\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_00114068;\n          puVar5 = (undefined8 *)*puVar5;\n        }" { (if_statement "if ((*(byte *)(puVar5 + 2) & 0x38) == 8) goto LAB_00114068;" 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_00114068;" 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_00114240:\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_00114068;\n          puVar5 = (undefined8 *)*puVar5;\n        }\nLAB_001141e0:\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_00114068;\n          puVar5 = (undefined8 *)*puVar5;\n        }\nLAB_001141e0:\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_00114068;\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_00114068;\n          puVar5 = (undefined8 *)*puVar5;\n        }" { (if_statement "if ((*(byte *)(puVar5 + 2) & 0x38) == 0x10) goto LAB_00114068;" 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_00114068;" 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_001141e0:\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_00114068;\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_00114068;\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_00114068;\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_00114068;\n          puVar5 = (undefined8 *)*puVar5;\n        }" { (if_statement "if ((*(byte *)(puVar5 + 2) & 0x38) == 0x20) goto LAB_00114068;" 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_00114068;" 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_00114006;" 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_00114240;\n      if (bVar2 == 0) goto LAB_001140a8;\n      if (bVar2 != 2) goto LAB_00114006;\n      goto LAB_001141e0;\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_00114240;\n      if (bVar2 == 0) goto LAB_001140a8;\n      if (bVar2 != 2) goto LAB_00114006;\n      goto LAB_001141e0;\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_00114240;" if (parenthesized_expression "(bVar2 == 1)" ( (binary_expression "bVar2 == 1" identifier == number_literal) )) (goto_statement "goto LAB_00114240;" goto statement_identifier ;)) (if_statement "if (bVar2 == 0) goto LAB_001140a8;" if (parenthesized_expression "(bVar2 == 0)" ( (binary_expression "bVar2 == 0" identifier == number_literal) )) (goto_statement "goto LAB_001140a8;" goto statement_identifier ;)) (if_statement "if (bVar2 != 2) goto LAB_00114006;" if (parenthesized_expression "(bVar2 != 2)" ( (binary_expression "bVar2 != 2" identifier != number_literal) )) (goto_statement "goto LAB_00114006;" goto statement_identifier ;)) (goto_statement "goto LAB_001141e0;" 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_r0x0011412b:\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_00114068;\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_00114068;\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_00114068;\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_00114068;\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_00114068;\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_00114068;\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_00114068;\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_00114068;\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_00114068;\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_00114068;\n    }" { (if_statement "if ((*__pattern == '*') && (__pattern[1] == '\0')) goto LAB_00114068;" 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_00114068;" 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_00114068;" if (parenthesized_expression "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00114068;" 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_00114068:\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_00113f60(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_00225bd0,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_00225bd0,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_00225bd0,param_3,4), __s2_00 == (char *)0x0)) {\n    __s2_00 = param_3;\n  }\n  if (*(long *)(param_1 + 8) == 0) {\nLAB_00114006:\n    if ((param_2 == (undefined8 *)0x0) || ((*(byte *)(param_2 + 2) & 1) != 0)) {\n      puVar5 = *(undefined8 **)(param_1 + 0x10);\n      goto joined_r0x0011412b;\n    }\n  }\n  else {\n    if (param_2 == (undefined8 *)0x0) {\nLAB_001140a8:\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_00114068;\n          puVar5 = (undefined8 *)*puVar5;\n        }\nLAB_00114240:\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_00114068;\n          puVar5 = (undefined8 *)*puVar5;\n        }\nLAB_001141e0:\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_00114068;\n          puVar5 = (undefined8 *)*puVar5;\n        }\n      }\n      goto LAB_00114006;\n    }\n    if ((*(byte *)(param_2 + 2) & 1) != 0) {\n      bVar2 = *(byte *)(param_2 + 2) >> 3 & 7;\n      if (bVar2 == 1) goto LAB_00114240;\n      if (bVar2 == 0) goto LAB_001140a8;\n      if (bVar2 != 2) goto LAB_00114006;\n      goto LAB_001141e0;\n    }\n  }\n  puVar5 = (undefined8 *)*param_2;\njoined_r0x0011412b:\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_00114068;\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_00114068;\n    }\n  }\n  puVar5 = (undefined8 *)0x0;\nLAB_00114068:\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_00113f60(long param_1,undefined8 *param_2,char *param_3)" (* "*") (function_declarator "FUN_00113f60(long param_1,undefined8 *param_2,char *param_3)" (identifier "FUN_00113f60") (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_00225bd0,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_00225bd0,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_00225bd0,param_3,4), __s2_00 == (char *)0x0)) {\n    __s2_00 = param_3;\n  }\n  if (*(long *)(param_1 + 8) == 0) {\nLAB_00114006:\n    if ((param_2 == (undefined8 *)0x0) || ((*(byte *)(param_2 + 2) & 1) != 0)) {\n      puVar5 = *(undefined8 **)(param_1 + 0x10);\n      goto joined_r0x0011412b;\n    }\n  }\n  else {\n    if (param_2 == (undefined8 *)0x0) {\nLAB_001140a8:\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_00114068;\n          puVar5 = (undefined8 *)*puVar5;\n        }\nLAB_00114240:\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_00114068;\n          puVar5 = (undefined8 *)*puVar5;\n        }\nLAB_001141e0:\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_00114068;\n          puVar5 = (undefined8 *)*puVar5;\n        }\n      }\n      goto LAB_00114006;\n    }\n    if ((*(byte *)(param_2 + 2) & 1) != 0) {\n      bVar2 = *(byte *)(param_2 + 2) >> 3 & 7;\n      if (bVar2 == 1) goto LAB_00114240;\n      if (bVar2 == 0) goto LAB_001140a8;\n      if (bVar2 != 2) goto LAB_00114006;\n      goto LAB_001141e0;\n    }\n  }\n  puVar5 = (undefined8 *)*param_2;\njoined_r0x0011412b:\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_00114068;\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_00114068;\n    }\n  }\n  puVar5 = (undefined8 *)0x0;\nLAB_00114068:\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_00225bd0,param_3,0);" (assignment_expression "__s2 = (char *)bfd_demangle(DAT_00225bd0,param_3,0)" (identifier "__s2") (= "=") (cast_expression "(char *)bfd_demangle(DAT_00225bd0,param_3,0)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "bfd_demangle(DAT_00225bd0,param_3,0)" (identifier "bfd_demangle") (argument_list "(DAT_00225bd0,param_3,0)" (( "(") (identifier "DAT_00225bd0") (, ",") (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_00225bd0,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_00225bd0,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_00225bd0,param_3,3);" (assignment_expression "__s2_01 = (char *)bfd_demangle(DAT_00225bd0,param_3,3)" (identifier "__s2_01") (= "=") (cast_expression "(char *)bfd_demangle(DAT_00225bd0,param_3,3)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "bfd_demangle(DAT_00225bd0,param_3,3)" (identifier "bfd_demangle") (argument_list "(DAT_00225bd0,param_3,3)" (( "(") (identifier "DAT_00225bd0") (, ",") (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_00225bd0,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_00225bd0,param_3,4), __s2_00 == (char *)0x0))" (( "(") (binary_expression "((uVar3 & 4) == 0) ||\n     (__s2_00 = (char *)bfd_demangle(DAT_00225bd0,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_00225bd0,param_3,4), __s2_00 == (char *)0x0)" (( "(") (comma_expression "__s2_00 = (char *)bfd_demangle(DAT_00225bd0,param_3,4), __s2_00 == (char *)0x0" (assignment_expression "__s2_00 = (char *)bfd_demangle(DAT_00225bd0,param_3,4)" (identifier "__s2_00") (= "=") (cast_expression "(char *)bfd_demangle(DAT_00225bd0,param_3,4)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "bfd_demangle(DAT_00225bd0,param_3,4)" (identifier "bfd_demangle") (argument_list "(DAT_00225bd0,param_3,4)" (( "(") (identifier "DAT_00225bd0") (, ",") (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_00114006:\n    if ((param_2 == (undefined8 *)0x0) || ((*(byte *)(param_2 + 2) & 1) != 0)) {\n      puVar5 = *(undefined8 **)(param_1 + 0x10);\n      goto joined_r0x0011412b;\n    }\n  }\n  else {\n    if (param_2 == (undefined8 *)0x0) {\nLAB_001140a8:\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_00114068;\n          puVar5 = (undefined8 *)*puVar5;\n        }\nLAB_00114240:\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_00114068;\n          puVar5 = (undefined8 *)*puVar5;\n        }\nLAB_001141e0:\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_00114068;\n          puVar5 = (undefined8 *)*puVar5;\n        }\n      }\n      goto LAB_00114006;\n    }\n    if ((*(byte *)(param_2 + 2) & 1) != 0) {\n      bVar2 = *(byte *)(param_2 + 2) >> 3 & 7;\n      if (bVar2 == 1) goto LAB_00114240;\n      if (bVar2 == 0) goto LAB_001140a8;\n      if (bVar2 != 2) goto LAB_00114006;\n      goto LAB_001141e0;\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_00114006:\n    if ((param_2 == (undefined8 *)0x0) || ((*(byte *)(param_2 + 2) & 1) != 0)) {\n      puVar5 = *(undefined8 **)(param_1 + 0x10);\n      goto joined_r0x0011412b;\n    }\n  }" ({ "{") (labeled_statement "LAB_00114006:\n    if ((param_2 == (undefined8 *)0x0) || ((*(byte *)(param_2 + 2) & 1) != 0)) {\n      puVar5 = *(undefined8 **)(param_1 + 0x10);\n      goto joined_r0x0011412b;\n    }" (statement_identifier "LAB_00114006") (: ":") (if_statement "if ((param_2 == (undefined8 *)0x0) || ((*(byte *)(param_2 + 2) & 1) != 0)) {\n      puVar5 = *(undefined8 **)(param_1 + 0x10);\n      goto joined_r0x0011412b;\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_r0x0011412b;\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_r0x0011412b;" (goto "goto") (statement_identifier "joined_r0x0011412b") (; ";")) (} "}")))) (} "}")) (else_clause "else {\n    if (param_2 == (undefined8 *)0x0) {\nLAB_001140a8:\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_00114068;\n          puVar5 = (undefined8 *)*puVar5;\n        }\nLAB_00114240:\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_00114068;\n          puVar5 = (undefined8 *)*puVar5;\n        }\nLAB_001141e0:\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_00114068;\n          puVar5 = (undefined8 *)*puVar5;\n        }\n      }\n      goto LAB_00114006;\n    }\n    if ((*(byte *)(param_2 + 2) & 1) != 0) {\n      bVar2 = *(byte *)(param_2 + 2) >> 3 & 7;\n      if (bVar2 == 1) goto LAB_00114240;\n      if (bVar2 == 0) goto LAB_001140a8;\n      if (bVar2 != 2) goto LAB_00114006;\n      goto LAB_001141e0;\n    }\n  }" (else "else") (compound_statement "{\n    if (param_2 == (undefined8 *)0x0) {\nLAB_001140a8:\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_00114068;\n          puVar5 = (undefined8 *)*puVar5;\n        }\nLAB_00114240:\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_00114068;\n          puVar5 = (undefined8 *)*puVar5;\n        }\nLAB_001141e0:\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_00114068;\n          puVar5 = (undefined8 *)*puVar5;\n        }\n      }\n      goto LAB_00114006;\n    }\n    if ((*(byte *)(param_2 + 2) & 1) != 0) {\n      bVar2 = *(byte *)(param_2 + 2) >> 3 & 7;\n      if (bVar2 == 1) goto LAB_00114240;\n      if (bVar2 == 0) goto LAB_001140a8;\n      if (bVar2 != 2) goto LAB_00114006;\n      goto LAB_001141e0;\n    }\n  }" ({ "{") (if_statement "if (param_2 == (undefined8 *)0x0) {\nLAB_001140a8:\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_00114068;\n          puVar5 = (undefined8 *)*puVar5;\n        }\nLAB_00114240:\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_00114068;\n          puVar5 = (undefined8 *)*puVar5;\n        }\nLAB_001141e0:\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_00114068;\n          puVar5 = (undefined8 *)*puVar5;\n        }\n      }\n      goto LAB_00114006;\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_001140a8:\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_00114068;\n          puVar5 = (undefined8 *)*puVar5;\n        }\nLAB_00114240:\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_00114068;\n          puVar5 = (undefined8 *)*puVar5;\n        }\nLAB_001141e0:\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_00114068;\n          puVar5 = (undefined8 *)*puVar5;\n        }\n      }\n      goto LAB_00114006;\n    }" ({ "{") (labeled_statement "LAB_001140a8:\n      uVar3 = *(uint *)(param_1 + 0x18);" (statement_identifier "LAB_001140a8") (: ":") (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_00114068;\n          puVar5 = (undefined8 *)*puVar5;\n        }\nLAB_00114240:\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_00114068;\n          puVar5 = (undefined8 *)*puVar5;\n        }\nLAB_00114240:\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_00114068;\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_00114068;\n          puVar5 = (undefined8 *)*puVar5;\n        }" ({ "{") (if_statement "if ((*(byte *)(puVar5 + 2) & 0x38) == 8) goto LAB_00114068;" (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_00114068;" (goto "goto") (statement_identifier "LAB_00114068") (; ";"))) (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_00114240:\n        uVar3 = *(uint *)(param_1 + 0x18);" (statement_identifier "LAB_00114240") (: ":") (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_00114068;\n          puVar5 = (undefined8 *)*puVar5;\n        }\nLAB_001141e0:\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_00114068;\n          puVar5 = (undefined8 *)*puVar5;\n        }\nLAB_001141e0:\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_00114068;\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_00114068;\n          puVar5 = (undefined8 *)*puVar5;\n        }" ({ "{") (if_statement "if ((*(byte *)(puVar5 + 2) & 0x38) == 0x10) goto LAB_00114068;" (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_00114068;" (goto "goto") (statement_identifier "LAB_00114068") (; ";"))) (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_001141e0:\n        uVar3 = *(uint *)(param_1 + 0x18);" (statement_identifier "LAB_001141e0") (: ":") (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_00114068;\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_00114068;\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_00114068;\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_00114068;\n          puVar5 = (undefined8 *)*puVar5;\n        }" ({ "{") (if_statement "if ((*(byte *)(puVar5 + 2) & 0x38) == 0x20) goto LAB_00114068;" (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_00114068;" (goto "goto") (statement_identifier "LAB_00114068") (; ";"))) (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_00114006;" (goto "goto") (statement_identifier "LAB_00114006") (; ";")) (} "}"))) (if_statement "if ((*(byte *)(param_2 + 2) & 1) != 0) {\n      bVar2 = *(byte *)(param_2 + 2) >> 3 & 7;\n      if (bVar2 == 1) goto LAB_00114240;\n      if (bVar2 == 0) goto LAB_001140a8;\n      if (bVar2 != 2) goto LAB_00114006;\n      goto LAB_001141e0;\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_00114240;\n      if (bVar2 == 0) goto LAB_001140a8;\n      if (bVar2 != 2) goto LAB_00114006;\n      goto LAB_001141e0;\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_00114240;" (if "if") (parenthesized_expression "(bVar2 == 1)" (( "(") (binary_expression "bVar2 == 1" (identifier "bVar2") (== "==") (number_literal "1")) () ")")) (goto_statement "goto LAB_00114240;" (goto "goto") (statement_identifier "LAB_00114240") (; ";"))) (if_statement "if (bVar2 == 0) goto LAB_001140a8;" (if "if") (parenthesized_expression "(bVar2 == 0)" (( "(") (binary_expression "bVar2 == 0" (identifier "bVar2") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_001140a8;" (goto "goto") (statement_identifier "LAB_001140a8") (; ";"))) (if_statement "if (bVar2 != 2) goto LAB_00114006;" (if "if") (parenthesized_expression "(bVar2 != 2)" (( "(") (binary_expression "bVar2 != 2" (identifier "bVar2") (!= "!=") (number_literal "2")) () ")")) (goto_statement "goto LAB_00114006;" (goto "goto") (statement_identifier "LAB_00114006") (; ";"))) (goto_statement "goto LAB_001141e0;" (goto "goto") (statement_identifier "LAB_001141e0") (; ";")) (} "}"))) (} "}")))) (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_r0x0011412b:\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_00114068;\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_00114068;\n    }\n  }" (statement_identifier "joined_r0x0011412b") (: ":") (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_00114068;\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_00114068;\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_00114068;\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_00114068;\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_00114068;\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_00114068;\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_00114068;\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_00114068;\n    }" ({ "{") (if_statement "if ((*__pattern == '*') && (__pattern[1] == '\0')) goto LAB_00114068;" (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_00114068;" (goto "goto") (statement_identifier "LAB_00114068") (; ";"))) (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_00114068;" (if "if") (parenthesized_expression "(iVar4 == 0)" (( "(") (binary_expression "iVar4 == 0" (identifier "iVar4") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_00114068;" (goto "goto") (statement_identifier "LAB_00114068") (; ";"))) (} "}"))) (} "}")))) (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_00114068:\n  if (__s2 != param_3) {\n    free(__s2);\n  }" (statement_identifier "LAB_00114068") (: ":") (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_00114006:
    if ((var_7 == (type_1 *)0x0) || ((var_7->field_0x10 & 1) != 0)) {
      var_9 = head->remaining;
      goto joined_r0x0011412b;
    }
  }
  else {
    if (var_7 == (type_1 *)0x0) {
LAB_001140a8:
      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_00114068;
          var_9 = var_9->next;
        }
LAB_00114240:
        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_00114068;
          var_9 = var_9->next;
        }
LAB_001141e0:
        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_00114068;
          var_9 = var_9->next;
        }
      }
      goto LAB_00114006;
    }
    if ((var_7->field_0x10 & 1) != 0) {
      var_12 = (type_4)var_7->field_0x10 >> 3 & 7;
      if (var_12 == 1) goto LAB_00114240;
      if (var_12 == 0) goto LAB_001140a8;
      if (var_12 != 2) goto LAB_00114006;
      goto LAB_001141e0;
    }
  }
  var_9 = var_7->next;
joined_r0x0011412b:
  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_00114068;
      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_00114068;
    }
  }
  var_9 = (type_1 *)0x0;
LAB_00114068:
  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_00225bd0,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_00225bd0,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_00225bd0,param_3,4), __s2_00 == (char *)0x0)) {
    __s2_00 = param_3;
  }
  if (*(long *)(param_1 + 8) == 0) {
LAB_00114006:
    if ((param_2 == (undefined8 *)0x0) || ((*(byte *)(param_2 + 2) & 1) != 0)) {
      puVar5 = *(undefined8 **)(param_1 + 0x10);
      goto joined_r0x0011412b;
    }
  }
  else {
    if (param_2 == (undefined8 *)0x0) {
LAB_001140a8:
      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_00114068;
          puVar5 = (undefined8 *)*puVar5;
        }
LAB_00114240:
        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_00114068;
          puVar5 = (undefined8 *)*puVar5;
        }
LAB_001141e0:
        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_00114068;
          puVar5 = (undefined8 *)*puVar5;
        }
      }
      goto LAB_00114006;
    }
    if ((*(byte *)(param_2 + 2) & 1) != 0) {
      bVar2 = *(byte *)(param_2 + 2) >> 3 & 7;
      if (bVar2 == 1) goto LAB_00114240;
      if (bVar2 == 0) goto LAB_001140a8;
      if (bVar2 != 2) goto LAB_00114006;
      goto LAB_001141e0;
    }
  }
  puVar5 = (undefined8 *)*param_2;
joined_r0x0011412b:
  for (; puVar5 != (undefined8 *)0x0; puVar5 = (undefined8 *)*puVar5) {
    __pattern = (char *)puVar5[1];
    if (__pattern != (char *)0x0) {
      if ((*__pattern == '*') && (__pattern[1] == '\0')) goto LAB_00114068;
      __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_00114068;
    }
  }
  puVar5 = (undefined8 *)0x0;
LAB_00114068:
  if (__s2 != param_3) {
    free(__s2);
  }
  if (__s2_01 != param_3) {
    free(__s2_01);
  }
  if (__s2_00 != param_3) {
    free(__s2_00);
  }
  return puVar5;
}

