
/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* WARNING: Unknown calling convention */

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

{
  undefined4 uVar1;
  char *__pattern;
  byte bVar2;
  char *__s2;
  uint uVar3;
  int iVar4;
  char *__s2_00;
  char *__name;
  bfd_elf_version_expr *pbVar5;
  char *local_34;
  bfd_elf_version_expr e;
  
  uVar1 = *(undefined4 *)PTR_current_demangling_style_00083f94;
  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;
  local_34 = sym;
  if ((uVar3 & 2) != 0) {
    local_34 = (char *)bfd_demangle(link_info.output_bfd,sym,3);
    uVar3 = head->mask;
    if (local_34 == (char *)0x0) {
      local_34 = 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_0001ed04:
    if ((prev == (bfd_elf_version_expr *)0x0) || ((prev->field_0x8 & 1) != 0)) {
      pbVar5 = head->remaining;
      goto joined_r0x0001ed23;
    }
  }
  else {
    if (prev == (bfd_elf_version_expr *)0x0) {
LAB_0001edc0:
      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_0x8 & 0x38) == 8) goto LAB_0001ed67;
          pbVar5 = pbVar5->next;
        }
LAB_0001ef70:
        uVar3 = head->mask;
      }
      if ((uVar3 & 2) != 0) {
        e.pattern = local_34;
        pbVar5 = (bfd_elf_version_expr *)htab_find(head->htab,&e);
        while ((pbVar5 != (bfd_elf_version_expr *)0x0 &&
               (iVar4 = strcmp(pbVar5->pattern,local_34), iVar4 == 0))) {
          if ((pbVar5->field_0x8 & 0x38) == 0x10) goto LAB_0001ed67;
          pbVar5 = pbVar5->next;
        }
LAB_0001ef0c:
        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_0x8 & 0x38) == 0x20) goto LAB_0001ed67;
          pbVar5 = pbVar5->next;
        }
      }
      goto LAB_0001ed04;
    }
    if ((prev->field_0x8 & 1) != 0) {
      bVar2 = (byte)prev->field_0x8 >> 3 & 7;
      if (bVar2 == 1) goto LAB_0001ef70;
      if (bVar2 == 0) goto LAB_0001edc0;
      if (bVar2 != 2) goto LAB_0001ed04;
      goto LAB_0001ef0c;
    }
  }
  pbVar5 = prev->next;
joined_r0x0001ed23:
  for (; pbVar5 != (bfd_elf_version_expr *)0x0; pbVar5 = pbVar5->next) {
    __pattern = pbVar5->pattern;
    if (__pattern != (char *)0x0) {
      if ((*__pattern == '*') && (__pattern[1] == '\0')) goto LAB_0001ed67;
      bVar2 = pbVar5->field_0x8 & 0x38;
      __name = __s2_00;
      if ((bVar2 != 0x20) && (__name = local_34, bVar2 != 0x10)) {
        __name = __s2;
      }
      iVar4 = fnmatch(__pattern,__name,0);
      if (iVar4 == 0) goto LAB_0001ed67;
    }
  }
  pbVar5 = (bfd_elf_version_expr *)0x0;
LAB_0001ed67:
  if (__s2 != sym) {
    free(__s2);
  }
  if (local_34 != sym) {
    free(local_34);
  }
  if (__s2_00 != sym) {
    free(__s2_00);
  }
  return pbVar5;
}



/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */

undefined4 * FUN_0001ec50(int param_1,undefined4 *param_2,char *param_3)

{
  undefined4 uVar1;
  char *__pattern;
  byte bVar2;
  char *__s2;
  uint uVar3;
  int iVar4;
  char *__s2_00;
  char *__name;
  undefined4 *puVar5;
  char *local_34;
  undefined1 local_28 [4];
  char *local_24;
  undefined4 uStack_14;
  
  uStack_14 = 0x1ec59;
  uVar1 = *(undefined4 *)PTR_current_demangling_style_00083f94;
  cplus_demangle_set_style(0xffffffff);
  __s2 = (char *)bfd_demangle(DAT_00084bf4,param_3,0);
  if (__s2 == (char *)0x0) {
    __s2 = param_3;
  }
  cplus_demangle_set_style(uVar1);
  uVar3 = *(uint *)(param_1 + 0xc);
  local_34 = param_3;
  if ((uVar3 & 2) != 0) {
    local_34 = (char *)bfd_demangle(DAT_00084bf4,param_3,3);
    uVar3 = *(uint *)(param_1 + 0xc);
    if (local_34 == (char *)0x0) {
      local_34 = param_3;
    }
  }
  if (((uVar3 & 4) == 0) ||
     (__s2_00 = (char *)bfd_demangle(DAT_00084bf4,param_3,4), __s2_00 == (char *)0x0)) {
    __s2_00 = param_3;
  }
  if (*(int *)(param_1 + 4) == 0) {
LAB_0001ed04:
    if ((param_2 == (undefined4 *)0x0) || ((*(byte *)(param_2 + 2) & 1) != 0)) {
      puVar5 = *(undefined4 **)(param_1 + 8);
      goto joined_r0x0001ed23;
    }
  }
  else {
    if (param_2 == (undefined4 *)0x0) {
LAB_0001edc0:
      uVar3 = *(uint *)(param_1 + 0xc);
      if ((uVar3 & 1) != 0) {
        local_24 = __s2;
        puVar5 = (undefined4 *)htab_find(*(int *)(param_1 + 4),local_28);
        while ((puVar5 != (undefined4 *)0x0 && (iVar4 = strcmp((char *)puVar5[1],__s2), iVar4 == 0))
              ) {
          if ((*(byte *)(puVar5 + 2) & 0x38) == 8) goto LAB_0001ed67;
          puVar5 = (undefined4 *)*puVar5;
        }
LAB_0001ef70:
        uVar3 = *(uint *)(param_1 + 0xc);
      }
      if ((uVar3 & 2) != 0) {
        local_24 = local_34;
        puVar5 = (undefined4 *)htab_find(*(undefined4 *)(param_1 + 4),local_28);
        while ((puVar5 != (undefined4 *)0x0 &&
               (iVar4 = strcmp((char *)puVar5[1],local_34), iVar4 == 0))) {
          if ((*(byte *)(puVar5 + 2) & 0x38) == 0x10) goto LAB_0001ed67;
          puVar5 = (undefined4 *)*puVar5;
        }
LAB_0001ef0c:
        uVar3 = *(uint *)(param_1 + 0xc);
      }
      if ((uVar3 & 4) != 0) {
        local_24 = __s2_00;
        puVar5 = (undefined4 *)htab_find(*(undefined4 *)(param_1 + 4),local_28);
        while ((puVar5 != (undefined4 *)0x0 &&
               (iVar4 = strcmp((char *)puVar5[1],__s2_00), iVar4 == 0))) {
          if ((*(byte *)(puVar5 + 2) & 0x38) == 0x20) goto LAB_0001ed67;
          puVar5 = (undefined4 *)*puVar5;
        }
      }
      goto LAB_0001ed04;
    }
    if ((*(byte *)(param_2 + 2) & 1) != 0) {
      bVar2 = *(byte *)(param_2 + 2) >> 3 & 7;
      if (bVar2 == 1) goto LAB_0001ef70;
      if (bVar2 == 0) goto LAB_0001edc0;
      if (bVar2 != 2) goto LAB_0001ed04;
      goto LAB_0001ef0c;
    }
  }
  puVar5 = (undefined4 *)*param_2;
joined_r0x0001ed23:
  for (; puVar5 != (undefined4 *)0x0; puVar5 = (undefined4 *)*puVar5) {
    __pattern = (char *)puVar5[1];
    if (__pattern != (char *)0x0) {
      if ((*__pattern == '*') && (__pattern[1] == '\0')) goto LAB_0001ed67;
      __name = __s2_00;
      if (((*(byte *)(puVar5 + 2) & 0x38) != 0x20) &&
         (__name = local_34, (*(byte *)(puVar5 + 2) & 0x38) != 0x10)) {
        __name = __s2;
      }
      iVar4 = fnmatch(__pattern,__name,0);
      if (iVar4 == 0) goto LAB_0001ed67;
    }
  }
  puVar5 = (undefined4 *)0x0;
LAB_0001ed67:
  if (__s2 != param_3) {
    free(__s2);
  }
  if (local_34 != param_3) {
    free(local_34);
  }
  if (__s2_00 != param_3) {
    free(__s2_00);
  }
  return puVar5;
}


