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

void __regparm3 demangle_arm_hp_template(work_stuff *work,char **mangled,int n,string *declp)

{
  char cVar1;
  char cVar2;
  char *pcVar3;
  int iVar4;
  char *pcVar5;
  size_t __n;
  size_t sVar6;
  char *pcVar7;
  byte *s;
  uint uVar8;
  uint uVar9;
  byte *pbVar10;
  byte *pbVar11;
  bool bVar12;
  bool bVar13;
  byte bVar14;
  char *args;
  string arg;
  string type_str;
  
  bVar14 = 0;
  pcVar5 = *mangled;
  uVar9 = work->options;
  pcVar7 = pcVar5 + n;
  if (((uVar9 & 0x1000) != 0) && (*pcVar7 == 'X')) {
    pcVar7 = strchr(pcVar5,0x3c);
    if ((pcVar7 == (char *)0x0) || (iVar4 = (int)pcVar7 - (int)pcVar5, n <= iVar4)) {
      iVar4 = n;
      if (n == 0) goto LAB_001e8bea;
    }
    else if (iVar4 == 0) goto LAB_001e8bea;
    string_appendn(declp,pcVar5,iVar4);
    pcVar5 = *mangled;
    uVar9 = work->options;
LAB_001e8bea:
    arg.e = (char *)0x0;
    arg.p = (char *)0x0;
    arg.b = (char *)0x0;
    *mangled = pcVar5 + n + 1;
    if (work->temp_start == -1) {
      work->temp_start = (int)declp->p - (int)declp->b;
    }
    work->options = uVar9 | 1;
    string_append(declp,"<");
    do {
      if (arg.b != (char *)0x0) {
        free(arg.b);
        arg.p = (char *)0x0;
        arg.e = (char *)0x0;
        arg.b = (char *)0x0;
      }
      pcVar5 = *mangled;
      cVar1 = *pcVar5;
      if (cVar1 == 'S') {
LAB_001e8d75:
        if ((cVar1 + 0xadU & 0xfd) != 0) goto LAB_001e8d09;
        pcVar7 = pcVar5 + 1;
        *mangled = pcVar7;
        cVar2 = pcVar5[1];
        if (cVar2 == 'N') {
          string_append(&arg,"-");
          pcVar7 = *mangled;
        }
        else if (cVar2 != 'P') {
          if (cVar2 == 'M') {
            string_append(&arg,"-2147483648");
            *mangled = *mangled + 1;
            goto LAB_001e8cbb;
          }
          goto LAB_001e8d09;
        }
        *mangled = pcVar7 + 1;
        uVar8 = (uint)(byte)pcVar7[1];
        if ((_sch_istable[uVar8] & 4) == 0) goto LAB_001e8d09;
        do {
          char_str[0] = (char)uVar8;
          if (char_str[0] != '\0') {
            string_append(&arg,char_str);
          }
          pcVar5 = *mangled;
          *mangled = pcVar5 + 1;
          uVar8 = (uint)(byte)pcVar5[1];
        } while ((_sch_istable[uVar8] & 4) != 0);
        if (cVar1 == 'U') {
          string_append(&arg,"U");
        }
      }
      else if (cVar1 < 'T') {
        if (cVar1 != 'A') {
LAB_001e8d09:
          string_append(declp,">");
          if (arg.b != (char *)0x0) {
            free(arg.b);
          }
          if (**mangled == '_') {
            *mangled = *mangled + 1;
          }
          work->options = uVar9;
          return;
        }
        *mangled = pcVar5 + 1;
        __n = consume_count(mangled);
        if (((int)__n < 1) || (sVar6 = strlen(*mangled), (int)sVar6 < (int)__n)) goto LAB_001e8d09;
        string_append(&arg,"&");
        pcVar5 = (char *)xmalloc(__n + 1);
        memcpy(pcVar5,*mangled,__n);
        pcVar5[__n] = '\0';
        pcVar7 = cplus_demangle(pcVar5,work->options);
        if (pcVar7 == (char *)0x0) {
          string_appendn(&arg,*mangled,__n);
        }
        else {
          if (*pcVar7 != '\0') {
            string_append(&arg,pcVar7);
          }
          free(pcVar7);
        }
        *mangled = *mangled + __n;
        free(pcVar5);
      }
      else {
        if (cVar1 != 'T') {
          if (cVar1 == 'U') goto LAB_001e8d75;
          goto LAB_001e8d09;
        }
        *mangled = pcVar5 + 1;
        iVar4 = do_type(work,mangled,&arg);
        if (iVar4 == 0) goto LAB_001e8d09;
      }
LAB_001e8cbb:
      string_appends(declp,&arg,(string *)arg.p);
      if ((**mangled == '\0') || (**mangled == '_')) goto LAB_001e8d09;
      string_append(declp,",");
    } while( true );
  }
  if (((uVar9 & 0x1800) == 0) || (pcVar3 = strstr(pcVar5,"__pt__"), pcVar3 == (char *)0x0)) {
LAB_001e88a9:
    if ((uVar9 & 0x2100) != 0) {
      pcVar3 = strstr(pcVar5,"__tm__");
      if (((pcVar3 == (char *)0x0) && (pcVar3 = strstr(pcVar5,"__ps__"), pcVar3 == (char *)0x0)) &&
         (pcVar3 = strstr(pcVar5,"__pt__"), pcVar3 == (char *)0x0)) {
        pcVar3 = strstr(pcVar5,"__S");
        if (pcVar3 == (char *)0x0) goto LAB_001e88f1;
        args = pcVar3 + 3;
      }
      else {
        args = pcVar3 + 6;
      }
      iVar4 = consume_count(&args);
      if (((iVar4 != -1) && (pcVar7 == args + iVar4)) && (*args == '_')) goto LAB_001e8979;
    }
  }
  else {
    args = pcVar3 + 6;
    iVar4 = consume_count(&args);
    if (iVar4 != -1) {
      if ((pcVar7 != args + iVar4) || (*args != '_')) {
        uVar9 = work->options;
        goto LAB_001e88a9;
      }
LAB_001e8979:
      args = args + 1;
      arg.e = (char *)0x0;
      arg.p = (char *)0x0;
      arg.b = (char *)0x0;
      iVar4 = (int)pcVar3 - (int)*mangled;
      if (iVar4 != 0) {
        string_appendn(declp,*mangled,iVar4);
      }
      if (work->temp_start == -1) {
        work->temp_start = (int)declp->p - (int)declp->b;
      }
      uVar9 = work->options;
      work->options = uVar9 | 1;
      string_append(declp,"<");
      if (args < pcVar7) {
        do {
          if (arg.b != (char *)0x0) {
            free(arg.b);
            arg.p = (char *)0x0;
            arg.e = (char *)0x0;
            arg.b = (char *)0x0;
          }
          pcVar5 = args;
          if (*args != 'L') {
            if (*args == 'X') {
              args = args + 1;
              iVar4 = do_type(work,&args,&type_str);
              if (iVar4 != 0) {
                string_append(&arg,"(");
                string_appends(&arg,&type_str,(string *)type_str.p);
                if (type_str.b != (char *)0x0) {
                  free(type_str.b);
                  type_str.p = (char *)0x0;
                  type_str.e = (char *)0x0;
                  type_str.b = (char *)0x0;
                }
                string_append(&arg,")");
                if (*args == 'L') goto LAB_001e8a99;
              }
            }
            else {
              iVar4 = do_type(work,&args,&arg);
              if (iVar4 != 0) {
                if (pcVar5 == args) {
                  work->options = uVar9;
                  return;
                }
                goto LAB_001e8aac;
              }
            }
LAB_001e8e50:
            if (arg.b == (char *)0x0) goto LAB_001e8e7c;
            goto LAB_001e8e58;
          }
LAB_001e8a99:
          args = args + 1;
          iVar4 = snarf_numeric_literal(&args,&arg);
          if (iVar4 == 0) goto LAB_001e8e50;
LAB_001e8aac:
          string_appends(declp,&arg,(string *)arg.p);
          string_append(declp,",");
        } while (args < pcVar7);
      }
      if (arg.b == (char *)0x0) {
LAB_001e8eb8:
        declp->p = declp->p + -1;
      }
      else {
LAB_001e8e58:
        free(arg.b);
        arg.p = (char *)0x0;
        arg.e = (char *)0x0;
        arg.b = (char *)0x0;
LAB_001e8e7c:
        if (pcVar7 <= args) goto LAB_001e8eb8;
      }
      string_append(declp,">");
      work->options = uVar9;
      s = (byte *)*mangled;
      goto LAB_001e895e;
    }
  }
LAB_001e88f1:
  bVar12 = (uint)n < 10;
  bVar13 = n == 10;
  s = (byte *)*mangled;
  if (n < 0xb) {
    if (work->temp_start == -1) {
LAB_001e8b50:
      work->temp_start = 0;
    }
    if (n == 0) goto LAB_001e895e;
  }
  else {
    iVar4 = 8;
    pbVar10 = s;
    pbVar11 = (byte *)"_GLOBAL_";
    do {
      if (iVar4 == 0) break;
      iVar4 = iVar4 + -1;
      bVar12 = *pbVar10 < *pbVar11;
      bVar13 = *pbVar10 == *pbVar11;
      pbVar10 = pbVar10 + (uint)bVar14 * -2 + 1;
      pbVar11 = pbVar11 + (uint)bVar14 * -2 + 1;
    } while (bVar13);
    if ((((!bVar12 && !bVar13) == bVar12) && (s[9] == 0x4e)) &&
       ((s[8] == s[10] && (pcVar5 = strchr(cplus_markers,(int)(char)s[8]), pcVar5 != (char *)0x0))))
    {
      string_append(declp,"{anonymous}");
      s = (byte *)*mangled;
      goto LAB_001e895e;
    }
    if (work->temp_start == -1) goto LAB_001e8b50;
  }
  string_appendn(declp,(char *)s,n);
  s = (byte *)*mangled;
LAB_001e895e:
  *mangled = (char *)(s + n);
  return;
}



/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* WARNING: Removing unreachable block (ram,0x001e8c66) */
/* WARNING: Removing unreachable block (ram,0x001e8e58) */
/* WARNING: Removing unreachable block (ram,0x001e8d20) */
/* WARNING: Removing unreachable block (ram,0x001e8adc) */

void __regparm3 FUN_001e8820(uint *param_1,int *param_2,uint param_3,int *param_4)

{
  char cVar1;
  char cVar2;
  char *pcVar3;
  int iVar4;
  char *pcVar5;
  size_t __n;
  size_t sVar6;
  void *__dest;
  char *pcVar7;
  byte *pbVar8;
  uint uVar9;
  uint uVar10;
  byte *pbVar11;
  byte *pbVar12;
  bool bVar13;
  bool bVar14;
  byte bVar15;
  char *local_38;
  void *local_28;
  
  bVar15 = 0;
  pcVar5 = (char *)*param_2;
  uVar10 = *param_1;
  pcVar7 = pcVar5 + param_3;
  if (((uVar10 & 0x1000) != 0) && (*pcVar7 == 'X')) {
    pcVar7 = strchr(pcVar5,0x3c);
    if ((pcVar7 == (char *)0x0) || ((int)param_3 <= (int)pcVar7 - (int)pcVar5)) {
      if (param_3 == 0) goto LAB_001e8bea;
    }
    else if (pcVar7 == pcVar5) goto LAB_001e8bea;
    FUN_001e63d0();
    pcVar5 = (char *)*param_2;
    uVar10 = *param_1;
LAB_001e8bea:
    *param_2 = (int)(pcVar5 + param_3 + 1);
    if (param_1[0xd] == 0xffffffff) {
      param_1[0xd] = param_4[1] - *param_4;
    }
    *param_1 = uVar10 | 1;
    FUN_001e64b0();
    do {
      pcVar5 = (char *)*param_2;
      cVar1 = *pcVar5;
      if (cVar1 == 'S') {
LAB_001e8d75:
        if ((cVar1 + 0xadU & 0xfd) != 0) goto LAB_001e8d09;
        pcVar7 = pcVar5 + 1;
        *param_2 = (int)pcVar7;
        cVar2 = pcVar5[1];
        if (cVar2 == 'N') {
          FUN_001e64b0();
          pcVar7 = (char *)*param_2;
        }
        else if (cVar2 != 'P') {
          if (cVar2 == 'M') {
            FUN_001e64b0();
            *param_2 = *param_2 + 1;
            goto LAB_001e8cbb;
          }
          goto LAB_001e8d09;
        }
        *param_2 = (int)(pcVar7 + 1);
        uVar9 = (uint)(byte)pcVar7[1];
        if (((&DAT_002bf340)[uVar9 * 2] & 4) == 0) goto LAB_001e8d09;
        do {
          DAT_003b6400 = (char)uVar9;
          if (DAT_003b6400 != '\0') {
            FUN_001e64b0();
          }
          iVar4 = *param_2;
          *param_2 = iVar4 + 1;
          uVar9 = (uint)*(byte *)(iVar4 + 1);
        } while (((&DAT_002bf340)[uVar9 * 2] & 4) != 0);
        if (cVar1 == 'U') {
          FUN_001e64b0();
        }
      }
      else if (cVar1 < 'T') {
        if (cVar1 != 'A') {
LAB_001e8d09:
          FUN_001e64b0();
          if (*(char *)*param_2 == '_') {
            *param_2 = (int)((char *)*param_2 + 1);
          }
          *param_1 = uVar10;
          return;
        }
        *param_2 = (int)(pcVar5 + 1);
        __n = FUN_001e6060();
        if (((int)__n < 1) || (sVar6 = strlen((char *)*param_2), (int)sVar6 < (int)__n))
        goto LAB_001e8d09;
        FUN_001e64b0();
        __dest = (void *)FUN_001fcf40(__n + 1);
        memcpy(__dest,(void *)*param_2,__n);
        *(undefined1 *)((int)__dest + __n) = 0;
        pcVar5 = (char *)FUN_001e7170(__dest,*param_1);
        if (pcVar5 == (char *)0x0) {
          FUN_001e63d0();
        }
        else {
          if (*pcVar5 != '\0') {
            FUN_001e64b0();
          }
          free(pcVar5);
        }
        *param_2 = *param_2 + __n;
        free(__dest);
      }
      else {
        if (cVar1 != 'T') {
          if (cVar1 == 'U') goto LAB_001e8d75;
          goto LAB_001e8d09;
        }
        *param_2 = (int)(pcVar5 + 1);
        iVar4 = FUN_001e7a30();
        if (iVar4 == 0) goto LAB_001e8d09;
      }
LAB_001e8cbb:
      FUN_001e6600();
      if ((*(char *)*param_2 == '\0') || (*(char *)*param_2 == '_')) goto LAB_001e8d09;
      FUN_001e64b0();
    } while( true );
  }
  if (((uVar10 & 0x1800) == 0) || (pcVar3 = strstr(pcVar5,"__pt__"), pcVar3 == (char *)0x0)) {
LAB_001e88a9:
    if ((uVar10 & 0x2100) != 0) {
      pcVar3 = strstr(pcVar5,"__tm__");
      if (((pcVar3 == (char *)0x0) && (pcVar3 = strstr(pcVar5,"__ps__"), pcVar3 == (char *)0x0)) &&
         (pcVar3 = strstr(pcVar5,"__pt__"), pcVar3 == (char *)0x0)) {
        pcVar3 = strstr(pcVar5,"__S");
        if (pcVar3 == (char *)0x0) goto LAB_001e88f1;
        local_38 = pcVar3 + 3;
      }
      else {
        local_38 = pcVar3 + 6;
      }
      iVar4 = FUN_001e6060();
      if (((iVar4 != -1) && (pcVar7 == local_38 + iVar4)) && (*local_38 == '_')) goto LAB_001e8979;
    }
  }
  else {
    local_38 = pcVar3 + 6;
    iVar4 = FUN_001e6060();
    if (iVar4 != -1) {
      if ((pcVar7 != local_38 + iVar4) || (*local_38 != '_')) {
        uVar10 = *param_1;
        goto LAB_001e88a9;
      }
LAB_001e8979:
      local_38 = local_38 + 1;
      if (pcVar3 != (char *)*param_2) {
        FUN_001e63d0();
      }
      if (param_1[0xd] == 0xffffffff) {
        param_1[0xd] = param_4[1] - *param_4;
      }
      uVar10 = *param_1;
      *param_1 = uVar10 | 1;
      FUN_001e64b0();
      while (local_38 < pcVar7) {
        if (*local_38 != 'L') {
          if (*local_38 == 'X') {
            local_38 = local_38 + 1;
            iVar4 = FUN_001e7a30();
            if (iVar4 != 0) {
              FUN_001e64b0();
              FUN_001e6600();
              if (local_28 != (void *)0x0) {
                free(local_28);
                local_28 = (void *)0x0;
              }
              FUN_001e64b0();
              if (*local_38 == 'L') goto LAB_001e8a99;
            }
          }
          else {
            iVar4 = FUN_001e7a30();
            if (iVar4 != 0) {
              *param_1 = uVar10;
              return;
            }
          }
LAB_001e8e50:
          if (local_38 < pcVar7) goto LAB_001e8e86;
          break;
        }
LAB_001e8a99:
        local_38 = local_38 + 1;
        iVar4 = FUN_001e6540();
        if (iVar4 == 0) goto LAB_001e8e50;
        FUN_001e6600();
        FUN_001e64b0();
      }
      param_4[1] = param_4[1] + -1;
LAB_001e8e86:
      FUN_001e64b0();
      *param_1 = uVar10;
      pbVar8 = (byte *)*param_2;
      goto LAB_001e895e;
    }
  }
LAB_001e88f1:
  bVar13 = param_3 < 10;
  bVar14 = param_3 == 10;
  pbVar8 = (byte *)*param_2;
  if ((int)param_3 < 0xb) {
    if (param_1[0xd] == 0xffffffff) {
LAB_001e8b50:
      param_1[0xd] = 0;
    }
    if (param_3 == 0) goto LAB_001e895e;
  }
  else {
    iVar4 = 8;
    pbVar11 = pbVar8;
    pbVar12 = (byte *)"_GLOBAL_";
    do {
      if (iVar4 == 0) break;
      iVar4 = iVar4 + -1;
      bVar13 = *pbVar11 < *pbVar12;
      bVar14 = *pbVar11 == *pbVar12;
      pbVar11 = pbVar11 + (uint)bVar15 * -2 + 1;
      pbVar12 = pbVar12 + (uint)bVar15 * -2 + 1;
    } while (bVar14);
    if ((((!bVar13 && !bVar14) == bVar13) && (pbVar8[9] == 0x4e)) &&
       ((pbVar8[8] == pbVar8[10] &&
        (pcVar5 = strchr(&DAT_003af40c,(int)(char)pbVar8[8]), pcVar5 != (char *)0x0)))) {
      FUN_001e64b0();
      pbVar8 = (byte *)*param_2;
      goto LAB_001e895e;
    }
    if (param_1[0xd] == 0xffffffff) goto LAB_001e8b50;
  }
  FUN_001e63d0();
  pbVar8 = (byte *)*param_2;
LAB_001e895e:
  *param_2 = (int)(pbVar8 + param_3);
  return;
}


PUSH EBP
PUSH EDI
PUSH ESI
PUSH EBX
CALL 0x00036f20
ADD EBX,0x1c67d7
SUB ESP,0x4c
MOV ESI,dword ptr [EDX]
MOV EBP,dword ptr [EAX]
MOV dword ptr [ESP + 0x14],ECX
ADD ECX,ESI
MOV dword ptr [ESP + 0xc],EAX
MOV dword ptr [ESP + 0x10],EDX
MOV dword ptr [ESP + 0x8],ECX
TEST EBP,0x1000
JZ 0x001e8859
CMP byte ptr [ECX],0x58
JZ 0x001e8bc0
MOV EDI,EBP
TEST EBP,0x1800
JZ 0x001e88a9
SUB ESP,0x8
LEA EAX,[EBX + 0xfff0d8a9]
PUSH EAX
PUSH ESI
CALL 0x0002a760
ADD ESP,0x10
MOV EBP,EAX
TEST EAX,EAX
JZ 0x001e88a9
LEA EAX,[EAX + 0x6]
LEA EDI,[ESP + 0x24]
MOV dword ptr [ESP + 0x24],EAX
MOV EAX,EDI
CALL 0x001e6060
CMP EAX,-0x1
JZ 0x001e88f1
MOV EDX,dword ptr [ESP + 0x24]
ADD EAX,EDX
CMP dword ptr [ESP + 0x8],EAX
JZ 0x001e8db8
MOV EAX,dword ptr [ESP + 0xc]
MOV EDI,dword ptr [EAX]
AND EDI,0x2100
JZ 0x001e88f1
SUB ESP,0x8
LEA EAX,[EBX + 0xfff0d8b0]
PUSH EAX
PUSH ESI
CALL 0x0002a760
ADD ESP,0x10
MOV EBP,EAX
TEST EAX,EAX
JZ 0x001e8b60
LEA EAX,[EBP + 0x6]
LEA EDI,[ESP + 0x24]
MOV dword ptr [ESP + 0x24],EAX
MOV EAX,EDI
CALL 0x001e6060
CMP EAX,-0x1
JZ 0x001e88f1
MOV EDX,dword ptr [ESP + 0x24]
ADD EAX,EDX
CMP dword ptr [ESP + 0x8],EAX
JZ 0x001e8970
MOV EAX,dword ptr [ESP + 0x10]
CMP dword ptr [ESP + 0x14],0xa
MOV EDX,dword ptr [EAX]
JLE 0x001e8948
MOV ECX,0x8
LEA EDI,[EBX + 0xfff0d8c2]
MOV ESI,EDX
CMPSB.REPE ES:EDI,ESI
SETA AL
SBB AL,0x0
TEST AL,AL
JNZ 0x001e8920
CMP byte ptr [EDX + 0x9],0x4e
JZ 0x001e8dec
MOV EAX,dword ptr [ESP + 0xc]
CMP dword ptr [EAX + 0x34],-0x1
JZ 0x001e8b50
MOV EAX,dword ptr [ESP + 0x60]
MOV ECX,dword ptr [ESP + 0x14]
CALL 0x001e63d0
MOV EAX,dword ptr [ESP + 0x10]
MOV EDX,dword ptr [EAX]
JMP 0x001e895e
MOV EAX,dword ptr [ESP + 0xc]
CMP dword ptr [EAX + 0x34],-0x1
JZ 0x001e8b50
MOV EAX,dword ptr [ESP + 0x14]
TEST EAX,EAX
JNZ 0x001e892e
MOV EAX,dword ptr [ESP + 0x10]
ADD EDX,dword ptr [ESP + 0x14]
MOV dword ptr [EAX],EDX
ADD ESP,0x4c
POP EBX
POP ESI
POP EDI
POP EBP
RET
CMP byte ptr [EDX],0x5f
JNZ 0x001e88f1
MOV EAX,dword ptr [ESP + 0x10]
ADD EDX,0x1
MOV dword ptr [ESP + 0x30],0x0
MOV dword ptr [ESP + 0x24],EDX
MOV EDX,dword ptr [EAX]
MOV dword ptr [ESP + 0x2c],0x0
MOV dword ptr [ESP + 0x28],0x0
SUB EBP,EDX
JZ 0x001e89ad
MOV EAX,dword ptr [ESP + 0x60]
MOV ECX,EBP
CALL 0x001e63d0
MOV EAX,dword ptr [ESP + 0xc]
CMP dword ptr [EAX + 0x34],-0x1
JNZ 0x001e89cb
MOV ESI,dword ptr [ESP + 0x60]
MOV EAX,dword ptr [ESP + 0x60]
MOV EAX,dword ptr [EAX + 0x4]
SUB EAX,dword ptr [ESI]
MOV ESI,dword ptr [ESP + 0xc]
MOV dword ptr [ESI + 0x34],EAX
MOV ECX,dword ptr [ESP + 0xc]
LEA EDX,[EBX + 0xfff0d8e8]
MOV EAX,dword ptr [ECX]
MOV dword ptr [ESP + 0x1c],EAX
OR EAX,0x1
MOV dword ptr [ECX],EAX
MOV EAX,dword ptr [ESP + 0x60]
CALL 0x001e64b0
MOV EAX,dword ptr [ESP + 0x8]
CMP EAX,dword ptr [ESP + 0x24]
JBE 0x001e8eb0
LEA EAX,[ESP + 0x34]
LEA ESI,[ESP + 0x28]
MOV EBP,dword ptr [ESP + 0x60]
MOV dword ptr [ESP + 0x4],EDI
MOV dword ptr [ESP + 0x18],EAX
JMP 0x001e8ad4
ADD EDI,0x1
MOV EDX,dword ptr [ESP + 0x4]
MOV EAX,dword ptr [ESP + 0xc]
MOV dword ptr [ESP + 0x24],EDI
MOV EDI,dword ptr [ESP + 0x18]
MOV ECX,EDI
CALL 0x001e7a30
TEST EAX,EAX
JZ 0x001e8e50
LEA EDX,[EBX + 0xfff029ec]
MOV EAX,ESI
CALL 0x001e64b0
MOV ECX,dword ptr [ESP + 0x38]
MOV EAX,ESI
MOV EDX,EDI
CALL 0x001e6600
MOV EAX,dword ptr [ESP + 0x34]
TEST EAX,EAX
JZ 0x001e8a78
SUB ESP,0xc
PUSH EAX
CALL 0x0002a420
MOV dword ptr [ESP + 0x48],0x0
MOV dword ptr [ESP + 0x4c],0x0
MOV dword ptr [ESP + 0x44],0x0
ADD ESP,0x10
MOV EAX,ESI
LEA EDX,[EBX + 0xfff0dceb]
CALL 0x001e64b0
MOV EAX,dword ptr [ESP + 0x24]
CMP byte ptr [EAX],0x4c
JNZ 0x001e8e50
ADD EAX,0x1
MOV dword ptr [ESP + 0x24],EAX
MOV EAX,dword ptr [ESP + 0x4]
MOV EDX,ESI
CALL 0x001e6540
TEST EAX,EAX
JZ 0x001e8e50
MOV ECX,dword ptr [ESP + 0x2c]
MOV EDX,ESI
MOV EAX,EBP
CALL 0x001e6600
MOV EAX,EBP
LEA EDX,[EBX + 0xffefb977]
CALL 0x001e64b0
MOV EAX,dword ptr [ESP + 0x8]
CMP dword ptr [ESP + 0x24],EAX
JNC 0x001e8eb0
MOV EAX,dword ptr [ESP + 0x28]
TEST EAX,EAX
JZ 0x001e8b00
SUB ESP,0xc
PUSH EAX
CALL 0x0002a420
MOV dword ptr [ESP + 0x3c],0x0
MOV dword ptr [ESP + 0x40],0x0
MOV dword ptr [ESP + 0x38],0x0
ADD ESP,0x10
MOV EDI,dword ptr [ESP + 0x24]
MOVZX EAX,byte ptr [EDI]
CMP AL,0x4c
JZ 0x001e8e40
CMP AL,0x58
JZ 0x001e8a10
MOV EDX,dword ptr [ESP + 0x4]
MOV EAX,dword ptr [ESP + 0xc]
MOV ECX,ESI
CALL 0x001e7a30
TEST EAX,EAX
JZ 0x001e8e50
CMP EDI,dword ptr [ESP + 0x24]
JNZ 0x001e8aac
MOV EAX,dword ptr [ESP + 0xc]
MOV EBX,dword ptr [ESP + 0x1c]
MOV dword ptr [EAX],EBX
JMP 0x001e8968
MOV EAX,dword ptr [ESP + 0xc]
MOV dword ptr [EAX + 0x34],0x0
JMP 0x001e8956
SUB ESP,0x8
LEA EAX,[EBX + 0xfff0d8b7]
PUSH EAX
PUSH ESI
CALL 0x0002a760
ADD ESP,0x10
MOV EBP,EAX
TEST EAX,EAX
JNZ 0x001e88ce
SUB ESP,0x8
LEA EAX,[EBX + 0xfff0d8a9]
PUSH EAX
PUSH ESI
CALL 0x0002a760
ADD ESP,0x10
MOV EBP,EAX
TEST EAX,EAX
JNZ 0x001e88ce
SUB ESP,0x8
LEA EAX,[EBX + 0xfff0d8be]
PUSH EAX
PUSH ESI
CALL 0x0002a760
ADD ESP,0x10
MOV EBP,EAX
TEST EAX,EAX
JZ 0x001e88f1
LEA EAX,[EAX + 0x3]
JMP 0x001e88d1
SUB ESP,0x8
PUSH 0x3c
PUSH ESI
CALL 0x0002a1e0
ADD ESP,0x10
TEST EAX,EAX
JZ 0x001e8bde
SUB EAX,ESI
CMP EAX,dword ptr [ESP + 0x14]
JL 0x001e8dc6
MOV EAX,dword ptr [ESP + 0x14]
TEST EAX,EAX
JNZ 0x001e9030
MOV EAX,dword ptr [ESP + 0x14]
MOV dword ptr [ESP + 0x30],0x0
MOV dword ptr [ESP + 0x2c],0x0
LEA EAX,[ESI + EAX*0x1 + 0x1]
MOV ESI,dword ptr [ESP + 0x10]
MOV dword ptr [ESP + 0x28],0x0
MOV dword ptr [ESI],EAX
MOV EAX,dword ptr [ESP + 0xc]
CMP dword ptr [EAX + 0x34],-0x1
JNZ 0x001e8c2e
MOV ESI,dword ptr [ESP + 0x60]
MOV EAX,dword ptr [ESP + 0x60]
MOV EAX,dword ptr [EAX + 0x4]
SUB EAX,dword ptr [ESI]
MOV ESI,dword ptr [ESP + 0xc]
MOV dword ptr [ESI + 0x34],EAX
MOV ESI,dword ptr [ESP + 0xc]
MOV EAX,EBP
LEA EDX,[EBX + 0xfff0d8e8]
LEA EDI,[ESP + 0x28]
OR EAX,0x1
MOV dword ptr [ESI],EAX
MOV EAX,dword ptr [ESP + 0x60]
CALL 0x001e64b0
LEA EAX,[EBX + 0xfff10340]
MOV dword ptr [ESP + 0x4],EDI
MOV EDI,dword ptr [ESP + 0x10]
MOV dword ptr [ESP + 0x8],EAX
MOV EAX,dword ptr [ESP + 0x28]
TEST EAX,EAX
JZ 0x001e8c8a
SUB ESP,0xc
PUSH EAX
CALL 0x0002a420
MOV dword ptr [ESP + 0x3c],0x0
MOV dword ptr [ESP + 0x40],0x0
MOV dword ptr [ESP + 0x38],0x0
ADD ESP,0x10
MOV EAX,dword ptr [EDI]
MOVZX ECX,byte ptr [EAX]
CMP CL,0x53
JZ 0x001e8d75
JLE 0x001e8d00
CMP CL,0x54
JNZ 0x001e8d70
ADD EAX,0x1
MOV ECX,dword ptr [ESP + 0x4]
MOV EDX,EDI
MOV dword ptr [EDI],EAX
MOV EAX,dword ptr [ESP + 0xc]
CALL 0x001e7a30
TEST EAX,EAX
JZ 0x001e8d09
MOV EAX,dword ptr [ESP + 0x60]
MOV ECX,dword ptr [ESP + 0x2c]
MOV EDX,dword ptr [ESP + 0x4]
CALL 0x001e6600
MOV EAX,dword ptr [EDI]
MOVZX EAX,byte ptr [EAX]
TEST AL,AL
JZ 0x001e8d09
CMP AL,0x5f
JZ 0x001e8d09
MOV EAX,dword ptr [ESP + 0x60]
LEA EDX,[EBX + 0xffefb977]
CALL 0x001e64b0
MOV EAX,dword ptr [ESP + 0x28]
TEST EAX,EAX
JNZ 0x001e8c66
JMP 0x001e8c8a
CMP CL,0x41
JZ 0x001e8ec8
MOV EAX,dword ptr [ESP + 0x60]
LEA EDX,[EBX + 0xfff0dcce]
CALL 0x001e64b0
MOV EAX,dword ptr [ESP + 0x28]
TEST EAX,EAX
JZ 0x001e8d44
SUB ESP,0xc
PUSH EAX
CALL 0x0002a420
MOV dword ptr [ESP + 0x3c],0x0
MOV dword ptr [ESP + 0x40],0x0
MOV dword ptr [ESP + 0x38],0x0
ADD ESP,0x10
MOV EAX,dword ptr [ESP + 0x10]
MOV EAX,dword ptr [EAX]
CMP byte ptr [EAX],0x5f
JNZ 0x001e8d58
MOV EBX,dword ptr [ESP + 0x10]
ADD EAX,0x1
MOV dword ptr [EBX],EAX
MOV EAX,dword ptr [ESP + 0xc]
MOV dword ptr [EAX],EBP
ADD ESP,0x4c
POP EBX
POP ESI
POP EDI
POP EBP
RET
CMP CL,0x55
JNZ 0x001e8d09
LEA EDX,[ECX + -0x53]
AND EDX,0xfd
JNZ 0x001e8d09
LEA EDX,[EAX + 0x1]
MOV dword ptr [EDI],EDX
MOVZX EAX,byte ptr [EAX + 0x1]
CMP AL,0x4e
JZ 0x001e8f8e
CMP AL,0x50
JZ 0x001e8fa8
CMP AL,0x4d
JNZ 0x001e8d09
MOV EAX,dword ptr [ESP + 0x4]
LEA EDX,[EBX + 0xfff0d89d]
CALL 0x001e64b0
ADD dword ptr [EDI],0x1
JMP 0x001e8cbb
CMP byte ptr [EDX],0x5f
JNZ 0x001e88a3
JMP 0x001e8979
MOV ECX,EAX
TEST EAX,EAX
JZ 0x001e8bea
MOV EAX,dword ptr [ESP + 0x60]
MOV EDX,ESI
CALL 0x001e63d0
MOV EAX,dword ptr [ESP + 0x10]
MOV ESI,dword ptr [EAX]
MOV EAX,dword ptr [ESP + 0xc]
MOV EBP,dword ptr [EAX]
JMP 0x001e8bea
MOVSX EAX,byte ptr [EDX + 0x8]
CMP AL,byte ptr [EDX + 0xa]
JNZ 0x001e8920
MOV dword ptr [ESP + 0x4],EDX
SUB ESP,0x8
PUSH EAX
LEA EAX,[EBX + 0x40c]
PUSH EAX
CALL 0x0002a1e0
ADD ESP,0x10
MOV EDX,dword ptr [ESP + 0x4]
TEST EAX,EAX
JZ 0x001e8920
MOV EAX,dword ptr [ESP + 0x60]
LEA EDX,[EBX + 0xfff0d8cb]
CALL 0x001e64b0
MOV EAX,dword ptr [ESP + 0x10]
MOV EDX,dword ptr [EAX]
JMP 0x001e895e
ADD EDI,0x1
MOV dword ptr [ESP + 0x24],EDI
JMP 0x001e8a99
MOV EAX,dword ptr [ESP + 0x28]
TEST EAX,EAX
JZ 0x001e8e7c
SUB ESP,0xc
PUSH EAX
CALL 0x0002a420
MOV dword ptr [ESP + 0x3c],0x0
MOV dword ptr [ESP + 0x40],0x0
MOV dword ptr [ESP + 0x38],0x0
ADD ESP,0x10
MOV EAX,dword ptr [ESP + 0x8]
CMP dword ptr [ESP + 0x24],EAX
JNC 0x001e8eb8
MOV EAX,dword ptr [ESP + 0x60]
LEA EDX,[EBX + 0xfff0dcce]
CALL 0x001e64b0
MOV EAX,dword ptr [ESP + 0xc]
MOV EBX,dword ptr [ESP + 0x1c]
MOV dword ptr [EAX],EBX
MOV EAX,dword ptr [ESP + 0x10]
MOV EDX,dword ptr [EAX]
JMP 0x001e895e
MOV EAX,dword ptr [ESP + 0x28]
TEST EAX,EAX
JNZ 0x001e8e58
MOV EAX,dword ptr [ESP + 0x60]
SUB dword ptr [EAX + 0x4],0x1
JMP 0x001e8e86
ADD EAX,0x1
MOV dword ptr [EDI],EAX
MOV EAX,EDI
CALL 0x001e6060
MOV ESI,EAX
TEST EAX,EAX
JLE 0x001e8d09
SUB ESP,0xc
PUSH dword ptr [EDI]
CALL 0x0002a5f0
ADD ESP,0x10
MOV dword ptr [ESP + 0x14],ESI
CMP ESI,EAX
JG 0x001e8d09
MOV ESI,dword ptr [ESP + 0x4]
LEA EDX,[EBX + 0xfff0c1ba]
MOV EAX,ESI
CALL 0x001e64b0
SUB ESP,0xc
MOV ECX,dword ptr [ESP + 0x20]
LEA EAX,[ECX + 0x1]
PUSH EAX
CALL 0x001fcf40
ADD ESP,0xc
PUSH dword ptr [ESP + 0x18]
PUSH dword ptr [EDI]
MOV dword ptr [ESP + 0x24],EAX
PUSH EAX
CALL 0x0002a5c0
MOV EDX,dword ptr [ESP + 0x28]
MOV ECX,dword ptr [ESP + 0x24]
MOV byte ptr [EDX + ECX*0x1],0x0
POP ECX
POP EAX
MOV EAX,dword ptr [ESP + 0x14]
PUSH dword ptr [EAX]
PUSH EDX
CALL 0x001e7170
ADD ESP,0x10
MOV ECX,EAX
TEST EAX,EAX
JZ 0x001e9039
CMP byte ptr [EAX],0x0
JZ 0x001e8f68
MOV EDX,EAX
MOV dword ptr [ESP + 0x1c],EAX
MOV EAX,ESI
CALL 0x001e64b0
MOV ECX,dword ptr [ESP + 0x1c]
SUB ESP,0xc
PUSH ECX
CALL 0x0002a420
ADD ESP,0x10
MOV EAX,dword ptr [ESP + 0x14]
SUB ESP,0xc
ADD dword ptr [EDI],EAX
PUSH dword ptr [ESP + 0x24]
CALL 0x0002a420
ADD ESP,0x10
JMP 0x001e8cbb
MOV EAX,dword ptr [ESP + 0x4]
LEA EDX,[EBX + 0xffefa47c]
MOV byte ptr [ESP + 0x14],CL
CALL 0x001e64b0
MOV EDX,dword ptr [EDI]
MOVZX ECX,byte ptr [ESP + 0x14]
LEA EAX,[EDX + 0x1]
MOV ESI,dword ptr [ESP + 0x8]
MOV dword ptr [EDI],EAX
MOVZX EDX,byte ptr [EDX + 0x1]
MOV EAX,EDX
TEST byte ptr [ESI + EDX*0x2],0x4
JZ 0x001e8d09
MOV byte ptr [ESP + 0x18],CL
LEA EDX,[0x7400]
LEA ESI,[EBX + 0x7400]
MOV dword ptr [ESP + 0x14],EBP
MOV EBP,EDX
LEA ESI,[ESI]
NOP
MOV byte ptr [EBP + EBX*0x1],AL
TEST AL,AL
JZ 0x001e8ff3
MOV EAX,dword ptr [ESP + 0x4]
MOV EDX,ESI
CALL 0x001e64b0
MOV EAX,dword ptr [EDI]
MOV ECX,dword ptr [ESP + 0x8]
LEA EDX,[EAX + 0x1]
MOV dword ptr [EDI],EDX
MOVZX EDX,byte ptr [EAX + 0x1]
MOV EAX,EDX
TEST byte ptr [ECX + EDX*0x2],0x4
JNZ 0x001e8fe0
MOVZX ECX,byte ptr [ESP + 0x18]
MOV EBP,dword ptr [ESP + 0x14]
CMP CL,0x55
JNZ 0x001e8cbb
MOV EAX,dword ptr [ESP + 0x4]
LEA EDX,[EBX + 0xffefb1c8]
CALL 0x001e64b0
JMP 0x001e8cbb
MOV ECX,dword ptr [ESP + 0x14]
JMP 0x001e8dd0
MOV ECX,dword ptr [ESP + 0x14]
MOV EDX,dword ptr [EDI]
MOV EAX,dword ptr [ESP + 0x4]
CALL 0x001e63d0
JMP 0x001e8f74
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n/* WARNING: Removing unreachable block (ram,0x001e8c66) */\n/* WARNING: Removing unreachable block (ram,0x001e8e58) */\n/* WARNING: Removing unreachable block (ram,0x001e8d20) */\n/* WARNING: Removing unreachable block (ram,0x001e8adc) */\n\nvoid __regparm3 FUN_001e8820(uint *param_1,int *param_2,uint param_3,int *param_4)\n\n{\n  char cVar1;\n  char cVar2;\n  char *pcVar3;\n  int iVar4;\n  char *pcVar5;\n  size_t __n;\n  size_t sVar6;\n  void *__dest;\n  char *pcVar7;\n  byte *pbVar8;\n  uint uVar9;\n  uint uVar10;\n  byte *pbVar11;\n  byte *pbVar12;\n  bool bVar13;\n  bool bVar14;\n  byte bVar15;\n  char *local_38;\n  void *local_28;\n  \n  bVar15 = 0;\n  pcVar5 = (char *)*param_2;\n  uVar10 = *param_1;\n  pcVar7 = pcVar5 + param_3;\n  if (((uVar10 & 0x1000) != 0) && (*pcVar7 == 'X')) {\n    pcVar7 = strchr(pcVar5,0x3c);\n    if ((pcVar7 == (char *)0x0) || ((int)param_3 <= (int)pcVar7 - (int)pcVar5)) {\n      if (param_3 == 0) goto LAB_001e8bea;\n    }\n    else if (pcVar7 == pcVar5) goto LAB_001e8bea;\n    FUN_001e63d0();\n    pcVar5 = (char *)*param_2;\n    uVar10 = *param_1;\nLAB_001e8bea:\n    *param_2 = (int)(pcVar5 + param_3 + 1);\n    if (param_1[0xd] == 0xffffffff) {\n      param_1[0xd] = param_4[1] - *param_4;\n    }\n    *param_1 = uVar10 | 1;\n    FUN_001e64b0();\n    do {\n      pcVar5 = (char *)*param_2;\n      cVar1 = *pcVar5;\n      if (cVar1 == 'S') {\nLAB_001e8d75:\n        if ((cVar1 + 0xadU & 0xfd) != 0) goto LAB_001e8d09;\n        pcVar7 = pcVar5 + 1;\n        *param_2 = (int)pcVar7;\n        cVar2 = pcVar5[1];\n        if (cVar2 == 'N') {\n          FUN_001e64b0();\n          pcVar7 = (char *)*param_2;\n        }\n        else if (cVar2 != 'P') {\n          if (cVar2 == 'M') {\n            FUN_001e64b0();\n            *param_2 = *param_2 + 1;\n            goto LAB_001e8cbb;\n          }\n          goto LAB_001e8d09;\n        }\n        *param_2 = (int)(pcVar7 + 1);\n        uVar9 = (uint)(byte)pcVar7[1];\n        if (((&DAT_002bf340)[uVar9 * 2] & 4) == 0) goto LAB_001e8d09;\n        do {\n          DAT_003b6400 = (char)uVar9;\n          if (DAT_003b6400 != '\0') {\n            FUN_001e64b0();\n          }\n          iVar4 = *param_2;\n          *param_2 = iVar4 + 1;\n          uVar9 = (uint)*(byte *)(iVar4 + 1);\n        } while (((&DAT_002bf340)[uVar9 * 2] & 4) != 0);\n        if (cVar1 == 'U') {\n          FUN_001e64b0();\n        }\n      }\n      else if (cVar1 < 'T') {\n        if (cVar1 != 'A') {\nLAB_001e8d09:\n          FUN_001e64b0();\n          if (*(char *)*param_2 == '_') {\n            *param_2 = (int)((char *)*param_2 + 1);\n          }\n          *param_1 = uVar10;\n          return;\n        }\n        *param_2 = (int)(pcVar5 + 1);\n        __n = FUN_001e6060();\n        if (((int)__n < 1) || (sVar6 = strlen((char *)*param_2), (int)sVar6 < (int)__n))\n        goto LAB_001e8d09;\n        FUN_001e64b0();\n        __dest = (void *)FUN_001fcf40(__n + 1);\n        memcpy(__dest,(void *)*param_2,__n);\n        *(undefined1 *)((int)__dest + __n) = 0;\n        pcVar5 = (char *)FUN_001e7170(__dest,*param_1);\n        if (pcVar5 == (char *)0x0) {\n          FUN_001e63d0();\n        }\n        else {\n          if (*pcVar5 != '\0') {\n            FUN_001e64b0();\n          }\n          free(pcVar5);\n        }\n        *param_2 = *param_2 + __n;\n        free(__dest);\n      }\n      else {\n        if (cVar1 != 'T') {\n          if (cVar1 == 'U') goto LAB_001e8d75;\n          goto LAB_001e8d09;\n        }\n        *param_2 = (int)(pcVar5 + 1);\n        iVar4 = FUN_001e7a30();\n        if (iVar4 == 0) goto LAB_001e8d09;\n      }\nLAB_001e8cbb:\n      FUN_001e6600();\n      if ((*(char *)*param_2 == '\0') || (*(char *)*param_2 == '_')) goto LAB_001e8d09;\n      FUN_001e64b0();\n    } while( true );\n  }\n  if (((uVar10 & 0x1800) == 0) || (pcVar3 = strstr(pcVar5,"__pt__"), pcVar3 == (char *)0x0)) {\nLAB_001e88a9:\n    if ((uVar10 & 0x2100) != 0) {\n      pcVar3 = strstr(pcVar5,"__tm__");\n      if (((pcVar3 == (char *)0x0) && (pcVar3 = strstr(pcVar5,"__ps__"), pcVar3 == (char *)0x0)) &&\n         (pcVar3 = strstr(pcVar5,"__pt__"), pcVar3 == (char *)0x0)) {\n        pcVar3 = strstr(pcVar5,"__S");\n        if (pcVar3 == (char *)0x0) goto LAB_001e88f1;\n        local_38 = pcVar3 + 3;\n      }\n      else {\n        local_38 = pcVar3 + 6;\n      }\n      iVar4 = FUN_001e6060();\n      if (((iVar4 != -1) && (pcVar7 == local_38 + iVar4)) && (*local_38 == '_')) goto LAB_001e8979;\n    }\n  }\n  else {\n    local_38 = pcVar3 + 6;\n    iVar4 = FUN_001e6060();\n    if (iVar4 != -1) {\n      if ((pcVar7 != local_38 + iVar4) || (*local_38 != '_')) {\n        uVar10 = *param_1;\n        goto LAB_001e88a9;\n      }\nLAB_001e8979:\n      local_38 = local_38 + 1;\n      if (pcVar3 != (char *)*param_2) {\n        FUN_001e63d0();\n      }\n      if (param_1[0xd] == 0xffffffff) {\n        param_1[0xd] = param_4[1] - *param_4;\n      }\n      uVar10 = *param_1;\n      *param_1 = uVar10 | 1;\n      FUN_001e64b0();\n      while (local_38 < pcVar7) {\n        if (*local_38 != 'L') {\n          if (*local_38 == 'X') {\n            local_38 = local_38 + 1;\n            iVar4 = FUN_001e7a30();\n            if (iVar4 != 0) {\n              FUN_001e64b0();\n              FUN_001e6600();\n              if (local_28 != (void *)0x0) {\n                free(local_28);\n                local_28 = (void *)0x0;\n              }\n              FUN_001e64b0();\n              if (*local_38 == 'L') goto LAB_001e8a99;\n            }\n          }\n          else {\n            iVar4 = FUN_001e7a30();\n            if (iVar4 != 0) {\n              *param_1 = uVar10;\n              return;\n            }\n          }\nLAB_001e8e50:\n          if (local_38 < pcVar7) goto LAB_001e8e86;\n          break;\n        }\nLAB_001e8a99:\n        local_38 = local_38 + 1;\n        iVar4 = FUN_001e6540();\n        if (iVar4 == 0) goto LAB_001e8e50;\n        FUN_001e6600();\n        FUN_001e64b0();\n      }\n      param_4[1] = param_4[1] + -1;\nLAB_001e8e86:\n      FUN_001e64b0();\n      *param_1 = uVar10;\n      pbVar8 = (byte *)*param_2;\n      goto LAB_001e895e;\n    }\n  }\nLAB_001e88f1:\n  bVar13 = param_3 < 10;\n  bVar14 = param_3 == 10;\n  pbVar8 = (byte *)*param_2;\n  if ((int)param_3 < 0xb) {\n    if (param_1[0xd] == 0xffffffff) {\nLAB_001e8b50:\n      param_1[0xd] = 0;\n    }\n    if (param_3 == 0) goto LAB_001e895e;\n  }\n  else {\n    iVar4 = 8;\n    pbVar11 = pbVar8;\n    pbVar12 = (byte *)"_GLOBAL_";\n    do {\n      if (iVar4 == 0) break;\n      iVar4 = iVar4 + -1;\n      bVar13 = *pbVar11 < *pbVar12;\n      bVar14 = *pbVar11 == *pbVar12;\n      pbVar11 = pbVar11 + (uint)bVar15 * -2 + 1;\n      pbVar12 = pbVar12 + (uint)bVar15 * -2 + 1;\n    } while (bVar14);\n    if ((((!bVar13 && !bVar14) == bVar13) && (pbVar8[9] == 0x4e)) &&\n       ((pbVar8[8] == pbVar8[10] &&\n        (pcVar5 = strchr(&DAT_003af40c,(int)(char)pbVar8[8]), pcVar5 != (char *)0x0)))) {\n      FUN_001e64b0();\n      pbVar8 = (byte *)*param_2;\n      goto LAB_001e895e;\n    }\n    if (param_1[0xd] == 0xffffffff) goto LAB_001e8b50;\n  }\n  FUN_001e63d0();\n  pbVar8 = (byte *)*param_2;\nLAB_001e895e:\n  *param_2 = (int)(pbVar8 + param_3);\n  return;\n}\n\n" comment comment comment comment comment (function_definition "void __regparm3 FUN_001e8820(uint *param_1,int *param_2,uint param_3,int *param_4)\n\n{\n  char cVar1;\n  char cVar2;\n  char *pcVar3;\n  int iVar4;\n  char *pcVar5;\n  size_t __n;\n  size_t sVar6;\n  void *__dest;\n  char *pcVar7;\n  byte *pbVar8;\n  uint uVar9;\n  uint uVar10;\n  byte *pbVar11;\n  byte *pbVar12;\n  bool bVar13;\n  bool bVar14;\n  byte bVar15;\n  char *local_38;\n  void *local_28;\n  \n  bVar15 = 0;\n  pcVar5 = (char *)*param_2;\n  uVar10 = *param_1;\n  pcVar7 = pcVar5 + param_3;\n  if (((uVar10 & 0x1000) != 0) && (*pcVar7 == 'X')) {\n    pcVar7 = strchr(pcVar5,0x3c);\n    if ((pcVar7 == (char *)0x0) || ((int)param_3 <= (int)pcVar7 - (int)pcVar5)) {\n      if (param_3 == 0) goto LAB_001e8bea;\n    }\n    else if (pcVar7 == pcVar5) goto LAB_001e8bea;\n    FUN_001e63d0();\n    pcVar5 = (char *)*param_2;\n    uVar10 = *param_1;\nLAB_001e8bea:\n    *param_2 = (int)(pcVar5 + param_3 + 1);\n    if (param_1[0xd] == 0xffffffff) {\n      param_1[0xd] = param_4[1] - *param_4;\n    }\n    *param_1 = uVar10 | 1;\n    FUN_001e64b0();\n    do {\n      pcVar5 = (char *)*param_2;\n      cVar1 = *pcVar5;\n      if (cVar1 == 'S') {\nLAB_001e8d75:\n        if ((cVar1 + 0xadU & 0xfd) != 0) goto LAB_001e8d09;\n        pcVar7 = pcVar5 + 1;\n        *param_2 = (int)pcVar7;\n        cVar2 = pcVar5[1];\n        if (cVar2 == 'N') {\n          FUN_001e64b0();\n          pcVar7 = (char *)*param_2;\n        }\n        else if (cVar2 != 'P') {\n          if (cVar2 == 'M') {\n            FUN_001e64b0();\n            *param_2 = *param_2 + 1;\n            goto LAB_001e8cbb;\n          }\n          goto LAB_001e8d09;\n        }\n        *param_2 = (int)(pcVar7 + 1);\n        uVar9 = (uint)(byte)pcVar7[1];\n        if (((&DAT_002bf340)[uVar9 * 2] & 4) == 0) goto LAB_001e8d09;\n        do {\n          DAT_003b6400 = (char)uVar9;\n          if (DAT_003b6400 != '\0') {\n            FUN_001e64b0();\n          }\n          iVar4 = *param_2;\n          *param_2 = iVar4 + 1;\n          uVar9 = (uint)*(byte *)(iVar4 + 1);\n        } while (((&DAT_002bf340)[uVar9 * 2] & 4) != 0);\n        if (cVar1 == 'U') {\n          FUN_001e64b0();\n        }\n      }\n      else if (cVar1 < 'T') {\n        if (cVar1 != 'A') {\nLAB_001e8d09:\n          FUN_001e64b0();\n          if (*(char *)*param_2 == '_') {\n            *param_2 = (int)((char *)*param_2 + 1);\n          }\n          *param_1 = uVar10;\n          return;\n        }\n        *param_2 = (int)(pcVar5 + 1);\n        __n = FUN_001e6060();\n        if (((int)__n < 1) || (sVar6 = strlen((char *)*param_2), (int)sVar6 < (int)__n))\n        goto LAB_001e8d09;\n        FUN_001e64b0();\n        __dest = (void *)FUN_001fcf40(__n + 1);\n        memcpy(__dest,(void *)*param_2,__n);\n        *(undefined1 *)((int)__dest + __n) = 0;\n        pcVar5 = (char *)FUN_001e7170(__dest,*param_1);\n        if (pcVar5 == (char *)0x0) {\n          FUN_001e63d0();\n        }\n        else {\n          if (*pcVar5 != '\0') {\n            FUN_001e64b0();\n          }\n          free(pcVar5);\n        }\n        *param_2 = *param_2 + __n;\n        free(__dest);\n      }\n      else {\n        if (cVar1 != 'T') {\n          if (cVar1 == 'U') goto LAB_001e8d75;\n          goto LAB_001e8d09;\n        }\n        *param_2 = (int)(pcVar5 + 1);\n        iVar4 = FUN_001e7a30();\n        if (iVar4 == 0) goto LAB_001e8d09;\n      }\nLAB_001e8cbb:\n      FUN_001e6600();\n      if ((*(char *)*param_2 == '\0') || (*(char *)*param_2 == '_')) goto LAB_001e8d09;\n      FUN_001e64b0();\n    } while( true );\n  }\n  if (((uVar10 & 0x1800) == 0) || (pcVar3 = strstr(pcVar5,"__pt__"), pcVar3 == (char *)0x0)) {\nLAB_001e88a9:\n    if ((uVar10 & 0x2100) != 0) {\n      pcVar3 = strstr(pcVar5,"__tm__");\n      if (((pcVar3 == (char *)0x0) && (pcVar3 = strstr(pcVar5,"__ps__"), pcVar3 == (char *)0x0)) &&\n         (pcVar3 = strstr(pcVar5,"__pt__"), pcVar3 == (char *)0x0)) {\n        pcVar3 = strstr(pcVar5,"__S");\n        if (pcVar3 == (char *)0x0) goto LAB_001e88f1;\n        local_38 = pcVar3 + 3;\n      }\n      else {\n        local_38 = pcVar3 + 6;\n      }\n      iVar4 = FUN_001e6060();\n      if (((iVar4 != -1) && (pcVar7 == local_38 + iVar4)) && (*local_38 == '_')) goto LAB_001e8979;\n    }\n  }\n  else {\n    local_38 = pcVar3 + 6;\n    iVar4 = FUN_001e6060();\n    if (iVar4 != -1) {\n      if ((pcVar7 != local_38 + iVar4) || (*local_38 != '_')) {\n        uVar10 = *param_1;\n        goto LAB_001e88a9;\n      }\nLAB_001e8979:\n      local_38 = local_38 + 1;\n      if (pcVar3 != (char *)*param_2) {\n        FUN_001e63d0();\n      }\n      if (param_1[0xd] == 0xffffffff) {\n        param_1[0xd] = param_4[1] - *param_4;\n      }\n      uVar10 = *param_1;\n      *param_1 = uVar10 | 1;\n      FUN_001e64b0();\n      while (local_38 < pcVar7) {\n        if (*local_38 != 'L') {\n          if (*local_38 == 'X') {\n            local_38 = local_38 + 1;\n            iVar4 = FUN_001e7a30();\n            if (iVar4 != 0) {\n              FUN_001e64b0();\n              FUN_001e6600();\n              if (local_28 != (void *)0x0) {\n                free(local_28);\n                local_28 = (void *)0x0;\n              }\n              FUN_001e64b0();\n              if (*local_38 == 'L') goto LAB_001e8a99;\n            }\n          }\n          else {\n            iVar4 = FUN_001e7a30();\n            if (iVar4 != 0) {\n              *param_1 = uVar10;\n              return;\n            }\n          }\nLAB_001e8e50:\n          if (local_38 < pcVar7) goto LAB_001e8e86;\n          break;\n        }\nLAB_001e8a99:\n        local_38 = local_38 + 1;\n        iVar4 = FUN_001e6540();\n        if (iVar4 == 0) goto LAB_001e8e50;\n        FUN_001e6600();\n        FUN_001e64b0();\n      }\n      param_4[1] = param_4[1] + -1;\nLAB_001e8e86:\n      FUN_001e64b0();\n      *param_1 = uVar10;\n      pbVar8 = (byte *)*param_2;\n      goto LAB_001e895e;\n    }\n  }\nLAB_001e88f1:\n  bVar13 = param_3 < 10;\n  bVar14 = param_3 == 10;\n  pbVar8 = (byte *)*param_2;\n  if ((int)param_3 < 0xb) {\n    if (param_1[0xd] == 0xffffffff) {\nLAB_001e8b50:\n      param_1[0xd] = 0;\n    }\n    if (param_3 == 0) goto LAB_001e895e;\n  }\n  else {\n    iVar4 = 8;\n    pbVar11 = pbVar8;\n    pbVar12 = (byte *)"_GLOBAL_";\n    do {\n      if (iVar4 == 0) break;\n      iVar4 = iVar4 + -1;\n      bVar13 = *pbVar11 < *pbVar12;\n      bVar14 = *pbVar11 == *pbVar12;\n      pbVar11 = pbVar11 + (uint)bVar15 * -2 + 1;\n      pbVar12 = pbVar12 + (uint)bVar15 * -2 + 1;\n    } while (bVar14);\n    if ((((!bVar13 && !bVar14) == bVar13) && (pbVar8[9] == 0x4e)) &&\n       ((pbVar8[8] == pbVar8[10] &&\n        (pcVar5 = strchr(&DAT_003af40c,(int)(char)pbVar8[8]), pcVar5 != (char *)0x0)))) {\n      FUN_001e64b0();\n      pbVar8 = (byte *)*param_2;\n      goto LAB_001e895e;\n    }\n    if (param_1[0xd] == 0xffffffff) goto LAB_001e8b50;\n  }\n  FUN_001e63d0();\n  pbVar8 = (byte *)*param_2;\nLAB_001e895e:\n  *param_2 = (int)(pbVar8 + param_3);\n  return;\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "FUN_001e8820(uint *param_1,int *param_2,uint param_3,int *param_4)" identifier (parameter_list "(uint *param_1,int *param_2,uint param_3,int *param_4)" ( (parameter_declaration "uint *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "uint param_3" type_identifier identifier) , (parameter_declaration "int *param_4" primitive_type (pointer_declarator "*param_4" * identifier)) ))) (compound_statement "{\n  char cVar1;\n  char cVar2;\n  char *pcVar3;\n  int iVar4;\n  char *pcVar5;\n  size_t __n;\n  size_t sVar6;\n  void *__dest;\n  char *pcVar7;\n  byte *pbVar8;\n  uint uVar9;\n  uint uVar10;\n  byte *pbVar11;\n  byte *pbVar12;\n  bool bVar13;\n  bool bVar14;\n  byte bVar15;\n  char *local_38;\n  void *local_28;\n  \n  bVar15 = 0;\n  pcVar5 = (char *)*param_2;\n  uVar10 = *param_1;\n  pcVar7 = pcVar5 + param_3;\n  if (((uVar10 & 0x1000) != 0) && (*pcVar7 == 'X')) {\n    pcVar7 = strchr(pcVar5,0x3c);\n    if ((pcVar7 == (char *)0x0) || ((int)param_3 <= (int)pcVar7 - (int)pcVar5)) {\n      if (param_3 == 0) goto LAB_001e8bea;\n    }\n    else if (pcVar7 == pcVar5) goto LAB_001e8bea;\n    FUN_001e63d0();\n    pcVar5 = (char *)*param_2;\n    uVar10 = *param_1;\nLAB_001e8bea:\n    *param_2 = (int)(pcVar5 + param_3 + 1);\n    if (param_1[0xd] == 0xffffffff) {\n      param_1[0xd] = param_4[1] - *param_4;\n    }\n    *param_1 = uVar10 | 1;\n    FUN_001e64b0();\n    do {\n      pcVar5 = (char *)*param_2;\n      cVar1 = *pcVar5;\n      if (cVar1 == 'S') {\nLAB_001e8d75:\n        if ((cVar1 + 0xadU & 0xfd) != 0) goto LAB_001e8d09;\n        pcVar7 = pcVar5 + 1;\n        *param_2 = (int)pcVar7;\n        cVar2 = pcVar5[1];\n        if (cVar2 == 'N') {\n          FUN_001e64b0();\n          pcVar7 = (char *)*param_2;\n        }\n        else if (cVar2 != 'P') {\n          if (cVar2 == 'M') {\n            FUN_001e64b0();\n            *param_2 = *param_2 + 1;\n            goto LAB_001e8cbb;\n          }\n          goto LAB_001e8d09;\n        }\n        *param_2 = (int)(pcVar7 + 1);\n        uVar9 = (uint)(byte)pcVar7[1];\n        if (((&DAT_002bf340)[uVar9 * 2] & 4) == 0) goto LAB_001e8d09;\n        do {\n          DAT_003b6400 = (char)uVar9;\n          if (DAT_003b6400 != '\0') {\n            FUN_001e64b0();\n          }\n          iVar4 = *param_2;\n          *param_2 = iVar4 + 1;\n          uVar9 = (uint)*(byte *)(iVar4 + 1);\n        } while (((&DAT_002bf340)[uVar9 * 2] & 4) != 0);\n        if (cVar1 == 'U') {\n          FUN_001e64b0();\n        }\n      }\n      else if (cVar1 < 'T') {\n        if (cVar1 != 'A') {\nLAB_001e8d09:\n          FUN_001e64b0();\n          if (*(char *)*param_2 == '_') {\n            *param_2 = (int)((char *)*param_2 + 1);\n          }\n          *param_1 = uVar10;\n          return;\n        }\n        *param_2 = (int)(pcVar5 + 1);\n        __n = FUN_001e6060();\n        if (((int)__n < 1) || (sVar6 = strlen((char *)*param_2), (int)sVar6 < (int)__n))\n        goto LAB_001e8d09;\n        FUN_001e64b0();\n        __dest = (void *)FUN_001fcf40(__n + 1);\n        memcpy(__dest,(void *)*param_2,__n);\n        *(undefined1 *)((int)__dest + __n) = 0;\n        pcVar5 = (char *)FUN_001e7170(__dest,*param_1);\n        if (pcVar5 == (char *)0x0) {\n          FUN_001e63d0();\n        }\n        else {\n          if (*pcVar5 != '\0') {\n            FUN_001e64b0();\n          }\n          free(pcVar5);\n        }\n        *param_2 = *param_2 + __n;\n        free(__dest);\n      }\n      else {\n        if (cVar1 != 'T') {\n          if (cVar1 == 'U') goto LAB_001e8d75;\n          goto LAB_001e8d09;\n        }\n        *param_2 = (int)(pcVar5 + 1);\n        iVar4 = FUN_001e7a30();\n        if (iVar4 == 0) goto LAB_001e8d09;\n      }\nLAB_001e8cbb:\n      FUN_001e6600();\n      if ((*(char *)*param_2 == '\0') || (*(char *)*param_2 == '_')) goto LAB_001e8d09;\n      FUN_001e64b0();\n    } while( true );\n  }\n  if (((uVar10 & 0x1800) == 0) || (pcVar3 = strstr(pcVar5,"__pt__"), pcVar3 == (char *)0x0)) {\nLAB_001e88a9:\n    if ((uVar10 & 0x2100) != 0) {\n      pcVar3 = strstr(pcVar5,"__tm__");\n      if (((pcVar3 == (char *)0x0) && (pcVar3 = strstr(pcVar5,"__ps__"), pcVar3 == (char *)0x0)) &&\n         (pcVar3 = strstr(pcVar5,"__pt__"), pcVar3 == (char *)0x0)) {\n        pcVar3 = strstr(pcVar5,"__S");\n        if (pcVar3 == (char *)0x0) goto LAB_001e88f1;\n        local_38 = pcVar3 + 3;\n      }\n      else {\n        local_38 = pcVar3 + 6;\n      }\n      iVar4 = FUN_001e6060();\n      if (((iVar4 != -1) && (pcVar7 == local_38 + iVar4)) && (*local_38 == '_')) goto LAB_001e8979;\n    }\n  }\n  else {\n    local_38 = pcVar3 + 6;\n    iVar4 = FUN_001e6060();\n    if (iVar4 != -1) {\n      if ((pcVar7 != local_38 + iVar4) || (*local_38 != '_')) {\n        uVar10 = *param_1;\n        goto LAB_001e88a9;\n      }\nLAB_001e8979:\n      local_38 = local_38 + 1;\n      if (pcVar3 != (char *)*param_2) {\n        FUN_001e63d0();\n      }\n      if (param_1[0xd] == 0xffffffff) {\n        param_1[0xd] = param_4[1] - *param_4;\n      }\n      uVar10 = *param_1;\n      *param_1 = uVar10 | 1;\n      FUN_001e64b0();\n      while (local_38 < pcVar7) {\n        if (*local_38 != 'L') {\n          if (*local_38 == 'X') {\n            local_38 = local_38 + 1;\n            iVar4 = FUN_001e7a30();\n            if (iVar4 != 0) {\n              FUN_001e64b0();\n              FUN_001e6600();\n              if (local_28 != (void *)0x0) {\n                free(local_28);\n                local_28 = (void *)0x0;\n              }\n              FUN_001e64b0();\n              if (*local_38 == 'L') goto LAB_001e8a99;\n            }\n          }\n          else {\n            iVar4 = FUN_001e7a30();\n            if (iVar4 != 0) {\n              *param_1 = uVar10;\n              return;\n            }\n          }\nLAB_001e8e50:\n          if (local_38 < pcVar7) goto LAB_001e8e86;\n          break;\n        }\nLAB_001e8a99:\n        local_38 = local_38 + 1;\n        iVar4 = FUN_001e6540();\n        if (iVar4 == 0) goto LAB_001e8e50;\n        FUN_001e6600();\n        FUN_001e64b0();\n      }\n      param_4[1] = param_4[1] + -1;\nLAB_001e8e86:\n      FUN_001e64b0();\n      *param_1 = uVar10;\n      pbVar8 = (byte *)*param_2;\n      goto LAB_001e895e;\n    }\n  }\nLAB_001e88f1:\n  bVar13 = param_3 < 10;\n  bVar14 = param_3 == 10;\n  pbVar8 = (byte *)*param_2;\n  if ((int)param_3 < 0xb) {\n    if (param_1[0xd] == 0xffffffff) {\nLAB_001e8b50:\n      param_1[0xd] = 0;\n    }\n    if (param_3 == 0) goto LAB_001e895e;\n  }\n  else {\n    iVar4 = 8;\n    pbVar11 = pbVar8;\n    pbVar12 = (byte *)"_GLOBAL_";\n    do {\n      if (iVar4 == 0) break;\n      iVar4 = iVar4 + -1;\n      bVar13 = *pbVar11 < *pbVar12;\n      bVar14 = *pbVar11 == *pbVar12;\n      pbVar11 = pbVar11 + (uint)bVar15 * -2 + 1;\n      pbVar12 = pbVar12 + (uint)bVar15 * -2 + 1;\n    } while (bVar14);\n    if ((((!bVar13 && !bVar14) == bVar13) && (pbVar8[9] == 0x4e)) &&\n       ((pbVar8[8] == pbVar8[10] &&\n        (pcVar5 = strchr(&DAT_003af40c,(int)(char)pbVar8[8]), pcVar5 != (char *)0x0)))) {\n      FUN_001e64b0();\n      pbVar8 = (byte *)*param_2;\n      goto LAB_001e895e;\n    }\n    if (param_1[0xd] == 0xffffffff) goto LAB_001e8b50;\n  }\n  FUN_001e63d0();\n  pbVar8 = (byte *)*param_2;\nLAB_001e895e:\n  *param_2 = (int)(pbVar8 + param_3);\n  return;\n}" { (declaration "char cVar1;" primitive_type identifier ;) (declaration "char cVar2;" primitive_type identifier ;) (declaration "char *pcVar3;" primitive_type (pointer_declarator "*pcVar3" * identifier) ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "char *pcVar5;" primitive_type (pointer_declarator "*pcVar5" * identifier) ;) (declaration "size_t __n;" primitive_type identifier ;) (declaration "size_t sVar6;" primitive_type identifier ;) (declaration "void *__dest;" primitive_type (pointer_declarator "*__dest" * identifier) ;) (declaration "char *pcVar7;" primitive_type (pointer_declarator "*pcVar7" * identifier) ;) (declaration "byte *pbVar8;" type_identifier (pointer_declarator "*pbVar8" * identifier) ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "uint uVar10;" type_identifier identifier ;) (declaration "byte *pbVar11;" type_identifier (pointer_declarator "*pbVar11" * identifier) ;) (declaration "byte *pbVar12;" type_identifier (pointer_declarator "*pbVar12" * identifier) ;) (declaration "bool bVar13;" primitive_type identifier ;) (declaration "bool bVar14;" primitive_type identifier ;) (declaration "byte bVar15;" type_identifier identifier ;) (declaration "char *local_38;" primitive_type (pointer_declarator "*local_38" * identifier) ;) (declaration "void *local_28;" primitive_type (pointer_declarator "*local_28" * identifier) ;) (expression_statement "bVar15 = 0;" (assignment_expression "bVar15 = 0" identifier = number_literal) ;) (expression_statement "pcVar5 = (char *)*param_2;" (assignment_expression "pcVar5 = (char *)*param_2" identifier = (cast_expression "(char *)*param_2" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_2" * identifier))) ;) (expression_statement "uVar10 = *param_1;" (assignment_expression "uVar10 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "pcVar7 = pcVar5 + param_3;" (assignment_expression "pcVar7 = pcVar5 + param_3" identifier = (binary_expression "pcVar5 + param_3" identifier + identifier)) ;) (if_statement "if (((uVar10 & 0x1000) != 0) && (*pcVar7 == 'X')) {\n    pcVar7 = strchr(pcVar5,0x3c);\n    if ((pcVar7 == (char *)0x0) || ((int)param_3 <= (int)pcVar7 - (int)pcVar5)) {\n      if (param_3 == 0) goto LAB_001e8bea;\n    }\n    else if (pcVar7 == pcVar5) goto LAB_001e8bea;\n    FUN_001e63d0();\n    pcVar5 = (char *)*param_2;\n    uVar10 = *param_1;\nLAB_001e8bea:\n    *param_2 = (int)(pcVar5 + param_3 + 1);\n    if (param_1[0xd] == 0xffffffff) {\n      param_1[0xd] = param_4[1] - *param_4;\n    }\n    *param_1 = uVar10 | 1;\n    FUN_001e64b0();\n    do {\n      pcVar5 = (char *)*param_2;\n      cVar1 = *pcVar5;\n      if (cVar1 == 'S') {\nLAB_001e8d75:\n        if ((cVar1 + 0xadU & 0xfd) != 0) goto LAB_001e8d09;\n        pcVar7 = pcVar5 + 1;\n        *param_2 = (int)pcVar7;\n        cVar2 = pcVar5[1];\n        if (cVar2 == 'N') {\n          FUN_001e64b0();\n          pcVar7 = (char *)*param_2;\n        }\n        else if (cVar2 != 'P') {\n          if (cVar2 == 'M') {\n            FUN_001e64b0();\n            *param_2 = *param_2 + 1;\n            goto LAB_001e8cbb;\n          }\n          goto LAB_001e8d09;\n        }\n        *param_2 = (int)(pcVar7 + 1);\n        uVar9 = (uint)(byte)pcVar7[1];\n        if (((&DAT_002bf340)[uVar9 * 2] & 4) == 0) goto LAB_001e8d09;\n        do {\n          DAT_003b6400 = (char)uVar9;\n          if (DAT_003b6400 != '\0') {\n            FUN_001e64b0();\n          }\n          iVar4 = *param_2;\n          *param_2 = iVar4 + 1;\n          uVar9 = (uint)*(byte *)(iVar4 + 1);\n        } while (((&DAT_002bf340)[uVar9 * 2] & 4) != 0);\n        if (cVar1 == 'U') {\n          FUN_001e64b0();\n        }\n      }\n      else if (cVar1 < 'T') {\n        if (cVar1 != 'A') {\nLAB_001e8d09:\n          FUN_001e64b0();\n          if (*(char *)*param_2 == '_') {\n            *param_2 = (int)((char *)*param_2 + 1);\n          }\n          *param_1 = uVar10;\n          return;\n        }\n        *param_2 = (int)(pcVar5 + 1);\n        __n = FUN_001e6060();\n        if (((int)__n < 1) || (sVar6 = strlen((char *)*param_2), (int)sVar6 < (int)__n))\n        goto LAB_001e8d09;\n        FUN_001e64b0();\n        __dest = (void *)FUN_001fcf40(__n + 1);\n        memcpy(__dest,(void *)*param_2,__n);\n        *(undefined1 *)((int)__dest + __n) = 0;\n        pcVar5 = (char *)FUN_001e7170(__dest,*param_1);\n        if (pcVar5 == (char *)0x0) {\n          FUN_001e63d0();\n        }\n        else {\n          if (*pcVar5 != '\0') {\n            FUN_001e64b0();\n          }\n          free(pcVar5);\n        }\n        *param_2 = *param_2 + __n;\n        free(__dest);\n      }\n      else {\n        if (cVar1 != 'T') {\n          if (cVar1 == 'U') goto LAB_001e8d75;\n          goto LAB_001e8d09;\n        }\n        *param_2 = (int)(pcVar5 + 1);\n        iVar4 = FUN_001e7a30();\n        if (iVar4 == 0) goto LAB_001e8d09;\n      }\nLAB_001e8cbb:\n      FUN_001e6600();\n      if ((*(char *)*param_2 == '\0') || (*(char *)*param_2 == '_')) goto LAB_001e8d09;\n      FUN_001e64b0();\n    } while( true );\n  }" if (parenthesized_expression "(((uVar10 & 0x1000) != 0) && (*pcVar7 == 'X'))" ( (binary_expression "((uVar10 & 0x1000) != 0) && (*pcVar7 == 'X')" (parenthesized_expression "((uVar10 & 0x1000) != 0)" ( (binary_expression "(uVar10 & 0x1000) != 0" (parenthesized_expression "(uVar10 & 0x1000)" ( (binary_expression "uVar10 & 0x1000" identifier & number_literal) )) != number_literal) )) && (parenthesized_expression "(*pcVar7 == 'X')" ( (binary_expression "*pcVar7 == 'X'" (pointer_expression "*pcVar7" * identifier) == (char_literal "'X'" ' character ')) ))) )) (compound_statement "{\n    pcVar7 = strchr(pcVar5,0x3c);\n    if ((pcVar7 == (char *)0x0) || ((int)param_3 <= (int)pcVar7 - (int)pcVar5)) {\n      if (param_3 == 0) goto LAB_001e8bea;\n    }\n    else if (pcVar7 == pcVar5) goto LAB_001e8bea;\n    FUN_001e63d0();\n    pcVar5 = (char *)*param_2;\n    uVar10 = *param_1;\nLAB_001e8bea:\n    *param_2 = (int)(pcVar5 + param_3 + 1);\n    if (param_1[0xd] == 0xffffffff) {\n      param_1[0xd] = param_4[1] - *param_4;\n    }\n    *param_1 = uVar10 | 1;\n    FUN_001e64b0();\n    do {\n      pcVar5 = (char *)*param_2;\n      cVar1 = *pcVar5;\n      if (cVar1 == 'S') {\nLAB_001e8d75:\n        if ((cVar1 + 0xadU & 0xfd) != 0) goto LAB_001e8d09;\n        pcVar7 = pcVar5 + 1;\n        *param_2 = (int)pcVar7;\n        cVar2 = pcVar5[1];\n        if (cVar2 == 'N') {\n          FUN_001e64b0();\n          pcVar7 = (char *)*param_2;\n        }\n        else if (cVar2 != 'P') {\n          if (cVar2 == 'M') {\n            FUN_001e64b0();\n            *param_2 = *param_2 + 1;\n            goto LAB_001e8cbb;\n          }\n          goto LAB_001e8d09;\n        }\n        *param_2 = (int)(pcVar7 + 1);\n        uVar9 = (uint)(byte)pcVar7[1];\n        if (((&DAT_002bf340)[uVar9 * 2] & 4) == 0) goto LAB_001e8d09;\n        do {\n          DAT_003b6400 = (char)uVar9;\n          if (DAT_003b6400 != '\0') {\n            FUN_001e64b0();\n          }\n          iVar4 = *param_2;\n          *param_2 = iVar4 + 1;\n          uVar9 = (uint)*(byte *)(iVar4 + 1);\n        } while (((&DAT_002bf340)[uVar9 * 2] & 4) != 0);\n        if (cVar1 == 'U') {\n          FUN_001e64b0();\n        }\n      }\n      else if (cVar1 < 'T') {\n        if (cVar1 != 'A') {\nLAB_001e8d09:\n          FUN_001e64b0();\n          if (*(char *)*param_2 == '_') {\n            *param_2 = (int)((char *)*param_2 + 1);\n          }\n          *param_1 = uVar10;\n          return;\n        }\n        *param_2 = (int)(pcVar5 + 1);\n        __n = FUN_001e6060();\n        if (((int)__n < 1) || (sVar6 = strlen((char *)*param_2), (int)sVar6 < (int)__n))\n        goto LAB_001e8d09;\n        FUN_001e64b0();\n        __dest = (void *)FUN_001fcf40(__n + 1);\n        memcpy(__dest,(void *)*param_2,__n);\n        *(undefined1 *)((int)__dest + __n) = 0;\n        pcVar5 = (char *)FUN_001e7170(__dest,*param_1);\n        if (pcVar5 == (char *)0x0) {\n          FUN_001e63d0();\n        }\n        else {\n          if (*pcVar5 != '\0') {\n            FUN_001e64b0();\n          }\n          free(pcVar5);\n        }\n        *param_2 = *param_2 + __n;\n        free(__dest);\n      }\n      else {\n        if (cVar1 != 'T') {\n          if (cVar1 == 'U') goto LAB_001e8d75;\n          goto LAB_001e8d09;\n        }\n        *param_2 = (int)(pcVar5 + 1);\n        iVar4 = FUN_001e7a30();\n        if (iVar4 == 0) goto LAB_001e8d09;\n      }\nLAB_001e8cbb:\n      FUN_001e6600();\n      if ((*(char *)*param_2 == '\0') || (*(char *)*param_2 == '_')) goto LAB_001e8d09;\n      FUN_001e64b0();\n    } while( true );\n  }" { (expression_statement "pcVar7 = strchr(pcVar5,0x3c);" (assignment_expression "pcVar7 = strchr(pcVar5,0x3c)" identifier = (call_expression "strchr(pcVar5,0x3c)" identifier (argument_list "(pcVar5,0x3c)" ( identifier , number_literal )))) ;) (if_statement "if ((pcVar7 == (char *)0x0) || ((int)param_3 <= (int)pcVar7 - (int)pcVar5)) {\n      if (param_3 == 0) goto LAB_001e8bea;\n    }\n    else if (pcVar7 == pcVar5) goto LAB_001e8bea;" if (parenthesized_expression "((pcVar7 == (char *)0x0) || ((int)param_3 <= (int)pcVar7 - (int)pcVar5))" ( (binary_expression "(pcVar7 == (char *)0x0) || ((int)param_3 <= (int)pcVar7 - (int)pcVar5)" (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)) )) || (parenthesized_expression "((int)param_3 <= (int)pcVar7 - (int)pcVar5)" ( (binary_expression "(int)param_3 <= (int)pcVar7 - (int)pcVar5" (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier) <= (binary_expression "(int)pcVar7 - (int)pcVar5" (cast_expression "(int)pcVar7" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pcVar5" ( (type_descriptor "int" primitive_type) ) identifier))) ))) )) (compound_statement "{\n      if (param_3 == 0) goto LAB_001e8bea;\n    }" { (if_statement "if (param_3 == 0) goto LAB_001e8bea;" if (parenthesized_expression "(param_3 == 0)" ( (binary_expression "param_3 == 0" identifier == number_literal) )) (goto_statement "goto LAB_001e8bea;" goto statement_identifier ;)) }) (else_clause "else if (pcVar7 == pcVar5) goto LAB_001e8bea;" else (if_statement "if (pcVar7 == pcVar5) goto LAB_001e8bea;" if (parenthesized_expression "(pcVar7 == pcVar5)" ( (binary_expression "pcVar7 == pcVar5" identifier == identifier) )) (goto_statement "goto LAB_001e8bea;" goto statement_identifier ;)))) (expression_statement "FUN_001e63d0();" (call_expression "FUN_001e63d0()" identifier (argument_list "()" ( ))) ;) (expression_statement "pcVar5 = (char *)*param_2;" (assignment_expression "pcVar5 = (char *)*param_2" identifier = (cast_expression "(char *)*param_2" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_2" * identifier))) ;) (expression_statement "uVar10 = *param_1;" (assignment_expression "uVar10 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (labeled_statement "LAB_001e8bea:\n    *param_2 = (int)(pcVar5 + param_3 + 1);" statement_identifier : (expression_statement "*param_2 = (int)(pcVar5 + param_3 + 1);" (assignment_expression "*param_2 = (int)(pcVar5 + param_3 + 1)" (pointer_expression "*param_2" * identifier) = (cast_expression "(int)(pcVar5 + param_3 + 1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(pcVar5 + param_3 + 1)" ( (binary_expression "pcVar5 + param_3 + 1" (binary_expression "pcVar5 + param_3" identifier + identifier) + number_literal) )))) ;)) (if_statement "if (param_1[0xd] == 0xffffffff) {\n      param_1[0xd] = param_4[1] - *param_4;\n    }" if (parenthesized_expression "(param_1[0xd] == 0xffffffff)" ( (binary_expression "param_1[0xd] == 0xffffffff" (subscript_expression "param_1[0xd]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n      param_1[0xd] = param_4[1] - *param_4;\n    }" { (expression_statement "param_1[0xd] = param_4[1] - *param_4;" (assignment_expression "param_1[0xd] = param_4[1] - *param_4" (subscript_expression "param_1[0xd]" identifier [ number_literal ]) = (binary_expression "param_4[1] - *param_4" (subscript_expression "param_4[1]" identifier [ number_literal ]) - (pointer_expression "*param_4" * identifier))) ;) })) (expression_statement "*param_1 = uVar10 | 1;" (assignment_expression "*param_1 = uVar10 | 1" (pointer_expression "*param_1" * identifier) = (binary_expression "uVar10 | 1" identifier | number_literal)) ;) (expression_statement "FUN_001e64b0();" (call_expression "FUN_001e64b0()" identifier (argument_list "()" ( ))) ;) (do_statement "do {\n      pcVar5 = (char *)*param_2;\n      cVar1 = *pcVar5;\n      if (cVar1 == 'S') {\nLAB_001e8d75:\n        if ((cVar1 + 0xadU & 0xfd) != 0) goto LAB_001e8d09;\n        pcVar7 = pcVar5 + 1;\n        *param_2 = (int)pcVar7;\n        cVar2 = pcVar5[1];\n        if (cVar2 == 'N') {\n          FUN_001e64b0();\n          pcVar7 = (char *)*param_2;\n        }\n        else if (cVar2 != 'P') {\n          if (cVar2 == 'M') {\n            FUN_001e64b0();\n            *param_2 = *param_2 + 1;\n            goto LAB_001e8cbb;\n          }\n          goto LAB_001e8d09;\n        }\n        *param_2 = (int)(pcVar7 + 1);\n        uVar9 = (uint)(byte)pcVar7[1];\n        if (((&DAT_002bf340)[uVar9 * 2] & 4) == 0) goto LAB_001e8d09;\n        do {\n          DAT_003b6400 = (char)uVar9;\n          if (DAT_003b6400 != '\0') {\n            FUN_001e64b0();\n          }\n          iVar4 = *param_2;\n          *param_2 = iVar4 + 1;\n          uVar9 = (uint)*(byte *)(iVar4 + 1);\n        } while (((&DAT_002bf340)[uVar9 * 2] & 4) != 0);\n        if (cVar1 == 'U') {\n          FUN_001e64b0();\n        }\n      }\n      else if (cVar1 < 'T') {\n        if (cVar1 != 'A') {\nLAB_001e8d09:\n          FUN_001e64b0();\n          if (*(char *)*param_2 == '_') {\n            *param_2 = (int)((char *)*param_2 + 1);\n          }\n          *param_1 = uVar10;\n          return;\n        }\n        *param_2 = (int)(pcVar5 + 1);\n        __n = FUN_001e6060();\n        if (((int)__n < 1) || (sVar6 = strlen((char *)*param_2), (int)sVar6 < (int)__n))\n        goto LAB_001e8d09;\n        FUN_001e64b0();\n        __dest = (void *)FUN_001fcf40(__n + 1);\n        memcpy(__dest,(void *)*param_2,__n);\n        *(undefined1 *)((int)__dest + __n) = 0;\n        pcVar5 = (char *)FUN_001e7170(__dest,*param_1);\n        if (pcVar5 == (char *)0x0) {\n          FUN_001e63d0();\n        }\n        else {\n          if (*pcVar5 != '\0') {\n            FUN_001e64b0();\n          }\n          free(pcVar5);\n        }\n        *param_2 = *param_2 + __n;\n        free(__dest);\n      }\n      else {\n        if (cVar1 != 'T') {\n          if (cVar1 == 'U') goto LAB_001e8d75;\n          goto LAB_001e8d09;\n        }\n        *param_2 = (int)(pcVar5 + 1);\n        iVar4 = FUN_001e7a30();\n        if (iVar4 == 0) goto LAB_001e8d09;\n      }\nLAB_001e8cbb:\n      FUN_001e6600();\n      if ((*(char *)*param_2 == '\0') || (*(char *)*param_2 == '_')) goto LAB_001e8d09;\n      FUN_001e64b0();\n    } while( true );" do (compound_statement "{\n      pcVar5 = (char *)*param_2;\n      cVar1 = *pcVar5;\n      if (cVar1 == 'S') {\nLAB_001e8d75:\n        if ((cVar1 + 0xadU & 0xfd) != 0) goto LAB_001e8d09;\n        pcVar7 = pcVar5 + 1;\n        *param_2 = (int)pcVar7;\n        cVar2 = pcVar5[1];\n        if (cVar2 == 'N') {\n          FUN_001e64b0();\n          pcVar7 = (char *)*param_2;\n        }\n        else if (cVar2 != 'P') {\n          if (cVar2 == 'M') {\n            FUN_001e64b0();\n            *param_2 = *param_2 + 1;\n            goto LAB_001e8cbb;\n          }\n          goto LAB_001e8d09;\n        }\n        *param_2 = (int)(pcVar7 + 1);\n        uVar9 = (uint)(byte)pcVar7[1];\n        if (((&DAT_002bf340)[uVar9 * 2] & 4) == 0) goto LAB_001e8d09;\n        do {\n          DAT_003b6400 = (char)uVar9;\n          if (DAT_003b6400 != '\0') {\n            FUN_001e64b0();\n          }\n          iVar4 = *param_2;\n          *param_2 = iVar4 + 1;\n          uVar9 = (uint)*(byte *)(iVar4 + 1);\n        } while (((&DAT_002bf340)[uVar9 * 2] & 4) != 0);\n        if (cVar1 == 'U') {\n          FUN_001e64b0();\n        }\n      }\n      else if (cVar1 < 'T') {\n        if (cVar1 != 'A') {\nLAB_001e8d09:\n          FUN_001e64b0();\n          if (*(char *)*param_2 == '_') {\n            *param_2 = (int)((char *)*param_2 + 1);\n          }\n          *param_1 = uVar10;\n          return;\n        }\n        *param_2 = (int)(pcVar5 + 1);\n        __n = FUN_001e6060();\n        if (((int)__n < 1) || (sVar6 = strlen((char *)*param_2), (int)sVar6 < (int)__n))\n        goto LAB_001e8d09;\n        FUN_001e64b0();\n        __dest = (void *)FUN_001fcf40(__n + 1);\n        memcpy(__dest,(void *)*param_2,__n);\n        *(undefined1 *)((int)__dest + __n) = 0;\n        pcVar5 = (char *)FUN_001e7170(__dest,*param_1);\n        if (pcVar5 == (char *)0x0) {\n          FUN_001e63d0();\n        }\n        else {\n          if (*pcVar5 != '\0') {\n            FUN_001e64b0();\n          }\n          free(pcVar5);\n        }\n        *param_2 = *param_2 + __n;\n        free(__dest);\n      }\n      else {\n        if (cVar1 != 'T') {\n          if (cVar1 == 'U') goto LAB_001e8d75;\n          goto LAB_001e8d09;\n        }\n        *param_2 = (int)(pcVar5 + 1);\n        iVar4 = FUN_001e7a30();\n        if (iVar4 == 0) goto LAB_001e8d09;\n      }\nLAB_001e8cbb:\n      FUN_001e6600();\n      if ((*(char *)*param_2 == '\0') || (*(char *)*param_2 == '_')) goto LAB_001e8d09;\n      FUN_001e64b0();\n    }" { (expression_statement "pcVar5 = (char *)*param_2;" (assignment_expression "pcVar5 = (char *)*param_2" identifier = (cast_expression "(char *)*param_2" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_2" * identifier))) ;) (expression_statement "cVar1 = *pcVar5;" (assignment_expression "cVar1 = *pcVar5" identifier = (pointer_expression "*pcVar5" * identifier)) ;) (if_statement "if (cVar1 == 'S') {\nLAB_001e8d75:\n        if ((cVar1 + 0xadU & 0xfd) != 0) goto LAB_001e8d09;\n        pcVar7 = pcVar5 + 1;\n        *param_2 = (int)pcVar7;\n        cVar2 = pcVar5[1];\n        if (cVar2 == 'N') {\n          FUN_001e64b0();\n          pcVar7 = (char *)*param_2;\n        }\n        else if (cVar2 != 'P') {\n          if (cVar2 == 'M') {\n            FUN_001e64b0();\n            *param_2 = *param_2 + 1;\n            goto LAB_001e8cbb;\n          }\n          goto LAB_001e8d09;\n        }\n        *param_2 = (int)(pcVar7 + 1);\n        uVar9 = (uint)(byte)pcVar7[1];\n        if (((&DAT_002bf340)[uVar9 * 2] & 4) == 0) goto LAB_001e8d09;\n        do {\n          DAT_003b6400 = (char)uVar9;\n          if (DAT_003b6400 != '\0') {\n            FUN_001e64b0();\n          }\n          iVar4 = *param_2;\n          *param_2 = iVar4 + 1;\n          uVar9 = (uint)*(byte *)(iVar4 + 1);\n        } while (((&DAT_002bf340)[uVar9 * 2] & 4) != 0);\n        if (cVar1 == 'U') {\n          FUN_001e64b0();\n        }\n      }\n      else if (cVar1 < 'T') {\n        if (cVar1 != 'A') {\nLAB_001e8d09:\n          FUN_001e64b0();\n          if (*(char *)*param_2 == '_') {\n            *param_2 = (int)((char *)*param_2 + 1);\n          }\n          *param_1 = uVar10;\n          return;\n        }\n        *param_2 = (int)(pcVar5 + 1);\n        __n = FUN_001e6060();\n        if (((int)__n < 1) || (sVar6 = strlen((char *)*param_2), (int)sVar6 < (int)__n))\n        goto LAB_001e8d09;\n        FUN_001e64b0();\n        __dest = (void *)FUN_001fcf40(__n + 1);\n        memcpy(__dest,(void *)*param_2,__n);\n        *(undefined1 *)((int)__dest + __n) = 0;\n        pcVar5 = (char *)FUN_001e7170(__dest,*param_1);\n        if (pcVar5 == (char *)0x0) {\n          FUN_001e63d0();\n        }\n        else {\n          if (*pcVar5 != '\0') {\n            FUN_001e64b0();\n          }\n          free(pcVar5);\n        }\n        *param_2 = *param_2 + __n;\n        free(__dest);\n      }\n      else {\n        if (cVar1 != 'T') {\n          if (cVar1 == 'U') goto LAB_001e8d75;\n          goto LAB_001e8d09;\n        }\n        *param_2 = (int)(pcVar5 + 1);\n        iVar4 = FUN_001e7a30();\n        if (iVar4 == 0) goto LAB_001e8d09;\n      }" if (parenthesized_expression "(cVar1 == 'S')" ( (binary_expression "cVar1 == 'S'" identifier == (char_literal "'S'" ' character ')) )) (compound_statement "{\nLAB_001e8d75:\n        if ((cVar1 + 0xadU & 0xfd) != 0) goto LAB_001e8d09;\n        pcVar7 = pcVar5 + 1;\n        *param_2 = (int)pcVar7;\n        cVar2 = pcVar5[1];\n        if (cVar2 == 'N') {\n          FUN_001e64b0();\n          pcVar7 = (char *)*param_2;\n        }\n        else if (cVar2 != 'P') {\n          if (cVar2 == 'M') {\n            FUN_001e64b0();\n            *param_2 = *param_2 + 1;\n            goto LAB_001e8cbb;\n          }\n          goto LAB_001e8d09;\n        }\n        *param_2 = (int)(pcVar7 + 1);\n        uVar9 = (uint)(byte)pcVar7[1];\n        if (((&DAT_002bf340)[uVar9 * 2] & 4) == 0) goto LAB_001e8d09;\n        do {\n          DAT_003b6400 = (char)uVar9;\n          if (DAT_003b6400 != '\0') {\n            FUN_001e64b0();\n          }\n          iVar4 = *param_2;\n          *param_2 = iVar4 + 1;\n          uVar9 = (uint)*(byte *)(iVar4 + 1);\n        } while (((&DAT_002bf340)[uVar9 * 2] & 4) != 0);\n        if (cVar1 == 'U') {\n          FUN_001e64b0();\n        }\n      }" { (labeled_statement "LAB_001e8d75:\n        if ((cVar1 + 0xadU & 0xfd) != 0) goto LAB_001e8d09;" statement_identifier : (if_statement "if ((cVar1 + 0xadU & 0xfd) != 0) goto LAB_001e8d09;" if (parenthesized_expression "((cVar1 + 0xadU & 0xfd) != 0)" ( (binary_expression "(cVar1 + 0xadU & 0xfd) != 0" (parenthesized_expression "(cVar1 + 0xadU & 0xfd)" ( (binary_expression "cVar1 + 0xadU & 0xfd" (binary_expression "cVar1 + 0xadU" identifier + number_literal) & number_literal) )) != number_literal) )) (goto_statement "goto LAB_001e8d09;" goto statement_identifier ;))) (expression_statement "pcVar7 = pcVar5 + 1;" (assignment_expression "pcVar7 = pcVar5 + 1" identifier = (binary_expression "pcVar5 + 1" identifier + number_literal)) ;) (expression_statement "*param_2 = (int)pcVar7;" (assignment_expression "*param_2 = (int)pcVar7" (pointer_expression "*param_2" * identifier) = (cast_expression "(int)pcVar7" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "cVar2 = pcVar5[1];" (assignment_expression "cVar2 = pcVar5[1]" identifier = (subscript_expression "pcVar5[1]" identifier [ number_literal ])) ;) (if_statement "if (cVar2 == 'N') {\n          FUN_001e64b0();\n          pcVar7 = (char *)*param_2;\n        }\n        else if (cVar2 != 'P') {\n          if (cVar2 == 'M') {\n            FUN_001e64b0();\n            *param_2 = *param_2 + 1;\n            goto LAB_001e8cbb;\n          }\n          goto LAB_001e8d09;\n        }" if (parenthesized_expression "(cVar2 == 'N')" ( (binary_expression "cVar2 == 'N'" identifier == (char_literal "'N'" ' character ')) )) (compound_statement "{\n          FUN_001e64b0();\n          pcVar7 = (char *)*param_2;\n        }" { (expression_statement "FUN_001e64b0();" (call_expression "FUN_001e64b0()" identifier (argument_list "()" ( ))) ;) (expression_statement "pcVar7 = (char *)*param_2;" (assignment_expression "pcVar7 = (char *)*param_2" identifier = (cast_expression "(char *)*param_2" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_2" * identifier))) ;) }) (else_clause "else if (cVar2 != 'P') {\n          if (cVar2 == 'M') {\n            FUN_001e64b0();\n            *param_2 = *param_2 + 1;\n            goto LAB_001e8cbb;\n          }\n          goto LAB_001e8d09;\n        }" else (if_statement "if (cVar2 != 'P') {\n          if (cVar2 == 'M') {\n            FUN_001e64b0();\n            *param_2 = *param_2 + 1;\n            goto LAB_001e8cbb;\n          }\n          goto LAB_001e8d09;\n        }" if (parenthesized_expression "(cVar2 != 'P')" ( (binary_expression "cVar2 != 'P'" identifier != (char_literal "'P'" ' character ')) )) (compound_statement "{\n          if (cVar2 == 'M') {\n            FUN_001e64b0();\n            *param_2 = *param_2 + 1;\n            goto LAB_001e8cbb;\n          }\n          goto LAB_001e8d09;\n        }" { (if_statement "if (cVar2 == 'M') {\n            FUN_001e64b0();\n            *param_2 = *param_2 + 1;\n            goto LAB_001e8cbb;\n          }" if (parenthesized_expression "(cVar2 == 'M')" ( (binary_expression "cVar2 == 'M'" identifier == (char_literal "'M'" ' character ')) )) (compound_statement "{\n            FUN_001e64b0();\n            *param_2 = *param_2 + 1;\n            goto LAB_001e8cbb;\n          }" { (expression_statement "FUN_001e64b0();" (call_expression "FUN_001e64b0()" identifier (argument_list "()" ( ))) ;) (expression_statement "*param_2 = *param_2 + 1;" (assignment_expression "*param_2 = *param_2 + 1" (pointer_expression "*param_2" * identifier) = (binary_expression "*param_2 + 1" (pointer_expression "*param_2" * identifier) + number_literal)) ;) (goto_statement "goto LAB_001e8cbb;" goto statement_identifier ;) })) (goto_statement "goto LAB_001e8d09;" goto statement_identifier ;) })))) (expression_statement "*param_2 = (int)(pcVar7 + 1);" (assignment_expression "*param_2 = (int)(pcVar7 + 1)" (pointer_expression "*param_2" * identifier) = (cast_expression "(int)(pcVar7 + 1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(pcVar7 + 1)" ( (binary_expression "pcVar7 + 1" identifier + number_literal) )))) ;) (expression_statement "uVar9 = (uint)(byte)pcVar7[1];" (assignment_expression "uVar9 = (uint)(byte)pcVar7[1]" identifier = (cast_expression "(uint)(byte)pcVar7[1]" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(byte)pcVar7[1]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "pcVar7[1]" identifier [ number_literal ])))) ;) (if_statement "if (((&DAT_002bf340)[uVar9 * 2] & 4) == 0) goto LAB_001e8d09;" if (parenthesized_expression "(((&DAT_002bf340)[uVar9 * 2] & 4) == 0)" ( (binary_expression "((&DAT_002bf340)[uVar9 * 2] & 4) == 0" (parenthesized_expression "((&DAT_002bf340)[uVar9 * 2] & 4)" ( (binary_expression "(&DAT_002bf340)[uVar9 * 2] & 4" (subscript_expression "(&DAT_002bf340)[uVar9 * 2]" (parenthesized_expression "(&DAT_002bf340)" ( (pointer_expression "&DAT_002bf340" & identifier) )) [ (binary_expression "uVar9 * 2" identifier * number_literal) ]) & number_literal) )) == number_literal) )) (goto_statement "goto LAB_001e8d09;" goto statement_identifier ;)) (do_statement "do {\n          DAT_003b6400 = (char)uVar9;\n          if (DAT_003b6400 != '\0') {\n            FUN_001e64b0();\n          }\n          iVar4 = *param_2;\n          *param_2 = iVar4 + 1;\n          uVar9 = (uint)*(byte *)(iVar4 + 1);\n        } while (((&DAT_002bf340)[uVar9 * 2] & 4) != 0);" do (compound_statement "{\n          DAT_003b6400 = (char)uVar9;\n          if (DAT_003b6400 != '\0') {\n            FUN_001e64b0();\n          }\n          iVar4 = *param_2;\n          *param_2 = iVar4 + 1;\n          uVar9 = (uint)*(byte *)(iVar4 + 1);\n        }" { (expression_statement "DAT_003b6400 = (char)uVar9;" (assignment_expression "DAT_003b6400 = (char)uVar9" identifier = (cast_expression "(char)uVar9" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (if_statement "if (DAT_003b6400 != '\0') {\n            FUN_001e64b0();\n          }" if (parenthesized_expression "(DAT_003b6400 != '\0')" ( (binary_expression "DAT_003b6400 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n            FUN_001e64b0();\n          }" { (expression_statement "FUN_001e64b0();" (call_expression "FUN_001e64b0()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "iVar4 = *param_2;" (assignment_expression "iVar4 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (expression_statement "*param_2 = iVar4 + 1;" (assignment_expression "*param_2 = iVar4 + 1" (pointer_expression "*param_2" * identifier) = (binary_expression "iVar4 + 1" identifier + number_literal)) ;) (expression_statement "uVar9 = (uint)*(byte *)(iVar4 + 1);" (assignment_expression "uVar9 = (uint)*(byte *)(iVar4 + 1)" identifier = (binary_expression "(uint)*(byte *)(iVar4 + 1)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(iVar4 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 1)" ( (binary_expression "iVar4 + 1" identifier + number_literal) ))))) ;) }) while (parenthesized_expression "(((&DAT_002bf340)[uVar9 * 2] & 4) != 0)" ( (binary_expression "((&DAT_002bf340)[uVar9 * 2] & 4) != 0" (parenthesized_expression "((&DAT_002bf340)[uVar9 * 2] & 4)" ( (binary_expression "(&DAT_002bf340)[uVar9 * 2] & 4" (subscript_expression "(&DAT_002bf340)[uVar9 * 2]" (parenthesized_expression "(&DAT_002bf340)" ( (pointer_expression "&DAT_002bf340" & identifier) )) [ (binary_expression "uVar9 * 2" identifier * number_literal) ]) & number_literal) )) != number_literal) )) ;) (if_statement "if (cVar1 == 'U') {\n          FUN_001e64b0();\n        }" if (parenthesized_expression "(cVar1 == 'U')" ( (binary_expression "cVar1 == 'U'" identifier == (char_literal "'U'" ' character ')) )) (compound_statement "{\n          FUN_001e64b0();\n        }" { (expression_statement "FUN_001e64b0();" (call_expression "FUN_001e64b0()" identifier (argument_list "()" ( ))) ;) })) }) (else_clause "else if (cVar1 < 'T') {\n        if (cVar1 != 'A') {\nLAB_001e8d09:\n          FUN_001e64b0();\n          if (*(char *)*param_2 == '_') {\n            *param_2 = (int)((char *)*param_2 + 1);\n          }\n          *param_1 = uVar10;\n          return;\n        }\n        *param_2 = (int)(pcVar5 + 1);\n        __n = FUN_001e6060();\n        if (((int)__n < 1) || (sVar6 = strlen((char *)*param_2), (int)sVar6 < (int)__n))\n        goto LAB_001e8d09;\n        FUN_001e64b0();\n        __dest = (void *)FUN_001fcf40(__n + 1);\n        memcpy(__dest,(void *)*param_2,__n);\n        *(undefined1 *)((int)__dest + __n) = 0;\n        pcVar5 = (char *)FUN_001e7170(__dest,*param_1);\n        if (pcVar5 == (char *)0x0) {\n          FUN_001e63d0();\n        }\n        else {\n          if (*pcVar5 != '\0') {\n            FUN_001e64b0();\n          }\n          free(pcVar5);\n        }\n        *param_2 = *param_2 + __n;\n        free(__dest);\n      }\n      else {\n        if (cVar1 != 'T') {\n          if (cVar1 == 'U') goto LAB_001e8d75;\n          goto LAB_001e8d09;\n        }\n        *param_2 = (int)(pcVar5 + 1);\n        iVar4 = FUN_001e7a30();\n        if (iVar4 == 0) goto LAB_001e8d09;\n      }" else (if_statement "if (cVar1 < 'T') {\n        if (cVar1 != 'A') {\nLAB_001e8d09:\n          FUN_001e64b0();\n          if (*(char *)*param_2 == '_') {\n            *param_2 = (int)((char *)*param_2 + 1);\n          }\n          *param_1 = uVar10;\n          return;\n        }\n        *param_2 = (int)(pcVar5 + 1);\n        __n = FUN_001e6060();\n        if (((int)__n < 1) || (sVar6 = strlen((char *)*param_2), (int)sVar6 < (int)__n))\n        goto LAB_001e8d09;\n        FUN_001e64b0();\n        __dest = (void *)FUN_001fcf40(__n + 1);\n        memcpy(__dest,(void *)*param_2,__n);\n        *(undefined1 *)((int)__dest + __n) = 0;\n        pcVar5 = (char *)FUN_001e7170(__dest,*param_1);\n        if (pcVar5 == (char *)0x0) {\n          FUN_001e63d0();\n        }\n        else {\n          if (*pcVar5 != '\0') {\n            FUN_001e64b0();\n          }\n          free(pcVar5);\n        }\n        *param_2 = *param_2 + __n;\n        free(__dest);\n      }\n      else {\n        if (cVar1 != 'T') {\n          if (cVar1 == 'U') goto LAB_001e8d75;\n          goto LAB_001e8d09;\n        }\n        *param_2 = (int)(pcVar5 + 1);\n        iVar4 = FUN_001e7a30();\n        if (iVar4 == 0) goto LAB_001e8d09;\n      }" if (parenthesized_expression "(cVar1 < 'T')" ( (binary_expression "cVar1 < 'T'" identifier < (char_literal "'T'" ' character ')) )) (compound_statement "{\n        if (cVar1 != 'A') {\nLAB_001e8d09:\n          FUN_001e64b0();\n          if (*(char *)*param_2 == '_') {\n            *param_2 = (int)((char *)*param_2 + 1);\n          }\n          *param_1 = uVar10;\n          return;\n        }\n        *param_2 = (int)(pcVar5 + 1);\n        __n = FUN_001e6060();\n        if (((int)__n < 1) || (sVar6 = strlen((char *)*param_2), (int)sVar6 < (int)__n))\n        goto LAB_001e8d09;\n        FUN_001e64b0();\n        __dest = (void *)FUN_001fcf40(__n + 1);\n        memcpy(__dest,(void *)*param_2,__n);\n        *(undefined1 *)((int)__dest + __n) = 0;\n        pcVar5 = (char *)FUN_001e7170(__dest,*param_1);\n        if (pcVar5 == (char *)0x0) {\n          FUN_001e63d0();\n        }\n        else {\n          if (*pcVar5 != '\0') {\n            FUN_001e64b0();\n          }\n          free(pcVar5);\n        }\n        *param_2 = *param_2 + __n;\n        free(__dest);\n      }" { (if_statement "if (cVar1 != 'A') {\nLAB_001e8d09:\n          FUN_001e64b0();\n          if (*(char *)*param_2 == '_') {\n            *param_2 = (int)((char *)*param_2 + 1);\n          }\n          *param_1 = uVar10;\n          return;\n        }" if (parenthesized_expression "(cVar1 != 'A')" ( (binary_expression "cVar1 != 'A'" identifier != (char_literal "'A'" ' character ')) )) (compound_statement "{\nLAB_001e8d09:\n          FUN_001e64b0();\n          if (*(char *)*param_2 == '_') {\n            *param_2 = (int)((char *)*param_2 + 1);\n          }\n          *param_1 = uVar10;\n          return;\n        }" { (labeled_statement "LAB_001e8d09:\n          FUN_001e64b0();" statement_identifier : (expression_statement "FUN_001e64b0();" (call_expression "FUN_001e64b0()" identifier (argument_list "()" ( ))) ;)) (if_statement "if (*(char *)*param_2 == '_') {\n            *param_2 = (int)((char *)*param_2 + 1);\n          }" if (parenthesized_expression "(*(char *)*param_2 == '_')" ( (binary_expression "*(char *)*param_2 == '_'" (pointer_expression "*(char *)*param_2" * (cast_expression "(char *)*param_2" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_2" * identifier))) == (char_literal "'_'" ' character ')) )) (compound_statement "{\n            *param_2 = (int)((char *)*param_2 + 1);\n          }" { (expression_statement "*param_2 = (int)((char *)*param_2 + 1);" (assignment_expression "*param_2 = (int)((char *)*param_2 + 1)" (pointer_expression "*param_2" * identifier) = (cast_expression "(int)((char *)*param_2 + 1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((char *)*param_2 + 1)" ( (binary_expression "(char *)*param_2 + 1" (cast_expression "(char *)*param_2" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_2" * identifier)) + number_literal) )))) ;) })) (expression_statement "*param_1 = uVar10;" (assignment_expression "*param_1 = uVar10" (pointer_expression "*param_1" * identifier) = identifier) ;) (return_statement "return;" return ;) })) (expression_statement "*param_2 = (int)(pcVar5 + 1);" (assignment_expression "*param_2 = (int)(pcVar5 + 1)" (pointer_expression "*param_2" * identifier) = (cast_expression "(int)(pcVar5 + 1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(pcVar5 + 1)" ( (binary_expression "pcVar5 + 1" identifier + number_literal) )))) ;) (expression_statement "__n = FUN_001e6060();" (assignment_expression "__n = FUN_001e6060()" identifier = (call_expression "FUN_001e6060()" identifier (argument_list "()" ( )))) ;) (if_statement "if (((int)__n < 1) || (sVar6 = strlen((char *)*param_2), (int)sVar6 < (int)__n))\n        goto LAB_001e8d09;" if (parenthesized_expression "(((int)__n < 1) || (sVar6 = strlen((char *)*param_2), (int)sVar6 < (int)__n))" ( (binary_expression "((int)__n < 1) || (sVar6 = strlen((char *)*param_2), (int)sVar6 < (int)__n)" (parenthesized_expression "((int)__n < 1)" ( (binary_expression "(int)__n < 1" (cast_expression "(int)__n" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) || (parenthesized_expression "(sVar6 = strlen((char *)*param_2), (int)sVar6 < (int)__n)" ( (comma_expression "sVar6 = strlen((char *)*param_2), (int)sVar6 < (int)__n" (assignment_expression "sVar6 = strlen((char *)*param_2)" identifier = (call_expression "strlen((char *)*param_2)" identifier (argument_list "((char *)*param_2)" ( (cast_expression "(char *)*param_2" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_2" * identifier)) )))) , (binary_expression "(int)sVar6 < (int)__n" (cast_expression "(int)sVar6" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)__n" ( (type_descriptor "int" primitive_type) ) identifier))) ))) )) (goto_statement "goto LAB_001e8d09;" goto statement_identifier ;)) (expression_statement "FUN_001e64b0();" (call_expression "FUN_001e64b0()" identifier (argument_list "()" ( ))) ;) (expression_statement "__dest = (void *)FUN_001fcf40(__n + 1);" (assignment_expression "__dest = (void *)FUN_001fcf40(__n + 1)" identifier = (cast_expression "(void *)FUN_001fcf40(__n + 1)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_001fcf40(__n + 1)" identifier (argument_list "(__n + 1)" ( (binary_expression "__n + 1" identifier + number_literal) ))))) ;) (expression_statement "memcpy(__dest,(void *)*param_2,__n);" (call_expression "memcpy(__dest,(void *)*param_2,__n)" identifier (argument_list "(__dest,(void *)*param_2,__n)" ( identifier , (cast_expression "(void *)*param_2" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_2" * identifier)) , identifier ))) ;) (expression_statement "*(undefined1 *)((int)__dest + __n) = 0;" (assignment_expression "*(undefined1 *)((int)__dest + __n) = 0" (pointer_expression "*(undefined1 *)((int)__dest + __n)" * (cast_expression "(undefined1 *)((int)__dest + __n)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)__dest + __n)" ( (binary_expression "(int)__dest + __n" (cast_expression "(int)__dest" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) = number_literal) ;) (expression_statement "pcVar5 = (char *)FUN_001e7170(__dest,*param_1);" (assignment_expression "pcVar5 = (char *)FUN_001e7170(__dest,*param_1)" identifier = (cast_expression "(char *)FUN_001e7170(__dest,*param_1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_001e7170(__dest,*param_1)" identifier (argument_list "(__dest,*param_1)" ( identifier , (pointer_expression "*param_1" * identifier) ))))) ;) (if_statement "if (pcVar5 == (char *)0x0) {\n          FUN_001e63d0();\n        }\n        else {\n          if (*pcVar5 != '\0') {\n            FUN_001e64b0();\n          }\n          free(pcVar5);\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          FUN_001e63d0();\n        }" { (expression_statement "FUN_001e63d0();" (call_expression "FUN_001e63d0()" identifier (argument_list "()" ( ))) ;) }) (else_clause "else {\n          if (*pcVar5 != '\0') {\n            FUN_001e64b0();\n          }\n          free(pcVar5);\n        }" else (compound_statement "{\n          if (*pcVar5 != '\0') {\n            FUN_001e64b0();\n          }\n          free(pcVar5);\n        }" { (if_statement "if (*pcVar5 != '\0') {\n            FUN_001e64b0();\n          }" if (parenthesized_expression "(*pcVar5 != '\0')" ( (binary_expression "*pcVar5 != '\0'" (pointer_expression "*pcVar5" * identifier) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n            FUN_001e64b0();\n          }" { (expression_statement "FUN_001e64b0();" (call_expression "FUN_001e64b0()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "free(pcVar5);" (call_expression "free(pcVar5)" identifier (argument_list "(pcVar5)" ( identifier ))) ;) }))) (expression_statement "*param_2 = *param_2 + __n;" (assignment_expression "*param_2 = *param_2 + __n" (pointer_expression "*param_2" * identifier) = (binary_expression "*param_2 + __n" (pointer_expression "*param_2" * identifier) + identifier)) ;) (expression_statement "free(__dest);" (call_expression "free(__dest)" identifier (argument_list "(__dest)" ( identifier ))) ;) }) (else_clause "else {\n        if (cVar1 != 'T') {\n          if (cVar1 == 'U') goto LAB_001e8d75;\n          goto LAB_001e8d09;\n        }\n        *param_2 = (int)(pcVar5 + 1);\n        iVar4 = FUN_001e7a30();\n        if (iVar4 == 0) goto LAB_001e8d09;\n      }" else (compound_statement "{\n        if (cVar1 != 'T') {\n          if (cVar1 == 'U') goto LAB_001e8d75;\n          goto LAB_001e8d09;\n        }\n        *param_2 = (int)(pcVar5 + 1);\n        iVar4 = FUN_001e7a30();\n        if (iVar4 == 0) goto LAB_001e8d09;\n      }" { (if_statement "if (cVar1 != 'T') {\n          if (cVar1 == 'U') goto LAB_001e8d75;\n          goto LAB_001e8d09;\n        }" if (parenthesized_expression "(cVar1 != 'T')" ( (binary_expression "cVar1 != 'T'" identifier != (char_literal "'T'" ' character ')) )) (compound_statement "{\n          if (cVar1 == 'U') goto LAB_001e8d75;\n          goto LAB_001e8d09;\n        }" { (if_statement "if (cVar1 == 'U') goto LAB_001e8d75;" if (parenthesized_expression "(cVar1 == 'U')" ( (binary_expression "cVar1 == 'U'" identifier == (char_literal "'U'" ' character ')) )) (goto_statement "goto LAB_001e8d75;" goto statement_identifier ;)) (goto_statement "goto LAB_001e8d09;" goto statement_identifier ;) })) (expression_statement "*param_2 = (int)(pcVar5 + 1);" (assignment_expression "*param_2 = (int)(pcVar5 + 1)" (pointer_expression "*param_2" * identifier) = (cast_expression "(int)(pcVar5 + 1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(pcVar5 + 1)" ( (binary_expression "pcVar5 + 1" identifier + number_literal) )))) ;) (expression_statement "iVar4 = FUN_001e7a30();" (assignment_expression "iVar4 = FUN_001e7a30()" identifier = (call_expression "FUN_001e7a30()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar4 == 0) goto LAB_001e8d09;" if (parenthesized_expression "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) )) (goto_statement "goto LAB_001e8d09;" goto statement_identifier ;)) }))))) (labeled_statement "LAB_001e8cbb:\n      FUN_001e6600();" statement_identifier : (expression_statement "FUN_001e6600();" (call_expression "FUN_001e6600()" identifier (argument_list "()" ( ))) ;)) (if_statement "if ((*(char *)*param_2 == '\0') || (*(char *)*param_2 == '_')) goto LAB_001e8d09;" if (parenthesized_expression "((*(char *)*param_2 == '\0') || (*(char *)*param_2 == '_'))" ( (binary_expression "(*(char *)*param_2 == '\0') || (*(char *)*param_2 == '_')" (parenthesized_expression "(*(char *)*param_2 == '\0')" ( (binary_expression "*(char *)*param_2 == '\0'" (pointer_expression "*(char *)*param_2" * (cast_expression "(char *)*param_2" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_2" * identifier))) == (char_literal "'\0'" ' escape_sequence ')) )) || (parenthesized_expression "(*(char *)*param_2 == '_')" ( (binary_expression "*(char *)*param_2 == '_'" (pointer_expression "*(char *)*param_2" * (cast_expression "(char *)*param_2" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_2" * identifier))) == (char_literal "'_'" ' character ')) ))) )) (goto_statement "goto LAB_001e8d09;" goto statement_identifier ;)) (expression_statement "FUN_001e64b0();" (call_expression "FUN_001e64b0()" identifier (argument_list "()" ( ))) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })) (if_statement "if (((uVar10 & 0x1800) == 0) || (pcVar3 = strstr(pcVar5,"__pt__"), pcVar3 == (char *)0x0)) {\nLAB_001e88a9:\n    if ((uVar10 & 0x2100) != 0) {\n      pcVar3 = strstr(pcVar5,"__tm__");\n      if (((pcVar3 == (char *)0x0) && (pcVar3 = strstr(pcVar5,"__ps__"), pcVar3 == (char *)0x0)) &&\n         (pcVar3 = strstr(pcVar5,"__pt__"), pcVar3 == (char *)0x0)) {\n        pcVar3 = strstr(pcVar5,"__S");\n        if (pcVar3 == (char *)0x0) goto LAB_001e88f1;\n        local_38 = pcVar3 + 3;\n      }\n      else {\n        local_38 = pcVar3 + 6;\n      }\n      iVar4 = FUN_001e6060();\n      if (((iVar4 != -1) && (pcVar7 == local_38 + iVar4)) && (*local_38 == '_')) goto LAB_001e8979;\n    }\n  }\n  else {\n    local_38 = pcVar3 + 6;\n    iVar4 = FUN_001e6060();\n    if (iVar4 != -1) {\n      if ((pcVar7 != local_38 + iVar4) || (*local_38 != '_')) {\n        uVar10 = *param_1;\n        goto LAB_001e88a9;\n      }\nLAB_001e8979:\n      local_38 = local_38 + 1;\n      if (pcVar3 != (char *)*param_2) {\n        FUN_001e63d0();\n      }\n      if (param_1[0xd] == 0xffffffff) {\n        param_1[0xd] = param_4[1] - *param_4;\n      }\n      uVar10 = *param_1;\n      *param_1 = uVar10 | 1;\n      FUN_001e64b0();\n      while (local_38 < pcVar7) {\n        if (*local_38 != 'L') {\n          if (*local_38 == 'X') {\n            local_38 = local_38 + 1;\n            iVar4 = FUN_001e7a30();\n            if (iVar4 != 0) {\n              FUN_001e64b0();\n              FUN_001e6600();\n              if (local_28 != (void *)0x0) {\n                free(local_28);\n                local_28 = (void *)0x0;\n              }\n              FUN_001e64b0();\n              if (*local_38 == 'L') goto LAB_001e8a99;\n            }\n          }\n          else {\n            iVar4 = FUN_001e7a30();\n            if (iVar4 != 0) {\n              *param_1 = uVar10;\n              return;\n            }\n          }\nLAB_001e8e50:\n          if (local_38 < pcVar7) goto LAB_001e8e86;\n          break;\n        }\nLAB_001e8a99:\n        local_38 = local_38 + 1;\n        iVar4 = FUN_001e6540();\n        if (iVar4 == 0) goto LAB_001e8e50;\n        FUN_001e6600();\n        FUN_001e64b0();\n      }\n      param_4[1] = param_4[1] + -1;\nLAB_001e8e86:\n      FUN_001e64b0();\n      *param_1 = uVar10;\n      pbVar8 = (byte *)*param_2;\n      goto LAB_001e895e;\n    }\n  }" if (parenthesized_expression "(((uVar10 & 0x1800) == 0) || (pcVar3 = strstr(pcVar5,"__pt__"), pcVar3 == (char *)0x0))" ( (binary_expression "((uVar10 & 0x1800) == 0) || (pcVar3 = strstr(pcVar5,"__pt__"), pcVar3 == (char *)0x0)" (parenthesized_expression "((uVar10 & 0x1800) == 0)" ( (binary_expression "(uVar10 & 0x1800) == 0" (parenthesized_expression "(uVar10 & 0x1800)" ( (binary_expression "uVar10 & 0x1800" identifier & number_literal) )) == number_literal) )) || (parenthesized_expression "(pcVar3 = strstr(pcVar5,"__pt__"), pcVar3 == (char *)0x0)" ( (comma_expression "pcVar3 = strstr(pcVar5,"__pt__"), pcVar3 == (char *)0x0" (assignment_expression "pcVar3 = strstr(pcVar5,"__pt__")" identifier = (call_expression "strstr(pcVar5,"__pt__")" identifier (argument_list "(pcVar5,"__pt__")" ( identifier , (string_literal ""__pt__"" " string_content ") )))) , (binary_expression "pcVar3 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (compound_statement "{\nLAB_001e88a9:\n    if ((uVar10 & 0x2100) != 0) {\n      pcVar3 = strstr(pcVar5,"__tm__");\n      if (((pcVar3 == (char *)0x0) && (pcVar3 = strstr(pcVar5,"__ps__"), pcVar3 == (char *)0x0)) &&\n         (pcVar3 = strstr(pcVar5,"__pt__"), pcVar3 == (char *)0x0)) {\n        pcVar3 = strstr(pcVar5,"__S");\n        if (pcVar3 == (char *)0x0) goto LAB_001e88f1;\n        local_38 = pcVar3 + 3;\n      }\n      else {\n        local_38 = pcVar3 + 6;\n      }\n      iVar4 = FUN_001e6060();\n      if (((iVar4 != -1) && (pcVar7 == local_38 + iVar4)) && (*local_38 == '_')) goto LAB_001e8979;\n    }\n  }" { (labeled_statement "LAB_001e88a9:\n    if ((uVar10 & 0x2100) != 0) {\n      pcVar3 = strstr(pcVar5,"__tm__");\n      if (((pcVar3 == (char *)0x0) && (pcVar3 = strstr(pcVar5,"__ps__"), pcVar3 == (char *)0x0)) &&\n         (pcVar3 = strstr(pcVar5,"__pt__"), pcVar3 == (char *)0x0)) {\n        pcVar3 = strstr(pcVar5,"__S");\n        if (pcVar3 == (char *)0x0) goto LAB_001e88f1;\n        local_38 = pcVar3 + 3;\n      }\n      else {\n        local_38 = pcVar3 + 6;\n      }\n      iVar4 = FUN_001e6060();\n      if (((iVar4 != -1) && (pcVar7 == local_38 + iVar4)) && (*local_38 == '_')) goto LAB_001e8979;\n    }" statement_identifier : (if_statement "if ((uVar10 & 0x2100) != 0) {\n      pcVar3 = strstr(pcVar5,"__tm__");\n      if (((pcVar3 == (char *)0x0) && (pcVar3 = strstr(pcVar5,"__ps__"), pcVar3 == (char *)0x0)) &&\n         (pcVar3 = strstr(pcVar5,"__pt__"), pcVar3 == (char *)0x0)) {\n        pcVar3 = strstr(pcVar5,"__S");\n        if (pcVar3 == (char *)0x0) goto LAB_001e88f1;\n        local_38 = pcVar3 + 3;\n      }\n      else {\n        local_38 = pcVar3 + 6;\n      }\n      iVar4 = FUN_001e6060();\n      if (((iVar4 != -1) && (pcVar7 == local_38 + iVar4)) && (*local_38 == '_')) goto LAB_001e8979;\n    }" if (parenthesized_expression "((uVar10 & 0x2100) != 0)" ( (binary_expression "(uVar10 & 0x2100) != 0" (parenthesized_expression "(uVar10 & 0x2100)" ( (binary_expression "uVar10 & 0x2100" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n      pcVar3 = strstr(pcVar5,"__tm__");\n      if (((pcVar3 == (char *)0x0) && (pcVar3 = strstr(pcVar5,"__ps__"), pcVar3 == (char *)0x0)) &&\n         (pcVar3 = strstr(pcVar5,"__pt__"), pcVar3 == (char *)0x0)) {\n        pcVar3 = strstr(pcVar5,"__S");\n        if (pcVar3 == (char *)0x0) goto LAB_001e88f1;\n        local_38 = pcVar3 + 3;\n      }\n      else {\n        local_38 = pcVar3 + 6;\n      }\n      iVar4 = FUN_001e6060();\n      if (((iVar4 != -1) && (pcVar7 == local_38 + iVar4)) && (*local_38 == '_')) goto LAB_001e8979;\n    }" { (expression_statement "pcVar3 = strstr(pcVar5,"__tm__");" (assignment_expression "pcVar3 = strstr(pcVar5,"__tm__")" identifier = (call_expression "strstr(pcVar5,"__tm__")" identifier (argument_list "(pcVar5,"__tm__")" ( identifier , (string_literal ""__tm__"" " string_content ") )))) ;) (if_statement "if (((pcVar3 == (char *)0x0) && (pcVar3 = strstr(pcVar5,"__ps__"), pcVar3 == (char *)0x0)) &&\n         (pcVar3 = strstr(pcVar5,"__pt__"), pcVar3 == (char *)0x0)) {\n        pcVar3 = strstr(pcVar5,"__S");\n        if (pcVar3 == (char *)0x0) goto LAB_001e88f1;\n        local_38 = pcVar3 + 3;\n      }\n      else {\n        local_38 = pcVar3 + 6;\n      }" if (parenthesized_expression "(((pcVar3 == (char *)0x0) && (pcVar3 = strstr(pcVar5,"__ps__"), pcVar3 == (char *)0x0)) &&\n         (pcVar3 = strstr(pcVar5,"__pt__"), pcVar3 == (char *)0x0))" ( (binary_expression "((pcVar3 == (char *)0x0) && (pcVar3 = strstr(pcVar5,"__ps__"), pcVar3 == (char *)0x0)) &&\n         (pcVar3 = strstr(pcVar5,"__pt__"), pcVar3 == (char *)0x0)" (parenthesized_expression "((pcVar3 == (char *)0x0) && (pcVar3 = strstr(pcVar5,"__ps__"), pcVar3 == (char *)0x0))" ( (binary_expression "(pcVar3 == (char *)0x0) && (pcVar3 = strstr(pcVar5,"__ps__"), pcVar3 == (char *)0x0)" (parenthesized_expression "(pcVar3 == (char *)0x0)" ( (binary_expression "pcVar3 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(pcVar3 = strstr(pcVar5,"__ps__"), pcVar3 == (char *)0x0)" ( (comma_expression "pcVar3 = strstr(pcVar5,"__ps__"), pcVar3 == (char *)0x0" (assignment_expression "pcVar3 = strstr(pcVar5,"__ps__")" identifier = (call_expression "strstr(pcVar5,"__ps__")" identifier (argument_list "(pcVar5,"__ps__")" ( identifier , (string_literal ""__ps__"" " string_content ") )))) , (binary_expression "pcVar3 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) && (parenthesized_expression "(pcVar3 = strstr(pcVar5,"__pt__"), pcVar3 == (char *)0x0)" ( (comma_expression "pcVar3 = strstr(pcVar5,"__pt__"), pcVar3 == (char *)0x0" (assignment_expression "pcVar3 = strstr(pcVar5,"__pt__")" identifier = (call_expression "strstr(pcVar5,"__pt__")" identifier (argument_list "(pcVar5,"__pt__")" ( identifier , (string_literal ""__pt__"" " string_content ") )))) , (binary_expression "pcVar3 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (compound_statement "{\n        pcVar3 = strstr(pcVar5,"__S");\n        if (pcVar3 == (char *)0x0) goto LAB_001e88f1;\n        local_38 = pcVar3 + 3;\n      }" { (expression_statement "pcVar3 = strstr(pcVar5,"__S");" (assignment_expression "pcVar3 = strstr(pcVar5,"__S")" identifier = (call_expression "strstr(pcVar5,"__S")" identifier (argument_list "(pcVar5,"__S")" ( identifier , (string_literal ""__S"" " string_content ") )))) ;) (if_statement "if (pcVar3 == (char *)0x0) goto LAB_001e88f1;" if (parenthesized_expression "(pcVar3 == (char *)0x0)" ( (binary_expression "pcVar3 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_001e88f1;" goto statement_identifier ;)) (expression_statement "local_38 = pcVar3 + 3;" (assignment_expression "local_38 = pcVar3 + 3" identifier = (binary_expression "pcVar3 + 3" identifier + number_literal)) ;) }) (else_clause "else {\n        local_38 = pcVar3 + 6;\n      }" else (compound_statement "{\n        local_38 = pcVar3 + 6;\n      }" { (expression_statement "local_38 = pcVar3 + 6;" (assignment_expression "local_38 = pcVar3 + 6" identifier = (binary_expression "pcVar3 + 6" identifier + number_literal)) ;) }))) (expression_statement "iVar4 = FUN_001e6060();" (assignment_expression "iVar4 = FUN_001e6060()" identifier = (call_expression "FUN_001e6060()" identifier (argument_list "()" ( )))) ;) (if_statement "if (((iVar4 != -1) && (pcVar7 == local_38 + iVar4)) && (*local_38 == '_')) goto LAB_001e8979;" if (parenthesized_expression "(((iVar4 != -1) && (pcVar7 == local_38 + iVar4)) && (*local_38 == '_'))" ( (binary_expression "((iVar4 != -1) && (pcVar7 == local_38 + iVar4)) && (*local_38 == '_')" (parenthesized_expression "((iVar4 != -1) && (pcVar7 == local_38 + iVar4))" ( (binary_expression "(iVar4 != -1) && (pcVar7 == local_38 + iVar4)" (parenthesized_expression "(iVar4 != -1)" ( (binary_expression "iVar4 != -1" identifier != number_literal) )) && (parenthesized_expression "(pcVar7 == local_38 + iVar4)" ( (binary_expression "pcVar7 == local_38 + iVar4" identifier == (binary_expression "local_38 + iVar4" identifier + identifier)) ))) )) && (parenthesized_expression "(*local_38 == '_')" ( (binary_expression "*local_38 == '_'" (pointer_expression "*local_38" * identifier) == (char_literal "'_'" ' character ')) ))) )) (goto_statement "goto LAB_001e8979;" goto statement_identifier ;)) }))) }) (else_clause "else {\n    local_38 = pcVar3 + 6;\n    iVar4 = FUN_001e6060();\n    if (iVar4 != -1) {\n      if ((pcVar7 != local_38 + iVar4) || (*local_38 != '_')) {\n        uVar10 = *param_1;\n        goto LAB_001e88a9;\n      }\nLAB_001e8979:\n      local_38 = local_38 + 1;\n      if (pcVar3 != (char *)*param_2) {\n        FUN_001e63d0();\n      }\n      if (param_1[0xd] == 0xffffffff) {\n        param_1[0xd] = param_4[1] - *param_4;\n      }\n      uVar10 = *param_1;\n      *param_1 = uVar10 | 1;\n      FUN_001e64b0();\n      while (local_38 < pcVar7) {\n        if (*local_38 != 'L') {\n          if (*local_38 == 'X') {\n            local_38 = local_38 + 1;\n            iVar4 = FUN_001e7a30();\n            if (iVar4 != 0) {\n              FUN_001e64b0();\n              FUN_001e6600();\n              if (local_28 != (void *)0x0) {\n                free(local_28);\n                local_28 = (void *)0x0;\n              }\n              FUN_001e64b0();\n              if (*local_38 == 'L') goto LAB_001e8a99;\n            }\n          }\n          else {\n            iVar4 = FUN_001e7a30();\n            if (iVar4 != 0) {\n              *param_1 = uVar10;\n              return;\n            }\n          }\nLAB_001e8e50:\n          if (local_38 < pcVar7) goto LAB_001e8e86;\n          break;\n        }\nLAB_001e8a99:\n        local_38 = local_38 + 1;\n        iVar4 = FUN_001e6540();\n        if (iVar4 == 0) goto LAB_001e8e50;\n        FUN_001e6600();\n        FUN_001e64b0();\n      }\n      param_4[1] = param_4[1] + -1;\nLAB_001e8e86:\n      FUN_001e64b0();\n      *param_1 = uVar10;\n      pbVar8 = (byte *)*param_2;\n      goto LAB_001e895e;\n    }\n  }" else (compound_statement "{\n    local_38 = pcVar3 + 6;\n    iVar4 = FUN_001e6060();\n    if (iVar4 != -1) {\n      if ((pcVar7 != local_38 + iVar4) || (*local_38 != '_')) {\n        uVar10 = *param_1;\n        goto LAB_001e88a9;\n      }\nLAB_001e8979:\n      local_38 = local_38 + 1;\n      if (pcVar3 != (char *)*param_2) {\n        FUN_001e63d0();\n      }\n      if (param_1[0xd] == 0xffffffff) {\n        param_1[0xd] = param_4[1] - *param_4;\n      }\n      uVar10 = *param_1;\n      *param_1 = uVar10 | 1;\n      FUN_001e64b0();\n      while (local_38 < pcVar7) {\n        if (*local_38 != 'L') {\n          if (*local_38 == 'X') {\n            local_38 = local_38 + 1;\n            iVar4 = FUN_001e7a30();\n            if (iVar4 != 0) {\n              FUN_001e64b0();\n              FUN_001e6600();\n              if (local_28 != (void *)0x0) {\n                free(local_28);\n                local_28 = (void *)0x0;\n              }\n              FUN_001e64b0();\n              if (*local_38 == 'L') goto LAB_001e8a99;\n            }\n          }\n          else {\n            iVar4 = FUN_001e7a30();\n            if (iVar4 != 0) {\n              *param_1 = uVar10;\n              return;\n            }\n          }\nLAB_001e8e50:\n          if (local_38 < pcVar7) goto LAB_001e8e86;\n          break;\n        }\nLAB_001e8a99:\n        local_38 = local_38 + 1;\n        iVar4 = FUN_001e6540();\n        if (iVar4 == 0) goto LAB_001e8e50;\n        FUN_001e6600();\n        FUN_001e64b0();\n      }\n      param_4[1] = param_4[1] + -1;\nLAB_001e8e86:\n      FUN_001e64b0();\n      *param_1 = uVar10;\n      pbVar8 = (byte *)*param_2;\n      goto LAB_001e895e;\n    }\n  }" { (expression_statement "local_38 = pcVar3 + 6;" (assignment_expression "local_38 = pcVar3 + 6" identifier = (binary_expression "pcVar3 + 6" identifier + number_literal)) ;) (expression_statement "iVar4 = FUN_001e6060();" (assignment_expression "iVar4 = FUN_001e6060()" identifier = (call_expression "FUN_001e6060()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar4 != -1) {\n      if ((pcVar7 != local_38 + iVar4) || (*local_38 != '_')) {\n        uVar10 = *param_1;\n        goto LAB_001e88a9;\n      }\nLAB_001e8979:\n      local_38 = local_38 + 1;\n      if (pcVar3 != (char *)*param_2) {\n        FUN_001e63d0();\n      }\n      if (param_1[0xd] == 0xffffffff) {\n        param_1[0xd] = param_4[1] - *param_4;\n      }\n      uVar10 = *param_1;\n      *param_1 = uVar10 | 1;\n      FUN_001e64b0();\n      while (local_38 < pcVar7) {\n        if (*local_38 != 'L') {\n          if (*local_38 == 'X') {\n            local_38 = local_38 + 1;\n            iVar4 = FUN_001e7a30();\n            if (iVar4 != 0) {\n              FUN_001e64b0();\n              FUN_001e6600();\n              if (local_28 != (void *)0x0) {\n                free(local_28);\n                local_28 = (void *)0x0;\n              }\n              FUN_001e64b0();\n              if (*local_38 == 'L') goto LAB_001e8a99;\n            }\n          }\n          else {\n            iVar4 = FUN_001e7a30();\n            if (iVar4 != 0) {\n              *param_1 = uVar10;\n              return;\n            }\n          }\nLAB_001e8e50:\n          if (local_38 < pcVar7) goto LAB_001e8e86;\n          break;\n        }\nLAB_001e8a99:\n        local_38 = local_38 + 1;\n        iVar4 = FUN_001e6540();\n        if (iVar4 == 0) goto LAB_001e8e50;\n        FUN_001e6600();\n        FUN_001e64b0();\n      }\n      param_4[1] = param_4[1] + -1;\nLAB_001e8e86:\n      FUN_001e64b0();\n      *param_1 = uVar10;\n      pbVar8 = (byte *)*param_2;\n      goto LAB_001e895e;\n    }" if (parenthesized_expression "(iVar4 != -1)" ( (binary_expression "iVar4 != -1" identifier != number_literal) )) (compound_statement "{\n      if ((pcVar7 != local_38 + iVar4) || (*local_38 != '_')) {\n        uVar10 = *param_1;\n        goto LAB_001e88a9;\n      }\nLAB_001e8979:\n      local_38 = local_38 + 1;\n      if (pcVar3 != (char *)*param_2) {\n        FUN_001e63d0();\n      }\n      if (param_1[0xd] == 0xffffffff) {\n        param_1[0xd] = param_4[1] - *param_4;\n      }\n      uVar10 = *param_1;\n      *param_1 = uVar10 | 1;\n      FUN_001e64b0();\n      while (local_38 < pcVar7) {\n        if (*local_38 != 'L') {\n          if (*local_38 == 'X') {\n            local_38 = local_38 + 1;\n            iVar4 = FUN_001e7a30();\n            if (iVar4 != 0) {\n              FUN_001e64b0();\n              FUN_001e6600();\n              if (local_28 != (void *)0x0) {\n                free(local_28);\n                local_28 = (void *)0x0;\n              }\n              FUN_001e64b0();\n              if (*local_38 == 'L') goto LAB_001e8a99;\n            }\n          }\n          else {\n            iVar4 = FUN_001e7a30();\n            if (iVar4 != 0) {\n              *param_1 = uVar10;\n              return;\n            }\n          }\nLAB_001e8e50:\n          if (local_38 < pcVar7) goto LAB_001e8e86;\n          break;\n        }\nLAB_001e8a99:\n        local_38 = local_38 + 1;\n        iVar4 = FUN_001e6540();\n        if (iVar4 == 0) goto LAB_001e8e50;\n        FUN_001e6600();\n        FUN_001e64b0();\n      }\n      param_4[1] = param_4[1] + -1;\nLAB_001e8e86:\n      FUN_001e64b0();\n      *param_1 = uVar10;\n      pbVar8 = (byte *)*param_2;\n      goto LAB_001e895e;\n    }" { (if_statement "if ((pcVar7 != local_38 + iVar4) || (*local_38 != '_')) {\n        uVar10 = *param_1;\n        goto LAB_001e88a9;\n      }" if (parenthesized_expression "((pcVar7 != local_38 + iVar4) || (*local_38 != '_'))" ( (binary_expression "(pcVar7 != local_38 + iVar4) || (*local_38 != '_')" (parenthesized_expression "(pcVar7 != local_38 + iVar4)" ( (binary_expression "pcVar7 != local_38 + iVar4" identifier != (binary_expression "local_38 + iVar4" identifier + identifier)) )) || (parenthesized_expression "(*local_38 != '_')" ( (binary_expression "*local_38 != '_'" (pointer_expression "*local_38" * identifier) != (char_literal "'_'" ' character ')) ))) )) (compound_statement "{\n        uVar10 = *param_1;\n        goto LAB_001e88a9;\n      }" { (expression_statement "uVar10 = *param_1;" (assignment_expression "uVar10 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (goto_statement "goto LAB_001e88a9;" goto statement_identifier ;) })) (labeled_statement "LAB_001e8979:\n      local_38 = local_38 + 1;" statement_identifier : (expression_statement "local_38 = local_38 + 1;" (assignment_expression "local_38 = local_38 + 1" identifier = (binary_expression "local_38 + 1" identifier + number_literal)) ;)) (if_statement "if (pcVar3 != (char *)*param_2) {\n        FUN_001e63d0();\n      }" if (parenthesized_expression "(pcVar3 != (char *)*param_2)" ( (binary_expression "pcVar3 != (char *)*param_2" identifier != (cast_expression "(char *)*param_2" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_2" * identifier))) )) (compound_statement "{\n        FUN_001e63d0();\n      }" { (expression_statement "FUN_001e63d0();" (call_expression "FUN_001e63d0()" identifier (argument_list "()" ( ))) ;) })) (if_statement "if (param_1[0xd] == 0xffffffff) {\n        param_1[0xd] = param_4[1] - *param_4;\n      }" if (parenthesized_expression "(param_1[0xd] == 0xffffffff)" ( (binary_expression "param_1[0xd] == 0xffffffff" (subscript_expression "param_1[0xd]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n        param_1[0xd] = param_4[1] - *param_4;\n      }" { (expression_statement "param_1[0xd] = param_4[1] - *param_4;" (assignment_expression "param_1[0xd] = param_4[1] - *param_4" (subscript_expression "param_1[0xd]" identifier [ number_literal ]) = (binary_expression "param_4[1] - *param_4" (subscript_expression "param_4[1]" identifier [ number_literal ]) - (pointer_expression "*param_4" * identifier))) ;) })) (expression_statement "uVar10 = *param_1;" (assignment_expression "uVar10 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "*param_1 = uVar10 | 1;" (assignment_expression "*param_1 = uVar10 | 1" (pointer_expression "*param_1" * identifier) = (binary_expression "uVar10 | 1" identifier | number_literal)) ;) (expression_statement "FUN_001e64b0();" (call_expression "FUN_001e64b0()" identifier (argument_list "()" ( ))) ;) (while_statement "while (local_38 < pcVar7) {\n        if (*local_38 != 'L') {\n          if (*local_38 == 'X') {\n            local_38 = local_38 + 1;\n            iVar4 = FUN_001e7a30();\n            if (iVar4 != 0) {\n              FUN_001e64b0();\n              FUN_001e6600();\n              if (local_28 != (void *)0x0) {\n                free(local_28);\n                local_28 = (void *)0x0;\n              }\n              FUN_001e64b0();\n              if (*local_38 == 'L') goto LAB_001e8a99;\n            }\n          }\n          else {\n            iVar4 = FUN_001e7a30();\n            if (iVar4 != 0) {\n              *param_1 = uVar10;\n              return;\n            }\n          }\nLAB_001e8e50:\n          if (local_38 < pcVar7) goto LAB_001e8e86;\n          break;\n        }\nLAB_001e8a99:\n        local_38 = local_38 + 1;\n        iVar4 = FUN_001e6540();\n        if (iVar4 == 0) goto LAB_001e8e50;\n        FUN_001e6600();\n        FUN_001e64b0();\n      }" while (parenthesized_expression "(local_38 < pcVar7)" ( (binary_expression "local_38 < pcVar7" identifier < identifier) )) (compound_statement "{\n        if (*local_38 != 'L') {\n          if (*local_38 == 'X') {\n            local_38 = local_38 + 1;\n            iVar4 = FUN_001e7a30();\n            if (iVar4 != 0) {\n              FUN_001e64b0();\n              FUN_001e6600();\n              if (local_28 != (void *)0x0) {\n                free(local_28);\n                local_28 = (void *)0x0;\n              }\n              FUN_001e64b0();\n              if (*local_38 == 'L') goto LAB_001e8a99;\n            }\n          }\n          else {\n            iVar4 = FUN_001e7a30();\n            if (iVar4 != 0) {\n              *param_1 = uVar10;\n              return;\n            }\n          }\nLAB_001e8e50:\n          if (local_38 < pcVar7) goto LAB_001e8e86;\n          break;\n        }\nLAB_001e8a99:\n        local_38 = local_38 + 1;\n        iVar4 = FUN_001e6540();\n        if (iVar4 == 0) goto LAB_001e8e50;\n        FUN_001e6600();\n        FUN_001e64b0();\n      }" { (if_statement "if (*local_38 != 'L') {\n          if (*local_38 == 'X') {\n            local_38 = local_38 + 1;\n            iVar4 = FUN_001e7a30();\n            if (iVar4 != 0) {\n              FUN_001e64b0();\n              FUN_001e6600();\n              if (local_28 != (void *)0x0) {\n                free(local_28);\n                local_28 = (void *)0x0;\n              }\n              FUN_001e64b0();\n              if (*local_38 == 'L') goto LAB_001e8a99;\n            }\n          }\n          else {\n            iVar4 = FUN_001e7a30();\n            if (iVar4 != 0) {\n              *param_1 = uVar10;\n              return;\n            }\n          }\nLAB_001e8e50:\n          if (local_38 < pcVar7) goto LAB_001e8e86;\n          break;\n        }" if (parenthesized_expression "(*local_38 != 'L')" ( (binary_expression "*local_38 != 'L'" (pointer_expression "*local_38" * identifier) != (char_literal "'L'" ' character ')) )) (compound_statement "{\n          if (*local_38 == 'X') {\n            local_38 = local_38 + 1;\n            iVar4 = FUN_001e7a30();\n            if (iVar4 != 0) {\n              FUN_001e64b0();\n              FUN_001e6600();\n              if (local_28 != (void *)0x0) {\n                free(local_28);\n                local_28 = (void *)0x0;\n              }\n              FUN_001e64b0();\n              if (*local_38 == 'L') goto LAB_001e8a99;\n            }\n          }\n          else {\n            iVar4 = FUN_001e7a30();\n            if (iVar4 != 0) {\n              *param_1 = uVar10;\n              return;\n            }\n          }\nLAB_001e8e50:\n          if (local_38 < pcVar7) goto LAB_001e8e86;\n          break;\n        }" { (if_statement "if (*local_38 == 'X') {\n            local_38 = local_38 + 1;\n            iVar4 = FUN_001e7a30();\n            if (iVar4 != 0) {\n              FUN_001e64b0();\n              FUN_001e6600();\n              if (local_28 != (void *)0x0) {\n                free(local_28);\n                local_28 = (void *)0x0;\n              }\n              FUN_001e64b0();\n              if (*local_38 == 'L') goto LAB_001e8a99;\n            }\n          }\n          else {\n            iVar4 = FUN_001e7a30();\n            if (iVar4 != 0) {\n              *param_1 = uVar10;\n              return;\n            }\n          }" if (parenthesized_expression "(*local_38 == 'X')" ( (binary_expression "*local_38 == 'X'" (pointer_expression "*local_38" * identifier) == (char_literal "'X'" ' character ')) )) (compound_statement "{\n            local_38 = local_38 + 1;\n            iVar4 = FUN_001e7a30();\n            if (iVar4 != 0) {\n              FUN_001e64b0();\n              FUN_001e6600();\n              if (local_28 != (void *)0x0) {\n                free(local_28);\n                local_28 = (void *)0x0;\n              }\n              FUN_001e64b0();\n              if (*local_38 == 'L') goto LAB_001e8a99;\n            }\n          }" { (expression_statement "local_38 = local_38 + 1;" (assignment_expression "local_38 = local_38 + 1" identifier = (binary_expression "local_38 + 1" identifier + number_literal)) ;) (expression_statement "iVar4 = FUN_001e7a30();" (assignment_expression "iVar4 = FUN_001e7a30()" identifier = (call_expression "FUN_001e7a30()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar4 != 0) {\n              FUN_001e64b0();\n              FUN_001e6600();\n              if (local_28 != (void *)0x0) {\n                free(local_28);\n                local_28 = (void *)0x0;\n              }\n              FUN_001e64b0();\n              if (*local_38 == 'L') goto LAB_001e8a99;\n            }" if (parenthesized_expression "(iVar4 != 0)" ( (binary_expression "iVar4 != 0" identifier != number_literal) )) (compound_statement "{\n              FUN_001e64b0();\n              FUN_001e6600();\n              if (local_28 != (void *)0x0) {\n                free(local_28);\n                local_28 = (void *)0x0;\n              }\n              FUN_001e64b0();\n              if (*local_38 == 'L') goto LAB_001e8a99;\n            }" { (expression_statement "FUN_001e64b0();" (call_expression "FUN_001e64b0()" identifier (argument_list "()" ( ))) ;) (expression_statement "FUN_001e6600();" (call_expression "FUN_001e6600()" identifier (argument_list "()" ( ))) ;) (if_statement "if (local_28 != (void *)0x0) {\n                free(local_28);\n                local_28 = (void *)0x0;\n              }" if (parenthesized_expression "(local_28 != (void *)0x0)" ( (binary_expression "local_28 != (void *)0x0" identifier != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                free(local_28);\n                local_28 = (void *)0x0;\n              }" { (expression_statement "free(local_28);" (call_expression "free(local_28)" identifier (argument_list "(local_28)" ( identifier ))) ;) (expression_statement "local_28 = (void *)0x0;" (assignment_expression "local_28 = (void *)0x0" identifier = (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) })) (expression_statement "FUN_001e64b0();" (call_expression "FUN_001e64b0()" identifier (argument_list "()" ( ))) ;) (if_statement "if (*local_38 == 'L') goto LAB_001e8a99;" if (parenthesized_expression "(*local_38 == 'L')" ( (binary_expression "*local_38 == 'L'" (pointer_expression "*local_38" * identifier) == (char_literal "'L'" ' character ')) )) (goto_statement "goto LAB_001e8a99;" goto statement_identifier ;)) })) }) (else_clause "else {\n            iVar4 = FUN_001e7a30();\n            if (iVar4 != 0) {\n              *param_1 = uVar10;\n              return;\n            }\n          }" else (compound_statement "{\n            iVar4 = FUN_001e7a30();\n            if (iVar4 != 0) {\n              *param_1 = uVar10;\n              return;\n            }\n          }" { (expression_statement "iVar4 = FUN_001e7a30();" (assignment_expression "iVar4 = FUN_001e7a30()" identifier = (call_expression "FUN_001e7a30()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar4 != 0) {\n              *param_1 = uVar10;\n              return;\n            }" if (parenthesized_expression "(iVar4 != 0)" ( (binary_expression "iVar4 != 0" identifier != number_literal) )) (compound_statement "{\n              *param_1 = uVar10;\n              return;\n            }" { (expression_statement "*param_1 = uVar10;" (assignment_expression "*param_1 = uVar10" (pointer_expression "*param_1" * identifier) = identifier) ;) (return_statement "return;" return ;) })) }))) (labeled_statement "LAB_001e8e50:\n          if (local_38 < pcVar7) goto LAB_001e8e86;" statement_identifier : (if_statement "if (local_38 < pcVar7) goto LAB_001e8e86;" if (parenthesized_expression "(local_38 < pcVar7)" ( (binary_expression "local_38 < pcVar7" identifier < identifier) )) (goto_statement "goto LAB_001e8e86;" goto statement_identifier ;))) (break_statement "break;" break ;) })) (labeled_statement "LAB_001e8a99:\n        local_38 = local_38 + 1;" statement_identifier : (expression_statement "local_38 = local_38 + 1;" (assignment_expression "local_38 = local_38 + 1" identifier = (binary_expression "local_38 + 1" identifier + number_literal)) ;)) (expression_statement "iVar4 = FUN_001e6540();" (assignment_expression "iVar4 = FUN_001e6540()" identifier = (call_expression "FUN_001e6540()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar4 == 0) goto LAB_001e8e50;" if (parenthesized_expression "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) )) (goto_statement "goto LAB_001e8e50;" goto statement_identifier ;)) (expression_statement "FUN_001e6600();" (call_expression "FUN_001e6600()" identifier (argument_list "()" ( ))) ;) (expression_statement "FUN_001e64b0();" (call_expression "FUN_001e64b0()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "param_4[1] = param_4[1] + -1;" (assignment_expression "param_4[1] = param_4[1] + -1" (subscript_expression "param_4[1]" identifier [ number_literal ]) = (binary_expression "param_4[1] + -1" (subscript_expression "param_4[1]" identifier [ number_literal ]) + number_literal)) ;) (labeled_statement "LAB_001e8e86:\n      FUN_001e64b0();" statement_identifier : (expression_statement "FUN_001e64b0();" (call_expression "FUN_001e64b0()" identifier (argument_list "()" ( ))) ;)) (expression_statement "*param_1 = uVar10;" (assignment_expression "*param_1 = uVar10" (pointer_expression "*param_1" * identifier) = identifier) ;) (expression_statement "pbVar8 = (byte *)*param_2;" (assignment_expression "pbVar8 = (byte *)*param_2" identifier = (cast_expression "(byte *)*param_2" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_2" * identifier))) ;) (goto_statement "goto LAB_001e895e;" goto statement_identifier ;) })) }))) (labeled_statement "LAB_001e88f1:\n  bVar13 = param_3 < 10;" statement_identifier : (expression_statement "bVar13 = param_3 < 10;" (assignment_expression "bVar13 = param_3 < 10" identifier = (binary_expression "param_3 < 10" identifier < number_literal)) ;)) (expression_statement "bVar14 = param_3 == 10;" (assignment_expression "bVar14 = param_3 == 10" identifier = (binary_expression "param_3 == 10" identifier == number_literal)) ;) (expression_statement "pbVar8 = (byte *)*param_2;" (assignment_expression "pbVar8 = (byte *)*param_2" identifier = (cast_expression "(byte *)*param_2" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_2" * identifier))) ;) (if_statement "if ((int)param_3 < 0xb) {\n    if (param_1[0xd] == 0xffffffff) {\nLAB_001e8b50:\n      param_1[0xd] = 0;\n    }\n    if (param_3 == 0) goto LAB_001e895e;\n  }\n  else {\n    iVar4 = 8;\n    pbVar11 = pbVar8;\n    pbVar12 = (byte *)"_GLOBAL_";\n    do {\n      if (iVar4 == 0) break;\n      iVar4 = iVar4 + -1;\n      bVar13 = *pbVar11 < *pbVar12;\n      bVar14 = *pbVar11 == *pbVar12;\n      pbVar11 = pbVar11 + (uint)bVar15 * -2 + 1;\n      pbVar12 = pbVar12 + (uint)bVar15 * -2 + 1;\n    } while (bVar14);\n    if ((((!bVar13 && !bVar14) == bVar13) && (pbVar8[9] == 0x4e)) &&\n       ((pbVar8[8] == pbVar8[10] &&\n        (pcVar5 = strchr(&DAT_003af40c,(int)(char)pbVar8[8]), pcVar5 != (char *)0x0)))) {\n      FUN_001e64b0();\n      pbVar8 = (byte *)*param_2;\n      goto LAB_001e895e;\n    }\n    if (param_1[0xd] == 0xffffffff) goto LAB_001e8b50;\n  }" if (parenthesized_expression "((int)param_3 < 0xb)" ( (binary_expression "(int)param_3 < 0xb" (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n    if (param_1[0xd] == 0xffffffff) {\nLAB_001e8b50:\n      param_1[0xd] = 0;\n    }\n    if (param_3 == 0) goto LAB_001e895e;\n  }" { (if_statement "if (param_1[0xd] == 0xffffffff) {\nLAB_001e8b50:\n      param_1[0xd] = 0;\n    }" if (parenthesized_expression "(param_1[0xd] == 0xffffffff)" ( (binary_expression "param_1[0xd] == 0xffffffff" (subscript_expression "param_1[0xd]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\nLAB_001e8b50:\n      param_1[0xd] = 0;\n    }" { (labeled_statement "LAB_001e8b50:\n      param_1[0xd] = 0;" statement_identifier : (expression_statement "param_1[0xd] = 0;" (assignment_expression "param_1[0xd] = 0" (subscript_expression "param_1[0xd]" identifier [ number_literal ]) = number_literal) ;)) })) (if_statement "if (param_3 == 0) goto LAB_001e895e;" if (parenthesized_expression "(param_3 == 0)" ( (binary_expression "param_3 == 0" identifier == number_literal) )) (goto_statement "goto LAB_001e895e;" goto statement_identifier ;)) }) (else_clause "else {\n    iVar4 = 8;\n    pbVar11 = pbVar8;\n    pbVar12 = (byte *)"_GLOBAL_";\n    do {\n      if (iVar4 == 0) break;\n      iVar4 = iVar4 + -1;\n      bVar13 = *pbVar11 < *pbVar12;\n      bVar14 = *pbVar11 == *pbVar12;\n      pbVar11 = pbVar11 + (uint)bVar15 * -2 + 1;\n      pbVar12 = pbVar12 + (uint)bVar15 * -2 + 1;\n    } while (bVar14);\n    if ((((!bVar13 && !bVar14) == bVar13) && (pbVar8[9] == 0x4e)) &&\n       ((pbVar8[8] == pbVar8[10] &&\n        (pcVar5 = strchr(&DAT_003af40c,(int)(char)pbVar8[8]), pcVar5 != (char *)0x0)))) {\n      FUN_001e64b0();\n      pbVar8 = (byte *)*param_2;\n      goto LAB_001e895e;\n    }\n    if (param_1[0xd] == 0xffffffff) goto LAB_001e8b50;\n  }" else (compound_statement "{\n    iVar4 = 8;\n    pbVar11 = pbVar8;\n    pbVar12 = (byte *)"_GLOBAL_";\n    do {\n      if (iVar4 == 0) break;\n      iVar4 = iVar4 + -1;\n      bVar13 = *pbVar11 < *pbVar12;\n      bVar14 = *pbVar11 == *pbVar12;\n      pbVar11 = pbVar11 + (uint)bVar15 * -2 + 1;\n      pbVar12 = pbVar12 + (uint)bVar15 * -2 + 1;\n    } while (bVar14);\n    if ((((!bVar13 && !bVar14) == bVar13) && (pbVar8[9] == 0x4e)) &&\n       ((pbVar8[8] == pbVar8[10] &&\n        (pcVar5 = strchr(&DAT_003af40c,(int)(char)pbVar8[8]), pcVar5 != (char *)0x0)))) {\n      FUN_001e64b0();\n      pbVar8 = (byte *)*param_2;\n      goto LAB_001e895e;\n    }\n    if (param_1[0xd] == 0xffffffff) goto LAB_001e8b50;\n  }" { (expression_statement "iVar4 = 8;" (assignment_expression "iVar4 = 8" identifier = number_literal) ;) (expression_statement "pbVar11 = pbVar8;" (assignment_expression "pbVar11 = pbVar8" identifier = identifier) ;) (expression_statement "pbVar12 = (byte *)"_GLOBAL_";" (assignment_expression "pbVar12 = (byte *)"_GLOBAL_"" identifier = (cast_expression "(byte *)"_GLOBAL_"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal ""_GLOBAL_"" " string_content "))) ;) (do_statement "do {\n      if (iVar4 == 0) break;\n      iVar4 = iVar4 + -1;\n      bVar13 = *pbVar11 < *pbVar12;\n      bVar14 = *pbVar11 == *pbVar12;\n      pbVar11 = pbVar11 + (uint)bVar15 * -2 + 1;\n      pbVar12 = pbVar12 + (uint)bVar15 * -2 + 1;\n    } while (bVar14);" do (compound_statement "{\n      if (iVar4 == 0) break;\n      iVar4 = iVar4 + -1;\n      bVar13 = *pbVar11 < *pbVar12;\n      bVar14 = *pbVar11 == *pbVar12;\n      pbVar11 = pbVar11 + (uint)bVar15 * -2 + 1;\n      pbVar12 = pbVar12 + (uint)bVar15 * -2 + 1;\n    }" { (if_statement "if (iVar4 == 0) break;" if (parenthesized_expression "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar4 = iVar4 + -1;" (assignment_expression "iVar4 = iVar4 + -1" identifier = (binary_expression "iVar4 + -1" identifier + number_literal)) ;) (expression_statement "bVar13 = *pbVar11 < *pbVar12;" (assignment_expression "bVar13 = *pbVar11 < *pbVar12" identifier = (binary_expression "*pbVar11 < *pbVar12" (pointer_expression "*pbVar11" * identifier) < (pointer_expression "*pbVar12" * identifier))) ;) (expression_statement "bVar14 = *pbVar11 == *pbVar12;" (assignment_expression "bVar14 = *pbVar11 == *pbVar12" identifier = (binary_expression "*pbVar11 == *pbVar12" (pointer_expression "*pbVar11" * identifier) == (pointer_expression "*pbVar12" * identifier))) ;) (expression_statement "pbVar11 = pbVar11 + (uint)bVar15 * -2 + 1;" (assignment_expression "pbVar11 = pbVar11 + (uint)bVar15 * -2 + 1" identifier = (binary_expression "pbVar11 + (uint)bVar15 * -2 + 1" (binary_expression "pbVar11 + (uint)bVar15 * -2" identifier + (binary_expression "(uint)bVar15 * -2" (cast_expression "(uint)bVar15" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar12 = pbVar12 + (uint)bVar15 * -2 + 1;" (assignment_expression "pbVar12 = pbVar12 + (uint)bVar15 * -2 + 1" identifier = (binary_expression "pbVar12 + (uint)bVar15 * -2 + 1" (binary_expression "pbVar12 + (uint)bVar15 * -2" identifier + (binary_expression "(uint)bVar15 * -2" (cast_expression "(uint)bVar15" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar14)" ( identifier )) ;) (if_statement "if ((((!bVar13 && !bVar14) == bVar13) && (pbVar8[9] == 0x4e)) &&\n       ((pbVar8[8] == pbVar8[10] &&\n        (pcVar5 = strchr(&DAT_003af40c,(int)(char)pbVar8[8]), pcVar5 != (char *)0x0)))) {\n      FUN_001e64b0();\n      pbVar8 = (byte *)*param_2;\n      goto LAB_001e895e;\n    }" if (parenthesized_expression "((((!bVar13 && !bVar14) == bVar13) && (pbVar8[9] == 0x4e)) &&\n       ((pbVar8[8] == pbVar8[10] &&\n        (pcVar5 = strchr(&DAT_003af40c,(int)(char)pbVar8[8]), pcVar5 != (char *)0x0))))" ( (binary_expression "(((!bVar13 && !bVar14) == bVar13) && (pbVar8[9] == 0x4e)) &&\n       ((pbVar8[8] == pbVar8[10] &&\n        (pcVar5 = strchr(&DAT_003af40c,(int)(char)pbVar8[8]), pcVar5 != (char *)0x0)))" (parenthesized_expression "(((!bVar13 && !bVar14) == bVar13) && (pbVar8[9] == 0x4e))" ( (binary_expression "((!bVar13 && !bVar14) == bVar13) && (pbVar8[9] == 0x4e)" (parenthesized_expression "((!bVar13 && !bVar14) == bVar13)" ( (binary_expression "(!bVar13 && !bVar14) == bVar13" (parenthesized_expression "(!bVar13 && !bVar14)" ( (binary_expression "!bVar13 && !bVar14" (unary_expression "!bVar13" ! identifier) && (unary_expression "!bVar14" ! identifier)) )) == identifier) )) && (parenthesized_expression "(pbVar8[9] == 0x4e)" ( (binary_expression "pbVar8[9] == 0x4e" (subscript_expression "pbVar8[9]" identifier [ number_literal ]) == number_literal) ))) )) && (parenthesized_expression "((pbVar8[8] == pbVar8[10] &&\n        (pcVar5 = strchr(&DAT_003af40c,(int)(char)pbVar8[8]), pcVar5 != (char *)0x0)))" ( (parenthesized_expression "(pbVar8[8] == pbVar8[10] &&\n        (pcVar5 = strchr(&DAT_003af40c,(int)(char)pbVar8[8]), pcVar5 != (char *)0x0))" ( (binary_expression "pbVar8[8] == pbVar8[10] &&\n        (pcVar5 = strchr(&DAT_003af40c,(int)(char)pbVar8[8]), pcVar5 != (char *)0x0)" (binary_expression "pbVar8[8] == pbVar8[10]" (subscript_expression "pbVar8[8]" identifier [ number_literal ]) == (subscript_expression "pbVar8[10]" identifier [ number_literal ])) && (parenthesized_expression "(pcVar5 = strchr(&DAT_003af40c,(int)(char)pbVar8[8]), pcVar5 != (char *)0x0)" ( (comma_expression "pcVar5 = strchr(&DAT_003af40c,(int)(char)pbVar8[8]), pcVar5 != (char *)0x0" (assignment_expression "pcVar5 = strchr(&DAT_003af40c,(int)(char)pbVar8[8])" identifier = (call_expression "strchr(&DAT_003af40c,(int)(char)pbVar8[8])" identifier (argument_list "(&DAT_003af40c,(int)(char)pbVar8[8])" ( (pointer_expression "&DAT_003af40c" & identifier) , (cast_expression "(int)(char)pbVar8[8]" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)pbVar8[8]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "pbVar8[8]" identifier [ number_literal ]))) )))) , (binary_expression "pcVar5 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) ))) )) (compound_statement "{\n      FUN_001e64b0();\n      pbVar8 = (byte *)*param_2;\n      goto LAB_001e895e;\n    }" { (expression_statement "FUN_001e64b0();" (call_expression "FUN_001e64b0()" identifier (argument_list "()" ( ))) ;) (expression_statement "pbVar8 = (byte *)*param_2;" (assignment_expression "pbVar8 = (byte *)*param_2" identifier = (cast_expression "(byte *)*param_2" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_2" * identifier))) ;) (goto_statement "goto LAB_001e895e;" goto statement_identifier ;) })) (if_statement "if (param_1[0xd] == 0xffffffff) goto LAB_001e8b50;" if (parenthesized_expression "(param_1[0xd] == 0xffffffff)" ( (binary_expression "param_1[0xd] == 0xffffffff" (subscript_expression "param_1[0xd]" identifier [ number_literal ]) == number_literal) )) (goto_statement "goto LAB_001e8b50;" goto statement_identifier ;)) }))) (expression_statement "FUN_001e63d0();" (call_expression "FUN_001e63d0()" identifier (argument_list "()" ( ))) ;) (expression_statement "pbVar8 = (byte *)*param_2;" (assignment_expression "pbVar8 = (byte *)*param_2" identifier = (cast_expression "(byte *)*param_2" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_2" * identifier))) ;) (labeled_statement "LAB_001e895e:\n  *param_2 = (int)(pbVar8 + param_3);" statement_identifier : (expression_statement "*param_2 = (int)(pbVar8 + param_3);" (assignment_expression "*param_2 = (int)(pbVar8 + param_3)" (pointer_expression "*param_2" * identifier) = (cast_expression "(int)(pbVar8 + param_3)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(pbVar8 + param_3)" ( (binary_expression "pbVar8 + param_3" identifier + identifier) )))) ;)) (return_statement "return;" return ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nvoid __regparm3 demangle_arm_hp_template(work_stuff *work,char **mangled,int n,string *declp)\n\n{\n  char cVar1;\n  char cVar2;\n  char *pcVar3;\n  int iVar4;\n  char *pcVar5;\n  size_t __n;\n  size_t sVar6;\n  char *pcVar7;\n  byte *s;\n  uint uVar8;\n  uint uVar9;\n  byte *pbVar10;\n  byte *pbVar11;\n  bool bVar12;\n  bool bVar13;\n  byte bVar14;\n  char *args;\n  string arg;\n  string type_str;\n  \n  bVar14 = 0;\n  pcVar5 = *mangled;\n  uVar9 = work->options;\n  pcVar7 = pcVar5 + n;\n  if (((uVar9 & 0x1000) != 0) && (*pcVar7 == 'X')) {\n    pcVar7 = strchr(pcVar5,0x3c);\n    if ((pcVar7 == (char *)0x0) || (iVar4 = (int)pcVar7 - (int)pcVar5, n <= iVar4)) {\n      iVar4 = n;\n      if (n == 0) goto LAB_001e8bea;\n    }\n    else if (iVar4 == 0) goto LAB_001e8bea;\n    string_appendn(declp,pcVar5,iVar4);\n    pcVar5 = *mangled;\n    uVar9 = work->options;\nLAB_001e8bea:\n    arg.e = (char *)0x0;\n    arg.p = (char *)0x0;\n    arg.b = (char *)0x0;\n    *mangled = pcVar5 + n + 1;\n    if (work->temp_start == -1) {\n      work->temp_start = (int)declp->p - (int)declp->b;\n    }\n    work->options = uVar9 | 1;\n    string_append(declp,"<");\n    do {\n      if (arg.b != (char *)0x0) {\n        free(arg.b);\n        arg.p = (char *)0x0;\n        arg.e = (char *)0x0;\n        arg.b = (char *)0x0;\n      }\n      pcVar5 = *mangled;\n      cVar1 = *pcVar5;\n      if (cVar1 == 'S') {\nLAB_001e8d75:\n        if ((cVar1 + 0xadU & 0xfd) != 0) goto LAB_001e8d09;\n        pcVar7 = pcVar5 + 1;\n        *mangled = pcVar7;\n        cVar2 = pcVar5[1];\n        if (cVar2 == 'N') {\n          string_append(&arg,"-");\n          pcVar7 = *mangled;\n        }\n        else if (cVar2 != 'P') {\n          if (cVar2 == 'M') {\n            string_append(&arg,"-2147483648");\n            *mangled = *mangled + 1;\n            goto LAB_001e8cbb;\n          }\n          goto LAB_001e8d09;\n        }\n        *mangled = pcVar7 + 1;\n        uVar8 = (uint)(byte)pcVar7[1];\n        if ((_sch_istable[uVar8] & 4) == 0) goto LAB_001e8d09;\n        do {\n          char_str[0] = (char)uVar8;\n          if (char_str[0] != '\0') {\n            string_append(&arg,char_str);\n          }\n          pcVar5 = *mangled;\n          *mangled = pcVar5 + 1;\n          uVar8 = (uint)(byte)pcVar5[1];\n        } while ((_sch_istable[uVar8] & 4) != 0);\n        if (cVar1 == 'U') {\n          string_append(&arg,"U");\n        }\n      }\n      else if (cVar1 < 'T') {\n        if (cVar1 != 'A') {\nLAB_001e8d09:\n          string_append(declp,">");\n          if (arg.b != (char *)0x0) {\n            free(arg.b);\n          }\n          if (**mangled == '_') {\n            *mangled = *mangled + 1;\n          }\n          work->options = uVar9;\n          return;\n        }\n        *mangled = pcVar5 + 1;\n        __n = consume_count(mangled);\n        if (((int)__n < 1) || (sVar6 = strlen(*mangled), (int)sVar6 < (int)__n)) goto LAB_001e8d09;\n        string_append(&arg,"&");\n        pcVar5 = (char *)xmalloc(__n + 1);\n        memcpy(pcVar5,*mangled,__n);\n        pcVar5[__n] = '\0';\n        pcVar7 = cplus_demangle(pcVar5,work->options);\n        if (pcVar7 == (char *)0x0) {\n          string_appendn(&arg,*mangled,__n);\n        }\n        else {\n          if (*pcVar7 != '\0') {\n            string_append(&arg,pcVar7);\n          }\n          free(pcVar7);\n        }\n        *mangled = *mangled + __n;\n        free(pcVar5);\n      }\n      else {\n        if (cVar1 != 'T') {\n          if (cVar1 == 'U') goto LAB_001e8d75;\n          goto LAB_001e8d09;\n        }\n        *mangled = pcVar5 + 1;\n        iVar4 = do_type(work,mangled,&arg);\n        if (iVar4 == 0) goto LAB_001e8d09;\n      }\nLAB_001e8cbb:\n      string_appends(declp,&arg,(string *)arg.p);\n      if ((**mangled == '\0') || (**mangled == '_')) goto LAB_001e8d09;\n      string_append(declp,",");\n    } while( true );\n  }\n  if (((uVar9 & 0x1800) == 0) || (pcVar3 = strstr(pcVar5,"__pt__"), pcVar3 == (char *)0x0)) {\nLAB_001e88a9:\n    if ((uVar9 & 0x2100) != 0) {\n      pcVar3 = strstr(pcVar5,"__tm__");\n      if (((pcVar3 == (char *)0x0) && (pcVar3 = strstr(pcVar5,"__ps__"), pcVar3 == (char *)0x0)) &&\n         (pcVar3 = strstr(pcVar5,"__pt__"), pcVar3 == (char *)0x0)) {\n        pcVar3 = strstr(pcVar5,"__S");\n        if (pcVar3 == (char *)0x0) goto LAB_001e88f1;\n        args = pcVar3 + 3;\n      }\n      else {\n        args = pcVar3 + 6;\n      }\n      iVar4 = consume_count(&args);\n      if (((iVar4 != -1) && (pcVar7 == args + iVar4)) && (*args == '_')) goto LAB_001e8979;\n    }\n  }\n  else {\n    args = pcVar3 + 6;\n    iVar4 = consume_count(&args);\n    if (iVar4 != -1) {\n      if ((pcVar7 != args + iVar4) || (*args != '_')) {\n        uVar9 = work->options;\n        goto LAB_001e88a9;\n      }\nLAB_001e8979:\n      args = args + 1;\n      arg.e = (char *)0x0;\n      arg.p = (char *)0x0;\n      arg.b = (char *)0x0;\n      iVar4 = (int)pcVar3 - (int)*mangled;\n      if (iVar4 != 0) {\n        string_appendn(declp,*mangled,iVar4);\n      }\n      if (work->temp_start == -1) {\n        work->temp_start = (int)declp->p - (int)declp->b;\n      }\n      uVar9 = work->options;\n      work->options = uVar9 | 1;\n      string_append(declp,"<");\n      if (args < pcVar7) {\n        do {\n          if (arg.b != (char *)0x0) {\n            free(arg.b);\n            arg.p = (char *)0x0;\n            arg.e = (char *)0x0;\n            arg.b = (char *)0x0;\n          }\n          pcVar5 = args;\n          if (*args != 'L') {\n            if (*args == 'X') {\n              args = args + 1;\n              iVar4 = do_type(work,&args,&type_str);\n              if (iVar4 != 0) {\n                string_append(&arg,"(");\n                string_appends(&arg,&type_str,(string *)type_str.p);\n                if (type_str.b != (char *)0x0) {\n                  free(type_str.b);\n                  type_str.p = (char *)0x0;\n                  type_str.e = (char *)0x0;\n                  type_str.b = (char *)0x0;\n                }\n                string_append(&arg,")");\n                if (*args == 'L') goto LAB_001e8a99;\n              }\n            }\n            else {\n              iVar4 = do_type(work,&args,&arg);\n              if (iVar4 != 0) {\n                if (pcVar5 == args) {\n                  work->options = uVar9;\n                  return;\n                }\n                goto LAB_001e8aac;\n              }\n            }\nLAB_001e8e50:\n            if (arg.b == (char *)0x0) goto LAB_001e8e7c;\n            goto LAB_001e8e58;\n          }\nLAB_001e8a99:\n          args = args + 1;\n          iVar4 = snarf_numeric_literal(&args,&arg);\n          if (iVar4 == 0) goto LAB_001e8e50;\nLAB_001e8aac:\n          string_appends(declp,&arg,(string *)arg.p);\n          string_append(declp,",");\n        } while (args < pcVar7);\n      }\n      if (arg.b == (char *)0x0) {\nLAB_001e8eb8:\n        declp->p = declp->p + -1;\n      }\n      else {\nLAB_001e8e58:\n        free(arg.b);\n        arg.p = (char *)0x0;\n        arg.e = (char *)0x0;\n        arg.b = (char *)0x0;\nLAB_001e8e7c:\n        if (pcVar7 <= args) goto LAB_001e8eb8;\n      }\n      string_append(declp,">");\n      work->options = uVar9;\n      s = (byte *)*mangled;\n      goto LAB_001e895e;\n    }\n  }\nLAB_001e88f1:\n  bVar12 = (uint)n < 10;\n  bVar13 = n == 10;\n  s = (byte *)*mangled;\n  if (n < 0xb) {\n    if (work->temp_start == -1) {\nLAB_001e8b50:\n      work->temp_start = 0;\n    }\n    if (n == 0) goto LAB_001e895e;\n  }\n  else {\n    iVar4 = 8;\n    pbVar10 = s;\n    pbVar11 = (byte *)"_GLOBAL_";\n    do {\n      if (iVar4 == 0) break;\n      iVar4 = iVar4 + -1;\n      bVar12 = *pbVar10 < *pbVar11;\n      bVar13 = *pbVar10 == *pbVar11;\n      pbVar10 = pbVar10 + (uint)bVar14 * -2 + 1;\n      pbVar11 = pbVar11 + (uint)bVar14 * -2 + 1;\n    } while (bVar13);\n    if ((((!bVar12 && !bVar13) == bVar12) && (s[9] == 0x4e)) &&\n       ((s[8] == s[10] && (pcVar5 = strchr(cplus_markers,(int)(char)s[8]), pcVar5 != (char *)0x0))))\n    {\n      string_append(declp,"{anonymous}");\n      s = (byte *)*mangled;\n      goto LAB_001e895e;\n    }\n    if (work->temp_start == -1) goto LAB_001e8b50;\n  }\n  string_appendn(declp,(char *)s,n);\n  s = (byte *)*mangled;\nLAB_001e895e:\n  *mangled = (char *)(s + n);\n  return;\n}\n\n" comment (function_definition "void __regparm3 demangle_arm_hp_template(work_stuff *work,char **mangled,int n,string *declp)\n\n{\n  char cVar1;\n  char cVar2;\n  char *pcVar3;\n  int iVar4;\n  char *pcVar5;\n  size_t __n;\n  size_t sVar6;\n  char *pcVar7;\n  byte *s;\n  uint uVar8;\n  uint uVar9;\n  byte *pbVar10;\n  byte *pbVar11;\n  bool bVar12;\n  bool bVar13;\n  byte bVar14;\n  char *args;\n  string arg;\n  string type_str;\n  \n  bVar14 = 0;\n  pcVar5 = *mangled;\n  uVar9 = work->options;\n  pcVar7 = pcVar5 + n;\n  if (((uVar9 & 0x1000) != 0) && (*pcVar7 == 'X')) {\n    pcVar7 = strchr(pcVar5,0x3c);\n    if ((pcVar7 == (char *)0x0) || (iVar4 = (int)pcVar7 - (int)pcVar5, n <= iVar4)) {\n      iVar4 = n;\n      if (n == 0) goto LAB_001e8bea;\n    }\n    else if (iVar4 == 0) goto LAB_001e8bea;\n    string_appendn(declp,pcVar5,iVar4);\n    pcVar5 = *mangled;\n    uVar9 = work->options;\nLAB_001e8bea:\n    arg.e = (char *)0x0;\n    arg.p = (char *)0x0;\n    arg.b = (char *)0x0;\n    *mangled = pcVar5 + n + 1;\n    if (work->temp_start == -1) {\n      work->temp_start = (int)declp->p - (int)declp->b;\n    }\n    work->options = uVar9 | 1;\n    string_append(declp,"<");\n    do {\n      if (arg.b != (char *)0x0) {\n        free(arg.b);\n        arg.p = (char *)0x0;\n        arg.e = (char *)0x0;\n        arg.b = (char *)0x0;\n      }\n      pcVar5 = *mangled;\n      cVar1 = *pcVar5;\n      if (cVar1 == 'S') {\nLAB_001e8d75:\n        if ((cVar1 + 0xadU & 0xfd) != 0) goto LAB_001e8d09;\n        pcVar7 = pcVar5 + 1;\n        *mangled = pcVar7;\n        cVar2 = pcVar5[1];\n        if (cVar2 == 'N') {\n          string_append(&arg,"-");\n          pcVar7 = *mangled;\n        }\n        else if (cVar2 != 'P') {\n          if (cVar2 == 'M') {\n            string_append(&arg,"-2147483648");\n            *mangled = *mangled + 1;\n            goto LAB_001e8cbb;\n          }\n          goto LAB_001e8d09;\n        }\n        *mangled = pcVar7 + 1;\n        uVar8 = (uint)(byte)pcVar7[1];\n        if ((_sch_istable[uVar8] & 4) == 0) goto LAB_001e8d09;\n        do {\n          char_str[0] = (char)uVar8;\n          if (char_str[0] != '\0') {\n            string_append(&arg,char_str);\n          }\n          pcVar5 = *mangled;\n          *mangled = pcVar5 + 1;\n          uVar8 = (uint)(byte)pcVar5[1];\n        } while ((_sch_istable[uVar8] & 4) != 0);\n        if (cVar1 == 'U') {\n          string_append(&arg,"U");\n        }\n      }\n      else if (cVar1 < 'T') {\n        if (cVar1 != 'A') {\nLAB_001e8d09:\n          string_append(declp,">");\n          if (arg.b != (char *)0x0) {\n            free(arg.b);\n          }\n          if (**mangled == '_') {\n            *mangled = *mangled + 1;\n          }\n          work->options = uVar9;\n          return;\n        }\n        *mangled = pcVar5 + 1;\n        __n = consume_count(mangled);\n        if (((int)__n < 1) || (sVar6 = strlen(*mangled), (int)sVar6 < (int)__n)) goto LAB_001e8d09;\n        string_append(&arg,"&");\n        pcVar5 = (char *)xmalloc(__n + 1);\n        memcpy(pcVar5,*mangled,__n);\n        pcVar5[__n] = '\0';\n        pcVar7 = cplus_demangle(pcVar5,work->options);\n        if (pcVar7 == (char *)0x0) {\n          string_appendn(&arg,*mangled,__n);\n        }\n        else {\n          if (*pcVar7 != '\0') {\n            string_append(&arg,pcVar7);\n          }\n          free(pcVar7);\n        }\n        *mangled = *mangled + __n;\n        free(pcVar5);\n      }\n      else {\n        if (cVar1 != 'T') {\n          if (cVar1 == 'U') goto LAB_001e8d75;\n          goto LAB_001e8d09;\n        }\n        *mangled = pcVar5 + 1;\n        iVar4 = do_type(work,mangled,&arg);\n        if (iVar4 == 0) goto LAB_001e8d09;\n      }\nLAB_001e8cbb:\n      string_appends(declp,&arg,(string *)arg.p);\n      if ((**mangled == '\0') || (**mangled == '_')) goto LAB_001e8d09;\n      string_append(declp,",");\n    } while( true );\n  }\n  if (((uVar9 & 0x1800) == 0) || (pcVar3 = strstr(pcVar5,"__pt__"), pcVar3 == (char *)0x0)) {\nLAB_001e88a9:\n    if ((uVar9 & 0x2100) != 0) {\n      pcVar3 = strstr(pcVar5,"__tm__");\n      if (((pcVar3 == (char *)0x0) && (pcVar3 = strstr(pcVar5,"__ps__"), pcVar3 == (char *)0x0)) &&\n         (pcVar3 = strstr(pcVar5,"__pt__"), pcVar3 == (char *)0x0)) {\n        pcVar3 = strstr(pcVar5,"__S");\n        if (pcVar3 == (char *)0x0) goto LAB_001e88f1;\n        args = pcVar3 + 3;\n      }\n      else {\n        args = pcVar3 + 6;\n      }\n      iVar4 = consume_count(&args);\n      if (((iVar4 != -1) && (pcVar7 == args + iVar4)) && (*args == '_')) goto LAB_001e8979;\n    }\n  }\n  else {\n    args = pcVar3 + 6;\n    iVar4 = consume_count(&args);\n    if (iVar4 != -1) {\n      if ((pcVar7 != args + iVar4) || (*args != '_')) {\n        uVar9 = work->options;\n        goto LAB_001e88a9;\n      }\nLAB_001e8979:\n      args = args + 1;\n      arg.e = (char *)0x0;\n      arg.p = (char *)0x0;\n      arg.b = (char *)0x0;\n      iVar4 = (int)pcVar3 - (int)*mangled;\n      if (iVar4 != 0) {\n        string_appendn(declp,*mangled,iVar4);\n      }\n      if (work->temp_start == -1) {\n        work->temp_start = (int)declp->p - (int)declp->b;\n      }\n      uVar9 = work->options;\n      work->options = uVar9 | 1;\n      string_append(declp,"<");\n      if (args < pcVar7) {\n        do {\n          if (arg.b != (char *)0x0) {\n            free(arg.b);\n            arg.p = (char *)0x0;\n            arg.e = (char *)0x0;\n            arg.b = (char *)0x0;\n          }\n          pcVar5 = args;\n          if (*args != 'L') {\n            if (*args == 'X') {\n              args = args + 1;\n              iVar4 = do_type(work,&args,&type_str);\n              if (iVar4 != 0) {\n                string_append(&arg,"(");\n                string_appends(&arg,&type_str,(string *)type_str.p);\n                if (type_str.b != (char *)0x0) {\n                  free(type_str.b);\n                  type_str.p = (char *)0x0;\n                  type_str.e = (char *)0x0;\n                  type_str.b = (char *)0x0;\n                }\n                string_append(&arg,")");\n                if (*args == 'L') goto LAB_001e8a99;\n              }\n            }\n            else {\n              iVar4 = do_type(work,&args,&arg);\n              if (iVar4 != 0) {\n                if (pcVar5 == args) {\n                  work->options = uVar9;\n                  return;\n                }\n                goto LAB_001e8aac;\n              }\n            }\nLAB_001e8e50:\n            if (arg.b == (char *)0x0) goto LAB_001e8e7c;\n            goto LAB_001e8e58;\n          }\nLAB_001e8a99:\n          args = args + 1;\n          iVar4 = snarf_numeric_literal(&args,&arg);\n          if (iVar4 == 0) goto LAB_001e8e50;\nLAB_001e8aac:\n          string_appends(declp,&arg,(string *)arg.p);\n          string_append(declp,",");\n        } while (args < pcVar7);\n      }\n      if (arg.b == (char *)0x0) {\nLAB_001e8eb8:\n        declp->p = declp->p + -1;\n      }\n      else {\nLAB_001e8e58:\n        free(arg.b);\n        arg.p = (char *)0x0;\n        arg.e = (char *)0x0;\n        arg.b = (char *)0x0;\nLAB_001e8e7c:\n        if (pcVar7 <= args) goto LAB_001e8eb8;\n      }\n      string_append(declp,">");\n      work->options = uVar9;\n      s = (byte *)*mangled;\n      goto LAB_001e895e;\n    }\n  }\nLAB_001e88f1:\n  bVar12 = (uint)n < 10;\n  bVar13 = n == 10;\n  s = (byte *)*mangled;\n  if (n < 0xb) {\n    if (work->temp_start == -1) {\nLAB_001e8b50:\n      work->temp_start = 0;\n    }\n    if (n == 0) goto LAB_001e895e;\n  }\n  else {\n    iVar4 = 8;\n    pbVar10 = s;\n    pbVar11 = (byte *)"_GLOBAL_";\n    do {\n      if (iVar4 == 0) break;\n      iVar4 = iVar4 + -1;\n      bVar12 = *pbVar10 < *pbVar11;\n      bVar13 = *pbVar10 == *pbVar11;\n      pbVar10 = pbVar10 + (uint)bVar14 * -2 + 1;\n      pbVar11 = pbVar11 + (uint)bVar14 * -2 + 1;\n    } while (bVar13);\n    if ((((!bVar12 && !bVar13) == bVar12) && (s[9] == 0x4e)) &&\n       ((s[8] == s[10] && (pcVar5 = strchr(cplus_markers,(int)(char)s[8]), pcVar5 != (char *)0x0))))\n    {\n      string_append(declp,"{anonymous}");\n      s = (byte *)*mangled;\n      goto LAB_001e895e;\n    }\n    if (work->temp_start == -1) goto LAB_001e8b50;\n  }\n  string_appendn(declp,(char *)s,n);\n  s = (byte *)*mangled;\nLAB_001e895e:\n  *mangled = (char *)(s + n);\n  return;\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "demangle_arm_hp_template(work_stuff *work,char **mangled,int n,string *declp)" identifier (parameter_list "(work_stuff *work,char **mangled,int n,string *declp)" ( (parameter_declaration "work_stuff *work" type_identifier (pointer_declarator "*work" * identifier)) , (parameter_declaration "char **mangled" primitive_type (pointer_declarator "**mangled" * (pointer_declarator "*mangled" * identifier))) , (parameter_declaration "int n" primitive_type identifier) , (parameter_declaration "string *declp" type_identifier (pointer_declarator "*declp" * identifier)) ))) (compound_statement "{\n  char cVar1;\n  char cVar2;\n  char *pcVar3;\n  int iVar4;\n  char *pcVar5;\n  size_t __n;\n  size_t sVar6;\n  char *pcVar7;\n  byte *s;\n  uint uVar8;\n  uint uVar9;\n  byte *pbVar10;\n  byte *pbVar11;\n  bool bVar12;\n  bool bVar13;\n  byte bVar14;\n  char *args;\n  string arg;\n  string type_str;\n  \n  bVar14 = 0;\n  pcVar5 = *mangled;\n  uVar9 = work->options;\n  pcVar7 = pcVar5 + n;\n  if (((uVar9 & 0x1000) != 0) && (*pcVar7 == 'X')) {\n    pcVar7 = strchr(pcVar5,0x3c);\n    if ((pcVar7 == (char *)0x0) || (iVar4 = (int)pcVar7 - (int)pcVar5, n <= iVar4)) {\n      iVar4 = n;\n      if (n == 0) goto LAB_001e8bea;\n    }\n    else if (iVar4 == 0) goto LAB_001e8bea;\n    string_appendn(declp,pcVar5,iVar4);\n    pcVar5 = *mangled;\n    uVar9 = work->options;\nLAB_001e8bea:\n    arg.e = (char *)0x0;\n    arg.p = (char *)0x0;\n    arg.b = (char *)0x0;\n    *mangled = pcVar5 + n + 1;\n    if (work->temp_start == -1) {\n      work->temp_start = (int)declp->p - (int)declp->b;\n    }\n    work->options = uVar9 | 1;\n    string_append(declp,"<");\n    do {\n      if (arg.b != (char *)0x0) {\n        free(arg.b);\n        arg.p = (char *)0x0;\n        arg.e = (char *)0x0;\n        arg.b = (char *)0x0;\n      }\n      pcVar5 = *mangled;\n      cVar1 = *pcVar5;\n      if (cVar1 == 'S') {\nLAB_001e8d75:\n        if ((cVar1 + 0xadU & 0xfd) != 0) goto LAB_001e8d09;\n        pcVar7 = pcVar5 + 1;\n        *mangled = pcVar7;\n        cVar2 = pcVar5[1];\n        if (cVar2 == 'N') {\n          string_append(&arg,"-");\n          pcVar7 = *mangled;\n        }\n        else if (cVar2 != 'P') {\n          if (cVar2 == 'M') {\n            string_append(&arg,"-2147483648");\n            *mangled = *mangled + 1;\n            goto LAB_001e8cbb;\n          }\n          goto LAB_001e8d09;\n        }\n        *mangled = pcVar7 + 1;\n        uVar8 = (uint)(byte)pcVar7[1];\n        if ((_sch_istable[uVar8] & 4) == 0) goto LAB_001e8d09;\n        do {\n          char_str[0] = (char)uVar8;\n          if (char_str[0] != '\0') {\n            string_append(&arg,char_str);\n          }\n          pcVar5 = *mangled;\n          *mangled = pcVar5 + 1;\n          uVar8 = (uint)(byte)pcVar5[1];\n        } while ((_sch_istable[uVar8] & 4) != 0);\n        if (cVar1 == 'U') {\n          string_append(&arg,"U");\n        }\n      }\n      else if (cVar1 < 'T') {\n        if (cVar1 != 'A') {\nLAB_001e8d09:\n          string_append(declp,">");\n          if (arg.b != (char *)0x0) {\n            free(arg.b);\n          }\n          if (**mangled == '_') {\n            *mangled = *mangled + 1;\n          }\n          work->options = uVar9;\n          return;\n        }\n        *mangled = pcVar5 + 1;\n        __n = consume_count(mangled);\n        if (((int)__n < 1) || (sVar6 = strlen(*mangled), (int)sVar6 < (int)__n)) goto LAB_001e8d09;\n        string_append(&arg,"&");\n        pcVar5 = (char *)xmalloc(__n + 1);\n        memcpy(pcVar5,*mangled,__n);\n        pcVar5[__n] = '\0';\n        pcVar7 = cplus_demangle(pcVar5,work->options);\n        if (pcVar7 == (char *)0x0) {\n          string_appendn(&arg,*mangled,__n);\n        }\n        else {\n          if (*pcVar7 != '\0') {\n            string_append(&arg,pcVar7);\n          }\n          free(pcVar7);\n        }\n        *mangled = *mangled + __n;\n        free(pcVar5);\n      }\n      else {\n        if (cVar1 != 'T') {\n          if (cVar1 == 'U') goto LAB_001e8d75;\n          goto LAB_001e8d09;\n        }\n        *mangled = pcVar5 + 1;\n        iVar4 = do_type(work,mangled,&arg);\n        if (iVar4 == 0) goto LAB_001e8d09;\n      }\nLAB_001e8cbb:\n      string_appends(declp,&arg,(string *)arg.p);\n      if ((**mangled == '\0') || (**mangled == '_')) goto LAB_001e8d09;\n      string_append(declp,",");\n    } while( true );\n  }\n  if (((uVar9 & 0x1800) == 0) || (pcVar3 = strstr(pcVar5,"__pt__"), pcVar3 == (char *)0x0)) {\nLAB_001e88a9:\n    if ((uVar9 & 0x2100) != 0) {\n      pcVar3 = strstr(pcVar5,"__tm__");\n      if (((pcVar3 == (char *)0x0) && (pcVar3 = strstr(pcVar5,"__ps__"), pcVar3 == (char *)0x0)) &&\n         (pcVar3 = strstr(pcVar5,"__pt__"), pcVar3 == (char *)0x0)) {\n        pcVar3 = strstr(pcVar5,"__S");\n        if (pcVar3 == (char *)0x0) goto LAB_001e88f1;\n        args = pcVar3 + 3;\n      }\n      else {\n        args = pcVar3 + 6;\n      }\n      iVar4 = consume_count(&args);\n      if (((iVar4 != -1) && (pcVar7 == args + iVar4)) && (*args == '_')) goto LAB_001e8979;\n    }\n  }\n  else {\n    args = pcVar3 + 6;\n    iVar4 = consume_count(&args);\n    if (iVar4 != -1) {\n      if ((pcVar7 != args + iVar4) || (*args != '_')) {\n        uVar9 = work->options;\n        goto LAB_001e88a9;\n      }\nLAB_001e8979:\n      args = args + 1;\n      arg.e = (char *)0x0;\n      arg.p = (char *)0x0;\n      arg.b = (char *)0x0;\n      iVar4 = (int)pcVar3 - (int)*mangled;\n      if (iVar4 != 0) {\n        string_appendn(declp,*mangled,iVar4);\n      }\n      if (work->temp_start == -1) {\n        work->temp_start = (int)declp->p - (int)declp->b;\n      }\n      uVar9 = work->options;\n      work->options = uVar9 | 1;\n      string_append(declp,"<");\n      if (args < pcVar7) {\n        do {\n          if (arg.b != (char *)0x0) {\n            free(arg.b);\n            arg.p = (char *)0x0;\n            arg.e = (char *)0x0;\n            arg.b = (char *)0x0;\n          }\n          pcVar5 = args;\n          if (*args != 'L') {\n            if (*args == 'X') {\n              args = args + 1;\n              iVar4 = do_type(work,&args,&type_str);\n              if (iVar4 != 0) {\n                string_append(&arg,"(");\n                string_appends(&arg,&type_str,(string *)type_str.p);\n                if (type_str.b != (char *)0x0) {\n                  free(type_str.b);\n                  type_str.p = (char *)0x0;\n                  type_str.e = (char *)0x0;\n                  type_str.b = (char *)0x0;\n                }\n                string_append(&arg,")");\n                if (*args == 'L') goto LAB_001e8a99;\n              }\n            }\n            else {\n              iVar4 = do_type(work,&args,&arg);\n              if (iVar4 != 0) {\n                if (pcVar5 == args) {\n                  work->options = uVar9;\n                  return;\n                }\n                goto LAB_001e8aac;\n              }\n            }\nLAB_001e8e50:\n            if (arg.b == (char *)0x0) goto LAB_001e8e7c;\n            goto LAB_001e8e58;\n          }\nLAB_001e8a99:\n          args = args + 1;\n          iVar4 = snarf_numeric_literal(&args,&arg);\n          if (iVar4 == 0) goto LAB_001e8e50;\nLAB_001e8aac:\n          string_appends(declp,&arg,(string *)arg.p);\n          string_append(declp,",");\n        } while (args < pcVar7);\n      }\n      if (arg.b == (char *)0x0) {\nLAB_001e8eb8:\n        declp->p = declp->p + -1;\n      }\n      else {\nLAB_001e8e58:\n        free(arg.b);\n        arg.p = (char *)0x0;\n        arg.e = (char *)0x0;\n        arg.b = (char *)0x0;\nLAB_001e8e7c:\n        if (pcVar7 <= args) goto LAB_001e8eb8;\n      }\n      string_append(declp,">");\n      work->options = uVar9;\n      s = (byte *)*mangled;\n      goto LAB_001e895e;\n    }\n  }\nLAB_001e88f1:\n  bVar12 = (uint)n < 10;\n  bVar13 = n == 10;\n  s = (byte *)*mangled;\n  if (n < 0xb) {\n    if (work->temp_start == -1) {\nLAB_001e8b50:\n      work->temp_start = 0;\n    }\n    if (n == 0) goto LAB_001e895e;\n  }\n  else {\n    iVar4 = 8;\n    pbVar10 = s;\n    pbVar11 = (byte *)"_GLOBAL_";\n    do {\n      if (iVar4 == 0) break;\n      iVar4 = iVar4 + -1;\n      bVar12 = *pbVar10 < *pbVar11;\n      bVar13 = *pbVar10 == *pbVar11;\n      pbVar10 = pbVar10 + (uint)bVar14 * -2 + 1;\n      pbVar11 = pbVar11 + (uint)bVar14 * -2 + 1;\n    } while (bVar13);\n    if ((((!bVar12 && !bVar13) == bVar12) && (s[9] == 0x4e)) &&\n       ((s[8] == s[10] && (pcVar5 = strchr(cplus_markers,(int)(char)s[8]), pcVar5 != (char *)0x0))))\n    {\n      string_append(declp,"{anonymous}");\n      s = (byte *)*mangled;\n      goto LAB_001e895e;\n    }\n    if (work->temp_start == -1) goto LAB_001e8b50;\n  }\n  string_appendn(declp,(char *)s,n);\n  s = (byte *)*mangled;\nLAB_001e895e:\n  *mangled = (char *)(s + n);\n  return;\n}" { (declaration "char cVar1;" primitive_type identifier ;) (declaration "char cVar2;" primitive_type identifier ;) (declaration "char *pcVar3;" primitive_type (pointer_declarator "*pcVar3" * identifier) ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "char *pcVar5;" primitive_type (pointer_declarator "*pcVar5" * identifier) ;) (declaration "size_t __n;" primitive_type identifier ;) (declaration "size_t sVar6;" primitive_type identifier ;) (declaration "char *pcVar7;" primitive_type (pointer_declarator "*pcVar7" * identifier) ;) (declaration "byte *s;" type_identifier (pointer_declarator "*s" * identifier) ;) (declaration "uint uVar8;" type_identifier identifier ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "byte *pbVar10;" type_identifier (pointer_declarator "*pbVar10" * identifier) ;) (declaration "byte *pbVar11;" type_identifier (pointer_declarator "*pbVar11" * identifier) ;) (declaration "bool bVar12;" primitive_type identifier ;) (declaration "bool bVar13;" primitive_type identifier ;) (declaration "byte bVar14;" type_identifier identifier ;) (declaration "char *args;" primitive_type (pointer_declarator "*args" * identifier) ;) (declaration "string arg;" type_identifier identifier ;) (declaration "string type_str;" type_identifier identifier ;) (expression_statement "bVar14 = 0;" (assignment_expression "bVar14 = 0" identifier = number_literal) ;) (expression_statement "pcVar5 = *mangled;" (assignment_expression "pcVar5 = *mangled" identifier = (pointer_expression "*mangled" * identifier)) ;) (expression_statement "uVar9 = work->options;" (assignment_expression "uVar9 = work->options" identifier = (field_expression "work->options" identifier -> field_identifier)) ;) (expression_statement "pcVar7 = pcVar5 + n;" (assignment_expression "pcVar7 = pcVar5 + n" identifier = (binary_expression "pcVar5 + n" identifier + identifier)) ;) (if_statement "if (((uVar9 & 0x1000) != 0) && (*pcVar7 == 'X')) {\n    pcVar7 = strchr(pcVar5,0x3c);\n    if ((pcVar7 == (char *)0x0) || (iVar4 = (int)pcVar7 - (int)pcVar5, n <= iVar4)) {\n      iVar4 = n;\n      if (n == 0) goto LAB_001e8bea;\n    }\n    else if (iVar4 == 0) goto LAB_001e8bea;\n    string_appendn(declp,pcVar5,iVar4);\n    pcVar5 = *mangled;\n    uVar9 = work->options;\nLAB_001e8bea:\n    arg.e = (char *)0x0;\n    arg.p = (char *)0x0;\n    arg.b = (char *)0x0;\n    *mangled = pcVar5 + n + 1;\n    if (work->temp_start == -1) {\n      work->temp_start = (int)declp->p - (int)declp->b;\n    }\n    work->options = uVar9 | 1;\n    string_append(declp,"<");\n    do {\n      if (arg.b != (char *)0x0) {\n        free(arg.b);\n        arg.p = (char *)0x0;\n        arg.e = (char *)0x0;\n        arg.b = (char *)0x0;\n      }\n      pcVar5 = *mangled;\n      cVar1 = *pcVar5;\n      if (cVar1 == 'S') {\nLAB_001e8d75:\n        if ((cVar1 + 0xadU & 0xfd) != 0) goto LAB_001e8d09;\n        pcVar7 = pcVar5 + 1;\n        *mangled = pcVar7;\n        cVar2 = pcVar5[1];\n        if (cVar2 == 'N') {\n          string_append(&arg,"-");\n          pcVar7 = *mangled;\n        }\n        else if (cVar2 != 'P') {\n          if (cVar2 == 'M') {\n            string_append(&arg,"-2147483648");\n            *mangled = *mangled + 1;\n            goto LAB_001e8cbb;\n          }\n          goto LAB_001e8d09;\n        }\n        *mangled = pcVar7 + 1;\n        uVar8 = (uint)(byte)pcVar7[1];\n        if ((_sch_istable[uVar8] & 4) == 0) goto LAB_001e8d09;\n        do {\n          char_str[0] = (char)uVar8;\n          if (char_str[0] != '\0') {\n            string_append(&arg,char_str);\n          }\n          pcVar5 = *mangled;\n          *mangled = pcVar5 + 1;\n          uVar8 = (uint)(byte)pcVar5[1];\n        } while ((_sch_istable[uVar8] & 4) != 0);\n        if (cVar1 == 'U') {\n          string_append(&arg,"U");\n        }\n      }\n      else if (cVar1 < 'T') {\n        if (cVar1 != 'A') {\nLAB_001e8d09:\n          string_append(declp,">");\n          if (arg.b != (char *)0x0) {\n            free(arg.b);\n          }\n          if (**mangled == '_') {\n            *mangled = *mangled + 1;\n          }\n          work->options = uVar9;\n          return;\n        }\n        *mangled = pcVar5 + 1;\n        __n = consume_count(mangled);\n        if (((int)__n < 1) || (sVar6 = strlen(*mangled), (int)sVar6 < (int)__n)) goto LAB_001e8d09;\n        string_append(&arg,"&");\n        pcVar5 = (char *)xmalloc(__n + 1);\n        memcpy(pcVar5,*mangled,__n);\n        pcVar5[__n] = '\0';\n        pcVar7 = cplus_demangle(pcVar5,work->options);\n        if (pcVar7 == (char *)0x0) {\n          string_appendn(&arg,*mangled,__n);\n        }\n        else {\n          if (*pcVar7 != '\0') {\n            string_append(&arg,pcVar7);\n          }\n          free(pcVar7);\n        }\n        *mangled = *mangled + __n;\n        free(pcVar5);\n      }\n      else {\n        if (cVar1 != 'T') {\n          if (cVar1 == 'U') goto LAB_001e8d75;\n          goto LAB_001e8d09;\n        }\n        *mangled = pcVar5 + 1;\n        iVar4 = do_type(work,mangled,&arg);\n        if (iVar4 == 0) goto LAB_001e8d09;\n      }\nLAB_001e8cbb:\n      string_appends(declp,&arg,(string *)arg.p);\n      if ((**mangled == '\0') || (**mangled == '_')) goto LAB_001e8d09;\n      string_append(declp,",");\n    } while( true );\n  }" if (parenthesized_expression "(((uVar9 & 0x1000) != 0) && (*pcVar7 == 'X'))" ( (binary_expression "((uVar9 & 0x1000) != 0) && (*pcVar7 == 'X')" (parenthesized_expression "((uVar9 & 0x1000) != 0)" ( (binary_expression "(uVar9 & 0x1000) != 0" (parenthesized_expression "(uVar9 & 0x1000)" ( (binary_expression "uVar9 & 0x1000" identifier & number_literal) )) != number_literal) )) && (parenthesized_expression "(*pcVar7 == 'X')" ( (binary_expression "*pcVar7 == 'X'" (pointer_expression "*pcVar7" * identifier) == (char_literal "'X'" ' character ')) ))) )) (compound_statement "{\n    pcVar7 = strchr(pcVar5,0x3c);\n    if ((pcVar7 == (char *)0x0) || (iVar4 = (int)pcVar7 - (int)pcVar5, n <= iVar4)) {\n      iVar4 = n;\n      if (n == 0) goto LAB_001e8bea;\n    }\n    else if (iVar4 == 0) goto LAB_001e8bea;\n    string_appendn(declp,pcVar5,iVar4);\n    pcVar5 = *mangled;\n    uVar9 = work->options;\nLAB_001e8bea:\n    arg.e = (char *)0x0;\n    arg.p = (char *)0x0;\n    arg.b = (char *)0x0;\n    *mangled = pcVar5 + n + 1;\n    if (work->temp_start == -1) {\n      work->temp_start = (int)declp->p - (int)declp->b;\n    }\n    work->options = uVar9 | 1;\n    string_append(declp,"<");\n    do {\n      if (arg.b != (char *)0x0) {\n        free(arg.b);\n        arg.p = (char *)0x0;\n        arg.e = (char *)0x0;\n        arg.b = (char *)0x0;\n      }\n      pcVar5 = *mangled;\n      cVar1 = *pcVar5;\n      if (cVar1 == 'S') {\nLAB_001e8d75:\n        if ((cVar1 + 0xadU & 0xfd) != 0) goto LAB_001e8d09;\n        pcVar7 = pcVar5 + 1;\n        *mangled = pcVar7;\n        cVar2 = pcVar5[1];\n        if (cVar2 == 'N') {\n          string_append(&arg,"-");\n          pcVar7 = *mangled;\n        }\n        else if (cVar2 != 'P') {\n          if (cVar2 == 'M') {\n            string_append(&arg,"-2147483648");\n            *mangled = *mangled + 1;\n            goto LAB_001e8cbb;\n          }\n          goto LAB_001e8d09;\n        }\n        *mangled = pcVar7 + 1;\n        uVar8 = (uint)(byte)pcVar7[1];\n        if ((_sch_istable[uVar8] & 4) == 0) goto LAB_001e8d09;\n        do {\n          char_str[0] = (char)uVar8;\n          if (char_str[0] != '\0') {\n            string_append(&arg,char_str);\n          }\n          pcVar5 = *mangled;\n          *mangled = pcVar5 + 1;\n          uVar8 = (uint)(byte)pcVar5[1];\n        } while ((_sch_istable[uVar8] & 4) != 0);\n        if (cVar1 == 'U') {\n          string_append(&arg,"U");\n        }\n      }\n      else if (cVar1 < 'T') {\n        if (cVar1 != 'A') {\nLAB_001e8d09:\n          string_append(declp,">");\n          if (arg.b != (char *)0x0) {\n            free(arg.b);\n          }\n          if (**mangled == '_') {\n            *mangled = *mangled + 1;\n          }\n          work->options = uVar9;\n          return;\n        }\n        *mangled = pcVar5 + 1;\n        __n = consume_count(mangled);\n        if (((int)__n < 1) || (sVar6 = strlen(*mangled), (int)sVar6 < (int)__n)) goto LAB_001e8d09;\n        string_append(&arg,"&");\n        pcVar5 = (char *)xmalloc(__n + 1);\n        memcpy(pcVar5,*mangled,__n);\n        pcVar5[__n] = '\0';\n        pcVar7 = cplus_demangle(pcVar5,work->options);\n        if (pcVar7 == (char *)0x0) {\n          string_appendn(&arg,*mangled,__n);\n        }\n        else {\n          if (*pcVar7 != '\0') {\n            string_append(&arg,pcVar7);\n          }\n          free(pcVar7);\n        }\n        *mangled = *mangled + __n;\n        free(pcVar5);\n      }\n      else {\n        if (cVar1 != 'T') {\n          if (cVar1 == 'U') goto LAB_001e8d75;\n          goto LAB_001e8d09;\n        }\n        *mangled = pcVar5 + 1;\n        iVar4 = do_type(work,mangled,&arg);\n        if (iVar4 == 0) goto LAB_001e8d09;\n      }\nLAB_001e8cbb:\n      string_appends(declp,&arg,(string *)arg.p);\n      if ((**mangled == '\0') || (**mangled == '_')) goto LAB_001e8d09;\n      string_append(declp,",");\n    } while( true );\n  }" { (expression_statement "pcVar7 = strchr(pcVar5,0x3c);" (assignment_expression "pcVar7 = strchr(pcVar5,0x3c)" identifier = (call_expression "strchr(pcVar5,0x3c)" identifier (argument_list "(pcVar5,0x3c)" ( identifier , number_literal )))) ;) (if_statement "if ((pcVar7 == (char *)0x0) || (iVar4 = (int)pcVar7 - (int)pcVar5, n <= iVar4)) {\n      iVar4 = n;\n      if (n == 0) goto LAB_001e8bea;\n    }\n    else if (iVar4 == 0) goto LAB_001e8bea;" if (parenthesized_expression "((pcVar7 == (char *)0x0) || (iVar4 = (int)pcVar7 - (int)pcVar5, n <= iVar4))" ( (binary_expression "(pcVar7 == (char *)0x0) || (iVar4 = (int)pcVar7 - (int)pcVar5, n <= iVar4)" (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)) )) || (parenthesized_expression "(iVar4 = (int)pcVar7 - (int)pcVar5, n <= iVar4)" ( (comma_expression "iVar4 = (int)pcVar7 - (int)pcVar5, n <= iVar4" (assignment_expression "iVar4 = (int)pcVar7 - (int)pcVar5" identifier = (binary_expression "(int)pcVar7 - (int)pcVar5" (cast_expression "(int)pcVar7" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pcVar5" ( (type_descriptor "int" primitive_type) ) identifier))) , (binary_expression "n <= iVar4" identifier <= identifier)) ))) )) (compound_statement "{\n      iVar4 = n;\n      if (n == 0) goto LAB_001e8bea;\n    }" { (expression_statement "iVar4 = n;" (assignment_expression "iVar4 = n" identifier = identifier) ;) (if_statement "if (n == 0) goto LAB_001e8bea;" if (parenthesized_expression "(n == 0)" ( (binary_expression "n == 0" identifier == number_literal) )) (goto_statement "goto LAB_001e8bea;" goto statement_identifier ;)) }) (else_clause "else if (iVar4 == 0) goto LAB_001e8bea;" else (if_statement "if (iVar4 == 0) goto LAB_001e8bea;" if (parenthesized_expression "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) )) (goto_statement "goto LAB_001e8bea;" goto statement_identifier ;)))) (expression_statement "string_appendn(declp,pcVar5,iVar4);" (call_expression "string_appendn(declp,pcVar5,iVar4)" identifier (argument_list "(declp,pcVar5,iVar4)" ( identifier , identifier , identifier ))) ;) (expression_statement "pcVar5 = *mangled;" (assignment_expression "pcVar5 = *mangled" identifier = (pointer_expression "*mangled" * identifier)) ;) (expression_statement "uVar9 = work->options;" (assignment_expression "uVar9 = work->options" identifier = (field_expression "work->options" identifier -> field_identifier)) ;) (labeled_statement "LAB_001e8bea:\n    arg.e = (char *)0x0;" statement_identifier : (expression_statement "arg.e = (char *)0x0;" (assignment_expression "arg.e = (char *)0x0" (field_expression "arg.e" identifier . field_identifier) = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;)) (expression_statement "arg.p = (char *)0x0;" (assignment_expression "arg.p = (char *)0x0" (field_expression "arg.p" identifier . field_identifier) = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "arg.b = (char *)0x0;" (assignment_expression "arg.b = (char *)0x0" (field_expression "arg.b" identifier . field_identifier) = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "*mangled = pcVar5 + n + 1;" (assignment_expression "*mangled = pcVar5 + n + 1" (pointer_expression "*mangled" * identifier) = (binary_expression "pcVar5 + n + 1" (binary_expression "pcVar5 + n" identifier + identifier) + number_literal)) ;) (if_statement "if (work->temp_start == -1) {\n      work->temp_start = (int)declp->p - (int)declp->b;\n    }" if (parenthesized_expression "(work->temp_start == -1)" ( (binary_expression "work->temp_start == -1" (field_expression "work->temp_start" identifier -> field_identifier) == number_literal) )) (compound_statement "{\n      work->temp_start = (int)declp->p - (int)declp->b;\n    }" { (expression_statement "work->temp_start = (int)declp->p - (int)declp->b;" (assignment_expression "work->temp_start = (int)declp->p - (int)declp->b" (field_expression "work->temp_start" identifier -> field_identifier) = (binary_expression "(int)declp->p - (int)declp->b" (cast_expression "(int)declp->p" ( (type_descriptor "int" primitive_type) ) (field_expression "declp->p" identifier -> field_identifier)) - (cast_expression "(int)declp->b" ( (type_descriptor "int" primitive_type) ) (field_expression "declp->b" identifier -> field_identifier)))) ;) })) (expression_statement "work->options = uVar9 | 1;" (assignment_expression "work->options = uVar9 | 1" (field_expression "work->options" identifier -> field_identifier) = (binary_expression "uVar9 | 1" identifier | number_literal)) ;) (expression_statement "string_append(declp,"<");" (call_expression "string_append(declp,"<")" identifier (argument_list "(declp,"<")" ( identifier , (string_literal ""<"" " string_content ") ))) ;) (do_statement "do {\n      if (arg.b != (char *)0x0) {\n        free(arg.b);\n        arg.p = (char *)0x0;\n        arg.e = (char *)0x0;\n        arg.b = (char *)0x0;\n      }\n      pcVar5 = *mangled;\n      cVar1 = *pcVar5;\n      if (cVar1 == 'S') {\nLAB_001e8d75:\n        if ((cVar1 + 0xadU & 0xfd) != 0) goto LAB_001e8d09;\n        pcVar7 = pcVar5 + 1;\n        *mangled = pcVar7;\n        cVar2 = pcVar5[1];\n        if (cVar2 == 'N') {\n          string_append(&arg,"-");\n          pcVar7 = *mangled;\n        }\n        else if (cVar2 != 'P') {\n          if (cVar2 == 'M') {\n            string_append(&arg,"-2147483648");\n            *mangled = *mangled + 1;\n            goto LAB_001e8cbb;\n          }\n          goto LAB_001e8d09;\n        }\n        *mangled = pcVar7 + 1;\n        uVar8 = (uint)(byte)pcVar7[1];\n        if ((_sch_istable[uVar8] & 4) == 0) goto LAB_001e8d09;\n        do {\n          char_str[0] = (char)uVar8;\n          if (char_str[0] != '\0') {\n            string_append(&arg,char_str);\n          }\n          pcVar5 = *mangled;\n          *mangled = pcVar5 + 1;\n          uVar8 = (uint)(byte)pcVar5[1];\n        } while ((_sch_istable[uVar8] & 4) != 0);\n        if (cVar1 == 'U') {\n          string_append(&arg,"U");\n        }\n      }\n      else if (cVar1 < 'T') {\n        if (cVar1 != 'A') {\nLAB_001e8d09:\n          string_append(declp,">");\n          if (arg.b != (char *)0x0) {\n            free(arg.b);\n          }\n          if (**mangled == '_') {\n            *mangled = *mangled + 1;\n          }\n          work->options = uVar9;\n          return;\n        }\n        *mangled = pcVar5 + 1;\n        __n = consume_count(mangled);\n        if (((int)__n < 1) || (sVar6 = strlen(*mangled), (int)sVar6 < (int)__n)) goto LAB_001e8d09;\n        string_append(&arg,"&");\n        pcVar5 = (char *)xmalloc(__n + 1);\n        memcpy(pcVar5,*mangled,__n);\n        pcVar5[__n] = '\0';\n        pcVar7 = cplus_demangle(pcVar5,work->options);\n        if (pcVar7 == (char *)0x0) {\n          string_appendn(&arg,*mangled,__n);\n        }\n        else {\n          if (*pcVar7 != '\0') {\n            string_append(&arg,pcVar7);\n          }\n          free(pcVar7);\n        }\n        *mangled = *mangled + __n;\n        free(pcVar5);\n      }\n      else {\n        if (cVar1 != 'T') {\n          if (cVar1 == 'U') goto LAB_001e8d75;\n          goto LAB_001e8d09;\n        }\n        *mangled = pcVar5 + 1;\n        iVar4 = do_type(work,mangled,&arg);\n        if (iVar4 == 0) goto LAB_001e8d09;\n      }\nLAB_001e8cbb:\n      string_appends(declp,&arg,(string *)arg.p);\n      if ((**mangled == '\0') || (**mangled == '_')) goto LAB_001e8d09;\n      string_append(declp,",");\n    } while( true );" do (compound_statement "{\n      if (arg.b != (char *)0x0) {\n        free(arg.b);\n        arg.p = (char *)0x0;\n        arg.e = (char *)0x0;\n        arg.b = (char *)0x0;\n      }\n      pcVar5 = *mangled;\n      cVar1 = *pcVar5;\n      if (cVar1 == 'S') {\nLAB_001e8d75:\n        if ((cVar1 + 0xadU & 0xfd) != 0) goto LAB_001e8d09;\n        pcVar7 = pcVar5 + 1;\n        *mangled = pcVar7;\n        cVar2 = pcVar5[1];\n        if (cVar2 == 'N') {\n          string_append(&arg,"-");\n          pcVar7 = *mangled;\n        }\n        else if (cVar2 != 'P') {\n          if (cVar2 == 'M') {\n            string_append(&arg,"-2147483648");\n            *mangled = *mangled + 1;\n            goto LAB_001e8cbb;\n          }\n          goto LAB_001e8d09;\n        }\n        *mangled = pcVar7 + 1;\n        uVar8 = (uint)(byte)pcVar7[1];\n        if ((_sch_istable[uVar8] & 4) == 0) goto LAB_001e8d09;\n        do {\n          char_str[0] = (char)uVar8;\n          if (char_str[0] != '\0') {\n            string_append(&arg,char_str);\n          }\n          pcVar5 = *mangled;\n          *mangled = pcVar5 + 1;\n          uVar8 = (uint)(byte)pcVar5[1];\n        } while ((_sch_istable[uVar8] & 4) != 0);\n        if (cVar1 == 'U') {\n          string_append(&arg,"U");\n        }\n      }\n      else if (cVar1 < 'T') {\n        if (cVar1 != 'A') {\nLAB_001e8d09:\n          string_append(declp,">");\n          if (arg.b != (char *)0x0) {\n            free(arg.b);\n          }\n          if (**mangled == '_') {\n            *mangled = *mangled + 1;\n          }\n          work->options = uVar9;\n          return;\n        }\n        *mangled = pcVar5 + 1;\n        __n = consume_count(mangled);\n        if (((int)__n < 1) || (sVar6 = strlen(*mangled), (int)sVar6 < (int)__n)) goto LAB_001e8d09;\n        string_append(&arg,"&");\n        pcVar5 = (char *)xmalloc(__n + 1);\n        memcpy(pcVar5,*mangled,__n);\n        pcVar5[__n] = '\0';\n        pcVar7 = cplus_demangle(pcVar5,work->options);\n        if (pcVar7 == (char *)0x0) {\n          string_appendn(&arg,*mangled,__n);\n        }\n        else {\n          if (*pcVar7 != '\0') {\n            string_append(&arg,pcVar7);\n          }\n          free(pcVar7);\n        }\n        *mangled = *mangled + __n;\n        free(pcVar5);\n      }\n      else {\n        if (cVar1 != 'T') {\n          if (cVar1 == 'U') goto LAB_001e8d75;\n          goto LAB_001e8d09;\n        }\n        *mangled = pcVar5 + 1;\n        iVar4 = do_type(work,mangled,&arg);\n        if (iVar4 == 0) goto LAB_001e8d09;\n      }\nLAB_001e8cbb:\n      string_appends(declp,&arg,(string *)arg.p);\n      if ((**mangled == '\0') || (**mangled == '_')) goto LAB_001e8d09;\n      string_append(declp,",");\n    }" { (if_statement "if (arg.b != (char *)0x0) {\n        free(arg.b);\n        arg.p = (char *)0x0;\n        arg.e = (char *)0x0;\n        arg.b = (char *)0x0;\n      }" if (parenthesized_expression "(arg.b != (char *)0x0)" ( (binary_expression "arg.b != (char *)0x0" (field_expression "arg.b" identifier . field_identifier) != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        free(arg.b);\n        arg.p = (char *)0x0;\n        arg.e = (char *)0x0;\n        arg.b = (char *)0x0;\n      }" { (expression_statement "free(arg.b);" (call_expression "free(arg.b)" identifier (argument_list "(arg.b)" ( (field_expression "arg.b" identifier . field_identifier) ))) ;) (expression_statement "arg.p = (char *)0x0;" (assignment_expression "arg.p = (char *)0x0" (field_expression "arg.p" identifier . field_identifier) = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "arg.e = (char *)0x0;" (assignment_expression "arg.e = (char *)0x0" (field_expression "arg.e" identifier . field_identifier) = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "arg.b = (char *)0x0;" (assignment_expression "arg.b = (char *)0x0" (field_expression "arg.b" identifier . field_identifier) = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) })) (expression_statement "pcVar5 = *mangled;" (assignment_expression "pcVar5 = *mangled" identifier = (pointer_expression "*mangled" * identifier)) ;) (expression_statement "cVar1 = *pcVar5;" (assignment_expression "cVar1 = *pcVar5" identifier = (pointer_expression "*pcVar5" * identifier)) ;) (if_statement "if (cVar1 == 'S') {\nLAB_001e8d75:\n        if ((cVar1 + 0xadU & 0xfd) != 0) goto LAB_001e8d09;\n        pcVar7 = pcVar5 + 1;\n        *mangled = pcVar7;\n        cVar2 = pcVar5[1];\n        if (cVar2 == 'N') {\n          string_append(&arg,"-");\n          pcVar7 = *mangled;\n        }\n        else if (cVar2 != 'P') {\n          if (cVar2 == 'M') {\n            string_append(&arg,"-2147483648");\n            *mangled = *mangled + 1;\n            goto LAB_001e8cbb;\n          }\n          goto LAB_001e8d09;\n        }\n        *mangled = pcVar7 + 1;\n        uVar8 = (uint)(byte)pcVar7[1];\n        if ((_sch_istable[uVar8] & 4) == 0) goto LAB_001e8d09;\n        do {\n          char_str[0] = (char)uVar8;\n          if (char_str[0] != '\0') {\n            string_append(&arg,char_str);\n          }\n          pcVar5 = *mangled;\n          *mangled = pcVar5 + 1;\n          uVar8 = (uint)(byte)pcVar5[1];\n        } while ((_sch_istable[uVar8] & 4) != 0);\n        if (cVar1 == 'U') {\n          string_append(&arg,"U");\n        }\n      }\n      else if (cVar1 < 'T') {\n        if (cVar1 != 'A') {\nLAB_001e8d09:\n          string_append(declp,">");\n          if (arg.b != (char *)0x0) {\n            free(arg.b);\n          }\n          if (**mangled == '_') {\n            *mangled = *mangled + 1;\n          }\n          work->options = uVar9;\n          return;\n        }\n        *mangled = pcVar5 + 1;\n        __n = consume_count(mangled);\n        if (((int)__n < 1) || (sVar6 = strlen(*mangled), (int)sVar6 < (int)__n)) goto LAB_001e8d09;\n        string_append(&arg,"&");\n        pcVar5 = (char *)xmalloc(__n + 1);\n        memcpy(pcVar5,*mangled,__n);\n        pcVar5[__n] = '\0';\n        pcVar7 = cplus_demangle(pcVar5,work->options);\n        if (pcVar7 == (char *)0x0) {\n          string_appendn(&arg,*mangled,__n);\n        }\n        else {\n          if (*pcVar7 != '\0') {\n            string_append(&arg,pcVar7);\n          }\n          free(pcVar7);\n        }\n        *mangled = *mangled + __n;\n        free(pcVar5);\n      }\n      else {\n        if (cVar1 != 'T') {\n          if (cVar1 == 'U') goto LAB_001e8d75;\n          goto LAB_001e8d09;\n        }\n        *mangled = pcVar5 + 1;\n        iVar4 = do_type(work,mangled,&arg);\n        if (iVar4 == 0) goto LAB_001e8d09;\n      }" if (parenthesized_expression "(cVar1 == 'S')" ( (binary_expression "cVar1 == 'S'" identifier == (char_literal "'S'" ' character ')) )) (compound_statement "{\nLAB_001e8d75:\n        if ((cVar1 + 0xadU & 0xfd) != 0) goto LAB_001e8d09;\n        pcVar7 = pcVar5 + 1;\n        *mangled = pcVar7;\n        cVar2 = pcVar5[1];\n        if (cVar2 == 'N') {\n          string_append(&arg,"-");\n          pcVar7 = *mangled;\n        }\n        else if (cVar2 != 'P') {\n          if (cVar2 == 'M') {\n            string_append(&arg,"-2147483648");\n            *mangled = *mangled + 1;\n            goto LAB_001e8cbb;\n          }\n          goto LAB_001e8d09;\n        }\n        *mangled = pcVar7 + 1;\n        uVar8 = (uint)(byte)pcVar7[1];\n        if ((_sch_istable[uVar8] & 4) == 0) goto LAB_001e8d09;\n        do {\n          char_str[0] = (char)uVar8;\n          if (char_str[0] != '\0') {\n            string_append(&arg,char_str);\n          }\n          pcVar5 = *mangled;\n          *mangled = pcVar5 + 1;\n          uVar8 = (uint)(byte)pcVar5[1];\n        } while ((_sch_istable[uVar8] & 4) != 0);\n        if (cVar1 == 'U') {\n          string_append(&arg,"U");\n        }\n      }" { (labeled_statement "LAB_001e8d75:\n        if ((cVar1 + 0xadU & 0xfd) != 0) goto LAB_001e8d09;" statement_identifier : (if_statement "if ((cVar1 + 0xadU & 0xfd) != 0) goto LAB_001e8d09;" if (parenthesized_expression "((cVar1 + 0xadU & 0xfd) != 0)" ( (binary_expression "(cVar1 + 0xadU & 0xfd) != 0" (parenthesized_expression "(cVar1 + 0xadU & 0xfd)" ( (binary_expression "cVar1 + 0xadU & 0xfd" (binary_expression "cVar1 + 0xadU" identifier + number_literal) & number_literal) )) != number_literal) )) (goto_statement "goto LAB_001e8d09;" goto statement_identifier ;))) (expression_statement "pcVar7 = pcVar5 + 1;" (assignment_expression "pcVar7 = pcVar5 + 1" identifier = (binary_expression "pcVar5 + 1" identifier + number_literal)) ;) (expression_statement "*mangled = pcVar7;" (assignment_expression "*mangled = pcVar7" (pointer_expression "*mangled" * identifier) = identifier) ;) (expression_statement "cVar2 = pcVar5[1];" (assignment_expression "cVar2 = pcVar5[1]" identifier = (subscript_expression "pcVar5[1]" identifier [ number_literal ])) ;) (if_statement "if (cVar2 == 'N') {\n          string_append(&arg,"-");\n          pcVar7 = *mangled;\n        }\n        else if (cVar2 != 'P') {\n          if (cVar2 == 'M') {\n            string_append(&arg,"-2147483648");\n            *mangled = *mangled + 1;\n            goto LAB_001e8cbb;\n          }\n          goto LAB_001e8d09;\n        }" if (parenthesized_expression "(cVar2 == 'N')" ( (binary_expression "cVar2 == 'N'" identifier == (char_literal "'N'" ' character ')) )) (compound_statement "{\n          string_append(&arg,"-");\n          pcVar7 = *mangled;\n        }" { (expression_statement "string_append(&arg,"-");" (call_expression "string_append(&arg,"-")" identifier (argument_list "(&arg,"-")" ( (pointer_expression "&arg" & identifier) , (string_literal ""-"" " string_content ") ))) ;) (expression_statement "pcVar7 = *mangled;" (assignment_expression "pcVar7 = *mangled" identifier = (pointer_expression "*mangled" * identifier)) ;) }) (else_clause "else if (cVar2 != 'P') {\n          if (cVar2 == 'M') {\n            string_append(&arg,"-2147483648");\n            *mangled = *mangled + 1;\n            goto LAB_001e8cbb;\n          }\n          goto LAB_001e8d09;\n        }" else (if_statement "if (cVar2 != 'P') {\n          if (cVar2 == 'M') {\n            string_append(&arg,"-2147483648");\n            *mangled = *mangled + 1;\n            goto LAB_001e8cbb;\n          }\n          goto LAB_001e8d09;\n        }" if (parenthesized_expression "(cVar2 != 'P')" ( (binary_expression "cVar2 != 'P'" identifier != (char_literal "'P'" ' character ')) )) (compound_statement "{\n          if (cVar2 == 'M') {\n            string_append(&arg,"-2147483648");\n            *mangled = *mangled + 1;\n            goto LAB_001e8cbb;\n          }\n          goto LAB_001e8d09;\n        }" { (if_statement "if (cVar2 == 'M') {\n            string_append(&arg,"-2147483648");\n            *mangled = *mangled + 1;\n            goto LAB_001e8cbb;\n          }" if (parenthesized_expression "(cVar2 == 'M')" ( (binary_expression "cVar2 == 'M'" identifier == (char_literal "'M'" ' character ')) )) (compound_statement "{\n            string_append(&arg,"-2147483648");\n            *mangled = *mangled + 1;\n            goto LAB_001e8cbb;\n          }" { (expression_statement "string_append(&arg,"-2147483648");" (call_expression "string_append(&arg,"-2147483648")" identifier (argument_list "(&arg,"-2147483648")" ( (pointer_expression "&arg" & identifier) , (string_literal ""-2147483648"" " string_content ") ))) ;) (expression_statement "*mangled = *mangled + 1;" (assignment_expression "*mangled = *mangled + 1" (pointer_expression "*mangled" * identifier) = (binary_expression "*mangled + 1" (pointer_expression "*mangled" * identifier) + number_literal)) ;) (goto_statement "goto LAB_001e8cbb;" goto statement_identifier ;) })) (goto_statement "goto LAB_001e8d09;" goto statement_identifier ;) })))) (expression_statement "*mangled = pcVar7 + 1;" (assignment_expression "*mangled = pcVar7 + 1" (pointer_expression "*mangled" * identifier) = (binary_expression "pcVar7 + 1" identifier + number_literal)) ;) (expression_statement "uVar8 = (uint)(byte)pcVar7[1];" (assignment_expression "uVar8 = (uint)(byte)pcVar7[1]" identifier = (cast_expression "(uint)(byte)pcVar7[1]" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(byte)pcVar7[1]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "pcVar7[1]" identifier [ number_literal ])))) ;) (if_statement "if ((_sch_istable[uVar8] & 4) == 0) goto LAB_001e8d09;" if (parenthesized_expression "((_sch_istable[uVar8] & 4) == 0)" ( (binary_expression "(_sch_istable[uVar8] & 4) == 0" (parenthesized_expression "(_sch_istable[uVar8] & 4)" ( (binary_expression "_sch_istable[uVar8] & 4" (subscript_expression "_sch_istable[uVar8]" identifier [ identifier ]) & number_literal) )) == number_literal) )) (goto_statement "goto LAB_001e8d09;" goto statement_identifier ;)) (do_statement "do {\n          char_str[0] = (char)uVar8;\n          if (char_str[0] != '\0') {\n            string_append(&arg,char_str);\n          }\n          pcVar5 = *mangled;\n          *mangled = pcVar5 + 1;\n          uVar8 = (uint)(byte)pcVar5[1];\n        } while ((_sch_istable[uVar8] & 4) != 0);" do (compound_statement "{\n          char_str[0] = (char)uVar8;\n          if (char_str[0] != '\0') {\n            string_append(&arg,char_str);\n          }\n          pcVar5 = *mangled;\n          *mangled = pcVar5 + 1;\n          uVar8 = (uint)(byte)pcVar5[1];\n        }" { (expression_statement "char_str[0] = (char)uVar8;" (assignment_expression "char_str[0] = (char)uVar8" (subscript_expression "char_str[0]" identifier [ number_literal ]) = (cast_expression "(char)uVar8" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (if_statement "if (char_str[0] != '\0') {\n            string_append(&arg,char_str);\n          }" if (parenthesized_expression "(char_str[0] != '\0')" ( (binary_expression "char_str[0] != '\0'" (subscript_expression "char_str[0]" identifier [ number_literal ]) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n            string_append(&arg,char_str);\n          }" { (expression_statement "string_append(&arg,char_str);" (call_expression "string_append(&arg,char_str)" identifier (argument_list "(&arg,char_str)" ( (pointer_expression "&arg" & identifier) , identifier ))) ;) })) (expression_statement "pcVar5 = *mangled;" (assignment_expression "pcVar5 = *mangled" identifier = (pointer_expression "*mangled" * identifier)) ;) (expression_statement "*mangled = pcVar5 + 1;" (assignment_expression "*mangled = pcVar5 + 1" (pointer_expression "*mangled" * identifier) = (binary_expression "pcVar5 + 1" identifier + number_literal)) ;) (expression_statement "uVar8 = (uint)(byte)pcVar5[1];" (assignment_expression "uVar8 = (uint)(byte)pcVar5[1]" identifier = (cast_expression "(uint)(byte)pcVar5[1]" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(byte)pcVar5[1]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "pcVar5[1]" identifier [ number_literal ])))) ;) }) while (parenthesized_expression "((_sch_istable[uVar8] & 4) != 0)" ( (binary_expression "(_sch_istable[uVar8] & 4) != 0" (parenthesized_expression "(_sch_istable[uVar8] & 4)" ( (binary_expression "_sch_istable[uVar8] & 4" (subscript_expression "_sch_istable[uVar8]" identifier [ identifier ]) & number_literal) )) != number_literal) )) ;) (if_statement "if (cVar1 == 'U') {\n          string_append(&arg,"U");\n        }" if (parenthesized_expression "(cVar1 == 'U')" ( (binary_expression "cVar1 == 'U'" identifier == (char_literal "'U'" ' character ')) )) (compound_statement "{\n          string_append(&arg,"U");\n        }" { (expression_statement "string_append(&arg,"U");" (call_expression "string_append(&arg,"U")" identifier (argument_list "(&arg,"U")" ( (pointer_expression "&arg" & identifier) , (string_literal ""U"" " string_content ") ))) ;) })) }) (else_clause "else if (cVar1 < 'T') {\n        if (cVar1 != 'A') {\nLAB_001e8d09:\n          string_append(declp,">");\n          if (arg.b != (char *)0x0) {\n            free(arg.b);\n          }\n          if (**mangled == '_') {\n            *mangled = *mangled + 1;\n          }\n          work->options = uVar9;\n          return;\n        }\n        *mangled = pcVar5 + 1;\n        __n = consume_count(mangled);\n        if (((int)__n < 1) || (sVar6 = strlen(*mangled), (int)sVar6 < (int)__n)) goto LAB_001e8d09;\n        string_append(&arg,"&");\n        pcVar5 = (char *)xmalloc(__n + 1);\n        memcpy(pcVar5,*mangled,__n);\n        pcVar5[__n] = '\0';\n        pcVar7 = cplus_demangle(pcVar5,work->options);\n        if (pcVar7 == (char *)0x0) {\n          string_appendn(&arg,*mangled,__n);\n        }\n        else {\n          if (*pcVar7 != '\0') {\n            string_append(&arg,pcVar7);\n          }\n          free(pcVar7);\n        }\n        *mangled = *mangled + __n;\n        free(pcVar5);\n      }\n      else {\n        if (cVar1 != 'T') {\n          if (cVar1 == 'U') goto LAB_001e8d75;\n          goto LAB_001e8d09;\n        }\n        *mangled = pcVar5 + 1;\n        iVar4 = do_type(work,mangled,&arg);\n        if (iVar4 == 0) goto LAB_001e8d09;\n      }" else (if_statement "if (cVar1 < 'T') {\n        if (cVar1 != 'A') {\nLAB_001e8d09:\n          string_append(declp,">");\n          if (arg.b != (char *)0x0) {\n            free(arg.b);\n          }\n          if (**mangled == '_') {\n            *mangled = *mangled + 1;\n          }\n          work->options = uVar9;\n          return;\n        }\n        *mangled = pcVar5 + 1;\n        __n = consume_count(mangled);\n        if (((int)__n < 1) || (sVar6 = strlen(*mangled), (int)sVar6 < (int)__n)) goto LAB_001e8d09;\n        string_append(&arg,"&");\n        pcVar5 = (char *)xmalloc(__n + 1);\n        memcpy(pcVar5,*mangled,__n);\n        pcVar5[__n] = '\0';\n        pcVar7 = cplus_demangle(pcVar5,work->options);\n        if (pcVar7 == (char *)0x0) {\n          string_appendn(&arg,*mangled,__n);\n        }\n        else {\n          if (*pcVar7 != '\0') {\n            string_append(&arg,pcVar7);\n          }\n          free(pcVar7);\n        }\n        *mangled = *mangled + __n;\n        free(pcVar5);\n      }\n      else {\n        if (cVar1 != 'T') {\n          if (cVar1 == 'U') goto LAB_001e8d75;\n          goto LAB_001e8d09;\n        }\n        *mangled = pcVar5 + 1;\n        iVar4 = do_type(work,mangled,&arg);\n        if (iVar4 == 0) goto LAB_001e8d09;\n      }" if (parenthesized_expression "(cVar1 < 'T')" ( (binary_expression "cVar1 < 'T'" identifier < (char_literal "'T'" ' character ')) )) (compound_statement "{\n        if (cVar1 != 'A') {\nLAB_001e8d09:\n          string_append(declp,">");\n          if (arg.b != (char *)0x0) {\n            free(arg.b);\n          }\n          if (**mangled == '_') {\n            *mangled = *mangled + 1;\n          }\n          work->options = uVar9;\n          return;\n        }\n        *mangled = pcVar5 + 1;\n        __n = consume_count(mangled);\n        if (((int)__n < 1) || (sVar6 = strlen(*mangled), (int)sVar6 < (int)__n)) goto LAB_001e8d09;\n        string_append(&arg,"&");\n        pcVar5 = (char *)xmalloc(__n + 1);\n        memcpy(pcVar5,*mangled,__n);\n        pcVar5[__n] = '\0';\n        pcVar7 = cplus_demangle(pcVar5,work->options);\n        if (pcVar7 == (char *)0x0) {\n          string_appendn(&arg,*mangled,__n);\n        }\n        else {\n          if (*pcVar7 != '\0') {\n            string_append(&arg,pcVar7);\n          }\n          free(pcVar7);\n        }\n        *mangled = *mangled + __n;\n        free(pcVar5);\n      }" { (if_statement "if (cVar1 != 'A') {\nLAB_001e8d09:\n          string_append(declp,">");\n          if (arg.b != (char *)0x0) {\n            free(arg.b);\n          }\n          if (**mangled == '_') {\n            *mangled = *mangled + 1;\n          }\n          work->options = uVar9;\n          return;\n        }" if (parenthesized_expression "(cVar1 != 'A')" ( (binary_expression "cVar1 != 'A'" identifier != (char_literal "'A'" ' character ')) )) (compound_statement "{\nLAB_001e8d09:\n          string_append(declp,">");\n          if (arg.b != (char *)0x0) {\n            free(arg.b);\n          }\n          if (**mangled == '_') {\n            *mangled = *mangled + 1;\n          }\n          work->options = uVar9;\n          return;\n        }" { (labeled_statement "LAB_001e8d09:\n          string_append(declp,">");" statement_identifier : (expression_statement "string_append(declp,">");" (call_expression "string_append(declp,">")" identifier (argument_list "(declp,">")" ( identifier , (string_literal "">"" " string_content ") ))) ;)) (if_statement "if (arg.b != (char *)0x0) {\n            free(arg.b);\n          }" if (parenthesized_expression "(arg.b != (char *)0x0)" ( (binary_expression "arg.b != (char *)0x0" (field_expression "arg.b" identifier . field_identifier) != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            free(arg.b);\n          }" { (expression_statement "free(arg.b);" (call_expression "free(arg.b)" identifier (argument_list "(arg.b)" ( (field_expression "arg.b" identifier . field_identifier) ))) ;) })) (if_statement "if (**mangled == '_') {\n            *mangled = *mangled + 1;\n          }" if (parenthesized_expression "(**mangled == '_')" ( (binary_expression "**mangled == '_'" (pointer_expression "**mangled" * (pointer_expression "*mangled" * identifier)) == (char_literal "'_'" ' character ')) )) (compound_statement "{\n            *mangled = *mangled + 1;\n          }" { (expression_statement "*mangled = *mangled + 1;" (assignment_expression "*mangled = *mangled + 1" (pointer_expression "*mangled" * identifier) = (binary_expression "*mangled + 1" (pointer_expression "*mangled" * identifier) + number_literal)) ;) })) (expression_statement "work->options = uVar9;" (assignment_expression "work->options = uVar9" (field_expression "work->options" identifier -> field_identifier) = identifier) ;) (return_statement "return;" return ;) })) (expression_statement "*mangled = pcVar5 + 1;" (assignment_expression "*mangled = pcVar5 + 1" (pointer_expression "*mangled" * identifier) = (binary_expression "pcVar5 + 1" identifier + number_literal)) ;) (expression_statement "__n = consume_count(mangled);" (assignment_expression "__n = consume_count(mangled)" identifier = (call_expression "consume_count(mangled)" identifier (argument_list "(mangled)" ( identifier )))) ;) (if_statement "if (((int)__n < 1) || (sVar6 = strlen(*mangled), (int)sVar6 < (int)__n)) goto LAB_001e8d09;" if (parenthesized_expression "(((int)__n < 1) || (sVar6 = strlen(*mangled), (int)sVar6 < (int)__n))" ( (binary_expression "((int)__n < 1) || (sVar6 = strlen(*mangled), (int)sVar6 < (int)__n)" (parenthesized_expression "((int)__n < 1)" ( (binary_expression "(int)__n < 1" (cast_expression "(int)__n" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) || (parenthesized_expression "(sVar6 = strlen(*mangled), (int)sVar6 < (int)__n)" ( (comma_expression "sVar6 = strlen(*mangled), (int)sVar6 < (int)__n" (assignment_expression "sVar6 = strlen(*mangled)" identifier = (call_expression "strlen(*mangled)" identifier (argument_list "(*mangled)" ( (pointer_expression "*mangled" * identifier) )))) , (binary_expression "(int)sVar6 < (int)__n" (cast_expression "(int)sVar6" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)__n" ( (type_descriptor "int" primitive_type) ) identifier))) ))) )) (goto_statement "goto LAB_001e8d09;" goto statement_identifier ;)) (expression_statement "string_append(&arg,"&");" (call_expression "string_append(&arg,"&")" identifier (argument_list "(&arg,"&")" ( (pointer_expression "&arg" & identifier) , (string_literal ""&"" " string_content ") ))) ;) (expression_statement "pcVar5 = (char *)xmalloc(__n + 1);" (assignment_expression "pcVar5 = (char *)xmalloc(__n + 1)" identifier = (cast_expression "(char *)xmalloc(__n + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(__n + 1)" identifier (argument_list "(__n + 1)" ( (binary_expression "__n + 1" identifier + number_literal) ))))) ;) (expression_statement "memcpy(pcVar5,*mangled,__n);" (call_expression "memcpy(pcVar5,*mangled,__n)" identifier (argument_list "(pcVar5,*mangled,__n)" ( identifier , (pointer_expression "*mangled" * identifier) , identifier ))) ;) (expression_statement "pcVar5[__n] = '\0';" (assignment_expression "pcVar5[__n] = '\0'" (subscript_expression "pcVar5[__n]" identifier [ identifier ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "pcVar7 = cplus_demangle(pcVar5,work->options);" (assignment_expression "pcVar7 = cplus_demangle(pcVar5,work->options)" identifier = (call_expression "cplus_demangle(pcVar5,work->options)" identifier (argument_list "(pcVar5,work->options)" ( identifier , (field_expression "work->options" identifier -> field_identifier) )))) ;) (if_statement "if (pcVar7 == (char *)0x0) {\n          string_appendn(&arg,*mangled,__n);\n        }\n        else {\n          if (*pcVar7 != '\0') {\n            string_append(&arg,pcVar7);\n          }\n          free(pcVar7);\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          string_appendn(&arg,*mangled,__n);\n        }" { (expression_statement "string_appendn(&arg,*mangled,__n);" (call_expression "string_appendn(&arg,*mangled,__n)" identifier (argument_list "(&arg,*mangled,__n)" ( (pointer_expression "&arg" & identifier) , (pointer_expression "*mangled" * identifier) , identifier ))) ;) }) (else_clause "else {\n          if (*pcVar7 != '\0') {\n            string_append(&arg,pcVar7);\n          }\n          free(pcVar7);\n        }" else (compound_statement "{\n          if (*pcVar7 != '\0') {\n            string_append(&arg,pcVar7);\n          }\n          free(pcVar7);\n        }" { (if_statement "if (*pcVar7 != '\0') {\n            string_append(&arg,pcVar7);\n          }" if (parenthesized_expression "(*pcVar7 != '\0')" ( (binary_expression "*pcVar7 != '\0'" (pointer_expression "*pcVar7" * identifier) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n            string_append(&arg,pcVar7);\n          }" { (expression_statement "string_append(&arg,pcVar7);" (call_expression "string_append(&arg,pcVar7)" identifier (argument_list "(&arg,pcVar7)" ( (pointer_expression "&arg" & identifier) , identifier ))) ;) })) (expression_statement "free(pcVar7);" (call_expression "free(pcVar7)" identifier (argument_list "(pcVar7)" ( identifier ))) ;) }))) (expression_statement "*mangled = *mangled + __n;" (assignment_expression "*mangled = *mangled + __n" (pointer_expression "*mangled" * identifier) = (binary_expression "*mangled + __n" (pointer_expression "*mangled" * identifier) + identifier)) ;) (expression_statement "free(pcVar5);" (call_expression "free(pcVar5)" identifier (argument_list "(pcVar5)" ( identifier ))) ;) }) (else_clause "else {\n        if (cVar1 != 'T') {\n          if (cVar1 == 'U') goto LAB_001e8d75;\n          goto LAB_001e8d09;\n        }\n        *mangled = pcVar5 + 1;\n        iVar4 = do_type(work,mangled,&arg);\n        if (iVar4 == 0) goto LAB_001e8d09;\n      }" else (compound_statement "{\n        if (cVar1 != 'T') {\n          if (cVar1 == 'U') goto LAB_001e8d75;\n          goto LAB_001e8d09;\n        }\n        *mangled = pcVar5 + 1;\n        iVar4 = do_type(work,mangled,&arg);\n        if (iVar4 == 0) goto LAB_001e8d09;\n      }" { (if_statement "if (cVar1 != 'T') {\n          if (cVar1 == 'U') goto LAB_001e8d75;\n          goto LAB_001e8d09;\n        }" if (parenthesized_expression "(cVar1 != 'T')" ( (binary_expression "cVar1 != 'T'" identifier != (char_literal "'T'" ' character ')) )) (compound_statement "{\n          if (cVar1 == 'U') goto LAB_001e8d75;\n          goto LAB_001e8d09;\n        }" { (if_statement "if (cVar1 == 'U') goto LAB_001e8d75;" if (parenthesized_expression "(cVar1 == 'U')" ( (binary_expression "cVar1 == 'U'" identifier == (char_literal "'U'" ' character ')) )) (goto_statement "goto LAB_001e8d75;" goto statement_identifier ;)) (goto_statement "goto LAB_001e8d09;" goto statement_identifier ;) })) (expression_statement "*mangled = pcVar5 + 1;" (assignment_expression "*mangled = pcVar5 + 1" (pointer_expression "*mangled" * identifier) = (binary_expression "pcVar5 + 1" identifier + number_literal)) ;) (expression_statement "iVar4 = do_type(work,mangled,&arg);" (assignment_expression "iVar4 = do_type(work,mangled,&arg)" identifier = (call_expression "do_type(work,mangled,&arg)" identifier (argument_list "(work,mangled,&arg)" ( identifier , identifier , (pointer_expression "&arg" & identifier) )))) ;) (if_statement "if (iVar4 == 0) goto LAB_001e8d09;" if (parenthesized_expression "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) )) (goto_statement "goto LAB_001e8d09;" goto statement_identifier ;)) }))))) (labeled_statement "LAB_001e8cbb:\n      string_appends(declp,&arg,(string *)arg.p);" statement_identifier : (expression_statement "string_appends(declp,&arg,(string *)arg.p);" (call_expression "string_appends(declp,&arg,(string *)arg.p)" identifier (argument_list "(declp,&arg,(string *)arg.p)" ( identifier , (pointer_expression "&arg" & identifier) , (cast_expression "(string *)arg.p" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "arg.p" identifier . field_identifier)) ))) ;)) (if_statement "if ((**mangled == '\0') || (**mangled == '_')) goto LAB_001e8d09;" if (parenthesized_expression "((**mangled == '\0') || (**mangled == '_'))" ( (binary_expression "(**mangled == '\0') || (**mangled == '_')" (parenthesized_expression "(**mangled == '\0')" ( (binary_expression "**mangled == '\0'" (pointer_expression "**mangled" * (pointer_expression "*mangled" * identifier)) == (char_literal "'\0'" ' escape_sequence ')) )) || (parenthesized_expression "(**mangled == '_')" ( (binary_expression "**mangled == '_'" (pointer_expression "**mangled" * (pointer_expression "*mangled" * identifier)) == (char_literal "'_'" ' character ')) ))) )) (goto_statement "goto LAB_001e8d09;" goto statement_identifier ;)) (expression_statement "string_append(declp,",");" (call_expression "string_append(declp,",")" identifier (argument_list "(declp,",")" ( identifier , (string_literal "","" " string_content ") ))) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })) (if_statement "if (((uVar9 & 0x1800) == 0) || (pcVar3 = strstr(pcVar5,"__pt__"), pcVar3 == (char *)0x0)) {\nLAB_001e88a9:\n    if ((uVar9 & 0x2100) != 0) {\n      pcVar3 = strstr(pcVar5,"__tm__");\n      if (((pcVar3 == (char *)0x0) && (pcVar3 = strstr(pcVar5,"__ps__"), pcVar3 == (char *)0x0)) &&\n         (pcVar3 = strstr(pcVar5,"__pt__"), pcVar3 == (char *)0x0)) {\n        pcVar3 = strstr(pcVar5,"__S");\n        if (pcVar3 == (char *)0x0) goto LAB_001e88f1;\n        args = pcVar3 + 3;\n      }\n      else {\n        args = pcVar3 + 6;\n      }\n      iVar4 = consume_count(&args);\n      if (((iVar4 != -1) && (pcVar7 == args + iVar4)) && (*args == '_')) goto LAB_001e8979;\n    }\n  }\n  else {\n    args = pcVar3 + 6;\n    iVar4 = consume_count(&args);\n    if (iVar4 != -1) {\n      if ((pcVar7 != args + iVar4) || (*args != '_')) {\n        uVar9 = work->options;\n        goto LAB_001e88a9;\n      }\nLAB_001e8979:\n      args = args + 1;\n      arg.e = (char *)0x0;\n      arg.p = (char *)0x0;\n      arg.b = (char *)0x0;\n      iVar4 = (int)pcVar3 - (int)*mangled;\n      if (iVar4 != 0) {\n        string_appendn(declp,*mangled,iVar4);\n      }\n      if (work->temp_start == -1) {\n        work->temp_start = (int)declp->p - (int)declp->b;\n      }\n      uVar9 = work->options;\n      work->options = uVar9 | 1;\n      string_append(declp,"<");\n      if (args < pcVar7) {\n        do {\n          if (arg.b != (char *)0x0) {\n            free(arg.b);\n            arg.p = (char *)0x0;\n            arg.e = (char *)0x0;\n            arg.b = (char *)0x0;\n          }\n          pcVar5 = args;\n          if (*args != 'L') {\n            if (*args == 'X') {\n              args = args + 1;\n              iVar4 = do_type(work,&args,&type_str);\n              if (iVar4 != 0) {\n                string_append(&arg,"(");\n                string_appends(&arg,&type_str,(string *)type_str.p);\n                if (type_str.b != (char *)0x0) {\n                  free(type_str.b);\n                  type_str.p = (char *)0x0;\n                  type_str.e = (char *)0x0;\n                  type_str.b = (char *)0x0;\n                }\n                string_append(&arg,")");\n                if (*args == 'L') goto LAB_001e8a99;\n              }\n            }\n            else {\n              iVar4 = do_type(work,&args,&arg);\n              if (iVar4 != 0) {\n                if (pcVar5 == args) {\n                  work->options = uVar9;\n                  return;\n                }\n                goto LAB_001e8aac;\n              }\n            }\nLAB_001e8e50:\n            if (arg.b == (char *)0x0) goto LAB_001e8e7c;\n            goto LAB_001e8e58;\n          }\nLAB_001e8a99:\n          args = args + 1;\n          iVar4 = snarf_numeric_literal(&args,&arg);\n          if (iVar4 == 0) goto LAB_001e8e50;\nLAB_001e8aac:\n          string_appends(declp,&arg,(string *)arg.p);\n          string_append(declp,",");\n        } while (args < pcVar7);\n      }\n      if (arg.b == (char *)0x0) {\nLAB_001e8eb8:\n        declp->p = declp->p + -1;\n      }\n      else {\nLAB_001e8e58:\n        free(arg.b);\n        arg.p = (char *)0x0;\n        arg.e = (char *)0x0;\n        arg.b = (char *)0x0;\nLAB_001e8e7c:\n        if (pcVar7 <= args) goto LAB_001e8eb8;\n      }\n      string_append(declp,">");\n      work->options = uVar9;\n      s = (byte *)*mangled;\n      goto LAB_001e895e;\n    }\n  }" if (parenthesized_expression "(((uVar9 & 0x1800) == 0) || (pcVar3 = strstr(pcVar5,"__pt__"), pcVar3 == (char *)0x0))" ( (binary_expression "((uVar9 & 0x1800) == 0) || (pcVar3 = strstr(pcVar5,"__pt__"), pcVar3 == (char *)0x0)" (parenthesized_expression "((uVar9 & 0x1800) == 0)" ( (binary_expression "(uVar9 & 0x1800) == 0" (parenthesized_expression "(uVar9 & 0x1800)" ( (binary_expression "uVar9 & 0x1800" identifier & number_literal) )) == number_literal) )) || (parenthesized_expression "(pcVar3 = strstr(pcVar5,"__pt__"), pcVar3 == (char *)0x0)" ( (comma_expression "pcVar3 = strstr(pcVar5,"__pt__"), pcVar3 == (char *)0x0" (assignment_expression "pcVar3 = strstr(pcVar5,"__pt__")" identifier = (call_expression "strstr(pcVar5,"__pt__")" identifier (argument_list "(pcVar5,"__pt__")" ( identifier , (string_literal ""__pt__"" " string_content ") )))) , (binary_expression "pcVar3 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (compound_statement "{\nLAB_001e88a9:\n    if ((uVar9 & 0x2100) != 0) {\n      pcVar3 = strstr(pcVar5,"__tm__");\n      if (((pcVar3 == (char *)0x0) && (pcVar3 = strstr(pcVar5,"__ps__"), pcVar3 == (char *)0x0)) &&\n         (pcVar3 = strstr(pcVar5,"__pt__"), pcVar3 == (char *)0x0)) {\n        pcVar3 = strstr(pcVar5,"__S");\n        if (pcVar3 == (char *)0x0) goto LAB_001e88f1;\n        args = pcVar3 + 3;\n      }\n      else {\n        args = pcVar3 + 6;\n      }\n      iVar4 = consume_count(&args);\n      if (((iVar4 != -1) && (pcVar7 == args + iVar4)) && (*args == '_')) goto LAB_001e8979;\n    }\n  }" { (labeled_statement "LAB_001e88a9:\n    if ((uVar9 & 0x2100) != 0) {\n      pcVar3 = strstr(pcVar5,"__tm__");\n      if (((pcVar3 == (char *)0x0) && (pcVar3 = strstr(pcVar5,"__ps__"), pcVar3 == (char *)0x0)) &&\n         (pcVar3 = strstr(pcVar5,"__pt__"), pcVar3 == (char *)0x0)) {\n        pcVar3 = strstr(pcVar5,"__S");\n        if (pcVar3 == (char *)0x0) goto LAB_001e88f1;\n        args = pcVar3 + 3;\n      }\n      else {\n        args = pcVar3 + 6;\n      }\n      iVar4 = consume_count(&args);\n      if (((iVar4 != -1) && (pcVar7 == args + iVar4)) && (*args == '_')) goto LAB_001e8979;\n    }" statement_identifier : (if_statement "if ((uVar9 & 0x2100) != 0) {\n      pcVar3 = strstr(pcVar5,"__tm__");\n      if (((pcVar3 == (char *)0x0) && (pcVar3 = strstr(pcVar5,"__ps__"), pcVar3 == (char *)0x0)) &&\n         (pcVar3 = strstr(pcVar5,"__pt__"), pcVar3 == (char *)0x0)) {\n        pcVar3 = strstr(pcVar5,"__S");\n        if (pcVar3 == (char *)0x0) goto LAB_001e88f1;\n        args = pcVar3 + 3;\n      }\n      else {\n        args = pcVar3 + 6;\n      }\n      iVar4 = consume_count(&args);\n      if (((iVar4 != -1) && (pcVar7 == args + iVar4)) && (*args == '_')) goto LAB_001e8979;\n    }" if (parenthesized_expression "((uVar9 & 0x2100) != 0)" ( (binary_expression "(uVar9 & 0x2100) != 0" (parenthesized_expression "(uVar9 & 0x2100)" ( (binary_expression "uVar9 & 0x2100" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n      pcVar3 = strstr(pcVar5,"__tm__");\n      if (((pcVar3 == (char *)0x0) && (pcVar3 = strstr(pcVar5,"__ps__"), pcVar3 == (char *)0x0)) &&\n         (pcVar3 = strstr(pcVar5,"__pt__"), pcVar3 == (char *)0x0)) {\n        pcVar3 = strstr(pcVar5,"__S");\n        if (pcVar3 == (char *)0x0) goto LAB_001e88f1;\n        args = pcVar3 + 3;\n      }\n      else {\n        args = pcVar3 + 6;\n      }\n      iVar4 = consume_count(&args);\n      if (((iVar4 != -1) && (pcVar7 == args + iVar4)) && (*args == '_')) goto LAB_001e8979;\n    }" { (expression_statement "pcVar3 = strstr(pcVar5,"__tm__");" (assignment_expression "pcVar3 = strstr(pcVar5,"__tm__")" identifier = (call_expression "strstr(pcVar5,"__tm__")" identifier (argument_list "(pcVar5,"__tm__")" ( identifier , (string_literal ""__tm__"" " string_content ") )))) ;) (if_statement "if (((pcVar3 == (char *)0x0) && (pcVar3 = strstr(pcVar5,"__ps__"), pcVar3 == (char *)0x0)) &&\n         (pcVar3 = strstr(pcVar5,"__pt__"), pcVar3 == (char *)0x0)) {\n        pcVar3 = strstr(pcVar5,"__S");\n        if (pcVar3 == (char *)0x0) goto LAB_001e88f1;\n        args = pcVar3 + 3;\n      }\n      else {\n        args = pcVar3 + 6;\n      }" if (parenthesized_expression "(((pcVar3 == (char *)0x0) && (pcVar3 = strstr(pcVar5,"__ps__"), pcVar3 == (char *)0x0)) &&\n         (pcVar3 = strstr(pcVar5,"__pt__"), pcVar3 == (char *)0x0))" ( (binary_expression "((pcVar3 == (char *)0x0) && (pcVar3 = strstr(pcVar5,"__ps__"), pcVar3 == (char *)0x0)) &&\n         (pcVar3 = strstr(pcVar5,"__pt__"), pcVar3 == (char *)0x0)" (parenthesized_expression "((pcVar3 == (char *)0x0) && (pcVar3 = strstr(pcVar5,"__ps__"), pcVar3 == (char *)0x0))" ( (binary_expression "(pcVar3 == (char *)0x0) && (pcVar3 = strstr(pcVar5,"__ps__"), pcVar3 == (char *)0x0)" (parenthesized_expression "(pcVar3 == (char *)0x0)" ( (binary_expression "pcVar3 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(pcVar3 = strstr(pcVar5,"__ps__"), pcVar3 == (char *)0x0)" ( (comma_expression "pcVar3 = strstr(pcVar5,"__ps__"), pcVar3 == (char *)0x0" (assignment_expression "pcVar3 = strstr(pcVar5,"__ps__")" identifier = (call_expression "strstr(pcVar5,"__ps__")" identifier (argument_list "(pcVar5,"__ps__")" ( identifier , (string_literal ""__ps__"" " string_content ") )))) , (binary_expression "pcVar3 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) && (parenthesized_expression "(pcVar3 = strstr(pcVar5,"__pt__"), pcVar3 == (char *)0x0)" ( (comma_expression "pcVar3 = strstr(pcVar5,"__pt__"), pcVar3 == (char *)0x0" (assignment_expression "pcVar3 = strstr(pcVar5,"__pt__")" identifier = (call_expression "strstr(pcVar5,"__pt__")" identifier (argument_list "(pcVar5,"__pt__")" ( identifier , (string_literal ""__pt__"" " string_content ") )))) , (binary_expression "pcVar3 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (compound_statement "{\n        pcVar3 = strstr(pcVar5,"__S");\n        if (pcVar3 == (char *)0x0) goto LAB_001e88f1;\n        args = pcVar3 + 3;\n      }" { (expression_statement "pcVar3 = strstr(pcVar5,"__S");" (assignment_expression "pcVar3 = strstr(pcVar5,"__S")" identifier = (call_expression "strstr(pcVar5,"__S")" identifier (argument_list "(pcVar5,"__S")" ( identifier , (string_literal ""__S"" " string_content ") )))) ;) (if_statement "if (pcVar3 == (char *)0x0) goto LAB_001e88f1;" if (parenthesized_expression "(pcVar3 == (char *)0x0)" ( (binary_expression "pcVar3 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_001e88f1;" goto statement_identifier ;)) (expression_statement "args = pcVar3 + 3;" (assignment_expression "args = pcVar3 + 3" identifier = (binary_expression "pcVar3 + 3" identifier + number_literal)) ;) }) (else_clause "else {\n        args = pcVar3 + 6;\n      }" else (compound_statement "{\n        args = pcVar3 + 6;\n      }" { (expression_statement "args = pcVar3 + 6;" (assignment_expression "args = pcVar3 + 6" identifier = (binary_expression "pcVar3 + 6" identifier + number_literal)) ;) }))) (expression_statement "iVar4 = consume_count(&args);" (assignment_expression "iVar4 = consume_count(&args)" identifier = (call_expression "consume_count(&args)" identifier (argument_list "(&args)" ( (pointer_expression "&args" & identifier) )))) ;) (if_statement "if (((iVar4 != -1) && (pcVar7 == args + iVar4)) && (*args == '_')) goto LAB_001e8979;" if (parenthesized_expression "(((iVar4 != -1) && (pcVar7 == args + iVar4)) && (*args == '_'))" ( (binary_expression "((iVar4 != -1) && (pcVar7 == args + iVar4)) && (*args == '_')" (parenthesized_expression "((iVar4 != -1) && (pcVar7 == args + iVar4))" ( (binary_expression "(iVar4 != -1) && (pcVar7 == args + iVar4)" (parenthesized_expression "(iVar4 != -1)" ( (binary_expression "iVar4 != -1" identifier != number_literal) )) && (parenthesized_expression "(pcVar7 == args + iVar4)" ( (binary_expression "pcVar7 == args + iVar4" identifier == (binary_expression "args + iVar4" identifier + identifier)) ))) )) && (parenthesized_expression "(*args == '_')" ( (binary_expression "*args == '_'" (pointer_expression "*args" * identifier) == (char_literal "'_'" ' character ')) ))) )) (goto_statement "goto LAB_001e8979;" goto statement_identifier ;)) }))) }) (else_clause "else {\n    args = pcVar3 + 6;\n    iVar4 = consume_count(&args);\n    if (iVar4 != -1) {\n      if ((pcVar7 != args + iVar4) || (*args != '_')) {\n        uVar9 = work->options;\n        goto LAB_001e88a9;\n      }\nLAB_001e8979:\n      args = args + 1;\n      arg.e = (char *)0x0;\n      arg.p = (char *)0x0;\n      arg.b = (char *)0x0;\n      iVar4 = (int)pcVar3 - (int)*mangled;\n      if (iVar4 != 0) {\n        string_appendn(declp,*mangled,iVar4);\n      }\n      if (work->temp_start == -1) {\n        work->temp_start = (int)declp->p - (int)declp->b;\n      }\n      uVar9 = work->options;\n      work->options = uVar9 | 1;\n      string_append(declp,"<");\n      if (args < pcVar7) {\n        do {\n          if (arg.b != (char *)0x0) {\n            free(arg.b);\n            arg.p = (char *)0x0;\n            arg.e = (char *)0x0;\n            arg.b = (char *)0x0;\n          }\n          pcVar5 = args;\n          if (*args != 'L') {\n            if (*args == 'X') {\n              args = args + 1;\n              iVar4 = do_type(work,&args,&type_str);\n              if (iVar4 != 0) {\n                string_append(&arg,"(");\n                string_appends(&arg,&type_str,(string *)type_str.p);\n                if (type_str.b != (char *)0x0) {\n                  free(type_str.b);\n                  type_str.p = (char *)0x0;\n                  type_str.e = (char *)0x0;\n                  type_str.b = (char *)0x0;\n                }\n                string_append(&arg,")");\n                if (*args == 'L') goto LAB_001e8a99;\n              }\n            }\n            else {\n              iVar4 = do_type(work,&args,&arg);\n              if (iVar4 != 0) {\n                if (pcVar5 == args) {\n                  work->options = uVar9;\n                  return;\n                }\n                goto LAB_001e8aac;\n              }\n            }\nLAB_001e8e50:\n            if (arg.b == (char *)0x0) goto LAB_001e8e7c;\n            goto LAB_001e8e58;\n          }\nLAB_001e8a99:\n          args = args + 1;\n          iVar4 = snarf_numeric_literal(&args,&arg);\n          if (iVar4 == 0) goto LAB_001e8e50;\nLAB_001e8aac:\n          string_appends(declp,&arg,(string *)arg.p);\n          string_append(declp,",");\n        } while (args < pcVar7);\n      }\n      if (arg.b == (char *)0x0) {\nLAB_001e8eb8:\n        declp->p = declp->p + -1;\n      }\n      else {\nLAB_001e8e58:\n        free(arg.b);\n        arg.p = (char *)0x0;\n        arg.e = (char *)0x0;\n        arg.b = (char *)0x0;\nLAB_001e8e7c:\n        if (pcVar7 <= args) goto LAB_001e8eb8;\n      }\n      string_append(declp,">");\n      work->options = uVar9;\n      s = (byte *)*mangled;\n      goto LAB_001e895e;\n    }\n  }" else (compound_statement "{\n    args = pcVar3 + 6;\n    iVar4 = consume_count(&args);\n    if (iVar4 != -1) {\n      if ((pcVar7 != args + iVar4) || (*args != '_')) {\n        uVar9 = work->options;\n        goto LAB_001e88a9;\n      }\nLAB_001e8979:\n      args = args + 1;\n      arg.e = (char *)0x0;\n      arg.p = (char *)0x0;\n      arg.b = (char *)0x0;\n      iVar4 = (int)pcVar3 - (int)*mangled;\n      if (iVar4 != 0) {\n        string_appendn(declp,*mangled,iVar4);\n      }\n      if (work->temp_start == -1) {\n        work->temp_start = (int)declp->p - (int)declp->b;\n      }\n      uVar9 = work->options;\n      work->options = uVar9 | 1;\n      string_append(declp,"<");\n      if (args < pcVar7) {\n        do {\n          if (arg.b != (char *)0x0) {\n            free(arg.b);\n            arg.p = (char *)0x0;\n            arg.e = (char *)0x0;\n            arg.b = (char *)0x0;\n          }\n          pcVar5 = args;\n          if (*args != 'L') {\n            if (*args == 'X') {\n              args = args + 1;\n              iVar4 = do_type(work,&args,&type_str);\n              if (iVar4 != 0) {\n                string_append(&arg,"(");\n                string_appends(&arg,&type_str,(string *)type_str.p);\n                if (type_str.b != (char *)0x0) {\n                  free(type_str.b);\n                  type_str.p = (char *)0x0;\n                  type_str.e = (char *)0x0;\n                  type_str.b = (char *)0x0;\n                }\n                string_append(&arg,")");\n                if (*args == 'L') goto LAB_001e8a99;\n              }\n            }\n            else {\n              iVar4 = do_type(work,&args,&arg);\n              if (iVar4 != 0) {\n                if (pcVar5 == args) {\n                  work->options = uVar9;\n                  return;\n                }\n                goto LAB_001e8aac;\n              }\n            }\nLAB_001e8e50:\n            if (arg.b == (char *)0x0) goto LAB_001e8e7c;\n            goto LAB_001e8e58;\n          }\nLAB_001e8a99:\n          args = args + 1;\n          iVar4 = snarf_numeric_literal(&args,&arg);\n          if (iVar4 == 0) goto LAB_001e8e50;\nLAB_001e8aac:\n          string_appends(declp,&arg,(string *)arg.p);\n          string_append(declp,",");\n        } while (args < pcVar7);\n      }\n      if (arg.b == (char *)0x0) {\nLAB_001e8eb8:\n        declp->p = declp->p + -1;\n      }\n      else {\nLAB_001e8e58:\n        free(arg.b);\n        arg.p = (char *)0x0;\n        arg.e = (char *)0x0;\n        arg.b = (char *)0x0;\nLAB_001e8e7c:\n        if (pcVar7 <= args) goto LAB_001e8eb8;\n      }\n      string_append(declp,">");\n      work->options = uVar9;\n      s = (byte *)*mangled;\n      goto LAB_001e895e;\n    }\n  }" { (expression_statement "args = pcVar3 + 6;" (assignment_expression "args = pcVar3 + 6" identifier = (binary_expression "pcVar3 + 6" identifier + number_literal)) ;) (expression_statement "iVar4 = consume_count(&args);" (assignment_expression "iVar4 = consume_count(&args)" identifier = (call_expression "consume_count(&args)" identifier (argument_list "(&args)" ( (pointer_expression "&args" & identifier) )))) ;) (if_statement "if (iVar4 != -1) {\n      if ((pcVar7 != args + iVar4) || (*args != '_')) {\n        uVar9 = work->options;\n        goto LAB_001e88a9;\n      }\nLAB_001e8979:\n      args = args + 1;\n      arg.e = (char *)0x0;\n      arg.p = (char *)0x0;\n      arg.b = (char *)0x0;\n      iVar4 = (int)pcVar3 - (int)*mangled;\n      if (iVar4 != 0) {\n        string_appendn(declp,*mangled,iVar4);\n      }\n      if (work->temp_start == -1) {\n        work->temp_start = (int)declp->p - (int)declp->b;\n      }\n      uVar9 = work->options;\n      work->options = uVar9 | 1;\n      string_append(declp,"<");\n      if (args < pcVar7) {\n        do {\n          if (arg.b != (char *)0x0) {\n            free(arg.b);\n            arg.p = (char *)0x0;\n            arg.e = (char *)0x0;\n            arg.b = (char *)0x0;\n          }\n          pcVar5 = args;\n          if (*args != 'L') {\n            if (*args == 'X') {\n              args = args + 1;\n              iVar4 = do_type(work,&args,&type_str);\n              if (iVar4 != 0) {\n                string_append(&arg,"(");\n                string_appends(&arg,&type_str,(string *)type_str.p);\n                if (type_str.b != (char *)0x0) {\n                  free(type_str.b);\n                  type_str.p = (char *)0x0;\n                  type_str.e = (char *)0x0;\n                  type_str.b = (char *)0x0;\n                }\n                string_append(&arg,")");\n                if (*args == 'L') goto LAB_001e8a99;\n              }\n            }\n            else {\n              iVar4 = do_type(work,&args,&arg);\n              if (iVar4 != 0) {\n                if (pcVar5 == args) {\n                  work->options = uVar9;\n                  return;\n                }\n                goto LAB_001e8aac;\n              }\n            }\nLAB_001e8e50:\n            if (arg.b == (char *)0x0) goto LAB_001e8e7c;\n            goto LAB_001e8e58;\n          }\nLAB_001e8a99:\n          args = args + 1;\n          iVar4 = snarf_numeric_literal(&args,&arg);\n          if (iVar4 == 0) goto LAB_001e8e50;\nLAB_001e8aac:\n          string_appends(declp,&arg,(string *)arg.p);\n          string_append(declp,",");\n        } while (args < pcVar7);\n      }\n      if (arg.b == (char *)0x0) {\nLAB_001e8eb8:\n        declp->p = declp->p + -1;\n      }\n      else {\nLAB_001e8e58:\n        free(arg.b);\n        arg.p = (char *)0x0;\n        arg.e = (char *)0x0;\n        arg.b = (char *)0x0;\nLAB_001e8e7c:\n        if (pcVar7 <= args) goto LAB_001e8eb8;\n      }\n      string_append(declp,">");\n      work->options = uVar9;\n      s = (byte *)*mangled;\n      goto LAB_001e895e;\n    }" if (parenthesized_expression "(iVar4 != -1)" ( (binary_expression "iVar4 != -1" identifier != number_literal) )) (compound_statement "{\n      if ((pcVar7 != args + iVar4) || (*args != '_')) {\n        uVar9 = work->options;\n        goto LAB_001e88a9;\n      }\nLAB_001e8979:\n      args = args + 1;\n      arg.e = (char *)0x0;\n      arg.p = (char *)0x0;\n      arg.b = (char *)0x0;\n      iVar4 = (int)pcVar3 - (int)*mangled;\n      if (iVar4 != 0) {\n        string_appendn(declp,*mangled,iVar4);\n      }\n      if (work->temp_start == -1) {\n        work->temp_start = (int)declp->p - (int)declp->b;\n      }\n      uVar9 = work->options;\n      work->options = uVar9 | 1;\n      string_append(declp,"<");\n      if (args < pcVar7) {\n        do {\n          if (arg.b != (char *)0x0) {\n            free(arg.b);\n            arg.p = (char *)0x0;\n            arg.e = (char *)0x0;\n            arg.b = (char *)0x0;\n          }\n          pcVar5 = args;\n          if (*args != 'L') {\n            if (*args == 'X') {\n              args = args + 1;\n              iVar4 = do_type(work,&args,&type_str);\n              if (iVar4 != 0) {\n                string_append(&arg,"(");\n                string_appends(&arg,&type_str,(string *)type_str.p);\n                if (type_str.b != (char *)0x0) {\n                  free(type_str.b);\n                  type_str.p = (char *)0x0;\n                  type_str.e = (char *)0x0;\n                  type_str.b = (char *)0x0;\n                }\n                string_append(&arg,")");\n                if (*args == 'L') goto LAB_001e8a99;\n              }\n            }\n            else {\n              iVar4 = do_type(work,&args,&arg);\n              if (iVar4 != 0) {\n                if (pcVar5 == args) {\n                  work->options = uVar9;\n                  return;\n                }\n                goto LAB_001e8aac;\n              }\n            }\nLAB_001e8e50:\n            if (arg.b == (char *)0x0) goto LAB_001e8e7c;\n            goto LAB_001e8e58;\n          }\nLAB_001e8a99:\n          args = args + 1;\n          iVar4 = snarf_numeric_literal(&args,&arg);\n          if (iVar4 == 0) goto LAB_001e8e50;\nLAB_001e8aac:\n          string_appends(declp,&arg,(string *)arg.p);\n          string_append(declp,",");\n        } while (args < pcVar7);\n      }\n      if (arg.b == (char *)0x0) {\nLAB_001e8eb8:\n        declp->p = declp->p + -1;\n      }\n      else {\nLAB_001e8e58:\n        free(arg.b);\n        arg.p = (char *)0x0;\n        arg.e = (char *)0x0;\n        arg.b = (char *)0x0;\nLAB_001e8e7c:\n        if (pcVar7 <= args) goto LAB_001e8eb8;\n      }\n      string_append(declp,">");\n      work->options = uVar9;\n      s = (byte *)*mangled;\n      goto LAB_001e895e;\n    }" { (if_statement "if ((pcVar7 != args + iVar4) || (*args != '_')) {\n        uVar9 = work->options;\n        goto LAB_001e88a9;\n      }" if (parenthesized_expression "((pcVar7 != args + iVar4) || (*args != '_'))" ( (binary_expression "(pcVar7 != args + iVar4) || (*args != '_')" (parenthesized_expression "(pcVar7 != args + iVar4)" ( (binary_expression "pcVar7 != args + iVar4" identifier != (binary_expression "args + iVar4" identifier + identifier)) )) || (parenthesized_expression "(*args != '_')" ( (binary_expression "*args != '_'" (pointer_expression "*args" * identifier) != (char_literal "'_'" ' character ')) ))) )) (compound_statement "{\n        uVar9 = work->options;\n        goto LAB_001e88a9;\n      }" { (expression_statement "uVar9 = work->options;" (assignment_expression "uVar9 = work->options" identifier = (field_expression "work->options" identifier -> field_identifier)) ;) (goto_statement "goto LAB_001e88a9;" goto statement_identifier ;) })) (labeled_statement "LAB_001e8979:\n      args = args + 1;" statement_identifier : (expression_statement "args = args + 1;" (assignment_expression "args = args + 1" identifier = (binary_expression "args + 1" identifier + number_literal)) ;)) (expression_statement "arg.e = (char *)0x0;" (assignment_expression "arg.e = (char *)0x0" (field_expression "arg.e" identifier . field_identifier) = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "arg.p = (char *)0x0;" (assignment_expression "arg.p = (char *)0x0" (field_expression "arg.p" identifier . field_identifier) = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "arg.b = (char *)0x0;" (assignment_expression "arg.b = (char *)0x0" (field_expression "arg.b" identifier . field_identifier) = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "iVar4 = (int)pcVar3 - (int)*mangled;" (assignment_expression "iVar4 = (int)pcVar3 - (int)*mangled" identifier = (binary_expression "(int)pcVar3 - (int)*mangled" (cast_expression "(int)pcVar3" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)*mangled" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*mangled" * identifier)))) ;) (if_statement "if (iVar4 != 0) {\n        string_appendn(declp,*mangled,iVar4);\n      }" if (parenthesized_expression "(iVar4 != 0)" ( (binary_expression "iVar4 != 0" identifier != number_literal) )) (compound_statement "{\n        string_appendn(declp,*mangled,iVar4);\n      }" { (expression_statement "string_appendn(declp,*mangled,iVar4);" (call_expression "string_appendn(declp,*mangled,iVar4)" identifier (argument_list "(declp,*mangled,iVar4)" ( identifier , (pointer_expression "*mangled" * identifier) , identifier ))) ;) })) (if_statement "if (work->temp_start == -1) {\n        work->temp_start = (int)declp->p - (int)declp->b;\n      }" if (parenthesized_expression "(work->temp_start == -1)" ( (binary_expression "work->temp_start == -1" (field_expression "work->temp_start" identifier -> field_identifier) == number_literal) )) (compound_statement "{\n        work->temp_start = (int)declp->p - (int)declp->b;\n      }" { (expression_statement "work->temp_start = (int)declp->p - (int)declp->b;" (assignment_expression "work->temp_start = (int)declp->p - (int)declp->b" (field_expression "work->temp_start" identifier -> field_identifier) = (binary_expression "(int)declp->p - (int)declp->b" (cast_expression "(int)declp->p" ( (type_descriptor "int" primitive_type) ) (field_expression "declp->p" identifier -> field_identifier)) - (cast_expression "(int)declp->b" ( (type_descriptor "int" primitive_type) ) (field_expression "declp->b" identifier -> field_identifier)))) ;) })) (expression_statement "uVar9 = work->options;" (assignment_expression "uVar9 = work->options" identifier = (field_expression "work->options" identifier -> field_identifier)) ;) (expression_statement "work->options = uVar9 | 1;" (assignment_expression "work->options = uVar9 | 1" (field_expression "work->options" identifier -> field_identifier) = (binary_expression "uVar9 | 1" identifier | number_literal)) ;) (expression_statement "string_append(declp,"<");" (call_expression "string_append(declp,"<")" identifier (argument_list "(declp,"<")" ( identifier , (string_literal ""<"" " string_content ") ))) ;) (if_statement "if (args < pcVar7) {\n        do {\n          if (arg.b != (char *)0x0) {\n            free(arg.b);\n            arg.p = (char *)0x0;\n            arg.e = (char *)0x0;\n            arg.b = (char *)0x0;\n          }\n          pcVar5 = args;\n          if (*args != 'L') {\n            if (*args == 'X') {\n              args = args + 1;\n              iVar4 = do_type(work,&args,&type_str);\n              if (iVar4 != 0) {\n                string_append(&arg,"(");\n                string_appends(&arg,&type_str,(string *)type_str.p);\n                if (type_str.b != (char *)0x0) {\n                  free(type_str.b);\n                  type_str.p = (char *)0x0;\n                  type_str.e = (char *)0x0;\n                  type_str.b = (char *)0x0;\n                }\n                string_append(&arg,")");\n                if (*args == 'L') goto LAB_001e8a99;\n              }\n            }\n            else {\n              iVar4 = do_type(work,&args,&arg);\n              if (iVar4 != 0) {\n                if (pcVar5 == args) {\n                  work->options = uVar9;\n                  return;\n                }\n                goto LAB_001e8aac;\n              }\n            }\nLAB_001e8e50:\n            if (arg.b == (char *)0x0) goto LAB_001e8e7c;\n            goto LAB_001e8e58;\n          }\nLAB_001e8a99:\n          args = args + 1;\n          iVar4 = snarf_numeric_literal(&args,&arg);\n          if (iVar4 == 0) goto LAB_001e8e50;\nLAB_001e8aac:\n          string_appends(declp,&arg,(string *)arg.p);\n          string_append(declp,",");\n        } while (args < pcVar7);\n      }" if (parenthesized_expression "(args < pcVar7)" ( (binary_expression "args < pcVar7" identifier < identifier) )) (compound_statement "{\n        do {\n          if (arg.b != (char *)0x0) {\n            free(arg.b);\n            arg.p = (char *)0x0;\n            arg.e = (char *)0x0;\n            arg.b = (char *)0x0;\n          }\n          pcVar5 = args;\n          if (*args != 'L') {\n            if (*args == 'X') {\n              args = args + 1;\n              iVar4 = do_type(work,&args,&type_str);\n              if (iVar4 != 0) {\n                string_append(&arg,"(");\n                string_appends(&arg,&type_str,(string *)type_str.p);\n                if (type_str.b != (char *)0x0) {\n                  free(type_str.b);\n                  type_str.p = (char *)0x0;\n                  type_str.e = (char *)0x0;\n                  type_str.b = (char *)0x0;\n                }\n                string_append(&arg,")");\n                if (*args == 'L') goto LAB_001e8a99;\n              }\n            }\n            else {\n              iVar4 = do_type(work,&args,&arg);\n              if (iVar4 != 0) {\n                if (pcVar5 == args) {\n                  work->options = uVar9;\n                  return;\n                }\n                goto LAB_001e8aac;\n              }\n            }\nLAB_001e8e50:\n            if (arg.b == (char *)0x0) goto LAB_001e8e7c;\n            goto LAB_001e8e58;\n          }\nLAB_001e8a99:\n          args = args + 1;\n          iVar4 = snarf_numeric_literal(&args,&arg);\n          if (iVar4 == 0) goto LAB_001e8e50;\nLAB_001e8aac:\n          string_appends(declp,&arg,(string *)arg.p);\n          string_append(declp,",");\n        } while (args < pcVar7);\n      }" { (do_statement "do {\n          if (arg.b != (char *)0x0) {\n            free(arg.b);\n            arg.p = (char *)0x0;\n            arg.e = (char *)0x0;\n            arg.b = (char *)0x0;\n          }\n          pcVar5 = args;\n          if (*args != 'L') {\n            if (*args == 'X') {\n              args = args + 1;\n              iVar4 = do_type(work,&args,&type_str);\n              if (iVar4 != 0) {\n                string_append(&arg,"(");\n                string_appends(&arg,&type_str,(string *)type_str.p);\n                if (type_str.b != (char *)0x0) {\n                  free(type_str.b);\n                  type_str.p = (char *)0x0;\n                  type_str.e = (char *)0x0;\n                  type_str.b = (char *)0x0;\n                }\n                string_append(&arg,")");\n                if (*args == 'L') goto LAB_001e8a99;\n              }\n            }\n            else {\n              iVar4 = do_type(work,&args,&arg);\n              if (iVar4 != 0) {\n                if (pcVar5 == args) {\n                  work->options = uVar9;\n                  return;\n                }\n                goto LAB_001e8aac;\n              }\n            }\nLAB_001e8e50:\n            if (arg.b == (char *)0x0) goto LAB_001e8e7c;\n            goto LAB_001e8e58;\n          }\nLAB_001e8a99:\n          args = args + 1;\n          iVar4 = snarf_numeric_literal(&args,&arg);\n          if (iVar4 == 0) goto LAB_001e8e50;\nLAB_001e8aac:\n          string_appends(declp,&arg,(string *)arg.p);\n          string_append(declp,",");\n        } while (args < pcVar7);" do (compound_statement "{\n          if (arg.b != (char *)0x0) {\n            free(arg.b);\n            arg.p = (char *)0x0;\n            arg.e = (char *)0x0;\n            arg.b = (char *)0x0;\n          }\n          pcVar5 = args;\n          if (*args != 'L') {\n            if (*args == 'X') {\n              args = args + 1;\n              iVar4 = do_type(work,&args,&type_str);\n              if (iVar4 != 0) {\n                string_append(&arg,"(");\n                string_appends(&arg,&type_str,(string *)type_str.p);\n                if (type_str.b != (char *)0x0) {\n                  free(type_str.b);\n                  type_str.p = (char *)0x0;\n                  type_str.e = (char *)0x0;\n                  type_str.b = (char *)0x0;\n                }\n                string_append(&arg,")");\n                if (*args == 'L') goto LAB_001e8a99;\n              }\n            }\n            else {\n              iVar4 = do_type(work,&args,&arg);\n              if (iVar4 != 0) {\n                if (pcVar5 == args) {\n                  work->options = uVar9;\n                  return;\n                }\n                goto LAB_001e8aac;\n              }\n            }\nLAB_001e8e50:\n            if (arg.b == (char *)0x0) goto LAB_001e8e7c;\n            goto LAB_001e8e58;\n          }\nLAB_001e8a99:\n          args = args + 1;\n          iVar4 = snarf_numeric_literal(&args,&arg);\n          if (iVar4 == 0) goto LAB_001e8e50;\nLAB_001e8aac:\n          string_appends(declp,&arg,(string *)arg.p);\n          string_append(declp,",");\n        }" { (if_statement "if (arg.b != (char *)0x0) {\n            free(arg.b);\n            arg.p = (char *)0x0;\n            arg.e = (char *)0x0;\n            arg.b = (char *)0x0;\n          }" if (parenthesized_expression "(arg.b != (char *)0x0)" ( (binary_expression "arg.b != (char *)0x0" (field_expression "arg.b" identifier . field_identifier) != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            free(arg.b);\n            arg.p = (char *)0x0;\n            arg.e = (char *)0x0;\n            arg.b = (char *)0x0;\n          }" { (expression_statement "free(arg.b);" (call_expression "free(arg.b)" identifier (argument_list "(arg.b)" ( (field_expression "arg.b" identifier . field_identifier) ))) ;) (expression_statement "arg.p = (char *)0x0;" (assignment_expression "arg.p = (char *)0x0" (field_expression "arg.p" identifier . field_identifier) = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "arg.e = (char *)0x0;" (assignment_expression "arg.e = (char *)0x0" (field_expression "arg.e" identifier . field_identifier) = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "arg.b = (char *)0x0;" (assignment_expression "arg.b = (char *)0x0" (field_expression "arg.b" identifier . field_identifier) = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) })) (expression_statement "pcVar5 = args;" (assignment_expression "pcVar5 = args" identifier = identifier) ;) (if_statement "if (*args != 'L') {\n            if (*args == 'X') {\n              args = args + 1;\n              iVar4 = do_type(work,&args,&type_str);\n              if (iVar4 != 0) {\n                string_append(&arg,"(");\n                string_appends(&arg,&type_str,(string *)type_str.p);\n                if (type_str.b != (char *)0x0) {\n                  free(type_str.b);\n                  type_str.p = (char *)0x0;\n                  type_str.e = (char *)0x0;\n                  type_str.b = (char *)0x0;\n                }\n                string_append(&arg,")");\n                if (*args == 'L') goto LAB_001e8a99;\n              }\n            }\n            else {\n              iVar4 = do_type(work,&args,&arg);\n              if (iVar4 != 0) {\n                if (pcVar5 == args) {\n                  work->options = uVar9;\n                  return;\n                }\n                goto LAB_001e8aac;\n              }\n            }\nLAB_001e8e50:\n            if (arg.b == (char *)0x0) goto LAB_001e8e7c;\n            goto LAB_001e8e58;\n          }" if (parenthesized_expression "(*args != 'L')" ( (binary_expression "*args != 'L'" (pointer_expression "*args" * identifier) != (char_literal "'L'" ' character ')) )) (compound_statement "{\n            if (*args == 'X') {\n              args = args + 1;\n              iVar4 = do_type(work,&args,&type_str);\n              if (iVar4 != 0) {\n                string_append(&arg,"(");\n                string_appends(&arg,&type_str,(string *)type_str.p);\n                if (type_str.b != (char *)0x0) {\n                  free(type_str.b);\n                  type_str.p = (char *)0x0;\n                  type_str.e = (char *)0x0;\n                  type_str.b = (char *)0x0;\n                }\n                string_append(&arg,")");\n                if (*args == 'L') goto LAB_001e8a99;\n              }\n            }\n            else {\n              iVar4 = do_type(work,&args,&arg);\n              if (iVar4 != 0) {\n                if (pcVar5 == args) {\n                  work->options = uVar9;\n                  return;\n                }\n                goto LAB_001e8aac;\n              }\n            }\nLAB_001e8e50:\n            if (arg.b == (char *)0x0) goto LAB_001e8e7c;\n            goto LAB_001e8e58;\n          }" { (if_statement "if (*args == 'X') {\n              args = args + 1;\n              iVar4 = do_type(work,&args,&type_str);\n              if (iVar4 != 0) {\n                string_append(&arg,"(");\n                string_appends(&arg,&type_str,(string *)type_str.p);\n                if (type_str.b != (char *)0x0) {\n                  free(type_str.b);\n                  type_str.p = (char *)0x0;\n                  type_str.e = (char *)0x0;\n                  type_str.b = (char *)0x0;\n                }\n                string_append(&arg,")");\n                if (*args == 'L') goto LAB_001e8a99;\n              }\n            }\n            else {\n              iVar4 = do_type(work,&args,&arg);\n              if (iVar4 != 0) {\n                if (pcVar5 == args) {\n                  work->options = uVar9;\n                  return;\n                }\n                goto LAB_001e8aac;\n              }\n            }" if (parenthesized_expression "(*args == 'X')" ( (binary_expression "*args == 'X'" (pointer_expression "*args" * identifier) == (char_literal "'X'" ' character ')) )) (compound_statement "{\n              args = args + 1;\n              iVar4 = do_type(work,&args,&type_str);\n              if (iVar4 != 0) {\n                string_append(&arg,"(");\n                string_appends(&arg,&type_str,(string *)type_str.p);\n                if (type_str.b != (char *)0x0) {\n                  free(type_str.b);\n                  type_str.p = (char *)0x0;\n                  type_str.e = (char *)0x0;\n                  type_str.b = (char *)0x0;\n                }\n                string_append(&arg,")");\n                if (*args == 'L') goto LAB_001e8a99;\n              }\n            }" { (expression_statement "args = args + 1;" (assignment_expression "args = args + 1" identifier = (binary_expression "args + 1" identifier + number_literal)) ;) (expression_statement "iVar4 = do_type(work,&args,&type_str);" (assignment_expression "iVar4 = do_type(work,&args,&type_str)" identifier = (call_expression "do_type(work,&args,&type_str)" identifier (argument_list "(work,&args,&type_str)" ( identifier , (pointer_expression "&args" & identifier) , (pointer_expression "&type_str" & identifier) )))) ;) (if_statement "if (iVar4 != 0) {\n                string_append(&arg,"(");\n                string_appends(&arg,&type_str,(string *)type_str.p);\n                if (type_str.b != (char *)0x0) {\n                  free(type_str.b);\n                  type_str.p = (char *)0x0;\n                  type_str.e = (char *)0x0;\n                  type_str.b = (char *)0x0;\n                }\n                string_append(&arg,")");\n                if (*args == 'L') goto LAB_001e8a99;\n              }" if (parenthesized_expression "(iVar4 != 0)" ( (binary_expression "iVar4 != 0" identifier != number_literal) )) (compound_statement "{\n                string_append(&arg,"(");\n                string_appends(&arg,&type_str,(string *)type_str.p);\n                if (type_str.b != (char *)0x0) {\n                  free(type_str.b);\n                  type_str.p = (char *)0x0;\n                  type_str.e = (char *)0x0;\n                  type_str.b = (char *)0x0;\n                }\n                string_append(&arg,")");\n                if (*args == 'L') goto LAB_001e8a99;\n              }" { (expression_statement "string_append(&arg,"(");" (call_expression "string_append(&arg,"(")" identifier (argument_list "(&arg,"(")" ( (pointer_expression "&arg" & identifier) , (string_literal ""("" " string_content ") ))) ;) (expression_statement "string_appends(&arg,&type_str,(string *)type_str.p);" (call_expression "string_appends(&arg,&type_str,(string *)type_str.p)" identifier (argument_list "(&arg,&type_str,(string *)type_str.p)" ( (pointer_expression "&arg" & identifier) , (pointer_expression "&type_str" & identifier) , (cast_expression "(string *)type_str.p" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "type_str.p" identifier . field_identifier)) ))) ;) (if_statement "if (type_str.b != (char *)0x0) {\n                  free(type_str.b);\n                  type_str.p = (char *)0x0;\n                  type_str.e = (char *)0x0;\n                  type_str.b = (char *)0x0;\n                }" if (parenthesized_expression "(type_str.b != (char *)0x0)" ( (binary_expression "type_str.b != (char *)0x0" (field_expression "type_str.b" identifier . field_identifier) != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                  free(type_str.b);\n                  type_str.p = (char *)0x0;\n                  type_str.e = (char *)0x0;\n                  type_str.b = (char *)0x0;\n                }" { (expression_statement "free(type_str.b);" (call_expression "free(type_str.b)" identifier (argument_list "(type_str.b)" ( (field_expression "type_str.b" identifier . field_identifier) ))) ;) (expression_statement "type_str.p = (char *)0x0;" (assignment_expression "type_str.p = (char *)0x0" (field_expression "type_str.p" identifier . field_identifier) = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "type_str.e = (char *)0x0;" (assignment_expression "type_str.e = (char *)0x0" (field_expression "type_str.e" identifier . field_identifier) = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "type_str.b = (char *)0x0;" (assignment_expression "type_str.b = (char *)0x0" (field_expression "type_str.b" identifier . field_identifier) = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) })) (expression_statement "string_append(&arg,")");" (call_expression "string_append(&arg,")")" identifier (argument_list "(&arg,")")" ( (pointer_expression "&arg" & identifier) , (string_literal "")"" " string_content ") ))) ;) (if_statement "if (*args == 'L') goto LAB_001e8a99;" if (parenthesized_expression "(*args == 'L')" ( (binary_expression "*args == 'L'" (pointer_expression "*args" * identifier) == (char_literal "'L'" ' character ')) )) (goto_statement "goto LAB_001e8a99;" goto statement_identifier ;)) })) }) (else_clause "else {\n              iVar4 = do_type(work,&args,&arg);\n              if (iVar4 != 0) {\n                if (pcVar5 == args) {\n                  work->options = uVar9;\n                  return;\n                }\n                goto LAB_001e8aac;\n              }\n            }" else (compound_statement "{\n              iVar4 = do_type(work,&args,&arg);\n              if (iVar4 != 0) {\n                if (pcVar5 == args) {\n                  work->options = uVar9;\n                  return;\n                }\n                goto LAB_001e8aac;\n              }\n            }" { (expression_statement "iVar4 = do_type(work,&args,&arg);" (assignment_expression "iVar4 = do_type(work,&args,&arg)" identifier = (call_expression "do_type(work,&args,&arg)" identifier (argument_list "(work,&args,&arg)" ( identifier , (pointer_expression "&args" & identifier) , (pointer_expression "&arg" & identifier) )))) ;) (if_statement "if (iVar4 != 0) {\n                if (pcVar5 == args) {\n                  work->options = uVar9;\n                  return;\n                }\n                goto LAB_001e8aac;\n              }" if (parenthesized_expression "(iVar4 != 0)" ( (binary_expression "iVar4 != 0" identifier != number_literal) )) (compound_statement "{\n                if (pcVar5 == args) {\n                  work->options = uVar9;\n                  return;\n                }\n                goto LAB_001e8aac;\n              }" { (if_statement "if (pcVar5 == args) {\n                  work->options = uVar9;\n                  return;\n                }" if (parenthesized_expression "(pcVar5 == args)" ( (binary_expression "pcVar5 == args" identifier == identifier) )) (compound_statement "{\n                  work->options = uVar9;\n                  return;\n                }" { (expression_statement "work->options = uVar9;" (assignment_expression "work->options = uVar9" (field_expression "work->options" identifier -> field_identifier) = identifier) ;) (return_statement "return;" return ;) })) (goto_statement "goto LAB_001e8aac;" goto statement_identifier ;) })) }))) (labeled_statement "LAB_001e8e50:\n            if (arg.b == (char *)0x0) goto LAB_001e8e7c;" statement_identifier : (if_statement "if (arg.b == (char *)0x0) goto LAB_001e8e7c;" if (parenthesized_expression "(arg.b == (char *)0x0)" ( (binary_expression "arg.b == (char *)0x0" (field_expression "arg.b" identifier . field_identifier) == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_001e8e7c;" goto statement_identifier ;))) (goto_statement "goto LAB_001e8e58;" goto statement_identifier ;) })) (labeled_statement "LAB_001e8a99:\n          args = args + 1;" statement_identifier : (expression_statement "args = args + 1;" (assignment_expression "args = args + 1" identifier = (binary_expression "args + 1" identifier + number_literal)) ;)) (expression_statement "iVar4 = snarf_numeric_literal(&args,&arg);" (assignment_expression "iVar4 = snarf_numeric_literal(&args,&arg)" identifier = (call_expression "snarf_numeric_literal(&args,&arg)" identifier (argument_list "(&args,&arg)" ( (pointer_expression "&args" & identifier) , (pointer_expression "&arg" & identifier) )))) ;) (if_statement "if (iVar4 == 0) goto LAB_001e8e50;" if (parenthesized_expression "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) )) (goto_statement "goto LAB_001e8e50;" goto statement_identifier ;)) (labeled_statement "LAB_001e8aac:\n          string_appends(declp,&arg,(string *)arg.p);" statement_identifier : (expression_statement "string_appends(declp,&arg,(string *)arg.p);" (call_expression "string_appends(declp,&arg,(string *)arg.p)" identifier (argument_list "(declp,&arg,(string *)arg.p)" ( identifier , (pointer_expression "&arg" & identifier) , (cast_expression "(string *)arg.p" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "arg.p" identifier . field_identifier)) ))) ;)) (expression_statement "string_append(declp,",");" (call_expression "string_append(declp,",")" identifier (argument_list "(declp,",")" ( identifier , (string_literal "","" " string_content ") ))) ;) }) while (parenthesized_expression "(args < pcVar7)" ( (binary_expression "args < pcVar7" identifier < identifier) )) ;) })) (if_statement "if (arg.b == (char *)0x0) {\nLAB_001e8eb8:\n        declp->p = declp->p + -1;\n      }\n      else {\nLAB_001e8e58:\n        free(arg.b);\n        arg.p = (char *)0x0;\n        arg.e = (char *)0x0;\n        arg.b = (char *)0x0;\nLAB_001e8e7c:\n        if (pcVar7 <= args) goto LAB_001e8eb8;\n      }" if (parenthesized_expression "(arg.b == (char *)0x0)" ( (binary_expression "arg.b == (char *)0x0" (field_expression "arg.b" identifier . field_identifier) == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_001e8eb8:\n        declp->p = declp->p + -1;\n      }" { (labeled_statement "LAB_001e8eb8:\n        declp->p = declp->p + -1;" statement_identifier : (expression_statement "declp->p = declp->p + -1;" (assignment_expression "declp->p = declp->p + -1" (field_expression "declp->p" identifier -> field_identifier) = (binary_expression "declp->p + -1" (field_expression "declp->p" identifier -> field_identifier) + number_literal)) ;)) }) (else_clause "else {\nLAB_001e8e58:\n        free(arg.b);\n        arg.p = (char *)0x0;\n        arg.e = (char *)0x0;\n        arg.b = (char *)0x0;\nLAB_001e8e7c:\n        if (pcVar7 <= args) goto LAB_001e8eb8;\n      }" else (compound_statement "{\nLAB_001e8e58:\n        free(arg.b);\n        arg.p = (char *)0x0;\n        arg.e = (char *)0x0;\n        arg.b = (char *)0x0;\nLAB_001e8e7c:\n        if (pcVar7 <= args) goto LAB_001e8eb8;\n      }" { (labeled_statement "LAB_001e8e58:\n        free(arg.b);" statement_identifier : (expression_statement "free(arg.b);" (call_expression "free(arg.b)" identifier (argument_list "(arg.b)" ( (field_expression "arg.b" identifier . field_identifier) ))) ;)) (expression_statement "arg.p = (char *)0x0;" (assignment_expression "arg.p = (char *)0x0" (field_expression "arg.p" identifier . field_identifier) = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "arg.e = (char *)0x0;" (assignment_expression "arg.e = (char *)0x0" (field_expression "arg.e" identifier . field_identifier) = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "arg.b = (char *)0x0;" (assignment_expression "arg.b = (char *)0x0" (field_expression "arg.b" identifier . field_identifier) = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (labeled_statement "LAB_001e8e7c:\n        if (pcVar7 <= args) goto LAB_001e8eb8;" statement_identifier : (if_statement "if (pcVar7 <= args) goto LAB_001e8eb8;" if (parenthesized_expression "(pcVar7 <= args)" ( (binary_expression "pcVar7 <= args" identifier <= identifier) )) (goto_statement "goto LAB_001e8eb8;" goto statement_identifier ;))) }))) (expression_statement "string_append(declp,">");" (call_expression "string_append(declp,">")" identifier (argument_list "(declp,">")" ( identifier , (string_literal "">"" " string_content ") ))) ;) (expression_statement "work->options = uVar9;" (assignment_expression "work->options = uVar9" (field_expression "work->options" identifier -> field_identifier) = identifier) ;) (expression_statement "s = (byte *)*mangled;" (assignment_expression "s = (byte *)*mangled" identifier = (cast_expression "(byte *)*mangled" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*mangled" * identifier))) ;) (goto_statement "goto LAB_001e895e;" goto statement_identifier ;) })) }))) (labeled_statement "LAB_001e88f1:\n  bVar12 = (uint)n < 10;" statement_identifier : (expression_statement "bVar12 = (uint)n < 10;" (assignment_expression "bVar12 = (uint)n < 10" identifier = (binary_expression "(uint)n < 10" (cast_expression "(uint)n" ( (type_descriptor "uint" type_identifier) ) identifier) < number_literal)) ;)) (expression_statement "bVar13 = n == 10;" (assignment_expression "bVar13 = n == 10" identifier = (binary_expression "n == 10" identifier == number_literal)) ;) (expression_statement "s = (byte *)*mangled;" (assignment_expression "s = (byte *)*mangled" identifier = (cast_expression "(byte *)*mangled" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*mangled" * identifier))) ;) (if_statement "if (n < 0xb) {\n    if (work->temp_start == -1) {\nLAB_001e8b50:\n      work->temp_start = 0;\n    }\n    if (n == 0) goto LAB_001e895e;\n  }\n  else {\n    iVar4 = 8;\n    pbVar10 = s;\n    pbVar11 = (byte *)"_GLOBAL_";\n    do {\n      if (iVar4 == 0) break;\n      iVar4 = iVar4 + -1;\n      bVar12 = *pbVar10 < *pbVar11;\n      bVar13 = *pbVar10 == *pbVar11;\n      pbVar10 = pbVar10 + (uint)bVar14 * -2 + 1;\n      pbVar11 = pbVar11 + (uint)bVar14 * -2 + 1;\n    } while (bVar13);\n    if ((((!bVar12 && !bVar13) == bVar12) && (s[9] == 0x4e)) &&\n       ((s[8] == s[10] && (pcVar5 = strchr(cplus_markers,(int)(char)s[8]), pcVar5 != (char *)0x0))))\n    {\n      string_append(declp,"{anonymous}");\n      s = (byte *)*mangled;\n      goto LAB_001e895e;\n    }\n    if (work->temp_start == -1) goto LAB_001e8b50;\n  }" if (parenthesized_expression "(n < 0xb)" ( (binary_expression "n < 0xb" identifier < number_literal) )) (compound_statement "{\n    if (work->temp_start == -1) {\nLAB_001e8b50:\n      work->temp_start = 0;\n    }\n    if (n == 0) goto LAB_001e895e;\n  }" { (if_statement "if (work->temp_start == -1) {\nLAB_001e8b50:\n      work->temp_start = 0;\n    }" if (parenthesized_expression "(work->temp_start == -1)" ( (binary_expression "work->temp_start == -1" (field_expression "work->temp_start" identifier -> field_identifier) == number_literal) )) (compound_statement "{\nLAB_001e8b50:\n      work->temp_start = 0;\n    }" { (labeled_statement "LAB_001e8b50:\n      work->temp_start = 0;" statement_identifier : (expression_statement "work->temp_start = 0;" (assignment_expression "work->temp_start = 0" (field_expression "work->temp_start" identifier -> field_identifier) = number_literal) ;)) })) (if_statement "if (n == 0) goto LAB_001e895e;" if (parenthesized_expression "(n == 0)" ( (binary_expression "n == 0" identifier == number_literal) )) (goto_statement "goto LAB_001e895e;" goto statement_identifier ;)) }) (else_clause "else {\n    iVar4 = 8;\n    pbVar10 = s;\n    pbVar11 = (byte *)"_GLOBAL_";\n    do {\n      if (iVar4 == 0) break;\n      iVar4 = iVar4 + -1;\n      bVar12 = *pbVar10 < *pbVar11;\n      bVar13 = *pbVar10 == *pbVar11;\n      pbVar10 = pbVar10 + (uint)bVar14 * -2 + 1;\n      pbVar11 = pbVar11 + (uint)bVar14 * -2 + 1;\n    } while (bVar13);\n    if ((((!bVar12 && !bVar13) == bVar12) && (s[9] == 0x4e)) &&\n       ((s[8] == s[10] && (pcVar5 = strchr(cplus_markers,(int)(char)s[8]), pcVar5 != (char *)0x0))))\n    {\n      string_append(declp,"{anonymous}");\n      s = (byte *)*mangled;\n      goto LAB_001e895e;\n    }\n    if (work->temp_start == -1) goto LAB_001e8b50;\n  }" else (compound_statement "{\n    iVar4 = 8;\n    pbVar10 = s;\n    pbVar11 = (byte *)"_GLOBAL_";\n    do {\n      if (iVar4 == 0) break;\n      iVar4 = iVar4 + -1;\n      bVar12 = *pbVar10 < *pbVar11;\n      bVar13 = *pbVar10 == *pbVar11;\n      pbVar10 = pbVar10 + (uint)bVar14 * -2 + 1;\n      pbVar11 = pbVar11 + (uint)bVar14 * -2 + 1;\n    } while (bVar13);\n    if ((((!bVar12 && !bVar13) == bVar12) && (s[9] == 0x4e)) &&\n       ((s[8] == s[10] && (pcVar5 = strchr(cplus_markers,(int)(char)s[8]), pcVar5 != (char *)0x0))))\n    {\n      string_append(declp,"{anonymous}");\n      s = (byte *)*mangled;\n      goto LAB_001e895e;\n    }\n    if (work->temp_start == -1) goto LAB_001e8b50;\n  }" { (expression_statement "iVar4 = 8;" (assignment_expression "iVar4 = 8" identifier = number_literal) ;) (expression_statement "pbVar10 = s;" (assignment_expression "pbVar10 = s" identifier = identifier) ;) (expression_statement "pbVar11 = (byte *)"_GLOBAL_";" (assignment_expression "pbVar11 = (byte *)"_GLOBAL_"" identifier = (cast_expression "(byte *)"_GLOBAL_"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal ""_GLOBAL_"" " string_content "))) ;) (do_statement "do {\n      if (iVar4 == 0) break;\n      iVar4 = iVar4 + -1;\n      bVar12 = *pbVar10 < *pbVar11;\n      bVar13 = *pbVar10 == *pbVar11;\n      pbVar10 = pbVar10 + (uint)bVar14 * -2 + 1;\n      pbVar11 = pbVar11 + (uint)bVar14 * -2 + 1;\n    } while (bVar13);" do (compound_statement "{\n      if (iVar4 == 0) break;\n      iVar4 = iVar4 + -1;\n      bVar12 = *pbVar10 < *pbVar11;\n      bVar13 = *pbVar10 == *pbVar11;\n      pbVar10 = pbVar10 + (uint)bVar14 * -2 + 1;\n      pbVar11 = pbVar11 + (uint)bVar14 * -2 + 1;\n    }" { (if_statement "if (iVar4 == 0) break;" if (parenthesized_expression "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar4 = iVar4 + -1;" (assignment_expression "iVar4 = iVar4 + -1" identifier = (binary_expression "iVar4 + -1" identifier + number_literal)) ;) (expression_statement "bVar12 = *pbVar10 < *pbVar11;" (assignment_expression "bVar12 = *pbVar10 < *pbVar11" identifier = (binary_expression "*pbVar10 < *pbVar11" (pointer_expression "*pbVar10" * identifier) < (pointer_expression "*pbVar11" * identifier))) ;) (expression_statement "bVar13 = *pbVar10 == *pbVar11;" (assignment_expression "bVar13 = *pbVar10 == *pbVar11" identifier = (binary_expression "*pbVar10 == *pbVar11" (pointer_expression "*pbVar10" * identifier) == (pointer_expression "*pbVar11" * identifier))) ;) (expression_statement "pbVar10 = pbVar10 + (uint)bVar14 * -2 + 1;" (assignment_expression "pbVar10 = pbVar10 + (uint)bVar14 * -2 + 1" identifier = (binary_expression "pbVar10 + (uint)bVar14 * -2 + 1" (binary_expression "pbVar10 + (uint)bVar14 * -2" identifier + (binary_expression "(uint)bVar14 * -2" (cast_expression "(uint)bVar14" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar11 = pbVar11 + (uint)bVar14 * -2 + 1;" (assignment_expression "pbVar11 = pbVar11 + (uint)bVar14 * -2 + 1" identifier = (binary_expression "pbVar11 + (uint)bVar14 * -2 + 1" (binary_expression "pbVar11 + (uint)bVar14 * -2" identifier + (binary_expression "(uint)bVar14 * -2" (cast_expression "(uint)bVar14" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar13)" ( identifier )) ;) (if_statement "if ((((!bVar12 && !bVar13) == bVar12) && (s[9] == 0x4e)) &&\n       ((s[8] == s[10] && (pcVar5 = strchr(cplus_markers,(int)(char)s[8]), pcVar5 != (char *)0x0))))\n    {\n      string_append(declp,"{anonymous}");\n      s = (byte *)*mangled;\n      goto LAB_001e895e;\n    }" if (parenthesized_expression "((((!bVar12 && !bVar13) == bVar12) && (s[9] == 0x4e)) &&\n       ((s[8] == s[10] && (pcVar5 = strchr(cplus_markers,(int)(char)s[8]), pcVar5 != (char *)0x0))))" ( (binary_expression "(((!bVar12 && !bVar13) == bVar12) && (s[9] == 0x4e)) &&\n       ((s[8] == s[10] && (pcVar5 = strchr(cplus_markers,(int)(char)s[8]), pcVar5 != (char *)0x0)))" (parenthesized_expression "(((!bVar12 && !bVar13) == bVar12) && (s[9] == 0x4e))" ( (binary_expression "((!bVar12 && !bVar13) == bVar12) && (s[9] == 0x4e)" (parenthesized_expression "((!bVar12 && !bVar13) == bVar12)" ( (binary_expression "(!bVar12 && !bVar13) == bVar12" (parenthesized_expression "(!bVar12 && !bVar13)" ( (binary_expression "!bVar12 && !bVar13" (unary_expression "!bVar12" ! identifier) && (unary_expression "!bVar13" ! identifier)) )) == identifier) )) && (parenthesized_expression "(s[9] == 0x4e)" ( (binary_expression "s[9] == 0x4e" (subscript_expression "s[9]" identifier [ number_literal ]) == number_literal) ))) )) && (parenthesized_expression "((s[8] == s[10] && (pcVar5 = strchr(cplus_markers,(int)(char)s[8]), pcVar5 != (char *)0x0)))" ( (parenthesized_expression "(s[8] == s[10] && (pcVar5 = strchr(cplus_markers,(int)(char)s[8]), pcVar5 != (char *)0x0))" ( (binary_expression "s[8] == s[10] && (pcVar5 = strchr(cplus_markers,(int)(char)s[8]), pcVar5 != (char *)0x0)" (binary_expression "s[8] == s[10]" (subscript_expression "s[8]" identifier [ number_literal ]) == (subscript_expression "s[10]" identifier [ number_literal ])) && (parenthesized_expression "(pcVar5 = strchr(cplus_markers,(int)(char)s[8]), pcVar5 != (char *)0x0)" ( (comma_expression "pcVar5 = strchr(cplus_markers,(int)(char)s[8]), pcVar5 != (char *)0x0" (assignment_expression "pcVar5 = strchr(cplus_markers,(int)(char)s[8])" identifier = (call_expression "strchr(cplus_markers,(int)(char)s[8])" identifier (argument_list "(cplus_markers,(int)(char)s[8])" ( identifier , (cast_expression "(int)(char)s[8]" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)s[8]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "s[8]" identifier [ number_literal ]))) )))) , (binary_expression "pcVar5 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) ))) )) (compound_statement "{\n      string_append(declp,"{anonymous}");\n      s = (byte *)*mangled;\n      goto LAB_001e895e;\n    }" { (expression_statement "string_append(declp,"{anonymous}");" (call_expression "string_append(declp,"{anonymous}")" identifier (argument_list "(declp,"{anonymous}")" ( identifier , (string_literal ""{anonymous}"" " string_content ") ))) ;) (expression_statement "s = (byte *)*mangled;" (assignment_expression "s = (byte *)*mangled" identifier = (cast_expression "(byte *)*mangled" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*mangled" * identifier))) ;) (goto_statement "goto LAB_001e895e;" goto statement_identifier ;) })) (if_statement "if (work->temp_start == -1) goto LAB_001e8b50;" if (parenthesized_expression "(work->temp_start == -1)" ( (binary_expression "work->temp_start == -1" (field_expression "work->temp_start" identifier -> field_identifier) == number_literal) )) (goto_statement "goto LAB_001e8b50;" goto statement_identifier ;)) }))) (expression_statement "string_appendn(declp,(char *)s,n);" (call_expression "string_appendn(declp,(char *)s,n)" identifier (argument_list "(declp,(char *)s,n)" ( identifier , (cast_expression "(char *)s" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , identifier ))) ;) (expression_statement "s = (byte *)*mangled;" (assignment_expression "s = (byte *)*mangled" identifier = (cast_expression "(byte *)*mangled" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*mangled" * identifier))) ;) (labeled_statement "LAB_001e895e:\n  *mangled = (char *)(s + n);" statement_identifier : (expression_statement "*mangled = (char *)(s + n);" (assignment_expression "*mangled = (char *)(s + n)" (pointer_expression "*mangled" * identifier) = (cast_expression "(char *)(s + n)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(s + n)" ( (binary_expression "s + n" identifier + identifier) )))) ;)) (return_statement "return;" return ;) })))
(translation_unit "void __regparm3 FUN_001e8820(uint *param_1,int *param_2,uint param_3,int *param_4)\n\n{\n  char cVar1;\n  char cVar2;\n  char *pcVar3;\n  int iVar4;\n  char *pcVar5;\n  size_t __n;\n  size_t sVar6;\n  void *__dest;\n  char *pcVar7;\n  byte *pbVar8;\n  uint uVar9;\n  uint uVar10;\n  byte *pbVar11;\n  byte *pbVar12;\n  bool bVar13;\n  bool bVar14;\n  byte bVar15;\n  char *local_38;\n  void *local_28;\n  \n  bVar15 = 0;\n  pcVar5 = (char *)*param_2;\n  uVar10 = *param_1;\n  pcVar7 = pcVar5 + param_3;\n  if (((uVar10 & 0x1000) != 0) && (*pcVar7 == 'X')) {\n    pcVar7 = strchr(pcVar5,0x3c);\n    if ((pcVar7 == (char *)0x0) || ((int)param_3 <= (int)pcVar7 - (int)pcVar5)) {\n      if (param_3 == 0) goto LAB_001e8bea;\n    }\n    else if (pcVar7 == pcVar5) goto LAB_001e8bea;\n    FUN_001e63d0();\n    pcVar5 = (char *)*param_2;\n    uVar10 = *param_1;\nLAB_001e8bea:\n    *param_2 = (int)(pcVar5 + param_3 + 1);\n    if (param_1[0xd] == 0xffffffff) {\n      param_1[0xd] = param_4[1] - *param_4;\n    }\n    *param_1 = uVar10 | 1;\n    FUN_001e64b0();\n    do {\n      pcVar5 = (char *)*param_2;\n      cVar1 = *pcVar5;\n      if (cVar1 == 'S') {\nLAB_001e8d75:\n        if ((cVar1 + 0xadU & 0xfd) != 0) goto LAB_001e8d09;\n        pcVar7 = pcVar5 + 1;\n        *param_2 = (int)pcVar7;\n        cVar2 = pcVar5[1];\n        if (cVar2 == 'N') {\n          FUN_001e64b0();\n          pcVar7 = (char *)*param_2;\n        }\n        else if (cVar2 != 'P') {\n          if (cVar2 == 'M') {\n            FUN_001e64b0();\n            *param_2 = *param_2 + 1;\n            goto LAB_001e8cbb;\n          }\n          goto LAB_001e8d09;\n        }\n        *param_2 = (int)(pcVar7 + 1);\n        uVar9 = (uint)(byte)pcVar7[1];\n        if (((&DAT_002bf340)[uVar9 * 2] & 4) == 0) goto LAB_001e8d09;\n        do {\n          DAT_003b6400 = (char)uVar9;\n          if (DAT_003b6400 != '\0') {\n            FUN_001e64b0();\n          }\n          iVar4 = *param_2;\n          *param_2 = iVar4 + 1;\n          uVar9 = (uint)*(byte *)(iVar4 + 1);\n        } while (((&DAT_002bf340)[uVar9 * 2] & 4) != 0);\n        if (cVar1 == 'U') {\n          FUN_001e64b0();\n        }\n      }\n      else if (cVar1 < 'T') {\n        if (cVar1 != 'A') {\nLAB_001e8d09:\n          FUN_001e64b0();\n          if (*(char *)*param_2 == '_') {\n            *param_2 = (int)((char *)*param_2 + 1);\n          }\n          *param_1 = uVar10;\n          return;\n        }\n        *param_2 = (int)(pcVar5 + 1);\n        __n = FUN_001e6060();\n        if (((int)__n < 1) || (sVar6 = strlen((char *)*param_2), (int)sVar6 < (int)__n))\n        goto LAB_001e8d09;\n        FUN_001e64b0();\n        __dest = (void *)FUN_001fcf40(__n + 1);\n        memcpy(__dest,(void *)*param_2,__n);\n        *(undefined1 *)((int)__dest + __n) = 0;\n        pcVar5 = (char *)FUN_001e7170(__dest,*param_1);\n        if (pcVar5 == (char *)0x0) {\n          FUN_001e63d0();\n        }\n        else {\n          if (*pcVar5 != '\0') {\n            FUN_001e64b0();\n          }\n          free(pcVar5);\n        }\n        *param_2 = *param_2 + __n;\n        free(__dest);\n      }\n      else {\n        if (cVar1 != 'T') {\n          if (cVar1 == 'U') goto LAB_001e8d75;\n          goto LAB_001e8d09;\n        }\n        *param_2 = (int)(pcVar5 + 1);\n        iVar4 = FUN_001e7a30();\n        if (iVar4 == 0) goto LAB_001e8d09;\n      }\nLAB_001e8cbb:\n      FUN_001e6600();\n      if ((*(char *)*param_2 == '\0') || (*(char *)*param_2 == '_')) goto LAB_001e8d09;\n      FUN_001e64b0();\n    } while( true );\n  }\n  if (((uVar10 & 0x1800) == 0) || (pcVar3 = strstr(pcVar5,"__pt__"), pcVar3 == (char *)0x0)) {\nLAB_001e88a9:\n    if ((uVar10 & 0x2100) != 0) {\n      pcVar3 = strstr(pcVar5,"__tm__");\n      if (((pcVar3 == (char *)0x0) && (pcVar3 = strstr(pcVar5,"__ps__"), pcVar3 == (char *)0x0)) &&\n         (pcVar3 = strstr(pcVar5,"__pt__"), pcVar3 == (char *)0x0)) {\n        pcVar3 = strstr(pcVar5,"__S");\n        if (pcVar3 == (char *)0x0) goto LAB_001e88f1;\n        local_38 = pcVar3 + 3;\n      }\n      else {\n        local_38 = pcVar3 + 6;\n      }\n      iVar4 = FUN_001e6060();\n      if (((iVar4 != -1) && (pcVar7 == local_38 + iVar4)) && (*local_38 == '_')) goto LAB_001e8979;\n    }\n  }\n  else {\n    local_38 = pcVar3 + 6;\n    iVar4 = FUN_001e6060();\n    if (iVar4 != -1) {\n      if ((pcVar7 != local_38 + iVar4) || (*local_38 != '_')) {\n        uVar10 = *param_1;\n        goto LAB_001e88a9;\n      }\nLAB_001e8979:\n      local_38 = local_38 + 1;\n      if (pcVar3 != (char *)*param_2) {\n        FUN_001e63d0();\n      }\n      if (param_1[0xd] == 0xffffffff) {\n        param_1[0xd] = param_4[1] - *param_4;\n      }\n      uVar10 = *param_1;\n      *param_1 = uVar10 | 1;\n      FUN_001e64b0();\n      while (local_38 < pcVar7) {\n        if (*local_38 != 'L') {\n          if (*local_38 == 'X') {\n            local_38 = local_38 + 1;\n            iVar4 = FUN_001e7a30();\n            if (iVar4 != 0) {\n              FUN_001e64b0();\n              FUN_001e6600();\n              if (local_28 != (void *)0x0) {\n                free(local_28);\n                local_28 = (void *)0x0;\n              }\n              FUN_001e64b0();\n              if (*local_38 == 'L') goto LAB_001e8a99;\n            }\n          }\n          else {\n            iVar4 = FUN_001e7a30();\n            if (iVar4 != 0) {\n              *param_1 = uVar10;\n              return;\n            }\n          }\nLAB_001e8e50:\n          if (local_38 < pcVar7) goto LAB_001e8e86;\n          break;\n        }\nLAB_001e8a99:\n        local_38 = local_38 + 1;\n        iVar4 = FUN_001e6540();\n        if (iVar4 == 0) goto LAB_001e8e50;\n        FUN_001e6600();\n        FUN_001e64b0();\n      }\n      param_4[1] = param_4[1] + -1;\nLAB_001e8e86:\n      FUN_001e64b0();\n      *param_1 = uVar10;\n      pbVar8 = (byte *)*param_2;\n      goto LAB_001e895e;\n    }\n  }\nLAB_001e88f1:\n  bVar13 = param_3 < 10;\n  bVar14 = param_3 == 10;\n  pbVar8 = (byte *)*param_2;\n  if ((int)param_3 < 0xb) {\n    if (param_1[0xd] == 0xffffffff) {\nLAB_001e8b50:\n      param_1[0xd] = 0;\n    }\n    if (param_3 == 0) goto LAB_001e895e;\n  }\n  else {\n    iVar4 = 8;\n    pbVar11 = pbVar8;\n    pbVar12 = (byte *)"_GLOBAL_";\n    do {\n      if (iVar4 == 0) break;\n      iVar4 = iVar4 + -1;\n      bVar13 = *pbVar11 < *pbVar12;\n      bVar14 = *pbVar11 == *pbVar12;\n      pbVar11 = pbVar11 + (uint)bVar15 * -2 + 1;\n      pbVar12 = pbVar12 + (uint)bVar15 * -2 + 1;\n    } while (bVar14);\n    if ((((!bVar13 && !bVar14) == bVar13) && (pbVar8[9] == 0x4e)) &&\n       ((pbVar8[8] == pbVar8[10] &&\n        (pcVar5 = strchr(&DAT_003af40c,(int)(char)pbVar8[8]), pcVar5 != (char *)0x0)))) {\n      FUN_001e64b0();\n      pbVar8 = (byte *)*param_2;\n      goto LAB_001e895e;\n    }\n    if (param_1[0xd] == 0xffffffff) goto LAB_001e8b50;\n  }\n  FUN_001e63d0();\n  pbVar8 = (byte *)*param_2;\nLAB_001e895e:\n  *param_2 = (int)(pbVar8 + param_3);\n  return;\n}\n\n" (function_definition "void __regparm3 FUN_001e8820(uint *param_1,int *param_2,uint param_3,int *param_4)\n\n{\n  char cVar1;\n  char cVar2;\n  char *pcVar3;\n  int iVar4;\n  char *pcVar5;\n  size_t __n;\n  size_t sVar6;\n  void *__dest;\n  char *pcVar7;\n  byte *pbVar8;\n  uint uVar9;\n  uint uVar10;\n  byte *pbVar11;\n  byte *pbVar12;\n  bool bVar13;\n  bool bVar14;\n  byte bVar15;\n  char *local_38;\n  void *local_28;\n  \n  bVar15 = 0;\n  pcVar5 = (char *)*param_2;\n  uVar10 = *param_1;\n  pcVar7 = pcVar5 + param_3;\n  if (((uVar10 & 0x1000) != 0) && (*pcVar7 == 'X')) {\n    pcVar7 = strchr(pcVar5,0x3c);\n    if ((pcVar7 == (char *)0x0) || ((int)param_3 <= (int)pcVar7 - (int)pcVar5)) {\n      if (param_3 == 0) goto LAB_001e8bea;\n    }\n    else if (pcVar7 == pcVar5) goto LAB_001e8bea;\n    FUN_001e63d0();\n    pcVar5 = (char *)*param_2;\n    uVar10 = *param_1;\nLAB_001e8bea:\n    *param_2 = (int)(pcVar5 + param_3 + 1);\n    if (param_1[0xd] == 0xffffffff) {\n      param_1[0xd] = param_4[1] - *param_4;\n    }\n    *param_1 = uVar10 | 1;\n    FUN_001e64b0();\n    do {\n      pcVar5 = (char *)*param_2;\n      cVar1 = *pcVar5;\n      if (cVar1 == 'S') {\nLAB_001e8d75:\n        if ((cVar1 + 0xadU & 0xfd) != 0) goto LAB_001e8d09;\n        pcVar7 = pcVar5 + 1;\n        *param_2 = (int)pcVar7;\n        cVar2 = pcVar5[1];\n        if (cVar2 == 'N') {\n          FUN_001e64b0();\n          pcVar7 = (char *)*param_2;\n        }\n        else if (cVar2 != 'P') {\n          if (cVar2 == 'M') {\n            FUN_001e64b0();\n            *param_2 = *param_2 + 1;\n            goto LAB_001e8cbb;\n          }\n          goto LAB_001e8d09;\n        }\n        *param_2 = (int)(pcVar7 + 1);\n        uVar9 = (uint)(byte)pcVar7[1];\n        if (((&DAT_002bf340)[uVar9 * 2] & 4) == 0) goto LAB_001e8d09;\n        do {\n          DAT_003b6400 = (char)uVar9;\n          if (DAT_003b6400 != '\0') {\n            FUN_001e64b0();\n          }\n          iVar4 = *param_2;\n          *param_2 = iVar4 + 1;\n          uVar9 = (uint)*(byte *)(iVar4 + 1);\n        } while (((&DAT_002bf340)[uVar9 * 2] & 4) != 0);\n        if (cVar1 == 'U') {\n          FUN_001e64b0();\n        }\n      }\n      else if (cVar1 < 'T') {\n        if (cVar1 != 'A') {\nLAB_001e8d09:\n          FUN_001e64b0();\n          if (*(char *)*param_2 == '_') {\n            *param_2 = (int)((char *)*param_2 + 1);\n          }\n          *param_1 = uVar10;\n          return;\n        }\n        *param_2 = (int)(pcVar5 + 1);\n        __n = FUN_001e6060();\n        if (((int)__n < 1) || (sVar6 = strlen((char *)*param_2), (int)sVar6 < (int)__n))\n        goto LAB_001e8d09;\n        FUN_001e64b0();\n        __dest = (void *)FUN_001fcf40(__n + 1);\n        memcpy(__dest,(void *)*param_2,__n);\n        *(undefined1 *)((int)__dest + __n) = 0;\n        pcVar5 = (char *)FUN_001e7170(__dest,*param_1);\n        if (pcVar5 == (char *)0x0) {\n          FUN_001e63d0();\n        }\n        else {\n          if (*pcVar5 != '\0') {\n            FUN_001e64b0();\n          }\n          free(pcVar5);\n        }\n        *param_2 = *param_2 + __n;\n        free(__dest);\n      }\n      else {\n        if (cVar1 != 'T') {\n          if (cVar1 == 'U') goto LAB_001e8d75;\n          goto LAB_001e8d09;\n        }\n        *param_2 = (int)(pcVar5 + 1);\n        iVar4 = FUN_001e7a30();\n        if (iVar4 == 0) goto LAB_001e8d09;\n      }\nLAB_001e8cbb:\n      FUN_001e6600();\n      if ((*(char *)*param_2 == '\0') || (*(char *)*param_2 == '_')) goto LAB_001e8d09;\n      FUN_001e64b0();\n    } while( true );\n  }\n  if (((uVar10 & 0x1800) == 0) || (pcVar3 = strstr(pcVar5,"__pt__"), pcVar3 == (char *)0x0)) {\nLAB_001e88a9:\n    if ((uVar10 & 0x2100) != 0) {\n      pcVar3 = strstr(pcVar5,"__tm__");\n      if (((pcVar3 == (char *)0x0) && (pcVar3 = strstr(pcVar5,"__ps__"), pcVar3 == (char *)0x0)) &&\n         (pcVar3 = strstr(pcVar5,"__pt__"), pcVar3 == (char *)0x0)) {\n        pcVar3 = strstr(pcVar5,"__S");\n        if (pcVar3 == (char *)0x0) goto LAB_001e88f1;\n        local_38 = pcVar3 + 3;\n      }\n      else {\n        local_38 = pcVar3 + 6;\n      }\n      iVar4 = FUN_001e6060();\n      if (((iVar4 != -1) && (pcVar7 == local_38 + iVar4)) && (*local_38 == '_')) goto LAB_001e8979;\n    }\n  }\n  else {\n    local_38 = pcVar3 + 6;\n    iVar4 = FUN_001e6060();\n    if (iVar4 != -1) {\n      if ((pcVar7 != local_38 + iVar4) || (*local_38 != '_')) {\n        uVar10 = *param_1;\n        goto LAB_001e88a9;\n      }\nLAB_001e8979:\n      local_38 = local_38 + 1;\n      if (pcVar3 != (char *)*param_2) {\n        FUN_001e63d0();\n      }\n      if (param_1[0xd] == 0xffffffff) {\n        param_1[0xd] = param_4[1] - *param_4;\n      }\n      uVar10 = *param_1;\n      *param_1 = uVar10 | 1;\n      FUN_001e64b0();\n      while (local_38 < pcVar7) {\n        if (*local_38 != 'L') {\n          if (*local_38 == 'X') {\n            local_38 = local_38 + 1;\n            iVar4 = FUN_001e7a30();\n            if (iVar4 != 0) {\n              FUN_001e64b0();\n              FUN_001e6600();\n              if (local_28 != (void *)0x0) {\n                free(local_28);\n                local_28 = (void *)0x0;\n              }\n              FUN_001e64b0();\n              if (*local_38 == 'L') goto LAB_001e8a99;\n            }\n          }\n          else {\n            iVar4 = FUN_001e7a30();\n            if (iVar4 != 0) {\n              *param_1 = uVar10;\n              return;\n            }\n          }\nLAB_001e8e50:\n          if (local_38 < pcVar7) goto LAB_001e8e86;\n          break;\n        }\nLAB_001e8a99:\n        local_38 = local_38 + 1;\n        iVar4 = FUN_001e6540();\n        if (iVar4 == 0) goto LAB_001e8e50;\n        FUN_001e6600();\n        FUN_001e64b0();\n      }\n      param_4[1] = param_4[1] + -1;\nLAB_001e8e86:\n      FUN_001e64b0();\n      *param_1 = uVar10;\n      pbVar8 = (byte *)*param_2;\n      goto LAB_001e895e;\n    }\n  }\nLAB_001e88f1:\n  bVar13 = param_3 < 10;\n  bVar14 = param_3 == 10;\n  pbVar8 = (byte *)*param_2;\n  if ((int)param_3 < 0xb) {\n    if (param_1[0xd] == 0xffffffff) {\nLAB_001e8b50:\n      param_1[0xd] = 0;\n    }\n    if (param_3 == 0) goto LAB_001e895e;\n  }\n  else {\n    iVar4 = 8;\n    pbVar11 = pbVar8;\n    pbVar12 = (byte *)"_GLOBAL_";\n    do {\n      if (iVar4 == 0) break;\n      iVar4 = iVar4 + -1;\n      bVar13 = *pbVar11 < *pbVar12;\n      bVar14 = *pbVar11 == *pbVar12;\n      pbVar11 = pbVar11 + (uint)bVar15 * -2 + 1;\n      pbVar12 = pbVar12 + (uint)bVar15 * -2 + 1;\n    } while (bVar14);\n    if ((((!bVar13 && !bVar14) == bVar13) && (pbVar8[9] == 0x4e)) &&\n       ((pbVar8[8] == pbVar8[10] &&\n        (pcVar5 = strchr(&DAT_003af40c,(int)(char)pbVar8[8]), pcVar5 != (char *)0x0)))) {\n      FUN_001e64b0();\n      pbVar8 = (byte *)*param_2;\n      goto LAB_001e895e;\n    }\n    if (param_1[0xd] == 0xffffffff) goto LAB_001e8b50;\n  }\n  FUN_001e63d0();\n  pbVar8 = (byte *)*param_2;\nLAB_001e895e:\n  *param_2 = (int)(pbVar8 + param_3);\n  return;\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "FUN_001e8820(uint *param_1,int *param_2,uint param_3,int *param_4)" identifier (parameter_list "(uint *param_1,int *param_2,uint param_3,int *param_4)" ( (parameter_declaration "uint *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "uint param_3" type_identifier identifier) , (parameter_declaration "int *param_4" primitive_type (pointer_declarator "*param_4" * identifier)) ))) (compound_statement "{\n  char cVar1;\n  char cVar2;\n  char *pcVar3;\n  int iVar4;\n  char *pcVar5;\n  size_t __n;\n  size_t sVar6;\n  void *__dest;\n  char *pcVar7;\n  byte *pbVar8;\n  uint uVar9;\n  uint uVar10;\n  byte *pbVar11;\n  byte *pbVar12;\n  bool bVar13;\n  bool bVar14;\n  byte bVar15;\n  char *local_38;\n  void *local_28;\n  \n  bVar15 = 0;\n  pcVar5 = (char *)*param_2;\n  uVar10 = *param_1;\n  pcVar7 = pcVar5 + param_3;\n  if (((uVar10 & 0x1000) != 0) && (*pcVar7 == 'X')) {\n    pcVar7 = strchr(pcVar5,0x3c);\n    if ((pcVar7 == (char *)0x0) || ((int)param_3 <= (int)pcVar7 - (int)pcVar5)) {\n      if (param_3 == 0) goto LAB_001e8bea;\n    }\n    else if (pcVar7 == pcVar5) goto LAB_001e8bea;\n    FUN_001e63d0();\n    pcVar5 = (char *)*param_2;\n    uVar10 = *param_1;\nLAB_001e8bea:\n    *param_2 = (int)(pcVar5 + param_3 + 1);\n    if (param_1[0xd] == 0xffffffff) {\n      param_1[0xd] = param_4[1] - *param_4;\n    }\n    *param_1 = uVar10 | 1;\n    FUN_001e64b0();\n    do {\n      pcVar5 = (char *)*param_2;\n      cVar1 = *pcVar5;\n      if (cVar1 == 'S') {\nLAB_001e8d75:\n        if ((cVar1 + 0xadU & 0xfd) != 0) goto LAB_001e8d09;\n        pcVar7 = pcVar5 + 1;\n        *param_2 = (int)pcVar7;\n        cVar2 = pcVar5[1];\n        if (cVar2 == 'N') {\n          FUN_001e64b0();\n          pcVar7 = (char *)*param_2;\n        }\n        else if (cVar2 != 'P') {\n          if (cVar2 == 'M') {\n            FUN_001e64b0();\n            *param_2 = *param_2 + 1;\n            goto LAB_001e8cbb;\n          }\n          goto LAB_001e8d09;\n        }\n        *param_2 = (int)(pcVar7 + 1);\n        uVar9 = (uint)(byte)pcVar7[1];\n        if (((&DAT_002bf340)[uVar9 * 2] & 4) == 0) goto LAB_001e8d09;\n        do {\n          DAT_003b6400 = (char)uVar9;\n          if (DAT_003b6400 != '\0') {\n            FUN_001e64b0();\n          }\n          iVar4 = *param_2;\n          *param_2 = iVar4 + 1;\n          uVar9 = (uint)*(byte *)(iVar4 + 1);\n        } while (((&DAT_002bf340)[uVar9 * 2] & 4) != 0);\n        if (cVar1 == 'U') {\n          FUN_001e64b0();\n        }\n      }\n      else if (cVar1 < 'T') {\n        if (cVar1 != 'A') {\nLAB_001e8d09:\n          FUN_001e64b0();\n          if (*(char *)*param_2 == '_') {\n            *param_2 = (int)((char *)*param_2 + 1);\n          }\n          *param_1 = uVar10;\n          return;\n        }\n        *param_2 = (int)(pcVar5 + 1);\n        __n = FUN_001e6060();\n        if (((int)__n < 1) || (sVar6 = strlen((char *)*param_2), (int)sVar6 < (int)__n))\n        goto LAB_001e8d09;\n        FUN_001e64b0();\n        __dest = (void *)FUN_001fcf40(__n + 1);\n        memcpy(__dest,(void *)*param_2,__n);\n        *(undefined1 *)((int)__dest + __n) = 0;\n        pcVar5 = (char *)FUN_001e7170(__dest,*param_1);\n        if (pcVar5 == (char *)0x0) {\n          FUN_001e63d0();\n        }\n        else {\n          if (*pcVar5 != '\0') {\n            FUN_001e64b0();\n          }\n          free(pcVar5);\n        }\n        *param_2 = *param_2 + __n;\n        free(__dest);\n      }\n      else {\n        if (cVar1 != 'T') {\n          if (cVar1 == 'U') goto LAB_001e8d75;\n          goto LAB_001e8d09;\n        }\n        *param_2 = (int)(pcVar5 + 1);\n        iVar4 = FUN_001e7a30();\n        if (iVar4 == 0) goto LAB_001e8d09;\n      }\nLAB_001e8cbb:\n      FUN_001e6600();\n      if ((*(char *)*param_2 == '\0') || (*(char *)*param_2 == '_')) goto LAB_001e8d09;\n      FUN_001e64b0();\n    } while( true );\n  }\n  if (((uVar10 & 0x1800) == 0) || (pcVar3 = strstr(pcVar5,"__pt__"), pcVar3 == (char *)0x0)) {\nLAB_001e88a9:\n    if ((uVar10 & 0x2100) != 0) {\n      pcVar3 = strstr(pcVar5,"__tm__");\n      if (((pcVar3 == (char *)0x0) && (pcVar3 = strstr(pcVar5,"__ps__"), pcVar3 == (char *)0x0)) &&\n         (pcVar3 = strstr(pcVar5,"__pt__"), pcVar3 == (char *)0x0)) {\n        pcVar3 = strstr(pcVar5,"__S");\n        if (pcVar3 == (char *)0x0) goto LAB_001e88f1;\n        local_38 = pcVar3 + 3;\n      }\n      else {\n        local_38 = pcVar3 + 6;\n      }\n      iVar4 = FUN_001e6060();\n      if (((iVar4 != -1) && (pcVar7 == local_38 + iVar4)) && (*local_38 == '_')) goto LAB_001e8979;\n    }\n  }\n  else {\n    local_38 = pcVar3 + 6;\n    iVar4 = FUN_001e6060();\n    if (iVar4 != -1) {\n      if ((pcVar7 != local_38 + iVar4) || (*local_38 != '_')) {\n        uVar10 = *param_1;\n        goto LAB_001e88a9;\n      }\nLAB_001e8979:\n      local_38 = local_38 + 1;\n      if (pcVar3 != (char *)*param_2) {\n        FUN_001e63d0();\n      }\n      if (param_1[0xd] == 0xffffffff) {\n        param_1[0xd] = param_4[1] - *param_4;\n      }\n      uVar10 = *param_1;\n      *param_1 = uVar10 | 1;\n      FUN_001e64b0();\n      while (local_38 < pcVar7) {\n        if (*local_38 != 'L') {\n          if (*local_38 == 'X') {\n            local_38 = local_38 + 1;\n            iVar4 = FUN_001e7a30();\n            if (iVar4 != 0) {\n              FUN_001e64b0();\n              FUN_001e6600();\n              if (local_28 != (void *)0x0) {\n                free(local_28);\n                local_28 = (void *)0x0;\n              }\n              FUN_001e64b0();\n              if (*local_38 == 'L') goto LAB_001e8a99;\n            }\n          }\n          else {\n            iVar4 = FUN_001e7a30();\n            if (iVar4 != 0) {\n              *param_1 = uVar10;\n              return;\n            }\n          }\nLAB_001e8e50:\n          if (local_38 < pcVar7) goto LAB_001e8e86;\n          break;\n        }\nLAB_001e8a99:\n        local_38 = local_38 + 1;\n        iVar4 = FUN_001e6540();\n        if (iVar4 == 0) goto LAB_001e8e50;\n        FUN_001e6600();\n        FUN_001e64b0();\n      }\n      param_4[1] = param_4[1] + -1;\nLAB_001e8e86:\n      FUN_001e64b0();\n      *param_1 = uVar10;\n      pbVar8 = (byte *)*param_2;\n      goto LAB_001e895e;\n    }\n  }\nLAB_001e88f1:\n  bVar13 = param_3 < 10;\n  bVar14 = param_3 == 10;\n  pbVar8 = (byte *)*param_2;\n  if ((int)param_3 < 0xb) {\n    if (param_1[0xd] == 0xffffffff) {\nLAB_001e8b50:\n      param_1[0xd] = 0;\n    }\n    if (param_3 == 0) goto LAB_001e895e;\n  }\n  else {\n    iVar4 = 8;\n    pbVar11 = pbVar8;\n    pbVar12 = (byte *)"_GLOBAL_";\n    do {\n      if (iVar4 == 0) break;\n      iVar4 = iVar4 + -1;\n      bVar13 = *pbVar11 < *pbVar12;\n      bVar14 = *pbVar11 == *pbVar12;\n      pbVar11 = pbVar11 + (uint)bVar15 * -2 + 1;\n      pbVar12 = pbVar12 + (uint)bVar15 * -2 + 1;\n    } while (bVar14);\n    if ((((!bVar13 && !bVar14) == bVar13) && (pbVar8[9] == 0x4e)) &&\n       ((pbVar8[8] == pbVar8[10] &&\n        (pcVar5 = strchr(&DAT_003af40c,(int)(char)pbVar8[8]), pcVar5 != (char *)0x0)))) {\n      FUN_001e64b0();\n      pbVar8 = (byte *)*param_2;\n      goto LAB_001e895e;\n    }\n    if (param_1[0xd] == 0xffffffff) goto LAB_001e8b50;\n  }\n  FUN_001e63d0();\n  pbVar8 = (byte *)*param_2;\nLAB_001e895e:\n  *param_2 = (int)(pbVar8 + param_3);\n  return;\n}" { (declaration "char cVar1;" primitive_type identifier ;) (declaration "char cVar2;" primitive_type identifier ;) (declaration "char *pcVar3;" primitive_type (pointer_declarator "*pcVar3" * identifier) ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "char *pcVar5;" primitive_type (pointer_declarator "*pcVar5" * identifier) ;) (declaration "size_t __n;" primitive_type identifier ;) (declaration "size_t sVar6;" primitive_type identifier ;) (declaration "void *__dest;" primitive_type (pointer_declarator "*__dest" * identifier) ;) (declaration "char *pcVar7;" primitive_type (pointer_declarator "*pcVar7" * identifier) ;) (declaration "byte *pbVar8;" type_identifier (pointer_declarator "*pbVar8" * identifier) ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "uint uVar10;" type_identifier identifier ;) (declaration "byte *pbVar11;" type_identifier (pointer_declarator "*pbVar11" * identifier) ;) (declaration "byte *pbVar12;" type_identifier (pointer_declarator "*pbVar12" * identifier) ;) (declaration "bool bVar13;" primitive_type identifier ;) (declaration "bool bVar14;" primitive_type identifier ;) (declaration "byte bVar15;" type_identifier identifier ;) (declaration "char *local_38;" primitive_type (pointer_declarator "*local_38" * identifier) ;) (declaration "void *local_28;" primitive_type (pointer_declarator "*local_28" * identifier) ;) (expression_statement "bVar15 = 0;" (assignment_expression "bVar15 = 0" identifier = number_literal) ;) (expression_statement "pcVar5 = (char *)*param_2;" (assignment_expression "pcVar5 = (char *)*param_2" identifier = (cast_expression "(char *)*param_2" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_2" * identifier))) ;) (expression_statement "uVar10 = *param_1;" (assignment_expression "uVar10 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "pcVar7 = pcVar5 + param_3;" (assignment_expression "pcVar7 = pcVar5 + param_3" identifier = (binary_expression "pcVar5 + param_3" identifier + identifier)) ;) (if_statement "if (((uVar10 & 0x1000) != 0) && (*pcVar7 == 'X')) {\n    pcVar7 = strchr(pcVar5,0x3c);\n    if ((pcVar7 == (char *)0x0) || ((int)param_3 <= (int)pcVar7 - (int)pcVar5)) {\n      if (param_3 == 0) goto LAB_001e8bea;\n    }\n    else if (pcVar7 == pcVar5) goto LAB_001e8bea;\n    FUN_001e63d0();\n    pcVar5 = (char *)*param_2;\n    uVar10 = *param_1;\nLAB_001e8bea:\n    *param_2 = (int)(pcVar5 + param_3 + 1);\n    if (param_1[0xd] == 0xffffffff) {\n      param_1[0xd] = param_4[1] - *param_4;\n    }\n    *param_1 = uVar10 | 1;\n    FUN_001e64b0();\n    do {\n      pcVar5 = (char *)*param_2;\n      cVar1 = *pcVar5;\n      if (cVar1 == 'S') {\nLAB_001e8d75:\n        if ((cVar1 + 0xadU & 0xfd) != 0) goto LAB_001e8d09;\n        pcVar7 = pcVar5 + 1;\n        *param_2 = (int)pcVar7;\n        cVar2 = pcVar5[1];\n        if (cVar2 == 'N') {\n          FUN_001e64b0();\n          pcVar7 = (char *)*param_2;\n        }\n        else if (cVar2 != 'P') {\n          if (cVar2 == 'M') {\n            FUN_001e64b0();\n            *param_2 = *param_2 + 1;\n            goto LAB_001e8cbb;\n          }\n          goto LAB_001e8d09;\n        }\n        *param_2 = (int)(pcVar7 + 1);\n        uVar9 = (uint)(byte)pcVar7[1];\n        if (((&DAT_002bf340)[uVar9 * 2] & 4) == 0) goto LAB_001e8d09;\n        do {\n          DAT_003b6400 = (char)uVar9;\n          if (DAT_003b6400 != '\0') {\n            FUN_001e64b0();\n          }\n          iVar4 = *param_2;\n          *param_2 = iVar4 + 1;\n          uVar9 = (uint)*(byte *)(iVar4 + 1);\n        } while (((&DAT_002bf340)[uVar9 * 2] & 4) != 0);\n        if (cVar1 == 'U') {\n          FUN_001e64b0();\n        }\n      }\n      else if (cVar1 < 'T') {\n        if (cVar1 != 'A') {\nLAB_001e8d09:\n          FUN_001e64b0();\n          if (*(char *)*param_2 == '_') {\n            *param_2 = (int)((char *)*param_2 + 1);\n          }\n          *param_1 = uVar10;\n          return;\n        }\n        *param_2 = (int)(pcVar5 + 1);\n        __n = FUN_001e6060();\n        if (((int)__n < 1) || (sVar6 = strlen((char *)*param_2), (int)sVar6 < (int)__n))\n        goto LAB_001e8d09;\n        FUN_001e64b0();\n        __dest = (void *)FUN_001fcf40(__n + 1);\n        memcpy(__dest,(void *)*param_2,__n);\n        *(undefined1 *)((int)__dest + __n) = 0;\n        pcVar5 = (char *)FUN_001e7170(__dest,*param_1);\n        if (pcVar5 == (char *)0x0) {\n          FUN_001e63d0();\n        }\n        else {\n          if (*pcVar5 != '\0') {\n            FUN_001e64b0();\n          }\n          free(pcVar5);\n        }\n        *param_2 = *param_2 + __n;\n        free(__dest);\n      }\n      else {\n        if (cVar1 != 'T') {\n          if (cVar1 == 'U') goto LAB_001e8d75;\n          goto LAB_001e8d09;\n        }\n        *param_2 = (int)(pcVar5 + 1);\n        iVar4 = FUN_001e7a30();\n        if (iVar4 == 0) goto LAB_001e8d09;\n      }\nLAB_001e8cbb:\n      FUN_001e6600();\n      if ((*(char *)*param_2 == '\0') || (*(char *)*param_2 == '_')) goto LAB_001e8d09;\n      FUN_001e64b0();\n    } while( true );\n  }" if (parenthesized_expression "(((uVar10 & 0x1000) != 0) && (*pcVar7 == 'X'))" ( (binary_expression "((uVar10 & 0x1000) != 0) && (*pcVar7 == 'X')" (parenthesized_expression "((uVar10 & 0x1000) != 0)" ( (binary_expression "(uVar10 & 0x1000) != 0" (parenthesized_expression "(uVar10 & 0x1000)" ( (binary_expression "uVar10 & 0x1000" identifier & number_literal) )) != number_literal) )) && (parenthesized_expression "(*pcVar7 == 'X')" ( (binary_expression "*pcVar7 == 'X'" (pointer_expression "*pcVar7" * identifier) == (char_literal "'X'" ' character ')) ))) )) (compound_statement "{\n    pcVar7 = strchr(pcVar5,0x3c);\n    if ((pcVar7 == (char *)0x0) || ((int)param_3 <= (int)pcVar7 - (int)pcVar5)) {\n      if (param_3 == 0) goto LAB_001e8bea;\n    }\n    else if (pcVar7 == pcVar5) goto LAB_001e8bea;\n    FUN_001e63d0();\n    pcVar5 = (char *)*param_2;\n    uVar10 = *param_1;\nLAB_001e8bea:\n    *param_2 = (int)(pcVar5 + param_3 + 1);\n    if (param_1[0xd] == 0xffffffff) {\n      param_1[0xd] = param_4[1] - *param_4;\n    }\n    *param_1 = uVar10 | 1;\n    FUN_001e64b0();\n    do {\n      pcVar5 = (char *)*param_2;\n      cVar1 = *pcVar5;\n      if (cVar1 == 'S') {\nLAB_001e8d75:\n        if ((cVar1 + 0xadU & 0xfd) != 0) goto LAB_001e8d09;\n        pcVar7 = pcVar5 + 1;\n        *param_2 = (int)pcVar7;\n        cVar2 = pcVar5[1];\n        if (cVar2 == 'N') {\n          FUN_001e64b0();\n          pcVar7 = (char *)*param_2;\n        }\n        else if (cVar2 != 'P') {\n          if (cVar2 == 'M') {\n            FUN_001e64b0();\n            *param_2 = *param_2 + 1;\n            goto LAB_001e8cbb;\n          }\n          goto LAB_001e8d09;\n        }\n        *param_2 = (int)(pcVar7 + 1);\n        uVar9 = (uint)(byte)pcVar7[1];\n        if (((&DAT_002bf340)[uVar9 * 2] & 4) == 0) goto LAB_001e8d09;\n        do {\n          DAT_003b6400 = (char)uVar9;\n          if (DAT_003b6400 != '\0') {\n            FUN_001e64b0();\n          }\n          iVar4 = *param_2;\n          *param_2 = iVar4 + 1;\n          uVar9 = (uint)*(byte *)(iVar4 + 1);\n        } while (((&DAT_002bf340)[uVar9 * 2] & 4) != 0);\n        if (cVar1 == 'U') {\n          FUN_001e64b0();\n        }\n      }\n      else if (cVar1 < 'T') {\n        if (cVar1 != 'A') {\nLAB_001e8d09:\n          FUN_001e64b0();\n          if (*(char *)*param_2 == '_') {\n            *param_2 = (int)((char *)*param_2 + 1);\n          }\n          *param_1 = uVar10;\n          return;\n        }\n        *param_2 = (int)(pcVar5 + 1);\n        __n = FUN_001e6060();\n        if (((int)__n < 1) || (sVar6 = strlen((char *)*param_2), (int)sVar6 < (int)__n))\n        goto LAB_001e8d09;\n        FUN_001e64b0();\n        __dest = (void *)FUN_001fcf40(__n + 1);\n        memcpy(__dest,(void *)*param_2,__n);\n        *(undefined1 *)((int)__dest + __n) = 0;\n        pcVar5 = (char *)FUN_001e7170(__dest,*param_1);\n        if (pcVar5 == (char *)0x0) {\n          FUN_001e63d0();\n        }\n        else {\n          if (*pcVar5 != '\0') {\n            FUN_001e64b0();\n          }\n          free(pcVar5);\n        }\n        *param_2 = *param_2 + __n;\n        free(__dest);\n      }\n      else {\n        if (cVar1 != 'T') {\n          if (cVar1 == 'U') goto LAB_001e8d75;\n          goto LAB_001e8d09;\n        }\n        *param_2 = (int)(pcVar5 + 1);\n        iVar4 = FUN_001e7a30();\n        if (iVar4 == 0) goto LAB_001e8d09;\n      }\nLAB_001e8cbb:\n      FUN_001e6600();\n      if ((*(char *)*param_2 == '\0') || (*(char *)*param_2 == '_')) goto LAB_001e8d09;\n      FUN_001e64b0();\n    } while( true );\n  }" { (expression_statement "pcVar7 = strchr(pcVar5,0x3c);" (assignment_expression "pcVar7 = strchr(pcVar5,0x3c)" identifier = (call_expression "strchr(pcVar5,0x3c)" identifier (argument_list "(pcVar5,0x3c)" ( identifier , number_literal )))) ;) (if_statement "if ((pcVar7 == (char *)0x0) || ((int)param_3 <= (int)pcVar7 - (int)pcVar5)) {\n      if (param_3 == 0) goto LAB_001e8bea;\n    }\n    else if (pcVar7 == pcVar5) goto LAB_001e8bea;" if (parenthesized_expression "((pcVar7 == (char *)0x0) || ((int)param_3 <= (int)pcVar7 - (int)pcVar5))" ( (binary_expression "(pcVar7 == (char *)0x0) || ((int)param_3 <= (int)pcVar7 - (int)pcVar5)" (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)) )) || (parenthesized_expression "((int)param_3 <= (int)pcVar7 - (int)pcVar5)" ( (binary_expression "(int)param_3 <= (int)pcVar7 - (int)pcVar5" (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier) <= (binary_expression "(int)pcVar7 - (int)pcVar5" (cast_expression "(int)pcVar7" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pcVar5" ( (type_descriptor "int" primitive_type) ) identifier))) ))) )) (compound_statement "{\n      if (param_3 == 0) goto LAB_001e8bea;\n    }" { (if_statement "if (param_3 == 0) goto LAB_001e8bea;" if (parenthesized_expression "(param_3 == 0)" ( (binary_expression "param_3 == 0" identifier == number_literal) )) (goto_statement "goto LAB_001e8bea;" goto statement_identifier ;)) }) (else_clause "else if (pcVar7 == pcVar5) goto LAB_001e8bea;" else (if_statement "if (pcVar7 == pcVar5) goto LAB_001e8bea;" if (parenthesized_expression "(pcVar7 == pcVar5)" ( (binary_expression "pcVar7 == pcVar5" identifier == identifier) )) (goto_statement "goto LAB_001e8bea;" goto statement_identifier ;)))) (expression_statement "FUN_001e63d0();" (call_expression "FUN_001e63d0()" identifier (argument_list "()" ( ))) ;) (expression_statement "pcVar5 = (char *)*param_2;" (assignment_expression "pcVar5 = (char *)*param_2" identifier = (cast_expression "(char *)*param_2" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_2" * identifier))) ;) (expression_statement "uVar10 = *param_1;" (assignment_expression "uVar10 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (labeled_statement "LAB_001e8bea:\n    *param_2 = (int)(pcVar5 + param_3 + 1);" statement_identifier : (expression_statement "*param_2 = (int)(pcVar5 + param_3 + 1);" (assignment_expression "*param_2 = (int)(pcVar5 + param_3 + 1)" (pointer_expression "*param_2" * identifier) = (cast_expression "(int)(pcVar5 + param_3 + 1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(pcVar5 + param_3 + 1)" ( (binary_expression "pcVar5 + param_3 + 1" (binary_expression "pcVar5 + param_3" identifier + identifier) + number_literal) )))) ;)) (if_statement "if (param_1[0xd] == 0xffffffff) {\n      param_1[0xd] = param_4[1] - *param_4;\n    }" if (parenthesized_expression "(param_1[0xd] == 0xffffffff)" ( (binary_expression "param_1[0xd] == 0xffffffff" (subscript_expression "param_1[0xd]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n      param_1[0xd] = param_4[1] - *param_4;\n    }" { (expression_statement "param_1[0xd] = param_4[1] - *param_4;" (assignment_expression "param_1[0xd] = param_4[1] - *param_4" (subscript_expression "param_1[0xd]" identifier [ number_literal ]) = (binary_expression "param_4[1] - *param_4" (subscript_expression "param_4[1]" identifier [ number_literal ]) - (pointer_expression "*param_4" * identifier))) ;) })) (expression_statement "*param_1 = uVar10 | 1;" (assignment_expression "*param_1 = uVar10 | 1" (pointer_expression "*param_1" * identifier) = (binary_expression "uVar10 | 1" identifier | number_literal)) ;) (expression_statement "FUN_001e64b0();" (call_expression "FUN_001e64b0()" identifier (argument_list "()" ( ))) ;) (do_statement "do {\n      pcVar5 = (char *)*param_2;\n      cVar1 = *pcVar5;\n      if (cVar1 == 'S') {\nLAB_001e8d75:\n        if ((cVar1 + 0xadU & 0xfd) != 0) goto LAB_001e8d09;\n        pcVar7 = pcVar5 + 1;\n        *param_2 = (int)pcVar7;\n        cVar2 = pcVar5[1];\n        if (cVar2 == 'N') {\n          FUN_001e64b0();\n          pcVar7 = (char *)*param_2;\n        }\n        else if (cVar2 != 'P') {\n          if (cVar2 == 'M') {\n            FUN_001e64b0();\n            *param_2 = *param_2 + 1;\n            goto LAB_001e8cbb;\n          }\n          goto LAB_001e8d09;\n        }\n        *param_2 = (int)(pcVar7 + 1);\n        uVar9 = (uint)(byte)pcVar7[1];\n        if (((&DAT_002bf340)[uVar9 * 2] & 4) == 0) goto LAB_001e8d09;\n        do {\n          DAT_003b6400 = (char)uVar9;\n          if (DAT_003b6400 != '\0') {\n            FUN_001e64b0();\n          }\n          iVar4 = *param_2;\n          *param_2 = iVar4 + 1;\n          uVar9 = (uint)*(byte *)(iVar4 + 1);\n        } while (((&DAT_002bf340)[uVar9 * 2] & 4) != 0);\n        if (cVar1 == 'U') {\n          FUN_001e64b0();\n        }\n      }\n      else if (cVar1 < 'T') {\n        if (cVar1 != 'A') {\nLAB_001e8d09:\n          FUN_001e64b0();\n          if (*(char *)*param_2 == '_') {\n            *param_2 = (int)((char *)*param_2 + 1);\n          }\n          *param_1 = uVar10;\n          return;\n        }\n        *param_2 = (int)(pcVar5 + 1);\n        __n = FUN_001e6060();\n        if (((int)__n < 1) || (sVar6 = strlen((char *)*param_2), (int)sVar6 < (int)__n))\n        goto LAB_001e8d09;\n        FUN_001e64b0();\n        __dest = (void *)FUN_001fcf40(__n + 1);\n        memcpy(__dest,(void *)*param_2,__n);\n        *(undefined1 *)((int)__dest + __n) = 0;\n        pcVar5 = (char *)FUN_001e7170(__dest,*param_1);\n        if (pcVar5 == (char *)0x0) {\n          FUN_001e63d0();\n        }\n        else {\n          if (*pcVar5 != '\0') {\n            FUN_001e64b0();\n          }\n          free(pcVar5);\n        }\n        *param_2 = *param_2 + __n;\n        free(__dest);\n      }\n      else {\n        if (cVar1 != 'T') {\n          if (cVar1 == 'U') goto LAB_001e8d75;\n          goto LAB_001e8d09;\n        }\n        *param_2 = (int)(pcVar5 + 1);\n        iVar4 = FUN_001e7a30();\n        if (iVar4 == 0) goto LAB_001e8d09;\n      }\nLAB_001e8cbb:\n      FUN_001e6600();\n      if ((*(char *)*param_2 == '\0') || (*(char *)*param_2 == '_')) goto LAB_001e8d09;\n      FUN_001e64b0();\n    } while( true );" do (compound_statement "{\n      pcVar5 = (char *)*param_2;\n      cVar1 = *pcVar5;\n      if (cVar1 == 'S') {\nLAB_001e8d75:\n        if ((cVar1 + 0xadU & 0xfd) != 0) goto LAB_001e8d09;\n        pcVar7 = pcVar5 + 1;\n        *param_2 = (int)pcVar7;\n        cVar2 = pcVar5[1];\n        if (cVar2 == 'N') {\n          FUN_001e64b0();\n          pcVar7 = (char *)*param_2;\n        }\n        else if (cVar2 != 'P') {\n          if (cVar2 == 'M') {\n            FUN_001e64b0();\n            *param_2 = *param_2 + 1;\n            goto LAB_001e8cbb;\n          }\n          goto LAB_001e8d09;\n        }\n        *param_2 = (int)(pcVar7 + 1);\n        uVar9 = (uint)(byte)pcVar7[1];\n        if (((&DAT_002bf340)[uVar9 * 2] & 4) == 0) goto LAB_001e8d09;\n        do {\n          DAT_003b6400 = (char)uVar9;\n          if (DAT_003b6400 != '\0') {\n            FUN_001e64b0();\n          }\n          iVar4 = *param_2;\n          *param_2 = iVar4 + 1;\n          uVar9 = (uint)*(byte *)(iVar4 + 1);\n        } while (((&DAT_002bf340)[uVar9 * 2] & 4) != 0);\n        if (cVar1 == 'U') {\n          FUN_001e64b0();\n        }\n      }\n      else if (cVar1 < 'T') {\n        if (cVar1 != 'A') {\nLAB_001e8d09:\n          FUN_001e64b0();\n          if (*(char *)*param_2 == '_') {\n            *param_2 = (int)((char *)*param_2 + 1);\n          }\n          *param_1 = uVar10;\n          return;\n        }\n        *param_2 = (int)(pcVar5 + 1);\n        __n = FUN_001e6060();\n        if (((int)__n < 1) || (sVar6 = strlen((char *)*param_2), (int)sVar6 < (int)__n))\n        goto LAB_001e8d09;\n        FUN_001e64b0();\n        __dest = (void *)FUN_001fcf40(__n + 1);\n        memcpy(__dest,(void *)*param_2,__n);\n        *(undefined1 *)((int)__dest + __n) = 0;\n        pcVar5 = (char *)FUN_001e7170(__dest,*param_1);\n        if (pcVar5 == (char *)0x0) {\n          FUN_001e63d0();\n        }\n        else {\n          if (*pcVar5 != '\0') {\n            FUN_001e64b0();\n          }\n          free(pcVar5);\n        }\n        *param_2 = *param_2 + __n;\n        free(__dest);\n      }\n      else {\n        if (cVar1 != 'T') {\n          if (cVar1 == 'U') goto LAB_001e8d75;\n          goto LAB_001e8d09;\n        }\n        *param_2 = (int)(pcVar5 + 1);\n        iVar4 = FUN_001e7a30();\n        if (iVar4 == 0) goto LAB_001e8d09;\n      }\nLAB_001e8cbb:\n      FUN_001e6600();\n      if ((*(char *)*param_2 == '\0') || (*(char *)*param_2 == '_')) goto LAB_001e8d09;\n      FUN_001e64b0();\n    }" { (expression_statement "pcVar5 = (char *)*param_2;" (assignment_expression "pcVar5 = (char *)*param_2" identifier = (cast_expression "(char *)*param_2" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_2" * identifier))) ;) (expression_statement "cVar1 = *pcVar5;" (assignment_expression "cVar1 = *pcVar5" identifier = (pointer_expression "*pcVar5" * identifier)) ;) (if_statement "if (cVar1 == 'S') {\nLAB_001e8d75:\n        if ((cVar1 + 0xadU & 0xfd) != 0) goto LAB_001e8d09;\n        pcVar7 = pcVar5 + 1;\n        *param_2 = (int)pcVar7;\n        cVar2 = pcVar5[1];\n        if (cVar2 == 'N') {\n          FUN_001e64b0();\n          pcVar7 = (char *)*param_2;\n        }\n        else if (cVar2 != 'P') {\n          if (cVar2 == 'M') {\n            FUN_001e64b0();\n            *param_2 = *param_2 + 1;\n            goto LAB_001e8cbb;\n          }\n          goto LAB_001e8d09;\n        }\n        *param_2 = (int)(pcVar7 + 1);\n        uVar9 = (uint)(byte)pcVar7[1];\n        if (((&DAT_002bf340)[uVar9 * 2] & 4) == 0) goto LAB_001e8d09;\n        do {\n          DAT_003b6400 = (char)uVar9;\n          if (DAT_003b6400 != '\0') {\n            FUN_001e64b0();\n          }\n          iVar4 = *param_2;\n          *param_2 = iVar4 + 1;\n          uVar9 = (uint)*(byte *)(iVar4 + 1);\n        } while (((&DAT_002bf340)[uVar9 * 2] & 4) != 0);\n        if (cVar1 == 'U') {\n          FUN_001e64b0();\n        }\n      }\n      else if (cVar1 < 'T') {\n        if (cVar1 != 'A') {\nLAB_001e8d09:\n          FUN_001e64b0();\n          if (*(char *)*param_2 == '_') {\n            *param_2 = (int)((char *)*param_2 + 1);\n          }\n          *param_1 = uVar10;\n          return;\n        }\n        *param_2 = (int)(pcVar5 + 1);\n        __n = FUN_001e6060();\n        if (((int)__n < 1) || (sVar6 = strlen((char *)*param_2), (int)sVar6 < (int)__n))\n        goto LAB_001e8d09;\n        FUN_001e64b0();\n        __dest = (void *)FUN_001fcf40(__n + 1);\n        memcpy(__dest,(void *)*param_2,__n);\n        *(undefined1 *)((int)__dest + __n) = 0;\n        pcVar5 = (char *)FUN_001e7170(__dest,*param_1);\n        if (pcVar5 == (char *)0x0) {\n          FUN_001e63d0();\n        }\n        else {\n          if (*pcVar5 != '\0') {\n            FUN_001e64b0();\n          }\n          free(pcVar5);\n        }\n        *param_2 = *param_2 + __n;\n        free(__dest);\n      }\n      else {\n        if (cVar1 != 'T') {\n          if (cVar1 == 'U') goto LAB_001e8d75;\n          goto LAB_001e8d09;\n        }\n        *param_2 = (int)(pcVar5 + 1);\n        iVar4 = FUN_001e7a30();\n        if (iVar4 == 0) goto LAB_001e8d09;\n      }" if (parenthesized_expression "(cVar1 == 'S')" ( (binary_expression "cVar1 == 'S'" identifier == (char_literal "'S'" ' character ')) )) (compound_statement "{\nLAB_001e8d75:\n        if ((cVar1 + 0xadU & 0xfd) != 0) goto LAB_001e8d09;\n        pcVar7 = pcVar5 + 1;\n        *param_2 = (int)pcVar7;\n        cVar2 = pcVar5[1];\n        if (cVar2 == 'N') {\n          FUN_001e64b0();\n          pcVar7 = (char *)*param_2;\n        }\n        else if (cVar2 != 'P') {\n          if (cVar2 == 'M') {\n            FUN_001e64b0();\n            *param_2 = *param_2 + 1;\n            goto LAB_001e8cbb;\n          }\n          goto LAB_001e8d09;\n        }\n        *param_2 = (int)(pcVar7 + 1);\n        uVar9 = (uint)(byte)pcVar7[1];\n        if (((&DAT_002bf340)[uVar9 * 2] & 4) == 0) goto LAB_001e8d09;\n        do {\n          DAT_003b6400 = (char)uVar9;\n          if (DAT_003b6400 != '\0') {\n            FUN_001e64b0();\n          }\n          iVar4 = *param_2;\n          *param_2 = iVar4 + 1;\n          uVar9 = (uint)*(byte *)(iVar4 + 1);\n        } while (((&DAT_002bf340)[uVar9 * 2] & 4) != 0);\n        if (cVar1 == 'U') {\n          FUN_001e64b0();\n        }\n      }" { (labeled_statement "LAB_001e8d75:\n        if ((cVar1 + 0xadU & 0xfd) != 0) goto LAB_001e8d09;" statement_identifier : (if_statement "if ((cVar1 + 0xadU & 0xfd) != 0) goto LAB_001e8d09;" if (parenthesized_expression "((cVar1 + 0xadU & 0xfd) != 0)" ( (binary_expression "(cVar1 + 0xadU & 0xfd) != 0" (parenthesized_expression "(cVar1 + 0xadU & 0xfd)" ( (binary_expression "cVar1 + 0xadU & 0xfd" (binary_expression "cVar1 + 0xadU" identifier + number_literal) & number_literal) )) != number_literal) )) (goto_statement "goto LAB_001e8d09;" goto statement_identifier ;))) (expression_statement "pcVar7 = pcVar5 + 1;" (assignment_expression "pcVar7 = pcVar5 + 1" identifier = (binary_expression "pcVar5 + 1" identifier + number_literal)) ;) (expression_statement "*param_2 = (int)pcVar7;" (assignment_expression "*param_2 = (int)pcVar7" (pointer_expression "*param_2" * identifier) = (cast_expression "(int)pcVar7" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "cVar2 = pcVar5[1];" (assignment_expression "cVar2 = pcVar5[1]" identifier = (subscript_expression "pcVar5[1]" identifier [ number_literal ])) ;) (if_statement "if (cVar2 == 'N') {\n          FUN_001e64b0();\n          pcVar7 = (char *)*param_2;\n        }\n        else if (cVar2 != 'P') {\n          if (cVar2 == 'M') {\n            FUN_001e64b0();\n            *param_2 = *param_2 + 1;\n            goto LAB_001e8cbb;\n          }\n          goto LAB_001e8d09;\n        }" if (parenthesized_expression "(cVar2 == 'N')" ( (binary_expression "cVar2 == 'N'" identifier == (char_literal "'N'" ' character ')) )) (compound_statement "{\n          FUN_001e64b0();\n          pcVar7 = (char *)*param_2;\n        }" { (expression_statement "FUN_001e64b0();" (call_expression "FUN_001e64b0()" identifier (argument_list "()" ( ))) ;) (expression_statement "pcVar7 = (char *)*param_2;" (assignment_expression "pcVar7 = (char *)*param_2" identifier = (cast_expression "(char *)*param_2" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_2" * identifier))) ;) }) (else_clause "else if (cVar2 != 'P') {\n          if (cVar2 == 'M') {\n            FUN_001e64b0();\n            *param_2 = *param_2 + 1;\n            goto LAB_001e8cbb;\n          }\n          goto LAB_001e8d09;\n        }" else (if_statement "if (cVar2 != 'P') {\n          if (cVar2 == 'M') {\n            FUN_001e64b0();\n            *param_2 = *param_2 + 1;\n            goto LAB_001e8cbb;\n          }\n          goto LAB_001e8d09;\n        }" if (parenthesized_expression "(cVar2 != 'P')" ( (binary_expression "cVar2 != 'P'" identifier != (char_literal "'P'" ' character ')) )) (compound_statement "{\n          if (cVar2 == 'M') {\n            FUN_001e64b0();\n            *param_2 = *param_2 + 1;\n            goto LAB_001e8cbb;\n          }\n          goto LAB_001e8d09;\n        }" { (if_statement "if (cVar2 == 'M') {\n            FUN_001e64b0();\n            *param_2 = *param_2 + 1;\n            goto LAB_001e8cbb;\n          }" if (parenthesized_expression "(cVar2 == 'M')" ( (binary_expression "cVar2 == 'M'" identifier == (char_literal "'M'" ' character ')) )) (compound_statement "{\n            FUN_001e64b0();\n            *param_2 = *param_2 + 1;\n            goto LAB_001e8cbb;\n          }" { (expression_statement "FUN_001e64b0();" (call_expression "FUN_001e64b0()" identifier (argument_list "()" ( ))) ;) (expression_statement "*param_2 = *param_2 + 1;" (assignment_expression "*param_2 = *param_2 + 1" (pointer_expression "*param_2" * identifier) = (binary_expression "*param_2 + 1" (pointer_expression "*param_2" * identifier) + number_literal)) ;) (goto_statement "goto LAB_001e8cbb;" goto statement_identifier ;) })) (goto_statement "goto LAB_001e8d09;" goto statement_identifier ;) })))) (expression_statement "*param_2 = (int)(pcVar7 + 1);" (assignment_expression "*param_2 = (int)(pcVar7 + 1)" (pointer_expression "*param_2" * identifier) = (cast_expression "(int)(pcVar7 + 1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(pcVar7 + 1)" ( (binary_expression "pcVar7 + 1" identifier + number_literal) )))) ;) (expression_statement "uVar9 = (uint)(byte)pcVar7[1];" (assignment_expression "uVar9 = (uint)(byte)pcVar7[1]" identifier = (cast_expression "(uint)(byte)pcVar7[1]" ( (type_descriptor "uint" type_identifier) ) (cast_expression "(byte)pcVar7[1]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "pcVar7[1]" identifier [ number_literal ])))) ;) (if_statement "if (((&DAT_002bf340)[uVar9 * 2] & 4) == 0) goto LAB_001e8d09;" if (parenthesized_expression "(((&DAT_002bf340)[uVar9 * 2] & 4) == 0)" ( (binary_expression "((&DAT_002bf340)[uVar9 * 2] & 4) == 0" (parenthesized_expression "((&DAT_002bf340)[uVar9 * 2] & 4)" ( (binary_expression "(&DAT_002bf340)[uVar9 * 2] & 4" (subscript_expression "(&DAT_002bf340)[uVar9 * 2]" (parenthesized_expression "(&DAT_002bf340)" ( (pointer_expression "&DAT_002bf340" & identifier) )) [ (binary_expression "uVar9 * 2" identifier * number_literal) ]) & number_literal) )) == number_literal) )) (goto_statement "goto LAB_001e8d09;" goto statement_identifier ;)) (do_statement "do {\n          DAT_003b6400 = (char)uVar9;\n          if (DAT_003b6400 != '\0') {\n            FUN_001e64b0();\n          }\n          iVar4 = *param_2;\n          *param_2 = iVar4 + 1;\n          uVar9 = (uint)*(byte *)(iVar4 + 1);\n        } while (((&DAT_002bf340)[uVar9 * 2] & 4) != 0);" do (compound_statement "{\n          DAT_003b6400 = (char)uVar9;\n          if (DAT_003b6400 != '\0') {\n            FUN_001e64b0();\n          }\n          iVar4 = *param_2;\n          *param_2 = iVar4 + 1;\n          uVar9 = (uint)*(byte *)(iVar4 + 1);\n        }" { (expression_statement "DAT_003b6400 = (char)uVar9;" (assignment_expression "DAT_003b6400 = (char)uVar9" identifier = (cast_expression "(char)uVar9" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (if_statement "if (DAT_003b6400 != '\0') {\n            FUN_001e64b0();\n          }" if (parenthesized_expression "(DAT_003b6400 != '\0')" ( (binary_expression "DAT_003b6400 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n            FUN_001e64b0();\n          }" { (expression_statement "FUN_001e64b0();" (call_expression "FUN_001e64b0()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "iVar4 = *param_2;" (assignment_expression "iVar4 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (expression_statement "*param_2 = iVar4 + 1;" (assignment_expression "*param_2 = iVar4 + 1" (pointer_expression "*param_2" * identifier) = (binary_expression "iVar4 + 1" identifier + number_literal)) ;) (expression_statement "uVar9 = (uint)*(byte *)(iVar4 + 1);" (assignment_expression "uVar9 = (uint)*(byte *)(iVar4 + 1)" identifier = (binary_expression "(uint)*(byte *)(iVar4 + 1)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(iVar4 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + 1)" ( (binary_expression "iVar4 + 1" identifier + number_literal) ))))) ;) }) while (parenthesized_expression "(((&DAT_002bf340)[uVar9 * 2] & 4) != 0)" ( (binary_expression "((&DAT_002bf340)[uVar9 * 2] & 4) != 0" (parenthesized_expression "((&DAT_002bf340)[uVar9 * 2] & 4)" ( (binary_expression "(&DAT_002bf340)[uVar9 * 2] & 4" (subscript_expression "(&DAT_002bf340)[uVar9 * 2]" (parenthesized_expression "(&DAT_002bf340)" ( (pointer_expression "&DAT_002bf340" & identifier) )) [ (binary_expression "uVar9 * 2" identifier * number_literal) ]) & number_literal) )) != number_literal) )) ;) (if_statement "if (cVar1 == 'U') {\n          FUN_001e64b0();\n        }" if (parenthesized_expression "(cVar1 == 'U')" ( (binary_expression "cVar1 == 'U'" identifier == (char_literal "'U'" ' character ')) )) (compound_statement "{\n          FUN_001e64b0();\n        }" { (expression_statement "FUN_001e64b0();" (call_expression "FUN_001e64b0()" identifier (argument_list "()" ( ))) ;) })) }) (else_clause "else if (cVar1 < 'T') {\n        if (cVar1 != 'A') {\nLAB_001e8d09:\n          FUN_001e64b0();\n          if (*(char *)*param_2 == '_') {\n            *param_2 = (int)((char *)*param_2 + 1);\n          }\n          *param_1 = uVar10;\n          return;\n        }\n        *param_2 = (int)(pcVar5 + 1);\n        __n = FUN_001e6060();\n        if (((int)__n < 1) || (sVar6 = strlen((char *)*param_2), (int)sVar6 < (int)__n))\n        goto LAB_001e8d09;\n        FUN_001e64b0();\n        __dest = (void *)FUN_001fcf40(__n + 1);\n        memcpy(__dest,(void *)*param_2,__n);\n        *(undefined1 *)((int)__dest + __n) = 0;\n        pcVar5 = (char *)FUN_001e7170(__dest,*param_1);\n        if (pcVar5 == (char *)0x0) {\n          FUN_001e63d0();\n        }\n        else {\n          if (*pcVar5 != '\0') {\n            FUN_001e64b0();\n          }\n          free(pcVar5);\n        }\n        *param_2 = *param_2 + __n;\n        free(__dest);\n      }\n      else {\n        if (cVar1 != 'T') {\n          if (cVar1 == 'U') goto LAB_001e8d75;\n          goto LAB_001e8d09;\n        }\n        *param_2 = (int)(pcVar5 + 1);\n        iVar4 = FUN_001e7a30();\n        if (iVar4 == 0) goto LAB_001e8d09;\n      }" else (if_statement "if (cVar1 < 'T') {\n        if (cVar1 != 'A') {\nLAB_001e8d09:\n          FUN_001e64b0();\n          if (*(char *)*param_2 == '_') {\n            *param_2 = (int)((char *)*param_2 + 1);\n          }\n          *param_1 = uVar10;\n          return;\n        }\n        *param_2 = (int)(pcVar5 + 1);\n        __n = FUN_001e6060();\n        if (((int)__n < 1) || (sVar6 = strlen((char *)*param_2), (int)sVar6 < (int)__n))\n        goto LAB_001e8d09;\n        FUN_001e64b0();\n        __dest = (void *)FUN_001fcf40(__n + 1);\n        memcpy(__dest,(void *)*param_2,__n);\n        *(undefined1 *)((int)__dest + __n) = 0;\n        pcVar5 = (char *)FUN_001e7170(__dest,*param_1);\n        if (pcVar5 == (char *)0x0) {\n          FUN_001e63d0();\n        }\n        else {\n          if (*pcVar5 != '\0') {\n            FUN_001e64b0();\n          }\n          free(pcVar5);\n        }\n        *param_2 = *param_2 + __n;\n        free(__dest);\n      }\n      else {\n        if (cVar1 != 'T') {\n          if (cVar1 == 'U') goto LAB_001e8d75;\n          goto LAB_001e8d09;\n        }\n        *param_2 = (int)(pcVar5 + 1);\n        iVar4 = FUN_001e7a30();\n        if (iVar4 == 0) goto LAB_001e8d09;\n      }" if (parenthesized_expression "(cVar1 < 'T')" ( (binary_expression "cVar1 < 'T'" identifier < (char_literal "'T'" ' character ')) )) (compound_statement "{\n        if (cVar1 != 'A') {\nLAB_001e8d09:\n          FUN_001e64b0();\n          if (*(char *)*param_2 == '_') {\n            *param_2 = (int)((char *)*param_2 + 1);\n          }\n          *param_1 = uVar10;\n          return;\n        }\n        *param_2 = (int)(pcVar5 + 1);\n        __n = FUN_001e6060();\n        if (((int)__n < 1) || (sVar6 = strlen((char *)*param_2), (int)sVar6 < (int)__n))\n        goto LAB_001e8d09;\n        FUN_001e64b0();\n        __dest = (void *)FUN_001fcf40(__n + 1);\n        memcpy(__dest,(void *)*param_2,__n);\n        *(undefined1 *)((int)__dest + __n) = 0;\n        pcVar5 = (char *)FUN_001e7170(__dest,*param_1);\n        if (pcVar5 == (char *)0x0) {\n          FUN_001e63d0();\n        }\n        else {\n          if (*pcVar5 != '\0') {\n            FUN_001e64b0();\n          }\n          free(pcVar5);\n        }\n        *param_2 = *param_2 + __n;\n        free(__dest);\n      }" { (if_statement "if (cVar1 != 'A') {\nLAB_001e8d09:\n          FUN_001e64b0();\n          if (*(char *)*param_2 == '_') {\n            *param_2 = (int)((char *)*param_2 + 1);\n          }\n          *param_1 = uVar10;\n          return;\n        }" if (parenthesized_expression "(cVar1 != 'A')" ( (binary_expression "cVar1 != 'A'" identifier != (char_literal "'A'" ' character ')) )) (compound_statement "{\nLAB_001e8d09:\n          FUN_001e64b0();\n          if (*(char *)*param_2 == '_') {\n            *param_2 = (int)((char *)*param_2 + 1);\n          }\n          *param_1 = uVar10;\n          return;\n        }" { (labeled_statement "LAB_001e8d09:\n          FUN_001e64b0();" statement_identifier : (expression_statement "FUN_001e64b0();" (call_expression "FUN_001e64b0()" identifier (argument_list "()" ( ))) ;)) (if_statement "if (*(char *)*param_2 == '_') {\n            *param_2 = (int)((char *)*param_2 + 1);\n          }" if (parenthesized_expression "(*(char *)*param_2 == '_')" ( (binary_expression "*(char *)*param_2 == '_'" (pointer_expression "*(char *)*param_2" * (cast_expression "(char *)*param_2" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_2" * identifier))) == (char_literal "'_'" ' character ')) )) (compound_statement "{\n            *param_2 = (int)((char *)*param_2 + 1);\n          }" { (expression_statement "*param_2 = (int)((char *)*param_2 + 1);" (assignment_expression "*param_2 = (int)((char *)*param_2 + 1)" (pointer_expression "*param_2" * identifier) = (cast_expression "(int)((char *)*param_2 + 1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((char *)*param_2 + 1)" ( (binary_expression "(char *)*param_2 + 1" (cast_expression "(char *)*param_2" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_2" * identifier)) + number_literal) )))) ;) })) (expression_statement "*param_1 = uVar10;" (assignment_expression "*param_1 = uVar10" (pointer_expression "*param_1" * identifier) = identifier) ;) (return_statement "return;" return ;) })) (expression_statement "*param_2 = (int)(pcVar5 + 1);" (assignment_expression "*param_2 = (int)(pcVar5 + 1)" (pointer_expression "*param_2" * identifier) = (cast_expression "(int)(pcVar5 + 1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(pcVar5 + 1)" ( (binary_expression "pcVar5 + 1" identifier + number_literal) )))) ;) (expression_statement "__n = FUN_001e6060();" (assignment_expression "__n = FUN_001e6060()" identifier = (call_expression "FUN_001e6060()" identifier (argument_list "()" ( )))) ;) (if_statement "if (((int)__n < 1) || (sVar6 = strlen((char *)*param_2), (int)sVar6 < (int)__n))\n        goto LAB_001e8d09;" if (parenthesized_expression "(((int)__n < 1) || (sVar6 = strlen((char *)*param_2), (int)sVar6 < (int)__n))" ( (binary_expression "((int)__n < 1) || (sVar6 = strlen((char *)*param_2), (int)sVar6 < (int)__n)" (parenthesized_expression "((int)__n < 1)" ( (binary_expression "(int)__n < 1" (cast_expression "(int)__n" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) || (parenthesized_expression "(sVar6 = strlen((char *)*param_2), (int)sVar6 < (int)__n)" ( (comma_expression "sVar6 = strlen((char *)*param_2), (int)sVar6 < (int)__n" (assignment_expression "sVar6 = strlen((char *)*param_2)" identifier = (call_expression "strlen((char *)*param_2)" identifier (argument_list "((char *)*param_2)" ( (cast_expression "(char *)*param_2" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_2" * identifier)) )))) , (binary_expression "(int)sVar6 < (int)__n" (cast_expression "(int)sVar6" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)__n" ( (type_descriptor "int" primitive_type) ) identifier))) ))) )) (goto_statement "goto LAB_001e8d09;" goto statement_identifier ;)) (expression_statement "FUN_001e64b0();" (call_expression "FUN_001e64b0()" identifier (argument_list "()" ( ))) ;) (expression_statement "__dest = (void *)FUN_001fcf40(__n + 1);" (assignment_expression "__dest = (void *)FUN_001fcf40(__n + 1)" identifier = (cast_expression "(void *)FUN_001fcf40(__n + 1)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_001fcf40(__n + 1)" identifier (argument_list "(__n + 1)" ( (binary_expression "__n + 1" identifier + number_literal) ))))) ;) (expression_statement "memcpy(__dest,(void *)*param_2,__n);" (call_expression "memcpy(__dest,(void *)*param_2,__n)" identifier (argument_list "(__dest,(void *)*param_2,__n)" ( identifier , (cast_expression "(void *)*param_2" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_2" * identifier)) , identifier ))) ;) (expression_statement "*(undefined1 *)((int)__dest + __n) = 0;" (assignment_expression "*(undefined1 *)((int)__dest + __n) = 0" (pointer_expression "*(undefined1 *)((int)__dest + __n)" * (cast_expression "(undefined1 *)((int)__dest + __n)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)__dest + __n)" ( (binary_expression "(int)__dest + __n" (cast_expression "(int)__dest" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) = number_literal) ;) (expression_statement "pcVar5 = (char *)FUN_001e7170(__dest,*param_1);" (assignment_expression "pcVar5 = (char *)FUN_001e7170(__dest,*param_1)" identifier = (cast_expression "(char *)FUN_001e7170(__dest,*param_1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_001e7170(__dest,*param_1)" identifier (argument_list "(__dest,*param_1)" ( identifier , (pointer_expression "*param_1" * identifier) ))))) ;) (if_statement "if (pcVar5 == (char *)0x0) {\n          FUN_001e63d0();\n        }\n        else {\n          if (*pcVar5 != '\0') {\n            FUN_001e64b0();\n          }\n          free(pcVar5);\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          FUN_001e63d0();\n        }" { (expression_statement "FUN_001e63d0();" (call_expression "FUN_001e63d0()" identifier (argument_list "()" ( ))) ;) }) (else_clause "else {\n          if (*pcVar5 != '\0') {\n            FUN_001e64b0();\n          }\n          free(pcVar5);\n        }" else (compound_statement "{\n          if (*pcVar5 != '\0') {\n            FUN_001e64b0();\n          }\n          free(pcVar5);\n        }" { (if_statement "if (*pcVar5 != '\0') {\n            FUN_001e64b0();\n          }" if (parenthesized_expression "(*pcVar5 != '\0')" ( (binary_expression "*pcVar5 != '\0'" (pointer_expression "*pcVar5" * identifier) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n            FUN_001e64b0();\n          }" { (expression_statement "FUN_001e64b0();" (call_expression "FUN_001e64b0()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "free(pcVar5);" (call_expression "free(pcVar5)" identifier (argument_list "(pcVar5)" ( identifier ))) ;) }))) (expression_statement "*param_2 = *param_2 + __n;" (assignment_expression "*param_2 = *param_2 + __n" (pointer_expression "*param_2" * identifier) = (binary_expression "*param_2 + __n" (pointer_expression "*param_2" * identifier) + identifier)) ;) (expression_statement "free(__dest);" (call_expression "free(__dest)" identifier (argument_list "(__dest)" ( identifier ))) ;) }) (else_clause "else {\n        if (cVar1 != 'T') {\n          if (cVar1 == 'U') goto LAB_001e8d75;\n          goto LAB_001e8d09;\n        }\n        *param_2 = (int)(pcVar5 + 1);\n        iVar4 = FUN_001e7a30();\n        if (iVar4 == 0) goto LAB_001e8d09;\n      }" else (compound_statement "{\n        if (cVar1 != 'T') {\n          if (cVar1 == 'U') goto LAB_001e8d75;\n          goto LAB_001e8d09;\n        }\n        *param_2 = (int)(pcVar5 + 1);\n        iVar4 = FUN_001e7a30();\n        if (iVar4 == 0) goto LAB_001e8d09;\n      }" { (if_statement "if (cVar1 != 'T') {\n          if (cVar1 == 'U') goto LAB_001e8d75;\n          goto LAB_001e8d09;\n        }" if (parenthesized_expression "(cVar1 != 'T')" ( (binary_expression "cVar1 != 'T'" identifier != (char_literal "'T'" ' character ')) )) (compound_statement "{\n          if (cVar1 == 'U') goto LAB_001e8d75;\n          goto LAB_001e8d09;\n        }" { (if_statement "if (cVar1 == 'U') goto LAB_001e8d75;" if (parenthesized_expression "(cVar1 == 'U')" ( (binary_expression "cVar1 == 'U'" identifier == (char_literal "'U'" ' character ')) )) (goto_statement "goto LAB_001e8d75;" goto statement_identifier ;)) (goto_statement "goto LAB_001e8d09;" goto statement_identifier ;) })) (expression_statement "*param_2 = (int)(pcVar5 + 1);" (assignment_expression "*param_2 = (int)(pcVar5 + 1)" (pointer_expression "*param_2" * identifier) = (cast_expression "(int)(pcVar5 + 1)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(pcVar5 + 1)" ( (binary_expression "pcVar5 + 1" identifier + number_literal) )))) ;) (expression_statement "iVar4 = FUN_001e7a30();" (assignment_expression "iVar4 = FUN_001e7a30()" identifier = (call_expression "FUN_001e7a30()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar4 == 0) goto LAB_001e8d09;" if (parenthesized_expression "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) )) (goto_statement "goto LAB_001e8d09;" goto statement_identifier ;)) }))))) (labeled_statement "LAB_001e8cbb:\n      FUN_001e6600();" statement_identifier : (expression_statement "FUN_001e6600();" (call_expression "FUN_001e6600()" identifier (argument_list "()" ( ))) ;)) (if_statement "if ((*(char *)*param_2 == '\0') || (*(char *)*param_2 == '_')) goto LAB_001e8d09;" if (parenthesized_expression "((*(char *)*param_2 == '\0') || (*(char *)*param_2 == '_'))" ( (binary_expression "(*(char *)*param_2 == '\0') || (*(char *)*param_2 == '_')" (parenthesized_expression "(*(char *)*param_2 == '\0')" ( (binary_expression "*(char *)*param_2 == '\0'" (pointer_expression "*(char *)*param_2" * (cast_expression "(char *)*param_2" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_2" * identifier))) == (char_literal "'\0'" ' escape_sequence ')) )) || (parenthesized_expression "(*(char *)*param_2 == '_')" ( (binary_expression "*(char *)*param_2 == '_'" (pointer_expression "*(char *)*param_2" * (cast_expression "(char *)*param_2" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_2" * identifier))) == (char_literal "'_'" ' character ')) ))) )) (goto_statement "goto LAB_001e8d09;" goto statement_identifier ;)) (expression_statement "FUN_001e64b0();" (call_expression "FUN_001e64b0()" identifier (argument_list "()" ( ))) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })) (if_statement "if (((uVar10 & 0x1800) == 0) || (pcVar3 = strstr(pcVar5,"__pt__"), pcVar3 == (char *)0x0)) {\nLAB_001e88a9:\n    if ((uVar10 & 0x2100) != 0) {\n      pcVar3 = strstr(pcVar5,"__tm__");\n      if (((pcVar3 == (char *)0x0) && (pcVar3 = strstr(pcVar5,"__ps__"), pcVar3 == (char *)0x0)) &&\n         (pcVar3 = strstr(pcVar5,"__pt__"), pcVar3 == (char *)0x0)) {\n        pcVar3 = strstr(pcVar5,"__S");\n        if (pcVar3 == (char *)0x0) goto LAB_001e88f1;\n        local_38 = pcVar3 + 3;\n      }\n      else {\n        local_38 = pcVar3 + 6;\n      }\n      iVar4 = FUN_001e6060();\n      if (((iVar4 != -1) && (pcVar7 == local_38 + iVar4)) && (*local_38 == '_')) goto LAB_001e8979;\n    }\n  }\n  else {\n    local_38 = pcVar3 + 6;\n    iVar4 = FUN_001e6060();\n    if (iVar4 != -1) {\n      if ((pcVar7 != local_38 + iVar4) || (*local_38 != '_')) {\n        uVar10 = *param_1;\n        goto LAB_001e88a9;\n      }\nLAB_001e8979:\n      local_38 = local_38 + 1;\n      if (pcVar3 != (char *)*param_2) {\n        FUN_001e63d0();\n      }\n      if (param_1[0xd] == 0xffffffff) {\n        param_1[0xd] = param_4[1] - *param_4;\n      }\n      uVar10 = *param_1;\n      *param_1 = uVar10 | 1;\n      FUN_001e64b0();\n      while (local_38 < pcVar7) {\n        if (*local_38 != 'L') {\n          if (*local_38 == 'X') {\n            local_38 = local_38 + 1;\n            iVar4 = FUN_001e7a30();\n            if (iVar4 != 0) {\n              FUN_001e64b0();\n              FUN_001e6600();\n              if (local_28 != (void *)0x0) {\n                free(local_28);\n                local_28 = (void *)0x0;\n              }\n              FUN_001e64b0();\n              if (*local_38 == 'L') goto LAB_001e8a99;\n            }\n          }\n          else {\n            iVar4 = FUN_001e7a30();\n            if (iVar4 != 0) {\n              *param_1 = uVar10;\n              return;\n            }\n          }\nLAB_001e8e50:\n          if (local_38 < pcVar7) goto LAB_001e8e86;\n          break;\n        }\nLAB_001e8a99:\n        local_38 = local_38 + 1;\n        iVar4 = FUN_001e6540();\n        if (iVar4 == 0) goto LAB_001e8e50;\n        FUN_001e6600();\n        FUN_001e64b0();\n      }\n      param_4[1] = param_4[1] + -1;\nLAB_001e8e86:\n      FUN_001e64b0();\n      *param_1 = uVar10;\n      pbVar8 = (byte *)*param_2;\n      goto LAB_001e895e;\n    }\n  }" if (parenthesized_expression "(((uVar10 & 0x1800) == 0) || (pcVar3 = strstr(pcVar5,"__pt__"), pcVar3 == (char *)0x0))" ( (binary_expression "((uVar10 & 0x1800) == 0) || (pcVar3 = strstr(pcVar5,"__pt__"), pcVar3 == (char *)0x0)" (parenthesized_expression "((uVar10 & 0x1800) == 0)" ( (binary_expression "(uVar10 & 0x1800) == 0" (parenthesized_expression "(uVar10 & 0x1800)" ( (binary_expression "uVar10 & 0x1800" identifier & number_literal) )) == number_literal) )) || (parenthesized_expression "(pcVar3 = strstr(pcVar5,"__pt__"), pcVar3 == (char *)0x0)" ( (comma_expression "pcVar3 = strstr(pcVar5,"__pt__"), pcVar3 == (char *)0x0" (assignment_expression "pcVar3 = strstr(pcVar5,"__pt__")" identifier = (call_expression "strstr(pcVar5,"__pt__")" identifier (argument_list "(pcVar5,"__pt__")" ( identifier , (string_literal ""__pt__"" " string_content ") )))) , (binary_expression "pcVar3 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (compound_statement "{\nLAB_001e88a9:\n    if ((uVar10 & 0x2100) != 0) {\n      pcVar3 = strstr(pcVar5,"__tm__");\n      if (((pcVar3 == (char *)0x0) && (pcVar3 = strstr(pcVar5,"__ps__"), pcVar3 == (char *)0x0)) &&\n         (pcVar3 = strstr(pcVar5,"__pt__"), pcVar3 == (char *)0x0)) {\n        pcVar3 = strstr(pcVar5,"__S");\n        if (pcVar3 == (char *)0x0) goto LAB_001e88f1;\n        local_38 = pcVar3 + 3;\n      }\n      else {\n        local_38 = pcVar3 + 6;\n      }\n      iVar4 = FUN_001e6060();\n      if (((iVar4 != -1) && (pcVar7 == local_38 + iVar4)) && (*local_38 == '_')) goto LAB_001e8979;\n    }\n  }" { (labeled_statement "LAB_001e88a9:\n    if ((uVar10 & 0x2100) != 0) {\n      pcVar3 = strstr(pcVar5,"__tm__");\n      if (((pcVar3 == (char *)0x0) && (pcVar3 = strstr(pcVar5,"__ps__"), pcVar3 == (char *)0x0)) &&\n         (pcVar3 = strstr(pcVar5,"__pt__"), pcVar3 == (char *)0x0)) {\n        pcVar3 = strstr(pcVar5,"__S");\n        if (pcVar3 == (char *)0x0) goto LAB_001e88f1;\n        local_38 = pcVar3 + 3;\n      }\n      else {\n        local_38 = pcVar3 + 6;\n      }\n      iVar4 = FUN_001e6060();\n      if (((iVar4 != -1) && (pcVar7 == local_38 + iVar4)) && (*local_38 == '_')) goto LAB_001e8979;\n    }" statement_identifier : (if_statement "if ((uVar10 & 0x2100) != 0) {\n      pcVar3 = strstr(pcVar5,"__tm__");\n      if (((pcVar3 == (char *)0x0) && (pcVar3 = strstr(pcVar5,"__ps__"), pcVar3 == (char *)0x0)) &&\n         (pcVar3 = strstr(pcVar5,"__pt__"), pcVar3 == (char *)0x0)) {\n        pcVar3 = strstr(pcVar5,"__S");\n        if (pcVar3 == (char *)0x0) goto LAB_001e88f1;\n        local_38 = pcVar3 + 3;\n      }\n      else {\n        local_38 = pcVar3 + 6;\n      }\n      iVar4 = FUN_001e6060();\n      if (((iVar4 != -1) && (pcVar7 == local_38 + iVar4)) && (*local_38 == '_')) goto LAB_001e8979;\n    }" if (parenthesized_expression "((uVar10 & 0x2100) != 0)" ( (binary_expression "(uVar10 & 0x2100) != 0" (parenthesized_expression "(uVar10 & 0x2100)" ( (binary_expression "uVar10 & 0x2100" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n      pcVar3 = strstr(pcVar5,"__tm__");\n      if (((pcVar3 == (char *)0x0) && (pcVar3 = strstr(pcVar5,"__ps__"), pcVar3 == (char *)0x0)) &&\n         (pcVar3 = strstr(pcVar5,"__pt__"), pcVar3 == (char *)0x0)) {\n        pcVar3 = strstr(pcVar5,"__S");\n        if (pcVar3 == (char *)0x0) goto LAB_001e88f1;\n        local_38 = pcVar3 + 3;\n      }\n      else {\n        local_38 = pcVar3 + 6;\n      }\n      iVar4 = FUN_001e6060();\n      if (((iVar4 != -1) && (pcVar7 == local_38 + iVar4)) && (*local_38 == '_')) goto LAB_001e8979;\n    }" { (expression_statement "pcVar3 = strstr(pcVar5,"__tm__");" (assignment_expression "pcVar3 = strstr(pcVar5,"__tm__")" identifier = (call_expression "strstr(pcVar5,"__tm__")" identifier (argument_list "(pcVar5,"__tm__")" ( identifier , (string_literal ""__tm__"" " string_content ") )))) ;) (if_statement "if (((pcVar3 == (char *)0x0) && (pcVar3 = strstr(pcVar5,"__ps__"), pcVar3 == (char *)0x0)) &&\n         (pcVar3 = strstr(pcVar5,"__pt__"), pcVar3 == (char *)0x0)) {\n        pcVar3 = strstr(pcVar5,"__S");\n        if (pcVar3 == (char *)0x0) goto LAB_001e88f1;\n        local_38 = pcVar3 + 3;\n      }\n      else {\n        local_38 = pcVar3 + 6;\n      }" if (parenthesized_expression "(((pcVar3 == (char *)0x0) && (pcVar3 = strstr(pcVar5,"__ps__"), pcVar3 == (char *)0x0)) &&\n         (pcVar3 = strstr(pcVar5,"__pt__"), pcVar3 == (char *)0x0))" ( (binary_expression "((pcVar3 == (char *)0x0) && (pcVar3 = strstr(pcVar5,"__ps__"), pcVar3 == (char *)0x0)) &&\n         (pcVar3 = strstr(pcVar5,"__pt__"), pcVar3 == (char *)0x0)" (parenthesized_expression "((pcVar3 == (char *)0x0) && (pcVar3 = strstr(pcVar5,"__ps__"), pcVar3 == (char *)0x0))" ( (binary_expression "(pcVar3 == (char *)0x0) && (pcVar3 = strstr(pcVar5,"__ps__"), pcVar3 == (char *)0x0)" (parenthesized_expression "(pcVar3 == (char *)0x0)" ( (binary_expression "pcVar3 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(pcVar3 = strstr(pcVar5,"__ps__"), pcVar3 == (char *)0x0)" ( (comma_expression "pcVar3 = strstr(pcVar5,"__ps__"), pcVar3 == (char *)0x0" (assignment_expression "pcVar3 = strstr(pcVar5,"__ps__")" identifier = (call_expression "strstr(pcVar5,"__ps__")" identifier (argument_list "(pcVar5,"__ps__")" ( identifier , (string_literal ""__ps__"" " string_content ") )))) , (binary_expression "pcVar3 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) && (parenthesized_expression "(pcVar3 = strstr(pcVar5,"__pt__"), pcVar3 == (char *)0x0)" ( (comma_expression "pcVar3 = strstr(pcVar5,"__pt__"), pcVar3 == (char *)0x0" (assignment_expression "pcVar3 = strstr(pcVar5,"__pt__")" identifier = (call_expression "strstr(pcVar5,"__pt__")" identifier (argument_list "(pcVar5,"__pt__")" ( identifier , (string_literal ""__pt__"" " string_content ") )))) , (binary_expression "pcVar3 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (compound_statement "{\n        pcVar3 = strstr(pcVar5,"__S");\n        if (pcVar3 == (char *)0x0) goto LAB_001e88f1;\n        local_38 = pcVar3 + 3;\n      }" { (expression_statement "pcVar3 = strstr(pcVar5,"__S");" (assignment_expression "pcVar3 = strstr(pcVar5,"__S")" identifier = (call_expression "strstr(pcVar5,"__S")" identifier (argument_list "(pcVar5,"__S")" ( identifier , (string_literal ""__S"" " string_content ") )))) ;) (if_statement "if (pcVar3 == (char *)0x0) goto LAB_001e88f1;" if (parenthesized_expression "(pcVar3 == (char *)0x0)" ( (binary_expression "pcVar3 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_001e88f1;" goto statement_identifier ;)) (expression_statement "local_38 = pcVar3 + 3;" (assignment_expression "local_38 = pcVar3 + 3" identifier = (binary_expression "pcVar3 + 3" identifier + number_literal)) ;) }) (else_clause "else {\n        local_38 = pcVar3 + 6;\n      }" else (compound_statement "{\n        local_38 = pcVar3 + 6;\n      }" { (expression_statement "local_38 = pcVar3 + 6;" (assignment_expression "local_38 = pcVar3 + 6" identifier = (binary_expression "pcVar3 + 6" identifier + number_literal)) ;) }))) (expression_statement "iVar4 = FUN_001e6060();" (assignment_expression "iVar4 = FUN_001e6060()" identifier = (call_expression "FUN_001e6060()" identifier (argument_list "()" ( )))) ;) (if_statement "if (((iVar4 != -1) && (pcVar7 == local_38 + iVar4)) && (*local_38 == '_')) goto LAB_001e8979;" if (parenthesized_expression "(((iVar4 != -1) && (pcVar7 == local_38 + iVar4)) && (*local_38 == '_'))" ( (binary_expression "((iVar4 != -1) && (pcVar7 == local_38 + iVar4)) && (*local_38 == '_')" (parenthesized_expression "((iVar4 != -1) && (pcVar7 == local_38 + iVar4))" ( (binary_expression "(iVar4 != -1) && (pcVar7 == local_38 + iVar4)" (parenthesized_expression "(iVar4 != -1)" ( (binary_expression "iVar4 != -1" identifier != number_literal) )) && (parenthesized_expression "(pcVar7 == local_38 + iVar4)" ( (binary_expression "pcVar7 == local_38 + iVar4" identifier == (binary_expression "local_38 + iVar4" identifier + identifier)) ))) )) && (parenthesized_expression "(*local_38 == '_')" ( (binary_expression "*local_38 == '_'" (pointer_expression "*local_38" * identifier) == (char_literal "'_'" ' character ')) ))) )) (goto_statement "goto LAB_001e8979;" goto statement_identifier ;)) }))) }) (else_clause "else {\n    local_38 = pcVar3 + 6;\n    iVar4 = FUN_001e6060();\n    if (iVar4 != -1) {\n      if ((pcVar7 != local_38 + iVar4) || (*local_38 != '_')) {\n        uVar10 = *param_1;\n        goto LAB_001e88a9;\n      }\nLAB_001e8979:\n      local_38 = local_38 + 1;\n      if (pcVar3 != (char *)*param_2) {\n        FUN_001e63d0();\n      }\n      if (param_1[0xd] == 0xffffffff) {\n        param_1[0xd] = param_4[1] - *param_4;\n      }\n      uVar10 = *param_1;\n      *param_1 = uVar10 | 1;\n      FUN_001e64b0();\n      while (local_38 < pcVar7) {\n        if (*local_38 != 'L') {\n          if (*local_38 == 'X') {\n            local_38 = local_38 + 1;\n            iVar4 = FUN_001e7a30();\n            if (iVar4 != 0) {\n              FUN_001e64b0();\n              FUN_001e6600();\n              if (local_28 != (void *)0x0) {\n                free(local_28);\n                local_28 = (void *)0x0;\n              }\n              FUN_001e64b0();\n              if (*local_38 == 'L') goto LAB_001e8a99;\n            }\n          }\n          else {\n            iVar4 = FUN_001e7a30();\n            if (iVar4 != 0) {\n              *param_1 = uVar10;\n              return;\n            }\n          }\nLAB_001e8e50:\n          if (local_38 < pcVar7) goto LAB_001e8e86;\n          break;\n        }\nLAB_001e8a99:\n        local_38 = local_38 + 1;\n        iVar4 = FUN_001e6540();\n        if (iVar4 == 0) goto LAB_001e8e50;\n        FUN_001e6600();\n        FUN_001e64b0();\n      }\n      param_4[1] = param_4[1] + -1;\nLAB_001e8e86:\n      FUN_001e64b0();\n      *param_1 = uVar10;\n      pbVar8 = (byte *)*param_2;\n      goto LAB_001e895e;\n    }\n  }" else (compound_statement "{\n    local_38 = pcVar3 + 6;\n    iVar4 = FUN_001e6060();\n    if (iVar4 != -1) {\n      if ((pcVar7 != local_38 + iVar4) || (*local_38 != '_')) {\n        uVar10 = *param_1;\n        goto LAB_001e88a9;\n      }\nLAB_001e8979:\n      local_38 = local_38 + 1;\n      if (pcVar3 != (char *)*param_2) {\n        FUN_001e63d0();\n      }\n      if (param_1[0xd] == 0xffffffff) {\n        param_1[0xd] = param_4[1] - *param_4;\n      }\n      uVar10 = *param_1;\n      *param_1 = uVar10 | 1;\n      FUN_001e64b0();\n      while (local_38 < pcVar7) {\n        if (*local_38 != 'L') {\n          if (*local_38 == 'X') {\n            local_38 = local_38 + 1;\n            iVar4 = FUN_001e7a30();\n            if (iVar4 != 0) {\n              FUN_001e64b0();\n              FUN_001e6600();\n              if (local_28 != (void *)0x0) {\n                free(local_28);\n                local_28 = (void *)0x0;\n              }\n              FUN_001e64b0();\n              if (*local_38 == 'L') goto LAB_001e8a99;\n            }\n          }\n          else {\n            iVar4 = FUN_001e7a30();\n            if (iVar4 != 0) {\n              *param_1 = uVar10;\n              return;\n            }\n          }\nLAB_001e8e50:\n          if (local_38 < pcVar7) goto LAB_001e8e86;\n          break;\n        }\nLAB_001e8a99:\n        local_38 = local_38 + 1;\n        iVar4 = FUN_001e6540();\n        if (iVar4 == 0) goto LAB_001e8e50;\n        FUN_001e6600();\n        FUN_001e64b0();\n      }\n      param_4[1] = param_4[1] + -1;\nLAB_001e8e86:\n      FUN_001e64b0();\n      *param_1 = uVar10;\n      pbVar8 = (byte *)*param_2;\n      goto LAB_001e895e;\n    }\n  }" { (expression_statement "local_38 = pcVar3 + 6;" (assignment_expression "local_38 = pcVar3 + 6" identifier = (binary_expression "pcVar3 + 6" identifier + number_literal)) ;) (expression_statement "iVar4 = FUN_001e6060();" (assignment_expression "iVar4 = FUN_001e6060()" identifier = (call_expression "FUN_001e6060()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar4 != -1) {\n      if ((pcVar7 != local_38 + iVar4) || (*local_38 != '_')) {\n        uVar10 = *param_1;\n        goto LAB_001e88a9;\n      }\nLAB_001e8979:\n      local_38 = local_38 + 1;\n      if (pcVar3 != (char *)*param_2) {\n        FUN_001e63d0();\n      }\n      if (param_1[0xd] == 0xffffffff) {\n        param_1[0xd] = param_4[1] - *param_4;\n      }\n      uVar10 = *param_1;\n      *param_1 = uVar10 | 1;\n      FUN_001e64b0();\n      while (local_38 < pcVar7) {\n        if (*local_38 != 'L') {\n          if (*local_38 == 'X') {\n            local_38 = local_38 + 1;\n            iVar4 = FUN_001e7a30();\n            if (iVar4 != 0) {\n              FUN_001e64b0();\n              FUN_001e6600();\n              if (local_28 != (void *)0x0) {\n                free(local_28);\n                local_28 = (void *)0x0;\n              }\n              FUN_001e64b0();\n              if (*local_38 == 'L') goto LAB_001e8a99;\n            }\n          }\n          else {\n            iVar4 = FUN_001e7a30();\n            if (iVar4 != 0) {\n              *param_1 = uVar10;\n              return;\n            }\n          }\nLAB_001e8e50:\n          if (local_38 < pcVar7) goto LAB_001e8e86;\n          break;\n        }\nLAB_001e8a99:\n        local_38 = local_38 + 1;\n        iVar4 = FUN_001e6540();\n        if (iVar4 == 0) goto LAB_001e8e50;\n        FUN_001e6600();\n        FUN_001e64b0();\n      }\n      param_4[1] = param_4[1] + -1;\nLAB_001e8e86:\n      FUN_001e64b0();\n      *param_1 = uVar10;\n      pbVar8 = (byte *)*param_2;\n      goto LAB_001e895e;\n    }" if (parenthesized_expression "(iVar4 != -1)" ( (binary_expression "iVar4 != -1" identifier != number_literal) )) (compound_statement "{\n      if ((pcVar7 != local_38 + iVar4) || (*local_38 != '_')) {\n        uVar10 = *param_1;\n        goto LAB_001e88a9;\n      }\nLAB_001e8979:\n      local_38 = local_38 + 1;\n      if (pcVar3 != (char *)*param_2) {\n        FUN_001e63d0();\n      }\n      if (param_1[0xd] == 0xffffffff) {\n        param_1[0xd] = param_4[1] - *param_4;\n      }\n      uVar10 = *param_1;\n      *param_1 = uVar10 | 1;\n      FUN_001e64b0();\n      while (local_38 < pcVar7) {\n        if (*local_38 != 'L') {\n          if (*local_38 == 'X') {\n            local_38 = local_38 + 1;\n            iVar4 = FUN_001e7a30();\n            if (iVar4 != 0) {\n              FUN_001e64b0();\n              FUN_001e6600();\n              if (local_28 != (void *)0x0) {\n                free(local_28);\n                local_28 = (void *)0x0;\n              }\n              FUN_001e64b0();\n              if (*local_38 == 'L') goto LAB_001e8a99;\n            }\n          }\n          else {\n            iVar4 = FUN_001e7a30();\n            if (iVar4 != 0) {\n              *param_1 = uVar10;\n              return;\n            }\n          }\nLAB_001e8e50:\n          if (local_38 < pcVar7) goto LAB_001e8e86;\n          break;\n        }\nLAB_001e8a99:\n        local_38 = local_38 + 1;\n        iVar4 = FUN_001e6540();\n        if (iVar4 == 0) goto LAB_001e8e50;\n        FUN_001e6600();\n        FUN_001e64b0();\n      }\n      param_4[1] = param_4[1] + -1;\nLAB_001e8e86:\n      FUN_001e64b0();\n      *param_1 = uVar10;\n      pbVar8 = (byte *)*param_2;\n      goto LAB_001e895e;\n    }" { (if_statement "if ((pcVar7 != local_38 + iVar4) || (*local_38 != '_')) {\n        uVar10 = *param_1;\n        goto LAB_001e88a9;\n      }" if (parenthesized_expression "((pcVar7 != local_38 + iVar4) || (*local_38 != '_'))" ( (binary_expression "(pcVar7 != local_38 + iVar4) || (*local_38 != '_')" (parenthesized_expression "(pcVar7 != local_38 + iVar4)" ( (binary_expression "pcVar7 != local_38 + iVar4" identifier != (binary_expression "local_38 + iVar4" identifier + identifier)) )) || (parenthesized_expression "(*local_38 != '_')" ( (binary_expression "*local_38 != '_'" (pointer_expression "*local_38" * identifier) != (char_literal "'_'" ' character ')) ))) )) (compound_statement "{\n        uVar10 = *param_1;\n        goto LAB_001e88a9;\n      }" { (expression_statement "uVar10 = *param_1;" (assignment_expression "uVar10 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (goto_statement "goto LAB_001e88a9;" goto statement_identifier ;) })) (labeled_statement "LAB_001e8979:\n      local_38 = local_38 + 1;" statement_identifier : (expression_statement "local_38 = local_38 + 1;" (assignment_expression "local_38 = local_38 + 1" identifier = (binary_expression "local_38 + 1" identifier + number_literal)) ;)) (if_statement "if (pcVar3 != (char *)*param_2) {\n        FUN_001e63d0();\n      }" if (parenthesized_expression "(pcVar3 != (char *)*param_2)" ( (binary_expression "pcVar3 != (char *)*param_2" identifier != (cast_expression "(char *)*param_2" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_2" * identifier))) )) (compound_statement "{\n        FUN_001e63d0();\n      }" { (expression_statement "FUN_001e63d0();" (call_expression "FUN_001e63d0()" identifier (argument_list "()" ( ))) ;) })) (if_statement "if (param_1[0xd] == 0xffffffff) {\n        param_1[0xd] = param_4[1] - *param_4;\n      }" if (parenthesized_expression "(param_1[0xd] == 0xffffffff)" ( (binary_expression "param_1[0xd] == 0xffffffff" (subscript_expression "param_1[0xd]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n        param_1[0xd] = param_4[1] - *param_4;\n      }" { (expression_statement "param_1[0xd] = param_4[1] - *param_4;" (assignment_expression "param_1[0xd] = param_4[1] - *param_4" (subscript_expression "param_1[0xd]" identifier [ number_literal ]) = (binary_expression "param_4[1] - *param_4" (subscript_expression "param_4[1]" identifier [ number_literal ]) - (pointer_expression "*param_4" * identifier))) ;) })) (expression_statement "uVar10 = *param_1;" (assignment_expression "uVar10 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "*param_1 = uVar10 | 1;" (assignment_expression "*param_1 = uVar10 | 1" (pointer_expression "*param_1" * identifier) = (binary_expression "uVar10 | 1" identifier | number_literal)) ;) (expression_statement "FUN_001e64b0();" (call_expression "FUN_001e64b0()" identifier (argument_list "()" ( ))) ;) (while_statement "while (local_38 < pcVar7) {\n        if (*local_38 != 'L') {\n          if (*local_38 == 'X') {\n            local_38 = local_38 + 1;\n            iVar4 = FUN_001e7a30();\n            if (iVar4 != 0) {\n              FUN_001e64b0();\n              FUN_001e6600();\n              if (local_28 != (void *)0x0) {\n                free(local_28);\n                local_28 = (void *)0x0;\n              }\n              FUN_001e64b0();\n              if (*local_38 == 'L') goto LAB_001e8a99;\n            }\n          }\n          else {\n            iVar4 = FUN_001e7a30();\n            if (iVar4 != 0) {\n              *param_1 = uVar10;\n              return;\n            }\n          }\nLAB_001e8e50:\n          if (local_38 < pcVar7) goto LAB_001e8e86;\n          break;\n        }\nLAB_001e8a99:\n        local_38 = local_38 + 1;\n        iVar4 = FUN_001e6540();\n        if (iVar4 == 0) goto LAB_001e8e50;\n        FUN_001e6600();\n        FUN_001e64b0();\n      }" while (parenthesized_expression "(local_38 < pcVar7)" ( (binary_expression "local_38 < pcVar7" identifier < identifier) )) (compound_statement "{\n        if (*local_38 != 'L') {\n          if (*local_38 == 'X') {\n            local_38 = local_38 + 1;\n            iVar4 = FUN_001e7a30();\n            if (iVar4 != 0) {\n              FUN_001e64b0();\n              FUN_001e6600();\n              if (local_28 != (void *)0x0) {\n                free(local_28);\n                local_28 = (void *)0x0;\n              }\n              FUN_001e64b0();\n              if (*local_38 == 'L') goto LAB_001e8a99;\n            }\n          }\n          else {\n            iVar4 = FUN_001e7a30();\n            if (iVar4 != 0) {\n              *param_1 = uVar10;\n              return;\n            }\n          }\nLAB_001e8e50:\n          if (local_38 < pcVar7) goto LAB_001e8e86;\n          break;\n        }\nLAB_001e8a99:\n        local_38 = local_38 + 1;\n        iVar4 = FUN_001e6540();\n        if (iVar4 == 0) goto LAB_001e8e50;\n        FUN_001e6600();\n        FUN_001e64b0();\n      }" { (if_statement "if (*local_38 != 'L') {\n          if (*local_38 == 'X') {\n            local_38 = local_38 + 1;\n            iVar4 = FUN_001e7a30();\n            if (iVar4 != 0) {\n              FUN_001e64b0();\n              FUN_001e6600();\n              if (local_28 != (void *)0x0) {\n                free(local_28);\n                local_28 = (void *)0x0;\n              }\n              FUN_001e64b0();\n              if (*local_38 == 'L') goto LAB_001e8a99;\n            }\n          }\n          else {\n            iVar4 = FUN_001e7a30();\n            if (iVar4 != 0) {\n              *param_1 = uVar10;\n              return;\n            }\n          }\nLAB_001e8e50:\n          if (local_38 < pcVar7) goto LAB_001e8e86;\n          break;\n        }" if (parenthesized_expression "(*local_38 != 'L')" ( (binary_expression "*local_38 != 'L'" (pointer_expression "*local_38" * identifier) != (char_literal "'L'" ' character ')) )) (compound_statement "{\n          if (*local_38 == 'X') {\n            local_38 = local_38 + 1;\n            iVar4 = FUN_001e7a30();\n            if (iVar4 != 0) {\n              FUN_001e64b0();\n              FUN_001e6600();\n              if (local_28 != (void *)0x0) {\n                free(local_28);\n                local_28 = (void *)0x0;\n              }\n              FUN_001e64b0();\n              if (*local_38 == 'L') goto LAB_001e8a99;\n            }\n          }\n          else {\n            iVar4 = FUN_001e7a30();\n            if (iVar4 != 0) {\n              *param_1 = uVar10;\n              return;\n            }\n          }\nLAB_001e8e50:\n          if (local_38 < pcVar7) goto LAB_001e8e86;\n          break;\n        }" { (if_statement "if (*local_38 == 'X') {\n            local_38 = local_38 + 1;\n            iVar4 = FUN_001e7a30();\n            if (iVar4 != 0) {\n              FUN_001e64b0();\n              FUN_001e6600();\n              if (local_28 != (void *)0x0) {\n                free(local_28);\n                local_28 = (void *)0x0;\n              }\n              FUN_001e64b0();\n              if (*local_38 == 'L') goto LAB_001e8a99;\n            }\n          }\n          else {\n            iVar4 = FUN_001e7a30();\n            if (iVar4 != 0) {\n              *param_1 = uVar10;\n              return;\n            }\n          }" if (parenthesized_expression "(*local_38 == 'X')" ( (binary_expression "*local_38 == 'X'" (pointer_expression "*local_38" * identifier) == (char_literal "'X'" ' character ')) )) (compound_statement "{\n            local_38 = local_38 + 1;\n            iVar4 = FUN_001e7a30();\n            if (iVar4 != 0) {\n              FUN_001e64b0();\n              FUN_001e6600();\n              if (local_28 != (void *)0x0) {\n                free(local_28);\n                local_28 = (void *)0x0;\n              }\n              FUN_001e64b0();\n              if (*local_38 == 'L') goto LAB_001e8a99;\n            }\n          }" { (expression_statement "local_38 = local_38 + 1;" (assignment_expression "local_38 = local_38 + 1" identifier = (binary_expression "local_38 + 1" identifier + number_literal)) ;) (expression_statement "iVar4 = FUN_001e7a30();" (assignment_expression "iVar4 = FUN_001e7a30()" identifier = (call_expression "FUN_001e7a30()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar4 != 0) {\n              FUN_001e64b0();\n              FUN_001e6600();\n              if (local_28 != (void *)0x0) {\n                free(local_28);\n                local_28 = (void *)0x0;\n              }\n              FUN_001e64b0();\n              if (*local_38 == 'L') goto LAB_001e8a99;\n            }" if (parenthesized_expression "(iVar4 != 0)" ( (binary_expression "iVar4 != 0" identifier != number_literal) )) (compound_statement "{\n              FUN_001e64b0();\n              FUN_001e6600();\n              if (local_28 != (void *)0x0) {\n                free(local_28);\n                local_28 = (void *)0x0;\n              }\n              FUN_001e64b0();\n              if (*local_38 == 'L') goto LAB_001e8a99;\n            }" { (expression_statement "FUN_001e64b0();" (call_expression "FUN_001e64b0()" identifier (argument_list "()" ( ))) ;) (expression_statement "FUN_001e6600();" (call_expression "FUN_001e6600()" identifier (argument_list "()" ( ))) ;) (if_statement "if (local_28 != (void *)0x0) {\n                free(local_28);\n                local_28 = (void *)0x0;\n              }" if (parenthesized_expression "(local_28 != (void *)0x0)" ( (binary_expression "local_28 != (void *)0x0" identifier != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                free(local_28);\n                local_28 = (void *)0x0;\n              }" { (expression_statement "free(local_28);" (call_expression "free(local_28)" identifier (argument_list "(local_28)" ( identifier ))) ;) (expression_statement "local_28 = (void *)0x0;" (assignment_expression "local_28 = (void *)0x0" identifier = (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) })) (expression_statement "FUN_001e64b0();" (call_expression "FUN_001e64b0()" identifier (argument_list "()" ( ))) ;) (if_statement "if (*local_38 == 'L') goto LAB_001e8a99;" if (parenthesized_expression "(*local_38 == 'L')" ( (binary_expression "*local_38 == 'L'" (pointer_expression "*local_38" * identifier) == (char_literal "'L'" ' character ')) )) (goto_statement "goto LAB_001e8a99;" goto statement_identifier ;)) })) }) (else_clause "else {\n            iVar4 = FUN_001e7a30();\n            if (iVar4 != 0) {\n              *param_1 = uVar10;\n              return;\n            }\n          }" else (compound_statement "{\n            iVar4 = FUN_001e7a30();\n            if (iVar4 != 0) {\n              *param_1 = uVar10;\n              return;\n            }\n          }" { (expression_statement "iVar4 = FUN_001e7a30();" (assignment_expression "iVar4 = FUN_001e7a30()" identifier = (call_expression "FUN_001e7a30()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar4 != 0) {\n              *param_1 = uVar10;\n              return;\n            }" if (parenthesized_expression "(iVar4 != 0)" ( (binary_expression "iVar4 != 0" identifier != number_literal) )) (compound_statement "{\n              *param_1 = uVar10;\n              return;\n            }" { (expression_statement "*param_1 = uVar10;" (assignment_expression "*param_1 = uVar10" (pointer_expression "*param_1" * identifier) = identifier) ;) (return_statement "return;" return ;) })) }))) (labeled_statement "LAB_001e8e50:\n          if (local_38 < pcVar7) goto LAB_001e8e86;" statement_identifier : (if_statement "if (local_38 < pcVar7) goto LAB_001e8e86;" if (parenthesized_expression "(local_38 < pcVar7)" ( (binary_expression "local_38 < pcVar7" identifier < identifier) )) (goto_statement "goto LAB_001e8e86;" goto statement_identifier ;))) (break_statement "break;" break ;) })) (labeled_statement "LAB_001e8a99:\n        local_38 = local_38 + 1;" statement_identifier : (expression_statement "local_38 = local_38 + 1;" (assignment_expression "local_38 = local_38 + 1" identifier = (binary_expression "local_38 + 1" identifier + number_literal)) ;)) (expression_statement "iVar4 = FUN_001e6540();" (assignment_expression "iVar4 = FUN_001e6540()" identifier = (call_expression "FUN_001e6540()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar4 == 0) goto LAB_001e8e50;" if (parenthesized_expression "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) )) (goto_statement "goto LAB_001e8e50;" goto statement_identifier ;)) (expression_statement "FUN_001e6600();" (call_expression "FUN_001e6600()" identifier (argument_list "()" ( ))) ;) (expression_statement "FUN_001e64b0();" (call_expression "FUN_001e64b0()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "param_4[1] = param_4[1] + -1;" (assignment_expression "param_4[1] = param_4[1] + -1" (subscript_expression "param_4[1]" identifier [ number_literal ]) = (binary_expression "param_4[1] + -1" (subscript_expression "param_4[1]" identifier [ number_literal ]) + number_literal)) ;) (labeled_statement "LAB_001e8e86:\n      FUN_001e64b0();" statement_identifier : (expression_statement "FUN_001e64b0();" (call_expression "FUN_001e64b0()" identifier (argument_list "()" ( ))) ;)) (expression_statement "*param_1 = uVar10;" (assignment_expression "*param_1 = uVar10" (pointer_expression "*param_1" * identifier) = identifier) ;) (expression_statement "pbVar8 = (byte *)*param_2;" (assignment_expression "pbVar8 = (byte *)*param_2" identifier = (cast_expression "(byte *)*param_2" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_2" * identifier))) ;) (goto_statement "goto LAB_001e895e;" goto statement_identifier ;) })) }))) (labeled_statement "LAB_001e88f1:\n  bVar13 = param_3 < 10;" statement_identifier : (expression_statement "bVar13 = param_3 < 10;" (assignment_expression "bVar13 = param_3 < 10" identifier = (binary_expression "param_3 < 10" identifier < number_literal)) ;)) (expression_statement "bVar14 = param_3 == 10;" (assignment_expression "bVar14 = param_3 == 10" identifier = (binary_expression "param_3 == 10" identifier == number_literal)) ;) (expression_statement "pbVar8 = (byte *)*param_2;" (assignment_expression "pbVar8 = (byte *)*param_2" identifier = (cast_expression "(byte *)*param_2" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_2" * identifier))) ;) (if_statement "if ((int)param_3 < 0xb) {\n    if (param_1[0xd] == 0xffffffff) {\nLAB_001e8b50:\n      param_1[0xd] = 0;\n    }\n    if (param_3 == 0) goto LAB_001e895e;\n  }\n  else {\n    iVar4 = 8;\n    pbVar11 = pbVar8;\n    pbVar12 = (byte *)"_GLOBAL_";\n    do {\n      if (iVar4 == 0) break;\n      iVar4 = iVar4 + -1;\n      bVar13 = *pbVar11 < *pbVar12;\n      bVar14 = *pbVar11 == *pbVar12;\n      pbVar11 = pbVar11 + (uint)bVar15 * -2 + 1;\n      pbVar12 = pbVar12 + (uint)bVar15 * -2 + 1;\n    } while (bVar14);\n    if ((((!bVar13 && !bVar14) == bVar13) && (pbVar8[9] == 0x4e)) &&\n       ((pbVar8[8] == pbVar8[10] &&\n        (pcVar5 = strchr(&DAT_003af40c,(int)(char)pbVar8[8]), pcVar5 != (char *)0x0)))) {\n      FUN_001e64b0();\n      pbVar8 = (byte *)*param_2;\n      goto LAB_001e895e;\n    }\n    if (param_1[0xd] == 0xffffffff) goto LAB_001e8b50;\n  }" if (parenthesized_expression "((int)param_3 < 0xb)" ( (binary_expression "(int)param_3 < 0xb" (cast_expression "(int)param_3" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n    if (param_1[0xd] == 0xffffffff) {\nLAB_001e8b50:\n      param_1[0xd] = 0;\n    }\n    if (param_3 == 0) goto LAB_001e895e;\n  }" { (if_statement "if (param_1[0xd] == 0xffffffff) {\nLAB_001e8b50:\n      param_1[0xd] = 0;\n    }" if (parenthesized_expression "(param_1[0xd] == 0xffffffff)" ( (binary_expression "param_1[0xd] == 0xffffffff" (subscript_expression "param_1[0xd]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\nLAB_001e8b50:\n      param_1[0xd] = 0;\n    }" { (labeled_statement "LAB_001e8b50:\n      param_1[0xd] = 0;" statement_identifier : (expression_statement "param_1[0xd] = 0;" (assignment_expression "param_1[0xd] = 0" (subscript_expression "param_1[0xd]" identifier [ number_literal ]) = number_literal) ;)) })) (if_statement "if (param_3 == 0) goto LAB_001e895e;" if (parenthesized_expression "(param_3 == 0)" ( (binary_expression "param_3 == 0" identifier == number_literal) )) (goto_statement "goto LAB_001e895e;" goto statement_identifier ;)) }) (else_clause "else {\n    iVar4 = 8;\n    pbVar11 = pbVar8;\n    pbVar12 = (byte *)"_GLOBAL_";\n    do {\n      if (iVar4 == 0) break;\n      iVar4 = iVar4 + -1;\n      bVar13 = *pbVar11 < *pbVar12;\n      bVar14 = *pbVar11 == *pbVar12;\n      pbVar11 = pbVar11 + (uint)bVar15 * -2 + 1;\n      pbVar12 = pbVar12 + (uint)bVar15 * -2 + 1;\n    } while (bVar14);\n    if ((((!bVar13 && !bVar14) == bVar13) && (pbVar8[9] == 0x4e)) &&\n       ((pbVar8[8] == pbVar8[10] &&\n        (pcVar5 = strchr(&DAT_003af40c,(int)(char)pbVar8[8]), pcVar5 != (char *)0x0)))) {\n      FUN_001e64b0();\n      pbVar8 = (byte *)*param_2;\n      goto LAB_001e895e;\n    }\n    if (param_1[0xd] == 0xffffffff) goto LAB_001e8b50;\n  }" else (compound_statement "{\n    iVar4 = 8;\n    pbVar11 = pbVar8;\n    pbVar12 = (byte *)"_GLOBAL_";\n    do {\n      if (iVar4 == 0) break;\n      iVar4 = iVar4 + -1;\n      bVar13 = *pbVar11 < *pbVar12;\n      bVar14 = *pbVar11 == *pbVar12;\n      pbVar11 = pbVar11 + (uint)bVar15 * -2 + 1;\n      pbVar12 = pbVar12 + (uint)bVar15 * -2 + 1;\n    } while (bVar14);\n    if ((((!bVar13 && !bVar14) == bVar13) && (pbVar8[9] == 0x4e)) &&\n       ((pbVar8[8] == pbVar8[10] &&\n        (pcVar5 = strchr(&DAT_003af40c,(int)(char)pbVar8[8]), pcVar5 != (char *)0x0)))) {\n      FUN_001e64b0();\n      pbVar8 = (byte *)*param_2;\n      goto LAB_001e895e;\n    }\n    if (param_1[0xd] == 0xffffffff) goto LAB_001e8b50;\n  }" { (expression_statement "iVar4 = 8;" (assignment_expression "iVar4 = 8" identifier = number_literal) ;) (expression_statement "pbVar11 = pbVar8;" (assignment_expression "pbVar11 = pbVar8" identifier = identifier) ;) (expression_statement "pbVar12 = (byte *)"_GLOBAL_";" (assignment_expression "pbVar12 = (byte *)"_GLOBAL_"" identifier = (cast_expression "(byte *)"_GLOBAL_"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal ""_GLOBAL_"" " string_content "))) ;) (do_statement "do {\n      if (iVar4 == 0) break;\n      iVar4 = iVar4 + -1;\n      bVar13 = *pbVar11 < *pbVar12;\n      bVar14 = *pbVar11 == *pbVar12;\n      pbVar11 = pbVar11 + (uint)bVar15 * -2 + 1;\n      pbVar12 = pbVar12 + (uint)bVar15 * -2 + 1;\n    } while (bVar14);" do (compound_statement "{\n      if (iVar4 == 0) break;\n      iVar4 = iVar4 + -1;\n      bVar13 = *pbVar11 < *pbVar12;\n      bVar14 = *pbVar11 == *pbVar12;\n      pbVar11 = pbVar11 + (uint)bVar15 * -2 + 1;\n      pbVar12 = pbVar12 + (uint)bVar15 * -2 + 1;\n    }" { (if_statement "if (iVar4 == 0) break;" if (parenthesized_expression "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar4 = iVar4 + -1;" (assignment_expression "iVar4 = iVar4 + -1" identifier = (binary_expression "iVar4 + -1" identifier + number_literal)) ;) (expression_statement "bVar13 = *pbVar11 < *pbVar12;" (assignment_expression "bVar13 = *pbVar11 < *pbVar12" identifier = (binary_expression "*pbVar11 < *pbVar12" (pointer_expression "*pbVar11" * identifier) < (pointer_expression "*pbVar12" * identifier))) ;) (expression_statement "bVar14 = *pbVar11 == *pbVar12;" (assignment_expression "bVar14 = *pbVar11 == *pbVar12" identifier = (binary_expression "*pbVar11 == *pbVar12" (pointer_expression "*pbVar11" * identifier) == (pointer_expression "*pbVar12" * identifier))) ;) (expression_statement "pbVar11 = pbVar11 + (uint)bVar15 * -2 + 1;" (assignment_expression "pbVar11 = pbVar11 + (uint)bVar15 * -2 + 1" identifier = (binary_expression "pbVar11 + (uint)bVar15 * -2 + 1" (binary_expression "pbVar11 + (uint)bVar15 * -2" identifier + (binary_expression "(uint)bVar15 * -2" (cast_expression "(uint)bVar15" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar12 = pbVar12 + (uint)bVar15 * -2 + 1;" (assignment_expression "pbVar12 = pbVar12 + (uint)bVar15 * -2 + 1" identifier = (binary_expression "pbVar12 + (uint)bVar15 * -2 + 1" (binary_expression "pbVar12 + (uint)bVar15 * -2" identifier + (binary_expression "(uint)bVar15 * -2" (cast_expression "(uint)bVar15" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar14)" ( identifier )) ;) (if_statement "if ((((!bVar13 && !bVar14) == bVar13) && (pbVar8[9] == 0x4e)) &&\n       ((pbVar8[8] == pbVar8[10] &&\n        (pcVar5 = strchr(&DAT_003af40c,(int)(char)pbVar8[8]), pcVar5 != (char *)0x0)))) {\n      FUN_001e64b0();\n      pbVar8 = (byte *)*param_2;\n      goto LAB_001e895e;\n    }" if (parenthesized_expression "((((!bVar13 && !bVar14) == bVar13) && (pbVar8[9] == 0x4e)) &&\n       ((pbVar8[8] == pbVar8[10] &&\n        (pcVar5 = strchr(&DAT_003af40c,(int)(char)pbVar8[8]), pcVar5 != (char *)0x0))))" ( (binary_expression "(((!bVar13 && !bVar14) == bVar13) && (pbVar8[9] == 0x4e)) &&\n       ((pbVar8[8] == pbVar8[10] &&\n        (pcVar5 = strchr(&DAT_003af40c,(int)(char)pbVar8[8]), pcVar5 != (char *)0x0)))" (parenthesized_expression "(((!bVar13 && !bVar14) == bVar13) && (pbVar8[9] == 0x4e))" ( (binary_expression "((!bVar13 && !bVar14) == bVar13) && (pbVar8[9] == 0x4e)" (parenthesized_expression "((!bVar13 && !bVar14) == bVar13)" ( (binary_expression "(!bVar13 && !bVar14) == bVar13" (parenthesized_expression "(!bVar13 && !bVar14)" ( (binary_expression "!bVar13 && !bVar14" (unary_expression "!bVar13" ! identifier) && (unary_expression "!bVar14" ! identifier)) )) == identifier) )) && (parenthesized_expression "(pbVar8[9] == 0x4e)" ( (binary_expression "pbVar8[9] == 0x4e" (subscript_expression "pbVar8[9]" identifier [ number_literal ]) == number_literal) ))) )) && (parenthesized_expression "((pbVar8[8] == pbVar8[10] &&\n        (pcVar5 = strchr(&DAT_003af40c,(int)(char)pbVar8[8]), pcVar5 != (char *)0x0)))" ( (parenthesized_expression "(pbVar8[8] == pbVar8[10] &&\n        (pcVar5 = strchr(&DAT_003af40c,(int)(char)pbVar8[8]), pcVar5 != (char *)0x0))" ( (binary_expression "pbVar8[8] == pbVar8[10] &&\n        (pcVar5 = strchr(&DAT_003af40c,(int)(char)pbVar8[8]), pcVar5 != (char *)0x0)" (binary_expression "pbVar8[8] == pbVar8[10]" (subscript_expression "pbVar8[8]" identifier [ number_literal ]) == (subscript_expression "pbVar8[10]" identifier [ number_literal ])) && (parenthesized_expression "(pcVar5 = strchr(&DAT_003af40c,(int)(char)pbVar8[8]), pcVar5 != (char *)0x0)" ( (comma_expression "pcVar5 = strchr(&DAT_003af40c,(int)(char)pbVar8[8]), pcVar5 != (char *)0x0" (assignment_expression "pcVar5 = strchr(&DAT_003af40c,(int)(char)pbVar8[8])" identifier = (call_expression "strchr(&DAT_003af40c,(int)(char)pbVar8[8])" identifier (argument_list "(&DAT_003af40c,(int)(char)pbVar8[8])" ( (pointer_expression "&DAT_003af40c" & identifier) , (cast_expression "(int)(char)pbVar8[8]" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)pbVar8[8]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "pbVar8[8]" identifier [ number_literal ]))) )))) , (binary_expression "pcVar5 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) ))) )) (compound_statement "{\n      FUN_001e64b0();\n      pbVar8 = (byte *)*param_2;\n      goto LAB_001e895e;\n    }" { (expression_statement "FUN_001e64b0();" (call_expression "FUN_001e64b0()" identifier (argument_list "()" ( ))) ;) (expression_statement "pbVar8 = (byte *)*param_2;" (assignment_expression "pbVar8 = (byte *)*param_2" identifier = (cast_expression "(byte *)*param_2" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_2" * identifier))) ;) (goto_statement "goto LAB_001e895e;" goto statement_identifier ;) })) (if_statement "if (param_1[0xd] == 0xffffffff) goto LAB_001e8b50;" if (parenthesized_expression "(param_1[0xd] == 0xffffffff)" ( (binary_expression "param_1[0xd] == 0xffffffff" (subscript_expression "param_1[0xd]" identifier [ number_literal ]) == number_literal) )) (goto_statement "goto LAB_001e8b50;" goto statement_identifier ;)) }))) (expression_statement "FUN_001e63d0();" (call_expression "FUN_001e63d0()" identifier (argument_list "()" ( ))) ;) (expression_statement "pbVar8 = (byte *)*param_2;" (assignment_expression "pbVar8 = (byte *)*param_2" identifier = (cast_expression "(byte *)*param_2" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_2" * identifier))) ;) (labeled_statement "LAB_001e895e:\n  *param_2 = (int)(pbVar8 + param_3);" statement_identifier : (expression_statement "*param_2 = (int)(pbVar8 + param_3);" (assignment_expression "*param_2 = (int)(pbVar8 + param_3)" (pointer_expression "*param_2" * identifier) = (cast_expression "(int)(pbVar8 + param_3)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(pbVar8 + param_3)" ( (binary_expression "pbVar8 + param_3" identifier + identifier) )))) ;)) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (ERROR IDENT) (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) && (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == (char_literal ' character ')) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) || (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) <= (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (cast_expression ( (type_descriptor TYPE) ) IDENT))) ))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (goto_statement goto statement_identifier ;)))) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) + LIT) )))) ;)) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (subscript_expression IDENT [ LIT ]) - (pointer_expression * IDENT))) ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT | LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' character ')) )) (compound_statement { (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) & LIT) )) != LIT) )) (goto_statement goto statement_identifier ;))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' character ')) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT != (char_literal ' character ')) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' character ')) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (pointer_expression * IDENT) + LIT)) ;) (goto_statement goto statement_identifier ;) })) (goto_statement goto statement_identifier ;) })))) (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression (parenthesized_expression ( (pointer_expression & IDENT) )) [ (binary_expression IDENT * LIT) ]) & LIT) )) == LIT) )) (goto_statement goto statement_identifier ;)) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }) while (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression (parenthesized_expression ( (pointer_expression & IDENT) )) [ (binary_expression IDENT * LIT) ]) & LIT) )) != LIT) )) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' character ')) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT < (char_literal ' character ')) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != (char_literal ' character ')) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( ))) ;)) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) == (char_literal ' character ')) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT)) + LIT) )))) ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (return_statement return ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT)) )))) , (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < (cast_expression ( (type_descriptor TYPE) ) IDENT))) ))) )) (goto_statement goto statement_identifier ;)) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT)) , IDENT ))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT , (pointer_expression * IDENT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) }))) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (pointer_expression * IDENT) + IDENT)) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != (char_literal ' character ')) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' character ')) )) (goto_statement goto statement_identifier ;)) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) }))))) (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( ))) ;)) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) == (char_literal ' escape_sequence ')) )) || (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) == (char_literal ' character ')) ))) )) (goto_statement goto statement_identifier ;)) (expression_statement (call_expression IDENT (argument_list ( ))) ;) }) while (parenthesized_expression ( BOOL )) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content ") )))) , (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT))) ))) )) (compound_statement { (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != 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 (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content ") )))) , (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT))) ))) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content ") )))) , (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 == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }))) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) && (parenthesized_expression ( (binary_expression IDENT == (binary_expression IDENT + IDENT)) ))) )) && (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == (char_literal ' character ')) ))) )) (goto_statement goto statement_identifier ;)) }))) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != (binary_expression IDENT + IDENT)) )) || (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != (char_literal ' character ')) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (goto_statement goto statement_identifier ;) })) (labeled_statement statement_identifier : (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 *)) ) (pointer_expression * IDENT))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (subscript_expression IDENT [ LIT ]) - (pointer_expression * IDENT))) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT | LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (while_statement while (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != (char_literal ' character ')) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == (char_literal ' character ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) })) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == (char_literal ' character ')) )) (goto_statement goto statement_identifier ;)) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (return_statement return ;) })) }))) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (goto_statement goto statement_identifier ;))) (break_statement break ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;)) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (subscript_expression IDENT [ LIT ]) + LIT)) ;) (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( ))) ;)) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (goto_statement goto statement_identifier ;) })) }))) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT < LIT)) ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT == LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;)) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (string_literal " string_content "))) ;) (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 (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) }) while (parenthesized_expression ( IDENT )) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (unary_expression ! IDENT) && (unary_expression ! IDENT)) )) == IDENT) )) && (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) ))) )) && (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression (subscript_expression IDENT [ LIT ]) == (subscript_expression IDENT [ LIT ])) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) )))) , (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT))) ))) )) ))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (goto_statement goto statement_identifier ;)) }))) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) ;)) (return_statement return ;) })))
(function_definition "void __regparm3 FUN_001e8820(uint *param_1,int *param_2,uint param_3,int *param_4)\n\n{\n  char cVar1;\n  char cVar2;\n  char *pcVar3;\n  int iVar4;\n  char *pcVar5;\n  size_t __n;\n  size_t sVar6;\n  void *__dest;\n  char *pcVar7;\n  byte *pbVar8;\n  uint uVar9;\n  uint uVar10;\n  byte *pbVar11;\n  byte *pbVar12;\n  bool bVar13;\n  bool bVar14;\n  byte bVar15;\n  char *local_38;\n  void *local_28;\n  \n  bVar15 = 0;\n  pcVar5 = (char *)*param_2;\n  uVar10 = *param_1;\n  pcVar7 = pcVar5 + param_3;\n  if (((uVar10 & 0x1000) != 0) && (*pcVar7 == 'X')) {\n    pcVar7 = strchr(pcVar5,0x3c);\n    if ((pcVar7 == (char *)0x0) || ((int)param_3 <= (int)pcVar7 - (int)pcVar5)) {\n      if (param_3 == 0) goto LAB_001e8bea;\n    }\n    else if (pcVar7 == pcVar5) goto LAB_001e8bea;\n    FUN_001e63d0();\n    pcVar5 = (char *)*param_2;\n    uVar10 = *param_1;\nLAB_001e8bea:\n    *param_2 = (int)(pcVar5 + param_3 + 1);\n    if (param_1[0xd] == 0xffffffff) {\n      param_1[0xd] = param_4[1] - *param_4;\n    }\n    *param_1 = uVar10 | 1;\n    FUN_001e64b0();\n    do {\n      pcVar5 = (char *)*param_2;\n      cVar1 = *pcVar5;\n      if (cVar1 == 'S') {\nLAB_001e8d75:\n        if ((cVar1 + 0xadU & 0xfd) != 0) goto LAB_001e8d09;\n        pcVar7 = pcVar5 + 1;\n        *param_2 = (int)pcVar7;\n        cVar2 = pcVar5[1];\n        if (cVar2 == 'N') {\n          FUN_001e64b0();\n          pcVar7 = (char *)*param_2;\n        }\n        else if (cVar2 != 'P') {\n          if (cVar2 == 'M') {\n            FUN_001e64b0();\n            *param_2 = *param_2 + 1;\n            goto LAB_001e8cbb;\n          }\n          goto LAB_001e8d09;\n        }\n        *param_2 = (int)(pcVar7 + 1);\n        uVar9 = (uint)(byte)pcVar7[1];\n        if (((&DAT_002bf340)[uVar9 * 2] & 4) == 0) goto LAB_001e8d09;\n        do {\n          DAT_003b6400 = (char)uVar9;\n          if (DAT_003b6400 != '\0') {\n            FUN_001e64b0();\n          }\n          iVar4 = *param_2;\n          *param_2 = iVar4 + 1;\n          uVar9 = (uint)*(byte *)(iVar4 + 1);\n        } while (((&DAT_002bf340)[uVar9 * 2] & 4) != 0);\n        if (cVar1 == 'U') {\n          FUN_001e64b0();\n        }\n      }\n      else if (cVar1 < 'T') {\n        if (cVar1 != 'A') {\nLAB_001e8d09:\n          FUN_001e64b0();\n          if (*(char *)*param_2 == '_') {\n            *param_2 = (int)((char *)*param_2 + 1);\n          }\n          *param_1 = uVar10;\n          return;\n        }\n        *param_2 = (int)(pcVar5 + 1);\n        __n = FUN_001e6060();\n        if (((int)__n < 1) || (sVar6 = strlen((char *)*param_2), (int)sVar6 < (int)__n))\n        goto LAB_001e8d09;\n        FUN_001e64b0();\n        __dest = (void *)FUN_001fcf40(__n + 1);\n        memcpy(__dest,(void *)*param_2,__n);\n        *(undefined1 *)((int)__dest + __n) = 0;\n        pcVar5 = (char *)FUN_001e7170(__dest,*param_1);\n        if (pcVar5 == (char *)0x0) {\n          FUN_001e63d0();\n        }\n        else {\n          if (*pcVar5 != '\0') {\n            FUN_001e64b0();\n          }\n          free(pcVar5);\n        }\n        *param_2 = *param_2 + __n;\n        free(__dest);\n      }\n      else {\n        if (cVar1 != 'T') {\n          if (cVar1 == 'U') goto LAB_001e8d75;\n          goto LAB_001e8d09;\n        }\n        *param_2 = (int)(pcVar5 + 1);\n        iVar4 = FUN_001e7a30();\n        if (iVar4 == 0) goto LAB_001e8d09;\n      }\nLAB_001e8cbb:\n      FUN_001e6600();\n      if ((*(char *)*param_2 == '\0') || (*(char *)*param_2 == '_')) goto LAB_001e8d09;\n      FUN_001e64b0();\n    } while( true );\n  }\n  if (((uVar10 & 0x1800) == 0) || (pcVar3 = strstr(pcVar5,"__pt__"), pcVar3 == (char *)0x0)) {\nLAB_001e88a9:\n    if ((uVar10 & 0x2100) != 0) {\n      pcVar3 = strstr(pcVar5,"__tm__");\n      if (((pcVar3 == (char *)0x0) && (pcVar3 = strstr(pcVar5,"__ps__"), pcVar3 == (char *)0x0)) &&\n         (pcVar3 = strstr(pcVar5,"__pt__"), pcVar3 == (char *)0x0)) {\n        pcVar3 = strstr(pcVar5,"__S");\n        if (pcVar3 == (char *)0x0) goto LAB_001e88f1;\n        local_38 = pcVar3 + 3;\n      }\n      else {\n        local_38 = pcVar3 + 6;\n      }\n      iVar4 = FUN_001e6060();\n      if (((iVar4 != -1) && (pcVar7 == local_38 + iVar4)) && (*local_38 == '_')) goto LAB_001e8979;\n    }\n  }\n  else {\n    local_38 = pcVar3 + 6;\n    iVar4 = FUN_001e6060();\n    if (iVar4 != -1) {\n      if ((pcVar7 != local_38 + iVar4) || (*local_38 != '_')) {\n        uVar10 = *param_1;\n        goto LAB_001e88a9;\n      }\nLAB_001e8979:\n      local_38 = local_38 + 1;\n      if (pcVar3 != (char *)*param_2) {\n        FUN_001e63d0();\n      }\n      if (param_1[0xd] == 0xffffffff) {\n        param_1[0xd] = param_4[1] - *param_4;\n      }\n      uVar10 = *param_1;\n      *param_1 = uVar10 | 1;\n      FUN_001e64b0();\n      while (local_38 < pcVar7) {\n        if (*local_38 != 'L') {\n          if (*local_38 == 'X') {\n            local_38 = local_38 + 1;\n            iVar4 = FUN_001e7a30();\n            if (iVar4 != 0) {\n              FUN_001e64b0();\n              FUN_001e6600();\n              if (local_28 != (void *)0x0) {\n                free(local_28);\n                local_28 = (void *)0x0;\n              }\n              FUN_001e64b0();\n              if (*local_38 == 'L') goto LAB_001e8a99;\n            }\n          }\n          else {\n            iVar4 = FUN_001e7a30();\n            if (iVar4 != 0) {\n              *param_1 = uVar10;\n              return;\n            }\n          }\nLAB_001e8e50:\n          if (local_38 < pcVar7) goto LAB_001e8e86;\n          break;\n        }\nLAB_001e8a99:\n        local_38 = local_38 + 1;\n        iVar4 = FUN_001e6540();\n        if (iVar4 == 0) goto LAB_001e8e50;\n        FUN_001e6600();\n        FUN_001e64b0();\n      }\n      param_4[1] = param_4[1] + -1;\nLAB_001e8e86:\n      FUN_001e64b0();\n      *param_1 = uVar10;\n      pbVar8 = (byte *)*param_2;\n      goto LAB_001e895e;\n    }\n  }\nLAB_001e88f1:\n  bVar13 = param_3 < 10;\n  bVar14 = param_3 == 10;\n  pbVar8 = (byte *)*param_2;\n  if ((int)param_3 < 0xb) {\n    if (param_1[0xd] == 0xffffffff) {\nLAB_001e8b50:\n      param_1[0xd] = 0;\n    }\n    if (param_3 == 0) goto LAB_001e895e;\n  }\n  else {\n    iVar4 = 8;\n    pbVar11 = pbVar8;\n    pbVar12 = (byte *)"_GLOBAL_";\n    do {\n      if (iVar4 == 0) break;\n      iVar4 = iVar4 + -1;\n      bVar13 = *pbVar11 < *pbVar12;\n      bVar14 = *pbVar11 == *pbVar12;\n      pbVar11 = pbVar11 + (uint)bVar15 * -2 + 1;\n      pbVar12 = pbVar12 + (uint)bVar15 * -2 + 1;\n    } while (bVar14);\n    if ((((!bVar13 && !bVar14) == bVar13) && (pbVar8[9] == 0x4e)) &&\n       ((pbVar8[8] == pbVar8[10] &&\n        (pcVar5 = strchr(&DAT_003af40c,(int)(char)pbVar8[8]), pcVar5 != (char *)0x0)))) {\n      FUN_001e64b0();\n      pbVar8 = (byte *)*param_2;\n      goto LAB_001e895e;\n    }\n    if (param_1[0xd] == 0xffffffff) goto LAB_001e8b50;\n  }\n  FUN_001e63d0();\n  pbVar8 = (byte *)*param_2;\nLAB_001e895e:\n  *param_2 = (int)(pbVar8 + param_3);\n  return;\n}" (primitive_type "void") (ERROR "__regparm3" (identifier "__regparm3")) (function_declarator "FUN_001e8820(uint *param_1,int *param_2,uint param_3,int *param_4)" (identifier "FUN_001e8820") (parameter_list "(uint *param_1,int *param_2,uint param_3,int *param_4)" (( "(") (parameter_declaration "uint *param_1" (type_identifier "uint") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "int *param_2" (primitive_type "int") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "uint param_3" (type_identifier "uint") (identifier "param_3")) (, ",") (parameter_declaration "int *param_4" (primitive_type "int") (pointer_declarator "*param_4" (* "*") (identifier "param_4"))) () ")"))) (compound_statement "{\n  char cVar1;\n  char cVar2;\n  char *pcVar3;\n  int iVar4;\n  char *pcVar5;\n  size_t __n;\n  size_t sVar6;\n  void *__dest;\n  char *pcVar7;\n  byte *pbVar8;\n  uint uVar9;\n  uint uVar10;\n  byte *pbVar11;\n  byte *pbVar12;\n  bool bVar13;\n  bool bVar14;\n  byte bVar15;\n  char *local_38;\n  void *local_28;\n  \n  bVar15 = 0;\n  pcVar5 = (char *)*param_2;\n  uVar10 = *param_1;\n  pcVar7 = pcVar5 + param_3;\n  if (((uVar10 & 0x1000) != 0) && (*pcVar7 == 'X')) {\n    pcVar7 = strchr(pcVar5,0x3c);\n    if ((pcVar7 == (char *)0x0) || ((int)param_3 <= (int)pcVar7 - (int)pcVar5)) {\n      if (param_3 == 0) goto LAB_001e8bea;\n    }\n    else if (pcVar7 == pcVar5) goto LAB_001e8bea;\n    FUN_001e63d0();\n    pcVar5 = (char *)*param_2;\n    uVar10 = *param_1;\nLAB_001e8bea:\n    *param_2 = (int)(pcVar5 + param_3 + 1);\n    if (param_1[0xd] == 0xffffffff) {\n      param_1[0xd] = param_4[1] - *param_4;\n    }\n    *param_1 = uVar10 | 1;\n    FUN_001e64b0();\n    do {\n      pcVar5 = (char *)*param_2;\n      cVar1 = *pcVar5;\n      if (cVar1 == 'S') {\nLAB_001e8d75:\n        if ((cVar1 + 0xadU & 0xfd) != 0) goto LAB_001e8d09;\n        pcVar7 = pcVar5 + 1;\n        *param_2 = (int)pcVar7;\n        cVar2 = pcVar5[1];\n        if (cVar2 == 'N') {\n          FUN_001e64b0();\n          pcVar7 = (char *)*param_2;\n        }\n        else if (cVar2 != 'P') {\n          if (cVar2 == 'M') {\n            FUN_001e64b0();\n            *param_2 = *param_2 + 1;\n            goto LAB_001e8cbb;\n          }\n          goto LAB_001e8d09;\n        }\n        *param_2 = (int)(pcVar7 + 1);\n        uVar9 = (uint)(byte)pcVar7[1];\n        if (((&DAT_002bf340)[uVar9 * 2] & 4) == 0) goto LAB_001e8d09;\n        do {\n          DAT_003b6400 = (char)uVar9;\n          if (DAT_003b6400 != '\0') {\n            FUN_001e64b0();\n          }\n          iVar4 = *param_2;\n          *param_2 = iVar4 + 1;\n          uVar9 = (uint)*(byte *)(iVar4 + 1);\n        } while (((&DAT_002bf340)[uVar9 * 2] & 4) != 0);\n        if (cVar1 == 'U') {\n          FUN_001e64b0();\n        }\n      }\n      else if (cVar1 < 'T') {\n        if (cVar1 != 'A') {\nLAB_001e8d09:\n          FUN_001e64b0();\n          if (*(char *)*param_2 == '_') {\n            *param_2 = (int)((char *)*param_2 + 1);\n          }\n          *param_1 = uVar10;\n          return;\n        }\n        *param_2 = (int)(pcVar5 + 1);\n        __n = FUN_001e6060();\n        if (((int)__n < 1) || (sVar6 = strlen((char *)*param_2), (int)sVar6 < (int)__n))\n        goto LAB_001e8d09;\n        FUN_001e64b0();\n        __dest = (void *)FUN_001fcf40(__n + 1);\n        memcpy(__dest,(void *)*param_2,__n);\n        *(undefined1 *)((int)__dest + __n) = 0;\n        pcVar5 = (char *)FUN_001e7170(__dest,*param_1);\n        if (pcVar5 == (char *)0x0) {\n          FUN_001e63d0();\n        }\n        else {\n          if (*pcVar5 != '\0') {\n            FUN_001e64b0();\n          }\n          free(pcVar5);\n        }\n        *param_2 = *param_2 + __n;\n        free(__dest);\n      }\n      else {\n        if (cVar1 != 'T') {\n          if (cVar1 == 'U') goto LAB_001e8d75;\n          goto LAB_001e8d09;\n        }\n        *param_2 = (int)(pcVar5 + 1);\n        iVar4 = FUN_001e7a30();\n        if (iVar4 == 0) goto LAB_001e8d09;\n      }\nLAB_001e8cbb:\n      FUN_001e6600();\n      if ((*(char *)*param_2 == '\0') || (*(char *)*param_2 == '_')) goto LAB_001e8d09;\n      FUN_001e64b0();\n    } while( true );\n  }\n  if (((uVar10 & 0x1800) == 0) || (pcVar3 = strstr(pcVar5,"__pt__"), pcVar3 == (char *)0x0)) {\nLAB_001e88a9:\n    if ((uVar10 & 0x2100) != 0) {\n      pcVar3 = strstr(pcVar5,"__tm__");\n      if (((pcVar3 == (char *)0x0) && (pcVar3 = strstr(pcVar5,"__ps__"), pcVar3 == (char *)0x0)) &&\n         (pcVar3 = strstr(pcVar5,"__pt__"), pcVar3 == (char *)0x0)) {\n        pcVar3 = strstr(pcVar5,"__S");\n        if (pcVar3 == (char *)0x0) goto LAB_001e88f1;\n        local_38 = pcVar3 + 3;\n      }\n      else {\n        local_38 = pcVar3 + 6;\n      }\n      iVar4 = FUN_001e6060();\n      if (((iVar4 != -1) && (pcVar7 == local_38 + iVar4)) && (*local_38 == '_')) goto LAB_001e8979;\n    }\n  }\n  else {\n    local_38 = pcVar3 + 6;\n    iVar4 = FUN_001e6060();\n    if (iVar4 != -1) {\n      if ((pcVar7 != local_38 + iVar4) || (*local_38 != '_')) {\n        uVar10 = *param_1;\n        goto LAB_001e88a9;\n      }\nLAB_001e8979:\n      local_38 = local_38 + 1;\n      if (pcVar3 != (char *)*param_2) {\n        FUN_001e63d0();\n      }\n      if (param_1[0xd] == 0xffffffff) {\n        param_1[0xd] = param_4[1] - *param_4;\n      }\n      uVar10 = *param_1;\n      *param_1 = uVar10 | 1;\n      FUN_001e64b0();\n      while (local_38 < pcVar7) {\n        if (*local_38 != 'L') {\n          if (*local_38 == 'X') {\n            local_38 = local_38 + 1;\n            iVar4 = FUN_001e7a30();\n            if (iVar4 != 0) {\n              FUN_001e64b0();\n              FUN_001e6600();\n              if (local_28 != (void *)0x0) {\n                free(local_28);\n                local_28 = (void *)0x0;\n              }\n              FUN_001e64b0();\n              if (*local_38 == 'L') goto LAB_001e8a99;\n            }\n          }\n          else {\n            iVar4 = FUN_001e7a30();\n            if (iVar4 != 0) {\n              *param_1 = uVar10;\n              return;\n            }\n          }\nLAB_001e8e50:\n          if (local_38 < pcVar7) goto LAB_001e8e86;\n          break;\n        }\nLAB_001e8a99:\n        local_38 = local_38 + 1;\n        iVar4 = FUN_001e6540();\n        if (iVar4 == 0) goto LAB_001e8e50;\n        FUN_001e6600();\n        FUN_001e64b0();\n      }\n      param_4[1] = param_4[1] + -1;\nLAB_001e8e86:\n      FUN_001e64b0();\n      *param_1 = uVar10;\n      pbVar8 = (byte *)*param_2;\n      goto LAB_001e895e;\n    }\n  }\nLAB_001e88f1:\n  bVar13 = param_3 < 10;\n  bVar14 = param_3 == 10;\n  pbVar8 = (byte *)*param_2;\n  if ((int)param_3 < 0xb) {\n    if (param_1[0xd] == 0xffffffff) {\nLAB_001e8b50:\n      param_1[0xd] = 0;\n    }\n    if (param_3 == 0) goto LAB_001e895e;\n  }\n  else {\n    iVar4 = 8;\n    pbVar11 = pbVar8;\n    pbVar12 = (byte *)"_GLOBAL_";\n    do {\n      if (iVar4 == 0) break;\n      iVar4 = iVar4 + -1;\n      bVar13 = *pbVar11 < *pbVar12;\n      bVar14 = *pbVar11 == *pbVar12;\n      pbVar11 = pbVar11 + (uint)bVar15 * -2 + 1;\n      pbVar12 = pbVar12 + (uint)bVar15 * -2 + 1;\n    } while (bVar14);\n    if ((((!bVar13 && !bVar14) == bVar13) && (pbVar8[9] == 0x4e)) &&\n       ((pbVar8[8] == pbVar8[10] &&\n        (pcVar5 = strchr(&DAT_003af40c,(int)(char)pbVar8[8]), pcVar5 != (char *)0x0)))) {\n      FUN_001e64b0();\n      pbVar8 = (byte *)*param_2;\n      goto LAB_001e895e;\n    }\n    if (param_1[0xd] == 0xffffffff) goto LAB_001e8b50;\n  }\n  FUN_001e63d0();\n  pbVar8 = (byte *)*param_2;\nLAB_001e895e:\n  *param_2 = (int)(pbVar8 + param_3);\n  return;\n}" ({ "{") (declaration "char cVar1;" (primitive_type "char") (identifier "cVar1") (; ";")) (declaration "char cVar2;" (primitive_type "char") (identifier "cVar2") (; ";")) (declaration "char *pcVar3;" (primitive_type "char") (pointer_declarator "*pcVar3" (* "*") (identifier "pcVar3")) (; ";")) (declaration "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (declaration "char *pcVar5;" (primitive_type "char") (pointer_declarator "*pcVar5" (* "*") (identifier "pcVar5")) (; ";")) (declaration "size_t __n;" (primitive_type "size_t") (identifier "__n") (; ";")) (declaration "size_t sVar6;" (primitive_type "size_t") (identifier "sVar6") (; ";")) (declaration "void *__dest;" (primitive_type "void") (pointer_declarator "*__dest" (* "*") (identifier "__dest")) (; ";")) (declaration "char *pcVar7;" (primitive_type "char") (pointer_declarator "*pcVar7" (* "*") (identifier "pcVar7")) (; ";")) (declaration "byte *pbVar8;" (type_identifier "byte") (pointer_declarator "*pbVar8" (* "*") (identifier "pbVar8")) (; ";")) (declaration "uint uVar9;" (type_identifier "uint") (identifier "uVar9") (; ";")) (declaration "uint uVar10;" (type_identifier "uint") (identifier "uVar10") (; ";")) (declaration "byte *pbVar11;" (type_identifier "byte") (pointer_declarator "*pbVar11" (* "*") (identifier "pbVar11")) (; ";")) (declaration "byte *pbVar12;" (type_identifier "byte") (pointer_declarator "*pbVar12" (* "*") (identifier "pbVar12")) (; ";")) (declaration "bool bVar13;" (primitive_type "bool") (identifier "bVar13") (; ";")) (declaration "bool bVar14;" (primitive_type "bool") (identifier "bVar14") (; ";")) (declaration "byte bVar15;" (type_identifier "byte") (identifier "bVar15") (; ";")) (declaration "char *local_38;" (primitive_type "char") (pointer_declarator "*local_38" (* "*") (identifier "local_38")) (; ";")) (declaration "void *local_28;" (primitive_type "void") (pointer_declarator "*local_28" (* "*") (identifier "local_28")) (; ";")) (expression_statement "bVar15 = 0;" (assignment_expression "bVar15 = 0" (identifier "bVar15") (= "=") (number_literal "0")) (; ";")) (expression_statement "pcVar5 = (char *)*param_2;" (assignment_expression "pcVar5 = (char *)*param_2" (identifier "pcVar5") (= "=") (cast_expression "(char *)*param_2" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_2" (* "*") (identifier "param_2")))) (; ";")) (expression_statement "uVar10 = *param_1;" (assignment_expression "uVar10 = *param_1" (identifier "uVar10") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (expression_statement "pcVar7 = pcVar5 + param_3;" (assignment_expression "pcVar7 = pcVar5 + param_3" (identifier "pcVar7") (= "=") (binary_expression "pcVar5 + param_3" (identifier "pcVar5") (+ "+") (identifier "param_3"))) (; ";")) (if_statement "if (((uVar10 & 0x1000) != 0) && (*pcVar7 == 'X')) {\n    pcVar7 = strchr(pcVar5,0x3c);\n    if ((pcVar7 == (char *)0x0) || ((int)param_3 <= (int)pcVar7 - (int)pcVar5)) {\n      if (param_3 == 0) goto LAB_001e8bea;\n    }\n    else if (pcVar7 == pcVar5) goto LAB_001e8bea;\n    FUN_001e63d0();\n    pcVar5 = (char *)*param_2;\n    uVar10 = *param_1;\nLAB_001e8bea:\n    *param_2 = (int)(pcVar5 + param_3 + 1);\n    if (param_1[0xd] == 0xffffffff) {\n      param_1[0xd] = param_4[1] - *param_4;\n    }\n    *param_1 = uVar10 | 1;\n    FUN_001e64b0();\n    do {\n      pcVar5 = (char *)*param_2;\n      cVar1 = *pcVar5;\n      if (cVar1 == 'S') {\nLAB_001e8d75:\n        if ((cVar1 + 0xadU & 0xfd) != 0) goto LAB_001e8d09;\n        pcVar7 = pcVar5 + 1;\n        *param_2 = (int)pcVar7;\n        cVar2 = pcVar5[1];\n        if (cVar2 == 'N') {\n          FUN_001e64b0();\n          pcVar7 = (char *)*param_2;\n        }\n        else if (cVar2 != 'P') {\n          if (cVar2 == 'M') {\n            FUN_001e64b0();\n            *param_2 = *param_2 + 1;\n            goto LAB_001e8cbb;\n          }\n          goto LAB_001e8d09;\n        }\n        *param_2 = (int)(pcVar7 + 1);\n        uVar9 = (uint)(byte)pcVar7[1];\n        if (((&DAT_002bf340)[uVar9 * 2] & 4) == 0) goto LAB_001e8d09;\n        do {\n          DAT_003b6400 = (char)uVar9;\n          if (DAT_003b6400 != '\0') {\n            FUN_001e64b0();\n          }\n          iVar4 = *param_2;\n          *param_2 = iVar4 + 1;\n          uVar9 = (uint)*(byte *)(iVar4 + 1);\n        } while (((&DAT_002bf340)[uVar9 * 2] & 4) != 0);\n        if (cVar1 == 'U') {\n          FUN_001e64b0();\n        }\n      }\n      else if (cVar1 < 'T') {\n        if (cVar1 != 'A') {\nLAB_001e8d09:\n          FUN_001e64b0();\n          if (*(char *)*param_2 == '_') {\n            *param_2 = (int)((char *)*param_2 + 1);\n          }\n          *param_1 = uVar10;\n          return;\n        }\n        *param_2 = (int)(pcVar5 + 1);\n        __n = FUN_001e6060();\n        if (((int)__n < 1) || (sVar6 = strlen((char *)*param_2), (int)sVar6 < (int)__n))\n        goto LAB_001e8d09;\n        FUN_001e64b0();\n        __dest = (void *)FUN_001fcf40(__n + 1);\n        memcpy(__dest,(void *)*param_2,__n);\n        *(undefined1 *)((int)__dest + __n) = 0;\n        pcVar5 = (char *)FUN_001e7170(__dest,*param_1);\n        if (pcVar5 == (char *)0x0) {\n          FUN_001e63d0();\n        }\n        else {\n          if (*pcVar5 != '\0') {\n            FUN_001e64b0();\n          }\n          free(pcVar5);\n        }\n        *param_2 = *param_2 + __n;\n        free(__dest);\n      }\n      else {\n        if (cVar1 != 'T') {\n          if (cVar1 == 'U') goto LAB_001e8d75;\n          goto LAB_001e8d09;\n        }\n        *param_2 = (int)(pcVar5 + 1);\n        iVar4 = FUN_001e7a30();\n        if (iVar4 == 0) goto LAB_001e8d09;\n      }\nLAB_001e8cbb:\n      FUN_001e6600();\n      if ((*(char *)*param_2 == '\0') || (*(char *)*param_2 == '_')) goto LAB_001e8d09;\n      FUN_001e64b0();\n    } while( true );\n  }" (if "if") (parenthesized_expression "(((uVar10 & 0x1000) != 0) && (*pcVar7 == 'X'))" (( "(") (binary_expression "((uVar10 & 0x1000) != 0) && (*pcVar7 == 'X')" (parenthesized_expression "((uVar10 & 0x1000) != 0)" (( "(") (binary_expression "(uVar10 & 0x1000) != 0" (parenthesized_expression "(uVar10 & 0x1000)" (( "(") (binary_expression "uVar10 & 0x1000" (identifier "uVar10") (& "&") (number_literal "0x1000")) () ")")) (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(*pcVar7 == 'X')" (( "(") (binary_expression "*pcVar7 == 'X'" (pointer_expression "*pcVar7" (* "*") (identifier "pcVar7")) (== "==") (char_literal "'X'" (' "'") (character "X") (' "'"))) () ")"))) () ")")) (compound_statement "{\n    pcVar7 = strchr(pcVar5,0x3c);\n    if ((pcVar7 == (char *)0x0) || ((int)param_3 <= (int)pcVar7 - (int)pcVar5)) {\n      if (param_3 == 0) goto LAB_001e8bea;\n    }\n    else if (pcVar7 == pcVar5) goto LAB_001e8bea;\n    FUN_001e63d0();\n    pcVar5 = (char *)*param_2;\n    uVar10 = *param_1;\nLAB_001e8bea:\n    *param_2 = (int)(pcVar5 + param_3 + 1);\n    if (param_1[0xd] == 0xffffffff) {\n      param_1[0xd] = param_4[1] - *param_4;\n    }\n    *param_1 = uVar10 | 1;\n    FUN_001e64b0();\n    do {\n      pcVar5 = (char *)*param_2;\n      cVar1 = *pcVar5;\n      if (cVar1 == 'S') {\nLAB_001e8d75:\n        if ((cVar1 + 0xadU & 0xfd) != 0) goto LAB_001e8d09;\n        pcVar7 = pcVar5 + 1;\n        *param_2 = (int)pcVar7;\n        cVar2 = pcVar5[1];\n        if (cVar2 == 'N') {\n          FUN_001e64b0();\n          pcVar7 = (char *)*param_2;\n        }\n        else if (cVar2 != 'P') {\n          if (cVar2 == 'M') {\n            FUN_001e64b0();\n            *param_2 = *param_2 + 1;\n            goto LAB_001e8cbb;\n          }\n          goto LAB_001e8d09;\n        }\n        *param_2 = (int)(pcVar7 + 1);\n        uVar9 = (uint)(byte)pcVar7[1];\n        if (((&DAT_002bf340)[uVar9 * 2] & 4) == 0) goto LAB_001e8d09;\n        do {\n          DAT_003b6400 = (char)uVar9;\n          if (DAT_003b6400 != '\0') {\n            FUN_001e64b0();\n          }\n          iVar4 = *param_2;\n          *param_2 = iVar4 + 1;\n          uVar9 = (uint)*(byte *)(iVar4 + 1);\n        } while (((&DAT_002bf340)[uVar9 * 2] & 4) != 0);\n        if (cVar1 == 'U') {\n          FUN_001e64b0();\n        }\n      }\n      else if (cVar1 < 'T') {\n        if (cVar1 != 'A') {\nLAB_001e8d09:\n          FUN_001e64b0();\n          if (*(char *)*param_2 == '_') {\n            *param_2 = (int)((char *)*param_2 + 1);\n          }\n          *param_1 = uVar10;\n          return;\n        }\n        *param_2 = (int)(pcVar5 + 1);\n        __n = FUN_001e6060();\n        if (((int)__n < 1) || (sVar6 = strlen((char *)*param_2), (int)sVar6 < (int)__n))\n        goto LAB_001e8d09;\n        FUN_001e64b0();\n        __dest = (void *)FUN_001fcf40(__n + 1);\n        memcpy(__dest,(void *)*param_2,__n);\n        *(undefined1 *)((int)__dest + __n) = 0;\n        pcVar5 = (char *)FUN_001e7170(__dest,*param_1);\n        if (pcVar5 == (char *)0x0) {\n          FUN_001e63d0();\n        }\n        else {\n          if (*pcVar5 != '\0') {\n            FUN_001e64b0();\n          }\n          free(pcVar5);\n        }\n        *param_2 = *param_2 + __n;\n        free(__dest);\n      }\n      else {\n        if (cVar1 != 'T') {\n          if (cVar1 == 'U') goto LAB_001e8d75;\n          goto LAB_001e8d09;\n        }\n        *param_2 = (int)(pcVar5 + 1);\n        iVar4 = FUN_001e7a30();\n        if (iVar4 == 0) goto LAB_001e8d09;\n      }\nLAB_001e8cbb:\n      FUN_001e6600();\n      if ((*(char *)*param_2 == '\0') || (*(char *)*param_2 == '_')) goto LAB_001e8d09;\n      FUN_001e64b0();\n    } while( true );\n  }" ({ "{") (expression_statement "pcVar7 = strchr(pcVar5,0x3c);" (assignment_expression "pcVar7 = strchr(pcVar5,0x3c)" (identifier "pcVar7") (= "=") (call_expression "strchr(pcVar5,0x3c)" (identifier "strchr") (argument_list "(pcVar5,0x3c)" (( "(") (identifier "pcVar5") (, ",") (number_literal "0x3c") () ")")))) (; ";")) (if_statement "if ((pcVar7 == (char *)0x0) || ((int)param_3 <= (int)pcVar7 - (int)pcVar5)) {\n      if (param_3 == 0) goto LAB_001e8bea;\n    }\n    else if (pcVar7 == pcVar5) goto LAB_001e8bea;" (if "if") (parenthesized_expression "((pcVar7 == (char *)0x0) || ((int)param_3 <= (int)pcVar7 - (int)pcVar5))" (( "(") (binary_expression "(pcVar7 == (char *)0x0) || ((int)param_3 <= (int)pcVar7 - (int)pcVar5)" (parenthesized_expression "(pcVar7 == (char *)0x0)" (( "(") (binary_expression "pcVar7 == (char *)0x0" (identifier "pcVar7") (== "==") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (|| "||") (parenthesized_expression "((int)param_3 <= (int)pcVar7 - (int)pcVar5)" (( "(") (binary_expression "(int)param_3 <= (int)pcVar7 - (int)pcVar5" (cast_expression "(int)param_3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_3")) (<= "<=") (binary_expression "(int)pcVar7 - (int)pcVar5" (cast_expression "(int)pcVar7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pcVar7")) (- "-") (cast_expression "(int)pcVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pcVar5")))) () ")"))) () ")")) (compound_statement "{\n      if (param_3 == 0) goto LAB_001e8bea;\n    }" ({ "{") (if_statement "if (param_3 == 0) goto LAB_001e8bea;" (if "if") (parenthesized_expression "(param_3 == 0)" (( "(") (binary_expression "param_3 == 0" (identifier "param_3") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_001e8bea;" (goto "goto") (statement_identifier "LAB_001e8bea") (; ";"))) (} "}")) (else_clause "else if (pcVar7 == pcVar5) goto LAB_001e8bea;" (else "else") (if_statement "if (pcVar7 == pcVar5) goto LAB_001e8bea;" (if "if") (parenthesized_expression "(pcVar7 == pcVar5)" (( "(") (binary_expression "pcVar7 == pcVar5" (identifier "pcVar7") (== "==") (identifier "pcVar5")) () ")")) (goto_statement "goto LAB_001e8bea;" (goto "goto") (statement_identifier "LAB_001e8bea") (; ";"))))) (expression_statement "FUN_001e63d0();" (call_expression "FUN_001e63d0()" (identifier "FUN_001e63d0") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "pcVar5 = (char *)*param_2;" (assignment_expression "pcVar5 = (char *)*param_2" (identifier "pcVar5") (= "=") (cast_expression "(char *)*param_2" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_2" (* "*") (identifier "param_2")))) (; ";")) (expression_statement "uVar10 = *param_1;" (assignment_expression "uVar10 = *param_1" (identifier "uVar10") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (labeled_statement "LAB_001e8bea:\n    *param_2 = (int)(pcVar5 + param_3 + 1);" (statement_identifier "LAB_001e8bea") (: ":") (expression_statement "*param_2 = (int)(pcVar5 + param_3 + 1);" (assignment_expression "*param_2 = (int)(pcVar5 + param_3 + 1)" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (cast_expression "(int)(pcVar5 + param_3 + 1)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(pcVar5 + param_3 + 1)" (( "(") (binary_expression "pcVar5 + param_3 + 1" (binary_expression "pcVar5 + param_3" (identifier "pcVar5") (+ "+") (identifier "param_3")) (+ "+") (number_literal "1")) () ")")))) (; ";"))) (if_statement "if (param_1[0xd] == 0xffffffff) {\n      param_1[0xd] = param_4[1] - *param_4;\n    }" (if "if") (parenthesized_expression "(param_1[0xd] == 0xffffffff)" (( "(") (binary_expression "param_1[0xd] == 0xffffffff" (subscript_expression "param_1[0xd]" (identifier "param_1") ([ "[") (number_literal "0xd") (] "]")) (== "==") (number_literal "0xffffffff")) () ")")) (compound_statement "{\n      param_1[0xd] = param_4[1] - *param_4;\n    }" ({ "{") (expression_statement "param_1[0xd] = param_4[1] - *param_4;" (assignment_expression "param_1[0xd] = param_4[1] - *param_4" (subscript_expression "param_1[0xd]" (identifier "param_1") ([ "[") (number_literal "0xd") (] "]")) (= "=") (binary_expression "param_4[1] - *param_4" (subscript_expression "param_4[1]" (identifier "param_4") ([ "[") (number_literal "1") (] "]")) (- "-") (pointer_expression "*param_4" (* "*") (identifier "param_4")))) (; ";")) (} "}"))) (expression_statement "*param_1 = uVar10 | 1;" (assignment_expression "*param_1 = uVar10 | 1" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (binary_expression "uVar10 | 1" (identifier "uVar10") (| "|") (number_literal "1"))) (; ";")) (expression_statement "FUN_001e64b0();" (call_expression "FUN_001e64b0()" (identifier "FUN_001e64b0") (argument_list "()" (( "(") () ")"))) (; ";")) (do_statement "do {\n      pcVar5 = (char *)*param_2;\n      cVar1 = *pcVar5;\n      if (cVar1 == 'S') {\nLAB_001e8d75:\n        if ((cVar1 + 0xadU & 0xfd) != 0) goto LAB_001e8d09;\n        pcVar7 = pcVar5 + 1;\n        *param_2 = (int)pcVar7;\n        cVar2 = pcVar5[1];\n        if (cVar2 == 'N') {\n          FUN_001e64b0();\n          pcVar7 = (char *)*param_2;\n        }\n        else if (cVar2 != 'P') {\n          if (cVar2 == 'M') {\n            FUN_001e64b0();\n            *param_2 = *param_2 + 1;\n            goto LAB_001e8cbb;\n          }\n          goto LAB_001e8d09;\n        }\n        *param_2 = (int)(pcVar7 + 1);\n        uVar9 = (uint)(byte)pcVar7[1];\n        if (((&DAT_002bf340)[uVar9 * 2] & 4) == 0) goto LAB_001e8d09;\n        do {\n          DAT_003b6400 = (char)uVar9;\n          if (DAT_003b6400 != '\0') {\n            FUN_001e64b0();\n          }\n          iVar4 = *param_2;\n          *param_2 = iVar4 + 1;\n          uVar9 = (uint)*(byte *)(iVar4 + 1);\n        } while (((&DAT_002bf340)[uVar9 * 2] & 4) != 0);\n        if (cVar1 == 'U') {\n          FUN_001e64b0();\n        }\n      }\n      else if (cVar1 < 'T') {\n        if (cVar1 != 'A') {\nLAB_001e8d09:\n          FUN_001e64b0();\n          if (*(char *)*param_2 == '_') {\n            *param_2 = (int)((char *)*param_2 + 1);\n          }\n          *param_1 = uVar10;\n          return;\n        }\n        *param_2 = (int)(pcVar5 + 1);\n        __n = FUN_001e6060();\n        if (((int)__n < 1) || (sVar6 = strlen((char *)*param_2), (int)sVar6 < (int)__n))\n        goto LAB_001e8d09;\n        FUN_001e64b0();\n        __dest = (void *)FUN_001fcf40(__n + 1);\n        memcpy(__dest,(void *)*param_2,__n);\n        *(undefined1 *)((int)__dest + __n) = 0;\n        pcVar5 = (char *)FUN_001e7170(__dest,*param_1);\n        if (pcVar5 == (char *)0x0) {\n          FUN_001e63d0();\n        }\n        else {\n          if (*pcVar5 != '\0') {\n            FUN_001e64b0();\n          }\n          free(pcVar5);\n        }\n        *param_2 = *param_2 + __n;\n        free(__dest);\n      }\n      else {\n        if (cVar1 != 'T') {\n          if (cVar1 == 'U') goto LAB_001e8d75;\n          goto LAB_001e8d09;\n        }\n        *param_2 = (int)(pcVar5 + 1);\n        iVar4 = FUN_001e7a30();\n        if (iVar4 == 0) goto LAB_001e8d09;\n      }\nLAB_001e8cbb:\n      FUN_001e6600();\n      if ((*(char *)*param_2 == '\0') || (*(char *)*param_2 == '_')) goto LAB_001e8d09;\n      FUN_001e64b0();\n    } while( true );" (do "do") (compound_statement "{\n      pcVar5 = (char *)*param_2;\n      cVar1 = *pcVar5;\n      if (cVar1 == 'S') {\nLAB_001e8d75:\n        if ((cVar1 + 0xadU & 0xfd) != 0) goto LAB_001e8d09;\n        pcVar7 = pcVar5 + 1;\n        *param_2 = (int)pcVar7;\n        cVar2 = pcVar5[1];\n        if (cVar2 == 'N') {\n          FUN_001e64b0();\n          pcVar7 = (char *)*param_2;\n        }\n        else if (cVar2 != 'P') {\n          if (cVar2 == 'M') {\n            FUN_001e64b0();\n            *param_2 = *param_2 + 1;\n            goto LAB_001e8cbb;\n          }\n          goto LAB_001e8d09;\n        }\n        *param_2 = (int)(pcVar7 + 1);\n        uVar9 = (uint)(byte)pcVar7[1];\n        if (((&DAT_002bf340)[uVar9 * 2] & 4) == 0) goto LAB_001e8d09;\n        do {\n          DAT_003b6400 = (char)uVar9;\n          if (DAT_003b6400 != '\0') {\n            FUN_001e64b0();\n          }\n          iVar4 = *param_2;\n          *param_2 = iVar4 + 1;\n          uVar9 = (uint)*(byte *)(iVar4 + 1);\n        } while (((&DAT_002bf340)[uVar9 * 2] & 4) != 0);\n        if (cVar1 == 'U') {\n          FUN_001e64b0();\n        }\n      }\n      else if (cVar1 < 'T') {\n        if (cVar1 != 'A') {\nLAB_001e8d09:\n          FUN_001e64b0();\n          if (*(char *)*param_2 == '_') {\n            *param_2 = (int)((char *)*param_2 + 1);\n          }\n          *param_1 = uVar10;\n          return;\n        }\n        *param_2 = (int)(pcVar5 + 1);\n        __n = FUN_001e6060();\n        if (((int)__n < 1) || (sVar6 = strlen((char *)*param_2), (int)sVar6 < (int)__n))\n        goto LAB_001e8d09;\n        FUN_001e64b0();\n        __dest = (void *)FUN_001fcf40(__n + 1);\n        memcpy(__dest,(void *)*param_2,__n);\n        *(undefined1 *)((int)__dest + __n) = 0;\n        pcVar5 = (char *)FUN_001e7170(__dest,*param_1);\n        if (pcVar5 == (char *)0x0) {\n          FUN_001e63d0();\n        }\n        else {\n          if (*pcVar5 != '\0') {\n            FUN_001e64b0();\n          }\n          free(pcVar5);\n        }\n        *param_2 = *param_2 + __n;\n        free(__dest);\n      }\n      else {\n        if (cVar1 != 'T') {\n          if (cVar1 == 'U') goto LAB_001e8d75;\n          goto LAB_001e8d09;\n        }\n        *param_2 = (int)(pcVar5 + 1);\n        iVar4 = FUN_001e7a30();\n        if (iVar4 == 0) goto LAB_001e8d09;\n      }\nLAB_001e8cbb:\n      FUN_001e6600();\n      if ((*(char *)*param_2 == '\0') || (*(char *)*param_2 == '_')) goto LAB_001e8d09;\n      FUN_001e64b0();\n    }" ({ "{") (expression_statement "pcVar5 = (char *)*param_2;" (assignment_expression "pcVar5 = (char *)*param_2" (identifier "pcVar5") (= "=") (cast_expression "(char *)*param_2" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_2" (* "*") (identifier "param_2")))) (; ";")) (expression_statement "cVar1 = *pcVar5;" (assignment_expression "cVar1 = *pcVar5" (identifier "cVar1") (= "=") (pointer_expression "*pcVar5" (* "*") (identifier "pcVar5"))) (; ";")) (if_statement "if (cVar1 == 'S') {\nLAB_001e8d75:\n        if ((cVar1 + 0xadU & 0xfd) != 0) goto LAB_001e8d09;\n        pcVar7 = pcVar5 + 1;\n        *param_2 = (int)pcVar7;\n        cVar2 = pcVar5[1];\n        if (cVar2 == 'N') {\n          FUN_001e64b0();\n          pcVar7 = (char *)*param_2;\n        }\n        else if (cVar2 != 'P') {\n          if (cVar2 == 'M') {\n            FUN_001e64b0();\n            *param_2 = *param_2 + 1;\n            goto LAB_001e8cbb;\n          }\n          goto LAB_001e8d09;\n        }\n        *param_2 = (int)(pcVar7 + 1);\n        uVar9 = (uint)(byte)pcVar7[1];\n        if (((&DAT_002bf340)[uVar9 * 2] & 4) == 0) goto LAB_001e8d09;\n        do {\n          DAT_003b6400 = (char)uVar9;\n          if (DAT_003b6400 != '\0') {\n            FUN_001e64b0();\n          }\n          iVar4 = *param_2;\n          *param_2 = iVar4 + 1;\n          uVar9 = (uint)*(byte *)(iVar4 + 1);\n        } while (((&DAT_002bf340)[uVar9 * 2] & 4) != 0);\n        if (cVar1 == 'U') {\n          FUN_001e64b0();\n        }\n      }\n      else if (cVar1 < 'T') {\n        if (cVar1 != 'A') {\nLAB_001e8d09:\n          FUN_001e64b0();\n          if (*(char *)*param_2 == '_') {\n            *param_2 = (int)((char *)*param_2 + 1);\n          }\n          *param_1 = uVar10;\n          return;\n        }\n        *param_2 = (int)(pcVar5 + 1);\n        __n = FUN_001e6060();\n        if (((int)__n < 1) || (sVar6 = strlen((char *)*param_2), (int)sVar6 < (int)__n))\n        goto LAB_001e8d09;\n        FUN_001e64b0();\n        __dest = (void *)FUN_001fcf40(__n + 1);\n        memcpy(__dest,(void *)*param_2,__n);\n        *(undefined1 *)((int)__dest + __n) = 0;\n        pcVar5 = (char *)FUN_001e7170(__dest,*param_1);\n        if (pcVar5 == (char *)0x0) {\n          FUN_001e63d0();\n        }\n        else {\n          if (*pcVar5 != '\0') {\n            FUN_001e64b0();\n          }\n          free(pcVar5);\n        }\n        *param_2 = *param_2 + __n;\n        free(__dest);\n      }\n      else {\n        if (cVar1 != 'T') {\n          if (cVar1 == 'U') goto LAB_001e8d75;\n          goto LAB_001e8d09;\n        }\n        *param_2 = (int)(pcVar5 + 1);\n        iVar4 = FUN_001e7a30();\n        if (iVar4 == 0) goto LAB_001e8d09;\n      }" (if "if") (parenthesized_expression "(cVar1 == 'S')" (( "(") (binary_expression "cVar1 == 'S'" (identifier "cVar1") (== "==") (char_literal "'S'" (' "'") (character "S") (' "'"))) () ")")) (compound_statement "{\nLAB_001e8d75:\n        if ((cVar1 + 0xadU & 0xfd) != 0) goto LAB_001e8d09;\n        pcVar7 = pcVar5 + 1;\n        *param_2 = (int)pcVar7;\n        cVar2 = pcVar5[1];\n        if (cVar2 == 'N') {\n          FUN_001e64b0();\n          pcVar7 = (char *)*param_2;\n        }\n        else if (cVar2 != 'P') {\n          if (cVar2 == 'M') {\n            FUN_001e64b0();\n            *param_2 = *param_2 + 1;\n            goto LAB_001e8cbb;\n          }\n          goto LAB_001e8d09;\n        }\n        *param_2 = (int)(pcVar7 + 1);\n        uVar9 = (uint)(byte)pcVar7[1];\n        if (((&DAT_002bf340)[uVar9 * 2] & 4) == 0) goto LAB_001e8d09;\n        do {\n          DAT_003b6400 = (char)uVar9;\n          if (DAT_003b6400 != '\0') {\n            FUN_001e64b0();\n          }\n          iVar4 = *param_2;\n          *param_2 = iVar4 + 1;\n          uVar9 = (uint)*(byte *)(iVar4 + 1);\n        } while (((&DAT_002bf340)[uVar9 * 2] & 4) != 0);\n        if (cVar1 == 'U') {\n          FUN_001e64b0();\n        }\n      }" ({ "{") (labeled_statement "LAB_001e8d75:\n        if ((cVar1 + 0xadU & 0xfd) != 0) goto LAB_001e8d09;" (statement_identifier "LAB_001e8d75") (: ":") (if_statement "if ((cVar1 + 0xadU & 0xfd) != 0) goto LAB_001e8d09;" (if "if") (parenthesized_expression "((cVar1 + 0xadU & 0xfd) != 0)" (( "(") (binary_expression "(cVar1 + 0xadU & 0xfd) != 0" (parenthesized_expression "(cVar1 + 0xadU & 0xfd)" (( "(") (binary_expression "cVar1 + 0xadU & 0xfd" (binary_expression "cVar1 + 0xadU" (identifier "cVar1") (+ "+") (number_literal "0xadU")) (& "&") (number_literal "0xfd")) () ")")) (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_001e8d09;" (goto "goto") (statement_identifier "LAB_001e8d09") (; ";")))) (expression_statement "pcVar7 = pcVar5 + 1;" (assignment_expression "pcVar7 = pcVar5 + 1" (identifier "pcVar7") (= "=") (binary_expression "pcVar5 + 1" (identifier "pcVar5") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*param_2 = (int)pcVar7;" (assignment_expression "*param_2 = (int)pcVar7" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (cast_expression "(int)pcVar7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pcVar7"))) (; ";")) (expression_statement "cVar2 = pcVar5[1];" (assignment_expression "cVar2 = pcVar5[1]" (identifier "cVar2") (= "=") (subscript_expression "pcVar5[1]" (identifier "pcVar5") ([ "[") (number_literal "1") (] "]"))) (; ";")) (if_statement "if (cVar2 == 'N') {\n          FUN_001e64b0();\n          pcVar7 = (char *)*param_2;\n        }\n        else if (cVar2 != 'P') {\n          if (cVar2 == 'M') {\n            FUN_001e64b0();\n            *param_2 = *param_2 + 1;\n            goto LAB_001e8cbb;\n          }\n          goto LAB_001e8d09;\n        }" (if "if") (parenthesized_expression "(cVar2 == 'N')" (( "(") (binary_expression "cVar2 == 'N'" (identifier "cVar2") (== "==") (char_literal "'N'" (' "'") (character "N") (' "'"))) () ")")) (compound_statement "{\n          FUN_001e64b0();\n          pcVar7 = (char *)*param_2;\n        }" ({ "{") (expression_statement "FUN_001e64b0();" (call_expression "FUN_001e64b0()" (identifier "FUN_001e64b0") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "pcVar7 = (char *)*param_2;" (assignment_expression "pcVar7 = (char *)*param_2" (identifier "pcVar7") (= "=") (cast_expression "(char *)*param_2" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_2" (* "*") (identifier "param_2")))) (; ";")) (} "}")) (else_clause "else if (cVar2 != 'P') {\n          if (cVar2 == 'M') {\n            FUN_001e64b0();\n            *param_2 = *param_2 + 1;\n            goto LAB_001e8cbb;\n          }\n          goto LAB_001e8d09;\n        }" (else "else") (if_statement "if (cVar2 != 'P') {\n          if (cVar2 == 'M') {\n            FUN_001e64b0();\n            *param_2 = *param_2 + 1;\n            goto LAB_001e8cbb;\n          }\n          goto LAB_001e8d09;\n        }" (if "if") (parenthesized_expression "(cVar2 != 'P')" (( "(") (binary_expression "cVar2 != 'P'" (identifier "cVar2") (!= "!=") (char_literal "'P'" (' "'") (character "P") (' "'"))) () ")")) (compound_statement "{\n          if (cVar2 == 'M') {\n            FUN_001e64b0();\n            *param_2 = *param_2 + 1;\n            goto LAB_001e8cbb;\n          }\n          goto LAB_001e8d09;\n        }" ({ "{") (if_statement "if (cVar2 == 'M') {\n            FUN_001e64b0();\n            *param_2 = *param_2 + 1;\n            goto LAB_001e8cbb;\n          }" (if "if") (parenthesized_expression "(cVar2 == 'M')" (( "(") (binary_expression "cVar2 == 'M'" (identifier "cVar2") (== "==") (char_literal "'M'" (' "'") (character "M") (' "'"))) () ")")) (compound_statement "{\n            FUN_001e64b0();\n            *param_2 = *param_2 + 1;\n            goto LAB_001e8cbb;\n          }" ({ "{") (expression_statement "FUN_001e64b0();" (call_expression "FUN_001e64b0()" (identifier "FUN_001e64b0") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "*param_2 = *param_2 + 1;" (assignment_expression "*param_2 = *param_2 + 1" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (binary_expression "*param_2 + 1" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (+ "+") (number_literal "1"))) (; ";")) (goto_statement "goto LAB_001e8cbb;" (goto "goto") (statement_identifier "LAB_001e8cbb") (; ";")) (} "}"))) (goto_statement "goto LAB_001e8d09;" (goto "goto") (statement_identifier "LAB_001e8d09") (; ";")) (} "}"))))) (expression_statement "*param_2 = (int)(pcVar7 + 1);" (assignment_expression "*param_2 = (int)(pcVar7 + 1)" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (cast_expression "(int)(pcVar7 + 1)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(pcVar7 + 1)" (( "(") (binary_expression "pcVar7 + 1" (identifier "pcVar7") (+ "+") (number_literal "1")) () ")")))) (; ";")) (expression_statement "uVar9 = (uint)(byte)pcVar7[1];" (assignment_expression "uVar9 = (uint)(byte)pcVar7[1]" (identifier "uVar9") (= "=") (cast_expression "(uint)(byte)pcVar7[1]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (cast_expression "(byte)pcVar7[1]" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (subscript_expression "pcVar7[1]" (identifier "pcVar7") ([ "[") (number_literal "1") (] "]"))))) (; ";")) (if_statement "if (((&DAT_002bf340)[uVar9 * 2] & 4) == 0) goto LAB_001e8d09;" (if "if") (parenthesized_expression "(((&DAT_002bf340)[uVar9 * 2] & 4) == 0)" (( "(") (binary_expression "((&DAT_002bf340)[uVar9 * 2] & 4) == 0" (parenthesized_expression "((&DAT_002bf340)[uVar9 * 2] & 4)" (( "(") (binary_expression "(&DAT_002bf340)[uVar9 * 2] & 4" (subscript_expression "(&DAT_002bf340)[uVar9 * 2]" (parenthesized_expression "(&DAT_002bf340)" (( "(") (pointer_expression "&DAT_002bf340" (& "&") (identifier "DAT_002bf340")) () ")")) ([ "[") (binary_expression "uVar9 * 2" (identifier "uVar9") (* "*") (number_literal "2")) (] "]")) (& "&") (number_literal "4")) () ")")) (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_001e8d09;" (goto "goto") (statement_identifier "LAB_001e8d09") (; ";"))) (do_statement "do {\n          DAT_003b6400 = (char)uVar9;\n          if (DAT_003b6400 != '\0') {\n            FUN_001e64b0();\n          }\n          iVar4 = *param_2;\n          *param_2 = iVar4 + 1;\n          uVar9 = (uint)*(byte *)(iVar4 + 1);\n        } while (((&DAT_002bf340)[uVar9 * 2] & 4) != 0);" (do "do") (compound_statement "{\n          DAT_003b6400 = (char)uVar9;\n          if (DAT_003b6400 != '\0') {\n            FUN_001e64b0();\n          }\n          iVar4 = *param_2;\n          *param_2 = iVar4 + 1;\n          uVar9 = (uint)*(byte *)(iVar4 + 1);\n        }" ({ "{") (expression_statement "DAT_003b6400 = (char)uVar9;" (assignment_expression "DAT_003b6400 = (char)uVar9" (identifier "DAT_003b6400") (= "=") (cast_expression "(char)uVar9" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "uVar9"))) (; ";")) (if_statement "if (DAT_003b6400 != '\0') {\n            FUN_001e64b0();\n          }" (if "if") (parenthesized_expression "(DAT_003b6400 != '\0')" (( "(") (binary_expression "DAT_003b6400 != '\0'" (identifier "DAT_003b6400") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n            FUN_001e64b0();\n          }" ({ "{") (expression_statement "FUN_001e64b0();" (call_expression "FUN_001e64b0()" (identifier "FUN_001e64b0") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (expression_statement "iVar4 = *param_2;" (assignment_expression "iVar4 = *param_2" (identifier "iVar4") (= "=") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) (; ";")) (expression_statement "*param_2 = iVar4 + 1;" (assignment_expression "*param_2 = iVar4 + 1" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (binary_expression "iVar4 + 1" (identifier "iVar4") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uVar9 = (uint)*(byte *)(iVar4 + 1);" (assignment_expression "uVar9 = (uint)*(byte *)(iVar4 + 1)" (identifier "uVar9") (= "=") (binary_expression "(uint)*(byte *)(iVar4 + 1)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(byte *)(iVar4 + 1)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar4 + 1)" (( "(") (binary_expression "iVar4 + 1" (identifier "iVar4") (+ "+") (number_literal "1")) () ")"))))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(((&DAT_002bf340)[uVar9 * 2] & 4) != 0)" (( "(") (binary_expression "((&DAT_002bf340)[uVar9 * 2] & 4) != 0" (parenthesized_expression "((&DAT_002bf340)[uVar9 * 2] & 4)" (( "(") (binary_expression "(&DAT_002bf340)[uVar9 * 2] & 4" (subscript_expression "(&DAT_002bf340)[uVar9 * 2]" (parenthesized_expression "(&DAT_002bf340)" (( "(") (pointer_expression "&DAT_002bf340" (& "&") (identifier "DAT_002bf340")) () ")")) ([ "[") (binary_expression "uVar9 * 2" (identifier "uVar9") (* "*") (number_literal "2")) (] "]")) (& "&") (number_literal "4")) () ")")) (!= "!=") (number_literal "0")) () ")")) (; ";")) (if_statement "if (cVar1 == 'U') {\n          FUN_001e64b0();\n        }" (if "if") (parenthesized_expression "(cVar1 == 'U')" (( "(") (binary_expression "cVar1 == 'U'" (identifier "cVar1") (== "==") (char_literal "'U'" (' "'") (character "U") (' "'"))) () ")")) (compound_statement "{\n          FUN_001e64b0();\n        }" ({ "{") (expression_statement "FUN_001e64b0();" (call_expression "FUN_001e64b0()" (identifier "FUN_001e64b0") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (} "}")) (else_clause "else if (cVar1 < 'T') {\n        if (cVar1 != 'A') {\nLAB_001e8d09:\n          FUN_001e64b0();\n          if (*(char *)*param_2 == '_') {\n            *param_2 = (int)((char *)*param_2 + 1);\n          }\n          *param_1 = uVar10;\n          return;\n        }\n        *param_2 = (int)(pcVar5 + 1);\n        __n = FUN_001e6060();\n        if (((int)__n < 1) || (sVar6 = strlen((char *)*param_2), (int)sVar6 < (int)__n))\n        goto LAB_001e8d09;\n        FUN_001e64b0();\n        __dest = (void *)FUN_001fcf40(__n + 1);\n        memcpy(__dest,(void *)*param_2,__n);\n        *(undefined1 *)((int)__dest + __n) = 0;\n        pcVar5 = (char *)FUN_001e7170(__dest,*param_1);\n        if (pcVar5 == (char *)0x0) {\n          FUN_001e63d0();\n        }\n        else {\n          if (*pcVar5 != '\0') {\n            FUN_001e64b0();\n          }\n          free(pcVar5);\n        }\n        *param_2 = *param_2 + __n;\n        free(__dest);\n      }\n      else {\n        if (cVar1 != 'T') {\n          if (cVar1 == 'U') goto LAB_001e8d75;\n          goto LAB_001e8d09;\n        }\n        *param_2 = (int)(pcVar5 + 1);\n        iVar4 = FUN_001e7a30();\n        if (iVar4 == 0) goto LAB_001e8d09;\n      }" (else "else") (if_statement "if (cVar1 < 'T') {\n        if (cVar1 != 'A') {\nLAB_001e8d09:\n          FUN_001e64b0();\n          if (*(char *)*param_2 == '_') {\n            *param_2 = (int)((char *)*param_2 + 1);\n          }\n          *param_1 = uVar10;\n          return;\n        }\n        *param_2 = (int)(pcVar5 + 1);\n        __n = FUN_001e6060();\n        if (((int)__n < 1) || (sVar6 = strlen((char *)*param_2), (int)sVar6 < (int)__n))\n        goto LAB_001e8d09;\n        FUN_001e64b0();\n        __dest = (void *)FUN_001fcf40(__n + 1);\n        memcpy(__dest,(void *)*param_2,__n);\n        *(undefined1 *)((int)__dest + __n) = 0;\n        pcVar5 = (char *)FUN_001e7170(__dest,*param_1);\n        if (pcVar5 == (char *)0x0) {\n          FUN_001e63d0();\n        }\n        else {\n          if (*pcVar5 != '\0') {\n            FUN_001e64b0();\n          }\n          free(pcVar5);\n        }\n        *param_2 = *param_2 + __n;\n        free(__dest);\n      }\n      else {\n        if (cVar1 != 'T') {\n          if (cVar1 == 'U') goto LAB_001e8d75;\n          goto LAB_001e8d09;\n        }\n        *param_2 = (int)(pcVar5 + 1);\n        iVar4 = FUN_001e7a30();\n        if (iVar4 == 0) goto LAB_001e8d09;\n      }" (if "if") (parenthesized_expression "(cVar1 < 'T')" (( "(") (binary_expression "cVar1 < 'T'" (identifier "cVar1") (< "<") (char_literal "'T'" (' "'") (character "T") (' "'"))) () ")")) (compound_statement "{\n        if (cVar1 != 'A') {\nLAB_001e8d09:\n          FUN_001e64b0();\n          if (*(char *)*param_2 == '_') {\n            *param_2 = (int)((char *)*param_2 + 1);\n          }\n          *param_1 = uVar10;\n          return;\n        }\n        *param_2 = (int)(pcVar5 + 1);\n        __n = FUN_001e6060();\n        if (((int)__n < 1) || (sVar6 = strlen((char *)*param_2), (int)sVar6 < (int)__n))\n        goto LAB_001e8d09;\n        FUN_001e64b0();\n        __dest = (void *)FUN_001fcf40(__n + 1);\n        memcpy(__dest,(void *)*param_2,__n);\n        *(undefined1 *)((int)__dest + __n) = 0;\n        pcVar5 = (char *)FUN_001e7170(__dest,*param_1);\n        if (pcVar5 == (char *)0x0) {\n          FUN_001e63d0();\n        }\n        else {\n          if (*pcVar5 != '\0') {\n            FUN_001e64b0();\n          }\n          free(pcVar5);\n        }\n        *param_2 = *param_2 + __n;\n        free(__dest);\n      }" ({ "{") (if_statement "if (cVar1 != 'A') {\nLAB_001e8d09:\n          FUN_001e64b0();\n          if (*(char *)*param_2 == '_') {\n            *param_2 = (int)((char *)*param_2 + 1);\n          }\n          *param_1 = uVar10;\n          return;\n        }" (if "if") (parenthesized_expression "(cVar1 != 'A')" (( "(") (binary_expression "cVar1 != 'A'" (identifier "cVar1") (!= "!=") (char_literal "'A'" (' "'") (character "A") (' "'"))) () ")")) (compound_statement "{\nLAB_001e8d09:\n          FUN_001e64b0();\n          if (*(char *)*param_2 == '_') {\n            *param_2 = (int)((char *)*param_2 + 1);\n          }\n          *param_1 = uVar10;\n          return;\n        }" ({ "{") (labeled_statement "LAB_001e8d09:\n          FUN_001e64b0();" (statement_identifier "LAB_001e8d09") (: ":") (expression_statement "FUN_001e64b0();" (call_expression "FUN_001e64b0()" (identifier "FUN_001e64b0") (argument_list "()" (( "(") () ")"))) (; ";"))) (if_statement "if (*(char *)*param_2 == '_') {\n            *param_2 = (int)((char *)*param_2 + 1);\n          }" (if "if") (parenthesized_expression "(*(char *)*param_2 == '_')" (( "(") (binary_expression "*(char *)*param_2 == '_'" (pointer_expression "*(char *)*param_2" (* "*") (cast_expression "(char *)*param_2" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_2" (* "*") (identifier "param_2")))) (== "==") (char_literal "'_'" (' "'") (character "_") (' "'"))) () ")")) (compound_statement "{\n            *param_2 = (int)((char *)*param_2 + 1);\n          }" ({ "{") (expression_statement "*param_2 = (int)((char *)*param_2 + 1);" (assignment_expression "*param_2 = (int)((char *)*param_2 + 1)" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (cast_expression "(int)((char *)*param_2 + 1)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((char *)*param_2 + 1)" (( "(") (binary_expression "(char *)*param_2 + 1" (cast_expression "(char *)*param_2" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) (+ "+") (number_literal "1")) () ")")))) (; ";")) (} "}"))) (expression_statement "*param_1 = uVar10;" (assignment_expression "*param_1 = uVar10" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (identifier "uVar10")) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "*param_2 = (int)(pcVar5 + 1);" (assignment_expression "*param_2 = (int)(pcVar5 + 1)" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (cast_expression "(int)(pcVar5 + 1)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(pcVar5 + 1)" (( "(") (binary_expression "pcVar5 + 1" (identifier "pcVar5") (+ "+") (number_literal "1")) () ")")))) (; ";")) (expression_statement "__n = FUN_001e6060();" (assignment_expression "__n = FUN_001e6060()" (identifier "__n") (= "=") (call_expression "FUN_001e6060()" (identifier "FUN_001e6060") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (((int)__n < 1) || (sVar6 = strlen((char *)*param_2), (int)sVar6 < (int)__n))\n        goto LAB_001e8d09;" (if "if") (parenthesized_expression "(((int)__n < 1) || (sVar6 = strlen((char *)*param_2), (int)sVar6 < (int)__n))" (( "(") (binary_expression "((int)__n < 1) || (sVar6 = strlen((char *)*param_2), (int)sVar6 < (int)__n)" (parenthesized_expression "((int)__n < 1)" (( "(") (binary_expression "(int)__n < 1" (cast_expression "(int)__n" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "__n")) (< "<") (number_literal "1")) () ")")) (|| "||") (parenthesized_expression "(sVar6 = strlen((char *)*param_2), (int)sVar6 < (int)__n)" (( "(") (comma_expression "sVar6 = strlen((char *)*param_2), (int)sVar6 < (int)__n" (assignment_expression "sVar6 = strlen((char *)*param_2)" (identifier "sVar6") (= "=") (call_expression "strlen((char *)*param_2)" (identifier "strlen") (argument_list "((char *)*param_2)" (( "(") (cast_expression "(char *)*param_2" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) () ")")))) (, ",") (binary_expression "(int)sVar6 < (int)__n" (cast_expression "(int)sVar6" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "sVar6")) (< "<") (cast_expression "(int)__n" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "__n")))) () ")"))) () ")")) (goto_statement "goto LAB_001e8d09;" (goto "goto") (statement_identifier "LAB_001e8d09") (; ";"))) (expression_statement "FUN_001e64b0();" (call_expression "FUN_001e64b0()" (identifier "FUN_001e64b0") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "__dest = (void *)FUN_001fcf40(__n + 1);" (assignment_expression "__dest = (void *)FUN_001fcf40(__n + 1)" (identifier "__dest") (= "=") (cast_expression "(void *)FUN_001fcf40(__n + 1)" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_001fcf40(__n + 1)" (identifier "FUN_001fcf40") (argument_list "(__n + 1)" (( "(") (binary_expression "__n + 1" (identifier "__n") (+ "+") (number_literal "1")) () ")"))))) (; ";")) (expression_statement "memcpy(__dest,(void *)*param_2,__n);" (call_expression "memcpy(__dest,(void *)*param_2,__n)" (identifier "memcpy") (argument_list "(__dest,(void *)*param_2,__n)" (( "(") (identifier "__dest") (, ",") (cast_expression "(void *)*param_2" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) (, ",") (identifier "__n") () ")"))) (; ";")) (expression_statement "*(undefined1 *)((int)__dest + __n) = 0;" (assignment_expression "*(undefined1 *)((int)__dest + __n) = 0" (pointer_expression "*(undefined1 *)((int)__dest + __n)" (* "*") (cast_expression "(undefined1 *)((int)__dest + __n)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)__dest + __n)" (( "(") (binary_expression "(int)__dest + __n" (cast_expression "(int)__dest" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "__dest")) (+ "+") (identifier "__n")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "pcVar5 = (char *)FUN_001e7170(__dest,*param_1);" (assignment_expression "pcVar5 = (char *)FUN_001e7170(__dest,*param_1)" (identifier "pcVar5") (= "=") (cast_expression "(char *)FUN_001e7170(__dest,*param_1)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_001e7170(__dest,*param_1)" (identifier "FUN_001e7170") (argument_list "(__dest,*param_1)" (( "(") (identifier "__dest") (, ",") (pointer_expression "*param_1" (* "*") (identifier "param_1")) () ")"))))) (; ";")) (if_statement "if (pcVar5 == (char *)0x0) {\n          FUN_001e63d0();\n        }\n        else {\n          if (*pcVar5 != '\0') {\n            FUN_001e64b0();\n          }\n          free(pcVar5);\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          FUN_001e63d0();\n        }" ({ "{") (expression_statement "FUN_001e63d0();" (call_expression "FUN_001e63d0()" (identifier "FUN_001e63d0") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")) (else_clause "else {\n          if (*pcVar5 != '\0') {\n            FUN_001e64b0();\n          }\n          free(pcVar5);\n        }" (else "else") (compound_statement "{\n          if (*pcVar5 != '\0') {\n            FUN_001e64b0();\n          }\n          free(pcVar5);\n        }" ({ "{") (if_statement "if (*pcVar5 != '\0') {\n            FUN_001e64b0();\n          }" (if "if") (parenthesized_expression "(*pcVar5 != '\0')" (( "(") (binary_expression "*pcVar5 != '\0'" (pointer_expression "*pcVar5" (* "*") (identifier "pcVar5")) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n            FUN_001e64b0();\n          }" ({ "{") (expression_statement "FUN_001e64b0();" (call_expression "FUN_001e64b0()" (identifier "FUN_001e64b0") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (expression_statement "free(pcVar5);" (call_expression "free(pcVar5)" (identifier "free") (argument_list "(pcVar5)" (( "(") (identifier "pcVar5") () ")"))) (; ";")) (} "}")))) (expression_statement "*param_2 = *param_2 + __n;" (assignment_expression "*param_2 = *param_2 + __n" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (binary_expression "*param_2 + __n" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (+ "+") (identifier "__n"))) (; ";")) (expression_statement "free(__dest);" (call_expression "free(__dest)" (identifier "free") (argument_list "(__dest)" (( "(") (identifier "__dest") () ")"))) (; ";")) (} "}")) (else_clause "else {\n        if (cVar1 != 'T') {\n          if (cVar1 == 'U') goto LAB_001e8d75;\n          goto LAB_001e8d09;\n        }\n        *param_2 = (int)(pcVar5 + 1);\n        iVar4 = FUN_001e7a30();\n        if (iVar4 == 0) goto LAB_001e8d09;\n      }" (else "else") (compound_statement "{\n        if (cVar1 != 'T') {\n          if (cVar1 == 'U') goto LAB_001e8d75;\n          goto LAB_001e8d09;\n        }\n        *param_2 = (int)(pcVar5 + 1);\n        iVar4 = FUN_001e7a30();\n        if (iVar4 == 0) goto LAB_001e8d09;\n      }" ({ "{") (if_statement "if (cVar1 != 'T') {\n          if (cVar1 == 'U') goto LAB_001e8d75;\n          goto LAB_001e8d09;\n        }" (if "if") (parenthesized_expression "(cVar1 != 'T')" (( "(") (binary_expression "cVar1 != 'T'" (identifier "cVar1") (!= "!=") (char_literal "'T'" (' "'") (character "T") (' "'"))) () ")")) (compound_statement "{\n          if (cVar1 == 'U') goto LAB_001e8d75;\n          goto LAB_001e8d09;\n        }" ({ "{") (if_statement "if (cVar1 == 'U') goto LAB_001e8d75;" (if "if") (parenthesized_expression "(cVar1 == 'U')" (( "(") (binary_expression "cVar1 == 'U'" (identifier "cVar1") (== "==") (char_literal "'U'" (' "'") (character "U") (' "'"))) () ")")) (goto_statement "goto LAB_001e8d75;" (goto "goto") (statement_identifier "LAB_001e8d75") (; ";"))) (goto_statement "goto LAB_001e8d09;" (goto "goto") (statement_identifier "LAB_001e8d09") (; ";")) (} "}"))) (expression_statement "*param_2 = (int)(pcVar5 + 1);" (assignment_expression "*param_2 = (int)(pcVar5 + 1)" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (cast_expression "(int)(pcVar5 + 1)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(pcVar5 + 1)" (( "(") (binary_expression "pcVar5 + 1" (identifier "pcVar5") (+ "+") (number_literal "1")) () ")")))) (; ";")) (expression_statement "iVar4 = FUN_001e7a30();" (assignment_expression "iVar4 = FUN_001e7a30()" (identifier "iVar4") (= "=") (call_expression "FUN_001e7a30()" (identifier "FUN_001e7a30") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (iVar4 == 0) goto LAB_001e8d09;" (if "if") (parenthesized_expression "(iVar4 == 0)" (( "(") (binary_expression "iVar4 == 0" (identifier "iVar4") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_001e8d09;" (goto "goto") (statement_identifier "LAB_001e8d09") (; ";"))) (} "}")))))) (labeled_statement "LAB_001e8cbb:\n      FUN_001e6600();" (statement_identifier "LAB_001e8cbb") (: ":") (expression_statement "FUN_001e6600();" (call_expression "FUN_001e6600()" (identifier "FUN_001e6600") (argument_list "()" (( "(") () ")"))) (; ";"))) (if_statement "if ((*(char *)*param_2 == '\0') || (*(char *)*param_2 == '_')) goto LAB_001e8d09;" (if "if") (parenthesized_expression "((*(char *)*param_2 == '\0') || (*(char *)*param_2 == '_'))" (( "(") (binary_expression "(*(char *)*param_2 == '\0') || (*(char *)*param_2 == '_')" (parenthesized_expression "(*(char *)*param_2 == '\0')" (( "(") (binary_expression "*(char *)*param_2 == '\0'" (pointer_expression "*(char *)*param_2" (* "*") (cast_expression "(char *)*param_2" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_2" (* "*") (identifier "param_2")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (|| "||") (parenthesized_expression "(*(char *)*param_2 == '_')" (( "(") (binary_expression "*(char *)*param_2 == '_'" (pointer_expression "*(char *)*param_2" (* "*") (cast_expression "(char *)*param_2" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_2" (* "*") (identifier "param_2")))) (== "==") (char_literal "'_'" (' "'") (character "_") (' "'"))) () ")"))) () ")")) (goto_statement "goto LAB_001e8d09;" (goto "goto") (statement_identifier "LAB_001e8d09") (; ";"))) (expression_statement "FUN_001e64b0();" (call_expression "FUN_001e64b0()" (identifier "FUN_001e64b0") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";")) (} "}"))) (if_statement "if (((uVar10 & 0x1800) == 0) || (pcVar3 = strstr(pcVar5,"__pt__"), pcVar3 == (char *)0x0)) {\nLAB_001e88a9:\n    if ((uVar10 & 0x2100) != 0) {\n      pcVar3 = strstr(pcVar5,"__tm__");\n      if (((pcVar3 == (char *)0x0) && (pcVar3 = strstr(pcVar5,"__ps__"), pcVar3 == (char *)0x0)) &&\n         (pcVar3 = strstr(pcVar5,"__pt__"), pcVar3 == (char *)0x0)) {\n        pcVar3 = strstr(pcVar5,"__S");\n        if (pcVar3 == (char *)0x0) goto LAB_001e88f1;\n        local_38 = pcVar3 + 3;\n      }\n      else {\n        local_38 = pcVar3 + 6;\n      }\n      iVar4 = FUN_001e6060();\n      if (((iVar4 != -1) && (pcVar7 == local_38 + iVar4)) && (*local_38 == '_')) goto LAB_001e8979;\n    }\n  }\n  else {\n    local_38 = pcVar3 + 6;\n    iVar4 = FUN_001e6060();\n    if (iVar4 != -1) {\n      if ((pcVar7 != local_38 + iVar4) || (*local_38 != '_')) {\n        uVar10 = *param_1;\n        goto LAB_001e88a9;\n      }\nLAB_001e8979:\n      local_38 = local_38 + 1;\n      if (pcVar3 != (char *)*param_2) {\n        FUN_001e63d0();\n      }\n      if (param_1[0xd] == 0xffffffff) {\n        param_1[0xd] = param_4[1] - *param_4;\n      }\n      uVar10 = *param_1;\n      *param_1 = uVar10 | 1;\n      FUN_001e64b0();\n      while (local_38 < pcVar7) {\n        if (*local_38 != 'L') {\n          if (*local_38 == 'X') {\n            local_38 = local_38 + 1;\n            iVar4 = FUN_001e7a30();\n            if (iVar4 != 0) {\n              FUN_001e64b0();\n              FUN_001e6600();\n              if (local_28 != (void *)0x0) {\n                free(local_28);\n                local_28 = (void *)0x0;\n              }\n              FUN_001e64b0();\n              if (*local_38 == 'L') goto LAB_001e8a99;\n            }\n          }\n          else {\n            iVar4 = FUN_001e7a30();\n            if (iVar4 != 0) {\n              *param_1 = uVar10;\n              return;\n            }\n          }\nLAB_001e8e50:\n          if (local_38 < pcVar7) goto LAB_001e8e86;\n          break;\n        }\nLAB_001e8a99:\n        local_38 = local_38 + 1;\n        iVar4 = FUN_001e6540();\n        if (iVar4 == 0) goto LAB_001e8e50;\n        FUN_001e6600();\n        FUN_001e64b0();\n      }\n      param_4[1] = param_4[1] + -1;\nLAB_001e8e86:\n      FUN_001e64b0();\n      *param_1 = uVar10;\n      pbVar8 = (byte *)*param_2;\n      goto LAB_001e895e;\n    }\n  }" (if "if") (parenthesized_expression "(((uVar10 & 0x1800) == 0) || (pcVar3 = strstr(pcVar5,"__pt__"), pcVar3 == (char *)0x0))" (( "(") (binary_expression "((uVar10 & 0x1800) == 0) || (pcVar3 = strstr(pcVar5,"__pt__"), pcVar3 == (char *)0x0)" (parenthesized_expression "((uVar10 & 0x1800) == 0)" (( "(") (binary_expression "(uVar10 & 0x1800) == 0" (parenthesized_expression "(uVar10 & 0x1800)" (( "(") (binary_expression "uVar10 & 0x1800" (identifier "uVar10") (& "&") (number_literal "0x1800")) () ")")) (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(pcVar3 = strstr(pcVar5,"__pt__"), pcVar3 == (char *)0x0)" (( "(") (comma_expression "pcVar3 = strstr(pcVar5,"__pt__"), pcVar3 == (char *)0x0" (assignment_expression "pcVar3 = strstr(pcVar5,"__pt__")" (identifier "pcVar3") (= "=") (call_expression "strstr(pcVar5,"__pt__")" (identifier "strstr") (argument_list "(pcVar5,"__pt__")" (( "(") (identifier "pcVar5") (, ",") (string_literal ""__pt__"" (" """) (string_content "__pt__") (" """)) () ")")))) (, ",") (binary_expression "pcVar3 == (char *)0x0" (identifier "pcVar3") (== "==") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")))) () ")"))) () ")")) (compound_statement "{\nLAB_001e88a9:\n    if ((uVar10 & 0x2100) != 0) {\n      pcVar3 = strstr(pcVar5,"__tm__");\n      if (((pcVar3 == (char *)0x0) && (pcVar3 = strstr(pcVar5,"__ps__"), pcVar3 == (char *)0x0)) &&\n         (pcVar3 = strstr(pcVar5,"__pt__"), pcVar3 == (char *)0x0)) {\n        pcVar3 = strstr(pcVar5,"__S");\n        if (pcVar3 == (char *)0x0) goto LAB_001e88f1;\n        local_38 = pcVar3 + 3;\n      }\n      else {\n        local_38 = pcVar3 + 6;\n      }\n      iVar4 = FUN_001e6060();\n      if (((iVar4 != -1) && (pcVar7 == local_38 + iVar4)) && (*local_38 == '_')) goto LAB_001e8979;\n    }\n  }" ({ "{") (labeled_statement "LAB_001e88a9:\n    if ((uVar10 & 0x2100) != 0) {\n      pcVar3 = strstr(pcVar5,"__tm__");\n      if (((pcVar3 == (char *)0x0) && (pcVar3 = strstr(pcVar5,"__ps__"), pcVar3 == (char *)0x0)) &&\n         (pcVar3 = strstr(pcVar5,"__pt__"), pcVar3 == (char *)0x0)) {\n        pcVar3 = strstr(pcVar5,"__S");\n        if (pcVar3 == (char *)0x0) goto LAB_001e88f1;\n        local_38 = pcVar3 + 3;\n      }\n      else {\n        local_38 = pcVar3 + 6;\n      }\n      iVar4 = FUN_001e6060();\n      if (((iVar4 != -1) && (pcVar7 == local_38 + iVar4)) && (*local_38 == '_')) goto LAB_001e8979;\n    }" (statement_identifier "LAB_001e88a9") (: ":") (if_statement "if ((uVar10 & 0x2100) != 0) {\n      pcVar3 = strstr(pcVar5,"__tm__");\n      if (((pcVar3 == (char *)0x0) && (pcVar3 = strstr(pcVar5,"__ps__"), pcVar3 == (char *)0x0)) &&\n         (pcVar3 = strstr(pcVar5,"__pt__"), pcVar3 == (char *)0x0)) {\n        pcVar3 = strstr(pcVar5,"__S");\n        if (pcVar3 == (char *)0x0) goto LAB_001e88f1;\n        local_38 = pcVar3 + 3;\n      }\n      else {\n        local_38 = pcVar3 + 6;\n      }\n      iVar4 = FUN_001e6060();\n      if (((iVar4 != -1) && (pcVar7 == local_38 + iVar4)) && (*local_38 == '_')) goto LAB_001e8979;\n    }" (if "if") (parenthesized_expression "((uVar10 & 0x2100) != 0)" (( "(") (binary_expression "(uVar10 & 0x2100) != 0" (parenthesized_expression "(uVar10 & 0x2100)" (( "(") (binary_expression "uVar10 & 0x2100" (identifier "uVar10") (& "&") (number_literal "0x2100")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      pcVar3 = strstr(pcVar5,"__tm__");\n      if (((pcVar3 == (char *)0x0) && (pcVar3 = strstr(pcVar5,"__ps__"), pcVar3 == (char *)0x0)) &&\n         (pcVar3 = strstr(pcVar5,"__pt__"), pcVar3 == (char *)0x0)) {\n        pcVar3 = strstr(pcVar5,"__S");\n        if (pcVar3 == (char *)0x0) goto LAB_001e88f1;\n        local_38 = pcVar3 + 3;\n      }\n      else {\n        local_38 = pcVar3 + 6;\n      }\n      iVar4 = FUN_001e6060();\n      if (((iVar4 != -1) && (pcVar7 == local_38 + iVar4)) && (*local_38 == '_')) goto LAB_001e8979;\n    }" ({ "{") (expression_statement "pcVar3 = strstr(pcVar5,"__tm__");" (assignment_expression "pcVar3 = strstr(pcVar5,"__tm__")" (identifier "pcVar3") (= "=") (call_expression "strstr(pcVar5,"__tm__")" (identifier "strstr") (argument_list "(pcVar5,"__tm__")" (( "(") (identifier "pcVar5") (, ",") (string_literal ""__tm__"" (" """) (string_content "__tm__") (" """)) () ")")))) (; ";")) (if_statement "if (((pcVar3 == (char *)0x0) && (pcVar3 = strstr(pcVar5,"__ps__"), pcVar3 == (char *)0x0)) &&\n         (pcVar3 = strstr(pcVar5,"__pt__"), pcVar3 == (char *)0x0)) {\n        pcVar3 = strstr(pcVar5,"__S");\n        if (pcVar3 == (char *)0x0) goto LAB_001e88f1;\n        local_38 = pcVar3 + 3;\n      }\n      else {\n        local_38 = pcVar3 + 6;\n      }" (if "if") (parenthesized_expression "(((pcVar3 == (char *)0x0) && (pcVar3 = strstr(pcVar5,"__ps__"), pcVar3 == (char *)0x0)) &&\n         (pcVar3 = strstr(pcVar5,"__pt__"), pcVar3 == (char *)0x0))" (( "(") (binary_expression "((pcVar3 == (char *)0x0) && (pcVar3 = strstr(pcVar5,"__ps__"), pcVar3 == (char *)0x0)) &&\n         (pcVar3 = strstr(pcVar5,"__pt__"), pcVar3 == (char *)0x0)" (parenthesized_expression "((pcVar3 == (char *)0x0) && (pcVar3 = strstr(pcVar5,"__ps__"), pcVar3 == (char *)0x0))" (( "(") (binary_expression "(pcVar3 == (char *)0x0) && (pcVar3 = strstr(pcVar5,"__ps__"), pcVar3 == (char *)0x0)" (parenthesized_expression "(pcVar3 == (char *)0x0)" (( "(") (binary_expression "pcVar3 == (char *)0x0" (identifier "pcVar3") (== "==") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (&& "&&") (parenthesized_expression "(pcVar3 = strstr(pcVar5,"__ps__"), pcVar3 == (char *)0x0)" (( "(") (comma_expression "pcVar3 = strstr(pcVar5,"__ps__"), pcVar3 == (char *)0x0" (assignment_expression "pcVar3 = strstr(pcVar5,"__ps__")" (identifier "pcVar3") (= "=") (call_expression "strstr(pcVar5,"__ps__")" (identifier "strstr") (argument_list "(pcVar5,"__ps__")" (( "(") (identifier "pcVar5") (, ",") (string_literal ""__ps__"" (" """) (string_content "__ps__") (" """)) () ")")))) (, ",") (binary_expression "pcVar3 == (char *)0x0" (identifier "pcVar3") (== "==") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")))) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(pcVar3 = strstr(pcVar5,"__pt__"), pcVar3 == (char *)0x0)" (( "(") (comma_expression "pcVar3 = strstr(pcVar5,"__pt__"), pcVar3 == (char *)0x0" (assignment_expression "pcVar3 = strstr(pcVar5,"__pt__")" (identifier "pcVar3") (= "=") (call_expression "strstr(pcVar5,"__pt__")" (identifier "strstr") (argument_list "(pcVar5,"__pt__")" (( "(") (identifier "pcVar5") (, ",") (string_literal ""__pt__"" (" """) (string_content "__pt__") (" """)) () ")")))) (, ",") (binary_expression "pcVar3 == (char *)0x0" (identifier "pcVar3") (== "==") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")))) () ")"))) () ")")) (compound_statement "{\n        pcVar3 = strstr(pcVar5,"__S");\n        if (pcVar3 == (char *)0x0) goto LAB_001e88f1;\n        local_38 = pcVar3 + 3;\n      }" ({ "{") (expression_statement "pcVar3 = strstr(pcVar5,"__S");" (assignment_expression "pcVar3 = strstr(pcVar5,"__S")" (identifier "pcVar3") (= "=") (call_expression "strstr(pcVar5,"__S")" (identifier "strstr") (argument_list "(pcVar5,"__S")" (( "(") (identifier "pcVar5") (, ",") (string_literal ""__S"" (" """) (string_content "__S") (" """)) () ")")))) (; ";")) (if_statement "if (pcVar3 == (char *)0x0) goto LAB_001e88f1;" (if "if") (parenthesized_expression "(pcVar3 == (char *)0x0)" (( "(") (binary_expression "pcVar3 == (char *)0x0" (identifier "pcVar3") (== "==") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_001e88f1;" (goto "goto") (statement_identifier "LAB_001e88f1") (; ";"))) (expression_statement "local_38 = pcVar3 + 3;" (assignment_expression "local_38 = pcVar3 + 3" (identifier "local_38") (= "=") (binary_expression "pcVar3 + 3" (identifier "pcVar3") (+ "+") (number_literal "3"))) (; ";")) (} "}")) (else_clause "else {\n        local_38 = pcVar3 + 6;\n      }" (else "else") (compound_statement "{\n        local_38 = pcVar3 + 6;\n      }" ({ "{") (expression_statement "local_38 = pcVar3 + 6;" (assignment_expression "local_38 = pcVar3 + 6" (identifier "local_38") (= "=") (binary_expression "pcVar3 + 6" (identifier "pcVar3") (+ "+") (number_literal "6"))) (; ";")) (} "}")))) (expression_statement "iVar4 = FUN_001e6060();" (assignment_expression "iVar4 = FUN_001e6060()" (identifier "iVar4") (= "=") (call_expression "FUN_001e6060()" (identifier "FUN_001e6060") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (((iVar4 != -1) && (pcVar7 == local_38 + iVar4)) && (*local_38 == '_')) goto LAB_001e8979;" (if "if") (parenthesized_expression "(((iVar4 != -1) && (pcVar7 == local_38 + iVar4)) && (*local_38 == '_'))" (( "(") (binary_expression "((iVar4 != -1) && (pcVar7 == local_38 + iVar4)) && (*local_38 == '_')" (parenthesized_expression "((iVar4 != -1) && (pcVar7 == local_38 + iVar4))" (( "(") (binary_expression "(iVar4 != -1) && (pcVar7 == local_38 + iVar4)" (parenthesized_expression "(iVar4 != -1)" (( "(") (binary_expression "iVar4 != -1" (identifier "iVar4") (!= "!=") (number_literal "-1")) () ")")) (&& "&&") (parenthesized_expression "(pcVar7 == local_38 + iVar4)" (( "(") (binary_expression "pcVar7 == local_38 + iVar4" (identifier "pcVar7") (== "==") (binary_expression "local_38 + iVar4" (identifier "local_38") (+ "+") (identifier "iVar4"))) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(*local_38 == '_')" (( "(") (binary_expression "*local_38 == '_'" (pointer_expression "*local_38" (* "*") (identifier "local_38")) (== "==") (char_literal "'_'" (' "'") (character "_") (' "'"))) () ")"))) () ")")) (goto_statement "goto LAB_001e8979;" (goto "goto") (statement_identifier "LAB_001e8979") (; ";"))) (} "}")))) (} "}")) (else_clause "else {\n    local_38 = pcVar3 + 6;\n    iVar4 = FUN_001e6060();\n    if (iVar4 != -1) {\n      if ((pcVar7 != local_38 + iVar4) || (*local_38 != '_')) {\n        uVar10 = *param_1;\n        goto LAB_001e88a9;\n      }\nLAB_001e8979:\n      local_38 = local_38 + 1;\n      if (pcVar3 != (char *)*param_2) {\n        FUN_001e63d0();\n      }\n      if (param_1[0xd] == 0xffffffff) {\n        param_1[0xd] = param_4[1] - *param_4;\n      }\n      uVar10 = *param_1;\n      *param_1 = uVar10 | 1;\n      FUN_001e64b0();\n      while (local_38 < pcVar7) {\n        if (*local_38 != 'L') {\n          if (*local_38 == 'X') {\n            local_38 = local_38 + 1;\n            iVar4 = FUN_001e7a30();\n            if (iVar4 != 0) {\n              FUN_001e64b0();\n              FUN_001e6600();\n              if (local_28 != (void *)0x0) {\n                free(local_28);\n                local_28 = (void *)0x0;\n              }\n              FUN_001e64b0();\n              if (*local_38 == 'L') goto LAB_001e8a99;\n            }\n          }\n          else {\n            iVar4 = FUN_001e7a30();\n            if (iVar4 != 0) {\n              *param_1 = uVar10;\n              return;\n            }\n          }\nLAB_001e8e50:\n          if (local_38 < pcVar7) goto LAB_001e8e86;\n          break;\n        }\nLAB_001e8a99:\n        local_38 = local_38 + 1;\n        iVar4 = FUN_001e6540();\n        if (iVar4 == 0) goto LAB_001e8e50;\n        FUN_001e6600();\n        FUN_001e64b0();\n      }\n      param_4[1] = param_4[1] + -1;\nLAB_001e8e86:\n      FUN_001e64b0();\n      *param_1 = uVar10;\n      pbVar8 = (byte *)*param_2;\n      goto LAB_001e895e;\n    }\n  }" (else "else") (compound_statement "{\n    local_38 = pcVar3 + 6;\n    iVar4 = FUN_001e6060();\n    if (iVar4 != -1) {\n      if ((pcVar7 != local_38 + iVar4) || (*local_38 != '_')) {\n        uVar10 = *param_1;\n        goto LAB_001e88a9;\n      }\nLAB_001e8979:\n      local_38 = local_38 + 1;\n      if (pcVar3 != (char *)*param_2) {\n        FUN_001e63d0();\n      }\n      if (param_1[0xd] == 0xffffffff) {\n        param_1[0xd] = param_4[1] - *param_4;\n      }\n      uVar10 = *param_1;\n      *param_1 = uVar10 | 1;\n      FUN_001e64b0();\n      while (local_38 < pcVar7) {\n        if (*local_38 != 'L') {\n          if (*local_38 == 'X') {\n            local_38 = local_38 + 1;\n            iVar4 = FUN_001e7a30();\n            if (iVar4 != 0) {\n              FUN_001e64b0();\n              FUN_001e6600();\n              if (local_28 != (void *)0x0) {\n                free(local_28);\n                local_28 = (void *)0x0;\n              }\n              FUN_001e64b0();\n              if (*local_38 == 'L') goto LAB_001e8a99;\n            }\n          }\n          else {\n            iVar4 = FUN_001e7a30();\n            if (iVar4 != 0) {\n              *param_1 = uVar10;\n              return;\n            }\n          }\nLAB_001e8e50:\n          if (local_38 < pcVar7) goto LAB_001e8e86;\n          break;\n        }\nLAB_001e8a99:\n        local_38 = local_38 + 1;\n        iVar4 = FUN_001e6540();\n        if (iVar4 == 0) goto LAB_001e8e50;\n        FUN_001e6600();\n        FUN_001e64b0();\n      }\n      param_4[1] = param_4[1] + -1;\nLAB_001e8e86:\n      FUN_001e64b0();\n      *param_1 = uVar10;\n      pbVar8 = (byte *)*param_2;\n      goto LAB_001e895e;\n    }\n  }" ({ "{") (expression_statement "local_38 = pcVar3 + 6;" (assignment_expression "local_38 = pcVar3 + 6" (identifier "local_38") (= "=") (binary_expression "pcVar3 + 6" (identifier "pcVar3") (+ "+") (number_literal "6"))) (; ";")) (expression_statement "iVar4 = FUN_001e6060();" (assignment_expression "iVar4 = FUN_001e6060()" (identifier "iVar4") (= "=") (call_expression "FUN_001e6060()" (identifier "FUN_001e6060") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (iVar4 != -1) {\n      if ((pcVar7 != local_38 + iVar4) || (*local_38 != '_')) {\n        uVar10 = *param_1;\n        goto LAB_001e88a9;\n      }\nLAB_001e8979:\n      local_38 = local_38 + 1;\n      if (pcVar3 != (char *)*param_2) {\n        FUN_001e63d0();\n      }\n      if (param_1[0xd] == 0xffffffff) {\n        param_1[0xd] = param_4[1] - *param_4;\n      }\n      uVar10 = *param_1;\n      *param_1 = uVar10 | 1;\n      FUN_001e64b0();\n      while (local_38 < pcVar7) {\n        if (*local_38 != 'L') {\n          if (*local_38 == 'X') {\n            local_38 = local_38 + 1;\n            iVar4 = FUN_001e7a30();\n            if (iVar4 != 0) {\n              FUN_001e64b0();\n              FUN_001e6600();\n              if (local_28 != (void *)0x0) {\n                free(local_28);\n                local_28 = (void *)0x0;\n              }\n              FUN_001e64b0();\n              if (*local_38 == 'L') goto LAB_001e8a99;\n            }\n          }\n          else {\n            iVar4 = FUN_001e7a30();\n            if (iVar4 != 0) {\n              *param_1 = uVar10;\n              return;\n            }\n          }\nLAB_001e8e50:\n          if (local_38 < pcVar7) goto LAB_001e8e86;\n          break;\n        }\nLAB_001e8a99:\n        local_38 = local_38 + 1;\n        iVar4 = FUN_001e6540();\n        if (iVar4 == 0) goto LAB_001e8e50;\n        FUN_001e6600();\n        FUN_001e64b0();\n      }\n      param_4[1] = param_4[1] + -1;\nLAB_001e8e86:\n      FUN_001e64b0();\n      *param_1 = uVar10;\n      pbVar8 = (byte *)*param_2;\n      goto LAB_001e895e;\n    }" (if "if") (parenthesized_expression "(iVar4 != -1)" (( "(") (binary_expression "iVar4 != -1" (identifier "iVar4") (!= "!=") (number_literal "-1")) () ")")) (compound_statement "{\n      if ((pcVar7 != local_38 + iVar4) || (*local_38 != '_')) {\n        uVar10 = *param_1;\n        goto LAB_001e88a9;\n      }\nLAB_001e8979:\n      local_38 = local_38 + 1;\n      if (pcVar3 != (char *)*param_2) {\n        FUN_001e63d0();\n      }\n      if (param_1[0xd] == 0xffffffff) {\n        param_1[0xd] = param_4[1] - *param_4;\n      }\n      uVar10 = *param_1;\n      *param_1 = uVar10 | 1;\n      FUN_001e64b0();\n      while (local_38 < pcVar7) {\n        if (*local_38 != 'L') {\n          if (*local_38 == 'X') {\n            local_38 = local_38 + 1;\n            iVar4 = FUN_001e7a30();\n            if (iVar4 != 0) {\n              FUN_001e64b0();\n              FUN_001e6600();\n              if (local_28 != (void *)0x0) {\n                free(local_28);\n                local_28 = (void *)0x0;\n              }\n              FUN_001e64b0();\n              if (*local_38 == 'L') goto LAB_001e8a99;\n            }\n          }\n          else {\n            iVar4 = FUN_001e7a30();\n            if (iVar4 != 0) {\n              *param_1 = uVar10;\n              return;\n            }\n          }\nLAB_001e8e50:\n          if (local_38 < pcVar7) goto LAB_001e8e86;\n          break;\n        }\nLAB_001e8a99:\n        local_38 = local_38 + 1;\n        iVar4 = FUN_001e6540();\n        if (iVar4 == 0) goto LAB_001e8e50;\n        FUN_001e6600();\n        FUN_001e64b0();\n      }\n      param_4[1] = param_4[1] + -1;\nLAB_001e8e86:\n      FUN_001e64b0();\n      *param_1 = uVar10;\n      pbVar8 = (byte *)*param_2;\n      goto LAB_001e895e;\n    }" ({ "{") (if_statement "if ((pcVar7 != local_38 + iVar4) || (*local_38 != '_')) {\n        uVar10 = *param_1;\n        goto LAB_001e88a9;\n      }" (if "if") (parenthesized_expression "((pcVar7 != local_38 + iVar4) || (*local_38 != '_'))" (( "(") (binary_expression "(pcVar7 != local_38 + iVar4) || (*local_38 != '_')" (parenthesized_expression "(pcVar7 != local_38 + iVar4)" (( "(") (binary_expression "pcVar7 != local_38 + iVar4" (identifier "pcVar7") (!= "!=") (binary_expression "local_38 + iVar4" (identifier "local_38") (+ "+") (identifier "iVar4"))) () ")")) (|| "||") (parenthesized_expression "(*local_38 != '_')" (( "(") (binary_expression "*local_38 != '_'" (pointer_expression "*local_38" (* "*") (identifier "local_38")) (!= "!=") (char_literal "'_'" (' "'") (character "_") (' "'"))) () ")"))) () ")")) (compound_statement "{\n        uVar10 = *param_1;\n        goto LAB_001e88a9;\n      }" ({ "{") (expression_statement "uVar10 = *param_1;" (assignment_expression "uVar10 = *param_1" (identifier "uVar10") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (goto_statement "goto LAB_001e88a9;" (goto "goto") (statement_identifier "LAB_001e88a9") (; ";")) (} "}"))) (labeled_statement "LAB_001e8979:\n      local_38 = local_38 + 1;" (statement_identifier "LAB_001e8979") (: ":") (expression_statement "local_38 = local_38 + 1;" (assignment_expression "local_38 = local_38 + 1" (identifier "local_38") (= "=") (binary_expression "local_38 + 1" (identifier "local_38") (+ "+") (number_literal "1"))) (; ";"))) (if_statement "if (pcVar3 != (char *)*param_2) {\n        FUN_001e63d0();\n      }" (if "if") (parenthesized_expression "(pcVar3 != (char *)*param_2)" (( "(") (binary_expression "pcVar3 != (char *)*param_2" (identifier "pcVar3") (!= "!=") (cast_expression "(char *)*param_2" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_2" (* "*") (identifier "param_2")))) () ")")) (compound_statement "{\n        FUN_001e63d0();\n      }" ({ "{") (expression_statement "FUN_001e63d0();" (call_expression "FUN_001e63d0()" (identifier "FUN_001e63d0") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (if_statement "if (param_1[0xd] == 0xffffffff) {\n        param_1[0xd] = param_4[1] - *param_4;\n      }" (if "if") (parenthesized_expression "(param_1[0xd] == 0xffffffff)" (( "(") (binary_expression "param_1[0xd] == 0xffffffff" (subscript_expression "param_1[0xd]" (identifier "param_1") ([ "[") (number_literal "0xd") (] "]")) (== "==") (number_literal "0xffffffff")) () ")")) (compound_statement "{\n        param_1[0xd] = param_4[1] - *param_4;\n      }" ({ "{") (expression_statement "param_1[0xd] = param_4[1] - *param_4;" (assignment_expression "param_1[0xd] = param_4[1] - *param_4" (subscript_expression "param_1[0xd]" (identifier "param_1") ([ "[") (number_literal "0xd") (] "]")) (= "=") (binary_expression "param_4[1] - *param_4" (subscript_expression "param_4[1]" (identifier "param_4") ([ "[") (number_literal "1") (] "]")) (- "-") (pointer_expression "*param_4" (* "*") (identifier "param_4")))) (; ";")) (} "}"))) (expression_statement "uVar10 = *param_1;" (assignment_expression "uVar10 = *param_1" (identifier "uVar10") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (expression_statement "*param_1 = uVar10 | 1;" (assignment_expression "*param_1 = uVar10 | 1" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (binary_expression "uVar10 | 1" (identifier "uVar10") (| "|") (number_literal "1"))) (; ";")) (expression_statement "FUN_001e64b0();" (call_expression "FUN_001e64b0()" (identifier "FUN_001e64b0") (argument_list "()" (( "(") () ")"))) (; ";")) (while_statement "while (local_38 < pcVar7) {\n        if (*local_38 != 'L') {\n          if (*local_38 == 'X') {\n            local_38 = local_38 + 1;\n            iVar4 = FUN_001e7a30();\n            if (iVar4 != 0) {\n              FUN_001e64b0();\n              FUN_001e6600();\n              if (local_28 != (void *)0x0) {\n                free(local_28);\n                local_28 = (void *)0x0;\n              }\n              FUN_001e64b0();\n              if (*local_38 == 'L') goto LAB_001e8a99;\n            }\n          }\n          else {\n            iVar4 = FUN_001e7a30();\n            if (iVar4 != 0) {\n              *param_1 = uVar10;\n              return;\n            }\n          }\nLAB_001e8e50:\n          if (local_38 < pcVar7) goto LAB_001e8e86;\n          break;\n        }\nLAB_001e8a99:\n        local_38 = local_38 + 1;\n        iVar4 = FUN_001e6540();\n        if (iVar4 == 0) goto LAB_001e8e50;\n        FUN_001e6600();\n        FUN_001e64b0();\n      }" (while "while") (parenthesized_expression "(local_38 < pcVar7)" (( "(") (binary_expression "local_38 < pcVar7" (identifier "local_38") (< "<") (identifier "pcVar7")) () ")")) (compound_statement "{\n        if (*local_38 != 'L') {\n          if (*local_38 == 'X') {\n            local_38 = local_38 + 1;\n            iVar4 = FUN_001e7a30();\n            if (iVar4 != 0) {\n              FUN_001e64b0();\n              FUN_001e6600();\n              if (local_28 != (void *)0x0) {\n                free(local_28);\n                local_28 = (void *)0x0;\n              }\n              FUN_001e64b0();\n              if (*local_38 == 'L') goto LAB_001e8a99;\n            }\n          }\n          else {\n            iVar4 = FUN_001e7a30();\n            if (iVar4 != 0) {\n              *param_1 = uVar10;\n              return;\n            }\n          }\nLAB_001e8e50:\n          if (local_38 < pcVar7) goto LAB_001e8e86;\n          break;\n        }\nLAB_001e8a99:\n        local_38 = local_38 + 1;\n        iVar4 = FUN_001e6540();\n        if (iVar4 == 0) goto LAB_001e8e50;\n        FUN_001e6600();\n        FUN_001e64b0();\n      }" ({ "{") (if_statement "if (*local_38 != 'L') {\n          if (*local_38 == 'X') {\n            local_38 = local_38 + 1;\n            iVar4 = FUN_001e7a30();\n            if (iVar4 != 0) {\n              FUN_001e64b0();\n              FUN_001e6600();\n              if (local_28 != (void *)0x0) {\n                free(local_28);\n                local_28 = (void *)0x0;\n              }\n              FUN_001e64b0();\n              if (*local_38 == 'L') goto LAB_001e8a99;\n            }\n          }\n          else {\n            iVar4 = FUN_001e7a30();\n            if (iVar4 != 0) {\n              *param_1 = uVar10;\n              return;\n            }\n          }\nLAB_001e8e50:\n          if (local_38 < pcVar7) goto LAB_001e8e86;\n          break;\n        }" (if "if") (parenthesized_expression "(*local_38 != 'L')" (( "(") (binary_expression "*local_38 != 'L'" (pointer_expression "*local_38" (* "*") (identifier "local_38")) (!= "!=") (char_literal "'L'" (' "'") (character "L") (' "'"))) () ")")) (compound_statement "{\n          if (*local_38 == 'X') {\n            local_38 = local_38 + 1;\n            iVar4 = FUN_001e7a30();\n            if (iVar4 != 0) {\n              FUN_001e64b0();\n              FUN_001e6600();\n              if (local_28 != (void *)0x0) {\n                free(local_28);\n                local_28 = (void *)0x0;\n              }\n              FUN_001e64b0();\n              if (*local_38 == 'L') goto LAB_001e8a99;\n            }\n          }\n          else {\n            iVar4 = FUN_001e7a30();\n            if (iVar4 != 0) {\n              *param_1 = uVar10;\n              return;\n            }\n          }\nLAB_001e8e50:\n          if (local_38 < pcVar7) goto LAB_001e8e86;\n          break;\n        }" ({ "{") (if_statement "if (*local_38 == 'X') {\n            local_38 = local_38 + 1;\n            iVar4 = FUN_001e7a30();\n            if (iVar4 != 0) {\n              FUN_001e64b0();\n              FUN_001e6600();\n              if (local_28 != (void *)0x0) {\n                free(local_28);\n                local_28 = (void *)0x0;\n              }\n              FUN_001e64b0();\n              if (*local_38 == 'L') goto LAB_001e8a99;\n            }\n          }\n          else {\n            iVar4 = FUN_001e7a30();\n            if (iVar4 != 0) {\n              *param_1 = uVar10;\n              return;\n            }\n          }" (if "if") (parenthesized_expression "(*local_38 == 'X')" (( "(") (binary_expression "*local_38 == 'X'" (pointer_expression "*local_38" (* "*") (identifier "local_38")) (== "==") (char_literal "'X'" (' "'") (character "X") (' "'"))) () ")")) (compound_statement "{\n            local_38 = local_38 + 1;\n            iVar4 = FUN_001e7a30();\n            if (iVar4 != 0) {\n              FUN_001e64b0();\n              FUN_001e6600();\n              if (local_28 != (void *)0x0) {\n                free(local_28);\n                local_28 = (void *)0x0;\n              }\n              FUN_001e64b0();\n              if (*local_38 == 'L') goto LAB_001e8a99;\n            }\n          }" ({ "{") (expression_statement "local_38 = local_38 + 1;" (assignment_expression "local_38 = local_38 + 1" (identifier "local_38") (= "=") (binary_expression "local_38 + 1" (identifier "local_38") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "iVar4 = FUN_001e7a30();" (assignment_expression "iVar4 = FUN_001e7a30()" (identifier "iVar4") (= "=") (call_expression "FUN_001e7a30()" (identifier "FUN_001e7a30") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (iVar4 != 0) {\n              FUN_001e64b0();\n              FUN_001e6600();\n              if (local_28 != (void *)0x0) {\n                free(local_28);\n                local_28 = (void *)0x0;\n              }\n              FUN_001e64b0();\n              if (*local_38 == 'L') goto LAB_001e8a99;\n            }" (if "if") (parenthesized_expression "(iVar4 != 0)" (( "(") (binary_expression "iVar4 != 0" (identifier "iVar4") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n              FUN_001e64b0();\n              FUN_001e6600();\n              if (local_28 != (void *)0x0) {\n                free(local_28);\n                local_28 = (void *)0x0;\n              }\n              FUN_001e64b0();\n              if (*local_38 == 'L') goto LAB_001e8a99;\n            }" ({ "{") (expression_statement "FUN_001e64b0();" (call_expression "FUN_001e64b0()" (identifier "FUN_001e64b0") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "FUN_001e6600();" (call_expression "FUN_001e6600()" (identifier "FUN_001e6600") (argument_list "()" (( "(") () ")"))) (; ";")) (if_statement "if (local_28 != (void *)0x0) {\n                free(local_28);\n                local_28 = (void *)0x0;\n              }" (if "if") (parenthesized_expression "(local_28 != (void *)0x0)" (( "(") (binary_expression "local_28 != (void *)0x0" (identifier "local_28") (!= "!=") (cast_expression "(void *)0x0" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n                free(local_28);\n                local_28 = (void *)0x0;\n              }" ({ "{") (expression_statement "free(local_28);" (call_expression "free(local_28)" (identifier "free") (argument_list "(local_28)" (( "(") (identifier "local_28") () ")"))) (; ";")) (expression_statement "local_28 = (void *)0x0;" (assignment_expression "local_28 = (void *)0x0" (identifier "local_28") (= "=") (cast_expression "(void *)0x0" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (} "}"))) (expression_statement "FUN_001e64b0();" (call_expression "FUN_001e64b0()" (identifier "FUN_001e64b0") (argument_list "()" (( "(") () ")"))) (; ";")) (if_statement "if (*local_38 == 'L') goto LAB_001e8a99;" (if "if") (parenthesized_expression "(*local_38 == 'L')" (( "(") (binary_expression "*local_38 == 'L'" (pointer_expression "*local_38" (* "*") (identifier "local_38")) (== "==") (char_literal "'L'" (' "'") (character "L") (' "'"))) () ")")) (goto_statement "goto LAB_001e8a99;" (goto "goto") (statement_identifier "LAB_001e8a99") (; ";"))) (} "}"))) (} "}")) (else_clause "else {\n            iVar4 = FUN_001e7a30();\n            if (iVar4 != 0) {\n              *param_1 = uVar10;\n              return;\n            }\n          }" (else "else") (compound_statement "{\n            iVar4 = FUN_001e7a30();\n            if (iVar4 != 0) {\n              *param_1 = uVar10;\n              return;\n            }\n          }" ({ "{") (expression_statement "iVar4 = FUN_001e7a30();" (assignment_expression "iVar4 = FUN_001e7a30()" (identifier "iVar4") (= "=") (call_expression "FUN_001e7a30()" (identifier "FUN_001e7a30") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (iVar4 != 0) {\n              *param_1 = uVar10;\n              return;\n            }" (if "if") (parenthesized_expression "(iVar4 != 0)" (( "(") (binary_expression "iVar4 != 0" (identifier "iVar4") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n              *param_1 = uVar10;\n              return;\n            }" ({ "{") (expression_statement "*param_1 = uVar10;" (assignment_expression "*param_1 = uVar10" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (identifier "uVar10")) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (} "}")))) (labeled_statement "LAB_001e8e50:\n          if (local_38 < pcVar7) goto LAB_001e8e86;" (statement_identifier "LAB_001e8e50") (: ":") (if_statement "if (local_38 < pcVar7) goto LAB_001e8e86;" (if "if") (parenthesized_expression "(local_38 < pcVar7)" (( "(") (binary_expression "local_38 < pcVar7" (identifier "local_38") (< "<") (identifier "pcVar7")) () ")")) (goto_statement "goto LAB_001e8e86;" (goto "goto") (statement_identifier "LAB_001e8e86") (; ";")))) (break_statement "break;" (break "break") (; ";")) (} "}"))) (labeled_statement "LAB_001e8a99:\n        local_38 = local_38 + 1;" (statement_identifier "LAB_001e8a99") (: ":") (expression_statement "local_38 = local_38 + 1;" (assignment_expression "local_38 = local_38 + 1" (identifier "local_38") (= "=") (binary_expression "local_38 + 1" (identifier "local_38") (+ "+") (number_literal "1"))) (; ";"))) (expression_statement "iVar4 = FUN_001e6540();" (assignment_expression "iVar4 = FUN_001e6540()" (identifier "iVar4") (= "=") (call_expression "FUN_001e6540()" (identifier "FUN_001e6540") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (iVar4 == 0) goto LAB_001e8e50;" (if "if") (parenthesized_expression "(iVar4 == 0)" (( "(") (binary_expression "iVar4 == 0" (identifier "iVar4") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_001e8e50;" (goto "goto") (statement_identifier "LAB_001e8e50") (; ";"))) (expression_statement "FUN_001e6600();" (call_expression "FUN_001e6600()" (identifier "FUN_001e6600") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "FUN_001e64b0();" (call_expression "FUN_001e64b0()" (identifier "FUN_001e64b0") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (expression_statement "param_4[1] = param_4[1] + -1;" (assignment_expression "param_4[1] = param_4[1] + -1" (subscript_expression "param_4[1]" (identifier "param_4") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "param_4[1] + -1" (subscript_expression "param_4[1]" (identifier "param_4") ([ "[") (number_literal "1") (] "]")) (+ "+") (number_literal "-1"))) (; ";")) (labeled_statement "LAB_001e8e86:\n      FUN_001e64b0();" (statement_identifier "LAB_001e8e86") (: ":") (expression_statement "FUN_001e64b0();" (call_expression "FUN_001e64b0()" (identifier "FUN_001e64b0") (argument_list "()" (( "(") () ")"))) (; ";"))) (expression_statement "*param_1 = uVar10;" (assignment_expression "*param_1 = uVar10" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (= "=") (identifier "uVar10")) (; ";")) (expression_statement "pbVar8 = (byte *)*param_2;" (assignment_expression "pbVar8 = (byte *)*param_2" (identifier "pbVar8") (= "=") (cast_expression "(byte *)*param_2" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_2" (* "*") (identifier "param_2")))) (; ";")) (goto_statement "goto LAB_001e895e;" (goto "goto") (statement_identifier "LAB_001e895e") (; ";")) (} "}"))) (} "}")))) (labeled_statement "LAB_001e88f1:\n  bVar13 = param_3 < 10;" (statement_identifier "LAB_001e88f1") (: ":") (expression_statement "bVar13 = param_3 < 10;" (assignment_expression "bVar13 = param_3 < 10" (identifier "bVar13") (= "=") (binary_expression "param_3 < 10" (identifier "param_3") (< "<") (number_literal "10"))) (; ";"))) (expression_statement "bVar14 = param_3 == 10;" (assignment_expression "bVar14 = param_3 == 10" (identifier "bVar14") (= "=") (binary_expression "param_3 == 10" (identifier "param_3") (== "==") (number_literal "10"))) (; ";")) (expression_statement "pbVar8 = (byte *)*param_2;" (assignment_expression "pbVar8 = (byte *)*param_2" (identifier "pbVar8") (= "=") (cast_expression "(byte *)*param_2" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_2" (* "*") (identifier "param_2")))) (; ";")) (if_statement "if ((int)param_3 < 0xb) {\n    if (param_1[0xd] == 0xffffffff) {\nLAB_001e8b50:\n      param_1[0xd] = 0;\n    }\n    if (param_3 == 0) goto LAB_001e895e;\n  }\n  else {\n    iVar4 = 8;\n    pbVar11 = pbVar8;\n    pbVar12 = (byte *)"_GLOBAL_";\n    do {\n      if (iVar4 == 0) break;\n      iVar4 = iVar4 + -1;\n      bVar13 = *pbVar11 < *pbVar12;\n      bVar14 = *pbVar11 == *pbVar12;\n      pbVar11 = pbVar11 + (uint)bVar15 * -2 + 1;\n      pbVar12 = pbVar12 + (uint)bVar15 * -2 + 1;\n    } while (bVar14);\n    if ((((!bVar13 && !bVar14) == bVar13) && (pbVar8[9] == 0x4e)) &&\n       ((pbVar8[8] == pbVar8[10] &&\n        (pcVar5 = strchr(&DAT_003af40c,(int)(char)pbVar8[8]), pcVar5 != (char *)0x0)))) {\n      FUN_001e64b0();\n      pbVar8 = (byte *)*param_2;\n      goto LAB_001e895e;\n    }\n    if (param_1[0xd] == 0xffffffff) goto LAB_001e8b50;\n  }" (if "if") (parenthesized_expression "((int)param_3 < 0xb)" (( "(") (binary_expression "(int)param_3 < 0xb" (cast_expression "(int)param_3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_3")) (< "<") (number_literal "0xb")) () ")")) (compound_statement "{\n    if (param_1[0xd] == 0xffffffff) {\nLAB_001e8b50:\n      param_1[0xd] = 0;\n    }\n    if (param_3 == 0) goto LAB_001e895e;\n  }" ({ "{") (if_statement "if (param_1[0xd] == 0xffffffff) {\nLAB_001e8b50:\n      param_1[0xd] = 0;\n    }" (if "if") (parenthesized_expression "(param_1[0xd] == 0xffffffff)" (( "(") (binary_expression "param_1[0xd] == 0xffffffff" (subscript_expression "param_1[0xd]" (identifier "param_1") ([ "[") (number_literal "0xd") (] "]")) (== "==") (number_literal "0xffffffff")) () ")")) (compound_statement "{\nLAB_001e8b50:\n      param_1[0xd] = 0;\n    }" ({ "{") (labeled_statement "LAB_001e8b50:\n      param_1[0xd] = 0;" (statement_identifier "LAB_001e8b50") (: ":") (expression_statement "param_1[0xd] = 0;" (assignment_expression "param_1[0xd] = 0" (subscript_expression "param_1[0xd]" (identifier "param_1") ([ "[") (number_literal "0xd") (] "]")) (= "=") (number_literal "0")) (; ";"))) (} "}"))) (if_statement "if (param_3 == 0) goto LAB_001e895e;" (if "if") (parenthesized_expression "(param_3 == 0)" (( "(") (binary_expression "param_3 == 0" (identifier "param_3") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_001e895e;" (goto "goto") (statement_identifier "LAB_001e895e") (; ";"))) (} "}")) (else_clause "else {\n    iVar4 = 8;\n    pbVar11 = pbVar8;\n    pbVar12 = (byte *)"_GLOBAL_";\n    do {\n      if (iVar4 == 0) break;\n      iVar4 = iVar4 + -1;\n      bVar13 = *pbVar11 < *pbVar12;\n      bVar14 = *pbVar11 == *pbVar12;\n      pbVar11 = pbVar11 + (uint)bVar15 * -2 + 1;\n      pbVar12 = pbVar12 + (uint)bVar15 * -2 + 1;\n    } while (bVar14);\n    if ((((!bVar13 && !bVar14) == bVar13) && (pbVar8[9] == 0x4e)) &&\n       ((pbVar8[8] == pbVar8[10] &&\n        (pcVar5 = strchr(&DAT_003af40c,(int)(char)pbVar8[8]), pcVar5 != (char *)0x0)))) {\n      FUN_001e64b0();\n      pbVar8 = (byte *)*param_2;\n      goto LAB_001e895e;\n    }\n    if (param_1[0xd] == 0xffffffff) goto LAB_001e8b50;\n  }" (else "else") (compound_statement "{\n    iVar4 = 8;\n    pbVar11 = pbVar8;\n    pbVar12 = (byte *)"_GLOBAL_";\n    do {\n      if (iVar4 == 0) break;\n      iVar4 = iVar4 + -1;\n      bVar13 = *pbVar11 < *pbVar12;\n      bVar14 = *pbVar11 == *pbVar12;\n      pbVar11 = pbVar11 + (uint)bVar15 * -2 + 1;\n      pbVar12 = pbVar12 + (uint)bVar15 * -2 + 1;\n    } while (bVar14);\n    if ((((!bVar13 && !bVar14) == bVar13) && (pbVar8[9] == 0x4e)) &&\n       ((pbVar8[8] == pbVar8[10] &&\n        (pcVar5 = strchr(&DAT_003af40c,(int)(char)pbVar8[8]), pcVar5 != (char *)0x0)))) {\n      FUN_001e64b0();\n      pbVar8 = (byte *)*param_2;\n      goto LAB_001e895e;\n    }\n    if (param_1[0xd] == 0xffffffff) goto LAB_001e8b50;\n  }" ({ "{") (expression_statement "iVar4 = 8;" (assignment_expression "iVar4 = 8" (identifier "iVar4") (= "=") (number_literal "8")) (; ";")) (expression_statement "pbVar11 = pbVar8;" (assignment_expression "pbVar11 = pbVar8" (identifier "pbVar11") (= "=") (identifier "pbVar8")) (; ";")) (expression_statement "pbVar12 = (byte *)"_GLOBAL_";" (assignment_expression "pbVar12 = (byte *)"_GLOBAL_"" (identifier "pbVar12") (= "=") (cast_expression "(byte *)"_GLOBAL_"" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (string_literal ""_GLOBAL_"" (" """) (string_content "_GLOBAL_") (" """)))) (; ";")) (do_statement "do {\n      if (iVar4 == 0) break;\n      iVar4 = iVar4 + -1;\n      bVar13 = *pbVar11 < *pbVar12;\n      bVar14 = *pbVar11 == *pbVar12;\n      pbVar11 = pbVar11 + (uint)bVar15 * -2 + 1;\n      pbVar12 = pbVar12 + (uint)bVar15 * -2 + 1;\n    } while (bVar14);" (do "do") (compound_statement "{\n      if (iVar4 == 0) break;\n      iVar4 = iVar4 + -1;\n      bVar13 = *pbVar11 < *pbVar12;\n      bVar14 = *pbVar11 == *pbVar12;\n      pbVar11 = pbVar11 + (uint)bVar15 * -2 + 1;\n      pbVar12 = pbVar12 + (uint)bVar15 * -2 + 1;\n    }" ({ "{") (if_statement "if (iVar4 == 0) break;" (if "if") (parenthesized_expression "(iVar4 == 0)" (( "(") (binary_expression "iVar4 == 0" (identifier "iVar4") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar4 = iVar4 + -1;" (assignment_expression "iVar4 = iVar4 + -1" (identifier "iVar4") (= "=") (binary_expression "iVar4 + -1" (identifier "iVar4") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "bVar13 = *pbVar11 < *pbVar12;" (assignment_expression "bVar13 = *pbVar11 < *pbVar12" (identifier "bVar13") (= "=") (binary_expression "*pbVar11 < *pbVar12" (pointer_expression "*pbVar11" (* "*") (identifier "pbVar11")) (< "<") (pointer_expression "*pbVar12" (* "*") (identifier "pbVar12")))) (; ";")) (expression_statement "bVar14 = *pbVar11 == *pbVar12;" (assignment_expression "bVar14 = *pbVar11 == *pbVar12" (identifier "bVar14") (= "=") (binary_expression "*pbVar11 == *pbVar12" (pointer_expression "*pbVar11" (* "*") (identifier "pbVar11")) (== "==") (pointer_expression "*pbVar12" (* "*") (identifier "pbVar12")))) (; ";")) (expression_statement "pbVar11 = pbVar11 + (uint)bVar15 * -2 + 1;" (assignment_expression "pbVar11 = pbVar11 + (uint)bVar15 * -2 + 1" (identifier "pbVar11") (= "=") (binary_expression "pbVar11 + (uint)bVar15 * -2 + 1" (binary_expression "pbVar11 + (uint)bVar15 * -2" (identifier "pbVar11") (+ "+") (binary_expression "(uint)bVar15 * -2" (cast_expression "(uint)bVar15" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar15")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pbVar12 = pbVar12 + (uint)bVar15 * -2 + 1;" (assignment_expression "pbVar12 = pbVar12 + (uint)bVar15 * -2 + 1" (identifier "pbVar12") (= "=") (binary_expression "pbVar12 + (uint)bVar15 * -2 + 1" (binary_expression "pbVar12 + (uint)bVar15 * -2" (identifier "pbVar12") (+ "+") (binary_expression "(uint)bVar15 * -2" (cast_expression "(uint)bVar15" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar15")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar14)" (( "(") (identifier "bVar14") () ")")) (; ";")) (if_statement "if ((((!bVar13 && !bVar14) == bVar13) && (pbVar8[9] == 0x4e)) &&\n       ((pbVar8[8] == pbVar8[10] &&\n        (pcVar5 = strchr(&DAT_003af40c,(int)(char)pbVar8[8]), pcVar5 != (char *)0x0)))) {\n      FUN_001e64b0();\n      pbVar8 = (byte *)*param_2;\n      goto LAB_001e895e;\n    }" (if "if") (parenthesized_expression "((((!bVar13 && !bVar14) == bVar13) && (pbVar8[9] == 0x4e)) &&\n       ((pbVar8[8] == pbVar8[10] &&\n        (pcVar5 = strchr(&DAT_003af40c,(int)(char)pbVar8[8]), pcVar5 != (char *)0x0))))" (( "(") (binary_expression "(((!bVar13 && !bVar14) == bVar13) && (pbVar8[9] == 0x4e)) &&\n       ((pbVar8[8] == pbVar8[10] &&\n        (pcVar5 = strchr(&DAT_003af40c,(int)(char)pbVar8[8]), pcVar5 != (char *)0x0)))" (parenthesized_expression "(((!bVar13 && !bVar14) == bVar13) && (pbVar8[9] == 0x4e))" (( "(") (binary_expression "((!bVar13 && !bVar14) == bVar13) && (pbVar8[9] == 0x4e)" (parenthesized_expression "((!bVar13 && !bVar14) == bVar13)" (( "(") (binary_expression "(!bVar13 && !bVar14) == bVar13" (parenthesized_expression "(!bVar13 && !bVar14)" (( "(") (binary_expression "!bVar13 && !bVar14" (unary_expression "!bVar13" (! "!") (identifier "bVar13")) (&& "&&") (unary_expression "!bVar14" (! "!") (identifier "bVar14"))) () ")")) (== "==") (identifier "bVar13")) () ")")) (&& "&&") (parenthesized_expression "(pbVar8[9] == 0x4e)" (( "(") (binary_expression "pbVar8[9] == 0x4e" (subscript_expression "pbVar8[9]" (identifier "pbVar8") ([ "[") (number_literal "9") (] "]")) (== "==") (number_literal "0x4e")) () ")"))) () ")")) (&& "&&") (parenthesized_expression "((pbVar8[8] == pbVar8[10] &&\n        (pcVar5 = strchr(&DAT_003af40c,(int)(char)pbVar8[8]), pcVar5 != (char *)0x0)))" (( "(") (parenthesized_expression "(pbVar8[8] == pbVar8[10] &&\n        (pcVar5 = strchr(&DAT_003af40c,(int)(char)pbVar8[8]), pcVar5 != (char *)0x0))" (( "(") (binary_expression "pbVar8[8] == pbVar8[10] &&\n        (pcVar5 = strchr(&DAT_003af40c,(int)(char)pbVar8[8]), pcVar5 != (char *)0x0)" (binary_expression "pbVar8[8] == pbVar8[10]" (subscript_expression "pbVar8[8]" (identifier "pbVar8") ([ "[") (number_literal "8") (] "]")) (== "==") (subscript_expression "pbVar8[10]" (identifier "pbVar8") ([ "[") (number_literal "10") (] "]"))) (&& "&&") (parenthesized_expression "(pcVar5 = strchr(&DAT_003af40c,(int)(char)pbVar8[8]), pcVar5 != (char *)0x0)" (( "(") (comma_expression "pcVar5 = strchr(&DAT_003af40c,(int)(char)pbVar8[8]), pcVar5 != (char *)0x0" (assignment_expression "pcVar5 = strchr(&DAT_003af40c,(int)(char)pbVar8[8])" (identifier "pcVar5") (= "=") (call_expression "strchr(&DAT_003af40c,(int)(char)pbVar8[8])" (identifier "strchr") (argument_list "(&DAT_003af40c,(int)(char)pbVar8[8])" (( "(") (pointer_expression "&DAT_003af40c" (& "&") (identifier "DAT_003af40c")) (, ",") (cast_expression "(int)(char)pbVar8[8]" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (cast_expression "(char)pbVar8[8]" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (subscript_expression "pbVar8[8]" (identifier "pbVar8") ([ "[") (number_literal "8") (] "]")))) () ")")))) (, ",") (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      FUN_001e64b0();\n      pbVar8 = (byte *)*param_2;\n      goto LAB_001e895e;\n    }" ({ "{") (expression_statement "FUN_001e64b0();" (call_expression "FUN_001e64b0()" (identifier "FUN_001e64b0") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "pbVar8 = (byte *)*param_2;" (assignment_expression "pbVar8 = (byte *)*param_2" (identifier "pbVar8") (= "=") (cast_expression "(byte *)*param_2" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_2" (* "*") (identifier "param_2")))) (; ";")) (goto_statement "goto LAB_001e895e;" (goto "goto") (statement_identifier "LAB_001e895e") (; ";")) (} "}"))) (if_statement "if (param_1[0xd] == 0xffffffff) goto LAB_001e8b50;" (if "if") (parenthesized_expression "(param_1[0xd] == 0xffffffff)" (( "(") (binary_expression "param_1[0xd] == 0xffffffff" (subscript_expression "param_1[0xd]" (identifier "param_1") ([ "[") (number_literal "0xd") (] "]")) (== "==") (number_literal "0xffffffff")) () ")")) (goto_statement "goto LAB_001e8b50;" (goto "goto") (statement_identifier "LAB_001e8b50") (; ";"))) (} "}")))) (expression_statement "FUN_001e63d0();" (call_expression "FUN_001e63d0()" (identifier "FUN_001e63d0") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "pbVar8 = (byte *)*param_2;" (assignment_expression "pbVar8 = (byte *)*param_2" (identifier "pbVar8") (= "=") (cast_expression "(byte *)*param_2" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_2" (* "*") (identifier "param_2")))) (; ";")) (labeled_statement "LAB_001e895e:\n  *param_2 = (int)(pbVar8 + param_3);" (statement_identifier "LAB_001e895e") (: ":") (expression_statement "*param_2 = (int)(pbVar8 + param_3);" (assignment_expression "*param_2 = (int)(pbVar8 + param_3)" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (cast_expression "(int)(pbVar8 + param_3)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(pbVar8 + param_3)" (( "(") (binary_expression "pbVar8 + param_3" (identifier "pbVar8") (+ "+") (identifier "param_3")) () ")")))) (; ";"))) (return_statement "return;" (return "return") (; ";")) (} "}")))

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

void __regparm3 function_1(type_1 *work,char **mangled,int var_2,type_2 *declp)

{
  char var_10;
  char var_11;
  char *var_21;
  int var_6;
  char *var_1;
  size_t var_15;
  size_t sVar6;
  char *var_5;
  type_3 *var_27;
  type_4 uVar8;
  type_4 var_3;
  type_3 *var_24;
  type_3 *var_25;
  bool var_26;
  bool bVar13;
  type_3 bVar14;
  char *var_22;
  type_2 arg;
  type_2 type_str;
  
  bVar14 = 0;
  var_1 = *mangled;
  var_3 = work->options;
  var_5 = var_1 + var_2;
  if (((var_3 & 0x1000) != 0) && (*var_5 == 'X')) {
    var_5 = var_4(var_1,0x3c);
    if ((var_5 == (char *)0x0) || (var_6 = (int)var_5 - (int)var_1, var_2 <= var_6)) {
      var_6 = var_2;
      if (var_2 == 0) goto LAB_001e8bea;
    }
    else if (var_6 == 0) goto LAB_001e8bea;
    var_7(declp,var_1,var_6);
    var_1 = *mangled;
    var_3 = work->options;
LAB_001e8bea:
    arg.e = (char *)0x0;
    arg.p = (char *)0x0;
    arg.b = (char *)0x0;
    *mangled = var_1 + var_2 + 1;
    if (work->temp_start == -1) {
      work->temp_start = (int)declp->p - (int)declp->b;
    }
    work->options = var_3 | 1;
    var_8(declp,"<");
    do {
      if (arg.b != (char *)0x0) {
        var_9(arg.b);
        arg.p = (char *)0x0;
        arg.e = (char *)0x0;
        arg.b = (char *)0x0;
      }
      var_1 = *mangled;
      var_10 = *var_1;
      if (var_10 == 'S') {
LAB_001e8d75:
        if ((var_10 + 0xadU & 0xfd) != 0) goto LAB_001e8d09;
        var_5 = var_1 + 1;
        *mangled = var_5;
        var_11 = var_1[1];
        if (var_11 == 'N') {
          var_8(&arg,"-");
          var_5 = *mangled;
        }
        else if (var_11 != 'P') {
          if (var_11 == 'M') {
            var_8(&arg,"-2147483648");
            *mangled = *mangled + 1;
            goto LAB_001e8cbb;
          }
          goto LAB_001e8d09;
        }
        *mangled = var_5 + 1;
        uVar8 = (type_4)(type_3)var_5[1];
        if ((_sch_istable[uVar8] & 4) == 0) goto LAB_001e8d09;
        do {
          char_str[0] = (char)uVar8;
          if (char_str[0] != '\0') {
            var_8(&arg,char_str);
          }
          var_1 = *mangled;
          *mangled = var_1 + 1;
          uVar8 = (type_4)(type_3)var_1[1];
        } while ((_sch_istable[uVar8] & 4) != 0);
        if (var_10 == 'U') {
          var_8(&arg,"U");
        }
      }
      else if (var_10 < 'T') {
        if (var_10 != 'A') {
LAB_001e8d09:
          var_8(declp,">");
          if (arg.b != (char *)0x0) {
            var_9(arg.b);
          }
          if (**mangled == '_') {
            *mangled = *mangled + 1;
          }
          work->options = var_3;
          return;
        }
        *mangled = var_1 + 1;
        var_15 = var_12(mangled);
        if (((int)var_15 < 1) || (sVar6 = var_13(*mangled), (int)sVar6 < (int)var_15)) goto LAB_001e8d09;
        var_8(&arg,"&");
        var_1 = (char *)var_14(var_15 + 1);
        var_16(var_1,*mangled,var_15);
        var_1[var_15] = '\0';
        var_5 = var_17(var_1,work->options);
        if (var_5 == (char *)0x0) {
          var_7(&arg,*mangled,var_15);
        }
        else {
          if (*var_5 != '\0') {
            var_8(&arg,var_5);
          }
          var_9(var_5);
        }
        *mangled = *mangled + var_15;
        var_9(var_1);
      }
      else {
        if (var_10 != 'T') {
          if (var_10 == 'U') goto LAB_001e8d75;
          goto LAB_001e8d09;
        }
        *mangled = var_1 + 1;
        var_6 = var_18(work,mangled,&arg);
        if (var_6 == 0) goto LAB_001e8d09;
      }
LAB_001e8cbb:
      var_19(declp,&arg,(type_2 *)arg.p);
      if ((**mangled == '\0') || (**mangled == '_')) goto LAB_001e8d09;
      var_8(declp,",");
    } while( true );
  }
  if (((var_3 & 0x1800) == 0) || (var_21 = var_20(var_1,"__pt__"), var_21 == (char *)0x0)) {
LAB_001e88a9:
    if ((var_3 & 0x2100) != 0) {
      var_21 = var_20(var_1,"__tm__");
      if (((var_21 == (char *)0x0) && (var_21 = var_20(var_1,"__ps__"), var_21 == (char *)0x0)) &&
         (var_21 = var_20(var_1,"__pt__"), var_21 == (char *)0x0)) {
        var_21 = var_20(var_1,"__S");
        if (var_21 == (char *)0x0) goto LAB_001e88f1;
        var_22 = var_21 + 3;
      }
      else {
        var_22 = var_21 + 6;
      }
      var_6 = var_12(&var_22);
      if (((var_6 != -1) && (var_5 == var_22 + var_6)) && (*var_22 == '_')) goto LAB_001e8979;
    }
  }
  else {
    var_22 = var_21 + 6;
    var_6 = var_12(&var_22);
    if (var_6 != -1) {
      if ((var_5 != var_22 + var_6) || (*var_22 != '_')) {
        var_3 = work->options;
        goto LAB_001e88a9;
      }
LAB_001e8979:
      var_22 = var_22 + 1;
      arg.e = (char *)0x0;
      arg.p = (char *)0x0;
      arg.b = (char *)0x0;
      var_6 = (int)var_21 - (int)*mangled;
      if (var_6 != 0) {
        var_7(declp,*mangled,var_6);
      }
      if (work->temp_start == -1) {
        work->temp_start = (int)declp->p - (int)declp->b;
      }
      var_3 = work->options;
      work->options = var_3 | 1;
      var_8(declp,"<");
      if (var_22 < var_5) {
        do {
          if (arg.b != (char *)0x0) {
            var_9(arg.b);
            arg.p = (char *)0x0;
            arg.e = (char *)0x0;
            arg.b = (char *)0x0;
          }
          var_1 = var_22;
          if (*var_22 != 'L') {
            if (*var_22 == 'X') {
              var_22 = var_22 + 1;
              var_6 = var_18(work,&var_22,&type_str);
              if (var_6 != 0) {
                var_8(&arg,"(");
                var_19(&arg,&type_str,(type_2 *)type_str.p);
                if (type_str.b != (char *)0x0) {
                  var_9(type_str.b);
                  type_str.p = (char *)0x0;
                  type_str.e = (char *)0x0;
                  type_str.b = (char *)0x0;
                }
                var_8(&arg,")");
                if (*var_22 == 'L') goto LAB_001e8a99;
              }
            }
            else {
              var_6 = var_18(work,&var_22,&arg);
              if (var_6 != 0) {
                if (var_1 == var_22) {
                  work->options = var_3;
                  return;
                }
                goto LAB_001e8aac;
              }
            }
LAB_001e8e50:
            if (arg.b == (char *)0x0) goto LAB_001e8e7c;
            goto LAB_001e8e58;
          }
LAB_001e8a99:
          var_22 = var_22 + 1;
          var_6 = var_23(&var_22,&arg);
          if (var_6 == 0) goto LAB_001e8e50;
LAB_001e8aac:
          var_19(declp,&arg,(type_2 *)arg.p);
          var_8(declp,",");
        } while (var_22 < var_5);
      }
      if (arg.b == (char *)0x0) {
LAB_001e8eb8:
        declp->p = declp->p + -1;
      }
      else {
LAB_001e8e58:
        var_9(arg.b);
        arg.p = (char *)0x0;
        arg.e = (char *)0x0;
        arg.b = (char *)0x0;
LAB_001e8e7c:
        if (var_5 <= var_22) goto LAB_001e8eb8;
      }
      var_8(declp,">");
      work->options = var_3;
      var_27 = (type_3 *)*mangled;
      goto LAB_001e895e;
    }
  }
LAB_001e88f1:
  var_26 = (type_4)var_2 < 10;
  bVar13 = var_2 == 10;
  var_27 = (type_3 *)*mangled;
  if (var_2 < 0xb) {
    if (work->temp_start == -1) {
LAB_001e8b50:
      work->temp_start = 0;
    }
    if (var_2 == 0) goto LAB_001e895e;
  }
  else {
    var_6 = 8;
    var_24 = var_27;
    var_25 = (type_3 *)"_GLOBAL_";
    do {
      if (var_6 == 0) break;
      var_6 = var_6 + -1;
      var_26 = *var_24 < *var_25;
      bVar13 = *var_24 == *var_25;
      var_24 = var_24 + (type_4)bVar14 * -2 + 1;
      var_25 = var_25 + (type_4)bVar14 * -2 + 1;
    } while (bVar13);
    if ((((!var_26 && !bVar13) == var_26) && (var_27[9] == 0x4e)) &&
       ((var_27[8] == var_27[10] && (var_1 = var_4(cplus_markers,(int)(char)var_27[8]), var_1 != (char *)0x0))))
    {
      var_8(declp,"{anonymous}");
      var_27 = (type_3 *)*mangled;
      goto LAB_001e895e;
    }
    if (work->temp_start == -1) goto LAB_001e8b50;
  }
  var_7(declp,(char *)var_27,var_2);
  var_27 = (type_3 *)*mangled;
LAB_001e895e:
  *mangled = (char *)(var_27 + var_2);
  return;
}


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

/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* WARNING: Removing unreachable block (ram,0x001e8c66) */
/* WARNING: Removing unreachable block (ram,0x001e8e58) */
/* WARNING: Removing unreachable block (ram,0x001e8d20) */
/* WARNING: Removing unreachable block (ram,0x001e8adc) */

void __regparm3 MASKED(uint *param_1,int *param_2,uint param_3,int *param_4)

{
  char cVar1;
  char cVar2;
  char *pcVar3;
  int iVar4;
  char *pcVar5;
  size_t __n;
  size_t sVar6;
  void *__dest;
  char *pcVar7;
  byte *pbVar8;
  uint uVar9;
  uint uVar10;
  byte *pbVar11;
  byte *pbVar12;
  bool bVar13;
  bool bVar14;
  byte bVar15;
  char *local_38;
  void *local_28;
  
  bVar15 = 0;
  pcVar5 = (char *)*param_2;
  uVar10 = *param_1;
  pcVar7 = pcVar5 + param_3;
  if (((uVar10 & 0x1000) != 0) && (*pcVar7 == 'X')) {
    pcVar7 = strchr(pcVar5,0x3c);
    if ((pcVar7 == (char *)0x0) || ((int)param_3 <= (int)pcVar7 - (int)pcVar5)) {
      if (param_3 == 0) goto LAB_001e8bea;
    }
    else if (pcVar7 == pcVar5) goto LAB_001e8bea;
    FUN_001e63d0();
    pcVar5 = (char *)*param_2;
    uVar10 = *param_1;
LAB_001e8bea:
    *param_2 = (int)(pcVar5 + param_3 + 1);
    if (param_1[0xd] == 0xffffffff) {
      param_1[0xd] = param_4[1] - *param_4;
    }
    *param_1 = uVar10 | 1;
    FUN_001e64b0();
    do {
      pcVar5 = (char *)*param_2;
      cVar1 = *pcVar5;
      if (cVar1 == 'S') {
LAB_001e8d75:
        if ((cVar1 + 0xadU & 0xfd) != 0) goto LAB_001e8d09;
        pcVar7 = pcVar5 + 1;
        *param_2 = (int)pcVar7;
        cVar2 = pcVar5[1];
        if (cVar2 == 'N') {
          FUN_001e64b0();
          pcVar7 = (char *)*param_2;
        }
        else if (cVar2 != 'P') {
          if (cVar2 == 'M') {
            FUN_001e64b0();
            *param_2 = *param_2 + 1;
            goto LAB_001e8cbb;
          }
          goto LAB_001e8d09;
        }
        *param_2 = (int)(pcVar7 + 1);
        uVar9 = (uint)(byte)pcVar7[1];
        if (((&DAT_002bf340)[uVar9 * 2] & 4) == 0) goto LAB_001e8d09;
        do {
          DAT_003b6400 = (char)uVar9;
          if (DAT_003b6400 != '\0') {
            FUN_001e64b0();
          }
          iVar4 = *param_2;
          *param_2 = iVar4 + 1;
          uVar9 = (uint)*(byte *)(iVar4 + 1);
        } while (((&DAT_002bf340)[uVar9 * 2] & 4) != 0);
        if (cVar1 == 'U') {
          FUN_001e64b0();
        }
      }
      else if (cVar1 < 'T') {
        if (cVar1 != 'A') {
LAB_001e8d09:
          FUN_001e64b0();
          if (*(char *)*param_2 == '_') {
            *param_2 = (int)((char *)*param_2 + 1);
          }
          *param_1 = uVar10;
          return;
        }
        *param_2 = (int)(pcVar5 + 1);
        __n = FUN_001e6060();
        if (((int)__n < 1) || (sVar6 = strlen((char *)*param_2), (int)sVar6 < (int)__n))
        goto LAB_001e8d09;
        FUN_001e64b0();
        __dest = (void *)FUN_001fcf40(__n + 1);
        memcpy(__dest,(void *)*param_2,__n);
        *(undefined1 *)((int)__dest + __n) = 0;
        pcVar5 = (char *)FUN_001e7170(__dest,*param_1);
        if (pcVar5 == (char *)0x0) {
          FUN_001e63d0();
        }
        else {
          if (*pcVar5 != '\0') {
            FUN_001e64b0();
          }
          free(pcVar5);
        }
        *param_2 = *param_2 + __n;
        free(__dest);
      }
      else {
        if (cVar1 != 'T') {
          if (cVar1 == 'U') goto LAB_001e8d75;
          goto LAB_001e8d09;
        }
        *param_2 = (int)(pcVar5 + 1);
        iVar4 = FUN_001e7a30();
        if (iVar4 == 0) goto LAB_001e8d09;
      }
LAB_001e8cbb:
      FUN_001e6600();
      if ((*(char *)*param_2 == '\0') || (*(char *)*param_2 == '_')) goto LAB_001e8d09;
      FUN_001e64b0();
    } while( true );
  }
  if (((uVar10 & 0x1800) == 0) || (pcVar3 = strstr(pcVar5,"__pt__"), pcVar3 == (char *)0x0)) {
LAB_001e88a9:
    if ((uVar10 & 0x2100) != 0) {
      pcVar3 = strstr(pcVar5,"__tm__");
      if (((pcVar3 == (char *)0x0) && (pcVar3 = strstr(pcVar5,"__ps__"), pcVar3 == (char *)0x0)) &&
         (pcVar3 = strstr(pcVar5,"__pt__"), pcVar3 == (char *)0x0)) {
        pcVar3 = strstr(pcVar5,"__S");
        if (pcVar3 == (char *)0x0) goto LAB_001e88f1;
        local_38 = pcVar3 + 3;
      }
      else {
        local_38 = pcVar3 + 6;
      }
      iVar4 = FUN_001e6060();
      if (((iVar4 != -1) && (pcVar7 == local_38 + iVar4)) && (*local_38 == '_')) goto LAB_001e8979;
    }
  }
  else {
    local_38 = pcVar3 + 6;
    iVar4 = FUN_001e6060();
    if (iVar4 != -1) {
      if ((pcVar7 != local_38 + iVar4) || (*local_38 != '_')) {
        uVar10 = *param_1;
        goto LAB_001e88a9;
      }
LAB_001e8979:
      local_38 = local_38 + 1;
      if (pcVar3 != (char *)*param_2) {
        FUN_001e63d0();
      }
      if (param_1[0xd] == 0xffffffff) {
        param_1[0xd] = param_4[1] - *param_4;
      }
      uVar10 = *param_1;
      *param_1 = uVar10 | 1;
      FUN_001e64b0();
      while (local_38 < pcVar7) {
        if (*local_38 != 'L') {
          if (*local_38 == 'X') {
            local_38 = local_38 + 1;
            iVar4 = FUN_001e7a30();
            if (iVar4 != 0) {
              FUN_001e64b0();
              FUN_001e6600();
              if (local_28 != (void *)0x0) {
                free(local_28);
                local_28 = (void *)0x0;
              }
              FUN_001e64b0();
              if (*local_38 == 'L') goto LAB_001e8a99;
            }
          }
          else {
            iVar4 = FUN_001e7a30();
            if (iVar4 != 0) {
              *param_1 = uVar10;
              return;
            }
          }
LAB_001e8e50:
          if (local_38 < pcVar7) goto LAB_001e8e86;
          break;
        }
LAB_001e8a99:
        local_38 = local_38 + 1;
        iVar4 = FUN_001e6540();
        if (iVar4 == 0) goto LAB_001e8e50;
        FUN_001e6600();
        FUN_001e64b0();
      }
      param_4[1] = param_4[1] + -1;
LAB_001e8e86:
      FUN_001e64b0();
      *param_1 = uVar10;
      pbVar8 = (byte *)*param_2;
      goto LAB_001e895e;
    }
  }
LAB_001e88f1:
  bVar13 = param_3 < 10;
  bVar14 = param_3 == 10;
  pbVar8 = (byte *)*param_2;
  if ((int)param_3 < 0xb) {
    if (param_1[0xd] == 0xffffffff) {
LAB_001e8b50:
      param_1[0xd] = 0;
    }
    if (param_3 == 0) goto LAB_001e895e;
  }
  else {
    iVar4 = 8;
    pbVar11 = pbVar8;
    pbVar12 = (byte *)"_GLOBAL_";
    do {
      if (iVar4 == 0) break;
      iVar4 = iVar4 + -1;
      bVar13 = *pbVar11 < *pbVar12;
      bVar14 = *pbVar11 == *pbVar12;
      pbVar11 = pbVar11 + (uint)bVar15 * -2 + 1;
      pbVar12 = pbVar12 + (uint)bVar15 * -2 + 1;
    } while (bVar14);
    if ((((!bVar13 && !bVar14) == bVar13) && (pbVar8[9] == 0x4e)) &&
       ((pbVar8[8] == pbVar8[10] &&
        (pcVar5 = strchr(&DAT_003af40c,(int)(char)pbVar8[8]), pcVar5 != (char *)0x0)))) {
      FUN_001e64b0();
      pbVar8 = (byte *)*param_2;
      goto LAB_001e895e;
    }
    if (param_1[0xd] == 0xffffffff) goto LAB_001e8b50;
  }
  FUN_001e63d0();
  pbVar8 = (byte *)*param_2;
LAB_001e895e:
  *param_2 = (int)(pbVar8 + param_3);
  return;
}

