
void lang_add_wild(wildcard_spec *filespec,wildcard_list *section_list,bfd_boolean keep_sections)

{
  byte *__s;
  lang_statement_list_type *plVar1;
  int iVar2;
  lang_statement_union *plVar3;
  char *pcVar4;
  size_t sVar5;
  wildcard_list *pwVar6;
  ulong __n;
  char *pcVar7;
  wildcard_list *pwVar8;
  long lVar9;
  wildcard_list *curr;
  byte *pbVar10;
  byte *pbVar11;
  int iVar12;
  ulong uVar13;
  wildcard_list *pwVar14;
  bool bVar15;
  bool bVar16;
  int local_4c;
  char *local_48;
  
  if (section_list != (wildcard_list *)0x0) {
    pwVar8 = (wildcard_list *)0x0;
    pwVar6 = section_list;
    do {
      section_list = pwVar6;
      pwVar6 = section_list->next;
      section_list->next = pwVar8;
      pwVar8 = section_list;
    } while (pwVar6 != (wildcard_list *)0x0);
  }
  plVar1 = stat_ptr;
  if (filespec == (wildcard_spec *)0x0) {
    plVar3 = (lang_statement_union *)stat_alloc(0x80);
    (plVar3->header).next = (lang_statement_union *)0x0;
    (plVar3->header).type = lang_wild_statement_enum;
    *plVar1->tail = plVar3;
    plVar1->tail = (lang_statement_union **)plVar3;
    (plVar3->wild_statement).filename = (char *)0x0;
    (plVar3->wild_statement).filenames_sorted = 0;
    (plVar3->wild_statement).section_flag_list = (flag_info *)0x0;
    (plVar3->wild_statement).exclude_name_list = (name_list *)0x0;
  }
  else {
    __s = (byte *)filespec->name;
    bVar15 = false;
    bVar16 = __s == (byte *)0x0;
    if (!bVar16) {
      lVar9 = 2;
      pbVar10 = __s;
      pbVar11 = &DAT_0016c217;
      do {
        if (lVar9 == 0) break;
        lVar9 = lVar9 + -1;
        bVar15 = *pbVar10 < *pbVar11;
        bVar16 = *pbVar10 == *pbVar11;
        pbVar10 = pbVar10 + 1;
        pbVar11 = pbVar11 + 1;
      } while (bVar16);
      if ((!bVar15 && !bVar16) == bVar15) {
        filespec->name = (char *)0x0;
      }
      else {
        pcVar7 = strpbrk((char *)__s,"?*[");
        if (pcVar7 == (char *)0x0) {
          lang_has_input_file = 1;
        }
      }
    }
    plVar3 = (lang_statement_union *)stat_alloc(0x80);
    (plVar3->header).next = (lang_statement_union *)0x0;
    (plVar3->header).type = lang_wild_statement_enum;
    *plVar1->tail = plVar3;
    pcVar7 = filespec->name;
    plVar1->tail = (lang_statement_union **)plVar3;
    (plVar3->wild_statement).filename = pcVar7;
    (plVar3->wild_statement).filenames_sorted = (uint)(filespec->sorted == by_name);
    (plVar3->wild_statement).section_flag_list = filespec->section_flag_list;
    (plVar3->wild_statement).exclude_name_list = filespec->exclude_name_list;
  }
  (plVar3->wild_statement).section_list = section_list;
  (plVar3->wild_statement).children.tail = &(plVar3->wild_statement).children.head;
  (plVar3->wild_statement).keep_sections = keep_sections;
  (plVar3->wild_statement).children.head = (lang_statement_union *)0x0;
  (plVar3->wild_statement).walk_wild_section_handler = walk_wild_section_general;
  (plVar3->wild_statement).handler_data[0] = (wildcard_list *)0x0;
  (plVar3->wild_statement).handler_data[1] = (wildcard_list *)0x0;
  (plVar3->wild_statement).handler_data[2] = (wildcard_list *)0x0;
  (plVar3->wild_statement).handler_data[3] = (wildcard_list *)0x0;
  (plVar3->wild_statement).tree = (lang_section_bst_type *)0x0;
  if ((section_list != (wildcard_list *)0x0) &&
     (local_48 = (section_list->spec).name, local_48 != (char *)0x0)) {
    local_4c = 0;
    iVar12 = 1;
    pwVar6 = section_list;
    pcVar7 = local_48;
    while( true ) {
      pcVar4 = strpbrk(pcVar7,"?*[");
      if (pcVar4 != (char *)0x0) {
        sVar5 = strcspn(pcVar7,"*?[");
        if (sVar5 < 4) {
          return;
        }
        if (pcVar7[sVar5] != '*') {
          return;
        }
        if (pcVar7[sVar5 + 1] != '\0') {
          return;
        }
        local_4c = local_4c + 1;
      }
      pwVar6 = pwVar6->next;
      if (pwVar6 == (wildcard_list *)0x0) break;
      pcVar7 = (pwVar6->spec).name;
      iVar12 = iVar12 + 1;
      if (pcVar7 == (char *)0x0) {
        return;
      }
    }
    pwVar6 = section_list;
    if (iVar12 < 5) {
      while (pwVar8 = pwVar6->next, pwVar8 != (wildcard_list *)0x0) {
        pcVar7 = (pwVar6->spec).name;
        sVar5 = strcspn(pcVar7,"?*[");
        uVar13 = sVar5 + 1;
        pwVar14 = pwVar8;
        if (pcVar7[sVar5] != '\0') {
          uVar13 = sVar5;
        }
        do {
          pcVar4 = (pwVar14->spec).name;
          sVar5 = strcspn(pcVar4,"?*[");
          __n = sVar5 + (pcVar4[sVar5] == '\0');
          if (uVar13 <= __n) {
            __n = uVar13;
          }
          iVar2 = memcmp(pcVar7,pcVar4,__n);
          if (iVar2 == 0) {
            return;
          }
          pwVar14 = pwVar14->next;
          pwVar6 = pwVar8;
        } while (pwVar14 != (wildcard_list *)0x0);
      }
      local_4c = local_4c + iVar12 * 0x100;
      if (local_4c == 0x201) {
        (plVar3->wild_statement).walk_wild_section_handler = walk_wild_section_specs2_wild1;
      }
      else if (local_4c < 0x202) {
        if (local_4c == 0x100) {
          (plVar3->wild_statement).walk_wild_section_handler = walk_wild_section_specs1_wild0;
        }
        else {
          if (local_4c != 0x101) {
            return;
          }
          (plVar3->wild_statement).walk_wild_section_handler = walk_wild_section_specs1_wild1;
        }
      }
      else if (local_4c == 0x302) {
        (plVar3->wild_statement).walk_wild_section_handler = walk_wild_section_specs3_wild2;
      }
      else {
        if (local_4c != 0x402) {
          return;
        }
        (plVar3->wild_statement).walk_wild_section_handler = walk_wild_section_specs4_wild2;
      }
      iVar12 = 0;
      pcVar7 = local_48;
      pwVar6 = section_list;
      while( true ) {
        pcVar7 = strpbrk(pcVar7,"?*[");
        if (pcVar7 == (char *)0x0) {
          lVar9 = (long)iVar12;
          iVar12 = iVar12 + 1;
          *(wildcard_list **)((long)plVar3 + lVar9 * 8 + 0x50) = pwVar6;
        }
        pwVar6 = pwVar6->next;
        if (pwVar6 == (wildcard_list *)0x0) break;
        pcVar7 = (pwVar6->spec).name;
      }
      while( true ) {
        pcVar7 = strpbrk(local_48,"?*[");
        if (pcVar7 != (char *)0x0) {
          lVar9 = (long)iVar12;
          iVar12 = iVar12 + 1;
          *(wildcard_list **)((long)plVar3 + lVar9 * 8 + 0x50) = section_list;
        }
        section_list = section_list->next;
        if (section_list == (wildcard_list *)0x0) break;
        local_48 = (section_list->spec).name;
      }
    }
  }
  return;
}



void FUN_0011e4d0(undefined8 *param_1,long *param_2,undefined4 param_3)

{
  byte *__s;
  undefined8 uVar1;
  undefined *puVar2;
  int iVar3;
  undefined8 *puVar4;
  char *pcVar5;
  size_t sVar6;
  long *plVar7;
  ulong __n;
  char *pcVar8;
  long *plVar9;
  long lVar10;
  byte *pbVar11;
  byte *pbVar12;
  int iVar13;
  ulong uVar14;
  long *plVar15;
  bool bVar16;
  bool bVar17;
  int local_4c;
  char *local_48;
  
  if (param_2 != (long *)0x0) {
    plVar9 = (long *)0x0;
    plVar7 = param_2;
    do {
      param_2 = plVar7;
      plVar7 = (long *)*param_2;
      *param_2 = (long)plVar9;
      plVar9 = param_2;
    } while (plVar7 != (long *)0x0);
  }
  puVar2 = PTR_DAT_002b2710;
  if (param_1 == (undefined8 *)0x0) {
    puVar4 = (undefined8 *)FUN_00119720(0x80);
    *puVar4 = 0;
    *(undefined4 *)(puVar4 + 1) = 4;
    **(undefined8 **)(puVar2 + 8) = puVar4;
    *(undefined8 **)(puVar2 + 8) = puVar4;
    puVar4[2] = 0;
    *(undefined4 *)(puVar4 + 3) = 0;
    puVar4[0xf] = 0;
    puVar4[8] = 0;
  }
  else {
    __s = (byte *)*param_1;
    bVar16 = false;
    bVar17 = __s == (byte *)0x0;
    if (!bVar17) {
      lVar10 = 2;
      pbVar11 = __s;
      pbVar12 = &DAT_0016c217;
      do {
        if (lVar10 == 0) break;
        lVar10 = lVar10 + -1;
        bVar16 = *pbVar11 < *pbVar12;
        bVar17 = *pbVar11 == *pbVar12;
        pbVar11 = pbVar11 + 1;
        pbVar12 = pbVar12 + 1;
      } while (bVar17);
      if ((!bVar16 && !bVar17) == bVar16) {
        *param_1 = 0;
      }
      else {
        pcVar8 = strpbrk((char *)__s,"?*[");
        if (pcVar8 == (char *)0x0) {
          DAT_002b4c30 = 1;
        }
      }
    }
    puVar4 = (undefined8 *)FUN_00119720(0x80);
    *puVar4 = 0;
    *(undefined4 *)(puVar4 + 1) = 4;
    **(undefined8 **)(puVar2 + 8) = puVar4;
    uVar1 = *param_1;
    *(undefined8 **)(puVar2 + 8) = puVar4;
    puVar4[2] = uVar1;
    *(uint *)(puVar4 + 3) = (uint)(*(int *)(param_1 + 2) == 1);
    puVar4[0xf] = param_1[3];
    puVar4[8] = param_1[1];
  }
  puVar4[4] = param_2;
  puVar4[7] = puVar4 + 6;
  *(undefined4 *)(puVar4 + 5) = param_3;
  puVar4[6] = 0;
  puVar4[9] = FUN_00118ca0;
  puVar4[10] = 0;
  puVar4[0xb] = 0;
  puVar4[0xc] = 0;
  puVar4[0xd] = 0;
  puVar4[0xe] = 0;
  if ((param_2 != (long *)0x0) && (local_48 = (char *)param_2[1], local_48 != (char *)0x0)) {
    local_4c = 0;
    iVar13 = 1;
    plVar7 = param_2;
    pcVar8 = local_48;
    while( true ) {
      pcVar5 = strpbrk(pcVar8,"?*[");
      if (pcVar5 != (char *)0x0) {
        sVar6 = strcspn(pcVar8,"*?[");
        if (sVar6 < 4) {
          return;
        }
        if (pcVar8[sVar6] != '*') {
          return;
        }
        if (pcVar8[sVar6 + 1] != '\0') {
          return;
        }
        local_4c = local_4c + 1;
      }
      plVar7 = (long *)*plVar7;
      if (plVar7 == (long *)0x0) break;
      pcVar8 = (char *)plVar7[1];
      iVar13 = iVar13 + 1;
      if (pcVar8 == (char *)0x0) {
        return;
      }
    }
    plVar7 = param_2;
    if (iVar13 < 5) {
      while (plVar9 = (long *)*plVar7, plVar9 != (long *)0x0) {
        pcVar8 = (char *)plVar7[1];
        sVar6 = strcspn(pcVar8,"?*[");
        uVar14 = sVar6 + 1;
        plVar15 = plVar9;
        if (pcVar8[sVar6] != '\0') {
          uVar14 = sVar6;
        }
        do {
          pcVar5 = (char *)plVar15[1];
          sVar6 = strcspn(pcVar5,"?*[");
          __n = sVar6 + (pcVar5[sVar6] == '\0');
          if (uVar14 <= __n) {
            __n = uVar14;
          }
          iVar3 = memcmp(pcVar8,pcVar5,__n);
          if (iVar3 == 0) {
            return;
          }
          plVar15 = (long *)*plVar15;
          plVar7 = plVar9;
        } while (plVar15 != (long *)0x0);
      }
      local_4c = local_4c + iVar13 * 0x100;
      if (local_4c == 0x201) {
        puVar4[9] = FUN_00119070;
      }
      else if (local_4c < 0x202) {
        if (local_4c == 0x100) {
          puVar4[9] = FUN_00119190;
        }
        else {
          if (local_4c != 0x101) {
            return;
          }
          puVar4[9] = FUN_00118c20;
        }
      }
      else if (local_4c == 0x302) {
        puVar4[9] = FUN_00118f20;
      }
      else {
        if (local_4c != 0x402) {
          return;
        }
        puVar4[9] = FUN_00118d60;
      }
      iVar13 = 0;
      pcVar8 = local_48;
      plVar7 = param_2;
      while( true ) {
        pcVar8 = strpbrk(pcVar8,"?*[");
        if (pcVar8 == (char *)0x0) {
          lVar10 = (long)iVar13;
          iVar13 = iVar13 + 1;
          puVar4[lVar10 + 10] = plVar7;
        }
        plVar7 = (long *)*plVar7;
        if (plVar7 == (long *)0x0) break;
        pcVar8 = (char *)plVar7[1];
      }
      while( true ) {
        pcVar8 = strpbrk(local_48,"?*[");
        if (pcVar8 != (char *)0x0) {
          lVar10 = (long)iVar13;
          iVar13 = iVar13 + 1;
          puVar4[lVar10 + 10] = param_2;
        }
        param_2 = (long *)*param_2;
        if (param_2 == (long *)0x0) break;
        local_48 = (char *)param_2[1];
      }
    }
  }
  return;
}


PUSH R15
PUSH R14
MOV R14D,EDX
PUSH R13
PUSH R12
MOV R12,RDI
PUSH RBP
PUSH RBX
MOV RBX,RSI
SUB RSP,0x28
TEST RSI,RSI
JZ 0x0011e501
XOR ECX,ECX
JMP 0x0011e4f3
MOV RBX,RAX
MOV RAX,qword ptr [RBX]
MOV qword ptr [RBX],RCX
MOV RCX,RBX
TEST RAX,RAX
JNZ 0x0011e4f0
MOV R13,qword ptr [0x002b2710]
TEST R12,R12
JZ 0x0011e720
MOV RAX,qword ptr [R12]
TEST RAX,RAX
JZ 0x0011e541
MOV ECX,0x2
LEA RDI,[0x16c217]
MOV RSI,RAX
CMPSB.REPE RDI,RSI
SETA DL
SBB DL,0x0
TEST DL,DL
JNZ 0x0011e770
MOV qword ptr [R12],0x0
MOV EDI,0x80
CALL 0x00119720
MOV RBP,RAX
MOV qword ptr [RAX],0x0
MOV dword ptr [RAX + 0x8],0x4
MOV RAX,qword ptr [R13 + 0x8]
MOV qword ptr [RAX],RBP
MOV RAX,qword ptr [R12]
MOV qword ptr [R13 + 0x8],RBP
MOV qword ptr [RBP + 0x10],RAX
XOR EAX,EAX
CMP dword ptr [R12 + 0x10],0x1
SETZ AL
MOV dword ptr [RBP + 0x18],EAX
MOV RAX,qword ptr [R12 + 0x18]
MOV qword ptr [RBP + 0x78],RAX
MOV RAX,qword ptr [R12 + 0x8]
MOV qword ptr [RBP + 0x40],RAX
LEA RAX,[RBP + 0x30]
MOV qword ptr [RBP + 0x20],RBX
MOV qword ptr [RBP + 0x38],RAX
LEA RAX,[0x118ca0]
MOV dword ptr [RBP + 0x28],R14D
MOV qword ptr [RBP + 0x30],0x0
MOV qword ptr [RBP + 0x48],RAX
MOV qword ptr [RBP + 0x50],0x0
MOV qword ptr [RBP + 0x58],0x0
MOV qword ptr [RBP + 0x60],0x0
MOV qword ptr [RBP + 0x68],0x0
MOV qword ptr [RBP + 0x70],0x0
TEST RBX,RBX
JZ 0x0011e635
MOV RAX,qword ptr [RBX + 0x8]
MOV qword ptr [RSP + 0x10],RAX
TEST RAX,RAX
JZ 0x0011e635
MOV dword ptr [RSP + 0xc],0x0
MOV R15,RAX
MOV R14,RBX
MOV R12D,0x1
LEA R13,[0x16c1a1]
NOP dword ptr [RAX + RAX*0x1]
MOV RSI,R13
MOV RDI,R15
CALL 0x0010d8e0
TEST RAX,RAX
JZ 0x0011e660
LEA RSI,[0x16c2db]
MOV RDI,R15
CALL 0x0010d540
CMP RAX,0x3
JA 0x0011e648
ADD RSP,0x28
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
CMP byte ptr [R15 + RAX*0x1],0x2a
JNZ 0x0011e635
CMP byte ptr [R15 + RAX*0x1 + 0x1],0x0
JNZ 0x0011e635
ADD dword ptr [RSP + 0xc],0x1
NOP dword ptr [RAX]
MOV R14,qword ptr [R14]
TEST R14,R14
JZ 0x0011e688
MOV R15,qword ptr [R14 + 0x8]
ADD R12D,0x1
TEST R15,R15
JNZ 0x0011e610
ADD RSP,0x28
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
CMP R12D,0x4
JG 0x0011e635
MOV RAX,RBX
MOV R15,qword ptr [RAX]
MOV qword ptr [RSP + 0x18],R15
TEST R15,R15
JZ 0x0011e797
MOV RAX,qword ptr [RAX + 0x8]
LEA RSI,[0x16c1a1]
MOV RDI,RAX
MOV R14,RAX
MOV qword ptr [RSP],RAX
CALL 0x0010d540
LEA R13,[RAX + 0x1]
CMP byte ptr [R14 + RAX*0x1],0x0
CMOVNZ R13,RAX
NOP dword ptr [RAX]
MOV R14,qword ptr [R15 + 0x8]
LEA RSI,[0x16c1a1]
MOV RDI,R14
CALL 0x0010d540
MOV RDI,qword ptr [RSP]
MOV RSI,R14
CMP byte ptr [R14 + RAX*0x1],0x1
ADC RAX,0x0
CMP R13,RAX
CMOVBE RAX,R13
MOV RDX,RAX
CALL 0x0010d580
TEST EAX,EAX
JZ 0x0011e635
MOV R15,qword ptr [R15]
TEST R15,R15
JNZ 0x0011e6d0
MOV RAX,qword ptr [RSP + 0x18]
JMP 0x0011e691
MOV EDI,0x80
CALL 0x00119720
MOV RBP,RAX
MOV qword ptr [RAX],0x0
MOV dword ptr [RAX + 0x8],0x4
MOV RAX,qword ptr [R13 + 0x8]
MOV qword ptr [RAX],RBP
MOV qword ptr [R13 + 0x8],RBP
MOV qword ptr [RBP + 0x10],0x0
MOV dword ptr [RBP + 0x18],0x0
MOV qword ptr [RBP + 0x78],0x0
MOV qword ptr [RBP + 0x40],0x0
JMP 0x0011e58f
LEA RSI,[0x16c1a1]
MOV RDI,RAX
CALL 0x0010d8e0
TEST RAX,RAX
JNZ 0x0011e541
MOV dword ptr [0x002b4c30],0x1
JMP 0x0011e541
MOV EAX,dword ptr [RSP + 0xc]
SHL R12D,0x8
ADD EAX,R12D
CMP EAX,0x201
JZ 0x0011e884
JG 0x0011e811
CMP EAX,0x100
JZ 0x0011e874
CMP EAX,0x101
JNZ 0x0011e635
LEA RAX,[0x118c20]
MOV qword ptr [RBP + 0x48],RAX
MOV RDI,qword ptr [RSP + 0x10]
MOV R12,RBX
XOR R13D,R13D
LEA R14,[0x16c1a1]
JMP 0x0011e7f6
MOV R12,qword ptr [R12]
TEST R12,R12
JZ 0x0011e830
MOV RDI,qword ptr [R12 + 0x8]
MOV RSI,R14
CALL 0x0010d8e0
TEST RAX,RAX
JNZ 0x0011e7e8
MOVSXD RAX,R13D
ADD R13D,0x1
MOV qword ptr [RBP + RAX*0x8 + 0x50],R12
JMP 0x0011e7e8
CMP EAX,0x302
JZ 0x0011e894
CMP EAX,0x402
JNZ 0x0011e635
LEA RAX,[0x118d60]
MOV qword ptr [RBP + 0x48],RAX
JMP 0x0011e7d0
LEA R12,[0x16c1a1]
JMP 0x0011e849
MOV RAX,qword ptr [RBX + 0x8]
MOV qword ptr [RSP + 0x10],RAX
MOV RDI,qword ptr [RSP + 0x10]
MOV RSI,R12
CALL 0x0010d8e0
TEST RAX,RAX
JZ 0x0011e867
MOVSXD RAX,R13D
ADD R13D,0x1
MOV qword ptr [RBP + RAX*0x8 + 0x50],RBX
MOV RBX,qword ptr [RBX]
TEST RBX,RBX
JNZ 0x0011e840
JMP 0x0011e635
LEA RAX,[0x119190]
MOV qword ptr [RBP + 0x48],RAX
JMP 0x0011e7d0
LEA RAX,[0x119070]
MOV qword ptr [RBP + 0x48],RAX
JMP 0x0011e7d0
LEA RAX,[0x118f20]
MOV qword ptr [RBP + 0x48],RAX
JMP 0x0011e7d0
(translation_unit "void FUN_0011e4d0(undefined8 *param_1,long *param_2,undefined4 param_3)\n\n{\n  byte *__s;\n  undefined8 uVar1;\n  undefined *puVar2;\n  int iVar3;\n  undefined8 *puVar4;\n  char *pcVar5;\n  size_t sVar6;\n  long *plVar7;\n  ulong __n;\n  char *pcVar8;\n  long *plVar9;\n  long lVar10;\n  byte *pbVar11;\n  byte *pbVar12;\n  int iVar13;\n  ulong uVar14;\n  long *plVar15;\n  bool bVar16;\n  bool bVar17;\n  int local_4c;\n  char *local_48;\n  \n  if (param_2 != (long *)0x0) {\n    plVar9 = (long *)0x0;\n    plVar7 = param_2;\n    do {\n      param_2 = plVar7;\n      plVar7 = (long *)*param_2;\n      *param_2 = (long)plVar9;\n      plVar9 = param_2;\n    } while (plVar7 != (long *)0x0);\n  }\n  puVar2 = PTR_DAT_002b2710;\n  if (param_1 == (undefined8 *)0x0) {\n    puVar4 = (undefined8 *)FUN_00119720(0x80);\n    *puVar4 = 0;\n    *(undefined4 *)(puVar4 + 1) = 4;\n    **(undefined8 **)(puVar2 + 8) = puVar4;\n    *(undefined8 **)(puVar2 + 8) = puVar4;\n    puVar4[2] = 0;\n    *(undefined4 *)(puVar4 + 3) = 0;\n    puVar4[0xf] = 0;\n    puVar4[8] = 0;\n  }\n  else {\n    __s = (byte *)*param_1;\n    bVar16 = false;\n    bVar17 = __s == (byte *)0x0;\n    if (!bVar17) {\n      lVar10 = 2;\n      pbVar11 = __s;\n      pbVar12 = &DAT_0016c217;\n      do {\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar16 = *pbVar11 < *pbVar12;\n        bVar17 = *pbVar11 == *pbVar12;\n        pbVar11 = pbVar11 + 1;\n        pbVar12 = pbVar12 + 1;\n      } while (bVar17);\n      if ((!bVar16 && !bVar17) == bVar16) {\n        *param_1 = 0;\n      }\n      else {\n        pcVar8 = strpbrk((char *)__s,"?*[");\n        if (pcVar8 == (char *)0x0) {\n          DAT_002b4c30 = 1;\n        }\n      }\n    }\n    puVar4 = (undefined8 *)FUN_00119720(0x80);\n    *puVar4 = 0;\n    *(undefined4 *)(puVar4 + 1) = 4;\n    **(undefined8 **)(puVar2 + 8) = puVar4;\n    uVar1 = *param_1;\n    *(undefined8 **)(puVar2 + 8) = puVar4;\n    puVar4[2] = uVar1;\n    *(uint *)(puVar4 + 3) = (uint)(*(int *)(param_1 + 2) == 1);\n    puVar4[0xf] = param_1[3];\n    puVar4[8] = param_1[1];\n  }\n  puVar4[4] = param_2;\n  puVar4[7] = puVar4 + 6;\n  *(undefined4 *)(puVar4 + 5) = param_3;\n  puVar4[6] = 0;\n  puVar4[9] = FUN_00118ca0;\n  puVar4[10] = 0;\n  puVar4[0xb] = 0;\n  puVar4[0xc] = 0;\n  puVar4[0xd] = 0;\n  puVar4[0xe] = 0;\n  if ((param_2 != (long *)0x0) && (local_48 = (char *)param_2[1], local_48 != (char *)0x0)) {\n    local_4c = 0;\n    iVar13 = 1;\n    plVar7 = param_2;\n    pcVar8 = local_48;\n    while( true ) {\n      pcVar5 = strpbrk(pcVar8,"?*[");\n      if (pcVar5 != (char *)0x0) {\n        sVar6 = strcspn(pcVar8,"*?[");\n        if (sVar6 < 4) {\n          return;\n        }\n        if (pcVar8[sVar6] != '*') {\n          return;\n        }\n        if (pcVar8[sVar6 + 1] != '\0') {\n          return;\n        }\n        local_4c = local_4c + 1;\n      }\n      plVar7 = (long *)*plVar7;\n      if (plVar7 == (long *)0x0) break;\n      pcVar8 = (char *)plVar7[1];\n      iVar13 = iVar13 + 1;\n      if (pcVar8 == (char *)0x0) {\n        return;\n      }\n    }\n    plVar7 = param_2;\n    if (iVar13 < 5) {\n      while (plVar9 = (long *)*plVar7, plVar9 != (long *)0x0) {\n        pcVar8 = (char *)plVar7[1];\n        sVar6 = strcspn(pcVar8,"?*[");\n        uVar14 = sVar6 + 1;\n        plVar15 = plVar9;\n        if (pcVar8[sVar6] != '\0') {\n          uVar14 = sVar6;\n        }\n        do {\n          pcVar5 = (char *)plVar15[1];\n          sVar6 = strcspn(pcVar5,"?*[");\n          __n = sVar6 + (pcVar5[sVar6] == '\0');\n          if (uVar14 <= __n) {\n            __n = uVar14;\n          }\n          iVar3 = memcmp(pcVar8,pcVar5,__n);\n          if (iVar3 == 0) {\n            return;\n          }\n          plVar15 = (long *)*plVar15;\n          plVar7 = plVar9;\n        } while (plVar15 != (long *)0x0);\n      }\n      local_4c = local_4c + iVar13 * 0x100;\n      if (local_4c == 0x201) {\n        puVar4[9] = FUN_00119070;\n      }\n      else if (local_4c < 0x202) {\n        if (local_4c == 0x100) {\n          puVar4[9] = FUN_00119190;\n        }\n        else {\n          if (local_4c != 0x101) {\n            return;\n          }\n          puVar4[9] = FUN_00118c20;\n        }\n      }\n      else if (local_4c == 0x302) {\n        puVar4[9] = FUN_00118f20;\n      }\n      else {\n        if (local_4c != 0x402) {\n          return;\n        }\n        puVar4[9] = FUN_00118d60;\n      }\n      iVar13 = 0;\n      pcVar8 = local_48;\n      plVar7 = param_2;\n      while( true ) {\n        pcVar8 = strpbrk(pcVar8,"?*[");\n        if (pcVar8 == (char *)0x0) {\n          lVar10 = (long)iVar13;\n          iVar13 = iVar13 + 1;\n          puVar4[lVar10 + 10] = plVar7;\n        }\n        plVar7 = (long *)*plVar7;\n        if (plVar7 == (long *)0x0) break;\n        pcVar8 = (char *)plVar7[1];\n      }\n      while( true ) {\n        pcVar8 = strpbrk(local_48,"?*[");\n        if (pcVar8 != (char *)0x0) {\n          lVar10 = (long)iVar13;\n          iVar13 = iVar13 + 1;\n          puVar4[lVar10 + 10] = param_2;\n        }\n        param_2 = (long *)*param_2;\n        if (param_2 == (long *)0x0) break;\n        local_48 = (char *)param_2[1];\n      }\n    }\n  }\n  return;\n}\n\n" (function_definition "void FUN_0011e4d0(undefined8 *param_1,long *param_2,undefined4 param_3)\n\n{\n  byte *__s;\n  undefined8 uVar1;\n  undefined *puVar2;\n  int iVar3;\n  undefined8 *puVar4;\n  char *pcVar5;\n  size_t sVar6;\n  long *plVar7;\n  ulong __n;\n  char *pcVar8;\n  long *plVar9;\n  long lVar10;\n  byte *pbVar11;\n  byte *pbVar12;\n  int iVar13;\n  ulong uVar14;\n  long *plVar15;\n  bool bVar16;\n  bool bVar17;\n  int local_4c;\n  char *local_48;\n  \n  if (param_2 != (long *)0x0) {\n    plVar9 = (long *)0x0;\n    plVar7 = param_2;\n    do {\n      param_2 = plVar7;\n      plVar7 = (long *)*param_2;\n      *param_2 = (long)plVar9;\n      plVar9 = param_2;\n    } while (plVar7 != (long *)0x0);\n  }\n  puVar2 = PTR_DAT_002b2710;\n  if (param_1 == (undefined8 *)0x0) {\n    puVar4 = (undefined8 *)FUN_00119720(0x80);\n    *puVar4 = 0;\n    *(undefined4 *)(puVar4 + 1) = 4;\n    **(undefined8 **)(puVar2 + 8) = puVar4;\n    *(undefined8 **)(puVar2 + 8) = puVar4;\n    puVar4[2] = 0;\n    *(undefined4 *)(puVar4 + 3) = 0;\n    puVar4[0xf] = 0;\n    puVar4[8] = 0;\n  }\n  else {\n    __s = (byte *)*param_1;\n    bVar16 = false;\n    bVar17 = __s == (byte *)0x0;\n    if (!bVar17) {\n      lVar10 = 2;\n      pbVar11 = __s;\n      pbVar12 = &DAT_0016c217;\n      do {\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar16 = *pbVar11 < *pbVar12;\n        bVar17 = *pbVar11 == *pbVar12;\n        pbVar11 = pbVar11 + 1;\n        pbVar12 = pbVar12 + 1;\n      } while (bVar17);\n      if ((!bVar16 && !bVar17) == bVar16) {\n        *param_1 = 0;\n      }\n      else {\n        pcVar8 = strpbrk((char *)__s,"?*[");\n        if (pcVar8 == (char *)0x0) {\n          DAT_002b4c30 = 1;\n        }\n      }\n    }\n    puVar4 = (undefined8 *)FUN_00119720(0x80);\n    *puVar4 = 0;\n    *(undefined4 *)(puVar4 + 1) = 4;\n    **(undefined8 **)(puVar2 + 8) = puVar4;\n    uVar1 = *param_1;\n    *(undefined8 **)(puVar2 + 8) = puVar4;\n    puVar4[2] = uVar1;\n    *(uint *)(puVar4 + 3) = (uint)(*(int *)(param_1 + 2) == 1);\n    puVar4[0xf] = param_1[3];\n    puVar4[8] = param_1[1];\n  }\n  puVar4[4] = param_2;\n  puVar4[7] = puVar4 + 6;\n  *(undefined4 *)(puVar4 + 5) = param_3;\n  puVar4[6] = 0;\n  puVar4[9] = FUN_00118ca0;\n  puVar4[10] = 0;\n  puVar4[0xb] = 0;\n  puVar4[0xc] = 0;\n  puVar4[0xd] = 0;\n  puVar4[0xe] = 0;\n  if ((param_2 != (long *)0x0) && (local_48 = (char *)param_2[1], local_48 != (char *)0x0)) {\n    local_4c = 0;\n    iVar13 = 1;\n    plVar7 = param_2;\n    pcVar8 = local_48;\n    while( true ) {\n      pcVar5 = strpbrk(pcVar8,"?*[");\n      if (pcVar5 != (char *)0x0) {\n        sVar6 = strcspn(pcVar8,"*?[");\n        if (sVar6 < 4) {\n          return;\n        }\n        if (pcVar8[sVar6] != '*') {\n          return;\n        }\n        if (pcVar8[sVar6 + 1] != '\0') {\n          return;\n        }\n        local_4c = local_4c + 1;\n      }\n      plVar7 = (long *)*plVar7;\n      if (plVar7 == (long *)0x0) break;\n      pcVar8 = (char *)plVar7[1];\n      iVar13 = iVar13 + 1;\n      if (pcVar8 == (char *)0x0) {\n        return;\n      }\n    }\n    plVar7 = param_2;\n    if (iVar13 < 5) {\n      while (plVar9 = (long *)*plVar7, plVar9 != (long *)0x0) {\n        pcVar8 = (char *)plVar7[1];\n        sVar6 = strcspn(pcVar8,"?*[");\n        uVar14 = sVar6 + 1;\n        plVar15 = plVar9;\n        if (pcVar8[sVar6] != '\0') {\n          uVar14 = sVar6;\n        }\n        do {\n          pcVar5 = (char *)plVar15[1];\n          sVar6 = strcspn(pcVar5,"?*[");\n          __n = sVar6 + (pcVar5[sVar6] == '\0');\n          if (uVar14 <= __n) {\n            __n = uVar14;\n          }\n          iVar3 = memcmp(pcVar8,pcVar5,__n);\n          if (iVar3 == 0) {\n            return;\n          }\n          plVar15 = (long *)*plVar15;\n          plVar7 = plVar9;\n        } while (plVar15 != (long *)0x0);\n      }\n      local_4c = local_4c + iVar13 * 0x100;\n      if (local_4c == 0x201) {\n        puVar4[9] = FUN_00119070;\n      }\n      else if (local_4c < 0x202) {\n        if (local_4c == 0x100) {\n          puVar4[9] = FUN_00119190;\n        }\n        else {\n          if (local_4c != 0x101) {\n            return;\n          }\n          puVar4[9] = FUN_00118c20;\n        }\n      }\n      else if (local_4c == 0x302) {\n        puVar4[9] = FUN_00118f20;\n      }\n      else {\n        if (local_4c != 0x402) {\n          return;\n        }\n        puVar4[9] = FUN_00118d60;\n      }\n      iVar13 = 0;\n      pcVar8 = local_48;\n      plVar7 = param_2;\n      while( true ) {\n        pcVar8 = strpbrk(pcVar8,"?*[");\n        if (pcVar8 == (char *)0x0) {\n          lVar10 = (long)iVar13;\n          iVar13 = iVar13 + 1;\n          puVar4[lVar10 + 10] = plVar7;\n        }\n        plVar7 = (long *)*plVar7;\n        if (plVar7 == (long *)0x0) break;\n        pcVar8 = (char *)plVar7[1];\n      }\n      while( true ) {\n        pcVar8 = strpbrk(local_48,"?*[");\n        if (pcVar8 != (char *)0x0) {\n          lVar10 = (long)iVar13;\n          iVar13 = iVar13 + 1;\n          puVar4[lVar10 + 10] = param_2;\n        }\n        param_2 = (long *)*param_2;\n        if (param_2 == (long *)0x0) break;\n        local_48 = (char *)param_2[1];\n      }\n    }\n  }\n  return;\n}" primitive_type (function_declarator "FUN_0011e4d0(undefined8 *param_1,long *param_2,undefined4 param_3)" identifier (parameter_list "(undefined8 *param_1,long *param_2,undefined4 param_3)" ( (parameter_declaration "undefined8 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "long *param_2" (sized_type_specifier "long" long) (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "undefined4 param_3" type_identifier identifier) ))) (compound_statement "{\n  byte *__s;\n  undefined8 uVar1;\n  undefined *puVar2;\n  int iVar3;\n  undefined8 *puVar4;\n  char *pcVar5;\n  size_t sVar6;\n  long *plVar7;\n  ulong __n;\n  char *pcVar8;\n  long *plVar9;\n  long lVar10;\n  byte *pbVar11;\n  byte *pbVar12;\n  int iVar13;\n  ulong uVar14;\n  long *plVar15;\n  bool bVar16;\n  bool bVar17;\n  int local_4c;\n  char *local_48;\n  \n  if (param_2 != (long *)0x0) {\n    plVar9 = (long *)0x0;\n    plVar7 = param_2;\n    do {\n      param_2 = plVar7;\n      plVar7 = (long *)*param_2;\n      *param_2 = (long)plVar9;\n      plVar9 = param_2;\n    } while (plVar7 != (long *)0x0);\n  }\n  puVar2 = PTR_DAT_002b2710;\n  if (param_1 == (undefined8 *)0x0) {\n    puVar4 = (undefined8 *)FUN_00119720(0x80);\n    *puVar4 = 0;\n    *(undefined4 *)(puVar4 + 1) = 4;\n    **(undefined8 **)(puVar2 + 8) = puVar4;\n    *(undefined8 **)(puVar2 + 8) = puVar4;\n    puVar4[2] = 0;\n    *(undefined4 *)(puVar4 + 3) = 0;\n    puVar4[0xf] = 0;\n    puVar4[8] = 0;\n  }\n  else {\n    __s = (byte *)*param_1;\n    bVar16 = false;\n    bVar17 = __s == (byte *)0x0;\n    if (!bVar17) {\n      lVar10 = 2;\n      pbVar11 = __s;\n      pbVar12 = &DAT_0016c217;\n      do {\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar16 = *pbVar11 < *pbVar12;\n        bVar17 = *pbVar11 == *pbVar12;\n        pbVar11 = pbVar11 + 1;\n        pbVar12 = pbVar12 + 1;\n      } while (bVar17);\n      if ((!bVar16 && !bVar17) == bVar16) {\n        *param_1 = 0;\n      }\n      else {\n        pcVar8 = strpbrk((char *)__s,"?*[");\n        if (pcVar8 == (char *)0x0) {\n          DAT_002b4c30 = 1;\n        }\n      }\n    }\n    puVar4 = (undefined8 *)FUN_00119720(0x80);\n    *puVar4 = 0;\n    *(undefined4 *)(puVar4 + 1) = 4;\n    **(undefined8 **)(puVar2 + 8) = puVar4;\n    uVar1 = *param_1;\n    *(undefined8 **)(puVar2 + 8) = puVar4;\n    puVar4[2] = uVar1;\n    *(uint *)(puVar4 + 3) = (uint)(*(int *)(param_1 + 2) == 1);\n    puVar4[0xf] = param_1[3];\n    puVar4[8] = param_1[1];\n  }\n  puVar4[4] = param_2;\n  puVar4[7] = puVar4 + 6;\n  *(undefined4 *)(puVar4 + 5) = param_3;\n  puVar4[6] = 0;\n  puVar4[9] = FUN_00118ca0;\n  puVar4[10] = 0;\n  puVar4[0xb] = 0;\n  puVar4[0xc] = 0;\n  puVar4[0xd] = 0;\n  puVar4[0xe] = 0;\n  if ((param_2 != (long *)0x0) && (local_48 = (char *)param_2[1], local_48 != (char *)0x0)) {\n    local_4c = 0;\n    iVar13 = 1;\n    plVar7 = param_2;\n    pcVar8 = local_48;\n    while( true ) {\n      pcVar5 = strpbrk(pcVar8,"?*[");\n      if (pcVar5 != (char *)0x0) {\n        sVar6 = strcspn(pcVar8,"*?[");\n        if (sVar6 < 4) {\n          return;\n        }\n        if (pcVar8[sVar6] != '*') {\n          return;\n        }\n        if (pcVar8[sVar6 + 1] != '\0') {\n          return;\n        }\n        local_4c = local_4c + 1;\n      }\n      plVar7 = (long *)*plVar7;\n      if (plVar7 == (long *)0x0) break;\n      pcVar8 = (char *)plVar7[1];\n      iVar13 = iVar13 + 1;\n      if (pcVar8 == (char *)0x0) {\n        return;\n      }\n    }\n    plVar7 = param_2;\n    if (iVar13 < 5) {\n      while (plVar9 = (long *)*plVar7, plVar9 != (long *)0x0) {\n        pcVar8 = (char *)plVar7[1];\n        sVar6 = strcspn(pcVar8,"?*[");\n        uVar14 = sVar6 + 1;\n        plVar15 = plVar9;\n        if (pcVar8[sVar6] != '\0') {\n          uVar14 = sVar6;\n        }\n        do {\n          pcVar5 = (char *)plVar15[1];\n          sVar6 = strcspn(pcVar5,"?*[");\n          __n = sVar6 + (pcVar5[sVar6] == '\0');\n          if (uVar14 <= __n) {\n            __n = uVar14;\n          }\n          iVar3 = memcmp(pcVar8,pcVar5,__n);\n          if (iVar3 == 0) {\n            return;\n          }\n          plVar15 = (long *)*plVar15;\n          plVar7 = plVar9;\n        } while (plVar15 != (long *)0x0);\n      }\n      local_4c = local_4c + iVar13 * 0x100;\n      if (local_4c == 0x201) {\n        puVar4[9] = FUN_00119070;\n      }\n      else if (local_4c < 0x202) {\n        if (local_4c == 0x100) {\n          puVar4[9] = FUN_00119190;\n        }\n        else {\n          if (local_4c != 0x101) {\n            return;\n          }\n          puVar4[9] = FUN_00118c20;\n        }\n      }\n      else if (local_4c == 0x302) {\n        puVar4[9] = FUN_00118f20;\n      }\n      else {\n        if (local_4c != 0x402) {\n          return;\n        }\n        puVar4[9] = FUN_00118d60;\n      }\n      iVar13 = 0;\n      pcVar8 = local_48;\n      plVar7 = param_2;\n      while( true ) {\n        pcVar8 = strpbrk(pcVar8,"?*[");\n        if (pcVar8 == (char *)0x0) {\n          lVar10 = (long)iVar13;\n          iVar13 = iVar13 + 1;\n          puVar4[lVar10 + 10] = plVar7;\n        }\n        plVar7 = (long *)*plVar7;\n        if (plVar7 == (long *)0x0) break;\n        pcVar8 = (char *)plVar7[1];\n      }\n      while( true ) {\n        pcVar8 = strpbrk(local_48,"?*[");\n        if (pcVar8 != (char *)0x0) {\n          lVar10 = (long)iVar13;\n          iVar13 = iVar13 + 1;\n          puVar4[lVar10 + 10] = param_2;\n        }\n        param_2 = (long *)*param_2;\n        if (param_2 == (long *)0x0) break;\n        local_48 = (char *)param_2[1];\n      }\n    }\n  }\n  return;\n}" { (declaration "byte *__s;" type_identifier (pointer_declarator "*__s" * identifier) ;) (declaration "undefined8 uVar1;" type_identifier identifier ;) (declaration "undefined *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "undefined8 *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "char *pcVar5;" primitive_type (pointer_declarator "*pcVar5" * identifier) ;) (declaration "size_t sVar6;" primitive_type identifier ;) (declaration "long *plVar7;" (sized_type_specifier "long" long) (pointer_declarator "*plVar7" * identifier) ;) (declaration "ulong __n;" type_identifier identifier ;) (declaration "char *pcVar8;" primitive_type (pointer_declarator "*pcVar8" * identifier) ;) (declaration "long *plVar9;" (sized_type_specifier "long" long) (pointer_declarator "*plVar9" * identifier) ;) (declaration "long lVar10;" (sized_type_specifier "long" long) identifier ;) (declaration "byte *pbVar11;" type_identifier (pointer_declarator "*pbVar11" * identifier) ;) (declaration "byte *pbVar12;" type_identifier (pointer_declarator "*pbVar12" * identifier) ;) (declaration "int iVar13;" primitive_type identifier ;) (declaration "ulong uVar14;" type_identifier identifier ;) (declaration "long *plVar15;" (sized_type_specifier "long" long) (pointer_declarator "*plVar15" * identifier) ;) (declaration "bool bVar16;" primitive_type identifier ;) (declaration "bool bVar17;" primitive_type identifier ;) (declaration "int local_4c;" primitive_type identifier ;) (declaration "char *local_48;" primitive_type (pointer_declarator "*local_48" * identifier) ;) (if_statement "if (param_2 != (long *)0x0) {\n    plVar9 = (long *)0x0;\n    plVar7 = param_2;\n    do {\n      param_2 = plVar7;\n      plVar7 = (long *)*param_2;\n      *param_2 = (long)plVar9;\n      plVar9 = param_2;\n    } while (plVar7 != (long *)0x0);\n  }" if (parenthesized_expression "(param_2 != (long *)0x0)" ( (binary_expression "param_2 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    plVar9 = (long *)0x0;\n    plVar7 = param_2;\n    do {\n      param_2 = plVar7;\n      plVar7 = (long *)*param_2;\n      *param_2 = (long)plVar9;\n      plVar9 = param_2;\n    } while (plVar7 != (long *)0x0);\n  }" { (expression_statement "plVar9 = (long *)0x0;" (assignment_expression "plVar9 = (long *)0x0" identifier = (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "plVar7 = param_2;" (assignment_expression "plVar7 = param_2" identifier = identifier) ;) (do_statement "do {\n      param_2 = plVar7;\n      plVar7 = (long *)*param_2;\n      *param_2 = (long)plVar9;\n      plVar9 = param_2;\n    } while (plVar7 != (long *)0x0);" do (compound_statement "{\n      param_2 = plVar7;\n      plVar7 = (long *)*param_2;\n      *param_2 = (long)plVar9;\n      plVar9 = param_2;\n    }" { (expression_statement "param_2 = plVar7;" (assignment_expression "param_2 = plVar7" identifier = identifier) ;) (expression_statement "plVar7 = (long *)*param_2;" (assignment_expression "plVar7 = (long *)*param_2" identifier = (cast_expression "(long *)*param_2" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_2" * identifier))) ;) (expression_statement "*param_2 = (long)plVar9;" (assignment_expression "*param_2 = (long)plVar9" (pointer_expression "*param_2" * identifier) = (cast_expression "(long)plVar9" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ;) (expression_statement "plVar9 = param_2;" (assignment_expression "plVar9 = param_2" identifier = identifier) ;) }) while (parenthesized_expression "(plVar7 != (long *)0x0)" ( (binary_expression "plVar7 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) })) (expression_statement "puVar2 = PTR_DAT_002b2710;" (assignment_expression "puVar2 = PTR_DAT_002b2710" identifier = identifier) ;) (if_statement "if (param_1 == (undefined8 *)0x0) {\n    puVar4 = (undefined8 *)FUN_00119720(0x80);\n    *puVar4 = 0;\n    *(undefined4 *)(puVar4 + 1) = 4;\n    **(undefined8 **)(puVar2 + 8) = puVar4;\n    *(undefined8 **)(puVar2 + 8) = puVar4;\n    puVar4[2] = 0;\n    *(undefined4 *)(puVar4 + 3) = 0;\n    puVar4[0xf] = 0;\n    puVar4[8] = 0;\n  }\n  else {\n    __s = (byte *)*param_1;\n    bVar16 = false;\n    bVar17 = __s == (byte *)0x0;\n    if (!bVar17) {\n      lVar10 = 2;\n      pbVar11 = __s;\n      pbVar12 = &DAT_0016c217;\n      do {\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar16 = *pbVar11 < *pbVar12;\n        bVar17 = *pbVar11 == *pbVar12;\n        pbVar11 = pbVar11 + 1;\n        pbVar12 = pbVar12 + 1;\n      } while (bVar17);\n      if ((!bVar16 && !bVar17) == bVar16) {\n        *param_1 = 0;\n      }\n      else {\n        pcVar8 = strpbrk((char *)__s,"?*[");\n        if (pcVar8 == (char *)0x0) {\n          DAT_002b4c30 = 1;\n        }\n      }\n    }\n    puVar4 = (undefined8 *)FUN_00119720(0x80);\n    *puVar4 = 0;\n    *(undefined4 *)(puVar4 + 1) = 4;\n    **(undefined8 **)(puVar2 + 8) = puVar4;\n    uVar1 = *param_1;\n    *(undefined8 **)(puVar2 + 8) = puVar4;\n    puVar4[2] = uVar1;\n    *(uint *)(puVar4 + 3) = (uint)(*(int *)(param_1 + 2) == 1);\n    puVar4[0xf] = param_1[3];\n    puVar4[8] = param_1[1];\n  }" if (parenthesized_expression "(param_1 == (undefined8 *)0x0)" ( (binary_expression "param_1 == (undefined8 *)0x0" identifier == (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    puVar4 = (undefined8 *)FUN_00119720(0x80);\n    *puVar4 = 0;\n    *(undefined4 *)(puVar4 + 1) = 4;\n    **(undefined8 **)(puVar2 + 8) = puVar4;\n    *(undefined8 **)(puVar2 + 8) = puVar4;\n    puVar4[2] = 0;\n    *(undefined4 *)(puVar4 + 3) = 0;\n    puVar4[0xf] = 0;\n    puVar4[8] = 0;\n  }" { (expression_statement "puVar4 = (undefined8 *)FUN_00119720(0x80);" (assignment_expression "puVar4 = (undefined8 *)FUN_00119720(0x80)" identifier = (cast_expression "(undefined8 *)FUN_00119720(0x80)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00119720(0x80)" identifier (argument_list "(0x80)" ( number_literal ))))) ;) (expression_statement "*puVar4 = 0;" (assignment_expression "*puVar4 = 0" (pointer_expression "*puVar4" * identifier) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar4 + 1) = 4;" (assignment_expression "*(undefined4 *)(puVar4 + 1) = 4" (pointer_expression "*(undefined4 *)(puVar4 + 1)" * (cast_expression "(undefined4 *)(puVar4 + 1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + 1)" ( (binary_expression "puVar4 + 1" identifier + number_literal) )))) = number_literal) ;) (expression_statement "**(undefined8 **)(puVar2 + 8) = puVar4;" (assignment_expression "**(undefined8 **)(puVar2 + 8) = puVar4" (pointer_expression "**(undefined8 **)(puVar2 + 8)" * (pointer_expression "*(undefined8 **)(puVar2 + 8)" * (cast_expression "(undefined8 **)(puVar2 + 8)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar2 + 8)" ( (binary_expression "puVar2 + 8" identifier + number_literal) ))))) = identifier) ;) (expression_statement "*(undefined8 **)(puVar2 + 8) = puVar4;" (assignment_expression "*(undefined8 **)(puVar2 + 8) = puVar4" (pointer_expression "*(undefined8 **)(puVar2 + 8)" * (cast_expression "(undefined8 **)(puVar2 + 8)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar2 + 8)" ( (binary_expression "puVar2 + 8" identifier + number_literal) )))) = identifier) ;) (expression_statement "puVar4[2] = 0;" (assignment_expression "puVar4[2] = 0" (subscript_expression "puVar4[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar4 + 3) = 0;" (assignment_expression "*(undefined4 *)(puVar4 + 3) = 0" (pointer_expression "*(undefined4 *)(puVar4 + 3)" * (cast_expression "(undefined4 *)(puVar4 + 3)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + 3)" ( (binary_expression "puVar4 + 3" identifier + number_literal) )))) = number_literal) ;) (expression_statement "puVar4[0xf] = 0;" (assignment_expression "puVar4[0xf] = 0" (subscript_expression "puVar4[0xf]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar4[8] = 0;" (assignment_expression "puVar4[8] = 0" (subscript_expression "puVar4[8]" identifier [ number_literal ]) = number_literal) ;) }) (else_clause "else {\n    __s = (byte *)*param_1;\n    bVar16 = false;\n    bVar17 = __s == (byte *)0x0;\n    if (!bVar17) {\n      lVar10 = 2;\n      pbVar11 = __s;\n      pbVar12 = &DAT_0016c217;\n      do {\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar16 = *pbVar11 < *pbVar12;\n        bVar17 = *pbVar11 == *pbVar12;\n        pbVar11 = pbVar11 + 1;\n        pbVar12 = pbVar12 + 1;\n      } while (bVar17);\n      if ((!bVar16 && !bVar17) == bVar16) {\n        *param_1 = 0;\n      }\n      else {\n        pcVar8 = strpbrk((char *)__s,"?*[");\n        if (pcVar8 == (char *)0x0) {\n          DAT_002b4c30 = 1;\n        }\n      }\n    }\n    puVar4 = (undefined8 *)FUN_00119720(0x80);\n    *puVar4 = 0;\n    *(undefined4 *)(puVar4 + 1) = 4;\n    **(undefined8 **)(puVar2 + 8) = puVar4;\n    uVar1 = *param_1;\n    *(undefined8 **)(puVar2 + 8) = puVar4;\n    puVar4[2] = uVar1;\n    *(uint *)(puVar4 + 3) = (uint)(*(int *)(param_1 + 2) == 1);\n    puVar4[0xf] = param_1[3];\n    puVar4[8] = param_1[1];\n  }" else (compound_statement "{\n    __s = (byte *)*param_1;\n    bVar16 = false;\n    bVar17 = __s == (byte *)0x0;\n    if (!bVar17) {\n      lVar10 = 2;\n      pbVar11 = __s;\n      pbVar12 = &DAT_0016c217;\n      do {\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar16 = *pbVar11 < *pbVar12;\n        bVar17 = *pbVar11 == *pbVar12;\n        pbVar11 = pbVar11 + 1;\n        pbVar12 = pbVar12 + 1;\n      } while (bVar17);\n      if ((!bVar16 && !bVar17) == bVar16) {\n        *param_1 = 0;\n      }\n      else {\n        pcVar8 = strpbrk((char *)__s,"?*[");\n        if (pcVar8 == (char *)0x0) {\n          DAT_002b4c30 = 1;\n        }\n      }\n    }\n    puVar4 = (undefined8 *)FUN_00119720(0x80);\n    *puVar4 = 0;\n    *(undefined4 *)(puVar4 + 1) = 4;\n    **(undefined8 **)(puVar2 + 8) = puVar4;\n    uVar1 = *param_1;\n    *(undefined8 **)(puVar2 + 8) = puVar4;\n    puVar4[2] = uVar1;\n    *(uint *)(puVar4 + 3) = (uint)(*(int *)(param_1 + 2) == 1);\n    puVar4[0xf] = param_1[3];\n    puVar4[8] = param_1[1];\n  }" { (expression_statement "__s = (byte *)*param_1;" (assignment_expression "__s = (byte *)*param_1" identifier = (cast_expression "(byte *)*param_1" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) ;) (expression_statement "bVar16 = false;" (assignment_expression "bVar16 = false" identifier = false) ;) (expression_statement "bVar17 = __s == (byte *)0x0;" (assignment_expression "bVar17 = __s == (byte *)0x0" identifier = (binary_expression "__s == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ;) (if_statement "if (!bVar17) {\n      lVar10 = 2;\n      pbVar11 = __s;\n      pbVar12 = &DAT_0016c217;\n      do {\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar16 = *pbVar11 < *pbVar12;\n        bVar17 = *pbVar11 == *pbVar12;\n        pbVar11 = pbVar11 + 1;\n        pbVar12 = pbVar12 + 1;\n      } while (bVar17);\n      if ((!bVar16 && !bVar17) == bVar16) {\n        *param_1 = 0;\n      }\n      else {\n        pcVar8 = strpbrk((char *)__s,"?*[");\n        if (pcVar8 == (char *)0x0) {\n          DAT_002b4c30 = 1;\n        }\n      }\n    }" if (parenthesized_expression "(!bVar17)" ( (unary_expression "!bVar17" ! identifier) )) (compound_statement "{\n      lVar10 = 2;\n      pbVar11 = __s;\n      pbVar12 = &DAT_0016c217;\n      do {\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar16 = *pbVar11 < *pbVar12;\n        bVar17 = *pbVar11 == *pbVar12;\n        pbVar11 = pbVar11 + 1;\n        pbVar12 = pbVar12 + 1;\n      } while (bVar17);\n      if ((!bVar16 && !bVar17) == bVar16) {\n        *param_1 = 0;\n      }\n      else {\n        pcVar8 = strpbrk((char *)__s,"?*[");\n        if (pcVar8 == (char *)0x0) {\n          DAT_002b4c30 = 1;\n        }\n      }\n    }" { (expression_statement "lVar10 = 2;" (assignment_expression "lVar10 = 2" identifier = number_literal) ;) (expression_statement "pbVar11 = __s;" (assignment_expression "pbVar11 = __s" identifier = identifier) ;) (expression_statement "pbVar12 = &DAT_0016c217;" (assignment_expression "pbVar12 = &DAT_0016c217" identifier = (pointer_expression "&DAT_0016c217" & identifier)) ;) (do_statement "do {\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar16 = *pbVar11 < *pbVar12;\n        bVar17 = *pbVar11 == *pbVar12;\n        pbVar11 = pbVar11 + 1;\n        pbVar12 = pbVar12 + 1;\n      } while (bVar17);" do (compound_statement "{\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar16 = *pbVar11 < *pbVar12;\n        bVar17 = *pbVar11 == *pbVar12;\n        pbVar11 = pbVar11 + 1;\n        pbVar12 = pbVar12 + 1;\n      }" { (if_statement "if (lVar10 == 0) break;" if (parenthesized_expression "(lVar10 == 0)" ( (binary_expression "lVar10 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar10 = lVar10 + -1;" (assignment_expression "lVar10 = lVar10 + -1" identifier = (binary_expression "lVar10 + -1" identifier + number_literal)) ;) (expression_statement "bVar16 = *pbVar11 < *pbVar12;" (assignment_expression "bVar16 = *pbVar11 < *pbVar12" identifier = (binary_expression "*pbVar11 < *pbVar12" (pointer_expression "*pbVar11" * identifier) < (pointer_expression "*pbVar12" * identifier))) ;) (expression_statement "bVar17 = *pbVar11 == *pbVar12;" (assignment_expression "bVar17 = *pbVar11 == *pbVar12" identifier = (binary_expression "*pbVar11 == *pbVar12" (pointer_expression "*pbVar11" * identifier) == (pointer_expression "*pbVar12" * identifier))) ;) (expression_statement "pbVar11 = pbVar11 + 1;" (assignment_expression "pbVar11 = pbVar11 + 1" identifier = (binary_expression "pbVar11 + 1" identifier + number_literal)) ;) (expression_statement "pbVar12 = pbVar12 + 1;" (assignment_expression "pbVar12 = pbVar12 + 1" identifier = (binary_expression "pbVar12 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(bVar17)" ( identifier )) ;) (if_statement "if ((!bVar16 && !bVar17) == bVar16) {\n        *param_1 = 0;\n      }\n      else {\n        pcVar8 = strpbrk((char *)__s,"?*[");\n        if (pcVar8 == (char *)0x0) {\n          DAT_002b4c30 = 1;\n        }\n      }" if (parenthesized_expression "((!bVar16 && !bVar17) == bVar16)" ( (binary_expression "(!bVar16 && !bVar17) == bVar16" (parenthesized_expression "(!bVar16 && !bVar17)" ( (binary_expression "!bVar16 && !bVar17" (unary_expression "!bVar16" ! identifier) && (unary_expression "!bVar17" ! identifier)) )) == identifier) )) (compound_statement "{\n        *param_1 = 0;\n      }" { (expression_statement "*param_1 = 0;" (assignment_expression "*param_1 = 0" (pointer_expression "*param_1" * identifier) = number_literal) ;) }) (else_clause "else {\n        pcVar8 = strpbrk((char *)__s,"?*[");\n        if (pcVar8 == (char *)0x0) {\n          DAT_002b4c30 = 1;\n        }\n      }" else (compound_statement "{\n        pcVar8 = strpbrk((char *)__s,"?*[");\n        if (pcVar8 == (char *)0x0) {\n          DAT_002b4c30 = 1;\n        }\n      }" { (expression_statement "pcVar8 = strpbrk((char *)__s,"?*[");" (assignment_expression "pcVar8 = strpbrk((char *)__s,"?*[")" identifier = (call_expression "strpbrk((char *)__s,"?*[")" identifier (argument_list "((char *)__s,"?*[")" ( (cast_expression "(char *)__s" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , (string_literal ""?*["" " string_content ") )))) ;) (if_statement "if (pcVar8 == (char *)0x0) {\n          DAT_002b4c30 = 1;\n        }" if (parenthesized_expression "(pcVar8 == (char *)0x0)" ( (binary_expression "pcVar8 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          DAT_002b4c30 = 1;\n        }" { (expression_statement "DAT_002b4c30 = 1;" (assignment_expression "DAT_002b4c30 = 1" identifier = number_literal) ;) })) }))) })) (expression_statement "puVar4 = (undefined8 *)FUN_00119720(0x80);" (assignment_expression "puVar4 = (undefined8 *)FUN_00119720(0x80)" identifier = (cast_expression "(undefined8 *)FUN_00119720(0x80)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00119720(0x80)" identifier (argument_list "(0x80)" ( number_literal ))))) ;) (expression_statement "*puVar4 = 0;" (assignment_expression "*puVar4 = 0" (pointer_expression "*puVar4" * identifier) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar4 + 1) = 4;" (assignment_expression "*(undefined4 *)(puVar4 + 1) = 4" (pointer_expression "*(undefined4 *)(puVar4 + 1)" * (cast_expression "(undefined4 *)(puVar4 + 1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + 1)" ( (binary_expression "puVar4 + 1" identifier + number_literal) )))) = number_literal) ;) (expression_statement "**(undefined8 **)(puVar2 + 8) = puVar4;" (assignment_expression "**(undefined8 **)(puVar2 + 8) = puVar4" (pointer_expression "**(undefined8 **)(puVar2 + 8)" * (pointer_expression "*(undefined8 **)(puVar2 + 8)" * (cast_expression "(undefined8 **)(puVar2 + 8)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar2 + 8)" ( (binary_expression "puVar2 + 8" identifier + number_literal) ))))) = identifier) ;) (expression_statement "uVar1 = *param_1;" (assignment_expression "uVar1 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "*(undefined8 **)(puVar2 + 8) = puVar4;" (assignment_expression "*(undefined8 **)(puVar2 + 8) = puVar4" (pointer_expression "*(undefined8 **)(puVar2 + 8)" * (cast_expression "(undefined8 **)(puVar2 + 8)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar2 + 8)" ( (binary_expression "puVar2 + 8" identifier + number_literal) )))) = identifier) ;) (expression_statement "puVar4[2] = uVar1;" (assignment_expression "puVar4[2] = uVar1" (subscript_expression "puVar4[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(uint *)(puVar4 + 3) = (uint)(*(int *)(param_1 + 2) == 1);" (assignment_expression "*(uint *)(puVar4 + 3) = (uint)(*(int *)(param_1 + 2) == 1)" (pointer_expression "*(uint *)(puVar4 + 3)" * (cast_expression "(uint *)(puVar4 + 3)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + 3)" ( (binary_expression "puVar4 + 3" identifier + number_literal) )))) = (call_expression "(uint)(*(int *)(param_1 + 2) == 1)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*(int *)(param_1 + 2) == 1)" ( (binary_expression "*(int *)(param_1 + 2) == 1" (pointer_expression "*(int *)(param_1 + 2)" * (cast_expression "(int *)(param_1 + 2)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 2)" ( (binary_expression "param_1 + 2" identifier + number_literal) )))) == number_literal) )))) ;) (expression_statement "puVar4[0xf] = param_1[3];" (assignment_expression "puVar4[0xf] = param_1[3]" (subscript_expression "puVar4[0xf]" identifier [ number_literal ]) = (subscript_expression "param_1[3]" identifier [ number_literal ])) ;) (expression_statement "puVar4[8] = param_1[1];" (assignment_expression "puVar4[8] = param_1[1]" (subscript_expression "puVar4[8]" identifier [ number_literal ]) = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) }))) (expression_statement "puVar4[4] = param_2;" (assignment_expression "puVar4[4] = param_2" (subscript_expression "puVar4[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar4[7] = puVar4 + 6;" (assignment_expression "puVar4[7] = puVar4 + 6" (subscript_expression "puVar4[7]" identifier [ number_literal ]) = (binary_expression "puVar4 + 6" identifier + number_literal)) ;) (expression_statement "*(undefined4 *)(puVar4 + 5) = param_3;" (assignment_expression "*(undefined4 *)(puVar4 + 5) = param_3" (pointer_expression "*(undefined4 *)(puVar4 + 5)" * (cast_expression "(undefined4 *)(puVar4 + 5)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + 5)" ( (binary_expression "puVar4 + 5" identifier + number_literal) )))) = identifier) ;) (expression_statement "puVar4[6] = 0;" (assignment_expression "puVar4[6] = 0" (subscript_expression "puVar4[6]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar4[9] = FUN_00118ca0;" (assignment_expression "puVar4[9] = FUN_00118ca0" (subscript_expression "puVar4[9]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar4[10] = 0;" (assignment_expression "puVar4[10] = 0" (subscript_expression "puVar4[10]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar4[0xb] = 0;" (assignment_expression "puVar4[0xb] = 0" (subscript_expression "puVar4[0xb]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar4[0xc] = 0;" (assignment_expression "puVar4[0xc] = 0" (subscript_expression "puVar4[0xc]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar4[0xd] = 0;" (assignment_expression "puVar4[0xd] = 0" (subscript_expression "puVar4[0xd]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar4[0xe] = 0;" (assignment_expression "puVar4[0xe] = 0" (subscript_expression "puVar4[0xe]" identifier [ number_literal ]) = number_literal) ;) (if_statement "if ((param_2 != (long *)0x0) && (local_48 = (char *)param_2[1], local_48 != (char *)0x0)) {\n    local_4c = 0;\n    iVar13 = 1;\n    plVar7 = param_2;\n    pcVar8 = local_48;\n    while( true ) {\n      pcVar5 = strpbrk(pcVar8,"?*[");\n      if (pcVar5 != (char *)0x0) {\n        sVar6 = strcspn(pcVar8,"*?[");\n        if (sVar6 < 4) {\n          return;\n        }\n        if (pcVar8[sVar6] != '*') {\n          return;\n        }\n        if (pcVar8[sVar6 + 1] != '\0') {\n          return;\n        }\n        local_4c = local_4c + 1;\n      }\n      plVar7 = (long *)*plVar7;\n      if (plVar7 == (long *)0x0) break;\n      pcVar8 = (char *)plVar7[1];\n      iVar13 = iVar13 + 1;\n      if (pcVar8 == (char *)0x0) {\n        return;\n      }\n    }\n    plVar7 = param_2;\n    if (iVar13 < 5) {\n      while (plVar9 = (long *)*plVar7, plVar9 != (long *)0x0) {\n        pcVar8 = (char *)plVar7[1];\n        sVar6 = strcspn(pcVar8,"?*[");\n        uVar14 = sVar6 + 1;\n        plVar15 = plVar9;\n        if (pcVar8[sVar6] != '\0') {\n          uVar14 = sVar6;\n        }\n        do {\n          pcVar5 = (char *)plVar15[1];\n          sVar6 = strcspn(pcVar5,"?*[");\n          __n = sVar6 + (pcVar5[sVar6] == '\0');\n          if (uVar14 <= __n) {\n            __n = uVar14;\n          }\n          iVar3 = memcmp(pcVar8,pcVar5,__n);\n          if (iVar3 == 0) {\n            return;\n          }\n          plVar15 = (long *)*plVar15;\n          plVar7 = plVar9;\n        } while (plVar15 != (long *)0x0);\n      }\n      local_4c = local_4c + iVar13 * 0x100;\n      if (local_4c == 0x201) {\n        puVar4[9] = FUN_00119070;\n      }\n      else if (local_4c < 0x202) {\n        if (local_4c == 0x100) {\n          puVar4[9] = FUN_00119190;\n        }\n        else {\n          if (local_4c != 0x101) {\n            return;\n          }\n          puVar4[9] = FUN_00118c20;\n        }\n      }\n      else if (local_4c == 0x302) {\n        puVar4[9] = FUN_00118f20;\n      }\n      else {\n        if (local_4c != 0x402) {\n          return;\n        }\n        puVar4[9] = FUN_00118d60;\n      }\n      iVar13 = 0;\n      pcVar8 = local_48;\n      plVar7 = param_2;\n      while( true ) {\n        pcVar8 = strpbrk(pcVar8,"?*[");\n        if (pcVar8 == (char *)0x0) {\n          lVar10 = (long)iVar13;\n          iVar13 = iVar13 + 1;\n          puVar4[lVar10 + 10] = plVar7;\n        }\n        plVar7 = (long *)*plVar7;\n        if (plVar7 == (long *)0x0) break;\n        pcVar8 = (char *)plVar7[1];\n      }\n      while( true ) {\n        pcVar8 = strpbrk(local_48,"?*[");\n        if (pcVar8 != (char *)0x0) {\n          lVar10 = (long)iVar13;\n          iVar13 = iVar13 + 1;\n          puVar4[lVar10 + 10] = param_2;\n        }\n        param_2 = (long *)*param_2;\n        if (param_2 == (long *)0x0) break;\n        local_48 = (char *)param_2[1];\n      }\n    }\n  }" if (parenthesized_expression "((param_2 != (long *)0x0) && (local_48 = (char *)param_2[1], local_48 != (char *)0x0))" ( (binary_expression "(param_2 != (long *)0x0) && (local_48 = (char *)param_2[1], local_48 != (char *)0x0)" (parenthesized_expression "(param_2 != (long *)0x0)" ( (binary_expression "param_2 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(local_48 = (char *)param_2[1], local_48 != (char *)0x0)" ( (comma_expression "local_48 = (char *)param_2[1], local_48 != (char *)0x0" (assignment_expression "local_48 = (char *)param_2[1]" identifier = (cast_expression "(char *)param_2[1]" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[1]" identifier [ number_literal ]))) , (binary_expression "local_48 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (compound_statement "{\n    local_4c = 0;\n    iVar13 = 1;\n    plVar7 = param_2;\n    pcVar8 = local_48;\n    while( true ) {\n      pcVar5 = strpbrk(pcVar8,"?*[");\n      if (pcVar5 != (char *)0x0) {\n        sVar6 = strcspn(pcVar8,"*?[");\n        if (sVar6 < 4) {\n          return;\n        }\n        if (pcVar8[sVar6] != '*') {\n          return;\n        }\n        if (pcVar8[sVar6 + 1] != '\0') {\n          return;\n        }\n        local_4c = local_4c + 1;\n      }\n      plVar7 = (long *)*plVar7;\n      if (plVar7 == (long *)0x0) break;\n      pcVar8 = (char *)plVar7[1];\n      iVar13 = iVar13 + 1;\n      if (pcVar8 == (char *)0x0) {\n        return;\n      }\n    }\n    plVar7 = param_2;\n    if (iVar13 < 5) {\n      while (plVar9 = (long *)*plVar7, plVar9 != (long *)0x0) {\n        pcVar8 = (char *)plVar7[1];\n        sVar6 = strcspn(pcVar8,"?*[");\n        uVar14 = sVar6 + 1;\n        plVar15 = plVar9;\n        if (pcVar8[sVar6] != '\0') {\n          uVar14 = sVar6;\n        }\n        do {\n          pcVar5 = (char *)plVar15[1];\n          sVar6 = strcspn(pcVar5,"?*[");\n          __n = sVar6 + (pcVar5[sVar6] == '\0');\n          if (uVar14 <= __n) {\n            __n = uVar14;\n          }\n          iVar3 = memcmp(pcVar8,pcVar5,__n);\n          if (iVar3 == 0) {\n            return;\n          }\n          plVar15 = (long *)*plVar15;\n          plVar7 = plVar9;\n        } while (plVar15 != (long *)0x0);\n      }\n      local_4c = local_4c + iVar13 * 0x100;\n      if (local_4c == 0x201) {\n        puVar4[9] = FUN_00119070;\n      }\n      else if (local_4c < 0x202) {\n        if (local_4c == 0x100) {\n          puVar4[9] = FUN_00119190;\n        }\n        else {\n          if (local_4c != 0x101) {\n            return;\n          }\n          puVar4[9] = FUN_00118c20;\n        }\n      }\n      else if (local_4c == 0x302) {\n        puVar4[9] = FUN_00118f20;\n      }\n      else {\n        if (local_4c != 0x402) {\n          return;\n        }\n        puVar4[9] = FUN_00118d60;\n      }\n      iVar13 = 0;\n      pcVar8 = local_48;\n      plVar7 = param_2;\n      while( true ) {\n        pcVar8 = strpbrk(pcVar8,"?*[");\n        if (pcVar8 == (char *)0x0) {\n          lVar10 = (long)iVar13;\n          iVar13 = iVar13 + 1;\n          puVar4[lVar10 + 10] = plVar7;\n        }\n        plVar7 = (long *)*plVar7;\n        if (plVar7 == (long *)0x0) break;\n        pcVar8 = (char *)plVar7[1];\n      }\n      while( true ) {\n        pcVar8 = strpbrk(local_48,"?*[");\n        if (pcVar8 != (char *)0x0) {\n          lVar10 = (long)iVar13;\n          iVar13 = iVar13 + 1;\n          puVar4[lVar10 + 10] = param_2;\n        }\n        param_2 = (long *)*param_2;\n        if (param_2 == (long *)0x0) break;\n        local_48 = (char *)param_2[1];\n      }\n    }\n  }" { (expression_statement "local_4c = 0;" (assignment_expression "local_4c = 0" identifier = number_literal) ;) (expression_statement "iVar13 = 1;" (assignment_expression "iVar13 = 1" identifier = number_literal) ;) (expression_statement "plVar7 = param_2;" (assignment_expression "plVar7 = param_2" identifier = identifier) ;) (expression_statement "pcVar8 = local_48;" (assignment_expression "pcVar8 = local_48" identifier = identifier) ;) (while_statement "while( true ) {\n      pcVar5 = strpbrk(pcVar8,"?*[");\n      if (pcVar5 != (char *)0x0) {\n        sVar6 = strcspn(pcVar8,"*?[");\n        if (sVar6 < 4) {\n          return;\n        }\n        if (pcVar8[sVar6] != '*') {\n          return;\n        }\n        if (pcVar8[sVar6 + 1] != '\0') {\n          return;\n        }\n        local_4c = local_4c + 1;\n      }\n      plVar7 = (long *)*plVar7;\n      if (plVar7 == (long *)0x0) break;\n      pcVar8 = (char *)plVar7[1];\n      iVar13 = iVar13 + 1;\n      if (pcVar8 == (char *)0x0) {\n        return;\n      }\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      pcVar5 = strpbrk(pcVar8,"?*[");\n      if (pcVar5 != (char *)0x0) {\n        sVar6 = strcspn(pcVar8,"*?[");\n        if (sVar6 < 4) {\n          return;\n        }\n        if (pcVar8[sVar6] != '*') {\n          return;\n        }\n        if (pcVar8[sVar6 + 1] != '\0') {\n          return;\n        }\n        local_4c = local_4c + 1;\n      }\n      plVar7 = (long *)*plVar7;\n      if (plVar7 == (long *)0x0) break;\n      pcVar8 = (char *)plVar7[1];\n      iVar13 = iVar13 + 1;\n      if (pcVar8 == (char *)0x0) {\n        return;\n      }\n    }" { (expression_statement "pcVar5 = strpbrk(pcVar8,"?*[");" (assignment_expression "pcVar5 = strpbrk(pcVar8,"?*[")" identifier = (call_expression "strpbrk(pcVar8,"?*[")" identifier (argument_list "(pcVar8,"?*[")" ( identifier , (string_literal ""?*["" " string_content ") )))) ;) (if_statement "if (pcVar5 != (char *)0x0) {\n        sVar6 = strcspn(pcVar8,"*?[");\n        if (sVar6 < 4) {\n          return;\n        }\n        if (pcVar8[sVar6] != '*') {\n          return;\n        }\n        if (pcVar8[sVar6 + 1] != '\0') {\n          return;\n        }\n        local_4c = local_4c + 1;\n      }" if (parenthesized_expression "(pcVar5 != (char *)0x0)" ( (binary_expression "pcVar5 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        sVar6 = strcspn(pcVar8,"*?[");\n        if (sVar6 < 4) {\n          return;\n        }\n        if (pcVar8[sVar6] != '*') {\n          return;\n        }\n        if (pcVar8[sVar6 + 1] != '\0') {\n          return;\n        }\n        local_4c = local_4c + 1;\n      }" { (expression_statement "sVar6 = strcspn(pcVar8,"*?[");" (assignment_expression "sVar6 = strcspn(pcVar8,"*?[")" identifier = (call_expression "strcspn(pcVar8,"*?[")" identifier (argument_list "(pcVar8,"*?[")" ( identifier , (string_literal ""*?["" " string_content ") )))) ;) (if_statement "if (sVar6 < 4) {\n          return;\n        }" if (parenthesized_expression "(sVar6 < 4)" ( (binary_expression "sVar6 < 4" identifier < number_literal) )) (compound_statement "{\n          return;\n        }" { (return_statement "return;" return ;) })) (if_statement "if (pcVar8[sVar6] != '*') {\n          return;\n        }" if (parenthesized_expression "(pcVar8[sVar6] != '*')" ( (binary_expression "pcVar8[sVar6] != '*'" (subscript_expression "pcVar8[sVar6]" identifier [ identifier ]) != (char_literal "'*'" ' character ')) )) (compound_statement "{\n          return;\n        }" { (return_statement "return;" return ;) })) (if_statement "if (pcVar8[sVar6 + 1] != '\0') {\n          return;\n        }" if (parenthesized_expression "(pcVar8[sVar6 + 1] != '\0')" ( (binary_expression "pcVar8[sVar6 + 1] != '\0'" (subscript_expression "pcVar8[sVar6 + 1]" identifier [ (binary_expression "sVar6 + 1" identifier + number_literal) ]) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          return;\n        }" { (return_statement "return;" return ;) })) (expression_statement "local_4c = local_4c + 1;" (assignment_expression "local_4c = local_4c + 1" identifier = (binary_expression "local_4c + 1" identifier + number_literal)) ;) })) (expression_statement "plVar7 = (long *)*plVar7;" (assignment_expression "plVar7 = (long *)*plVar7" identifier = (cast_expression "(long *)*plVar7" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*plVar7" * identifier))) ;) (if_statement "if (plVar7 == (long *)0x0) break;" if (parenthesized_expression "(plVar7 == (long *)0x0)" ( (binary_expression "plVar7 == (long *)0x0" identifier == (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (break_statement "break;" break ;)) (expression_statement "pcVar8 = (char *)plVar7[1];" (assignment_expression "pcVar8 = (char *)plVar7[1]" identifier = (cast_expression "(char *)plVar7[1]" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "plVar7[1]" identifier [ number_literal ]))) ;) (expression_statement "iVar13 = iVar13 + 1;" (assignment_expression "iVar13 = iVar13 + 1" identifier = (binary_expression "iVar13 + 1" identifier + number_literal)) ;) (if_statement "if (pcVar8 == (char *)0x0) {\n        return;\n      }" if (parenthesized_expression "(pcVar8 == (char *)0x0)" ( (binary_expression "pcVar8 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        return;\n      }" { (return_statement "return;" return ;) })) })) (expression_statement "plVar7 = param_2;" (assignment_expression "plVar7 = param_2" identifier = identifier) ;) (if_statement "if (iVar13 < 5) {\n      while (plVar9 = (long *)*plVar7, plVar9 != (long *)0x0) {\n        pcVar8 = (char *)plVar7[1];\n        sVar6 = strcspn(pcVar8,"?*[");\n        uVar14 = sVar6 + 1;\n        plVar15 = plVar9;\n        if (pcVar8[sVar6] != '\0') {\n          uVar14 = sVar6;\n        }\n        do {\n          pcVar5 = (char *)plVar15[1];\n          sVar6 = strcspn(pcVar5,"?*[");\n          __n = sVar6 + (pcVar5[sVar6] == '\0');\n          if (uVar14 <= __n) {\n            __n = uVar14;\n          }\n          iVar3 = memcmp(pcVar8,pcVar5,__n);\n          if (iVar3 == 0) {\n            return;\n          }\n          plVar15 = (long *)*plVar15;\n          plVar7 = plVar9;\n        } while (plVar15 != (long *)0x0);\n      }\n      local_4c = local_4c + iVar13 * 0x100;\n      if (local_4c == 0x201) {\n        puVar4[9] = FUN_00119070;\n      }\n      else if (local_4c < 0x202) {\n        if (local_4c == 0x100) {\n          puVar4[9] = FUN_00119190;\n        }\n        else {\n          if (local_4c != 0x101) {\n            return;\n          }\n          puVar4[9] = FUN_00118c20;\n        }\n      }\n      else if (local_4c == 0x302) {\n        puVar4[9] = FUN_00118f20;\n      }\n      else {\n        if (local_4c != 0x402) {\n          return;\n        }\n        puVar4[9] = FUN_00118d60;\n      }\n      iVar13 = 0;\n      pcVar8 = local_48;\n      plVar7 = param_2;\n      while( true ) {\n        pcVar8 = strpbrk(pcVar8,"?*[");\n        if (pcVar8 == (char *)0x0) {\n          lVar10 = (long)iVar13;\n          iVar13 = iVar13 + 1;\n          puVar4[lVar10 + 10] = plVar7;\n        }\n        plVar7 = (long *)*plVar7;\n        if (plVar7 == (long *)0x0) break;\n        pcVar8 = (char *)plVar7[1];\n      }\n      while( true ) {\n        pcVar8 = strpbrk(local_48,"?*[");\n        if (pcVar8 != (char *)0x0) {\n          lVar10 = (long)iVar13;\n          iVar13 = iVar13 + 1;\n          puVar4[lVar10 + 10] = param_2;\n        }\n        param_2 = (long *)*param_2;\n        if (param_2 == (long *)0x0) break;\n        local_48 = (char *)param_2[1];\n      }\n    }" if (parenthesized_expression "(iVar13 < 5)" ( (binary_expression "iVar13 < 5" identifier < number_literal) )) (compound_statement "{\n      while (plVar9 = (long *)*plVar7, plVar9 != (long *)0x0) {\n        pcVar8 = (char *)plVar7[1];\n        sVar6 = strcspn(pcVar8,"?*[");\n        uVar14 = sVar6 + 1;\n        plVar15 = plVar9;\n        if (pcVar8[sVar6] != '\0') {\n          uVar14 = sVar6;\n        }\n        do {\n          pcVar5 = (char *)plVar15[1];\n          sVar6 = strcspn(pcVar5,"?*[");\n          __n = sVar6 + (pcVar5[sVar6] == '\0');\n          if (uVar14 <= __n) {\n            __n = uVar14;\n          }\n          iVar3 = memcmp(pcVar8,pcVar5,__n);\n          if (iVar3 == 0) {\n            return;\n          }\n          plVar15 = (long *)*plVar15;\n          plVar7 = plVar9;\n        } while (plVar15 != (long *)0x0);\n      }\n      local_4c = local_4c + iVar13 * 0x100;\n      if (local_4c == 0x201) {\n        puVar4[9] = FUN_00119070;\n      }\n      else if (local_4c < 0x202) {\n        if (local_4c == 0x100) {\n          puVar4[9] = FUN_00119190;\n        }\n        else {\n          if (local_4c != 0x101) {\n            return;\n          }\n          puVar4[9] = FUN_00118c20;\n        }\n      }\n      else if (local_4c == 0x302) {\n        puVar4[9] = FUN_00118f20;\n      }\n      else {\n        if (local_4c != 0x402) {\n          return;\n        }\n        puVar4[9] = FUN_00118d60;\n      }\n      iVar13 = 0;\n      pcVar8 = local_48;\n      plVar7 = param_2;\n      while( true ) {\n        pcVar8 = strpbrk(pcVar8,"?*[");\n        if (pcVar8 == (char *)0x0) {\n          lVar10 = (long)iVar13;\n          iVar13 = iVar13 + 1;\n          puVar4[lVar10 + 10] = plVar7;\n        }\n        plVar7 = (long *)*plVar7;\n        if (plVar7 == (long *)0x0) break;\n        pcVar8 = (char *)plVar7[1];\n      }\n      while( true ) {\n        pcVar8 = strpbrk(local_48,"?*[");\n        if (pcVar8 != (char *)0x0) {\n          lVar10 = (long)iVar13;\n          iVar13 = iVar13 + 1;\n          puVar4[lVar10 + 10] = param_2;\n        }\n        param_2 = (long *)*param_2;\n        if (param_2 == (long *)0x0) break;\n        local_48 = (char *)param_2[1];\n      }\n    }" { (while_statement "while (plVar9 = (long *)*plVar7, plVar9 != (long *)0x0) {\n        pcVar8 = (char *)plVar7[1];\n        sVar6 = strcspn(pcVar8,"?*[");\n        uVar14 = sVar6 + 1;\n        plVar15 = plVar9;\n        if (pcVar8[sVar6] != '\0') {\n          uVar14 = sVar6;\n        }\n        do {\n          pcVar5 = (char *)plVar15[1];\n          sVar6 = strcspn(pcVar5,"?*[");\n          __n = sVar6 + (pcVar5[sVar6] == '\0');\n          if (uVar14 <= __n) {\n            __n = uVar14;\n          }\n          iVar3 = memcmp(pcVar8,pcVar5,__n);\n          if (iVar3 == 0) {\n            return;\n          }\n          plVar15 = (long *)*plVar15;\n          plVar7 = plVar9;\n        } while (plVar15 != (long *)0x0);\n      }" while (parenthesized_expression "(plVar9 = (long *)*plVar7, plVar9 != (long *)0x0)" ( (comma_expression "plVar9 = (long *)*plVar7, plVar9 != (long *)0x0" (assignment_expression "plVar9 = (long *)*plVar7" identifier = (cast_expression "(long *)*plVar7" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*plVar7" * identifier))) , (binary_expression "plVar9 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal))) )) (compound_statement "{\n        pcVar8 = (char *)plVar7[1];\n        sVar6 = strcspn(pcVar8,"?*[");\n        uVar14 = sVar6 + 1;\n        plVar15 = plVar9;\n        if (pcVar8[sVar6] != '\0') {\n          uVar14 = sVar6;\n        }\n        do {\n          pcVar5 = (char *)plVar15[1];\n          sVar6 = strcspn(pcVar5,"?*[");\n          __n = sVar6 + (pcVar5[sVar6] == '\0');\n          if (uVar14 <= __n) {\n            __n = uVar14;\n          }\n          iVar3 = memcmp(pcVar8,pcVar5,__n);\n          if (iVar3 == 0) {\n            return;\n          }\n          plVar15 = (long *)*plVar15;\n          plVar7 = plVar9;\n        } while (plVar15 != (long *)0x0);\n      }" { (expression_statement "pcVar8 = (char *)plVar7[1];" (assignment_expression "pcVar8 = (char *)plVar7[1]" identifier = (cast_expression "(char *)plVar7[1]" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "plVar7[1]" identifier [ number_literal ]))) ;) (expression_statement "sVar6 = strcspn(pcVar8,"?*[");" (assignment_expression "sVar6 = strcspn(pcVar8,"?*[")" identifier = (call_expression "strcspn(pcVar8,"?*[")" identifier (argument_list "(pcVar8,"?*[")" ( identifier , (string_literal ""?*["" " string_content ") )))) ;) (expression_statement "uVar14 = sVar6 + 1;" (assignment_expression "uVar14 = sVar6 + 1" identifier = (binary_expression "sVar6 + 1" identifier + number_literal)) ;) (expression_statement "plVar15 = plVar9;" (assignment_expression "plVar15 = plVar9" identifier = identifier) ;) (if_statement "if (pcVar8[sVar6] != '\0') {\n          uVar14 = sVar6;\n        }" if (parenthesized_expression "(pcVar8[sVar6] != '\0')" ( (binary_expression "pcVar8[sVar6] != '\0'" (subscript_expression "pcVar8[sVar6]" identifier [ identifier ]) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          uVar14 = sVar6;\n        }" { (expression_statement "uVar14 = sVar6;" (assignment_expression "uVar14 = sVar6" identifier = identifier) ;) })) (do_statement "do {\n          pcVar5 = (char *)plVar15[1];\n          sVar6 = strcspn(pcVar5,"?*[");\n          __n = sVar6 + (pcVar5[sVar6] == '\0');\n          if (uVar14 <= __n) {\n            __n = uVar14;\n          }\n          iVar3 = memcmp(pcVar8,pcVar5,__n);\n          if (iVar3 == 0) {\n            return;\n          }\n          plVar15 = (long *)*plVar15;\n          plVar7 = plVar9;\n        } while (plVar15 != (long *)0x0);" do (compound_statement "{\n          pcVar5 = (char *)plVar15[1];\n          sVar6 = strcspn(pcVar5,"?*[");\n          __n = sVar6 + (pcVar5[sVar6] == '\0');\n          if (uVar14 <= __n) {\n            __n = uVar14;\n          }\n          iVar3 = memcmp(pcVar8,pcVar5,__n);\n          if (iVar3 == 0) {\n            return;\n          }\n          plVar15 = (long *)*plVar15;\n          plVar7 = plVar9;\n        }" { (expression_statement "pcVar5 = (char *)plVar15[1];" (assignment_expression "pcVar5 = (char *)plVar15[1]" identifier = (cast_expression "(char *)plVar15[1]" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "plVar15[1]" identifier [ number_literal ]))) ;) (expression_statement "sVar6 = strcspn(pcVar5,"?*[");" (assignment_expression "sVar6 = strcspn(pcVar5,"?*[")" identifier = (call_expression "strcspn(pcVar5,"?*[")" identifier (argument_list "(pcVar5,"?*[")" ( identifier , (string_literal ""?*["" " string_content ") )))) ;) (expression_statement "__n = sVar6 + (pcVar5[sVar6] == '\0');" (assignment_expression "__n = sVar6 + (pcVar5[sVar6] == '\0')" identifier = (binary_expression "sVar6 + (pcVar5[sVar6] == '\0')" identifier + (parenthesized_expression "(pcVar5[sVar6] == '\0')" ( (binary_expression "pcVar5[sVar6] == '\0'" (subscript_expression "pcVar5[sVar6]" identifier [ identifier ]) == (char_literal "'\0'" ' escape_sequence ')) )))) ;) (if_statement "if (uVar14 <= __n) {\n            __n = uVar14;\n          }" if (parenthesized_expression "(uVar14 <= __n)" ( (binary_expression "uVar14 <= __n" identifier <= identifier) )) (compound_statement "{\n            __n = uVar14;\n          }" { (expression_statement "__n = uVar14;" (assignment_expression "__n = uVar14" identifier = identifier) ;) })) (expression_statement "iVar3 = memcmp(pcVar8,pcVar5,__n);" (assignment_expression "iVar3 = memcmp(pcVar8,pcVar5,__n)" identifier = (call_expression "memcmp(pcVar8,pcVar5,__n)" identifier (argument_list "(pcVar8,pcVar5,__n)" ( identifier , identifier , identifier )))) ;) (if_statement "if (iVar3 == 0) {\n            return;\n          }" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (compound_statement "{\n            return;\n          }" { (return_statement "return;" return ;) })) (expression_statement "plVar15 = (long *)*plVar15;" (assignment_expression "plVar15 = (long *)*plVar15" identifier = (cast_expression "(long *)*plVar15" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*plVar15" * identifier))) ;) (expression_statement "plVar7 = plVar9;" (assignment_expression "plVar7 = plVar9" identifier = identifier) ;) }) while (parenthesized_expression "(plVar15 != (long *)0x0)" ( (binary_expression "plVar15 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) })) (expression_statement "local_4c = local_4c + iVar13 * 0x100;" (assignment_expression "local_4c = local_4c + iVar13 * 0x100" identifier = (binary_expression "local_4c + iVar13 * 0x100" identifier + (binary_expression "iVar13 * 0x100" identifier * number_literal))) ;) (if_statement "if (local_4c == 0x201) {\n        puVar4[9] = FUN_00119070;\n      }\n      else if (local_4c < 0x202) {\n        if (local_4c == 0x100) {\n          puVar4[9] = FUN_00119190;\n        }\n        else {\n          if (local_4c != 0x101) {\n            return;\n          }\n          puVar4[9] = FUN_00118c20;\n        }\n      }\n      else if (local_4c == 0x302) {\n        puVar4[9] = FUN_00118f20;\n      }\n      else {\n        if (local_4c != 0x402) {\n          return;\n        }\n        puVar4[9] = FUN_00118d60;\n      }" if (parenthesized_expression "(local_4c == 0x201)" ( (binary_expression "local_4c == 0x201" identifier == number_literal) )) (compound_statement "{\n        puVar4[9] = FUN_00119070;\n      }" { (expression_statement "puVar4[9] = FUN_00119070;" (assignment_expression "puVar4[9] = FUN_00119070" (subscript_expression "puVar4[9]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else if (local_4c < 0x202) {\n        if (local_4c == 0x100) {\n          puVar4[9] = FUN_00119190;\n        }\n        else {\n          if (local_4c != 0x101) {\n            return;\n          }\n          puVar4[9] = FUN_00118c20;\n        }\n      }\n      else if (local_4c == 0x302) {\n        puVar4[9] = FUN_00118f20;\n      }\n      else {\n        if (local_4c != 0x402) {\n          return;\n        }\n        puVar4[9] = FUN_00118d60;\n      }" else (if_statement "if (local_4c < 0x202) {\n        if (local_4c == 0x100) {\n          puVar4[9] = FUN_00119190;\n        }\n        else {\n          if (local_4c != 0x101) {\n            return;\n          }\n          puVar4[9] = FUN_00118c20;\n        }\n      }\n      else if (local_4c == 0x302) {\n        puVar4[9] = FUN_00118f20;\n      }\n      else {\n        if (local_4c != 0x402) {\n          return;\n        }\n        puVar4[9] = FUN_00118d60;\n      }" if (parenthesized_expression "(local_4c < 0x202)" ( (binary_expression "local_4c < 0x202" identifier < number_literal) )) (compound_statement "{\n        if (local_4c == 0x100) {\n          puVar4[9] = FUN_00119190;\n        }\n        else {\n          if (local_4c != 0x101) {\n            return;\n          }\n          puVar4[9] = FUN_00118c20;\n        }\n      }" { (if_statement "if (local_4c == 0x100) {\n          puVar4[9] = FUN_00119190;\n        }\n        else {\n          if (local_4c != 0x101) {\n            return;\n          }\n          puVar4[9] = FUN_00118c20;\n        }" if (parenthesized_expression "(local_4c == 0x100)" ( (binary_expression "local_4c == 0x100" identifier == number_literal) )) (compound_statement "{\n          puVar4[9] = FUN_00119190;\n        }" { (expression_statement "puVar4[9] = FUN_00119190;" (assignment_expression "puVar4[9] = FUN_00119190" (subscript_expression "puVar4[9]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n          if (local_4c != 0x101) {\n            return;\n          }\n          puVar4[9] = FUN_00118c20;\n        }" else (compound_statement "{\n          if (local_4c != 0x101) {\n            return;\n          }\n          puVar4[9] = FUN_00118c20;\n        }" { (if_statement "if (local_4c != 0x101) {\n            return;\n          }" if (parenthesized_expression "(local_4c != 0x101)" ( (binary_expression "local_4c != 0x101" identifier != number_literal) )) (compound_statement "{\n            return;\n          }" { (return_statement "return;" return ;) })) (expression_statement "puVar4[9] = FUN_00118c20;" (assignment_expression "puVar4[9] = FUN_00118c20" (subscript_expression "puVar4[9]" identifier [ number_literal ]) = identifier) ;) }))) }) (else_clause "else if (local_4c == 0x302) {\n        puVar4[9] = FUN_00118f20;\n      }\n      else {\n        if (local_4c != 0x402) {\n          return;\n        }\n        puVar4[9] = FUN_00118d60;\n      }" else (if_statement "if (local_4c == 0x302) {\n        puVar4[9] = FUN_00118f20;\n      }\n      else {\n        if (local_4c != 0x402) {\n          return;\n        }\n        puVar4[9] = FUN_00118d60;\n      }" if (parenthesized_expression "(local_4c == 0x302)" ( (binary_expression "local_4c == 0x302" identifier == number_literal) )) (compound_statement "{\n        puVar4[9] = FUN_00118f20;\n      }" { (expression_statement "puVar4[9] = FUN_00118f20;" (assignment_expression "puVar4[9] = FUN_00118f20" (subscript_expression "puVar4[9]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n        if (local_4c != 0x402) {\n          return;\n        }\n        puVar4[9] = FUN_00118d60;\n      }" else (compound_statement "{\n        if (local_4c != 0x402) {\n          return;\n        }\n        puVar4[9] = FUN_00118d60;\n      }" { (if_statement "if (local_4c != 0x402) {\n          return;\n        }" if (parenthesized_expression "(local_4c != 0x402)" ( (binary_expression "local_4c != 0x402" identifier != number_literal) )) (compound_statement "{\n          return;\n        }" { (return_statement "return;" return ;) })) (expression_statement "puVar4[9] = FUN_00118d60;" (assignment_expression "puVar4[9] = FUN_00118d60" (subscript_expression "puVar4[9]" identifier [ number_literal ]) = identifier) ;) }))))))) (expression_statement "iVar13 = 0;" (assignment_expression "iVar13 = 0" identifier = number_literal) ;) (expression_statement "pcVar8 = local_48;" (assignment_expression "pcVar8 = local_48" identifier = identifier) ;) (expression_statement "plVar7 = param_2;" (assignment_expression "plVar7 = param_2" identifier = identifier) ;) (while_statement "while( true ) {\n        pcVar8 = strpbrk(pcVar8,"?*[");\n        if (pcVar8 == (char *)0x0) {\n          lVar10 = (long)iVar13;\n          iVar13 = iVar13 + 1;\n          puVar4[lVar10 + 10] = plVar7;\n        }\n        plVar7 = (long *)*plVar7;\n        if (plVar7 == (long *)0x0) break;\n        pcVar8 = (char *)plVar7[1];\n      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n        pcVar8 = strpbrk(pcVar8,"?*[");\n        if (pcVar8 == (char *)0x0) {\n          lVar10 = (long)iVar13;\n          iVar13 = iVar13 + 1;\n          puVar4[lVar10 + 10] = plVar7;\n        }\n        plVar7 = (long *)*plVar7;\n        if (plVar7 == (long *)0x0) break;\n        pcVar8 = (char *)plVar7[1];\n      }" { (expression_statement "pcVar8 = strpbrk(pcVar8,"?*[");" (assignment_expression "pcVar8 = strpbrk(pcVar8,"?*[")" identifier = (call_expression "strpbrk(pcVar8,"?*[")" identifier (argument_list "(pcVar8,"?*[")" ( identifier , (string_literal ""?*["" " string_content ") )))) ;) (if_statement "if (pcVar8 == (char *)0x0) {\n          lVar10 = (long)iVar13;\n          iVar13 = iVar13 + 1;\n          puVar4[lVar10 + 10] = plVar7;\n        }" if (parenthesized_expression "(pcVar8 == (char *)0x0)" ( (binary_expression "pcVar8 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          lVar10 = (long)iVar13;\n          iVar13 = iVar13 + 1;\n          puVar4[lVar10 + 10] = plVar7;\n        }" { (expression_statement "lVar10 = (long)iVar13;" (assignment_expression "lVar10 = (long)iVar13" identifier = (cast_expression "(long)iVar13" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ;) (expression_statement "iVar13 = iVar13 + 1;" (assignment_expression "iVar13 = iVar13 + 1" identifier = (binary_expression "iVar13 + 1" identifier + number_literal)) ;) (expression_statement "puVar4[lVar10 + 10] = plVar7;" (assignment_expression "puVar4[lVar10 + 10] = plVar7" (subscript_expression "puVar4[lVar10 + 10]" identifier [ (binary_expression "lVar10 + 10" identifier + number_literal) ]) = identifier) ;) })) (expression_statement "plVar7 = (long *)*plVar7;" (assignment_expression "plVar7 = (long *)*plVar7" identifier = (cast_expression "(long *)*plVar7" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*plVar7" * identifier))) ;) (if_statement "if (plVar7 == (long *)0x0) break;" if (parenthesized_expression "(plVar7 == (long *)0x0)" ( (binary_expression "plVar7 == (long *)0x0" identifier == (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (break_statement "break;" break ;)) (expression_statement "pcVar8 = (char *)plVar7[1];" (assignment_expression "pcVar8 = (char *)plVar7[1]" identifier = (cast_expression "(char *)plVar7[1]" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "plVar7[1]" identifier [ number_literal ]))) ;) })) (while_statement "while( true ) {\n        pcVar8 = strpbrk(local_48,"?*[");\n        if (pcVar8 != (char *)0x0) {\n          lVar10 = (long)iVar13;\n          iVar13 = iVar13 + 1;\n          puVar4[lVar10 + 10] = param_2;\n        }\n        param_2 = (long *)*param_2;\n        if (param_2 == (long *)0x0) break;\n        local_48 = (char *)param_2[1];\n      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n        pcVar8 = strpbrk(local_48,"?*[");\n        if (pcVar8 != (char *)0x0) {\n          lVar10 = (long)iVar13;\n          iVar13 = iVar13 + 1;\n          puVar4[lVar10 + 10] = param_2;\n        }\n        param_2 = (long *)*param_2;\n        if (param_2 == (long *)0x0) break;\n        local_48 = (char *)param_2[1];\n      }" { (expression_statement "pcVar8 = strpbrk(local_48,"?*[");" (assignment_expression "pcVar8 = strpbrk(local_48,"?*[")" identifier = (call_expression "strpbrk(local_48,"?*[")" identifier (argument_list "(local_48,"?*[")" ( identifier , (string_literal ""?*["" " string_content ") )))) ;) (if_statement "if (pcVar8 != (char *)0x0) {\n          lVar10 = (long)iVar13;\n          iVar13 = iVar13 + 1;\n          puVar4[lVar10 + 10] = param_2;\n        }" if (parenthesized_expression "(pcVar8 != (char *)0x0)" ( (binary_expression "pcVar8 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          lVar10 = (long)iVar13;\n          iVar13 = iVar13 + 1;\n          puVar4[lVar10 + 10] = param_2;\n        }" { (expression_statement "lVar10 = (long)iVar13;" (assignment_expression "lVar10 = (long)iVar13" identifier = (cast_expression "(long)iVar13" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ;) (expression_statement "iVar13 = iVar13 + 1;" (assignment_expression "iVar13 = iVar13 + 1" identifier = (binary_expression "iVar13 + 1" identifier + number_literal)) ;) (expression_statement "puVar4[lVar10 + 10] = param_2;" (assignment_expression "puVar4[lVar10 + 10] = param_2" (subscript_expression "puVar4[lVar10 + 10]" identifier [ (binary_expression "lVar10 + 10" identifier + number_literal) ]) = identifier) ;) })) (expression_statement "param_2 = (long *)*param_2;" (assignment_expression "param_2 = (long *)*param_2" identifier = (cast_expression "(long *)*param_2" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_2" * identifier))) ;) (if_statement "if (param_2 == (long *)0x0) break;" if (parenthesized_expression "(param_2 == (long *)0x0)" ( (binary_expression "param_2 == (long *)0x0" identifier == (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (break_statement "break;" break ;)) (expression_statement "local_48 = (char *)param_2[1];" (assignment_expression "local_48 = (char *)param_2[1]" identifier = (cast_expression "(char *)param_2[1]" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[1]" identifier [ number_literal ]))) ;) })) })) })) (return_statement "return;" return ;) })))
(translation_unit "void lang_add_wild(wildcard_spec *filespec,wildcard_list *section_list,bfd_boolean keep_sections)\n\n{\n  byte *__s;\n  lang_statement_list_type *plVar1;\n  int iVar2;\n  lang_statement_union *plVar3;\n  char *pcVar4;\n  size_t sVar5;\n  wildcard_list *pwVar6;\n  ulong __n;\n  char *pcVar7;\n  wildcard_list *pwVar8;\n  long lVar9;\n  wildcard_list *curr;\n  byte *pbVar10;\n  byte *pbVar11;\n  int iVar12;\n  ulong uVar13;\n  wildcard_list *pwVar14;\n  bool bVar15;\n  bool bVar16;\n  int local_4c;\n  char *local_48;\n  \n  if (section_list != (wildcard_list *)0x0) {\n    pwVar8 = (wildcard_list *)0x0;\n    pwVar6 = section_list;\n    do {\n      section_list = pwVar6;\n      pwVar6 = section_list->next;\n      section_list->next = pwVar8;\n      pwVar8 = section_list;\n    } while (pwVar6 != (wildcard_list *)0x0);\n  }\n  plVar1 = stat_ptr;\n  if (filespec == (wildcard_spec *)0x0) {\n    plVar3 = (lang_statement_union *)stat_alloc(0x80);\n    (plVar3->header).next = (lang_statement_union *)0x0;\n    (plVar3->header).type = lang_wild_statement_enum;\n    *plVar1->tail = plVar3;\n    plVar1->tail = (lang_statement_union **)plVar3;\n    (plVar3->wild_statement).filename = (char *)0x0;\n    (plVar3->wild_statement).filenames_sorted = 0;\n    (plVar3->wild_statement).section_flag_list = (flag_info *)0x0;\n    (plVar3->wild_statement).exclude_name_list = (name_list *)0x0;\n  }\n  else {\n    __s = (byte *)filespec->name;\n    bVar15 = false;\n    bVar16 = __s == (byte *)0x0;\n    if (!bVar16) {\n      lVar9 = 2;\n      pbVar10 = __s;\n      pbVar11 = &DAT_0016c217;\n      do {\n        if (lVar9 == 0) break;\n        lVar9 = lVar9 + -1;\n        bVar15 = *pbVar10 < *pbVar11;\n        bVar16 = *pbVar10 == *pbVar11;\n        pbVar10 = pbVar10 + 1;\n        pbVar11 = pbVar11 + 1;\n      } while (bVar16);\n      if ((!bVar15 && !bVar16) == bVar15) {\n        filespec->name = (char *)0x0;\n      }\n      else {\n        pcVar7 = strpbrk((char *)__s,"?*[");\n        if (pcVar7 == (char *)0x0) {\n          lang_has_input_file = 1;\n        }\n      }\n    }\n    plVar3 = (lang_statement_union *)stat_alloc(0x80);\n    (plVar3->header).next = (lang_statement_union *)0x0;\n    (plVar3->header).type = lang_wild_statement_enum;\n    *plVar1->tail = plVar3;\n    pcVar7 = filespec->name;\n    plVar1->tail = (lang_statement_union **)plVar3;\n    (plVar3->wild_statement).filename = pcVar7;\n    (plVar3->wild_statement).filenames_sorted = (uint)(filespec->sorted == by_name);\n    (plVar3->wild_statement).section_flag_list = filespec->section_flag_list;\n    (plVar3->wild_statement).exclude_name_list = filespec->exclude_name_list;\n  }\n  (plVar3->wild_statement).section_list = section_list;\n  (plVar3->wild_statement).children.tail = &(plVar3->wild_statement).children.head;\n  (plVar3->wild_statement).keep_sections = keep_sections;\n  (plVar3->wild_statement).children.head = (lang_statement_union *)0x0;\n  (plVar3->wild_statement).walk_wild_section_handler = walk_wild_section_general;\n  (plVar3->wild_statement).handler_data[0] = (wildcard_list *)0x0;\n  (plVar3->wild_statement).handler_data[1] = (wildcard_list *)0x0;\n  (plVar3->wild_statement).handler_data[2] = (wildcard_list *)0x0;\n  (plVar3->wild_statement).handler_data[3] = (wildcard_list *)0x0;\n  (plVar3->wild_statement).tree = (lang_section_bst_type *)0x0;\n  if ((section_list != (wildcard_list *)0x0) &&\n     (local_48 = (section_list->spec).name, local_48 != (char *)0x0)) {\n    local_4c = 0;\n    iVar12 = 1;\n    pwVar6 = section_list;\n    pcVar7 = local_48;\n    while( true ) {\n      pcVar4 = strpbrk(pcVar7,"?*[");\n      if (pcVar4 != (char *)0x0) {\n        sVar5 = strcspn(pcVar7,"*?[");\n        if (sVar5 < 4) {\n          return;\n        }\n        if (pcVar7[sVar5] != '*') {\n          return;\n        }\n        if (pcVar7[sVar5 + 1] != '\0') {\n          return;\n        }\n        local_4c = local_4c + 1;\n      }\n      pwVar6 = pwVar6->next;\n      if (pwVar6 == (wildcard_list *)0x0) break;\n      pcVar7 = (pwVar6->spec).name;\n      iVar12 = iVar12 + 1;\n      if (pcVar7 == (char *)0x0) {\n        return;\n      }\n    }\n    pwVar6 = section_list;\n    if (iVar12 < 5) {\n      while (pwVar8 = pwVar6->next, pwVar8 != (wildcard_list *)0x0) {\n        pcVar7 = (pwVar6->spec).name;\n        sVar5 = strcspn(pcVar7,"?*[");\n        uVar13 = sVar5 + 1;\n        pwVar14 = pwVar8;\n        if (pcVar7[sVar5] != '\0') {\n          uVar13 = sVar5;\n        }\n        do {\n          pcVar4 = (pwVar14->spec).name;\n          sVar5 = strcspn(pcVar4,"?*[");\n          __n = sVar5 + (pcVar4[sVar5] == '\0');\n          if (uVar13 <= __n) {\n            __n = uVar13;\n          }\n          iVar2 = memcmp(pcVar7,pcVar4,__n);\n          if (iVar2 == 0) {\n            return;\n          }\n          pwVar14 = pwVar14->next;\n          pwVar6 = pwVar8;\n        } while (pwVar14 != (wildcard_list *)0x0);\n      }\n      local_4c = local_4c + iVar12 * 0x100;\n      if (local_4c == 0x201) {\n        (plVar3->wild_statement).walk_wild_section_handler = walk_wild_section_specs2_wild1;\n      }\n      else if (local_4c < 0x202) {\n        if (local_4c == 0x100) {\n          (plVar3->wild_statement).walk_wild_section_handler = walk_wild_section_specs1_wild0;\n        }\n        else {\n          if (local_4c != 0x101) {\n            return;\n          }\n          (plVar3->wild_statement).walk_wild_section_handler = walk_wild_section_specs1_wild1;\n        }\n      }\n      else if (local_4c == 0x302) {\n        (plVar3->wild_statement).walk_wild_section_handler = walk_wild_section_specs3_wild2;\n      }\n      else {\n        if (local_4c != 0x402) {\n          return;\n        }\n        (plVar3->wild_statement).walk_wild_section_handler = walk_wild_section_specs4_wild2;\n      }\n      iVar12 = 0;\n      pcVar7 = local_48;\n      pwVar6 = section_list;\n      while( true ) {\n        pcVar7 = strpbrk(pcVar7,"?*[");\n        if (pcVar7 == (char *)0x0) {\n          lVar9 = (long)iVar12;\n          iVar12 = iVar12 + 1;\n          *(wildcard_list **)((long)plVar3 + lVar9 * 8 + 0x50) = pwVar6;\n        }\n        pwVar6 = pwVar6->next;\n        if (pwVar6 == (wildcard_list *)0x0) break;\n        pcVar7 = (pwVar6->spec).name;\n      }\n      while( true ) {\n        pcVar7 = strpbrk(local_48,"?*[");\n        if (pcVar7 != (char *)0x0) {\n          lVar9 = (long)iVar12;\n          iVar12 = iVar12 + 1;\n          *(wildcard_list **)((long)plVar3 + lVar9 * 8 + 0x50) = section_list;\n        }\n        section_list = section_list->next;\n        if (section_list == (wildcard_list *)0x0) break;\n        local_48 = (section_list->spec).name;\n      }\n    }\n  }\n  return;\n}\n\n" (function_definition "void lang_add_wild(wildcard_spec *filespec,wildcard_list *section_list,bfd_boolean keep_sections)\n\n{\n  byte *__s;\n  lang_statement_list_type *plVar1;\n  int iVar2;\n  lang_statement_union *plVar3;\n  char *pcVar4;\n  size_t sVar5;\n  wildcard_list *pwVar6;\n  ulong __n;\n  char *pcVar7;\n  wildcard_list *pwVar8;\n  long lVar9;\n  wildcard_list *curr;\n  byte *pbVar10;\n  byte *pbVar11;\n  int iVar12;\n  ulong uVar13;\n  wildcard_list *pwVar14;\n  bool bVar15;\n  bool bVar16;\n  int local_4c;\n  char *local_48;\n  \n  if (section_list != (wildcard_list *)0x0) {\n    pwVar8 = (wildcard_list *)0x0;\n    pwVar6 = section_list;\n    do {\n      section_list = pwVar6;\n      pwVar6 = section_list->next;\n      section_list->next = pwVar8;\n      pwVar8 = section_list;\n    } while (pwVar6 != (wildcard_list *)0x0);\n  }\n  plVar1 = stat_ptr;\n  if (filespec == (wildcard_spec *)0x0) {\n    plVar3 = (lang_statement_union *)stat_alloc(0x80);\n    (plVar3->header).next = (lang_statement_union *)0x0;\n    (plVar3->header).type = lang_wild_statement_enum;\n    *plVar1->tail = plVar3;\n    plVar1->tail = (lang_statement_union **)plVar3;\n    (plVar3->wild_statement).filename = (char *)0x0;\n    (plVar3->wild_statement).filenames_sorted = 0;\n    (plVar3->wild_statement).section_flag_list = (flag_info *)0x0;\n    (plVar3->wild_statement).exclude_name_list = (name_list *)0x0;\n  }\n  else {\n    __s = (byte *)filespec->name;\n    bVar15 = false;\n    bVar16 = __s == (byte *)0x0;\n    if (!bVar16) {\n      lVar9 = 2;\n      pbVar10 = __s;\n      pbVar11 = &DAT_0016c217;\n      do {\n        if (lVar9 == 0) break;\n        lVar9 = lVar9 + -1;\n        bVar15 = *pbVar10 < *pbVar11;\n        bVar16 = *pbVar10 == *pbVar11;\n        pbVar10 = pbVar10 + 1;\n        pbVar11 = pbVar11 + 1;\n      } while (bVar16);\n      if ((!bVar15 && !bVar16) == bVar15) {\n        filespec->name = (char *)0x0;\n      }\n      else {\n        pcVar7 = strpbrk((char *)__s,"?*[");\n        if (pcVar7 == (char *)0x0) {\n          lang_has_input_file = 1;\n        }\n      }\n    }\n    plVar3 = (lang_statement_union *)stat_alloc(0x80);\n    (plVar3->header).next = (lang_statement_union *)0x0;\n    (plVar3->header).type = lang_wild_statement_enum;\n    *plVar1->tail = plVar3;\n    pcVar7 = filespec->name;\n    plVar1->tail = (lang_statement_union **)plVar3;\n    (plVar3->wild_statement).filename = pcVar7;\n    (plVar3->wild_statement).filenames_sorted = (uint)(filespec->sorted == by_name);\n    (plVar3->wild_statement).section_flag_list = filespec->section_flag_list;\n    (plVar3->wild_statement).exclude_name_list = filespec->exclude_name_list;\n  }\n  (plVar3->wild_statement).section_list = section_list;\n  (plVar3->wild_statement).children.tail = &(plVar3->wild_statement).children.head;\n  (plVar3->wild_statement).keep_sections = keep_sections;\n  (plVar3->wild_statement).children.head = (lang_statement_union *)0x0;\n  (plVar3->wild_statement).walk_wild_section_handler = walk_wild_section_general;\n  (plVar3->wild_statement).handler_data[0] = (wildcard_list *)0x0;\n  (plVar3->wild_statement).handler_data[1] = (wildcard_list *)0x0;\n  (plVar3->wild_statement).handler_data[2] = (wildcard_list *)0x0;\n  (plVar3->wild_statement).handler_data[3] = (wildcard_list *)0x0;\n  (plVar3->wild_statement).tree = (lang_section_bst_type *)0x0;\n  if ((section_list != (wildcard_list *)0x0) &&\n     (local_48 = (section_list->spec).name, local_48 != (char *)0x0)) {\n    local_4c = 0;\n    iVar12 = 1;\n    pwVar6 = section_list;\n    pcVar7 = local_48;\n    while( true ) {\n      pcVar4 = strpbrk(pcVar7,"?*[");\n      if (pcVar4 != (char *)0x0) {\n        sVar5 = strcspn(pcVar7,"*?[");\n        if (sVar5 < 4) {\n          return;\n        }\n        if (pcVar7[sVar5] != '*') {\n          return;\n        }\n        if (pcVar7[sVar5 + 1] != '\0') {\n          return;\n        }\n        local_4c = local_4c + 1;\n      }\n      pwVar6 = pwVar6->next;\n      if (pwVar6 == (wildcard_list *)0x0) break;\n      pcVar7 = (pwVar6->spec).name;\n      iVar12 = iVar12 + 1;\n      if (pcVar7 == (char *)0x0) {\n        return;\n      }\n    }\n    pwVar6 = section_list;\n    if (iVar12 < 5) {\n      while (pwVar8 = pwVar6->next, pwVar8 != (wildcard_list *)0x0) {\n        pcVar7 = (pwVar6->spec).name;\n        sVar5 = strcspn(pcVar7,"?*[");\n        uVar13 = sVar5 + 1;\n        pwVar14 = pwVar8;\n        if (pcVar7[sVar5] != '\0') {\n          uVar13 = sVar5;\n        }\n        do {\n          pcVar4 = (pwVar14->spec).name;\n          sVar5 = strcspn(pcVar4,"?*[");\n          __n = sVar5 + (pcVar4[sVar5] == '\0');\n          if (uVar13 <= __n) {\n            __n = uVar13;\n          }\n          iVar2 = memcmp(pcVar7,pcVar4,__n);\n          if (iVar2 == 0) {\n            return;\n          }\n          pwVar14 = pwVar14->next;\n          pwVar6 = pwVar8;\n        } while (pwVar14 != (wildcard_list *)0x0);\n      }\n      local_4c = local_4c + iVar12 * 0x100;\n      if (local_4c == 0x201) {\n        (plVar3->wild_statement).walk_wild_section_handler = walk_wild_section_specs2_wild1;\n      }\n      else if (local_4c < 0x202) {\n        if (local_4c == 0x100) {\n          (plVar3->wild_statement).walk_wild_section_handler = walk_wild_section_specs1_wild0;\n        }\n        else {\n          if (local_4c != 0x101) {\n            return;\n          }\n          (plVar3->wild_statement).walk_wild_section_handler = walk_wild_section_specs1_wild1;\n        }\n      }\n      else if (local_4c == 0x302) {\n        (plVar3->wild_statement).walk_wild_section_handler = walk_wild_section_specs3_wild2;\n      }\n      else {\n        if (local_4c != 0x402) {\n          return;\n        }\n        (plVar3->wild_statement).walk_wild_section_handler = walk_wild_section_specs4_wild2;\n      }\n      iVar12 = 0;\n      pcVar7 = local_48;\n      pwVar6 = section_list;\n      while( true ) {\n        pcVar7 = strpbrk(pcVar7,"?*[");\n        if (pcVar7 == (char *)0x0) {\n          lVar9 = (long)iVar12;\n          iVar12 = iVar12 + 1;\n          *(wildcard_list **)((long)plVar3 + lVar9 * 8 + 0x50) = pwVar6;\n        }\n        pwVar6 = pwVar6->next;\n        if (pwVar6 == (wildcard_list *)0x0) break;\n        pcVar7 = (pwVar6->spec).name;\n      }\n      while( true ) {\n        pcVar7 = strpbrk(local_48,"?*[");\n        if (pcVar7 != (char *)0x0) {\n          lVar9 = (long)iVar12;\n          iVar12 = iVar12 + 1;\n          *(wildcard_list **)((long)plVar3 + lVar9 * 8 + 0x50) = section_list;\n        }\n        section_list = section_list->next;\n        if (section_list == (wildcard_list *)0x0) break;\n        local_48 = (section_list->spec).name;\n      }\n    }\n  }\n  return;\n}" primitive_type (function_declarator "lang_add_wild(wildcard_spec *filespec,wildcard_list *section_list,bfd_boolean keep_sections)" identifier (parameter_list "(wildcard_spec *filespec,wildcard_list *section_list,bfd_boolean keep_sections)" ( (parameter_declaration "wildcard_spec *filespec" type_identifier (pointer_declarator "*filespec" * identifier)) , (parameter_declaration "wildcard_list *section_list" type_identifier (pointer_declarator "*section_list" * identifier)) , (parameter_declaration "bfd_boolean keep_sections" type_identifier identifier) ))) (compound_statement "{\n  byte *__s;\n  lang_statement_list_type *plVar1;\n  int iVar2;\n  lang_statement_union *plVar3;\n  char *pcVar4;\n  size_t sVar5;\n  wildcard_list *pwVar6;\n  ulong __n;\n  char *pcVar7;\n  wildcard_list *pwVar8;\n  long lVar9;\n  wildcard_list *curr;\n  byte *pbVar10;\n  byte *pbVar11;\n  int iVar12;\n  ulong uVar13;\n  wildcard_list *pwVar14;\n  bool bVar15;\n  bool bVar16;\n  int local_4c;\n  char *local_48;\n  \n  if (section_list != (wildcard_list *)0x0) {\n    pwVar8 = (wildcard_list *)0x0;\n    pwVar6 = section_list;\n    do {\n      section_list = pwVar6;\n      pwVar6 = section_list->next;\n      section_list->next = pwVar8;\n      pwVar8 = section_list;\n    } while (pwVar6 != (wildcard_list *)0x0);\n  }\n  plVar1 = stat_ptr;\n  if (filespec == (wildcard_spec *)0x0) {\n    plVar3 = (lang_statement_union *)stat_alloc(0x80);\n    (plVar3->header).next = (lang_statement_union *)0x0;\n    (plVar3->header).type = lang_wild_statement_enum;\n    *plVar1->tail = plVar3;\n    plVar1->tail = (lang_statement_union **)plVar3;\n    (plVar3->wild_statement).filename = (char *)0x0;\n    (plVar3->wild_statement).filenames_sorted = 0;\n    (plVar3->wild_statement).section_flag_list = (flag_info *)0x0;\n    (plVar3->wild_statement).exclude_name_list = (name_list *)0x0;\n  }\n  else {\n    __s = (byte *)filespec->name;\n    bVar15 = false;\n    bVar16 = __s == (byte *)0x0;\n    if (!bVar16) {\n      lVar9 = 2;\n      pbVar10 = __s;\n      pbVar11 = &DAT_0016c217;\n      do {\n        if (lVar9 == 0) break;\n        lVar9 = lVar9 + -1;\n        bVar15 = *pbVar10 < *pbVar11;\n        bVar16 = *pbVar10 == *pbVar11;\n        pbVar10 = pbVar10 + 1;\n        pbVar11 = pbVar11 + 1;\n      } while (bVar16);\n      if ((!bVar15 && !bVar16) == bVar15) {\n        filespec->name = (char *)0x0;\n      }\n      else {\n        pcVar7 = strpbrk((char *)__s,"?*[");\n        if (pcVar7 == (char *)0x0) {\n          lang_has_input_file = 1;\n        }\n      }\n    }\n    plVar3 = (lang_statement_union *)stat_alloc(0x80);\n    (plVar3->header).next = (lang_statement_union *)0x0;\n    (plVar3->header).type = lang_wild_statement_enum;\n    *plVar1->tail = plVar3;\n    pcVar7 = filespec->name;\n    plVar1->tail = (lang_statement_union **)plVar3;\n    (plVar3->wild_statement).filename = pcVar7;\n    (plVar3->wild_statement).filenames_sorted = (uint)(filespec->sorted == by_name);\n    (plVar3->wild_statement).section_flag_list = filespec->section_flag_list;\n    (plVar3->wild_statement).exclude_name_list = filespec->exclude_name_list;\n  }\n  (plVar3->wild_statement).section_list = section_list;\n  (plVar3->wild_statement).children.tail = &(plVar3->wild_statement).children.head;\n  (plVar3->wild_statement).keep_sections = keep_sections;\n  (plVar3->wild_statement).children.head = (lang_statement_union *)0x0;\n  (plVar3->wild_statement).walk_wild_section_handler = walk_wild_section_general;\n  (plVar3->wild_statement).handler_data[0] = (wildcard_list *)0x0;\n  (plVar3->wild_statement).handler_data[1] = (wildcard_list *)0x0;\n  (plVar3->wild_statement).handler_data[2] = (wildcard_list *)0x0;\n  (plVar3->wild_statement).handler_data[3] = (wildcard_list *)0x0;\n  (plVar3->wild_statement).tree = (lang_section_bst_type *)0x0;\n  if ((section_list != (wildcard_list *)0x0) &&\n     (local_48 = (section_list->spec).name, local_48 != (char *)0x0)) {\n    local_4c = 0;\n    iVar12 = 1;\n    pwVar6 = section_list;\n    pcVar7 = local_48;\n    while( true ) {\n      pcVar4 = strpbrk(pcVar7,"?*[");\n      if (pcVar4 != (char *)0x0) {\n        sVar5 = strcspn(pcVar7,"*?[");\n        if (sVar5 < 4) {\n          return;\n        }\n        if (pcVar7[sVar5] != '*') {\n          return;\n        }\n        if (pcVar7[sVar5 + 1] != '\0') {\n          return;\n        }\n        local_4c = local_4c + 1;\n      }\n      pwVar6 = pwVar6->next;\n      if (pwVar6 == (wildcard_list *)0x0) break;\n      pcVar7 = (pwVar6->spec).name;\n      iVar12 = iVar12 + 1;\n      if (pcVar7 == (char *)0x0) {\n        return;\n      }\n    }\n    pwVar6 = section_list;\n    if (iVar12 < 5) {\n      while (pwVar8 = pwVar6->next, pwVar8 != (wildcard_list *)0x0) {\n        pcVar7 = (pwVar6->spec).name;\n        sVar5 = strcspn(pcVar7,"?*[");\n        uVar13 = sVar5 + 1;\n        pwVar14 = pwVar8;\n        if (pcVar7[sVar5] != '\0') {\n          uVar13 = sVar5;\n        }\n        do {\n          pcVar4 = (pwVar14->spec).name;\n          sVar5 = strcspn(pcVar4,"?*[");\n          __n = sVar5 + (pcVar4[sVar5] == '\0');\n          if (uVar13 <= __n) {\n            __n = uVar13;\n          }\n          iVar2 = memcmp(pcVar7,pcVar4,__n);\n          if (iVar2 == 0) {\n            return;\n          }\n          pwVar14 = pwVar14->next;\n          pwVar6 = pwVar8;\n        } while (pwVar14 != (wildcard_list *)0x0);\n      }\n      local_4c = local_4c + iVar12 * 0x100;\n      if (local_4c == 0x201) {\n        (plVar3->wild_statement).walk_wild_section_handler = walk_wild_section_specs2_wild1;\n      }\n      else if (local_4c < 0x202) {\n        if (local_4c == 0x100) {\n          (plVar3->wild_statement).walk_wild_section_handler = walk_wild_section_specs1_wild0;\n        }\n        else {\n          if (local_4c != 0x101) {\n            return;\n          }\n          (plVar3->wild_statement).walk_wild_section_handler = walk_wild_section_specs1_wild1;\n        }\n      }\n      else if (local_4c == 0x302) {\n        (plVar3->wild_statement).walk_wild_section_handler = walk_wild_section_specs3_wild2;\n      }\n      else {\n        if (local_4c != 0x402) {\n          return;\n        }\n        (plVar3->wild_statement).walk_wild_section_handler = walk_wild_section_specs4_wild2;\n      }\n      iVar12 = 0;\n      pcVar7 = local_48;\n      pwVar6 = section_list;\n      while( true ) {\n        pcVar7 = strpbrk(pcVar7,"?*[");\n        if (pcVar7 == (char *)0x0) {\n          lVar9 = (long)iVar12;\n          iVar12 = iVar12 + 1;\n          *(wildcard_list **)((long)plVar3 + lVar9 * 8 + 0x50) = pwVar6;\n        }\n        pwVar6 = pwVar6->next;\n        if (pwVar6 == (wildcard_list *)0x0) break;\n        pcVar7 = (pwVar6->spec).name;\n      }\n      while( true ) {\n        pcVar7 = strpbrk(local_48,"?*[");\n        if (pcVar7 != (char *)0x0) {\n          lVar9 = (long)iVar12;\n          iVar12 = iVar12 + 1;\n          *(wildcard_list **)((long)plVar3 + lVar9 * 8 + 0x50) = section_list;\n        }\n        section_list = section_list->next;\n        if (section_list == (wildcard_list *)0x0) break;\n        local_48 = (section_list->spec).name;\n      }\n    }\n  }\n  return;\n}" { (declaration "byte *__s;" type_identifier (pointer_declarator "*__s" * identifier) ;) (declaration "lang_statement_list_type *plVar1;" type_identifier (pointer_declarator "*plVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "lang_statement_union *plVar3;" type_identifier (pointer_declarator "*plVar3" * identifier) ;) (declaration "char *pcVar4;" primitive_type (pointer_declarator "*pcVar4" * identifier) ;) (declaration "size_t sVar5;" primitive_type identifier ;) (declaration "wildcard_list *pwVar6;" type_identifier (pointer_declarator "*pwVar6" * identifier) ;) (declaration "ulong __n;" type_identifier identifier ;) (declaration "char *pcVar7;" primitive_type (pointer_declarator "*pcVar7" * identifier) ;) (declaration "wildcard_list *pwVar8;" type_identifier (pointer_declarator "*pwVar8" * identifier) ;) (declaration "long lVar9;" (sized_type_specifier "long" long) identifier ;) (declaration "wildcard_list *curr;" type_identifier (pointer_declarator "*curr" * identifier) ;) (declaration "byte *pbVar10;" type_identifier (pointer_declarator "*pbVar10" * identifier) ;) (declaration "byte *pbVar11;" type_identifier (pointer_declarator "*pbVar11" * identifier) ;) (declaration "int iVar12;" primitive_type identifier ;) (declaration "ulong uVar13;" type_identifier identifier ;) (declaration "wildcard_list *pwVar14;" type_identifier (pointer_declarator "*pwVar14" * identifier) ;) (declaration "bool bVar15;" primitive_type identifier ;) (declaration "bool bVar16;" primitive_type identifier ;) (declaration "int local_4c;" primitive_type identifier ;) (declaration "char *local_48;" primitive_type (pointer_declarator "*local_48" * identifier) ;) (if_statement "if (section_list != (wildcard_list *)0x0) {\n    pwVar8 = (wildcard_list *)0x0;\n    pwVar6 = section_list;\n    do {\n      section_list = pwVar6;\n      pwVar6 = section_list->next;\n      section_list->next = pwVar8;\n      pwVar8 = section_list;\n    } while (pwVar6 != (wildcard_list *)0x0);\n  }" if (parenthesized_expression "(section_list != (wildcard_list *)0x0)" ( (binary_expression "section_list != (wildcard_list *)0x0" identifier != (cast_expression "(wildcard_list *)0x0" ( (type_descriptor "wildcard_list *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    pwVar8 = (wildcard_list *)0x0;\n    pwVar6 = section_list;\n    do {\n      section_list = pwVar6;\n      pwVar6 = section_list->next;\n      section_list->next = pwVar8;\n      pwVar8 = section_list;\n    } while (pwVar6 != (wildcard_list *)0x0);\n  }" { (expression_statement "pwVar8 = (wildcard_list *)0x0;" (assignment_expression "pwVar8 = (wildcard_list *)0x0" identifier = (cast_expression "(wildcard_list *)0x0" ( (type_descriptor "wildcard_list *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pwVar6 = section_list;" (assignment_expression "pwVar6 = section_list" identifier = identifier) ;) (do_statement "do {\n      section_list = pwVar6;\n      pwVar6 = section_list->next;\n      section_list->next = pwVar8;\n      pwVar8 = section_list;\n    } while (pwVar6 != (wildcard_list *)0x0);" do (compound_statement "{\n      section_list = pwVar6;\n      pwVar6 = section_list->next;\n      section_list->next = pwVar8;\n      pwVar8 = section_list;\n    }" { (expression_statement "section_list = pwVar6;" (assignment_expression "section_list = pwVar6" identifier = identifier) ;) (expression_statement "pwVar6 = section_list->next;" (assignment_expression "pwVar6 = section_list->next" identifier = (field_expression "section_list->next" identifier -> field_identifier)) ;) (expression_statement "section_list->next = pwVar8;" (assignment_expression "section_list->next = pwVar8" (field_expression "section_list->next" identifier -> field_identifier) = identifier) ;) (expression_statement "pwVar8 = section_list;" (assignment_expression "pwVar8 = section_list" identifier = identifier) ;) }) while (parenthesized_expression "(pwVar6 != (wildcard_list *)0x0)" ( (binary_expression "pwVar6 != (wildcard_list *)0x0" identifier != (cast_expression "(wildcard_list *)0x0" ( (type_descriptor "wildcard_list *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) })) (expression_statement "plVar1 = stat_ptr;" (assignment_expression "plVar1 = stat_ptr" identifier = identifier) ;) (if_statement "if (filespec == (wildcard_spec *)0x0) {\n    plVar3 = (lang_statement_union *)stat_alloc(0x80);\n    (plVar3->header).next = (lang_statement_union *)0x0;\n    (plVar3->header).type = lang_wild_statement_enum;\n    *plVar1->tail = plVar3;\n    plVar1->tail = (lang_statement_union **)plVar3;\n    (plVar3->wild_statement).filename = (char *)0x0;\n    (plVar3->wild_statement).filenames_sorted = 0;\n    (plVar3->wild_statement).section_flag_list = (flag_info *)0x0;\n    (plVar3->wild_statement).exclude_name_list = (name_list *)0x0;\n  }\n  else {\n    __s = (byte *)filespec->name;\n    bVar15 = false;\n    bVar16 = __s == (byte *)0x0;\n    if (!bVar16) {\n      lVar9 = 2;\n      pbVar10 = __s;\n      pbVar11 = &DAT_0016c217;\n      do {\n        if (lVar9 == 0) break;\n        lVar9 = lVar9 + -1;\n        bVar15 = *pbVar10 < *pbVar11;\n        bVar16 = *pbVar10 == *pbVar11;\n        pbVar10 = pbVar10 + 1;\n        pbVar11 = pbVar11 + 1;\n      } while (bVar16);\n      if ((!bVar15 && !bVar16) == bVar15) {\n        filespec->name = (char *)0x0;\n      }\n      else {\n        pcVar7 = strpbrk((char *)__s,"?*[");\n        if (pcVar7 == (char *)0x0) {\n          lang_has_input_file = 1;\n        }\n      }\n    }\n    plVar3 = (lang_statement_union *)stat_alloc(0x80);\n    (plVar3->header).next = (lang_statement_union *)0x0;\n    (plVar3->header).type = lang_wild_statement_enum;\n    *plVar1->tail = plVar3;\n    pcVar7 = filespec->name;\n    plVar1->tail = (lang_statement_union **)plVar3;\n    (plVar3->wild_statement).filename = pcVar7;\n    (plVar3->wild_statement).filenames_sorted = (uint)(filespec->sorted == by_name);\n    (plVar3->wild_statement).section_flag_list = filespec->section_flag_list;\n    (plVar3->wild_statement).exclude_name_list = filespec->exclude_name_list;\n  }" if (parenthesized_expression "(filespec == (wildcard_spec *)0x0)" ( (binary_expression "filespec == (wildcard_spec *)0x0" identifier == (cast_expression "(wildcard_spec *)0x0" ( (type_descriptor "wildcard_spec *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    plVar3 = (lang_statement_union *)stat_alloc(0x80);\n    (plVar3->header).next = (lang_statement_union *)0x0;\n    (plVar3->header).type = lang_wild_statement_enum;\n    *plVar1->tail = plVar3;\n    plVar1->tail = (lang_statement_union **)plVar3;\n    (plVar3->wild_statement).filename = (char *)0x0;\n    (plVar3->wild_statement).filenames_sorted = 0;\n    (plVar3->wild_statement).section_flag_list = (flag_info *)0x0;\n    (plVar3->wild_statement).exclude_name_list = (name_list *)0x0;\n  }" { (expression_statement "plVar3 = (lang_statement_union *)stat_alloc(0x80);" (assignment_expression "plVar3 = (lang_statement_union *)stat_alloc(0x80)" identifier = (cast_expression "(lang_statement_union *)stat_alloc(0x80)" ( (type_descriptor "lang_statement_union *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "stat_alloc(0x80)" identifier (argument_list "(0x80)" ( number_literal ))))) ;) (expression_statement "(plVar3->header).next = (lang_statement_union *)0x0;" (assignment_expression "(plVar3->header).next = (lang_statement_union *)0x0" (field_expression "(plVar3->header).next" (parenthesized_expression "(plVar3->header)" ( (field_expression "plVar3->header" identifier -> field_identifier) )) . field_identifier) = (cast_expression "(lang_statement_union *)0x0" ( (type_descriptor "lang_statement_union *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "(plVar3->header).type = lang_wild_statement_enum;" (assignment_expression "(plVar3->header).type = lang_wild_statement_enum" (field_expression "(plVar3->header).type" (parenthesized_expression "(plVar3->header)" ( (field_expression "plVar3->header" identifier -> field_identifier) )) . field_identifier) = identifier) ;) (expression_statement "*plVar1->tail = plVar3;" (assignment_expression "*plVar1->tail = plVar3" (pointer_expression "*plVar1->tail" * (field_expression "plVar1->tail" identifier -> field_identifier)) = identifier) ;) (expression_statement "plVar1->tail = (lang_statement_union **)plVar3;" (assignment_expression "plVar1->tail = (lang_statement_union **)plVar3" (field_expression "plVar1->tail" identifier -> field_identifier) = (cast_expression "(lang_statement_union **)plVar3" ( (type_descriptor "lang_statement_union **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) ;) (expression_statement "(plVar3->wild_statement).filename = (char *)0x0;" (assignment_expression "(plVar3->wild_statement).filename = (char *)0x0" (field_expression "(plVar3->wild_statement).filename" (parenthesized_expression "(plVar3->wild_statement)" ( (field_expression "plVar3->wild_statement" identifier -> field_identifier) )) . field_identifier) = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "(plVar3->wild_statement).filenames_sorted = 0;" (assignment_expression "(plVar3->wild_statement).filenames_sorted = 0" (field_expression "(plVar3->wild_statement).filenames_sorted" (parenthesized_expression "(plVar3->wild_statement)" ( (field_expression "plVar3->wild_statement" identifier -> field_identifier) )) . field_identifier) = number_literal) ;) (expression_statement "(plVar3->wild_statement).section_flag_list = (flag_info *)0x0;" (assignment_expression "(plVar3->wild_statement).section_flag_list = (flag_info *)0x0" (field_expression "(plVar3->wild_statement).section_flag_list" (parenthesized_expression "(plVar3->wild_statement)" ( (field_expression "plVar3->wild_statement" identifier -> field_identifier) )) . field_identifier) = (cast_expression "(flag_info *)0x0" ( (type_descriptor "flag_info *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "(plVar3->wild_statement).exclude_name_list = (name_list *)0x0;" (assignment_expression "(plVar3->wild_statement).exclude_name_list = (name_list *)0x0" (field_expression "(plVar3->wild_statement).exclude_name_list" (parenthesized_expression "(plVar3->wild_statement)" ( (field_expression "plVar3->wild_statement" identifier -> field_identifier) )) . field_identifier) = (cast_expression "(name_list *)0x0" ( (type_descriptor "name_list *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else {\n    __s = (byte *)filespec->name;\n    bVar15 = false;\n    bVar16 = __s == (byte *)0x0;\n    if (!bVar16) {\n      lVar9 = 2;\n      pbVar10 = __s;\n      pbVar11 = &DAT_0016c217;\n      do {\n        if (lVar9 == 0) break;\n        lVar9 = lVar9 + -1;\n        bVar15 = *pbVar10 < *pbVar11;\n        bVar16 = *pbVar10 == *pbVar11;\n        pbVar10 = pbVar10 + 1;\n        pbVar11 = pbVar11 + 1;\n      } while (bVar16);\n      if ((!bVar15 && !bVar16) == bVar15) {\n        filespec->name = (char *)0x0;\n      }\n      else {\n        pcVar7 = strpbrk((char *)__s,"?*[");\n        if (pcVar7 == (char *)0x0) {\n          lang_has_input_file = 1;\n        }\n      }\n    }\n    plVar3 = (lang_statement_union *)stat_alloc(0x80);\n    (plVar3->header).next = (lang_statement_union *)0x0;\n    (plVar3->header).type = lang_wild_statement_enum;\n    *plVar1->tail = plVar3;\n    pcVar7 = filespec->name;\n    plVar1->tail = (lang_statement_union **)plVar3;\n    (plVar3->wild_statement).filename = pcVar7;\n    (plVar3->wild_statement).filenames_sorted = (uint)(filespec->sorted == by_name);\n    (plVar3->wild_statement).section_flag_list = filespec->section_flag_list;\n    (plVar3->wild_statement).exclude_name_list = filespec->exclude_name_list;\n  }" else (compound_statement "{\n    __s = (byte *)filespec->name;\n    bVar15 = false;\n    bVar16 = __s == (byte *)0x0;\n    if (!bVar16) {\n      lVar9 = 2;\n      pbVar10 = __s;\n      pbVar11 = &DAT_0016c217;\n      do {\n        if (lVar9 == 0) break;\n        lVar9 = lVar9 + -1;\n        bVar15 = *pbVar10 < *pbVar11;\n        bVar16 = *pbVar10 == *pbVar11;\n        pbVar10 = pbVar10 + 1;\n        pbVar11 = pbVar11 + 1;\n      } while (bVar16);\n      if ((!bVar15 && !bVar16) == bVar15) {\n        filespec->name = (char *)0x0;\n      }\n      else {\n        pcVar7 = strpbrk((char *)__s,"?*[");\n        if (pcVar7 == (char *)0x0) {\n          lang_has_input_file = 1;\n        }\n      }\n    }\n    plVar3 = (lang_statement_union *)stat_alloc(0x80);\n    (plVar3->header).next = (lang_statement_union *)0x0;\n    (plVar3->header).type = lang_wild_statement_enum;\n    *plVar1->tail = plVar3;\n    pcVar7 = filespec->name;\n    plVar1->tail = (lang_statement_union **)plVar3;\n    (plVar3->wild_statement).filename = pcVar7;\n    (plVar3->wild_statement).filenames_sorted = (uint)(filespec->sorted == by_name);\n    (plVar3->wild_statement).section_flag_list = filespec->section_flag_list;\n    (plVar3->wild_statement).exclude_name_list = filespec->exclude_name_list;\n  }" { (expression_statement "__s = (byte *)filespec->name;" (assignment_expression "__s = (byte *)filespec->name" identifier = (cast_expression "(byte *)filespec->name" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "filespec->name" identifier -> field_identifier))) ;) (expression_statement "bVar15 = false;" (assignment_expression "bVar15 = false" identifier = false) ;) (expression_statement "bVar16 = __s == (byte *)0x0;" (assignment_expression "bVar16 = __s == (byte *)0x0" identifier = (binary_expression "__s == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ;) (if_statement "if (!bVar16) {\n      lVar9 = 2;\n      pbVar10 = __s;\n      pbVar11 = &DAT_0016c217;\n      do {\n        if (lVar9 == 0) break;\n        lVar9 = lVar9 + -1;\n        bVar15 = *pbVar10 < *pbVar11;\n        bVar16 = *pbVar10 == *pbVar11;\n        pbVar10 = pbVar10 + 1;\n        pbVar11 = pbVar11 + 1;\n      } while (bVar16);\n      if ((!bVar15 && !bVar16) == bVar15) {\n        filespec->name = (char *)0x0;\n      }\n      else {\n        pcVar7 = strpbrk((char *)__s,"?*[");\n        if (pcVar7 == (char *)0x0) {\n          lang_has_input_file = 1;\n        }\n      }\n    }" if (parenthesized_expression "(!bVar16)" ( (unary_expression "!bVar16" ! identifier) )) (compound_statement "{\n      lVar9 = 2;\n      pbVar10 = __s;\n      pbVar11 = &DAT_0016c217;\n      do {\n        if (lVar9 == 0) break;\n        lVar9 = lVar9 + -1;\n        bVar15 = *pbVar10 < *pbVar11;\n        bVar16 = *pbVar10 == *pbVar11;\n        pbVar10 = pbVar10 + 1;\n        pbVar11 = pbVar11 + 1;\n      } while (bVar16);\n      if ((!bVar15 && !bVar16) == bVar15) {\n        filespec->name = (char *)0x0;\n      }\n      else {\n        pcVar7 = strpbrk((char *)__s,"?*[");\n        if (pcVar7 == (char *)0x0) {\n          lang_has_input_file = 1;\n        }\n      }\n    }" { (expression_statement "lVar9 = 2;" (assignment_expression "lVar9 = 2" identifier = number_literal) ;) (expression_statement "pbVar10 = __s;" (assignment_expression "pbVar10 = __s" identifier = identifier) ;) (expression_statement "pbVar11 = &DAT_0016c217;" (assignment_expression "pbVar11 = &DAT_0016c217" identifier = (pointer_expression "&DAT_0016c217" & identifier)) ;) (do_statement "do {\n        if (lVar9 == 0) break;\n        lVar9 = lVar9 + -1;\n        bVar15 = *pbVar10 < *pbVar11;\n        bVar16 = *pbVar10 == *pbVar11;\n        pbVar10 = pbVar10 + 1;\n        pbVar11 = pbVar11 + 1;\n      } while (bVar16);" do (compound_statement "{\n        if (lVar9 == 0) break;\n        lVar9 = lVar9 + -1;\n        bVar15 = *pbVar10 < *pbVar11;\n        bVar16 = *pbVar10 == *pbVar11;\n        pbVar10 = pbVar10 + 1;\n        pbVar11 = pbVar11 + 1;\n      }" { (if_statement "if (lVar9 == 0) break;" if (parenthesized_expression "(lVar9 == 0)" ( (binary_expression "lVar9 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar9 = lVar9 + -1;" (assignment_expression "lVar9 = lVar9 + -1" identifier = (binary_expression "lVar9 + -1" identifier + number_literal)) ;) (expression_statement "bVar15 = *pbVar10 < *pbVar11;" (assignment_expression "bVar15 = *pbVar10 < *pbVar11" identifier = (binary_expression "*pbVar10 < *pbVar11" (pointer_expression "*pbVar10" * identifier) < (pointer_expression "*pbVar11" * identifier))) ;) (expression_statement "bVar16 = *pbVar10 == *pbVar11;" (assignment_expression "bVar16 = *pbVar10 == *pbVar11" identifier = (binary_expression "*pbVar10 == *pbVar11" (pointer_expression "*pbVar10" * identifier) == (pointer_expression "*pbVar11" * identifier))) ;) (expression_statement "pbVar10 = pbVar10 + 1;" (assignment_expression "pbVar10 = pbVar10 + 1" identifier = (binary_expression "pbVar10 + 1" identifier + number_literal)) ;) (expression_statement "pbVar11 = pbVar11 + 1;" (assignment_expression "pbVar11 = pbVar11 + 1" identifier = (binary_expression "pbVar11 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(bVar16)" ( identifier )) ;) (if_statement "if ((!bVar15 && !bVar16) == bVar15) {\n        filespec->name = (char *)0x0;\n      }\n      else {\n        pcVar7 = strpbrk((char *)__s,"?*[");\n        if (pcVar7 == (char *)0x0) {\n          lang_has_input_file = 1;\n        }\n      }" if (parenthesized_expression "((!bVar15 && !bVar16) == bVar15)" ( (binary_expression "(!bVar15 && !bVar16) == bVar15" (parenthesized_expression "(!bVar15 && !bVar16)" ( (binary_expression "!bVar15 && !bVar16" (unary_expression "!bVar15" ! identifier) && (unary_expression "!bVar16" ! identifier)) )) == identifier) )) (compound_statement "{\n        filespec->name = (char *)0x0;\n      }" { (expression_statement "filespec->name = (char *)0x0;" (assignment_expression "filespec->name = (char *)0x0" (field_expression "filespec->name" identifier -> field_identifier) = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else {\n        pcVar7 = strpbrk((char *)__s,"?*[");\n        if (pcVar7 == (char *)0x0) {\n          lang_has_input_file = 1;\n        }\n      }" else (compound_statement "{\n        pcVar7 = strpbrk((char *)__s,"?*[");\n        if (pcVar7 == (char *)0x0) {\n          lang_has_input_file = 1;\n        }\n      }" { (expression_statement "pcVar7 = strpbrk((char *)__s,"?*[");" (assignment_expression "pcVar7 = strpbrk((char *)__s,"?*[")" identifier = (call_expression "strpbrk((char *)__s,"?*[")" identifier (argument_list "((char *)__s,"?*[")" ( (cast_expression "(char *)__s" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , (string_literal ""?*["" " string_content ") )))) ;) (if_statement "if (pcVar7 == (char *)0x0) {\n          lang_has_input_file = 1;\n        }" if (parenthesized_expression "(pcVar7 == (char *)0x0)" ( (binary_expression "pcVar7 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          lang_has_input_file = 1;\n        }" { (expression_statement "lang_has_input_file = 1;" (assignment_expression "lang_has_input_file = 1" identifier = number_literal) ;) })) }))) })) (expression_statement "plVar3 = (lang_statement_union *)stat_alloc(0x80);" (assignment_expression "plVar3 = (lang_statement_union *)stat_alloc(0x80)" identifier = (cast_expression "(lang_statement_union *)stat_alloc(0x80)" ( (type_descriptor "lang_statement_union *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "stat_alloc(0x80)" identifier (argument_list "(0x80)" ( number_literal ))))) ;) (expression_statement "(plVar3->header).next = (lang_statement_union *)0x0;" (assignment_expression "(plVar3->header).next = (lang_statement_union *)0x0" (field_expression "(plVar3->header).next" (parenthesized_expression "(plVar3->header)" ( (field_expression "plVar3->header" identifier -> field_identifier) )) . field_identifier) = (cast_expression "(lang_statement_union *)0x0" ( (type_descriptor "lang_statement_union *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "(plVar3->header).type = lang_wild_statement_enum;" (assignment_expression "(plVar3->header).type = lang_wild_statement_enum" (field_expression "(plVar3->header).type" (parenthesized_expression "(plVar3->header)" ( (field_expression "plVar3->header" identifier -> field_identifier) )) . field_identifier) = identifier) ;) (expression_statement "*plVar1->tail = plVar3;" (assignment_expression "*plVar1->tail = plVar3" (pointer_expression "*plVar1->tail" * (field_expression "plVar1->tail" identifier -> field_identifier)) = identifier) ;) (expression_statement "pcVar7 = filespec->name;" (assignment_expression "pcVar7 = filespec->name" identifier = (field_expression "filespec->name" identifier -> field_identifier)) ;) (expression_statement "plVar1->tail = (lang_statement_union **)plVar3;" (assignment_expression "plVar1->tail = (lang_statement_union **)plVar3" (field_expression "plVar1->tail" identifier -> field_identifier) = (cast_expression "(lang_statement_union **)plVar3" ( (type_descriptor "lang_statement_union **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) ;) (expression_statement "(plVar3->wild_statement).filename = pcVar7;" (assignment_expression "(plVar3->wild_statement).filename = pcVar7" (field_expression "(plVar3->wild_statement).filename" (parenthesized_expression "(plVar3->wild_statement)" ( (field_expression "plVar3->wild_statement" identifier -> field_identifier) )) . field_identifier) = identifier) ;) (expression_statement "(plVar3->wild_statement).filenames_sorted = (uint)(filespec->sorted == by_name);" (assignment_expression "(plVar3->wild_statement).filenames_sorted = (uint)(filespec->sorted == by_name)" (field_expression "(plVar3->wild_statement).filenames_sorted" (parenthesized_expression "(plVar3->wild_statement)" ( (field_expression "plVar3->wild_statement" identifier -> field_identifier) )) . field_identifier) = (call_expression "(uint)(filespec->sorted == by_name)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(filespec->sorted == by_name)" ( (binary_expression "filespec->sorted == by_name" (field_expression "filespec->sorted" identifier -> field_identifier) == identifier) )))) ;) (expression_statement "(plVar3->wild_statement).section_flag_list = filespec->section_flag_list;" (assignment_expression "(plVar3->wild_statement).section_flag_list = filespec->section_flag_list" (field_expression "(plVar3->wild_statement).section_flag_list" (parenthesized_expression "(plVar3->wild_statement)" ( (field_expression "plVar3->wild_statement" identifier -> field_identifier) )) . field_identifier) = (field_expression "filespec->section_flag_list" identifier -> field_identifier)) ;) (expression_statement "(plVar3->wild_statement).exclude_name_list = filespec->exclude_name_list;" (assignment_expression "(plVar3->wild_statement).exclude_name_list = filespec->exclude_name_list" (field_expression "(plVar3->wild_statement).exclude_name_list" (parenthesized_expression "(plVar3->wild_statement)" ( (field_expression "plVar3->wild_statement" identifier -> field_identifier) )) . field_identifier) = (field_expression "filespec->exclude_name_list" identifier -> field_identifier)) ;) }))) (expression_statement "(plVar3->wild_statement).section_list = section_list;" (assignment_expression "(plVar3->wild_statement).section_list = section_list" (field_expression "(plVar3->wild_statement).section_list" (parenthesized_expression "(plVar3->wild_statement)" ( (field_expression "plVar3->wild_statement" identifier -> field_identifier) )) . field_identifier) = identifier) ;) (expression_statement "(plVar3->wild_statement).children.tail = &(plVar3->wild_statement).children.head;" (assignment_expression "(plVar3->wild_statement).children.tail = &(plVar3->wild_statement).children.head" (field_expression "(plVar3->wild_statement).children.tail" (field_expression "(plVar3->wild_statement).children" (parenthesized_expression "(plVar3->wild_statement)" ( (field_expression "plVar3->wild_statement" identifier -> field_identifier) )) . field_identifier) . field_identifier) = (pointer_expression "&(plVar3->wild_statement).children.head" & (field_expression "(plVar3->wild_statement).children.head" (field_expression "(plVar3->wild_statement).children" (parenthesized_expression "(plVar3->wild_statement)" ( (field_expression "plVar3->wild_statement" identifier -> field_identifier) )) . field_identifier) . field_identifier))) ;) (expression_statement "(plVar3->wild_statement).keep_sections = keep_sections;" (assignment_expression "(plVar3->wild_statement).keep_sections = keep_sections" (field_expression "(plVar3->wild_statement).keep_sections" (parenthesized_expression "(plVar3->wild_statement)" ( (field_expression "plVar3->wild_statement" identifier -> field_identifier) )) . field_identifier) = identifier) ;) (expression_statement "(plVar3->wild_statement).children.head = (lang_statement_union *)0x0;" (assignment_expression "(plVar3->wild_statement).children.head = (lang_statement_union *)0x0" (field_expression "(plVar3->wild_statement).children.head" (field_expression "(plVar3->wild_statement).children" (parenthesized_expression "(plVar3->wild_statement)" ( (field_expression "plVar3->wild_statement" identifier -> field_identifier) )) . field_identifier) . field_identifier) = (cast_expression "(lang_statement_union *)0x0" ( (type_descriptor "lang_statement_union *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "(plVar3->wild_statement).walk_wild_section_handler = walk_wild_section_general;" (assignment_expression "(plVar3->wild_statement).walk_wild_section_handler = walk_wild_section_general" (field_expression "(plVar3->wild_statement).walk_wild_section_handler" (parenthesized_expression "(plVar3->wild_statement)" ( (field_expression "plVar3->wild_statement" identifier -> field_identifier) )) . field_identifier) = identifier) ;) (expression_statement "(plVar3->wild_statement).handler_data[0] = (wildcard_list *)0x0;" (assignment_expression "(plVar3->wild_statement).handler_data[0] = (wildcard_list *)0x0" (subscript_expression "(plVar3->wild_statement).handler_data[0]" (field_expression "(plVar3->wild_statement).handler_data" (parenthesized_expression "(plVar3->wild_statement)" ( (field_expression "plVar3->wild_statement" identifier -> field_identifier) )) . field_identifier) [ number_literal ]) = (cast_expression "(wildcard_list *)0x0" ( (type_descriptor "wildcard_list *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "(plVar3->wild_statement).handler_data[1] = (wildcard_list *)0x0;" (assignment_expression "(plVar3->wild_statement).handler_data[1] = (wildcard_list *)0x0" (subscript_expression "(plVar3->wild_statement).handler_data[1]" (field_expression "(plVar3->wild_statement).handler_data" (parenthesized_expression "(plVar3->wild_statement)" ( (field_expression "plVar3->wild_statement" identifier -> field_identifier) )) . field_identifier) [ number_literal ]) = (cast_expression "(wildcard_list *)0x0" ( (type_descriptor "wildcard_list *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "(plVar3->wild_statement).handler_data[2] = (wildcard_list *)0x0;" (assignment_expression "(plVar3->wild_statement).handler_data[2] = (wildcard_list *)0x0" (subscript_expression "(plVar3->wild_statement).handler_data[2]" (field_expression "(plVar3->wild_statement).handler_data" (parenthesized_expression "(plVar3->wild_statement)" ( (field_expression "plVar3->wild_statement" identifier -> field_identifier) )) . field_identifier) [ number_literal ]) = (cast_expression "(wildcard_list *)0x0" ( (type_descriptor "wildcard_list *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "(plVar3->wild_statement).handler_data[3] = (wildcard_list *)0x0;" (assignment_expression "(plVar3->wild_statement).handler_data[3] = (wildcard_list *)0x0" (subscript_expression "(plVar3->wild_statement).handler_data[3]" (field_expression "(plVar3->wild_statement).handler_data" (parenthesized_expression "(plVar3->wild_statement)" ( (field_expression "plVar3->wild_statement" identifier -> field_identifier) )) . field_identifier) [ number_literal ]) = (cast_expression "(wildcard_list *)0x0" ( (type_descriptor "wildcard_list *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "(plVar3->wild_statement).tree = (lang_section_bst_type *)0x0;" (assignment_expression "(plVar3->wild_statement).tree = (lang_section_bst_type *)0x0" (field_expression "(plVar3->wild_statement).tree" (parenthesized_expression "(plVar3->wild_statement)" ( (field_expression "plVar3->wild_statement" identifier -> field_identifier) )) . field_identifier) = (cast_expression "(lang_section_bst_type *)0x0" ( (type_descriptor "lang_section_bst_type *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if ((section_list != (wildcard_list *)0x0) &&\n     (local_48 = (section_list->spec).name, local_48 != (char *)0x0)) {\n    local_4c = 0;\n    iVar12 = 1;\n    pwVar6 = section_list;\n    pcVar7 = local_48;\n    while( true ) {\n      pcVar4 = strpbrk(pcVar7,"?*[");\n      if (pcVar4 != (char *)0x0) {\n        sVar5 = strcspn(pcVar7,"*?[");\n        if (sVar5 < 4) {\n          return;\n        }\n        if (pcVar7[sVar5] != '*') {\n          return;\n        }\n        if (pcVar7[sVar5 + 1] != '\0') {\n          return;\n        }\n        local_4c = local_4c + 1;\n      }\n      pwVar6 = pwVar6->next;\n      if (pwVar6 == (wildcard_list *)0x0) break;\n      pcVar7 = (pwVar6->spec).name;\n      iVar12 = iVar12 + 1;\n      if (pcVar7 == (char *)0x0) {\n        return;\n      }\n    }\n    pwVar6 = section_list;\n    if (iVar12 < 5) {\n      while (pwVar8 = pwVar6->next, pwVar8 != (wildcard_list *)0x0) {\n        pcVar7 = (pwVar6->spec).name;\n        sVar5 = strcspn(pcVar7,"?*[");\n        uVar13 = sVar5 + 1;\n        pwVar14 = pwVar8;\n        if (pcVar7[sVar5] != '\0') {\n          uVar13 = sVar5;\n        }\n        do {\n          pcVar4 = (pwVar14->spec).name;\n          sVar5 = strcspn(pcVar4,"?*[");\n          __n = sVar5 + (pcVar4[sVar5] == '\0');\n          if (uVar13 <= __n) {\n            __n = uVar13;\n          }\n          iVar2 = memcmp(pcVar7,pcVar4,__n);\n          if (iVar2 == 0) {\n            return;\n          }\n          pwVar14 = pwVar14->next;\n          pwVar6 = pwVar8;\n        } while (pwVar14 != (wildcard_list *)0x0);\n      }\n      local_4c = local_4c + iVar12 * 0x100;\n      if (local_4c == 0x201) {\n        (plVar3->wild_statement).walk_wild_section_handler = walk_wild_section_specs2_wild1;\n      }\n      else if (local_4c < 0x202) {\n        if (local_4c == 0x100) {\n          (plVar3->wild_statement).walk_wild_section_handler = walk_wild_section_specs1_wild0;\n        }\n        else {\n          if (local_4c != 0x101) {\n            return;\n          }\n          (plVar3->wild_statement).walk_wild_section_handler = walk_wild_section_specs1_wild1;\n        }\n      }\n      else if (local_4c == 0x302) {\n        (plVar3->wild_statement).walk_wild_section_handler = walk_wild_section_specs3_wild2;\n      }\n      else {\n        if (local_4c != 0x402) {\n          return;\n        }\n        (plVar3->wild_statement).walk_wild_section_handler = walk_wild_section_specs4_wild2;\n      }\n      iVar12 = 0;\n      pcVar7 = local_48;\n      pwVar6 = section_list;\n      while( true ) {\n        pcVar7 = strpbrk(pcVar7,"?*[");\n        if (pcVar7 == (char *)0x0) {\n          lVar9 = (long)iVar12;\n          iVar12 = iVar12 + 1;\n          *(wildcard_list **)((long)plVar3 + lVar9 * 8 + 0x50) = pwVar6;\n        }\n        pwVar6 = pwVar6->next;\n        if (pwVar6 == (wildcard_list *)0x0) break;\n        pcVar7 = (pwVar6->spec).name;\n      }\n      while( true ) {\n        pcVar7 = strpbrk(local_48,"?*[");\n        if (pcVar7 != (char *)0x0) {\n          lVar9 = (long)iVar12;\n          iVar12 = iVar12 + 1;\n          *(wildcard_list **)((long)plVar3 + lVar9 * 8 + 0x50) = section_list;\n        }\n        section_list = section_list->next;\n        if (section_list == (wildcard_list *)0x0) break;\n        local_48 = (section_list->spec).name;\n      }\n    }\n  }" if (parenthesized_expression "((section_list != (wildcard_list *)0x0) &&\n     (local_48 = (section_list->spec).name, local_48 != (char *)0x0))" ( (binary_expression "(section_list != (wildcard_list *)0x0) &&\n     (local_48 = (section_list->spec).name, local_48 != (char *)0x0)" (parenthesized_expression "(section_list != (wildcard_list *)0x0)" ( (binary_expression "section_list != (wildcard_list *)0x0" identifier != (cast_expression "(wildcard_list *)0x0" ( (type_descriptor "wildcard_list *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(local_48 = (section_list->spec).name, local_48 != (char *)0x0)" ( (comma_expression "local_48 = (section_list->spec).name, local_48 != (char *)0x0" (assignment_expression "local_48 = (section_list->spec).name" identifier = (field_expression "(section_list->spec).name" (parenthesized_expression "(section_list->spec)" ( (field_expression "section_list->spec" identifier -> field_identifier) )) . field_identifier)) , (binary_expression "local_48 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (compound_statement "{\n    local_4c = 0;\n    iVar12 = 1;\n    pwVar6 = section_list;\n    pcVar7 = local_48;\n    while( true ) {\n      pcVar4 = strpbrk(pcVar7,"?*[");\n      if (pcVar4 != (char *)0x0) {\n        sVar5 = strcspn(pcVar7,"*?[");\n        if (sVar5 < 4) {\n          return;\n        }\n        if (pcVar7[sVar5] != '*') {\n          return;\n        }\n        if (pcVar7[sVar5 + 1] != '\0') {\n          return;\n        }\n        local_4c = local_4c + 1;\n      }\n      pwVar6 = pwVar6->next;\n      if (pwVar6 == (wildcard_list *)0x0) break;\n      pcVar7 = (pwVar6->spec).name;\n      iVar12 = iVar12 + 1;\n      if (pcVar7 == (char *)0x0) {\n        return;\n      }\n    }\n    pwVar6 = section_list;\n    if (iVar12 < 5) {\n      while (pwVar8 = pwVar6->next, pwVar8 != (wildcard_list *)0x0) {\n        pcVar7 = (pwVar6->spec).name;\n        sVar5 = strcspn(pcVar7,"?*[");\n        uVar13 = sVar5 + 1;\n        pwVar14 = pwVar8;\n        if (pcVar7[sVar5] != '\0') {\n          uVar13 = sVar5;\n        }\n        do {\n          pcVar4 = (pwVar14->spec).name;\n          sVar5 = strcspn(pcVar4,"?*[");\n          __n = sVar5 + (pcVar4[sVar5] == '\0');\n          if (uVar13 <= __n) {\n            __n = uVar13;\n          }\n          iVar2 = memcmp(pcVar7,pcVar4,__n);\n          if (iVar2 == 0) {\n            return;\n          }\n          pwVar14 = pwVar14->next;\n          pwVar6 = pwVar8;\n        } while (pwVar14 != (wildcard_list *)0x0);\n      }\n      local_4c = local_4c + iVar12 * 0x100;\n      if (local_4c == 0x201) {\n        (plVar3->wild_statement).walk_wild_section_handler = walk_wild_section_specs2_wild1;\n      }\n      else if (local_4c < 0x202) {\n        if (local_4c == 0x100) {\n          (plVar3->wild_statement).walk_wild_section_handler = walk_wild_section_specs1_wild0;\n        }\n        else {\n          if (local_4c != 0x101) {\n            return;\n          }\n          (plVar3->wild_statement).walk_wild_section_handler = walk_wild_section_specs1_wild1;\n        }\n      }\n      else if (local_4c == 0x302) {\n        (plVar3->wild_statement).walk_wild_section_handler = walk_wild_section_specs3_wild2;\n      }\n      else {\n        if (local_4c != 0x402) {\n          return;\n        }\n        (plVar3->wild_statement).walk_wild_section_handler = walk_wild_section_specs4_wild2;\n      }\n      iVar12 = 0;\n      pcVar7 = local_48;\n      pwVar6 = section_list;\n      while( true ) {\n        pcVar7 = strpbrk(pcVar7,"?*[");\n        if (pcVar7 == (char *)0x0) {\n          lVar9 = (long)iVar12;\n          iVar12 = iVar12 + 1;\n          *(wildcard_list **)((long)plVar3 + lVar9 * 8 + 0x50) = pwVar6;\n        }\n        pwVar6 = pwVar6->next;\n        if (pwVar6 == (wildcard_list *)0x0) break;\n        pcVar7 = (pwVar6->spec).name;\n      }\n      while( true ) {\n        pcVar7 = strpbrk(local_48,"?*[");\n        if (pcVar7 != (char *)0x0) {\n          lVar9 = (long)iVar12;\n          iVar12 = iVar12 + 1;\n          *(wildcard_list **)((long)plVar3 + lVar9 * 8 + 0x50) = section_list;\n        }\n        section_list = section_list->next;\n        if (section_list == (wildcard_list *)0x0) break;\n        local_48 = (section_list->spec).name;\n      }\n    }\n  }" { (expression_statement "local_4c = 0;" (assignment_expression "local_4c = 0" identifier = number_literal) ;) (expression_statement "iVar12 = 1;" (assignment_expression "iVar12 = 1" identifier = number_literal) ;) (expression_statement "pwVar6 = section_list;" (assignment_expression "pwVar6 = section_list" identifier = identifier) ;) (expression_statement "pcVar7 = local_48;" (assignment_expression "pcVar7 = local_48" identifier = identifier) ;) (while_statement "while( true ) {\n      pcVar4 = strpbrk(pcVar7,"?*[");\n      if (pcVar4 != (char *)0x0) {\n        sVar5 = strcspn(pcVar7,"*?[");\n        if (sVar5 < 4) {\n          return;\n        }\n        if (pcVar7[sVar5] != '*') {\n          return;\n        }\n        if (pcVar7[sVar5 + 1] != '\0') {\n          return;\n        }\n        local_4c = local_4c + 1;\n      }\n      pwVar6 = pwVar6->next;\n      if (pwVar6 == (wildcard_list *)0x0) break;\n      pcVar7 = (pwVar6->spec).name;\n      iVar12 = iVar12 + 1;\n      if (pcVar7 == (char *)0x0) {\n        return;\n      }\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      pcVar4 = strpbrk(pcVar7,"?*[");\n      if (pcVar4 != (char *)0x0) {\n        sVar5 = strcspn(pcVar7,"*?[");\n        if (sVar5 < 4) {\n          return;\n        }\n        if (pcVar7[sVar5] != '*') {\n          return;\n        }\n        if (pcVar7[sVar5 + 1] != '\0') {\n          return;\n        }\n        local_4c = local_4c + 1;\n      }\n      pwVar6 = pwVar6->next;\n      if (pwVar6 == (wildcard_list *)0x0) break;\n      pcVar7 = (pwVar6->spec).name;\n      iVar12 = iVar12 + 1;\n      if (pcVar7 == (char *)0x0) {\n        return;\n      }\n    }" { (expression_statement "pcVar4 = strpbrk(pcVar7,"?*[");" (assignment_expression "pcVar4 = strpbrk(pcVar7,"?*[")" identifier = (call_expression "strpbrk(pcVar7,"?*[")" identifier (argument_list "(pcVar7,"?*[")" ( identifier , (string_literal ""?*["" " string_content ") )))) ;) (if_statement "if (pcVar4 != (char *)0x0) {\n        sVar5 = strcspn(pcVar7,"*?[");\n        if (sVar5 < 4) {\n          return;\n        }\n        if (pcVar7[sVar5] != '*') {\n          return;\n        }\n        if (pcVar7[sVar5 + 1] != '\0') {\n          return;\n        }\n        local_4c = local_4c + 1;\n      }" if (parenthesized_expression "(pcVar4 != (char *)0x0)" ( (binary_expression "pcVar4 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        sVar5 = strcspn(pcVar7,"*?[");\n        if (sVar5 < 4) {\n          return;\n        }\n        if (pcVar7[sVar5] != '*') {\n          return;\n        }\n        if (pcVar7[sVar5 + 1] != '\0') {\n          return;\n        }\n        local_4c = local_4c + 1;\n      }" { (expression_statement "sVar5 = strcspn(pcVar7,"*?[");" (assignment_expression "sVar5 = strcspn(pcVar7,"*?[")" identifier = (call_expression "strcspn(pcVar7,"*?[")" identifier (argument_list "(pcVar7,"*?[")" ( identifier , (string_literal ""*?["" " string_content ") )))) ;) (if_statement "if (sVar5 < 4) {\n          return;\n        }" if (parenthesized_expression "(sVar5 < 4)" ( (binary_expression "sVar5 < 4" identifier < number_literal) )) (compound_statement "{\n          return;\n        }" { (return_statement "return;" return ;) })) (if_statement "if (pcVar7[sVar5] != '*') {\n          return;\n        }" if (parenthesized_expression "(pcVar7[sVar5] != '*')" ( (binary_expression "pcVar7[sVar5] != '*'" (subscript_expression "pcVar7[sVar5]" identifier [ identifier ]) != (char_literal "'*'" ' character ')) )) (compound_statement "{\n          return;\n        }" { (return_statement "return;" return ;) })) (if_statement "if (pcVar7[sVar5 + 1] != '\0') {\n          return;\n        }" if (parenthesized_expression "(pcVar7[sVar5 + 1] != '\0')" ( (binary_expression "pcVar7[sVar5 + 1] != '\0'" (subscript_expression "pcVar7[sVar5 + 1]" identifier [ (binary_expression "sVar5 + 1" identifier + number_literal) ]) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          return;\n        }" { (return_statement "return;" return ;) })) (expression_statement "local_4c = local_4c + 1;" (assignment_expression "local_4c = local_4c + 1" identifier = (binary_expression "local_4c + 1" identifier + number_literal)) ;) })) (expression_statement "pwVar6 = pwVar6->next;" (assignment_expression "pwVar6 = pwVar6->next" identifier = (field_expression "pwVar6->next" identifier -> field_identifier)) ;) (if_statement "if (pwVar6 == (wildcard_list *)0x0) break;" if (parenthesized_expression "(pwVar6 == (wildcard_list *)0x0)" ( (binary_expression "pwVar6 == (wildcard_list *)0x0" identifier == (cast_expression "(wildcard_list *)0x0" ( (type_descriptor "wildcard_list *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (break_statement "break;" break ;)) (expression_statement "pcVar7 = (pwVar6->spec).name;" (assignment_expression "pcVar7 = (pwVar6->spec).name" identifier = (field_expression "(pwVar6->spec).name" (parenthesized_expression "(pwVar6->spec)" ( (field_expression "pwVar6->spec" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "iVar12 = iVar12 + 1;" (assignment_expression "iVar12 = iVar12 + 1" identifier = (binary_expression "iVar12 + 1" identifier + number_literal)) ;) (if_statement "if (pcVar7 == (char *)0x0) {\n        return;\n      }" if (parenthesized_expression "(pcVar7 == (char *)0x0)" ( (binary_expression "pcVar7 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        return;\n      }" { (return_statement "return;" return ;) })) })) (expression_statement "pwVar6 = section_list;" (assignment_expression "pwVar6 = section_list" identifier = identifier) ;) (if_statement "if (iVar12 < 5) {\n      while (pwVar8 = pwVar6->next, pwVar8 != (wildcard_list *)0x0) {\n        pcVar7 = (pwVar6->spec).name;\n        sVar5 = strcspn(pcVar7,"?*[");\n        uVar13 = sVar5 + 1;\n        pwVar14 = pwVar8;\n        if (pcVar7[sVar5] != '\0') {\n          uVar13 = sVar5;\n        }\n        do {\n          pcVar4 = (pwVar14->spec).name;\n          sVar5 = strcspn(pcVar4,"?*[");\n          __n = sVar5 + (pcVar4[sVar5] == '\0');\n          if (uVar13 <= __n) {\n            __n = uVar13;\n          }\n          iVar2 = memcmp(pcVar7,pcVar4,__n);\n          if (iVar2 == 0) {\n            return;\n          }\n          pwVar14 = pwVar14->next;\n          pwVar6 = pwVar8;\n        } while (pwVar14 != (wildcard_list *)0x0);\n      }\n      local_4c = local_4c + iVar12 * 0x100;\n      if (local_4c == 0x201) {\n        (plVar3->wild_statement).walk_wild_section_handler = walk_wild_section_specs2_wild1;\n      }\n      else if (local_4c < 0x202) {\n        if (local_4c == 0x100) {\n          (plVar3->wild_statement).walk_wild_section_handler = walk_wild_section_specs1_wild0;\n        }\n        else {\n          if (local_4c != 0x101) {\n            return;\n          }\n          (plVar3->wild_statement).walk_wild_section_handler = walk_wild_section_specs1_wild1;\n        }\n      }\n      else if (local_4c == 0x302) {\n        (plVar3->wild_statement).walk_wild_section_handler = walk_wild_section_specs3_wild2;\n      }\n      else {\n        if (local_4c != 0x402) {\n          return;\n        }\n        (plVar3->wild_statement).walk_wild_section_handler = walk_wild_section_specs4_wild2;\n      }\n      iVar12 = 0;\n      pcVar7 = local_48;\n      pwVar6 = section_list;\n      while( true ) {\n        pcVar7 = strpbrk(pcVar7,"?*[");\n        if (pcVar7 == (char *)0x0) {\n          lVar9 = (long)iVar12;\n          iVar12 = iVar12 + 1;\n          *(wildcard_list **)((long)plVar3 + lVar9 * 8 + 0x50) = pwVar6;\n        }\n        pwVar6 = pwVar6->next;\n        if (pwVar6 == (wildcard_list *)0x0) break;\n        pcVar7 = (pwVar6->spec).name;\n      }\n      while( true ) {\n        pcVar7 = strpbrk(local_48,"?*[");\n        if (pcVar7 != (char *)0x0) {\n          lVar9 = (long)iVar12;\n          iVar12 = iVar12 + 1;\n          *(wildcard_list **)((long)plVar3 + lVar9 * 8 + 0x50) = section_list;\n        }\n        section_list = section_list->next;\n        if (section_list == (wildcard_list *)0x0) break;\n        local_48 = (section_list->spec).name;\n      }\n    }" if (parenthesized_expression "(iVar12 < 5)" ( (binary_expression "iVar12 < 5" identifier < number_literal) )) (compound_statement "{\n      while (pwVar8 = pwVar6->next, pwVar8 != (wildcard_list *)0x0) {\n        pcVar7 = (pwVar6->spec).name;\n        sVar5 = strcspn(pcVar7,"?*[");\n        uVar13 = sVar5 + 1;\n        pwVar14 = pwVar8;\n        if (pcVar7[sVar5] != '\0') {\n          uVar13 = sVar5;\n        }\n        do {\n          pcVar4 = (pwVar14->spec).name;\n          sVar5 = strcspn(pcVar4,"?*[");\n          __n = sVar5 + (pcVar4[sVar5] == '\0');\n          if (uVar13 <= __n) {\n            __n = uVar13;\n          }\n          iVar2 = memcmp(pcVar7,pcVar4,__n);\n          if (iVar2 == 0) {\n            return;\n          }\n          pwVar14 = pwVar14->next;\n          pwVar6 = pwVar8;\n        } while (pwVar14 != (wildcard_list *)0x0);\n      }\n      local_4c = local_4c + iVar12 * 0x100;\n      if (local_4c == 0x201) {\n        (plVar3->wild_statement).walk_wild_section_handler = walk_wild_section_specs2_wild1;\n      }\n      else if (local_4c < 0x202) {\n        if (local_4c == 0x100) {\n          (plVar3->wild_statement).walk_wild_section_handler = walk_wild_section_specs1_wild0;\n        }\n        else {\n          if (local_4c != 0x101) {\n            return;\n          }\n          (plVar3->wild_statement).walk_wild_section_handler = walk_wild_section_specs1_wild1;\n        }\n      }\n      else if (local_4c == 0x302) {\n        (plVar3->wild_statement).walk_wild_section_handler = walk_wild_section_specs3_wild2;\n      }\n      else {\n        if (local_4c != 0x402) {\n          return;\n        }\n        (plVar3->wild_statement).walk_wild_section_handler = walk_wild_section_specs4_wild2;\n      }\n      iVar12 = 0;\n      pcVar7 = local_48;\n      pwVar6 = section_list;\n      while( true ) {\n        pcVar7 = strpbrk(pcVar7,"?*[");\n        if (pcVar7 == (char *)0x0) {\n          lVar9 = (long)iVar12;\n          iVar12 = iVar12 + 1;\n          *(wildcard_list **)((long)plVar3 + lVar9 * 8 + 0x50) = pwVar6;\n        }\n        pwVar6 = pwVar6->next;\n        if (pwVar6 == (wildcard_list *)0x0) break;\n        pcVar7 = (pwVar6->spec).name;\n      }\n      while( true ) {\n        pcVar7 = strpbrk(local_48,"?*[");\n        if (pcVar7 != (char *)0x0) {\n          lVar9 = (long)iVar12;\n          iVar12 = iVar12 + 1;\n          *(wildcard_list **)((long)plVar3 + lVar9 * 8 + 0x50) = section_list;\n        }\n        section_list = section_list->next;\n        if (section_list == (wildcard_list *)0x0) break;\n        local_48 = (section_list->spec).name;\n      }\n    }" { (while_statement "while (pwVar8 = pwVar6->next, pwVar8 != (wildcard_list *)0x0) {\n        pcVar7 = (pwVar6->spec).name;\n        sVar5 = strcspn(pcVar7,"?*[");\n        uVar13 = sVar5 + 1;\n        pwVar14 = pwVar8;\n        if (pcVar7[sVar5] != '\0') {\n          uVar13 = sVar5;\n        }\n        do {\n          pcVar4 = (pwVar14->spec).name;\n          sVar5 = strcspn(pcVar4,"?*[");\n          __n = sVar5 + (pcVar4[sVar5] == '\0');\n          if (uVar13 <= __n) {\n            __n = uVar13;\n          }\n          iVar2 = memcmp(pcVar7,pcVar4,__n);\n          if (iVar2 == 0) {\n            return;\n          }\n          pwVar14 = pwVar14->next;\n          pwVar6 = pwVar8;\n        } while (pwVar14 != (wildcard_list *)0x0);\n      }" while (parenthesized_expression "(pwVar8 = pwVar6->next, pwVar8 != (wildcard_list *)0x0)" ( (comma_expression "pwVar8 = pwVar6->next, pwVar8 != (wildcard_list *)0x0" (assignment_expression "pwVar8 = pwVar6->next" identifier = (field_expression "pwVar6->next" identifier -> field_identifier)) , (binary_expression "pwVar8 != (wildcard_list *)0x0" identifier != (cast_expression "(wildcard_list *)0x0" ( (type_descriptor "wildcard_list *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) )) (compound_statement "{\n        pcVar7 = (pwVar6->spec).name;\n        sVar5 = strcspn(pcVar7,"?*[");\n        uVar13 = sVar5 + 1;\n        pwVar14 = pwVar8;\n        if (pcVar7[sVar5] != '\0') {\n          uVar13 = sVar5;\n        }\n        do {\n          pcVar4 = (pwVar14->spec).name;\n          sVar5 = strcspn(pcVar4,"?*[");\n          __n = sVar5 + (pcVar4[sVar5] == '\0');\n          if (uVar13 <= __n) {\n            __n = uVar13;\n          }\n          iVar2 = memcmp(pcVar7,pcVar4,__n);\n          if (iVar2 == 0) {\n            return;\n          }\n          pwVar14 = pwVar14->next;\n          pwVar6 = pwVar8;\n        } while (pwVar14 != (wildcard_list *)0x0);\n      }" { (expression_statement "pcVar7 = (pwVar6->spec).name;" (assignment_expression "pcVar7 = (pwVar6->spec).name" identifier = (field_expression "(pwVar6->spec).name" (parenthesized_expression "(pwVar6->spec)" ( (field_expression "pwVar6->spec" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "sVar5 = strcspn(pcVar7,"?*[");" (assignment_expression "sVar5 = strcspn(pcVar7,"?*[")" identifier = (call_expression "strcspn(pcVar7,"?*[")" identifier (argument_list "(pcVar7,"?*[")" ( identifier , (string_literal ""?*["" " string_content ") )))) ;) (expression_statement "uVar13 = sVar5 + 1;" (assignment_expression "uVar13 = sVar5 + 1" identifier = (binary_expression "sVar5 + 1" identifier + number_literal)) ;) (expression_statement "pwVar14 = pwVar8;" (assignment_expression "pwVar14 = pwVar8" identifier = identifier) ;) (if_statement "if (pcVar7[sVar5] != '\0') {\n          uVar13 = sVar5;\n        }" if (parenthesized_expression "(pcVar7[sVar5] != '\0')" ( (binary_expression "pcVar7[sVar5] != '\0'" (subscript_expression "pcVar7[sVar5]" identifier [ identifier ]) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          uVar13 = sVar5;\n        }" { (expression_statement "uVar13 = sVar5;" (assignment_expression "uVar13 = sVar5" identifier = identifier) ;) })) (do_statement "do {\n          pcVar4 = (pwVar14->spec).name;\n          sVar5 = strcspn(pcVar4,"?*[");\n          __n = sVar5 + (pcVar4[sVar5] == '\0');\n          if (uVar13 <= __n) {\n            __n = uVar13;\n          }\n          iVar2 = memcmp(pcVar7,pcVar4,__n);\n          if (iVar2 == 0) {\n            return;\n          }\n          pwVar14 = pwVar14->next;\n          pwVar6 = pwVar8;\n        } while (pwVar14 != (wildcard_list *)0x0);" do (compound_statement "{\n          pcVar4 = (pwVar14->spec).name;\n          sVar5 = strcspn(pcVar4,"?*[");\n          __n = sVar5 + (pcVar4[sVar5] == '\0');\n          if (uVar13 <= __n) {\n            __n = uVar13;\n          }\n          iVar2 = memcmp(pcVar7,pcVar4,__n);\n          if (iVar2 == 0) {\n            return;\n          }\n          pwVar14 = pwVar14->next;\n          pwVar6 = pwVar8;\n        }" { (expression_statement "pcVar4 = (pwVar14->spec).name;" (assignment_expression "pcVar4 = (pwVar14->spec).name" identifier = (field_expression "(pwVar14->spec).name" (parenthesized_expression "(pwVar14->spec)" ( (field_expression "pwVar14->spec" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "sVar5 = strcspn(pcVar4,"?*[");" (assignment_expression "sVar5 = strcspn(pcVar4,"?*[")" identifier = (call_expression "strcspn(pcVar4,"?*[")" identifier (argument_list "(pcVar4,"?*[")" ( identifier , (string_literal ""?*["" " string_content ") )))) ;) (expression_statement "__n = sVar5 + (pcVar4[sVar5] == '\0');" (assignment_expression "__n = sVar5 + (pcVar4[sVar5] == '\0')" identifier = (binary_expression "sVar5 + (pcVar4[sVar5] == '\0')" identifier + (parenthesized_expression "(pcVar4[sVar5] == '\0')" ( (binary_expression "pcVar4[sVar5] == '\0'" (subscript_expression "pcVar4[sVar5]" identifier [ identifier ]) == (char_literal "'\0'" ' escape_sequence ')) )))) ;) (if_statement "if (uVar13 <= __n) {\n            __n = uVar13;\n          }" if (parenthesized_expression "(uVar13 <= __n)" ( (binary_expression "uVar13 <= __n" identifier <= identifier) )) (compound_statement "{\n            __n = uVar13;\n          }" { (expression_statement "__n = uVar13;" (assignment_expression "__n = uVar13" identifier = identifier) ;) })) (expression_statement "iVar2 = memcmp(pcVar7,pcVar4,__n);" (assignment_expression "iVar2 = memcmp(pcVar7,pcVar4,__n)" identifier = (call_expression "memcmp(pcVar7,pcVar4,__n)" identifier (argument_list "(pcVar7,pcVar4,__n)" ( identifier , identifier , identifier )))) ;) (if_statement "if (iVar2 == 0) {\n            return;\n          }" if (parenthesized_expression "(iVar2 == 0)" ( (binary_expression "iVar2 == 0" identifier == number_literal) )) (compound_statement "{\n            return;\n          }" { (return_statement "return;" return ;) })) (expression_statement "pwVar14 = pwVar14->next;" (assignment_expression "pwVar14 = pwVar14->next" identifier = (field_expression "pwVar14->next" identifier -> field_identifier)) ;) (expression_statement "pwVar6 = pwVar8;" (assignment_expression "pwVar6 = pwVar8" identifier = identifier) ;) }) while (parenthesized_expression "(pwVar14 != (wildcard_list *)0x0)" ( (binary_expression "pwVar14 != (wildcard_list *)0x0" identifier != (cast_expression "(wildcard_list *)0x0" ( (type_descriptor "wildcard_list *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) })) (expression_statement "local_4c = local_4c + iVar12 * 0x100;" (assignment_expression "local_4c = local_4c + iVar12 * 0x100" identifier = (binary_expression "local_4c + iVar12 * 0x100" identifier + (binary_expression "iVar12 * 0x100" identifier * number_literal))) ;) (if_statement "if (local_4c == 0x201) {\n        (plVar3->wild_statement).walk_wild_section_handler = walk_wild_section_specs2_wild1;\n      }\n      else if (local_4c < 0x202) {\n        if (local_4c == 0x100) {\n          (plVar3->wild_statement).walk_wild_section_handler = walk_wild_section_specs1_wild0;\n        }\n        else {\n          if (local_4c != 0x101) {\n            return;\n          }\n          (plVar3->wild_statement).walk_wild_section_handler = walk_wild_section_specs1_wild1;\n        }\n      }\n      else if (local_4c == 0x302) {\n        (plVar3->wild_statement).walk_wild_section_handler = walk_wild_section_specs3_wild2;\n      }\n      else {\n        if (local_4c != 0x402) {\n          return;\n        }\n        (plVar3->wild_statement).walk_wild_section_handler = walk_wild_section_specs4_wild2;\n      }" if (parenthesized_expression "(local_4c == 0x201)" ( (binary_expression "local_4c == 0x201" identifier == number_literal) )) (compound_statement "{\n        (plVar3->wild_statement).walk_wild_section_handler = walk_wild_section_specs2_wild1;\n      }" { (expression_statement "(plVar3->wild_statement).walk_wild_section_handler = walk_wild_section_specs2_wild1;" (assignment_expression "(plVar3->wild_statement).walk_wild_section_handler = walk_wild_section_specs2_wild1" (field_expression "(plVar3->wild_statement).walk_wild_section_handler" (parenthesized_expression "(plVar3->wild_statement)" ( (field_expression "plVar3->wild_statement" identifier -> field_identifier) )) . field_identifier) = identifier) ;) }) (else_clause "else if (local_4c < 0x202) {\n        if (local_4c == 0x100) {\n          (plVar3->wild_statement).walk_wild_section_handler = walk_wild_section_specs1_wild0;\n        }\n        else {\n          if (local_4c != 0x101) {\n            return;\n          }\n          (plVar3->wild_statement).walk_wild_section_handler = walk_wild_section_specs1_wild1;\n        }\n      }\n      else if (local_4c == 0x302) {\n        (plVar3->wild_statement).walk_wild_section_handler = walk_wild_section_specs3_wild2;\n      }\n      else {\n        if (local_4c != 0x402) {\n          return;\n        }\n        (plVar3->wild_statement).walk_wild_section_handler = walk_wild_section_specs4_wild2;\n      }" else (if_statement "if (local_4c < 0x202) {\n        if (local_4c == 0x100) {\n          (plVar3->wild_statement).walk_wild_section_handler = walk_wild_section_specs1_wild0;\n        }\n        else {\n          if (local_4c != 0x101) {\n            return;\n          }\n          (plVar3->wild_statement).walk_wild_section_handler = walk_wild_section_specs1_wild1;\n        }\n      }\n      else if (local_4c == 0x302) {\n        (plVar3->wild_statement).walk_wild_section_handler = walk_wild_section_specs3_wild2;\n      }\n      else {\n        if (local_4c != 0x402) {\n          return;\n        }\n        (plVar3->wild_statement).walk_wild_section_handler = walk_wild_section_specs4_wild2;\n      }" if (parenthesized_expression "(local_4c < 0x202)" ( (binary_expression "local_4c < 0x202" identifier < number_literal) )) (compound_statement "{\n        if (local_4c == 0x100) {\n          (plVar3->wild_statement).walk_wild_section_handler = walk_wild_section_specs1_wild0;\n        }\n        else {\n          if (local_4c != 0x101) {\n            return;\n          }\n          (plVar3->wild_statement).walk_wild_section_handler = walk_wild_section_specs1_wild1;\n        }\n      }" { (if_statement "if (local_4c == 0x100) {\n          (plVar3->wild_statement).walk_wild_section_handler = walk_wild_section_specs1_wild0;\n        }\n        else {\n          if (local_4c != 0x101) {\n            return;\n          }\n          (plVar3->wild_statement).walk_wild_section_handler = walk_wild_section_specs1_wild1;\n        }" if (parenthesized_expression "(local_4c == 0x100)" ( (binary_expression "local_4c == 0x100" identifier == number_literal) )) (compound_statement "{\n          (plVar3->wild_statement).walk_wild_section_handler = walk_wild_section_specs1_wild0;\n        }" { (expression_statement "(plVar3->wild_statement).walk_wild_section_handler = walk_wild_section_specs1_wild0;" (assignment_expression "(plVar3->wild_statement).walk_wild_section_handler = walk_wild_section_specs1_wild0" (field_expression "(plVar3->wild_statement).walk_wild_section_handler" (parenthesized_expression "(plVar3->wild_statement)" ( (field_expression "plVar3->wild_statement" identifier -> field_identifier) )) . field_identifier) = identifier) ;) }) (else_clause "else {\n          if (local_4c != 0x101) {\n            return;\n          }\n          (plVar3->wild_statement).walk_wild_section_handler = walk_wild_section_specs1_wild1;\n        }" else (compound_statement "{\n          if (local_4c != 0x101) {\n            return;\n          }\n          (plVar3->wild_statement).walk_wild_section_handler = walk_wild_section_specs1_wild1;\n        }" { (if_statement "if (local_4c != 0x101) {\n            return;\n          }" if (parenthesized_expression "(local_4c != 0x101)" ( (binary_expression "local_4c != 0x101" identifier != number_literal) )) (compound_statement "{\n            return;\n          }" { (return_statement "return;" return ;) })) (expression_statement "(plVar3->wild_statement).walk_wild_section_handler = walk_wild_section_specs1_wild1;" (assignment_expression "(plVar3->wild_statement).walk_wild_section_handler = walk_wild_section_specs1_wild1" (field_expression "(plVar3->wild_statement).walk_wild_section_handler" (parenthesized_expression "(plVar3->wild_statement)" ( (field_expression "plVar3->wild_statement" identifier -> field_identifier) )) . field_identifier) = identifier) ;) }))) }) (else_clause "else if (local_4c == 0x302) {\n        (plVar3->wild_statement).walk_wild_section_handler = walk_wild_section_specs3_wild2;\n      }\n      else {\n        if (local_4c != 0x402) {\n          return;\n        }\n        (plVar3->wild_statement).walk_wild_section_handler = walk_wild_section_specs4_wild2;\n      }" else (if_statement "if (local_4c == 0x302) {\n        (plVar3->wild_statement).walk_wild_section_handler = walk_wild_section_specs3_wild2;\n      }\n      else {\n        if (local_4c != 0x402) {\n          return;\n        }\n        (plVar3->wild_statement).walk_wild_section_handler = walk_wild_section_specs4_wild2;\n      }" if (parenthesized_expression "(local_4c == 0x302)" ( (binary_expression "local_4c == 0x302" identifier == number_literal) )) (compound_statement "{\n        (plVar3->wild_statement).walk_wild_section_handler = walk_wild_section_specs3_wild2;\n      }" { (expression_statement "(plVar3->wild_statement).walk_wild_section_handler = walk_wild_section_specs3_wild2;" (assignment_expression "(plVar3->wild_statement).walk_wild_section_handler = walk_wild_section_specs3_wild2" (field_expression "(plVar3->wild_statement).walk_wild_section_handler" (parenthesized_expression "(plVar3->wild_statement)" ( (field_expression "plVar3->wild_statement" identifier -> field_identifier) )) . field_identifier) = identifier) ;) }) (else_clause "else {\n        if (local_4c != 0x402) {\n          return;\n        }\n        (plVar3->wild_statement).walk_wild_section_handler = walk_wild_section_specs4_wild2;\n      }" else (compound_statement "{\n        if (local_4c != 0x402) {\n          return;\n        }\n        (plVar3->wild_statement).walk_wild_section_handler = walk_wild_section_specs4_wild2;\n      }" { (if_statement "if (local_4c != 0x402) {\n          return;\n        }" if (parenthesized_expression "(local_4c != 0x402)" ( (binary_expression "local_4c != 0x402" identifier != number_literal) )) (compound_statement "{\n          return;\n        }" { (return_statement "return;" return ;) })) (expression_statement "(plVar3->wild_statement).walk_wild_section_handler = walk_wild_section_specs4_wild2;" (assignment_expression "(plVar3->wild_statement).walk_wild_section_handler = walk_wild_section_specs4_wild2" (field_expression "(plVar3->wild_statement).walk_wild_section_handler" (parenthesized_expression "(plVar3->wild_statement)" ( (field_expression "plVar3->wild_statement" identifier -> field_identifier) )) . field_identifier) = identifier) ;) }))))))) (expression_statement "iVar12 = 0;" (assignment_expression "iVar12 = 0" identifier = number_literal) ;) (expression_statement "pcVar7 = local_48;" (assignment_expression "pcVar7 = local_48" identifier = identifier) ;) (expression_statement "pwVar6 = section_list;" (assignment_expression "pwVar6 = section_list" identifier = identifier) ;) (while_statement "while( true ) {\n        pcVar7 = strpbrk(pcVar7,"?*[");\n        if (pcVar7 == (char *)0x0) {\n          lVar9 = (long)iVar12;\n          iVar12 = iVar12 + 1;\n          *(wildcard_list **)((long)plVar3 + lVar9 * 8 + 0x50) = pwVar6;\n        }\n        pwVar6 = pwVar6->next;\n        if (pwVar6 == (wildcard_list *)0x0) break;\n        pcVar7 = (pwVar6->spec).name;\n      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n        pcVar7 = strpbrk(pcVar7,"?*[");\n        if (pcVar7 == (char *)0x0) {\n          lVar9 = (long)iVar12;\n          iVar12 = iVar12 + 1;\n          *(wildcard_list **)((long)plVar3 + lVar9 * 8 + 0x50) = pwVar6;\n        }\n        pwVar6 = pwVar6->next;\n        if (pwVar6 == (wildcard_list *)0x0) break;\n        pcVar7 = (pwVar6->spec).name;\n      }" { (expression_statement "pcVar7 = strpbrk(pcVar7,"?*[");" (assignment_expression "pcVar7 = strpbrk(pcVar7,"?*[")" identifier = (call_expression "strpbrk(pcVar7,"?*[")" identifier (argument_list "(pcVar7,"?*[")" ( identifier , (string_literal ""?*["" " string_content ") )))) ;) (if_statement "if (pcVar7 == (char *)0x0) {\n          lVar9 = (long)iVar12;\n          iVar12 = iVar12 + 1;\n          *(wildcard_list **)((long)plVar3 + lVar9 * 8 + 0x50) = pwVar6;\n        }" if (parenthesized_expression "(pcVar7 == (char *)0x0)" ( (binary_expression "pcVar7 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          lVar9 = (long)iVar12;\n          iVar12 = iVar12 + 1;\n          *(wildcard_list **)((long)plVar3 + lVar9 * 8 + 0x50) = pwVar6;\n        }" { (expression_statement "lVar9 = (long)iVar12;" (assignment_expression "lVar9 = (long)iVar12" identifier = (cast_expression "(long)iVar12" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ;) (expression_statement "iVar12 = iVar12 + 1;" (assignment_expression "iVar12 = iVar12 + 1" identifier = (binary_expression "iVar12 + 1" identifier + number_literal)) ;) (expression_statement "*(wildcard_list **)((long)plVar3 + lVar9 * 8 + 0x50) = pwVar6;" (assignment_expression "*(wildcard_list **)((long)plVar3 + lVar9 * 8 + 0x50) = pwVar6" (pointer_expression "*(wildcard_list **)((long)plVar3 + lVar9 * 8 + 0x50)" * (cast_expression "(wildcard_list **)((long)plVar3 + lVar9 * 8 + 0x50)" ( (type_descriptor "wildcard_list **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((long)plVar3 + lVar9 * 8 + 0x50)" ( (binary_expression "(long)plVar3 + lVar9 * 8 + 0x50" (binary_expression "(long)plVar3 + lVar9 * 8" (cast_expression "(long)plVar3" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (binary_expression "lVar9 * 8" identifier * number_literal)) + number_literal) )))) = identifier) ;) })) (expression_statement "pwVar6 = pwVar6->next;" (assignment_expression "pwVar6 = pwVar6->next" identifier = (field_expression "pwVar6->next" identifier -> field_identifier)) ;) (if_statement "if (pwVar6 == (wildcard_list *)0x0) break;" if (parenthesized_expression "(pwVar6 == (wildcard_list *)0x0)" ( (binary_expression "pwVar6 == (wildcard_list *)0x0" identifier == (cast_expression "(wildcard_list *)0x0" ( (type_descriptor "wildcard_list *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (break_statement "break;" break ;)) (expression_statement "pcVar7 = (pwVar6->spec).name;" (assignment_expression "pcVar7 = (pwVar6->spec).name" identifier = (field_expression "(pwVar6->spec).name" (parenthesized_expression "(pwVar6->spec)" ( (field_expression "pwVar6->spec" identifier -> field_identifier) )) . field_identifier)) ;) })) (while_statement "while( true ) {\n        pcVar7 = strpbrk(local_48,"?*[");\n        if (pcVar7 != (char *)0x0) {\n          lVar9 = (long)iVar12;\n          iVar12 = iVar12 + 1;\n          *(wildcard_list **)((long)plVar3 + lVar9 * 8 + 0x50) = section_list;\n        }\n        section_list = section_list->next;\n        if (section_list == (wildcard_list *)0x0) break;\n        local_48 = (section_list->spec).name;\n      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n        pcVar7 = strpbrk(local_48,"?*[");\n        if (pcVar7 != (char *)0x0) {\n          lVar9 = (long)iVar12;\n          iVar12 = iVar12 + 1;\n          *(wildcard_list **)((long)plVar3 + lVar9 * 8 + 0x50) = section_list;\n        }\n        section_list = section_list->next;\n        if (section_list == (wildcard_list *)0x0) break;\n        local_48 = (section_list->spec).name;\n      }" { (expression_statement "pcVar7 = strpbrk(local_48,"?*[");" (assignment_expression "pcVar7 = strpbrk(local_48,"?*[")" identifier = (call_expression "strpbrk(local_48,"?*[")" identifier (argument_list "(local_48,"?*[")" ( identifier , (string_literal ""?*["" " string_content ") )))) ;) (if_statement "if (pcVar7 != (char *)0x0) {\n          lVar9 = (long)iVar12;\n          iVar12 = iVar12 + 1;\n          *(wildcard_list **)((long)plVar3 + lVar9 * 8 + 0x50) = section_list;\n        }" if (parenthesized_expression "(pcVar7 != (char *)0x0)" ( (binary_expression "pcVar7 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          lVar9 = (long)iVar12;\n          iVar12 = iVar12 + 1;\n          *(wildcard_list **)((long)plVar3 + lVar9 * 8 + 0x50) = section_list;\n        }" { (expression_statement "lVar9 = (long)iVar12;" (assignment_expression "lVar9 = (long)iVar12" identifier = (cast_expression "(long)iVar12" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ;) (expression_statement "iVar12 = iVar12 + 1;" (assignment_expression "iVar12 = iVar12 + 1" identifier = (binary_expression "iVar12 + 1" identifier + number_literal)) ;) (expression_statement "*(wildcard_list **)((long)plVar3 + lVar9 * 8 + 0x50) = section_list;" (assignment_expression "*(wildcard_list **)((long)plVar3 + lVar9 * 8 + 0x50) = section_list" (pointer_expression "*(wildcard_list **)((long)plVar3 + lVar9 * 8 + 0x50)" * (cast_expression "(wildcard_list **)((long)plVar3 + lVar9 * 8 + 0x50)" ( (type_descriptor "wildcard_list **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((long)plVar3 + lVar9 * 8 + 0x50)" ( (binary_expression "(long)plVar3 + lVar9 * 8 + 0x50" (binary_expression "(long)plVar3 + lVar9 * 8" (cast_expression "(long)plVar3" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (binary_expression "lVar9 * 8" identifier * number_literal)) + number_literal) )))) = identifier) ;) })) (expression_statement "section_list = section_list->next;" (assignment_expression "section_list = section_list->next" identifier = (field_expression "section_list->next" identifier -> field_identifier)) ;) (if_statement "if (section_list == (wildcard_list *)0x0) break;" if (parenthesized_expression "(section_list == (wildcard_list *)0x0)" ( (binary_expression "section_list == (wildcard_list *)0x0" identifier == (cast_expression "(wildcard_list *)0x0" ( (type_descriptor "wildcard_list *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (break_statement "break;" break ;)) (expression_statement "local_48 = (section_list->spec).name;" (assignment_expression "local_48 = (section_list->spec).name" identifier = (field_expression "(section_list->spec).name" (parenthesized_expression "(section_list->spec)" ( (field_expression "section_list->spec" identifier -> field_identifier) )) . field_identifier)) ;) })) })) })) (return_statement "return;" return ;) })))
(translation_unit "void FUN_0011e4d0(undefined8 *param_1,long *param_2,undefined4 param_3)\n\n{\n  byte *__s;\n  undefined8 uVar1;\n  undefined *puVar2;\n  int iVar3;\n  undefined8 *puVar4;\n  char *pcVar5;\n  size_t sVar6;\n  long *plVar7;\n  ulong __n;\n  char *pcVar8;\n  long *plVar9;\n  long lVar10;\n  byte *pbVar11;\n  byte *pbVar12;\n  int iVar13;\n  ulong uVar14;\n  long *plVar15;\n  bool bVar16;\n  bool bVar17;\n  int local_4c;\n  char *local_48;\n  \n  if (param_2 != (long *)0x0) {\n    plVar9 = (long *)0x0;\n    plVar7 = param_2;\n    do {\n      param_2 = plVar7;\n      plVar7 = (long *)*param_2;\n      *param_2 = (long)plVar9;\n      plVar9 = param_2;\n    } while (plVar7 != (long *)0x0);\n  }\n  puVar2 = PTR_DAT_002b2710;\n  if (param_1 == (undefined8 *)0x0) {\n    puVar4 = (undefined8 *)FUN_00119720(0x80);\n    *puVar4 = 0;\n    *(undefined4 *)(puVar4 + 1) = 4;\n    **(undefined8 **)(puVar2 + 8) = puVar4;\n    *(undefined8 **)(puVar2 + 8) = puVar4;\n    puVar4[2] = 0;\n    *(undefined4 *)(puVar4 + 3) = 0;\n    puVar4[0xf] = 0;\n    puVar4[8] = 0;\n  }\n  else {\n    __s = (byte *)*param_1;\n    bVar16 = false;\n    bVar17 = __s == (byte *)0x0;\n    if (!bVar17) {\n      lVar10 = 2;\n      pbVar11 = __s;\n      pbVar12 = &DAT_0016c217;\n      do {\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar16 = *pbVar11 < *pbVar12;\n        bVar17 = *pbVar11 == *pbVar12;\n        pbVar11 = pbVar11 + 1;\n        pbVar12 = pbVar12 + 1;\n      } while (bVar17);\n      if ((!bVar16 && !bVar17) == bVar16) {\n        *param_1 = 0;\n      }\n      else {\n        pcVar8 = strpbrk((char *)__s,"?*[");\n        if (pcVar8 == (char *)0x0) {\n          DAT_002b4c30 = 1;\n        }\n      }\n    }\n    puVar4 = (undefined8 *)FUN_00119720(0x80);\n    *puVar4 = 0;\n    *(undefined4 *)(puVar4 + 1) = 4;\n    **(undefined8 **)(puVar2 + 8) = puVar4;\n    uVar1 = *param_1;\n    *(undefined8 **)(puVar2 + 8) = puVar4;\n    puVar4[2] = uVar1;\n    *(uint *)(puVar4 + 3) = (uint)(*(int *)(param_1 + 2) == 1);\n    puVar4[0xf] = param_1[3];\n    puVar4[8] = param_1[1];\n  }\n  puVar4[4] = param_2;\n  puVar4[7] = puVar4 + 6;\n  *(undefined4 *)(puVar4 + 5) = param_3;\n  puVar4[6] = 0;\n  puVar4[9] = FUN_00118ca0;\n  puVar4[10] = 0;\n  puVar4[0xb] = 0;\n  puVar4[0xc] = 0;\n  puVar4[0xd] = 0;\n  puVar4[0xe] = 0;\n  if ((param_2 != (long *)0x0) && (local_48 = (char *)param_2[1], local_48 != (char *)0x0)) {\n    local_4c = 0;\n    iVar13 = 1;\n    plVar7 = param_2;\n    pcVar8 = local_48;\n    while( true ) {\n      pcVar5 = strpbrk(pcVar8,"?*[");\n      if (pcVar5 != (char *)0x0) {\n        sVar6 = strcspn(pcVar8,"*?[");\n        if (sVar6 < 4) {\n          return;\n        }\n        if (pcVar8[sVar6] != '*') {\n          return;\n        }\n        if (pcVar8[sVar6 + 1] != '\0') {\n          return;\n        }\n        local_4c = local_4c + 1;\n      }\n      plVar7 = (long *)*plVar7;\n      if (plVar7 == (long *)0x0) break;\n      pcVar8 = (char *)plVar7[1];\n      iVar13 = iVar13 + 1;\n      if (pcVar8 == (char *)0x0) {\n        return;\n      }\n    }\n    plVar7 = param_2;\n    if (iVar13 < 5) {\n      while (plVar9 = (long *)*plVar7, plVar9 != (long *)0x0) {\n        pcVar8 = (char *)plVar7[1];\n        sVar6 = strcspn(pcVar8,"?*[");\n        uVar14 = sVar6 + 1;\n        plVar15 = plVar9;\n        if (pcVar8[sVar6] != '\0') {\n          uVar14 = sVar6;\n        }\n        do {\n          pcVar5 = (char *)plVar15[1];\n          sVar6 = strcspn(pcVar5,"?*[");\n          __n = sVar6 + (pcVar5[sVar6] == '\0');\n          if (uVar14 <= __n) {\n            __n = uVar14;\n          }\n          iVar3 = memcmp(pcVar8,pcVar5,__n);\n          if (iVar3 == 0) {\n            return;\n          }\n          plVar15 = (long *)*plVar15;\n          plVar7 = plVar9;\n        } while (plVar15 != (long *)0x0);\n      }\n      local_4c = local_4c + iVar13 * 0x100;\n      if (local_4c == 0x201) {\n        puVar4[9] = FUN_00119070;\n      }\n      else if (local_4c < 0x202) {\n        if (local_4c == 0x100) {\n          puVar4[9] = FUN_00119190;\n        }\n        else {\n          if (local_4c != 0x101) {\n            return;\n          }\n          puVar4[9] = FUN_00118c20;\n        }\n      }\n      else if (local_4c == 0x302) {\n        puVar4[9] = FUN_00118f20;\n      }\n      else {\n        if (local_4c != 0x402) {\n          return;\n        }\n        puVar4[9] = FUN_00118d60;\n      }\n      iVar13 = 0;\n      pcVar8 = local_48;\n      plVar7 = param_2;\n      while( true ) {\n        pcVar8 = strpbrk(pcVar8,"?*[");\n        if (pcVar8 == (char *)0x0) {\n          lVar10 = (long)iVar13;\n          iVar13 = iVar13 + 1;\n          puVar4[lVar10 + 10] = plVar7;\n        }\n        plVar7 = (long *)*plVar7;\n        if (plVar7 == (long *)0x0) break;\n        pcVar8 = (char *)plVar7[1];\n      }\n      while( true ) {\n        pcVar8 = strpbrk(local_48,"?*[");\n        if (pcVar8 != (char *)0x0) {\n          lVar10 = (long)iVar13;\n          iVar13 = iVar13 + 1;\n          puVar4[lVar10 + 10] = param_2;\n        }\n        param_2 = (long *)*param_2;\n        if (param_2 == (long *)0x0) break;\n        local_48 = (char *)param_2[1];\n      }\n    }\n  }\n  return;\n}\n\n" (function_definition "void FUN_0011e4d0(undefined8 *param_1,long *param_2,undefined4 param_3)\n\n{\n  byte *__s;\n  undefined8 uVar1;\n  undefined *puVar2;\n  int iVar3;\n  undefined8 *puVar4;\n  char *pcVar5;\n  size_t sVar6;\n  long *plVar7;\n  ulong __n;\n  char *pcVar8;\n  long *plVar9;\n  long lVar10;\n  byte *pbVar11;\n  byte *pbVar12;\n  int iVar13;\n  ulong uVar14;\n  long *plVar15;\n  bool bVar16;\n  bool bVar17;\n  int local_4c;\n  char *local_48;\n  \n  if (param_2 != (long *)0x0) {\n    plVar9 = (long *)0x0;\n    plVar7 = param_2;\n    do {\n      param_2 = plVar7;\n      plVar7 = (long *)*param_2;\n      *param_2 = (long)plVar9;\n      plVar9 = param_2;\n    } while (plVar7 != (long *)0x0);\n  }\n  puVar2 = PTR_DAT_002b2710;\n  if (param_1 == (undefined8 *)0x0) {\n    puVar4 = (undefined8 *)FUN_00119720(0x80);\n    *puVar4 = 0;\n    *(undefined4 *)(puVar4 + 1) = 4;\n    **(undefined8 **)(puVar2 + 8) = puVar4;\n    *(undefined8 **)(puVar2 + 8) = puVar4;\n    puVar4[2] = 0;\n    *(undefined4 *)(puVar4 + 3) = 0;\n    puVar4[0xf] = 0;\n    puVar4[8] = 0;\n  }\n  else {\n    __s = (byte *)*param_1;\n    bVar16 = false;\n    bVar17 = __s == (byte *)0x0;\n    if (!bVar17) {\n      lVar10 = 2;\n      pbVar11 = __s;\n      pbVar12 = &DAT_0016c217;\n      do {\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar16 = *pbVar11 < *pbVar12;\n        bVar17 = *pbVar11 == *pbVar12;\n        pbVar11 = pbVar11 + 1;\n        pbVar12 = pbVar12 + 1;\n      } while (bVar17);\n      if ((!bVar16 && !bVar17) == bVar16) {\n        *param_1 = 0;\n      }\n      else {\n        pcVar8 = strpbrk((char *)__s,"?*[");\n        if (pcVar8 == (char *)0x0) {\n          DAT_002b4c30 = 1;\n        }\n      }\n    }\n    puVar4 = (undefined8 *)FUN_00119720(0x80);\n    *puVar4 = 0;\n    *(undefined4 *)(puVar4 + 1) = 4;\n    **(undefined8 **)(puVar2 + 8) = puVar4;\n    uVar1 = *param_1;\n    *(undefined8 **)(puVar2 + 8) = puVar4;\n    puVar4[2] = uVar1;\n    *(uint *)(puVar4 + 3) = (uint)(*(int *)(param_1 + 2) == 1);\n    puVar4[0xf] = param_1[3];\n    puVar4[8] = param_1[1];\n  }\n  puVar4[4] = param_2;\n  puVar4[7] = puVar4 + 6;\n  *(undefined4 *)(puVar4 + 5) = param_3;\n  puVar4[6] = 0;\n  puVar4[9] = FUN_00118ca0;\n  puVar4[10] = 0;\n  puVar4[0xb] = 0;\n  puVar4[0xc] = 0;\n  puVar4[0xd] = 0;\n  puVar4[0xe] = 0;\n  if ((param_2 != (long *)0x0) && (local_48 = (char *)param_2[1], local_48 != (char *)0x0)) {\n    local_4c = 0;\n    iVar13 = 1;\n    plVar7 = param_2;\n    pcVar8 = local_48;\n    while( true ) {\n      pcVar5 = strpbrk(pcVar8,"?*[");\n      if (pcVar5 != (char *)0x0) {\n        sVar6 = strcspn(pcVar8,"*?[");\n        if (sVar6 < 4) {\n          return;\n        }\n        if (pcVar8[sVar6] != '*') {\n          return;\n        }\n        if (pcVar8[sVar6 + 1] != '\0') {\n          return;\n        }\n        local_4c = local_4c + 1;\n      }\n      plVar7 = (long *)*plVar7;\n      if (plVar7 == (long *)0x0) break;\n      pcVar8 = (char *)plVar7[1];\n      iVar13 = iVar13 + 1;\n      if (pcVar8 == (char *)0x0) {\n        return;\n      }\n    }\n    plVar7 = param_2;\n    if (iVar13 < 5) {\n      while (plVar9 = (long *)*plVar7, plVar9 != (long *)0x0) {\n        pcVar8 = (char *)plVar7[1];\n        sVar6 = strcspn(pcVar8,"?*[");\n        uVar14 = sVar6 + 1;\n        plVar15 = plVar9;\n        if (pcVar8[sVar6] != '\0') {\n          uVar14 = sVar6;\n        }\n        do {\n          pcVar5 = (char *)plVar15[1];\n          sVar6 = strcspn(pcVar5,"?*[");\n          __n = sVar6 + (pcVar5[sVar6] == '\0');\n          if (uVar14 <= __n) {\n            __n = uVar14;\n          }\n          iVar3 = memcmp(pcVar8,pcVar5,__n);\n          if (iVar3 == 0) {\n            return;\n          }\n          plVar15 = (long *)*plVar15;\n          plVar7 = plVar9;\n        } while (plVar15 != (long *)0x0);\n      }\n      local_4c = local_4c + iVar13 * 0x100;\n      if (local_4c == 0x201) {\n        puVar4[9] = FUN_00119070;\n      }\n      else if (local_4c < 0x202) {\n        if (local_4c == 0x100) {\n          puVar4[9] = FUN_00119190;\n        }\n        else {\n          if (local_4c != 0x101) {\n            return;\n          }\n          puVar4[9] = FUN_00118c20;\n        }\n      }\n      else if (local_4c == 0x302) {\n        puVar4[9] = FUN_00118f20;\n      }\n      else {\n        if (local_4c != 0x402) {\n          return;\n        }\n        puVar4[9] = FUN_00118d60;\n      }\n      iVar13 = 0;\n      pcVar8 = local_48;\n      plVar7 = param_2;\n      while( true ) {\n        pcVar8 = strpbrk(pcVar8,"?*[");\n        if (pcVar8 == (char *)0x0) {\n          lVar10 = (long)iVar13;\n          iVar13 = iVar13 + 1;\n          puVar4[lVar10 + 10] = plVar7;\n        }\n        plVar7 = (long *)*plVar7;\n        if (plVar7 == (long *)0x0) break;\n        pcVar8 = (char *)plVar7[1];\n      }\n      while( true ) {\n        pcVar8 = strpbrk(local_48,"?*[");\n        if (pcVar8 != (char *)0x0) {\n          lVar10 = (long)iVar13;\n          iVar13 = iVar13 + 1;\n          puVar4[lVar10 + 10] = param_2;\n        }\n        param_2 = (long *)*param_2;\n        if (param_2 == (long *)0x0) break;\n        local_48 = (char *)param_2[1];\n      }\n    }\n  }\n  return;\n}" primitive_type (function_declarator "FUN_0011e4d0(undefined8 *param_1,long *param_2,undefined4 param_3)" identifier (parameter_list "(undefined8 *param_1,long *param_2,undefined4 param_3)" ( (parameter_declaration "undefined8 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "long *param_2" (sized_type_specifier "long" long) (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "undefined4 param_3" type_identifier identifier) ))) (compound_statement "{\n  byte *__s;\n  undefined8 uVar1;\n  undefined *puVar2;\n  int iVar3;\n  undefined8 *puVar4;\n  char *pcVar5;\n  size_t sVar6;\n  long *plVar7;\n  ulong __n;\n  char *pcVar8;\n  long *plVar9;\n  long lVar10;\n  byte *pbVar11;\n  byte *pbVar12;\n  int iVar13;\n  ulong uVar14;\n  long *plVar15;\n  bool bVar16;\n  bool bVar17;\n  int local_4c;\n  char *local_48;\n  \n  if (param_2 != (long *)0x0) {\n    plVar9 = (long *)0x0;\n    plVar7 = param_2;\n    do {\n      param_2 = plVar7;\n      plVar7 = (long *)*param_2;\n      *param_2 = (long)plVar9;\n      plVar9 = param_2;\n    } while (plVar7 != (long *)0x0);\n  }\n  puVar2 = PTR_DAT_002b2710;\n  if (param_1 == (undefined8 *)0x0) {\n    puVar4 = (undefined8 *)FUN_00119720(0x80);\n    *puVar4 = 0;\n    *(undefined4 *)(puVar4 + 1) = 4;\n    **(undefined8 **)(puVar2 + 8) = puVar4;\n    *(undefined8 **)(puVar2 + 8) = puVar4;\n    puVar4[2] = 0;\n    *(undefined4 *)(puVar4 + 3) = 0;\n    puVar4[0xf] = 0;\n    puVar4[8] = 0;\n  }\n  else {\n    __s = (byte *)*param_1;\n    bVar16 = false;\n    bVar17 = __s == (byte *)0x0;\n    if (!bVar17) {\n      lVar10 = 2;\n      pbVar11 = __s;\n      pbVar12 = &DAT_0016c217;\n      do {\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar16 = *pbVar11 < *pbVar12;\n        bVar17 = *pbVar11 == *pbVar12;\n        pbVar11 = pbVar11 + 1;\n        pbVar12 = pbVar12 + 1;\n      } while (bVar17);\n      if ((!bVar16 && !bVar17) == bVar16) {\n        *param_1 = 0;\n      }\n      else {\n        pcVar8 = strpbrk((char *)__s,"?*[");\n        if (pcVar8 == (char *)0x0) {\n          DAT_002b4c30 = 1;\n        }\n      }\n    }\n    puVar4 = (undefined8 *)FUN_00119720(0x80);\n    *puVar4 = 0;\n    *(undefined4 *)(puVar4 + 1) = 4;\n    **(undefined8 **)(puVar2 + 8) = puVar4;\n    uVar1 = *param_1;\n    *(undefined8 **)(puVar2 + 8) = puVar4;\n    puVar4[2] = uVar1;\n    *(uint *)(puVar4 + 3) = (uint)(*(int *)(param_1 + 2) == 1);\n    puVar4[0xf] = param_1[3];\n    puVar4[8] = param_1[1];\n  }\n  puVar4[4] = param_2;\n  puVar4[7] = puVar4 + 6;\n  *(undefined4 *)(puVar4 + 5) = param_3;\n  puVar4[6] = 0;\n  puVar4[9] = FUN_00118ca0;\n  puVar4[10] = 0;\n  puVar4[0xb] = 0;\n  puVar4[0xc] = 0;\n  puVar4[0xd] = 0;\n  puVar4[0xe] = 0;\n  if ((param_2 != (long *)0x0) && (local_48 = (char *)param_2[1], local_48 != (char *)0x0)) {\n    local_4c = 0;\n    iVar13 = 1;\n    plVar7 = param_2;\n    pcVar8 = local_48;\n    while( true ) {\n      pcVar5 = strpbrk(pcVar8,"?*[");\n      if (pcVar5 != (char *)0x0) {\n        sVar6 = strcspn(pcVar8,"*?[");\n        if (sVar6 < 4) {\n          return;\n        }\n        if (pcVar8[sVar6] != '*') {\n          return;\n        }\n        if (pcVar8[sVar6 + 1] != '\0') {\n          return;\n        }\n        local_4c = local_4c + 1;\n      }\n      plVar7 = (long *)*plVar7;\n      if (plVar7 == (long *)0x0) break;\n      pcVar8 = (char *)plVar7[1];\n      iVar13 = iVar13 + 1;\n      if (pcVar8 == (char *)0x0) {\n        return;\n      }\n    }\n    plVar7 = param_2;\n    if (iVar13 < 5) {\n      while (plVar9 = (long *)*plVar7, plVar9 != (long *)0x0) {\n        pcVar8 = (char *)plVar7[1];\n        sVar6 = strcspn(pcVar8,"?*[");\n        uVar14 = sVar6 + 1;\n        plVar15 = plVar9;\n        if (pcVar8[sVar6] != '\0') {\n          uVar14 = sVar6;\n        }\n        do {\n          pcVar5 = (char *)plVar15[1];\n          sVar6 = strcspn(pcVar5,"?*[");\n          __n = sVar6 + (pcVar5[sVar6] == '\0');\n          if (uVar14 <= __n) {\n            __n = uVar14;\n          }\n          iVar3 = memcmp(pcVar8,pcVar5,__n);\n          if (iVar3 == 0) {\n            return;\n          }\n          plVar15 = (long *)*plVar15;\n          plVar7 = plVar9;\n        } while (plVar15 != (long *)0x0);\n      }\n      local_4c = local_4c + iVar13 * 0x100;\n      if (local_4c == 0x201) {\n        puVar4[9] = FUN_00119070;\n      }\n      else if (local_4c < 0x202) {\n        if (local_4c == 0x100) {\n          puVar4[9] = FUN_00119190;\n        }\n        else {\n          if (local_4c != 0x101) {\n            return;\n          }\n          puVar4[9] = FUN_00118c20;\n        }\n      }\n      else if (local_4c == 0x302) {\n        puVar4[9] = FUN_00118f20;\n      }\n      else {\n        if (local_4c != 0x402) {\n          return;\n        }\n        puVar4[9] = FUN_00118d60;\n      }\n      iVar13 = 0;\n      pcVar8 = local_48;\n      plVar7 = param_2;\n      while( true ) {\n        pcVar8 = strpbrk(pcVar8,"?*[");\n        if (pcVar8 == (char *)0x0) {\n          lVar10 = (long)iVar13;\n          iVar13 = iVar13 + 1;\n          puVar4[lVar10 + 10] = plVar7;\n        }\n        plVar7 = (long *)*plVar7;\n        if (plVar7 == (long *)0x0) break;\n        pcVar8 = (char *)plVar7[1];\n      }\n      while( true ) {\n        pcVar8 = strpbrk(local_48,"?*[");\n        if (pcVar8 != (char *)0x0) {\n          lVar10 = (long)iVar13;\n          iVar13 = iVar13 + 1;\n          puVar4[lVar10 + 10] = param_2;\n        }\n        param_2 = (long *)*param_2;\n        if (param_2 == (long *)0x0) break;\n        local_48 = (char *)param_2[1];\n      }\n    }\n  }\n  return;\n}" { (declaration "byte *__s;" type_identifier (pointer_declarator "*__s" * identifier) ;) (declaration "undefined8 uVar1;" type_identifier identifier ;) (declaration "undefined *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "undefined8 *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "char *pcVar5;" primitive_type (pointer_declarator "*pcVar5" * identifier) ;) (declaration "size_t sVar6;" primitive_type identifier ;) (declaration "long *plVar7;" (sized_type_specifier "long" long) (pointer_declarator "*plVar7" * identifier) ;) (declaration "ulong __n;" type_identifier identifier ;) (declaration "char *pcVar8;" primitive_type (pointer_declarator "*pcVar8" * identifier) ;) (declaration "long *plVar9;" (sized_type_specifier "long" long) (pointer_declarator "*plVar9" * identifier) ;) (declaration "long lVar10;" (sized_type_specifier "long" long) identifier ;) (declaration "byte *pbVar11;" type_identifier (pointer_declarator "*pbVar11" * identifier) ;) (declaration "byte *pbVar12;" type_identifier (pointer_declarator "*pbVar12" * identifier) ;) (declaration "int iVar13;" primitive_type identifier ;) (declaration "ulong uVar14;" type_identifier identifier ;) (declaration "long *plVar15;" (sized_type_specifier "long" long) (pointer_declarator "*plVar15" * identifier) ;) (declaration "bool bVar16;" primitive_type identifier ;) (declaration "bool bVar17;" primitive_type identifier ;) (declaration "int local_4c;" primitive_type identifier ;) (declaration "char *local_48;" primitive_type (pointer_declarator "*local_48" * identifier) ;) (if_statement "if (param_2 != (long *)0x0) {\n    plVar9 = (long *)0x0;\n    plVar7 = param_2;\n    do {\n      param_2 = plVar7;\n      plVar7 = (long *)*param_2;\n      *param_2 = (long)plVar9;\n      plVar9 = param_2;\n    } while (plVar7 != (long *)0x0);\n  }" if (parenthesized_expression "(param_2 != (long *)0x0)" ( (binary_expression "param_2 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    plVar9 = (long *)0x0;\n    plVar7 = param_2;\n    do {\n      param_2 = plVar7;\n      plVar7 = (long *)*param_2;\n      *param_2 = (long)plVar9;\n      plVar9 = param_2;\n    } while (plVar7 != (long *)0x0);\n  }" { (expression_statement "plVar9 = (long *)0x0;" (assignment_expression "plVar9 = (long *)0x0" identifier = (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "plVar7 = param_2;" (assignment_expression "plVar7 = param_2" identifier = identifier) ;) (do_statement "do {\n      param_2 = plVar7;\n      plVar7 = (long *)*param_2;\n      *param_2 = (long)plVar9;\n      plVar9 = param_2;\n    } while (plVar7 != (long *)0x0);" do (compound_statement "{\n      param_2 = plVar7;\n      plVar7 = (long *)*param_2;\n      *param_2 = (long)plVar9;\n      plVar9 = param_2;\n    }" { (expression_statement "param_2 = plVar7;" (assignment_expression "param_2 = plVar7" identifier = identifier) ;) (expression_statement "plVar7 = (long *)*param_2;" (assignment_expression "plVar7 = (long *)*param_2" identifier = (cast_expression "(long *)*param_2" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_2" * identifier))) ;) (expression_statement "*param_2 = (long)plVar9;" (assignment_expression "*param_2 = (long)plVar9" (pointer_expression "*param_2" * identifier) = (cast_expression "(long)plVar9" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ;) (expression_statement "plVar9 = param_2;" (assignment_expression "plVar9 = param_2" identifier = identifier) ;) }) while (parenthesized_expression "(plVar7 != (long *)0x0)" ( (binary_expression "plVar7 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) })) (expression_statement "puVar2 = PTR_DAT_002b2710;" (assignment_expression "puVar2 = PTR_DAT_002b2710" identifier = identifier) ;) (if_statement "if (param_1 == (undefined8 *)0x0) {\n    puVar4 = (undefined8 *)FUN_00119720(0x80);\n    *puVar4 = 0;\n    *(undefined4 *)(puVar4 + 1) = 4;\n    **(undefined8 **)(puVar2 + 8) = puVar4;\n    *(undefined8 **)(puVar2 + 8) = puVar4;\n    puVar4[2] = 0;\n    *(undefined4 *)(puVar4 + 3) = 0;\n    puVar4[0xf] = 0;\n    puVar4[8] = 0;\n  }\n  else {\n    __s = (byte *)*param_1;\n    bVar16 = false;\n    bVar17 = __s == (byte *)0x0;\n    if (!bVar17) {\n      lVar10 = 2;\n      pbVar11 = __s;\n      pbVar12 = &DAT_0016c217;\n      do {\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar16 = *pbVar11 < *pbVar12;\n        bVar17 = *pbVar11 == *pbVar12;\n        pbVar11 = pbVar11 + 1;\n        pbVar12 = pbVar12 + 1;\n      } while (bVar17);\n      if ((!bVar16 && !bVar17) == bVar16) {\n        *param_1 = 0;\n      }\n      else {\n        pcVar8 = strpbrk((char *)__s,"?*[");\n        if (pcVar8 == (char *)0x0) {\n          DAT_002b4c30 = 1;\n        }\n      }\n    }\n    puVar4 = (undefined8 *)FUN_00119720(0x80);\n    *puVar4 = 0;\n    *(undefined4 *)(puVar4 + 1) = 4;\n    **(undefined8 **)(puVar2 + 8) = puVar4;\n    uVar1 = *param_1;\n    *(undefined8 **)(puVar2 + 8) = puVar4;\n    puVar4[2] = uVar1;\n    *(uint *)(puVar4 + 3) = (uint)(*(int *)(param_1 + 2) == 1);\n    puVar4[0xf] = param_1[3];\n    puVar4[8] = param_1[1];\n  }" if (parenthesized_expression "(param_1 == (undefined8 *)0x0)" ( (binary_expression "param_1 == (undefined8 *)0x0" identifier == (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    puVar4 = (undefined8 *)FUN_00119720(0x80);\n    *puVar4 = 0;\n    *(undefined4 *)(puVar4 + 1) = 4;\n    **(undefined8 **)(puVar2 + 8) = puVar4;\n    *(undefined8 **)(puVar2 + 8) = puVar4;\n    puVar4[2] = 0;\n    *(undefined4 *)(puVar4 + 3) = 0;\n    puVar4[0xf] = 0;\n    puVar4[8] = 0;\n  }" { (expression_statement "puVar4 = (undefined8 *)FUN_00119720(0x80);" (assignment_expression "puVar4 = (undefined8 *)FUN_00119720(0x80)" identifier = (cast_expression "(undefined8 *)FUN_00119720(0x80)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00119720(0x80)" identifier (argument_list "(0x80)" ( number_literal ))))) ;) (expression_statement "*puVar4 = 0;" (assignment_expression "*puVar4 = 0" (pointer_expression "*puVar4" * identifier) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar4 + 1) = 4;" (assignment_expression "*(undefined4 *)(puVar4 + 1) = 4" (pointer_expression "*(undefined4 *)(puVar4 + 1)" * (cast_expression "(undefined4 *)(puVar4 + 1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + 1)" ( (binary_expression "puVar4 + 1" identifier + number_literal) )))) = number_literal) ;) (expression_statement "**(undefined8 **)(puVar2 + 8) = puVar4;" (assignment_expression "**(undefined8 **)(puVar2 + 8) = puVar4" (pointer_expression "**(undefined8 **)(puVar2 + 8)" * (pointer_expression "*(undefined8 **)(puVar2 + 8)" * (cast_expression "(undefined8 **)(puVar2 + 8)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar2 + 8)" ( (binary_expression "puVar2 + 8" identifier + number_literal) ))))) = identifier) ;) (expression_statement "*(undefined8 **)(puVar2 + 8) = puVar4;" (assignment_expression "*(undefined8 **)(puVar2 + 8) = puVar4" (pointer_expression "*(undefined8 **)(puVar2 + 8)" * (cast_expression "(undefined8 **)(puVar2 + 8)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar2 + 8)" ( (binary_expression "puVar2 + 8" identifier + number_literal) )))) = identifier) ;) (expression_statement "puVar4[2] = 0;" (assignment_expression "puVar4[2] = 0" (subscript_expression "puVar4[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar4 + 3) = 0;" (assignment_expression "*(undefined4 *)(puVar4 + 3) = 0" (pointer_expression "*(undefined4 *)(puVar4 + 3)" * (cast_expression "(undefined4 *)(puVar4 + 3)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + 3)" ( (binary_expression "puVar4 + 3" identifier + number_literal) )))) = number_literal) ;) (expression_statement "puVar4[0xf] = 0;" (assignment_expression "puVar4[0xf] = 0" (subscript_expression "puVar4[0xf]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar4[8] = 0;" (assignment_expression "puVar4[8] = 0" (subscript_expression "puVar4[8]" identifier [ number_literal ]) = number_literal) ;) }) (else_clause "else {\n    __s = (byte *)*param_1;\n    bVar16 = false;\n    bVar17 = __s == (byte *)0x0;\n    if (!bVar17) {\n      lVar10 = 2;\n      pbVar11 = __s;\n      pbVar12 = &DAT_0016c217;\n      do {\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar16 = *pbVar11 < *pbVar12;\n        bVar17 = *pbVar11 == *pbVar12;\n        pbVar11 = pbVar11 + 1;\n        pbVar12 = pbVar12 + 1;\n      } while (bVar17);\n      if ((!bVar16 && !bVar17) == bVar16) {\n        *param_1 = 0;\n      }\n      else {\n        pcVar8 = strpbrk((char *)__s,"?*[");\n        if (pcVar8 == (char *)0x0) {\n          DAT_002b4c30 = 1;\n        }\n      }\n    }\n    puVar4 = (undefined8 *)FUN_00119720(0x80);\n    *puVar4 = 0;\n    *(undefined4 *)(puVar4 + 1) = 4;\n    **(undefined8 **)(puVar2 + 8) = puVar4;\n    uVar1 = *param_1;\n    *(undefined8 **)(puVar2 + 8) = puVar4;\n    puVar4[2] = uVar1;\n    *(uint *)(puVar4 + 3) = (uint)(*(int *)(param_1 + 2) == 1);\n    puVar4[0xf] = param_1[3];\n    puVar4[8] = param_1[1];\n  }" else (compound_statement "{\n    __s = (byte *)*param_1;\n    bVar16 = false;\n    bVar17 = __s == (byte *)0x0;\n    if (!bVar17) {\n      lVar10 = 2;\n      pbVar11 = __s;\n      pbVar12 = &DAT_0016c217;\n      do {\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar16 = *pbVar11 < *pbVar12;\n        bVar17 = *pbVar11 == *pbVar12;\n        pbVar11 = pbVar11 + 1;\n        pbVar12 = pbVar12 + 1;\n      } while (bVar17);\n      if ((!bVar16 && !bVar17) == bVar16) {\n        *param_1 = 0;\n      }\n      else {\n        pcVar8 = strpbrk((char *)__s,"?*[");\n        if (pcVar8 == (char *)0x0) {\n          DAT_002b4c30 = 1;\n        }\n      }\n    }\n    puVar4 = (undefined8 *)FUN_00119720(0x80);\n    *puVar4 = 0;\n    *(undefined4 *)(puVar4 + 1) = 4;\n    **(undefined8 **)(puVar2 + 8) = puVar4;\n    uVar1 = *param_1;\n    *(undefined8 **)(puVar2 + 8) = puVar4;\n    puVar4[2] = uVar1;\n    *(uint *)(puVar4 + 3) = (uint)(*(int *)(param_1 + 2) == 1);\n    puVar4[0xf] = param_1[3];\n    puVar4[8] = param_1[1];\n  }" { (expression_statement "__s = (byte *)*param_1;" (assignment_expression "__s = (byte *)*param_1" identifier = (cast_expression "(byte *)*param_1" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) ;) (expression_statement "bVar16 = false;" (assignment_expression "bVar16 = false" identifier = false) ;) (expression_statement "bVar17 = __s == (byte *)0x0;" (assignment_expression "bVar17 = __s == (byte *)0x0" identifier = (binary_expression "__s == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ;) (if_statement "if (!bVar17) {\n      lVar10 = 2;\n      pbVar11 = __s;\n      pbVar12 = &DAT_0016c217;\n      do {\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar16 = *pbVar11 < *pbVar12;\n        bVar17 = *pbVar11 == *pbVar12;\n        pbVar11 = pbVar11 + 1;\n        pbVar12 = pbVar12 + 1;\n      } while (bVar17);\n      if ((!bVar16 && !bVar17) == bVar16) {\n        *param_1 = 0;\n      }\n      else {\n        pcVar8 = strpbrk((char *)__s,"?*[");\n        if (pcVar8 == (char *)0x0) {\n          DAT_002b4c30 = 1;\n        }\n      }\n    }" if (parenthesized_expression "(!bVar17)" ( (unary_expression "!bVar17" ! identifier) )) (compound_statement "{\n      lVar10 = 2;\n      pbVar11 = __s;\n      pbVar12 = &DAT_0016c217;\n      do {\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar16 = *pbVar11 < *pbVar12;\n        bVar17 = *pbVar11 == *pbVar12;\n        pbVar11 = pbVar11 + 1;\n        pbVar12 = pbVar12 + 1;\n      } while (bVar17);\n      if ((!bVar16 && !bVar17) == bVar16) {\n        *param_1 = 0;\n      }\n      else {\n        pcVar8 = strpbrk((char *)__s,"?*[");\n        if (pcVar8 == (char *)0x0) {\n          DAT_002b4c30 = 1;\n        }\n      }\n    }" { (expression_statement "lVar10 = 2;" (assignment_expression "lVar10 = 2" identifier = number_literal) ;) (expression_statement "pbVar11 = __s;" (assignment_expression "pbVar11 = __s" identifier = identifier) ;) (expression_statement "pbVar12 = &DAT_0016c217;" (assignment_expression "pbVar12 = &DAT_0016c217" identifier = (pointer_expression "&DAT_0016c217" & identifier)) ;) (do_statement "do {\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar16 = *pbVar11 < *pbVar12;\n        bVar17 = *pbVar11 == *pbVar12;\n        pbVar11 = pbVar11 + 1;\n        pbVar12 = pbVar12 + 1;\n      } while (bVar17);" do (compound_statement "{\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar16 = *pbVar11 < *pbVar12;\n        bVar17 = *pbVar11 == *pbVar12;\n        pbVar11 = pbVar11 + 1;\n        pbVar12 = pbVar12 + 1;\n      }" { (if_statement "if (lVar10 == 0) break;" if (parenthesized_expression "(lVar10 == 0)" ( (binary_expression "lVar10 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar10 = lVar10 + -1;" (assignment_expression "lVar10 = lVar10 + -1" identifier = (binary_expression "lVar10 + -1" identifier + number_literal)) ;) (expression_statement "bVar16 = *pbVar11 < *pbVar12;" (assignment_expression "bVar16 = *pbVar11 < *pbVar12" identifier = (binary_expression "*pbVar11 < *pbVar12" (pointer_expression "*pbVar11" * identifier) < (pointer_expression "*pbVar12" * identifier))) ;) (expression_statement "bVar17 = *pbVar11 == *pbVar12;" (assignment_expression "bVar17 = *pbVar11 == *pbVar12" identifier = (binary_expression "*pbVar11 == *pbVar12" (pointer_expression "*pbVar11" * identifier) == (pointer_expression "*pbVar12" * identifier))) ;) (expression_statement "pbVar11 = pbVar11 + 1;" (assignment_expression "pbVar11 = pbVar11 + 1" identifier = (binary_expression "pbVar11 + 1" identifier + number_literal)) ;) (expression_statement "pbVar12 = pbVar12 + 1;" (assignment_expression "pbVar12 = pbVar12 + 1" identifier = (binary_expression "pbVar12 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(bVar17)" ( identifier )) ;) (if_statement "if ((!bVar16 && !bVar17) == bVar16) {\n        *param_1 = 0;\n      }\n      else {\n        pcVar8 = strpbrk((char *)__s,"?*[");\n        if (pcVar8 == (char *)0x0) {\n          DAT_002b4c30 = 1;\n        }\n      }" if (parenthesized_expression "((!bVar16 && !bVar17) == bVar16)" ( (binary_expression "(!bVar16 && !bVar17) == bVar16" (parenthesized_expression "(!bVar16 && !bVar17)" ( (binary_expression "!bVar16 && !bVar17" (unary_expression "!bVar16" ! identifier) && (unary_expression "!bVar17" ! identifier)) )) == identifier) )) (compound_statement "{\n        *param_1 = 0;\n      }" { (expression_statement "*param_1 = 0;" (assignment_expression "*param_1 = 0" (pointer_expression "*param_1" * identifier) = number_literal) ;) }) (else_clause "else {\n        pcVar8 = strpbrk((char *)__s,"?*[");\n        if (pcVar8 == (char *)0x0) {\n          DAT_002b4c30 = 1;\n        }\n      }" else (compound_statement "{\n        pcVar8 = strpbrk((char *)__s,"?*[");\n        if (pcVar8 == (char *)0x0) {\n          DAT_002b4c30 = 1;\n        }\n      }" { (expression_statement "pcVar8 = strpbrk((char *)__s,"?*[");" (assignment_expression "pcVar8 = strpbrk((char *)__s,"?*[")" identifier = (call_expression "strpbrk((char *)__s,"?*[")" identifier (argument_list "((char *)__s,"?*[")" ( (cast_expression "(char *)__s" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , (string_literal ""?*["" " string_content ") )))) ;) (if_statement "if (pcVar8 == (char *)0x0) {\n          DAT_002b4c30 = 1;\n        }" if (parenthesized_expression "(pcVar8 == (char *)0x0)" ( (binary_expression "pcVar8 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          DAT_002b4c30 = 1;\n        }" { (expression_statement "DAT_002b4c30 = 1;" (assignment_expression "DAT_002b4c30 = 1" identifier = number_literal) ;) })) }))) })) (expression_statement "puVar4 = (undefined8 *)FUN_00119720(0x80);" (assignment_expression "puVar4 = (undefined8 *)FUN_00119720(0x80)" identifier = (cast_expression "(undefined8 *)FUN_00119720(0x80)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00119720(0x80)" identifier (argument_list "(0x80)" ( number_literal ))))) ;) (expression_statement "*puVar4 = 0;" (assignment_expression "*puVar4 = 0" (pointer_expression "*puVar4" * identifier) = number_literal) ;) (expression_statement "*(undefined4 *)(puVar4 + 1) = 4;" (assignment_expression "*(undefined4 *)(puVar4 + 1) = 4" (pointer_expression "*(undefined4 *)(puVar4 + 1)" * (cast_expression "(undefined4 *)(puVar4 + 1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + 1)" ( (binary_expression "puVar4 + 1" identifier + number_literal) )))) = number_literal) ;) (expression_statement "**(undefined8 **)(puVar2 + 8) = puVar4;" (assignment_expression "**(undefined8 **)(puVar2 + 8) = puVar4" (pointer_expression "**(undefined8 **)(puVar2 + 8)" * (pointer_expression "*(undefined8 **)(puVar2 + 8)" * (cast_expression "(undefined8 **)(puVar2 + 8)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar2 + 8)" ( (binary_expression "puVar2 + 8" identifier + number_literal) ))))) = identifier) ;) (expression_statement "uVar1 = *param_1;" (assignment_expression "uVar1 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "*(undefined8 **)(puVar2 + 8) = puVar4;" (assignment_expression "*(undefined8 **)(puVar2 + 8) = puVar4" (pointer_expression "*(undefined8 **)(puVar2 + 8)" * (cast_expression "(undefined8 **)(puVar2 + 8)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar2 + 8)" ( (binary_expression "puVar2 + 8" identifier + number_literal) )))) = identifier) ;) (expression_statement "puVar4[2] = uVar1;" (assignment_expression "puVar4[2] = uVar1" (subscript_expression "puVar4[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(uint *)(puVar4 + 3) = (uint)(*(int *)(param_1 + 2) == 1);" (assignment_expression "*(uint *)(puVar4 + 3) = (uint)(*(int *)(param_1 + 2) == 1)" (pointer_expression "*(uint *)(puVar4 + 3)" * (cast_expression "(uint *)(puVar4 + 3)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + 3)" ( (binary_expression "puVar4 + 3" identifier + number_literal) )))) = (call_expression "(uint)(*(int *)(param_1 + 2) == 1)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*(int *)(param_1 + 2) == 1)" ( (binary_expression "*(int *)(param_1 + 2) == 1" (pointer_expression "*(int *)(param_1 + 2)" * (cast_expression "(int *)(param_1 + 2)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 2)" ( (binary_expression "param_1 + 2" identifier + number_literal) )))) == number_literal) )))) ;) (expression_statement "puVar4[0xf] = param_1[3];" (assignment_expression "puVar4[0xf] = param_1[3]" (subscript_expression "puVar4[0xf]" identifier [ number_literal ]) = (subscript_expression "param_1[3]" identifier [ number_literal ])) ;) (expression_statement "puVar4[8] = param_1[1];" (assignment_expression "puVar4[8] = param_1[1]" (subscript_expression "puVar4[8]" identifier [ number_literal ]) = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) }))) (expression_statement "puVar4[4] = param_2;" (assignment_expression "puVar4[4] = param_2" (subscript_expression "puVar4[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar4[7] = puVar4 + 6;" (assignment_expression "puVar4[7] = puVar4 + 6" (subscript_expression "puVar4[7]" identifier [ number_literal ]) = (binary_expression "puVar4 + 6" identifier + number_literal)) ;) (expression_statement "*(undefined4 *)(puVar4 + 5) = param_3;" (assignment_expression "*(undefined4 *)(puVar4 + 5) = param_3" (pointer_expression "*(undefined4 *)(puVar4 + 5)" * (cast_expression "(undefined4 *)(puVar4 + 5)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar4 + 5)" ( (binary_expression "puVar4 + 5" identifier + number_literal) )))) = identifier) ;) (expression_statement "puVar4[6] = 0;" (assignment_expression "puVar4[6] = 0" (subscript_expression "puVar4[6]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar4[9] = FUN_00118ca0;" (assignment_expression "puVar4[9] = FUN_00118ca0" (subscript_expression "puVar4[9]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar4[10] = 0;" (assignment_expression "puVar4[10] = 0" (subscript_expression "puVar4[10]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar4[0xb] = 0;" (assignment_expression "puVar4[0xb] = 0" (subscript_expression "puVar4[0xb]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar4[0xc] = 0;" (assignment_expression "puVar4[0xc] = 0" (subscript_expression "puVar4[0xc]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar4[0xd] = 0;" (assignment_expression "puVar4[0xd] = 0" (subscript_expression "puVar4[0xd]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar4[0xe] = 0;" (assignment_expression "puVar4[0xe] = 0" (subscript_expression "puVar4[0xe]" identifier [ number_literal ]) = number_literal) ;) (if_statement "if ((param_2 != (long *)0x0) && (local_48 = (char *)param_2[1], local_48 != (char *)0x0)) {\n    local_4c = 0;\n    iVar13 = 1;\n    plVar7 = param_2;\n    pcVar8 = local_48;\n    while( true ) {\n      pcVar5 = strpbrk(pcVar8,"?*[");\n      if (pcVar5 != (char *)0x0) {\n        sVar6 = strcspn(pcVar8,"*?[");\n        if (sVar6 < 4) {\n          return;\n        }\n        if (pcVar8[sVar6] != '*') {\n          return;\n        }\n        if (pcVar8[sVar6 + 1] != '\0') {\n          return;\n        }\n        local_4c = local_4c + 1;\n      }\n      plVar7 = (long *)*plVar7;\n      if (plVar7 == (long *)0x0) break;\n      pcVar8 = (char *)plVar7[1];\n      iVar13 = iVar13 + 1;\n      if (pcVar8 == (char *)0x0) {\n        return;\n      }\n    }\n    plVar7 = param_2;\n    if (iVar13 < 5) {\n      while (plVar9 = (long *)*plVar7, plVar9 != (long *)0x0) {\n        pcVar8 = (char *)plVar7[1];\n        sVar6 = strcspn(pcVar8,"?*[");\n        uVar14 = sVar6 + 1;\n        plVar15 = plVar9;\n        if (pcVar8[sVar6] != '\0') {\n          uVar14 = sVar6;\n        }\n        do {\n          pcVar5 = (char *)plVar15[1];\n          sVar6 = strcspn(pcVar5,"?*[");\n          __n = sVar6 + (pcVar5[sVar6] == '\0');\n          if (uVar14 <= __n) {\n            __n = uVar14;\n          }\n          iVar3 = memcmp(pcVar8,pcVar5,__n);\n          if (iVar3 == 0) {\n            return;\n          }\n          plVar15 = (long *)*plVar15;\n          plVar7 = plVar9;\n        } while (plVar15 != (long *)0x0);\n      }\n      local_4c = local_4c + iVar13 * 0x100;\n      if (local_4c == 0x201) {\n        puVar4[9] = FUN_00119070;\n      }\n      else if (local_4c < 0x202) {\n        if (local_4c == 0x100) {\n          puVar4[9] = FUN_00119190;\n        }\n        else {\n          if (local_4c != 0x101) {\n            return;\n          }\n          puVar4[9] = FUN_00118c20;\n        }\n      }\n      else if (local_4c == 0x302) {\n        puVar4[9] = FUN_00118f20;\n      }\n      else {\n        if (local_4c != 0x402) {\n          return;\n        }\n        puVar4[9] = FUN_00118d60;\n      }\n      iVar13 = 0;\n      pcVar8 = local_48;\n      plVar7 = param_2;\n      while( true ) {\n        pcVar8 = strpbrk(pcVar8,"?*[");\n        if (pcVar8 == (char *)0x0) {\n          lVar10 = (long)iVar13;\n          iVar13 = iVar13 + 1;\n          puVar4[lVar10 + 10] = plVar7;\n        }\n        plVar7 = (long *)*plVar7;\n        if (plVar7 == (long *)0x0) break;\n        pcVar8 = (char *)plVar7[1];\n      }\n      while( true ) {\n        pcVar8 = strpbrk(local_48,"?*[");\n        if (pcVar8 != (char *)0x0) {\n          lVar10 = (long)iVar13;\n          iVar13 = iVar13 + 1;\n          puVar4[lVar10 + 10] = param_2;\n        }\n        param_2 = (long *)*param_2;\n        if (param_2 == (long *)0x0) break;\n        local_48 = (char *)param_2[1];\n      }\n    }\n  }" if (parenthesized_expression "((param_2 != (long *)0x0) && (local_48 = (char *)param_2[1], local_48 != (char *)0x0))" ( (binary_expression "(param_2 != (long *)0x0) && (local_48 = (char *)param_2[1], local_48 != (char *)0x0)" (parenthesized_expression "(param_2 != (long *)0x0)" ( (binary_expression "param_2 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(local_48 = (char *)param_2[1], local_48 != (char *)0x0)" ( (comma_expression "local_48 = (char *)param_2[1], local_48 != (char *)0x0" (assignment_expression "local_48 = (char *)param_2[1]" identifier = (cast_expression "(char *)param_2[1]" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[1]" identifier [ number_literal ]))) , (binary_expression "local_48 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (compound_statement "{\n    local_4c = 0;\n    iVar13 = 1;\n    plVar7 = param_2;\n    pcVar8 = local_48;\n    while( true ) {\n      pcVar5 = strpbrk(pcVar8,"?*[");\n      if (pcVar5 != (char *)0x0) {\n        sVar6 = strcspn(pcVar8,"*?[");\n        if (sVar6 < 4) {\n          return;\n        }\n        if (pcVar8[sVar6] != '*') {\n          return;\n        }\n        if (pcVar8[sVar6 + 1] != '\0') {\n          return;\n        }\n        local_4c = local_4c + 1;\n      }\n      plVar7 = (long *)*plVar7;\n      if (plVar7 == (long *)0x0) break;\n      pcVar8 = (char *)plVar7[1];\n      iVar13 = iVar13 + 1;\n      if (pcVar8 == (char *)0x0) {\n        return;\n      }\n    }\n    plVar7 = param_2;\n    if (iVar13 < 5) {\n      while (plVar9 = (long *)*plVar7, plVar9 != (long *)0x0) {\n        pcVar8 = (char *)plVar7[1];\n        sVar6 = strcspn(pcVar8,"?*[");\n        uVar14 = sVar6 + 1;\n        plVar15 = plVar9;\n        if (pcVar8[sVar6] != '\0') {\n          uVar14 = sVar6;\n        }\n        do {\n          pcVar5 = (char *)plVar15[1];\n          sVar6 = strcspn(pcVar5,"?*[");\n          __n = sVar6 + (pcVar5[sVar6] == '\0');\n          if (uVar14 <= __n) {\n            __n = uVar14;\n          }\n          iVar3 = memcmp(pcVar8,pcVar5,__n);\n          if (iVar3 == 0) {\n            return;\n          }\n          plVar15 = (long *)*plVar15;\n          plVar7 = plVar9;\n        } while (plVar15 != (long *)0x0);\n      }\n      local_4c = local_4c + iVar13 * 0x100;\n      if (local_4c == 0x201) {\n        puVar4[9] = FUN_00119070;\n      }\n      else if (local_4c < 0x202) {\n        if (local_4c == 0x100) {\n          puVar4[9] = FUN_00119190;\n        }\n        else {\n          if (local_4c != 0x101) {\n            return;\n          }\n          puVar4[9] = FUN_00118c20;\n        }\n      }\n      else if (local_4c == 0x302) {\n        puVar4[9] = FUN_00118f20;\n      }\n      else {\n        if (local_4c != 0x402) {\n          return;\n        }\n        puVar4[9] = FUN_00118d60;\n      }\n      iVar13 = 0;\n      pcVar8 = local_48;\n      plVar7 = param_2;\n      while( true ) {\n        pcVar8 = strpbrk(pcVar8,"?*[");\n        if (pcVar8 == (char *)0x0) {\n          lVar10 = (long)iVar13;\n          iVar13 = iVar13 + 1;\n          puVar4[lVar10 + 10] = plVar7;\n        }\n        plVar7 = (long *)*plVar7;\n        if (plVar7 == (long *)0x0) break;\n        pcVar8 = (char *)plVar7[1];\n      }\n      while( true ) {\n        pcVar8 = strpbrk(local_48,"?*[");\n        if (pcVar8 != (char *)0x0) {\n          lVar10 = (long)iVar13;\n          iVar13 = iVar13 + 1;\n          puVar4[lVar10 + 10] = param_2;\n        }\n        param_2 = (long *)*param_2;\n        if (param_2 == (long *)0x0) break;\n        local_48 = (char *)param_2[1];\n      }\n    }\n  }" { (expression_statement "local_4c = 0;" (assignment_expression "local_4c = 0" identifier = number_literal) ;) (expression_statement "iVar13 = 1;" (assignment_expression "iVar13 = 1" identifier = number_literal) ;) (expression_statement "plVar7 = param_2;" (assignment_expression "plVar7 = param_2" identifier = identifier) ;) (expression_statement "pcVar8 = local_48;" (assignment_expression "pcVar8 = local_48" identifier = identifier) ;) (while_statement "while( true ) {\n      pcVar5 = strpbrk(pcVar8,"?*[");\n      if (pcVar5 != (char *)0x0) {\n        sVar6 = strcspn(pcVar8,"*?[");\n        if (sVar6 < 4) {\n          return;\n        }\n        if (pcVar8[sVar6] != '*') {\n          return;\n        }\n        if (pcVar8[sVar6 + 1] != '\0') {\n          return;\n        }\n        local_4c = local_4c + 1;\n      }\n      plVar7 = (long *)*plVar7;\n      if (plVar7 == (long *)0x0) break;\n      pcVar8 = (char *)plVar7[1];\n      iVar13 = iVar13 + 1;\n      if (pcVar8 == (char *)0x0) {\n        return;\n      }\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      pcVar5 = strpbrk(pcVar8,"?*[");\n      if (pcVar5 != (char *)0x0) {\n        sVar6 = strcspn(pcVar8,"*?[");\n        if (sVar6 < 4) {\n          return;\n        }\n        if (pcVar8[sVar6] != '*') {\n          return;\n        }\n        if (pcVar8[sVar6 + 1] != '\0') {\n          return;\n        }\n        local_4c = local_4c + 1;\n      }\n      plVar7 = (long *)*plVar7;\n      if (plVar7 == (long *)0x0) break;\n      pcVar8 = (char *)plVar7[1];\n      iVar13 = iVar13 + 1;\n      if (pcVar8 == (char *)0x0) {\n        return;\n      }\n    }" { (expression_statement "pcVar5 = strpbrk(pcVar8,"?*[");" (assignment_expression "pcVar5 = strpbrk(pcVar8,"?*[")" identifier = (call_expression "strpbrk(pcVar8,"?*[")" identifier (argument_list "(pcVar8,"?*[")" ( identifier , (string_literal ""?*["" " string_content ") )))) ;) (if_statement "if (pcVar5 != (char *)0x0) {\n        sVar6 = strcspn(pcVar8,"*?[");\n        if (sVar6 < 4) {\n          return;\n        }\n        if (pcVar8[sVar6] != '*') {\n          return;\n        }\n        if (pcVar8[sVar6 + 1] != '\0') {\n          return;\n        }\n        local_4c = local_4c + 1;\n      }" if (parenthesized_expression "(pcVar5 != (char *)0x0)" ( (binary_expression "pcVar5 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        sVar6 = strcspn(pcVar8,"*?[");\n        if (sVar6 < 4) {\n          return;\n        }\n        if (pcVar8[sVar6] != '*') {\n          return;\n        }\n        if (pcVar8[sVar6 + 1] != '\0') {\n          return;\n        }\n        local_4c = local_4c + 1;\n      }" { (expression_statement "sVar6 = strcspn(pcVar8,"*?[");" (assignment_expression "sVar6 = strcspn(pcVar8,"*?[")" identifier = (call_expression "strcspn(pcVar8,"*?[")" identifier (argument_list "(pcVar8,"*?[")" ( identifier , (string_literal ""*?["" " string_content ") )))) ;) (if_statement "if (sVar6 < 4) {\n          return;\n        }" if (parenthesized_expression "(sVar6 < 4)" ( (binary_expression "sVar6 < 4" identifier < number_literal) )) (compound_statement "{\n          return;\n        }" { (return_statement "return;" return ;) })) (if_statement "if (pcVar8[sVar6] != '*') {\n          return;\n        }" if (parenthesized_expression "(pcVar8[sVar6] != '*')" ( (binary_expression "pcVar8[sVar6] != '*'" (subscript_expression "pcVar8[sVar6]" identifier [ identifier ]) != (char_literal "'*'" ' character ')) )) (compound_statement "{\n          return;\n        }" { (return_statement "return;" return ;) })) (if_statement "if (pcVar8[sVar6 + 1] != '\0') {\n          return;\n        }" if (parenthesized_expression "(pcVar8[sVar6 + 1] != '\0')" ( (binary_expression "pcVar8[sVar6 + 1] != '\0'" (subscript_expression "pcVar8[sVar6 + 1]" identifier [ (binary_expression "sVar6 + 1" identifier + number_literal) ]) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          return;\n        }" { (return_statement "return;" return ;) })) (expression_statement "local_4c = local_4c + 1;" (assignment_expression "local_4c = local_4c + 1" identifier = (binary_expression "local_4c + 1" identifier + number_literal)) ;) })) (expression_statement "plVar7 = (long *)*plVar7;" (assignment_expression "plVar7 = (long *)*plVar7" identifier = (cast_expression "(long *)*plVar7" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*plVar7" * identifier))) ;) (if_statement "if (plVar7 == (long *)0x0) break;" if (parenthesized_expression "(plVar7 == (long *)0x0)" ( (binary_expression "plVar7 == (long *)0x0" identifier == (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (break_statement "break;" break ;)) (expression_statement "pcVar8 = (char *)plVar7[1];" (assignment_expression "pcVar8 = (char *)plVar7[1]" identifier = (cast_expression "(char *)plVar7[1]" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "plVar7[1]" identifier [ number_literal ]))) ;) (expression_statement "iVar13 = iVar13 + 1;" (assignment_expression "iVar13 = iVar13 + 1" identifier = (binary_expression "iVar13 + 1" identifier + number_literal)) ;) (if_statement "if (pcVar8 == (char *)0x0) {\n        return;\n      }" if (parenthesized_expression "(pcVar8 == (char *)0x0)" ( (binary_expression "pcVar8 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        return;\n      }" { (return_statement "return;" return ;) })) })) (expression_statement "plVar7 = param_2;" (assignment_expression "plVar7 = param_2" identifier = identifier) ;) (if_statement "if (iVar13 < 5) {\n      while (plVar9 = (long *)*plVar7, plVar9 != (long *)0x0) {\n        pcVar8 = (char *)plVar7[1];\n        sVar6 = strcspn(pcVar8,"?*[");\n        uVar14 = sVar6 + 1;\n        plVar15 = plVar9;\n        if (pcVar8[sVar6] != '\0') {\n          uVar14 = sVar6;\n        }\n        do {\n          pcVar5 = (char *)plVar15[1];\n          sVar6 = strcspn(pcVar5,"?*[");\n          __n = sVar6 + (pcVar5[sVar6] == '\0');\n          if (uVar14 <= __n) {\n            __n = uVar14;\n          }\n          iVar3 = memcmp(pcVar8,pcVar5,__n);\n          if (iVar3 == 0) {\n            return;\n          }\n          plVar15 = (long *)*plVar15;\n          plVar7 = plVar9;\n        } while (plVar15 != (long *)0x0);\n      }\n      local_4c = local_4c + iVar13 * 0x100;\n      if (local_4c == 0x201) {\n        puVar4[9] = FUN_00119070;\n      }\n      else if (local_4c < 0x202) {\n        if (local_4c == 0x100) {\n          puVar4[9] = FUN_00119190;\n        }\n        else {\n          if (local_4c != 0x101) {\n            return;\n          }\n          puVar4[9] = FUN_00118c20;\n        }\n      }\n      else if (local_4c == 0x302) {\n        puVar4[9] = FUN_00118f20;\n      }\n      else {\n        if (local_4c != 0x402) {\n          return;\n        }\n        puVar4[9] = FUN_00118d60;\n      }\n      iVar13 = 0;\n      pcVar8 = local_48;\n      plVar7 = param_2;\n      while( true ) {\n        pcVar8 = strpbrk(pcVar8,"?*[");\n        if (pcVar8 == (char *)0x0) {\n          lVar10 = (long)iVar13;\n          iVar13 = iVar13 + 1;\n          puVar4[lVar10 + 10] = plVar7;\n        }\n        plVar7 = (long *)*plVar7;\n        if (plVar7 == (long *)0x0) break;\n        pcVar8 = (char *)plVar7[1];\n      }\n      while( true ) {\n        pcVar8 = strpbrk(local_48,"?*[");\n        if (pcVar8 != (char *)0x0) {\n          lVar10 = (long)iVar13;\n          iVar13 = iVar13 + 1;\n          puVar4[lVar10 + 10] = param_2;\n        }\n        param_2 = (long *)*param_2;\n        if (param_2 == (long *)0x0) break;\n        local_48 = (char *)param_2[1];\n      }\n    }" if (parenthesized_expression "(iVar13 < 5)" ( (binary_expression "iVar13 < 5" identifier < number_literal) )) (compound_statement "{\n      while (plVar9 = (long *)*plVar7, plVar9 != (long *)0x0) {\n        pcVar8 = (char *)plVar7[1];\n        sVar6 = strcspn(pcVar8,"?*[");\n        uVar14 = sVar6 + 1;\n        plVar15 = plVar9;\n        if (pcVar8[sVar6] != '\0') {\n          uVar14 = sVar6;\n        }\n        do {\n          pcVar5 = (char *)plVar15[1];\n          sVar6 = strcspn(pcVar5,"?*[");\n          __n = sVar6 + (pcVar5[sVar6] == '\0');\n          if (uVar14 <= __n) {\n            __n = uVar14;\n          }\n          iVar3 = memcmp(pcVar8,pcVar5,__n);\n          if (iVar3 == 0) {\n            return;\n          }\n          plVar15 = (long *)*plVar15;\n          plVar7 = plVar9;\n        } while (plVar15 != (long *)0x0);\n      }\n      local_4c = local_4c + iVar13 * 0x100;\n      if (local_4c == 0x201) {\n        puVar4[9] = FUN_00119070;\n      }\n      else if (local_4c < 0x202) {\n        if (local_4c == 0x100) {\n          puVar4[9] = FUN_00119190;\n        }\n        else {\n          if (local_4c != 0x101) {\n            return;\n          }\n          puVar4[9] = FUN_00118c20;\n        }\n      }\n      else if (local_4c == 0x302) {\n        puVar4[9] = FUN_00118f20;\n      }\n      else {\n        if (local_4c != 0x402) {\n          return;\n        }\n        puVar4[9] = FUN_00118d60;\n      }\n      iVar13 = 0;\n      pcVar8 = local_48;\n      plVar7 = param_2;\n      while( true ) {\n        pcVar8 = strpbrk(pcVar8,"?*[");\n        if (pcVar8 == (char *)0x0) {\n          lVar10 = (long)iVar13;\n          iVar13 = iVar13 + 1;\n          puVar4[lVar10 + 10] = plVar7;\n        }\n        plVar7 = (long *)*plVar7;\n        if (plVar7 == (long *)0x0) break;\n        pcVar8 = (char *)plVar7[1];\n      }\n      while( true ) {\n        pcVar8 = strpbrk(local_48,"?*[");\n        if (pcVar8 != (char *)0x0) {\n          lVar10 = (long)iVar13;\n          iVar13 = iVar13 + 1;\n          puVar4[lVar10 + 10] = param_2;\n        }\n        param_2 = (long *)*param_2;\n        if (param_2 == (long *)0x0) break;\n        local_48 = (char *)param_2[1];\n      }\n    }" { (while_statement "while (plVar9 = (long *)*plVar7, plVar9 != (long *)0x0) {\n        pcVar8 = (char *)plVar7[1];\n        sVar6 = strcspn(pcVar8,"?*[");\n        uVar14 = sVar6 + 1;\n        plVar15 = plVar9;\n        if (pcVar8[sVar6] != '\0') {\n          uVar14 = sVar6;\n        }\n        do {\n          pcVar5 = (char *)plVar15[1];\n          sVar6 = strcspn(pcVar5,"?*[");\n          __n = sVar6 + (pcVar5[sVar6] == '\0');\n          if (uVar14 <= __n) {\n            __n = uVar14;\n          }\n          iVar3 = memcmp(pcVar8,pcVar5,__n);\n          if (iVar3 == 0) {\n            return;\n          }\n          plVar15 = (long *)*plVar15;\n          plVar7 = plVar9;\n        } while (plVar15 != (long *)0x0);\n      }" while (parenthesized_expression "(plVar9 = (long *)*plVar7, plVar9 != (long *)0x0)" ( (comma_expression "plVar9 = (long *)*plVar7, plVar9 != (long *)0x0" (assignment_expression "plVar9 = (long *)*plVar7" identifier = (cast_expression "(long *)*plVar7" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*plVar7" * identifier))) , (binary_expression "plVar9 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal))) )) (compound_statement "{\n        pcVar8 = (char *)plVar7[1];\n        sVar6 = strcspn(pcVar8,"?*[");\n        uVar14 = sVar6 + 1;\n        plVar15 = plVar9;\n        if (pcVar8[sVar6] != '\0') {\n          uVar14 = sVar6;\n        }\n        do {\n          pcVar5 = (char *)plVar15[1];\n          sVar6 = strcspn(pcVar5,"?*[");\n          __n = sVar6 + (pcVar5[sVar6] == '\0');\n          if (uVar14 <= __n) {\n            __n = uVar14;\n          }\n          iVar3 = memcmp(pcVar8,pcVar5,__n);\n          if (iVar3 == 0) {\n            return;\n          }\n          plVar15 = (long *)*plVar15;\n          plVar7 = plVar9;\n        } while (plVar15 != (long *)0x0);\n      }" { (expression_statement "pcVar8 = (char *)plVar7[1];" (assignment_expression "pcVar8 = (char *)plVar7[1]" identifier = (cast_expression "(char *)plVar7[1]" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "plVar7[1]" identifier [ number_literal ]))) ;) (expression_statement "sVar6 = strcspn(pcVar8,"?*[");" (assignment_expression "sVar6 = strcspn(pcVar8,"?*[")" identifier = (call_expression "strcspn(pcVar8,"?*[")" identifier (argument_list "(pcVar8,"?*[")" ( identifier , (string_literal ""?*["" " string_content ") )))) ;) (expression_statement "uVar14 = sVar6 + 1;" (assignment_expression "uVar14 = sVar6 + 1" identifier = (binary_expression "sVar6 + 1" identifier + number_literal)) ;) (expression_statement "plVar15 = plVar9;" (assignment_expression "plVar15 = plVar9" identifier = identifier) ;) (if_statement "if (pcVar8[sVar6] != '\0') {\n          uVar14 = sVar6;\n        }" if (parenthesized_expression "(pcVar8[sVar6] != '\0')" ( (binary_expression "pcVar8[sVar6] != '\0'" (subscript_expression "pcVar8[sVar6]" identifier [ identifier ]) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          uVar14 = sVar6;\n        }" { (expression_statement "uVar14 = sVar6;" (assignment_expression "uVar14 = sVar6" identifier = identifier) ;) })) (do_statement "do {\n          pcVar5 = (char *)plVar15[1];\n          sVar6 = strcspn(pcVar5,"?*[");\n          __n = sVar6 + (pcVar5[sVar6] == '\0');\n          if (uVar14 <= __n) {\n            __n = uVar14;\n          }\n          iVar3 = memcmp(pcVar8,pcVar5,__n);\n          if (iVar3 == 0) {\n            return;\n          }\n          plVar15 = (long *)*plVar15;\n          plVar7 = plVar9;\n        } while (plVar15 != (long *)0x0);" do (compound_statement "{\n          pcVar5 = (char *)plVar15[1];\n          sVar6 = strcspn(pcVar5,"?*[");\n          __n = sVar6 + (pcVar5[sVar6] == '\0');\n          if (uVar14 <= __n) {\n            __n = uVar14;\n          }\n          iVar3 = memcmp(pcVar8,pcVar5,__n);\n          if (iVar3 == 0) {\n            return;\n          }\n          plVar15 = (long *)*plVar15;\n          plVar7 = plVar9;\n        }" { (expression_statement "pcVar5 = (char *)plVar15[1];" (assignment_expression "pcVar5 = (char *)plVar15[1]" identifier = (cast_expression "(char *)plVar15[1]" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "plVar15[1]" identifier [ number_literal ]))) ;) (expression_statement "sVar6 = strcspn(pcVar5,"?*[");" (assignment_expression "sVar6 = strcspn(pcVar5,"?*[")" identifier = (call_expression "strcspn(pcVar5,"?*[")" identifier (argument_list "(pcVar5,"?*[")" ( identifier , (string_literal ""?*["" " string_content ") )))) ;) (expression_statement "__n = sVar6 + (pcVar5[sVar6] == '\0');" (assignment_expression "__n = sVar6 + (pcVar5[sVar6] == '\0')" identifier = (binary_expression "sVar6 + (pcVar5[sVar6] == '\0')" identifier + (parenthesized_expression "(pcVar5[sVar6] == '\0')" ( (binary_expression "pcVar5[sVar6] == '\0'" (subscript_expression "pcVar5[sVar6]" identifier [ identifier ]) == (char_literal "'\0'" ' escape_sequence ')) )))) ;) (if_statement "if (uVar14 <= __n) {\n            __n = uVar14;\n          }" if (parenthesized_expression "(uVar14 <= __n)" ( (binary_expression "uVar14 <= __n" identifier <= identifier) )) (compound_statement "{\n            __n = uVar14;\n          }" { (expression_statement "__n = uVar14;" (assignment_expression "__n = uVar14" identifier = identifier) ;) })) (expression_statement "iVar3 = memcmp(pcVar8,pcVar5,__n);" (assignment_expression "iVar3 = memcmp(pcVar8,pcVar5,__n)" identifier = (call_expression "memcmp(pcVar8,pcVar5,__n)" identifier (argument_list "(pcVar8,pcVar5,__n)" ( identifier , identifier , identifier )))) ;) (if_statement "if (iVar3 == 0) {\n            return;\n          }" if (parenthesized_expression "(iVar3 == 0)" ( (binary_expression "iVar3 == 0" identifier == number_literal) )) (compound_statement "{\n            return;\n          }" { (return_statement "return;" return ;) })) (expression_statement "plVar15 = (long *)*plVar15;" (assignment_expression "plVar15 = (long *)*plVar15" identifier = (cast_expression "(long *)*plVar15" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*plVar15" * identifier))) ;) (expression_statement "plVar7 = plVar9;" (assignment_expression "plVar7 = plVar9" identifier = identifier) ;) }) while (parenthesized_expression "(plVar15 != (long *)0x0)" ( (binary_expression "plVar15 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) })) (expression_statement "local_4c = local_4c + iVar13 * 0x100;" (assignment_expression "local_4c = local_4c + iVar13 * 0x100" identifier = (binary_expression "local_4c + iVar13 * 0x100" identifier + (binary_expression "iVar13 * 0x100" identifier * number_literal))) ;) (if_statement "if (local_4c == 0x201) {\n        puVar4[9] = FUN_00119070;\n      }\n      else if (local_4c < 0x202) {\n        if (local_4c == 0x100) {\n          puVar4[9] = FUN_00119190;\n        }\n        else {\n          if (local_4c != 0x101) {\n            return;\n          }\n          puVar4[9] = FUN_00118c20;\n        }\n      }\n      else if (local_4c == 0x302) {\n        puVar4[9] = FUN_00118f20;\n      }\n      else {\n        if (local_4c != 0x402) {\n          return;\n        }\n        puVar4[9] = FUN_00118d60;\n      }" if (parenthesized_expression "(local_4c == 0x201)" ( (binary_expression "local_4c == 0x201" identifier == number_literal) )) (compound_statement "{\n        puVar4[9] = FUN_00119070;\n      }" { (expression_statement "puVar4[9] = FUN_00119070;" (assignment_expression "puVar4[9] = FUN_00119070" (subscript_expression "puVar4[9]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else if (local_4c < 0x202) {\n        if (local_4c == 0x100) {\n          puVar4[9] = FUN_00119190;\n        }\n        else {\n          if (local_4c != 0x101) {\n            return;\n          }\n          puVar4[9] = FUN_00118c20;\n        }\n      }\n      else if (local_4c == 0x302) {\n        puVar4[9] = FUN_00118f20;\n      }\n      else {\n        if (local_4c != 0x402) {\n          return;\n        }\n        puVar4[9] = FUN_00118d60;\n      }" else (if_statement "if (local_4c < 0x202) {\n        if (local_4c == 0x100) {\n          puVar4[9] = FUN_00119190;\n        }\n        else {\n          if (local_4c != 0x101) {\n            return;\n          }\n          puVar4[9] = FUN_00118c20;\n        }\n      }\n      else if (local_4c == 0x302) {\n        puVar4[9] = FUN_00118f20;\n      }\n      else {\n        if (local_4c != 0x402) {\n          return;\n        }\n        puVar4[9] = FUN_00118d60;\n      }" if (parenthesized_expression "(local_4c < 0x202)" ( (binary_expression "local_4c < 0x202" identifier < number_literal) )) (compound_statement "{\n        if (local_4c == 0x100) {\n          puVar4[9] = FUN_00119190;\n        }\n        else {\n          if (local_4c != 0x101) {\n            return;\n          }\n          puVar4[9] = FUN_00118c20;\n        }\n      }" { (if_statement "if (local_4c == 0x100) {\n          puVar4[9] = FUN_00119190;\n        }\n        else {\n          if (local_4c != 0x101) {\n            return;\n          }\n          puVar4[9] = FUN_00118c20;\n        }" if (parenthesized_expression "(local_4c == 0x100)" ( (binary_expression "local_4c == 0x100" identifier == number_literal) )) (compound_statement "{\n          puVar4[9] = FUN_00119190;\n        }" { (expression_statement "puVar4[9] = FUN_00119190;" (assignment_expression "puVar4[9] = FUN_00119190" (subscript_expression "puVar4[9]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n          if (local_4c != 0x101) {\n            return;\n          }\n          puVar4[9] = FUN_00118c20;\n        }" else (compound_statement "{\n          if (local_4c != 0x101) {\n            return;\n          }\n          puVar4[9] = FUN_00118c20;\n        }" { (if_statement "if (local_4c != 0x101) {\n            return;\n          }" if (parenthesized_expression "(local_4c != 0x101)" ( (binary_expression "local_4c != 0x101" identifier != number_literal) )) (compound_statement "{\n            return;\n          }" { (return_statement "return;" return ;) })) (expression_statement "puVar4[9] = FUN_00118c20;" (assignment_expression "puVar4[9] = FUN_00118c20" (subscript_expression "puVar4[9]" identifier [ number_literal ]) = identifier) ;) }))) }) (else_clause "else if (local_4c == 0x302) {\n        puVar4[9] = FUN_00118f20;\n      }\n      else {\n        if (local_4c != 0x402) {\n          return;\n        }\n        puVar4[9] = FUN_00118d60;\n      }" else (if_statement "if (local_4c == 0x302) {\n        puVar4[9] = FUN_00118f20;\n      }\n      else {\n        if (local_4c != 0x402) {\n          return;\n        }\n        puVar4[9] = FUN_00118d60;\n      }" if (parenthesized_expression "(local_4c == 0x302)" ( (binary_expression "local_4c == 0x302" identifier == number_literal) )) (compound_statement "{\n        puVar4[9] = FUN_00118f20;\n      }" { (expression_statement "puVar4[9] = FUN_00118f20;" (assignment_expression "puVar4[9] = FUN_00118f20" (subscript_expression "puVar4[9]" identifier [ number_literal ]) = identifier) ;) }) (else_clause "else {\n        if (local_4c != 0x402) {\n          return;\n        }\n        puVar4[9] = FUN_00118d60;\n      }" else (compound_statement "{\n        if (local_4c != 0x402) {\n          return;\n        }\n        puVar4[9] = FUN_00118d60;\n      }" { (if_statement "if (local_4c != 0x402) {\n          return;\n        }" if (parenthesized_expression "(local_4c != 0x402)" ( (binary_expression "local_4c != 0x402" identifier != number_literal) )) (compound_statement "{\n          return;\n        }" { (return_statement "return;" return ;) })) (expression_statement "puVar4[9] = FUN_00118d60;" (assignment_expression "puVar4[9] = FUN_00118d60" (subscript_expression "puVar4[9]" identifier [ number_literal ]) = identifier) ;) }))))))) (expression_statement "iVar13 = 0;" (assignment_expression "iVar13 = 0" identifier = number_literal) ;) (expression_statement "pcVar8 = local_48;" (assignment_expression "pcVar8 = local_48" identifier = identifier) ;) (expression_statement "plVar7 = param_2;" (assignment_expression "plVar7 = param_2" identifier = identifier) ;) (while_statement "while( true ) {\n        pcVar8 = strpbrk(pcVar8,"?*[");\n        if (pcVar8 == (char *)0x0) {\n          lVar10 = (long)iVar13;\n          iVar13 = iVar13 + 1;\n          puVar4[lVar10 + 10] = plVar7;\n        }\n        plVar7 = (long *)*plVar7;\n        if (plVar7 == (long *)0x0) break;\n        pcVar8 = (char *)plVar7[1];\n      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n        pcVar8 = strpbrk(pcVar8,"?*[");\n        if (pcVar8 == (char *)0x0) {\n          lVar10 = (long)iVar13;\n          iVar13 = iVar13 + 1;\n          puVar4[lVar10 + 10] = plVar7;\n        }\n        plVar7 = (long *)*plVar7;\n        if (plVar7 == (long *)0x0) break;\n        pcVar8 = (char *)plVar7[1];\n      }" { (expression_statement "pcVar8 = strpbrk(pcVar8,"?*[");" (assignment_expression "pcVar8 = strpbrk(pcVar8,"?*[")" identifier = (call_expression "strpbrk(pcVar8,"?*[")" identifier (argument_list "(pcVar8,"?*[")" ( identifier , (string_literal ""?*["" " string_content ") )))) ;) (if_statement "if (pcVar8 == (char *)0x0) {\n          lVar10 = (long)iVar13;\n          iVar13 = iVar13 + 1;\n          puVar4[lVar10 + 10] = plVar7;\n        }" if (parenthesized_expression "(pcVar8 == (char *)0x0)" ( (binary_expression "pcVar8 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          lVar10 = (long)iVar13;\n          iVar13 = iVar13 + 1;\n          puVar4[lVar10 + 10] = plVar7;\n        }" { (expression_statement "lVar10 = (long)iVar13;" (assignment_expression "lVar10 = (long)iVar13" identifier = (cast_expression "(long)iVar13" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ;) (expression_statement "iVar13 = iVar13 + 1;" (assignment_expression "iVar13 = iVar13 + 1" identifier = (binary_expression "iVar13 + 1" identifier + number_literal)) ;) (expression_statement "puVar4[lVar10 + 10] = plVar7;" (assignment_expression "puVar4[lVar10 + 10] = plVar7" (subscript_expression "puVar4[lVar10 + 10]" identifier [ (binary_expression "lVar10 + 10" identifier + number_literal) ]) = identifier) ;) })) (expression_statement "plVar7 = (long *)*plVar7;" (assignment_expression "plVar7 = (long *)*plVar7" identifier = (cast_expression "(long *)*plVar7" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*plVar7" * identifier))) ;) (if_statement "if (plVar7 == (long *)0x0) break;" if (parenthesized_expression "(plVar7 == (long *)0x0)" ( (binary_expression "plVar7 == (long *)0x0" identifier == (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (break_statement "break;" break ;)) (expression_statement "pcVar8 = (char *)plVar7[1];" (assignment_expression "pcVar8 = (char *)plVar7[1]" identifier = (cast_expression "(char *)plVar7[1]" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "plVar7[1]" identifier [ number_literal ]))) ;) })) (while_statement "while( true ) {\n        pcVar8 = strpbrk(local_48,"?*[");\n        if (pcVar8 != (char *)0x0) {\n          lVar10 = (long)iVar13;\n          iVar13 = iVar13 + 1;\n          puVar4[lVar10 + 10] = param_2;\n        }\n        param_2 = (long *)*param_2;\n        if (param_2 == (long *)0x0) break;\n        local_48 = (char *)param_2[1];\n      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n        pcVar8 = strpbrk(local_48,"?*[");\n        if (pcVar8 != (char *)0x0) {\n          lVar10 = (long)iVar13;\n          iVar13 = iVar13 + 1;\n          puVar4[lVar10 + 10] = param_2;\n        }\n        param_2 = (long *)*param_2;\n        if (param_2 == (long *)0x0) break;\n        local_48 = (char *)param_2[1];\n      }" { (expression_statement "pcVar8 = strpbrk(local_48,"?*[");" (assignment_expression "pcVar8 = strpbrk(local_48,"?*[")" identifier = (call_expression "strpbrk(local_48,"?*[")" identifier (argument_list "(local_48,"?*[")" ( identifier , (string_literal ""?*["" " string_content ") )))) ;) (if_statement "if (pcVar8 != (char *)0x0) {\n          lVar10 = (long)iVar13;\n          iVar13 = iVar13 + 1;\n          puVar4[lVar10 + 10] = param_2;\n        }" if (parenthesized_expression "(pcVar8 != (char *)0x0)" ( (binary_expression "pcVar8 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          lVar10 = (long)iVar13;\n          iVar13 = iVar13 + 1;\n          puVar4[lVar10 + 10] = param_2;\n        }" { (expression_statement "lVar10 = (long)iVar13;" (assignment_expression "lVar10 = (long)iVar13" identifier = (cast_expression "(long)iVar13" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ;) (expression_statement "iVar13 = iVar13 + 1;" (assignment_expression "iVar13 = iVar13 + 1" identifier = (binary_expression "iVar13 + 1" identifier + number_literal)) ;) (expression_statement "puVar4[lVar10 + 10] = param_2;" (assignment_expression "puVar4[lVar10 + 10] = param_2" (subscript_expression "puVar4[lVar10 + 10]" identifier [ (binary_expression "lVar10 + 10" identifier + number_literal) ]) = identifier) ;) })) (expression_statement "param_2 = (long *)*param_2;" (assignment_expression "param_2 = (long *)*param_2" identifier = (cast_expression "(long *)*param_2" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_2" * identifier))) ;) (if_statement "if (param_2 == (long *)0x0) break;" if (parenthesized_expression "(param_2 == (long *)0x0)" ( (binary_expression "param_2 == (long *)0x0" identifier == (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (break_statement "break;" break ;)) (expression_statement "local_48 = (char *)param_2[1];" (assignment_expression "local_48 = (char *)param_2[1]" identifier = (cast_expression "(char *)param_2[1]" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[1]" identifier [ number_literal ]))) ;) })) })) })) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration (sized_type_specifier long) (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT)) )) ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( LIT ))))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT))) ;) (if_statement if (parenthesized_expression ( (unary_expression ! IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) < (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) == (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( IDENT )) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (unary_expression ! IDENT) && (unary_expression ! IDENT)) )) == IDENT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT) , (string_literal " string_content ") )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) })) }))) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( LIT ))))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) }))) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT)) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) , (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT))) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content ") )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content ") )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (return_statement return ;) })) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ IDENT ]) != (char_literal ' character ')) )) (compound_statement { (return_statement return ;) })) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ (binary_expression IDENT + LIT) ]) != (char_literal ' escape_sequence ')) )) (compound_statement { (return_statement return ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT)) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (return_statement return ;) })) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (while_statement while (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) , (binary_expression IDENT != (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content ") )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ IDENT ]) != (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content ") )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ IDENT ]) == (char_literal ' escape_sequence ')) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT)) )) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression IDENT * LIT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (return_statement return ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) }))) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (return_statement return ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) }))))))) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content ") )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression IDENT + LIT) ]) = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT)) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) })) (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content ") )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression IDENT + LIT) ]) = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT)) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) })) })) })) (return_statement return ;) })))
(function_definition "void FUN_0011e4d0(undefined8 *param_1,long *param_2,undefined4 param_3)\n\n{\n  byte *__s;\n  undefined8 uVar1;\n  undefined *puVar2;\n  int iVar3;\n  undefined8 *puVar4;\n  char *pcVar5;\n  size_t sVar6;\n  long *plVar7;\n  ulong __n;\n  char *pcVar8;\n  long *plVar9;\n  long lVar10;\n  byte *pbVar11;\n  byte *pbVar12;\n  int iVar13;\n  ulong uVar14;\n  long *plVar15;\n  bool bVar16;\n  bool bVar17;\n  int local_4c;\n  char *local_48;\n  \n  if (param_2 != (long *)0x0) {\n    plVar9 = (long *)0x0;\n    plVar7 = param_2;\n    do {\n      param_2 = plVar7;\n      plVar7 = (long *)*param_2;\n      *param_2 = (long)plVar9;\n      plVar9 = param_2;\n    } while (plVar7 != (long *)0x0);\n  }\n  puVar2 = PTR_DAT_002b2710;\n  if (param_1 == (undefined8 *)0x0) {\n    puVar4 = (undefined8 *)FUN_00119720(0x80);\n    *puVar4 = 0;\n    *(undefined4 *)(puVar4 + 1) = 4;\n    **(undefined8 **)(puVar2 + 8) = puVar4;\n    *(undefined8 **)(puVar2 + 8) = puVar4;\n    puVar4[2] = 0;\n    *(undefined4 *)(puVar4 + 3) = 0;\n    puVar4[0xf] = 0;\n    puVar4[8] = 0;\n  }\n  else {\n    __s = (byte *)*param_1;\n    bVar16 = false;\n    bVar17 = __s == (byte *)0x0;\n    if (!bVar17) {\n      lVar10 = 2;\n      pbVar11 = __s;\n      pbVar12 = &DAT_0016c217;\n      do {\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar16 = *pbVar11 < *pbVar12;\n        bVar17 = *pbVar11 == *pbVar12;\n        pbVar11 = pbVar11 + 1;\n        pbVar12 = pbVar12 + 1;\n      } while (bVar17);\n      if ((!bVar16 && !bVar17) == bVar16) {\n        *param_1 = 0;\n      }\n      else {\n        pcVar8 = strpbrk((char *)__s,"?*[");\n        if (pcVar8 == (char *)0x0) {\n          DAT_002b4c30 = 1;\n        }\n      }\n    }\n    puVar4 = (undefined8 *)FUN_00119720(0x80);\n    *puVar4 = 0;\n    *(undefined4 *)(puVar4 + 1) = 4;\n    **(undefined8 **)(puVar2 + 8) = puVar4;\n    uVar1 = *param_1;\n    *(undefined8 **)(puVar2 + 8) = puVar4;\n    puVar4[2] = uVar1;\n    *(uint *)(puVar4 + 3) = (uint)(*(int *)(param_1 + 2) == 1);\n    puVar4[0xf] = param_1[3];\n    puVar4[8] = param_1[1];\n  }\n  puVar4[4] = param_2;\n  puVar4[7] = puVar4 + 6;\n  *(undefined4 *)(puVar4 + 5) = param_3;\n  puVar4[6] = 0;\n  puVar4[9] = FUN_00118ca0;\n  puVar4[10] = 0;\n  puVar4[0xb] = 0;\n  puVar4[0xc] = 0;\n  puVar4[0xd] = 0;\n  puVar4[0xe] = 0;\n  if ((param_2 != (long *)0x0) && (local_48 = (char *)param_2[1], local_48 != (char *)0x0)) {\n    local_4c = 0;\n    iVar13 = 1;\n    plVar7 = param_2;\n    pcVar8 = local_48;\n    while( true ) {\n      pcVar5 = strpbrk(pcVar8,"?*[");\n      if (pcVar5 != (char *)0x0) {\n        sVar6 = strcspn(pcVar8,"*?[");\n        if (sVar6 < 4) {\n          return;\n        }\n        if (pcVar8[sVar6] != '*') {\n          return;\n        }\n        if (pcVar8[sVar6 + 1] != '\0') {\n          return;\n        }\n        local_4c = local_4c + 1;\n      }\n      plVar7 = (long *)*plVar7;\n      if (plVar7 == (long *)0x0) break;\n      pcVar8 = (char *)plVar7[1];\n      iVar13 = iVar13 + 1;\n      if (pcVar8 == (char *)0x0) {\n        return;\n      }\n    }\n    plVar7 = param_2;\n    if (iVar13 < 5) {\n      while (plVar9 = (long *)*plVar7, plVar9 != (long *)0x0) {\n        pcVar8 = (char *)plVar7[1];\n        sVar6 = strcspn(pcVar8,"?*[");\n        uVar14 = sVar6 + 1;\n        plVar15 = plVar9;\n        if (pcVar8[sVar6] != '\0') {\n          uVar14 = sVar6;\n        }\n        do {\n          pcVar5 = (char *)plVar15[1];\n          sVar6 = strcspn(pcVar5,"?*[");\n          __n = sVar6 + (pcVar5[sVar6] == '\0');\n          if (uVar14 <= __n) {\n            __n = uVar14;\n          }\n          iVar3 = memcmp(pcVar8,pcVar5,__n);\n          if (iVar3 == 0) {\n            return;\n          }\n          plVar15 = (long *)*plVar15;\n          plVar7 = plVar9;\n        } while (plVar15 != (long *)0x0);\n      }\n      local_4c = local_4c + iVar13 * 0x100;\n      if (local_4c == 0x201) {\n        puVar4[9] = FUN_00119070;\n      }\n      else if (local_4c < 0x202) {\n        if (local_4c == 0x100) {\n          puVar4[9] = FUN_00119190;\n        }\n        else {\n          if (local_4c != 0x101) {\n            return;\n          }\n          puVar4[9] = FUN_00118c20;\n        }\n      }\n      else if (local_4c == 0x302) {\n        puVar4[9] = FUN_00118f20;\n      }\n      else {\n        if (local_4c != 0x402) {\n          return;\n        }\n        puVar4[9] = FUN_00118d60;\n      }\n      iVar13 = 0;\n      pcVar8 = local_48;\n      plVar7 = param_2;\n      while( true ) {\n        pcVar8 = strpbrk(pcVar8,"?*[");\n        if (pcVar8 == (char *)0x0) {\n          lVar10 = (long)iVar13;\n          iVar13 = iVar13 + 1;\n          puVar4[lVar10 + 10] = plVar7;\n        }\n        plVar7 = (long *)*plVar7;\n        if (plVar7 == (long *)0x0) break;\n        pcVar8 = (char *)plVar7[1];\n      }\n      while( true ) {\n        pcVar8 = strpbrk(local_48,"?*[");\n        if (pcVar8 != (char *)0x0) {\n          lVar10 = (long)iVar13;\n          iVar13 = iVar13 + 1;\n          puVar4[lVar10 + 10] = param_2;\n        }\n        param_2 = (long *)*param_2;\n        if (param_2 == (long *)0x0) break;\n        local_48 = (char *)param_2[1];\n      }\n    }\n  }\n  return;\n}" (primitive_type "void") (function_declarator "FUN_0011e4d0(undefined8 *param_1,long *param_2,undefined4 param_3)" (identifier "FUN_0011e4d0") (parameter_list "(undefined8 *param_1,long *param_2,undefined4 param_3)" (( "(") (parameter_declaration "undefined8 *param_1" (type_identifier "undefined8") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "long *param_2" (sized_type_specifier "long" (long "long")) (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "undefined4 param_3" (type_identifier "undefined4") (identifier "param_3")) () ")"))) (compound_statement "{\n  byte *__s;\n  undefined8 uVar1;\n  undefined *puVar2;\n  int iVar3;\n  undefined8 *puVar4;\n  char *pcVar5;\n  size_t sVar6;\n  long *plVar7;\n  ulong __n;\n  char *pcVar8;\n  long *plVar9;\n  long lVar10;\n  byte *pbVar11;\n  byte *pbVar12;\n  int iVar13;\n  ulong uVar14;\n  long *plVar15;\n  bool bVar16;\n  bool bVar17;\n  int local_4c;\n  char *local_48;\n  \n  if (param_2 != (long *)0x0) {\n    plVar9 = (long *)0x0;\n    plVar7 = param_2;\n    do {\n      param_2 = plVar7;\n      plVar7 = (long *)*param_2;\n      *param_2 = (long)plVar9;\n      plVar9 = param_2;\n    } while (plVar7 != (long *)0x0);\n  }\n  puVar2 = PTR_DAT_002b2710;\n  if (param_1 == (undefined8 *)0x0) {\n    puVar4 = (undefined8 *)FUN_00119720(0x80);\n    *puVar4 = 0;\n    *(undefined4 *)(puVar4 + 1) = 4;\n    **(undefined8 **)(puVar2 + 8) = puVar4;\n    *(undefined8 **)(puVar2 + 8) = puVar4;\n    puVar4[2] = 0;\n    *(undefined4 *)(puVar4 + 3) = 0;\n    puVar4[0xf] = 0;\n    puVar4[8] = 0;\n  }\n  else {\n    __s = (byte *)*param_1;\n    bVar16 = false;\n    bVar17 = __s == (byte *)0x0;\n    if (!bVar17) {\n      lVar10 = 2;\n      pbVar11 = __s;\n      pbVar12 = &DAT_0016c217;\n      do {\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar16 = *pbVar11 < *pbVar12;\n        bVar17 = *pbVar11 == *pbVar12;\n        pbVar11 = pbVar11 + 1;\n        pbVar12 = pbVar12 + 1;\n      } while (bVar17);\n      if ((!bVar16 && !bVar17) == bVar16) {\n        *param_1 = 0;\n      }\n      else {\n        pcVar8 = strpbrk((char *)__s,"?*[");\n        if (pcVar8 == (char *)0x0) {\n          DAT_002b4c30 = 1;\n        }\n      }\n    }\n    puVar4 = (undefined8 *)FUN_00119720(0x80);\n    *puVar4 = 0;\n    *(undefined4 *)(puVar4 + 1) = 4;\n    **(undefined8 **)(puVar2 + 8) = puVar4;\n    uVar1 = *param_1;\n    *(undefined8 **)(puVar2 + 8) = puVar4;\n    puVar4[2] = uVar1;\n    *(uint *)(puVar4 + 3) = (uint)(*(int *)(param_1 + 2) == 1);\n    puVar4[0xf] = param_1[3];\n    puVar4[8] = param_1[1];\n  }\n  puVar4[4] = param_2;\n  puVar4[7] = puVar4 + 6;\n  *(undefined4 *)(puVar4 + 5) = param_3;\n  puVar4[6] = 0;\n  puVar4[9] = FUN_00118ca0;\n  puVar4[10] = 0;\n  puVar4[0xb] = 0;\n  puVar4[0xc] = 0;\n  puVar4[0xd] = 0;\n  puVar4[0xe] = 0;\n  if ((param_2 != (long *)0x0) && (local_48 = (char *)param_2[1], local_48 != (char *)0x0)) {\n    local_4c = 0;\n    iVar13 = 1;\n    plVar7 = param_2;\n    pcVar8 = local_48;\n    while( true ) {\n      pcVar5 = strpbrk(pcVar8,"?*[");\n      if (pcVar5 != (char *)0x0) {\n        sVar6 = strcspn(pcVar8,"*?[");\n        if (sVar6 < 4) {\n          return;\n        }\n        if (pcVar8[sVar6] != '*') {\n          return;\n        }\n        if (pcVar8[sVar6 + 1] != '\0') {\n          return;\n        }\n        local_4c = local_4c + 1;\n      }\n      plVar7 = (long *)*plVar7;\n      if (plVar7 == (long *)0x0) break;\n      pcVar8 = (char *)plVar7[1];\n      iVar13 = iVar13 + 1;\n      if (pcVar8 == (char *)0x0) {\n        return;\n      }\n    }\n    plVar7 = param_2;\n    if (iVar13 < 5) {\n      while (plVar9 = (long *)*plVar7, plVar9 != (long *)0x0) {\n        pcVar8 = (char *)plVar7[1];\n        sVar6 = strcspn(pcVar8,"?*[");\n        uVar14 = sVar6 + 1;\n        plVar15 = plVar9;\n        if (pcVar8[sVar6] != '\0') {\n          uVar14 = sVar6;\n        }\n        do {\n          pcVar5 = (char *)plVar15[1];\n          sVar6 = strcspn(pcVar5,"?*[");\n          __n = sVar6 + (pcVar5[sVar6] == '\0');\n          if (uVar14 <= __n) {\n            __n = uVar14;\n          }\n          iVar3 = memcmp(pcVar8,pcVar5,__n);\n          if (iVar3 == 0) {\n            return;\n          }\n          plVar15 = (long *)*plVar15;\n          plVar7 = plVar9;\n        } while (plVar15 != (long *)0x0);\n      }\n      local_4c = local_4c + iVar13 * 0x100;\n      if (local_4c == 0x201) {\n        puVar4[9] = FUN_00119070;\n      }\n      else if (local_4c < 0x202) {\n        if (local_4c == 0x100) {\n          puVar4[9] = FUN_00119190;\n        }\n        else {\n          if (local_4c != 0x101) {\n            return;\n          }\n          puVar4[9] = FUN_00118c20;\n        }\n      }\n      else if (local_4c == 0x302) {\n        puVar4[9] = FUN_00118f20;\n      }\n      else {\n        if (local_4c != 0x402) {\n          return;\n        }\n        puVar4[9] = FUN_00118d60;\n      }\n      iVar13 = 0;\n      pcVar8 = local_48;\n      plVar7 = param_2;\n      while( true ) {\n        pcVar8 = strpbrk(pcVar8,"?*[");\n        if (pcVar8 == (char *)0x0) {\n          lVar10 = (long)iVar13;\n          iVar13 = iVar13 + 1;\n          puVar4[lVar10 + 10] = plVar7;\n        }\n        plVar7 = (long *)*plVar7;\n        if (plVar7 == (long *)0x0) break;\n        pcVar8 = (char *)plVar7[1];\n      }\n      while( true ) {\n        pcVar8 = strpbrk(local_48,"?*[");\n        if (pcVar8 != (char *)0x0) {\n          lVar10 = (long)iVar13;\n          iVar13 = iVar13 + 1;\n          puVar4[lVar10 + 10] = param_2;\n        }\n        param_2 = (long *)*param_2;\n        if (param_2 == (long *)0x0) break;\n        local_48 = (char *)param_2[1];\n      }\n    }\n  }\n  return;\n}" ({ "{") (declaration "byte *__s;" (type_identifier "byte") (pointer_declarator "*__s" (* "*") (identifier "__s")) (; ";")) (declaration "undefined8 uVar1;" (type_identifier "undefined8") (identifier "uVar1") (; ";")) (declaration "undefined *puVar2;" (type_identifier "undefined") (pointer_declarator "*puVar2" (* "*") (identifier "puVar2")) (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (declaration "undefined8 *puVar4;" (type_identifier "undefined8") (pointer_declarator "*puVar4" (* "*") (identifier "puVar4")) (; ";")) (declaration "char *pcVar5;" (primitive_type "char") (pointer_declarator "*pcVar5" (* "*") (identifier "pcVar5")) (; ";")) (declaration "size_t sVar6;" (primitive_type "size_t") (identifier "sVar6") (; ";")) (declaration "long *plVar7;" (sized_type_specifier "long" (long "long")) (pointer_declarator "*plVar7" (* "*") (identifier "plVar7")) (; ";")) (declaration "ulong __n;" (type_identifier "ulong") (identifier "__n") (; ";")) (declaration "char *pcVar8;" (primitive_type "char") (pointer_declarator "*pcVar8" (* "*") (identifier "pcVar8")) (; ";")) (declaration "long *plVar9;" (sized_type_specifier "long" (long "long")) (pointer_declarator "*plVar9" (* "*") (identifier "plVar9")) (; ";")) (declaration "long lVar10;" (sized_type_specifier "long" (long "long")) (identifier "lVar10") (; ";")) (declaration "byte *pbVar11;" (type_identifier "byte") (pointer_declarator "*pbVar11" (* "*") (identifier "pbVar11")) (; ";")) (declaration "byte *pbVar12;" (type_identifier "byte") (pointer_declarator "*pbVar12" (* "*") (identifier "pbVar12")) (; ";")) (declaration "int iVar13;" (primitive_type "int") (identifier "iVar13") (; ";")) (declaration "ulong uVar14;" (type_identifier "ulong") (identifier "uVar14") (; ";")) (declaration "long *plVar15;" (sized_type_specifier "long" (long "long")) (pointer_declarator "*plVar15" (* "*") (identifier "plVar15")) (; ";")) (declaration "bool bVar16;" (primitive_type "bool") (identifier "bVar16") (; ";")) (declaration "bool bVar17;" (primitive_type "bool") (identifier "bVar17") (; ";")) (declaration "int local_4c;" (primitive_type "int") (identifier "local_4c") (; ";")) (declaration "char *local_48;" (primitive_type "char") (pointer_declarator "*local_48" (* "*") (identifier "local_48")) (; ";")) (if_statement "if (param_2 != (long *)0x0) {\n    plVar9 = (long *)0x0;\n    plVar7 = param_2;\n    do {\n      param_2 = plVar7;\n      plVar7 = (long *)*param_2;\n      *param_2 = (long)plVar9;\n      plVar9 = param_2;\n    } while (plVar7 != (long *)0x0);\n  }" (if "if") (parenthesized_expression "(param_2 != (long *)0x0)" (( "(") (binary_expression "param_2 != (long *)0x0" (identifier "param_2") (!= "!=") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    plVar9 = (long *)0x0;\n    plVar7 = param_2;\n    do {\n      param_2 = plVar7;\n      plVar7 = (long *)*param_2;\n      *param_2 = (long)plVar9;\n      plVar9 = param_2;\n    } while (plVar7 != (long *)0x0);\n  }" ({ "{") (expression_statement "plVar9 = (long *)0x0;" (assignment_expression "plVar9 = (long *)0x0" (identifier "plVar9") (= "=") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "plVar7 = param_2;" (assignment_expression "plVar7 = param_2" (identifier "plVar7") (= "=") (identifier "param_2")) (; ";")) (do_statement "do {\n      param_2 = plVar7;\n      plVar7 = (long *)*param_2;\n      *param_2 = (long)plVar9;\n      plVar9 = param_2;\n    } while (plVar7 != (long *)0x0);" (do "do") (compound_statement "{\n      param_2 = plVar7;\n      plVar7 = (long *)*param_2;\n      *param_2 = (long)plVar9;\n      plVar9 = param_2;\n    }" ({ "{") (expression_statement "param_2 = plVar7;" (assignment_expression "param_2 = plVar7" (identifier "param_2") (= "=") (identifier "plVar7")) (; ";")) (expression_statement "plVar7 = (long *)*param_2;" (assignment_expression "plVar7 = (long *)*param_2" (identifier "plVar7") (= "=") (cast_expression "(long *)*param_2" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_2" (* "*") (identifier "param_2")))) (; ";")) (expression_statement "*param_2 = (long)plVar9;" (assignment_expression "*param_2 = (long)plVar9" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (cast_expression "(long)plVar9" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "plVar9"))) (; ";")) (expression_statement "plVar9 = param_2;" (assignment_expression "plVar9 = param_2" (identifier "plVar9") (= "=") (identifier "param_2")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(plVar7 != (long *)0x0)" (( "(") (binary_expression "plVar7 != (long *)0x0" (identifier "plVar7") (!= "!=") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (; ";")) (} "}"))) (expression_statement "puVar2 = PTR_DAT_002b2710;" (assignment_expression "puVar2 = PTR_DAT_002b2710" (identifier "puVar2") (= "=") (identifier "PTR_DAT_002b2710")) (; ";")) (if_statement "if (param_1 == (undefined8 *)0x0) {\n    puVar4 = (undefined8 *)FUN_00119720(0x80);\n    *puVar4 = 0;\n    *(undefined4 *)(puVar4 + 1) = 4;\n    **(undefined8 **)(puVar2 + 8) = puVar4;\n    *(undefined8 **)(puVar2 + 8) = puVar4;\n    puVar4[2] = 0;\n    *(undefined4 *)(puVar4 + 3) = 0;\n    puVar4[0xf] = 0;\n    puVar4[8] = 0;\n  }\n  else {\n    __s = (byte *)*param_1;\n    bVar16 = false;\n    bVar17 = __s == (byte *)0x0;\n    if (!bVar17) {\n      lVar10 = 2;\n      pbVar11 = __s;\n      pbVar12 = &DAT_0016c217;\n      do {\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar16 = *pbVar11 < *pbVar12;\n        bVar17 = *pbVar11 == *pbVar12;\n        pbVar11 = pbVar11 + 1;\n        pbVar12 = pbVar12 + 1;\n      } while (bVar17);\n      if ((!bVar16 && !bVar17) == bVar16) {\n        *param_1 = 0;\n      }\n      else {\n        pcVar8 = strpbrk((char *)__s,"?*[");\n        if (pcVar8 == (char *)0x0) {\n          DAT_002b4c30 = 1;\n        }\n      }\n    }\n    puVar4 = (undefined8 *)FUN_00119720(0x80);\n    *puVar4 = 0;\n    *(undefined4 *)(puVar4 + 1) = 4;\n    **(undefined8 **)(puVar2 + 8) = puVar4;\n    uVar1 = *param_1;\n    *(undefined8 **)(puVar2 + 8) = puVar4;\n    puVar4[2] = uVar1;\n    *(uint *)(puVar4 + 3) = (uint)(*(int *)(param_1 + 2) == 1);\n    puVar4[0xf] = param_1[3];\n    puVar4[8] = param_1[1];\n  }" (if "if") (parenthesized_expression "(param_1 == (undefined8 *)0x0)" (( "(") (binary_expression "param_1 == (undefined8 *)0x0" (identifier "param_1") (== "==") (cast_expression "(undefined8 *)0x0" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    puVar4 = (undefined8 *)FUN_00119720(0x80);\n    *puVar4 = 0;\n    *(undefined4 *)(puVar4 + 1) = 4;\n    **(undefined8 **)(puVar2 + 8) = puVar4;\n    *(undefined8 **)(puVar2 + 8) = puVar4;\n    puVar4[2] = 0;\n    *(undefined4 *)(puVar4 + 3) = 0;\n    puVar4[0xf] = 0;\n    puVar4[8] = 0;\n  }" ({ "{") (expression_statement "puVar4 = (undefined8 *)FUN_00119720(0x80);" (assignment_expression "puVar4 = (undefined8 *)FUN_00119720(0x80)" (identifier "puVar4") (= "=") (cast_expression "(undefined8 *)FUN_00119720(0x80)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00119720(0x80)" (identifier "FUN_00119720") (argument_list "(0x80)" (( "(") (number_literal "0x80") () ")"))))) (; ";")) (expression_statement "*puVar4 = 0;" (assignment_expression "*puVar4 = 0" (pointer_expression "*puVar4" (* "*") (identifier "puVar4")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 *)(puVar4 + 1) = 4;" (assignment_expression "*(undefined4 *)(puVar4 + 1) = 4" (pointer_expression "*(undefined4 *)(puVar4 + 1)" (* "*") (cast_expression "(undefined4 *)(puVar4 + 1)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar4 + 1)" (( "(") (binary_expression "puVar4 + 1" (identifier "puVar4") (+ "+") (number_literal "1")) () ")")))) (= "=") (number_literal "4")) (; ";")) (expression_statement "**(undefined8 **)(puVar2 + 8) = puVar4;" (assignment_expression "**(undefined8 **)(puVar2 + 8) = puVar4" (pointer_expression "**(undefined8 **)(puVar2 + 8)" (* "*") (pointer_expression "*(undefined8 **)(puVar2 + 8)" (* "*") (cast_expression "(undefined8 **)(puVar2 + 8)" (( "(") (type_descriptor "undefined8 **" (type_identifier "undefined8") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar2 + 8)" (( "(") (binary_expression "puVar2 + 8" (identifier "puVar2") (+ "+") (number_literal "8")) () ")"))))) (= "=") (identifier "puVar4")) (; ";")) (expression_statement "*(undefined8 **)(puVar2 + 8) = puVar4;" (assignment_expression "*(undefined8 **)(puVar2 + 8) = puVar4" (pointer_expression "*(undefined8 **)(puVar2 + 8)" (* "*") (cast_expression "(undefined8 **)(puVar2 + 8)" (( "(") (type_descriptor "undefined8 **" (type_identifier "undefined8") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar2 + 8)" (( "(") (binary_expression "puVar2 + 8" (identifier "puVar2") (+ "+") (number_literal "8")) () ")")))) (= "=") (identifier "puVar4")) (; ";")) (expression_statement "puVar4[2] = 0;" (assignment_expression "puVar4[2] = 0" (subscript_expression "puVar4[2]" (identifier "puVar4") ([ "[") (number_literal "2") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 *)(puVar4 + 3) = 0;" (assignment_expression "*(undefined4 *)(puVar4 + 3) = 0" (pointer_expression "*(undefined4 *)(puVar4 + 3)" (* "*") (cast_expression "(undefined4 *)(puVar4 + 3)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar4 + 3)" (( "(") (binary_expression "puVar4 + 3" (identifier "puVar4") (+ "+") (number_literal "3")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar4[0xf] = 0;" (assignment_expression "puVar4[0xf] = 0" (subscript_expression "puVar4[0xf]" (identifier "puVar4") ([ "[") (number_literal "0xf") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar4[8] = 0;" (assignment_expression "puVar4[8] = 0" (subscript_expression "puVar4[8]" (identifier "puVar4") ([ "[") (number_literal "8") (] "]")) (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n    __s = (byte *)*param_1;\n    bVar16 = false;\n    bVar17 = __s == (byte *)0x0;\n    if (!bVar17) {\n      lVar10 = 2;\n      pbVar11 = __s;\n      pbVar12 = &DAT_0016c217;\n      do {\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar16 = *pbVar11 < *pbVar12;\n        bVar17 = *pbVar11 == *pbVar12;\n        pbVar11 = pbVar11 + 1;\n        pbVar12 = pbVar12 + 1;\n      } while (bVar17);\n      if ((!bVar16 && !bVar17) == bVar16) {\n        *param_1 = 0;\n      }\n      else {\n        pcVar8 = strpbrk((char *)__s,"?*[");\n        if (pcVar8 == (char *)0x0) {\n          DAT_002b4c30 = 1;\n        }\n      }\n    }\n    puVar4 = (undefined8 *)FUN_00119720(0x80);\n    *puVar4 = 0;\n    *(undefined4 *)(puVar4 + 1) = 4;\n    **(undefined8 **)(puVar2 + 8) = puVar4;\n    uVar1 = *param_1;\n    *(undefined8 **)(puVar2 + 8) = puVar4;\n    puVar4[2] = uVar1;\n    *(uint *)(puVar4 + 3) = (uint)(*(int *)(param_1 + 2) == 1);\n    puVar4[0xf] = param_1[3];\n    puVar4[8] = param_1[1];\n  }" (else "else") (compound_statement "{\n    __s = (byte *)*param_1;\n    bVar16 = false;\n    bVar17 = __s == (byte *)0x0;\n    if (!bVar17) {\n      lVar10 = 2;\n      pbVar11 = __s;\n      pbVar12 = &DAT_0016c217;\n      do {\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar16 = *pbVar11 < *pbVar12;\n        bVar17 = *pbVar11 == *pbVar12;\n        pbVar11 = pbVar11 + 1;\n        pbVar12 = pbVar12 + 1;\n      } while (bVar17);\n      if ((!bVar16 && !bVar17) == bVar16) {\n        *param_1 = 0;\n      }\n      else {\n        pcVar8 = strpbrk((char *)__s,"?*[");\n        if (pcVar8 == (char *)0x0) {\n          DAT_002b4c30 = 1;\n        }\n      }\n    }\n    puVar4 = (undefined8 *)FUN_00119720(0x80);\n    *puVar4 = 0;\n    *(undefined4 *)(puVar4 + 1) = 4;\n    **(undefined8 **)(puVar2 + 8) = puVar4;\n    uVar1 = *param_1;\n    *(undefined8 **)(puVar2 + 8) = puVar4;\n    puVar4[2] = uVar1;\n    *(uint *)(puVar4 + 3) = (uint)(*(int *)(param_1 + 2) == 1);\n    puVar4[0xf] = param_1[3];\n    puVar4[8] = param_1[1];\n  }" ({ "{") (expression_statement "__s = (byte *)*param_1;" (assignment_expression "__s = (byte *)*param_1" (identifier "__s") (= "=") (cast_expression "(byte *)*param_1" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_1" (* "*") (identifier "param_1")))) (; ";")) (expression_statement "bVar16 = false;" (assignment_expression "bVar16 = false" (identifier "bVar16") (= "=") (false "false")) (; ";")) (expression_statement "bVar17 = __s == (byte *)0x0;" (assignment_expression "bVar17 = __s == (byte *)0x0" (identifier "bVar17") (= "=") (binary_expression "__s == (byte *)0x0" (identifier "__s") (== "==") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")))) (; ";")) (if_statement "if (!bVar17) {\n      lVar10 = 2;\n      pbVar11 = __s;\n      pbVar12 = &DAT_0016c217;\n      do {\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar16 = *pbVar11 < *pbVar12;\n        bVar17 = *pbVar11 == *pbVar12;\n        pbVar11 = pbVar11 + 1;\n        pbVar12 = pbVar12 + 1;\n      } while (bVar17);\n      if ((!bVar16 && !bVar17) == bVar16) {\n        *param_1 = 0;\n      }\n      else {\n        pcVar8 = strpbrk((char *)__s,"?*[");\n        if (pcVar8 == (char *)0x0) {\n          DAT_002b4c30 = 1;\n        }\n      }\n    }" (if "if") (parenthesized_expression "(!bVar17)" (( "(") (unary_expression "!bVar17" (! "!") (identifier "bVar17")) () ")")) (compound_statement "{\n      lVar10 = 2;\n      pbVar11 = __s;\n      pbVar12 = &DAT_0016c217;\n      do {\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar16 = *pbVar11 < *pbVar12;\n        bVar17 = *pbVar11 == *pbVar12;\n        pbVar11 = pbVar11 + 1;\n        pbVar12 = pbVar12 + 1;\n      } while (bVar17);\n      if ((!bVar16 && !bVar17) == bVar16) {\n        *param_1 = 0;\n      }\n      else {\n        pcVar8 = strpbrk((char *)__s,"?*[");\n        if (pcVar8 == (char *)0x0) {\n          DAT_002b4c30 = 1;\n        }\n      }\n    }" ({ "{") (expression_statement "lVar10 = 2;" (assignment_expression "lVar10 = 2" (identifier "lVar10") (= "=") (number_literal "2")) (; ";")) (expression_statement "pbVar11 = __s;" (assignment_expression "pbVar11 = __s" (identifier "pbVar11") (= "=") (identifier "__s")) (; ";")) (expression_statement "pbVar12 = &DAT_0016c217;" (assignment_expression "pbVar12 = &DAT_0016c217" (identifier "pbVar12") (= "=") (pointer_expression "&DAT_0016c217" (& "&") (identifier "DAT_0016c217"))) (; ";")) (do_statement "do {\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar16 = *pbVar11 < *pbVar12;\n        bVar17 = *pbVar11 == *pbVar12;\n        pbVar11 = pbVar11 + 1;\n        pbVar12 = pbVar12 + 1;\n      } while (bVar17);" (do "do") (compound_statement "{\n        if (lVar10 == 0) break;\n        lVar10 = lVar10 + -1;\n        bVar16 = *pbVar11 < *pbVar12;\n        bVar17 = *pbVar11 == *pbVar12;\n        pbVar11 = pbVar11 + 1;\n        pbVar12 = pbVar12 + 1;\n      }" ({ "{") (if_statement "if (lVar10 == 0) break;" (if "if") (parenthesized_expression "(lVar10 == 0)" (( "(") (binary_expression "lVar10 == 0" (identifier "lVar10") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "lVar10 = lVar10 + -1;" (assignment_expression "lVar10 = lVar10 + -1" (identifier "lVar10") (= "=") (binary_expression "lVar10 + -1" (identifier "lVar10") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "bVar16 = *pbVar11 < *pbVar12;" (assignment_expression "bVar16 = *pbVar11 < *pbVar12" (identifier "bVar16") (= "=") (binary_expression "*pbVar11 < *pbVar12" (pointer_expression "*pbVar11" (* "*") (identifier "pbVar11")) (< "<") (pointer_expression "*pbVar12" (* "*") (identifier "pbVar12")))) (; ";")) (expression_statement "bVar17 = *pbVar11 == *pbVar12;" (assignment_expression "bVar17 = *pbVar11 == *pbVar12" (identifier "bVar17") (= "=") (binary_expression "*pbVar11 == *pbVar12" (pointer_expression "*pbVar11" (* "*") (identifier "pbVar11")) (== "==") (pointer_expression "*pbVar12" (* "*") (identifier "pbVar12")))) (; ";")) (expression_statement "pbVar11 = pbVar11 + 1;" (assignment_expression "pbVar11 = pbVar11 + 1" (identifier "pbVar11") (= "=") (binary_expression "pbVar11 + 1" (identifier "pbVar11") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pbVar12 = pbVar12 + 1;" (assignment_expression "pbVar12 = pbVar12 + 1" (identifier "pbVar12") (= "=") (binary_expression "pbVar12 + 1" (identifier "pbVar12") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar17)" (( "(") (identifier "bVar17") () ")")) (; ";")) (if_statement "if ((!bVar16 && !bVar17) == bVar16) {\n        *param_1 = 0;\n      }\n      else {\n        pcVar8 = strpbrk((char *)__s,"?*[");\n        if (pcVar8 == (char *)0x0) {\n          DAT_002b4c30 = 1;\n        }\n      }" (if "if") (parenthesized_expression "((!bVar16 && !bVar17) == bVar16)" (( "(") (binary_expression "(!bVar16 && !bVar17) == bVar16" (parenthesized_expression "(!bVar16 && !bVar17)" (( "(") (binary_expression "!bVar16 && !bVar17" (unary_expression "!bVar16" (! "!") (identifier "bVar16")) (&& "&&") (unary_expression "!bVar17" (! "!") (identifier "bVar17"))) () ")")) (== "==") (identifier "bVar16")) () ")")) (compound_statement "{\n        *param_1 = 0;\n      }" ({ "{") (expression_statement "*param_1 = 0;" (assignment_expression "*param_1 = 0" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n        pcVar8 = strpbrk((char *)__s,"?*[");\n        if (pcVar8 == (char *)0x0) {\n          DAT_002b4c30 = 1;\n        }\n      }" (else "else") (compound_statement "{\n        pcVar8 = strpbrk((char *)__s,"?*[");\n        if (pcVar8 == (char *)0x0) {\n          DAT_002b4c30 = 1;\n        }\n      }" ({ "{") (expression_statement "pcVar8 = strpbrk((char *)__s,"?*[");" (assignment_expression "pcVar8 = strpbrk((char *)__s,"?*[")" (identifier "pcVar8") (= "=") (call_expression "strpbrk((char *)__s,"?*[")" (identifier "strpbrk") (argument_list "((char *)__s,"?*[")" (( "(") (cast_expression "(char *)__s" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "__s")) (, ",") (string_literal ""?*["" (" """) (string_content "?*[") (" """)) () ")")))) (; ";")) (if_statement "if (pcVar8 == (char *)0x0) {\n          DAT_002b4c30 = 1;\n        }" (if "if") (parenthesized_expression "(pcVar8 == (char *)0x0)" (( "(") (binary_expression "pcVar8 == (char *)0x0" (identifier "pcVar8") (== "==") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n          DAT_002b4c30 = 1;\n        }" ({ "{") (expression_statement "DAT_002b4c30 = 1;" (assignment_expression "DAT_002b4c30 = 1" (identifier "DAT_002b4c30") (= "=") (number_literal "1")) (; ";")) (} "}"))) (} "}")))) (} "}"))) (expression_statement "puVar4 = (undefined8 *)FUN_00119720(0x80);" (assignment_expression "puVar4 = (undefined8 *)FUN_00119720(0x80)" (identifier "puVar4") (= "=") (cast_expression "(undefined8 *)FUN_00119720(0x80)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00119720(0x80)" (identifier "FUN_00119720") (argument_list "(0x80)" (( "(") (number_literal "0x80") () ")"))))) (; ";")) (expression_statement "*puVar4 = 0;" (assignment_expression "*puVar4 = 0" (pointer_expression "*puVar4" (* "*") (identifier "puVar4")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 *)(puVar4 + 1) = 4;" (assignment_expression "*(undefined4 *)(puVar4 + 1) = 4" (pointer_expression "*(undefined4 *)(puVar4 + 1)" (* "*") (cast_expression "(undefined4 *)(puVar4 + 1)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar4 + 1)" (( "(") (binary_expression "puVar4 + 1" (identifier "puVar4") (+ "+") (number_literal "1")) () ")")))) (= "=") (number_literal "4")) (; ";")) (expression_statement "**(undefined8 **)(puVar2 + 8) = puVar4;" (assignment_expression "**(undefined8 **)(puVar2 + 8) = puVar4" (pointer_expression "**(undefined8 **)(puVar2 + 8)" (* "*") (pointer_expression "*(undefined8 **)(puVar2 + 8)" (* "*") (cast_expression "(undefined8 **)(puVar2 + 8)" (( "(") (type_descriptor "undefined8 **" (type_identifier "undefined8") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar2 + 8)" (( "(") (binary_expression "puVar2 + 8" (identifier "puVar2") (+ "+") (number_literal "8")) () ")"))))) (= "=") (identifier "puVar4")) (; ";")) (expression_statement "uVar1 = *param_1;" (assignment_expression "uVar1 = *param_1" (identifier "uVar1") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (expression_statement "*(undefined8 **)(puVar2 + 8) = puVar4;" (assignment_expression "*(undefined8 **)(puVar2 + 8) = puVar4" (pointer_expression "*(undefined8 **)(puVar2 + 8)" (* "*") (cast_expression "(undefined8 **)(puVar2 + 8)" (( "(") (type_descriptor "undefined8 **" (type_identifier "undefined8") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar2 + 8)" (( "(") (binary_expression "puVar2 + 8" (identifier "puVar2") (+ "+") (number_literal "8")) () ")")))) (= "=") (identifier "puVar4")) (; ";")) (expression_statement "puVar4[2] = uVar1;" (assignment_expression "puVar4[2] = uVar1" (subscript_expression "puVar4[2]" (identifier "puVar4") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "uVar1")) (; ";")) (expression_statement "*(uint *)(puVar4 + 3) = (uint)(*(int *)(param_1 + 2) == 1);" (assignment_expression "*(uint *)(puVar4 + 3) = (uint)(*(int *)(param_1 + 2) == 1)" (pointer_expression "*(uint *)(puVar4 + 3)" (* "*") (cast_expression "(uint *)(puVar4 + 3)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar4 + 3)" (( "(") (binary_expression "puVar4 + 3" (identifier "puVar4") (+ "+") (number_literal "3")) () ")")))) (= "=") (call_expression "(uint)(*(int *)(param_1 + 2) == 1)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(*(int *)(param_1 + 2) == 1)" (( "(") (binary_expression "*(int *)(param_1 + 2) == 1" (pointer_expression "*(int *)(param_1 + 2)" (* "*") (cast_expression "(int *)(param_1 + 2)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 2)" (( "(") (binary_expression "param_1 + 2" (identifier "param_1") (+ "+") (number_literal "2")) () ")")))) (== "==") (number_literal "1")) () ")")))) (; ";")) (expression_statement "puVar4[0xf] = param_1[3];" (assignment_expression "puVar4[0xf] = param_1[3]" (subscript_expression "puVar4[0xf]" (identifier "puVar4") ([ "[") (number_literal "0xf") (] "]")) (= "=") (subscript_expression "param_1[3]" (identifier "param_1") ([ "[") (number_literal "3") (] "]"))) (; ";")) (expression_statement "puVar4[8] = param_1[1];" (assignment_expression "puVar4[8] = param_1[1]" (subscript_expression "puVar4[8]" (identifier "puVar4") ([ "[") (number_literal "8") (] "]")) (= "=") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]"))) (; ";")) (} "}")))) (expression_statement "puVar4[4] = param_2;" (assignment_expression "puVar4[4] = param_2" (subscript_expression "puVar4[4]" (identifier "puVar4") ([ "[") (number_literal "4") (] "]")) (= "=") (identifier "param_2")) (; ";")) (expression_statement "puVar4[7] = puVar4 + 6;" (assignment_expression "puVar4[7] = puVar4 + 6" (subscript_expression "puVar4[7]" (identifier "puVar4") ([ "[") (number_literal "7") (] "]")) (= "=") (binary_expression "puVar4 + 6" (identifier "puVar4") (+ "+") (number_literal "6"))) (; ";")) (expression_statement "*(undefined4 *)(puVar4 + 5) = param_3;" (assignment_expression "*(undefined4 *)(puVar4 + 5) = param_3" (pointer_expression "*(undefined4 *)(puVar4 + 5)" (* "*") (cast_expression "(undefined4 *)(puVar4 + 5)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar4 + 5)" (( "(") (binary_expression "puVar4 + 5" (identifier "puVar4") (+ "+") (number_literal "5")) () ")")))) (= "=") (identifier "param_3")) (; ";")) (expression_statement "puVar4[6] = 0;" (assignment_expression "puVar4[6] = 0" (subscript_expression "puVar4[6]" (identifier "puVar4") ([ "[") (number_literal "6") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar4[9] = FUN_00118ca0;" (assignment_expression "puVar4[9] = FUN_00118ca0" (subscript_expression "puVar4[9]" (identifier "puVar4") ([ "[") (number_literal "9") (] "]")) (= "=") (identifier "FUN_00118ca0")) (; ";")) (expression_statement "puVar4[10] = 0;" (assignment_expression "puVar4[10] = 0" (subscript_expression "puVar4[10]" (identifier "puVar4") ([ "[") (number_literal "10") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar4[0xb] = 0;" (assignment_expression "puVar4[0xb] = 0" (subscript_expression "puVar4[0xb]" (identifier "puVar4") ([ "[") (number_literal "0xb") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar4[0xc] = 0;" (assignment_expression "puVar4[0xc] = 0" (subscript_expression "puVar4[0xc]" (identifier "puVar4") ([ "[") (number_literal "0xc") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar4[0xd] = 0;" (assignment_expression "puVar4[0xd] = 0" (subscript_expression "puVar4[0xd]" (identifier "puVar4") ([ "[") (number_literal "0xd") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar4[0xe] = 0;" (assignment_expression "puVar4[0xe] = 0" (subscript_expression "puVar4[0xe]" (identifier "puVar4") ([ "[") (number_literal "0xe") (] "]")) (= "=") (number_literal "0")) (; ";")) (if_statement "if ((param_2 != (long *)0x0) && (local_48 = (char *)param_2[1], local_48 != (char *)0x0)) {\n    local_4c = 0;\n    iVar13 = 1;\n    plVar7 = param_2;\n    pcVar8 = local_48;\n    while( true ) {\n      pcVar5 = strpbrk(pcVar8,"?*[");\n      if (pcVar5 != (char *)0x0) {\n        sVar6 = strcspn(pcVar8,"*?[");\n        if (sVar6 < 4) {\n          return;\n        }\n        if (pcVar8[sVar6] != '*') {\n          return;\n        }\n        if (pcVar8[sVar6 + 1] != '\0') {\n          return;\n        }\n        local_4c = local_4c + 1;\n      }\n      plVar7 = (long *)*plVar7;\n      if (plVar7 == (long *)0x0) break;\n      pcVar8 = (char *)plVar7[1];\n      iVar13 = iVar13 + 1;\n      if (pcVar8 == (char *)0x0) {\n        return;\n      }\n    }\n    plVar7 = param_2;\n    if (iVar13 < 5) {\n      while (plVar9 = (long *)*plVar7, plVar9 != (long *)0x0) {\n        pcVar8 = (char *)plVar7[1];\n        sVar6 = strcspn(pcVar8,"?*[");\n        uVar14 = sVar6 + 1;\n        plVar15 = plVar9;\n        if (pcVar8[sVar6] != '\0') {\n          uVar14 = sVar6;\n        }\n        do {\n          pcVar5 = (char *)plVar15[1];\n          sVar6 = strcspn(pcVar5,"?*[");\n          __n = sVar6 + (pcVar5[sVar6] == '\0');\n          if (uVar14 <= __n) {\n            __n = uVar14;\n          }\n          iVar3 = memcmp(pcVar8,pcVar5,__n);\n          if (iVar3 == 0) {\n            return;\n          }\n          plVar15 = (long *)*plVar15;\n          plVar7 = plVar9;\n        } while (plVar15 != (long *)0x0);\n      }\n      local_4c = local_4c + iVar13 * 0x100;\n      if (local_4c == 0x201) {\n        puVar4[9] = FUN_00119070;\n      }\n      else if (local_4c < 0x202) {\n        if (local_4c == 0x100) {\n          puVar4[9] = FUN_00119190;\n        }\n        else {\n          if (local_4c != 0x101) {\n            return;\n          }\n          puVar4[9] = FUN_00118c20;\n        }\n      }\n      else if (local_4c == 0x302) {\n        puVar4[9] = FUN_00118f20;\n      }\n      else {\n        if (local_4c != 0x402) {\n          return;\n        }\n        puVar4[9] = FUN_00118d60;\n      }\n      iVar13 = 0;\n      pcVar8 = local_48;\n      plVar7 = param_2;\n      while( true ) {\n        pcVar8 = strpbrk(pcVar8,"?*[");\n        if (pcVar8 == (char *)0x0) {\n          lVar10 = (long)iVar13;\n          iVar13 = iVar13 + 1;\n          puVar4[lVar10 + 10] = plVar7;\n        }\n        plVar7 = (long *)*plVar7;\n        if (plVar7 == (long *)0x0) break;\n        pcVar8 = (char *)plVar7[1];\n      }\n      while( true ) {\n        pcVar8 = strpbrk(local_48,"?*[");\n        if (pcVar8 != (char *)0x0) {\n          lVar10 = (long)iVar13;\n          iVar13 = iVar13 + 1;\n          puVar4[lVar10 + 10] = param_2;\n        }\n        param_2 = (long *)*param_2;\n        if (param_2 == (long *)0x0) break;\n        local_48 = (char *)param_2[1];\n      }\n    }\n  }" (if "if") (parenthesized_expression "((param_2 != (long *)0x0) && (local_48 = (char *)param_2[1], local_48 != (char *)0x0))" (( "(") (binary_expression "(param_2 != (long *)0x0) && (local_48 = (char *)param_2[1], local_48 != (char *)0x0)" (parenthesized_expression "(param_2 != (long *)0x0)" (( "(") (binary_expression "param_2 != (long *)0x0" (identifier "param_2") (!= "!=") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (&& "&&") (parenthesized_expression "(local_48 = (char *)param_2[1], local_48 != (char *)0x0)" (( "(") (comma_expression "local_48 = (char *)param_2[1], local_48 != (char *)0x0" (assignment_expression "local_48 = (char *)param_2[1]" (identifier "local_48") (= "=") (cast_expression "(char *)param_2[1]" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]")))) (, ",") (binary_expression "local_48 != (char *)0x0" (identifier "local_48") (!= "!=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")))) () ")"))) () ")")) (compound_statement "{\n    local_4c = 0;\n    iVar13 = 1;\n    plVar7 = param_2;\n    pcVar8 = local_48;\n    while( true ) {\n      pcVar5 = strpbrk(pcVar8,"?*[");\n      if (pcVar5 != (char *)0x0) {\n        sVar6 = strcspn(pcVar8,"*?[");\n        if (sVar6 < 4) {\n          return;\n        }\n        if (pcVar8[sVar6] != '*') {\n          return;\n        }\n        if (pcVar8[sVar6 + 1] != '\0') {\n          return;\n        }\n        local_4c = local_4c + 1;\n      }\n      plVar7 = (long *)*plVar7;\n      if (plVar7 == (long *)0x0) break;\n      pcVar8 = (char *)plVar7[1];\n      iVar13 = iVar13 + 1;\n      if (pcVar8 == (char *)0x0) {\n        return;\n      }\n    }\n    plVar7 = param_2;\n    if (iVar13 < 5) {\n      while (plVar9 = (long *)*plVar7, plVar9 != (long *)0x0) {\n        pcVar8 = (char *)plVar7[1];\n        sVar6 = strcspn(pcVar8,"?*[");\n        uVar14 = sVar6 + 1;\n        plVar15 = plVar9;\n        if (pcVar8[sVar6] != '\0') {\n          uVar14 = sVar6;\n        }\n        do {\n          pcVar5 = (char *)plVar15[1];\n          sVar6 = strcspn(pcVar5,"?*[");\n          __n = sVar6 + (pcVar5[sVar6] == '\0');\n          if (uVar14 <= __n) {\n            __n = uVar14;\n          }\n          iVar3 = memcmp(pcVar8,pcVar5,__n);\n          if (iVar3 == 0) {\n            return;\n          }\n          plVar15 = (long *)*plVar15;\n          plVar7 = plVar9;\n        } while (plVar15 != (long *)0x0);\n      }\n      local_4c = local_4c + iVar13 * 0x100;\n      if (local_4c == 0x201) {\n        puVar4[9] = FUN_00119070;\n      }\n      else if (local_4c < 0x202) {\n        if (local_4c == 0x100) {\n          puVar4[9] = FUN_00119190;\n        }\n        else {\n          if (local_4c != 0x101) {\n            return;\n          }\n          puVar4[9] = FUN_00118c20;\n        }\n      }\n      else if (local_4c == 0x302) {\n        puVar4[9] = FUN_00118f20;\n      }\n      else {\n        if (local_4c != 0x402) {\n          return;\n        }\n        puVar4[9] = FUN_00118d60;\n      }\n      iVar13 = 0;\n      pcVar8 = local_48;\n      plVar7 = param_2;\n      while( true ) {\n        pcVar8 = strpbrk(pcVar8,"?*[");\n        if (pcVar8 == (char *)0x0) {\n          lVar10 = (long)iVar13;\n          iVar13 = iVar13 + 1;\n          puVar4[lVar10 + 10] = plVar7;\n        }\n        plVar7 = (long *)*plVar7;\n        if (plVar7 == (long *)0x0) break;\n        pcVar8 = (char *)plVar7[1];\n      }\n      while( true ) {\n        pcVar8 = strpbrk(local_48,"?*[");\n        if (pcVar8 != (char *)0x0) {\n          lVar10 = (long)iVar13;\n          iVar13 = iVar13 + 1;\n          puVar4[lVar10 + 10] = param_2;\n        }\n        param_2 = (long *)*param_2;\n        if (param_2 == (long *)0x0) break;\n        local_48 = (char *)param_2[1];\n      }\n    }\n  }" ({ "{") (expression_statement "local_4c = 0;" (assignment_expression "local_4c = 0" (identifier "local_4c") (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar13 = 1;" (assignment_expression "iVar13 = 1" (identifier "iVar13") (= "=") (number_literal "1")) (; ";")) (expression_statement "plVar7 = param_2;" (assignment_expression "plVar7 = param_2" (identifier "plVar7") (= "=") (identifier "param_2")) (; ";")) (expression_statement "pcVar8 = local_48;" (assignment_expression "pcVar8 = local_48" (identifier "pcVar8") (= "=") (identifier "local_48")) (; ";")) (while_statement "while( true ) {\n      pcVar5 = strpbrk(pcVar8,"?*[");\n      if (pcVar5 != (char *)0x0) {\n        sVar6 = strcspn(pcVar8,"*?[");\n        if (sVar6 < 4) {\n          return;\n        }\n        if (pcVar8[sVar6] != '*') {\n          return;\n        }\n        if (pcVar8[sVar6 + 1] != '\0') {\n          return;\n        }\n        local_4c = local_4c + 1;\n      }\n      plVar7 = (long *)*plVar7;\n      if (plVar7 == (long *)0x0) break;\n      pcVar8 = (char *)plVar7[1];\n      iVar13 = iVar13 + 1;\n      if (pcVar8 == (char *)0x0) {\n        return;\n      }\n    }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n      pcVar5 = strpbrk(pcVar8,"?*[");\n      if (pcVar5 != (char *)0x0) {\n        sVar6 = strcspn(pcVar8,"*?[");\n        if (sVar6 < 4) {\n          return;\n        }\n        if (pcVar8[sVar6] != '*') {\n          return;\n        }\n        if (pcVar8[sVar6 + 1] != '\0') {\n          return;\n        }\n        local_4c = local_4c + 1;\n      }\n      plVar7 = (long *)*plVar7;\n      if (plVar7 == (long *)0x0) break;\n      pcVar8 = (char *)plVar7[1];\n      iVar13 = iVar13 + 1;\n      if (pcVar8 == (char *)0x0) {\n        return;\n      }\n    }" ({ "{") (expression_statement "pcVar5 = strpbrk(pcVar8,"?*[");" (assignment_expression "pcVar5 = strpbrk(pcVar8,"?*[")" (identifier "pcVar5") (= "=") (call_expression "strpbrk(pcVar8,"?*[")" (identifier "strpbrk") (argument_list "(pcVar8,"?*[")" (( "(") (identifier "pcVar8") (, ",") (string_literal ""?*["" (" """) (string_content "?*[") (" """)) () ")")))) (; ";")) (if_statement "if (pcVar5 != (char *)0x0) {\n        sVar6 = strcspn(pcVar8,"*?[");\n        if (sVar6 < 4) {\n          return;\n        }\n        if (pcVar8[sVar6] != '*') {\n          return;\n        }\n        if (pcVar8[sVar6 + 1] != '\0') {\n          return;\n        }\n        local_4c = local_4c + 1;\n      }" (if "if") (parenthesized_expression "(pcVar5 != (char *)0x0)" (( "(") (binary_expression "pcVar5 != (char *)0x0" (identifier "pcVar5") (!= "!=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        sVar6 = strcspn(pcVar8,"*?[");\n        if (sVar6 < 4) {\n          return;\n        }\n        if (pcVar8[sVar6] != '*') {\n          return;\n        }\n        if (pcVar8[sVar6 + 1] != '\0') {\n          return;\n        }\n        local_4c = local_4c + 1;\n      }" ({ "{") (expression_statement "sVar6 = strcspn(pcVar8,"*?[");" (assignment_expression "sVar6 = strcspn(pcVar8,"*?[")" (identifier "sVar6") (= "=") (call_expression "strcspn(pcVar8,"*?[")" (identifier "strcspn") (argument_list "(pcVar8,"*?[")" (( "(") (identifier "pcVar8") (, ",") (string_literal ""*?["" (" """) (string_content "*?[") (" """)) () ")")))) (; ";")) (if_statement "if (sVar6 < 4) {\n          return;\n        }" (if "if") (parenthesized_expression "(sVar6 < 4)" (( "(") (binary_expression "sVar6 < 4" (identifier "sVar6") (< "<") (number_literal "4")) () ")")) (compound_statement "{\n          return;\n        }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (if_statement "if (pcVar8[sVar6] != '*') {\n          return;\n        }" (if "if") (parenthesized_expression "(pcVar8[sVar6] != '*')" (( "(") (binary_expression "pcVar8[sVar6] != '*'" (subscript_expression "pcVar8[sVar6]" (identifier "pcVar8") ([ "[") (identifier "sVar6") (] "]")) (!= "!=") (char_literal "'*'" (' "'") (character "*") (' "'"))) () ")")) (compound_statement "{\n          return;\n        }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (if_statement "if (pcVar8[sVar6 + 1] != '\0') {\n          return;\n        }" (if "if") (parenthesized_expression "(pcVar8[sVar6 + 1] != '\0')" (( "(") (binary_expression "pcVar8[sVar6 + 1] != '\0'" (subscript_expression "pcVar8[sVar6 + 1]" (identifier "pcVar8") ([ "[") (binary_expression "sVar6 + 1" (identifier "sVar6") (+ "+") (number_literal "1")) (] "]")) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n          return;\n        }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "local_4c = local_4c + 1;" (assignment_expression "local_4c = local_4c + 1" (identifier "local_4c") (= "=") (binary_expression "local_4c + 1" (identifier "local_4c") (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (expression_statement "plVar7 = (long *)*plVar7;" (assignment_expression "plVar7 = (long *)*plVar7" (identifier "plVar7") (= "=") (cast_expression "(long *)*plVar7" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*plVar7" (* "*") (identifier "plVar7")))) (; ";")) (if_statement "if (plVar7 == (long *)0x0) break;" (if "if") (parenthesized_expression "(plVar7 == (long *)0x0)" (( "(") (binary_expression "plVar7 == (long *)0x0" (identifier "plVar7") (== "==") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "pcVar8 = (char *)plVar7[1];" (assignment_expression "pcVar8 = (char *)plVar7[1]" (identifier "pcVar8") (= "=") (cast_expression "(char *)plVar7[1]" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "plVar7[1]" (identifier "plVar7") ([ "[") (number_literal "1") (] "]")))) (; ";")) (expression_statement "iVar13 = iVar13 + 1;" (assignment_expression "iVar13 = iVar13 + 1" (identifier "iVar13") (= "=") (binary_expression "iVar13 + 1" (identifier "iVar13") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (pcVar8 == (char *)0x0) {\n        return;\n      }" (if "if") (parenthesized_expression "(pcVar8 == (char *)0x0)" (( "(") (binary_expression "pcVar8 == (char *)0x0" (identifier "pcVar8") (== "==") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        return;\n      }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (} "}"))) (expression_statement "plVar7 = param_2;" (assignment_expression "plVar7 = param_2" (identifier "plVar7") (= "=") (identifier "param_2")) (; ";")) (if_statement "if (iVar13 < 5) {\n      while (plVar9 = (long *)*plVar7, plVar9 != (long *)0x0) {\n        pcVar8 = (char *)plVar7[1];\n        sVar6 = strcspn(pcVar8,"?*[");\n        uVar14 = sVar6 + 1;\n        plVar15 = plVar9;\n        if (pcVar8[sVar6] != '\0') {\n          uVar14 = sVar6;\n        }\n        do {\n          pcVar5 = (char *)plVar15[1];\n          sVar6 = strcspn(pcVar5,"?*[");\n          __n = sVar6 + (pcVar5[sVar6] == '\0');\n          if (uVar14 <= __n) {\n            __n = uVar14;\n          }\n          iVar3 = memcmp(pcVar8,pcVar5,__n);\n          if (iVar3 == 0) {\n            return;\n          }\n          plVar15 = (long *)*plVar15;\n          plVar7 = plVar9;\n        } while (plVar15 != (long *)0x0);\n      }\n      local_4c = local_4c + iVar13 * 0x100;\n      if (local_4c == 0x201) {\n        puVar4[9] = FUN_00119070;\n      }\n      else if (local_4c < 0x202) {\n        if (local_4c == 0x100) {\n          puVar4[9] = FUN_00119190;\n        }\n        else {\n          if (local_4c != 0x101) {\n            return;\n          }\n          puVar4[9] = FUN_00118c20;\n        }\n      }\n      else if (local_4c == 0x302) {\n        puVar4[9] = FUN_00118f20;\n      }\n      else {\n        if (local_4c != 0x402) {\n          return;\n        }\n        puVar4[9] = FUN_00118d60;\n      }\n      iVar13 = 0;\n      pcVar8 = local_48;\n      plVar7 = param_2;\n      while( true ) {\n        pcVar8 = strpbrk(pcVar8,"?*[");\n        if (pcVar8 == (char *)0x0) {\n          lVar10 = (long)iVar13;\n          iVar13 = iVar13 + 1;\n          puVar4[lVar10 + 10] = plVar7;\n        }\n        plVar7 = (long *)*plVar7;\n        if (plVar7 == (long *)0x0) break;\n        pcVar8 = (char *)plVar7[1];\n      }\n      while( true ) {\n        pcVar8 = strpbrk(local_48,"?*[");\n        if (pcVar8 != (char *)0x0) {\n          lVar10 = (long)iVar13;\n          iVar13 = iVar13 + 1;\n          puVar4[lVar10 + 10] = param_2;\n        }\n        param_2 = (long *)*param_2;\n        if (param_2 == (long *)0x0) break;\n        local_48 = (char *)param_2[1];\n      }\n    }" (if "if") (parenthesized_expression "(iVar13 < 5)" (( "(") (binary_expression "iVar13 < 5" (identifier "iVar13") (< "<") (number_literal "5")) () ")")) (compound_statement "{\n      while (plVar9 = (long *)*plVar7, plVar9 != (long *)0x0) {\n        pcVar8 = (char *)plVar7[1];\n        sVar6 = strcspn(pcVar8,"?*[");\n        uVar14 = sVar6 + 1;\n        plVar15 = plVar9;\n        if (pcVar8[sVar6] != '\0') {\n          uVar14 = sVar6;\n        }\n        do {\n          pcVar5 = (char *)plVar15[1];\n          sVar6 = strcspn(pcVar5,"?*[");\n          __n = sVar6 + (pcVar5[sVar6] == '\0');\n          if (uVar14 <= __n) {\n            __n = uVar14;\n          }\n          iVar3 = memcmp(pcVar8,pcVar5,__n);\n          if (iVar3 == 0) {\n            return;\n          }\n          plVar15 = (long *)*plVar15;\n          plVar7 = plVar9;\n        } while (plVar15 != (long *)0x0);\n      }\n      local_4c = local_4c + iVar13 * 0x100;\n      if (local_4c == 0x201) {\n        puVar4[9] = FUN_00119070;\n      }\n      else if (local_4c < 0x202) {\n        if (local_4c == 0x100) {\n          puVar4[9] = FUN_00119190;\n        }\n        else {\n          if (local_4c != 0x101) {\n            return;\n          }\n          puVar4[9] = FUN_00118c20;\n        }\n      }\n      else if (local_4c == 0x302) {\n        puVar4[9] = FUN_00118f20;\n      }\n      else {\n        if (local_4c != 0x402) {\n          return;\n        }\n        puVar4[9] = FUN_00118d60;\n      }\n      iVar13 = 0;\n      pcVar8 = local_48;\n      plVar7 = param_2;\n      while( true ) {\n        pcVar8 = strpbrk(pcVar8,"?*[");\n        if (pcVar8 == (char *)0x0) {\n          lVar10 = (long)iVar13;\n          iVar13 = iVar13 + 1;\n          puVar4[lVar10 + 10] = plVar7;\n        }\n        plVar7 = (long *)*plVar7;\n        if (plVar7 == (long *)0x0) break;\n        pcVar8 = (char *)plVar7[1];\n      }\n      while( true ) {\n        pcVar8 = strpbrk(local_48,"?*[");\n        if (pcVar8 != (char *)0x0) {\n          lVar10 = (long)iVar13;\n          iVar13 = iVar13 + 1;\n          puVar4[lVar10 + 10] = param_2;\n        }\n        param_2 = (long *)*param_2;\n        if (param_2 == (long *)0x0) break;\n        local_48 = (char *)param_2[1];\n      }\n    }" ({ "{") (while_statement "while (plVar9 = (long *)*plVar7, plVar9 != (long *)0x0) {\n        pcVar8 = (char *)plVar7[1];\n        sVar6 = strcspn(pcVar8,"?*[");\n        uVar14 = sVar6 + 1;\n        plVar15 = plVar9;\n        if (pcVar8[sVar6] != '\0') {\n          uVar14 = sVar6;\n        }\n        do {\n          pcVar5 = (char *)plVar15[1];\n          sVar6 = strcspn(pcVar5,"?*[");\n          __n = sVar6 + (pcVar5[sVar6] == '\0');\n          if (uVar14 <= __n) {\n            __n = uVar14;\n          }\n          iVar3 = memcmp(pcVar8,pcVar5,__n);\n          if (iVar3 == 0) {\n            return;\n          }\n          plVar15 = (long *)*plVar15;\n          plVar7 = plVar9;\n        } while (plVar15 != (long *)0x0);\n      }" (while "while") (parenthesized_expression "(plVar9 = (long *)*plVar7, plVar9 != (long *)0x0)" (( "(") (comma_expression "plVar9 = (long *)*plVar7, plVar9 != (long *)0x0" (assignment_expression "plVar9 = (long *)*plVar7" (identifier "plVar9") (= "=") (cast_expression "(long *)*plVar7" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*plVar7" (* "*") (identifier "plVar7")))) (, ",") (binary_expression "plVar9 != (long *)0x0" (identifier "plVar9") (!= "!=") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")))) () ")")) (compound_statement "{\n        pcVar8 = (char *)plVar7[1];\n        sVar6 = strcspn(pcVar8,"?*[");\n        uVar14 = sVar6 + 1;\n        plVar15 = plVar9;\n        if (pcVar8[sVar6] != '\0') {\n          uVar14 = sVar6;\n        }\n        do {\n          pcVar5 = (char *)plVar15[1];\n          sVar6 = strcspn(pcVar5,"?*[");\n          __n = sVar6 + (pcVar5[sVar6] == '\0');\n          if (uVar14 <= __n) {\n            __n = uVar14;\n          }\n          iVar3 = memcmp(pcVar8,pcVar5,__n);\n          if (iVar3 == 0) {\n            return;\n          }\n          plVar15 = (long *)*plVar15;\n          plVar7 = plVar9;\n        } while (plVar15 != (long *)0x0);\n      }" ({ "{") (expression_statement "pcVar8 = (char *)plVar7[1];" (assignment_expression "pcVar8 = (char *)plVar7[1]" (identifier "pcVar8") (= "=") (cast_expression "(char *)plVar7[1]" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "plVar7[1]" (identifier "plVar7") ([ "[") (number_literal "1") (] "]")))) (; ";")) (expression_statement "sVar6 = strcspn(pcVar8,"?*[");" (assignment_expression "sVar6 = strcspn(pcVar8,"?*[")" (identifier "sVar6") (= "=") (call_expression "strcspn(pcVar8,"?*[")" (identifier "strcspn") (argument_list "(pcVar8,"?*[")" (( "(") (identifier "pcVar8") (, ",") (string_literal ""?*["" (" """) (string_content "?*[") (" """)) () ")")))) (; ";")) (expression_statement "uVar14 = sVar6 + 1;" (assignment_expression "uVar14 = sVar6 + 1" (identifier "uVar14") (= "=") (binary_expression "sVar6 + 1" (identifier "sVar6") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "plVar15 = plVar9;" (assignment_expression "plVar15 = plVar9" (identifier "plVar15") (= "=") (identifier "plVar9")) (; ";")) (if_statement "if (pcVar8[sVar6] != '\0') {\n          uVar14 = sVar6;\n        }" (if "if") (parenthesized_expression "(pcVar8[sVar6] != '\0')" (( "(") (binary_expression "pcVar8[sVar6] != '\0'" (subscript_expression "pcVar8[sVar6]" (identifier "pcVar8") ([ "[") (identifier "sVar6") (] "]")) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n          uVar14 = sVar6;\n        }" ({ "{") (expression_statement "uVar14 = sVar6;" (assignment_expression "uVar14 = sVar6" (identifier "uVar14") (= "=") (identifier "sVar6")) (; ";")) (} "}"))) (do_statement "do {\n          pcVar5 = (char *)plVar15[1];\n          sVar6 = strcspn(pcVar5,"?*[");\n          __n = sVar6 + (pcVar5[sVar6] == '\0');\n          if (uVar14 <= __n) {\n            __n = uVar14;\n          }\n          iVar3 = memcmp(pcVar8,pcVar5,__n);\n          if (iVar3 == 0) {\n            return;\n          }\n          plVar15 = (long *)*plVar15;\n          plVar7 = plVar9;\n        } while (plVar15 != (long *)0x0);" (do "do") (compound_statement "{\n          pcVar5 = (char *)plVar15[1];\n          sVar6 = strcspn(pcVar5,"?*[");\n          __n = sVar6 + (pcVar5[sVar6] == '\0');\n          if (uVar14 <= __n) {\n            __n = uVar14;\n          }\n          iVar3 = memcmp(pcVar8,pcVar5,__n);\n          if (iVar3 == 0) {\n            return;\n          }\n          plVar15 = (long *)*plVar15;\n          plVar7 = plVar9;\n        }" ({ "{") (expression_statement "pcVar5 = (char *)plVar15[1];" (assignment_expression "pcVar5 = (char *)plVar15[1]" (identifier "pcVar5") (= "=") (cast_expression "(char *)plVar15[1]" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "plVar15[1]" (identifier "plVar15") ([ "[") (number_literal "1") (] "]")))) (; ";")) (expression_statement "sVar6 = strcspn(pcVar5,"?*[");" (assignment_expression "sVar6 = strcspn(pcVar5,"?*[")" (identifier "sVar6") (= "=") (call_expression "strcspn(pcVar5,"?*[")" (identifier "strcspn") (argument_list "(pcVar5,"?*[")" (( "(") (identifier "pcVar5") (, ",") (string_literal ""?*["" (" """) (string_content "?*[") (" """)) () ")")))) (; ";")) (expression_statement "__n = sVar6 + (pcVar5[sVar6] == '\0');" (assignment_expression "__n = sVar6 + (pcVar5[sVar6] == '\0')" (identifier "__n") (= "=") (binary_expression "sVar6 + (pcVar5[sVar6] == '\0')" (identifier "sVar6") (+ "+") (parenthesized_expression "(pcVar5[sVar6] == '\0')" (( "(") (binary_expression "pcVar5[sVar6] == '\0'" (subscript_expression "pcVar5[sVar6]" (identifier "pcVar5") ([ "[") (identifier "sVar6") (] "]")) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")))) (; ";")) (if_statement "if (uVar14 <= __n) {\n            __n = uVar14;\n          }" (if "if") (parenthesized_expression "(uVar14 <= __n)" (( "(") (binary_expression "uVar14 <= __n" (identifier "uVar14") (<= "<=") (identifier "__n")) () ")")) (compound_statement "{\n            __n = uVar14;\n          }" ({ "{") (expression_statement "__n = uVar14;" (assignment_expression "__n = uVar14" (identifier "__n") (= "=") (identifier "uVar14")) (; ";")) (} "}"))) (expression_statement "iVar3 = memcmp(pcVar8,pcVar5,__n);" (assignment_expression "iVar3 = memcmp(pcVar8,pcVar5,__n)" (identifier "iVar3") (= "=") (call_expression "memcmp(pcVar8,pcVar5,__n)" (identifier "memcmp") (argument_list "(pcVar8,pcVar5,__n)" (( "(") (identifier "pcVar8") (, ",") (identifier "pcVar5") (, ",") (identifier "__n") () ")")))) (; ";")) (if_statement "if (iVar3 == 0) {\n            return;\n          }" (if "if") (parenthesized_expression "(iVar3 == 0)" (( "(") (binary_expression "iVar3 == 0" (identifier "iVar3") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            return;\n          }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "plVar15 = (long *)*plVar15;" (assignment_expression "plVar15 = (long *)*plVar15" (identifier "plVar15") (= "=") (cast_expression "(long *)*plVar15" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*plVar15" (* "*") (identifier "plVar15")))) (; ";")) (expression_statement "plVar7 = plVar9;" (assignment_expression "plVar7 = plVar9" (identifier "plVar7") (= "=") (identifier "plVar9")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(plVar15 != (long *)0x0)" (( "(") (binary_expression "plVar15 != (long *)0x0" (identifier "plVar15") (!= "!=") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (; ";")) (} "}"))) (expression_statement "local_4c = local_4c + iVar13 * 0x100;" (assignment_expression "local_4c = local_4c + iVar13 * 0x100" (identifier "local_4c") (= "=") (binary_expression "local_4c + iVar13 * 0x100" (identifier "local_4c") (+ "+") (binary_expression "iVar13 * 0x100" (identifier "iVar13") (* "*") (number_literal "0x100")))) (; ";")) (if_statement "if (local_4c == 0x201) {\n        puVar4[9] = FUN_00119070;\n      }\n      else if (local_4c < 0x202) {\n        if (local_4c == 0x100) {\n          puVar4[9] = FUN_00119190;\n        }\n        else {\n          if (local_4c != 0x101) {\n            return;\n          }\n          puVar4[9] = FUN_00118c20;\n        }\n      }\n      else if (local_4c == 0x302) {\n        puVar4[9] = FUN_00118f20;\n      }\n      else {\n        if (local_4c != 0x402) {\n          return;\n        }\n        puVar4[9] = FUN_00118d60;\n      }" (if "if") (parenthesized_expression "(local_4c == 0x201)" (( "(") (binary_expression "local_4c == 0x201" (identifier "local_4c") (== "==") (number_literal "0x201")) () ")")) (compound_statement "{\n        puVar4[9] = FUN_00119070;\n      }" ({ "{") (expression_statement "puVar4[9] = FUN_00119070;" (assignment_expression "puVar4[9] = FUN_00119070" (subscript_expression "puVar4[9]" (identifier "puVar4") ([ "[") (number_literal "9") (] "]")) (= "=") (identifier "FUN_00119070")) (; ";")) (} "}")) (else_clause "else if (local_4c < 0x202) {\n        if (local_4c == 0x100) {\n          puVar4[9] = FUN_00119190;\n        }\n        else {\n          if (local_4c != 0x101) {\n            return;\n          }\n          puVar4[9] = FUN_00118c20;\n        }\n      }\n      else if (local_4c == 0x302) {\n        puVar4[9] = FUN_00118f20;\n      }\n      else {\n        if (local_4c != 0x402) {\n          return;\n        }\n        puVar4[9] = FUN_00118d60;\n      }" (else "else") (if_statement "if (local_4c < 0x202) {\n        if (local_4c == 0x100) {\n          puVar4[9] = FUN_00119190;\n        }\n        else {\n          if (local_4c != 0x101) {\n            return;\n          }\n          puVar4[9] = FUN_00118c20;\n        }\n      }\n      else if (local_4c == 0x302) {\n        puVar4[9] = FUN_00118f20;\n      }\n      else {\n        if (local_4c != 0x402) {\n          return;\n        }\n        puVar4[9] = FUN_00118d60;\n      }" (if "if") (parenthesized_expression "(local_4c < 0x202)" (( "(") (binary_expression "local_4c < 0x202" (identifier "local_4c") (< "<") (number_literal "0x202")) () ")")) (compound_statement "{\n        if (local_4c == 0x100) {\n          puVar4[9] = FUN_00119190;\n        }\n        else {\n          if (local_4c != 0x101) {\n            return;\n          }\n          puVar4[9] = FUN_00118c20;\n        }\n      }" ({ "{") (if_statement "if (local_4c == 0x100) {\n          puVar4[9] = FUN_00119190;\n        }\n        else {\n          if (local_4c != 0x101) {\n            return;\n          }\n          puVar4[9] = FUN_00118c20;\n        }" (if "if") (parenthesized_expression "(local_4c == 0x100)" (( "(") (binary_expression "local_4c == 0x100" (identifier "local_4c") (== "==") (number_literal "0x100")) () ")")) (compound_statement "{\n          puVar4[9] = FUN_00119190;\n        }" ({ "{") (expression_statement "puVar4[9] = FUN_00119190;" (assignment_expression "puVar4[9] = FUN_00119190" (subscript_expression "puVar4[9]" (identifier "puVar4") ([ "[") (number_literal "9") (] "]")) (= "=") (identifier "FUN_00119190")) (; ";")) (} "}")) (else_clause "else {\n          if (local_4c != 0x101) {\n            return;\n          }\n          puVar4[9] = FUN_00118c20;\n        }" (else "else") (compound_statement "{\n          if (local_4c != 0x101) {\n            return;\n          }\n          puVar4[9] = FUN_00118c20;\n        }" ({ "{") (if_statement "if (local_4c != 0x101) {\n            return;\n          }" (if "if") (parenthesized_expression "(local_4c != 0x101)" (( "(") (binary_expression "local_4c != 0x101" (identifier "local_4c") (!= "!=") (number_literal "0x101")) () ")")) (compound_statement "{\n            return;\n          }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "puVar4[9] = FUN_00118c20;" (assignment_expression "puVar4[9] = FUN_00118c20" (subscript_expression "puVar4[9]" (identifier "puVar4") ([ "[") (number_literal "9") (] "]")) (= "=") (identifier "FUN_00118c20")) (; ";")) (} "}")))) (} "}")) (else_clause "else if (local_4c == 0x302) {\n        puVar4[9] = FUN_00118f20;\n      }\n      else {\n        if (local_4c != 0x402) {\n          return;\n        }\n        puVar4[9] = FUN_00118d60;\n      }" (else "else") (if_statement "if (local_4c == 0x302) {\n        puVar4[9] = FUN_00118f20;\n      }\n      else {\n        if (local_4c != 0x402) {\n          return;\n        }\n        puVar4[9] = FUN_00118d60;\n      }" (if "if") (parenthesized_expression "(local_4c == 0x302)" (( "(") (binary_expression "local_4c == 0x302" (identifier "local_4c") (== "==") (number_literal "0x302")) () ")")) (compound_statement "{\n        puVar4[9] = FUN_00118f20;\n      }" ({ "{") (expression_statement "puVar4[9] = FUN_00118f20;" (assignment_expression "puVar4[9] = FUN_00118f20" (subscript_expression "puVar4[9]" (identifier "puVar4") ([ "[") (number_literal "9") (] "]")) (= "=") (identifier "FUN_00118f20")) (; ";")) (} "}")) (else_clause "else {\n        if (local_4c != 0x402) {\n          return;\n        }\n        puVar4[9] = FUN_00118d60;\n      }" (else "else") (compound_statement "{\n        if (local_4c != 0x402) {\n          return;\n        }\n        puVar4[9] = FUN_00118d60;\n      }" ({ "{") (if_statement "if (local_4c != 0x402) {\n          return;\n        }" (if "if") (parenthesized_expression "(local_4c != 0x402)" (( "(") (binary_expression "local_4c != 0x402" (identifier "local_4c") (!= "!=") (number_literal "0x402")) () ")")) (compound_statement "{\n          return;\n        }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "puVar4[9] = FUN_00118d60;" (assignment_expression "puVar4[9] = FUN_00118d60" (subscript_expression "puVar4[9]" (identifier "puVar4") ([ "[") (number_literal "9") (] "]")) (= "=") (identifier "FUN_00118d60")) (; ";")) (} "}")))))))) (expression_statement "iVar13 = 0;" (assignment_expression "iVar13 = 0" (identifier "iVar13") (= "=") (number_literal "0")) (; ";")) (expression_statement "pcVar8 = local_48;" (assignment_expression "pcVar8 = local_48" (identifier "pcVar8") (= "=") (identifier "local_48")) (; ";")) (expression_statement "plVar7 = param_2;" (assignment_expression "plVar7 = param_2" (identifier "plVar7") (= "=") (identifier "param_2")) (; ";")) (while_statement "while( true ) {\n        pcVar8 = strpbrk(pcVar8,"?*[");\n        if (pcVar8 == (char *)0x0) {\n          lVar10 = (long)iVar13;\n          iVar13 = iVar13 + 1;\n          puVar4[lVar10 + 10] = plVar7;\n        }\n        plVar7 = (long *)*plVar7;\n        if (plVar7 == (long *)0x0) break;\n        pcVar8 = (char *)plVar7[1];\n      }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n        pcVar8 = strpbrk(pcVar8,"?*[");\n        if (pcVar8 == (char *)0x0) {\n          lVar10 = (long)iVar13;\n          iVar13 = iVar13 + 1;\n          puVar4[lVar10 + 10] = plVar7;\n        }\n        plVar7 = (long *)*plVar7;\n        if (plVar7 == (long *)0x0) break;\n        pcVar8 = (char *)plVar7[1];\n      }" ({ "{") (expression_statement "pcVar8 = strpbrk(pcVar8,"?*[");" (assignment_expression "pcVar8 = strpbrk(pcVar8,"?*[")" (identifier "pcVar8") (= "=") (call_expression "strpbrk(pcVar8,"?*[")" (identifier "strpbrk") (argument_list "(pcVar8,"?*[")" (( "(") (identifier "pcVar8") (, ",") (string_literal ""?*["" (" """) (string_content "?*[") (" """)) () ")")))) (; ";")) (if_statement "if (pcVar8 == (char *)0x0) {\n          lVar10 = (long)iVar13;\n          iVar13 = iVar13 + 1;\n          puVar4[lVar10 + 10] = plVar7;\n        }" (if "if") (parenthesized_expression "(pcVar8 == (char *)0x0)" (( "(") (binary_expression "pcVar8 == (char *)0x0" (identifier "pcVar8") (== "==") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n          lVar10 = (long)iVar13;\n          iVar13 = iVar13 + 1;\n          puVar4[lVar10 + 10] = plVar7;\n        }" ({ "{") (expression_statement "lVar10 = (long)iVar13;" (assignment_expression "lVar10 = (long)iVar13" (identifier "lVar10") (= "=") (cast_expression "(long)iVar13" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "iVar13"))) (; ";")) (expression_statement "iVar13 = iVar13 + 1;" (assignment_expression "iVar13 = iVar13 + 1" (identifier "iVar13") (= "=") (binary_expression "iVar13 + 1" (identifier "iVar13") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar4[lVar10 + 10] = plVar7;" (assignment_expression "puVar4[lVar10 + 10] = plVar7" (subscript_expression "puVar4[lVar10 + 10]" (identifier "puVar4") ([ "[") (binary_expression "lVar10 + 10" (identifier "lVar10") (+ "+") (number_literal "10")) (] "]")) (= "=") (identifier "plVar7")) (; ";")) (} "}"))) (expression_statement "plVar7 = (long *)*plVar7;" (assignment_expression "plVar7 = (long *)*plVar7" (identifier "plVar7") (= "=") (cast_expression "(long *)*plVar7" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*plVar7" (* "*") (identifier "plVar7")))) (; ";")) (if_statement "if (plVar7 == (long *)0x0) break;" (if "if") (parenthesized_expression "(plVar7 == (long *)0x0)" (( "(") (binary_expression "plVar7 == (long *)0x0" (identifier "plVar7") (== "==") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "pcVar8 = (char *)plVar7[1];" (assignment_expression "pcVar8 = (char *)plVar7[1]" (identifier "pcVar8") (= "=") (cast_expression "(char *)plVar7[1]" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "plVar7[1]" (identifier "plVar7") ([ "[") (number_literal "1") (] "]")))) (; ";")) (} "}"))) (while_statement "while( true ) {\n        pcVar8 = strpbrk(local_48,"?*[");\n        if (pcVar8 != (char *)0x0) {\n          lVar10 = (long)iVar13;\n          iVar13 = iVar13 + 1;\n          puVar4[lVar10 + 10] = param_2;\n        }\n        param_2 = (long *)*param_2;\n        if (param_2 == (long *)0x0) break;\n        local_48 = (char *)param_2[1];\n      }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n        pcVar8 = strpbrk(local_48,"?*[");\n        if (pcVar8 != (char *)0x0) {\n          lVar10 = (long)iVar13;\n          iVar13 = iVar13 + 1;\n          puVar4[lVar10 + 10] = param_2;\n        }\n        param_2 = (long *)*param_2;\n        if (param_2 == (long *)0x0) break;\n        local_48 = (char *)param_2[1];\n      }" ({ "{") (expression_statement "pcVar8 = strpbrk(local_48,"?*[");" (assignment_expression "pcVar8 = strpbrk(local_48,"?*[")" (identifier "pcVar8") (= "=") (call_expression "strpbrk(local_48,"?*[")" (identifier "strpbrk") (argument_list "(local_48,"?*[")" (( "(") (identifier "local_48") (, ",") (string_literal ""?*["" (" """) (string_content "?*[") (" """)) () ")")))) (; ";")) (if_statement "if (pcVar8 != (char *)0x0) {\n          lVar10 = (long)iVar13;\n          iVar13 = iVar13 + 1;\n          puVar4[lVar10 + 10] = param_2;\n        }" (if "if") (parenthesized_expression "(pcVar8 != (char *)0x0)" (( "(") (binary_expression "pcVar8 != (char *)0x0" (identifier "pcVar8") (!= "!=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n          lVar10 = (long)iVar13;\n          iVar13 = iVar13 + 1;\n          puVar4[lVar10 + 10] = param_2;\n        }" ({ "{") (expression_statement "lVar10 = (long)iVar13;" (assignment_expression "lVar10 = (long)iVar13" (identifier "lVar10") (= "=") (cast_expression "(long)iVar13" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "iVar13"))) (; ";")) (expression_statement "iVar13 = iVar13 + 1;" (assignment_expression "iVar13 = iVar13 + 1" (identifier "iVar13") (= "=") (binary_expression "iVar13 + 1" (identifier "iVar13") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar4[lVar10 + 10] = param_2;" (assignment_expression "puVar4[lVar10 + 10] = param_2" (subscript_expression "puVar4[lVar10 + 10]" (identifier "puVar4") ([ "[") (binary_expression "lVar10 + 10" (identifier "lVar10") (+ "+") (number_literal "10")) (] "]")) (= "=") (identifier "param_2")) (; ";")) (} "}"))) (expression_statement "param_2 = (long *)*param_2;" (assignment_expression "param_2 = (long *)*param_2" (identifier "param_2") (= "=") (cast_expression "(long *)*param_2" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_2" (* "*") (identifier "param_2")))) (; ";")) (if_statement "if (param_2 == (long *)0x0) break;" (if "if") (parenthesized_expression "(param_2 == (long *)0x0)" (( "(") (binary_expression "param_2 == (long *)0x0" (identifier "param_2") (== "==") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "local_48 = (char *)param_2[1];" (assignment_expression "local_48 = (char *)param_2[1]" (identifier "local_48") (= "=") (cast_expression "(char *)param_2[1]" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_2[1]" (identifier "param_2") ([ "[") (number_literal "1") (] "]")))) (; ";")) (} "}"))) (} "}"))) (} "}"))) (return_statement "return;" (return "return") (; ";")) (} "}")))

void function_1(type_1 *var_3,type_2 *var_1,type_3 keep_sections)

{
  type_4 *var_5;
  type_5 *plVar1;
  int var_23;
  type_6 *plVar3;
  char *var_14;
  size_t var_16;
  type_2 *var_2;
  type_7 var_21;
  char *var_11;
  type_2 *var_19;
  long var_6;
  type_2 *curr;
  type_4 *var_7;
  type_4 *var_8;
  int var_18;
  type_7 var_20;
  type_2 *var_24;
  bool var_9;
  bool bVar16;
  int var_17;
  char *var_13;
  
  if (var_1 != (type_2 *)0x0) {
    var_19 = (type_2 *)0x0;
    var_2 = var_1;
    do {
      var_1 = var_2;
      var_2 = var_1->next;
      var_1->next = var_19;
      var_19 = var_1;
    } while (var_2 != (type_2 *)0x0);
  }
  plVar1 = stat_ptr;
  if (var_3 == (type_1 *)0x0) {
    plVar3 = (type_6 *)var_4(0x80);
    (plVar3->header).next = (type_6 *)0x0;
    (plVar3->header).type = lang_wild_statement_enum;
    *plVar1->tail = plVar3;
    plVar1->tail = (type_6 **)plVar3;
    (plVar3->wild_statement).filename = (char *)0x0;
    (plVar3->wild_statement).filenames_sorted = 0;
    (plVar3->wild_statement).section_flag_list = (type_8 *)0x0;
    (plVar3->wild_statement).exclude_name_list = (type_9 *)0x0;
  }
  else {
    var_5 = (type_4 *)var_3->name;
    var_9 = false;
    bVar16 = var_5 == (type_4 *)0x0;
    if (!bVar16) {
      var_6 = 2;
      var_7 = var_5;
      var_8 = &DAT_0016c217;
      do {
        if (var_6 == 0) break;
        var_6 = var_6 + -1;
        var_9 = *var_7 < *var_8;
        bVar16 = *var_7 == *var_8;
        var_7 = var_7 + 1;
        var_8 = var_8 + 1;
      } while (bVar16);
      if ((!var_9 && !bVar16) == var_9) {
        var_3->name = (char *)0x0;
      }
      else {
        var_11 = var_10((char *)var_5,"?*[");
        if (var_11 == (char *)0x0) {
          lang_has_input_file = 1;
        }
      }
    }
    plVar3 = (type_6 *)var_4(0x80);
    (plVar3->header).next = (type_6 *)0x0;
    (plVar3->header).type = lang_wild_statement_enum;
    *plVar1->tail = plVar3;
    var_11 = var_3->name;
    plVar1->tail = (type_6 **)plVar3;
    (plVar3->wild_statement).filename = var_11;
    (plVar3->wild_statement).filenames_sorted = (uint)(var_3->sorted == var_12);
    (plVar3->wild_statement).section_flag_list = var_3->section_flag_list;
    (plVar3->wild_statement).exclude_name_list = var_3->exclude_name_list;
  }
  (plVar3->wild_statement).var_1 = var_1;
  (plVar3->wild_statement).children.tail = &(plVar3->wild_statement).children.head;
  (plVar3->wild_statement).keep_sections = keep_sections;
  (plVar3->wild_statement).children.head = (type_6 *)0x0;
  (plVar3->wild_statement).walk_wild_section_handler = walk_wild_section_general;
  (plVar3->wild_statement).handler_data[0] = (type_2 *)0x0;
  (plVar3->wild_statement).handler_data[1] = (type_2 *)0x0;
  (plVar3->wild_statement).handler_data[2] = (type_2 *)0x0;
  (plVar3->wild_statement).handler_data[3] = (type_2 *)0x0;
  (plVar3->wild_statement).tree = (type_10 *)0x0;
  if ((var_1 != (type_2 *)0x0) &&
     (var_13 = (var_1->spec).name, var_13 != (char *)0x0)) {
    var_17 = 0;
    var_18 = 1;
    var_2 = var_1;
    var_11 = var_13;
    while( true ) {
      var_14 = var_10(var_11,"?*[");
      if (var_14 != (char *)0x0) {
        var_16 = var_15(var_11,"*?[");
        if (var_16 < 4) {
          return;
        }
        if (var_11[var_16] != '*') {
          return;
        }
        if (var_11[var_16 + 1] != '\0') {
          return;
        }
        var_17 = var_17 + 1;
      }
      var_2 = var_2->next;
      if (var_2 == (type_2 *)0x0) break;
      var_11 = (var_2->spec).name;
      var_18 = var_18 + 1;
      if (var_11 == (char *)0x0) {
        return;
      }
    }
    var_2 = var_1;
    if (var_18 < 5) {
      while (var_19 = var_2->next, var_19 != (type_2 *)0x0) {
        var_11 = (var_2->spec).name;
        var_16 = var_15(var_11,"?*[");
        var_20 = var_16 + 1;
        var_24 = var_19;
        if (var_11[var_16] != '\0') {
          var_20 = var_16;
        }
        do {
          var_14 = (var_24->spec).name;
          var_16 = var_15(var_14,"?*[");
          var_21 = var_16 + (var_14[var_16] == '\0');
          if (var_20 <= var_21) {
            var_21 = var_20;
          }
          var_23 = var_22(var_11,var_14,var_21);
          if (var_23 == 0) {
            return;
          }
          var_24 = var_24->next;
          var_2 = var_19;
        } while (var_24 != (type_2 *)0x0);
      }
      var_17 = var_17 + var_18 * 0x100;
      if (var_17 == 0x201) {
        (plVar3->wild_statement).walk_wild_section_handler = walk_wild_section_specs2_wild1;
      }
      else if (var_17 < 0x202) {
        if (var_17 == 0x100) {
          (plVar3->wild_statement).walk_wild_section_handler = walk_wild_section_specs1_wild0;
        }
        else {
          if (var_17 != 0x101) {
            return;
          }
          (plVar3->wild_statement).walk_wild_section_handler = walk_wild_section_specs1_wild1;
        }
      }
      else if (var_17 == 0x302) {
        (plVar3->wild_statement).walk_wild_section_handler = walk_wild_section_specs3_wild2;
      }
      else {
        if (var_17 != 0x402) {
          return;
        }
        (plVar3->wild_statement).walk_wild_section_handler = walk_wild_section_specs4_wild2;
      }
      var_18 = 0;
      var_11 = var_13;
      var_2 = var_1;
      while( true ) {
        var_11 = var_10(var_11,"?*[");
        if (var_11 == (char *)0x0) {
          var_6 = (long)var_18;
          var_18 = var_18 + 1;
          *(type_2 **)((long)plVar3 + var_6 * 8 + 0x50) = var_2;
        }
        var_2 = var_2->next;
        if (var_2 == (type_2 *)0x0) break;
        var_11 = (var_2->spec).name;
      }
      while( true ) {
        var_11 = var_10(var_13,"?*[");
        if (var_11 != (char *)0x0) {
          var_6 = (long)var_18;
          var_18 = var_18 + 1;
          *(type_2 **)((long)plVar3 + var_6 * 8 + 0x50) = var_1;
        }
        var_1 = var_1->next;
        if (var_1 == (type_2 *)0x0) break;
        var_13 = (var_1->spec).name;
      }
    }
  }
  return;
}


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

void MASKED(undefined8 *param_1,long *param_2,undefined4 param_3)

{
  byte *__s;
  undefined8 uVar1;
  undefined *puVar2;
  int iVar3;
  undefined8 *puVar4;
  char *pcVar5;
  size_t sVar6;
  long *plVar7;
  ulong __n;
  char *pcVar8;
  long *plVar9;
  long lVar10;
  byte *pbVar11;
  byte *pbVar12;
  int iVar13;
  ulong uVar14;
  long *plVar15;
  bool bVar16;
  bool bVar17;
  int local_4c;
  char *local_48;
  
  if (param_2 != (long *)0x0) {
    plVar9 = (long *)0x0;
    plVar7 = param_2;
    do {
      param_2 = plVar7;
      plVar7 = (long *)*param_2;
      *param_2 = (long)plVar9;
      plVar9 = param_2;
    } while (plVar7 != (long *)0x0);
  }
  puVar2 = PTR_DAT_002b2710;
  if (param_1 == (undefined8 *)0x0) {
    puVar4 = (undefined8 *)FUN_00119720(0x80);
    *puVar4 = 0;
    *(undefined4 *)(puVar4 + 1) = 4;
    **(undefined8 **)(puVar2 + 8) = puVar4;
    *(undefined8 **)(puVar2 + 8) = puVar4;
    puVar4[2] = 0;
    *(undefined4 *)(puVar4 + 3) = 0;
    puVar4[0xf] = 0;
    puVar4[8] = 0;
  }
  else {
    __s = (byte *)*param_1;
    bVar16 = false;
    bVar17 = __s == (byte *)0x0;
    if (!bVar17) {
      lVar10 = 2;
      pbVar11 = __s;
      pbVar12 = &DAT_0016c217;
      do {
        if (lVar10 == 0) break;
        lVar10 = lVar10 + -1;
        bVar16 = *pbVar11 < *pbVar12;
        bVar17 = *pbVar11 == *pbVar12;
        pbVar11 = pbVar11 + 1;
        pbVar12 = pbVar12 + 1;
      } while (bVar17);
      if ((!bVar16 && !bVar17) == bVar16) {
        *param_1 = 0;
      }
      else {
        pcVar8 = strpbrk((char *)__s,"?*[");
        if (pcVar8 == (char *)0x0) {
          DAT_002b4c30 = 1;
        }
      }
    }
    puVar4 = (undefined8 *)FUN_00119720(0x80);
    *puVar4 = 0;
    *(undefined4 *)(puVar4 + 1) = 4;
    **(undefined8 **)(puVar2 + 8) = puVar4;
    uVar1 = *param_1;
    *(undefined8 **)(puVar2 + 8) = puVar4;
    puVar4[2] = uVar1;
    *(uint *)(puVar4 + 3) = (uint)(*(int *)(param_1 + 2) == 1);
    puVar4[0xf] = param_1[3];
    puVar4[8] = param_1[1];
  }
  puVar4[4] = param_2;
  puVar4[7] = puVar4 + 6;
  *(undefined4 *)(puVar4 + 5) = param_3;
  puVar4[6] = 0;
  puVar4[9] = FUN_00118ca0;
  puVar4[10] = 0;
  puVar4[0xb] = 0;
  puVar4[0xc] = 0;
  puVar4[0xd] = 0;
  puVar4[0xe] = 0;
  if ((param_2 != (long *)0x0) && (local_48 = (char *)param_2[1], local_48 != (char *)0x0)) {
    local_4c = 0;
    iVar13 = 1;
    plVar7 = param_2;
    pcVar8 = local_48;
    while( true ) {
      pcVar5 = strpbrk(pcVar8,"?*[");
      if (pcVar5 != (char *)0x0) {
        sVar6 = strcspn(pcVar8,"*?[");
        if (sVar6 < 4) {
          return;
        }
        if (pcVar8[sVar6] != '*') {
          return;
        }
        if (pcVar8[sVar6 + 1] != '\0') {
          return;
        }
        local_4c = local_4c + 1;
      }
      plVar7 = (long *)*plVar7;
      if (plVar7 == (long *)0x0) break;
      pcVar8 = (char *)plVar7[1];
      iVar13 = iVar13 + 1;
      if (pcVar8 == (char *)0x0) {
        return;
      }
    }
    plVar7 = param_2;
    if (iVar13 < 5) {
      while (plVar9 = (long *)*plVar7, plVar9 != (long *)0x0) {
        pcVar8 = (char *)plVar7[1];
        sVar6 = strcspn(pcVar8,"?*[");
        uVar14 = sVar6 + 1;
        plVar15 = plVar9;
        if (pcVar8[sVar6] != '\0') {
          uVar14 = sVar6;
        }
        do {
          pcVar5 = (char *)plVar15[1];
          sVar6 = strcspn(pcVar5,"?*[");
          __n = sVar6 + (pcVar5[sVar6] == '\0');
          if (uVar14 <= __n) {
            __n = uVar14;
          }
          iVar3 = memcmp(pcVar8,pcVar5,__n);
          if (iVar3 == 0) {
            return;
          }
          plVar15 = (long *)*plVar15;
          plVar7 = plVar9;
        } while (plVar15 != (long *)0x0);
      }
      local_4c = local_4c + iVar13 * 0x100;
      if (local_4c == 0x201) {
        puVar4[9] = FUN_00119070;
      }
      else if (local_4c < 0x202) {
        if (local_4c == 0x100) {
          puVar4[9] = FUN_00119190;
        }
        else {
          if (local_4c != 0x101) {
            return;
          }
          puVar4[9] = FUN_00118c20;
        }
      }
      else if (local_4c == 0x302) {
        puVar4[9] = FUN_00118f20;
      }
      else {
        if (local_4c != 0x402) {
          return;
        }
        puVar4[9] = FUN_00118d60;
      }
      iVar13 = 0;
      pcVar8 = local_48;
      plVar7 = param_2;
      while( true ) {
        pcVar8 = strpbrk(pcVar8,"?*[");
        if (pcVar8 == (char *)0x0) {
          lVar10 = (long)iVar13;
          iVar13 = iVar13 + 1;
          puVar4[lVar10 + 10] = plVar7;
        }
        plVar7 = (long *)*plVar7;
        if (plVar7 == (long *)0x0) break;
        pcVar8 = (char *)plVar7[1];
      }
      while( true ) {
        pcVar8 = strpbrk(local_48,"?*[");
        if (pcVar8 != (char *)0x0) {
          lVar10 = (long)iVar13;
          iVar13 = iVar13 + 1;
          puVar4[lVar10 + 10] = param_2;
        }
        param_2 = (long *)*param_2;
        if (param_2 == (long *)0x0) break;
        local_48 = (char *)param_2[1];
      }
    }
  }
  return;
}