PUSH EBP
PUSH EDI
PUSH ESI
PUSH EBX
CALL 0x000159c0
ADD EBX,0x653a7
SUB ESP,0x38
MOV EAX,dword ptr [EBX + 0xffffff94]
MOV EDI,dword ptr [EAX]
PUSH -0x1
CALL 0x00014220
LEA ESI,[EBX + 0xbc0]
ADD ESP,0xc
PUSH 0x0
PUSH dword ptr [ESP + 0x50]
PUSH dword ptr [ESI + 0x34]
CALL 0x00014890
MOV dword ptr [ESP],EDI
TEST EAX,EAX
MOV EBP,EAX
CMOVZ EBP,dword ptr [ESP + 0x58]
CALL 0x00014220
MOV EAX,dword ptr [ESP + 0x50]
ADD ESP,0x10
MOV EDI,dword ptr [ESP + 0x48]
MOV EAX,dword ptr [EAX + 0xc]
MOV dword ptr [ESP + 0x8],EDI
TEST AL,0x2
JNZ 0x0001ee78
TEST AL,0x4
JNZ 0x0001ee50
MOV EDI,dword ptr [ESP + 0x48]
MOV EAX,dword ptr [ESP + 0x40]
MOV EDX,dword ptr [EAX + 0x4]
TEST EDX,EDX
JZ 0x0001ed04
MOV ECX,dword ptr [ESP + 0x44]
TEST ECX,ECX
JZ 0x0001edc0
MOV EAX,dword ptr [ESP + 0x44]
MOVZX EAX,byte ptr [EAX + 0x8]
TEST AL,0x1
JZ 0x0001ee40
SHR AL,0x3
AND EAX,0x7
CMP AL,0x1
JZ 0x0001ef70
TEST AL,AL
JZ 0x0001edc0
CMP AL,0x2
JZ 0x0001ef0c
MOV EAX,dword ptr [ESP + 0x44]
TEST EAX,EAX
JZ 0x0001ed1a
MOV EAX,dword ptr [ESP + 0x44]
TEST byte ptr [EAX + 0x8],0x1
JZ 0x0001ee40
MOV EAX,dword ptr [ESP + 0x40]
MOV ESI,dword ptr [EAX + 0x8]
TEST ESI,ESI
JZ 0x0001ed65
LEA ESI,[ESI]
MOV EAX,dword ptr [ESI + 0x4]
TEST EAX,EAX
JZ 0x0001ed5f
CMP byte ptr [EAX],0x2a
JZ 0x0001edb0
MOVZX EDX,byte ptr [ESI + 0x8]
MOV ECX,EDI
AND EDX,0x38
CMP DL,0x20
JZ 0x0001ed4c
MOV ECX,dword ptr [ESP + 0x8]
CMP DL,0x10
CMOVNZ ECX,EBP
SUB ESP,0x4
PUSH 0x0
PUSH ECX
PUSH EAX
CALL 0x000143f0
ADD ESP,0x10
TEST EAX,EAX
JZ 0x0001ed67
MOV ESI,dword ptr [ESI]
TEST ESI,ESI
JNZ 0x0001ed28
XOR ESI,ESI
CMP EBP,dword ptr [ESP + 0x48]
JZ 0x0001ed79
SUB ESP,0xc
PUSH EBP
CALL 0x00014c10
ADD ESP,0x10
MOV EAX,dword ptr [ESP + 0x8]
CMP EAX,dword ptr [ESP + 0x48]
JZ 0x0001ed8f
SUB ESP,0xc
PUSH EAX
CALL 0x00014c10
ADD ESP,0x10
CMP EDI,dword ptr [ESP + 0x48]
JZ 0x0001eda1
SUB ESP,0xc
PUSH EDI
CALL 0x00014c10
ADD ESP,0x10
ADD ESP,0x2c
MOV EAX,ESI
POP EBX
POP ESI
POP EDI
POP EBP
RET
CMP byte ptr [EAX + 0x1],0x0
JNZ 0x0001ed34
JMP 0x0001ed67
MOV EAX,dword ptr [ESP + 0x40]
MOV EAX,dword ptr [EAX + 0xc]
TEST AL,0x1
JNZ 0x0001ef20
TEST AL,0x2
JNZ 0x0001eeac
TEST AL,0x4
JZ 0x0001ed04
MOV dword ptr [ESP + 0x18],EDI
SUB ESP,0x8
LEA EAX,[ESP + 0x1c]
PUSH EAX
MOV EAX,dword ptr [ESP + 0x4c]
PUSH dword ptr [EAX + 0x4]
CALL 0x000149d0
ADD ESP,0x10
MOV ESI,EAX
TEST EAX,EAX
JNZ 0x0001ee21
JMP 0x0001ed04
MOVZX EAX,byte ptr [ESI + 0x8]
AND EAX,0x38
CMP AL,0x20
JZ 0x0001ed67
MOV ESI,dword ptr [ESI]
TEST ESI,ESI
JZ 0x0001ed04
SUB ESP,0x8
PUSH EDI
PUSH dword ptr [ESI + 0x4]
CALL 0x000140c0
ADD ESP,0x10
TEST EAX,EAX
JZ 0x0001ee08
JMP 0x0001ed04
MOV EAX,dword ptr [ESP + 0x44]
MOV ESI,dword ptr [EAX]
JMP 0x0001ed21
SUB ESP,0x4
PUSH 0x4
PUSH dword ptr [ESP + 0x50]
PUSH dword ptr [ESI + 0x34]
CALL 0x00014890
ADD ESP,0x10
MOV EDI,EAX
TEST EAX,EAX
JNZ 0x0001ecbf
JMP 0x0001ecbb
SUB ESP,0x4
PUSH 0x3
PUSH dword ptr [ESP + 0x50]
PUSH dword ptr [ESI + 0x34]
CALL 0x00014890
MOV dword ptr [ESP + 0x18],EAX
ADD ESP,0x10
TEST EAX,EAX
MOV EAX,dword ptr [ESP + 0x40]
MOV EAX,dword ptr [EAX + 0xc]
JNZ 0x0001ecb3
MOV EDI,dword ptr [ESP + 0x48]
MOV dword ptr [ESP + 0x8],EDI
JMP 0x0001ecb3
MOV EAX,dword ptr [ESP + 0x8]
SUB ESP,0x8
MOV dword ptr [ESP + 0x20],EAX
LEA EAX,[ESP + 0x1c]
PUSH EAX
MOV EAX,dword ptr [ESP + 0x4c]
PUSH dword ptr [EAX + 0x4]
CALL 0x000149d0
ADD ESP,0x10
TEST EAX,EAX
JZ 0x0001ef0c
MOV dword ptr [ESP + 0xc],EDI
MOV ESI,dword ptr [ESP + 0x8]
MOV EDI,EAX
JMP 0x0001eef5
MOVZX EAX,byte ptr [EDI + 0x8]
AND EAX,0x38
CMP AL,0x10
JZ 0x0001ef84
MOV EDI,dword ptr [EDI]
TEST EDI,EDI
JZ 0x0001ef08
SUB ESP,0x8
PUSH ESI
PUSH dword ptr [EDI + 0x4]
CALL 0x000140c0
ADD ESP,0x10
TEST EAX,EAX
JZ 0x0001eee0
MOV EDI,dword ptr [ESP + 0xc]
MOV EAX,dword ptr [ESP + 0x40]
MOV EAX,dword ptr [EAX + 0xc]
TEST AL,0x4
JZ 0x0001ed04
JMP 0x0001eddf
MOV dword ptr [ESP + 0x18],EBP
SUB ESP,0x8
LEA EAX,[ESP + 0x1c]
PUSH EAX
PUSH EDX
CALL 0x000149d0
ADD ESP,0x10
MOV ESI,EAX
TEST EAX,EAX
JNZ 0x0001ef55
JMP 0x0001ef70
MOVZX EAX,byte ptr [ESI + 0x8]
AND EAX,0x38
CMP AL,0x8
JZ 0x0001ed67
MOV ESI,dword ptr [ESI]
TEST ESI,ESI
JZ 0x0001ef70
SUB ESP,0x8
PUSH EBP
PUSH dword ptr [ESI + 0x4]
CALL 0x000140c0
ADD ESP,0x10
TEST EAX,EAX
JZ 0x0001ef40
LEA ESI,[ESI]
NOP
MOV EAX,dword ptr [ESP + 0x40]
MOV EAX,dword ptr [EAX + 0xc]
TEST AL,0x2
JZ 0x0001edd7
JMP 0x0001eeac
MOV ESI,EDI
MOV EDI,dword ptr [ESP + 0xc]
JMP 0x0001ed67
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nundefined4 * FUN_0001ec50(int param_1,undefined4 *param_2,char *param_3)\n\n{\n  undefined4 uVar1;\n  char *__pattern;\n  byte bVar2;\n  char *__s2;\n  uint uVar3;\n  int iVar4;\n  char *__s2_00;\n  char *__name;\n  undefined4 *puVar5;\n  char *local_34;\n  undefined1 local_28 [4];\n  char *local_24;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x1ec59;\n  uVar1 = *(undefined4 *)PTR_current_demangling_style_00083f94;\n  cplus_demangle_set_style(0xffffffff);\n  __s2 = (char *)bfd_demangle(DAT_00084bf4,param_3,0);\n  if (__s2 == (char *)0x0) {\n    __s2 = param_3;\n  }\n  cplus_demangle_set_style(uVar1);\n  uVar3 = *(uint *)(param_1 + 0xc);\n  local_34 = param_3;\n  if ((uVar3 & 2) != 0) {\n    local_34 = (char *)bfd_demangle(DAT_00084bf4,param_3,3);\n    uVar3 = *(uint *)(param_1 + 0xc);\n    if (local_34 == (char *)0x0) {\n      local_34 = param_3;\n    }\n  }\n  if (((uVar3 & 4) == 0) ||\n     (__s2_00 = (char *)bfd_demangle(DAT_00084bf4,param_3,4), __s2_00 == (char *)0x0)) {\n    __s2_00 = param_3;\n  }\n  if (*(int *)(param_1 + 4) == 0) {\nLAB_0001ed04:\n    if ((param_2 == (undefined4 *)0x0) || ((*(byte *)(param_2 + 2) & 1) != 0)) {\n      puVar5 = *(undefined4 **)(param_1 + 8);\n      goto joined_r0x0001ed23;\n    }\n  }\n  else {\n    if (param_2 == (undefined4 *)0x0) {\nLAB_0001edc0:\n      uVar3 = *(uint *)(param_1 + 0xc);\n      if ((uVar3 & 1) != 0) {\n        local_24 = __s2;\n        puVar5 = (undefined4 *)htab_find(*(int *)(param_1 + 4),local_28);\n        while ((puVar5 != (undefined4 *)0x0 && (iVar4 = strcmp((char *)puVar5[1],__s2), iVar4 == 0))\n              ) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 8) goto LAB_0001ed67;\n          puVar5 = (undefined4 *)*puVar5;\n        }\nLAB_0001ef70:\n        uVar3 = *(uint *)(param_1 + 0xc);\n      }\n      if ((uVar3 & 2) != 0) {\n        local_24 = local_34;\n        puVar5 = (undefined4 *)htab_find(*(undefined4 *)(param_1 + 4),local_28);\n        while ((puVar5 != (undefined4 *)0x0 &&\n               (iVar4 = strcmp((char *)puVar5[1],local_34), iVar4 == 0))) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 0x10) goto LAB_0001ed67;\n          puVar5 = (undefined4 *)*puVar5;\n        }\nLAB_0001ef0c:\n        uVar3 = *(uint *)(param_1 + 0xc);\n      }\n      if ((uVar3 & 4) != 0) {\n        local_24 = __s2_00;\n        puVar5 = (undefined4 *)htab_find(*(undefined4 *)(param_1 + 4),local_28);\n        while ((puVar5 != (undefined4 *)0x0 &&\n               (iVar4 = strcmp((char *)puVar5[1],__s2_00), iVar4 == 0))) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 0x20) goto LAB_0001ed67;\n          puVar5 = (undefined4 *)*puVar5;\n        }\n      }\n      goto LAB_0001ed04;\n    }\n    if ((*(byte *)(param_2 + 2) & 1) != 0) {\n      bVar2 = *(byte *)(param_2 + 2) >> 3 & 7;\n      if (bVar2 == 1) goto LAB_0001ef70;\n      if (bVar2 == 0) goto LAB_0001edc0;\n      if (bVar2 != 2) goto LAB_0001ed04;\n      goto LAB_0001ef0c;\n    }\n  }\n  puVar5 = (undefined4 *)*param_2;\njoined_r0x0001ed23:\n  for (; puVar5 != (undefined4 *)0x0; puVar5 = (undefined4 *)*puVar5) {\n    __pattern = (char *)puVar5[1];\n    if (__pattern != (char *)0x0) {\n      if ((*__pattern == '*') && (__pattern[1] == '\0')) goto LAB_0001ed67;\n      __name = __s2_00;\n      if (((*(byte *)(puVar5 + 2) & 0x38) != 0x20) &&\n         (__name = local_34, (*(byte *)(puVar5 + 2) & 0x38) != 0x10)) {\n        __name = __s2;\n      }\n      iVar4 = fnmatch(__pattern,__name,0);\n      if (iVar4 == 0) goto LAB_0001ed67;\n    }\n  }\n  puVar5 = (undefined4 *)0x0;\nLAB_0001ed67:\n  if (__s2 != param_3) {\n    free(__s2);\n  }\n  if (local_34 != param_3) {\n    free(local_34);\n  }\n  if (__s2_00 != param_3) {\n    free(__s2_00);\n  }\n  return puVar5;\n}\n\n" comment (function_definition "undefined4 * FUN_0001ec50(int param_1,undefined4 *param_2,char *param_3)\n\n{\n  undefined4 uVar1;\n  char *__pattern;\n  byte bVar2;\n  char *__s2;\n  uint uVar3;\n  int iVar4;\n  char *__s2_00;\n  char *__name;\n  undefined4 *puVar5;\n  char *local_34;\n  undefined1 local_28 [4];\n  char *local_24;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x1ec59;\n  uVar1 = *(undefined4 *)PTR_current_demangling_style_00083f94;\n  cplus_demangle_set_style(0xffffffff);\n  __s2 = (char *)bfd_demangle(DAT_00084bf4,param_3,0);\n  if (__s2 == (char *)0x0) {\n    __s2 = param_3;\n  }\n  cplus_demangle_set_style(uVar1);\n  uVar3 = *(uint *)(param_1 + 0xc);\n  local_34 = param_3;\n  if ((uVar3 & 2) != 0) {\n    local_34 = (char *)bfd_demangle(DAT_00084bf4,param_3,3);\n    uVar3 = *(uint *)(param_1 + 0xc);\n    if (local_34 == (char *)0x0) {\n      local_34 = param_3;\n    }\n  }\n  if (((uVar3 & 4) == 0) ||\n     (__s2_00 = (char *)bfd_demangle(DAT_00084bf4,param_3,4), __s2_00 == (char *)0x0)) {\n    __s2_00 = param_3;\n  }\n  if (*(int *)(param_1 + 4) == 0) {\nLAB_0001ed04:\n    if ((param_2 == (undefined4 *)0x0) || ((*(byte *)(param_2 + 2) & 1) != 0)) {\n      puVar5 = *(undefined4 **)(param_1 + 8);\n      goto joined_r0x0001ed23;\n    }\n  }\n  else {\n    if (param_2 == (undefined4 *)0x0) {\nLAB_0001edc0:\n      uVar3 = *(uint *)(param_1 + 0xc);\n      if ((uVar3 & 1) != 0) {\n        local_24 = __s2;\n        puVar5 = (undefined4 *)htab_find(*(int *)(param_1 + 4),local_28);\n        while ((puVar5 != (undefined4 *)0x0 && (iVar4 = strcmp((char *)puVar5[1],__s2), iVar4 == 0))\n              ) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 8) goto LAB_0001ed67;\n          puVar5 = (undefined4 *)*puVar5;\n        }\nLAB_0001ef70:\n        uVar3 = *(uint *)(param_1 + 0xc);\n      }\n      if ((uVar3 & 2) != 0) {\n        local_24 = local_34;\n        puVar5 = (undefined4 *)htab_find(*(undefined4 *)(param_1 + 4),local_28);\n        while ((puVar5 != (undefined4 *)0x0 &&\n               (iVar4 = strcmp((char *)puVar5[1],local_34), iVar4 == 0))) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 0x10) goto LAB_0001ed67;\n          puVar5 = (undefined4 *)*puVar5;\n        }\nLAB_0001ef0c:\n        uVar3 = *(uint *)(param_1 + 0xc);\n      }\n      if ((uVar3 & 4) != 0) {\n        local_24 = __s2_00;\n        puVar5 = (undefined4 *)htab_find(*(undefined4 *)(param_1 + 4),local_28);\n        while ((puVar5 != (undefined4 *)0x0 &&\n               (iVar4 = strcmp((char *)puVar5[1],__s2_00), iVar4 == 0))) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 0x20) goto LAB_0001ed67;\n          puVar5 = (undefined4 *)*puVar5;\n        }\n      }\n      goto LAB_0001ed04;\n    }\n    if ((*(byte *)(param_2 + 2) & 1) != 0) {\n      bVar2 = *(byte *)(param_2 + 2) >> 3 & 7;\n      if (bVar2 == 1) goto LAB_0001ef70;\n      if (bVar2 == 0) goto LAB_0001edc0;\n      if (bVar2 != 2) goto LAB_0001ed04;\n      goto LAB_0001ef0c;\n    }\n  }\n  puVar5 = (undefined4 *)*param_2;\njoined_r0x0001ed23:\n  for (; puVar5 != (undefined4 *)0x0; puVar5 = (undefined4 *)*puVar5) {\n    __pattern = (char *)puVar5[1];\n    if (__pattern != (char *)0x0) {\n      if ((*__pattern == '*') && (__pattern[1] == '\0')) goto LAB_0001ed67;\n      __name = __s2_00;\n      if (((*(byte *)(puVar5 + 2) & 0x38) != 0x20) &&\n         (__name = local_34, (*(byte *)(puVar5 + 2) & 0x38) != 0x10)) {\n        __name = __s2;\n      }\n      iVar4 = fnmatch(__pattern,__name,0);\n      if (iVar4 == 0) goto LAB_0001ed67;\n    }\n  }\n  puVar5 = (undefined4 *)0x0;\nLAB_0001ed67:\n  if (__s2 != param_3) {\n    free(__s2);\n  }\n  if (local_34 != param_3) {\n    free(local_34);\n  }\n  if (__s2_00 != param_3) {\n    free(__s2_00);\n  }\n  return puVar5;\n}" type_identifier (pointer_declarator "* FUN_0001ec50(int param_1,undefined4 *param_2,char *param_3)" * (function_declarator "FUN_0001ec50(int param_1,undefined4 *param_2,char *param_3)" identifier (parameter_list "(int param_1,undefined4 *param_2,char *param_3)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "undefined4 *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "char *param_3" primitive_type (pointer_declarator "*param_3" * identifier)) )))) (compound_statement "{\n  undefined4 uVar1;\n  char *__pattern;\n  byte bVar2;\n  char *__s2;\n  uint uVar3;\n  int iVar4;\n  char *__s2_00;\n  char *__name;\n  undefined4 *puVar5;\n  char *local_34;\n  undefined1 local_28 [4];\n  char *local_24;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x1ec59;\n  uVar1 = *(undefined4 *)PTR_current_demangling_style_00083f94;\n  cplus_demangle_set_style(0xffffffff);\n  __s2 = (char *)bfd_demangle(DAT_00084bf4,param_3,0);\n  if (__s2 == (char *)0x0) {\n    __s2 = param_3;\n  }\n  cplus_demangle_set_style(uVar1);\n  uVar3 = *(uint *)(param_1 + 0xc);\n  local_34 = param_3;\n  if ((uVar3 & 2) != 0) {\n    local_34 = (char *)bfd_demangle(DAT_00084bf4,param_3,3);\n    uVar3 = *(uint *)(param_1 + 0xc);\n    if (local_34 == (char *)0x0) {\n      local_34 = param_3;\n    }\n  }\n  if (((uVar3 & 4) == 0) ||\n     (__s2_00 = (char *)bfd_demangle(DAT_00084bf4,param_3,4), __s2_00 == (char *)0x0)) {\n    __s2_00 = param_3;\n  }\n  if (*(int *)(param_1 + 4) == 0) {\nLAB_0001ed04:\n    if ((param_2 == (undefined4 *)0x0) || ((*(byte *)(param_2 + 2) & 1) != 0)) {\n      puVar5 = *(undefined4 **)(param_1 + 8);\n      goto joined_r0x0001ed23;\n    }\n  }\n  else {\n    if (param_2 == (undefined4 *)0x0) {\nLAB_0001edc0:\n      uVar3 = *(uint *)(param_1 + 0xc);\n      if ((uVar3 & 1) != 0) {\n        local_24 = __s2;\n        puVar5 = (undefined4 *)htab_find(*(int *)(param_1 + 4),local_28);\n        while ((puVar5 != (undefined4 *)0x0 && (iVar4 = strcmp((char *)puVar5[1],__s2), iVar4 == 0))\n              ) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 8) goto LAB_0001ed67;\n          puVar5 = (undefined4 *)*puVar5;\n        }\nLAB_0001ef70:\n        uVar3 = *(uint *)(param_1 + 0xc);\n      }\n      if ((uVar3 & 2) != 0) {\n        local_24 = local_34;\n        puVar5 = (undefined4 *)htab_find(*(undefined4 *)(param_1 + 4),local_28);\n        while ((puVar5 != (undefined4 *)0x0 &&\n               (iVar4 = strcmp((char *)puVar5[1],local_34), iVar4 == 0))) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 0x10) goto LAB_0001ed67;\n          puVar5 = (undefined4 *)*puVar5;\n        }\nLAB_0001ef0c:\n        uVar3 = *(uint *)(param_1 + 0xc);\n      }\n      if ((uVar3 & 4) != 0) {\n        local_24 = __s2_00;\n        puVar5 = (undefined4 *)htab_find(*(undefined4 *)(param_1 + 4),local_28);\n        while ((puVar5 != (undefined4 *)0x0 &&\n               (iVar4 = strcmp((char *)puVar5[1],__s2_00), iVar4 == 0))) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 0x20) goto LAB_0001ed67;\n          puVar5 = (undefined4 *)*puVar5;\n        }\n      }\n      goto LAB_0001ed04;\n    }\n    if ((*(byte *)(param_2 + 2) & 1) != 0) {\n      bVar2 = *(byte *)(param_2 + 2) >> 3 & 7;\n      if (bVar2 == 1) goto LAB_0001ef70;\n      if (bVar2 == 0) goto LAB_0001edc0;\n      if (bVar2 != 2) goto LAB_0001ed04;\n      goto LAB_0001ef0c;\n    }\n  }\n  puVar5 = (undefined4 *)*param_2;\njoined_r0x0001ed23:\n  for (; puVar5 != (undefined4 *)0x0; puVar5 = (undefined4 *)*puVar5) {\n    __pattern = (char *)puVar5[1];\n    if (__pattern != (char *)0x0) {\n      if ((*__pattern == '*') && (__pattern[1] == '\0')) goto LAB_0001ed67;\n      __name = __s2_00;\n      if (((*(byte *)(puVar5 + 2) & 0x38) != 0x20) &&\n         (__name = local_34, (*(byte *)(puVar5 + 2) & 0x38) != 0x10)) {\n        __name = __s2;\n      }\n      iVar4 = fnmatch(__pattern,__name,0);\n      if (iVar4 == 0) goto LAB_0001ed67;\n    }\n  }\n  puVar5 = (undefined4 *)0x0;\nLAB_0001ed67:\n  if (__s2 != param_3) {\n    free(__s2);\n  }\n  if (local_34 != param_3) {\n    free(local_34);\n  }\n  if (__s2_00 != param_3) {\n    free(__s2_00);\n  }\n  return puVar5;\n}" { (declaration "undefined4 uVar1;" type_identifier identifier ;) (declaration "char *__pattern;" primitive_type (pointer_declarator "*__pattern" * identifier) ;) (declaration "byte bVar2;" type_identifier identifier ;) (declaration "char *__s2;" primitive_type (pointer_declarator "*__s2" * identifier) ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "char *__s2_00;" primitive_type (pointer_declarator "*__s2_00" * identifier) ;) (declaration "char *__name;" primitive_type (pointer_declarator "*__name" * identifier) ;) (declaration "undefined4 *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "char *local_34;" primitive_type (pointer_declarator "*local_34" * identifier) ;) (declaration "undefined1 local_28 [4];" type_identifier (array_declarator "local_28 [4]" identifier [ number_literal ]) ;) (declaration "char *local_24;" primitive_type (pointer_declarator "*local_24" * identifier) ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (expression_statement "uStack_14 = 0x1ec59;" (assignment_expression "uStack_14 = 0x1ec59" identifier = number_literal) ;) (expression_statement "uVar1 = *(undefined4 *)PTR_current_demangling_style_00083f94;" (assignment_expression "uVar1 = *(undefined4 *)PTR_current_demangling_style_00083f94" identifier = (pointer_expression "*(undefined4 *)PTR_current_demangling_style_00083f94" * (cast_expression "(undefined4 *)PTR_current_demangling_style_00083f94" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) 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_00084bf4,param_3,0);" (assignment_expression "__s2 = (char *)bfd_demangle(DAT_00084bf4,param_3,0)" identifier = (cast_expression "(char *)bfd_demangle(DAT_00084bf4,param_3,0)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "bfd_demangle(DAT_00084bf4,param_3,0)" identifier (argument_list "(DAT_00084bf4,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 + 0xc);" (assignment_expression "uVar3 = *(uint *)(param_1 + 0xc)" identifier = (pointer_expression "*(uint *)(param_1 + 0xc)" * (cast_expression "(uint *)(param_1 + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "local_34 = param_3;" (assignment_expression "local_34 = param_3" identifier = identifier) ;) (if_statement "if ((uVar3 & 2) != 0) {\n    local_34 = (char *)bfd_demangle(DAT_00084bf4,param_3,3);\n    uVar3 = *(uint *)(param_1 + 0xc);\n    if (local_34 == (char *)0x0) {\n      local_34 = 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    local_34 = (char *)bfd_demangle(DAT_00084bf4,param_3,3);\n    uVar3 = *(uint *)(param_1 + 0xc);\n    if (local_34 == (char *)0x0) {\n      local_34 = param_3;\n    }\n  }" { (expression_statement "local_34 = (char *)bfd_demangle(DAT_00084bf4,param_3,3);" (assignment_expression "local_34 = (char *)bfd_demangle(DAT_00084bf4,param_3,3)" identifier = (cast_expression "(char *)bfd_demangle(DAT_00084bf4,param_3,3)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "bfd_demangle(DAT_00084bf4,param_3,3)" identifier (argument_list "(DAT_00084bf4,param_3,3)" ( identifier , identifier , number_literal ))))) ;) (expression_statement "uVar3 = *(uint *)(param_1 + 0xc);" (assignment_expression "uVar3 = *(uint *)(param_1 + 0xc)" identifier = (pointer_expression "*(uint *)(param_1 + 0xc)" * (cast_expression "(uint *)(param_1 + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) ))))) ;) (if_statement "if (local_34 == (char *)0x0) {\n      local_34 = param_3;\n    }" if (parenthesized_expression "(local_34 == (char *)0x0)" ( (binary_expression "local_34 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      local_34 = param_3;\n    }" { (expression_statement "local_34 = param_3;" (assignment_expression "local_34 = param_3" identifier = identifier) ;) })) })) (if_statement "if (((uVar3 & 4) == 0) ||\n     (__s2_00 = (char *)bfd_demangle(DAT_00084bf4,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_00084bf4,param_3,4), __s2_00 == (char *)0x0))" ( (binary_expression "((uVar3 & 4) == 0) ||\n     (__s2_00 = (char *)bfd_demangle(DAT_00084bf4,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_00084bf4,param_3,4), __s2_00 == (char *)0x0)" ( (comma_expression "__s2_00 = (char *)bfd_demangle(DAT_00084bf4,param_3,4), __s2_00 == (char *)0x0" (assignment_expression "__s2_00 = (char *)bfd_demangle(DAT_00084bf4,param_3,4)" identifier = (cast_expression "(char *)bfd_demangle(DAT_00084bf4,param_3,4)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "bfd_demangle(DAT_00084bf4,param_3,4)" identifier (argument_list "(DAT_00084bf4,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 (*(int *)(param_1 + 4) == 0) {\nLAB_0001ed04:\n    if ((param_2 == (undefined4 *)0x0) || ((*(byte *)(param_2 + 2) & 1) != 0)) {\n      puVar5 = *(undefined4 **)(param_1 + 8);\n      goto joined_r0x0001ed23;\n    }\n  }\n  else {\n    if (param_2 == (undefined4 *)0x0) {\nLAB_0001edc0:\n      uVar3 = *(uint *)(param_1 + 0xc);\n      if ((uVar3 & 1) != 0) {\n        local_24 = __s2;\n        puVar5 = (undefined4 *)htab_find(*(int *)(param_1 + 4),local_28);\n        while ((puVar5 != (undefined4 *)0x0 && (iVar4 = strcmp((char *)puVar5[1],__s2), iVar4 == 0))\n              ) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 8) goto LAB_0001ed67;\n          puVar5 = (undefined4 *)*puVar5;\n        }\nLAB_0001ef70:\n        uVar3 = *(uint *)(param_1 + 0xc);\n      }\n      if ((uVar3 & 2) != 0) {\n        local_24 = local_34;\n        puVar5 = (undefined4 *)htab_find(*(undefined4 *)(param_1 + 4),local_28);\n        while ((puVar5 != (undefined4 *)0x0 &&\n               (iVar4 = strcmp((char *)puVar5[1],local_34), iVar4 == 0))) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 0x10) goto LAB_0001ed67;\n          puVar5 = (undefined4 *)*puVar5;\n        }\nLAB_0001ef0c:\n        uVar3 = *(uint *)(param_1 + 0xc);\n      }\n      if ((uVar3 & 4) != 0) {\n        local_24 = __s2_00;\n        puVar5 = (undefined4 *)htab_find(*(undefined4 *)(param_1 + 4),local_28);\n        while ((puVar5 != (undefined4 *)0x0 &&\n               (iVar4 = strcmp((char *)puVar5[1],__s2_00), iVar4 == 0))) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 0x20) goto LAB_0001ed67;\n          puVar5 = (undefined4 *)*puVar5;\n        }\n      }\n      goto LAB_0001ed04;\n    }\n    if ((*(byte *)(param_2 + 2) & 1) != 0) {\n      bVar2 = *(byte *)(param_2 + 2) >> 3 & 7;\n      if (bVar2 == 1) goto LAB_0001ef70;\n      if (bVar2 == 0) goto LAB_0001edc0;\n      if (bVar2 != 2) goto LAB_0001ed04;\n      goto LAB_0001ef0c;\n    }\n  }" if (parenthesized_expression "(*(int *)(param_1 + 4) == 0)" ( (binary_expression "*(int *)(param_1 + 4) == 0" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\nLAB_0001ed04:\n    if ((param_2 == (undefined4 *)0x0) || ((*(byte *)(param_2 + 2) & 1) != 0)) {\n      puVar5 = *(undefined4 **)(param_1 + 8);\n      goto joined_r0x0001ed23;\n    }\n  }" { (labeled_statement "LAB_0001ed04:\n    if ((param_2 == (undefined4 *)0x0) || ((*(byte *)(param_2 + 2) & 1) != 0)) {\n      puVar5 = *(undefined4 **)(param_1 + 8);\n      goto joined_r0x0001ed23;\n    }" statement_identifier : (if_statement "if ((param_2 == (undefined4 *)0x0) || ((*(byte *)(param_2 + 2) & 1) != 0)) {\n      puVar5 = *(undefined4 **)(param_1 + 8);\n      goto joined_r0x0001ed23;\n    }" if (parenthesized_expression "((param_2 == (undefined4 *)0x0) || ((*(byte *)(param_2 + 2) & 1) != 0))" ( (binary_expression "(param_2 == (undefined4 *)0x0) || ((*(byte *)(param_2 + 2) & 1) != 0)" (parenthesized_expression "(param_2 == (undefined4 *)0x0)" ( (binary_expression "param_2 == (undefined4 *)0x0" identifier == (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" 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 = *(undefined4 **)(param_1 + 8);\n      goto joined_r0x0001ed23;\n    }" { (expression_statement "puVar5 = *(undefined4 **)(param_1 + 8);" (assignment_expression "puVar5 = *(undefined4 **)(param_1 + 8)" identifier = (pointer_expression "*(undefined4 **)(param_1 + 8)" * (cast_expression "(undefined4 **)(param_1 + 8)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) ))))) ;) (goto_statement "goto joined_r0x0001ed23;" goto statement_identifier ;) }))) }) (else_clause "else {\n    if (param_2 == (undefined4 *)0x0) {\nLAB_0001edc0:\n      uVar3 = *(uint *)(param_1 + 0xc);\n      if ((uVar3 & 1) != 0) {\n        local_24 = __s2;\n        puVar5 = (undefined4 *)htab_find(*(int *)(param_1 + 4),local_28);\n        while ((puVar5 != (undefined4 *)0x0 && (iVar4 = strcmp((char *)puVar5[1],__s2), iVar4 == 0))\n              ) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 8) goto LAB_0001ed67;\n          puVar5 = (undefined4 *)*puVar5;\n        }\nLAB_0001ef70:\n        uVar3 = *(uint *)(param_1 + 0xc);\n      }\n      if ((uVar3 & 2) != 0) {\n        local_24 = local_34;\n        puVar5 = (undefined4 *)htab_find(*(undefined4 *)(param_1 + 4),local_28);\n        while ((puVar5 != (undefined4 *)0x0 &&\n               (iVar4 = strcmp((char *)puVar5[1],local_34), iVar4 == 0))) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 0x10) goto LAB_0001ed67;\n          puVar5 = (undefined4 *)*puVar5;\n        }\nLAB_0001ef0c:\n        uVar3 = *(uint *)(param_1 + 0xc);\n      }\n      if ((uVar3 & 4) != 0) {\n        local_24 = __s2_00;\n        puVar5 = (undefined4 *)htab_find(*(undefined4 *)(param_1 + 4),local_28);\n        while ((puVar5 != (undefined4 *)0x0 &&\n               (iVar4 = strcmp((char *)puVar5[1],__s2_00), iVar4 == 0))) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 0x20) goto LAB_0001ed67;\n          puVar5 = (undefined4 *)*puVar5;\n        }\n      }\n      goto LAB_0001ed04;\n    }\n    if ((*(byte *)(param_2 + 2) & 1) != 0) {\n      bVar2 = *(byte *)(param_2 + 2) >> 3 & 7;\n      if (bVar2 == 1) goto LAB_0001ef70;\n      if (bVar2 == 0) goto LAB_0001edc0;\n      if (bVar2 != 2) goto LAB_0001ed04;\n      goto LAB_0001ef0c;\n    }\n  }" else (compound_statement "{\n    if (param_2 == (undefined4 *)0x0) {\nLAB_0001edc0:\n      uVar3 = *(uint *)(param_1 + 0xc);\n      if ((uVar3 & 1) != 0) {\n        local_24 = __s2;\n        puVar5 = (undefined4 *)htab_find(*(int *)(param_1 + 4),local_28);\n        while ((puVar5 != (undefined4 *)0x0 && (iVar4 = strcmp((char *)puVar5[1],__s2), iVar4 == 0))\n              ) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 8) goto LAB_0001ed67;\n          puVar5 = (undefined4 *)*puVar5;\n        }\nLAB_0001ef70:\n        uVar3 = *(uint *)(param_1 + 0xc);\n      }\n      if ((uVar3 & 2) != 0) {\n        local_24 = local_34;\n        puVar5 = (undefined4 *)htab_find(*(undefined4 *)(param_1 + 4),local_28);\n        while ((puVar5 != (undefined4 *)0x0 &&\n               (iVar4 = strcmp((char *)puVar5[1],local_34), iVar4 == 0))) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 0x10) goto LAB_0001ed67;\n          puVar5 = (undefined4 *)*puVar5;\n        }\nLAB_0001ef0c:\n        uVar3 = *(uint *)(param_1 + 0xc);\n      }\n      if ((uVar3 & 4) != 0) {\n        local_24 = __s2_00;\n        puVar5 = (undefined4 *)htab_find(*(undefined4 *)(param_1 + 4),local_28);\n        while ((puVar5 != (undefined4 *)0x0 &&\n               (iVar4 = strcmp((char *)puVar5[1],__s2_00), iVar4 == 0))) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 0x20) goto LAB_0001ed67;\n          puVar5 = (undefined4 *)*puVar5;\n        }\n      }\n      goto LAB_0001ed04;\n    }\n    if ((*(byte *)(param_2 + 2) & 1) != 0) {\n      bVar2 = *(byte *)(param_2 + 2) >> 3 & 7;\n      if (bVar2 == 1) goto LAB_0001ef70;\n      if (bVar2 == 0) goto LAB_0001edc0;\n      if (bVar2 != 2) goto LAB_0001ed04;\n      goto LAB_0001ef0c;\n    }\n  }" { (if_statement "if (param_2 == (undefined4 *)0x0) {\nLAB_0001edc0:\n      uVar3 = *(uint *)(param_1 + 0xc);\n      if ((uVar3 & 1) != 0) {\n        local_24 = __s2;\n        puVar5 = (undefined4 *)htab_find(*(int *)(param_1 + 4),local_28);\n        while ((puVar5 != (undefined4 *)0x0 && (iVar4 = strcmp((char *)puVar5[1],__s2), iVar4 == 0))\n              ) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 8) goto LAB_0001ed67;\n          puVar5 = (undefined4 *)*puVar5;\n        }\nLAB_0001ef70:\n        uVar3 = *(uint *)(param_1 + 0xc);\n      }\n      if ((uVar3 & 2) != 0) {\n        local_24 = local_34;\n        puVar5 = (undefined4 *)htab_find(*(undefined4 *)(param_1 + 4),local_28);\n        while ((puVar5 != (undefined4 *)0x0 &&\n               (iVar4 = strcmp((char *)puVar5[1],local_34), iVar4 == 0))) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 0x10) goto LAB_0001ed67;\n          puVar5 = (undefined4 *)*puVar5;\n        }\nLAB_0001ef0c:\n        uVar3 = *(uint *)(param_1 + 0xc);\n      }\n      if ((uVar3 & 4) != 0) {\n        local_24 = __s2_00;\n        puVar5 = (undefined4 *)htab_find(*(undefined4 *)(param_1 + 4),local_28);\n        while ((puVar5 != (undefined4 *)0x0 &&\n               (iVar4 = strcmp((char *)puVar5[1],__s2_00), iVar4 == 0))) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 0x20) goto LAB_0001ed67;\n          puVar5 = (undefined4 *)*puVar5;\n        }\n      }\n      goto LAB_0001ed04;\n    }" if (parenthesized_expression "(param_2 == (undefined4 *)0x0)" ( (binary_expression "param_2 == (undefined4 *)0x0" identifier == (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_0001edc0:\n      uVar3 = *(uint *)(param_1 + 0xc);\n      if ((uVar3 & 1) != 0) {\n        local_24 = __s2;\n        puVar5 = (undefined4 *)htab_find(*(int *)(param_1 + 4),local_28);\n        while ((puVar5 != (undefined4 *)0x0 && (iVar4 = strcmp((char *)puVar5[1],__s2), iVar4 == 0))\n              ) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 8) goto LAB_0001ed67;\n          puVar5 = (undefined4 *)*puVar5;\n        }\nLAB_0001ef70:\n        uVar3 = *(uint *)(param_1 + 0xc);\n      }\n      if ((uVar3 & 2) != 0) {\n        local_24 = local_34;\n        puVar5 = (undefined4 *)htab_find(*(undefined4 *)(param_1 + 4),local_28);\n        while ((puVar5 != (undefined4 *)0x0 &&\n               (iVar4 = strcmp((char *)puVar5[1],local_34), iVar4 == 0))) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 0x10) goto LAB_0001ed67;\n          puVar5 = (undefined4 *)*puVar5;\n        }\nLAB_0001ef0c:\n        uVar3 = *(uint *)(param_1 + 0xc);\n      }\n      if ((uVar3 & 4) != 0) {\n        local_24 = __s2_00;\n        puVar5 = (undefined4 *)htab_find(*(undefined4 *)(param_1 + 4),local_28);\n        while ((puVar5 != (undefined4 *)0x0 &&\n               (iVar4 = strcmp((char *)puVar5[1],__s2_00), iVar4 == 0))) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 0x20) goto LAB_0001ed67;\n          puVar5 = (undefined4 *)*puVar5;\n        }\n      }\n      goto LAB_0001ed04;\n    }" { (labeled_statement "LAB_0001edc0:\n      uVar3 = *(uint *)(param_1 + 0xc);" statement_identifier : (expression_statement "uVar3 = *(uint *)(param_1 + 0xc);" (assignment_expression "uVar3 = *(uint *)(param_1 + 0xc)" identifier = (pointer_expression "*(uint *)(param_1 + 0xc)" * (cast_expression "(uint *)(param_1 + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) ))))) ;)) (if_statement "if ((uVar3 & 1) != 0) {\n        local_24 = __s2;\n        puVar5 = (undefined4 *)htab_find(*(int *)(param_1 + 4),local_28);\n        while ((puVar5 != (undefined4 *)0x0 && (iVar4 = strcmp((char *)puVar5[1],__s2), iVar4 == 0))\n              ) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 8) goto LAB_0001ed67;\n          puVar5 = (undefined4 *)*puVar5;\n        }\nLAB_0001ef70:\n        uVar3 = *(uint *)(param_1 + 0xc);\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_24 = __s2;\n        puVar5 = (undefined4 *)htab_find(*(int *)(param_1 + 4),local_28);\n        while ((puVar5 != (undefined4 *)0x0 && (iVar4 = strcmp((char *)puVar5[1],__s2), iVar4 == 0))\n              ) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 8) goto LAB_0001ed67;\n          puVar5 = (undefined4 *)*puVar5;\n        }\nLAB_0001ef70:\n        uVar3 = *(uint *)(param_1 + 0xc);\n      }" { (expression_statement "local_24 = __s2;" (assignment_expression "local_24 = __s2" identifier = identifier) ;) (expression_statement "puVar5 = (undefined4 *)htab_find(*(int *)(param_1 + 4),local_28);" (assignment_expression "puVar5 = (undefined4 *)htab_find(*(int *)(param_1 + 4),local_28)" identifier = (cast_expression "(undefined4 *)htab_find(*(int *)(param_1 + 4),local_28)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "htab_find(*(int *)(param_1 + 4),local_28)" identifier (argument_list "(*(int *)(param_1 + 4),local_28)" ( (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) , identifier ))))) ;) (while_statement "while ((puVar5 != (undefined4 *)0x0 && (iVar4 = strcmp((char *)puVar5[1],__s2), iVar4 == 0))\n              ) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 8) goto LAB_0001ed67;\n          puVar5 = (undefined4 *)*puVar5;\n        }" while (parenthesized_expression "((puVar5 != (undefined4 *)0x0 && (iVar4 = strcmp((char *)puVar5[1],__s2), iVar4 == 0))\n              )" ( (parenthesized_expression "(puVar5 != (undefined4 *)0x0 && (iVar4 = strcmp((char *)puVar5[1],__s2), iVar4 == 0))" ( (binary_expression "puVar5 != (undefined4 *)0x0 && (iVar4 = strcmp((char *)puVar5[1],__s2), iVar4 == 0)" (binary_expression "puVar5 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" 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_0001ed67;\n          puVar5 = (undefined4 *)*puVar5;\n        }" { (if_statement "if ((*(byte *)(puVar5 + 2) & 0x38) == 8) goto LAB_0001ed67;" 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_0001ed67;" goto statement_identifier ;)) (expression_statement "puVar5 = (undefined4 *)*puVar5;" (assignment_expression "puVar5 = (undefined4 *)*puVar5" identifier = (cast_expression "(undefined4 *)*puVar5" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar5" * identifier))) ;) })) (labeled_statement "LAB_0001ef70:\n        uVar3 = *(uint *)(param_1 + 0xc);" statement_identifier : (expression_statement "uVar3 = *(uint *)(param_1 + 0xc);" (assignment_expression "uVar3 = *(uint *)(param_1 + 0xc)" identifier = (pointer_expression "*(uint *)(param_1 + 0xc)" * (cast_expression "(uint *)(param_1 + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) ))))) ;)) })) (if_statement "if ((uVar3 & 2) != 0) {\n        local_24 = local_34;\n        puVar5 = (undefined4 *)htab_find(*(undefined4 *)(param_1 + 4),local_28);\n        while ((puVar5 != (undefined4 *)0x0 &&\n               (iVar4 = strcmp((char *)puVar5[1],local_34), iVar4 == 0))) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 0x10) goto LAB_0001ed67;\n          puVar5 = (undefined4 *)*puVar5;\n        }\nLAB_0001ef0c:\n        uVar3 = *(uint *)(param_1 + 0xc);\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_24 = local_34;\n        puVar5 = (undefined4 *)htab_find(*(undefined4 *)(param_1 + 4),local_28);\n        while ((puVar5 != (undefined4 *)0x0 &&\n               (iVar4 = strcmp((char *)puVar5[1],local_34), iVar4 == 0))) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 0x10) goto LAB_0001ed67;\n          puVar5 = (undefined4 *)*puVar5;\n        }\nLAB_0001ef0c:\n        uVar3 = *(uint *)(param_1 + 0xc);\n      }" { (expression_statement "local_24 = local_34;" (assignment_expression "local_24 = local_34" identifier = identifier) ;) (expression_statement "puVar5 = (undefined4 *)htab_find(*(undefined4 *)(param_1 + 4),local_28);" (assignment_expression "puVar5 = (undefined4 *)htab_find(*(undefined4 *)(param_1 + 4),local_28)" identifier = (cast_expression "(undefined4 *)htab_find(*(undefined4 *)(param_1 + 4),local_28)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "htab_find(*(undefined4 *)(param_1 + 4),local_28)" identifier (argument_list "(*(undefined4 *)(param_1 + 4),local_28)" ( (pointer_expression "*(undefined4 *)(param_1 + 4)" * (cast_expression "(undefined4 *)(param_1 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) , identifier ))))) ;) (while_statement "while ((puVar5 != (undefined4 *)0x0 &&\n               (iVar4 = strcmp((char *)puVar5[1],local_34), iVar4 == 0))) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 0x10) goto LAB_0001ed67;\n          puVar5 = (undefined4 *)*puVar5;\n        }" while (parenthesized_expression "((puVar5 != (undefined4 *)0x0 &&\n               (iVar4 = strcmp((char *)puVar5[1],local_34), iVar4 == 0)))" ( (parenthesized_expression "(puVar5 != (undefined4 *)0x0 &&\n               (iVar4 = strcmp((char *)puVar5[1],local_34), iVar4 == 0))" ( (binary_expression "puVar5 != (undefined4 *)0x0 &&\n               (iVar4 = strcmp((char *)puVar5[1],local_34), iVar4 == 0)" (binary_expression "puVar5 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) && (parenthesized_expression "(iVar4 = strcmp((char *)puVar5[1],local_34), iVar4 == 0)" ( (comma_expression "iVar4 = strcmp((char *)puVar5[1],local_34), iVar4 == 0" (assignment_expression "iVar4 = strcmp((char *)puVar5[1],local_34)" identifier = (call_expression "strcmp((char *)puVar5[1],local_34)" identifier (argument_list "((char *)puVar5[1],local_34)" ( (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_0001ed67;\n          puVar5 = (undefined4 *)*puVar5;\n        }" { (if_statement "if ((*(byte *)(puVar5 + 2) & 0x38) == 0x10) goto LAB_0001ed67;" 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_0001ed67;" goto statement_identifier ;)) (expression_statement "puVar5 = (undefined4 *)*puVar5;" (assignment_expression "puVar5 = (undefined4 *)*puVar5" identifier = (cast_expression "(undefined4 *)*puVar5" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar5" * identifier))) ;) })) (labeled_statement "LAB_0001ef0c:\n        uVar3 = *(uint *)(param_1 + 0xc);" statement_identifier : (expression_statement "uVar3 = *(uint *)(param_1 + 0xc);" (assignment_expression "uVar3 = *(uint *)(param_1 + 0xc)" identifier = (pointer_expression "*(uint *)(param_1 + 0xc)" * (cast_expression "(uint *)(param_1 + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) ))))) ;)) })) (if_statement "if ((uVar3 & 4) != 0) {\n        local_24 = __s2_00;\n        puVar5 = (undefined4 *)htab_find(*(undefined4 *)(param_1 + 4),local_28);\n        while ((puVar5 != (undefined4 *)0x0 &&\n               (iVar4 = strcmp((char *)puVar5[1],__s2_00), iVar4 == 0))) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 0x20) goto LAB_0001ed67;\n          puVar5 = (undefined4 *)*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_24 = __s2_00;\n        puVar5 = (undefined4 *)htab_find(*(undefined4 *)(param_1 + 4),local_28);\n        while ((puVar5 != (undefined4 *)0x0 &&\n               (iVar4 = strcmp((char *)puVar5[1],__s2_00), iVar4 == 0))) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 0x20) goto LAB_0001ed67;\n          puVar5 = (undefined4 *)*puVar5;\n        }\n      }" { (expression_statement "local_24 = __s2_00;" (assignment_expression "local_24 = __s2_00" identifier = identifier) ;) (expression_statement "puVar5 = (undefined4 *)htab_find(*(undefined4 *)(param_1 + 4),local_28);" (assignment_expression "puVar5 = (undefined4 *)htab_find(*(undefined4 *)(param_1 + 4),local_28)" identifier = (cast_expression "(undefined4 *)htab_find(*(undefined4 *)(param_1 + 4),local_28)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "htab_find(*(undefined4 *)(param_1 + 4),local_28)" identifier (argument_list "(*(undefined4 *)(param_1 + 4),local_28)" ( (pointer_expression "*(undefined4 *)(param_1 + 4)" * (cast_expression "(undefined4 *)(param_1 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) , identifier ))))) ;) (while_statement "while ((puVar5 != (undefined4 *)0x0 &&\n               (iVar4 = strcmp((char *)puVar5[1],__s2_00), iVar4 == 0))) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 0x20) goto LAB_0001ed67;\n          puVar5 = (undefined4 *)*puVar5;\n        }" while (parenthesized_expression "((puVar5 != (undefined4 *)0x0 &&\n               (iVar4 = strcmp((char *)puVar5[1],__s2_00), iVar4 == 0)))" ( (parenthesized_expression "(puVar5 != (undefined4 *)0x0 &&\n               (iVar4 = strcmp((char *)puVar5[1],__s2_00), iVar4 == 0))" ( (binary_expression "puVar5 != (undefined4 *)0x0 &&\n               (iVar4 = strcmp((char *)puVar5[1],__s2_00), iVar4 == 0)" (binary_expression "puVar5 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" 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_0001ed67;\n          puVar5 = (undefined4 *)*puVar5;\n        }" { (if_statement "if ((*(byte *)(puVar5 + 2) & 0x38) == 0x20) goto LAB_0001ed67;" 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_0001ed67;" goto statement_identifier ;)) (expression_statement "puVar5 = (undefined4 *)*puVar5;" (assignment_expression "puVar5 = (undefined4 *)*puVar5" identifier = (cast_expression "(undefined4 *)*puVar5" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar5" * identifier))) ;) })) })) (goto_statement "goto LAB_0001ed04;" 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_0001ef70;\n      if (bVar2 == 0) goto LAB_0001edc0;\n      if (bVar2 != 2) goto LAB_0001ed04;\n      goto LAB_0001ef0c;\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_0001ef70;\n      if (bVar2 == 0) goto LAB_0001edc0;\n      if (bVar2 != 2) goto LAB_0001ed04;\n      goto LAB_0001ef0c;\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_0001ef70;" if (parenthesized_expression "(bVar2 == 1)" ( (binary_expression "bVar2 == 1" identifier == number_literal) )) (goto_statement "goto LAB_0001ef70;" goto statement_identifier ;)) (if_statement "if (bVar2 == 0) goto LAB_0001edc0;" if (parenthesized_expression "(bVar2 == 0)" ( (binary_expression "bVar2 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0001edc0;" goto statement_identifier ;)) (if_statement "if (bVar2 != 2) goto LAB_0001ed04;" if (parenthesized_expression "(bVar2 != 2)" ( (binary_expression "bVar2 != 2" identifier != number_literal) )) (goto_statement "goto LAB_0001ed04;" goto statement_identifier ;)) (goto_statement "goto LAB_0001ef0c;" goto statement_identifier ;) })) }))) (expression_statement "puVar5 = (undefined4 *)*param_2;" (assignment_expression "puVar5 = (undefined4 *)*param_2" identifier = (cast_expression "(undefined4 *)*param_2" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_2" * identifier))) ;) (labeled_statement "joined_r0x0001ed23:\n  for (; puVar5 != (undefined4 *)0x0; puVar5 = (undefined4 *)*puVar5) {\n    __pattern = (char *)puVar5[1];\n    if (__pattern != (char *)0x0) {\n      if ((*__pattern == '*') && (__pattern[1] == '\0')) goto LAB_0001ed67;\n      __name = __s2_00;\n      if (((*(byte *)(puVar5 + 2) & 0x38) != 0x20) &&\n         (__name = local_34, (*(byte *)(puVar5 + 2) & 0x38) != 0x10)) {\n        __name = __s2;\n      }\n      iVar4 = fnmatch(__pattern,__name,0);\n      if (iVar4 == 0) goto LAB_0001ed67;\n    }\n  }" statement_identifier : (for_statement "for (; puVar5 != (undefined4 *)0x0; puVar5 = (undefined4 *)*puVar5) {\n    __pattern = (char *)puVar5[1];\n    if (__pattern != (char *)0x0) {\n      if ((*__pattern == '*') && (__pattern[1] == '\0')) goto LAB_0001ed67;\n      __name = __s2_00;\n      if (((*(byte *)(puVar5 + 2) & 0x38) != 0x20) &&\n         (__name = local_34, (*(byte *)(puVar5 + 2) & 0x38) != 0x10)) {\n        __name = __s2;\n      }\n      iVar4 = fnmatch(__pattern,__name,0);\n      if (iVar4 == 0) goto LAB_0001ed67;\n    }\n  }" for ( ; (binary_expression "puVar5 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ; (assignment_expression "puVar5 = (undefined4 *)*puVar5" identifier = (cast_expression "(undefined4 *)*puVar5" ( (type_descriptor "undefined4 *" 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_0001ed67;\n      __name = __s2_00;\n      if (((*(byte *)(puVar5 + 2) & 0x38) != 0x20) &&\n         (__name = local_34, (*(byte *)(puVar5 + 2) & 0x38) != 0x10)) {\n        __name = __s2;\n      }\n      iVar4 = fnmatch(__pattern,__name,0);\n      if (iVar4 == 0) goto LAB_0001ed67;\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_0001ed67;\n      __name = __s2_00;\n      if (((*(byte *)(puVar5 + 2) & 0x38) != 0x20) &&\n         (__name = local_34, (*(byte *)(puVar5 + 2) & 0x38) != 0x10)) {\n        __name = __s2;\n      }\n      iVar4 = fnmatch(__pattern,__name,0);\n      if (iVar4 == 0) goto LAB_0001ed67;\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_0001ed67;\n      __name = __s2_00;\n      if (((*(byte *)(puVar5 + 2) & 0x38) != 0x20) &&\n         (__name = local_34, (*(byte *)(puVar5 + 2) & 0x38) != 0x10)) {\n        __name = __s2;\n      }\n      iVar4 = fnmatch(__pattern,__name,0);\n      if (iVar4 == 0) goto LAB_0001ed67;\n    }" { (if_statement "if ((*__pattern == '*') && (__pattern[1] == '\0')) goto LAB_0001ed67;" 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_0001ed67;" 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 = local_34, (*(byte *)(puVar5 + 2) & 0x38) != 0x10)) {\n        __name = __s2;\n      }" if (parenthesized_expression "(((*(byte *)(puVar5 + 2) & 0x38) != 0x20) &&\n         (__name = local_34, (*(byte *)(puVar5 + 2) & 0x38) != 0x10))" ( (binary_expression "((*(byte *)(puVar5 + 2) & 0x38) != 0x20) &&\n         (__name = local_34, (*(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 = local_34, (*(byte *)(puVar5 + 2) & 0x38) != 0x10)" ( (comma_expression "__name = local_34, (*(byte *)(puVar5 + 2) & 0x38) != 0x10" (assignment_expression "__name = local_34" 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;\n      }" { (expression_statement "__name = __s2;" (assignment_expression "__name = __s2" 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_0001ed67;" if (parenthesized_expression "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0001ed67;" goto statement_identifier ;)) })) }))) (expression_statement "puVar5 = (undefined4 *)0x0;" (assignment_expression "puVar5 = (undefined4 *)0x0" identifier = (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (labeled_statement "LAB_0001ed67:\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 (local_34 != param_3) {\n    free(local_34);\n  }" if (parenthesized_expression "(local_34 != param_3)" ( (binary_expression "local_34 != param_3" identifier != identifier) )) (compound_statement "{\n    free(local_34);\n  }" { (expression_statement "free(local_34);" (call_expression "free(local_34)" identifier (argument_list "(local_34)" ( 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 "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n/* WARNING: Unknown calling convention */\n\nbfd_elf_version_expr *\nlang_vers_match(bfd_elf_version_expr_head *head,bfd_elf_version_expr *prev,char *sym)\n\n{\n  undefined4 uVar1;\n  char *__pattern;\n  byte bVar2;\n  char *__s2;\n  uint uVar3;\n  int iVar4;\n  char *__s2_00;\n  char *__name;\n  bfd_elf_version_expr *pbVar5;\n  char *local_34;\n  bfd_elf_version_expr e;\n  \n  uVar1 = *(undefined4 *)PTR_current_demangling_style_00083f94;\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  local_34 = sym;\n  if ((uVar3 & 2) != 0) {\n    local_34 = (char *)bfd_demangle(link_info.output_bfd,sym,3);\n    uVar3 = head->mask;\n    if (local_34 == (char *)0x0) {\n      local_34 = 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_0001ed04:\n    if ((prev == (bfd_elf_version_expr *)0x0) || ((prev->field_0x8 & 1) != 0)) {\n      pbVar5 = head->remaining;\n      goto joined_r0x0001ed23;\n    }\n  }\n  else {\n    if (prev == (bfd_elf_version_expr *)0x0) {\nLAB_0001edc0:\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_0x8 & 0x38) == 8) goto LAB_0001ed67;\n          pbVar5 = pbVar5->next;\n        }\nLAB_0001ef70:\n        uVar3 = head->mask;\n      }\n      if ((uVar3 & 2) != 0) {\n        e.pattern = local_34;\n        pbVar5 = (bfd_elf_version_expr *)htab_find(head->htab,&e);\n        while ((pbVar5 != (bfd_elf_version_expr *)0x0 &&\n               (iVar4 = strcmp(pbVar5->pattern,local_34), iVar4 == 0))) {\n          if ((pbVar5->field_0x8 & 0x38) == 0x10) goto LAB_0001ed67;\n          pbVar5 = pbVar5->next;\n        }\nLAB_0001ef0c:\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_0x8 & 0x38) == 0x20) goto LAB_0001ed67;\n          pbVar5 = pbVar5->next;\n        }\n      }\n      goto LAB_0001ed04;\n    }\n    if ((prev->field_0x8 & 1) != 0) {\n      bVar2 = (byte)prev->field_0x8 >> 3 & 7;\n      if (bVar2 == 1) goto LAB_0001ef70;\n      if (bVar2 == 0) goto LAB_0001edc0;\n      if (bVar2 != 2) goto LAB_0001ed04;\n      goto LAB_0001ef0c;\n    }\n  }\n  pbVar5 = prev->next;\njoined_r0x0001ed23:\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_0001ed67;\n      bVar2 = pbVar5->field_0x8 & 0x38;\n      __name = __s2_00;\n      if ((bVar2 != 0x20) && (__name = local_34, bVar2 != 0x10)) {\n        __name = __s2;\n      }\n      iVar4 = fnmatch(__pattern,__name,0);\n      if (iVar4 == 0) goto LAB_0001ed67;\n    }\n  }\n  pbVar5 = (bfd_elf_version_expr *)0x0;\nLAB_0001ed67:\n  if (__s2 != sym) {\n    free(__s2);\n  }\n  if (local_34 != sym) {\n    free(local_34);\n  }\n  if (__s2_00 != sym) {\n    free(__s2_00);\n  }\n  return pbVar5;\n}\n\n" comment comment (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  undefined4 uVar1;\n  char *__pattern;\n  byte bVar2;\n  char *__s2;\n  uint uVar3;\n  int iVar4;\n  char *__s2_00;\n  char *__name;\n  bfd_elf_version_expr *pbVar5;\n  char *local_34;\n  bfd_elf_version_expr e;\n  \n  uVar1 = *(undefined4 *)PTR_current_demangling_style_00083f94;\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  local_34 = sym;\n  if ((uVar3 & 2) != 0) {\n    local_34 = (char *)bfd_demangle(link_info.output_bfd,sym,3);\n    uVar3 = head->mask;\n    if (local_34 == (char *)0x0) {\n      local_34 = 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_0001ed04:\n    if ((prev == (bfd_elf_version_expr *)0x0) || ((prev->field_0x8 & 1) != 0)) {\n      pbVar5 = head->remaining;\n      goto joined_r0x0001ed23;\n    }\n  }\n  else {\n    if (prev == (bfd_elf_version_expr *)0x0) {\nLAB_0001edc0:\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_0x8 & 0x38) == 8) goto LAB_0001ed67;\n          pbVar5 = pbVar5->next;\n        }\nLAB_0001ef70:\n        uVar3 = head->mask;\n      }\n      if ((uVar3 & 2) != 0) {\n        e.pattern = local_34;\n        pbVar5 = (bfd_elf_version_expr *)htab_find(head->htab,&e);\n        while ((pbVar5 != (bfd_elf_version_expr *)0x0 &&\n               (iVar4 = strcmp(pbVar5->pattern,local_34), iVar4 == 0))) {\n          if ((pbVar5->field_0x8 & 0x38) == 0x10) goto LAB_0001ed67;\n          pbVar5 = pbVar5->next;\n        }\nLAB_0001ef0c:\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_0x8 & 0x38) == 0x20) goto LAB_0001ed67;\n          pbVar5 = pbVar5->next;\n        }\n      }\n      goto LAB_0001ed04;\n    }\n    if ((prev->field_0x8 & 1) != 0) {\n      bVar2 = (byte)prev->field_0x8 >> 3 & 7;\n      if (bVar2 == 1) goto LAB_0001ef70;\n      if (bVar2 == 0) goto LAB_0001edc0;\n      if (bVar2 != 2) goto LAB_0001ed04;\n      goto LAB_0001ef0c;\n    }\n  }\n  pbVar5 = prev->next;\njoined_r0x0001ed23:\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_0001ed67;\n      bVar2 = pbVar5->field_0x8 & 0x38;\n      __name = __s2_00;\n      if ((bVar2 != 0x20) && (__name = local_34, bVar2 != 0x10)) {\n        __name = __s2;\n      }\n      iVar4 = fnmatch(__pattern,__name,0);\n      if (iVar4 == 0) goto LAB_0001ed67;\n    }\n  }\n  pbVar5 = (bfd_elf_version_expr *)0x0;\nLAB_0001ed67:\n  if (__s2 != sym) {\n    free(__s2);\n  }\n  if (local_34 != sym) {\n    free(local_34);\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  undefined4 uVar1;\n  char *__pattern;\n  byte bVar2;\n  char *__s2;\n  uint uVar3;\n  int iVar4;\n  char *__s2_00;\n  char *__name;\n  bfd_elf_version_expr *pbVar5;\n  char *local_34;\n  bfd_elf_version_expr e;\n  \n  uVar1 = *(undefined4 *)PTR_current_demangling_style_00083f94;\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  local_34 = sym;\n  if ((uVar3 & 2) != 0) {\n    local_34 = (char *)bfd_demangle(link_info.output_bfd,sym,3);\n    uVar3 = head->mask;\n    if (local_34 == (char *)0x0) {\n      local_34 = 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_0001ed04:\n    if ((prev == (bfd_elf_version_expr *)0x0) || ((prev->field_0x8 & 1) != 0)) {\n      pbVar5 = head->remaining;\n      goto joined_r0x0001ed23;\n    }\n  }\n  else {\n    if (prev == (bfd_elf_version_expr *)0x0) {\nLAB_0001edc0:\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_0x8 & 0x38) == 8) goto LAB_0001ed67;\n          pbVar5 = pbVar5->next;\n        }\nLAB_0001ef70:\n        uVar3 = head->mask;\n      }\n      if ((uVar3 & 2) != 0) {\n        e.pattern = local_34;\n        pbVar5 = (bfd_elf_version_expr *)htab_find(head->htab,&e);\n        while ((pbVar5 != (bfd_elf_version_expr *)0x0 &&\n               (iVar4 = strcmp(pbVar5->pattern,local_34), iVar4 == 0))) {\n          if ((pbVar5->field_0x8 & 0x38) == 0x10) goto LAB_0001ed67;\n          pbVar5 = pbVar5->next;\n        }\nLAB_0001ef0c:\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_0x8 & 0x38) == 0x20) goto LAB_0001ed67;\n          pbVar5 = pbVar5->next;\n        }\n      }\n      goto LAB_0001ed04;\n    }\n    if ((prev->field_0x8 & 1) != 0) {\n      bVar2 = (byte)prev->field_0x8 >> 3 & 7;\n      if (bVar2 == 1) goto LAB_0001ef70;\n      if (bVar2 == 0) goto LAB_0001edc0;\n      if (bVar2 != 2) goto LAB_0001ed04;\n      goto LAB_0001ef0c;\n    }\n  }\n  pbVar5 = prev->next;\njoined_r0x0001ed23:\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_0001ed67;\n      bVar2 = pbVar5->field_0x8 & 0x38;\n      __name = __s2_00;\n      if ((bVar2 != 0x20) && (__name = local_34, bVar2 != 0x10)) {\n        __name = __s2;\n      }\n      iVar4 = fnmatch(__pattern,__name,0);\n      if (iVar4 == 0) goto LAB_0001ed67;\n    }\n  }\n  pbVar5 = (bfd_elf_version_expr *)0x0;\nLAB_0001ed67:\n  if (__s2 != sym) {\n    free(__s2);\n  }\n  if (local_34 != sym) {\n    free(local_34);\n  }\n  if (__s2_00 != sym) {\n    free(__s2_00);\n  }\n  return pbVar5;\n}" { (declaration "undefined4 uVar1;" type_identifier identifier ;) (declaration "char *__pattern;" primitive_type (pointer_declarator "*__pattern" * identifier) ;) (declaration "byte bVar2;" type_identifier identifier ;) (declaration "char *__s2;" primitive_type (pointer_declarator "*__s2" * identifier) ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "char *__s2_00;" primitive_type (pointer_declarator "*__s2_00" * identifier) ;) (declaration "char *__name;" primitive_type (pointer_declarator "*__name" * identifier) ;) (declaration "bfd_elf_version_expr *pbVar5;" type_identifier (pointer_declarator "*pbVar5" * identifier) ;) (declaration "char *local_34;" primitive_type (pointer_declarator "*local_34" * identifier) ;) (declaration "bfd_elf_version_expr e;" type_identifier identifier ;) (expression_statement "uVar1 = *(undefined4 *)PTR_current_demangling_style_00083f94;" (assignment_expression "uVar1 = *(undefined4 *)PTR_current_demangling_style_00083f94" identifier = (pointer_expression "*(undefined4 *)PTR_current_demangling_style_00083f94" * (cast_expression "(undefined4 *)PTR_current_demangling_style_00083f94" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) 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 "local_34 = sym;" (assignment_expression "local_34 = sym" identifier = identifier) ;) (if_statement "if ((uVar3 & 2) != 0) {\n    local_34 = (char *)bfd_demangle(link_info.output_bfd,sym,3);\n    uVar3 = head->mask;\n    if (local_34 == (char *)0x0) {\n      local_34 = 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    local_34 = (char *)bfd_demangle(link_info.output_bfd,sym,3);\n    uVar3 = head->mask;\n    if (local_34 == (char *)0x0) {\n      local_34 = sym;\n    }\n  }" { (expression_statement "local_34 = (char *)bfd_demangle(link_info.output_bfd,sym,3);" (assignment_expression "local_34 = (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 (local_34 == (char *)0x0) {\n      local_34 = sym;\n    }" if (parenthesized_expression "(local_34 == (char *)0x0)" ( (binary_expression "local_34 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      local_34 = sym;\n    }" { (expression_statement "local_34 = sym;" (assignment_expression "local_34 = 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_0001ed04:\n    if ((prev == (bfd_elf_version_expr *)0x0) || ((prev->field_0x8 & 1) != 0)) {\n      pbVar5 = head->remaining;\n      goto joined_r0x0001ed23;\n    }\n  }\n  else {\n    if (prev == (bfd_elf_version_expr *)0x0) {\nLAB_0001edc0:\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_0x8 & 0x38) == 8) goto LAB_0001ed67;\n          pbVar5 = pbVar5->next;\n        }\nLAB_0001ef70:\n        uVar3 = head->mask;\n      }\n      if ((uVar3 & 2) != 0) {\n        e.pattern = local_34;\n        pbVar5 = (bfd_elf_version_expr *)htab_find(head->htab,&e);\n        while ((pbVar5 != (bfd_elf_version_expr *)0x0 &&\n               (iVar4 = strcmp(pbVar5->pattern,local_34), iVar4 == 0))) {\n          if ((pbVar5->field_0x8 & 0x38) == 0x10) goto LAB_0001ed67;\n          pbVar5 = pbVar5->next;\n        }\nLAB_0001ef0c:\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_0x8 & 0x38) == 0x20) goto LAB_0001ed67;\n          pbVar5 = pbVar5->next;\n        }\n      }\n      goto LAB_0001ed04;\n    }\n    if ((prev->field_0x8 & 1) != 0) {\n      bVar2 = (byte)prev->field_0x8 >> 3 & 7;\n      if (bVar2 == 1) goto LAB_0001ef70;\n      if (bVar2 == 0) goto LAB_0001edc0;\n      if (bVar2 != 2) goto LAB_0001ed04;\n      goto LAB_0001ef0c;\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_0001ed04:\n    if ((prev == (bfd_elf_version_expr *)0x0) || ((prev->field_0x8 & 1) != 0)) {\n      pbVar5 = head->remaining;\n      goto joined_r0x0001ed23;\n    }\n  }" { (labeled_statement "LAB_0001ed04:\n    if ((prev == (bfd_elf_version_expr *)0x0) || ((prev->field_0x8 & 1) != 0)) {\n      pbVar5 = head->remaining;\n      goto joined_r0x0001ed23;\n    }" statement_identifier : (if_statement "if ((prev == (bfd_elf_version_expr *)0x0) || ((prev->field_0x8 & 1) != 0)) {\n      pbVar5 = head->remaining;\n      goto joined_r0x0001ed23;\n    }" if (parenthesized_expression "((prev == (bfd_elf_version_expr *)0x0) || ((prev->field_0x8 & 1) != 0))" ( (binary_expression "(prev == (bfd_elf_version_expr *)0x0) || ((prev->field_0x8 & 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_0x8 & 1) != 0)" ( (binary_expression "(prev->field_0x8 & 1) != 0" (parenthesized_expression "(prev->field_0x8 & 1)" ( (binary_expression "prev->field_0x8 & 1" (field_expression "prev->field_0x8" identifier -> field_identifier) & number_literal) )) != number_literal) ))) )) (compound_statement "{\n      pbVar5 = head->remaining;\n      goto joined_r0x0001ed23;\n    }" { (expression_statement "pbVar5 = head->remaining;" (assignment_expression "pbVar5 = head->remaining" identifier = (field_expression "head->remaining" identifier -> field_identifier)) ;) (goto_statement "goto joined_r0x0001ed23;" goto statement_identifier ;) }))) }) (else_clause "else {\n    if (prev == (bfd_elf_version_expr *)0x0) {\nLAB_0001edc0:\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_0x8 & 0x38) == 8) goto LAB_0001ed67;\n          pbVar5 = pbVar5->next;\n        }\nLAB_0001ef70:\n        uVar3 = head->mask;\n      }\n      if ((uVar3 & 2) != 0) {\n        e.pattern = local_34;\n        pbVar5 = (bfd_elf_version_expr *)htab_find(head->htab,&e);\n        while ((pbVar5 != (bfd_elf_version_expr *)0x0 &&\n               (iVar4 = strcmp(pbVar5->pattern,local_34), iVar4 == 0))) {\n          if ((pbVar5->field_0x8 & 0x38) == 0x10) goto LAB_0001ed67;\n          pbVar5 = pbVar5->next;\n        }\nLAB_0001ef0c:\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_0x8 & 0x38) == 0x20) goto LAB_0001ed67;\n          pbVar5 = pbVar5->next;\n        }\n      }\n      goto LAB_0001ed04;\n    }\n    if ((prev->field_0x8 & 1) != 0) {\n      bVar2 = (byte)prev->field_0x8 >> 3 & 7;\n      if (bVar2 == 1) goto LAB_0001ef70;\n      if (bVar2 == 0) goto LAB_0001edc0;\n      if (bVar2 != 2) goto LAB_0001ed04;\n      goto LAB_0001ef0c;\n    }\n  }" else (compound_statement "{\n    if (prev == (bfd_elf_version_expr *)0x0) {\nLAB_0001edc0:\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_0x8 & 0x38) == 8) goto LAB_0001ed67;\n          pbVar5 = pbVar5->next;\n        }\nLAB_0001ef70:\n        uVar3 = head->mask;\n      }\n      if ((uVar3 & 2) != 0) {\n        e.pattern = local_34;\n        pbVar5 = (bfd_elf_version_expr *)htab_find(head->htab,&e);\n        while ((pbVar5 != (bfd_elf_version_expr *)0x0 &&\n               (iVar4 = strcmp(pbVar5->pattern,local_34), iVar4 == 0))) {\n          if ((pbVar5->field_0x8 & 0x38) == 0x10) goto LAB_0001ed67;\n          pbVar5 = pbVar5->next;\n        }\nLAB_0001ef0c:\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_0x8 & 0x38) == 0x20) goto LAB_0001ed67;\n          pbVar5 = pbVar5->next;\n        }\n      }\n      goto LAB_0001ed04;\n    }\n    if ((prev->field_0x8 & 1) != 0) {\n      bVar2 = (byte)prev->field_0x8 >> 3 & 7;\n      if (bVar2 == 1) goto LAB_0001ef70;\n      if (bVar2 == 0) goto LAB_0001edc0;\n      if (bVar2 != 2) goto LAB_0001ed04;\n      goto LAB_0001ef0c;\n    }\n  }" { (if_statement "if (prev == (bfd_elf_version_expr *)0x0) {\nLAB_0001edc0:\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_0x8 & 0x38) == 8) goto LAB_0001ed67;\n          pbVar5 = pbVar5->next;\n        }\nLAB_0001ef70:\n        uVar3 = head->mask;\n      }\n      if ((uVar3 & 2) != 0) {\n        e.pattern = local_34;\n        pbVar5 = (bfd_elf_version_expr *)htab_find(head->htab,&e);\n        while ((pbVar5 != (bfd_elf_version_expr *)0x0 &&\n               (iVar4 = strcmp(pbVar5->pattern,local_34), iVar4 == 0))) {\n          if ((pbVar5->field_0x8 & 0x38) == 0x10) goto LAB_0001ed67;\n          pbVar5 = pbVar5->next;\n        }\nLAB_0001ef0c:\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_0x8 & 0x38) == 0x20) goto LAB_0001ed67;\n          pbVar5 = pbVar5->next;\n        }\n      }\n      goto LAB_0001ed04;\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_0001edc0:\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_0x8 & 0x38) == 8) goto LAB_0001ed67;\n          pbVar5 = pbVar5->next;\n        }\nLAB_0001ef70:\n        uVar3 = head->mask;\n      }\n      if ((uVar3 & 2) != 0) {\n        e.pattern = local_34;\n        pbVar5 = (bfd_elf_version_expr *)htab_find(head->htab,&e);\n        while ((pbVar5 != (bfd_elf_version_expr *)0x0 &&\n               (iVar4 = strcmp(pbVar5->pattern,local_34), iVar4 == 0))) {\n          if ((pbVar5->field_0x8 & 0x38) == 0x10) goto LAB_0001ed67;\n          pbVar5 = pbVar5->next;\n        }\nLAB_0001ef0c:\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_0x8 & 0x38) == 0x20) goto LAB_0001ed67;\n          pbVar5 = pbVar5->next;\n        }\n      }\n      goto LAB_0001ed04;\n    }" { (labeled_statement "LAB_0001edc0:\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_0x8 & 0x38) == 8) goto LAB_0001ed67;\n          pbVar5 = pbVar5->next;\n        }\nLAB_0001ef70:\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_0x8 & 0x38) == 8) goto LAB_0001ed67;\n          pbVar5 = pbVar5->next;\n        }\nLAB_0001ef70:\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_0x8 & 0x38) == 8) goto LAB_0001ed67;\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_0x8 & 0x38) == 8) goto LAB_0001ed67;\n          pbVar5 = pbVar5->next;\n        }" { (if_statement "if ((pbVar5->field_0x8 & 0x38) == 8) goto LAB_0001ed67;" if (parenthesized_expression "((pbVar5->field_0x8 & 0x38) == 8)" ( (binary_expression "(pbVar5->field_0x8 & 0x38) == 8" (parenthesized_expression "(pbVar5->field_0x8 & 0x38)" ( (binary_expression "pbVar5->field_0x8 & 0x38" (field_expression "pbVar5->field_0x8" identifier -> field_identifier) & number_literal) )) == number_literal) )) (goto_statement "goto LAB_0001ed67;" goto statement_identifier ;)) (expression_statement "pbVar5 = pbVar5->next;" (assignment_expression "pbVar5 = pbVar5->next" identifier = (field_expression "pbVar5->next" identifier -> field_identifier)) ;) })) (labeled_statement "LAB_0001ef70:\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 = local_34;\n        pbVar5 = (bfd_elf_version_expr *)htab_find(head->htab,&e);\n        while ((pbVar5 != (bfd_elf_version_expr *)0x0 &&\n               (iVar4 = strcmp(pbVar5->pattern,local_34), iVar4 == 0))) {\n          if ((pbVar5->field_0x8 & 0x38) == 0x10) goto LAB_0001ed67;\n          pbVar5 = pbVar5->next;\n        }\nLAB_0001ef0c:\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 = local_34;\n        pbVar5 = (bfd_elf_version_expr *)htab_find(head->htab,&e);\n        while ((pbVar5 != (bfd_elf_version_expr *)0x0 &&\n               (iVar4 = strcmp(pbVar5->pattern,local_34), iVar4 == 0))) {\n          if ((pbVar5->field_0x8 & 0x38) == 0x10) goto LAB_0001ed67;\n          pbVar5 = pbVar5->next;\n        }\nLAB_0001ef0c:\n        uVar3 = head->mask;\n      }" { (expression_statement "e.pattern = local_34;" (assignment_expression "e.pattern = local_34" (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,local_34), iVar4 == 0))) {\n          if ((pbVar5->field_0x8 & 0x38) == 0x10) goto LAB_0001ed67;\n          pbVar5 = pbVar5->next;\n        }" while (parenthesized_expression "((pbVar5 != (bfd_elf_version_expr *)0x0 &&\n               (iVar4 = strcmp(pbVar5->pattern,local_34), iVar4 == 0)))" ( (parenthesized_expression "(pbVar5 != (bfd_elf_version_expr *)0x0 &&\n               (iVar4 = strcmp(pbVar5->pattern,local_34), iVar4 == 0))" ( (binary_expression "pbVar5 != (bfd_elf_version_expr *)0x0 &&\n               (iVar4 = strcmp(pbVar5->pattern,local_34), 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,local_34), iVar4 == 0)" ( (comma_expression "iVar4 = strcmp(pbVar5->pattern,local_34), iVar4 == 0" (assignment_expression "iVar4 = strcmp(pbVar5->pattern,local_34)" identifier = (call_expression "strcmp(pbVar5->pattern,local_34)" identifier (argument_list "(pbVar5->pattern,local_34)" ( (field_expression "pbVar5->pattern" identifier -> field_identifier) , identifier )))) , (binary_expression "iVar4 == 0" identifier == number_literal)) ))) )) )) (compound_statement "{\n          if ((pbVar5->field_0x8 & 0x38) == 0x10) goto LAB_0001ed67;\n          pbVar5 = pbVar5->next;\n        }" { (if_statement "if ((pbVar5->field_0x8 & 0x38) == 0x10) goto LAB_0001ed67;" if (parenthesized_expression "((pbVar5->field_0x8 & 0x38) == 0x10)" ( (binary_expression "(pbVar5->field_0x8 & 0x38) == 0x10" (parenthesized_expression "(pbVar5->field_0x8 & 0x38)" ( (binary_expression "pbVar5->field_0x8 & 0x38" (field_expression "pbVar5->field_0x8" identifier -> field_identifier) & number_literal) )) == number_literal) )) (goto_statement "goto LAB_0001ed67;" goto statement_identifier ;)) (expression_statement "pbVar5 = pbVar5->next;" (assignment_expression "pbVar5 = pbVar5->next" identifier = (field_expression "pbVar5->next" identifier -> field_identifier)) ;) })) (labeled_statement "LAB_0001ef0c:\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_0x8 & 0x38) == 0x20) goto LAB_0001ed67;\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_0x8 & 0x38) == 0x20) goto LAB_0001ed67;\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_0x8 & 0x38) == 0x20) goto LAB_0001ed67;\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_0x8 & 0x38) == 0x20) goto LAB_0001ed67;\n          pbVar5 = pbVar5->next;\n        }" { (if_statement "if ((pbVar5->field_0x8 & 0x38) == 0x20) goto LAB_0001ed67;" if (parenthesized_expression "((pbVar5->field_0x8 & 0x38) == 0x20)" ( (binary_expression "(pbVar5->field_0x8 & 0x38) == 0x20" (parenthesized_expression "(pbVar5->field_0x8 & 0x38)" ( (binary_expression "pbVar5->field_0x8 & 0x38" (field_expression "pbVar5->field_0x8" identifier -> field_identifier) & number_literal) )) == number_literal) )) (goto_statement "goto LAB_0001ed67;" 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_0001ed04;" goto statement_identifier ;) })) (if_statement "if ((prev->field_0x8 & 1) != 0) {\n      bVar2 = (byte)prev->field_0x8 >> 3 & 7;\n      if (bVar2 == 1) goto LAB_0001ef70;\n      if (bVar2 == 0) goto LAB_0001edc0;\n      if (bVar2 != 2) goto LAB_0001ed04;\n      goto LAB_0001ef0c;\n    }" if (parenthesized_expression "((prev->field_0x8 & 1) != 0)" ( (binary_expression "(prev->field_0x8 & 1) != 0" (parenthesized_expression "(prev->field_0x8 & 1)" ( (binary_expression "prev->field_0x8 & 1" (field_expression "prev->field_0x8" identifier -> field_identifier) & number_literal) )) != number_literal) )) (compound_statement "{\n      bVar2 = (byte)prev->field_0x8 >> 3 & 7;\n      if (bVar2 == 1) goto LAB_0001ef70;\n      if (bVar2 == 0) goto LAB_0001edc0;\n      if (bVar2 != 2) goto LAB_0001ed04;\n      goto LAB_0001ef0c;\n    }" { (expression_statement "bVar2 = (byte)prev->field_0x8 >> 3 & 7;" (assignment_expression "bVar2 = (byte)prev->field_0x8 >> 3 & 7" identifier = (binary_expression "(byte)prev->field_0x8 >> 3 & 7" (binary_expression "(byte)prev->field_0x8 >> 3" (cast_expression "(byte)prev->field_0x8" ( (type_descriptor "byte" type_identifier) ) (field_expression "prev->field_0x8" identifier -> field_identifier)) >> number_literal) & number_literal)) ;) (if_statement "if (bVar2 == 1) goto LAB_0001ef70;" if (parenthesized_expression "(bVar2 == 1)" ( (binary_expression "bVar2 == 1" identifier == number_literal) )) (goto_statement "goto LAB_0001ef70;" goto statement_identifier ;)) (if_statement "if (bVar2 == 0) goto LAB_0001edc0;" if (parenthesized_expression "(bVar2 == 0)" ( (binary_expression "bVar2 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0001edc0;" goto statement_identifier ;)) (if_statement "if (bVar2 != 2) goto LAB_0001ed04;" if (parenthesized_expression "(bVar2 != 2)" ( (binary_expression "bVar2 != 2" identifier != number_literal) )) (goto_statement "goto LAB_0001ed04;" goto statement_identifier ;)) (goto_statement "goto LAB_0001ef0c;" goto statement_identifier ;) })) }))) (expression_statement "pbVar5 = prev->next;" (assignment_expression "pbVar5 = prev->next" identifier = (field_expression "prev->next" identifier -> field_identifier)) ;) (labeled_statement "joined_r0x0001ed23:\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_0001ed67;\n      bVar2 = pbVar5->field_0x8 & 0x38;\n      __name = __s2_00;\n      if ((bVar2 != 0x20) && (__name = local_34, bVar2 != 0x10)) {\n        __name = __s2;\n      }\n      iVar4 = fnmatch(__pattern,__name,0);\n      if (iVar4 == 0) goto LAB_0001ed67;\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_0001ed67;\n      bVar2 = pbVar5->field_0x8 & 0x38;\n      __name = __s2_00;\n      if ((bVar2 != 0x20) && (__name = local_34, bVar2 != 0x10)) {\n        __name = __s2;\n      }\n      iVar4 = fnmatch(__pattern,__name,0);\n      if (iVar4 == 0) goto LAB_0001ed67;\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_0001ed67;\n      bVar2 = pbVar5->field_0x8 & 0x38;\n      __name = __s2_00;\n      if ((bVar2 != 0x20) && (__name = local_34, bVar2 != 0x10)) {\n        __name = __s2;\n      }\n      iVar4 = fnmatch(__pattern,__name,0);\n      if (iVar4 == 0) goto LAB_0001ed67;\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_0001ed67;\n      bVar2 = pbVar5->field_0x8 & 0x38;\n      __name = __s2_00;\n      if ((bVar2 != 0x20) && (__name = local_34, bVar2 != 0x10)) {\n        __name = __s2;\n      }\n      iVar4 = fnmatch(__pattern,__name,0);\n      if (iVar4 == 0) goto LAB_0001ed67;\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_0001ed67;\n      bVar2 = pbVar5->field_0x8 & 0x38;\n      __name = __s2_00;\n      if ((bVar2 != 0x20) && (__name = local_34, bVar2 != 0x10)) {\n        __name = __s2;\n      }\n      iVar4 = fnmatch(__pattern,__name,0);\n      if (iVar4 == 0) goto LAB_0001ed67;\n    }" { (if_statement "if ((*__pattern == '*') && (__pattern[1] == '\0')) goto LAB_0001ed67;" 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_0001ed67;" goto statement_identifier ;)) (expression_statement "bVar2 = pbVar5->field_0x8 & 0x38;" (assignment_expression "bVar2 = pbVar5->field_0x8 & 0x38" identifier = (binary_expression "pbVar5->field_0x8 & 0x38" (field_expression "pbVar5->field_0x8" identifier -> field_identifier) & number_literal)) ;) (expression_statement "__name = __s2_00;" (assignment_expression "__name = __s2_00" identifier = identifier) ;) (if_statement "if ((bVar2 != 0x20) && (__name = local_34, bVar2 != 0x10)) {\n        __name = __s2;\n      }" if (parenthesized_expression "((bVar2 != 0x20) && (__name = local_34, bVar2 != 0x10))" ( (binary_expression "(bVar2 != 0x20) && (__name = local_34, bVar2 != 0x10)" (parenthesized_expression "(bVar2 != 0x20)" ( (binary_expression "bVar2 != 0x20" identifier != number_literal) )) && (parenthesized_expression "(__name = local_34, bVar2 != 0x10)" ( (comma_expression "__name = local_34, bVar2 != 0x10" (assignment_expression "__name = local_34" identifier = identifier) , (binary_expression "bVar2 != 0x10" identifier != number_literal)) ))) )) (compound_statement "{\n        __name = __s2;\n      }" { (expression_statement "__name = __s2;" (assignment_expression "__name = __s2" 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_0001ed67;" if (parenthesized_expression "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0001ed67;" 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_0001ed67:\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 (local_34 != sym) {\n    free(local_34);\n  }" if (parenthesized_expression "(local_34 != sym)" ( (binary_expression "local_34 != sym" identifier != identifier) )) (compound_statement "{\n    free(local_34);\n  }" { (expression_statement "free(local_34);" (call_expression "free(local_34)" identifier (argument_list "(local_34)" ( 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 "undefined4 * FUN_0001ec50(int param_1,undefined4 *param_2,char *param_3)\n\n{\n  undefined4 uVar1;\n  char *__pattern;\n  byte bVar2;\n  char *__s2;\n  uint uVar3;\n  int iVar4;\n  char *__s2_00;\n  char *__name;\n  undefined4 *puVar5;\n  char *local_34;\n  undefined1 local_28 [4];\n  char *local_24;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x1ec59;\n  uVar1 = *(undefined4 *)PTR_current_demangling_style_00083f94;\n  cplus_demangle_set_style(0xffffffff);\n  __s2 = (char *)bfd_demangle(DAT_00084bf4,param_3,0);\n  if (__s2 == (char *)0x0) {\n    __s2 = param_3;\n  }\n  cplus_demangle_set_style(uVar1);\n  uVar3 = *(uint *)(param_1 + 0xc);\n  local_34 = param_3;\n  if ((uVar3 & 2) != 0) {\n    local_34 = (char *)bfd_demangle(DAT_00084bf4,param_3,3);\n    uVar3 = *(uint *)(param_1 + 0xc);\n    if (local_34 == (char *)0x0) {\n      local_34 = param_3;\n    }\n  }\n  if (((uVar3 & 4) == 0) ||\n     (__s2_00 = (char *)bfd_demangle(DAT_00084bf4,param_3,4), __s2_00 == (char *)0x0)) {\n    __s2_00 = param_3;\n  }\n  if (*(int *)(param_1 + 4) == 0) {\nLAB_0001ed04:\n    if ((param_2 == (undefined4 *)0x0) || ((*(byte *)(param_2 + 2) & 1) != 0)) {\n      puVar5 = *(undefined4 **)(param_1 + 8);\n      goto joined_r0x0001ed23;\n    }\n  }\n  else {\n    if (param_2 == (undefined4 *)0x0) {\nLAB_0001edc0:\n      uVar3 = *(uint *)(param_1 + 0xc);\n      if ((uVar3 & 1) != 0) {\n        local_24 = __s2;\n        puVar5 = (undefined4 *)htab_find(*(int *)(param_1 + 4),local_28);\n        while ((puVar5 != (undefined4 *)0x0 && (iVar4 = strcmp((char *)puVar5[1],__s2), iVar4 == 0))\n              ) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 8) goto LAB_0001ed67;\n          puVar5 = (undefined4 *)*puVar5;\n        }\nLAB_0001ef70:\n        uVar3 = *(uint *)(param_1 + 0xc);\n      }\n      if ((uVar3 & 2) != 0) {\n        local_24 = local_34;\n        puVar5 = (undefined4 *)htab_find(*(undefined4 *)(param_1 + 4),local_28);\n        while ((puVar5 != (undefined4 *)0x0 &&\n               (iVar4 = strcmp((char *)puVar5[1],local_34), iVar4 == 0))) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 0x10) goto LAB_0001ed67;\n          puVar5 = (undefined4 *)*puVar5;\n        }\nLAB_0001ef0c:\n        uVar3 = *(uint *)(param_1 + 0xc);\n      }\n      if ((uVar3 & 4) != 0) {\n        local_24 = __s2_00;\n        puVar5 = (undefined4 *)htab_find(*(undefined4 *)(param_1 + 4),local_28);\n        while ((puVar5 != (undefined4 *)0x0 &&\n               (iVar4 = strcmp((char *)puVar5[1],__s2_00), iVar4 == 0))) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 0x20) goto LAB_0001ed67;\n          puVar5 = (undefined4 *)*puVar5;\n        }\n      }\n      goto LAB_0001ed04;\n    }\n    if ((*(byte *)(param_2 + 2) & 1) != 0) {\n      bVar2 = *(byte *)(param_2 + 2) >> 3 & 7;\n      if (bVar2 == 1) goto LAB_0001ef70;\n      if (bVar2 == 0) goto LAB_0001edc0;\n      if (bVar2 != 2) goto LAB_0001ed04;\n      goto LAB_0001ef0c;\n    }\n  }\n  puVar5 = (undefined4 *)*param_2;\njoined_r0x0001ed23:\n  for (; puVar5 != (undefined4 *)0x0; puVar5 = (undefined4 *)*puVar5) {\n    __pattern = (char *)puVar5[1];\n    if (__pattern != (char *)0x0) {\n      if ((*__pattern == '*') && (__pattern[1] == '\0')) goto LAB_0001ed67;\n      __name = __s2_00;\n      if (((*(byte *)(puVar5 + 2) & 0x38) != 0x20) &&\n         (__name = local_34, (*(byte *)(puVar5 + 2) & 0x38) != 0x10)) {\n        __name = __s2;\n      }\n      iVar4 = fnmatch(__pattern,__name,0);\n      if (iVar4 == 0) goto LAB_0001ed67;\n    }\n  }\n  puVar5 = (undefined4 *)0x0;\nLAB_0001ed67:\n  if (__s2 != param_3) {\n    free(__s2);\n  }\n  if (local_34 != param_3) {\n    free(local_34);\n  }\n  if (__s2_00 != param_3) {\n    free(__s2_00);\n  }\n  return puVar5;\n}\n\n" (function_definition "undefined4 * FUN_0001ec50(int param_1,undefined4 *param_2,char *param_3)\n\n{\n  undefined4 uVar1;\n  char *__pattern;\n  byte bVar2;\n  char *__s2;\n  uint uVar3;\n  int iVar4;\n  char *__s2_00;\n  char *__name;\n  undefined4 *puVar5;\n  char *local_34;\n  undefined1 local_28 [4];\n  char *local_24;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x1ec59;\n  uVar1 = *(undefined4 *)PTR_current_demangling_style_00083f94;\n  cplus_demangle_set_style(0xffffffff);\n  __s2 = (char *)bfd_demangle(DAT_00084bf4,param_3,0);\n  if (__s2 == (char *)0x0) {\n    __s2 = param_3;\n  }\n  cplus_demangle_set_style(uVar1);\n  uVar3 = *(uint *)(param_1 + 0xc);\n  local_34 = param_3;\n  if ((uVar3 & 2) != 0) {\n    local_34 = (char *)bfd_demangle(DAT_00084bf4,param_3,3);\n    uVar3 = *(uint *)(param_1 + 0xc);\n    if (local_34 == (char *)0x0) {\n      local_34 = param_3;\n    }\n  }\n  if (((uVar3 & 4) == 0) ||\n     (__s2_00 = (char *)bfd_demangle(DAT_00084bf4,param_3,4), __s2_00 == (char *)0x0)) {\n    __s2_00 = param_3;\n  }\n  if (*(int *)(param_1 + 4) == 0) {\nLAB_0001ed04:\n    if ((param_2 == (undefined4 *)0x0) || ((*(byte *)(param_2 + 2) & 1) != 0)) {\n      puVar5 = *(undefined4 **)(param_1 + 8);\n      goto joined_r0x0001ed23;\n    }\n  }\n  else {\n    if (param_2 == (undefined4 *)0x0) {\nLAB_0001edc0:\n      uVar3 = *(uint *)(param_1 + 0xc);\n      if ((uVar3 & 1) != 0) {\n        local_24 = __s2;\n        puVar5 = (undefined4 *)htab_find(*(int *)(param_1 + 4),local_28);\n        while ((puVar5 != (undefined4 *)0x0 && (iVar4 = strcmp((char *)puVar5[1],__s2), iVar4 == 0))\n              ) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 8) goto LAB_0001ed67;\n          puVar5 = (undefined4 *)*puVar5;\n        }\nLAB_0001ef70:\n        uVar3 = *(uint *)(param_1 + 0xc);\n      }\n      if ((uVar3 & 2) != 0) {\n        local_24 = local_34;\n        puVar5 = (undefined4 *)htab_find(*(undefined4 *)(param_1 + 4),local_28);\n        while ((puVar5 != (undefined4 *)0x0 &&\n               (iVar4 = strcmp((char *)puVar5[1],local_34), iVar4 == 0))) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 0x10) goto LAB_0001ed67;\n          puVar5 = (undefined4 *)*puVar5;\n        }\nLAB_0001ef0c:\n        uVar3 = *(uint *)(param_1 + 0xc);\n      }\n      if ((uVar3 & 4) != 0) {\n        local_24 = __s2_00;\n        puVar5 = (undefined4 *)htab_find(*(undefined4 *)(param_1 + 4),local_28);\n        while ((puVar5 != (undefined4 *)0x0 &&\n               (iVar4 = strcmp((char *)puVar5[1],__s2_00), iVar4 == 0))) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 0x20) goto LAB_0001ed67;\n          puVar5 = (undefined4 *)*puVar5;\n        }\n      }\n      goto LAB_0001ed04;\n    }\n    if ((*(byte *)(param_2 + 2) & 1) != 0) {\n      bVar2 = *(byte *)(param_2 + 2) >> 3 & 7;\n      if (bVar2 == 1) goto LAB_0001ef70;\n      if (bVar2 == 0) goto LAB_0001edc0;\n      if (bVar2 != 2) goto LAB_0001ed04;\n      goto LAB_0001ef0c;\n    }\n  }\n  puVar5 = (undefined4 *)*param_2;\njoined_r0x0001ed23:\n  for (; puVar5 != (undefined4 *)0x0; puVar5 = (undefined4 *)*puVar5) {\n    __pattern = (char *)puVar5[1];\n    if (__pattern != (char *)0x0) {\n      if ((*__pattern == '*') && (__pattern[1] == '\0')) goto LAB_0001ed67;\n      __name = __s2_00;\n      if (((*(byte *)(puVar5 + 2) & 0x38) != 0x20) &&\n         (__name = local_34, (*(byte *)(puVar5 + 2) & 0x38) != 0x10)) {\n        __name = __s2;\n      }\n      iVar4 = fnmatch(__pattern,__name,0);\n      if (iVar4 == 0) goto LAB_0001ed67;\n    }\n  }\n  puVar5 = (undefined4 *)0x0;\nLAB_0001ed67:\n  if (__s2 != param_3) {\n    free(__s2);\n  }\n  if (local_34 != param_3) {\n    free(local_34);\n  }\n  if (__s2_00 != param_3) {\n    free(__s2_00);\n  }\n  return puVar5;\n}" type_identifier (pointer_declarator "* FUN_0001ec50(int param_1,undefined4 *param_2,char *param_3)" * (function_declarator "FUN_0001ec50(int param_1,undefined4 *param_2,char *param_3)" identifier (parameter_list "(int param_1,undefined4 *param_2,char *param_3)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "undefined4 *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "char *param_3" primitive_type (pointer_declarator "*param_3" * identifier)) )))) (compound_statement "{\n  undefined4 uVar1;\n  char *__pattern;\n  byte bVar2;\n  char *__s2;\n  uint uVar3;\n  int iVar4;\n  char *__s2_00;\n  char *__name;\n  undefined4 *puVar5;\n  char *local_34;\n  undefined1 local_28 [4];\n  char *local_24;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x1ec59;\n  uVar1 = *(undefined4 *)PTR_current_demangling_style_00083f94;\n  cplus_demangle_set_style(0xffffffff);\n  __s2 = (char *)bfd_demangle(DAT_00084bf4,param_3,0);\n  if (__s2 == (char *)0x0) {\n    __s2 = param_3;\n  }\n  cplus_demangle_set_style(uVar1);\n  uVar3 = *(uint *)(param_1 + 0xc);\n  local_34 = param_3;\n  if ((uVar3 & 2) != 0) {\n    local_34 = (char *)bfd_demangle(DAT_00084bf4,param_3,3);\n    uVar3 = *(uint *)(param_1 + 0xc);\n    if (local_34 == (char *)0x0) {\n      local_34 = param_3;\n    }\n  }\n  if (((uVar3 & 4) == 0) ||\n     (__s2_00 = (char *)bfd_demangle(DAT_00084bf4,param_3,4), __s2_00 == (char *)0x0)) {\n    __s2_00 = param_3;\n  }\n  if (*(int *)(param_1 + 4) == 0) {\nLAB_0001ed04:\n    if ((param_2 == (undefined4 *)0x0) || ((*(byte *)(param_2 + 2) & 1) != 0)) {\n      puVar5 = *(undefined4 **)(param_1 + 8);\n      goto joined_r0x0001ed23;\n    }\n  }\n  else {\n    if (param_2 == (undefined4 *)0x0) {\nLAB_0001edc0:\n      uVar3 = *(uint *)(param_1 + 0xc);\n      if ((uVar3 & 1) != 0) {\n        local_24 = __s2;\n        puVar5 = (undefined4 *)htab_find(*(int *)(param_1 + 4),local_28);\n        while ((puVar5 != (undefined4 *)0x0 && (iVar4 = strcmp((char *)puVar5[1],__s2), iVar4 == 0))\n              ) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 8) goto LAB_0001ed67;\n          puVar5 = (undefined4 *)*puVar5;\n        }\nLAB_0001ef70:\n        uVar3 = *(uint *)(param_1 + 0xc);\n      }\n      if ((uVar3 & 2) != 0) {\n        local_24 = local_34;\n        puVar5 = (undefined4 *)htab_find(*(undefined4 *)(param_1 + 4),local_28);\n        while ((puVar5 != (undefined4 *)0x0 &&\n               (iVar4 = strcmp((char *)puVar5[1],local_34), iVar4 == 0))) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 0x10) goto LAB_0001ed67;\n          puVar5 = (undefined4 *)*puVar5;\n        }\nLAB_0001ef0c:\n        uVar3 = *(uint *)(param_1 + 0xc);\n      }\n      if ((uVar3 & 4) != 0) {\n        local_24 = __s2_00;\n        puVar5 = (undefined4 *)htab_find(*(undefined4 *)(param_1 + 4),local_28);\n        while ((puVar5 != (undefined4 *)0x0 &&\n               (iVar4 = strcmp((char *)puVar5[1],__s2_00), iVar4 == 0))) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 0x20) goto LAB_0001ed67;\n          puVar5 = (undefined4 *)*puVar5;\n        }\n      }\n      goto LAB_0001ed04;\n    }\n    if ((*(byte *)(param_2 + 2) & 1) != 0) {\n      bVar2 = *(byte *)(param_2 + 2) >> 3 & 7;\n      if (bVar2 == 1) goto LAB_0001ef70;\n      if (bVar2 == 0) goto LAB_0001edc0;\n      if (bVar2 != 2) goto LAB_0001ed04;\n      goto LAB_0001ef0c;\n    }\n  }\n  puVar5 = (undefined4 *)*param_2;\njoined_r0x0001ed23:\n  for (; puVar5 != (undefined4 *)0x0; puVar5 = (undefined4 *)*puVar5) {\n    __pattern = (char *)puVar5[1];\n    if (__pattern != (char *)0x0) {\n      if ((*__pattern == '*') && (__pattern[1] == '\0')) goto LAB_0001ed67;\n      __name = __s2_00;\n      if (((*(byte *)(puVar5 + 2) & 0x38) != 0x20) &&\n         (__name = local_34, (*(byte *)(puVar5 + 2) & 0x38) != 0x10)) {\n        __name = __s2;\n      }\n      iVar4 = fnmatch(__pattern,__name,0);\n      if (iVar4 == 0) goto LAB_0001ed67;\n    }\n  }\n  puVar5 = (undefined4 *)0x0;\nLAB_0001ed67:\n  if (__s2 != param_3) {\n    free(__s2);\n  }\n  if (local_34 != param_3) {\n    free(local_34);\n  }\n  if (__s2_00 != param_3) {\n    free(__s2_00);\n  }\n  return puVar5;\n}" { (declaration "undefined4 uVar1;" type_identifier identifier ;) (declaration "char *__pattern;" primitive_type (pointer_declarator "*__pattern" * identifier) ;) (declaration "byte bVar2;" type_identifier identifier ;) (declaration "char *__s2;" primitive_type (pointer_declarator "*__s2" * identifier) ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "char *__s2_00;" primitive_type (pointer_declarator "*__s2_00" * identifier) ;) (declaration "char *__name;" primitive_type (pointer_declarator "*__name" * identifier) ;) (declaration "undefined4 *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "char *local_34;" primitive_type (pointer_declarator "*local_34" * identifier) ;) (declaration "undefined1 local_28 [4];" type_identifier (array_declarator "local_28 [4]" identifier [ number_literal ]) ;) (declaration "char *local_24;" primitive_type (pointer_declarator "*local_24" * identifier) ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (expression_statement "uStack_14 = 0x1ec59;" (assignment_expression "uStack_14 = 0x1ec59" identifier = number_literal) ;) (expression_statement "uVar1 = *(undefined4 *)PTR_current_demangling_style_00083f94;" (assignment_expression "uVar1 = *(undefined4 *)PTR_current_demangling_style_00083f94" identifier = (pointer_expression "*(undefined4 *)PTR_current_demangling_style_00083f94" * (cast_expression "(undefined4 *)PTR_current_demangling_style_00083f94" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) 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_00084bf4,param_3,0);" (assignment_expression "__s2 = (char *)bfd_demangle(DAT_00084bf4,param_3,0)" identifier = (cast_expression "(char *)bfd_demangle(DAT_00084bf4,param_3,0)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "bfd_demangle(DAT_00084bf4,param_3,0)" identifier (argument_list "(DAT_00084bf4,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 + 0xc);" (assignment_expression "uVar3 = *(uint *)(param_1 + 0xc)" identifier = (pointer_expression "*(uint *)(param_1 + 0xc)" * (cast_expression "(uint *)(param_1 + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "local_34 = param_3;" (assignment_expression "local_34 = param_3" identifier = identifier) ;) (if_statement "if ((uVar3 & 2) != 0) {\n    local_34 = (char *)bfd_demangle(DAT_00084bf4,param_3,3);\n    uVar3 = *(uint *)(param_1 + 0xc);\n    if (local_34 == (char *)0x0) {\n      local_34 = 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    local_34 = (char *)bfd_demangle(DAT_00084bf4,param_3,3);\n    uVar3 = *(uint *)(param_1 + 0xc);\n    if (local_34 == (char *)0x0) {\n      local_34 = param_3;\n    }\n  }" { (expression_statement "local_34 = (char *)bfd_demangle(DAT_00084bf4,param_3,3);" (assignment_expression "local_34 = (char *)bfd_demangle(DAT_00084bf4,param_3,3)" identifier = (cast_expression "(char *)bfd_demangle(DAT_00084bf4,param_3,3)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "bfd_demangle(DAT_00084bf4,param_3,3)" identifier (argument_list "(DAT_00084bf4,param_3,3)" ( identifier , identifier , number_literal ))))) ;) (expression_statement "uVar3 = *(uint *)(param_1 + 0xc);" (assignment_expression "uVar3 = *(uint *)(param_1 + 0xc)" identifier = (pointer_expression "*(uint *)(param_1 + 0xc)" * (cast_expression "(uint *)(param_1 + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) ))))) ;) (if_statement "if (local_34 == (char *)0x0) {\n      local_34 = param_3;\n    }" if (parenthesized_expression "(local_34 == (char *)0x0)" ( (binary_expression "local_34 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      local_34 = param_3;\n    }" { (expression_statement "local_34 = param_3;" (assignment_expression "local_34 = param_3" identifier = identifier) ;) })) })) (if_statement "if (((uVar3 & 4) == 0) ||\n     (__s2_00 = (char *)bfd_demangle(DAT_00084bf4,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_00084bf4,param_3,4), __s2_00 == (char *)0x0))" ( (binary_expression "((uVar3 & 4) == 0) ||\n     (__s2_00 = (char *)bfd_demangle(DAT_00084bf4,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_00084bf4,param_3,4), __s2_00 == (char *)0x0)" ( (comma_expression "__s2_00 = (char *)bfd_demangle(DAT_00084bf4,param_3,4), __s2_00 == (char *)0x0" (assignment_expression "__s2_00 = (char *)bfd_demangle(DAT_00084bf4,param_3,4)" identifier = (cast_expression "(char *)bfd_demangle(DAT_00084bf4,param_3,4)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "bfd_demangle(DAT_00084bf4,param_3,4)" identifier (argument_list "(DAT_00084bf4,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 (*(int *)(param_1 + 4) == 0) {\nLAB_0001ed04:\n    if ((param_2 == (undefined4 *)0x0) || ((*(byte *)(param_2 + 2) & 1) != 0)) {\n      puVar5 = *(undefined4 **)(param_1 + 8);\n      goto joined_r0x0001ed23;\n    }\n  }\n  else {\n    if (param_2 == (undefined4 *)0x0) {\nLAB_0001edc0:\n      uVar3 = *(uint *)(param_1 + 0xc);\n      if ((uVar3 & 1) != 0) {\n        local_24 = __s2;\n        puVar5 = (undefined4 *)htab_find(*(int *)(param_1 + 4),local_28);\n        while ((puVar5 != (undefined4 *)0x0 && (iVar4 = strcmp((char *)puVar5[1],__s2), iVar4 == 0))\n              ) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 8) goto LAB_0001ed67;\n          puVar5 = (undefined4 *)*puVar5;\n        }\nLAB_0001ef70:\n        uVar3 = *(uint *)(param_1 + 0xc);\n      }\n      if ((uVar3 & 2) != 0) {\n        local_24 = local_34;\n        puVar5 = (undefined4 *)htab_find(*(undefined4 *)(param_1 + 4),local_28);\n        while ((puVar5 != (undefined4 *)0x0 &&\n               (iVar4 = strcmp((char *)puVar5[1],local_34), iVar4 == 0))) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 0x10) goto LAB_0001ed67;\n          puVar5 = (undefined4 *)*puVar5;\n        }\nLAB_0001ef0c:\n        uVar3 = *(uint *)(param_1 + 0xc);\n      }\n      if ((uVar3 & 4) != 0) {\n        local_24 = __s2_00;\n        puVar5 = (undefined4 *)htab_find(*(undefined4 *)(param_1 + 4),local_28);\n        while ((puVar5 != (undefined4 *)0x0 &&\n               (iVar4 = strcmp((char *)puVar5[1],__s2_00), iVar4 == 0))) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 0x20) goto LAB_0001ed67;\n          puVar5 = (undefined4 *)*puVar5;\n        }\n      }\n      goto LAB_0001ed04;\n    }\n    if ((*(byte *)(param_2 + 2) & 1) != 0) {\n      bVar2 = *(byte *)(param_2 + 2) >> 3 & 7;\n      if (bVar2 == 1) goto LAB_0001ef70;\n      if (bVar2 == 0) goto LAB_0001edc0;\n      if (bVar2 != 2) goto LAB_0001ed04;\n      goto LAB_0001ef0c;\n    }\n  }" if (parenthesized_expression "(*(int *)(param_1 + 4) == 0)" ( (binary_expression "*(int *)(param_1 + 4) == 0" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\nLAB_0001ed04:\n    if ((param_2 == (undefined4 *)0x0) || ((*(byte *)(param_2 + 2) & 1) != 0)) {\n      puVar5 = *(undefined4 **)(param_1 + 8);\n      goto joined_r0x0001ed23;\n    }\n  }" { (labeled_statement "LAB_0001ed04:\n    if ((param_2 == (undefined4 *)0x0) || ((*(byte *)(param_2 + 2) & 1) != 0)) {\n      puVar5 = *(undefined4 **)(param_1 + 8);\n      goto joined_r0x0001ed23;\n    }" statement_identifier : (if_statement "if ((param_2 == (undefined4 *)0x0) || ((*(byte *)(param_2 + 2) & 1) != 0)) {\n      puVar5 = *(undefined4 **)(param_1 + 8);\n      goto joined_r0x0001ed23;\n    }" if (parenthesized_expression "((param_2 == (undefined4 *)0x0) || ((*(byte *)(param_2 + 2) & 1) != 0))" ( (binary_expression "(param_2 == (undefined4 *)0x0) || ((*(byte *)(param_2 + 2) & 1) != 0)" (parenthesized_expression "(param_2 == (undefined4 *)0x0)" ( (binary_expression "param_2 == (undefined4 *)0x0" identifier == (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" 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 = *(undefined4 **)(param_1 + 8);\n      goto joined_r0x0001ed23;\n    }" { (expression_statement "puVar5 = *(undefined4 **)(param_1 + 8);" (assignment_expression "puVar5 = *(undefined4 **)(param_1 + 8)" identifier = (pointer_expression "*(undefined4 **)(param_1 + 8)" * (cast_expression "(undefined4 **)(param_1 + 8)" ( (type_descriptor "undefined4 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) ))))) ;) (goto_statement "goto joined_r0x0001ed23;" goto statement_identifier ;) }))) }) (else_clause "else {\n    if (param_2 == (undefined4 *)0x0) {\nLAB_0001edc0:\n      uVar3 = *(uint *)(param_1 + 0xc);\n      if ((uVar3 & 1) != 0) {\n        local_24 = __s2;\n        puVar5 = (undefined4 *)htab_find(*(int *)(param_1 + 4),local_28);\n        while ((puVar5 != (undefined4 *)0x0 && (iVar4 = strcmp((char *)puVar5[1],__s2), iVar4 == 0))\n              ) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 8) goto LAB_0001ed67;\n          puVar5 = (undefined4 *)*puVar5;\n        }\nLAB_0001ef70:\n        uVar3 = *(uint *)(param_1 + 0xc);\n      }\n      if ((uVar3 & 2) != 0) {\n        local_24 = local_34;\n        puVar5 = (undefined4 *)htab_find(*(undefined4 *)(param_1 + 4),local_28);\n        while ((puVar5 != (undefined4 *)0x0 &&\n               (iVar4 = strcmp((char *)puVar5[1],local_34), iVar4 == 0))) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 0x10) goto LAB_0001ed67;\n          puVar5 = (undefined4 *)*puVar5;\n        }\nLAB_0001ef0c:\n        uVar3 = *(uint *)(param_1 + 0xc);\n      }\n      if ((uVar3 & 4) != 0) {\n        local_24 = __s2_00;\n        puVar5 = (undefined4 *)htab_find(*(undefined4 *)(param_1 + 4),local_28);\n        while ((puVar5 != (undefined4 *)0x0 &&\n               (iVar4 = strcmp((char *)puVar5[1],__s2_00), iVar4 == 0))) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 0x20) goto LAB_0001ed67;\n          puVar5 = (undefined4 *)*puVar5;\n        }\n      }\n      goto LAB_0001ed04;\n    }\n    if ((*(byte *)(param_2 + 2) & 1) != 0) {\n      bVar2 = *(byte *)(param_2 + 2) >> 3 & 7;\n      if (bVar2 == 1) goto LAB_0001ef70;\n      if (bVar2 == 0) goto LAB_0001edc0;\n      if (bVar2 != 2) goto LAB_0001ed04;\n      goto LAB_0001ef0c;\n    }\n  }" else (compound_statement "{\n    if (param_2 == (undefined4 *)0x0) {\nLAB_0001edc0:\n      uVar3 = *(uint *)(param_1 + 0xc);\n      if ((uVar3 & 1) != 0) {\n        local_24 = __s2;\n        puVar5 = (undefined4 *)htab_find(*(int *)(param_1 + 4),local_28);\n        while ((puVar5 != (undefined4 *)0x0 && (iVar4 = strcmp((char *)puVar5[1],__s2), iVar4 == 0))\n              ) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 8) goto LAB_0001ed67;\n          puVar5 = (undefined4 *)*puVar5;\n        }\nLAB_0001ef70:\n        uVar3 = *(uint *)(param_1 + 0xc);\n      }\n      if ((uVar3 & 2) != 0) {\n        local_24 = local_34;\n        puVar5 = (undefined4 *)htab_find(*(undefined4 *)(param_1 + 4),local_28);\n        while ((puVar5 != (undefined4 *)0x0 &&\n               (iVar4 = strcmp((char *)puVar5[1],local_34), iVar4 == 0))) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 0x10) goto LAB_0001ed67;\n          puVar5 = (undefined4 *)*puVar5;\n        }\nLAB_0001ef0c:\n        uVar3 = *(uint *)(param_1 + 0xc);\n      }\n      if ((uVar3 & 4) != 0) {\n        local_24 = __s2_00;\n        puVar5 = (undefined4 *)htab_find(*(undefined4 *)(param_1 + 4),local_28);\n        while ((puVar5 != (undefined4 *)0x0 &&\n               (iVar4 = strcmp((char *)puVar5[1],__s2_00), iVar4 == 0))) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 0x20) goto LAB_0001ed67;\n          puVar5 = (undefined4 *)*puVar5;\n        }\n      }\n      goto LAB_0001ed04;\n    }\n    if ((*(byte *)(param_2 + 2) & 1) != 0) {\n      bVar2 = *(byte *)(param_2 + 2) >> 3 & 7;\n      if (bVar2 == 1) goto LAB_0001ef70;\n      if (bVar2 == 0) goto LAB_0001edc0;\n      if (bVar2 != 2) goto LAB_0001ed04;\n      goto LAB_0001ef0c;\n    }\n  }" { (if_statement "if (param_2 == (undefined4 *)0x0) {\nLAB_0001edc0:\n      uVar3 = *(uint *)(param_1 + 0xc);\n      if ((uVar3 & 1) != 0) {\n        local_24 = __s2;\n        puVar5 = (undefined4 *)htab_find(*(int *)(param_1 + 4),local_28);\n        while ((puVar5 != (undefined4 *)0x0 && (iVar4 = strcmp((char *)puVar5[1],__s2), iVar4 == 0))\n              ) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 8) goto LAB_0001ed67;\n          puVar5 = (undefined4 *)*puVar5;\n        }\nLAB_0001ef70:\n        uVar3 = *(uint *)(param_1 + 0xc);\n      }\n      if ((uVar3 & 2) != 0) {\n        local_24 = local_34;\n        puVar5 = (undefined4 *)htab_find(*(undefined4 *)(param_1 + 4),local_28);\n        while ((puVar5 != (undefined4 *)0x0 &&\n               (iVar4 = strcmp((char *)puVar5[1],local_34), iVar4 == 0))) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 0x10) goto LAB_0001ed67;\n          puVar5 = (undefined4 *)*puVar5;\n        }\nLAB_0001ef0c:\n        uVar3 = *(uint *)(param_1 + 0xc);\n      }\n      if ((uVar3 & 4) != 0) {\n        local_24 = __s2_00;\n        puVar5 = (undefined4 *)htab_find(*(undefined4 *)(param_1 + 4),local_28);\n        while ((puVar5 != (undefined4 *)0x0 &&\n               (iVar4 = strcmp((char *)puVar5[1],__s2_00), iVar4 == 0))) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 0x20) goto LAB_0001ed67;\n          puVar5 = (undefined4 *)*puVar5;\n        }\n      }\n      goto LAB_0001ed04;\n    }" if (parenthesized_expression "(param_2 == (undefined4 *)0x0)" ( (binary_expression "param_2 == (undefined4 *)0x0" identifier == (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_0001edc0:\n      uVar3 = *(uint *)(param_1 + 0xc);\n      if ((uVar3 & 1) != 0) {\n        local_24 = __s2;\n        puVar5 = (undefined4 *)htab_find(*(int *)(param_1 + 4),local_28);\n        while ((puVar5 != (undefined4 *)0x0 && (iVar4 = strcmp((char *)puVar5[1],__s2), iVar4 == 0))\n              ) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 8) goto LAB_0001ed67;\n          puVar5 = (undefined4 *)*puVar5;\n        }\nLAB_0001ef70:\n        uVar3 = *(uint *)(param_1 + 0xc);\n      }\n      if ((uVar3 & 2) != 0) {\n        local_24 = local_34;\n        puVar5 = (undefined4 *)htab_find(*(undefined4 *)(param_1 + 4),local_28);\n        while ((puVar5 != (undefined4 *)0x0 &&\n               (iVar4 = strcmp((char *)puVar5[1],local_34), iVar4 == 0))) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 0x10) goto LAB_0001ed67;\n          puVar5 = (undefined4 *)*puVar5;\n        }\nLAB_0001ef0c:\n        uVar3 = *(uint *)(param_1 + 0xc);\n      }\n      if ((uVar3 & 4) != 0) {\n        local_24 = __s2_00;\n        puVar5 = (undefined4 *)htab_find(*(undefined4 *)(param_1 + 4),local_28);\n        while ((puVar5 != (undefined4 *)0x0 &&\n               (iVar4 = strcmp((char *)puVar5[1],__s2_00), iVar4 == 0))) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 0x20) goto LAB_0001ed67;\n          puVar5 = (undefined4 *)*puVar5;\n        }\n      }\n      goto LAB_0001ed04;\n    }" { (labeled_statement "LAB_0001edc0:\n      uVar3 = *(uint *)(param_1 + 0xc);" statement_identifier : (expression_statement "uVar3 = *(uint *)(param_1 + 0xc);" (assignment_expression "uVar3 = *(uint *)(param_1 + 0xc)" identifier = (pointer_expression "*(uint *)(param_1 + 0xc)" * (cast_expression "(uint *)(param_1 + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) ))))) ;)) (if_statement "if ((uVar3 & 1) != 0) {\n        local_24 = __s2;\n        puVar5 = (undefined4 *)htab_find(*(int *)(param_1 + 4),local_28);\n        while ((puVar5 != (undefined4 *)0x0 && (iVar4 = strcmp((char *)puVar5[1],__s2), iVar4 == 0))\n              ) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 8) goto LAB_0001ed67;\n          puVar5 = (undefined4 *)*puVar5;\n        }\nLAB_0001ef70:\n        uVar3 = *(uint *)(param_1 + 0xc);\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_24 = __s2;\n        puVar5 = (undefined4 *)htab_find(*(int *)(param_1 + 4),local_28);\n        while ((puVar5 != (undefined4 *)0x0 && (iVar4 = strcmp((char *)puVar5[1],__s2), iVar4 == 0))\n              ) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 8) goto LAB_0001ed67;\n          puVar5 = (undefined4 *)*puVar5;\n        }\nLAB_0001ef70:\n        uVar3 = *(uint *)(param_1 + 0xc);\n      }" { (expression_statement "local_24 = __s2;" (assignment_expression "local_24 = __s2" identifier = identifier) ;) (expression_statement "puVar5 = (undefined4 *)htab_find(*(int *)(param_1 + 4),local_28);" (assignment_expression "puVar5 = (undefined4 *)htab_find(*(int *)(param_1 + 4),local_28)" identifier = (cast_expression "(undefined4 *)htab_find(*(int *)(param_1 + 4),local_28)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "htab_find(*(int *)(param_1 + 4),local_28)" identifier (argument_list "(*(int *)(param_1 + 4),local_28)" ( (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) , identifier ))))) ;) (while_statement "while ((puVar5 != (undefined4 *)0x0 && (iVar4 = strcmp((char *)puVar5[1],__s2), iVar4 == 0))\n              ) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 8) goto LAB_0001ed67;\n          puVar5 = (undefined4 *)*puVar5;\n        }" while (parenthesized_expression "((puVar5 != (undefined4 *)0x0 && (iVar4 = strcmp((char *)puVar5[1],__s2), iVar4 == 0))\n              )" ( (parenthesized_expression "(puVar5 != (undefined4 *)0x0 && (iVar4 = strcmp((char *)puVar5[1],__s2), iVar4 == 0))" ( (binary_expression "puVar5 != (undefined4 *)0x0 && (iVar4 = strcmp((char *)puVar5[1],__s2), iVar4 == 0)" (binary_expression "puVar5 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" 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_0001ed67;\n          puVar5 = (undefined4 *)*puVar5;\n        }" { (if_statement "if ((*(byte *)(puVar5 + 2) & 0x38) == 8) goto LAB_0001ed67;" 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_0001ed67;" goto statement_identifier ;)) (expression_statement "puVar5 = (undefined4 *)*puVar5;" (assignment_expression "puVar5 = (undefined4 *)*puVar5" identifier = (cast_expression "(undefined4 *)*puVar5" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar5" * identifier))) ;) })) (labeled_statement "LAB_0001ef70:\n        uVar3 = *(uint *)(param_1 + 0xc);" statement_identifier : (expression_statement "uVar3 = *(uint *)(param_1 + 0xc);" (assignment_expression "uVar3 = *(uint *)(param_1 + 0xc)" identifier = (pointer_expression "*(uint *)(param_1 + 0xc)" * (cast_expression "(uint *)(param_1 + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) ))))) ;)) })) (if_statement "if ((uVar3 & 2) != 0) {\n        local_24 = local_34;\n        puVar5 = (undefined4 *)htab_find(*(undefined4 *)(param_1 + 4),local_28);\n        while ((puVar5 != (undefined4 *)0x0 &&\n               (iVar4 = strcmp((char *)puVar5[1],local_34), iVar4 == 0))) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 0x10) goto LAB_0001ed67;\n          puVar5 = (undefined4 *)*puVar5;\n        }\nLAB_0001ef0c:\n        uVar3 = *(uint *)(param_1 + 0xc);\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_24 = local_34;\n        puVar5 = (undefined4 *)htab_find(*(undefined4 *)(param_1 + 4),local_28);\n        while ((puVar5 != (undefined4 *)0x0 &&\n               (iVar4 = strcmp((char *)puVar5[1],local_34), iVar4 == 0))) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 0x10) goto LAB_0001ed67;\n          puVar5 = (undefined4 *)*puVar5;\n        }\nLAB_0001ef0c:\n        uVar3 = *(uint *)(param_1 + 0xc);\n      }" { (expression_statement "local_24 = local_34;" (assignment_expression "local_24 = local_34" identifier = identifier) ;) (expression_statement "puVar5 = (undefined4 *)htab_find(*(undefined4 *)(param_1 + 4),local_28);" (assignment_expression "puVar5 = (undefined4 *)htab_find(*(undefined4 *)(param_1 + 4),local_28)" identifier = (cast_expression "(undefined4 *)htab_find(*(undefined4 *)(param_1 + 4),local_28)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "htab_find(*(undefined4 *)(param_1 + 4),local_28)" identifier (argument_list "(*(undefined4 *)(param_1 + 4),local_28)" ( (pointer_expression "*(undefined4 *)(param_1 + 4)" * (cast_expression "(undefined4 *)(param_1 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) , identifier ))))) ;) (while_statement "while ((puVar5 != (undefined4 *)0x0 &&\n               (iVar4 = strcmp((char *)puVar5[1],local_34), iVar4 == 0))) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 0x10) goto LAB_0001ed67;\n          puVar5 = (undefined4 *)*puVar5;\n        }" while (parenthesized_expression "((puVar5 != (undefined4 *)0x0 &&\n               (iVar4 = strcmp((char *)puVar5[1],local_34), iVar4 == 0)))" ( (parenthesized_expression "(puVar5 != (undefined4 *)0x0 &&\n               (iVar4 = strcmp((char *)puVar5[1],local_34), iVar4 == 0))" ( (binary_expression "puVar5 != (undefined4 *)0x0 &&\n               (iVar4 = strcmp((char *)puVar5[1],local_34), iVar4 == 0)" (binary_expression "puVar5 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) && (parenthesized_expression "(iVar4 = strcmp((char *)puVar5[1],local_34), iVar4 == 0)" ( (comma_expression "iVar4 = strcmp((char *)puVar5[1],local_34), iVar4 == 0" (assignment_expression "iVar4 = strcmp((char *)puVar5[1],local_34)" identifier = (call_expression "strcmp((char *)puVar5[1],local_34)" identifier (argument_list "((char *)puVar5[1],local_34)" ( (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_0001ed67;\n          puVar5 = (undefined4 *)*puVar5;\n        }" { (if_statement "if ((*(byte *)(puVar5 + 2) & 0x38) == 0x10) goto LAB_0001ed67;" 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_0001ed67;" goto statement_identifier ;)) (expression_statement "puVar5 = (undefined4 *)*puVar5;" (assignment_expression "puVar5 = (undefined4 *)*puVar5" identifier = (cast_expression "(undefined4 *)*puVar5" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar5" * identifier))) ;) })) (labeled_statement "LAB_0001ef0c:\n        uVar3 = *(uint *)(param_1 + 0xc);" statement_identifier : (expression_statement "uVar3 = *(uint *)(param_1 + 0xc);" (assignment_expression "uVar3 = *(uint *)(param_1 + 0xc)" identifier = (pointer_expression "*(uint *)(param_1 + 0xc)" * (cast_expression "(uint *)(param_1 + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) ))))) ;)) })) (if_statement "if ((uVar3 & 4) != 0) {\n        local_24 = __s2_00;\n        puVar5 = (undefined4 *)htab_find(*(undefined4 *)(param_1 + 4),local_28);\n        while ((puVar5 != (undefined4 *)0x0 &&\n               (iVar4 = strcmp((char *)puVar5[1],__s2_00), iVar4 == 0))) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 0x20) goto LAB_0001ed67;\n          puVar5 = (undefined4 *)*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_24 = __s2_00;\n        puVar5 = (undefined4 *)htab_find(*(undefined4 *)(param_1 + 4),local_28);\n        while ((puVar5 != (undefined4 *)0x0 &&\n               (iVar4 = strcmp((char *)puVar5[1],__s2_00), iVar4 == 0))) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 0x20) goto LAB_0001ed67;\n          puVar5 = (undefined4 *)*puVar5;\n        }\n      }" { (expression_statement "local_24 = __s2_00;" (assignment_expression "local_24 = __s2_00" identifier = identifier) ;) (expression_statement "puVar5 = (undefined4 *)htab_find(*(undefined4 *)(param_1 + 4),local_28);" (assignment_expression "puVar5 = (undefined4 *)htab_find(*(undefined4 *)(param_1 + 4),local_28)" identifier = (cast_expression "(undefined4 *)htab_find(*(undefined4 *)(param_1 + 4),local_28)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "htab_find(*(undefined4 *)(param_1 + 4),local_28)" identifier (argument_list "(*(undefined4 *)(param_1 + 4),local_28)" ( (pointer_expression "*(undefined4 *)(param_1 + 4)" * (cast_expression "(undefined4 *)(param_1 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) , identifier ))))) ;) (while_statement "while ((puVar5 != (undefined4 *)0x0 &&\n               (iVar4 = strcmp((char *)puVar5[1],__s2_00), iVar4 == 0))) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 0x20) goto LAB_0001ed67;\n          puVar5 = (undefined4 *)*puVar5;\n        }" while (parenthesized_expression "((puVar5 != (undefined4 *)0x0 &&\n               (iVar4 = strcmp((char *)puVar5[1],__s2_00), iVar4 == 0)))" ( (parenthesized_expression "(puVar5 != (undefined4 *)0x0 &&\n               (iVar4 = strcmp((char *)puVar5[1],__s2_00), iVar4 == 0))" ( (binary_expression "puVar5 != (undefined4 *)0x0 &&\n               (iVar4 = strcmp((char *)puVar5[1],__s2_00), iVar4 == 0)" (binary_expression "puVar5 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" 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_0001ed67;\n          puVar5 = (undefined4 *)*puVar5;\n        }" { (if_statement "if ((*(byte *)(puVar5 + 2) & 0x38) == 0x20) goto LAB_0001ed67;" 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_0001ed67;" goto statement_identifier ;)) (expression_statement "puVar5 = (undefined4 *)*puVar5;" (assignment_expression "puVar5 = (undefined4 *)*puVar5" identifier = (cast_expression "(undefined4 *)*puVar5" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar5" * identifier))) ;) })) })) (goto_statement "goto LAB_0001ed04;" 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_0001ef70;\n      if (bVar2 == 0) goto LAB_0001edc0;\n      if (bVar2 != 2) goto LAB_0001ed04;\n      goto LAB_0001ef0c;\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_0001ef70;\n      if (bVar2 == 0) goto LAB_0001edc0;\n      if (bVar2 != 2) goto LAB_0001ed04;\n      goto LAB_0001ef0c;\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_0001ef70;" if (parenthesized_expression "(bVar2 == 1)" ( (binary_expression "bVar2 == 1" identifier == number_literal) )) (goto_statement "goto LAB_0001ef70;" goto statement_identifier ;)) (if_statement "if (bVar2 == 0) goto LAB_0001edc0;" if (parenthesized_expression "(bVar2 == 0)" ( (binary_expression "bVar2 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0001edc0;" goto statement_identifier ;)) (if_statement "if (bVar2 != 2) goto LAB_0001ed04;" if (parenthesized_expression "(bVar2 != 2)" ( (binary_expression "bVar2 != 2" identifier != number_literal) )) (goto_statement "goto LAB_0001ed04;" goto statement_identifier ;)) (goto_statement "goto LAB_0001ef0c;" goto statement_identifier ;) })) }))) (expression_statement "puVar5 = (undefined4 *)*param_2;" (assignment_expression "puVar5 = (undefined4 *)*param_2" identifier = (cast_expression "(undefined4 *)*param_2" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_2" * identifier))) ;) (labeled_statement "joined_r0x0001ed23:\n  for (; puVar5 != (undefined4 *)0x0; puVar5 = (undefined4 *)*puVar5) {\n    __pattern = (char *)puVar5[1];\n    if (__pattern != (char *)0x0) {\n      if ((*__pattern == '*') && (__pattern[1] == '\0')) goto LAB_0001ed67;\n      __name = __s2_00;\n      if (((*(byte *)(puVar5 + 2) & 0x38) != 0x20) &&\n         (__name = local_34, (*(byte *)(puVar5 + 2) & 0x38) != 0x10)) {\n        __name = __s2;\n      }\n      iVar4 = fnmatch(__pattern,__name,0);\n      if (iVar4 == 0) goto LAB_0001ed67;\n    }\n  }" statement_identifier : (for_statement "for (; puVar5 != (undefined4 *)0x0; puVar5 = (undefined4 *)*puVar5) {\n    __pattern = (char *)puVar5[1];\n    if (__pattern != (char *)0x0) {\n      if ((*__pattern == '*') && (__pattern[1] == '\0')) goto LAB_0001ed67;\n      __name = __s2_00;\n      if (((*(byte *)(puVar5 + 2) & 0x38) != 0x20) &&\n         (__name = local_34, (*(byte *)(puVar5 + 2) & 0x38) != 0x10)) {\n        __name = __s2;\n      }\n      iVar4 = fnmatch(__pattern,__name,0);\n      if (iVar4 == 0) goto LAB_0001ed67;\n    }\n  }" for ( ; (binary_expression "puVar5 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ; (assignment_expression "puVar5 = (undefined4 *)*puVar5" identifier = (cast_expression "(undefined4 *)*puVar5" ( (type_descriptor "undefined4 *" 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_0001ed67;\n      __name = __s2_00;\n      if (((*(byte *)(puVar5 + 2) & 0x38) != 0x20) &&\n         (__name = local_34, (*(byte *)(puVar5 + 2) & 0x38) != 0x10)) {\n        __name = __s2;\n      }\n      iVar4 = fnmatch(__pattern,__name,0);\n      if (iVar4 == 0) goto LAB_0001ed67;\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_0001ed67;\n      __name = __s2_00;\n      if (((*(byte *)(puVar5 + 2) & 0x38) != 0x20) &&\n         (__name = local_34, (*(byte *)(puVar5 + 2) & 0x38) != 0x10)) {\n        __name = __s2;\n      }\n      iVar4 = fnmatch(__pattern,__name,0);\n      if (iVar4 == 0) goto LAB_0001ed67;\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_0001ed67;\n      __name = __s2_00;\n      if (((*(byte *)(puVar5 + 2) & 0x38) != 0x20) &&\n         (__name = local_34, (*(byte *)(puVar5 + 2) & 0x38) != 0x10)) {\n        __name = __s2;\n      }\n      iVar4 = fnmatch(__pattern,__name,0);\n      if (iVar4 == 0) goto LAB_0001ed67;\n    }" { (if_statement "if ((*__pattern == '*') && (__pattern[1] == '\0')) goto LAB_0001ed67;" 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_0001ed67;" 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 = local_34, (*(byte *)(puVar5 + 2) & 0x38) != 0x10)) {\n        __name = __s2;\n      }" if (parenthesized_expression "(((*(byte *)(puVar5 + 2) & 0x38) != 0x20) &&\n         (__name = local_34, (*(byte *)(puVar5 + 2) & 0x38) != 0x10))" ( (binary_expression "((*(byte *)(puVar5 + 2) & 0x38) != 0x20) &&\n         (__name = local_34, (*(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 = local_34, (*(byte *)(puVar5 + 2) & 0x38) != 0x10)" ( (comma_expression "__name = local_34, (*(byte *)(puVar5 + 2) & 0x38) != 0x10" (assignment_expression "__name = local_34" 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;\n      }" { (expression_statement "__name = __s2;" (assignment_expression "__name = __s2" 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_0001ed67;" if (parenthesized_expression "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0001ed67;" goto statement_identifier ;)) })) }))) (expression_statement "puVar5 = (undefined4 *)0x0;" (assignment_expression "puVar5 = (undefined4 *)0x0" identifier = (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (labeled_statement "LAB_0001ed67:\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 (local_34 != param_3) {\n    free(local_34);\n  }" if (parenthesized_expression "(local_34 != param_3)" ( (binary_expression "local_34 != param_3" identifier != identifier) )) (compound_statement "{\n    free(local_34);\n  }" { (expression_statement "free(local_34);" (call_expression "free(local_34)" identifier (argument_list "(local_34)" ( 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 TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) )))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * 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 (array_declarator IDENT [ LIT ]) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) 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 TYPE (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 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))) ;) })) (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 "undefined4 * FUN_0001ec50(int param_1,undefined4 *param_2,char *param_3)\n\n{\n  undefined4 uVar1;\n  char *__pattern;\n  byte bVar2;\n  char *__s2;\n  uint uVar3;\n  int iVar4;\n  char *__s2_00;\n  char *__name;\n  undefined4 *puVar5;\n  char *local_34;\n  undefined1 local_28 [4];\n  char *local_24;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x1ec59;\n  uVar1 = *(undefined4 *)PTR_current_demangling_style_00083f94;\n  cplus_demangle_set_style(0xffffffff);\n  __s2 = (char *)bfd_demangle(DAT_00084bf4,param_3,0);\n  if (__s2 == (char *)0x0) {\n    __s2 = param_3;\n  }\n  cplus_demangle_set_style(uVar1);\n  uVar3 = *(uint *)(param_1 + 0xc);\n  local_34 = param_3;\n  if ((uVar3 & 2) != 0) {\n    local_34 = (char *)bfd_demangle(DAT_00084bf4,param_3,3);\n    uVar3 = *(uint *)(param_1 + 0xc);\n    if (local_34 == (char *)0x0) {\n      local_34 = param_3;\n    }\n  }\n  if (((uVar3 & 4) == 0) ||\n     (__s2_00 = (char *)bfd_demangle(DAT_00084bf4,param_3,4), __s2_00 == (char *)0x0)) {\n    __s2_00 = param_3;\n  }\n  if (*(int *)(param_1 + 4) == 0) {\nLAB_0001ed04:\n    if ((param_2 == (undefined4 *)0x0) || ((*(byte *)(param_2 + 2) & 1) != 0)) {\n      puVar5 = *(undefined4 **)(param_1 + 8);\n      goto joined_r0x0001ed23;\n    }\n  }\n  else {\n    if (param_2 == (undefined4 *)0x0) {\nLAB_0001edc0:\n      uVar3 = *(uint *)(param_1 + 0xc);\n      if ((uVar3 & 1) != 0) {\n        local_24 = __s2;\n        puVar5 = (undefined4 *)htab_find(*(int *)(param_1 + 4),local_28);\n        while ((puVar5 != (undefined4 *)0x0 && (iVar4 = strcmp((char *)puVar5[1],__s2), iVar4 == 0))\n              ) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 8) goto LAB_0001ed67;\n          puVar5 = (undefined4 *)*puVar5;\n        }\nLAB_0001ef70:\n        uVar3 = *(uint *)(param_1 + 0xc);\n      }\n      if ((uVar3 & 2) != 0) {\n        local_24 = local_34;\n        puVar5 = (undefined4 *)htab_find(*(undefined4 *)(param_1 + 4),local_28);\n        while ((puVar5 != (undefined4 *)0x0 &&\n               (iVar4 = strcmp((char *)puVar5[1],local_34), iVar4 == 0))) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 0x10) goto LAB_0001ed67;\n          puVar5 = (undefined4 *)*puVar5;\n        }\nLAB_0001ef0c:\n        uVar3 = *(uint *)(param_1 + 0xc);\n      }\n      if ((uVar3 & 4) != 0) {\n        local_24 = __s2_00;\n        puVar5 = (undefined4 *)htab_find(*(undefined4 *)(param_1 + 4),local_28);\n        while ((puVar5 != (undefined4 *)0x0 &&\n               (iVar4 = strcmp((char *)puVar5[1],__s2_00), iVar4 == 0))) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 0x20) goto LAB_0001ed67;\n          puVar5 = (undefined4 *)*puVar5;\n        }\n      }\n      goto LAB_0001ed04;\n    }\n    if ((*(byte *)(param_2 + 2) & 1) != 0) {\n      bVar2 = *(byte *)(param_2 + 2) >> 3 & 7;\n      if (bVar2 == 1) goto LAB_0001ef70;\n      if (bVar2 == 0) goto LAB_0001edc0;\n      if (bVar2 != 2) goto LAB_0001ed04;\n      goto LAB_0001ef0c;\n    }\n  }\n  puVar5 = (undefined4 *)*param_2;\njoined_r0x0001ed23:\n  for (; puVar5 != (undefined4 *)0x0; puVar5 = (undefined4 *)*puVar5) {\n    __pattern = (char *)puVar5[1];\n    if (__pattern != (char *)0x0) {\n      if ((*__pattern == '*') && (__pattern[1] == '\0')) goto LAB_0001ed67;\n      __name = __s2_00;\n      if (((*(byte *)(puVar5 + 2) & 0x38) != 0x20) &&\n         (__name = local_34, (*(byte *)(puVar5 + 2) & 0x38) != 0x10)) {\n        __name = __s2;\n      }\n      iVar4 = fnmatch(__pattern,__name,0);\n      if (iVar4 == 0) goto LAB_0001ed67;\n    }\n  }\n  puVar5 = (undefined4 *)0x0;\nLAB_0001ed67:\n  if (__s2 != param_3) {\n    free(__s2);\n  }\n  if (local_34 != param_3) {\n    free(local_34);\n  }\n  if (__s2_00 != param_3) {\n    free(__s2_00);\n  }\n  return puVar5;\n}" (type_identifier "undefined4") (pointer_declarator "* FUN_0001ec50(int param_1,undefined4 *param_2,char *param_3)" (* "*") (function_declarator "FUN_0001ec50(int param_1,undefined4 *param_2,char *param_3)" (identifier "FUN_0001ec50") (parameter_list "(int param_1,undefined4 *param_2,char *param_3)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) (, ",") (parameter_declaration "undefined4 *param_2" (type_identifier "undefined4") (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  undefined4 uVar1;\n  char *__pattern;\n  byte bVar2;\n  char *__s2;\n  uint uVar3;\n  int iVar4;\n  char *__s2_00;\n  char *__name;\n  undefined4 *puVar5;\n  char *local_34;\n  undefined1 local_28 [4];\n  char *local_24;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x1ec59;\n  uVar1 = *(undefined4 *)PTR_current_demangling_style_00083f94;\n  cplus_demangle_set_style(0xffffffff);\n  __s2 = (char *)bfd_demangle(DAT_00084bf4,param_3,0);\n  if (__s2 == (char *)0x0) {\n    __s2 = param_3;\n  }\n  cplus_demangle_set_style(uVar1);\n  uVar3 = *(uint *)(param_1 + 0xc);\n  local_34 = param_3;\n  if ((uVar3 & 2) != 0) {\n    local_34 = (char *)bfd_demangle(DAT_00084bf4,param_3,3);\n    uVar3 = *(uint *)(param_1 + 0xc);\n    if (local_34 == (char *)0x0) {\n      local_34 = param_3;\n    }\n  }\n  if (((uVar3 & 4) == 0) ||\n     (__s2_00 = (char *)bfd_demangle(DAT_00084bf4,param_3,4), __s2_00 == (char *)0x0)) {\n    __s2_00 = param_3;\n  }\n  if (*(int *)(param_1 + 4) == 0) {\nLAB_0001ed04:\n    if ((param_2 == (undefined4 *)0x0) || ((*(byte *)(param_2 + 2) & 1) != 0)) {\n      puVar5 = *(undefined4 **)(param_1 + 8);\n      goto joined_r0x0001ed23;\n    }\n  }\n  else {\n    if (param_2 == (undefined4 *)0x0) {\nLAB_0001edc0:\n      uVar3 = *(uint *)(param_1 + 0xc);\n      if ((uVar3 & 1) != 0) {\n        local_24 = __s2;\n        puVar5 = (undefined4 *)htab_find(*(int *)(param_1 + 4),local_28);\n        while ((puVar5 != (undefined4 *)0x0 && (iVar4 = strcmp((char *)puVar5[1],__s2), iVar4 == 0))\n              ) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 8) goto LAB_0001ed67;\n          puVar5 = (undefined4 *)*puVar5;\n        }\nLAB_0001ef70:\n        uVar3 = *(uint *)(param_1 + 0xc);\n      }\n      if ((uVar3 & 2) != 0) {\n        local_24 = local_34;\n        puVar5 = (undefined4 *)htab_find(*(undefined4 *)(param_1 + 4),local_28);\n        while ((puVar5 != (undefined4 *)0x0 &&\n               (iVar4 = strcmp((char *)puVar5[1],local_34), iVar4 == 0))) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 0x10) goto LAB_0001ed67;\n          puVar5 = (undefined4 *)*puVar5;\n        }\nLAB_0001ef0c:\n        uVar3 = *(uint *)(param_1 + 0xc);\n      }\n      if ((uVar3 & 4) != 0) {\n        local_24 = __s2_00;\n        puVar5 = (undefined4 *)htab_find(*(undefined4 *)(param_1 + 4),local_28);\n        while ((puVar5 != (undefined4 *)0x0 &&\n               (iVar4 = strcmp((char *)puVar5[1],__s2_00), iVar4 == 0))) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 0x20) goto LAB_0001ed67;\n          puVar5 = (undefined4 *)*puVar5;\n        }\n      }\n      goto LAB_0001ed04;\n    }\n    if ((*(byte *)(param_2 + 2) & 1) != 0) {\n      bVar2 = *(byte *)(param_2 + 2) >> 3 & 7;\n      if (bVar2 == 1) goto LAB_0001ef70;\n      if (bVar2 == 0) goto LAB_0001edc0;\n      if (bVar2 != 2) goto LAB_0001ed04;\n      goto LAB_0001ef0c;\n    }\n  }\n  puVar5 = (undefined4 *)*param_2;\njoined_r0x0001ed23:\n  for (; puVar5 != (undefined4 *)0x0; puVar5 = (undefined4 *)*puVar5) {\n    __pattern = (char *)puVar5[1];\n    if (__pattern != (char *)0x0) {\n      if ((*__pattern == '*') && (__pattern[1] == '\0')) goto LAB_0001ed67;\n      __name = __s2_00;\n      if (((*(byte *)(puVar5 + 2) & 0x38) != 0x20) &&\n         (__name = local_34, (*(byte *)(puVar5 + 2) & 0x38) != 0x10)) {\n        __name = __s2;\n      }\n      iVar4 = fnmatch(__pattern,__name,0);\n      if (iVar4 == 0) goto LAB_0001ed67;\n    }\n  }\n  puVar5 = (undefined4 *)0x0;\nLAB_0001ed67:\n  if (__s2 != param_3) {\n    free(__s2);\n  }\n  if (local_34 != param_3) {\n    free(local_34);\n  }\n  if (__s2_00 != param_3) {\n    free(__s2_00);\n  }\n  return puVar5;\n}" ({ "{") (declaration "undefined4 uVar1;" (type_identifier "undefined4") (identifier "uVar1") (; ";")) (declaration "char *__pattern;" (primitive_type "char") (pointer_declarator "*__pattern" (* "*") (identifier "__pattern")) (; ";")) (declaration "byte bVar2;" (type_identifier "byte") (identifier "bVar2") (; ";")) (declaration "char *__s2;" (primitive_type "char") (pointer_declarator "*__s2" (* "*") (identifier "__s2")) (; ";")) (declaration "uint uVar3;" (type_identifier "uint") (identifier "uVar3") (; ";")) (declaration "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (declaration "char *__s2_00;" (primitive_type "char") (pointer_declarator "*__s2_00" (* "*") (identifier "__s2_00")) (; ";")) (declaration "char *__name;" (primitive_type "char") (pointer_declarator "*__name" (* "*") (identifier "__name")) (; ";")) (declaration "undefined4 *puVar5;" (type_identifier "undefined4") (pointer_declarator "*puVar5" (* "*") (identifier "puVar5")) (; ";")) (declaration "char *local_34;" (primitive_type "char") (pointer_declarator "*local_34" (* "*") (identifier "local_34")) (; ";")) (declaration "undefined1 local_28 [4];" (type_identifier "undefined1") (array_declarator "local_28 [4]" (identifier "local_28") ([ "[") (number_literal "4") (] "]")) (; ";")) (declaration "char *local_24;" (primitive_type "char") (pointer_declarator "*local_24" (* "*") (identifier "local_24")) (; ";")) (declaration "undefined4 uStack_14;" (type_identifier "undefined4") (identifier "uStack_14") (; ";")) (expression_statement "uStack_14 = 0x1ec59;" (assignment_expression "uStack_14 = 0x1ec59" (identifier "uStack_14") (= "=") (number_literal "0x1ec59")) (; ";")) (expression_statement "uVar1 = *(undefined4 *)PTR_current_demangling_style_00083f94;" (assignment_expression "uVar1 = *(undefined4 *)PTR_current_demangling_style_00083f94" (identifier "uVar1") (= "=") (pointer_expression "*(undefined4 *)PTR_current_demangling_style_00083f94" (* "*") (cast_expression "(undefined4 *)PTR_current_demangling_style_00083f94" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_current_demangling_style_00083f94")))) (; ";")) (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_00084bf4,param_3,0);" (assignment_expression "__s2 = (char *)bfd_demangle(DAT_00084bf4,param_3,0)" (identifier "__s2") (= "=") (cast_expression "(char *)bfd_demangle(DAT_00084bf4,param_3,0)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "bfd_demangle(DAT_00084bf4,param_3,0)" (identifier "bfd_demangle") (argument_list "(DAT_00084bf4,param_3,0)" (( "(") (identifier "DAT_00084bf4") (, ",") (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 + 0xc);" (assignment_expression "uVar3 = *(uint *)(param_1 + 0xc)" (identifier "uVar3") (= "=") (pointer_expression "*(uint *)(param_1 + 0xc)" (* "*") (cast_expression "(uint *)(param_1 + 0xc)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xc)" (( "(") (binary_expression "param_1 + 0xc" (identifier "param_1") (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (expression_statement "local_34 = param_3;" (assignment_expression "local_34 = param_3" (identifier "local_34") (= "=") (identifier "param_3")) (; ";")) (if_statement "if ((uVar3 & 2) != 0) {\n    local_34 = (char *)bfd_demangle(DAT_00084bf4,param_3,3);\n    uVar3 = *(uint *)(param_1 + 0xc);\n    if (local_34 == (char *)0x0) {\n      local_34 = 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    local_34 = (char *)bfd_demangle(DAT_00084bf4,param_3,3);\n    uVar3 = *(uint *)(param_1 + 0xc);\n    if (local_34 == (char *)0x0) {\n      local_34 = param_3;\n    }\n  }" ({ "{") (expression_statement "local_34 = (char *)bfd_demangle(DAT_00084bf4,param_3,3);" (assignment_expression "local_34 = (char *)bfd_demangle(DAT_00084bf4,param_3,3)" (identifier "local_34") (= "=") (cast_expression "(char *)bfd_demangle(DAT_00084bf4,param_3,3)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "bfd_demangle(DAT_00084bf4,param_3,3)" (identifier "bfd_demangle") (argument_list "(DAT_00084bf4,param_3,3)" (( "(") (identifier "DAT_00084bf4") (, ",") (identifier "param_3") (, ",") (number_literal "3") () ")"))))) (; ";")) (expression_statement "uVar3 = *(uint *)(param_1 + 0xc);" (assignment_expression "uVar3 = *(uint *)(param_1 + 0xc)" (identifier "uVar3") (= "=") (pointer_expression "*(uint *)(param_1 + 0xc)" (* "*") (cast_expression "(uint *)(param_1 + 0xc)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xc)" (( "(") (binary_expression "param_1 + 0xc" (identifier "param_1") (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (if_statement "if (local_34 == (char *)0x0) {\n      local_34 = param_3;\n    }" (if "if") (parenthesized_expression "(local_34 == (char *)0x0)" (( "(") (binary_expression "local_34 == (char *)0x0" (identifier "local_34") (== "==") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      local_34 = param_3;\n    }" ({ "{") (expression_statement "local_34 = param_3;" (assignment_expression "local_34 = param_3" (identifier "local_34") (= "=") (identifier "param_3")) (; ";")) (} "}"))) (} "}"))) (if_statement "if (((uVar3 & 4) == 0) ||\n     (__s2_00 = (char *)bfd_demangle(DAT_00084bf4,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_00084bf4,param_3,4), __s2_00 == (char *)0x0))" (( "(") (binary_expression "((uVar3 & 4) == 0) ||\n     (__s2_00 = (char *)bfd_demangle(DAT_00084bf4,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_00084bf4,param_3,4), __s2_00 == (char *)0x0)" (( "(") (comma_expression "__s2_00 = (char *)bfd_demangle(DAT_00084bf4,param_3,4), __s2_00 == (char *)0x0" (assignment_expression "__s2_00 = (char *)bfd_demangle(DAT_00084bf4,param_3,4)" (identifier "__s2_00") (= "=") (cast_expression "(char *)bfd_demangle(DAT_00084bf4,param_3,4)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "bfd_demangle(DAT_00084bf4,param_3,4)" (identifier "bfd_demangle") (argument_list "(DAT_00084bf4,param_3,4)" (( "(") (identifier "DAT_00084bf4") (, ",") (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 (*(int *)(param_1 + 4) == 0) {\nLAB_0001ed04:\n    if ((param_2 == (undefined4 *)0x0) || ((*(byte *)(param_2 + 2) & 1) != 0)) {\n      puVar5 = *(undefined4 **)(param_1 + 8);\n      goto joined_r0x0001ed23;\n    }\n  }\n  else {\n    if (param_2 == (undefined4 *)0x0) {\nLAB_0001edc0:\n      uVar3 = *(uint *)(param_1 + 0xc);\n      if ((uVar3 & 1) != 0) {\n        local_24 = __s2;\n        puVar5 = (undefined4 *)htab_find(*(int *)(param_1 + 4),local_28);\n        while ((puVar5 != (undefined4 *)0x0 && (iVar4 = strcmp((char *)puVar5[1],__s2), iVar4 == 0))\n              ) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 8) goto LAB_0001ed67;\n          puVar5 = (undefined4 *)*puVar5;\n        }\nLAB_0001ef70:\n        uVar3 = *(uint *)(param_1 + 0xc);\n      }\n      if ((uVar3 & 2) != 0) {\n        local_24 = local_34;\n        puVar5 = (undefined4 *)htab_find(*(undefined4 *)(param_1 + 4),local_28);\n        while ((puVar5 != (undefined4 *)0x0 &&\n               (iVar4 = strcmp((char *)puVar5[1],local_34), iVar4 == 0))) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 0x10) goto LAB_0001ed67;\n          puVar5 = (undefined4 *)*puVar5;\n        }\nLAB_0001ef0c:\n        uVar3 = *(uint *)(param_1 + 0xc);\n      }\n      if ((uVar3 & 4) != 0) {\n        local_24 = __s2_00;\n        puVar5 = (undefined4 *)htab_find(*(undefined4 *)(param_1 + 4),local_28);\n        while ((puVar5 != (undefined4 *)0x0 &&\n               (iVar4 = strcmp((char *)puVar5[1],__s2_00), iVar4 == 0))) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 0x20) goto LAB_0001ed67;\n          puVar5 = (undefined4 *)*puVar5;\n        }\n      }\n      goto LAB_0001ed04;\n    }\n    if ((*(byte *)(param_2 + 2) & 1) != 0) {\n      bVar2 = *(byte *)(param_2 + 2) >> 3 & 7;\n      if (bVar2 == 1) goto LAB_0001ef70;\n      if (bVar2 == 0) goto LAB_0001edc0;\n      if (bVar2 != 2) goto LAB_0001ed04;\n      goto LAB_0001ef0c;\n    }\n  }" (if "if") (parenthesized_expression "(*(int *)(param_1 + 4) == 0)" (( "(") (binary_expression "*(int *)(param_1 + 4) == 0" (pointer_expression "*(int *)(param_1 + 4)" (* "*") (cast_expression "(int *)(param_1 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\nLAB_0001ed04:\n    if ((param_2 == (undefined4 *)0x0) || ((*(byte *)(param_2 + 2) & 1) != 0)) {\n      puVar5 = *(undefined4 **)(param_1 + 8);\n      goto joined_r0x0001ed23;\n    }\n  }" ({ "{") (labeled_statement "LAB_0001ed04:\n    if ((param_2 == (undefined4 *)0x0) || ((*(byte *)(param_2 + 2) & 1) != 0)) {\n      puVar5 = *(undefined4 **)(param_1 + 8);\n      goto joined_r0x0001ed23;\n    }" (statement_identifier "LAB_0001ed04") (: ":") (if_statement "if ((param_2 == (undefined4 *)0x0) || ((*(byte *)(param_2 + 2) & 1) != 0)) {\n      puVar5 = *(undefined4 **)(param_1 + 8);\n      goto joined_r0x0001ed23;\n    }" (if "if") (parenthesized_expression "((param_2 == (undefined4 *)0x0) || ((*(byte *)(param_2 + 2) & 1) != 0))" (( "(") (binary_expression "(param_2 == (undefined4 *)0x0) || ((*(byte *)(param_2 + 2) & 1) != 0)" (parenthesized_expression "(param_2 == (undefined4 *)0x0)" (( "(") (binary_expression "param_2 == (undefined4 *)0x0" (identifier "param_2") (== "==") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (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 = *(undefined4 **)(param_1 + 8);\n      goto joined_r0x0001ed23;\n    }" ({ "{") (expression_statement "puVar5 = *(undefined4 **)(param_1 + 8);" (assignment_expression "puVar5 = *(undefined4 **)(param_1 + 8)" (identifier "puVar5") (= "=") (pointer_expression "*(undefined4 **)(param_1 + 8)" (* "*") (cast_expression "(undefined4 **)(param_1 + 8)" (( "(") (type_descriptor "undefined4 **" (type_identifier "undefined4") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (goto_statement "goto joined_r0x0001ed23;" (goto "goto") (statement_identifier "joined_r0x0001ed23") (; ";")) (} "}")))) (} "}")) (else_clause "else {\n    if (param_2 == (undefined4 *)0x0) {\nLAB_0001edc0:\n      uVar3 = *(uint *)(param_1 + 0xc);\n      if ((uVar3 & 1) != 0) {\n        local_24 = __s2;\n        puVar5 = (undefined4 *)htab_find(*(int *)(param_1 + 4),local_28);\n        while ((puVar5 != (undefined4 *)0x0 && (iVar4 = strcmp((char *)puVar5[1],__s2), iVar4 == 0))\n              ) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 8) goto LAB_0001ed67;\n          puVar5 = (undefined4 *)*puVar5;\n        }\nLAB_0001ef70:\n        uVar3 = *(uint *)(param_1 + 0xc);\n      }\n      if ((uVar3 & 2) != 0) {\n        local_24 = local_34;\n        puVar5 = (undefined4 *)htab_find(*(undefined4 *)(param_1 + 4),local_28);\n        while ((puVar5 != (undefined4 *)0x0 &&\n               (iVar4 = strcmp((char *)puVar5[1],local_34), iVar4 == 0))) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 0x10) goto LAB_0001ed67;\n          puVar5 = (undefined4 *)*puVar5;\n        }\nLAB_0001ef0c:\n        uVar3 = *(uint *)(param_1 + 0xc);\n      }\n      if ((uVar3 & 4) != 0) {\n        local_24 = __s2_00;\n        puVar5 = (undefined4 *)htab_find(*(undefined4 *)(param_1 + 4),local_28);\n        while ((puVar5 != (undefined4 *)0x0 &&\n               (iVar4 = strcmp((char *)puVar5[1],__s2_00), iVar4 == 0))) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 0x20) goto LAB_0001ed67;\n          puVar5 = (undefined4 *)*puVar5;\n        }\n      }\n      goto LAB_0001ed04;\n    }\n    if ((*(byte *)(param_2 + 2) & 1) != 0) {\n      bVar2 = *(byte *)(param_2 + 2) >> 3 & 7;\n      if (bVar2 == 1) goto LAB_0001ef70;\n      if (bVar2 == 0) goto LAB_0001edc0;\n      if (bVar2 != 2) goto LAB_0001ed04;\n      goto LAB_0001ef0c;\n    }\n  }" (else "else") (compound_statement "{\n    if (param_2 == (undefined4 *)0x0) {\nLAB_0001edc0:\n      uVar3 = *(uint *)(param_1 + 0xc);\n      if ((uVar3 & 1) != 0) {\n        local_24 = __s2;\n        puVar5 = (undefined4 *)htab_find(*(int *)(param_1 + 4),local_28);\n        while ((puVar5 != (undefined4 *)0x0 && (iVar4 = strcmp((char *)puVar5[1],__s2), iVar4 == 0))\n              ) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 8) goto LAB_0001ed67;\n          puVar5 = (undefined4 *)*puVar5;\n        }\nLAB_0001ef70:\n        uVar3 = *(uint *)(param_1 + 0xc);\n      }\n      if ((uVar3 & 2) != 0) {\n        local_24 = local_34;\n        puVar5 = (undefined4 *)htab_find(*(undefined4 *)(param_1 + 4),local_28);\n        while ((puVar5 != (undefined4 *)0x0 &&\n               (iVar4 = strcmp((char *)puVar5[1],local_34), iVar4 == 0))) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 0x10) goto LAB_0001ed67;\n          puVar5 = (undefined4 *)*puVar5;\n        }\nLAB_0001ef0c:\n        uVar3 = *(uint *)(param_1 + 0xc);\n      }\n      if ((uVar3 & 4) != 0) {\n        local_24 = __s2_00;\n        puVar5 = (undefined4 *)htab_find(*(undefined4 *)(param_1 + 4),local_28);\n        while ((puVar5 != (undefined4 *)0x0 &&\n               (iVar4 = strcmp((char *)puVar5[1],__s2_00), iVar4 == 0))) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 0x20) goto LAB_0001ed67;\n          puVar5 = (undefined4 *)*puVar5;\n        }\n      }\n      goto LAB_0001ed04;\n    }\n    if ((*(byte *)(param_2 + 2) & 1) != 0) {\n      bVar2 = *(byte *)(param_2 + 2) >> 3 & 7;\n      if (bVar2 == 1) goto LAB_0001ef70;\n      if (bVar2 == 0) goto LAB_0001edc0;\n      if (bVar2 != 2) goto LAB_0001ed04;\n      goto LAB_0001ef0c;\n    }\n  }" ({ "{") (if_statement "if (param_2 == (undefined4 *)0x0) {\nLAB_0001edc0:\n      uVar3 = *(uint *)(param_1 + 0xc);\n      if ((uVar3 & 1) != 0) {\n        local_24 = __s2;\n        puVar5 = (undefined4 *)htab_find(*(int *)(param_1 + 4),local_28);\n        while ((puVar5 != (undefined4 *)0x0 && (iVar4 = strcmp((char *)puVar5[1],__s2), iVar4 == 0))\n              ) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 8) goto LAB_0001ed67;\n          puVar5 = (undefined4 *)*puVar5;\n        }\nLAB_0001ef70:\n        uVar3 = *(uint *)(param_1 + 0xc);\n      }\n      if ((uVar3 & 2) != 0) {\n        local_24 = local_34;\n        puVar5 = (undefined4 *)htab_find(*(undefined4 *)(param_1 + 4),local_28);\n        while ((puVar5 != (undefined4 *)0x0 &&\n               (iVar4 = strcmp((char *)puVar5[1],local_34), iVar4 == 0))) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 0x10) goto LAB_0001ed67;\n          puVar5 = (undefined4 *)*puVar5;\n        }\nLAB_0001ef0c:\n        uVar3 = *(uint *)(param_1 + 0xc);\n      }\n      if ((uVar3 & 4) != 0) {\n        local_24 = __s2_00;\n        puVar5 = (undefined4 *)htab_find(*(undefined4 *)(param_1 + 4),local_28);\n        while ((puVar5 != (undefined4 *)0x0 &&\n               (iVar4 = strcmp((char *)puVar5[1],__s2_00), iVar4 == 0))) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 0x20) goto LAB_0001ed67;\n          puVar5 = (undefined4 *)*puVar5;\n        }\n      }\n      goto LAB_0001ed04;\n    }" (if "if") (parenthesized_expression "(param_2 == (undefined4 *)0x0)" (( "(") (binary_expression "param_2 == (undefined4 *)0x0" (identifier "param_2") (== "==") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\nLAB_0001edc0:\n      uVar3 = *(uint *)(param_1 + 0xc);\n      if ((uVar3 & 1) != 0) {\n        local_24 = __s2;\n        puVar5 = (undefined4 *)htab_find(*(int *)(param_1 + 4),local_28);\n        while ((puVar5 != (undefined4 *)0x0 && (iVar4 = strcmp((char *)puVar5[1],__s2), iVar4 == 0))\n              ) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 8) goto LAB_0001ed67;\n          puVar5 = (undefined4 *)*puVar5;\n        }\nLAB_0001ef70:\n        uVar3 = *(uint *)(param_1 + 0xc);\n      }\n      if ((uVar3 & 2) != 0) {\n        local_24 = local_34;\n        puVar5 = (undefined4 *)htab_find(*(undefined4 *)(param_1 + 4),local_28);\n        while ((puVar5 != (undefined4 *)0x0 &&\n               (iVar4 = strcmp((char *)puVar5[1],local_34), iVar4 == 0))) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 0x10) goto LAB_0001ed67;\n          puVar5 = (undefined4 *)*puVar5;\n        }\nLAB_0001ef0c:\n        uVar3 = *(uint *)(param_1 + 0xc);\n      }\n      if ((uVar3 & 4) != 0) {\n        local_24 = __s2_00;\n        puVar5 = (undefined4 *)htab_find(*(undefined4 *)(param_1 + 4),local_28);\n        while ((puVar5 != (undefined4 *)0x0 &&\n               (iVar4 = strcmp((char *)puVar5[1],__s2_00), iVar4 == 0))) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 0x20) goto LAB_0001ed67;\n          puVar5 = (undefined4 *)*puVar5;\n        }\n      }\n      goto LAB_0001ed04;\n    }" ({ "{") (labeled_statement "LAB_0001edc0:\n      uVar3 = *(uint *)(param_1 + 0xc);" (statement_identifier "LAB_0001edc0") (: ":") (expression_statement "uVar3 = *(uint *)(param_1 + 0xc);" (assignment_expression "uVar3 = *(uint *)(param_1 + 0xc)" (identifier "uVar3") (= "=") (pointer_expression "*(uint *)(param_1 + 0xc)" (* "*") (cast_expression "(uint *)(param_1 + 0xc)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xc)" (( "(") (binary_expression "param_1 + 0xc" (identifier "param_1") (+ "+") (number_literal "0xc")) () ")"))))) (; ";"))) (if_statement "if ((uVar3 & 1) != 0) {\n        local_24 = __s2;\n        puVar5 = (undefined4 *)htab_find(*(int *)(param_1 + 4),local_28);\n        while ((puVar5 != (undefined4 *)0x0 && (iVar4 = strcmp((char *)puVar5[1],__s2), iVar4 == 0))\n              ) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 8) goto LAB_0001ed67;\n          puVar5 = (undefined4 *)*puVar5;\n        }\nLAB_0001ef70:\n        uVar3 = *(uint *)(param_1 + 0xc);\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_24 = __s2;\n        puVar5 = (undefined4 *)htab_find(*(int *)(param_1 + 4),local_28);\n        while ((puVar5 != (undefined4 *)0x0 && (iVar4 = strcmp((char *)puVar5[1],__s2), iVar4 == 0))\n              ) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 8) goto LAB_0001ed67;\n          puVar5 = (undefined4 *)*puVar5;\n        }\nLAB_0001ef70:\n        uVar3 = *(uint *)(param_1 + 0xc);\n      }" ({ "{") (expression_statement "local_24 = __s2;" (assignment_expression "local_24 = __s2" (identifier "local_24") (= "=") (identifier "__s2")) (; ";")) (expression_statement "puVar5 = (undefined4 *)htab_find(*(int *)(param_1 + 4),local_28);" (assignment_expression "puVar5 = (undefined4 *)htab_find(*(int *)(param_1 + 4),local_28)" (identifier "puVar5") (= "=") (cast_expression "(undefined4 *)htab_find(*(int *)(param_1 + 4),local_28)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "htab_find(*(int *)(param_1 + 4),local_28)" (identifier "htab_find") (argument_list "(*(int *)(param_1 + 4),local_28)" (( "(") (pointer_expression "*(int *)(param_1 + 4)" (* "*") (cast_expression "(int *)(param_1 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")")))) (, ",") (identifier "local_28") () ")"))))) (; ";")) (while_statement "while ((puVar5 != (undefined4 *)0x0 && (iVar4 = strcmp((char *)puVar5[1],__s2), iVar4 == 0))\n              ) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 8) goto LAB_0001ed67;\n          puVar5 = (undefined4 *)*puVar5;\n        }" (while "while") (parenthesized_expression "((puVar5 != (undefined4 *)0x0 && (iVar4 = strcmp((char *)puVar5[1],__s2), iVar4 == 0))\n              )" (( "(") (parenthesized_expression "(puVar5 != (undefined4 *)0x0 && (iVar4 = strcmp((char *)puVar5[1],__s2), iVar4 == 0))" (( "(") (binary_expression "puVar5 != (undefined4 *)0x0 && (iVar4 = strcmp((char *)puVar5[1],__s2), iVar4 == 0)" (binary_expression "puVar5 != (undefined4 *)0x0" (identifier "puVar5") (!= "!=") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (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_0001ed67;\n          puVar5 = (undefined4 *)*puVar5;\n        }" ({ "{") (if_statement "if ((*(byte *)(puVar5 + 2) & 0x38) == 8) goto LAB_0001ed67;" (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_0001ed67;" (goto "goto") (statement_identifier "LAB_0001ed67") (; ";"))) (expression_statement "puVar5 = (undefined4 *)*puVar5;" (assignment_expression "puVar5 = (undefined4 *)*puVar5" (identifier "puVar5") (= "=") (cast_expression "(undefined4 *)*puVar5" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar5" (* "*") (identifier "puVar5")))) (; ";")) (} "}"))) (labeled_statement "LAB_0001ef70:\n        uVar3 = *(uint *)(param_1 + 0xc);" (statement_identifier "LAB_0001ef70") (: ":") (expression_statement "uVar3 = *(uint *)(param_1 + 0xc);" (assignment_expression "uVar3 = *(uint *)(param_1 + 0xc)" (identifier "uVar3") (= "=") (pointer_expression "*(uint *)(param_1 + 0xc)" (* "*") (cast_expression "(uint *)(param_1 + 0xc)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xc)" (( "(") (binary_expression "param_1 + 0xc" (identifier "param_1") (+ "+") (number_literal "0xc")) () ")"))))) (; ";"))) (} "}"))) (if_statement "if ((uVar3 & 2) != 0) {\n        local_24 = local_34;\n        puVar5 = (undefined4 *)htab_find(*(undefined4 *)(param_1 + 4),local_28);\n        while ((puVar5 != (undefined4 *)0x0 &&\n               (iVar4 = strcmp((char *)puVar5[1],local_34), iVar4 == 0))) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 0x10) goto LAB_0001ed67;\n          puVar5 = (undefined4 *)*puVar5;\n        }\nLAB_0001ef0c:\n        uVar3 = *(uint *)(param_1 + 0xc);\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_24 = local_34;\n        puVar5 = (undefined4 *)htab_find(*(undefined4 *)(param_1 + 4),local_28);\n        while ((puVar5 != (undefined4 *)0x0 &&\n               (iVar4 = strcmp((char *)puVar5[1],local_34), iVar4 == 0))) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 0x10) goto LAB_0001ed67;\n          puVar5 = (undefined4 *)*puVar5;\n        }\nLAB_0001ef0c:\n        uVar3 = *(uint *)(param_1 + 0xc);\n      }" ({ "{") (expression_statement "local_24 = local_34;" (assignment_expression "local_24 = local_34" (identifier "local_24") (= "=") (identifier "local_34")) (; ";")) (expression_statement "puVar5 = (undefined4 *)htab_find(*(undefined4 *)(param_1 + 4),local_28);" (assignment_expression "puVar5 = (undefined4 *)htab_find(*(undefined4 *)(param_1 + 4),local_28)" (identifier "puVar5") (= "=") (cast_expression "(undefined4 *)htab_find(*(undefined4 *)(param_1 + 4),local_28)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "htab_find(*(undefined4 *)(param_1 + 4),local_28)" (identifier "htab_find") (argument_list "(*(undefined4 *)(param_1 + 4),local_28)" (( "(") (pointer_expression "*(undefined4 *)(param_1 + 4)" (* "*") (cast_expression "(undefined4 *)(param_1 + 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")")))) (, ",") (identifier "local_28") () ")"))))) (; ";")) (while_statement "while ((puVar5 != (undefined4 *)0x0 &&\n               (iVar4 = strcmp((char *)puVar5[1],local_34), iVar4 == 0))) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 0x10) goto LAB_0001ed67;\n          puVar5 = (undefined4 *)*puVar5;\n        }" (while "while") (parenthesized_expression "((puVar5 != (undefined4 *)0x0 &&\n               (iVar4 = strcmp((char *)puVar5[1],local_34), iVar4 == 0)))" (( "(") (parenthesized_expression "(puVar5 != (undefined4 *)0x0 &&\n               (iVar4 = strcmp((char *)puVar5[1],local_34), iVar4 == 0))" (( "(") (binary_expression "puVar5 != (undefined4 *)0x0 &&\n               (iVar4 = strcmp((char *)puVar5[1],local_34), iVar4 == 0)" (binary_expression "puVar5 != (undefined4 *)0x0" (identifier "puVar5") (!= "!=") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (&& "&&") (parenthesized_expression "(iVar4 = strcmp((char *)puVar5[1],local_34), iVar4 == 0)" (( "(") (comma_expression "iVar4 = strcmp((char *)puVar5[1],local_34), iVar4 == 0" (assignment_expression "iVar4 = strcmp((char *)puVar5[1],local_34)" (identifier "iVar4") (= "=") (call_expression "strcmp((char *)puVar5[1],local_34)" (identifier "strcmp") (argument_list "((char *)puVar5[1],local_34)" (( "(") (cast_expression "(char *)puVar5[1]" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar5[1]" (identifier "puVar5") ([ "[") (number_literal "1") (] "]"))) (, ",") (identifier "local_34") () ")")))) (, ",") (binary_expression "iVar4 == 0" (identifier "iVar4") (== "==") (number_literal "0"))) () ")"))) () ")")) () ")")) (compound_statement "{\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 0x10) goto LAB_0001ed67;\n          puVar5 = (undefined4 *)*puVar5;\n        }" ({ "{") (if_statement "if ((*(byte *)(puVar5 + 2) & 0x38) == 0x10) goto LAB_0001ed67;" (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_0001ed67;" (goto "goto") (statement_identifier "LAB_0001ed67") (; ";"))) (expression_statement "puVar5 = (undefined4 *)*puVar5;" (assignment_expression "puVar5 = (undefined4 *)*puVar5" (identifier "puVar5") (= "=") (cast_expression "(undefined4 *)*puVar5" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar5" (* "*") (identifier "puVar5")))) (; ";")) (} "}"))) (labeled_statement "LAB_0001ef0c:\n        uVar3 = *(uint *)(param_1 + 0xc);" (statement_identifier "LAB_0001ef0c") (: ":") (expression_statement "uVar3 = *(uint *)(param_1 + 0xc);" (assignment_expression "uVar3 = *(uint *)(param_1 + 0xc)" (identifier "uVar3") (= "=") (pointer_expression "*(uint *)(param_1 + 0xc)" (* "*") (cast_expression "(uint *)(param_1 + 0xc)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xc)" (( "(") (binary_expression "param_1 + 0xc" (identifier "param_1") (+ "+") (number_literal "0xc")) () ")"))))) (; ";"))) (} "}"))) (if_statement "if ((uVar3 & 4) != 0) {\n        local_24 = __s2_00;\n        puVar5 = (undefined4 *)htab_find(*(undefined4 *)(param_1 + 4),local_28);\n        while ((puVar5 != (undefined4 *)0x0 &&\n               (iVar4 = strcmp((char *)puVar5[1],__s2_00), iVar4 == 0))) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 0x20) goto LAB_0001ed67;\n          puVar5 = (undefined4 *)*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_24 = __s2_00;\n        puVar5 = (undefined4 *)htab_find(*(undefined4 *)(param_1 + 4),local_28);\n        while ((puVar5 != (undefined4 *)0x0 &&\n               (iVar4 = strcmp((char *)puVar5[1],__s2_00), iVar4 == 0))) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 0x20) goto LAB_0001ed67;\n          puVar5 = (undefined4 *)*puVar5;\n        }\n      }" ({ "{") (expression_statement "local_24 = __s2_00;" (assignment_expression "local_24 = __s2_00" (identifier "local_24") (= "=") (identifier "__s2_00")) (; ";")) (expression_statement "puVar5 = (undefined4 *)htab_find(*(undefined4 *)(param_1 + 4),local_28);" (assignment_expression "puVar5 = (undefined4 *)htab_find(*(undefined4 *)(param_1 + 4),local_28)" (identifier "puVar5") (= "=") (cast_expression "(undefined4 *)htab_find(*(undefined4 *)(param_1 + 4),local_28)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "htab_find(*(undefined4 *)(param_1 + 4),local_28)" (identifier "htab_find") (argument_list "(*(undefined4 *)(param_1 + 4),local_28)" (( "(") (pointer_expression "*(undefined4 *)(param_1 + 4)" (* "*") (cast_expression "(undefined4 *)(param_1 + 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")")))) (, ",") (identifier "local_28") () ")"))))) (; ";")) (while_statement "while ((puVar5 != (undefined4 *)0x0 &&\n               (iVar4 = strcmp((char *)puVar5[1],__s2_00), iVar4 == 0))) {\n          if ((*(byte *)(puVar5 + 2) & 0x38) == 0x20) goto LAB_0001ed67;\n          puVar5 = (undefined4 *)*puVar5;\n        }" (while "while") (parenthesized_expression "((puVar5 != (undefined4 *)0x0 &&\n               (iVar4 = strcmp((char *)puVar5[1],__s2_00), iVar4 == 0)))" (( "(") (parenthesized_expression "(puVar5 != (undefined4 *)0x0 &&\n               (iVar4 = strcmp((char *)puVar5[1],__s2_00), iVar4 == 0))" (( "(") (binary_expression "puVar5 != (undefined4 *)0x0 &&\n               (iVar4 = strcmp((char *)puVar5[1],__s2_00), iVar4 == 0)" (binary_expression "puVar5 != (undefined4 *)0x0" (identifier "puVar5") (!= "!=") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (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_0001ed67;\n          puVar5 = (undefined4 *)*puVar5;\n        }" ({ "{") (if_statement "if ((*(byte *)(puVar5 + 2) & 0x38) == 0x20) goto LAB_0001ed67;" (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_0001ed67;" (goto "goto") (statement_identifier "LAB_0001ed67") (; ";"))) (expression_statement "puVar5 = (undefined4 *)*puVar5;" (assignment_expression "puVar5 = (undefined4 *)*puVar5" (identifier "puVar5") (= "=") (cast_expression "(undefined4 *)*puVar5" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar5" (* "*") (identifier "puVar5")))) (; ";")) (} "}"))) (} "}"))) (goto_statement "goto LAB_0001ed04;" (goto "goto") (statement_identifier "LAB_0001ed04") (; ";")) (} "}"))) (if_statement "if ((*(byte *)(param_2 + 2) & 1) != 0) {\n      bVar2 = *(byte *)(param_2 + 2) >> 3 & 7;\n      if (bVar2 == 1) goto LAB_0001ef70;\n      if (bVar2 == 0) goto LAB_0001edc0;\n      if (bVar2 != 2) goto LAB_0001ed04;\n      goto LAB_0001ef0c;\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_0001ef70;\n      if (bVar2 == 0) goto LAB_0001edc0;\n      if (bVar2 != 2) goto LAB_0001ed04;\n      goto LAB_0001ef0c;\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_0001ef70;" (if "if") (parenthesized_expression "(bVar2 == 1)" (( "(") (binary_expression "bVar2 == 1" (identifier "bVar2") (== "==") (number_literal "1")) () ")")) (goto_statement "goto LAB_0001ef70;" (goto "goto") (statement_identifier "LAB_0001ef70") (; ";"))) (if_statement "if (bVar2 == 0) goto LAB_0001edc0;" (if "if") (parenthesized_expression "(bVar2 == 0)" (( "(") (binary_expression "bVar2 == 0" (identifier "bVar2") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_0001edc0;" (goto "goto") (statement_identifier "LAB_0001edc0") (; ";"))) (if_statement "if (bVar2 != 2) goto LAB_0001ed04;" (if "if") (parenthesized_expression "(bVar2 != 2)" (( "(") (binary_expression "bVar2 != 2" (identifier "bVar2") (!= "!=") (number_literal "2")) () ")")) (goto_statement "goto LAB_0001ed04;" (goto "goto") (statement_identifier "LAB_0001ed04") (; ";"))) (goto_statement "goto LAB_0001ef0c;" (goto "goto") (statement_identifier "LAB_0001ef0c") (; ";")) (} "}"))) (} "}")))) (expression_statement "puVar5 = (undefined4 *)*param_2;" (assignment_expression "puVar5 = (undefined4 *)*param_2" (identifier "puVar5") (= "=") (cast_expression "(undefined4 *)*param_2" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_2" (* "*") (identifier "param_2")))) (; ";")) (labeled_statement "joined_r0x0001ed23:\n  for (; puVar5 != (undefined4 *)0x0; puVar5 = (undefined4 *)*puVar5) {\n    __pattern = (char *)puVar5[1];\n    if (__pattern != (char *)0x0) {\n      if ((*__pattern == '*') && (__pattern[1] == '\0')) goto LAB_0001ed67;\n      __name = __s2_00;\n      if (((*(byte *)(puVar5 + 2) & 0x38) != 0x20) &&\n         (__name = local_34, (*(byte *)(puVar5 + 2) & 0x38) != 0x10)) {\n        __name = __s2;\n      }\n      iVar4 = fnmatch(__pattern,__name,0);\n      if (iVar4 == 0) goto LAB_0001ed67;\n    }\n  }" (statement_identifier "joined_r0x0001ed23") (: ":") (for_statement "for (; puVar5 != (undefined4 *)0x0; puVar5 = (undefined4 *)*puVar5) {\n    __pattern = (char *)puVar5[1];\n    if (__pattern != (char *)0x0) {\n      if ((*__pattern == '*') && (__pattern[1] == '\0')) goto LAB_0001ed67;\n      __name = __s2_00;\n      if (((*(byte *)(puVar5 + 2) & 0x38) != 0x20) &&\n         (__name = local_34, (*(byte *)(puVar5 + 2) & 0x38) != 0x10)) {\n        __name = __s2;\n      }\n      iVar4 = fnmatch(__pattern,__name,0);\n      if (iVar4 == 0) goto LAB_0001ed67;\n    }\n  }" (for "for") (( "(") (; ";") (binary_expression "puVar5 != (undefined4 *)0x0" (identifier "puVar5") (!= "!=") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";") (assignment_expression "puVar5 = (undefined4 *)*puVar5" (identifier "puVar5") (= "=") (cast_expression "(undefined4 *)*puVar5" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (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_0001ed67;\n      __name = __s2_00;\n      if (((*(byte *)(puVar5 + 2) & 0x38) != 0x20) &&\n         (__name = local_34, (*(byte *)(puVar5 + 2) & 0x38) != 0x10)) {\n        __name = __s2;\n      }\n      iVar4 = fnmatch(__pattern,__name,0);\n      if (iVar4 == 0) goto LAB_0001ed67;\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_0001ed67;\n      __name = __s2_00;\n      if (((*(byte *)(puVar5 + 2) & 0x38) != 0x20) &&\n         (__name = local_34, (*(byte *)(puVar5 + 2) & 0x38) != 0x10)) {\n        __name = __s2;\n      }\n      iVar4 = fnmatch(__pattern,__name,0);\n      if (iVar4 == 0) goto LAB_0001ed67;\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_0001ed67;\n      __name = __s2_00;\n      if (((*(byte *)(puVar5 + 2) & 0x38) != 0x20) &&\n         (__name = local_34, (*(byte *)(puVar5 + 2) & 0x38) != 0x10)) {\n        __name = __s2;\n      }\n      iVar4 = fnmatch(__pattern,__name,0);\n      if (iVar4 == 0) goto LAB_0001ed67;\n    }" ({ "{") (if_statement "if ((*__pattern == '*') && (__pattern[1] == '\0')) goto LAB_0001ed67;" (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_0001ed67;" (goto "goto") (statement_identifier "LAB_0001ed67") (; ";"))) (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 = local_34, (*(byte *)(puVar5 + 2) & 0x38) != 0x10)) {\n        __name = __s2;\n      }" (if "if") (parenthesized_expression "(((*(byte *)(puVar5 + 2) & 0x38) != 0x20) &&\n         (__name = local_34, (*(byte *)(puVar5 + 2) & 0x38) != 0x10))" (( "(") (binary_expression "((*(byte *)(puVar5 + 2) & 0x38) != 0x20) &&\n         (__name = local_34, (*(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 = local_34, (*(byte *)(puVar5 + 2) & 0x38) != 0x10)" (( "(") (comma_expression "__name = local_34, (*(byte *)(puVar5 + 2) & 0x38) != 0x10" (assignment_expression "__name = local_34" (identifier "__name") (= "=") (identifier "local_34")) (, ",") (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;\n      }" ({ "{") (expression_statement "__name = __s2;" (assignment_expression "__name = __s2" (identifier "__name") (= "=") (identifier "__s2")) (; ";")) (} "}"))) (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_0001ed67;" (if "if") (parenthesized_expression "(iVar4 == 0)" (( "(") (binary_expression "iVar4 == 0" (identifier "iVar4") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_0001ed67;" (goto "goto") (statement_identifier "LAB_0001ed67") (; ";"))) (} "}"))) (} "}")))) (expression_statement "puVar5 = (undefined4 *)0x0;" (assignment_expression "puVar5 = (undefined4 *)0x0" (identifier "puVar5") (= "=") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (labeled_statement "LAB_0001ed67:\n  if (__s2 != param_3) {\n    free(__s2);\n  }" (statement_identifier "LAB_0001ed67") (: ":") (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 (local_34 != param_3) {\n    free(local_34);\n  }" (if "if") (parenthesized_expression "(local_34 != param_3)" (( "(") (binary_expression "local_34 != param_3" (identifier "local_34") (!= "!=") (identifier "param_3")) () ")")) (compound_statement "{\n    free(local_34);\n  }" ({ "{") (expression_statement "free(local_34);" (call_expression "free(local_34)" (identifier "free") (argument_list "(local_34)" (( "(") (identifier "local_34") () ")"))) (; ";")) (} "}"))) (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") (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* WARNING: Unknown calling convention */

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

{
  type_3 uVar1;
  char *var_13;
  type_4 var_12;
  char *var_3;
  type_5 var_4;
  int var_11;
  char *var_6;
  char *__name;
  type_1 *var_9;
  char *var_5;
  type_1 e;
  
  uVar1 = *(type_3 *)PTR_current_demangling_style_00083f94;
  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_0001ed04:
    if ((var_7 == (type_1 *)0x0) || ((var_7->field_0x8 & 1) != 0)) {
      var_9 = head->remaining;
      goto joined_r0x0001ed23;
    }
  }
  else {
    if (var_7 == (type_1 *)0x0) {
LAB_0001edc0:
      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_0x8 & 0x38) == 8) goto LAB_0001ed67;
          var_9 = var_9->next;
        }
LAB_0001ef70:
        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_0x8 & 0x38) == 0x10) goto LAB_0001ed67;
          var_9 = var_9->next;
        }
LAB_0001ef0c:
        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_0x8 & 0x38) == 0x20) goto LAB_0001ed67;
          var_9 = var_9->next;
        }
      }
      goto LAB_0001ed04;
    }
    if ((var_7->field_0x8 & 1) != 0) {
      var_12 = (type_4)var_7->field_0x8 >> 3 & 7;
      if (var_12 == 1) goto LAB_0001ef70;
      if (var_12 == 0) goto LAB_0001edc0;
      if (var_12 != 2) goto LAB_0001ed04;
      goto LAB_0001ef0c;
    }
  }
  var_9 = var_7->next;
joined_r0x0001ed23:
  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_0001ed67;
      var_12 = var_9->field_0x8 & 0x38;
      __name = var_6;
      if ((var_12 != 0x20) && (__name = var_5, var_12 != 0x10)) {
        __name = var_3;
      }
      var_11 = var_14(var_13,__name,0);
      if (var_11 == 0) goto LAB_0001ed67;
    }
  }
  var_9 = (type_1 *)0x0;
LAB_0001ed67:
  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: (primitive_type) 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: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (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: (type_identifier) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (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: (primitive_type) 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: (primitive_type) 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)))))

/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */

undefined4 * MASKED(int param_1,undefined4 *param_2,char *param_3)

{
  undefined4 uVar1;
  char *__pattern;
  byte bVar2;
  char *__s2;
  uint uVar3;
  int iVar4;
  char *__s2_00;
  char *__name;
  undefined4 *puVar5;
  char *local_34;
  undefined1 local_28 [4];
  char *local_24;
  undefined4 uStack_14;
  
  uStack_14 = 0x1ec59;
  uVar1 = *(undefined4 *)PTR_current_demangling_style_00083f94;
  cplus_demangle_set_style(0xffffffff);
  __s2 = (char *)bfd_demangle(DAT_00084bf4,param_3,0);
  if (__s2 == (char *)0x0) {
    __s2 = param_3;
  }
  cplus_demangle_set_style(uVar1);
  uVar3 = *(uint *)(param_1 + 0xc);
  local_34 = param_3;
  if ((uVar3 & 2) != 0) {
    local_34 = (char *)bfd_demangle(DAT_00084bf4,param_3,3);
    uVar3 = *(uint *)(param_1 + 0xc);
    if (local_34 == (char *)0x0) {
      local_34 = param_3;
    }
  }
  if (((uVar3 & 4) == 0) ||
     (__s2_00 = (char *)bfd_demangle(DAT_00084bf4,param_3,4), __s2_00 == (char *)0x0)) {
    __s2_00 = param_3;
  }
  if (*(int *)(param_1 + 4) == 0) {
LAB_0001ed04:
    if ((param_2 == (undefined4 *)0x0) || ((*(byte *)(param_2 + 2) & 1) != 0)) {
      puVar5 = *(undefined4 **)(param_1 + 8);
      goto joined_r0x0001ed23;
    }
  }
  else {
    if (param_2 == (undefined4 *)0x0) {
LAB_0001edc0:
      uVar3 = *(uint *)(param_1 + 0xc);
      if ((uVar3 & 1) != 0) {
        local_24 = __s2;
        puVar5 = (undefined4 *)htab_find(*(int *)(param_1 + 4),local_28);
        while ((puVar5 != (undefined4 *)0x0 && (iVar4 = strcmp((char *)puVar5[1],__s2), iVar4 == 0))
              ) {
          if ((*(byte *)(puVar5 + 2) & 0x38) == 8) goto LAB_0001ed67;
          puVar5 = (undefined4 *)*puVar5;
        }
LAB_0001ef70:
        uVar3 = *(uint *)(param_1 + 0xc);
      }
      if ((uVar3 & 2) != 0) {
        local_24 = local_34;
        puVar5 = (undefined4 *)htab_find(*(undefined4 *)(param_1 + 4),local_28);
        while ((puVar5 != (undefined4 *)0x0 &&
               (iVar4 = strcmp((char *)puVar5[1],local_34), iVar4 == 0))) {
          if ((*(byte *)(puVar5 + 2) & 0x38) == 0x10) goto LAB_0001ed67;
          puVar5 = (undefined4 *)*puVar5;
        }
LAB_0001ef0c:
        uVar3 = *(uint *)(param_1 + 0xc);
      }
      if ((uVar3 & 4) != 0) {
        local_24 = __s2_00;
        puVar5 = (undefined4 *)htab_find(*(undefined4 *)(param_1 + 4),local_28);
        while ((puVar5 != (undefined4 *)0x0 &&
               (iVar4 = strcmp((char *)puVar5[1],__s2_00), iVar4 == 0))) {
          if ((*(byte *)(puVar5 + 2) & 0x38) == 0x20) goto LAB_0001ed67;
          puVar5 = (undefined4 *)*puVar5;
        }
      }
      goto LAB_0001ed04;
    }
    if ((*(byte *)(param_2 + 2) & 1) != 0) {
      bVar2 = *(byte *)(param_2 + 2) >> 3 & 7;
      if (bVar2 == 1) goto LAB_0001ef70;
      if (bVar2 == 0) goto LAB_0001edc0;
      if (bVar2 != 2) goto LAB_0001ed04;
      goto LAB_0001ef0c;
    }
  }
  puVar5 = (undefined4 *)*param_2;
joined_r0x0001ed23:
  for (; puVar5 != (undefined4 *)0x0; puVar5 = (undefined4 *)*puVar5) {
    __pattern = (char *)puVar5[1];
    if (__pattern != (char *)0x0) {
      if ((*__pattern == '*') && (__pattern[1] == '\0')) goto LAB_0001ed67;
      __name = __s2_00;
      if (((*(byte *)(puVar5 + 2) & 0x38) != 0x20) &&
         (__name = local_34, (*(byte *)(puVar5 + 2) & 0x38) != 0x10)) {
        __name = __s2;
      }
      iVar4 = fnmatch(__pattern,__name,0);
      if (iVar4 == 0) goto LAB_0001ed67;
    }
  }
  puVar5 = (undefined4 *)0x0;
LAB_0001ed67:
  if (__s2 != param_3) {
    free(__s2);
  }
  if (local_34 != param_3) {
    free(local_34);
  }
  if (__s2_00 != param_3) {
    free(__s2_00);
  }
  return puVar5;
}

